(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/StructV.ts"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js ***! \*************************************************************************************/ /*! exports provided: blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blue\", function() { return blue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cyan\", function() { return cyan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geekblue\", function() { return geekblue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gold\", function() { return gold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"green\", function() { return green; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"grey\", function() { return grey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lime\", function() { return lime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"magenta\", function() { return magenta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orange\", function() { return orange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetDarkPalettes\", function() { return presetDarkPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPalettes\", function() { return presetPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPrimaryColors\", function() { return presetPrimaryColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purple\", function() { return purple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"red\", function() { return red; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"volcano\", function() { return volcano; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"yellow\", function() { return yellow; });\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tinycolor2 */ \"./node_modules/_tinycolor2@1.4.2@tinycolor2/tinycolor.js\");\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tinycolor2__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}];\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = pColor.toHsv();\n var colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }).toHexString();\n patterns.push(colorString);\n }\n\n patterns.push(pColor.toHexString());\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = pColor.toHsv();\n\n var _colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }).toHexString();\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref) {\n var index = _ref.index,\n opacity = _ref.opacity;\n var darkColorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default.a.mix(opts.backgroundColor || '#141414', patterns[index], opacity * 100).toHexString();\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnQtZGVzaWduX2NvbG9yc0A0LjAuNUBAYW50LWRlc2lnbi9jb2xvcnMvZGlzdC9pbmRleC5lc20uanM/NGM1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DOztBQUVuQyxnQkFBZ0I7O0FBRWhCLDBCQUEwQjs7QUFFMUIsMkJBQTJCOztBQUUzQiwyQkFBMkI7O0FBRTNCLDJCQUEyQjs7QUFFM0Isd0JBQXdCOztBQUV4Qix1QkFBdUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBUzs7QUFFeEIsK0JBQStCLE9BQU87QUFDdEM7QUFDQSxzQkFBc0IsaURBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLHNCQUFzQjtBQUN4Qzs7QUFFQSx1QkFBdUIsaURBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGlEQUFTO0FBQ3JDO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMksiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnQtZGVzaWduX2NvbG9yc0A0LjAuNUBAYW50LWRlc2lnbi9jb2xvcnMvZGlzdC9pbmRleC5lc20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGlueWNvbG9yIGZyb20gJ3Rpbnljb2xvcjInO1xuXG52YXIgaHVlU3RlcCA9IDI7IC8vIOiJsuebuOmYtuair1xuXG52YXIgc2F0dXJhdGlvblN0ZXAgPSAwLjE2OyAvLyDppbHlkozluqbpmLbmoq/vvIzmtYXoibLpg6jliIZcblxudmFyIHNhdHVyYXRpb25TdGVwMiA9IDAuMDU7IC8vIOmlseWSjOW6pumYtuair++8jOa3seiJsumDqOWIhlxuXG52YXIgYnJpZ2h0bmVzc1N0ZXAxID0gMC4wNTsgLy8g5Lqu5bqm6Zi25qKv77yM5rWF6Imy6YOo5YiGXG5cbnZhciBicmlnaHRuZXNzU3RlcDIgPSAwLjE1OyAvLyDkuq7luqbpmLbmoq/vvIzmt7HoibLpg6jliIZcblxudmFyIGxpZ2h0Q29sb3JDb3VudCA9IDU7IC8vIOa1heiJsuaVsOmHj++8jOS4u+iJsuS4ilxuXG52YXIgZGFya0NvbG9yQ291bnQgPSA0OyAvLyDmt7HoibLmlbDph4/vvIzkuLvoibLkuItcbi8vIOaal+iJsuS4u+mimOminOiJsuaYoOWwhOWFs+ezu+ihqFxuXG52YXIgZGFya0NvbG9yTWFwID0gW3tcbiAgaW5kZXg6IDcsXG4gIG9wYWNpdHk6IDAuMTVcbn0sIHtcbiAgaW5kZXg6IDYsXG4gIG9wYWNpdHk6IDAuMjVcbn0sIHtcbiAgaW5kZXg6IDUsXG4gIG9wYWNpdHk6IDAuM1xufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC40NVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC42NVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC44NVxufSwge1xuICBpbmRleDogNCxcbiAgb3BhY2l0eTogMC45XG59LCB7XG4gIGluZGV4OiAzLFxuICBvcGFjaXR5OiAwLjk1XG59LCB7XG4gIGluZGV4OiAyLFxuICBvcGFjaXR5OiAwLjk3XG59LCB7XG4gIGluZGV4OiAxLFxuICBvcGFjaXR5OiAwLjk4XG59XTtcblxuZnVuY3Rpb24gZ2V0SHVlKGhzdiwgaSwgbGlnaHQpIHtcbiAgdmFyIGh1ZTsgLy8g5qC55o2u6Imy55u45LiN5ZCM77yM6Imy55u46L2s5ZCR5LiN5ZCMXG5cbiAgaWYgKE1hdGgucm91bmQoaHN2LmgpID49IDYwICYmIE1hdGgucm91bmQoaHN2LmgpIDw9IDI0MCkge1xuICAgIGh1ZSA9IGxpZ2h0ID8gTWF0aC5yb3VuZChoc3YuaCkgLSBodWVTdGVwICogaSA6IE1hdGgucm91bmQoaHN2LmgpICsgaHVlU3RlcCAqIGk7XG4gIH0gZWxzZSB7XG4gICAgaHVlID0gbGlnaHQgPyBNYXRoLnJvdW5kKGhzdi5oKSArIGh1ZVN0ZXAgKiBpIDogTWF0aC5yb3VuZChoc3YuaCkgLSBodWVTdGVwICogaTtcbiAgfVxuXG4gIGlmIChodWUgPCAwKSB7XG4gICAgaHVlICs9IDM2MDtcbiAgfSBlbHNlIGlmIChodWUgPj0gMzYwKSB7XG4gICAgaHVlIC09IDM2MDtcbiAgfVxuXG4gIHJldHVybiBodWU7XG59XG5cbmZ1bmN0aW9uIGdldFNhdHVyYXRpb24oaHN2LCBpLCBsaWdodCkge1xuICAvLyBncmV5IGNvbG9yIGRvbid0IGNoYW5nZSBzYXR1cmF0aW9uXG4gIGlmIChoc3YuaCA9PT0gMCAmJiBoc3YucyA9PT0gMCkge1xuICAgIHJldHVybiBoc3YucztcbiAgfVxuXG4gIHZhciBzYXR1cmF0aW9uO1xuXG4gIGlmIChsaWdodCkge1xuICAgIHNhdHVyYXRpb24gPSBoc3YucyAtIHNhdHVyYXRpb25TdGVwICogaTtcbiAgfSBlbHNlIGlmIChpID09PSBkYXJrQ29sb3JDb3VudCkge1xuICAgIHNhdHVyYXRpb24gPSBoc3YucyArIHNhdHVyYXRpb25TdGVwO1xuICB9IGVsc2Uge1xuICAgIHNhdHVyYXRpb24gPSBoc3YucyArIHNhdHVyYXRpb25TdGVwMiAqIGk7XG4gIH0gLy8g6L6555WM5YC85L+u5q2jXG5cblxuICBpZiAoc2F0dXJhdGlvbiA+IDEpIHtcbiAgICBzYXR1cmF0aW9uID0gMTtcbiAgfSAvLyDnrKzkuIDmoLznmoQgcyDpmZDliLblnKggMC4wNi0wLjEg5LmL6Ze0XG5cblxuICBpZiAobGlnaHQgJiYgaSA9PT0gbGlnaHRDb2xvckNvdW50ICYmIHNhdHVyYXRpb24gPiAwLjEpIHtcbiAgICBzYXR1cmF0aW9uID0gMC4xO1xuICB9XG5cbiAgaWYgKHNhdHVyYXRpb24gPCAwLjA2KSB7XG4gICAgc2F0dXJhdGlvbiA9IDAuMDY7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHNhdHVyYXRpb24udG9GaXhlZCgyKSk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlKGhzdiwgaSwgbGlnaHQpIHtcbiAgdmFyIHZhbHVlO1xuXG4gIGlmIChsaWdodCkge1xuICAgIHZhbHVlID0gaHN2LnYgKyBicmlnaHRuZXNzU3RlcDEgKiBpO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gaHN2LnYgLSBicmlnaHRuZXNzU3RlcDIgKiBpO1xuICB9XG5cbiAgaWYgKHZhbHVlID4gMSkge1xuICAgIHZhbHVlID0gMTtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZCgyKSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlKGNvbG9yKSB7XG4gIHZhciBvcHRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIHBhdHRlcm5zID0gW107XG4gIHZhciBwQ29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xuXG4gIGZvciAodmFyIGkgPSBsaWdodENvbG9yQ291bnQ7IGkgPiAwOyBpIC09IDEpIHtcbiAgICB2YXIgaHN2ID0gcENvbG9yLnRvSHN2KCk7XG4gICAgdmFyIGNvbG9yU3RyaW5nID0gdGlueWNvbG9yKHtcbiAgICAgIGg6IGdldEh1ZShoc3YsIGksIHRydWUpLFxuICAgICAgczogZ2V0U2F0dXJhdGlvbihoc3YsIGksIHRydWUpLFxuICAgICAgdjogZ2V0VmFsdWUoaHN2LCBpLCB0cnVlKVxuICAgIH0pLnRvSGV4U3RyaW5nKCk7XG4gICAgcGF0dGVybnMucHVzaChjb2xvclN0cmluZyk7XG4gIH1cblxuICBwYXR0ZXJucy5wdXNoKHBDb2xvci50b0hleFN0cmluZygpKTtcblxuICBmb3IgKHZhciBfaSA9IDE7IF9pIDw9IGRhcmtDb2xvckNvdW50OyBfaSArPSAxKSB7XG4gICAgdmFyIF9oc3YgPSBwQ29sb3IudG9Ic3YoKTtcblxuICAgIHZhciBfY29sb3JTdHJpbmcgPSB0aW55Y29sb3Ioe1xuICAgICAgaDogZ2V0SHVlKF9oc3YsIF9pKSxcbiAgICAgIHM6IGdldFNhdHVyYXRpb24oX2hzdiwgX2kpLFxuICAgICAgdjogZ2V0VmFsdWUoX2hzdiwgX2kpXG4gICAgfSkudG9IZXhTdHJpbmcoKTtcblxuICAgIHBhdHRlcm5zLnB1c2goX2NvbG9yU3RyaW5nKTtcbiAgfSAvLyBkYXJrIHRoZW1lIHBhdHRlcm5zXG5cblxuICBpZiAob3B0cy50aGVtZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIGRhcmtDb2xvck1hcC5tYXAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBpbmRleCA9IF9yZWYuaW5kZXgsXG4gICAgICAgICAgb3BhY2l0eSA9IF9yZWYub3BhY2l0eTtcbiAgICAgIHZhciBkYXJrQ29sb3JTdHJpbmcgPSB0aW55Y29sb3IubWl4KG9wdHMuYmFja2dyb3VuZENvbG9yIHx8ICcjMTQxNDE0JywgcGF0dGVybnNbaW5kZXhdLCBvcGFjaXR5ICogMTAwKS50b0hleFN0cmluZygpO1xuICAgICAgcmV0dXJuIGRhcmtDb2xvclN0cmluZztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYXR0ZXJucztcbn1cblxudmFyIHByZXNldFByaW1hcnlDb2xvcnMgPSB7XG4gIHJlZDogJyNGNTIyMkQnLFxuICB2b2xjYW5vOiAnI0ZBNTQxQycsXG4gIG9yYW5nZTogJyNGQThDMTYnLFxuICBnb2xkOiAnI0ZBQUQxNCcsXG4gIHllbGxvdzogJyNGQURCMTQnLFxuICBsaW1lOiAnI0EwRDkxMScsXG4gIGdyZWVuOiAnIzUyQzQxQScsXG4gIGN5YW46ICcjMTNDMkMyJyxcbiAgYmx1ZTogJyMxODkwRkYnLFxuICBnZWVrYmx1ZTogJyMyRjU0RUInLFxuICBwdXJwbGU6ICcjNzIyRUQxJyxcbiAgbWFnZW50YTogJyNFQjJGOTYnLFxuICBncmV5OiAnIzY2NjY2Nidcbn07XG52YXIgcHJlc2V0UGFsZXR0ZXMgPSB7fTtcbnZhciBwcmVzZXREYXJrUGFsZXR0ZXMgPSB7fTtcbk9iamVjdC5rZXlzKHByZXNldFByaW1hcnlDb2xvcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBwcmVzZXRQYWxldHRlc1trZXldID0gZ2VuZXJhdGUocHJlc2V0UHJpbWFyeUNvbG9yc1trZXldKTtcbiAgcHJlc2V0UGFsZXR0ZXNba2V5XS5wcmltYXJ5ID0gcHJlc2V0UGFsZXR0ZXNba2V5XVs1XTsgLy8gZGFyayBwcmVzZXRQYWxldHRlc1xuXG4gIHByZXNldERhcmtQYWxldHRlc1trZXldID0gZ2VuZXJhdGUocHJlc2V0UHJpbWFyeUNvbG9yc1trZXldLCB7XG4gICAgdGhlbWU6ICdkYXJrJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMTQxNDE0J1xuICB9KTtcbiAgcHJlc2V0RGFya1BhbGV0dGVzW2tleV0ucHJpbWFyeSA9IHByZXNldERhcmtQYWxldHRlc1trZXldWzVdO1xufSk7XG52YXIgcmVkID0gcHJlc2V0UGFsZXR0ZXMucmVkO1xudmFyIHZvbGNhbm8gPSBwcmVzZXRQYWxldHRlcy52b2xjYW5vO1xudmFyIGdvbGQgPSBwcmVzZXRQYWxldHRlcy5nb2xkO1xudmFyIG9yYW5nZSA9IHByZXNldFBhbGV0dGVzLm9yYW5nZTtcbnZhciB5ZWxsb3cgPSBwcmVzZXRQYWxldHRlcy55ZWxsb3c7XG52YXIgbGltZSA9IHByZXNldFBhbGV0dGVzLmxpbWU7XG52YXIgZ3JlZW4gPSBwcmVzZXRQYWxldHRlcy5ncmVlbjtcbnZhciBjeWFuID0gcHJlc2V0UGFsZXR0ZXMuY3lhbjtcbnZhciBibHVlID0gcHJlc2V0UGFsZXR0ZXMuYmx1ZTtcbnZhciBnZWVrYmx1ZSA9IHByZXNldFBhbGV0dGVzLmdlZWtibHVlO1xudmFyIHB1cnBsZSA9IHByZXNldFBhbGV0dGVzLnB1cnBsZTtcbnZhciBtYWdlbnRhID0gcHJlc2V0UGFsZXR0ZXMubWFnZW50YTtcbnZhciBncmV5ID0gcHJlc2V0UGFsZXR0ZXMuZ3JleTtcblxuZXhwb3J0IHsgYmx1ZSwgY3lhbiwgZ2Vla2JsdWUsIGdlbmVyYXRlLCBnb2xkLCBncmVlbiwgZ3JleSwgbGltZSwgbWFnZW50YSwgb3JhbmdlLCBwcmVzZXREYXJrUGFsZXR0ZXMsIHByZXNldFBhbGV0dGVzLCBwcmVzZXRQcmltYXJ5Q29sb3JzLCBwdXJwbGUsIHJlZCwgdm9sY2FubywgeWVsbG93IH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js ***! \************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (adjMatrix);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2FkamFjZW50LW1hdHJpeC5qcz8zYzhjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9hZGphY2VudC1tYXRyaXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYWRqTWF0cml4ID0gZnVuY3Rpb24gYWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBncmFwaERhdGEuZWRnZXM7XG4gIHZhciBtYXRyaXggPSBbXTsgLy8gbWFwIG5vZGUgd2l0aCBpbmRleCBpbiBkYXRhLm5vZGVzXG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcblxuICBpZiAoIW5vZGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBub2RlcyBkYXRhIVwiKTtcbiAgfVxuXG4gIGlmIChub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgbWF0cml4LnB1c2gocm93KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBzSW5kZXggPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICB2YXIgdEluZGV4ID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgaWYgKCFzSW5kZXggJiYgc0luZGV4ICE9PSAwIHx8ICF0SW5kZXggJiYgdEluZGV4ICE9PSAwKSByZXR1cm47XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhZGpNYXRyaXg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_queue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/queue */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _structs_queue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (breadthFirstSearch);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Jmcy5qcz8xM2Q2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNFO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0Isc0RBQUs7QUFDM0I7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxJQUFJLDBEQUFZO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsaUZBQWtCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9iZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVldWUgZnJvbSAnLi9zdHJ1Y3RzL3F1ZXVlJztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG4gICAgICB2YXIgaWQgPSBuZXh0O1xuXG4gICAgICBpZiAoIXNlZW5baWRdKSB7XG4gICAgICAgIHNlZW5baWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICog5bm/5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZ3JhcGggR3JhcGgg5Zu+5a6e5L6LXG4gKiBAcGFyYW0gc3RhcnROb2RlIOW8gOWni+mBjeWOhueahOiKgueCuVxuICogQHBhcmFtIG9yaWdpbmFsQ2FsbGJhY2tzIOWbnuiwg1xuICovXG5cblxudmFyIGJyZWFkdGhGaXJzdFNlYXJjaCA9IGZ1bmN0aW9uIGJyZWFkdGhGaXJzdFNlYXJjaChncmFwaERhdGEsIHN0YXJ0Tm9kZUlkLCBvcmlnaW5hbENhbGxiYWNrcywgZGlyZWN0ZWQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FsbGJhY2tzID0gaW5pdENhbGxiYWNrcyhvcmlnaW5hbENhbGxiYWNrcyk7XG4gIHZhciBub2RlUXVldWUgPSBuZXcgUXVldWUoKTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8g5Yid5aeL5YyW6Zif5YiX5YWD57SgXG5cbiAgbm9kZVF1ZXVlLmVucXVldWUoc3RhcnROb2RlSWQpO1xuICB2YXIgcHJldmlvdXNOb2RlID0gJyc7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGVRdWV1ZS5kZXF1ZXVlKCk7XG4gICAgY2FsbGJhY2tzLmVudGVyKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDlsIbmiYDmnInpgrvlsYXmt7vliqDliLDpmJ/liJfkuK3ku6Xkvr/pgY3ljoZcblxuICAgIGdldE5laWdoYm9ycyhjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgYnJlYWR0aEZpcnN0U2VhcmNoOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js ***! \****************************************************************************************/ /*! exports provided: detectConnectedComponents, detectStrongConnectComponents, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectConnectedComponents\", function() { return detectConnectedComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectStrongConnectComponents\", function() { return detectStrongConnectComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getConnectedComponents; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\n\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Nvbm5lY3RlZC1jb21wb25lbnQuanM/Njc5NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBEQUFZOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCLG9CQUFvQiwwREFBWTtBQUNoQztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMscUJBQXFCO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gXCIuL3V0aWxcIjtcbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9IGdldE5laWdoYm9ycyhub2RlLmlkLCBlZGdlcyk7XG5cbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuXG4gICAgICBpZiAoIXZpc2l0ZWRbbmVpZ2hib3JdKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9yO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGFyZ2V0Tm9kZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZ2V0Q29tcG9uZW50KHRhcmdldE5vZGVbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICBfbG9vcF8xKGkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmICghdmlzaXRlZFtub2RlLmlkXSkge1xuICAgICAgLy8g5a+55LqO5peg5ZCR5Zu+6L+b6KGMZGZz6YGN5Y6G77yM5q+P5LiA5qyh6LCD55So5ZCO6YO95b6X5Yiw5LiA5Liq6L+e6YCa5YiG6YePXG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICBjb21wb25lbnQucHVzaChub2RlU3RhY2sucG9wKCkpO1xuICAgICAgfVxuXG4gICAgICBhbGxDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ29tcG9uZW50cztcbn07XG4vKipcbiAqIFRhcmphbidzIEFsZ29yaXRobSDlpI3mnYLluqYgIE8ofFZ8K3xFfClcbiAqIEZvciBkaXJlY3RlZCBncmFwaCBvbmx5XG4gKiBhIGRpcmVjdGVkIGdyYXBoIGlzIHNhaWQgdG8gYmUgc3Ryb25nbHkgY29ubmVjdGVkIGlmIFwiZXZlcnkgdmVydGV4IGlzIHJlYWNoYWJsZSBmcm9tIGV2ZXJ5IG90aGVyIHZlcnRleFwiLlxuICogcmVmZXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFyamFuJTI3c19zdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHJldHVybiBhIGxpc3Qgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGVkZ2VzLCAndGFyZ2V0JykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkO1xuICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgIH0pO1xuXG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciB0YXJnZXROb2RlSUQgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghaW5kaWNlc1t0YXJnZXROb2RlSURdICYmIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSAhPT0gMCkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmlkID09PSB0YXJnZXROb2RlSUQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH0gLy8gdHJlZSBlZGdlXG5cblxuICAgICAgICBsb3dMaW5rW25vZGUuaWRdID0gTWF0aC5taW4obG93TGlua1tub2RlLmlkXSwgbG93TGlua1t0YXJnZXROb2RlSURdKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5TdGFja1t0YXJnZXROb2RlSURdKSB7XG4gICAgICAgIC8vIGJhY2sgZWRnZSwgdGFyZ2V0IG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgU0NDXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBpbmRpY2VzW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgX2xvb3BfMihpKTtcbiAgICB9IC8vIElmIG5vZGUgaXMgYSByb290IG5vZGUsIGdlbmVyYXRlIGFuIFNDQ1xuXG5cbiAgICBpZiAobG93TGlua1tub2RlLmlkXSA9PT0gaW5kaWNlc1tub2RlLmlkXSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IFtdO1xuXG4gICAgICB3aGlsZSAobm9kZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHRtcE5vZGUgPSBub2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGluU3RhY2tbdG1wTm9kZS5pZF0gPSBmYWxzZTtcbiAgICAgICAgY29tcG9uZW50LnB1c2godG1wTm9kZSk7XG4gICAgICAgIGlmICh0bXBOb2RlID09PSBub2RlKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbXBvbmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDAsIG5vZGVzXzEgPSBub2RlczsgX2kgPCBub2Rlc18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBub2RlID0gbm9kZXNfMVtfaV07XG5cbiAgICBpZiAoIWluZGljZXNbbm9kZS5pZF0gJiYgaW5kaWNlc1tub2RlLmlkXSAhPT0gMCkge1xuICAgICAgZ2V0Q29tcG9uZW50KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js ***! \***********************************************************************************/ /*! exports provided: secondReg, dateReg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"secondReg\", function() { return secondReg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateReg\", function() { return dateReg; });\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2NvbnN0YW50cy90aW1lLmpzPzQ3MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sc0JBQXNCLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSTtBQUNwRCxvQkFBb0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9jb25zdGFudHMvdGltZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2Vjb25kUmVnID0gL14oXFxkezEsNH0pKC18XFwvKShcXGR7MSwyfSlcXDIoXFxkezEsMn0pJC87XG5leHBvcnQgdmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js ***! \***************************************************************************/ /*! exports provided: default, getInDegree, getOutDegree */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return getInDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return getOutDegree; });\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (degree);\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcz83MjE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRWUscUVBQU0sRUFBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js ***! \*********************************************************************************/ /*! exports provided: detectAllUndirectedCycle, detectAllDirectedCycle, detectAllCycles, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return detectAllUndirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return detectAllDirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return detectAllCycles; });\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js\");\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n Object(_dfs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"detectStrongConnectComponents\"])({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (detectDirectedCycle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RldGVjdC1jeWNsZS5qcz8yYTAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdCO0FBQ3NFO0FBQ3hEOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsd0JBQXdCOztBQUV4Qix1QkFBdUI7O0FBRXZCLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsSUFBSSxvREFBRztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsb0VBQXNCLG1CQUFtQjs7QUFFNUQsNkNBQTZDLDBCQUEwQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHVCQUF1Qiw4QkFBOEI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwREFBWTs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTs7QUFFQSwrQkFBK0IsMEJBQTBCO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBLDRCQUE0QiwwREFBWTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0I7QUFDekIsOEJBQThCOztBQUU5QjtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxlQUFlLDBGQUE2QjtBQUM1QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ2Usa0ZBQW1CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGZzIGZyb20gJy4vZGZzJztcbmltcG9ydCBnZXRDb25uZWN0ZWRDb21wb25lbnRzLCB7IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzIH0gZnJvbSAnLi9jb25uZWN0ZWQtY29tcG9uZW50JztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbnZhciBkZXRlY3REaXJlY3RlZEN5Y2xlID0gZnVuY3Rpb24gZGV0ZWN0RGlyZWN0ZWRDeWNsZShncmFwaERhdGEpIHtcbiAgdmFyIGN5Y2xlID0gbnVsbDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgdmFyIGRmc1BhcmVudE1hcCA9IHt9OyAvLyDmiYDmnInmsqHmnInooqvorr/pl67nmoToioLngrnpm4blkIhcblxuICB2YXIgdW52aXNpdGVkU2V0ID0ge307IC8vIOato+WcqOiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGluZ1NldCA9IHt9OyAvLyDmiYDmnInlt7Lnu4/ooqvorr/pl67ov4fnmoToioLngrnpm4blkIhcblxuICB2YXIgdmlzaXRlZFNldCA9IHt9OyAvLyDliJ3lp4vljJYgdW52aXNpdGVkU2V0XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHVudmlzaXRlZFNldFtub2RlLmlkXSA9IG5vZGU7XG4gIH0pO1xuICB2YXIgY2FsbGJhY2tzID0ge1xuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudCxcbiAgICAgICAgICBwcmV2aW91c05vZGUgPSBfYS5wcmV2aW91cztcblxuICAgICAgaWYgKHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSkge1xuICAgICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmraPlnKjorr/pl67kuK3vvIzliJnor7TmmI7mo4DmtYvliLDnjq/ot6/kuoZcbiAgICAgICAgY3ljbGUgPSB7fTtcbiAgICAgICAgdmFyIGN1cnJlbnRDeWNsZU5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgICAgdmFyIHByZXZpb3VzQ3ljbGVOb2RlID0gcHJldmlvdXNOb2RlO1xuXG4gICAgICAgIHdoaWxlIChwcmV2aW91c0N5Y2xlTm9kZSAhPT0gY3VycmVudE5vZGUpIHtcbiAgICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIGN1cnJlbnRDeWNsZU5vZGUgPSBwcmV2aW91c0N5Y2xlTm9kZTtcbiAgICAgICAgICBwcmV2aW91c0N5Y2xlTm9kZSA9IGRmc1BhcmVudE1hcFtwcmV2aW91c0N5Y2xlTm9kZV07XG4gICAgICAgIH1cblxuICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5aaC5p6c5LiN5a2Y5Zyo5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit77yM5YiZ5bCG5YW25pS+5YWl5q2j5Zyo6K6/6Zeu6ZuG5ZCI77yM5bm25LuO5pyq6K6/6Zeu6ZuG5ZCI5Lit5Yig6ZmkXG4gICAgICAgIHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSA9IGN1cnJlbnROb2RlO1xuICAgICAgICBkZWxldGUgdW52aXNpdGVkU2V0W2N1cnJlbnROb2RlXTsgLy8g5pu05pawIERTRiBwYXJlbnRzIOWIl+ihqFxuXG4gICAgICAgIGRmc1BhcmVudE1hcFtjdXJyZW50Tm9kZV0gPSBwcmV2aW91c05vZGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoX2EpIHtcbiAgICAgIHZhciBjdXJyZW50Tm9kZSA9IF9hLmN1cnJlbnQ7IC8vIOWmguaenOaJgOacieeahOiKgueCueeahOWtkOiKgueCuemDveW3sue7j+iuv+mXrui/h+S6hu+8jOWImeS7juato+WcqOiuv+mXrumbhuWQiOS4reWIoOmZpOaOie+8jOW5tuWwhuWFtuenu+WFpeWIsOW3suiuv+mXrumbhuWQiOS4re+8jFxuICAgICAgLy8g5ZCM5pe25Lmf5oSP5ZGz552A5b2T5YmN6IqC54K555qE5omA5pyJ6YK75bGF6IqC54K56YO96KKr6K6/6Zeu6L+H5LqGXG5cbiAgICAgIHZpc2l0ZWRTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICBkZWxldGUgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdO1xuICAgIH0sXG4gICAgYWxsb3dUcmF2ZXJzYWw6IGZ1bmN0aW9uIGFsbG93VHJhdmVyc2FsKF9hKSB7XG4gICAgICB2YXIgbmV4dE5vZGUgPSBfYS5uZXh0OyAvLyDlpoLmnpzmo4DmtYvliLDnjq/ot6/liJnpnIDopoHnu4jmraLmiYDmnInov5vkuIDmraXnmoTpgY3ljobvvIzlkKbliJnkvJrlr7zoh7Tml6DpmZDlvqrnjq/pgY3ljoZcblxuICAgICAgaWYgKGN5Y2xlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LuF5YWB6K646YGN5Y6G5rKh5pyJ6K6/6Zeu55qE6IqC54K577yMdmlzaXRlZFNldCDkuK3nmoTpg73lt7Lnu4/orr/pl67ov4fkuoZcblxuXG4gICAgICByZXR1cm4gIXZpc2l0ZWRTZXRbbmV4dE5vZGVdO1xuICAgIH1cbiAgfTsgLy8g5byA5aeL6YGN5Y6G6IqC54K5XG5cbiAgd2hpbGUgKE9iamVjdC5rZXlzKHVudmlzaXRlZFNldCkubGVuZ3RoKSB7XG4gICAgLy8g5LuO56ys5LiA5Liq6IqC54K55byA5aeL6L+b6KGMIERGUyDpgY3ljoZcbiAgICB2YXIgZmlyc2V0VW5WaXNpdGVkS2V5ID0gT2JqZWN0LmtleXModW52aXNpdGVkU2V0KVswXTtcbiAgICBkZnMoZ3JhcGhEYXRhLCBmaXJzZXRVblZpc2l0ZWRLZXksIGNhbGxiYWNrcyk7XG4gIH1cblxuICByZXR1cm4gY3ljbGU7XG59O1xuLyoqXG4gKiDmo4DmtYvml6DlkJHlm77kuK3nmoTmiYDmnIlCYXNlIGN5Y2xlc1xuICogcmVmZXI6IGh0dHBzOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9BcnRpY2xlcy8xMTU4MjMyL0VudW1lcmF0aW5nLUFsbC1DeWNsZXMtaW4tYW4tVW5kaXJlY3RlZC1HcmFwaFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uEXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBJTm9kZX1dIOi/lOWbnuS4gOe7hGJhc2UgY3ljbGVzXG4gKi9cblxuXG5leHBvcnQgdmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEsIGZhbHNlKTsgLy8gbG9vcCB0aHJvdWdoIGFsbCBjb25uZWN0ZWQgY29tcG9uZW50c1xuXG4gIGZvciAodmFyIF9pID0gMCwgY29tcG9uZW50c18xID0gY29tcG9uZW50czsgX2kgPCBjb21wb25lbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNfMVtfaV07XG4gICAgaWYgKCFjb21wb25lbnQubGVuZ3RoKSBjb250aW51ZTtcbiAgICB2YXIgcm9vdCA9IGNvbXBvbmVudFswXTtcbiAgICB2YXIgcm9vdElkID0gcm9vdC5pZDtcbiAgICB2YXIgc3RhY2sgPSBbcm9vdF07XG4gICAgdmFyIHBhcmVudF8xID0gKF9hID0ge30sIF9hW3Jvb3RJZF0gPSByb290LCBfYSk7XG4gICAgdmFyIHVzZWQgPSAoX2IgPSB7fSwgX2Jbcm9vdElkXSA9IG5ldyBTZXQoKSwgX2IpOyAvLyB3YWxrIGEgc3Bhbm5pbmcgdHJlZSB0byBmaW5kIGN5Y2xlc1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBjdXJOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICB2YXIgY3VyTm9kZUlkID0gY3VyTm9kZS5pZDtcbiAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSkge1xuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgcGF0aCA9IFtdOyAvLyBzdGFjayBvZiBub2RlcyBpbiBjdXJyZW50IHBhdGhcblxuICB2YXIgYmxvY2tlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIEIgPSBbXTsgLy8gcmVtZW1iZXIgcG9ydGlvbnMgb2YgdGhlIGdyYXBoIHRoYXQgeWllbGQgbm8gZWxlbWVudGFyeSBjaXJjdWl0XG5cbiAgdmFyIGFsbEN5Y2xlcyA9IFtdO1xuICB2YXIgaWR4Mk5vZGUgPSB7fTtcbiAgdmFyIG5vZGUySWR4ID0ge307IC8vIOi+heWKqeWHveaVsO+8miB1bmJsb2NrIGFsbCBibG9ja2VkIG5vZGVzXG5cbiAgdmFyIHVuYmxvY2sgPSBmdW5jdGlvbiB1bmJsb2NrKHRoaXNOb2RlKSB7XG4gICAgdmFyIHN0YWNrID0gW3RoaXNOb2RlXTtcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbm9kZSA9IHN0YWNrLnBvcCgpO1xuXG4gICAgICBpZiAoYmxvY2tlZC5oYXMobm9kZSkpIHtcbiAgICAgICAgYmxvY2tlZC5kZWxldGUobm9kZSk7XG4gICAgICAgIEJbbm9kZS5pZF0uZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgIHN0YWNrLnB1c2gobik7XG4gICAgICAgIH0pO1xuICAgICAgICBCW25vZGUuaWRdLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBjaXJjdWl0ID0gZnVuY3Rpb24gY2lyY3VpdChub2RlLCBzdGFydCwgYWRqTGlzdCkge1xuICAgIHZhciBjbG9zZWQgPSBmYWxzZTsgLy8gd2hldGhlciBhIHBhdGggaXMgY2xvc2VkXG5cbiAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkgcmV0dXJuIGNsb3NlZDtcbiAgICBwYXRoLnB1c2gobm9kZSk7XG4gICAgYmxvY2tlZC5hZGQobm9kZSk7XG4gICAgdmFyIG5laWdoYm9ycyA9IGFkakxpc3Rbbm9kZS5pZF07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgaWYgKG5laWdoYm9yID09PSBzdGFydCkge1xuICAgICAgICB2YXIgY3ljbGUgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgcGF0aC5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW2luZGV4IC0gMV0uaWRdID0gcGF0aFtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW3BhdGgubGVuZ3RoIC0gMV0uaWRdID0gcGF0aFswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFsbEN5Y2xlcy5wdXNoKGN5Y2xlKTtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIWJsb2NrZWQuaGFzKG5laWdoYm9yKSkge1xuICAgICAgICBpZiAoY2lyY3VpdChuZWlnaGJvciwgc3RhcnQsIGFkakxpc3QpKSB7XG4gICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZWQpIHtcbiAgICAgIHVuYmxvY2sobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGlkeDJOb2RlW25laWdoYm9yc1tpXV07XG5cbiAgICAgICAgaWYgKCFCW25laWdoYm9yLmlkXS5oYXMobm9kZSkpIHtcbiAgICAgICAgICBCW25laWdoYm9yLmlkXS5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoLnBvcCgpO1xuICAgIHJldHVybiBjbG9zZWQ7XG4gIH07XG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8gSm9obnNvbidzIGFsZ29yaXRobSDopoHmsYLnu5noioLngrnotYvpobrluo/vvIzlhYjmjInoioLngrnlnKjmlbDnu4TkuK3nmoTpobrluo9cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICBub2RlMklkeFtub2RlSWRdID0gaTtcbiAgICBpZHgyTm9kZVtpXSA9IG5vZGU7XG4gIH0gLy8g5aaC5p6c5pyJ5oyH5a6a5YyF5ZCr55qE6IqC54K577yM5YiZ5oqK5oyH5a6a6IqC54K55o6S5bqP5Zyo5YmN77yM5Lul5L6/5o+Q5pep57uT5p2f5pCc57SiXG5cblxuICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlSWRzW2ldO1xuICAgICAgbm9kZTJJZHhbbm9kZXNbaV0uaWRdID0gbm9kZTJJZHhbbm9kZUlkXTtcbiAgICAgIG5vZGUySWR4W25vZGVJZF0gPSAwO1xuICAgICAgaWR4Mk5vZGVbMF0gPSBub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkID09PSBub2RlSWQ7XG4gICAgICB9KTtcbiAgICAgIGlkeDJOb2RlW25vZGUySWR4W25vZGVzW2ldLmlkXV0gPSBub2Rlc1tpXTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH1cbiAgfSAvLyDov5Tlm54g6IqC54K56aG65bqPID49IG5vZGVPcmRlciDnmoTlvLrov57pgJrliIbph4/nmoRhZGpMaXN0XG5cblxuICB2YXIgZ2V0TWluQ29tcG9uZW50QWRqID0gZnVuY3Rpb24gZ2V0TWluQ29tcG9uZW50QWRqKGNvbXBvbmVudHMpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgbWluQ29tcElkeDtcbiAgICB2YXIgbWluSWR4ID0gSW5maW5pdHk7IC8vIEZpbmQgbGVhc3QgY29tcG9uZW50IGFuZCB0aGUgbG93ZXN0IG5vZGVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXAubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5vZGVJZHhfMSA9IG5vZGUySWR4W2NvbXBbal0uaWRdO1xuXG4gICAgICAgIGlmIChub2RlSWR4XzEgPCBtaW5JZHgpIHtcbiAgICAgICAgICBtaW5JZHggPSBub2RlSWR4XzE7XG4gICAgICAgICAgbWluQ29tcElkeCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1ttaW5Db21wSWR4XTtcbiAgICB2YXIgYWRqTGlzdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHZhciBub2RlID0gY29tcG9uZW50W2ldO1xuICAgICAgYWRqTGlzdFtub2RlLmlkXSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDAsIF9iID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGdyYXBoRGF0YS5lZGdlcywgJ3RhcmdldCcpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50Lm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICAgIHJldHVybiBjLmlkO1xuICAgICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgICB9KTsgX2kgPCBfYi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gX2JbX2ldOyAvLyDlr7noh6rnjq/mg4XlhrUgKOeCuei/nuWQkeiHqui6qykg54m55q6K5aSE55CG77ya6K6w5b2V6Ieq546v77yM5L2G5LiN5Yqg5YWlYWRqTGlzdFxuXG4gICAgICAgIGlmIChuZWlnaGJvciA9PT0gbm9kZS5pZCAmJiAhKGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSkge1xuICAgICAgICAgIGFsbEN5Y2xlcy5wdXNoKChfYSA9IHt9LCBfYVtub2RlLmlkXSA9IG5vZGUsIF9hKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRqTGlzdFtub2RlLmlkXS5wdXNoKG5vZGUySWR4W25laWdoYm9yXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICBhZGpMaXN0OiBhZGpMaXN0LFxuICAgICAgbWluSWR4OiBtaW5JZHhcbiAgICB9O1xuICB9O1xuXG4gIHZhciBub2RlSWR4ID0gMDtcblxuICB3aGlsZSAobm9kZUlkeCA8IG5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBzdWJncmFwaE5vZGVzID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZTJJZHhbbi5pZF0gPj0gbm9kZUlkeDtcbiAgICB9KTtcbiAgICB2YXIgc2NjcyA9IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzKHtcbiAgICAgIG5vZGVzOiBzdWJncmFwaE5vZGVzLFxuICAgICAgZWRnZXM6IGdyYXBoRGF0YS5lZGdlc1xuICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50Lmxlbmd0aCA+IDE7XG4gICAgfSk7XG4gICAgaWYgKHNjY3MubGVuZ3RoID09PSAwKSBicmVhaztcbiAgICB2YXIgc2NjID0gZ2V0TWluQ29tcG9uZW50QWRqKHNjY3MpO1xuICAgIHZhciBtaW5JZHggPSBzY2MubWluSWR4LFxuICAgICAgICBhZGpMaXN0ID0gc2NjLmFkakxpc3QsXG4gICAgICAgIGNvbXBvbmVudCA9IHNjYy5jb21wb25lbnQ7XG5cbiAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbXBvbmVudC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIEJbbm9kZS5pZF0gPSBuZXcgU2V0KCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdGFydE5vZGUgPSBpZHgyTm9kZVttaW5JZHhdOyAvLyBzdGFydE5vZGUg5LiN5Zyo5oyH5a6a6KaB5YyF5ZCr55qE6IqC54K55Lit77yM5o+Q5YmN57uT5p2f5pCc57SiXG5cbiAgICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgJiYgbm9kZUlkcy5pbmRleE9mKHN0YXJ0Tm9kZS5pZCkgPT09IC0xKSByZXR1cm4gYWxsQ3ljbGVzO1xuICAgICAgY2lyY3VpdChzdGFydE5vZGUsIHN0YXJ0Tm9kZSwgYWRqTGlzdCk7XG4gICAgICBub2RlSWR4ID0gbWluSWR4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbEN5Y2xlcztcbn07XG4vKipcbiAqIOafpeaJvuWbvuS4reaJgOaciea7oei2s+imgeaxgueahOWciFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uE77yM6Iul5LiN5oyH5a6a77yM5YiZ6L+U5Zue5Zu+5Lit5omA5pyJ55qE5ZyIXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBOb2RlfV0g5YyF5ZCr5omA5pyJ546v55qE5pWw57uE77yM5q+P5Liq546v55So5LiA5LiqT2JqZWN06KGo56S677yM5YW25Lita2V55Li66IqC54K5aWTvvIx2YWx1ZeS4uuivpeiKgueCueWcqOeOr+S4reaMh+WQkeeahOS4i+S4gOS4quiKgueCuVxuICovXG5cbmV4cG9ydCB2YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgZGV0ZWN0RGlyZWN0ZWRDeWNsZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return depthFirstSearch; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcz9mMDNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSwwREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHZTtBQUNmO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbmZ1bmN0aW9uIGluaXRDYWxsYmFja3MoY2FsbGJhY2tzKSB7XG4gIGlmIChjYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrcyA9IHt9O1xuICB9XG5cbiAgdmFyIGluaXRpYXRlZENhbGxiYWNrID0gY2FsbGJhY2tzO1xuXG4gIHZhciBzdHViQ2FsbGJhY2sgPSBmdW5jdGlvbiBzdHViQ2FsbGJhY2soKSB7fTtcblxuICB2YXIgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgIHZhciBuZXh0ID0gX2EubmV4dDtcblxuICAgICAgaWYgKCFzZWVuW25leHRdKSB7XG4gICAgICAgIHNlZW5bbmV4dF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gIH0oKTtcblxuICBpbml0aWF0ZWRDYWxsYmFjay5hbGxvd1RyYXZlcnNhbCA9IGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCB8fCBhbGxvd1RyYXZlcnNhbENhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5lbnRlciA9IGNhbGxiYWNrcy5lbnRlciB8fCBzdHViQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmxlYXZlID0gY2FsbGJhY2tzLmxlYXZlIHx8IHN0dWJDYWxsYmFjaztcbiAgcmV0dXJuIGluaXRpYXRlZENhbGxiYWNrO1xufVxuLyoqXG4gKiBAcGFyYW0ge0dyYXBofSBncmFwaFxuICogQHBhcmFtIHtHcmFwaE5vZGV9IGN1cnJlbnROb2RlXG4gKiBAcGFyYW0ge0dyYXBoTm9kZX0gcHJldmlvdXNOb2RlXG4gKiBAcGFyYW0ge0NhbGxiYWNrc30gY2FsbGJhY2tzXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgY3VycmVudE5vZGUsIHByZXZpb3VzTm9kZSwgY2FsbGJhY2tzKSB7XG4gIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgZ2V0TmVpZ2hib3JzKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOutEdgesNodeId\"])(minNodeId, edges);else relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dijkstra);\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(prePath)) paths.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzP2Q1NTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDRDtBQUN3Qjs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlDQUFpQywrREFBaUIsbUJBQW1CLG9CQUFvQiw4REFBZ0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBOztBQUVBLDJCQUEyQjs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHVFQUFRLEVBQUM7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxzQ0FBc0MsZ0JBQWdCO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMseUJBQXlCO0FBQ3RFO0FBQ0EsVUFBVSwwREFBTyxzQkFBc0IsMkRBQWEsQ0FBQywyREFBYSx1Q0FBdUM7QUFDekc7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0T3V0RWRnZXNOb2RlSWQsIGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuXG52YXIgbWluVmVydGV4ID0gZnVuY3Rpb24gbWluVmVydGV4KEQsIG5vZGVzLCBtYXJrcykge1xuICAvLyDmib7lh7rmnIDlsI/nmoTngrlcbiAgdmFyIG1pbkRpcyA9IEluZmluaXR5O1xuICB2YXIgbWluTm9kZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgaWYgKCFtYXJrc1tub2RlSWRdICYmIERbbm9kZUlkXSA8PSBtaW5EaXMpIHtcbiAgICAgIG1pbkRpcyA9IERbbm9kZUlkXTtcbiAgICAgIG1pbk5vZGUgPSBub2Rlc1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluTm9kZTtcbn07XG5cbnZhciBkaWprc3RyYSA9IGZ1bmN0aW9uIGRpamtzdHJhKGdyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlSWRzID0gW107XG4gIHZhciBtYXJrcyA9IHt9O1xuICB2YXIgRCA9IHt9O1xuICB2YXIgcHJldnMgPSB7fTsgLy8ga2V5OiDpobbngrksIHZhbHVlOiDpobbngrnnmoTliY3pqbHngrnmlbDnu4TvvIjlj6/og73mnInlpJrmnaHnrYnplb/nmoTmnIDnn63ot6/lvoTvvIlcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGlkID0gbm9kZS5pZDtcbiAgICBub2RlSWRzLnB1c2goaWQpO1xuICAgIERbaWRdID0gSW5maW5pdHk7XG4gICAgaWYgKGlkID09PSBzb3VyY2UpIERbaWRdID0gMDtcbiAgfSk7XG4gIHZhciBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgLy8gUHJvY2VzcyB0aGUgdmVydGljZXNcbiAgICB2YXIgbWluTm9kZSA9IG1pblZlcnRleChELCBub2RlcywgbWFya3MpO1xuICAgIHZhciBtaW5Ob2RlSWQgPSBtaW5Ob2RlLmlkO1xuICAgIG1hcmtzW21pbk5vZGVJZF0gPSB0cnVlO1xuICAgIGlmIChEW21pbk5vZGVJZF0gPT09IEluZmluaXR5KSByZXR1cm4gXCJjb250aW51ZVwiOyAvLyBVbnJlYWNoYWJsZSB2ZXJ0aWNlcyBjYW5ub3QgYmUgdGhlIGludGVybWVkaWF0ZSBwb2ludFxuXG4gICAgdmFyIHJlbGF0ZWRFZGdlcyA9IFtdO1xuICAgIGlmIChkaXJlY3RlZCkgcmVsYXRlZEVkZ2VzID0gZ2V0T3V0RWRnZXNOb2RlSWQobWluTm9kZUlkLCBlZGdlcyk7ZWxzZSByZWxhdGVkRWRnZXMgPSBnZXRFZGdlc0J5Tm9kZUlkKG1pbk5vZGVJZCwgZWRnZXMpO1xuICAgIHJlbGF0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgZWRnZVRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIGVkZ2VTb3VyY2UgPSBlZGdlLnNvdXJjZTtcbiAgICAgIHZhciB3ID0gZWRnZVRhcmdldCA9PT0gbWluTm9kZUlkID8gZWRnZVNvdXJjZSA6IGVkZ2VUYXJnZXQ7XG4gICAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0UHJvcGVydHlOYW1lICYmIGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA/IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA6IDE7XG5cbiAgICAgIGlmIChEW3ddID4gRFttaW5Ob2RlLmlkXSArIHdlaWdodCkge1xuICAgICAgICBEW3ddID0gRFttaW5Ob2RlLmlkXSArIHdlaWdodDtcbiAgICAgICAgcHJldnNbd10gPSBbbWluTm9kZS5pZF07XG4gICAgICB9IGVsc2UgaWYgKERbd10gPT09IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgcHJldnNbd10ucHVzaChtaW5Ob2RlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICBwcmV2c1tzb3VyY2VdID0gW3NvdXJjZV07IC8vIOavj+S4quiKgueCueWtmOWPr+iDveWtmOWcqOWkmuadoeacgOefrei3r+W+hFxuXG4gIHZhciBwYXRocyA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBEKSB7XG4gICAgaWYgKERbdGFyZ2V0XSAhPT0gSW5maW5pdHkpIHtcbiAgICAgIGZpbmRBbGxQYXRocyhzb3VyY2UsIHRhcmdldCwgcHJldnMsIHBhdGhzKTtcbiAgICB9XG4gIH0gLy8g5YW85a655LmL5YmN5Y2V6Lev5b6EXG5cblxuICB2YXIgcGF0aCA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBwYXRocykge1xuICAgIHBhdGhbdGFyZ2V0XSA9IHBhdGhzW3RhcmdldF1bMF07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogRCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIGFsbFBhdGg6IHBhdGhzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBkaWprc3RyYTtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmIChpc0FycmF5KHByZVBhdGgpKSBwYXRocy5wdXNoKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcHJlUGF0aCwgdHJ1ZSksIFt0YXJnZXRdLCBmYWxzZSkpO2Vsc2UgcGF0aHMucHVzaChbcHJlUGF0aCwgdGFyZ2V0XSk7XG4gICAgfVxuICB9XG5cbiAgZm91bmRQYXRoc1t0YXJnZXRdID0gcGF0aHM7XG4gIHJldHVybiBmb3VuZFBhdGhzW3RhcmdldF07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js ***! \******************************************************************************/ /*! exports provided: findShortestPath, findAllPath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return findShortestPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return findAllPath; });\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2ZpbmQtcGF0aC5qcz9hMDNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUMvQjtBQUNQLFdBQVcseURBQVE7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCOztBQUVqQjtBQUNBLDZCQUE2QiwwREFBWSwyQkFBMkIsMERBQVk7QUFDaEY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwwREFBWSwyQkFBMkIsMERBQVk7QUFDbEY7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvZmluZC1wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZ2V0TmVpZ2hib3JzIH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCB2YXIgZmluZFNob3J0ZXN0UGF0aCA9IGZ1bmN0aW9uIGZpbmRTaG9ydGVzdFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGRpamtzdHJhKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcbmV4cG9ydCB2YXIgZmluZEFsbFBhdGggPSBmdW5jdGlvbiBmaW5kQWxsUGF0aChncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHZhciBfYTtcblxuICBpZiAoc3RhcnQgPT09IGVuZCkgcmV0dXJuIFtbc3RhcnRdXTtcbiAgdmFyIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIHZpc2l0ZWQgPSBbc3RhcnRdO1xuICB2YXIgaXNWaXNpdGVkID0gKF9hID0ge30sIF9hW3N0YXJ0XSA9IHRydWUsIF9hKTtcbiAgdmFyIHN0YWNrID0gW107IC8vIOi+heWKqeagiO+8jOeUqOS6juWtmOWCqOiuv+mXrui/h+eahOiKgueCueeahOmCu+WxheiKgueCuVxuXG4gIHZhciBhbGxQYXRoID0gW107XG4gIHZhciBuZWlnaGJvcnMgPSBkaXJlY3RlZCA/IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMpO1xuICBzdGFjay5wdXNoKG5laWdoYm9ycyk7XG5cbiAgd2hpbGUgKHZpc2l0ZWQubGVuZ3RoID4gMCAmJiBzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbi5zaGlmdCgpO1xuXG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgdmlzaXRlZC5wdXNoKGNoaWxkKTtcbiAgICAgICAgaXNWaXNpdGVkW2NoaWxkXSA9IHRydWU7XG4gICAgICAgIG5laWdoYm9ycyA9IGRpcmVjdGVkID8gZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcywgJ3RhcmdldCcpIDogZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (floydWarshall);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanM/MGU1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTZDOztBQUU3QztBQUNBLHVCQUF1QixnRUFBWTtBQUNuQztBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsNEVBQWEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gXCIuL2FkamFjZW50LW1hdHJpeFwiO1xuXG52YXIgZmxveWRXYXJzaGFsbCA9IGZ1bmN0aW9uIGZsb3lkV2Fyc2hhbGwoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgYWRqYWNlbnRNYXRyaXggPSBnZXRBZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmxveWRXYXJzaGFsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _struct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./struct */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js\");\n\n\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"],\n edgeLabel: edgeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_EDGE_LABEL\"],\n nodeLabel2: toNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"];\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"] && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"], directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], minBackwardEdgeLabel.edgeLabel, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (gSpan);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL2dTcGFuLmpzPzMwMGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3FEOztBQUV4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx5REFBaUI7QUFDcEQsOEJBQThCLHlEQUFpQjtBQUMvQyxpQ0FBaUMseURBQWlCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsR0FBRzs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFlO0FBQy9COztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkNBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIseURBQWlCO0FBQzFDLHlCQUF5Qix5REFBaUI7QUFDMUMseUJBQXlCLHlEQUFpQjtBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsUUFBUTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsdURBQWU7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQLDJDQUEyQzs7QUFFM0M7QUFDQSxpSEFBaUg7O0FBRWpIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREOztBQUU1RDtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFDQUFxQyxTQUFTO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwrREFBK0QseURBQWlCLGtDQUFrQyx5REFBaUI7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxtRUFBbUUseURBQWlCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx3REFBSztBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQyxxQ0FBcUMsUUFBUTtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLHFCQUFxQixtQkFBbUI7QUFDeEM7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RSx5REFBaUI7O0FBRTFGOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsaUNBQWlDOztBQUVqQyw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxxQ0FBcUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7OztBQUdyQjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSx1RUFBdUU7OztBQUd2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vZ1NwYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gXCJAYW50di91dGlsXCI7XG5pbXBvcnQgeyBHcmFwaCwgVkFDQU5UX05PREVfTEFCRUwsIFZBQ0FOVF9HUkFQSF9JRCwgVkFDQU5UX0VER0VfTEFCRUwgfSBmcm9tIFwiLi9zdHJ1Y3RcIjtcblxudmFyIERGU2VkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpIHtcbiAgICB0aGlzLmZyb21Ob2RlID0gZnJvbU5vZGU7XG4gICAgdGhpcy50b05vZGUgPSB0b05vZGU7XG4gICAgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9IHtcbiAgICAgIG5vZGVMYWJlbDE6IGZyb21Ob2RlTGFiZWwgfHwgVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBWQUNBTlRfRURHRV9MQUJFTCxcbiAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZUxhYmVsIHx8IFZBQ0FOVF9OT0RFX0xBQkVMXG4gICAgfTtcbiAgfVxuXG4gIERGU2VkZ2UucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tTm9kZSA9PT0gb3RoZXIuZm9ybU5vZGUgJiYgdGhpcy50b05vZGUgPT09IG90aGVyLnRvTm9kZSAmJiB0aGlzLm5vZGVFZGdlTm9kZUxhYmVsID09PSBvdGhlci5ub2RlRWRnZU5vZGVMYWJlbDtcbiAgfTtcblxuICBERlNlZGdlLnByb3RvdHlwZS5ub3RFcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuICF0aGlzLmVxdWFsVG8ob3RoZXIpO1xuICB9O1xuXG4gIHJldHVybiBERlNlZGdlO1xufSgpOyAvLyBERlNjb2RlIOaYryBERVNlZGdlIOeahOaVsOe7hFxuXG5cbnZhciBERlNjb2RlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTY29kZSgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QgPSBbXTtcbiAgfVxuXG4gIERGU2NvZGUucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICB2YXIgYUxlbmd0aCA9IHRoaXMuZGZzRWRnZUxpc3QubGVuZ3RoO1xuICAgIHZhciBiTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuICAgIGlmIChhTGVuZ3RoICE9PSBiTGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGZzRWRnZUxpc3RbaV0gIT09IG90aGVyW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcbiAgLyoqIOWinuWKoOS4gOadoSBlZGdlIOWIsCBERlNjb2RlICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5wdXNoQmFjayA9IGZ1bmN0aW9uIChmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpKTtcbiAgICByZXR1cm4gdGhpcy5kZnNFZGdlTGlzdDtcbiAgfTtcbiAgLyoqIOagueaNriBkZnMg5p6E5bu65Zu+ICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS50b0dyYXBoID0gZnVuY3Rpb24gKGdyYXBoSWQsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGdyYXBoSWQgPT09IHZvaWQgMCkge1xuICAgICAgZ3JhcGhJZCA9IFZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgR3JhcGgoZ3JhcGhJZCwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgdmFyIGZyb21Ob2RlSWQgPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkID0gZGZzRWRnZS50b05vZGU7XG4gICAgICB2YXIgX2EgPSBkZnNFZGdlLm5vZGVFZGdlTm9kZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcbiAgICAgIGlmIChub2RlTGFiZWwxICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZShmcm9tTm9kZUlkLCBub2RlTGFiZWwxKTtcbiAgICAgIGlmIChub2RlTGFiZWwyICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gVkFDQU5UX05PREVfTEFCRUwgJiYgbm9kZUxhYmVsMiAhPT0gbm9kZUxhYmVsMSkgZ3JhcGguYWRkRWRnZSh1bmRlZmluZWQsIGZyb21Ob2RlSWQsIHRvTm9kZUlkLCBlZGdlTGFiZWwpO1xuICAgIH0pO1xuICAgIHJldHVybiBncmFwaDtcbiAgfTsgLy8g5bu656uLIHJpZ2h0bW9zdCBwYXRoXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5idWlsZFJtcGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHZhciBvbGRGcm9tID0gdW5kZWZpbmVkO1xuICAgIHZhciBzZWxmTGVuZ3RoID0gdGhpcy5kZnNFZGdlTGlzdC5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gc2VsZkxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZGZzRWRnZSA9IHRoaXMuZGZzRWRnZUxpc3RbaV07XG4gICAgICB2YXIgZnJvbU5vZGVJZHggPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkeCA9IGRmc0VkZ2UudG9Ob2RlO1xuXG4gICAgICBpZiAoZnJvbU5vZGVJZHggPCB0b05vZGVJZHggJiYgKG9sZEZyb20gPT09IHVuZGVmaW5lZCB8fCB0b05vZGVJZHggPT09IG9sZEZyb20pKSB7XG4gICAgICAgIHRoaXMucm1wYXRoLnB1c2goaSk7XG4gICAgICAgIG9sZEZyb20gPSBmcm9tTm9kZUlkeDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ybXBhdGg7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZU1hcCA9IHt9O1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdKSBub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdID0gdHJ1ZTtcbiAgICAgIGlmICghbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS50b05vZGVdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobm9kZU1hcCkubGVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBERlNjb2RlO1xufSgpO1xuXG52YXIgSGlzdG9yeSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEhpc3RvcnkocGRmcykge1xuICAgIHRoaXMuaGlzID0ge307XG4gICAgdGhpcy5ub2Rlc1VzZWQgPSB7fTtcbiAgICB0aGlzLmVkZ2VzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICBpZiAoIXBkZnMpIHJldHVybjtcblxuICAgIHdoaWxlIChwZGZzKSB7XG4gICAgICB2YXIgZSA9IHBkZnMuZWRnZTtcbiAgICAgIHRoaXMuZWRnZXMucHVzaChlKTtcbiAgICAgIHRoaXMubm9kZXNVc2VkW2UuZnJvbV0gPSAxO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS50b10gPSAxO1xuICAgICAgdGhpcy5lZGdlc1VzZWRbZS5pZF0gPSAxO1xuICAgICAgcGRmcyA9IHBkZnMucHJlTm9kZTtcbiAgICB9IC8vIOWAkuW6j1xuXG5cbiAgICB0aGlzLmVkZ2VzID0gdGhpcy5lZGdlcy5yZXZlcnNlKCk7XG4gIH1cblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1VzZWRbbm9kZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgSGlzdG9yeS5wcm90b3R5cGUuaGFzRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNVc2VkW2VkZ2UuaWRdID09PSAxO1xuICB9O1xuXG4gIHJldHVybiBIaXN0b3J5O1xufSgpO1xuXG52YXIgR1NwYW4gPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHU3BhbihfYSkge1xuICAgIHZhciBncmFwaHMgPSBfYS5ncmFwaHMsXG4gICAgICAgIF9iID0gX2EubWluU3VwcG9ydCxcbiAgICAgICAgbWluU3VwcG9ydCA9IF9iID09PSB2b2lkIDAgPyAyIDogX2IsXG4gICAgICAgIF9jID0gX2EubWluTm9kZU51bSxcbiAgICAgICAgbWluTm9kZU51bSA9IF9jID09PSB2b2lkIDAgPyAxIDogX2MsXG4gICAgICAgIF9kID0gX2EubWF4Tm9kZU51bSxcbiAgICAgICAgbWF4Tm9kZU51bSA9IF9kID09PSB2b2lkIDAgPyA0IDogX2QsXG4gICAgICAgIF9lID0gX2EudG9wLFxuICAgICAgICB0b3AgPSBfZSA9PT0gdm9pZCAwID8gMTAgOiBfZSxcbiAgICAgICAgX2YgPSBfYS5kaXJlY3RlZCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZixcbiAgICAgICAgX2cgPSBfYS52ZXJib3NlLFxuICAgICAgICB2ZXJib3NlID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2c7IC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOWIneWni+WMli0tLS0tLS1cblxuICAgIHRoaXMuZ3JhcGhzID0gZ3JhcGhzO1xuICAgIHRoaXMuZGZzQ29kZSA9IG5ldyBERlNjb2RlKCk7XG4gICAgdGhpcy5zdXBwb3J0ID0gMDtcbiAgICB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzID0gW107XG4gICAgdGhpcy5taW5TdXBwb3J0ID0gbWluU3VwcG9ydDtcbiAgICB0aGlzLnRvcCA9IHRvcDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gICAgdGhpcy5jb3VudGVyID0gMDsgLy8gVE9ETz8gdGltZXN0YW1wID0ge31cblxuICAgIHRoaXMubWF4Tm9kZU51bSA9IG1heE5vZGVOdW07XG4gICAgdGhpcy5taW5Ob2RlTnVtID0gbWluTm9kZU51bTtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlO1xuICAgIGlmICh0aGlzLm1heE5vZGVOdW0gPCB0aGlzLm1pbk5vZGVOdW0pIHRoaXMubWF4Tm9kZU51bSA9IHRoaXMubWluTm9kZU51bTtcbiAgICB0aGlzLnJlcG9ydERGID0gW107IC8vIG1hdHJpeFxuICB9IC8vIExpbmUgMzUyXG5cblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRSb290RWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIGZyb21Ob2RlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgZnJvbU5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKF90aGlzLmRpcmVjdGVkIHx8IGZyb21Ob2RlLmxhYmVsIDw9IG5vZGVNYXBbZWRnZS50b10ubGFiZWwpIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRCYWNrd2FyZEVkZ2UgPSBmdW5jdGlvbiAoZ3JhcGgsIGVkZ2UxLCBlZGdlMiwgaGlzdG9yeSkge1xuICAgIGlmICghdGhpcy5kaXJlY3RlZCAmJiBlZGdlMSA9PT0gZWRnZTIpIHJldHVybiBudWxsO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZWRnZTJUbyA9IG5vZGVNYXBbZWRnZTIudG9dO1xuICAgIHZhciBlZGdlMlRvRWRnZXMgPSBlZGdlMlRvLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZTJUb0VkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2UyVG9FZGdlc1tpXTtcbiAgICAgIGlmIChoaXN0b3J5Lmhhc0VkZ2UoZWRnZSkgfHwgZWRnZS50byAhPT0gZWRnZTEuZnJvbSkgY29udGludWU7XG5cbiAgICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgICBpZiAoZWRnZTEubGFiZWwgPCBlZGdlLmxhYmVsIHx8IGVkZ2UxLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIG5vZGVNYXBbZWRnZTEudG9dLmxhYmVsIDw9IG5vZGVNYXBbZWRnZTIudG9dLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsIDwgbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgfHwgbm9kZU1hcFtlZGdlMS5mcm9tXS5sYWJlbCA9PT0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgJiYgZWRnZTEubGFiZWwgPD0gZWRnZS5sYWJlbCkge1xuICAgICAgICAgIHJldHVybiBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUHVyZUVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHJpZ2h0bW9zdEVkZ2VUb0lkID0gcmlnaHRtb3N0RWRnZS50bztcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5ub2RlTWFwW3JpZ2h0bW9zdEVkZ2VUb0lkXS5lZGdlcztcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIHRvTm9kZSA9IGdyYXBoLm5vZGVNYXBbZWRnZS50b107XG5cbiAgICAgIGlmIChtaW5Ob2RlTGFiZWwgPD0gdG9Ob2RlLmxhYmVsICYmICFoaXN0b3J5Lmhhc05vZGUodG9Ob2RlKSkge1xuICAgICAgICByZXN1bHQucHVzaChlZGdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJtcGF0aEVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciB0b05vZGVMYWJlbCA9IG5vZGVNYXBbcmlnaHRtb3N0RWRnZS50b10ubGFiZWw7XG4gICAgdmFyIGZyb21Ob2RlID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLmZyb21dO1xuICAgIHZhciBlZGdlcyA9IGZyb21Ob2RlLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgbmV3VG9Ob2RlTGFiZWwgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICBpZiAocmlnaHRtb3N0RWRnZS50byA9PT0gZWRnZS50byB8fCBtaW5Ob2RlTGFiZWwgPiBuZXdUb05vZGVMYWJlbCB8fCBoaXN0b3J5Lmhhc05vZGUobm9kZU1hcFtlZGdlLnRvXSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLmxhYmVsIDwgZWRnZS5sYWJlbCB8fCByaWdodG1vc3RFZGdlLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIHRvTm9kZUxhYmVsIDw9IG5ld1RvTm9kZUxhYmVsKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmdldFN1cHBvcnQgPSBmdW5jdGlvbiAocHJvamVjdGVkKSB7XG4gICAgdmFyIGdyYXBoTWFwID0ge307XG4gICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHBybykge1xuICAgICAgaWYgKCFncmFwaE1hcFtwcm8uZ3JhcGhJZF0pIGdyYXBoTWFwW3Byby5ncmFwaElkXSA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyYXBoTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRNaW5MYWJlbCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgbWluTGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gb2JqW25vZGVFZGdlTm9kZUxhYmVsXSxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIGlmICghbWluTGFiZWwpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVMYWJlbDEgPCBtaW5MYWJlbC5ub2RlTGFiZWwxIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsIDwgbWluTGFiZWwuZWRnZUxhYmVsIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsID09PSBtaW5MYWJlbC5lZGdlTGFiZWwgJiYgbm9kZUxhYmVsMiA8IG1pbkxhYmVsLm5vZGVMYWJlbDIpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1pbkxhYmVsO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5pc01pbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGRmc0NvZGUgPSB0aGlzLmRmc0NvZGU7XG4gICAgaWYgKHRoaXMudmVyYm9zZSkgY29uc29sZS5sb2coXCJpc01pbiBjaGVja2luZ1wiLCBkZnNDb2RlKTtcbiAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdC5sZW5ndGggPT09IDEpIHJldHVybiB0cnVlO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIGdyYXBoID0gZGZzQ29kZS50b0dyYXBoKFZBQ0FOVF9HUkFQSF9JRCwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZGZzQ29kZU1pbiA9IG5ldyBERlNjb2RlKCk7XG4gICAgdmFyIHJvb3QgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgZm9yd2FyZEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpO1xuXG4gICAgICBmb3J3YXJkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG90aGVyTm9kZS5sYWJlbCk7XG4gICAgICAgIGlmICghcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0pIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMjogb3RoZXJOb2RlLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZGZzID0ge1xuICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICByb290W25vZGVFZGdlTm9kZUxhYmVsXS5wcm9qZWN0ZWQucHVzaChwZGZzKTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyDmr5TovoMgcm9vdCDkuK3mr4/kuIDpobnnmoQgbm9kZUVkZ2VOb2RlTGFiZWwg5aSn5bCP77yM5oyJ54WnIG5vZGVMYWJlbDHjgIFlZGdlTGFiZeOAgW5vZGVMYWJlbDIg55qE6aG65bqP5q+U6L6DXG5cbiAgICB2YXIgbWluTGFiZWwgPSB0aGlzLmZpbmRNaW5MYWJlbChyb290KTsgLy8gbGluZSA0MTlcblxuICAgIGlmICghbWluTGFiZWwpIHJldHVybjtcbiAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UoMCwgMSwgbWluTGFiZWwubm9kZUxhYmVsMSwgbWluTGFiZWwuZWRnZUxhYmVsLCBtaW5MYWJlbC5ub2RlTGFiZWwyKSk7IC8vIGxpbmUgNDIzXG5cbiAgICB2YXIgcHJvamVjdElzTWluID0gZnVuY3Rpb24gcHJvamVjdElzTWluKHByb2plY3RlZCkge1xuICAgICAgLy8gcmlnaHQgbW9zdCBwYXRoXG4gICAgICB2YXIgcm1wYXRoID0gZGZzQ29kZU1pbi5idWlsZFJtcGF0aCgpO1xuICAgICAgdmFyIG1pbk5vZGVMYWJlbCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbMF0ubm9kZUVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMTtcbiAgICAgIHZhciBtYXhUb0MgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFswXV0udG9Ob2RlOyAvLyBub2RlIGlkXG5cbiAgICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICAgIHZhciBmbGFnID0gZmFsc2UsXG4gICAgICAgICAgbmV3VG8gPSAwO1xuICAgICAgdmFyIGVuZCA9IGRpcmVjdGVkID8gLTEgOiAwOyAvLyDpgY3ljobliLAgMSDov5jmmK/liLAgMFxuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjsgLy8gbGluZSA0MzVcblxuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgYmFja3dhcmRFZGdlID0gX3RoaXMuZmluZEJhY2t3YXJkRWRnZShncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbaV1dLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFswXV0sIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgICAgLy8gTGluZSA0NDFcbiAgICAgICAgICAgIGlmICghYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0pIHtcbiAgICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGJhY2t3YXJkRWRnZS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiYWNrd2FyZFJvb3RbYmFja3dhcmRFZGdlLmxhYmVsXS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICBlZGdlOiBiYWNrd2FyZFJvb3QsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbmV3VG8gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGU7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IHJtcGF0aC5sZW5ndGggLSAxOyBpID4gZW5kOyBpLS0pIHtcbiAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICB2YXIgbWluQmFja3dhcmRFZGdlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoYmFja3dhcmRSb290KTtcblxuICAgICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobWF4VG9DLCBuZXdUbywgVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgVkFDQU5UX05PREVfTEFCRUwpKTtcbiAgICAgICAgdmFyIGlkeF8xID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhfMV0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XzFdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oYmFja3dhcmRSb290W21pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbF0ucHJvamVjdGVkKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZvcndhcmRSb290ID0ge307XG4gICAgICBmbGFnID0gZmFsc2U7XG4gICAgICB2YXIgbmV3RnJvbSA9IDA7XG4gICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBpZiAoZm9yd2FyZFB1cmVFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgbmV3RnJvbSA9IG1heFRvQztcbiAgICAgICAgICBmb3J3YXJkUHVyZUVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVNYXBbZWRnZS50b10ubGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgZ3JhcGhJZDogZ3JhcGguaWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBwYXRoTGVuZ3RoID0gcm1wYXRoLmxlbmd0aDtcblxuICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJtcGF0aFtpXTtcbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbdmFsdWVdLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGZvcndhcmRSbXBhdGhFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld0Zyb20gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3ZhbHVlXS5mcm9tTm9kZTtcbiAgICAgICAgICAgIGZvcndhcmRSbXBhdGhFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF8yKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZsYWcpIHJldHVybiB0cnVlO1xuXG4gICAgICB2YXIgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoZm9yd2FyZFJvb3QpO1xuXG4gICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobmV3RnJvbSwgbWF4VG9DICsgMSwgVkFDQU5UX05PREVfTEFCRUwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLmVkZ2VMYWJlbCwgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMikpO1xuICAgICAgdmFyIGlkeCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHByb2plY3RJc01pbihmb3J3YXJkUm9vdFtcIlwiLmNvbmNhdChmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMildLnByb2plY3RlZCk7XG4gICAgfTtcblxuICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KG1pbkxhYmVsLmVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwyKTtcbiAgICByZXR1cm4gcHJvamVjdElzTWluKHJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5yZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCkgPCB0aGlzLm1pbk5vZGVOdW0pIHJldHVybjtcbiAgICB0aGlzLmNvdW50ZXIrKztcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmRmc0NvZGUudG9HcmFwaCh0aGlzLmNvdW50ZXIsIHRoaXMuZGlyZWN0ZWQpO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMucHVzaChjbG9uZShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBWQUNBTlRfTk9ERV9MQUJFTCwgZWRnZUxhYmVsLCBub2RlTGFiZWwyKSk7XG5cbiAgICAgIF90aGlzLnN1YkdyYXBoTWluaW5nKGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkO1xuICAgIHZhciBtaW5TdXBwb3J0ID0gdGhpcy5taW5TdXBwb3J0O1xuICAgIHZhciBmcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzO1xuICAgIHZhciBub2RlTGFiZWxDb3VudGVyID0ge30sXG4gICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXIgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6IqC54K555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktbm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVMYWJsZUNvdW50ZWQgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6L6555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktZnJvbU5vZGXnsbvlnostZWRnZeexu+Weiy10b05vZGXnsbvlnotcblxuICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhncmFwaHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLy8gTGluZSAyNzFcbiAgICAgIHZhciBncmFwaCA9IGdyYXBoc1trZXldO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyDpgY3ljoboioLngrnvvIzorrDlvZXlr7nlupTlm74g5LiOIOavj+S4quiKgueCueeahCBsYWJlbCDliLAgbm9kZUxhYmxlQ291bnRlZFxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICAgIC8vIExpbmUgMjcyXG4gICAgICAgIHZhciBub2RlTGFiZWwgPSBub2RlLmxhYmVsO1xuICAgICAgICB2YXIgZ3JhcGhOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbCk7XG5cbiAgICAgICAgaWYgKCFub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0pIHtcbiAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSB8fCAwO1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICBub2RlTGFiZWxDb3VudGVyW25vZGVMYWJlbF0gPSBjb3VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUxhYmxlQ291bnRlZFtncmFwaE5vZGVLZXldID0ge1xuICAgICAgICAgIGdyYXBoS2V5OiBrZXksXG4gICAgICAgICAgbGFiZWw6IG5vZGVMYWJlbFxuICAgICAgICB9OyAvLyDpgY3ljobor6XoioLngrnnmoTmiYDmnInovrnvvIzorrDlvZXlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7vliLAgbm9kZUVkZ2VOb2RlTGFiZWxDb3VudGVkLiBMaW5lIDI3NlxuXG4gICAgICAgIG5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBub2RlTGFiZWwxID0gbm9kZUxhYmVsO1xuICAgICAgICAgIHZhciBub2RlTGFiZWwyID0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbDtcblxuICAgICAgICAgIGlmICghZGlyZWN0ZWQgJiYgbm9kZUxhYmVsMSA+IG5vZGVMYWJlbDIpIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBub2RlTGFiZWwyO1xuICAgICAgICAgICAgbm9kZUxhYmVsMiA9IG5vZGVMYWJlbDE7XG4gICAgICAgICAgICBub2RlTGFiZWwxID0gdG1wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBlZGdlLmxhYmVsO1xuICAgICAgICAgIHZhciBncmFwaE5vZGVFZGdlTm9kZUtleSA9IFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQobm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChlZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsMik7XG5cbiAgICAgICAgICBpZiAoIW5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBub2RlRWRnZU5vZGVDb3VudGVyW25vZGVFZGdlTm9kZUtleV0gfHwgMDtcbiAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSA9IGNvdW50ZXI7IC8vIExpbmUyODFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWRbZ3JhcGhOb2RlRWRnZU5vZGVLZXldID0ge1xuICAgICAgICAgICAgZ3JhcGhJZDoga2V5LFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZUxhYmVsMlxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIOiuoeeul+mikee5geeahOiKgueCuVxuXG4gICAgT2JqZWN0LmtleXMobm9kZUxhYmVsQ291bnRlcikuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgIHZhciBjb3VudCA9IG5vZGVMYWJlbENvdW50ZXJbbGFiZWxdO1xuICAgICAgaWYgKGNvdW50IDwgbWluU3VwcG9ydCkgcmV0dXJuO1xuICAgICAgdmFyIGcgPSB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdXG4gICAgICB9O1xuICAgICAgZy5ub2Rlcy5wdXNoKHtcbiAgICAgICAgaWQ6IFwiMFwiLFxuICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgIH0pO1xuICAgICAgZnJlcXVlbnRTaXplMVN1YmdyYXBocy5wdXNoKGcpOyAvLyBpZiAobWluTm9kZU51bSA8PSAxKSByZXBvcnRTaXplMSBUT0RPXG4gICAgfSk7XG4gICAgcmV0dXJuIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyAtLS0tLS0tLSDnrKzkuIDmraUsIF9nZW5lcmF0ZV8xZWRnZV9mcmVxdWVudF9zdWJncmFwaHPvvJrpopHnuYHnmoTljZXkuKroioLngrktLS0tLS0tXG5cblxuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IHRoaXMuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzKCk7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IDIpIHJldHVybjtcbiAgICB2YXIgZ3JhcGhzID0gdGhpcy5ncmFwaHM7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDsgLy8gUERGUyDmlbDnu4TnmoQgbWFwIExpbmUgMzA0XG5cbiAgICB2YXIgcm9vdCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhJZCkge1xuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2dyYXBoSWRdO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyBMaW5lIDMwNlxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBmb3J3YXJkUm9vdEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpOyAvLyBMaW5lIDMwOFxuXG5cbiAgICAgICAgZm9yd2FyZFJvb3RFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIHRvTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KHRvTm9kZS5sYWJlbCk7XG4gICAgICAgICAgaWYgKCFyb290W25vZGVFZGdlTm9kZUxhYmVsXSkgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHBkZnMgPSB7XG4gICAgICAgICAgICBncmFwaElkOiBncmFwaElkLFxuICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLnByb2plY3RlZC5wdXNoKHBkZnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBMaW5lIDMxM1xuXG4gICAgT2JqZWN0LmtleXMocm9vdCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUVkZ2VOb2RlTGFiZWwpIHtcbiAgICAgIHZhciBfYSA9IHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIHByb2plY3RlZCA9IF9hLnByb2plY3RlZCxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZSgwLCAxLCBub2RlTGFiZWwxLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcocHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gR1NwYW47XG59KCk7XG5cbnZhciBmb3JtYXRHcmFwaHMgPSBmdW5jdGlvbiBmb3JtYXRHcmFwaHMoZ3JhcGhzLCBkaXJlY3RlZCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBpKSB7XG4gICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgdmFyIGZHcmFwaCA9IG5ldyBHcmFwaChpLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdmFyIG5vZGVJZHhNYXAgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBqKSB7XG4gICAgICBmR3JhcGguYWRkTm9kZShqLCBub2RlW25vZGVMYWJlbFByb3BdKTtcbiAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBqO1xuICAgIH0pO1xuICAgIGdyYXBoLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGspIHtcbiAgICAgIHZhciBzb3VyY2VJZHggPSBub2RlSWR4TWFwW2VkZ2Uuc291cmNlXTtcbiAgICAgIHZhciB0YXJnZXRJZHggPSBub2RlSWR4TWFwW2VkZ2UudGFyZ2V0XTtcbiAgICAgIGZHcmFwaC5hZGRFZGdlKC0xLCBzb3VyY2VJZHgsIHRhcmdldElkeCwgZWRnZVtlZGdlTGFiZWxQcm9wXSk7XG4gICAgfSk7XG4gICAgaWYgKGZHcmFwaCAmJiBmR3JhcGguZ2V0Tm9kZU51bSgpKSByZXN1bHRbZkdyYXBoLmlkXSA9IGZHcmFwaDtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgdG9HcmFwaERhdGFzID0gZnVuY3Rpb24gdG9HcmFwaERhdGFzKGdyYXBocywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaCkge1xuICAgIHZhciBncmFwaERhdGEgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgZ3JhcGhEYXRhLm5vZGVzLnB1c2goKF9hID0ge1xuICAgICAgICBpZDogXCJcIi5jb25jYXQobm9kZS5pZClcbiAgICAgIH0sIF9hW25vZGVMYWJlbFByb3BdID0gbm9kZS5sYWJlbCwgX2EpKTtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5lZGdlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgc291cmNlOiBcIlwiLmNvbmNhdChlZGdlLmZyb20pLFxuICAgICAgICB0YXJnZXQ6IFwiXCIuY29uY2F0KGVkZ2UudG8pXG4gICAgICB9LCBfYVtlZGdlTGFiZWxQcm9wXSA9IGVkZ2UubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2goZ3JhcGhEYXRhKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgREVGQVVMVF9MQUJFTF9OQU1FID0gXCJjbHVzdGVyXCI7XG4vKipcbiAqIGdTcGFuIOmikee5geWtkOWbvuiuoeeul+eul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8iVxuICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcbiAqL1xuXG52YXIgZ1NwYW4gPSBmdW5jdGlvbiBnU3BhbihwYXJhbXMpIHtcbiAgLy8gLS0tLS0tLSDlsIblm77mlbDmja4gR3JhcGhEYXRhIOeahCBtYXAg6L2s5o2i5Li65qC85byPIC0tLS0tLS1cbiAgdmFyIGdyYXBocyA9IHBhcmFtcy5ncmFwaHMsXG4gICAgICBfYSA9IHBhcmFtcy5kaXJlY3RlZCxcbiAgICAgIGRpcmVjdGVkID0gX2EgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EsXG4gICAgICBfYiA9IHBhcmFtcy5ub2RlTGFiZWxQcm9wLFxuICAgICAgbm9kZUxhYmVsUHJvcCA9IF9iID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYixcbiAgICAgIF9jID0gcGFyYW1zLmVkZ2VMYWJlbFByb3AsXG4gICAgICBlZGdlTGFiZWxQcm9wID0gX2MgPT09IHZvaWQgMCA/IERFRkFVTFRfTEFCRUxfTkFNRSA6IF9jO1xuICB2YXIgZm9ybWF0dGVkR3JhcGhzID0gZm9ybWF0R3JhcGhzKGdyYXBocywgZGlyZWN0ZWQsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICB2YXIgbWluU3VwcG9ydCA9IHBhcmFtcy5taW5TdXBwb3J0LFxuICAgICAgbWF4Tm9kZU51bSA9IHBhcmFtcy5tYXhOb2RlTnVtLFxuICAgICAgbWluTm9kZU51bSA9IHBhcmFtcy5taW5Ob2RlTnVtLFxuICAgICAgdmVyYm9zZSA9IHBhcmFtcy52ZXJib3NlLFxuICAgICAgdG9wID0gcGFyYW1zLnRvcDsgLy8gLS0tLS0tLSDliJ3lp4vljJbkuI7miafooYznrpfms5UgLS0tLS0tLVxuXG4gIHZhciBhbGdvUGFyYW1zID0ge1xuICAgIGdyYXBoczogZm9ybWF0dGVkR3JhcGhzLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBtaW5Ob2RlTnVtOiBtaW5Ob2RlTnVtLFxuICAgIHRvcDogdG9wLFxuICAgIHZlcmJvc2U6IHZlcmJvc2UsXG4gICAgZGlyZWN0ZWQ6IGRpcmVjdGVkXG4gIH07XG4gIHZhciBjYWxjdWxhdG9yID0gbmV3IEdTcGFuKGFsZ29QYXJhbXMpO1xuICBjYWxjdWxhdG9yLnJ1bigpO1xuICB2YXIgcmVzdWx0ID0gdG9HcmFwaERhdGFzKGNhbGN1bGF0b3IuZnJlcXVlbnRTdWJncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ1NwYW47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js ***! \*********************************************************************************/ /*! exports provided: VACANT_EDGE_ID, VACANT_NODE_ID, VACANT_EDGE_LABEL, VACANT_NODE_LABEL, VACANT_GRAPH_ID, AUTO_EDGE_ID, Edge, Node, Graph */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_ID\", function() { return VACANT_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_ID\", function() { return VACANT_NODE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_LABEL\", function() { return VACANT_EDGE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_LABEL\", function() { return VACANT_NODE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_GRAPH_ID\", function() { return VACANT_GRAPH_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUTO_EDGE_ID\", function() { return AUTO_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return Edge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return Graph; });\nvar VACANT_EDGE_ID = -1;\nvar VACANT_NODE_ID = -1;\nvar VACANT_EDGE_LABEL = \"-1\";\nvar VACANT_NODE_LABEL = \"-1\";\nvar VACANT_GRAPH_ID = -1;\nvar AUTO_EDGE_ID = \"-1\";\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\n\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\n\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL3N0cnVjdC5qcz9lMTk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVlOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWU7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vc3RydWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfTk9ERV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfRURHRV9MQUJFTCA9IFwiLTFcIjtcbmV4cG9ydCB2YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnQgdmFyIFZBQ0FOVF9HUkFQSF9JRCA9IC0xO1xuZXhwb3J0IHZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5cbnZhciBFZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX0VER0VfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGZyb20gPT09IHZvaWQgMCkge1xuICAgICAgZnJvbSA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmICh0byA9PT0gdm9pZCAwKSB7XG4gICAgICB0byA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChsYWJlbCA9PT0gdm9pZCAwKSB7XG4gICAgICBsYWJlbCA9IFZBQ0FOVF9FREdFX0xBQkVMO1xuICAgIH1cblxuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xuICAgIHRoaXMudG8gPSB0bztcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICByZXR1cm4gRWRnZTtcbn0oKTtcblxuZXhwb3J0IHsgRWRnZSB9O1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0IHsgTm9kZSB9O1xuXG52YXIgR3JhcGggPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaChpZCwgZWRnZUlkQXV0b0luY3JlYXNlLCBkaXJlY3RlZCkge1xuICAgIGlmIChpZCA9PT0gdm9pZCAwKSB7XG4gICAgICBpZCA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChlZGdlSWRBdXRvSW5jcmVhc2UgPT09IHZvaWQgMCkge1xuICAgICAgZWRnZUlkQXV0b0luY3JlYXNlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgPSBlZGdlSWRBdXRvSW5jcmVhc2U7XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VNYXAgPSB7fTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwID0ge307XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gIH1cblxuICBHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5sZW5ndGg7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZE5vZGUgPSBmdW5jdGlvbiAoaWQsIGxhYmVsKSB7XG4gICAgaWYgKHRoaXMubm9kZU1hcFtpZF0pIHJldHVybjtcbiAgICB2YXIgbm9kZSA9IG5ldyBOb2RlKGlkLCBsYWJlbCk7XG4gICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgIHRoaXMubm9kZU1hcFtpZF0gPSBub2RlO1xuICAgIGlmICghdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0ucHVzaChpZCk7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZEVkZ2UgPSBmdW5jdGlvbiAoaWQsIGZyb20sIHRvLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLmVkZ2VJZEF1dG9JbmNyZWFzZSB8fCBpZCA9PT0gdW5kZWZpbmVkKSBpZCA9IHRoaXMuY291bnRlcisrO1xuICAgIGlmICh0aGlzLm5vZGVNYXBbZnJvbV0gJiYgdGhpcy5ub2RlTWFwW3RvXSAmJiB0aGlzLm5vZGVNYXBbdG9dLmVkZ2VNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIGVkZ2UgPSBuZXcgRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKTtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2lkXSA9IGVkZ2U7XG4gICAgdGhpcy5ub2RlTWFwW2Zyb21dLmFkZEVkZ2UoZWRnZSk7XG4gICAgaWYgKCF0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0pIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuXG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICB2YXIgckVkZ2UgPSBuZXcgRWRnZShpZCwgdG8sIGZyb20sIGxhYmVsKTtcbiAgICAgIHRoaXMubm9kZU1hcFt0b10uYWRkRWRnZShyRWRnZSk7XG4gICAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChyRWRnZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBHcmFwaDtcbn0oKTtcblxuZXhwb3J0IHsgR3JhcGggfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js\");\n/* harmony import */ var _gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js\");\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\n\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util__WEBPACK_IMPORTED_MODULE_4__[\"uniqueId\"])] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, patternKNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = Object(_gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GADDI);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2dhZGRpLmpzPzljZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ007QUFDVjtBQUNBO0FBQ0E7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QztBQUM5QyxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxnREFBZ0Q7O0FBRWhEO0FBQ0E7O0FBRUEsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsa0JBQWtCLGdDQUFnQztBQUN4RztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHlCQUF5Qjs7QUFFekIsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0NBQW9DOztBQUVwQyx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLHNCQUFzQiw4Q0FBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsWUFBWSw4REFBYSxzQkFBc0I7QUFDL0M7QUFDQTs7QUFFQSxtQkFBbUIsOERBQWEsb0JBQW9CO0FBQ3BEO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCw2Q0FBNkMsMkRBQWEsQ0FBQywyREFBYTtBQUN4RSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBLHdGQUF3RjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtR0FBbUc7QUFDbkc7QUFDQTtBQUNBLGtDQUFrQyw0QkFBNEI7O0FBRTlELDBGQUEwRjs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBSyx1QkFBdUI7O0FBRWxELDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQztBQUNyQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7O0FBRUEsd0NBQXdDOztBQUV4Qyw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFO0FBQ1A7QUFDQTs7QUFFQSxrSUFBa0k7O0FBRWxJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsbUdBQW1HOztBQUVuRztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsUUFBUTtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7O0FBRUEsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxRUFBcUU7O0FBRXJFO0FBQ0E7QUFDQSx3RUFBd0U7O0FBRXhFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsNkdBQTZHOztBQUU3RztBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7O0FBRUEsc0NBQXNDLHlEQUFRO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdKQUF3SjtBQUN4SixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGO0FBQzlGLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnR0FBZ0c7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBLG1CQUFtQix5QkFBeUI7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxRQUFRO0FBQzlDOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIseURBQVE7QUFDckM7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVlLG9FQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBmbG95ZFdhcnNoYWxsIGZyb20gJy4vZmxveWRXYXJzaGFsbCc7XG5pbXBvcnQgZ1NwYW4gZnJvbSAnLi9nU3Bhbi9nU3Bhbic7XG5pbXBvcnQgZGlqa3N0cmEgZnJvbSAnLi9kaWprc3RyYSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqIOS4uiBncmFwaERhdGEg5Lit5q+P5Liq6IqC54K555Sf5oiQ6YK75bGF5Y2V5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcFxuICogQHBhcmFtIGsgay3ov5HpgrtcbiAqL1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXRzID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXRzKGdyYXBoRGF0YSwgc3BtLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGsgPT09IHZvaWQgMCkge1xuICAgIGsgPSAyO1xuICB9XG5cbiAgdmFyIHVuaXRzID0gW107XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHVuaXRzLnB1c2goZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykpO1xuICB9KTtcbiAgcmV0dXJuIHVuaXRzO1xufTtcblxudmFyIGZpbmRLTmVpZ2hib3JVbml0ID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykge1xuICB2YXIgdW5pdE5vZGVJZHhzID0gW2ldO1xuICB2YXIgbmVpZ2hib3JzID0gW107XG4gIHZhciBsYWJlbENvdW50TWFwID0ge307XG4gIHJvdy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBqKSB7XG4gICAgaWYgKHYgPD0gayAmJiBpICE9PSBqKSB7XG4gICAgICB1bml0Tm9kZUlkeHMucHVzaChqKTtcbiAgICAgIG5laWdoYm9ycy5wdXNoKG5vZGVzW2pdKTtcbiAgICAgIHZhciBsYWJlbCA9IG5vZGVzW2pdW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCFsYWJlbENvdW50TWFwW2xhYmVsXSkgbGFiZWxDb3VudE1hcFtsYWJlbF0gPSB7XG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBkaXN0czogW3ZdXG4gICAgICB9O2Vsc2Uge1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5jb3VudCsrO1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5wdXNoKHYpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7IC8vIOWwhiBsYWJlbENvdW50TWFwIOS4reeahCBkaXN0cyDmjInnhafku47lsI/liLDlpKfmjpLluo/vvIzmlrnkvr/lkI7pnaLkvb/nlKhcblxuICBPYmplY3Qua2V5cyhsYWJlbENvdW50TWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzID0gbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlSWR4OiBpLFxuICAgIG5vZGVJZDogbm9kZXNbaV0uaWQsXG4gICAgbm9kZUlkeHM6IHVuaXROb2RlSWR4cyxcbiAgICBuZWlnaGJvcnM6IG5laWdoYm9ycyxcbiAgICBuZWlnaGJvck51bTogdW5pdE5vZGVJZHhzLmxlbmd0aCAtIDEsXG4gICAgbm9kZUxhYmVsQ291bnRNYXA6IGxhYmVsQ291bnRNYXBcbiAgfTtcbn07XG4vKipcbiAqIOmaj+acuuWvu+aJvueCueWvue+8jOa7oei2s+i3neemu+Wwj+S6jiBrXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIG5vZGVOdW0g5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG1heE5vZGVQYWlyTnVtIOWvu+aJvueCueWvueeahOaVsOmHj+S4jei2hei/hyBtYXhOb2RlUGFpck51bVxuICogQHBhcmFtIHNwbSDmnIDnn63ot6/lvoTnn6npmLVcbiAqL1xuXG5cbnZhciBmaW5kTm9kZVBhaXJzUmFuZG9tbHkgPSBmdW5jdGlvbiBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pIHtcbiAgLy8g5q+P5Liq6IqC54K56ZyA6KaB6ZqP5py65om+5Ye655qE54K55a+55pWwXG4gIHZhciBub2RlUGFpck51bUVhY2hOb2RlID0gTWF0aC5jZWlsKG1heE5vZGVQYWlyTnVtIC8gbm9kZU51bSk7XG4gIHZhciBub2RlUGFpck1hcCA9IHt9O1xuICB2YXIgZm91bmROb2RlUGFpckNvdW50ID0gMDsgLy8g6YGN5Y6G6IqC54K577yM5Li65q+P5Liq6IqC54K56ZqP5py65om+5Ye6IG5vZGVQYWlyTnVtRWFjaE5vZGUg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGvjgILmib7liLDnmoTngrnlr7nmlbDph4/otoXov4cgbWF4Tm9kZVBhaXJOdW0g5oiW5omA5pyJ6IqC54K56YGN5Y6G57uT5p2f5pe257uI5q2iXG5cbiAga05laWdoYm9yVW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCwgaSkge1xuICAgIC8vIOiLpeacqui+vuWIsCBub2RlUGFpck51bUVhY2hOb2Rl77yM5oiW5b6q546v5qyh5pWw5bCP5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKe+8jOe7p+e7reW+queOr1xuICAgIHZhciBub2RlUGFpckZvcklDb3VudCA9IDA7XG4gICAgdmFyIG91dGVyTG9vcENvdW50ID0gMDtcbiAgICB2YXIgbmVpZ2hib3JzID0gdW5pdC5ub2RlSWR4czsgLy8gdGhlIGZpcnN0IG9uZSBpcyB0aGUgY2VudGVyIG5vZGVcblxuICAgIHZhciBuZWlnaGJvck51bSA9IHVuaXQubmVpZ2hib3JOdW0gLSAxO1xuXG4gICAgd2hpbGUgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgLy8g5Y+m5LiA56uv6IqC54K55Zyo6IqC54K55pWw57uE5Lit55qE55qEIGluZGV4XG4gICAgICB2YXIgb2lkeCA9IG5laWdoYm9yc1sxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmVpZ2hib3JOdW0pXTtcbiAgICAgIHZhciBpbm5lckxvb3BDb3VudCA9IDA7IC8vIOiLpemaj+acuuW+l+WIsOeahOWPpuS4gOerryBpZHgg5LiN56ym5ZCI5p2h5Lu277yM5YiZ57un57utIHJhbmRvbeOAguadoeS7tuaYr+S4jeaYr+WQjOS4gOS4quiKgueCueOAgei/meS4queCueWvueayoeacieiiq+iusOW9lei/h+OAgei3neemu+Wwj+S6jiBrXG5cbiAgICAgIHdoaWxlIChub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSB8fCBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChvaWR4LCBcIi1cIikuY29uY2F0KGkpXSkge1xuICAgICAgICBvaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZU51bSk7XG4gICAgICAgIGlubmVyTG9vcENvdW50Kys7XG4gICAgICAgIGlmIChpbm5lckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5uZXJMb29wQ291bnQgPCAyICogbm9kZU51bSkge1xuICAgICAgICAvLyDmnKrovr7liLDmnIDlpKflvqrnjq/mrKHmlbDvvIzor7TmmI7mib7liLDkuoblkIjpgILnmoTlj6bkuIDnq69cbiAgICAgICAgbm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoaSwgXCItXCIpLmNvbmNhdChvaWR4KV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IGksXG4gICAgICAgICAgZW5kOiBvaWR4LFxuICAgICAgICAgIGRpc3RhbmNlOiBzcG1baV1bb2lkeF1cbiAgICAgICAgfTtcbiAgICAgICAgbm9kZVBhaXJGb3JJQ291bnQrKztcbiAgICAgICAgZm91bmROb2RlUGFpckNvdW50Kys7IC8vIOWmguaenOW9k+WJjeaJvuWIsOeahOeCueWvueaVsOmHj+i+vuWIsOS6huS4iumZkO+8jOi/lOWbnue7k+aenFxuXG4gICAgICAgIGlmIChmb3VuZE5vZGVQYWlyQ291bnQgPj0gbWF4Tm9kZVBhaXJOdW0pIHJldHVybiBub2RlUGFpck1hcDtcbiAgICAgIH1cblxuICAgICAgb3V0ZXJMb29wQ291bnQrKztcbiAgICAgIGlmIChvdXRlckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgIH0gLy8g6L+Z5Liq6IqC54K55rKh5pyJ5om+5Yiw6Laz5aSfIG5vZGVQYWlyTnVtRWFjaE5vZGUg55qE54K55a+544CC5pu05pawIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzorqnlkI7nu63oioLngrnmib7mm7TlpJrnmoTngrnlr7lcblxuXG4gICAgaWYgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgdmFyIGdhcCA9IG5vZGVQYWlyTnVtRWFjaE5vZGUgLSBub2RlUGFpckZvcklDb3VudDtcbiAgICAgIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSAobm9kZVBhaXJOdW1FYWNoTm9kZSArIGdhcCkgLyAobm9kZU51bSAtIGkgLSAxKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbm9kZVBhaXJNYXA7XG59O1xuLyoqXG4gKiDorqHnrpfmiYDmnIkgbm9kZVBhaXJNYXAg5Lit6IqC54K55a+555qE55u45Lqk6YK75bGF6K+x5a+85a2Q5Zu+XG4gKiBAcGFyYW0gbm9kZVBhaXJNYXAg6IqC54K55a+5IG1hcO+8jGtleSDkuLogbm9kZTEuaWQtbm9kZTIuaWTvvIx2YWx1ZSDkuLogeyBzdGFydE5vZGVJZHgsIGVuZE5vZGVJZHgsIGRpc3RhbmNlIH1cbiAqIEBwYXJhbSBuZWlnaGJvclVuaXRzIOavj+S4quiKgueCueeahOmCu+WxheWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBlZGdlTWFwIOi+ueeahCBtYXDvvIzmlrnkvr/mo4DntKJcbiAqIEBwYXJhbSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAg57yT5a2Y55qE57uT5p6c77yM5LiL5qyh6L+b5YWl6K+l5Ye95pWw5bCG57un57ut5pu05paw6K+l57yT5a2Y77yM6IulIGtleSDlnKjnvJPlrZjkuK3lrZjlnKjliJnkuI3pnIDopoHph43lpI3orqHnrpdcbiAqL1xuXG5cbnZhciBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaCA9IGZ1bmN0aW9uIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyTWFwLCBuZWlnaGJvclVuaXRzLCBncmFwaERhdGEsIGNhY2hlZEluZHVjZWRHcmFwaE1hcCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXM7XG4gIGlmICghY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgPSB7fTtcbiAgT2JqZWN0LmtleXMobm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICBpZiAoY2FjaGVkSW5kdWNlZEdyYXBoTWFwICYmIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldKSByZXR1cm47XG4gICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0gPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIHZhciBwYWlyID0gbm9kZVBhaXJNYXBba2V5XTtcbiAgICB2YXIgc3RhcnRVbml0Tm9kZUlkcyA9IChfYSA9IG5laWdoYm9yVW5pdHNbcGFpci5zdGFydF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWR4cztcbiAgICB2YXIgZW5kVW5pdE5vZGVJZHMgPSAoX2IgPSBuZWlnaGJvclVuaXRzW3BhaXIuZW5kXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5vZGVJZHhzO1xuICAgIGlmICghc3RhcnRVbml0Tm9kZUlkcyB8fCAhZW5kVW5pdE5vZGVJZHMpIHJldHVybjsgLy8g5LiN5a2Y5Zyo6YK75YWD77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgZW5kU2V0ID0gbmV3IFNldChlbmRVbml0Tm9kZUlkcyk7XG4gICAgdmFyIGludGVyc2VjdCA9IHN0YXJ0VW5pdE5vZGVJZHMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gZW5kU2V0Lmhhcyh4KTtcbiAgICB9KTsgLy8g5Y+v6IO95Lya54iG5qCI77yI5ZyoIDE1ODAgKyA2IG5vZGVzIGZ1bGwtY29ubmVjdGVkIOaXtuWHuueOsO+8iVxuXG4gICAgaWYgKCFpbnRlcnNlY3QgfHwgIWludGVyc2VjdC5sZW5ndGgpIHJldHVybjsgLy8g5rKh5pyJ5Lqk6ZuG77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgaW50ZXJzZWN0SWRNYXAgPSB7fTtcbiAgICB2YXIgaW50ZXJzZWN0TGVuZ3RoID0gaW50ZXJzZWN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50ZXJzZWN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaW50ZXJzZWN0W2ldXTtcbiAgICAgIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLm5vZGVzLnB1c2gobm9kZSk7IC8vIOWwhuS6pOmbhuS4reeahOeCueWKoOWFpeivseWvvOWtkOWbvlxuXG4gICAgICBpbnRlcnNlY3RJZE1hcFtub2RlLmlkXSA9IHRydWU7XG4gICAgfSAvLyDpgY3ljobmiYDmnInovrnmlbDmja7vvIzlpoLmnpzovrnnmoTkuKTnq6/pg73lnKjkuqTpm4bkuK3vvIzlsIbor6XovrnliqDlhaXor7Hlr7zlrZDlm75cblxuXG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChpbnRlcnNlY3RJZE1hcFtlZGdlLnNvdXJjZV0gJiYgaW50ZXJzZWN0SWRNYXBbZWRnZS50YXJnZXRdKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGNhY2hlZEluZHVjZWRHcmFwaE1hcDtcbn07XG4vKipcbiAqIOiuoeeulyBzdHJjdXRyZSDlnKggZ3JhcGgg5LiK55qE5Yy56YWN5pWw6YePXG4gKiBAcGFyYW0gZ3JhcGgg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RydWN0dXJlIOebruWJjeaUr+aMgeWPquacieS4pOS4quiKgueCueS4gOadoei+ueeahOacgOeugOWNlee7k+aehFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K557G75Z6L5a2X5q615ZCNXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnnsbvlnovlrZfmrrXlkI1cbiAqL1xuXG5cbnZhciBnZXRNYXRjaGVkQ291bnQgPSBmdW5jdGlvbiBnZXRNYXRjaGVkQ291bnQoZ3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgX2EsIF9iO1xuXG4gIHZhciBub2RlTWFwID0ge307XG4gIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjb3VudCA9IDA7XG4gIGlmICghKChfYSA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgKChfYiA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5ub2RlcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPCAyKSByZXR1cm4gMDtcbiAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzb3VyY2VMYWJlbCA9IG5vZGVNYXBbZS5zb3VyY2VdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciB0YXJnZXRMYWJlbCA9IG5vZGVNYXBbZS50YXJnZXRdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwxID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzBdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwyID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzFdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJFZGdlTGFiZWwgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUuZWRnZXNbMF1bZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKGVbZWRnZUxhYmVsUHJvcF0gIT09IHN0ckVkZ2VMYWJlbCkgcmV0dXJuO1xuXG4gICAgaWYgKHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwxICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwyIHx8IHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwyICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwxKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4vKipcbiAqIHN0cnVjdHVyZXMg5Lit5a+75om+5pyA5YW35pyJ5Luj6KGo5oCn55qE5LiA5Liq44CC6L+Z5Liq57uT5p6E5piv5L2/5b6XIG1hdGNoZWRDb3VudE1hcCDnmoTliIbnu4TmlrnlvI/nsbvlhoXpl7Tot53mnIDlsI/vvIznsbvpl7Tpl7Tot53mnIDlpKdcbiAqIEBwYXJhbSBtYXRjaGVkQ291bnRNYXAg5q+P5LiqIHN0cnVjdHVyZSDliIbnsbvlkI7nmoTlkITlm77ljLnphY3mlbDph4/vvIzmoLzlvI8geyBbc3RyY3R1cmUuaWR4XTogeyBbaW50ZXJJbmR1Y2VkR3JhcGhLZXldOiBjb3VudCB9IH1cbiAqIEBwYXJhbSBzdHJ1Y3R1cmVOdW0gc3RyY3V0dXJlIOS4quaVsO+8jOS4jiBtYXRjaGVkQ291bnRNYXAubGVuZ3RoIOWvueW6lFxuICogQHBhcmFtIHN0cnVjdHVyZXNcbiAqL1xuXG5cbnZhciBmaW5kUmVwcmVzZW50U3RydWN0dXJlID0gZnVuY3Rpb24gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgc3RydWN0dXJlcykge1xuICB2YXIgbWF4T2Zmc2V0ID0gSW5maW5pdHksXG4gICAgICByZXByZXNlbnRDbHVzdGVyVHlwZSA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAvLyDkuIDnp43liIbnu4TnmoQgbWFw77yMa2V5IOaYryBpbnRHcmFwaCDnmoQga2V577yMdmFsdWUg5pivIHN0cnVjdHVyZXNbaV0g55qE5Yy56YWN5Liq5pWwXG4gICAgdmFyIGNvdW50TWFwSSA9IG1hdGNoZWRDb3VudE1hcFtpXTsgLy8g5oyJ54WnIHZhbHVlIOS4uuivpee7hOaOkuW6j++8jOeUn+aIkCBrZXlzIOeahOaVsOe7hO+8mlxuXG4gICAgdmFyIHNvcnRlZEdyYXBoS2V5cyA9IE9iamVjdC5rZXlzKGNvdW50TWFwSSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGNvdW50TWFwSVthXSAtIGNvdW50TWFwSVtiXTtcbiAgICB9KTsgLy8g5YWxIDEwMCDkuKogZ3JhcGhLZXlz77yM5bCGIGdyYXBoS2V5cyDmjInpobrluo/liIbkuLogZ3JvdXBOdW0g57uEXG5cbiAgICB2YXIgZ3JvdXBOdW0gPSAxMDtcbiAgICB2YXIgY2x1c3RlcnMgPSBbXTsgLy8g5oC75YWx5pyJIGdyb3VwTnVtIOS4qumhuVxuXG4gICAgc29ydGVkR3JhcGhLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaikge1xuICAgICAgaWYgKCFjbHVzdGVyc1tqICUgZ3JvdXBOdW1dKSBjbHVzdGVyc1tqICUgZ3JvdXBOdW1dID0ge1xuICAgICAgICBncmFwaHM6IFtdLFxuICAgICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgICBhdmVDb3VudDogMFxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0uZ3JhcGhzLnB1c2goa2V5KTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0udG90YWxDb3VudCArPSBjb3VudE1hcElba2V5XTtcbiAgICB9KTsgLy8g6K6h566XIGNsdXN0ZXIg5LiOIGNsdXN0ZXIg5LmL6Ze055qE6Led56a7IGlubmVyRGlzdO+8jOavj+S4qiBjbHVzdGVyIOWGhemDqOeahOi3neemuyBpbnRyYURpc3RcblxuICAgIHZhciBhdmVJbnRyYURpc3QgPSAwOyAvLyDor6XnsbvnmoTnsbvlhoXlubPlnYflgLxcblxuICAgIHZhciBhdmVDb3VudHMgPSBbXTsgLy8g57G75YaF5bmz5Z2H5Yy56YWN5pWw6YeP77yM5bCG55So5LqO6K6h566X57G76Ze06Led56a7XG5cbiAgICBjbHVzdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaHNJbkNsdXN0ZXIpIHtcbiAgICAgIC8vIOexu+WGheWdh+WAvFxuICAgICAgdmFyIGF2ZUNvdW50ID0gZ3JhcGhzSW5DbHVzdGVyLnRvdGFsQ291bnQgLyBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5hdmVDb3VudCA9IGF2ZUNvdW50O1xuICAgICAgYXZlQ291bnRzLnB1c2goYXZlQ291bnQpOyAvLyDlr7nkuo7mr4/nsbvvvIzorqHnrpfnsbvlhoXpl7Tot53lubPlnYflgLxcblxuICAgICAgdmFyIGF2ZUludHJhUGVyQ2x1c3RlciA9IDA7XG4gICAgICB2YXIgZ3JhcGhzTnVtID0gZ3JhcGhzSW5DbHVzdGVyLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkxLCBqKSB7XG4gICAgICAgIHZhciBncmFwaDFDb3VudCA9IGNvdW50TWFwSVtncmFwaEtleTFdO1xuICAgICAgICBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoS2V5Miwgaykge1xuICAgICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgICAgYXZlSW50cmFQZXJDbHVzdGVyICs9IE1hdGguYWJzKGdyYXBoMUNvdW50IC0gY291bnRNYXBJW2dyYXBoS2V5Ml0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50cmFQZXJDbHVzdGVyIC89IGdyYXBoc051bSAqIChncmFwaHNOdW0gLSAxKSAvIDI7XG4gICAgICBhdmVJbnRyYURpc3QgKz0gYXZlSW50cmFQZXJDbHVzdGVyO1xuICAgIH0pO1xuICAgIGF2ZUludHJhRGlzdCAvPSBjbHVzdGVycy5sZW5ndGg7IC8vIOeUqOexu+WGheWdh+WAvOiuoeeul+exu+mXtOi3nVxuXG4gICAgdmFyIGF2ZUludGVyRGlzdCA9IDA7IC8vIOexu+mXtOmXtOi3neW5s+Wdh+WAvFxuXG4gICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50MSwgaikge1xuICAgICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50Miwgaykge1xuICAgICAgICBpZiAoaiA9PT0gaykgcmV0dXJuO1xuICAgICAgICBhdmVJbnRlckRpc3QgKz0gTWF0aC5hYnMoYXZlQ291bnQxIC0gYXZlQ291bnQyKTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50ZXJEaXN0IC89IGF2ZUNvdW50cy5sZW5ndGggKiAoYXZlQ291bnRzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICB9KTsgLy8g5a+75om+ICjnsbvpl7Tpl7Tot53lnYflgLwt57G75YaF6Ze06Led5Z2H5YC8KSDmnIDlpKfnmoTkuIDnp43liIbnu4TmlrnlvI/vvIjlr7nlupTnmoQgc3RydWN0dXJlIOWwseaYr+acgOe7iOimgeaJvueahOWUr+S4gCBEUyhHKe+8iVxuXG4gICAgdmFyIG9mZnNldCA9IGF2ZUludGVyRGlzdCAtIGF2ZUludHJhRGlzdDtcblxuICAgIGlmIChtYXhPZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgIG1heE9mZnNldCA9IG9mZnNldDtcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gaTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJ1Y3R1cmVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0cnVjdHVyZTogc3RydWN0dXJlc1tyZXByZXNlbnRDbHVzdGVyVHlwZV0sXG4gICAgc3RydWN0dXJlQ291bnRNYXA6IG1hdGNoZWRDb3VudE1hcFtyZXByZXNlbnRDbHVzdGVyVHlwZV1cbiAgfTtcbn07XG5cbnZhciBnZXROb2RlTWFwcyA9IGZ1bmN0aW9uIGdldE5vZGVNYXBzKG5vZGVzLCBub2RlTGFiZWxQcm9wKSB7XG4gIHZhciBub2RlTWFwID0ge30sXG4gICAgICBub2RlTGFiZWxNYXAgPSB7fTtcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBub2RlOiBub2RlLFxuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgaWYgKCFub2RlTGFiZWxNYXBbbGFiZWxdKSBub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgbm9kZUxhYmVsTWFwW2xhYmVsXS5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlTWFwOiBub2RlTWFwLFxuICAgIG5vZGVMYWJlbE1hcDogbm9kZUxhYmVsTWFwXG4gIH07XG59O1xuXG52YXIgZ2V0RWRnZU1hcHMgPSBmdW5jdGlvbiBnZXRFZGdlTWFwcyhlZGdlcywgZWRnZUxhYmVsUHJvcCwgbm9kZU1hcCkge1xuICB2YXIgZWRnZU1hcCA9IHt9LFxuICAgICAgZWRnZUxhYmVsTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGkpIHtcbiAgICBlZGdlTWFwW1wiXCIuY29uY2F0KHVuaXF1ZUlkKV0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBlZGdlOiBlZGdlXG4gICAgfTtcbiAgICB2YXIgbGFiZWwgPSBlZGdlW2VkZ2VMYWJlbFByb3BdO1xuICAgIGlmICghZWRnZUxhYmVsTWFwW2xhYmVsXSkgZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIGVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcbiAgICB2YXIgc291cmNlTm9kZSA9IG5vZGVNYXBbZWRnZS5zb3VyY2VdO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUpIHtcbiAgICAgIHNvdXJjZU5vZGUuZGVncmVlKys7XG4gICAgICBzb3VyY2VOb2RlLm91dERlZ3JlZSsrO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXROb2RlID0gbm9kZU1hcFtlZGdlLnRhcmdldF07XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5kZWdyZWUrKztcbiAgICAgIHRhcmdldE5vZGUuaW5EZWdyZWUrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGVkZ2VNYXA6IGVkZ2VNYXAsXG4gICAgZWRnZUxhYmVsTWFwOiBlZGdlTGFiZWxNYXBcbiAgfTtcbn07XG4vKipcbiAqIOi+k+WHuuacgOefrei3r+W+hOeahCBtYXDvvIxrZXkg5Li6IHNvdXJjZU5vZGUuaWQtdGFyZ2V0Tm9kZS5pZO+8jHZhbHVlIOS4uui/meS4pOS4quiKgueCueeahOacgOefrei3r+W+hOmVv+W6plxuICogQHBhcmFtIG5vZGVzXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gZGlyZWN0ZWRcbiAqL1xuXG5cbnZhciBnZXRTcG1NYXAgPSBmdW5jdGlvbiBnZXRTcG1NYXAobm9kZXMsIHNwbSwgZGlyZWN0ZWQpIHtcbiAgdmFyIGxlbmd0aCA9IHNwbS5sZW5ndGg7XG4gIHZhciBtYXAgPSB7fTtcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBzdGFydCA9IGRpcmVjdGVkID8gMCA6IGkgKyAxO1xuICAgIHZhciBpSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGZvciAodmFyIGogPSBzdGFydDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSA9PT0gaikgY29udGludWU7XG4gICAgICB2YXIgaklkID0gbm9kZXNbal0uaWQ7XG4gICAgICB2YXIgZGlzdCA9IHJvd1tqXTtcbiAgICAgIG1hcFtcIlwiLmNvbmNhdChpSWQsIFwiLVwiKS5jb25jYXQoaklkKV0gPSBkaXN0O1xuICAgICAgaWYgKCFkaXJlY3RlZCkgbWFwW1wiXCIuY29uY2F0KGpJZCwgXCItXCIpLmNvbmNhdChpSWQpXSA9IGRpc3Q7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG1hcDtcbn07XG4vKipcbiAqIOiuoeeul+S4gOWvueiKgueCue+8iG5vZGUx77yMbm9kZTLvvInnmoQgTkRTIOi3neemu1xuICogQHBhcmFtIGdyYXBoIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIG5vZGUxXG4gKiBAcGFyYW0gbm9kZTJcbiAqL1xuXG5cbnZhciBnZXRORFNEaXN0ID0gZnVuY3Rpb24gZ2V0TkRTRGlzdChncmFwaCwgbm9kZTEsIG5vZGUyLCBub2RlTWFwLCBzcERpc3QsIGtOZWlnaGJvclVuaXRzLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3AsIGNhY2hlZE5EU01hcCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgdmFyIF9hO1xuXG4gIHZhciBrZXkgPSBcIlwiLmNvbmNhdChub2RlMS5pZCwgXCItXCIpLmNvbmNhdChub2RlMi5pZCk7XG4gIGlmIChjYWNoZWRORFNNYXAgJiYgY2FjaGVkTkRTTWFwW2tleV0pIHJldHVybiBjYWNoZWRORFNNYXBba2V5XTtcbiAgdmFyIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPyBjYWNoZWRJbnRlckluZHVjZWRHcmFwaFtrZXldIDogdW5kZWZpbmVkOyAvLyDoi6XmsqHmnInnvJPlrZjnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77vvIzorqHnrpdcblxuICBpZiAoIWludGVySW5kdWNlZEdyYXBoKSB7XG4gICAgdmFyIHBhaXJNYXAgPSAoX2EgPSB7fSwgX2Fba2V5XSA9IHtcbiAgICAgIHN0YXJ0OiBub2RlTWFwW25vZGUxLmlkXS5pZHgsXG4gICAgICBlbmQ6IG5vZGVNYXBbbm9kZTIuaWRdLmlkeCxcbiAgICAgIGRpc3RhbmNlOiBzcERpc3RcbiAgICB9LCBfYSk7XG4gICAgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGgsIGNhY2hlZEludGVySW5kdWNlZEdyYXBoKTtcbiAgICBpbnRlckluZHVjZWRHcmFwaCA9IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV07XG4gIH1cblxuICByZXR1cm4gZ2V0TWF0Y2hlZENvdW50KGludGVySW5kdWNlZEdyYXBoLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xufTtcbi8qKlxuICog6K6h566XIHBhdHRlcm4g5LiK57up54K555qE5bqm5pWw5bm25a2Y5YKo5YiwIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBcbiAqL1xuXG5cbnZhciBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAgPSBmdW5jdGlvbiBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgbmVpZ2hib3JMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApIHtcbiAgdmFyIF9hLCBfYiwgX2M7XG5cbiAgdmFyIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSAoX2EgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gKF9iID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluRGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IChfYyA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vdXREZWdyZWU7XG5cbiAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPT09IHVuZGVmaW5lZCkge1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gSW5maW5pdHk7XG4gICAgcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuTm9kZVdpdGhMYWJlbCkge1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmRlZ3JlZTtcbiAgICAgIGlmIChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID4gcGF0dGVybk5vZGVEZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBwYXR0ZXJuTm9kZURlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZUluRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmluRGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA+IHBhdHRlcm5Ob2RlSW5EZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IHBhdHRlcm5Ob2RlSW5EZWdyZWU7XG4gICAgICB2YXIgcGF0dGVybk5vZGVPdXREZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0ub3V0RGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPiBwYXR0ZXJuTm9kZU91dERlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlT3V0RGVncmVlO1xuICAgIH0pO1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPSB7XG4gICAgICBkZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICBpbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgICAgb3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gIH07XG59O1xuLyoqXG4gKiBHQURESSDmqKHlvI/ljLnphY1cbiAqIEBwYXJhbSBncmFwaERhdGEg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gcGF0dGVybiDmkJzntKLlm77vvIjpnIDopoHlnKjljp/lm77kuIrmkJzntKLnmoTmqKHlvI/vvInmlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKborqHnrpfmnInlkJHlm77vvIzpu5jorqQgZmFsc2VcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbGVuZ3RoIOWPguaVsCBsZW5ndGhcbiAqIEBwYXJhbSBub2RlTGFiZWxQcm9wIOiKgueCueaVsOaNruS4reS7o+ihqOiKgueCueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnmlbDmja7kuK3ku6PooajovrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICovXG5cblxudmFyIEdBRERJID0gZnVuY3Rpb24gR0FEREkoZ3JhcGhEYXRhLCBwYXR0ZXJuLCBkaXJlY3RlZCwgaywgbGVuZ3RoLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYTtcblxuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKCFncmFwaERhdGEgfHwgIWdyYXBoRGF0YS5ub2RlcykgcmV0dXJuOyAvLyDliIbkuLrkuInmraXvvJpcbiAgLy8gMC4g6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtVxuICAvLyAxLiDlpITnkIbljp/lm74gZ3JhcGhEYXRh44CC5YaN5YiG5Li6IDF+NSDlsI/mraVcbiAgLy8gMi4g5Yy56YWNXG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlOiBwcmVwcm9jZXNzaW5nIC0tLS0tLS1cIik7XG4gIC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOmihOiuoeeul++8muiKgueCuS/ovrnmlbDvvIzpgrvmjqXnn6npmLXjgIHmnIDnn63ot6/lvoTnn6npmLUtLS0tLS0tXG5cbiAgdmFyIG5vZGVOdW0gPSBncmFwaERhdGEubm9kZXMubGVuZ3RoO1xuICBpZiAoIW5vZGVOdW0pIHJldHVybjsgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmUuMTogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgZ3JhcGggLS0tLS0tLVwiKTtcblxuICB2YXIgc3BtID0gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZS1wcmUuMjogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbSA9IGZsb3lkV2Fyc2hhbGwocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgc3BtKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTAuMjogZ29pbmcgdG8gY2FsY3VsYXRlIGludGVyc2VjdCBuZWlnaGJvciBpbmR1Y2VkIGdyYXBocyAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gMS4yLiDnlJ/miJDkuIrpnaLoioLngrnlr7nnmoTnm7jlupTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77jgILmoLzlvI/kuLogeydiZWdpbk5vZGVJZHgtZW5kTm9kZUlkeCc6IHtub2RlczogW10sIGVkZ2VzOiBbXX19XG5cbiAgdmFyIGludEdNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChub2RlUGFpcnNNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaERhdGEpOyAvLyAxLjMuIOS9v+eUqCBnU3BhbiDnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvInorqHnrpcgSVNJbnRHIOeahOWJjSAxMCDkuKrpopHnjofmnIDpq5jnmoTlrZDnu5PmnoTvvIgzLTTmnaHovrnvvIlcblxuICB2YXIgdG9wID0gMTAsXG4gICAgICBtaW5TdXBwb3J0ID0gMSxcbiAgICAgIG1pbk5vZGVOdW0gPSAxLFxuICAgICAgbWF4Tm9kZU51bSA9IDQ7XG4gIHZhciBwYXJhbXMgPSB7XG4gICAgZ3JhcGhzOiBpbnRHTWFwLFxuICAgIG5vZGVMYWJlbFByb3A6IG5vZGVMYWJlbFByb3AsXG4gICAgZWRnZUxhYmVsUHJvcDogZWRnZUxhYmVsUHJvcCxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1pbk5vZGVOdW06IG1pbk5vZGVOdW0sXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgfTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTE6IChnU3BhbikgZ29pbmcgdG8gZmluZCBmcmVxdWVudCBzdHJ1Y3R1cmUgZHNHIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBydW4gZ1NwYW4gLS0tLS0tLVwiKTtcbiAgLy8g5pqC5pe25YGH6K6+55Sf5oiQ55qEIHN1YiBzdHJ1Y3R1cmUg6YO95Y+q5pyJ5LiA5p2h6L65XG5cbiAgdmFyIGZyZVN0cnVjdHVyZXMgPSBnU3BhbihwYXJhbXMpLnNsaWNlKDAsIHRvcCk7IC8vIHN0cnVjdHVyZU51bSDlj6/og73lsI/kuo4gdG9wXG5cbiAgdmFyIHN0cnVjdHVyZU51bSA9IGZyZVN0cnVjdHVyZXMubGVuZ3RoOyAvLyAxLjQuIOiuoeeul+S4iui/sCAxMCDkuKrlrZDnu5PmnoTlnKggaW50R01hcCDkuK3mr4/kuKror7Hlr7zlrZDlm77nmoTljLnphY3kuKrmlbBcblxuICB2YXIgbWF0Y2hlZENvdW50TWFwID0gW107XG4gIGZyZVN0cnVjdHVyZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RydWN0dXJlLCBpKSB7XG4gICAgbWF0Y2hlZENvdW50TWFwW2ldID0ge307XG4gICAgT2JqZWN0LmtleXMoaW50R01hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgZ3JhcGggPSBpbnRHTWFwW2tleV07XG4gICAgICB2YXIgc3ViU3RydWN0dXJlQ291bnQgPSBnZXRNYXRjaGVkQ291bnQoZ3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICBtYXRjaGVkQ291bnRNYXBbaV1ba2V5XSA9IHN1YlN0cnVjdHVyZUNvdW50O1xuICAgIH0pO1xuICB9KTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTEuMTogZ29pbmcgdG8gZmluZCB0aGUgbW9zdCByZXByZXNlbnQgc3RydWN1dHJlIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyAxLjUuIOWvueS6juavj+S4quWtkOe7k+aehO+8jOagueaNruWMuemFjeS4quaVsOS4uiBpbnRHTWFwIOS4reeahOivseWvvOWtkOWbvuWIhue7hO+8jOeUn+aIkCBzdHJ1Y3R1cmVOdW0g56eN5YiG57uEXG4gIC8vIOiuoeeul+avj+enjeWIhue7hOeahOexu+mXtOi3neWSjOexu+WGhemXtOi3ne+8jOaJvuWIsOexu+mXtOi3neacgOWkp+OAgeexu+WGhemXtOi3neacgOWwj+eahOS4gOenjeWIhue7hO+8jOi/meenjeWIhue7hOWvueW6lOeahOWtkOe7k+aehOiiq+mAieS4uuWUr+S4gOS7o+ihqOaAp+WtkOe7k+aehCBEUyhHKVxuXG4gIHZhciBfZCA9IGZpbmRSZXByZXNlbnRTdHJ1Y3R1cmUobWF0Y2hlZENvdW50TWFwLCBzdHJ1Y3R1cmVOdW0sIGZyZVN0cnVjdHVyZXMpLFxuICAgICAgZHNHID0gX2Quc3RydWN0dXJlLFxuICAgICAgbmRzRGlzdCA9IF9kLnN0cnVjdHVyZUNvdW50TWFwOyAvLyAtLS0tLS0tLSDnrKzkuozmraXvvIzljLnphY0tLS0tLS0tXG4gIC8vIDIuMSDmib7liLDku44gUSDkuK3nmoTkuIDkuKroioLngrnkvZzkuLrotbflp4voioLngrnvvIzlr7vmib4gRyDkuK3nmoTljLnphY3jgILov5nkuKrlhbblrp7oioLngrnnmoTmoIfnrb7lj6/ku6XlnKggRyDkuK3mib7liLDmnIDlpJrnmoToioLngrlcblxuXG4gIHZhciBiZWdpblBOb2RlID0gcGF0dGVybi5ub2Rlc1swXSxcbiAgICAgIGNhbmRpZGF0ZXMgPSBbXSxcbiAgICAgIGxhYmVsID0gKF9hID0gcGF0dGVybi5ub2Rlc1swXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW25vZGVMYWJlbFByb3BdLFxuICAgICAgbWF4Tm9kZU51bVdpdGhTYW1lTGFiZWwgPSAtSW5maW5pdHk7XG4gIHBhdHRlcm4ubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHZhciBwTGFiZWwgPSBub2RlW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBub2Rlc1dpdGhTYW1lTGFiZWwgPSBub2RlTGFiZWxNYXBbcExhYmVsXTtcblxuICAgIGlmICgobm9kZXNXaXRoU2FtZUxhYmVsID09PSBudWxsIHx8IG5vZGVzV2l0aFNhbWVMYWJlbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZXNXaXRoU2FtZUxhYmVsLmxlbmd0aCkgPiBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCkge1xuICAgICAgbWF4Tm9kZU51bVdpdGhTYW1lTGFiZWwgPSBub2Rlc1dpdGhTYW1lTGFiZWwubGVuZ3RoO1xuICAgICAgY2FuZGlkYXRlcyA9IG5vZGVzV2l0aFNhbWVMYWJlbDtcbiAgICAgIGxhYmVsID0gcExhYmVsO1xuICAgICAgYmVnaW5QTm9kZSA9IG5vZGU7XG4gICAgfVxuICB9KTsgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZTI6IGdvaW5nIHRvIGZpbmQgY2FuZGlkYXRlcyAtLS0tLS0tXCIpO1xuICAvLyDlhajlsYDnvJPlrZjvvIzpgb/lhY3ph43lpI3orqHnrpdcblxuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCA9IHt9OyAvLyBrZXkg5pivIGxhYmVs77yMdmFsdWUg5piv6K+lIGxhYmVsIOiKgueCueeahOacgOWwj+W6puaVsFxuXG4gIHZhciBwYXR0ZXJuSW50R3JhcGhNYXAgPSB7fSxcbiAgICAgIHBhdHRlcm5ORFNEaXN0ID0ge30sXG4gICAgICAvLyBrZXkg5Li6IG5vZGUuaWQtbm9kZS5pZFxuICBwYXR0ZXJuTkRTRGlzdE1hcCA9IHt9OyAvLyBrZXkg5Li6IG5vZGUuaWQtbGFiZWwy77yMdmFsdWUgbmRz6Led56a75YC85pWw57uE77yI5oyJ5LuO5aSn5Yiw5bCP5o6S5bqP77yM5peg6ZyA5YWz5b+D5YW35L2T5a+55bqU5ZOq5LiqIG5vZGUy77yJXG4gIC8vIDIuMi4yIOWvueS6jiBRIOS4reeahOWPpuS4gOS4quagh+etvueahCBrIOS4quiKgueCue+8jOiuoeeul+Wug+S7rOWIsCBub2RlIOeahOacgOefrei3r+W+hOS7peWPiiBORFMg6Led56a7XG5cbiAgdmFyIHBhdHRlcm5TcERpc3QgPSB7fTtcbiAgdmFyIHBhdHRlcm5TcERpc3RCYWNrID0ge307XG4gIE9iamVjdC5rZXlzKHBhdHRlcm5Ob2RlTGFiZWxNYXApLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsMiwgaikge1xuICAgIHBhdHRlcm5TcERpc3RbbGFiZWwyXSA9IFtdO1xuXG4gICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdID0gW107XG4gICAgfVxuXG4gICAgdmFyIG1heERpc3QgPSAtSW5maW5pdHk7XG4gICAgdmFyIHBhdHRlcm5Ob2Rlc1dpdGhMYWJlbDIgPSBwYXR0ZXJuTm9kZUxhYmVsTWFwW2xhYmVsMl07XG4gICAgdmFyIHBhdHRlcm5Ob2RlUGFpck1hcCA9IHt9O1xuICAgIHBhdHRlcm5Ob2Rlc1dpdGhMYWJlbDIuZm9yRWFjaChmdW5jdGlvbiAobm9kZVdpdGhMYWJlbDIpIHtcbiAgICAgIHZhciBkaXN0ID0gcGF0dGVyblNwbU1hcFtcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkKV07XG4gICAgICBkaXN0ICYmIHBhdHRlcm5TcERpc3RbbGFiZWwyXS5wdXNoKGRpc3QpO1xuICAgICAgaWYgKG1heERpc3QgPCBkaXN0KSBtYXhEaXN0ID0gZGlzdDtcbiAgICAgIHBhdHRlcm5Ob2RlUGFpck1hcFtcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkKV0gPSB7XG4gICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICBlbmQ6IHBhdHRlcm5Ob2RlTWFwW25vZGVXaXRoTGFiZWwyLmlkXS5pZHgsXG4gICAgICAgIGRpc3RhbmNlOiBkaXN0XG4gICAgICB9O1xuXG4gICAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgICAgdmFyIGRpc3RCYWNrID0gcGF0dGVyblNwbU1hcFtcIlwiLmNvbmNhdChub2RlV2l0aExhYmVsMi5pZCwgXCItXCIpLmNvbmNhdChiZWdpblBOb2RlLmlkKV07XG4gICAgICAgIGRpc3RCYWNrICYmIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0ucHVzaChkaXN0QmFjayk7XG4gICAgICB9XG4gICAgfSk7IC8vIHNwRGlzdFtsYWJlbDJdIOaMieeFp+S7juWwj+WIsOWkp+aOkuW6j1xuXG4gICAgcGF0dGVyblNwRGlzdFtsYWJlbDJdID0gcGF0dGVyblNwRGlzdFtsYWJlbDJdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICBpZiAoZGlyZWN0ZWQpIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0gPSBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTsgLy8g6K6h566XIFEg5Lit5omA5pyJIGxhYmVsMiDoioLngrnliLAgYmVnaW5QTm9kZSDnmoQgTkRTIOi3neemu1xuICAgIC8vIOaJgOaciSBsYWJlbDIg6IqC54K55YiwIGJlZ2luUE5vZGUg55qE6YK75bGF55u45Lqk6K+x5a+85a2Q5Zu+77yaXG4gICAgLy8ga2V5OiBub2RlMS5pZC1ub2RlMi5pZFxuXG4gICAgcGF0dGVybkludEdyYXBoTWFwID0gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgocGF0dGVybk5vZGVQYWlyTWFwLCBwYXR0ZXJuS05laWdoYm9yVW5pdHMsIHBhdHRlcm4sIHBhdHRlcm5JbnRHcmFwaE1hcCk7IC8vIHBhdHRlcm4g5LitIGJlZ2luTm9kZSDliLDlvZPliY0gbGFiZWwyIOiKgueCuSDnmoQgTkRTIOi3neemu++8iOaVsOe7hO+8jOaXoOmcgOWFs+W/g+WFt+S9k+WvueW6lOWIsOWTquS4quiKgueCue+8iVxuXG4gICAgdmFyIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5ID0gW107XG4gICAgT2JqZWN0LmtleXMocGF0dGVybk5vZGVQYWlyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmIChwYXR0ZXJuTkRTRGlzdFtrZXldKSB7XG4gICAgICAgIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5LnB1c2gocGF0dGVybk5EU0Rpc3Rba2V5XSk7XG4gICAgICAgIHJldHVybjsgLy8g57yT5a2Y6L+H5YiZ5LiN6ZyA6KaB5YaN5qyh6K6h566XXG4gICAgICB9XG5cbiAgICAgIHZhciBwYXR0ZXJuSW50R3JhcGggPSBwYXR0ZXJuSW50R3JhcGhNYXBba2V5XTtcbiAgICAgIHBhdHRlcm5ORFNEaXN0W2tleV0gPSBnZXRNYXRjaGVkQ291bnQocGF0dGVybkludEdyYXBoLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkucHVzaChwYXR0ZXJuTkRTRGlzdFtrZXldKTtcbiAgICB9KTsgLy8g5qC55o2u5YC85Li6IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdCDku47lpKfliLDlsI/mjpLluo9cblxuICAgIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5ID0gY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGIgLSBhO1xuICAgIH0pO1xuICAgIHBhdHRlcm5ORFNEaXN0TWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobGFiZWwyKV0gPSBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheTtcbiAgICBpZiAobGFiZWwyID09PSBsYWJlbCkgcmV0dXJuO1xuICAgIHZhciBjYW5kaWRhdGVzTnVtID0gKGNhbmRpZGF0ZXMgPT09IG51bGwgfHwgY2FuZGlkYXRlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2FuZGlkYXRlcy5sZW5ndGgpIHx8IDA7XG5cbiAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIF9sb29wXzQobSkge1xuICAgICAgdmFyIGNOb2RlID0gY2FuZGlkYXRlc1ttXTsgLy8gcHJ1bmUx77ya6IulIGNhbmRpZGF0ZXMg5Lit6IqC54K5IGNOb2RlIOeahCBrTmVpZ2hib3JVbml0cyDkuK3moIfnrb7kuLogbGFiZWwyIOeahOiKgueCueS4quaVsOWwkeS6jiBwYXR0ZXJuIOS4rSBsYWJlbDIg5Liq5pWw77yM5Yig5Y675a6DXG5cbiAgICAgIHZhciBncmFwaE5laWdoYm9yVW5pdCA9IGtOZWlnaGJvclVuaXRzW25vZGVNYXBbY05vZGUuaWRdLmlkeF07XG4gICAgICB2YXIgZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcCA9IGdyYXBoTmVpZ2hib3JVbml0Lm5vZGVMYWJlbENvdW50TWFwW2xhYmVsMl07XG4gICAgICB2YXIgcGF0dGVybkxhYmVsMk51bSA9IHBhdHRlcm5Ob2RlTGFiZWxNYXBbbGFiZWwyXS5sZW5ndGg7XG5cbiAgICAgIGlmICghZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcCB8fCBncmFwaE5laWdoYm9yVW5pdENvdW50TWFwLmNvdW50IDwgcGF0dGVybkxhYmVsMk51bSkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUy77ya6IulIGNhbmRpZGF0ZXMg5Lit6IqC54K5IGNOb2RlIOWIsCBrTmVpZ2hib3JVbml0cyDkuK3moIfnrb7kuLogbGFiZWwyIOeahOiKgueCueacgOefrei3r+W+hOWkp+S6jiBwYXR0ZXJuU3BEaXN0W2xhYmVsMl3vvIzliKDljrvlroNcbiAgICAgIC8vIChwcnVuZTIg6KeE5YiZ5Y2z77yaY2FuZGlkYXRlIOebuOWFs+eahOacgOefrei3r+W+hOeahOacgOWkpyBzcERpc3RbbGFiZWwyXS5sZW5ndGgg5Liq77yM5oyJ54Wn5aSn5bCP6aG65bqP5L6d5qyh5ZKMIHBhdHRlcm5TcERpc3RbbGFiZWwyXSDkuK3nmoTlgLzmr5TovoPvvIzlj6ropoHpgYfliLDkuIDkuKrmmK8gRyA+IFEg55qE77yM5bCx5Yig5Y676L+Z5LiqIGNhbmRpZGF0ZSlcblxuXG4gICAgICB2YXIgcHJ1bmUySW52YWxpZCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHBhdHRlcm5MYWJlbDJOdW07IG4rKykge1xuICAgICAgICBpZiAoZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcC5kaXN0c1tuXSA+IHBhdHRlcm5TcERpc3RbbGFiZWwyXVtuXSkge1xuICAgICAgICAgIHBydW5lMkludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcnVuZTJJbnZhbGlkKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZTPvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg5YiwIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K5IE5EUyDot53nprvlsI/kuo4gcGF0dGVybk5EU0Rpc3RbYmVnaW5Ob2RlLmlkLWxhYmVsMl3vvIzliKDljrvlroNcbiAgICAgIC8vIFRPRE/vvJpwcnVuZTPvvIxjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheSDkuI4gY3VycmVudE5EU0Rpc3Qg55qE5q+U6L6DXG4gICAgICAvLyDorqHnrpcgRyDkuK3miYDmnIkgbGFiZWwyIOiKgueCueWIsCBjTm9kZSDnmoQgTkRTIOi3neemu1xuICAgICAgLy8g5omA5pyJIGxhYmVsMiDoioLngrnliLAgY05vZGUg55qE6YK75bGF55u45Lqk6K+x5a+85a2Q5Zu+77yaXG5cblxuICAgICAgdmFyIGNOb2RlUGFpck1hcCA9IHt9O1xuICAgICAgZ3JhcGhOZWlnaGJvclVuaXQubmVpZ2hib3JzLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yTm9kZSkge1xuICAgICAgICB2YXIgZGlzdCA9IHNwbU1hcFtcIlwiLmNvbmNhdChjTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpXTtcbiAgICAgICAgY05vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGNOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCldID0ge1xuICAgICAgICAgIHN0YXJ0OiBub2RlTWFwW2NOb2RlLmlkXS5pZHgsXG4gICAgICAgICAgZW5kOiBub2RlTWFwW25laWdoYm9yTm9kZS5pZF0uaWR4LFxuICAgICAgICAgIGRpc3RhbmNlOiBkaXN0XG4gICAgICAgIH07XG4gICAgICB9KTsgLy8g5pu05pawIGludEdNYXBcblxuICAgICAgaW50R01hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKGNOb2RlUGFpck1hcCwga05laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSwgaW50R01hcCk7IC8vIGNhbmRpZGF0ZSDliLDlroPlkajlm7QgbGFiZWwyIOiKgueCueeahCBORFMg6Led56a7LCBrZXkg5pivIG5vZGUuaWQtbm9kZS5pZFxuXG4gICAgICB2YXIgY3VycmVudE5EU0Rpc3RBcnJheSA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMoY05vZGVQYWlyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKG5kc0Rpc3Rba2V5XSkge1xuICAgICAgICAgIGN1cnJlbnRORFNEaXN0QXJyYXkucHVzaChuZHNEaXN0W2tleV0pO1xuICAgICAgICAgIHJldHVybjsgLy8g57yT5a2Y6L+H5YiZ5LiN6ZyA6KaB5YaN5qyh6K6h566XXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW50R3JhcGggPSBpbnRHTWFwW2tleV07XG4gICAgICAgIG5kc0Rpc3Rba2V5XSA9IGdldE1hdGNoZWRDb3VudChpbnRHcmFwaCwgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgICAgY3VycmVudE5EU0Rpc3RBcnJheS5wdXNoKG5kc0Rpc3Rba2V5XSk7XG4gICAgICB9KTsgLy8g5qC55o2u5YC85Li6IGN1cnJlbnRORFNEaXN0QXJyYXkg5LuO5aSn5Yiw5bCP5o6S5bqPXG5cbiAgICAgIGN1cnJlbnRORFNEaXN0QXJyYXkgPSBjdXJyZW50TkRTRGlzdEFycmF5LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGIgLSBhO1xuICAgICAgfSk7XG4gICAgICB2YXIgcHJ1bmUzSW52YWxpZCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHBhdHRlcm5MYWJlbDJOdW07IG4rKykge1xuICAgICAgICBpZiAoY3VycmVudE5EU0Rpc3RBcnJheVtuXSA8IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5W25dKSB7XG4gICAgICAgICAgcHJ1bmUzSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBydW5lM0ludmFsaWQpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIG0gPSBjYW5kaWRhdGVzTnVtIC0gMTsgbSA+PSAwOyBtLS0pIHtcbiAgICAgIF9sb29wXzQobSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNhbmRpZGF0ZUdyYXBocyA9IFtdOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMzogZ29pbmcgdG8gc3BsaWNlIG5laWdoYm9ycyBmb3IgZWFjaCBjYW5kaWRhdGUgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNhbmRpZGF0ZXMg57uP6L+H562b6YCJ5ZCO77yM5Lul5q+P5LiqIGNhbmRpZGF0ZSDkuLrkuK3lv4PvvIznlJ/miJAgTGVuZ3RoLW5laWdoYm9yIOeahOmCu+WxheivseWvvOWtkOWbvlxuICAvLyDlubblnKjor7Hlr7zlrZDlm77kuK3ljrvpmaTkuI3lj6/og73lnKggUSDkuIrmib7liLDljLnphY3nmoTngrnvvJrlnKggUSDkuIrkuI3lrZjlnKjnmoQgbGFiZWzvvIzlhbbku5YgbGFiZWwg5YiwIGNhbmRpZGF0ZSDnmoTmnIDlpKfmnIDnn63ot53nprvnrKblkIggUeOAgU5EUyDot53nprvnrKblkIggUVxuXG4gIGNhbmRpZGF0ZXMgPT09IG51bGwgfHwgY2FuZGlkYXRlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2FuZGlkYXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChjYW5kaWRhdGUpIHtcbiAgICB2YXIgbm9kZUlkeCA9IG5vZGVNYXBbY2FuZGlkYXRlLmlkXS5pZHg7XG4gICAgdmFyIGxlbmd0aE5laWdoYm9yVW5pdCA9IGZpbmRLTmVpZ2hib3JVbml0KGdyYXBoRGF0YS5ub2Rlcywgc3BtW25vZGVJZHhdLCBub2RlSWR4LCBub2RlTGFiZWxQcm9wLCBsZW5ndGgpO1xuICAgIHZhciBuZWlnaGJvck5vZGVzID0gbGVuZ3RoTmVpZ2hib3JVbml0Lm5laWdoYm9yczsgLy8g5Yig6Zmk5LiN5Y+v6IO95om+5Yiw5Yy56YWN55qE6YK75bGF54K5XG5cbiAgICB2YXIgbmVpZ2hib3JOdW0gPSBuZWlnaGJvck5vZGVzLmxlbmd0aDtcbiAgICB2YXIgdW5tYXRjaGVkID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gbmVpZ2hib3JOdW0gLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8g5aaC5p6c6YCa6L+H6KOB5Ymq77yM56ym5ZCI5p2h5Lu255qE6IqC54K55pWw6YeP5bey6L+H5bCR77yM6K+05piO5LiN6IO95Yy56YWN6L+Z5LiqIGNhbmRpZGF0ZSDnm7jlhbPnmoTlm75cbiAgICAgIGlmIChuZWlnaGJvck5vZGVzLmxlbmd0aCArIDEgPCBwYXR0ZXJuLm5vZGVzLmxlbmd0aCkge1xuICAgICAgICB1bm1hdGNoZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBuZWlnaGJvck5vZGVzW2ldO1xuICAgICAgdmFyIG5laWdoYm9yTGFiZWwgPSBuZWlnaGJvck5vZGVbbm9kZUxhYmVsUHJvcF07IC8vIHBydW5lMTog6Iul6K+l6YK75bGF54K555qEIGxhYmVsIOS4jeWtmOWcqOS6jiBwYXR0ZXJuIOS4re+8jOenu+mZpOi/meS4queCuVxuXG4gICAgICBpZiAoIXBhdHRlcm5Ob2RlTGFiZWxNYXBbbmVpZ2hib3JMYWJlbF0gfHwgIXBhdHRlcm5Ob2RlTGFiZWxNYXBbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcHJ1bmUyOiDoi6Xor6XpgrvlsYXngrnliLAgY2FuZGlkYXRlIOeahOacgOefrei3r+W+hOavlOWSjOWug+acieebuOWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5QTm9kZSDnmoTmnIDlpKfmnIDnn63ot6/lvoTplb/luqbplb/vvIznp7vpmaTov5nkuKrngrlcbiAgICAgIC8vIHBydW5lMi4xOiDlpoLmnpzmsqHmnInov5nkuKrmoIfnrb7liLAgYmVnaW5QTm9kZSDnmoTot53nprvorrDlvZXvvIzor7TmmI4gcGF0dGVybiDkuIrvvIjlj6/og70gYmVnaW5QTm9kZSDmmK/ov5nkuKogbGFiZWzvvInmsqHmnInlhbbku5bov5nkuKogbGFiZWwg55qE6IqC54K5XG5cblxuICAgICAgaWYgKCFwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdIHx8ICFwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChjYW5kaWRhdGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKTsgLy8gcHJ1bmUyLjJcblxuICAgICAgdmFyIGRpc3RUb0NhbmRpZGF0ZSA9IHNwbU1hcFtrZXldO1xuICAgICAgdmFyIGlkeCA9IHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBtYXhEaXN0V2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXVtpZHhdOyAvLyBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdIOW3sue7j+aMieeFp+S7juWwj+WIsOWkp+aOkuW6j1xuXG4gICAgICBpZiAoZGlzdFRvQ2FuZGlkYXRlID4gbWF4RGlzdFdpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICB2YXIga2V5QmFjayA9IFwiXCIuY29uY2F0KG5laWdoYm9yTm9kZS5pZCwgXCItXCIpLmNvbmNhdChjYW5kaWRhdGUuaWQpO1xuICAgICAgICB2YXIgZGlzdEZyb21DYW5kaWRhdGUgPSBzcG1NYXBba2V5QmFja107XG4gICAgICAgIGlkeCA9IHBhdHRlcm5TcERpc3RCYWNrW25laWdoYm9yTGFiZWxdLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciBtYXhCYWNrRGlzdFdpdGhMYWJlbEluUGF0dGVybiA9IHBhdHRlcm5TcERpc3RCYWNrW25laWdoYm9yTGFiZWxdW2lkeF07XG5cbiAgICAgICAgaWYgKGRpc3RGcm9tQ2FuZGlkYXRlID4gbWF4QmFja0Rpc3RXaXRoTGFiZWxJblBhdHRlcm4pIHtcbiAgICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwcnVuZTM6IOiLpeivpemCu+WxheeCueWIsCBjYW5kaWRhdGUg55qEIE5EUyDot53nprvmr5TlkozlroPmnInnm7jlkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luUE5vZGUg55qE5pyA5bCPIE5EUyDot53nprvlsI/vvIznp7vpmaTov5nkuKrngrlcblxuXG4gICAgICB2YXIgbmRzVG9DYW5kaWRhdGUgPSBuZHNEaXN0W2tleV0gPyBuZHNEaXN0W2tleV0gOiBnZXRORFNEaXN0KGdyYXBoRGF0YSwgY2FuZGlkYXRlLCBuZWlnaGJvck5vZGUsIG5vZGVNYXAsIGRpc3RUb0NhbmRpZGF0ZSwga05laWdoYm9yVW5pdHMsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCwgbmRzRGlzdCwgaW50R01hcCk7XG4gICAgICB2YXIgcGF0dGVybktleSA9IFwiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JMYWJlbCk7XG4gICAgICB2YXIgbWluTmRzV2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVybk5EU0Rpc3RNYXBbcGF0dGVybktleV1bcGF0dGVybk5EU0Rpc3RNYXBbcGF0dGVybktleV0ubGVuZ3RoIC0gMV07IC8vIHBhdHRlcm5ORFNEaXN0W2tleV0g5LiA5a6a5a2Y5ZyoXG5cbiAgICAgIGlmIChuZHNUb0NhbmRpZGF0ZSA8IG1pbk5kc1dpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIHBydW5lNDog6Iul6K+l6YK75bGF54K555qE5bqm5pWw5bCP5LqOIHBhdHRlcm4g5ZCMIGxhYmVsIOiKgueCueacgOWwj+W6puaVsO+8jOWIoOWOu+ivpeeCuVxuXG5cbiAgICAgIHZhciBfYSA9IHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBuZWlnaGJvckxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCksXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlO1xuXG4gICAgICBpZiAobm9kZU1hcFtuZWlnaGJvck5vZGUuaWRdLmRlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH0gLy8g6IqC54K55Zyo5Liq5pWw5LiK56ym5ZCI5Yy56YWN77yI5LiN5bCR5LqOIHBhdHRlcm4g55qE6IqC54K55Liq5pWw77yJ77yM546w5Zyo562b6YCJ55u45YWz6L65XG5cblxuICAgIGlmICghdW5tYXRjaGVkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMucHVzaCh7XG4gICAgICAgIG5vZGVzOiBbY2FuZGlkYXRlXS5jb25jYXQobmVpZ2hib3JOb2RlcylcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2U0OiBnb2luZyB0byBzcGxpY2UgZWRnZXMgYW5kIG5laWdoYm9ycyBmb3IgZWFjaCBjYW5kaWRhdGUgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlID0gZGlqa3N0cmEocGF0dGVybiwgYmVnaW5QTm9kZS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgdmFyIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXAgPSB7fTtcblxuICBpZiAoZGlyZWN0ZWQpIHtcbiAgICBPYmplY3Qua2V5cyh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUlkKSB7XG4gICAgICB2YXIgbm9kZUxhYmVsID0gcGF0dGVybk5vZGVNYXBbbm9kZUlkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0pIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXSA9IFt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZVtub2RlSWRdXTtlbHNlIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXS5wdXNoKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlW25vZGVJZF0pO1xuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXApLmZvckVhY2goZnVuY3Rpb24gKHBMYWJlbCkge1xuICAgICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtwTGFiZWxdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgLSBiO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCA9IHBhdHRlcm5TcERpc3Q7XG4gIH0gLy8g546w5ZyoIGNhbmRpZGF0ZUdyYXBocyDph4zpnaLlj6rmnInoioLngrnvvIzov5vooYzovrnnmoTnrZvpgIlcblxuXG4gIHZhciBjYW5kaWRhdGVHcmFwaE51bSA9IGNhbmRpZGF0ZUdyYXBocy5sZW5ndGg7XG5cbiAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICB2YXIgY2FuZGlkYXRlR3JhcGggPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdO1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcCA9IHt9O1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTWFwID0ge307XG4gICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgcSkge1xuICAgICAgY2FuZGlkYXRlTm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgICAgaWR4OiBxLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICBkZWdyZWU6IDAsXG4gICAgICAgIGluRGVncmVlOiAwLFxuICAgICAgICBvdXREZWdyZWU6IDBcbiAgICAgIH07XG4gICAgICB2YXIgY05vZGVMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdKSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSA9IDE7ZWxzZSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSsrO1xuICAgIH0pOyAvLyDmoLnmja4gY2FuZGlkYXRlIOWSjCBuZWlnaGJvck5vZGVzIOS4reeahOiKgueCueeUn+aIkCBHIOeahOivseWvvOWtkOWbvlxuICAgIC8vIOWNs++8jOWwhiBncmFwaERhdGEg5LiK5Lik56uv6YO95ZyoIGNhbmRpZGF0ZUdyYXBoLm5vZGVzIOS4reeahOi+ueaUvuWFpSBjYW5kaWRhdGVFZGdlc1xuXG4gICAgdmFyIGNhbmRpZGF0ZUVkZ2VzID0gW107XG4gICAgdmFyIGVkZ2VMYWJlbENvdW50TWFwID0ge307XG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXSAmJiBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICBjYW5kaWRhdGVFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dKSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSA9IDE7ZWxzZSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZSsrO1xuICAgICAgfVxuICAgIH0pOyAvLyBwcnVuZe+8muiLpeacieS4gOS4qiBlZGdlTGFiZWwg5ZyoIGNhbmRpZGF0ZUdyYXBoIOS4iueahOS4quaVsOWwkeS6jiBwYXR0ZXJu77yM5Y676Zmk6K+l5Zu+XG5cbiAgICB2YXIgcGF0dGVuckVkZ2VMYWJlbE51bSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApLmxlbmd0aDtcbiAgICB2YXIgcHJ1bmVkQnlFZGdlTGFiZWwgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGUgPSAwOyBlIDwgcGF0dGVuckVkZ2VMYWJlbE51bTsgZSsrKSB7XG4gICAgICB2YXIgbGFiZWxfMSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApW2VdO1xuXG4gICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIHx8IGVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIDwgcGF0dGVybkVkZ2VMYWJlbE1hcFtsYWJlbF8xXS5sZW5ndGgpIHtcbiAgICAgICAgcHJ1bmVkQnlFZGdlTGFiZWwgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJ1bmVkQnlFZGdlTGFiZWwpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH0gLy8g6YGN5Y6GIGNhbmRpZGF0ZUVkZ2Vz77yM6L+b6KGM6L6555qE562b6YCJXG5cblxuICAgIHZhciBjYW5kaWRhdGVFZGdlTnVtID0gY2FuZGlkYXRlRWRnZXMubGVuZ3RoOyAvLyBwcnVuZe+8muiLpei+ueaVsOi/h+Wwke+8jOWOu+mZpOivpeWbvlxuXG4gICAgaWYgKGNhbmRpZGF0ZUVkZ2VOdW0gPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgfVxuXG4gICAgdmFyIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzUgPSBmdW5jdGlvbiBfbG9vcF81KGUpIHtcbiAgICAgIHZhciBlZGdlID0gY2FuZGlkYXRlRWRnZXNbZV07XG4gICAgICB2YXIgZWRnZUxhYmVsID0gZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgIHZhciBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgPSBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF07IC8vIHBydW5lIDE6IOiLpei+ueeahCBsYWJlbCDkuI3lrZjlnKjkuo4gcGF0dGVybiDovrkgbGFiZWwg5Lit77yM5Y676Zmk6K+l6L65XG5cbiAgICAgIGlmICghcGF0dGVybkVkZ2VzV2l0aExhYmVsIHx8ICFwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0tLTsgLy8g6Iul6L+Z5LiqIGxhYmVsIOeahCBjb3VudCDlh4/lsJHkuYvlkI7vvIzor6UgbGFiZWwg55qE6L655pWw5LiN6Laz77yM5Y676Zmk6K+l5Zu+XG5cbiAgICAgICAgaWYgKHBhdHRlcm5FZGdlc1dpdGhMYWJlbCAmJiBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdIDwgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZShlLCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUtLTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUgMjog6Iul6L6555qEIGxhYmVsICvkuKTnq68gbGFiZWwg55qE5LiJ5YWD57uE5YWz57O75LiN6IO95ZyoIHBhdHRlcm4g5Lit5om+5Yiw77yM5Y676Zmk6K+l6L65XG5cblxuICAgICAgdmFyIHNvdXJjZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIHZhciB0YXJnZXRMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICB2YXIgZWRnZU1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuRWRnZSkge1xuICAgICAgICB2YXIgcGF0dGVyblNvdXJjZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5FZGdlLnNvdXJjZV0ubm9kZTtcbiAgICAgICAgdmFyIHBhdHRlcm5UYXJnZXQgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuRWRnZS50YXJnZXRdLm5vZGU7XG4gICAgICAgIGlmIChwYXR0ZXJuU291cmNlW25vZGVMYWJlbFByb3BdID09PSBzb3VyY2VMYWJlbCAmJiBwYXR0ZXJuVGFyZ2V0W25vZGVMYWJlbFByb3BdID09PSB0YXJnZXRMYWJlbCkgZWRnZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIWRpcmVjdGVkICYmIHBhdHRlcm5Tb3VyY2Vbbm9kZUxhYmVsUHJvcF0gPT09IHRhcmdldExhYmVsICYmIHBhdHRlcm5UYXJnZXRbbm9kZUxhYmVsUHJvcF0gPT09IHNvdXJjZUxhYmVsKSBlZGdlTWF0Y2hlZCA9IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFlZGdlTWF0Y2hlZCkge1xuICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07IC8vIOiLpei/meS4qiBsYWJlbCDnmoQgY291bnQg5YeP5bCR5LmL5ZCO77yM6K+lIGxhYmVsIOeahOi+ueaVsOS4jei2s++8jOWOu+mZpOivpeWbvlxuXG4gICAgICAgIGlmIChwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjYW5kaWRhdGVFZGdlcy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGUgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgZSA+PSAwOyBlLS0pIHtcbiAgICAgIHZhciBzdGF0ZV8yID0gX2xvb3BfNShlKTtcblxuICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfSAvLyBwcnVuZTI6IOWIoOmZpOi+ueeahOi/h+eoi+S4re+8jOWPkeeOsOi+ueaVsOi/h+WwkS/ovrkgbGFiZWwg5pWw6L+H5bCR5pe277yM5Y676Zmk6K+l5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIGNhbmRpZGF0ZUdyYXBoLmVkZ2VzID0gY2FuZGlkYXRlRWRnZXM7XG4gICAgdmFyIGxlbmd0aHNUb0NhbmRpZGF0ZSA9IGRpamtzdHJhKGNhbmRpZGF0ZUdyYXBoLCBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhsZW5ndGhzVG9DYW5kaWRhdGUpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXRJZCkge1xuICAgICAgaWYgKHRhcmdldElkID09PSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCB8fCBjYW5kaWRhdGVHcmFwaEludmFsaWQpIHJldHVybjsgLy8gcHJ1bmU0OiDpgJrov4fkuIrov7Doo4HliarvvIzlj6/og73lr7zoh7Tor6XpgrvlsYXlrZDlm77lj5jkuLrkuI3ov57pgJrjgILoo4Hliarmjonnm67liY3lnKjov5nkuKrpgrvlsYXlrZDlm77kuK3lkowgY2FuZGlkYXRl77yI56ys5LiA5Liq6IqC54K577yJ5LiN6L+e6YCa55qE6IqC54K5XG5cbiAgICAgIGlmIChsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID09PSBJbmZpbml0eSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBwcnVuZTU6IOe7j+i/h+i+ueijgeWJquWQju+8jOWPr+iDveWPiOWHuueOsOS6huacgOefrei3r+W+hOi/h+mVv+eahOiKgueCuSDvvIjmr5QgcGF0dGVybiDkuK3lkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luTm9kZSDmnIDlpKfmnIDnn63ot53nprvov5zvvInvvIzliKDljrvov5nkupvoioLngrlcblxuXG4gICAgICB2YXIgbkxhYmVsID0gbm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0gfHwgIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggfHwgbGVuZ3Roc1RvQ2FuZGlkYXRlW3RhcmdldElkXSA+IHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXVt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0ubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGVMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0tLTtcblxuICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbdGFyZ2V0Tm9kZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpZHggPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5pbmRleE9mKGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGUpO1xuICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICB2YXIgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgdmFyIGxvb3BDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoZGVncmVlQ2hhbmdlZCAmJiAhY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBkZWdyZWVDaGFuZ2VkID0gZmFsc2U7IC8vIGNhbmRpZGF0ZSDluqbmlbDkuI3otrPvvIzliKDljrvor6Xlm75cblxuICAgICAgdmFyIGNvbmRpdGlvbiA9IGRpcmVjdGVkID8gY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uaW5EZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5pbkRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0ub3V0RGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0ub3V0RGVncmVlIDogY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZTtcblxuICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gY2FuZGlkYXRlIGxhYmVsIOS4quaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG5cbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gcHJ1bmU277ya5Y676Zmk5bqm5pWw6L+H5bCP55qE6IqC54K5XG5cblxuICAgICAgdmFyIGN1cnJlbnRDYW5kaWRhdGVOb2RlTnVtID0gY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBvID0gY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gLSAxOyBvID49IDA7IG8tLSkge1xuICAgICAgICB2YXIgY2dOb2RlID0gY2FuZGlkYXRlR3JhcGgubm9kZXNbb107XG4gICAgICAgIHZhciBub2RlRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVJbkRlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5pbkRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVPdXREZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0ub3V0RGVncmVlO1xuICAgICAgICB2YXIgY05vZGVMYWJlbCA9IGNnTm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgICB2YXIgX2UgPSBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgY05vZGVMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApLFxuICAgICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZTtcblxuICAgICAgICB2YXIgZGVsZXRlQ29uZGl0aW9uID0gZGlyZWN0ZWQgPyBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSB8fCBub2RlSW5EZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgfHwgbm9kZU91dERlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgOiBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTtcblxuICAgICAgICBpZiAoZGVsZXRlQ29uZGl0aW9uKSB7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS0tOyAvLyDoioLngrkgbGFiZWwg5Liq5pWw5LiN6LazXG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UobywgMSk7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlZ3JlZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgIWRlZ3JlZUNoYW5nZWQgJiYgbG9vcENvdW50ICE9PSAwKSBicmVhazsgLy8g57uP6L+HIHBydW5lNSDoioLngrnoo4HliarvvIzliKDljrvnq6/ngrnlt7Lnu4/kuI3lnKggY2FuZGlkYXRlR3JhcGgg5Lit55qE6L65XG5cbiAgICAgIGNhbmRpZGF0ZUVkZ2VOdW0gPSBjYW5kaWRhdGVFZGdlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIHkgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgeSA+PSAwOyB5LS0pIHtcbiAgICAgICAgdmFyIGNlZGdlID0gY2FuZGlkYXRlRWRnZXNbeV07XG5cbiAgICAgICAgaWYgKCFjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0gfHwgIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZSh5LCAxKTtcbiAgICAgICAgICB2YXIgZWRnZUxhYmVsID0gY2VkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tO1xuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnRhcmdldF0pIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICAgIH0gLy8g6L65IGxhYmVsIOaVsOmHj+S4jei2s1xuXG5cbiAgICAgICAgICBpZiAocGF0dGVybkVkZ2VMYWJlbE1hcFtlZGdlTGFiZWxdICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbG9vcENvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfSAvLyBwcnVuZTog6Iul6IqC54K5L+i+ueaVsOi/h+Wwke+8jOiKgueCuS/ovrkgbGFiZWwg6L+H5bCR77yM5Y675o6J6L+Z5Liq5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoIDwgcGF0dGVybi5ub2Rlcy5sZW5ndGggfHwgY2FuZGlkYXRlRWRnZXMubGVuZ3RoIDwgcGF0dGVybi5lZGdlcy5sZW5ndGgpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gY2FuZGlkYXRlR3JhcGhOdW0gLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMihpKTtcblxuICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICB9IC8vIOatpOaXtuW3sue7j+eUn+aIkOeahOWkmuS4qiBjYW5kaWRhdGVHcmFwaHPvvIzlj6/og73mnInph43lpI1cbiAgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTU6IGdvaW5nIHRvIHNwbGljZSBkdWxwbGljYXRlZCBjYW5kaWRhdGUgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyDliKDljrsgY2FuZGlkYXRlR3JhcGhzIOS4reS4gOaooeS4gOagt+eahOWtkOWbvu+8jOmAmui/h+i+ueeahCBub2RlLW5vZGUtZWRnZUxhYmVsIOS9nOS4uiBrZXnvvIzov5nnsbvovrnkuKrmlbDkvZzkuLogdmFsdWXvvIzov5vooYzljLnphY1cblxuXG4gIHZhciBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIF9sb29wXzMoaSkge1xuICAgIHZhciBjZzEgPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNnMUVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgY2cxLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLnNvdXJjZSwgXCItXCIpLmNvbmNhdChlZGdlLnRhcmdldCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsKTtcbiAgICAgIGlmICghY2cxRWRnZU1hcFtrZXldKSBjZzFFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cxRWRnZU1hcFtrZXldKys7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfNiA9IGZ1bmN0aW9uIF9sb29wXzYoaikge1xuICAgICAgdmFyIGNnMiA9IGNhbmRpZGF0ZUdyYXBoc1tqXTtcbiAgICAgIHZhciBjZzJFZGdlTWFwID0ge307IC8vIFtub2RlMS5pZC1ub2RlMi5pZC1lZGdlLmxhYmVsXTogY291bnRcblxuICAgICAgY2cyLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgICBpZiAoIWNnMkVkZ2VNYXBba2V5XSkgY2cyRWRnZU1hcFtrZXldID0gMTtlbHNlIGNnMkVkZ2VNYXBba2V5XSsrO1xuICAgICAgfSk7XG4gICAgICB2YXIgc2FtZSA9IHRydWU7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhjZzJFZGdlTWFwKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmxlbmd0aCkge1xuICAgICAgICBzYW1lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhjZzFFZGdlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICBpZiAoY2cyRWRnZU1hcFtrZXldICE9PSBjZzFFZGdlTWFwW2tleV0pIHNhbWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaiwgMSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGogPSBjdXJyZW50TGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgX2xvb3BfNihqKTtcbiAgICB9XG5cbiAgICBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8PSBjdXJyZW50TGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgX2xvb3BfMyhpKTtcbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVHcmFwaHM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHQURESTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js ***! \**************************************************************************/ /*! exports provided: getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectDirectedCycle\", function() { return detectDirectedCycle; });\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bfs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"breadthFirstSearch\", function() { return _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"connectedComponent\", function() { return _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"]; });\n\n/* harmony import */ var _detect_cycle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./detect-cycle */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"]; });\n\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"depthFirstSearch\", function() { return _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dijkstra\", function() { return _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _find_path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./find-path */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"]; });\n\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _label_propagation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./label-propagation */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"labelPropagation\", function() { return _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _louvain__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./louvain */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"louvain\", function() { return _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _mts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mts */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minimumSpanningTree\", function() { return _mts__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _pageRank__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./pageRank */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageRank\", function() { return _pageRank__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _gaddi__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./gaddi */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GADDI\", function() { return _gaddi__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _structs_stack__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./structs/stack */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Stack\", function() { return _structs_stack__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return _util__WEBPACK_IMPORTED_MODULE_15__[\"getNeighbors\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar detectDirectedCycle = _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAdjMatrix: _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n breadthFirstSearch: _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n connectedComponent: _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n getDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getInDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"],\n getOutDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"],\n detectCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n detectDirectedCycle: detectDirectedCycle,\n detectAllCycles: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"],\n detectAllDirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"],\n detectAllUndirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"],\n depthFirstSearch: _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n dijkstra: _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n findAllPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"],\n findShortestPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"],\n floydWarshall: _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n labelPropagation: _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n louvain: _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n minimumSpanningTree: _mts__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n pageRank: _pageRank__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n getNeighbors: _util__WEBPACK_IMPORTED_MODULE_15__[\"getNeighbors\"],\n Stack: _structs_stack__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n GADDI: _gaddi__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2luZGV4LmpzPzdjNzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNOO0FBQ2dCO0FBQ3RCO0FBQ29CO0FBQzJEO0FBQzNFO0FBQ0g7QUFDMEI7QUFDaEI7QUFDTztBQUNuQjtBQUNRO0FBQ047QUFDTjtBQUNRO0FBQ0U7QUFDdEMsMEJBQTBCLHFEQUFXO0FBQ3NVO0FBQzVWO0FBQ2YsZ0JBQWdCLHdEQUFZO0FBQzVCLHNCQUFzQiw0Q0FBa0I7QUFDeEMsc0JBQXNCLDREQUFrQjtBQUN4QyxhQUFhLCtDQUFTO0FBQ3RCLGVBQWUsbURBQVc7QUFDMUIsZ0JBQWdCLG9EQUFZO0FBQzVCLGVBQWUscURBQVc7QUFDMUI7QUFDQSxtQkFBbUIsNkRBQWU7QUFDbEMsMEJBQTBCLG9FQUFzQjtBQUNoRCw0QkFBNEIsc0VBQXdCO0FBQ3BELG9CQUFvQiw0Q0FBZ0I7QUFDcEMsWUFBWSxpREFBUTtBQUNwQixlQUFlLHNEQUFXO0FBQzFCLG9CQUFvQiwyREFBZ0I7QUFDcEMsaUJBQWlCLHNEQUFhO0FBQzlCLG9CQUFvQiwwREFBZ0I7QUFDcEMsV0FBVyxpREFBTztBQUNsQix1QkFBdUIsNkNBQW1CO0FBQzFDLFlBQVksa0RBQVE7QUFDcEIsZ0JBQWdCLG1EQUFZO0FBQzVCLFNBQVMsdURBQUs7QUFDZCxTQUFTLCtDQUFLO0FBQ2QsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gJy4vYWRqYWNlbnQtbWF0cml4JztcbmltcG9ydCBicmVhZHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9iZnMnO1xuaW1wb3J0IGNvbm5lY3RlZENvbXBvbmVudCBmcm9tICcuL2Nvbm5lY3RlZC1jb21wb25lbnQnO1xuaW1wb3J0IGdldERlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXRJbkRlZ3JlZSwgZ2V0T3V0RGVncmVlIH0gZnJvbSAnLi9kZWdyZWUnO1xuaW1wb3J0IGRldGVjdEN5Y2xlLCB7IGRldGVjdEFsbEN5Y2xlcywgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlIH0gZnJvbSAnLi9kZXRlY3QtY3ljbGUnO1xuaW1wb3J0IGRlcHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9kZnMnO1xuaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZmluZEFsbFBhdGgsIGZpbmRTaG9ydGVzdFBhdGggfSBmcm9tICcuL2ZpbmQtcGF0aCc7XG5pbXBvcnQgZmxveWRXYXJzaGFsbCBmcm9tICcuL2Zsb3lkV2Fyc2hhbGwnO1xuaW1wb3J0IGxhYmVsUHJvcGFnYXRpb24gZnJvbSAnLi9sYWJlbC1wcm9wYWdhdGlvbic7XG5pbXBvcnQgbG91dmFpbiBmcm9tICcuL2xvdXZhaW4nO1xuaW1wb3J0IG1pbmltdW1TcGFubmluZ1RyZWUgZnJvbSAnLi9tdHMnO1xuaW1wb3J0IHBhZ2VSYW5rIGZyb20gJy4vcGFnZVJhbmsnO1xuaW1wb3J0IEdBRERJIGZyb20gJy4vZ2FkZGknO1xuaW1wb3J0IFN0YWNrIGZyb20gJy4vc3RydWN0cy9zdGFjayc7XG5pbXBvcnQgeyBnZXROZWlnaGJvcnMgfSBmcm9tICcuL3V0aWwnO1xudmFyIGRldGVjdERpcmVjdGVkQ3ljbGUgPSBkZXRlY3RDeWNsZTtcbmV4cG9ydCB7IGdldEFkak1hdHJpeCwgYnJlYWR0aEZpcnN0U2VhcmNoLCBjb25uZWN0ZWRDb21wb25lbnQsIGdldERlZ3JlZSwgZ2V0SW5EZWdyZWUsIGdldE91dERlZ3JlZSwgZGV0ZWN0Q3ljbGUsIGRldGVjdERpcmVjdGVkQ3ljbGUsIGRldGVjdEFsbEN5Y2xlcywgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlLCBkZXB0aEZpcnN0U2VhcmNoLCBkaWprc3RyYSwgZmluZEFsbFBhdGgsIGZpbmRTaG9ydGVzdFBhdGgsIGZsb3lkV2Fyc2hhbGwsIGxhYmVsUHJvcGFnYXRpb24sIGxvdXZhaW4sIG1pbmltdW1TcGFubmluZ1RyZWUsIHBhZ2VSYW5rLCBnZXROZWlnaGJvcnMsIFN0YWNrLCBHQURESSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBZGpNYXRyaXg6IGdldEFkak1hdHJpeCxcbiAgYnJlYWR0aEZpcnN0U2VhcmNoOiBicmVhZHRoRmlyc3RTZWFyY2gsXG4gIGNvbm5lY3RlZENvbXBvbmVudDogY29ubmVjdGVkQ29tcG9uZW50LFxuICBnZXREZWdyZWU6IGdldERlZ3JlZSxcbiAgZ2V0SW5EZWdyZWU6IGdldEluRGVncmVlLFxuICBnZXRPdXREZWdyZWU6IGdldE91dERlZ3JlZSxcbiAgZGV0ZWN0Q3ljbGU6IGRldGVjdEN5Y2xlLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlOiBkZXRlY3REaXJlY3RlZEN5Y2xlLFxuICBkZXRlY3RBbGxDeWNsZXM6IGRldGVjdEFsbEN5Y2xlcyxcbiAgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZTogZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSxcbiAgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlOiBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUsXG4gIGRlcHRoRmlyc3RTZWFyY2g6IGRlcHRoRmlyc3RTZWFyY2gsXG4gIGRpamtzdHJhOiBkaWprc3RyYSxcbiAgZmluZEFsbFBhdGg6IGZpbmRBbGxQYXRoLFxuICBmaW5kU2hvcnRlc3RQYXRoOiBmaW5kU2hvcnRlc3RQYXRoLFxuICBmbG95ZFdhcnNoYWxsOiBmbG95ZFdhcnNoYWxsLFxuICBsYWJlbFByb3BhZ2F0aW9uOiBsYWJlbFByb3BhZ2F0aW9uLFxuICBsb3V2YWluOiBsb3V2YWluLFxuICBtaW5pbXVtU3Bhbm5pbmdUcmVlOiBtaW5pbXVtU3Bhbm5pbmdUcmVlLFxuICBwYWdlUmFuazogcGFnZVJhbmssXG4gIGdldE5laWdoYm9yczogZ2V0TmVpZ2hib3JzLFxuICBTdGFjazogU3RhY2ssXG4gIEdBRERJOiBHQURESVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (labelPropagation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2xhYmVsLXByb3BhZ2F0aW9uLmpzPzU0NmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1g7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBLGNBQWMsc0RBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGtCQUFrQixnRUFBWSxzQkFBc0I7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsK0VBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9sYWJlbC1wcm9wYWdhdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBZGpNYXRyaXggZnJvbSAnLi9hZGphY2VudC1tYXRyaXgnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGxhYmVsUHJvcGFnYXRpb24oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCBtYXhJdGVyYXRpb24pIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAobWF4SXRlcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICBtYXhJdGVyYXRpb24gPSAxMDAwO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGNsdXN0ZXJzID0ge307XG4gIHZhciBub2RlTWFwID0ge307IC8vIGluaXQgdGhlIGNsdXN0ZXJzIGFuZCBub2RlTWFwXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBjaWQgPSB1bmlxdWVJZCgpO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2lkO1xuICAgIGNsdXN0ZXJzW2NpZF0gPSB7XG4gICAgICBpZDogY2lkLFxuICAgICAgbm9kZXM6IFtub2RlXVxuICAgIH07XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBpZHg6IGlcbiAgICB9O1xuICB9KTsgLy8gdGhlIGFkamFjZW50IG1hdHJpeCBvZiBjYWxOb2RlcyBpbnNpZGUgY2x1c3RlcnNcblxuICB2YXIgYWRqTWF0cml4ID0gZ2V0QWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpOyAvLyB0aGUgc3VtIG9mIGVhY2ggcm93IGluIGFkamFjZW50IG1hdHJpeFxuXG4gIHZhciBrcyA9IFtdO1xuICAvKipcbiAgICogbmVpZ2hib3Igbm9kZXMgKGlkIGZvciBrZXkgYW5kIHdlaWdodCBmb3IgdmFsdWUpIGZvciBlYWNoIG5vZGVcbiAgICogbmVpZ2hib3JzID0ge1xuICAgKiAgaWQobm9kZV9pZCk6IHsgaWQobmVpZ2hib3JfMV9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCBpZChuZWlnaGJvcl8yX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIC4uLiB9LFxuICAgKiAgLi4uXG4gICAqIH1cbiAgICovXG5cbiAgdmFyIG5laWdoYm9ycyA9IHt9O1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICB9KTtcbiAgICBrcy5wdXNoKGspO1xuICB9KTtcbiAgdmFyIGl0ZXIgPSAwO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY2hhbmdlZCA9IGZhbHNlO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhuZWlnaGJvcnNbbm9kZS5pZF0pLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9ySWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yV2VpZ2h0ID0gbmVpZ2hib3JzW25vZGUuaWRdW25laWdoYm9ySWRdO1xuICAgICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbm9kZU1hcFtuZWlnaGJvcklkXS5ub2RlO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVySWQgPSBuZWlnaGJvck5vZGUuY2x1c3RlcklkO1xuICAgICAgICBpZiAoIW5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdKSBuZWlnaGJvckNsdXN0ZXJzW25laWdoYm9yQ2x1c3RlcklkXSA9IDA7XG4gICAgICAgIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdICs9IG5laWdoYm9yV2VpZ2h0O1xuICAgICAgfSk7IC8vIGZpbmQgdGhlIGNsdXN0ZXIgd2l0aCBtYXggd2VpZ2h0XG5cbiAgICAgIHZhciBtYXhXZWlnaHQgPSAtSW5maW5pdHk7XG4gICAgICB2YXIgYmVzdENsdXN0ZXJJZHMgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgICAgICBpZiAobWF4V2VpZ2h0IDwgbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdKSB7XG4gICAgICAgICAgbWF4V2VpZ2h0ID0gbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzID0gW2NsdXN0ZXJJZF07XG4gICAgICAgIH0gZWxzZSBpZiAobWF4V2VpZ2h0ID09PSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBiZXN0Q2x1c3Rlcklkcy5wdXNoKGNsdXN0ZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzLmxlbmd0aCA9PT0gMSAmJiBiZXN0Q2x1c3Rlcklkc1swXSA9PT0gbm9kZS5jbHVzdGVySWQpIHJldHVybjtcbiAgICAgIHZhciBzZWxmQ2x1c3RlcklkeCA9IGJlc3RDbHVzdGVySWRzLmluZGV4T2Yobm9kZS5jbHVzdGVySWQpO1xuICAgICAgaWYgKHNlbGZDbHVzdGVySWR4ID49IDApIGJlc3RDbHVzdGVySWRzLnNwbGljZShzZWxmQ2x1c3RlcklkeCwgMSk7XG5cbiAgICAgIGlmIChiZXN0Q2x1c3RlcklkcyAmJiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpIHtcbiAgICAgICAgY2hhbmdlZCA9IHRydWU7IC8vIHJlbW92ZSBmcm9tIG9yaWdpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICBzZWxmQ2x1c3Rlci5ub2Rlcy5zcGxpY2Uobm9kZUluU2VsZkNsdXN0ZXJJZHgsIDEpOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgcmFuZG9tSWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYmVzdENsdXN0ZXJJZHMubGVuZ3RoKTtcbiAgICAgICAgdmFyIGJlc3RDbHVzdGVyID0gY2x1c3RlcnNbYmVzdENsdXN0ZXJJZHNbcmFuZG9tSWR4XV07XG4gICAgICAgIGJlc3RDbHVzdGVyLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIG5vZGUuY2x1c3RlcklkID0gYmVzdENsdXN0ZXIuaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjaGFuZ2VkKSByZXR1cm4gXCJicmVha1wiO1xuICAgIGl0ZXIrKztcbiAgfTtcblxuICB3aGlsZSAoaXRlciA8IG1heEl0ZXJhdGlvbikge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMSgpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8gZGVsZXRlIHRoZSBlbXB0eSBjbHVzdGVyc1xuXG5cbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gY2x1c3RlcnNbY2x1c3RlcklkXTtcblxuICAgIGlmICghY2x1c3Rlci5ub2RlcyB8fCAhY2x1c3Rlci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRlbGV0ZSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIH1cbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICBjbHVzdGVyc0FycmF5LnB1c2goY2x1c3RlcnNbY2x1c3RlcklkXSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVyc0FycmF5LFxuICAgIGNsdXN0ZXJFZGdlczogY2x1c3RlckVkZ2VzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsYWJlbFByb3BhZ2F0aW9uOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js\");\n/* harmony import */ var _constants_time__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants/time */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js\");\n\n\n\n\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 获取所有属性并排序\n\n\nvar getAllSortProperties = function getAllSortProperties(nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量\n if (!\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"secondReg\"]) && !\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"dateReg\"]) && isNaN(Number(node.properties[propertyKey])) || propertyKey === 'id') {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < 100 ? sortKeys : sortKeys.slice(0, 100);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"secondReg\"]) || properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"dateReg\"])) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(propertyKeys, nodes) {\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n }\n\n var propertyKeys = getAllSortProperties(nodes); // 所有节点属性特征向量集合\n\n allPropertiesWeight = getPropertyWeight(propertyKeys, nodes);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (louvain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2xvdXZhaW4uanM/MzZiOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ1U7QUFDVDtBQUNrQjs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQseURBQVMsb0RBQW9ELHVEQUFPO0FBQzdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLGdDQUFnQyx5REFBUywyQkFBMkIsdURBQU87QUFDM0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QixxREFBTTs7QUFFbEMsaUJBQWlCLFlBQVk7QUFDN0IsOENBQThDLHFEQUFNO0FBQ3BELEdBQUc7OztBQUdIO0FBQ0EsNEJBQTRCOztBQUU1Qjs7QUFFQSxpQkFBaUIsWUFBWTtBQUM3QiwwQkFBMEIscURBQU07QUFDaEM7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLFlBQVk7QUFDN0IsMEJBQTBCLHFEQUFNO0FBQ2hDOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0QixxREFBTTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUEsbURBQW1EOztBQUVuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsa0JBQWtCLGdFQUFZLHNCQUFzQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0dBQW9HO0FBQ3hIO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0pBQWtKOztBQUVsSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0JBQXNCLHdEQUFLO0FBQzNCO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCxxRUFBcUU7O0FBRXJFO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULDhIQUE4SDs7QUFFOUg7QUFDQTtBQUNBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBO0FBQ0EsaURBQWlEOztBQUVqRCwwREFBMEQ7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYLHVGQUF1Rjs7QUFFdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVgsc0hBQXNIOztBQUV0SDs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QyxtRUFBbUU7O0FBRW5FLDBEQUEwRDtBQUMxRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2xvdXZhaW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGdldEFkak1hdHJpeCBmcm9tICcuL2FkamFjZW50LW1hdHJpeCc7XG5pbXBvcnQgVmVjdG9yIGZyb20gJy4vdXRpbHMvdmVjdG9yJztcbmltcG9ydCB7IHNlY29uZFJlZywgZGF0ZVJlZyB9IGZyb20gJy4vY29uc3RhbnRzL3RpbWUnO1xuXG52YXIgZ2V0TW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pIHtcbiAgdmFyIGxlbmd0aCA9IGFkak1hdHJpeC5sZW5ndGg7XG4gIHZhciBwYXJhbSA9IDIgKiBtO1xuICB2YXIgbW9kdWxhcml0eSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGVudHJ5ID0gYWRqTWF0cml4W2ldW2pdIHx8IDA7XG4gICAgICB2YXIga2kgPSBrc1tpXSB8fCAwO1xuICAgICAgdmFyIGtqID0ga3Nbal0gfHwgMDtcbiAgICAgIG1vZHVsYXJpdHkgKz0gZW50cnkgLSBraSAqIGtqIC8gcGFyYW07XG4gICAgfVxuICB9XG5cbiAgbW9kdWxhcml0eSAqPSAxIC8gcGFyYW07XG4gIHJldHVybiBtb2R1bGFyaXR5O1xufTsgLy8g6I635Y+W5omA5pyJ5bGe5oCn5bm25o6S5bqPXG5cblxudmFyIGdldEFsbFNvcnRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsU29ydFByb3BlcnRpZXMobm9kZXMpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5S2V5SW5mbyA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgT2JqZWN0LmtleXMobm9kZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eUtleSkge1xuICAgICAgLy8g55uu5YmN6L+H5ruk5Y+q5L+d55WZ5Y+v5Lul6L2s5oiQ5pWw5YC85Z6L55qE5oiW5pel5pyf5Z6L55qELCB0b2RvOiDnu5/kuIDovazmiJBvbmUtaG9054m55b6B5ZCR6YePXG4gICAgICBpZiAoIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKHNlY29uZFJlZykgJiYgIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKGRhdGVSZWcpICYmIGlzTmFOKE51bWJlcihub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSkgfHwgcHJvcGVydHlLZXkgPT09ICdpZCcpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgICBkZWxldGUgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSA9IDE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pOyAvLyDlj5Z0b3A1MOeahOWxnuaAp1xuXG4gIHZhciBzb3J0S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnR5S2V5SW5mbykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleUluZm9bYl0gLSBwcm9wZXJ0eUtleUluZm9bYV07XG4gIH0pO1xuICByZXR1cm4gc29ydEtleXMubGVuZ3RoIDwgMTAwID8gc29ydEtleXMgOiBzb3J0S2V5cy5zbGljZSgwLCAxMDApO1xufTtcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKHNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKGRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxudmFyIGdldFByb3BlcnR5V2VpZ2h0ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcykge1xuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldID0gcHJvY2Vzc1Byb3BlcnR5KG5vZGVzW2ldLnByb3BlcnRpZXMsIHByb3BlcnR5S2V5cyk7XG4gIH1cblxuICByZXR1cm4gYWxsUHJvcGVydGllc1dlaWdodDtcbn07IC8vIOaooeWdl+aDr+aAp+W6pu+8jOihoemHj+WxnuaAp+ebuOS8vOW6plxuXG5cbnZhciBnZXRJbmVydGlhbE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRJbmVydGlhbE1vZHVsYXJpdHkobm9kZXMsIGFsbFByb3BlcnRpZXNXZWlnaHQpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHRvdGFsUHJvcGVydGllcyA9IG5ldyBWZWN0b3IoW10pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB0b3RhbFByb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYWRkKG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtpXSkpO1xuICB9IC8vIOWdh+WAvOWQkemHj1xuXG5cbiAgdmFyIGF2Z1Byb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYXZnKGxlbmd0aCk7XG4gIGF2Z1Byb3BlcnRpZXMubm9ybWFsaXplKCk7IC8vIOiKgueCuembhuWQiOeahOaWueW3rjog6IqC54K5duS4juWdh+WAvOWQkemHj+eahOW5s+aWueasp+W8j+i3neemu+S5i+WSjFxuXG4gIHZhciB2YXJpYW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgdmFyIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UoYXZnUHJvcGVydGllcyk7XG4gICAgdmFyaWFuY2UgKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH0gLy8g5Lu75oSP5Lik54K56Ze055qE5qyn5byP5bmz5pa56Led56a7XG5cblxuICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mby5wdXNoKFtdKTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXSA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydGllc2ogPSBuZXcgVmVjdG9yKGFsbFByb3BlcnRpZXNXZWlnaHRbal0pO1xuICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UocHJvcGVydGllc2opO1xuICAgICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddICs9IHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXTtcbiAgICB9XG4gIH0gLy8g6K6h566X5qih5Z2X5oOv5oCn5bqmXG5cblxuICB2YXIgaW5lcnRpYWxNb2R1bGFyaXR5ID0gMDtcbiAgdmFyIHBhcmFtID0gMiAqIGxlbmd0aCAqIHZhcmlhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoaSA9PT0gaiB8fCBjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGluZXJ0aWFsID0gbm9kZXNbaV0uY2x1c3RlckluZXJ0aWFsICogbm9kZXNbal0uY2x1c3RlckluZXJ0aWFsIC8gTWF0aC5wb3cocGFyYW0sIDIpIC0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdIC8gcGFyYW07XG4gICAgICBpbmVydGlhbE1vZHVsYXJpdHkgKz0gaW5lcnRpYWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihpbmVydGlhbE1vZHVsYXJpdHkudG9GaXhlZCg0KSk7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZCDlt67lgLzpmIjlgLxcbiAqIEBwYXJhbSBpbmVydGlhbE1vZHVsYXJpdHkg5piv5ZCm5L2/55So5oOv5oCn5qih5Z2X5bqm77yI5Y2z6IqC54K55bGe5oCn55u45Ly85oCn77yJXG4gKi9cblxuXG52YXIgbG91dmFpbiA9IGZ1bmN0aW9uIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIGluZXJ0aWFsTW9kdWxhcml0eSwgaW5lcnRpYWxXZWlnaHQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjAwMDE7XG4gIH1cblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbE1vZHVsYXJpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgIG5vZGUucHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIG5vZGUub3JpZ2luSW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgICB2YXIgbm9kZVR5cGVJbmZvXzEgPSBbXTtcblxuICAgIGlmIChub2Rlcy5ldmVyeShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzT3duUHJvcGVydHkoJ25vZGVUeXBlJyk7XG4gICAgfSkpIHtcbiAgICAgIG5vZGVUeXBlSW5mb18xID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZTtcbiAgICAgIH0pKSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUucHJvcGVydGllcy5ub2RlVHlwZSA9IG5vZGVUeXBlSW5mb18xLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09IG5vZGUubm9kZVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3BlcnR5S2V5cyA9IGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzKTsgLy8g5omA5pyJ6IqC54K55bGe5oCn54m55b6B5ZCR6YeP6ZuG5ZCIXG5cbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcyk7XG4gIH1cblxuICB2YXIgdW5pcXVlSWQgPSAxO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9IFN0cmluZyh1bmlxdWVJZCsrKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9IGdldEFkak1hdHJpeChncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gdGhlIHN1bSBvZiBlYWNoIHJvdyBpbiBhZGphY2VudCBtYXRyaXhcblxuICB2YXIga3MgPSBbXTtcbiAgLyoqXG4gICAqIG5laWdoYm9yIG5vZGVzIChpZCBmb3Iga2V5IGFuZCB3ZWlnaHQgZm9yIHZhbHVlKSBmb3IgZWFjaCBub2RlXG4gICAqIG5laWdoYm9ycyA9IHtcbiAgICogIGlkKG5vZGVfaWQpOiB7IGlkKG5laWdoYm9yXzFfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgaWQobmVpZ2hib3JfMl9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCAuLi4gfSxcbiAgICogIC4uLlxuICAgKiB9XG4gICAqL1xuXG4gIHZhciBuZWlnaGJvcnMgPSB7fTsgLy8gdGhlIHN1bSBvZiB0aGUgd2VpZ2h0cyBvZiBhbGwgZWRnZXMgaW4gdGhlIGdyYXBoXG5cbiAgdmFyIG0gPSAwO1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICAgIG0gKz0gZW50cnk7XG4gICAgfSk7XG4gICAga3MucHVzaChrKTtcbiAgfSk7XG4gIG0gLz0gMjtcbiAgdmFyIHRvdGFsTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgcHJldmlvdXNNb2R1bGFyaXR5ID0gSW5maW5pdHk7XG4gIHZhciBpdGVyID0gMDtcbiAgdmFyIGZpbmFsTm9kZXMgPSBbXTtcbiAgdmFyIGZpbmFsQ2x1c3RlcnMgPSB7fTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChpbmVydGlhbE1vZHVsYXJpdHkgJiYgbm9kZXMuZXZlcnkoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJyk7XG4gICAgfSkpIHtcbiAgICAgIHRvdGFsTW9kdWxhcml0eSA9IGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pICsgZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KG5vZGVzLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKTtcbiAgICB9IC8vIOesrOS4gOasoei/reS7o3ByZXZpb3VzTW9kdWxhcml0eeebtOaOpei1i+WAvFxuXG5cbiAgICBpZiAoaXRlciA9PT0gMCkge1xuICAgICAgcHJldmlvdXNNb2R1bGFyaXR5ID0gdG90YWxNb2R1bGFyaXR5O1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzO1xuICAgICAgZmluYWxDbHVzdGVycyA9IGNsdXN0ZXJzO1xuICAgIH1cblxuICAgIHZhciBpbmNyZWFzZVdpdGhpblRocmVzaG9sZCA9IHRvdGFsTW9kdWxhcml0eSA+IDAgJiYgdG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5ICYmIHRvdGFsTW9kdWxhcml0eSAtIHByZXZpb3VzTW9kdWxhcml0eSA8IHRocmVzaG9sZDsgLy8g5oC75qih5Z2X5bqm5aKe5Yqg5omN5pu05paw5pyA5LyY6KejXG5cbiAgICBpZiAodG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5KSB7XG4gICAgICBmaW5hbE5vZGVzID0gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICBjbHVzdGVySWQ6IG5vZGUuY2x1c3RlcklkXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSBjbG9uZShjbHVzdGVycyk7XG4gICAgICBwcmV2aW91c01vZHVsYXJpdHkgPSB0b3RhbE1vZHVsYXJpdHk7XG4gICAgfSAvLyB3aGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgaXRlcmF0aW9uc1xuXG5cbiAgICBpZiAoaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgfHwgaXRlciA+IDEwMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgO1xuICAgIGl0ZXIrKzsgLy8gcHJlIGNvbXB1dGUgc29tZSB2YWx1ZXMgZm9yIGN1cnJlbnQgY2x1c3RlcnNcblxuICAgIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcbiAgICAgIHZhciBzdW1Ub3QgPSAwO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBjbHVzdGVySWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgc291cmNlQ2x1c3RlcklkICE9PSBjbHVzdGVySWQpIHtcbiAgICAgICAgICBzdW1Ub3QgPSBzdW1Ub3QgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNsdXN0ZXJzW2NsdXN0ZXJJZF0uc3VtVG90ID0gc3VtVG90O1xuICAgIH0pOyAvLyBtb3ZlIHRoZSBub2RlcyB0byBpbmNyZWFzZSB0aGUgZGVsdGEgbW9kdWxhcml0eVxuXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgdmFyIGJlc3RJbmNyZWFzZSA9IDA7XG4gICAgICB2YXIgYmVzdENsdXN0ZXI7XG4gICAgICB2YXIgY29tbW9uUGFyYW0gPSBrc1tpXSAvICgyICogbSk7IC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIGZyb20gbm9kZSB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgIHZhciBraWluID0gMDtcbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzID0gc2VsZkNsdXN0ZXIubm9kZXM7XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHNjTm9kZSkge1xuICAgICAgICB2YXIgc2NOb2RlSWR4ID0gbm9kZU1hcFtzY05vZGUuaWRdLmlkeDtcbiAgICAgICAga2lpbiArPSBhZGpNYXRyaXhbaV1bc2NOb2RlSWR4XSB8fCAwO1xuICAgICAgfSk7IC8vIHRoZSBtb2R1cmFyaXR5IGZvciAqKnJlbW92aW5nKiogdGhlIG5vZGUgaSBmcm9tIHRoZSBvcmlnaW4gY2x1c3RlciBvZiBub2RlIGlcblxuICAgICAgdmFyIHJlbW92ZU1vZHVyYXJpdHkgPSBraWluIC0gc2VsZkNsdXN0ZXIuc3VtVG90ICogY29tbW9uUGFyYW07IC8vIG5vZGVzIGZvciAqKnJlbW92aW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUgPSBzZWxmQ2x1c3Rlck5vZGVzLmZpbHRlcihmdW5jdGlvbiAoc2NOb2RlKSB7XG4gICAgICAgIHJldHVybiBzY05vZGUuaWQgIT09IG5vZGUuaWQ7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0UmVtb3ZlID0gW107XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAobm9kZVJlbW92ZSwgaW5kZXgpIHtcbiAgICAgICAgcHJvcGVydGllc1dlaWdodFJlbW92ZVtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVSZW1vdmUub3JpZ2luSW5kZXhdO1xuICAgICAgfSk7IC8vIHRoZSBpbmVydGlhbE1vZHVsYXJpdHkgZm9yICoqcmVtb3ZpbmcqKiB0aGUgbm9kZSBpIGZyb20gdGhlIG9yaWdpbiBjbHVzdGVyIG9mIG5vZGUgaVxuXG4gICAgICB2YXIgcmVtb3ZlSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZSwgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDsgLy8gdGhlIG5laWdodGJvcnMgb2YgdGhlIG5vZGVcblxuICAgICAgdmFyIG5vZGVOZWlnaGJvcklkcyA9IG5laWdoYm9yc1tub2RlLmlkXTtcbiAgICAgIE9iamVjdC5rZXlzKG5vZGVOZWlnaGJvcklkcykuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlSWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5vZGVNYXBbbmVpZ2hib3JOb2RlSWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7IC8vIGlmIHRoZSBub2RlIGFuZCB0aGUgbmVpZ2hib3Igb2Ygbm9kZSBhcmUgaW4gdGhlIHNhbWUgY2x1c3RlciwgcmV1dHJuXG5cbiAgICAgICAgaWYgKG5laWdoYm9yQ2x1c3RlcklkID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyID0gY2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdO1xuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzID0gbmVpZ2hib3JDbHVzdGVyLm5vZGVzOyAvLyBpZiB0aGUgY2x1c3RlciBpcyBlbXB0eSwgcmVtb3ZlIHRoZSBjbHVzdGVyIGFuZCByZXR1cm5cblxuICAgICAgICBpZiAoIWNsdXN0ZXJOb2RlcyB8fCAhY2x1c3Rlck5vZGVzLmxlbmd0aCkgcmV0dXJuOyAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyBmcm9tIG5vZGUgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJLaWluID0gMDtcbiAgICAgICAgY2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNOb2RlKSB7XG4gICAgICAgICAgdmFyIGNOb2RlSWR4ID0gbm9kZU1hcFtjTm9kZS5pZF0uaWR4O1xuICAgICAgICAgIG5laWdoYm9yQ2x1c3RlcktpaW4gKz0gYWRqTWF0cml4W2ldW2NOb2RlSWR4XSB8fCAwO1xuICAgICAgICB9KTsgLy8gdGhlIG1vZHVyYXJpdHkgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGFkZE1vZHVyYXJpdHkgPSBuZWlnaGJvckNsdXN0ZXJLaWluIC0gbmVpZ2hib3JDbHVzdGVyLnN1bVRvdCAqIGNvbW1vblBhcmFtOyAvLyBub2RlcyBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzQWZ0ZXJBZGQgPSBjbHVzdGVyTm9kZXMuY29uY2F0KFtub2RlXSk7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0QWRkID0gW107XG4gICAgICAgIGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLmZvckVhY2goZnVuY3Rpb24gKG5vZGVBZGQsIGluZGV4KSB7XG4gICAgICAgICAgcHJvcGVydGllc1dlaWdodEFkZFtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVBZGQub3JpZ2luSW5kZXhdO1xuICAgICAgICB9KTsgLy8gdGhlIGluZXJ0aWFsTW9kdWxhcml0eSBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgYWRkSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0OyAvLyB0aGUgaW5jcmVhc2UgbW9kdXJhcml0eSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkZE1vZHVyYXJpdHkgYW5kIHJlbW92ZU1vZHVyYXJpdHlcblxuICAgICAgICB2YXIgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5IC0gcmVtb3ZlTW9kdXJhcml0eTtcblxuICAgICAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgICAgICAgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5ICsgYWRkSW5lcnRpYWxNb2R1bGFyaXR5IC0gKHJlbW92ZU1vZHVyYXJpdHkgKyByZW1vdmVJbmVydGlhbE1vZHVsYXJpdHkpO1xuICAgICAgICB9IC8vIGZpbmQgdGhlIGJlc3QgY2x1c3RlciB0byBtb3ZlIG5vZGUgaSBpbnRvXG5cblxuICAgICAgICBpZiAoaW5jcmVhc2UgPiBiZXN0SW5jcmVhc2UpIHtcbiAgICAgICAgICBiZXN0SW5jcmVhc2UgPSBpbmNyZWFzZTtcbiAgICAgICAgICBiZXN0Q2x1c3RlciA9IG5laWdoYm9yQ2x1c3RlcjtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIGlmIGZvdW5kIGEgYmVzdCBjbHVzdGVyIHRvIG1vdmUgaW50b1xuXG4gICAgICBpZiAoYmVzdEluY3JlYXNlID4gMCkge1xuICAgICAgICBiZXN0Q2x1c3Rlci5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB2YXIgcHJldmlvdXNDbHVzdGVySWRfMSA9IG5vZGUuY2x1c3RlcklkO1xuICAgICAgICBub2RlLmNsdXN0ZXJJZCA9IGJlc3RDbHVzdGVyLmlkOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpOyAvLyByZW1vdmUgZnJvbSBvcmlnaW4gY2x1c3RlclxuXG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIHVwZGF0ZSBzdW1Ub3QgZm9yIGNsdXN0ZXJzXG4gICAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgPSAwO1xuICAgICAgICB2YXIgc2VsZkNsdXN0ZXJTdW1Ub3RfMSA9IDA7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IGJlc3RDbHVzdGVyLmlkICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gYmVzdENsdXN0ZXIuaWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBiZXN0Q2x1c3Rlci5pZCAmJiBzb3VyY2VDbHVzdGVySWQgIT09IGJlc3RDbHVzdGVyLmlkKSB7XG4gICAgICAgICAgICBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBwcmV2aW91c0NsdXN0ZXJJZF8xICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gcHJldmlvdXNDbHVzdGVySWRfMSB8fCB0YXJnZXRDbHVzdGVySWQgPT09IHByZXZpb3VzQ2x1c3RlcklkXzEgJiYgc291cmNlQ2x1c3RlcklkICE9PSBwcmV2aW91c0NsdXN0ZXJJZF8xKSB7XG4gICAgICAgICAgICBzZWxmQ2x1c3RlclN1bVRvdF8xID0gc2VsZkNsdXN0ZXJTdW1Ub3RfMSArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTsgLy8gdGhlIG5vZGVzIG9mIHRoZSBjbHVzdGVycyB0byBtb3ZlIGludG8gYW5kIHJlbW92ZSBhcmUgY2hhbmdlZCwgdXBkYXRlIHRoZWlyIHN1bVRvdFxuXG4gICAgICAgIGJlc3RDbHVzdGVyLnN1bVRvdCA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgICBzZWxmQ2x1c3Rlci5zdW1Ub3QgPSBzZWxmQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgfVxuICAgIH0pO1xuICB9IC8vIGRlbGV0ZSB0aGUgZW1wdHkgY2x1c3RlcnMsIGFzc2lnbiBpbmNyZWFzaW5nIGNsdXN0ZXJJZFxuXG5cbiAgdmFyIG5ld0NsdXN0ZXJJZE1hcCA9IHt9O1xuICB2YXIgY2x1c3RlcklkeCA9IDA7XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV3SWQgPSBTdHJpbmcoY2x1c3RlcklkeCArIDEpO1xuXG4gICAgaWYgKG5ld0lkID09PSBjbHVzdGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjbHVzdGVyLmlkID0gbmV3SWQ7XG4gICAgY2x1c3Rlci5ub2RlcyA9IGNsdXN0ZXIubm9kZXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgY2x1c3RlcklkOiBuZXdJZFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBmaW5hbENsdXN0ZXJzW25ld0lkXSA9IGNsdXN0ZXI7XG4gICAgbmV3Q2x1c3RlcklkTWFwW2NsdXN0ZXJJZF0gPSBuZXdJZDtcbiAgICBkZWxldGUgZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIGNsdXN0ZXJJZHgrKztcbiAgfSk7IC8vIHJlc3RvcmUgbm9kZSBjbHVzdGVySWRcblxuICBmaW5hbE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVJbmZvKSB7XG4gICAgdmFyIG5vZGUgPSBub2RlSW5mby5ub2RlLFxuICAgICAgICBjbHVzdGVySWQgPSBub2RlSW5mby5jbHVzdGVySWQ7XG4gICAgbm9kZS5jbHVzdGVySWQgPSBjbHVzdGVySWQ7XG4gICAgaWYgKG5vZGUuY2x1c3RlcklkICYmIG5ld0NsdXN0ZXJJZE1hcFtub2RlLmNsdXN0ZXJJZF0pIG5vZGUuY2x1c3RlcklkID0gbmV3Q2x1c3RlcklkTWFwW25vZGUuY2x1c3RlcklkXTtcbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjbHVzdGVyczogY2x1c3RlcnNBcnJheSxcbiAgICBjbHVzdGVyRWRnZXM6IGNsdXN0ZXJFZGdlc1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG91dmFpbjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_union_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/union-find */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js\");\n/* harmony import */ var _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\n\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__[\"default\"](compareWeight);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _structs_union_find__WEBPACK_IMPORTED_MODULE_0__[\"default\"](nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minimumSpanningTree);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcz83MmY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ0s7QUFDUjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBYTtBQUNuQyxFQUFFLDhEQUFnQjtBQUNsQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sOERBQWdCO0FBQ3RCO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxNQUFNLDhEQUFnQjtBQUN0QjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsd0JBQXdCLDJEQUFTO0FBQ2pDO0FBQ0EsR0FBRyxHQUFHO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxrRkFBbUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVbmlvbkZpbmQgZnJvbSAnLi9zdHJ1Y3RzL3VuaW9uLWZpbmQnO1xuaW1wb3J0IE1pbkJpbmFyeUhlYXAgZnJvbSAnLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwJztcbmltcG9ydCB7IGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cblxudmFyIHByaW1NU1QgPSBmdW5jdGlvbiBwcmltTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KSB7XG4gIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xuICB9IC8vIOS7jm5vZGVzWzBd5byA5aeLXG5cblxuICB2YXIgY3Vyck5vZGUgPSBub2Rlc1swXTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZpc2l0ZWQuYWRkKGN1cnJOb2RlKTsgLy8g55So5LqM5Y+J5aCG57u05oqk6Led5bey5Yqg5YWl6IqC54K555qE5YW25LuW6IqC54K555qE6L6555qE5p2D5YC8XG5cbiAgdmFyIGNvbXBhcmVXZWlnaHQgPSBmdW5jdGlvbiBjb21wYXJlV2VpZ2h0KGEsIGIpIHtcbiAgICBpZiAod2VpZ2h0KSB7XG4gICAgICByZXR1cm4gYS53ZWlnaHQgLSBiLndlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICB2YXIgZWRnZVF1ZXVlID0gbmV3IE1pbkJpbmFyeUhlYXAoY29tcGFyZVdlaWdodCk7XG4gIGdldEVkZ2VzQnlOb2RlSWQoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgZ2V0RWRnZXNCeU5vZGVJZChzb3VyY2UsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2l0ZWQuaGFzKHRhcmdldCkpIHtcbiAgICAgIHZpc2l0ZWQuYWRkKHRhcmdldCk7XG4gICAgICBnZXRFZGdlc0J5Tm9kZUlkKHRhcmdldCwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICogS3J1c2thbCBhbGdvcml0aG3vvIzlpI3mnYLluqYgTyhFKmxvZ0UpLCBFOiDovrnnmoTmlbDph49cbiAqIHJlZmVyOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIHdlaWdodCDmjIflrprnlKjkuo7kvZzkuLrovrnmnYPph43nmoTlsZ7mgKfvvIzoi6XkuI3mjIflrprvvIzliJnorqTkuLrmiYDmnInovrnmnYPph43kuIDoh7RcbiAqIEByZXR1cm4gSUVkZ2VbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBrcnVza2FsTVNUID0gZnVuY3Rpb24ga3J1c2thbE1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDoi6XmjIflrpp3ZWlnaHTvvIzliJnlsIbmiYDmnInnmoTovrnmjInmnYPlgLzku47lsI/liLDlpKfmjpLluo9cblxuXG4gIHZhciB3ZWlnaHRFZGdlcyA9IGVkZ2VzLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlO1xuICB9KTtcblxuICBpZiAod2VpZ2h0KSB7XG4gICAgd2VpZ2h0RWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgZGlzam9pbnRTZXQgPSBuZXcgVW5pb25GaW5kKG5vZGVzLm1hcChmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlkO1xuICB9KSk7IC8vIOS7juadg+WAvOacgOWwj+eahOi+ueW8gOWni++8jOWmguaenOi/meadoei+uei/nuaOpeeahOS4pOS4quiKgueCueS6juWbvkfkuK3kuI3lnKjlkIzkuIDkuKrov57pgJrliIbph4/kuK3vvIzliJnmt7vliqDov5nmnaHovrlcbiAgLy8g55u05Yiw6YGN5Y6G5a6M5omA5pyJ54K55oiW6L65XG5cbiAgd2hpbGUgKHdlaWdodEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY3VyRWRnZSA9IHdlaWdodEVkZ2VzLnNoaWZ0KCk7XG4gICAgdmFyIHNvdXJjZSA9IGN1ckVkZ2Uuc291cmNlO1xuICAgIHZhciB0YXJnZXQgPSBjdXJFZGdlLnRhcmdldDtcblxuICAgIGlmICghZGlzam9pbnRTZXQuY29ubmVjdGVkKHNvdXJjZSwgdGFyZ2V0KSkge1xuICAgICAgc2VsZWN0ZWRFZGdlcy5wdXNoKGN1ckVkZ2UpO1xuICAgICAgZGlzam9pbnRTZXQudW5pb24oc291cmNlLCB0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCRXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBtaW5pbXVtU3Bhbm5pbmdUcmVlID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZShncmFwaERhdGEsIHdlaWdodCwgYWxnbykge1xuICB2YXIgYWxnb3MgPSB7XG4gICAgcHJpbTogcHJpbU1TVCxcbiAgICBrcnVza2FsOiBrcnVza2FsTVNUXG4gIH07XG4gIGlmICghYWxnbykgcmV0dXJuIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpO1xuICByZXR1cm4gYWxnb3NbYWxnb10oZ3JhcGhEYXRhLCB3ZWlnaHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWluaW11bVNwYW5uaW5nVHJlZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = Object(_degree__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (pageRank);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzP2Y1ZjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQThCO0FBQ1E7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsdURBQU07O0FBRXpCO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCx3QkFBd0IsMERBQVk7O0FBRXBDLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsdUVBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXROZWlnaGJvcnMgfSBmcm9tIFwiLi91dGlsXCI7XG4vKipcbiAqIFBhZ2VSYW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhZ2VSYW5rXG4gKiByZWZlcjogaHR0cHM6Ly9naXRodWIuY29tL2FudmFrYS9uZ3JhcGgucGFnZXJhbmtcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIGVwc2lsb24g5Yik5pat5piv5ZCm5pS25pWb55qE57K+5bqm5YC877yM6buY6K6kIDAuMDAwMDAxXG4gKiBAcGFyYW0gbGlua1Byb2Ig6Zi75bC857O75pWw77yIZHVtcGluZyBmYWN0b3LvvInvvIzmjIfku7vmhI/ml7bliLvvvIznlKjmiLforr/pl67liLDmn5DoioLngrnlkI7nu6fnu63orr/pl67or6XoioLngrnpk77mjqXnmoTkuIvkuIDkuKroioLngrnnmoTmpoLnjofvvIznu4/pqozlgLwgMC44NVxuICovXG5cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSBkZWdyZWUoZ3JhcGhEYXRhKTtcblxuICB3aGlsZSAobWF4SXRlcmF0aW9ucyA+IDAgJiYgZGlzdGFuY2UgPiBlcHNpbG9uKSB7XG4gICAgbGVha2VkUmFuayA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSAwO1xuXG4gICAgICBpZiAobm9kZURlZ3JlZVtub2RlLmlkXS5pbkRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMobm9kZUlkLCBlZGdlcywgJ3NvdXJjZScpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuICAgICAgICAgIHZhciBvdXREZWdyZWUgPSBub2RlRGVncmVlW25laWdoYm9yXS5vdXREZWdyZWU7XG4gICAgICAgICAgaWYgKG91dERlZ3JlZSA+IDApIGN1cnJlbnRSYW5rICs9IHByZXZSYW5rc1tuZWlnaGJvcl0gLyBvdXREZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gbGlua1Byb2IgKiBjdXJyZW50UmFuaztcbiAgICAgICAgbGVha2VkUmFuayArPSBjdXJSYW5rc1tub2RlSWRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxlYWtlZFJhbmsgPSAoMSAtIGxlYWtlZFJhbmspIC8gbm9kZXNDb3VudDtcbiAgICBkaXN0YW5jZSA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSBjdXJSYW5rc1tub2RlSWRdICsgbGVha2VkUmFuaztcbiAgICAgIGRpc3RhbmNlICs9IE1hdGguYWJzKGN1cnJlbnRSYW5rIC0gcHJldlJhbmtzW25vZGVJZF0pO1xuICAgICAgcHJldlJhbmtzW25vZGVJZF0gPSBjdXJyZW50UmFuaztcbiAgICB9XG5cbiAgICBtYXhJdGVyYXRpb25zIC09IDE7XG4gIH1cblxuICByZXR1cm4gcHJldlJhbmtzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGFnZVJhbms7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js ***! \****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MinBinaryHeap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvYmluYXJ5LWhlYXAuanM/OWZiOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw0RUFBYSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9iaW5hcnktaGVhcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZhdWx0Q29tcGFyZSA9IGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufTtcblxudmFyIE1pbkJpbmFyeUhlYXAgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNaW5CaW5hcnlIZWFwKGNvbXBhcmVGbikge1xuICAgIGlmIChjb21wYXJlRm4gPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyZUZuID0gZGVmYXVsdENvbXBhcmU7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYXJlRm4gPSBjb21wYXJlRm47XG4gICAgdGhpcy5saXN0ID0gW107XG4gIH1cblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgcmV0dXJuIDIgKiBpbmRleCArIDE7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZ2V0UmlnaHQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMjtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmZsb29yKChpbmRleCAtIDEpIC8gMik7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lmxlbmd0aCA8PSAwO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0VtcHR5KCkgPyB1bmRlZmluZWQgOiB0aGlzLmxpc3RbMF07XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZGVsTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0b3AgPSB0aGlzLnRvcCgpO1xuICAgIHZhciBib3R0b20gPSB0aGlzLmxpc3QucG9wKCk7XG5cbiAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGlzdFswXSA9IGJvdHRvbTtcbiAgICAgIHRoaXMubW92ZURvd24oMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvcDtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubGlzdC5wdXNoKHZhbHVlKTtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMubGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5tb3ZlVXAoaW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVVcCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG5cbiAgICB3aGlsZSAoaW5kZXggJiYgaW5kZXggPiAwICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtwYXJlbnRdLCB0aGlzLmxpc3RbaW5kZXhdKSA+IDApIHtcbiAgICAgIC8vIHN3YXBcbiAgICAgIHZhciB0bXAgPSB0aGlzLmxpc3RbcGFyZW50XTtcbiAgICAgIHRoaXMubGlzdFtwYXJlbnRdID0gdGhpcy5saXN0W2luZGV4XTtcbiAgICAgIHRoaXMubGlzdFtpbmRleF0gPSB0bXA7IC8vIFt0aGlzLmxpc3RbaW5kZXhdLCB0aGlzLmxpc3RbcGFyZW50XV0gPSBbdGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF1dXG5cbiAgICAgIGluZGV4ID0gcGFyZW50O1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoaW5kZXgpO1xuICAgIH1cbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5tb3ZlRG93biA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBlbGVtZW50ID0gaW5kZXg7XG4gICAgdmFyIGxlZnQgPSB0aGlzLmdldExlZnQoaW5kZXgpO1xuICAgIHZhciByaWdodCA9IHRoaXMuZ2V0UmlnaHQoaW5kZXgpO1xuICAgIHZhciBzaXplID0gdGhpcy5saXN0Lmxlbmd0aDtcblxuICAgIGlmIChsZWZ0ICE9PSBudWxsICYmIGxlZnQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2xlZnRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSBsZWZ0O1xuICAgIH0gZWxzZSBpZiAocmlnaHQgIT09IG51bGwgJiYgcmlnaHQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W3JpZ2h0XSkgPiAwKSB7XG4gICAgICBlbGVtZW50ID0gcmlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9PSBlbGVtZW50KSB7XG4gICAgICBfYSA9IFt0aGlzLmxpc3RbZWxlbWVudF0sIHRoaXMubGlzdFtpbmRleF1dLCB0aGlzLmxpc3RbaW5kZXhdID0gX2FbMF0sIHRoaXMubGlzdFtlbGVtZW50XSA9IF9hWzFdO1xuICAgICAgdGhpcy5tb3ZlRG93bihlbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIE1pbkJpbmFyeUhlYXA7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbkJpbmFyeUhlYXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js ***! \****************************************************************************************/ /*! exports provided: LinkedListNode, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkedListNode\", function() { return LinkedListNode; });\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\n\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LinkedList);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvbGlua2VkLWxpc3QuanM/ODY4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRXlCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHlFQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmF1bHRDb21wYXJhdG9yID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICog6ZO+6KGo5Lit5Y2V5Liq5YWD57Sg6IqC54K5XG4gKi9cblxuXG52YXIgTGlua2VkTGlzdE5vZGUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgbmV4dCkge1xuICAgIGlmIChuZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIG5leHQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgTGlua2VkTGlzdE5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrID8gY2FsbGJhY2sodGhpcy52YWx1ZSkgOiBcIlwiLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdE5vZGU7XG59KCk7XG5cbmV4cG9ydCB7IExpbmtlZExpc3ROb2RlIH07XG5cbnZhciBMaW5rZWRMaXN0ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGlua2VkTGlzdChjb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IgPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyYXRvciA9IGRlZmF1bHRDb21wYXJhdG9yO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmNvbXBhcmUgPSBjb21wYXJhdG9yO1xuICB9XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajlpLTpg6hcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIOWcqOWktOmDqOa3u+WKoOS4gOS4quiKgueCuVxuICAgIHZhciBuZXdOb2RlID0gbmV3IExpbmtlZExpc3ROb2RlKHZhbHVlLCB0aGlzLmhlYWQpO1xuICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG5cbiAgICBpZiAoIXRoaXMudGFpbCkge1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumuWFg+e0oOa3u+WKoOWIsOmTvuihqOS4rVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSk7IC8vIOWmguaenOS4jeWtmOWcqOWktOiKgueCue+8jOWImeWwhuWIm+W7uueahOaWsOiKgueCueS9nOS4uuWktOiKgueCuVxuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG4gICAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSAvLyDlsIbmlrDoioLngrnpmYTliqDliLDpk77ooajmnKvlsL5cblxuXG4gICAgdGhpcy50YWlsLm5leHQgPSBuZXdOb2RlO1xuICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlIOimgeWIoOmZpOeahOWFg+e0oFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlTm9kZSA9IG51bGw7IC8vIOWmguaenOWIoOmZpOeahOaYr+WktOmDqOWFg+e0oO+8jOWImeWwhm5leHTkvZzkuLrlpLTlhYPntKBcblxuICAgIHdoaWxlICh0aGlzLmhlYWQgJiYgdGhpcy5jb21wYXJlKHRoaXMuaGVhZC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICBkZWxldGVOb2RlID0gdGhpcy5oZWFkO1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKGN1cnJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAvLyDlpoLmnpzliKDpmaTkuoboioLngrnku6XlkI7vvIzlsIZuZXh06IqC54K55YmN56e7XG4gICAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgICBpZiAodGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLm5leHQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgIGRlbGV0ZU5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBjdXJyZW50Tm9kZS5uZXh0Lm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyDmo4Dmn6XlsL7pg6joioLngrnmmK/lkKbooqvliKDpmaRcblxuXG4gICAgaWYgKHRoaXMuY29tcGFyZSh0aGlzLnRhaWwudmFsdWUsIHZhbHVlKSkge1xuICAgICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZU5vZGU7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7mjIflrprnmoTlhYPntKBcbiAgICogQHBhcmFtIHBhcmFtMFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgX2IgPSBfYS52YWx1ZSxcbiAgICAgICAgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2IsXG4gICAgICAgIF9jID0gX2EuY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrID0gX2MgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9jO1xuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5aaC5p6c5oyH5a6a5LqGIGNhbGxiYWNr77yM5YiZ5oyJ5oyH5a6a55qEIGNhbGxiYWNrIOafpeaJvlxuICAgICAgaWYgKGNhbGxiYWNrICYmIGNhbGxiYWNrKGN1cnJlbnROb2RlLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9IC8vIOWmguaenOaMh+WumuS6hiB2YWx1Ze+8jOWImeaMiSB2YWx1ZSDmn6Xmib5cblxuXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhcmUoY3VycmVudE5vZGUudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWwvumDqOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZVRhaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRlbGV0ZWRUYWlsID0gdGhpcy50YWlsO1xuXG4gICAgaWYgKHRoaXMuaGVhZCA9PT0gdGhpcy50YWlsKSB7XG4gICAgICAvLyDpk77ooajkuK3lj6rmnInkuIDkuKrlhYPntKBcbiAgICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZS5uZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnROb2RlLm5leHQubmV4dCkge1xuICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRhaWwgPSBjdXJyZW50Tm9kZTtcbiAgICByZXR1cm4gZGVsZXRlZFRhaWw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlpLTpg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVIZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlZEhlYWQgPSB0aGlzLmhlYWQ7XG5cbiAgICBpZiAodGhpcy5oZWFkLm5leHQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZEhlYWQ7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbkuIDnu4TlhYPntKDovazmiJDpk77ooajkuK3nmoToioLngrlcbiAgICogQHBhcmFtIHZhbHVlcyDpk77ooajkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5mcm9tQXJyYXkgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIF90aGlzLmFwcGVuZCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbpk77ooajkuK3nmoToioLngrnovazmiJDmlbDnu4TlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgbm9kZXMucHVzaChjdXJyZW50Tm9kZSk7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xuICAvKipcbiAgICog5Y+N6L2s6ZO+6KGo5Lit55qE5YWD57Sg6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHByZXZOb2RlID0gbnVsbDtcbiAgICB2YXIgbmV4dE5vZGUgPSBudWxsO1xuXG4gICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7XG4gICAgICAvLyDlrZjlgqjkuIvkuIDkuKrlhYPntKDoioLngrlcbiAgICAgIG5leHROb2RlID0gY3VycmVudE5vZGUubmV4dDsgLy8g5pu05pS55b2T5YmN6IqC54K555qE5LiL5LiA5Liq6IqC54K577yM5Lul5L6/5bCG5a6D6L+e5o6l5Yiw5LiK5LiA5Liq6IqC54K55LiKXG5cbiAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBwcmV2Tm9kZTsgLy8g5bCGIHByZXZOb2RlIOWSjCBjdXJyZW50Tm9kZSDlkJHliY3np7vliqjkuIDmraVcblxuICAgICAgcHJldk5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgIGN1cnJlbnROb2RlID0gbmV4dE5vZGU7XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gdGhpcy5oZWFkO1xuICAgIHRoaXMuaGVhZCA9IHByZXZOb2RlO1xuICB9O1xuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgICB9KS50b1N0cmluZygpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0O1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rZWRMaXN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Queue);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvcXVldWUuanM/OTM3MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBVTtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMaW5rZWRMaXN0IGZyb20gJy4vbGlua2VkLWxpc3QnO1xuXG52YXIgUXVldWUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBRdWV1ZSgpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICB9XG4gIC8qKlxuICAgKiDpmJ/liJfmmK/lkKbkuLrnqbpcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMubGlua2VkTGlzdC5oZWFkO1xuICB9O1xuICAvKipcbiAgICog6K+75Y+W6Zif5YiX5aS06YOo55qE5YWD57Sg77yMIOS4jeWIoOmZpOmYn+WIl+S4reeahOWFg+e0oFxuICAgKi9cblxuXG4gIFF1ZXVlLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5saW5rZWRMaXN0LmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxpbmtlZExpc3QuaGVhZC52YWx1ZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWcqOmYn+WIl+eahOWwvumDqOaWsOWinuS4gOS4quWFg+e0oFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRoaXMubGlua2VkTGlzdC5hcHBlbmQodmFsdWUpO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk6Zif5YiX5Lit55qE5aS06YOo5YWD57Sg77yM5aaC5p6c6Zif5YiX5Li656m677yM5YiZ6L+U5ZueIG51bGxcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZGVxdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVtb3ZlSGVhZCA9IHRoaXMubGlua2VkTGlzdC5kZWxldGVIZWFkKCk7XG4gICAgcmV0dXJuIHJlbW92ZUhlYWQgPyByZW1vdmVIZWFkLnZhbHVlIDogbnVsbDtcbiAgfTtcblxuICBRdWV1ZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgfTtcblxuICByZXR1cm4gUXVldWU7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFF1ZXVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Stack =\n/** @class */\nfunction () {\n function Stack(maxStep) {\n if (maxStep === void 0) {\n maxStep = 10;\n }\n\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.maxStep = maxStep;\n }\n\n Object.defineProperty(Stack.prototype, \"length\", {\n get: function get() {\n return this.linkedList.toArray().length;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * 判断栈是否为空,如果链表中没有头部元素,则栈为空\n */\n\n Stack.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 是否到定义的栈的最大长度,如果达到最大长度后,不再允许入栈\n */\n\n\n Stack.prototype.isMaxStack = function () {\n return this.toArray().length >= this.maxStep;\n };\n /**\n * 访问顶端元素\n */\n\n\n Stack.prototype.peek = function () {\n if (this.isEmpty()) {\n return null;\n } // 返回头部元素,不删除元素\n\n\n return this.linkedList.head.value;\n };\n\n Stack.prototype.push = function (value) {\n this.linkedList.prepend(value);\n\n if (this.length > this.maxStep) {\n this.linkedList.deleteTail();\n }\n };\n\n Stack.prototype.pop = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Stack.prototype.toArray = function () {\n return this.linkedList.toArray().map(function (node) {\n return node.value;\n });\n };\n\n Stack.prototype.clear = function () {\n while (!this.isEmpty()) {\n this.pop();\n }\n };\n\n return Stack;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Stack);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanM/MjAxNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsb0RBQVU7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlua2VkTGlzdCBmcm9tICcuL2xpbmtlZC1saXN0JztcblxudmFyIFN0YWNrID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3RhY2sobWF4U3RlcCkge1xuICAgIGlmIChtYXhTdGVwID09PSB2b2lkIDApIHtcbiAgICAgIG1heFN0ZXAgPSAxMDtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgIHRoaXMubWF4U3RlcCA9IG1heFN0ZXA7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RhY2sucHJvdG90eXBlLCBcImxlbmd0aFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvQXJyYXkoKS5sZW5ndGg7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIC8qKlxuICAgKiDliKTmlq3moIjmmK/lkKbkuLrnqbrvvIzlpoLmnpzpk77ooajkuK3msqHmnInlpLTpg6jlhYPntKDvvIzliJnmoIjkuLrnqbpcbiAgICovXG5cbiAgU3RhY2sucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuWIsOWumuS5ieeahOagiOeahOacgOWkp+mVv+W6pu+8jOWmguaenOi+vuWIsOacgOWkp+mVv+W6puWQju+8jOS4jeWGjeWFgeiuuOWFpeagiFxuICAgKi9cblxuXG4gIFN0YWNrLnByb3RvdHlwZS5pc01heFN0YWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGggPj0gdGhpcy5tYXhTdGVwO1xuICB9O1xuICAvKipcbiAgICog6K6/6Zeu6aG256uv5YWD57SgXG4gICAqL1xuXG5cbiAgU3RhY2sucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIOi/lOWbnuWktOmDqOWFg+e0oO+8jOS4jeWIoOmZpOWFg+e0oFxuXG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QucHJlcGVuZCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiB0aGlzLm1heFN0ZXApIHtcbiAgICAgIHRoaXMubGlua2VkTGlzdC5kZWxldGVUYWlsKCk7XG4gICAgfVxuICB9O1xuXG4gIFN0YWNrLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgd2hpbGUgKCF0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN0YWNrO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBTdGFjazsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (UnionFind);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvdW5pb24tZmluZC5qcz82ZTQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxxQkFBcUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL3VuaW9uLWZpbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOW5tuafpembhiBEaXNqb2ludCBzZXQgdG8gc3VwcG9ydCBxdWljayB1bmlvblxuICovXG52YXIgVW5pb25GaW5kID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVW5pb25GaW5kKGl0ZW1zKSB7XG4gICAgdGhpcy5jb3VudCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLnBhcmVudCA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2kgPSAwLCBpdGVtc18xID0gaXRlbXM7IF9pIDwgaXRlbXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpID0gaXRlbXNfMVtfaV07XG4gICAgICB0aGlzLnBhcmVudFtpXSA9IGk7XG4gICAgfVxuICB9IC8vIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIGl0ZW1cblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgd2hpbGUgKHRoaXMucGFyZW50W2l0ZW1dICE9PSBpdGVtKSB7XG4gICAgICBpdGVtID0gdGhpcy5wYXJlbnRbaXRlbV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS51bmlvbiA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIHJvb3RBID0gdGhpcy5maW5kKGEpO1xuICAgIHZhciByb290QiA9IHRoaXMuZmluZChiKTtcbiAgICBpZiAocm9vdEEgPT09IHJvb3RCKSByZXR1cm47IC8vIG1ha2UgdGhlIGVsZW1lbnQgd2l0aCBzbWFsbGVyIHJvb3QgdGhlIHBhcmVudFxuXG4gICAgaWYgKHJvb3RBIDwgcm9vdEIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFtiXSAhPT0gYikgdGhpcy51bmlvbih0aGlzLnBhcmVudFtiXSwgYSk7XG4gICAgICB0aGlzLnBhcmVudFtiXSA9IHRoaXMucGFyZW50W2FdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wYXJlbnRbYV0gIT09IGEpIHRoaXMudW5pb24odGhpcy5wYXJlbnRbYV0sIGIpO1xuICAgICAgdGhpcy5wYXJlbnRbYV0gPSB0aGlzLnBhcmVudFtiXTtcbiAgICB9XG4gIH07IC8vIHdoZXRoZXIgYSBhbmQgYiBhcmUgY29ubmVjdGVkLCBpLmUuIGEgYW5kIGIgaGF2ZSB0aGUgc2FtZSByb290XG5cblxuICBVbmlvbkZpbmQucHJvdG90eXBlLmNvbm5lY3RlZCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChhKSA9PT0gdGhpcy5maW5kKGIpO1xuICB9O1xuXG4gIHJldHVybiBVbmlvbkZpbmQ7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFVuaW9uRmluZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js ***! \*************************************************************************/ /*! exports provided: getNeighbors, getOutEdgesNodeId, getEdgesByNodeId, uniqueId */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return getNeighbors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutEdgesNodeId\", function() { return getOutEdgesNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdgesByNodeId\", function() { return getEdgesByNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3V0aWwuanM/YzdlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cbmV4cG9ydCB2YXIgZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JzKG5vZGVJZCwgZWRnZXMsIHR5cGUpIHtcbiAgaWYgKGVkZ2VzID09PSB2b2lkIDApIHtcbiAgICBlZGdlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRFZGdlcyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkIHx8IGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gIH0pO1xuXG4gIGlmICh0eXBlID09PSAndGFyZ2V0Jykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8xID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8xKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzEpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0O1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgLy8g5b2T5YmN6IqC54K55Li6IHRhcmdldO+8jOWug+aJgOaMh+WQkeeahOa6kOiKgueCuVxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzIoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJyZW50RWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMikubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2U7XG4gICAgfSk7XG4gIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlciA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXIoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkID8gZWRnZS50YXJnZXQgOiBlZGdlLnNvdXJjZTtcbiAgfTtcblxuICByZXR1cm4gY3VycmVudEVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbn07XG4vKipcbiAqIOiOt+WPluaMh+WumuiKgueCueeahOWHuui+uVxuICogQHBhcmFtIG5vZGVJZCDoioLngrkgSURcbiAqIEBwYXJhbSBlZGdlcyDlm77kuK3nmoTmiYDmnInovrnmlbDmja5cbiAqL1xuXG5leHBvcnQgdmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cbmV4cG9ydCB2YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQoaW5kZXgpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cblxuICB2YXIgcmFuZG9tMSA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICB2YXIgcmFuZG9tMiA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICByZXR1cm4gXCJcIi5jb25jYXQoaW5kZXgsIFwiLVwiKS5jb25jYXQocmFuZG9tMSkuY29uY2F0KHJhbmRvbTIpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/**\n * 向量运算\n */\n\n\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] + otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] - otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] / length;\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = -this.arr[key];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var key in this.arr) {\n res += Math.pow(this.arr[key] - otherVector.arr[key], 2);\n }\n\n return res;\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var key in this.arr) {\n res[key] = (this.arr[key] - min) / (max - min);\n }\n\n return new Vector(res);\n };\n\n return Vector;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL3ZlY3Rvci5qcz9lNDk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFLO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMscUVBQU0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL3ZlY3Rvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5ZCR6YeP6L+Q566XXG4gKi9cbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5cbnZhciBWZWN0b3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBWZWN0b3IoYXJyKSB7XG4gICAgdGhpcy5hcnIgPSBhcnI7XG4gIH1cblxuICBWZWN0b3IucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3Iob3RoZXJBcnIpO1xuICAgIH1cblxuICAgIGlmICghKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLmFycik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmFycikge1xuICAgICAgICByZXNba2V5XSA9IHRoaXMuYXJyW2tleV0gKyBvdGhlckFycltrZXldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihyZXMpO1xuICAgIH1cbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihvdGhlckFycik7XG4gICAgfVxuXG4gICAgaWYgKCEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMuYXJyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1trZXldID0gdGhpcy5hcnJba2V5XSAtIG90aGVyQXJyW2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuYXZnID0gZnVuY3Rpb24gKGxlbmd0aCkge1xuICAgIHZhciByZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmFycikge1xuICAgICAgcmVzW2tleV0gPSB0aGlzLmFycltrZXldIC8gbGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXNba2V5XSA9IC10aGlzLmFycltrZXldO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07IC8vIOW5s+aWueasp+W8j+i3neemu1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAhKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSAwO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzICs9IE1hdGgucG93KHRoaXMuYXJyW2tleV0gLSBvdGhlclZlY3Rvci5hcnJba2V5XSwgMik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICB9OyAvLyDlvZLkuIDljJblpITnkIZcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgY2xvbmVBcnIgPSBjbG9uZSh0aGlzLmFycik7XG4gICAgY2xvbmVBcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIHZhciBtYXggPSBjbG9uZUFycltjbG9uZUFyci5sZW5ndGggLSAxXTtcbiAgICB2YXIgbWluID0gY2xvbmVBcnJbMF07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1trZXldID0gKHRoaXMuYXJyW2tleV0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTtcblxuICByZXR1cm4gVmVjdG9yO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBWZWN0b3I7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js ***! \*************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\nvar _default = adjMatrix;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9hZGphY2VudC1tYXRyaXguanM/YTNlYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvYWRqYWNlbnQtbWF0cml4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBhZGpNYXRyaXggPSBmdW5jdGlvbiBhZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBlZGdlcyA9IGdyYXBoRGF0YS5lZGdlcztcbiAgdmFyIG1hdHJpeCA9IFtdOyAvLyBtYXAgbm9kZSB3aXRoIGluZGV4IGluIGRhdGEubm9kZXNcblxuICB2YXIgbm9kZU1hcCA9IHt9O1xuXG4gIGlmICghbm9kZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIG5vZGVzIGRhdGEhXCIpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBpZiAoIXNJbmRleCAmJiBzSW5kZXggIT09IDAgfHwgIXRJbmRleCAmJiB0SW5kZXggIT09IDApIHJldHVybjtcbiAgICAgIG1hdHJpeFtzSW5kZXhdW3RJbmRleF0gPSAxO1xuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIG1hdHJpeFt0SW5kZXhdW3NJbmRleF0gPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1hdHJpeDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGFkak1hdHJpeDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDIAsync\", {\n enumerable: true,\n get: function get() {\n return _index.GADDIAsync;\n }\n});\nObject.defineProperty(exports, \"connectedComponentAsync\", {\n enumerable: true,\n get: function get() {\n return _index.connectedComponentAsync;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"detectAllCyclesAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllCyclesAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllDirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllDirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllUndirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllUndirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectCycleAsync;\n }\n});\nexports.detectDirectedCycleAsync = void 0;\nObject.defineProperty(exports, \"dijkstraAsync\", {\n enumerable: true,\n get: function get() {\n return _index.dijkstraAsync;\n }\n});\nObject.defineProperty(exports, \"findAllPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findAllPathAsync;\n }\n});\nObject.defineProperty(exports, \"findShortestPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findShortestPathAsync;\n }\n});\nObject.defineProperty(exports, \"floydWarshallAsync\", {\n enumerable: true,\n get: function get() {\n return _index.floydWarshallAsync;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrixAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getAdjMatrixAsync;\n }\n});\nObject.defineProperty(exports, \"getDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getInDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getInDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getNeighborsAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getNeighborsAsync;\n }\n});\nObject.defineProperty(exports, \"getOutDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getOutDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"labelPropagationAsync\", {\n enumerable: true,\n get: function get() {\n return _index.labelPropagationAsync;\n }\n});\nObject.defineProperty(exports, \"louvainAsync\", {\n enumerable: true,\n get: function get() {\n return _index.louvainAsync;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.minimumSpanningTreeAsync;\n }\n});\nObject.defineProperty(exports, \"pageRankAsync\", {\n enumerable: true,\n get: function get() {\n return _index.pageRankAsync;\n }\n});\n\nvar _index = __webpack_require__(/*! ./workers/index */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js\");\n\nvar detectDirectedCycleAsync = _index.detectCycleAsync;\nexports.detectDirectedCycleAsync = detectDirectedCycleAsync;\nvar _default = {\n getAdjMatrixAsync: _index.getAdjMatrixAsync,\n connectedComponentAsync: _index.connectedComponentAsync,\n getDegreeAsync: _index.getDegreeAsync,\n getInDegreeAsync: _index.getInDegreeAsync,\n getOutDegreeAsync: _index.getOutDegreeAsync,\n detectCycleAsync: _index.detectCycleAsync,\n detectDirectedCycleAsync: detectDirectedCycleAsync,\n detectAllCyclesAsync: _index.detectAllCyclesAsync,\n detectAllDirectedCycleAsync: _index.detectAllDirectedCycleAsync,\n detectAllUndirectedCycleAsync: _index.detectAllUndirectedCycleAsync,\n dijkstraAsync: _index.dijkstraAsync,\n findAllPathAsync: _index.findAllPathAsync,\n findShortestPathAsync: _index.findShortestPathAsync,\n floydWarshallAsync: _index.floydWarshallAsync,\n labelPropagationAsync: _index.labelPropagationAsync,\n louvainAsync: _index.louvainAsync,\n minimumSpanningTreeAsync: _index.minimumSpanningTreeAsync,\n pageRankAsync: _index.pageRankAsync,\n getNeighborsAsync: _index.getNeighborsAsync,\n GADDIAsync: _index.GADDIAsync\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzPzM0NTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsYUFBYSxtQkFBTyxDQUFDLG9HQUFpQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJHQURESUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5HQURESUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbm5lY3RlZENvbXBvbmVudEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYztcbiAgfVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZXRlY3RBbGxDeWNsZXNBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZGV0ZWN0QWxsQ3ljbGVzQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuZXhwb3J0cy5kZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmMgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkaWprc3RyYUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kaWprc3RyYUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmZpbmRBbGxQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmluZFNob3J0ZXN0UGF0aEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5maW5kU2hvcnRlc3RQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmxveWRXYXJzaGFsbEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5mbG95ZFdhcnNoYWxsQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0QWRqTWF0cml4QXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmdldEFkak1hdHJpeEFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldERlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXREZWdyZWVBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXRJbkRlZ3JlZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc0FzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXROZWlnaGJvcnNBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRPdXREZWdyZWVBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibGFiZWxQcm9wYWdhdGlvbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibG91dmFpbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sb3V2YWluQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5taW5pbXVtU3Bhbm5pbmdUcmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXgucGFnZVJhbmtBc3luYztcbiAgfVxufSk7XG5cbnZhciBfaW5kZXggPSByZXF1aXJlKFwiLi93b3JrZXJzL2luZGV4XCIpO1xuXG52YXIgZGV0ZWN0RGlyZWN0ZWRDeWNsZUFzeW5jID0gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG5leHBvcnRzLmRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYztcbnZhciBfZGVmYXVsdCA9IHtcbiAgZ2V0QWRqTWF0cml4QXN5bmM6IF9pbmRleC5nZXRBZGpNYXRyaXhBc3luYyxcbiAgY29ubmVjdGVkQ29tcG9uZW50QXN5bmM6IF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYyxcbiAgZ2V0RGVncmVlQXN5bmM6IF9pbmRleC5nZXREZWdyZWVBc3luYyxcbiAgZ2V0SW5EZWdyZWVBc3luYzogX2luZGV4LmdldEluRGVncmVlQXN5bmMsXG4gIGdldE91dERlZ3JlZUFzeW5jOiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmMsXG4gIGRldGVjdEN5Y2xlQXN5bmM6IF9pbmRleC5kZXRlY3RDeWNsZUFzeW5jLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmM6IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyxcbiAgZGV0ZWN0QWxsQ3ljbGVzQXN5bmM6IF9pbmRleC5kZXRlY3RBbGxDeWNsZXNBc3luYyxcbiAgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jOiBfaW5kZXguZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYzogX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkaWprc3RyYUFzeW5jOiBfaW5kZXguZGlqa3N0cmFBc3luYyxcbiAgZmluZEFsbFBhdGhBc3luYzogX2luZGV4LmZpbmRBbGxQYXRoQXN5bmMsXG4gIGZpbmRTaG9ydGVzdFBhdGhBc3luYzogX2luZGV4LmZpbmRTaG9ydGVzdFBhdGhBc3luYyxcbiAgZmxveWRXYXJzaGFsbEFzeW5jOiBfaW5kZXguZmxveWRXYXJzaGFsbEFzeW5jLFxuICBsYWJlbFByb3BhZ2F0aW9uQXN5bmM6IF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmMsXG4gIGxvdXZhaW5Bc3luYzogX2luZGV4LmxvdXZhaW5Bc3luYyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jOiBfaW5kZXgubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jLFxuICBwYWdlUmFua0FzeW5jOiBfaW5kZXgucGFnZVJhbmtBc3luYyxcbiAgZ2V0TmVpZ2hib3JzQXN5bmM6IF9pbmRleC5nZXROZWlnaGJvcnNBc3luYyxcbiAgR0FERElBc3luYzogX2luZGV4LkdBRERJQXN5bmNcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _queue = _interopRequireDefault(__webpack_require__(/*! ./structs/queue */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _queue.default();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n (0, _util.getNeighbors)(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\nvar _default = breadthFirstSearch;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9iZnMuanM/MDY2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLG9DQUFvQyxtQkFBTyxDQUFDLG9HQUFpQjs7QUFFN0QsWUFBWSxtQkFBTyxDQUFDLGtGQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvYmZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcXVldWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N0cnVjdHMvcXVldWVcIikpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuZnVuY3Rpb24gaW5pdENhbGxiYWNrcyhjYWxsYmFja3MpIHtcbiAgaWYgKGNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgY2FsbGJhY2tzID0ge307XG4gIH1cblxuICB2YXIgaW5pdGlhdGVkQ2FsbGJhY2sgPSBjYWxsYmFja3M7XG5cbiAgdmFyIHN0dWJDYWxsYmFjayA9IGZ1bmN0aW9uIHN0dWJDYWxsYmFjaygpIHt9O1xuXG4gIHZhciBhbGxvd1RyYXZlcnNhbENhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIG5leHQgPSBfYS5uZXh0O1xuICAgICAgdmFyIGlkID0gbmV4dDtcblxuICAgICAgaWYgKCFzZWVuW2lkXSkge1xuICAgICAgICBzZWVuW2lkXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfSgpO1xuXG4gIGluaXRpYXRlZENhbGxiYWNrLmFsbG93VHJhdmVyc2FsID0gY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsIHx8IGFsbG93VHJhdmVyc2FsQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmVudGVyID0gY2FsbGJhY2tzLmVudGVyIHx8IHN0dWJDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2subGVhdmUgPSBjYWxsYmFja3MubGVhdmUgfHwgc3R1YkNhbGxiYWNrO1xuICByZXR1cm4gaW5pdGlhdGVkQ2FsbGJhY2s7XG59XG4vKipcbiAqIOW5v+W6puS8mOWFiOmBjeWOhuWbvlxuICogQHBhcmFtIGdyYXBoIEdyYXBoIOWbvuWunuS+i1xuICogQHBhcmFtIHN0YXJ0Tm9kZSDlvIDlp4vpgY3ljobnmoToioLngrlcbiAqIEBwYXJhbSBvcmlnaW5hbENhbGxiYWNrcyDlm57osINcbiAqL1xuXG5cbnZhciBicmVhZHRoRmlyc3RTZWFyY2ggPSBmdW5jdGlvbiBicmVhZHRoRmlyc3RTZWFyY2goZ3JhcGhEYXRhLCBzdGFydE5vZGVJZCwgb3JpZ2luYWxDYWxsYmFja3MsIGRpcmVjdGVkKSB7XG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbGxiYWNrcyA9IGluaXRDYWxsYmFja3Mob3JpZ2luYWxDYWxsYmFja3MpO1xuICB2YXIgbm9kZVF1ZXVlID0gbmV3IF9xdWV1ZS5kZWZhdWx0KCk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7IC8vIOWIneWni+WMlumYn+WIl+WFg+e0oFxuXG4gIG5vZGVRdWV1ZS5lbnF1ZXVlKHN0YXJ0Tm9kZUlkKTtcbiAgdmFyIHByZXZpb3VzTm9kZSA9ICcnO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSBub2RlUXVldWUuZGVxdWV1ZSgpO1xuICAgIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgICBjdXJyZW50OiBjdXJyZW50Tm9kZSxcbiAgICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgICB9KTsgLy8g5bCG5omA5pyJ6YK75bGF5re75Yqg5Yiw6Zif5YiX5Lit5Lul5L6/6YGN5Y6GXG5cbiAgICAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxudmFyIF9kZWZhdWx0ID0gYnJlYWR0aEZpcnN0U2VhcmNoO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getConnectedComponents;\nexports.detectStrongConnectComponents = exports.detectConnectedComponents = void 0;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = (0, _util.getNeighbors)(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\n\nexports.detectConnectedComponents = detectConnectedComponents;\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = (0, _util.getNeighbors)(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\n\nexports.detectStrongConnectComponents = detectStrongConnectComponents;\n\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9jb25uZWN0ZWQtY29tcG9uZW50LmpzPzMyMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxrRkFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLHFCQUFxQjtBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cztcbmV4cG9ydHMuZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMgPSBleHBvcnRzLmRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xudmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGUuaWQsIGVkZ2VzKTtcblxuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghdmlzaXRlZFtuZWlnaGJvcl0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5pZCA9PT0gbmVpZ2hib3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIF9sb29wXzEoaSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuXG4gICAgaWYgKCF2aXNpdGVkW25vZGUuaWRdKSB7XG4gICAgICAvLyDlr7nkuo7ml6DlkJHlm77ov5vooYxkZnPpgY3ljobvvIzmr4/kuIDmrKHosIPnlKjlkI7pg73lvpfliLDkuIDkuKrov57pgJrliIbph49cbiAgICAgIGdldENvbXBvbmVudChub2RlKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSBbXTtcblxuICAgICAgd2hpbGUgKG5vZGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbXBvbmVudC5wdXNoKG5vZGVTdGFjay5wb3AoKSk7XG4gICAgICB9XG5cbiAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbi8qKlxuICogVGFyamFuJ3MgQWxnb3JpdGhtIOWkjeadguW6piAgTyh8VnwrfEV8KVxuICogRm9yIGRpcmVjdGVkIGdyYXBoIG9ubHlcbiAqIGEgZGlyZWN0ZWQgZ3JhcGggaXMgc2FpZCB0byBiZSBzdHJvbmdseSBjb25uZWN0ZWQgaWYgXCJldmVyeSB2ZXJ0ZXggaXMgcmVhY2hhYmxlIGZyb20gZXZlcnkgb3RoZXIgdmVydGV4XCIuXG4gKiByZWZlcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYXJqYW4lMjdzX3N0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcmV0dXJuIGEgbGlzdCBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1xuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzID0gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cztcblxudmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykobm9kZS5pZCwgZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBub2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIHRhcmdldE5vZGVJRCA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgaWYgKCFpbmRpY2VzW3RhcmdldE5vZGVJRF0gJiYgaW5kaWNlc1t0YXJnZXROb2RlSURdICE9PSAwKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IHRhcmdldE5vZGVJRDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRhcmdldE5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGdldENvbXBvbmVudCh0YXJnZXROb2RlWzBdKTtcbiAgICAgICAgfSAvLyB0cmVlIGVkZ2VcblxuXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBsb3dMaW5rW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfSBlbHNlIGlmIChpblN0YWNrW3RhcmdldE5vZGVJRF0pIHtcbiAgICAgICAgLy8gYmFjayBlZGdlLCB0YXJnZXQgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBTQ0NcbiAgICAgICAgbG93TGlua1tub2RlLmlkXSA9IE1hdGgubWluKGxvd0xpbmtbbm9kZS5pZF0sIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH0gLy8gSWYgbm9kZSBpcyBhIHJvb3Qgbm9kZSwgZ2VuZXJhdGUgYW4gU0NDXG5cblxuICAgIGlmIChsb3dMaW5rW25vZGUuaWRdID09PSBpbmRpY2VzW25vZGUuaWRdKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdG1wTm9kZSA9IG5vZGVTdGFjay5wb3AoKTtcbiAgICAgICAgaW5TdGFja1t0bXBOb2RlLmlkXSA9IGZhbHNlO1xuICAgICAgICBjb21wb25lbnQucHVzaCh0bXBOb2RlKTtcbiAgICAgICAgaWYgKHRtcE5vZGUgPT09IG5vZGUpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWxsQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIF9pID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfaSA8IG5vZGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc18xW19pXTtcblxuICAgIGlmICghaW5kaWNlc1tub2RlLmlkXSAmJiBpbmRpY2VzW25vZGUuaWRdICE9PSAwKSB7XG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbENvbXBvbmVudHM7XG59O1xuXG5leHBvcnRzLmRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js ***! \************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.secondReg = exports.dateReg = void 0;\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nexports.secondReg = secondReg;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\nexports.dateReg = dateReg;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9jb25zdGFudHMvdGltZS5qcz84NzdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxzQkFBc0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJO0FBQ3BEO0FBQ0Esb0JBQW9CLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSTtBQUNoRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL2NvbnN0YW50cy90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnNlY29uZFJlZyA9IGV4cG9ydHMuZGF0ZVJlZyA9IHZvaWQgMDtcbnZhciBzZWNvbmRSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkkLztcbmV4cG9ydHMuc2Vjb25kUmVnID0gc2Vjb25kUmVnO1xudmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLztcbmV4cG9ydHMuZGF0ZVJlZyA9IGRhdGVSZWc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOutDegree = exports.getInDegree = exports.default = void 0;\n\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\nvar _default = degree;\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexports.default = _default;\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegree = getInDegree;\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};\n\nexports.getOutDegree = getOutDegree;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZWdyZWUuanM/MWY4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvZGVncmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldE91dERlZ3JlZSA9IGV4cG9ydHMuZ2V0SW5EZWdyZWUgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG52YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZSA9IGdldEluRGVncmVlO1xuXG52YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcblxuZXhwb3J0cy5nZXRPdXREZWdyZWUgPSBnZXRPdXREZWdyZWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.detectAllUndirectedCycle = exports.detectAllDirectedCycle = exports.detectAllCycles = exports.default = void 0;\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ./dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js\"));\n\nvar _connectedComponent = _interopRequireWildcard(__webpack_require__(/*! ./connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n (0, _dfs.default)(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = (0, _connectedComponent.default)(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = (0, _util.getNeighbors)(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\n\nexports.detectAllUndirectedCycle = detectAllUndirectedCycle;\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = (0, _util.getNeighbors)(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = (0, _connectedComponent.detectStrongConnectComponents)({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\n\nexports.detectAllDirectedCycle = detectAllDirectedCycle;\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n\nexports.detectAllCycles = detectAllCycles;\nvar _default = detectDirectedCycle;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanM/MDA1OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYix1QkFBdUIsMkJBQTJCLDJFQUEyRSxrQ0FBa0MsbUJBQW1CLEdBQUcsRUFBRSxPQUFPLGtDQUFrQyw4SEFBOEgsR0FBRyxFQUFFLHFCQUFxQjs7QUFFeFg7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxrQ0FBa0MsbUJBQU8sQ0FBQyxnRkFBTzs7QUFFakQsa0RBQWtELG1CQUFPLENBQUMsZ0hBQXVCOztBQUVqRixZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLGdEQUFnRCxnREFBZ0QsdUNBQXVDLHNDQUFzQyxvRkFBb0YsMkRBQTJELEVBQUUsZUFBZTs7QUFFN1Usb0RBQW9ELDZDQUE2QyxZQUFZLEVBQUUsOEVBQThFLFNBQVMsZ0JBQWdCLEVBQUUsbURBQW1ELCtCQUErQix1QkFBdUIsRUFBRSxpQkFBaUIsc0ZBQXNGLHVCQUF1QiwyRUFBMkUscUZBQXFGLHNDQUFzQywwQ0FBMEMsRUFBRSxPQUFPLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxzQkFBc0IsYUFBYSx3QkFBd0IsRUFBRSxlQUFlOztBQUVweUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qix3QkFBd0I7O0FBRXhCLHVCQUF1Qjs7QUFFdkIsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0U7O0FBRXRFLDZDQUE2QywwQkFBMEI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQix1QkFBdUIsOEJBQThCOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBOztBQUVBLCtCQUErQiwwQkFBMEI7QUFDekQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUUsZ0JBQWdCO0FBQ3pCLDhCQUE4Qjs7QUFFOUI7QUFDQSxpQ0FBaUM7QUFDakMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Rmc1wiKSk7XG5cbnZhciBfY29ubmVjdGVkQ29tcG9uZW50ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vY29ubmVjdGVkLWNvbXBvbmVudFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRldGVjdERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3REaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSkge1xuICB2YXIgY3ljbGUgPSBudWxsO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hO1xuICB2YXIgZGZzUGFyZW50TWFwID0ge307IC8vIOaJgOacieayoeacieiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB1bnZpc2l0ZWRTZXQgPSB7fTsgLy8g5q2j5Zyo6KKr6K6/6Zeu55qE6IqC54K56ZuG5ZCIXG5cbiAgdmFyIHZpc2l0aW5nU2V0ID0ge307IC8vIOaJgOacieW3sue7j+iiq+iuv+mXrui/h+eahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGVkU2V0ID0ge307IC8vIOWIneWni+WMliB1bnZpc2l0ZWRTZXRcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdW52aXNpdGVkU2V0W25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjYWxsYmFja3MgPSB7XG4gICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKF9hKSB7XG4gICAgICB2YXIgY3VycmVudE5vZGUgPSBfYS5jdXJyZW50LFxuICAgICAgICAgIHByZXZpb3VzTm9kZSA9IF9hLnByZXZpb3VzO1xuXG4gICAgICBpZiAodmlzaXRpbmdTZXRbY3VycmVudE5vZGVdKSB7XG4gICAgICAgIC8vIOWmguaenOW9k+WJjeiKgueCueato+WcqOiuv+mXruS4re+8jOWImeivtOaYjuajgOa1i+WIsOeOr+i3r+S6hlxuICAgICAgICBjeWNsZSA9IHt9O1xuICAgICAgICB2YXIgY3VycmVudEN5Y2xlTm9kZSA9IGN1cnJlbnROb2RlO1xuICAgICAgICB2YXIgcHJldmlvdXNDeWNsZU5vZGUgPSBwcmV2aW91c05vZGU7XG5cbiAgICAgICAgd2hpbGUgKHByZXZpb3VzQ3ljbGVOb2RlICE9PSBjdXJyZW50Tm9kZSkge1xuICAgICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICAgICAgY3VycmVudEN5Y2xlTm9kZSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIHByZXZpb3VzQ3ljbGVOb2RlID0gZGZzUGFyZW50TWFwW3ByZXZpb3VzQ3ljbGVOb2RlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDlpoLmnpzkuI3lrZjlnKjmraPlnKjorr/pl67pm4blkIjkuK3vvIzliJnlsIblhbbmlL7lhaXmraPlnKjorr/pl67pm4blkIjvvIzlubbku47mnKrorr/pl67pm4blkIjkuK3liKDpmaRcbiAgICAgICAgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICAgIGRlbGV0ZSB1bnZpc2l0ZWRTZXRbY3VycmVudE5vZGVdOyAvLyDmm7TmlrAgRFNGIHBhcmVudHMg5YiX6KGoXG5cbiAgICAgICAgZGZzUGFyZW50TWFwW2N1cnJlbnROb2RlXSA9IHByZXZpb3VzTm9kZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudDsgLy8g5aaC5p6c5omA5pyJ55qE6IqC54K555qE5a2Q6IqC54K56YO95bey57uP6K6/6Zeu6L+H5LqG77yM5YiZ5LuO5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit5Yig6Zmk5o6J77yM5bm25bCG5YW256e75YWl5Yiw5bey6K6/6Zeu6ZuG5ZCI5Lit77yMXG4gICAgICAvLyDlkIzml7bkuZ/mhI/lkbPnnYDlvZPliY3oioLngrnnmoTmiYDmnInpgrvlsYXoioLngrnpg73ooqvorr/pl67ov4fkuoZcblxuICAgICAgdmlzaXRlZFNldFtjdXJyZW50Tm9kZV0gPSBjdXJyZW50Tm9kZTtcbiAgICAgIGRlbGV0ZSB2aXNpdGluZ1NldFtjdXJyZW50Tm9kZV07XG4gICAgfSxcbiAgICBhbGxvd1RyYXZlcnNhbDogZnVuY3Rpb24gYWxsb3dUcmF2ZXJzYWwoX2EpIHtcbiAgICAgIHZhciBuZXh0Tm9kZSA9IF9hLm5leHQ7IC8vIOWmguaenOajgOa1i+WIsOeOr+i3r+WImemcgOimgee7iOatouaJgOaciei/m+S4gOatpeeahOmBjeWOhu+8jOWQpuWImeS8muWvvOiHtOaXoOmZkOW+queOr+mBjeWOhlxuXG4gICAgICBpZiAoY3ljbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyDku4XlhYHorrjpgY3ljobmsqHmnInorr/pl67nmoToioLngrnvvIx2aXNpdGVkU2V0IOS4reeahOmDveW3sue7j+iuv+mXrui/h+S6hlxuXG5cbiAgICAgIHJldHVybiAhdmlzaXRlZFNldFtuZXh0Tm9kZV07XG4gICAgfVxuICB9OyAvLyDlvIDlp4vpgY3ljoboioLngrlcblxuICB3aGlsZSAoT2JqZWN0LmtleXModW52aXNpdGVkU2V0KS5sZW5ndGgpIHtcbiAgICAvLyDku47nrKzkuIDkuKroioLngrnlvIDlp4vov5vooYwgREZTIOmBjeWOhlxuICAgIHZhciBmaXJzZXRVblZpc2l0ZWRLZXkgPSBPYmplY3Qua2V5cyh1bnZpc2l0ZWRTZXQpWzBdO1xuICAgICgwLCBfZGZzLmRlZmF1bHQpKGdyYXBoRGF0YSwgZmlyc2V0VW5WaXNpdGVkS2V5LCBjYWxsYmFja3MpO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xlO1xufTtcbi8qKlxuICog5qOA5rWL5peg5ZCR5Zu+5Lit55qE5omA5pyJQmFzZSBjeWNsZXNcbiAqIHJlZmVyOiBodHRwczovL3d3dy5jb2RlcHJvamVjdC5jb20vQXJ0aWNsZXMvMTE1ODIzMi9FbnVtZXJhdGluZy1BbGwtQ3ljbGVzLWluLWFuLVVuZGlyZWN0ZWQtR3JhcGhcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG5vZGVJZHMg6IqC54K5IElEIOeahOaVsOe7hFxuICogQHBhcmFtIGluY2x1ZGUg5YyF5ZCr5oiW5o6S6Zmk5oyH5a6a55qE6IqC54K5XG4gKiBAcmV0dXJuIFt7W2tleTogc3RyaW5nXTogSU5vZGV9XSDov5Tlm57kuIDnu4RiYXNlIGN5Y2xlc1xuICovXG5cblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gKDAsIF9jb25uZWN0ZWRDb21wb25lbnQuZGVmYXVsdCkoZ3JhcGhEYXRhLCBmYWxzZSk7IC8vIGxvb3AgdGhyb3VnaCBhbGwgY29ubmVjdGVkIGNvbXBvbmVudHNcblxuICBmb3IgKHZhciBfaSA9IDAsIGNvbXBvbmVudHNfMSA9IGNvbXBvbmVudHM7IF9pIDwgY29tcG9uZW50c18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzXzFbX2ldO1xuICAgIGlmICghY29tcG9uZW50Lmxlbmd0aCkgY29udGludWU7XG4gICAgdmFyIHJvb3QgPSBjb21wb25lbnRbMF07XG4gICAgdmFyIHJvb3RJZCA9IHJvb3QuaWQ7XG4gICAgdmFyIHN0YWNrID0gW3Jvb3RdO1xuICAgIHZhciBwYXJlbnRfMSA9IChfYSA9IHt9LCBfYVtyb290SWRdID0gcm9vdCwgX2EpO1xuICAgIHZhciB1c2VkID0gKF9iID0ge30sIF9iW3Jvb3RJZF0gPSBuZXcgU2V0KCksIF9iKTsgLy8gd2FsayBhIHNwYW5uaW5nIHRyZWUgdG8gZmluZCBjeWNsZXNcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgY3VyTm9kZSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIGN1ck5vZGVJZCA9IGN1ck5vZGUuaWQ7XG4gICAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5cbmV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlID0gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUoZ3JhcGhEYXRhLCBub2RlSWRzLCBpbmNsdWRlKSB7XG4gIGlmIChpbmNsdWRlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBwYXRoID0gW107IC8vIHN0YWNrIG9mIG5vZGVzIGluIGN1cnJlbnQgcGF0aFxuXG4gIHZhciBibG9ja2VkID0gbmV3IFNldCgpO1xuICB2YXIgQiA9IFtdOyAvLyByZW1lbWJlciBwb3J0aW9ucyBvZiB0aGUgZ3JhcGggdGhhdCB5aWVsZCBubyBlbGVtZW50YXJ5IGNpcmN1aXRcblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBpZHgyTm9kZSA9IHt9O1xuICB2YXIgbm9kZTJJZHggPSB7fTsgLy8g6L6F5Yqp5Ye95pWw77yaIHVuYmxvY2sgYWxsIGJsb2NrZWQgbm9kZXNcblxuICB2YXIgdW5ibG9jayA9IGZ1bmN0aW9uIHVuYmxvY2sodGhpc05vZGUpIHtcbiAgICB2YXIgc3RhY2sgPSBbdGhpc05vZGVdO1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBub2RlID0gc3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChibG9ja2VkLmhhcyhub2RlKSkge1xuICAgICAgICBibG9ja2VkLmRlbGV0ZShub2RlKTtcbiAgICAgICAgQltub2RlLmlkXS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgc3RhY2sucHVzaChuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJbbm9kZS5pZF0uY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGNpcmN1aXQgPSBmdW5jdGlvbiBjaXJjdWl0KG5vZGUsIHN0YXJ0LCBhZGpMaXN0KSB7XG4gICAgdmFyIGNsb3NlZCA9IGZhbHNlOyAvLyB3aGV0aGVyIGEgcGF0aCBpcyBjbG9zZWRcblxuICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSByZXR1cm4gY2xvc2VkO1xuICAgIHBhdGgucHVzaChub2RlKTtcbiAgICBibG9ja2VkLmFkZChub2RlKTtcbiAgICB2YXIgbmVpZ2hib3JzID0gYWRqTGlzdFtub2RlLmlkXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBpZHgyTm9kZVtuZWlnaGJvcnNbaV1dO1xuXG4gICAgICBpZiAobmVpZ2hib3IgPT09IHN0YXJ0KSB7XG4gICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBwYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbaW5kZXggLSAxXS5pZF0gPSBwYXRoW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbcGF0aC5sZW5ndGggLSAxXS5pZF0gPSBwYXRoWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghYmxvY2tlZC5oYXMobmVpZ2hib3IpKSB7XG4gICAgICAgIGlmIChjaXJjdWl0KG5laWdoYm9yLCBzdGFydCwgYWRqTGlzdCkpIHtcbiAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgdW5ibG9jayhub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgICBpZiAoIUJbbmVpZ2hib3IuaWRdLmhhcyhub2RlKSkge1xuICAgICAgICAgIEJbbmVpZ2hib3IuaWRdLmFkZChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHBhdGgucG9wKCk7XG4gICAgcmV0dXJuIGNsb3NlZDtcbiAgfTtcblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hOyAvLyBKb2huc29uJ3MgYWxnb3JpdGhtIOimgeaxgue7meiKgueCuei1i+mhuuW6j++8jOWFiOaMieiKgueCueWcqOaVsOe7hOS4reeahOmhuuW6j1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIG5vZGUySWR4W25vZGVJZF0gPSBpO1xuICAgIGlkeDJOb2RlW2ldID0gbm9kZTtcbiAgfSAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrnvvIzliJnmiormjIflrproioLngrnmjpLluo/lnKjliY3vvIzku6Xkvr/mj5Dml6nnu5PmnZ/mkJzntKJcblxuXG4gIGlmIChub2RlSWRzICYmIGluY2x1ZGUpIHtcbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGVJZHNbaV07XG4gICAgICBub2RlMklkeFtub2Rlc1tpXS5pZF0gPSBub2RlMklkeFtub2RlSWRdO1xuICAgICAgbm9kZTJJZHhbbm9kZUlkXSA9IDA7XG4gICAgICBpZHgyTm9kZVswXSA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5vZGVJZDtcbiAgICAgIH0pO1xuICAgICAgaWR4Mk5vZGVbbm9kZTJJZHhbbm9kZXNbaV0uaWRdXSA9IG5vZGVzW2ldO1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9sb29wXzIoaSk7XG4gICAgfVxuICB9IC8vIOi/lOWbniDoioLngrnpobrluo8gPj0gbm9kZU9yZGVyIOeahOW8uui/numAmuWIhumHj+eahGFkakxpc3RcblxuXG4gIHZhciBnZXRNaW5Db21wb25lbnRBZGogPSBmdW5jdGlvbiBnZXRNaW5Db21wb25lbnRBZGooY29tcG9uZW50cykge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBtaW5Db21wSWR4O1xuICAgIHZhciBtaW5JZHggPSBJbmZpbml0eTsgLy8gRmluZCBsZWFzdCBjb21wb25lbnQgYW5kIHRoZSBsb3dlc3Qgbm9kZVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgY29tcCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29tcC5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbm9kZUlkeF8xID0gbm9kZTJJZHhbY29tcFtqXS5pZF07XG5cbiAgICAgICAgaWYgKG5vZGVJZHhfMSA8IG1pbklkeCkge1xuICAgICAgICAgIG1pbklkeCA9IG5vZGVJZHhfMTtcbiAgICAgICAgICBtaW5Db21wSWR4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzW21pbkNvbXBJZHhdO1xuICAgIHZhciBhZGpMaXN0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbaV07XG4gICAgICBhZGpMaXN0W25vZGUuaWRdID0gW107XG5cbiAgICAgIGZvciAodmFyIF9pID0gMCwgX2IgPSAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShub2RlLmlkLCBncmFwaERhdGEuZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICByZXR1cm4gYy5pZDtcbiAgICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgICAgfSk7IF9pIDwgX2IubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IF9iW19pXTsgLy8g5a+56Ieq546v5oOF5Ya1ICjngrnov57lkJHoh6rouqspIOeJueauiuWkhOeQhu+8muiusOW9leiHqueOr++8jOS9huS4jeWKoOWFpWFkakxpc3RcblxuICAgICAgICBpZiAobmVpZ2hib3IgPT09IG5vZGUuaWQgJiYgIShpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkpIHtcbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2EgPSB7fSwgX2Fbbm9kZS5pZF0gPSBub2RlLCBfYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkakxpc3Rbbm9kZS5pZF0ucHVzaChub2RlMklkeFtuZWlnaGJvcl0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgYWRqTGlzdDogYWRqTGlzdCxcbiAgICAgIG1pbklkeDogbWluSWR4XG4gICAgfTtcbiAgfTtcblxuICB2YXIgbm9kZUlkeCA9IDA7XG5cbiAgd2hpbGUgKG5vZGVJZHggPCBub2Rlcy5sZW5ndGgpIHtcbiAgICB2YXIgc3ViZ3JhcGhOb2RlcyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgcmV0dXJuIG5vZGUySWR4W24uaWRdID49IG5vZGVJZHg7XG4gICAgfSk7XG4gICAgdmFyIHNjY3MgPSAoMCwgX2Nvbm5lY3RlZENvbXBvbmVudC5kZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cykoe1xuICAgICAgbm9kZXM6IHN1YmdyYXBoTm9kZXMsXG4gICAgICBlZGdlczogZ3JhcGhEYXRhLmVkZ2VzXG4gICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnQubGVuZ3RoID4gMTtcbiAgICB9KTtcbiAgICBpZiAoc2Njcy5sZW5ndGggPT09IDApIGJyZWFrO1xuICAgIHZhciBzY2MgPSBnZXRNaW5Db21wb25lbnRBZGooc2Njcyk7XG4gICAgdmFyIG1pbklkeCA9IHNjYy5taW5JZHgsXG4gICAgICAgIGFkakxpc3QgPSBzY2MuYWRqTGlzdCxcbiAgICAgICAgY29tcG9uZW50ID0gc2NjLmNvbXBvbmVudDtcblxuICAgIGlmIChjb21wb25lbnQubGVuZ3RoID4gMSkge1xuICAgICAgY29tcG9uZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgQltub2RlLmlkXSA9IG5ldyBTZXQoKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN0YXJ0Tm9kZSA9IGlkeDJOb2RlW21pbklkeF07IC8vIHN0YXJ0Tm9kZSDkuI3lnKjmjIflrpropoHljIXlkKvnmoToioLngrnkuK3vvIzmj5DliY3nu5PmnZ/mkJzntKJcblxuICAgICAgaWYgKG5vZGVJZHMgJiYgaW5jbHVkZSAmJiBub2RlSWRzLmluZGV4T2Yoc3RhcnROb2RlLmlkKSA9PT0gLTEpIHJldHVybiBhbGxDeWNsZXM7XG4gICAgICBjaXJjdWl0KHN0YXJ0Tm9kZSwgc3RhcnROb2RlLCBhZGpMaXN0KTtcbiAgICAgIG5vZGVJZHggPSBtaW5JZHggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ3ljbGVzO1xufTtcbi8qKlxuICog5p+l5om+5Zu+5Lit5omA5pyJ5ruh6Laz6KaB5rGC55qE5ZyIXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4TvvIzoi6XkuI3mjIflrprvvIzliJnov5Tlm57lm77kuK3miYDmnInnmoTlnIhcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IE5vZGV9XSDljIXlkKvmiYDmnInnjq/nmoTmlbDnu4TvvIzmr4/kuKrnjq/nlKjkuIDkuKpPYmplY3TooajnpLrvvIzlhbbkuK1rZXnkuLroioLngrlpZO+8jHZhbHVl5Li66K+l6IqC54K55Zyo546v5Lit5oyH5ZCR55qE5LiL5LiA5Liq6IqC54K5XG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuXG5leHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGRldGVjdEFsbEN5Y2xlcztcbnZhciBfZGVmYXVsdCA9IGRldGVjdERpcmVjdGVkQ3ljbGU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = depthFirstSearch;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n (0, _util.getNeighbors)(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZnMuanM/YzJjNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxrRkFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvZGZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBkZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG5cbiAgICAgIGlmICghc2VlbltuZXh0XSkge1xuICAgICAgICBzZWVuW25leHRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICogQHBhcmFtIHtHcmFwaH0gZ3JhcGhcbiAqIEBwYXJhbSB7R3JhcGhOb2RlfSBjdXJyZW50Tm9kZVxuICogQHBhcmFtIHtHcmFwaE5vZGV9IHByZXZpb3VzTm9kZVxuICogQHBhcmFtIHtDYWxsYmFja3N9IGNhbGxiYWNrc1xuICovXG5cblxuZnVuY3Rpb24gZGVwdGhGaXJzdFNlYXJjaFJlY3Vyc2l2ZShncmFwaERhdGEsIGN1cnJlbnROb2RlLCBwcmV2aW91c05vZGUsIGNhbGxiYWNrcykge1xuICBjYWxsYmFja3MuZW50ZXIoe1xuICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgfSk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7XG4gICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar _util2 = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = (0, _util2.getOutEdgesNodeId)(minNodeId, edges);else relatedEdges = (0, _util2.getEdgesByNodeId)(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\nvar _default = dijkstra;\nexports.default = _default;\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if ((0, _util.isArray)(prePath)) paths.push((0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kaWprc3RyYS5qcz80N2M5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLDZEQUFPOztBQUU1QixZQUFZLG1CQUFPLENBQUMsNkVBQVk7O0FBRWhDLGFBQWEsbUJBQU8sQ0FBQyxrRkFBUTs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLGlCQUFpQixhQUFhO0FBQzlCO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsc0NBQXNDLGdCQUFnQjtBQUN0RDtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDLHlCQUF5QjtBQUN0RTtBQUNBLDRJQUE0STtBQUM1STtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdHNsaWIgPSByZXF1aXJlKFwidHNsaWJcIik7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX3V0aWwyID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIG1pblZlcnRleCA9IGZ1bmN0aW9uIG1pblZlcnRleChELCBub2RlcywgbWFya3MpIHtcbiAgLy8g5om+5Ye65pyA5bCP55qE54K5XG4gIHZhciBtaW5EaXMgPSBJbmZpbml0eTtcbiAgdmFyIG1pbk5vZGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGlmICghbWFya3Nbbm9kZUlkXSAmJiBEW25vZGVJZF0gPD0gbWluRGlzKSB7XG4gICAgICBtaW5EaXMgPSBEW25vZGVJZF07XG4gICAgICBtaW5Ob2RlID0gbm9kZXNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbk5vZGU7XG59O1xuXG52YXIgZGlqa3N0cmEgPSBmdW5jdGlvbiBkaWprc3RyYShncmFwaERhdGEsIHNvdXJjZSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgbm9kZUlkcyA9IFtdO1xuICB2YXIgbWFya3MgPSB7fTtcbiAgdmFyIEQgPSB7fTtcbiAgdmFyIHByZXZzID0ge307IC8vIGtleTog6aG254K5LCB2YWx1ZTog6aG254K555qE5YmN6amx54K55pWw57uE77yI5Y+v6IO95pyJ5aSa5p2h562J6ZW/55qE5pyA55+t6Lev5b6E77yJXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBpZCA9IG5vZGUuaWQ7XG4gICAgbm9kZUlkcy5wdXNoKGlkKTtcbiAgICBEW2lkXSA9IEluZmluaXR5O1xuICAgIGlmIChpZCA9PT0gc291cmNlKSBEW2lkXSA9IDA7XG4gIH0pO1xuICB2YXIgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIFByb2Nlc3MgdGhlIHZlcnRpY2VzXG4gICAgdmFyIG1pbk5vZGUgPSBtaW5WZXJ0ZXgoRCwgbm9kZXMsIG1hcmtzKTtcbiAgICB2YXIgbWluTm9kZUlkID0gbWluTm9kZS5pZDtcbiAgICBtYXJrc1ttaW5Ob2RlSWRdID0gdHJ1ZTtcbiAgICBpZiAoRFttaW5Ob2RlSWRdID09PSBJbmZpbml0eSkgcmV0dXJuIFwiY29udGludWVcIjsgLy8gVW5yZWFjaGFibGUgdmVydGljZXMgY2Fubm90IGJlIHRoZSBpbnRlcm1lZGlhdGUgcG9pbnRcblxuICAgIHZhciByZWxhdGVkRWRnZXMgPSBbXTtcbiAgICBpZiAoZGlyZWN0ZWQpIHJlbGF0ZWRFZGdlcyA9ICgwLCBfdXRpbDIuZ2V0T3V0RWRnZXNOb2RlSWQpKG1pbk5vZGVJZCwgZWRnZXMpO2Vsc2UgcmVsYXRlZEVkZ2VzID0gKDAsIF91dGlsMi5nZXRFZGdlc0J5Tm9kZUlkKShtaW5Ob2RlSWQsIGVkZ2VzKTtcbiAgICByZWxhdGVkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGVkZ2VUYXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBlZGdlU291cmNlID0gZWRnZS5zb3VyY2U7XG4gICAgICB2YXIgdyA9IGVkZ2VUYXJnZXQgPT09IG1pbk5vZGVJZCA/IGVkZ2VTb3VyY2UgOiBlZGdlVGFyZ2V0O1xuICAgICAgdmFyIHdlaWdodCA9IHdlaWdodFByb3BlcnR5TmFtZSAmJiBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gPyBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gOiAxO1xuXG4gICAgICBpZiAoRFt3XSA+IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgRFt3XSA9IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQ7XG4gICAgICAgIHByZXZzW3ddID0gW21pbk5vZGUuaWRdO1xuICAgICAgfSBlbHNlIGlmIChEW3ddID09PSBEW21pbk5vZGUuaWRdICsgd2VpZ2h0KSB7XG4gICAgICAgIHByZXZzW3ddLnB1c2gobWluTm9kZS5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTnVtOyBpKyspIHtcbiAgICBfbG9vcF8xKGkpO1xuICB9XG5cbiAgcHJldnNbc291cmNlXSA9IFtzb3VyY2VdOyAvLyDmr4/kuKroioLngrnlrZjlj6/og73lrZjlnKjlpJrmnaHmnIDnn63ot6/lvoRcblxuICB2YXIgcGF0aHMgPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gRCkge1xuICAgIGlmIChEW3RhcmdldF0gIT09IEluZmluaXR5KSB7XG4gICAgICBmaW5kQWxsUGF0aHMoc291cmNlLCB0YXJnZXQsIHByZXZzLCBwYXRocyk7XG4gICAgfVxuICB9IC8vIOWFvOWuueS5i+WJjeWNlei3r+W+hFxuXG5cbiAgdmFyIHBhdGggPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gcGF0aHMpIHtcbiAgICBwYXRoW3RhcmdldF0gPSBwYXRoc1t0YXJnZXRdWzBdO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZW5ndGg6IEQsXG4gICAgcGF0aDogcGF0aCxcbiAgICBhbGxQYXRoOiBwYXRoc1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZGlqa3N0cmE7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmICgoMCwgX3V0aWwuaXNBcnJheSkocHJlUGF0aCkpIHBhdGhzLnB1c2goKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KSgoMCwgX3RzbGliLl9fc3ByZWFkQXJyYXkpKFtdLCBwcmVQYXRoLCB0cnVlKSwgW3RhcmdldF0sIGZhbHNlKSk7ZWxzZSBwYXRocy5wdXNoKFtwcmVQYXRoLCB0YXJnZXRdKTtcbiAgICB9XG4gIH1cblxuICBmb3VuZFBhdGhzW3RhcmdldF0gPSBwYXRocztcbiAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findShortestPath = exports.findAllPath = void 0;\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = (0, _dijkstra.default)(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\n\nexports.findShortestPath = findShortestPath;\n\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? (0, _util.getNeighbors)(start, edges, 'target') : (0, _util.getNeighbors)(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? (0, _util.getNeighbors)(child, edges, 'target') : (0, _util.getNeighbors)(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};\n\nexports.findAllPath = findAllPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanM/YjBiNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHVDQUF1QyxtQkFBTyxDQUFDLDBGQUFZOztBQUUzRCxZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZmluZFNob3J0ZXN0UGF0aCA9IGV4cG9ydHMuZmluZEFsbFBhdGggPSB2b2lkIDA7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGZpbmRTaG9ydGVzdFBhdGggPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoKGdyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoID0gZmluZFNob3J0ZXN0UGF0aDtcblxudmFyIGZpbmRBbGxQYXRoID0gZnVuY3Rpb24gZmluZEFsbFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCkge1xuICB2YXIgX2E7XG5cbiAgaWYgKHN0YXJ0ID09PSBlbmQpIHJldHVybiBbW3N0YXJ0XV07XG4gIHZhciBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciB2aXNpdGVkID0gW3N0YXJ0XTtcbiAgdmFyIGlzVmlzaXRlZCA9IChfYSA9IHt9LCBfYVtzdGFydF0gPSB0cnVlLCBfYSk7XG4gIHZhciBzdGFjayA9IFtdOyAvLyDovoXliqnmoIjvvIznlKjkuo7lrZjlgqjorr/pl67ov4fnmoToioLngrnnmoTpgrvlsYXoioLngrlcblxuICB2YXIgYWxsUGF0aCA9IFtdO1xuICB2YXIgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKHN0YXJ0LCBlZGdlcyk7XG4gIHN0YWNrLnB1c2gobmVpZ2hib3JzKTtcblxuICB3aGlsZSAodmlzaXRlZC5sZW5ndGggPiAwICYmIHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICB2aXNpdGVkLnB1c2goY2hpbGQpO1xuICAgICAgICBpc1Zpc2l0ZWRbY2hpbGRdID0gdHJ1ZTtcbiAgICAgICAgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjaGlsZCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07XG5cbmV4cG9ydHMuZmluZEFsbFBhdGggPSBmaW5kQWxsUGF0aDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = (0, _adjacentMatrix.default)(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\nvar _default = floydWarshall;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzP2M0ZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSw2Q0FBNkMsbUJBQU8sQ0FBQyx3R0FBbUI7O0FBRXhFLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjs7QUFFQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBmbG95ZFdhcnNoYWxsID0gZnVuY3Rpb24gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKSB7XG4gIHZhciBhZGphY2VudE1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZmxveWRXYXJzaGFsbDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar _struct = __webpack_require__(/*! ./struct */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js\");\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct.VACANT_NODE_LABEL,\n edgeLabel: edgeLabel || _struct.VACANT_EDGE_LABEL,\n nodeLabel2: toNodeLabel || _struct.VACANT_NODE_LABEL\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct.VACANT_GRAPH_ID;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct.Graph(graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct.VACANT_NODE_LABEL) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct.VACANT_GRAPH_ID, directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct.VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, _struct.VACANT_NODE_LABEL));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct.VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push((0, _util.clone)(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct.VACANT_NODE_LABEL, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct.Graph(i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\nvar _default = gSpan;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcz84YTMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLDZFQUFZOztBQUVoQyxjQUFjLG1CQUFPLENBQUMsNEZBQVU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxHQUFHOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsMkNBQTJDOztBQUUzQztBQUNBLGlIQUFpSDs7QUFFakg7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEscUNBQXFDLFNBQVM7QUFDOUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkMscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87OztBQUdQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxRQUFROzs7QUFHUixxQkFBcUIsbUJBQW1CO0FBQ3hDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLGlDQUFpQzs7QUFFakMsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUNBQXFDO0FBQ3JDLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsdUVBQXVFOzs7QUFHdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxudmFyIF9zdHJ1Y3QgPSByZXF1aXJlKFwiLi9zdHJ1Y3RcIik7XG5cbnZhciBERlNlZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5mcm9tTm9kZSA9IGZyb21Ob2RlO1xuICAgIHRoaXMudG9Ob2RlID0gdG9Ob2RlO1xuICAgIHRoaXMubm9kZUVkZ2VOb2RlTGFiZWwgPSB7XG4gICAgICBub2RlTGFiZWwxOiBmcm9tTm9kZUxhYmVsIHx8IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBfc3RydWN0LlZBQ0FOVF9FREdFX0xBQkVMLFxuICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlTGFiZWwgfHwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTFxuICAgIH07XG4gIH1cblxuICBERlNlZGdlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU5vZGUgPT09IG90aGVyLmZvcm1Ob2RlICYmIHRoaXMudG9Ob2RlID09PSBvdGhlci50b05vZGUgJiYgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9PT0gb3RoZXIubm9kZUVkZ2VOb2RlTGFiZWw7XG4gIH07XG5cbiAgREZTZWRnZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcblxuICByZXR1cm4gREZTZWRnZTtcbn0oKTsgLy8gREZTY29kZSDmmK8gREVTZWRnZSDnmoTmlbDnu4RcblxuXG52YXIgREZTY29kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERGU2NvZGUoKSB7XG4gICAgdGhpcy5ybXBhdGggPSBbXTtcbiAgICB0aGlzLmRmc0VkZ2VMaXN0ID0gW107XG4gIH1cblxuICBERlNjb2RlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgdmFyIGFMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcbiAgICB2YXIgYkxlbmd0aCA9IG90aGVyLmxlbmd0aDtcbiAgICBpZiAoYUxlbmd0aCAhPT0gYkxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRmc0VkZ2VMaXN0W2ldICE9PSBvdGhlcltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIERGU2NvZGUucHJvdG90eXBlLm5vdEVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gIXRoaXMuZXF1YWxUbyhvdGhlcik7XG4gIH07XG4gIC8qKiDlop7liqDkuIDmnaEgZWRnZSDliLAgREZTY29kZSAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUucHVzaEJhY2sgPSBmdW5jdGlvbiAoZnJvbU5vZGUsIHRvTm9kZSwgZnJvbU5vZGVMYWJlbCwgZWRnZUxhYmVsLCB0b05vZGVMYWJlbCkge1xuICAgIHRoaXMuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSk7XG4gICAgcmV0dXJuIHRoaXMuZGZzRWRnZUxpc3Q7XG4gIH07XG4gIC8qKiDmoLnmja4gZGZzIOaehOW7uuWbviAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUudG9HcmFwaCA9IGZ1bmN0aW9uIChncmFwaElkLCBkaXJlY3RlZCkge1xuICAgIGlmIChncmFwaElkID09PSB2b2lkIDApIHtcbiAgICAgIGdyYXBoSWQgPSBfc3RydWN0LlZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgX3N0cnVjdC5HcmFwaChncmFwaElkLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICB2YXIgZnJvbU5vZGVJZCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWQgPSBkZnNFZGdlLnRvTm9kZTtcbiAgICAgIHZhciBfYSA9IGRmc0VkZ2Uubm9kZUVkZ2VOb2RlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMSA9IF9hLm5vZGVMYWJlbDEsXG4gICAgICAgICAgZWRnZUxhYmVsID0gX2EuZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDIgPSBfYS5ub2RlTGFiZWwyO1xuICAgICAgaWYgKG5vZGVMYWJlbDEgIT09IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwpIGdyYXBoLmFkZE5vZGUoZnJvbU5vZGVJZCwgbm9kZUxhYmVsMSk7XG4gICAgICBpZiAobm9kZUxhYmVsMiAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCAmJiBub2RlTGFiZWwyICE9PSBub2RlTGFiZWwxKSBncmFwaC5hZGRFZGdlKHVuZGVmaW5lZCwgZnJvbU5vZGVJZCwgdG9Ob2RlSWQsIGVkZ2VMYWJlbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyYXBoO1xuICB9OyAvLyDlu7rnq4sgcmlnaHRtb3N0IHBhdGhcblxuXG4gIERGU2NvZGUucHJvdG90eXBlLmJ1aWxkUm1wYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucm1wYXRoID0gW107XG4gICAgdmFyIG9sZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHNlbGZMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSBzZWxmTGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBkZnNFZGdlID0gdGhpcy5kZnNFZGdlTGlzdFtpXTtcbiAgICAgIHZhciBmcm9tTm9kZUlkeCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWR4ID0gZGZzRWRnZS50b05vZGU7XG5cbiAgICAgIGlmIChmcm9tTm9kZUlkeCA8IHRvTm9kZUlkeCAmJiAob2xkRnJvbSA9PT0gdW5kZWZpbmVkIHx8IHRvTm9kZUlkeCA9PT0gb2xkRnJvbSkpIHtcbiAgICAgICAgdGhpcy5ybXBhdGgucHVzaChpKTtcbiAgICAgICAgb2xkRnJvbSA9IGZyb21Ob2RlSWR4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJtcGF0aDtcbiAgfTtcblxuICBERlNjb2RlLnByb3RvdHlwZS5nZXROb2RlTnVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlTWFwID0ge307XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICBpZiAoIW5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0gPSB0cnVlO1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UudG9Ob2RlXSkgbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0gPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhub2RlTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIERGU2NvZGU7XG59KCk7XG5cbnZhciBIaXN0b3J5ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlzdG9yeShwZGZzKSB7XG4gICAgdGhpcy5oaXMgPSB7fTtcbiAgICB0aGlzLm5vZGVzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXNVc2VkID0ge307XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIGlmICghcGRmcykgcmV0dXJuO1xuXG4gICAgd2hpbGUgKHBkZnMpIHtcbiAgICAgIHZhciBlID0gcGRmcy5lZGdlO1xuICAgICAgdGhpcy5lZGdlcy5wdXNoKGUpO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS5mcm9tXSA9IDE7XG4gICAgICB0aGlzLm5vZGVzVXNlZFtlLnRvXSA9IDE7XG4gICAgICB0aGlzLmVkZ2VzVXNlZFtlLmlkXSA9IDE7XG4gICAgICBwZGZzID0gcGRmcy5wcmVOb2RlO1xuICAgIH0gLy8g5YCS5bqPXG5cblxuICAgIHRoaXMuZWRnZXMgPSB0aGlzLmVkZ2VzLnJldmVyc2UoKTtcbiAgfVxuXG4gIEhpc3RvcnkucHJvdG90eXBlLmhhc05vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzVXNlZFtub2RlLmlkXSA9PT0gMTtcbiAgfTtcblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlc1VzZWRbZWRnZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgcmV0dXJuIEhpc3Rvcnk7XG59KCk7XG5cbnZhciBHU3BhbiA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdTcGFuKF9hKSB7XG4gICAgdmFyIGdyYXBocyA9IF9hLmdyYXBocyxcbiAgICAgICAgX2IgPSBfYS5taW5TdXBwb3J0LFxuICAgICAgICBtaW5TdXBwb3J0ID0gX2IgPT09IHZvaWQgMCA/IDIgOiBfYixcbiAgICAgICAgX2MgPSBfYS5taW5Ob2RlTnVtLFxuICAgICAgICBtaW5Ob2RlTnVtID0gX2MgPT09IHZvaWQgMCA/IDEgOiBfYyxcbiAgICAgICAgX2QgPSBfYS5tYXhOb2RlTnVtLFxuICAgICAgICBtYXhOb2RlTnVtID0gX2QgPT09IHZvaWQgMCA/IDQgOiBfZCxcbiAgICAgICAgX2UgPSBfYS50b3AsXG4gICAgICAgIHRvcCA9IF9lID09PSB2b2lkIDAgPyAxMCA6IF9lLFxuICAgICAgICBfZiA9IF9hLmRpcmVjdGVkLFxuICAgICAgICBkaXJlY3RlZCA9IF9mID09PSB2b2lkIDAgPyBmYWxzZSA6IF9mLFxuICAgICAgICBfZyA9IF9hLnZlcmJvc2UsXG4gICAgICAgIHZlcmJvc2UgPSBfZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZzsgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM5Yid5aeL5YyWLS0tLS0tLVxuXG4gICAgdGhpcy5ncmFwaHMgPSBncmFwaHM7XG4gICAgdGhpcy5kZnNDb2RlID0gbmV3IERGU2NvZGUoKTtcbiAgICB0aGlzLnN1cHBvcnQgPSAwO1xuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IFtdO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLm1pblN1cHBvcnQgPSBtaW5TdXBwb3J0O1xuICAgIHRoaXMudG9wID0gdG9wO1xuICAgIHRoaXMuZGlyZWN0ZWQgPSBkaXJlY3RlZDtcbiAgICB0aGlzLmNvdW50ZXIgPSAwOyAvLyBUT0RPPyB0aW1lc3RhbXAgPSB7fVxuXG4gICAgdGhpcy5tYXhOb2RlTnVtID0gbWF4Tm9kZU51bTtcbiAgICB0aGlzLm1pbk5vZGVOdW0gPSBtaW5Ob2RlTnVtO1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2U7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IHRoaXMubWluTm9kZU51bSkgdGhpcy5tYXhOb2RlTnVtID0gdGhpcy5taW5Ob2RlTnVtO1xuICAgIHRoaXMucmVwb3J0REYgPSBbXTsgLy8gbWF0cml4XG4gIH0gLy8gTGluZSAzNTJcblxuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJvb3RFZGdlcyA9IGZ1bmN0aW9uIChncmFwaCwgZnJvbU5vZGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICBmcm9tTm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoX3RoaXMuZGlyZWN0ZWQgfHwgZnJvbU5vZGUubGFiZWwgPD0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbCkgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEJhY2t3YXJkRWRnZSA9IGZ1bmN0aW9uIChncmFwaCwgZWRnZTEsIGVkZ2UyLCBoaXN0b3J5KSB7XG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkICYmIGVkZ2UxID09PSBlZGdlMikgcmV0dXJuIG51bGw7XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciBlZGdlMlRvID0gbm9kZU1hcFtlZGdlMi50b107XG4gICAgdmFyIGVkZ2UyVG9FZGdlcyA9IGVkZ2UyVG8uZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlMlRvRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZTJUb0VkZ2VzW2ldO1xuICAgICAgaWYgKGhpc3RvcnkuaGFzRWRnZShlZGdlKSB8fCBlZGdlLnRvICE9PSBlZGdlMS5mcm9tKSBjb250aW51ZTtcblxuICAgICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChlZGdlMS5sYWJlbCA8IGVkZ2UubGFiZWwgfHwgZWRnZTEubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgbm9kZU1hcFtlZGdlMS50b10ubGFiZWwgPD0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5vZGVNYXBbZWRnZTEuZnJvbV0ubGFiZWwgPCBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCB8fCBub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsID09PSBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCAmJiBlZGdlMS5sYWJlbCA8PSBlZGdlLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRQdXJlRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgcmlnaHRtb3N0RWRnZVRvSWQgPSByaWdodG1vc3RFZGdlLnRvO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLm5vZGVNYXBbcmlnaHRtb3N0RWRnZVRvSWRdLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgdG9Ob2RlID0gZ3JhcGgubm9kZU1hcFtlZGdlLnRvXTtcblxuICAgICAgaWYgKG1pbk5vZGVMYWJlbCA8PSB0b05vZGUubGFiZWwgJiYgIWhpc3RvcnkuaGFzTm9kZSh0b05vZGUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIHRvTm9kZUxhYmVsID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLnRvXS5sYWJlbDtcbiAgICB2YXIgZnJvbU5vZGUgPSBub2RlTWFwW3JpZ2h0bW9zdEVkZ2UuZnJvbV07XG4gICAgdmFyIGVkZ2VzID0gZnJvbU5vZGUuZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIHZhciBuZXdUb05vZGVMYWJlbCA9IG5vZGVNYXBbZWRnZS50b10ubGFiZWw7XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLnRvID09PSBlZGdlLnRvIHx8IG1pbk5vZGVMYWJlbCA+IG5ld1RvTm9kZUxhYmVsIHx8IGhpc3RvcnkuaGFzTm9kZShub2RlTWFwW2VkZ2UudG9dKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0bW9zdEVkZ2UubGFiZWwgPCBlZGdlLmxhYmVsIHx8IHJpZ2h0bW9zdEVkZ2UubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgdG9Ob2RlTGFiZWwgPD0gbmV3VG9Ob2RlTGFiZWwpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2V0U3VwcG9ydCA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgZ3JhcGhNYXAgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocHJvKSB7XG4gICAgICBpZiAoIWdyYXBoTWFwW3Byby5ncmFwaElkXSkgZ3JhcGhNYXBbcHJvLmdyYXBoSWRdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JhcGhNYXApLmxlbmd0aDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZE1pbkxhYmVsID0gZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciBtaW5MYWJlbCA9IHVuZGVmaW5lZDtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKG5vZGVFZGdlTm9kZUxhYmVsKSB7XG4gICAgICB2YXIgX2EgPSBvYmpbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgaWYgKCFtaW5MYWJlbCkge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobm9kZUxhYmVsMSA8IG1pbkxhYmVsLm5vZGVMYWJlbDEgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPCBtaW5MYWJlbC5lZGdlTGFiZWwgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPT09IG1pbkxhYmVsLmVkZ2VMYWJlbCAmJiBub2RlTGFiZWwyIDwgbWluTGFiZWwubm9kZUxhYmVsMikge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWluTGFiZWw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmlzTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZGZzQ29kZSA9IHRoaXMuZGZzQ29kZTtcbiAgICBpZiAodGhpcy52ZXJib3NlKSBjb25zb2xlLmxvZyhcImlzTWluIGNoZWNraW5nXCIsIGRmc0NvZGUpO1xuICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDtcbiAgICB2YXIgZ3JhcGggPSBkZnNDb2RlLnRvR3JhcGgoX3N0cnVjdC5WQUNBTlRfR1JBUEhfSUQsIGRpcmVjdGVkKTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIGRmc0NvZGVNaW4gPSBuZXcgREZTY29kZSgpO1xuICAgIHZhciByb290ID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGZvcndhcmRFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm9vdEVkZ2VzKGdyYXBoLCBub2RlKTtcblxuICAgICAgZm9yd2FyZEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIG90aGVyTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbCA9IFwiXCIuY29uY2F0KG5vZGUubGFiZWwsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChvdGhlck5vZGUubGFiZWwpO1xuICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgIG5vZGVMYWJlbDE6IG5vZGUubGFiZWwsXG4gICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG90aGVyTm9kZS5sYWJlbFxuICAgICAgICB9O1xuICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g5q+U6L6DIHJvb3Qg5Lit5q+P5LiA6aG555qEIG5vZGVFZGdlTm9kZUxhYmVsIOWkp+Wwj++8jOaMieeFpyBub2RlTGFiZWwx44CBZWRnZUxhYmXjgIFub2RlTGFiZWwyIOeahOmhuuW6j+avlOi+g1xuXG4gICAgdmFyIG1pbkxhYmVsID0gdGhpcy5maW5kTWluTGFiZWwocm9vdCk7IC8vIGxpbmUgNDE5XG5cbiAgICBpZiAoIW1pbkxhYmVsKSByZXR1cm47XG4gICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG1pbkxhYmVsLm5vZGVMYWJlbDEsIG1pbkxhYmVsLmVkZ2VMYWJlbCwgbWluTGFiZWwubm9kZUxhYmVsMikpOyAvLyBsaW5lIDQyM1xuXG4gICAgdmFyIHByb2plY3RJc01pbiA9IGZ1bmN0aW9uIHByb2plY3RJc01pbihwcm9qZWN0ZWQpIHtcbiAgICAgIC8vIHJpZ2h0IG1vc3QgcGF0aFxuICAgICAgdmFyIHJtcGF0aCA9IGRmc0NvZGVNaW4uYnVpbGRSbXBhdGgoKTtcbiAgICAgIHZhciBtaW5Ob2RlTGFiZWwgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0WzBdLm5vZGVFZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDE7XG4gICAgICB2YXIgbWF4VG9DID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbMF1dLnRvTm9kZTsgLy8gbm9kZSBpZFxuXG4gICAgICB2YXIgYmFja3dhcmRSb290ID0ge307XG4gICAgICB2YXIgZmxhZyA9IGZhbHNlLFxuICAgICAgICAgIG5ld1RvID0gMDtcbiAgICAgIHZhciBlbmQgPSBkaXJlY3RlZCA/IC0xIDogMDsgLy8g6YGN5Y6G5YiwIDEg6L+Y5piv5YiwIDBcblxuICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7IC8vIGxpbmUgNDM1XG5cbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGJhY2t3YXJkRWRnZSA9IF90aGlzLmZpbmRCYWNrd2FyZEVkZ2UoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBoaXN0b3J5KTtcblxuICAgICAgICAgIGlmIChiYWNrd2FyZEVkZ2UpIHtcbiAgICAgICAgICAgIC8vIExpbmUgNDQxXG4gICAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdKSB7XG4gICAgICAgICAgICAgIGJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdID0ge1xuICAgICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogYmFja3dhcmRSb290LFxuICAgICAgICAgICAgICBwcmVOb2RlOiBwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5ld1RvID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlO1xuICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGkgPSBybXBhdGgubGVuZ3RoIC0gMTsgaSA+IGVuZDsgaS0tKSB7XG4gICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMShpKTtcblxuICAgICAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgdmFyIG1pbkJhY2t3YXJkRWRnZUxhYmVsID0gX3RoaXMuZmluZE1pbkxhYmVsKGJhY2t3YXJkUm9vdCk7XG5cbiAgICAgICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgbmV3VG8sIF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkpO1xuICAgICAgICB2YXIgaWR4XzEgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF8xXSAhPT0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtpZHhfMV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHByb2plY3RJc01pbihiYWNrd2FyZFJvb3RbbWluQmFja3dhcmRFZGdlTGFiZWwuZWRnZUxhYmVsXS5wcm9qZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZm9yd2FyZFJvb3QgPSB7fTtcbiAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgIHZhciBuZXdGcm9tID0gMDtcbiAgICAgIHByb2plY3RlZC5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgdmFyIGZvcndhcmRQdXJlRWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFB1cmVFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgIGlmIChmb3J3YXJkUHVyZUVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICBuZXdGcm9tID0gbWF4VG9DO1xuICAgICAgICAgIGZvcndhcmRQdXJlRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHBhdGhMZW5ndGggPSBybXBhdGgubGVuZ3RoO1xuXG4gICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgdmFyIHZhbHVlID0gcm1wYXRoW2ldO1xuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgZm9yd2FyZFJtcGF0aEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSbXBhdGhFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1t2YWx1ZV0sIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSk7XG5cbiAgICAgICAgICBpZiAoZm9yd2FyZFJtcGF0aEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgbmV3RnJvbSA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbdmFsdWVdLmZyb21Ob2RlO1xuICAgICAgICAgICAgZm9yd2FyZFJtcGF0aEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICAgIGlmICghZm9yd2FyZFJvb3Rba2V5XSkgZm9yd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGhMZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzIoaSk7XG5cbiAgICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmxhZykgcmV0dXJuIHRydWU7XG5cbiAgICAgIHZhciBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbCA9IF90aGlzLmZpbmRNaW5MYWJlbChmb3J3YXJkUm9vdCk7XG5cbiAgICAgIGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShuZXdGcm9tLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpKTtcbiAgICAgIHZhciBpZHggPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhdICE9PSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W2lkeF0pIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oZm9yd2FyZFJvb3RbXCJcIi5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwuZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpXS5wcm9qZWN0ZWQpO1xuICAgIH07XG5cbiAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMik7XG4gICAgcmV0dXJuIHByb2plY3RJc01pbihyb290W2tleV0ucHJvamVjdGVkKTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucmVwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRmc0NvZGUuZ2V0Tm9kZU51bSgpIDwgdGhpcy5taW5Ob2RlTnVtKSByZXR1cm47XG4gICAgdGhpcy5jb3VudGVyKys7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5kZnNDb2RlLnRvR3JhcGgodGhpcy5jb3VudGVyLCB0aGlzLmRpcmVjdGVkKTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzLnB1c2goKDAsIF91dGlsLmNsb25lKShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBocyA9IHRoaXMuZ3JhcGhzO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIG1pblN1cHBvcnQgPSB0aGlzLm1pblN1cHBvcnQ7XG4gICAgdmFyIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gICAgdmFyIG5vZGVMYWJlbENvdW50ZXIgPSB7fSxcbiAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlciA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6roioLngrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1ub2Rl57G75Z6LXG5cbiAgICB2YXIgbm9kZUxhYmxlQ291bnRlZCA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1mcm9tTm9kZeexu+Weiy1lZGdl57G75Z6LLXRvTm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvLyBMaW5lIDI3MVxuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIOmBjeWOhuiKgueCue+8jOiusOW9leWvueW6lOWbviDkuI4g5q+P5Liq6IqC54K555qEIGxhYmVsIOWIsCBub2RlTGFibGVDb3VudGVkXG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgICAgLy8gTGluZSAyNzJcbiAgICAgICAgdmFyIG5vZGVMYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgICAgIHZhciBncmFwaE5vZGVLZXkgPSBcIlwiLmNvbmNhdChrZXksIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsKTtcblxuICAgICAgICBpZiAoIW5vZGVMYWJsZUNvdW50ZWRbZ3JhcGhOb2RlS2V5XSkge1xuICAgICAgICAgIHZhciBjb3VudGVyID0gbm9kZUxhYmVsQ291bnRlcltub2RlTGFiZWxdIHx8IDA7XG4gICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgIG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSA9IGNvdW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0gPSB7XG4gICAgICAgICAgZ3JhcGhLZXk6IGtleSxcbiAgICAgICAgICBsYWJlbDogbm9kZUxhYmVsXG4gICAgICAgIH07IC8vIOmBjeWOhuivpeiKgueCueeahOaJgOaciei+ue+8jOiusOW9leWQhOS4quWbvuWSjOWQhOiHqui+ueeahOWFs+ezu+WIsCBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQuIExpbmUgMjc2XG5cbiAgICAgICAgbm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDEgPSBub2RlTGFiZWw7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDIgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBub2RlTGFiZWwxID4gbm9kZUxhYmVsMikge1xuICAgICAgICAgICAgdmFyIHRtcCA9IG5vZGVMYWJlbDI7XG4gICAgICAgICAgICBub2RlTGFiZWwyID0gbm9kZUxhYmVsMTtcbiAgICAgICAgICAgIG5vZGVMYWJlbDEgPSB0bXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGVkZ2VMYWJlbCA9IGVkZ2UubGFiZWw7XG4gICAgICAgICAgdmFyIGdyYXBoTm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDEsIFwiLVwiKS5jb25jYXQoZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDIpO1xuICAgICAgICAgIHZhciBub2RlRWRnZU5vZGVLZXkgPSBcIlwiLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcblxuICAgICAgICAgIGlmICghbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSB8fCAwO1xuICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldID0gY291bnRlcjsgLy8gTGluZTI4MVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZFtncmFwaE5vZGVFZGdlTm9kZUtleV0gPSB7XG4gICAgICAgICAgICBncmFwaElkOiBrZXksXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsXG4gICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g6K6h566X6aKR57mB55qE6IqC54K5XG5cbiAgICBPYmplY3Qua2V5cyhub2RlTGFiZWxDb3VudGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgdmFyIGNvdW50ID0gbm9kZUxhYmVsQ291bnRlcltsYWJlbF07XG4gICAgICBpZiAoY291bnQgPCBtaW5TdXBwb3J0KSByZXR1cm47XG4gICAgICB2YXIgZyA9IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW11cbiAgICAgIH07XG4gICAgICBnLm5vZGVzLnB1c2goe1xuICAgICAgICBpZDogXCIwXCIsXG4gICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICBmcmVxdWVudFNpemUxU3ViZ3JhcGhzLnB1c2goZyk7IC8vIGlmIChtaW5Ob2RlTnVtIDw9IDEpIHJlcG9ydFNpemUxIFRPRE9cbiAgICB9KTtcbiAgICByZXR1cm4gZnJlcXVlbnRTaXplMVN1YmdyYXBocztcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7IC8vIC0tLS0tLS0tIOesrOS4gOatpSwgX2dlbmVyYXRlXzFlZGdlX2ZyZXF1ZW50X3N1YmdyYXBoc++8mumikee5geeahOWNleS4quiKgueCuS0tLS0tLS1cblxuXG4gICAgdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMoKTtcbiAgICBpZiAodGhpcy5tYXhOb2RlTnVtIDwgMikgcmV0dXJuO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkOyAvLyBQREZTIOaVsOe7hOeahCBtYXAgTGluZSAzMDRcblxuICAgIHZhciByb290ID0ge307XG4gICAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaElkKSB7XG4gICAgICB2YXIgZ3JhcGggPSBncmFwaHNbZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIExpbmUgMzA2XG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSb290RWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFJvb3RFZGdlcyhncmFwaCwgbm9kZSk7IC8vIExpbmUgMzA4XG5cblxuICAgICAgICBmb3J3YXJkUm9vdEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgdG9Ob2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlTGFiZWwgPSBcIlwiLmNvbmNhdChub2RlLmxhYmVsLCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQodG9Ob2RlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlLmxhYmVsLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlLmxhYmVsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIExpbmUgMzEzXG5cbiAgICBPYmplY3Qua2V5cyhyb290KS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0sXG4gICAgICAgICAgcHJvamVjdGVkID0gX2EucHJvamVjdGVkLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG5vZGVMYWJlbDEsIGVkZ2VMYWJlbCwgbm9kZUxhYmVsMikpO1xuXG4gICAgICBfdGhpcy5zdWJHcmFwaE1pbmluZyhwcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBHU3Bhbjtcbn0oKTtcblxudmFyIGZvcm1hdEdyYXBocyA9IGZ1bmN0aW9uIGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGkpIHtcbiAgICB2YXIgZ3JhcGggPSBncmFwaHNba2V5XTtcbiAgICB2YXIgZkdyYXBoID0gbmV3IF9zdHJ1Y3QuR3JhcGgoaSwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlSWR4TWFwID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaikge1xuICAgICAgZkdyYXBoLmFkZE5vZGUoaiwgbm9kZVtub2RlTGFiZWxQcm9wXSk7XG4gICAgICBub2RlSWR4TWFwW25vZGUuaWRdID0gajtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlLCBrKSB7XG4gICAgICB2YXIgc291cmNlSWR4ID0gbm9kZUlkeE1hcFtlZGdlLnNvdXJjZV07XG4gICAgICB2YXIgdGFyZ2V0SWR4ID0gbm9kZUlkeE1hcFtlZGdlLnRhcmdldF07XG4gICAgICBmR3JhcGguYWRkRWRnZSgtMSwgc291cmNlSWR4LCB0YXJnZXRJZHgsIGVkZ2VbZWRnZUxhYmVsUHJvcF0pO1xuICAgIH0pO1xuICAgIGlmIChmR3JhcGggJiYgZkdyYXBoLmdldE5vZGVOdW0oKSkgcmVzdWx0W2ZHcmFwaC5pZF0gPSBmR3JhcGg7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIHRvR3JhcGhEYXRhcyA9IGZ1bmN0aW9uIHRvR3JhcGhEYXRhcyhncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGgpIHtcbiAgICB2YXIgZ3JhcGhEYXRhID0ge1xuICAgICAgbm9kZXM6IFtdLFxuICAgICAgZWRnZXM6IFtdXG4gICAgfTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5ub2Rlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KG5vZGUuaWQpXG4gICAgICB9LCBfYVtub2RlTGFiZWxQcm9wXSA9IG5vZGUubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIF9hO1xuXG4gICAgICBncmFwaERhdGEuZWRnZXMucHVzaCgoX2EgPSB7XG4gICAgICAgIHNvdXJjZTogXCJcIi5jb25jYXQoZWRnZS5mcm9tKSxcbiAgICAgICAgdGFyZ2V0OiBcIlwiLmNvbmNhdChlZGdlLnRvKVxuICAgICAgfSwgX2FbZWRnZUxhYmVsUHJvcF0gPSBlZGdlLmxhYmVsLCBfYSkpO1xuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKGdyYXBoRGF0YSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIERFRkFVTFRfTEFCRUxfTkFNRSA9IFwiY2x1c3RlclwiO1xuLyoqXG4gKiBnU3BhbiDpopHnuYHlrZDlm77orqHnrpfnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvIlcbiAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXG4gKi9cblxudmFyIGdTcGFuID0gZnVuY3Rpb24gZ1NwYW4ocGFyYW1zKSB7XG4gIC8vIC0tLS0tLS0g5bCG5Zu+5pWw5o2uIEdyYXBoRGF0YSDnmoQgbWFwIOi9rOaNouS4uuagvOW8jyAtLS0tLS0tXG4gIHZhciBncmFwaHMgPSBwYXJhbXMuZ3JhcGhzLFxuICAgICAgX2EgPSBwYXJhbXMuZGlyZWN0ZWQsXG4gICAgICBkaXJlY3RlZCA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hLFxuICAgICAgX2IgPSBwYXJhbXMubm9kZUxhYmVsUHJvcCxcbiAgICAgIG5vZGVMYWJlbFByb3AgPSBfYiA9PT0gdm9pZCAwID8gREVGQVVMVF9MQUJFTF9OQU1FIDogX2IsXG4gICAgICBfYyA9IHBhcmFtcy5lZGdlTGFiZWxQcm9wLFxuICAgICAgZWRnZUxhYmVsUHJvcCA9IF9jID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYztcbiAgdmFyIGZvcm1hdHRlZEdyYXBocyA9IGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgdmFyIG1pblN1cHBvcnQgPSBwYXJhbXMubWluU3VwcG9ydCxcbiAgICAgIG1heE5vZGVOdW0gPSBwYXJhbXMubWF4Tm9kZU51bSxcbiAgICAgIG1pbk5vZGVOdW0gPSBwYXJhbXMubWluTm9kZU51bSxcbiAgICAgIHZlcmJvc2UgPSBwYXJhbXMudmVyYm9zZSxcbiAgICAgIHRvcCA9IHBhcmFtcy50b3A7IC8vIC0tLS0tLS0g5Yid5aeL5YyW5LiO5omn6KGM566X5rOVIC0tLS0tLS1cblxuICB2YXIgYWxnb1BhcmFtcyA9IHtcbiAgICBncmFwaHM6IGZvcm1hdHRlZEdyYXBocyxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1heE5vZGVOdW06IG1heE5vZGVOdW0sXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICB0b3A6IHRvcCxcbiAgICB2ZXJib3NlOiB2ZXJib3NlLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9O1xuICB2YXIgY2FsY3VsYXRvciA9IG5ldyBHU3BhbihhbGdvUGFyYW1zKTtcbiAgY2FsY3VsYXRvci5ydW4oKTtcbiAgdmFyIHJlc3VsdCA9IHRvR3JhcGhEYXRhcyhjYWxjdWxhdG9yLmZyZXF1ZW50U3ViZ3JhcGhzLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGdTcGFuO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VACANT_NODE_LABEL = exports.VACANT_NODE_ID = exports.VACANT_GRAPH_ID = exports.VACANT_EDGE_LABEL = exports.VACANT_EDGE_ID = exports.Node = exports.Graph = exports.Edge = exports.AUTO_EDGE_ID = void 0;\nvar VACANT_EDGE_ID = -1;\nexports.VACANT_EDGE_ID = VACANT_EDGE_ID;\nvar VACANT_NODE_ID = -1;\nexports.VACANT_NODE_ID = VACANT_NODE_ID;\nvar VACANT_EDGE_LABEL = \"-1\";\nexports.VACANT_EDGE_LABEL = VACANT_EDGE_LABEL;\nvar VACANT_NODE_LABEL = \"-1\";\nexports.VACANT_NODE_LABEL = VACANT_NODE_LABEL;\nvar VACANT_GRAPH_ID = -1;\nexports.VACANT_GRAPH_ID = VACANT_GRAPH_ID;\nvar AUTO_EDGE_ID = \"-1\";\nexports.AUTO_EDGE_ID = AUTO_EDGE_ID;\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\nexports.Edge = Edge;\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\nexports.Node = Node;\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\nexports.Graph = Graph;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanM/NGQzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuVkFDQU5UX05PREVfTEFCRUwgPSBleHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gZXhwb3J0cy5WQUNBTlRfR1JBUEhfSUQgPSBleHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IGV4cG9ydHMuTm9kZSA9IGV4cG9ydHMuR3JhcGggPSBleHBvcnRzLkVkZ2UgPSBleHBvcnRzLkFVVE9fRURHRV9JRCA9IHZvaWQgMDtcbnZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IFZBQ0FOVF9FREdFX0lEO1xudmFyIFZBQ0FOVF9OT0RFX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gVkFDQU5UX05PREVfSUQ7XG52YXIgVkFDQU5UX0VER0VfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gVkFDQU5UX0VER0VfTEFCRUw7XG52YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0xBQkVMID0gVkFDQU5UX05PREVfTEFCRUw7XG52YXIgVkFDQU5UX0dSQVBIX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9HUkFQSF9JRCA9IFZBQ0FOVF9HUkFQSF9JRDtcbnZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5leHBvcnRzLkFVVE9fRURHRV9JRCA9IEFVVE9fRURHRV9JRDtcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBFZGdlKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfRURHRV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKHRvID09PSB2b2lkIDApIHtcbiAgICAgIHRvID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX0VER0VfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgdGhpcy50byA9IHRvO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIHJldHVybiBFZGdlO1xufSgpO1xuXG5leHBvcnRzLkVkZ2UgPSBFZGdlO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0cy5Ob2RlID0gTm9kZTtcblxudmFyIEdyYXBoID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGgoaWQsIGVkZ2VJZEF1dG9JbmNyZWFzZSwgZGlyZWN0ZWQpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfTk9ERV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZWRnZUlkQXV0b0luY3JlYXNlID09PSB2b2lkIDApIHtcbiAgICAgIGVkZ2VJZEF1dG9JbmNyZWFzZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZWRnZUlkQXV0b0luY3JlYXNlID0gZWRnZUlkQXV0b0luY3JlYXNlO1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVzID0gW107XG4gICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gICAgdGhpcy5ub2RlTGFiZWxNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgdGhpcy5kaXJlY3RlZCA9IGRpcmVjdGVkO1xuICB9XG5cbiAgR3JhcGgucHJvdG90eXBlLmdldE5vZGVOdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKGlkLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLm5vZGVNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIG5vZGUgPSBuZXcgTm9kZShpZCwgbGFiZWwpO1xuICAgIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICB0aGlzLm5vZGVNYXBbaWRdID0gbm9kZTtcbiAgICBpZiAoIXRoaXMubm9kZUxhYmVsTWFwW2xhYmVsXSkgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2goaWQpO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAodGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgfHwgaWQgPT09IHVuZGVmaW5lZCkgaWQgPSB0aGlzLmNvdW50ZXIrKztcbiAgICBpZiAodGhpcy5ub2RlTWFwW2Zyb21dICYmIHRoaXMubm9kZU1hcFt0b10gJiYgdGhpcy5ub2RlTWFwW3RvXS5lZGdlTWFwW2lkXSkgcmV0dXJuO1xuICAgIHZhciBlZGdlID0gbmV3IEVkZ2UoaWQsIGZyb20sIHRvLCBsYWJlbCk7XG4gICAgdGhpcy5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIHRoaXMuZWRnZU1hcFtpZF0gPSBlZGdlO1xuICAgIHRoaXMubm9kZU1hcFtmcm9tXS5hZGRFZGdlKGVkZ2UpO1xuICAgIGlmICghdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcblxuICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgdmFyIHJFZGdlID0gbmV3IEVkZ2UoaWQsIHRvLCBmcm9tLCBsYWJlbCk7XG4gICAgICB0aGlzLm5vZGVNYXBbdG9dLmFkZEVkZ2UockVkZ2UpO1xuICAgICAgdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdLnB1c2gockVkZ2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gR3JhcGg7XG59KCk7XG5cbmV4cG9ydHMuR3JhcGggPSBHcmFwaDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ./floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _gSpan = _interopRequireDefault(__webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util.uniqueId)] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = (0, _floydWarshall.default)(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = (0, _floydWarshall.default)(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, (0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, patternKNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = (0, _gSpan.default)(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = (0, _dijkstra.default)(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = (0, _dijkstra.default)(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\nvar _default = GADDI;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcz9jOTEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLDZEQUFPOztBQUU1Qiw0Q0FBNEMsbUJBQU8sQ0FBQyxvR0FBaUI7O0FBRXJFLG9DQUFvQyxtQkFBTyxDQUFDLGdHQUFlOztBQUUzRCx1Q0FBdUMsbUJBQU8sQ0FBQywwRkFBWTs7QUFFM0QsWUFBWSxtQkFBTyxDQUFDLGtGQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBOztBQUVBO0FBQ0EsOENBQThDO0FBQzlDLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdEQUFnRDs7QUFFaEQ7QUFDQTs7QUFFQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxrQkFBa0IsZ0NBQWdDO0FBQ3hHO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVAseUJBQXlCOztBQUV6Qix1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQ0FBb0M7O0FBRXBDLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsNkRBQTZEO0FBQzdEO0FBQ0E7O0FBRUEsa0VBQWtFO0FBQ2xFO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0Esd0ZBQXdGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1HQUFtRztBQUNuRztBQUNBO0FBQ0Esa0NBQWtDLDRCQUE0Qjs7QUFFOUQsMEZBQTBGOztBQUUxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBLHdDQUF3Qzs7QUFFeEMsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QjtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQO0FBQ0E7O0FBRUEsa0lBQWtJOztBQUVsSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLFFBQVE7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSCwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBOztBQUVBLGlDQUFpQyxRQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Q7O0FBRXREO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0Esd0VBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLDZHQUE2Rzs7QUFFN0c7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0pBQXdKO0FBQ3hKLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RkFBOEY7QUFDOUYsS0FBSyxFQUFFO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdHQUFnRztBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUEsbUJBQW1CLHlCQUF5QjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDLFFBQVE7QUFDOUM7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3RzbGliID0gcmVxdWlyZShcInRzbGliXCIpO1xuXG52YXIgX2Zsb3lkV2Fyc2hhbGwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Zsb3lkV2Fyc2hhbGxcIikpO1xuXG52YXIgX2dTcGFuID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9nU3Bhbi9nU3BhblwiKSk7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiDkuLogZ3JhcGhEYXRhIOS4reavj+S4quiKgueCueeUn+aIkOmCu+WxheWNleWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YVxuICogQHBhcmFtIHNwbVxuICogQHBhcmFtIG5vZGVMYWJlbFByb3BcbiAqIEBwYXJhbSBrIGst6L+R6YK7XG4gKi9cbnZhciBmaW5kS05laWdoYm9yVW5pdHMgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspIHtcbiAgaWYgKG5vZGVMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIG5vZGVMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoayA9PT0gdm9pZCAwKSB7XG4gICAgayA9IDI7XG4gIH1cblxuICB2YXIgdW5pdHMgPSBbXTtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzO1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdW5pdHMucHVzaChmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSk7XG4gIH0pO1xuICByZXR1cm4gdW5pdHM7XG59O1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXQgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIHZhciB1bml0Tm9kZUlkeHMgPSBbaV07XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgdmFyIGxhYmVsQ291bnRNYXAgPSB7fTtcbiAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYsIGopIHtcbiAgICBpZiAodiA8PSBrICYmIGkgIT09IGopIHtcbiAgICAgIHVuaXROb2RlSWR4cy5wdXNoKGopO1xuICAgICAgbmVpZ2hib3JzLnB1c2gobm9kZXNbal0pO1xuICAgICAgdmFyIGxhYmVsID0gbm9kZXNbal1bbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWxhYmVsQ291bnRNYXBbbGFiZWxdKSBsYWJlbENvdW50TWFwW2xhYmVsXSA9IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIGRpc3RzOiBbdl1cbiAgICAgIH07ZWxzZSB7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmNvdW50Kys7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzLnB1c2godik7XG4gICAgICB9XG4gICAgfVxuICB9KTsgLy8g5bCGIGxhYmVsQ291bnRNYXAg5Lit55qEIGRpc3RzIOaMieeFp+S7juWwj+WIsOWkp+aOkuW6j++8jOaWueS+v+WQjumdouS9v+eUqFxuXG4gIE9iamVjdC5rZXlzKGxhYmVsQ291bnRNYXApLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMgPSBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVJZHg6IGksXG4gICAgbm9kZUlkOiBub2Rlc1tpXS5pZCxcbiAgICBub2RlSWR4czogdW5pdE5vZGVJZHhzLFxuICAgIG5laWdoYm9yczogbmVpZ2hib3JzLFxuICAgIG5laWdoYm9yTnVtOiB1bml0Tm9kZUlkeHMubGVuZ3RoIC0gMSxcbiAgICBub2RlTGFiZWxDb3VudE1hcDogbGFiZWxDb3VudE1hcFxuICB9O1xufTtcbi8qKlxuICog6ZqP5py65a+75om+54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGtcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbm9kZU51bSDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbWF4Tm9kZVBhaXJOdW0g5a+75om+54K55a+555qE5pWw6YeP5LiN6LaF6L+HIG1heE5vZGVQYWlyTnVtXG4gKiBAcGFyYW0gc3BtIOacgOefrei3r+W+hOefqemYtVxuICovXG5cblxudmFyIGZpbmROb2RlUGFpcnNSYW5kb21seSA9IGZ1bmN0aW9uIGZpbmROb2RlUGFpcnNSYW5kb21seShrLCBub2RlTnVtLCBtYXhOb2RlUGFpck51bSwga05laWdoYm9yVW5pdHMsIHNwbSkge1xuICAvLyDmr4/kuKroioLngrnpnIDopoHpmo/mnLrmib7lh7rnmoTngrnlr7nmlbBcbiAgdmFyIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSBNYXRoLmNlaWwobWF4Tm9kZVBhaXJOdW0gLyBub2RlTnVtKTtcbiAgdmFyIG5vZGVQYWlyTWFwID0ge307XG4gIHZhciBmb3VuZE5vZGVQYWlyQ291bnQgPSAwOyAvLyDpgY3ljoboioLngrnvvIzkuLrmr4/kuKroioLngrnpmo/mnLrmib7lh7ogbm9kZVBhaXJOdW1FYWNoTm9kZSDkuKrngrnlr7nvvIzmu6HotrPot53nprvlsI/kuo4ga+OAguaJvuWIsOeahOeCueWvueaVsOmHj+i2hei/hyBtYXhOb2RlUGFpck51bSDmiJbmiYDmnInoioLngrnpgY3ljobnu5PmnZ/ml7bnu4jmraJcblxuICBrTmVpZ2hib3JVbml0cy5mb3JFYWNoKGZ1bmN0aW9uICh1bml0LCBpKSB7XG4gICAgLy8g6Iul5pyq6L6+5YiwIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzmiJblvqrnjq/mrKHmlbDlsI/kuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p77yM57un57ut5b6q546vXG4gICAgdmFyIG5vZGVQYWlyRm9ySUNvdW50ID0gMDtcbiAgICB2YXIgb3V0ZXJMb29wQ291bnQgPSAwO1xuICAgIHZhciBuZWlnaGJvcnMgPSB1bml0Lm5vZGVJZHhzOyAvLyB0aGUgZmlyc3Qgb25lIGlzIHRoZSBjZW50ZXIgbm9kZVxuXG4gICAgdmFyIG5laWdoYm9yTnVtID0gdW5pdC5uZWlnaGJvck51bSAtIDE7XG5cbiAgICB3aGlsZSAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICAvLyDlj6bkuIDnq6/oioLngrnlnKjoioLngrnmlbDnu4TkuK3nmoTnmoQgaW5kZXhcbiAgICAgIHZhciBvaWR4ID0gbmVpZ2hib3JzWzEgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZWlnaGJvck51bSldO1xuICAgICAgdmFyIGlubmVyTG9vcENvdW50ID0gMDsgLy8g6Iul6ZqP5py65b6X5Yiw55qE5Y+m5LiA56uvIGlkeCDkuI3nrKblkIjmnaHku7bvvIzliJnnu6fnu60gcmFuZG9t44CC5p2h5Lu25piv5LiN5piv5ZCM5LiA5Liq6IqC54K544CB6L+Z5Liq54K55a+55rKh5pyJ6KKr6K6w5b2V6L+H44CB6Led56a75bCP5LqOIGtcblxuICAgICAgd2hpbGUgKG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGksIFwiLVwiKS5jb25jYXQob2lkeCldIHx8IG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KG9pZHgsIFwiLVwiKS5jb25jYXQoaSldKSB7XG4gICAgICAgIG9pZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBub2RlTnVtKTtcbiAgICAgICAgaW5uZXJMb29wQ291bnQrKztcbiAgICAgICAgaWYgKGlubmVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgICB9XG5cbiAgICAgIGlmIChpbm5lckxvb3BDb3VudCA8IDIgKiBub2RlTnVtKSB7XG4gICAgICAgIC8vIOacqui+vuWIsOacgOWkp+W+queOr+asoeaVsO+8jOivtOaYjuaJvuWIsOS6huWQiOmAgueahOWPpuS4gOerr1xuICAgICAgICBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSA9IHtcbiAgICAgICAgICBzdGFydDogaSxcbiAgICAgICAgICBlbmQ6IG9pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IHNwbVtpXVtvaWR4XVxuICAgICAgICB9O1xuICAgICAgICBub2RlUGFpckZvcklDb3VudCsrO1xuICAgICAgICBmb3VuZE5vZGVQYWlyQ291bnQrKzsgLy8g5aaC5p6c5b2T5YmN5om+5Yiw55qE54K55a+55pWw6YeP6L6+5Yiw5LqG5LiK6ZmQ77yM6L+U5Zue57uT5p6cXG5cbiAgICAgICAgaWYgKGZvdW5kTm9kZVBhaXJDb3VudCA+PSBtYXhOb2RlUGFpck51bSkgcmV0dXJuIG5vZGVQYWlyTWFwO1xuICAgICAgfVxuXG4gICAgICBvdXRlckxvb3BDb3VudCsrO1xuICAgICAgaWYgKG91dGVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgfSAvLyDov5nkuKroioLngrnmsqHmnInmib7liLDotrPlpJ8gbm9kZVBhaXJOdW1FYWNoTm9kZSDnmoTngrnlr7njgILmm7TmlrAgbm9kZVBhaXJOdW1FYWNoTm9kZe+8jOiuqeWQjue7reiKgueCueaJvuabtOWkmueahOeCueWvuVxuXG5cbiAgICBpZiAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICB2YXIgZ2FwID0gbm9kZVBhaXJOdW1FYWNoTm9kZSAtIG5vZGVQYWlyRm9ySUNvdW50O1xuICAgICAgbm9kZVBhaXJOdW1FYWNoTm9kZSA9IChub2RlUGFpck51bUVhY2hOb2RlICsgZ2FwKSAvIChub2RlTnVtIC0gaSAtIDEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBub2RlUGFpck1hcDtcbn07XG4vKipcbiAqIOiuoeeul+aJgOaciSBub2RlUGFpck1hcCDkuK3oioLngrnlr7nnmoTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm75cbiAqIEBwYXJhbSBub2RlUGFpck1hcCDoioLngrnlr7kgbWFw77yMa2V5IOS4uiBub2RlMS5pZC1ub2RlMi5pZO+8jHZhbHVlIOS4uiB7IHN0YXJ0Tm9kZUlkeCwgZW5kTm9kZUlkeCwgZGlzdGFuY2UgfVxuICogQHBhcmFtIG5laWdoYm9yVW5pdHMg5q+P5Liq6IqC54K555qE6YK75bGF5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIGVkZ2VNYXAg6L6555qEIG1hcO+8jOaWueS+v+ajgOe0olxuICogQHBhcmFtIGNhY2hlZEluZHVjZWRHcmFwaE1hcCDnvJPlrZjnmoTnu5PmnpzvvIzkuIvmrKHov5vlhaXor6Xlh73mlbDlsIbnu6fnu63mm7TmlrDor6XnvJPlrZjvvIzoi6Uga2V5IOWcqOe8k+WtmOS4reWtmOWcqOWImeS4jemcgOimgemHjeWkjeiuoeeul1xuICovXG5cblxudmFyIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoID0gZnVuY3Rpb24gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgobm9kZVBhaXJNYXAsIG5laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSwgY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSB7XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgaWYgKCFjYWNoZWRJbmR1Y2VkR3JhcGhNYXApIGNhY2hlZEluZHVjZWRHcmFwaE1hcCA9IHt9O1xuICBPYmplY3Qua2V5cyhub2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIGlmIChjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgJiYgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0pIHJldHVybjtcbiAgICBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XSA9IHtcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gICAgdmFyIHBhaXIgPSBub2RlUGFpck1hcFtrZXldO1xuICAgIHZhciBzdGFydFVuaXROb2RlSWRzID0gKF9hID0gbmVpZ2hib3JVbml0c1twYWlyLnN0YXJ0XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZHhzO1xuICAgIHZhciBlbmRVbml0Tm9kZUlkcyA9IChfYiA9IG5laWdoYm9yVW5pdHNbcGFpci5lbmRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iubm9kZUlkeHM7XG4gICAgaWYgKCFzdGFydFVuaXROb2RlSWRzIHx8ICFlbmRVbml0Tm9kZUlkcykgcmV0dXJuOyAvLyDkuI3lrZjlnKjpgrvlhYPvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBlbmRTZXQgPSBuZXcgU2V0KGVuZFVuaXROb2RlSWRzKTtcbiAgICB2YXIgaW50ZXJzZWN0ID0gc3RhcnRVbml0Tm9kZUlkcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBlbmRTZXQuaGFzKHgpO1xuICAgIH0pOyAvLyDlj6/og73kvJrniIbmoIjvvIjlnKggMTU4MCArIDYgbm9kZXMgZnVsbC1jb25uZWN0ZWQg5pe25Ye6546w77yJXG5cbiAgICBpZiAoIWludGVyc2VjdCB8fCAhaW50ZXJzZWN0Lmxlbmd0aCkgcmV0dXJuOyAvLyDmsqHmnInkuqTpm4bvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBpbnRlcnNlY3RJZE1hcCA9IHt9O1xuICAgIHZhciBpbnRlcnNlY3RMZW5ndGggPSBpbnRlcnNlY3QubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnRlcnNlY3RMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpbnRlcnNlY3RbaV1dO1xuICAgICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0ubm9kZXMucHVzaChub2RlKTsgLy8g5bCG5Lqk6ZuG5Lit55qE54K55Yqg5YWl6K+x5a+85a2Q5Zu+XG5cbiAgICAgIGludGVyc2VjdElkTWFwW25vZGUuaWRdID0gdHJ1ZTtcbiAgICB9IC8vIOmBjeWOhuaJgOaciei+ueaVsOaNru+8jOWmguaenOi+ueeahOS4pOerr+mDveWcqOS6pOmbhuS4re+8jOWwhuivpei+ueWKoOWFpeivseWvvOWtkOWbvlxuXG5cbiAgICBncmFwaERhdGEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGludGVyc2VjdElkTWFwW2VkZ2Uuc291cmNlXSAmJiBpbnRlcnNlY3RJZE1hcFtlZGdlLnRhcmdldF0pIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY2FjaGVkSW5kdWNlZEdyYXBoTWFwO1xufTtcbi8qKlxuICog6K6h566XIHN0cmN1dHJlIOWcqCBncmFwaCDkuIrnmoTljLnphY3mlbDph49cbiAqIEBwYXJhbSBncmFwaCDlm77mlbDmja5cbiAqIEBwYXJhbSBzdHJ1Y3R1cmUg55uu5YmN5pSv5oyB5Y+q5pyJ5Lik5Liq6IqC54K55LiA5p2h6L6555qE5pyA566A5Y2V57uT5p6EXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnnsbvlnovlrZfmrrXlkI1cbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueexu+Wei+Wtl+auteWQjVxuICovXG5cblxudmFyIGdldE1hdGNoZWRDb3VudCA9IGZ1bmN0aW9uIGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYSwgX2I7XG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcbiAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICB9KTtcbiAgdmFyIGNvdW50ID0gMDtcbiAgaWYgKCEoKF9hID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLmVkZ2VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAoKF9iID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA8IDIpIHJldHVybiAwO1xuICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsID0gbm9kZU1hcFtlLnNvdXJjZV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHRhcmdldExhYmVsID0gbm9kZU1hcFtlLnRhcmdldF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDEgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDIgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ckVkZ2VMYWJlbCA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlc1swXVtlZGdlTGFiZWxQcm9wXTtcbiAgICBpZiAoZVtlZGdlTGFiZWxQcm9wXSAhPT0gc3RyRWRnZUxhYmVsKSByZXR1cm47XG5cbiAgICBpZiAoc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDEgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgfHwgc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDEpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbi8qKlxuICogc3RydWN0dXJlcyDkuK3lr7vmib7mnIDlhbfmnInku6PooajmgKfnmoTkuIDkuKrjgILov5nkuKrnu5PmnoTmmK/kvb/lvpcgbWF0Y2hlZENvdW50TWFwIOeahOWIhue7hOaWueW8j+exu+WGhemXtOi3neacgOWwj++8jOexu+mXtOmXtOi3neacgOWkp1xuICogQHBhcmFtIG1hdGNoZWRDb3VudE1hcCDmr4/kuKogc3RydWN0dXJlIOWIhuexu+WQjueahOWQhOWbvuWMuemFjeaVsOmHj++8jOagvOW8jyB7IFtzdHJjdHVyZS5pZHhdOiB7IFtpbnRlckluZHVjZWRHcmFwaEtleV06IGNvdW50IH0gfVxuICogQHBhcmFtIHN0cnVjdHVyZU51bSBzdHJjdXR1cmUg5Liq5pWw77yM5LiOIG1hdGNoZWRDb3VudE1hcC5sZW5ndGgg5a+55bqUXG4gKiBAcGFyYW0gc3RydWN0dXJlc1xuICovXG5cblxudmFyIGZpbmRSZXByZXNlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbiBmaW5kUmVwcmVzZW50U3RydWN0dXJlKG1hdGNoZWRDb3VudE1hcCwgc3RydWN0dXJlTnVtLCBzdHJ1Y3R1cmVzKSB7XG4gIHZhciBtYXhPZmZzZXQgPSBJbmZpbml0eSxcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gMDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIOS4gOenjeWIhue7hOeahCBtYXDvvIxrZXkg5pivIGludEdyYXBoIOeahCBrZXnvvIx2YWx1ZSDmmK8gc3RydWN0dXJlc1tpXSDnmoTljLnphY3kuKrmlbBcbiAgICB2YXIgY291bnRNYXBJID0gbWF0Y2hlZENvdW50TWFwW2ldOyAvLyDmjInnhacgdmFsdWUg5Li66K+l57uE5o6S5bqP77yM55Sf5oiQIGtleXMg55qE5pWw57uE77yaXG5cbiAgICB2YXIgc29ydGVkR3JhcGhLZXlzID0gT2JqZWN0LmtleXMoY291bnRNYXBJKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gY291bnRNYXBJW2FdIC0gY291bnRNYXBJW2JdO1xuICAgIH0pOyAvLyDlhbEgMTAwIOS4qiBncmFwaEtleXPvvIzlsIYgZ3JhcGhLZXlzIOaMiemhuuW6j+WIhuS4uiBncm91cE51bSDnu4RcblxuICAgIHZhciBncm91cE51bSA9IDEwO1xuICAgIHZhciBjbHVzdGVycyA9IFtdOyAvLyDmgLvlhbHmnIkgZ3JvdXBOdW0g5Liq6aG5XG5cbiAgICBzb3J0ZWRHcmFwaEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBqKSB7XG4gICAgICBpZiAoIWNsdXN0ZXJzW2ogJSBncm91cE51bV0pIGNsdXN0ZXJzW2ogJSBncm91cE51bV0gPSB7XG4gICAgICAgIGdyYXBoczogW10sXG4gICAgICAgIHRvdGFsQ291bnQ6IDAsXG4gICAgICAgIGF2ZUNvdW50OiAwXG4gICAgICB9O1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS5ncmFwaHMucHVzaChrZXkpO1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS50b3RhbENvdW50ICs9IGNvdW50TWFwSVtrZXldO1xuICAgIH0pOyAvLyDorqHnrpcgY2x1c3RlciDkuI4gY2x1c3RlciDkuYvpl7TnmoTot53nprsgaW5uZXJEaXN077yM5q+P5LiqIGNsdXN0ZXIg5YaF6YOo55qE6Led56a7IGludHJhRGlzdFxuXG4gICAgdmFyIGF2ZUludHJhRGlzdCA9IDA7IC8vIOivpeexu+eahOexu+WGheW5s+Wdh+WAvFxuXG4gICAgdmFyIGF2ZUNvdW50cyA9IFtdOyAvLyDnsbvlhoXlubPlnYfljLnphY3mlbDph4/vvIzlsIbnlKjkuo7orqHnrpfnsbvpl7Tot53nprtcblxuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoc0luQ2x1c3Rlcikge1xuICAgICAgLy8g57G75YaF5Z2H5YC8XG4gICAgICB2YXIgYXZlQ291bnQgPSBncmFwaHNJbkNsdXN0ZXIudG90YWxDb3VudCAvIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmF2ZUNvdW50ID0gYXZlQ291bnQ7XG4gICAgICBhdmVDb3VudHMucHVzaChhdmVDb3VudCk7IC8vIOWvueS6juavj+exu++8jOiuoeeul+exu+WGhemXtOi3neW5s+Wdh+WAvFxuXG4gICAgICB2YXIgYXZlSW50cmFQZXJDbHVzdGVyID0gMDtcbiAgICAgIHZhciBncmFwaHNOdW0gPSBncmFwaHNJbkNsdXN0ZXIubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaEtleTEsIGopIHtcbiAgICAgICAgdmFyIGdyYXBoMUNvdW50ID0gY291bnRNYXBJW2dyYXBoS2V5MV07XG4gICAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkyLCBrKSB7XG4gICAgICAgICAgaWYgKGogPT09IGspIHJldHVybjtcbiAgICAgICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgKz0gTWF0aC5hYnMoZ3JhcGgxQ291bnQgLSBjb3VudE1hcElbZ3JhcGhLZXkyXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgLz0gZ3JhcGhzTnVtICogKGdyYXBoc051bSAtIDEpIC8gMjtcbiAgICAgIGF2ZUludHJhRGlzdCArPSBhdmVJbnRyYVBlckNsdXN0ZXI7XG4gICAgfSk7XG4gICAgYXZlSW50cmFEaXN0IC89IGNsdXN0ZXJzLmxlbmd0aDsgLy8g55So57G75YaF5Z2H5YC86K6h566X57G76Ze06LedXG5cbiAgICB2YXIgYXZlSW50ZXJEaXN0ID0gMDsgLy8g57G76Ze06Ze06Led5bmz5Z2H5YC8XG5cbiAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQxLCBqKSB7XG4gICAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQyLCBrKSB7XG4gICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgIGF2ZUludGVyRGlzdCArPSBNYXRoLmFicyhhdmVDb3VudDEgLSBhdmVDb3VudDIpO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRlckRpc3QgLz0gYXZlQ291bnRzLmxlbmd0aCAqIChhdmVDb3VudHMubGVuZ3RoIC0gMSkgLyAyO1xuICAgIH0pOyAvLyDlr7vmib4gKOexu+mXtOmXtOi3neWdh+WAvC3nsbvlhoXpl7Tot53lnYflgLwpIOacgOWkp+eahOS4gOenjeWIhue7hOaWueW8j++8iOWvueW6lOeahCBzdHJ1Y3R1cmUg5bCx5piv5pyA57uI6KaB5om+55qE5ZSv5LiAIERTKEcp77yJXG5cbiAgICB2YXIgb2Zmc2V0ID0gYXZlSW50ZXJEaXN0IC0gYXZlSW50cmFEaXN0O1xuXG4gICAgaWYgKG1heE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgbWF4T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmVwcmVzZW50Q2x1c3RlclR5cGUgPSBpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnVjdHVyZU51bTsgaSsrKSB7XG4gICAgX2xvb3BfMShpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RydWN0dXJlOiBzdHJ1Y3R1cmVzW3JlcHJlc2VudENsdXN0ZXJUeXBlXSxcbiAgICBzdHJ1Y3R1cmVDb3VudE1hcDogbWF0Y2hlZENvdW50TWFwW3JlcHJlc2VudENsdXN0ZXJUeXBlXVxuICB9O1xufTtcblxudmFyIGdldE5vZGVNYXBzID0gZnVuY3Rpb24gZ2V0Tm9kZU1hcHMobm9kZXMsIG5vZGVMYWJlbFByb3ApIHtcbiAgdmFyIG5vZGVNYXAgPSB7fSxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBkZWdyZWU6IDAsXG4gICAgICBpbkRlZ3JlZTogMCxcbiAgICAgIG91dERlZ3JlZTogMFxuICAgIH07XG4gICAgdmFyIGxhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICBpZiAoIW5vZGVMYWJlbE1hcFtsYWJlbF0pIG5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICBub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2gobm9kZSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVNYXA6IG5vZGVNYXAsXG4gICAgbm9kZUxhYmVsTWFwOiBub2RlTGFiZWxNYXBcbiAgfTtcbn07XG5cbnZhciBnZXRFZGdlTWFwcyA9IGZ1bmN0aW9uIGdldEVkZ2VNYXBzKGVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKSB7XG4gIHZhciBlZGdlTWFwID0ge30sXG4gICAgICBlZGdlTGFiZWxNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSwgaSkge1xuICAgIGVkZ2VNYXBbXCJcIi5jb25jYXQoX3V0aWwudW5pcXVlSWQpXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIGVkZ2U6IGVkZ2VcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IGVkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKCFlZGdlTGFiZWxNYXBbbGFiZWxdKSBlZGdlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuICAgIHZhciBzb3VyY2VOb2RlID0gbm9kZU1hcFtlZGdlLnNvdXJjZV07XG5cbiAgICBpZiAoc291cmNlTm9kZSkge1xuICAgICAgc291cmNlTm9kZS5kZWdyZWUrKztcbiAgICAgIHNvdXJjZU5vZGUub3V0RGVncmVlKys7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldE5vZGUgPSBub2RlTWFwW2VkZ2UudGFyZ2V0XTtcblxuICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmRlZ3JlZSsrO1xuICAgICAgdGFyZ2V0Tm9kZS5pbkRlZ3JlZSsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZWRnZU1hcDogZWRnZU1hcCxcbiAgICBlZGdlTGFiZWxNYXA6IGVkZ2VMYWJlbE1hcFxuICB9O1xufTtcbi8qKlxuICog6L6T5Ye65pyA55+t6Lev5b6E55qEIG1hcO+8jGtleSDkuLogc291cmNlTm9kZS5pZC10YXJnZXROb2RlLmlk77yMdmFsdWUg5Li66L+Z5Lik5Liq6IqC54K555qE5pyA55+t6Lev5b6E6ZW/5bqmXG4gKiBAcGFyYW0gbm9kZXNcbiAqIEBwYXJhbSBzcG1cbiAqIEBwYXJhbSBkaXJlY3RlZFxuICovXG5cblxudmFyIGdldFNwbU1hcCA9IGZ1bmN0aW9uIGdldFNwbU1hcChub2Rlcywgc3BtLCBkaXJlY3RlZCkge1xuICB2YXIgbGVuZ3RoID0gc3BtLmxlbmd0aDtcbiAgdmFyIG1hcCA9IHt9O1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIHN0YXJ0ID0gZGlyZWN0ZWQgPyAwIDogaSArIDE7XG4gICAgdmFyIGlJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBqSWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIHZhciBkaXN0ID0gcm93W2pdO1xuICAgICAgbWFwW1wiXCIuY29uY2F0KGlJZCwgXCItXCIpLmNvbmNhdChqSWQpXSA9IGRpc3Q7XG4gICAgICBpZiAoIWRpcmVjdGVkKSBtYXBbXCJcIi5jb25jYXQoaklkLCBcIi1cIikuY29uY2F0KGlJZCldID0gZGlzdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbWFwO1xufTtcbi8qKlxuICog6K6h566X5LiA5a+56IqC54K577yIbm9kZTHvvIxub2RlMu+8ieeahCBORFMg6Led56a7XG4gKiBAcGFyYW0gZ3JhcGgg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZTFcbiAqIEBwYXJhbSBub2RlMlxuICovXG5cblxudmFyIGdldE5EU0Rpc3QgPSBmdW5jdGlvbiBnZXRORFNEaXN0KGdyYXBoLCBub2RlMSwgbm9kZTIsIG5vZGVNYXAsIHNwRGlzdCwga05laWdoYm9yVW5pdHMsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCwgY2FjaGVkTkRTTWFwLCBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCkge1xuICB2YXIgX2E7XG5cbiAgdmFyIGtleSA9IFwiXCIuY29uY2F0KG5vZGUxLmlkLCBcIi1cIikuY29uY2F0KG5vZGUyLmlkKTtcbiAgaWYgKGNhY2hlZE5EU01hcCAmJiBjYWNoZWRORFNNYXBba2V5XSkgcmV0dXJuIGNhY2hlZE5EU01hcFtrZXldO1xuICB2YXIgaW50ZXJJbmR1Y2VkR3JhcGggPSBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA/IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV0gOiB1bmRlZmluZWQ7IC8vIOiLpeayoeaciee8k+WtmOebuOS6pOmCu+WxheivseWvvOWtkOWbvu+8jOiuoeeul1xuXG4gIGlmICghaW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgICB2YXIgcGFpck1hcCA9IChfYSA9IHt9LCBfYVtrZXldID0ge1xuICAgICAgc3RhcnQ6IG5vZGVNYXBbbm9kZTEuaWRdLmlkeCxcbiAgICAgIGVuZDogbm9kZU1hcFtub2RlMi5pZF0uaWR4LFxuICAgICAgZGlzdGFuY2U6IHNwRGlzdFxuICAgIH0sIF9hKTtcbiAgICBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKHBhaXJNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpO1xuICAgIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGhba2V5XTtcbiAgfVxuXG4gIHJldHVybiBnZXRNYXRjaGVkQ291bnQoaW50ZXJJbmR1Y2VkR3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG59O1xuLyoqXG4gKiDorqHnrpcgcGF0dGVybiDkuIrnu6nngrnnmoTluqbmlbDlubblrZjlgqjliLAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFxuICovXG5cblxudmFyIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCA9IGZ1bmN0aW9uIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBuZWlnaGJvckxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCkge1xuICB2YXIgX2EsIF9iLCBfYztcblxuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IChfYSA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSAoX2IgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5EZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gKF9jID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm91dERlZ3JlZTtcblxuICBpZiAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBJbmZpbml0eTtcbiAgICBwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdLmZvckVhY2goZnVuY3Rpb24gKHBhdHRlcm5Ob2RlV2l0aExhYmVsKSB7XG4gICAgICB2YXIgcGF0dGVybk5vZGVEZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uZGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPiBwYXR0ZXJuTm9kZURlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IHBhdHRlcm5Ob2RlRGVncmVlO1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlSW5EZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uaW5EZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID4gcGF0dGVybk5vZGVJbkRlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gcGF0dGVybk5vZGVJbkRlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZU91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5Ob2RlV2l0aExhYmVsLmlkXS5vdXREZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA+IHBhdHRlcm5Ob2RlT3V0RGVncmVlKSBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gcGF0dGVybk5vZGVPdXREZWdyZWU7XG4gICAgfSk7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9IHtcbiAgICAgIGRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgIGluRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICBvdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgfTtcbn07XG4vKipcbiAqIEdBRERJIOaooeW8j+WMuemFjVxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBwYXR0ZXJuIOaQnOe0ouWbvu+8iOmcgOimgeWcqOWOn+WbvuS4iuaQnOe0oueahOaooeW8j++8ieaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuiuoeeul+acieWQkeWbvu+8jOm7mOiupCBmYWxzZVxuICogQHBhcmFtIGsg5Y+C5pWwIGvvvIzooajnpLogay3ov5HpgrtcbiAqIEBwYXJhbSBsZW5ndGgg5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K55pWw5o2u5Lit5Luj6KGo6IqC54K55qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueaVsOaNruS4reS7o+ihqOi+ueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKi9cblxuXG52YXIgR0FEREkgPSBmdW5jdGlvbiBHQURESShncmFwaERhdGEsIHBhdHRlcm4sIGRpcmVjdGVkLCBrLCBsZW5ndGgsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIF9hO1xuXG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGVkZ2VMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIGVkZ2VMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoIWdyYXBoRGF0YSB8fCAhZ3JhcGhEYXRhLm5vZGVzKSByZXR1cm47IC8vIOWIhuS4uuS4ieatpe+8mlxuICAvLyAwLiDpooTorqHnrpfvvJroioLngrkv6L655pWw77yM6YK75o6l55+p6Zi144CB5pyA55+t6Lev5b6E55+p6Zi1XG4gIC8vIDEuIOWkhOeQhuWOn+WbviBncmFwaERhdGHjgILlho3liIbkuLogMX41IOWwj+atpVxuICAvLyAyLiDljLnphY1cbiAgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmU6IHByZXByb2Nlc3NpbmcgLS0tLS0tLVwiKTtcbiAgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtS0tLS0tLS1cblxuICB2YXIgbm9kZU51bSA9IGdyYXBoRGF0YS5ub2Rlcy5sZW5ndGg7XG4gIGlmICghbm9kZU51bSkgcmV0dXJuOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlLXByZS4xOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IGZvciBncmFwaCAtLS0tLS0tXCIpO1xuXG4gIHZhciBzcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UtcHJlLjI6IGNhbGMgc2hvcnRlc3QgcGF0aCBtYXRyaXggZm9yIHBhdHRlcm4gLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHBhdHRlcm5TcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsICgwLCBfdHNsaWIuX19zcHJlYWRBcnJheSkoKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgc3BtKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTAuMjogZ29pbmcgdG8gY2FsY3VsYXRlIGludGVyc2VjdCBuZWlnaGJvciBpbmR1Y2VkIGdyYXBocyAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gMS4yLiDnlJ/miJDkuIrpnaLoioLngrnlr7nnmoTnm7jlupTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77jgILmoLzlvI/kuLogeydiZWdpbk5vZGVJZHgtZW5kTm9kZUlkeCc6IHtub2RlczogW10sIGVkZ2VzOiBbXX19XG5cbiAgdmFyIGludEdNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChub2RlUGFpcnNNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaERhdGEpOyAvLyAxLjMuIOS9v+eUqCBnU3BhbiDnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvInorqHnrpcgSVNJbnRHIOeahOWJjSAxMCDkuKrpopHnjofmnIDpq5jnmoTlrZDnu5PmnoTvvIgzLTTmnaHovrnvvIlcblxuICB2YXIgdG9wID0gMTAsXG4gICAgICBtaW5TdXBwb3J0ID0gMSxcbiAgICAgIG1pbk5vZGVOdW0gPSAxLFxuICAgICAgbWF4Tm9kZU51bSA9IDQ7XG4gIHZhciBwYXJhbXMgPSB7XG4gICAgZ3JhcGhzOiBpbnRHTWFwLFxuICAgIG5vZGVMYWJlbFByb3A6IG5vZGVMYWJlbFByb3AsXG4gICAgZWRnZUxhYmVsUHJvcDogZWRnZUxhYmVsUHJvcCxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1pbk5vZGVOdW06IG1pbk5vZGVOdW0sXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgfTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTE6IChnU3BhbikgZ29pbmcgdG8gZmluZCBmcmVxdWVudCBzdHJ1Y3R1cmUgZHNHIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBydW4gZ1NwYW4gLS0tLS0tLVwiKTtcbiAgLy8g5pqC5pe25YGH6K6+55Sf5oiQ55qEIHN1YiBzdHJ1Y3R1cmUg6YO95Y+q5pyJ5LiA5p2h6L65XG5cbiAgdmFyIGZyZVN0cnVjdHVyZXMgPSAoMCwgX2dTcGFuLmRlZmF1bHQpKHBhcmFtcykuc2xpY2UoMCwgdG9wKTsgLy8gc3RydWN0dXJlTnVtIOWPr+iDveWwj+S6jiB0b3BcblxuICB2YXIgc3RydWN0dXJlTnVtID0gZnJlU3RydWN0dXJlcy5sZW5ndGg7IC8vIDEuNC4g6K6h566X5LiK6L+wIDEwIOS4quWtkOe7k+aehOWcqCBpbnRHTWFwIOS4reavj+S4quivseWvvOWtkOWbvueahOWMuemFjeS4quaVsFxuXG4gIHZhciBtYXRjaGVkQ291bnRNYXAgPSBbXTtcbiAgZnJlU3RydWN0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChzdHJ1Y3R1cmUsIGkpIHtcbiAgICBtYXRjaGVkQ291bnRNYXBbaV0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhpbnRHTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBncmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgIHZhciBzdWJTdHJ1Y3R1cmVDb3VudCA9IGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgIG1hdGNoZWRDb3VudE1hcFtpXVtrZXldID0gc3ViU3RydWN0dXJlQ291bnQ7XG4gICAgfSk7XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBmaW5kIHRoZSBtb3N0IHJlcHJlc2VudCBzdHJ1Y3V0cmUgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIDEuNS4g5a+55LqO5q+P5Liq5a2Q57uT5p6E77yM5qC55o2u5Yy56YWN5Liq5pWw5Li6IGludEdNYXAg5Lit55qE6K+x5a+85a2Q5Zu+5YiG57uE77yM55Sf5oiQIHN0cnVjdHVyZU51bSDnp43liIbnu4RcbiAgLy8g6K6h566X5q+P56eN5YiG57uE55qE57G76Ze06Led5ZKM57G75YaF6Ze06Led77yM5om+5Yiw57G76Ze06Led5pyA5aSn44CB57G75YaF6Ze06Led5pyA5bCP55qE5LiA56eN5YiG57uE77yM6L+Z56eN5YiG57uE5a+55bqU55qE5a2Q57uT5p6E6KKr6YCJ5Li65ZSv5LiA5Luj6KGo5oCn5a2Q57uT5p6EIERTKEcpXG5cbiAgdmFyIF9kID0gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgZnJlU3RydWN0dXJlcyksXG4gICAgICBkc0cgPSBfZC5zdHJ1Y3R1cmUsXG4gICAgICBuZHNEaXN0ID0gX2Quc3RydWN0dXJlQ291bnRNYXA7IC8vIC0tLS0tLS0tIOesrOS6jOatpe+8jOWMuemFjS0tLS0tLS1cbiAgLy8gMi4xIOaJvuWIsOS7jiBRIOS4reeahOS4gOS4quiKgueCueS9nOS4uui1t+Wni+iKgueCue+8jOWvu+aJviBHIOS4reeahOWMuemFjeOAgui/meS4quWFtuWunuiKgueCueeahOagh+etvuWPr+S7peWcqCBHIOS4reaJvuWIsOacgOWkmueahOiKgueCuVxuXG5cbiAgdmFyIGJlZ2luUE5vZGUgPSBwYXR0ZXJuLm5vZGVzWzBdLFxuICAgICAgY2FuZGlkYXRlcyA9IFtdLFxuICAgICAgbGFiZWwgPSAoX2EgPSBwYXR0ZXJuLm5vZGVzWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fbbm9kZUxhYmVsUHJvcF0sXG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IC1JbmZpbml0eTtcbiAgcGF0dGVybi5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHBMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIG5vZGVzV2l0aFNhbWVMYWJlbCA9IG5vZGVMYWJlbE1hcFtwTGFiZWxdO1xuXG4gICAgaWYgKChub2Rlc1dpdGhTYW1lTGFiZWwgPT09IG51bGwgfHwgbm9kZXNXaXRoU2FtZUxhYmVsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2Rlc1dpdGhTYW1lTGFiZWwubGVuZ3RoKSA+IG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsKSB7XG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IG5vZGVzV2l0aFNhbWVMYWJlbC5sZW5ndGg7XG4gICAgICBjYW5kaWRhdGVzID0gbm9kZXNXaXRoU2FtZUxhYmVsO1xuICAgICAgbGFiZWwgPSBwTGFiZWw7XG4gICAgICBiZWdpblBOb2RlID0gbm9kZTtcbiAgICB9XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMjogZ29pbmcgdG8gZmluZCBjYW5kaWRhdGVzIC0tLS0tLS1cIik7XG4gIC8vIOWFqOWxgOe8k+WtmO+8jOmBv+WFjemHjeWkjeiuoeeul1xuXG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwID0ge307IC8vIGtleSDmmK8gbGFiZWzvvIx2YWx1ZSDmmK/or6UgbGFiZWwg6IqC54K555qE5pyA5bCP5bqm5pWwXG5cbiAgdmFyIHBhdHRlcm5JbnRHcmFwaE1hcCA9IHt9LFxuICAgICAgcGF0dGVybk5EU0Rpc3QgPSB7fSxcbiAgICAgIC8vIGtleSDkuLogbm9kZS5pZC1ub2RlLmlkXG4gIHBhdHRlcm5ORFNEaXN0TWFwID0ge307IC8vIGtleSDkuLogbm9kZS5pZC1sYWJlbDLvvIx2YWx1ZSBuZHPot53nprvlgLzmlbDnu4TvvIjmjInku47lpKfliLDlsI/mjpLluo/vvIzml6DpnIDlhbPlv4PlhbfkvZPlr7nlupTlk6rkuKogbm9kZTLvvIlcbiAgLy8gMi4yLjIg5a+55LqOIFEg5Lit55qE5Y+m5LiA5Liq5qCH562+55qEIGsg5Liq6IqC54K577yM6K6h566X5a6D5Lus5YiwIG5vZGUg55qE5pyA55+t6Lev5b6E5Lul5Y+KIE5EUyDot53nprtcblxuICB2YXIgcGF0dGVyblNwRGlzdCA9IHt9O1xuICB2YXIgcGF0dGVyblNwRGlzdEJhY2sgPSB7fTtcbiAgT2JqZWN0LmtleXMocGF0dGVybk5vZGVMYWJlbE1hcCkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwyLCBqKSB7XG4gICAgcGF0dGVyblNwRGlzdFtsYWJlbDJdID0gW107XG5cbiAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWF4RGlzdCA9IC1JbmZpbml0eTtcbiAgICB2YXIgcGF0dGVybk5vZGVzV2l0aExhYmVsMiA9IHBhdHRlcm5Ob2RlTGFiZWxNYXBbbGFiZWwyXTtcbiAgICB2YXIgcGF0dGVybk5vZGVQYWlyTWFwID0ge307XG4gICAgcGF0dGVybk5vZGVzV2l0aExhYmVsMi5mb3JFYWNoKGZ1bmN0aW9uIChub2RlV2l0aExhYmVsMikge1xuICAgICAgdmFyIGRpc3QgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXTtcbiAgICAgIGRpc3QgJiYgcGF0dGVyblNwRGlzdFtsYWJlbDJdLnB1c2goZGlzdCk7XG4gICAgICBpZiAobWF4RGlzdCA8IGRpc3QpIG1heERpc3QgPSBkaXN0O1xuICAgICAgcGF0dGVybk5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXSA9IHtcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogcGF0dGVybk5vZGVNYXBbbm9kZVdpdGhMYWJlbDIuaWRdLmlkeCxcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICB2YXIgZGlzdEJhY2sgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkLCBcIi1cIikuY29uY2F0KGJlZ2luUE5vZGUuaWQpXTtcbiAgICAgICAgZGlzdEJhY2sgJiYgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXS5wdXNoKGRpc3RCYWNrKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gc3BEaXN0W2xhYmVsMl0g5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0gPSBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIGlmIChkaXJlY3RlZCkgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXSA9IHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyDorqHnrpcgUSDkuK3miYDmnIkgbGFiZWwyIOiKgueCueWIsCBiZWdpblBOb2RlIOeahCBORFMg6Led56a7XG4gICAgLy8g5omA5pyJIGxhYmVsMiDoioLngrnliLAgYmVnaW5QTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcbiAgICAvLyBrZXk6IG5vZGUxLmlkLW5vZGUyLmlkXG5cbiAgICBwYXR0ZXJuSW50R3JhcGhNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYXR0ZXJuTm9kZVBhaXJNYXAsIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgcGF0dGVybiwgcGF0dGVybkludEdyYXBoTWFwKTsgLy8gcGF0dGVybiDkuK0gYmVnaW5Ob2RlIOWIsOW9k+WJjSBsYWJlbDIg6IqC54K5IOeahCBORFMg6Led56a777yI5pWw57uE77yM5peg6ZyA5YWz5b+D5YW35L2T5a+55bqU5Yiw5ZOq5Liq6IqC54K577yJXG5cbiAgICB2YXIgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhwYXR0ZXJuTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKHBhdHRlcm5ORFNEaXN0W2tleV0pIHtcbiAgICAgICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkucHVzaChwYXR0ZXJuTkRTRGlzdFtrZXldKTtcbiAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgIH1cblxuICAgICAgdmFyIHBhdHRlcm5JbnRHcmFwaCA9IHBhdHRlcm5JbnRHcmFwaE1hcFtrZXldO1xuICAgICAgcGF0dGVybk5EU0Rpc3Rba2V5XSA9IGdldE1hdGNoZWRDb3VudChwYXR0ZXJuSW50R3JhcGgsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5wdXNoKHBhdHRlcm5ORFNEaXN0W2tleV0pO1xuICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudFBhdHRlcm5ORFNEaXN0IOS7juWkp+WIsOWwj+aOkuW6j1xuXG4gICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYiAtIGE7XG4gICAgfSk7XG4gICAgcGF0dGVybk5EU0Rpc3RNYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChsYWJlbDIpXSA9IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5O1xuICAgIGlmIChsYWJlbDIgPT09IGxhYmVsKSByZXR1cm47XG4gICAgdmFyIGNhbmRpZGF0ZXNOdW0gPSAoY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmxlbmd0aCkgfHwgMDtcblxuICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gX2xvb3BfNChtKSB7XG4gICAgICB2YXIgY05vZGUgPSBjYW5kaWRhdGVzW21dOyAvLyBwcnVuZTHvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg55qEIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55Liq5pWw5bCR5LqOIHBhdHRlcm4g5LitIGxhYmVsMiDkuKrmlbDvvIzliKDljrvlroNcblxuICAgICAgdmFyIGdyYXBoTmVpZ2hib3JVbml0ID0ga05laWdoYm9yVW5pdHNbbm9kZU1hcFtjTm9kZS5pZF0uaWR4XTtcbiAgICAgIHZhciBncmFwaE5laWdoYm9yVW5pdENvdW50TWFwID0gZ3JhcGhOZWlnaGJvclVuaXQubm9kZUxhYmVsQ291bnRNYXBbbGFiZWwyXTtcbiAgICAgIHZhciBwYXR0ZXJuTGFiZWwyTnVtID0gcGF0dGVybk5vZGVMYWJlbE1hcFtsYWJlbDJdLmxlbmd0aDtcblxuICAgICAgaWYgKCFncmFwaE5laWdoYm9yVW5pdENvdW50TWFwIHx8IGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAuY291bnQgPCBwYXR0ZXJuTGFiZWwyTnVtKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZTLvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg5YiwIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55pyA55+t6Lev5b6E5aSn5LqOIHBhdHRlcm5TcERpc3RbbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gKHBydW5lMiDop4TliJnljbPvvJpjYW5kaWRhdGUg55u45YWz55qE5pyA55+t6Lev5b6E55qE5pyA5aSnIHNwRGlzdFtsYWJlbDJdLmxlbmd0aCDkuKrvvIzmjInnhaflpKflsI/pobrluo/kvp3mrKHlkowgcGF0dGVyblNwRGlzdFtsYWJlbDJdIOS4reeahOWAvOavlOi+g++8jOWPquimgemBh+WIsOS4gOS4quaYryBHID4gUSDnmoTvvIzlsLHliKDljrvov5nkuKogY2FuZGlkYXRlKVxuXG5cbiAgICAgIHZhciBwcnVuZTJJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChncmFwaE5laWdoYm9yVW5pdENvdW50TWFwLmRpc3RzW25dID4gcGF0dGVyblNwRGlzdFtsYWJlbDJdW25dKSB7XG4gICAgICAgICAgcHJ1bmUySW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBydW5lMkludmFsaWQpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lM++8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDliLAga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrkgTkRTIOi3neemu+Wwj+S6jiBwYXR0ZXJuTkRTRGlzdFtiZWdpbk5vZGUuaWQtbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gVE9ET++8mnBydW5lM++8jGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5IOS4jiBjdXJyZW50TkRTRGlzdCDnmoTmr5TovoNcbiAgICAgIC8vIOiuoeeulyBHIOS4reaJgOaciSBsYWJlbDIg6IqC54K55YiwIGNOb2RlIOeahCBORFMg6Led56a7XG4gICAgICAvLyDmiYDmnIkgbGFiZWwyIOiKgueCueWIsCBjTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcblxuXG4gICAgICB2YXIgY05vZGVQYWlyTWFwID0ge307XG4gICAgICBncmFwaE5laWdoYm9yVW5pdC5uZWlnaGJvcnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlKSB7XG4gICAgICAgIHZhciBkaXN0ID0gc3BtTWFwW1wiXCIuY29uY2F0KGNOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCldO1xuICAgICAgICBjTm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoY05vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IG5vZGVNYXBbY05vZGUuaWRdLmlkeCxcbiAgICAgICAgICBlbmQ6IG5vZGVNYXBbbmVpZ2hib3JOb2RlLmlkXS5pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgICAgfTtcbiAgICAgIH0pOyAvLyDmm7TmlrAgaW50R01hcFxuXG4gICAgICBpbnRHTWFwID0gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgoY05vZGVQYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGhEYXRhLCBpbnRHTWFwKTsgLy8gY2FuZGlkYXRlIOWIsOWug+WRqOWbtCBsYWJlbDIg6IqC54K555qEIE5EUyDot53nprssIGtleSDmmK8gbm9kZS5pZC1ub2RlLmlkXG5cbiAgICAgIHZhciBjdXJyZW50TkRTRGlzdEFycmF5ID0gW107XG4gICAgICBPYmplY3Qua2V5cyhjTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAobmRzRGlzdFtrZXldKSB7XG4gICAgICAgICAgY3VycmVudE5EU0Rpc3RBcnJheS5wdXNoKG5kc0Rpc3Rba2V5XSk7XG4gICAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbnRHcmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgICAgbmRzRGlzdFtrZXldID0gZ2V0TWF0Y2hlZENvdW50KGludEdyYXBoLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgICBjdXJyZW50TkRTRGlzdEFycmF5LnB1c2gobmRzRGlzdFtrZXldKTtcbiAgICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudE5EU0Rpc3RBcnJheSDku47lpKfliLDlsI/mjpLluo9cblxuICAgICAgY3VycmVudE5EU0Rpc3RBcnJheSA9IGN1cnJlbnRORFNEaXN0QXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYiAtIGE7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcnVuZTNJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChjdXJyZW50TkRTRGlzdEFycmF5W25dIDwgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXlbbl0pIHtcbiAgICAgICAgICBwcnVuZTNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJ1bmUzSW52YWxpZCkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgbSA9IGNhbmRpZGF0ZXNOdW0gLSAxOyBtID49IDA7IG0tLSkge1xuICAgICAgX2xvb3BfNChtKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgY2FuZGlkYXRlR3JhcGhzID0gW107IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UzOiBnb2luZyB0byBzcGxpY2UgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gY2FuZGlkYXRlcyDnu4/ov4fnrZvpgInlkI7vvIzku6Xmr4/kuKogY2FuZGlkYXRlIOS4uuS4reW/g++8jOeUn+aIkCBMZW5ndGgtbmVpZ2hib3Ig55qE6YK75bGF6K+x5a+85a2Q5Zu+XG4gIC8vIOW5tuWcqOivseWvvOWtkOWbvuS4reWOu+mZpOS4jeWPr+iDveWcqCBRIOS4iuaJvuWIsOWMuemFjeeahOeCue+8muWcqCBRIOS4iuS4jeWtmOWcqOeahCBsYWJlbO+8jOWFtuS7liBsYWJlbCDliLAgY2FuZGlkYXRlIOeahOacgOWkp+acgOefrei3neemu+espuWQiCBR44CBTkRTIOi3neemu+espuWQiCBRXG5cbiAgY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgIHZhciBub2RlSWR4ID0gbm9kZU1hcFtjYW5kaWRhdGUuaWRdLmlkeDtcbiAgICB2YXIgbGVuZ3RoTmVpZ2hib3JVbml0ID0gZmluZEtOZWlnaGJvclVuaXQoZ3JhcGhEYXRhLm5vZGVzLCBzcG1bbm9kZUlkeF0sIG5vZGVJZHgsIG5vZGVMYWJlbFByb3AsIGxlbmd0aCk7XG4gICAgdmFyIG5laWdoYm9yTm9kZXMgPSBsZW5ndGhOZWlnaGJvclVuaXQubmVpZ2hib3JzOyAvLyDliKDpmaTkuI3lj6/og73mib7liLDljLnphY3nmoTpgrvlsYXngrlcblxuICAgIHZhciBuZWlnaGJvck51bSA9IG5laWdoYm9yTm9kZXMubGVuZ3RoO1xuICAgIHZhciB1bm1hdGNoZWQgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSBuZWlnaGJvck51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAvLyDlpoLmnpzpgJrov4foo4HliarvvIznrKblkIjmnaHku7bnmoToioLngrnmlbDph4/lt7Lov4flsJHvvIzor7TmmI7kuI3og73ljLnphY3ov5nkuKogY2FuZGlkYXRlIOebuOWFs+eahOWbvlxuICAgICAgaWYgKG5laWdoYm9yTm9kZXMubGVuZ3RoICsgMSA8IHBhdHRlcm4ubm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHVubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5laWdoYm9yTm9kZXNbaV07XG4gICAgICB2YXIgbmVpZ2hib3JMYWJlbCA9IG5laWdoYm9yTm9kZVtub2RlTGFiZWxQcm9wXTsgLy8gcHJ1bmUxOiDoi6Xor6XpgrvlsYXngrnnmoQgbGFiZWwg5LiN5a2Y5Zyo5LqOIHBhdHRlcm4g5Lit77yM56e76Zmk6L+Z5Liq54K5XG5cbiAgICAgIGlmICghcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXSB8fCAhcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBwcnVuZTI6IOiLpeivpemCu+WxheeCueWIsCBjYW5kaWRhdGUg55qE5pyA55+t6Lev5b6E5q+U5ZKM5a6D5pyJ55u45ZCMIGxhYmVsIOeahOiKgueCueWIsCBiZWdpblBOb2RlIOeahOacgOWkp+acgOefrei3r+W+hOmVv+W6pumVv++8jOenu+mZpOi/meS4queCuVxuICAgICAgLy8gcHJ1bmUyLjE6IOWmguaenOayoeaciei/meS4quagh+etvuWIsCBiZWdpblBOb2RlIOeahOi3neemu+iusOW9le+8jOivtOaYjiBwYXR0ZXJuIOS4iu+8iOWPr+iDvSBiZWdpblBOb2RlIOaYr+i/meS4qiBsYWJlbO+8ieayoeacieWFtuS7lui/meS4qiBsYWJlbCDnmoToioLngrlcblxuXG4gICAgICBpZiAoIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0gfHwgIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGNhbmRpZGF0ZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpOyAvLyBwcnVuZTIuMlxuXG4gICAgICB2YXIgZGlzdFRvQ2FuZGlkYXRlID0gc3BtTWFwW2tleV07XG4gICAgICB2YXIgaWR4ID0gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG1heERpc3RXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdW2lkeF07IC8vIHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0g5bey57uP5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICAgIGlmIChkaXN0VG9DYW5kaWRhdGUgPiBtYXhEaXN0V2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBrZXlCYWNrID0gXCJcIi5jb25jYXQobmVpZ2hib3JOb2RlLmlkLCBcIi1cIikuY29uY2F0KGNhbmRpZGF0ZS5pZCk7XG4gICAgICAgIHZhciBkaXN0RnJvbUNhbmRpZGF0ZSA9IHNwbU1hcFtrZXlCYWNrXTtcbiAgICAgICAgaWR4ID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIG1heEJhY2tEaXN0V2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF1baWR4XTtcblxuICAgICAgICBpZiAoZGlzdEZyb21DYW5kaWRhdGUgPiBtYXhCYWNrRGlzdFdpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIHBydW5lMzog6Iul6K+l6YK75bGF54K55YiwIGNhbmRpZGF0ZSDnmoQgTkRTIOi3neemu+avlOWSjOWug+acieebuOWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5QTm9kZSDnmoTmnIDlsI8gTkRTIOi3neemu+Wwj++8jOenu+mZpOi/meS4queCuVxuXG5cbiAgICAgIHZhciBuZHNUb0NhbmRpZGF0ZSA9IG5kc0Rpc3Rba2V5XSA/IG5kc0Rpc3Rba2V5XSA6IGdldE5EU0Rpc3QoZ3JhcGhEYXRhLCBjYW5kaWRhdGUsIG5laWdoYm9yTm9kZSwgbm9kZU1hcCwgZGlzdFRvQ2FuZGlkYXRlLCBrTmVpZ2hib3JVbml0cywgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wLCBuZHNEaXN0LCBpbnRHTWFwKTtcbiAgICAgIHZhciBwYXR0ZXJuS2V5ID0gXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvckxhYmVsKTtcbiAgICAgIHZhciBtaW5OZHNXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XVtwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XS5sZW5ndGggLSAxXTsgLy8gcGF0dGVybk5EU0Rpc3Rba2V5XSDkuIDlrprlrZjlnKhcblxuICAgICAgaWYgKG5kc1RvQ2FuZGlkYXRlIDwgbWluTmRzV2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcHJ1bmU0OiDoi6Xor6XpgrvlsYXngrnnmoTluqbmlbDlsI/kuo4gcGF0dGVybiDlkIwgbGFiZWwg6IqC54K55pyA5bCP5bqm5pWw77yM5Yig5Y676K+l54K5XG5cblxuICAgICAgdmFyIF9hID0gc3Rhc2hQYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAsIG5laWdoYm9yTGFiZWwsIHBhdHRlcm5Ob2RlTWFwLCBwYXR0ZXJuTm9kZUxhYmVsTWFwKSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU7XG5cbiAgICAgIGlmIChub2RlTWFwW25laWdoYm9yTm9kZS5pZF0uZGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyDoioLngrnlnKjkuKrmlbDkuIrnrKblkIjljLnphY3vvIjkuI3lsJHkuo4gcGF0dGVybiDnmoToioLngrnkuKrmlbDvvInvvIznjrDlnKjnrZvpgInnm7jlhbPovrlcblxuXG4gICAgaWYgKCF1bm1hdGNoZWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5wdXNoKHtcbiAgICAgICAgbm9kZXM6IFtjYW5kaWRhdGVdLmNvbmNhdChuZWlnaGJvck5vZGVzKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTQ6IGdvaW5nIHRvIHNwbGljZSBlZGdlcyBhbmQgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGUgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKHBhdHRlcm4sIGJlZ2luUE5vZGUuaWQsIGZhbHNlKS5sZW5ndGg7XG4gIHZhciB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwID0ge307XG5cbiAgaWYgKGRpcmVjdGVkKSB7XG4gICAgT2JqZWN0LmtleXModW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGUpLmZvckVhY2goZnVuY3Rpb24gKG5vZGVJZCkge1xuICAgICAgdmFyIG5vZGVMYWJlbCA9IHBhdHRlcm5Ob2RlTWFwW25vZGVJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIGlmICghdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtub2RlTGFiZWxdKSB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0gPSBbdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVbbm9kZUlkXV07ZWxzZSB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0ucHVzaCh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZVtub2RlSWRdKTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChwTGFiZWwpIHtcbiAgICAgIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbcExhYmVsXS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXAgPSBwYXR0ZXJuU3BEaXN0O1xuICB9IC8vIOeOsOWcqCBjYW5kaWRhdGVHcmFwaHMg6YeM6Z2i5Y+q5pyJ6IqC54K577yM6L+b6KGM6L6555qE562b6YCJXG5cblxuICB2YXIgY2FuZGlkYXRlR3JhcGhOdW0gPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gX2xvb3BfMihpKSB7XG4gICAgdmFyIGNhbmRpZGF0ZUdyYXBoID0gY2FuZGlkYXRlR3JhcGhzW2ldO1xuICAgIHZhciBjYW5kaWRhdGUgPSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXTtcbiAgICB2YXIgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXAgPSB7fTtcbiAgICB2YXIgY2FuZGlkYXRlTm9kZU1hcCA9IHt9O1xuICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIHEpIHtcbiAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICAgIGlkeDogcSxcbiAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgZGVncmVlOiAwLFxuICAgICAgICBpbkRlZ3JlZTogMCxcbiAgICAgICAgb3V0RGVncmVlOiAwXG4gICAgICB9O1xuICAgICAgdmFyIGNOb2RlTGFiZWwgPSBub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCFjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSkgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY05vZGVMYWJlbF0gPSAxO2Vsc2UgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY05vZGVMYWJlbF0rKztcbiAgICB9KTsgLy8g5qC55o2uIGNhbmRpZGF0ZSDlkowgbmVpZ2hib3JOb2RlcyDkuK3nmoToioLngrnnlJ/miJAgRyDnmoTor7Hlr7zlrZDlm75cbiAgICAvLyDljbPvvIzlsIYgZ3JhcGhEYXRhIOS4iuS4pOerr+mDveWcqCBjYW5kaWRhdGVHcmFwaC5ub2RlcyDkuK3nmoTovrnmlL7lhaUgY2FuZGlkYXRlRWRnZXNcblxuICAgIHZhciBjYW5kaWRhdGVFZGdlcyA9IFtdO1xuICAgIHZhciBlZGdlTGFiZWxDb3VudE1hcCA9IHt9O1xuICAgIGdyYXBoRGF0YS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0gJiYgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0pIHtcbiAgICAgICAgY2FuZGlkYXRlRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgaWYgKCFlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSkgZWRnZUxhYmVsQ291bnRNYXBbZWRnZVtlZGdlTGFiZWxQcm9wXV0gPSAxO2Vsc2UgZWRnZUxhYmVsQ291bnRNYXBbZWRnZVtlZGdlTGFiZWxQcm9wXV0rKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUrKztcbiAgICAgIH1cbiAgICB9KTsgLy8gcHJ1bmXvvJroi6XmnInkuIDkuKogZWRnZUxhYmVsIOWcqCBjYW5kaWRhdGVHcmFwaCDkuIrnmoTkuKrmlbDlsJHkuo4gcGF0dGVybu+8jOWOu+mZpOivpeWbvlxuXG4gICAgdmFyIHBhdHRlbnJFZGdlTGFiZWxOdW0gPSBPYmplY3Qua2V5cyhwYXR0ZXJuRWRnZUxhYmVsTWFwKS5sZW5ndGg7XG4gICAgdmFyIHBydW5lZEJ5RWRnZUxhYmVsID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBlID0gMDsgZSA8IHBhdHRlbnJFZGdlTGFiZWxOdW07IGUrKykge1xuICAgICAgdmFyIGxhYmVsXzEgPSBPYmplY3Qua2V5cyhwYXR0ZXJuRWRnZUxhYmVsTWFwKVtlXTtcblxuICAgICAgaWYgKCFlZGdlTGFiZWxDb3VudE1hcFtsYWJlbF8xXSB8fCBlZGdlTGFiZWxDb3VudE1hcFtsYWJlbF8xXSA8IHBhdHRlcm5FZGdlTGFiZWxNYXBbbGFiZWxfMV0ubGVuZ3RoKSB7XG4gICAgICAgIHBydW5lZEJ5RWRnZUxhYmVsID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBydW5lZEJ5RWRnZUxhYmVsKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9IC8vIOmBjeWOhiBjYW5kaWRhdGVFZGdlc++8jOi/m+ihjOi+ueeahOetm+mAiVxuXG5cbiAgICB2YXIgY2FuZGlkYXRlRWRnZU51bSA9IGNhbmRpZGF0ZUVkZ2VzLmxlbmd0aDsgLy8gcHJ1bmXvvJroi6XovrnmlbDov4flsJHvvIzljrvpmaTor6Xlm75cblxuICAgIGlmIChjYW5kaWRhdGVFZGdlTnVtIDwgcGF0dGVybi5lZGdlcy5sZW5ndGgpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgIH1cblxuICAgIHZhciBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSBmYWxzZTtcblxuICAgIHZhciBfbG9vcF81ID0gZnVuY3Rpb24gX2xvb3BfNShlKSB7XG4gICAgICB2YXIgZWRnZSA9IGNhbmRpZGF0ZUVkZ2VzW2VdO1xuICAgICAgdmFyIGVkZ2VMYWJlbCA9IGVkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgICB2YXIgcGF0dGVybkVkZ2VzV2l0aExhYmVsID0gcGF0dGVybkVkZ2VMYWJlbE1hcFtlZGdlTGFiZWxdOyAvLyBwcnVuZSAxOiDoi6XovrnnmoQgbGFiZWwg5LiN5a2Y5Zyo5LqOIHBhdHRlcm4g6L65IGxhYmVsIOS4re+8jOWOu+mZpOivpei+uVxuXG4gICAgICBpZiAoIXBhdHRlcm5FZGdlc1dpdGhMYWJlbCB8fCAhcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07IC8vIOiLpei/meS4qiBsYWJlbCDnmoQgY291bnQg5YeP5bCR5LmL5ZCO77yM6K+lIGxhYmVsIOeahOi+ueaVsOS4jei2s++8jOWOu+mZpOivpeWbvlxuXG4gICAgICAgIGlmIChwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjYW5kaWRhdGVFZGdlcy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lIDI6IOiLpei+ueeahCBsYWJlbCAr5Lik56uvIGxhYmVsIOeahOS4ieWFg+e7hOWFs+ezu+S4jeiDveWcqCBwYXR0ZXJuIOS4reaJvuWIsO+8jOWOu+mZpOivpei+uVxuXG5cbiAgICAgIHZhciBzb3VyY2VMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICB2YXIgdGFyZ2V0TGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgdmFyIGVkZ2VNYXRjaGVkID0gZmFsc2U7XG4gICAgICBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwuZm9yRWFjaChmdW5jdGlvbiAocGF0dGVybkVkZ2UpIHtcbiAgICAgICAgdmFyIHBhdHRlcm5Tb3VyY2UgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuRWRnZS5zb3VyY2VdLm5vZGU7XG4gICAgICAgIHZhciBwYXR0ZXJuVGFyZ2V0ID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybkVkZ2UudGFyZ2V0XS5ub2RlO1xuICAgICAgICBpZiAocGF0dGVyblNvdXJjZVtub2RlTGFiZWxQcm9wXSA9PT0gc291cmNlTGFiZWwgJiYgcGF0dGVyblRhcmdldFtub2RlTGFiZWxQcm9wXSA9PT0gdGFyZ2V0TGFiZWwpIGVkZ2VNYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBwYXR0ZXJuU291cmNlW25vZGVMYWJlbFByb3BdID09PSB0YXJnZXRMYWJlbCAmJiBwYXR0ZXJuVGFyZ2V0W25vZGVMYWJlbFByb3BdID09PSBzb3VyY2VMYWJlbCkgZWRnZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghZWRnZU1hdGNoZWQpIHtcbiAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tOyAvLyDoi6Xov5nkuKogbGFiZWwg55qEIGNvdW50IOWHj+WwkeS5i+WQju+8jOivpSBsYWJlbCDnmoTovrnmlbDkuI3otrPvvIzljrvpmaTor6Xlm75cblxuICAgICAgICBpZiAocGF0dGVybkVkZ2VzV2l0aExhYmVsICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKGUsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBlID0gY2FuZGlkYXRlRWRnZU51bSAtIDE7IGUgPj0gMDsgZS0tKSB7XG4gICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzUoZSk7XG5cbiAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH0gLy8gcHJ1bmUyOiDliKDpmaTovrnnmoTov4fnqIvkuK3vvIzlj5HnjrDovrnmlbDov4flsJEv6L65IGxhYmVsIOaVsOi/h+WwkeaXtu+8jOWOu+mZpOivpeWbvlxuXG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICBjYW5kaWRhdGVHcmFwaC5lZGdlcyA9IGNhbmRpZGF0ZUVkZ2VzO1xuICAgIHZhciBsZW5ndGhzVG9DYW5kaWRhdGUgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKGNhbmRpZGF0ZUdyYXBoLCBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhsZW5ndGhzVG9DYW5kaWRhdGUpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXRJZCkge1xuICAgICAgaWYgKHRhcmdldElkID09PSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCB8fCBjYW5kaWRhdGVHcmFwaEludmFsaWQpIHJldHVybjsgLy8gcHJ1bmU0OiDpgJrov4fkuIrov7Doo4HliarvvIzlj6/og73lr7zoh7Tor6XpgrvlsYXlrZDlm77lj5jkuLrkuI3ov57pgJrjgILoo4Hliarmjonnm67liY3lnKjov5nkuKrpgrvlsYXlrZDlm77kuK3lkowgY2FuZGlkYXRl77yI56ys5LiA5Liq6IqC54K577yJ5LiN6L+e6YCa55qE6IqC54K5XG5cbiAgICAgIGlmIChsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID09PSBJbmZpbml0eSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBwcnVuZTU6IOe7j+i/h+i+ueijgeWJquWQju+8jOWPr+iDveWPiOWHuueOsOS6huacgOefrei3r+W+hOi/h+mVv+eahOiKgueCuSDvvIjmr5QgcGF0dGVybiDkuK3lkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luTm9kZSDmnIDlpKfmnIDnn63ot53nprvov5zvvInvvIzliKDljrvov5nkupvoioLngrlcblxuXG4gICAgICB2YXIgbkxhYmVsID0gbm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0gfHwgIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggfHwgbGVuZ3Roc1RvQ2FuZGlkYXRlW3RhcmdldElkXSA+IHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXVt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0ubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGVMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0tLTtcblxuICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbdGFyZ2V0Tm9kZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpZHggPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5pbmRleE9mKGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGUpO1xuICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICB2YXIgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgdmFyIGxvb3BDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoZGVncmVlQ2hhbmdlZCAmJiAhY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBkZWdyZWVDaGFuZ2VkID0gZmFsc2U7IC8vIGNhbmRpZGF0ZSDluqbmlbDkuI3otrPvvIzliKDljrvor6Xlm75cblxuICAgICAgdmFyIGNvbmRpdGlvbiA9IGRpcmVjdGVkID8gY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uaW5EZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5pbkRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0ub3V0RGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0ub3V0RGVncmVlIDogY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZTtcblxuICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gY2FuZGlkYXRlIGxhYmVsIOS4quaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG5cbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gcHJ1bmU277ya5Y676Zmk5bqm5pWw6L+H5bCP55qE6IqC54K5XG5cblxuICAgICAgdmFyIGN1cnJlbnRDYW5kaWRhdGVOb2RlTnVtID0gY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBvID0gY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gLSAxOyBvID49IDA7IG8tLSkge1xuICAgICAgICB2YXIgY2dOb2RlID0gY2FuZGlkYXRlR3JhcGgubm9kZXNbb107XG4gICAgICAgIHZhciBub2RlRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVJbkRlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5pbkRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVPdXREZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0ub3V0RGVncmVlO1xuICAgICAgICB2YXIgY05vZGVMYWJlbCA9IGNnTm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgICB2YXIgX2UgPSBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgY05vZGVMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApLFxuICAgICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZTtcblxuICAgICAgICB2YXIgZGVsZXRlQ29uZGl0aW9uID0gZGlyZWN0ZWQgPyBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSB8fCBub2RlSW5EZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgfHwgbm9kZU91dERlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgOiBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTtcblxuICAgICAgICBpZiAoZGVsZXRlQ29uZGl0aW9uKSB7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS0tOyAvLyDoioLngrkgbGFiZWwg5Liq5pWw5LiN6LazXG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UobywgMSk7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlZ3JlZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgIWRlZ3JlZUNoYW5nZWQgJiYgbG9vcENvdW50ICE9PSAwKSBicmVhazsgLy8g57uP6L+HIHBydW5lNSDoioLngrnoo4HliarvvIzliKDljrvnq6/ngrnlt7Lnu4/kuI3lnKggY2FuZGlkYXRlR3JhcGgg5Lit55qE6L65XG5cbiAgICAgIGNhbmRpZGF0ZUVkZ2VOdW0gPSBjYW5kaWRhdGVFZGdlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIHkgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgeSA+PSAwOyB5LS0pIHtcbiAgICAgICAgdmFyIGNlZGdlID0gY2FuZGlkYXRlRWRnZXNbeV07XG5cbiAgICAgICAgaWYgKCFjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0gfHwgIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZSh5LCAxKTtcbiAgICAgICAgICB2YXIgZWRnZUxhYmVsID0gY2VkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tO1xuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnRhcmdldF0pIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICAgIH0gLy8g6L65IGxhYmVsIOaVsOmHj+S4jei2s1xuXG5cbiAgICAgICAgICBpZiAocGF0dGVybkVkZ2VMYWJlbE1hcFtlZGdlTGFiZWxdICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbG9vcENvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfSAvLyBwcnVuZTog6Iul6IqC54K5L+i+ueaVsOi/h+Wwke+8jOiKgueCuS/ovrkgbGFiZWwg6L+H5bCR77yM5Y675o6J6L+Z5Liq5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoIDwgcGF0dGVybi5ub2Rlcy5sZW5ndGggfHwgY2FuZGlkYXRlRWRnZXMubGVuZ3RoIDwgcGF0dGVybi5lZGdlcy5sZW5ndGgpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gY2FuZGlkYXRlR3JhcGhOdW0gLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMihpKTtcblxuICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICB9IC8vIOatpOaXtuW3sue7j+eUn+aIkOeahOWkmuS4qiBjYW5kaWRhdGVHcmFwaHPvvIzlj6/og73mnInph43lpI1cbiAgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTU6IGdvaW5nIHRvIHNwbGljZSBkdWxwbGljYXRlZCBjYW5kaWRhdGUgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyDliKDljrsgY2FuZGlkYXRlR3JhcGhzIOS4reS4gOaooeS4gOagt+eahOWtkOWbvu+8jOmAmui/h+i+ueeahCBub2RlLW5vZGUtZWRnZUxhYmVsIOS9nOS4uiBrZXnvvIzov5nnsbvovrnkuKrmlbDkvZzkuLogdmFsdWXvvIzov5vooYzljLnphY1cblxuXG4gIHZhciBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIF9sb29wXzMoaSkge1xuICAgIHZhciBjZzEgPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNnMUVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgY2cxLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLnNvdXJjZSwgXCItXCIpLmNvbmNhdChlZGdlLnRhcmdldCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsKTtcbiAgICAgIGlmICghY2cxRWRnZU1hcFtrZXldKSBjZzFFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cxRWRnZU1hcFtrZXldKys7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfNiA9IGZ1bmN0aW9uIF9sb29wXzYoaikge1xuICAgICAgdmFyIGNnMiA9IGNhbmRpZGF0ZUdyYXBoc1tqXTtcbiAgICAgIHZhciBjZzJFZGdlTWFwID0ge307IC8vIFtub2RlMS5pZC1ub2RlMi5pZC1lZGdlLmxhYmVsXTogY291bnRcblxuICAgICAgY2cyLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgICBpZiAoIWNnMkVkZ2VNYXBba2V5XSkgY2cyRWRnZU1hcFtrZXldID0gMTtlbHNlIGNnMkVkZ2VNYXBba2V5XSsrO1xuICAgICAgfSk7XG4gICAgICB2YXIgc2FtZSA9IHRydWU7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhjZzJFZGdlTWFwKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmxlbmd0aCkge1xuICAgICAgICBzYW1lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhjZzFFZGdlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICBpZiAoY2cyRWRnZU1hcFtrZXldICE9PSBjZzFFZGdlTWFwW2tleV0pIHNhbWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaiwgMSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGogPSBjdXJyZW50TGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgX2xvb3BfNihqKTtcbiAgICB9XG5cbiAgICBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8PSBjdXJyZW50TGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgX2xvb3BfMyhpKTtcbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVHcmFwaHM7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBHQURESTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js ***! \***************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = (0, _util.uniqueId)();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = labelPropagation;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9sYWJlbC1wcm9wYWdhdGlvbi5qcz82NTgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsNkNBQTZDLG1CQUFPLENBQUMsd0dBQW1COztBQUV4RSxZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL2xhYmVsLXByb3BhZ2F0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5qCH562+5Lyg5pKt566X5rOVXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuacieWQkeWbvu+8jOm7mOiupOS4uiBmYWxzZVxuICogQHBhcmFtIHdlaWdodFByb3BlcnR5TmFtZSDmnYPph43nmoTlsZ7mgKflrZfmrrVcbiAqIEBwYXJhbSBtYXhJdGVyYXRpb24g5pyA5aSn6L+t5Luj5qyh5pWwXG4gKi9cbnZhciBsYWJlbFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbihncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbikge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH0gLy8gdGhlIG9yaWdpbiBkYXRhXG5cblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9ICgwLCBfdXRpbC51bmlxdWVJZCkoKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307XG4gIGFkak1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHtcbiAgICB2YXIgayA9IDA7XG4gICAgdmFyIGlpZCA9IG5vZGVzW2ldLmlkO1xuICAgIG5laWdoYm9yc1tpaWRdID0ge307XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKGVudHJ5LCBqKSB7XG4gICAgICBpZiAoIWVudHJ5KSByZXR1cm47XG4gICAgICBrICs9IGVudHJ5O1xuICAgICAgdmFyIGppZCA9IG5vZGVzW2pdLmlkO1xuICAgICAgbmVpZ2hib3JzW2lpZF1bamlkXSA9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICB2YXIgaXRlciA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcnMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yc1tub2RlLmlkXSkuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JJZCkge1xuICAgICAgICB2YXIgbmVpZ2hib3JXZWlnaHQgPSBuZWlnaGJvcnNbbm9kZS5pZF1bbmVpZ2hib3JJZF07XG4gICAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBub2RlTWFwW25laWdoYm9ySWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIGlmICghbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0pIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdID0gMDtcbiAgICAgICAgbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0gKz0gbmVpZ2hib3JXZWlnaHQ7XG4gICAgICB9KTsgLy8gZmluZCB0aGUgY2x1c3RlciB3aXRoIG1heCB3ZWlnaHRcblxuICAgICAgdmFyIG1heFdlaWdodCA9IC1JbmZpbml0eTtcbiAgICAgIHZhciBiZXN0Q2x1c3RlcklkcyA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMobmVpZ2hib3JDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgICAgIGlmIChtYXhXZWlnaHQgPCBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBtYXhXZWlnaHQgPSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgICAgICAgYmVzdENsdXN0ZXJJZHMgPSBbY2x1c3RlcklkXTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhXZWlnaHQgPT09IG5laWdoYm9yQ2x1c3RlcnNbY2x1c3RlcklkXSkge1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzLnB1c2goY2x1c3RlcklkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYmVzdENsdXN0ZXJJZHMubGVuZ3RoID09PSAxICYmIGJlc3RDbHVzdGVySWRzWzBdID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgdmFyIHNlbGZDbHVzdGVySWR4ID0gYmVzdENsdXN0ZXJJZHMuaW5kZXhPZihub2RlLmNsdXN0ZXJJZCk7XG4gICAgICBpZiAoc2VsZkNsdXN0ZXJJZHggPj0gMCkgYmVzdENsdXN0ZXJJZHMuc3BsaWNlKHNlbGZDbHVzdGVySWR4LCAxKTtcblxuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzICYmIGJlc3RDbHVzdGVySWRzLmxlbmd0aCkge1xuICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsgLy8gcmVtb3ZlIGZyb20gb3JpZ2luIGNsdXN0ZXJcblxuICAgICAgICB2YXIgc2VsZkNsdXN0ZXIgPSBjbHVzdGVyc1tub2RlLmNsdXN0ZXJJZF07XG4gICAgICAgIHZhciBub2RlSW5TZWxmQ2x1c3RlcklkeCA9IHNlbGZDbHVzdGVyLm5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGJlc3QgY2x1c3RlclxuXG4gICAgICAgIHZhciByYW5kb21JZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpO1xuICAgICAgICB2YXIgYmVzdENsdXN0ZXIgPSBjbHVzdGVyc1tiZXN0Q2x1c3Rlcklkc1tyYW5kb21JZHhdXTtcbiAgICAgICAgYmVzdENsdXN0ZXIubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgbm9kZS5jbHVzdGVySWQgPSBiZXN0Q2x1c3Rlci5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWNoYW5nZWQpIHJldHVybiBcImJyZWFrXCI7XG4gICAgaXRlcisrO1xuICB9O1xuXG4gIHdoaWxlIChpdGVyIDwgbWF4SXRlcmF0aW9uKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKCk7XG5cbiAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgfSAvLyBkZWxldGUgdGhlIGVtcHR5IGNsdXN0ZXJzXG5cblxuICBPYmplY3Qua2V5cyhjbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgdmFyIGNsdXN0ZXIgPSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgfVxuICB9KTsgLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cbiAgdmFyIGNsdXN0ZXJFZGdlcyA9IFtdO1xuICB2YXIgY2x1c3RlckVkZ2VNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHdlaWdodCA9IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxO1xuICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgbmV3RWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlQ2x1c3RlcklkLCBcIi0tLVwiKS5jb25jYXQodGFyZ2V0Q2x1c3RlcklkKTtcblxuICAgIGlmIChjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdKSB7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLndlaWdodCArPSB3ZWlnaHQ7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLmNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXdFZGdlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZUNsdXN0ZXJJZCxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRDbHVzdGVySWQsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNsdXN0ZXJzQXJyYXkgPSBbXTtcbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChjbHVzdGVyc1tjbHVzdGVySWRdKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2x1c3RlcnM6IGNsdXN0ZXJzQXJyYXksXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGxhYmVsUHJvcGFnYXRpb247XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _vector = _interopRequireDefault(__webpack_require__(/*! ./utils/vector */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js\"));\n\nvar _time = __webpack_require__(/*! ./constants/time */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 获取所有属性并排序\n\n\nvar getAllSortProperties = function getAllSortProperties(nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量\n if (!\"\".concat(node.properties[propertyKey]).match(_time.secondReg) && !\"\".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey])) || propertyKey === 'id') {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < 100 ? sortKeys : sortKeys.slice(0, 100);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_time.secondReg) || properties[key].match(_time.dateReg)) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(propertyKeys, nodes) {\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _vector.default([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _vector.default(allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _vector.default(allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n }\n\n var propertyKeys = getAllSortProperties(nodes); // 所有节点属性特征向量集合\n\n allPropertiesWeight = getPropertyWeight(propertyKeys, nodes);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = (0, _util.clone)(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = louvain;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9sb3V2YWluLmpzP2UyNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxZQUFZLG1CQUFPLENBQUMsNkVBQVk7O0FBRWhDLDZDQUE2QyxtQkFBTyxDQUFDLHdHQUFtQjs7QUFFeEUscUNBQXFDLG1CQUFPLENBQUMsa0dBQWdCOztBQUU3RCxZQUFZLG1CQUFPLENBQUMsc0dBQWtCOztBQUV0QyxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQSw0QkFBNEI7O0FBRTVCOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTs7QUFFQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQSxtREFBbUQ7O0FBRW5EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtKQUFrSjs7QUFFbEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULHFFQUFxRTs7QUFFckU7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsOEhBQThIOztBQUU5SDtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7QUFDQSxpREFBaUQ7O0FBRWpELDBEQUEwRDs7QUFFMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVgsdUZBQXVGOztBQUV2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWCxzSEFBc0g7O0FBRXRIOztBQUVBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDLG1FQUFtRTs7QUFFbkUsMERBQTBEO0FBQzFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvbG91dmFpbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxudmFyIF9hZGphY2VudE1hdHJpeCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vYWRqYWNlbnQtbWF0cml4XCIpKTtcblxudmFyIF92ZWN0b3IgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL3ZlY3RvclwiKSk7XG5cbnZhciBfdGltZSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50cy90aW1lXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZ2V0TW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pIHtcbiAgdmFyIGxlbmd0aCA9IGFkak1hdHJpeC5sZW5ndGg7XG4gIHZhciBwYXJhbSA9IDIgKiBtO1xuICB2YXIgbW9kdWxhcml0eSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGVudHJ5ID0gYWRqTWF0cml4W2ldW2pdIHx8IDA7XG4gICAgICB2YXIga2kgPSBrc1tpXSB8fCAwO1xuICAgICAgdmFyIGtqID0ga3Nbal0gfHwgMDtcbiAgICAgIG1vZHVsYXJpdHkgKz0gZW50cnkgLSBraSAqIGtqIC8gcGFyYW07XG4gICAgfVxuICB9XG5cbiAgbW9kdWxhcml0eSAqPSAxIC8gcGFyYW07XG4gIHJldHVybiBtb2R1bGFyaXR5O1xufTsgLy8g6I635Y+W5omA5pyJ5bGe5oCn5bm25o6S5bqPXG5cblxudmFyIGdldEFsbFNvcnRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsU29ydFByb3BlcnRpZXMobm9kZXMpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5S2V5SW5mbyA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgT2JqZWN0LmtleXMobm9kZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eUtleSkge1xuICAgICAgLy8g55uu5YmN6L+H5ruk5Y+q5L+d55WZ5Y+v5Lul6L2s5oiQ5pWw5YC85Z6L55qE5oiW5pel5pyf5Z6L55qELCB0b2RvOiDnu5/kuIDovazmiJBvbmUtaG9054m55b6B5ZCR6YePXG4gICAgICBpZiAoIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKF90aW1lLnNlY29uZFJlZykgJiYgIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKF90aW1lLmRhdGVSZWcpICYmIGlzTmFOKE51bWJlcihub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSkgfHwgcHJvcGVydHlLZXkgPT09ICdpZCcpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgICBkZWxldGUgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSA9IDE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pOyAvLyDlj5Z0b3A1MOeahOWxnuaAp1xuXG4gIHZhciBzb3J0S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnR5S2V5SW5mbykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleUluZm9bYl0gLSBwcm9wZXJ0eUtleUluZm9bYV07XG4gIH0pO1xuICByZXR1cm4gc29ydEtleXMubGVuZ3RoIDwgMTAwID8gc29ydEtleXMgOiBzb3J0S2V5cy5zbGljZSgwLCAxMDApO1xufTtcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLnNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLmRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxudmFyIGdldFByb3BlcnR5V2VpZ2h0ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcykge1xuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldID0gcHJvY2Vzc1Byb3BlcnR5KG5vZGVzW2ldLnByb3BlcnRpZXMsIHByb3BlcnR5S2V5cyk7XG4gIH1cblxuICByZXR1cm4gYWxsUHJvcGVydGllc1dlaWdodDtcbn07IC8vIOaooeWdl+aDr+aAp+W6pu+8jOihoemHj+WxnuaAp+ebuOS8vOW6plxuXG5cbnZhciBnZXRJbmVydGlhbE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRJbmVydGlhbE1vZHVsYXJpdHkobm9kZXMsIGFsbFByb3BlcnRpZXNXZWlnaHQpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHRvdGFsUHJvcGVydGllcyA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoW10pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB0b3RhbFByb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYWRkKG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSkpO1xuICB9IC8vIOWdh+WAvOWQkemHj1xuXG5cbiAgdmFyIGF2Z1Byb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYXZnKGxlbmd0aCk7XG4gIGF2Z1Byb3BlcnRpZXMubm9ybWFsaXplKCk7IC8vIOiKgueCuembhuWQiOeahOaWueW3rjog6IqC54K5duS4juWdh+WAvOWQkemHj+eahOW5s+aWueasp+W8j+i3neemu+S5i+WSjFxuXG4gIHZhciB2YXJpYW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgdmFyIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UoYXZnUHJvcGVydGllcyk7XG4gICAgdmFyaWFuY2UgKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH0gLy8g5Lu75oSP5Lik54K56Ze055qE5qyn5byP5bmz5pa56Led56a7XG5cblxuICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mby5wdXNoKFtdKTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXSA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydGllc2ogPSBuZXcgX3ZlY3Rvci5kZWZhdWx0KGFsbFByb3BlcnRpZXNXZWlnaHRbal0pO1xuICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UocHJvcGVydGllc2opO1xuICAgICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddICs9IHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXTtcbiAgICB9XG4gIH0gLy8g6K6h566X5qih5Z2X5oOv5oCn5bqmXG5cblxuICB2YXIgaW5lcnRpYWxNb2R1bGFyaXR5ID0gMDtcbiAgdmFyIHBhcmFtID0gMiAqIGxlbmd0aCAqIHZhcmlhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoaSA9PT0gaiB8fCBjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGluZXJ0aWFsID0gbm9kZXNbaV0uY2x1c3RlckluZXJ0aWFsICogbm9kZXNbal0uY2x1c3RlckluZXJ0aWFsIC8gTWF0aC5wb3cocGFyYW0sIDIpIC0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdIC8gcGFyYW07XG4gICAgICBpbmVydGlhbE1vZHVsYXJpdHkgKz0gaW5lcnRpYWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihpbmVydGlhbE1vZHVsYXJpdHkudG9GaXhlZCg0KSk7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZCDlt67lgLzpmIjlgLxcbiAqIEBwYXJhbSBpbmVydGlhbE1vZHVsYXJpdHkg5piv5ZCm5L2/55So5oOv5oCn5qih5Z2X5bqm77yI5Y2z6IqC54K55bGe5oCn55u45Ly85oCn77yJXG4gKi9cblxuXG52YXIgbG91dmFpbiA9IGZ1bmN0aW9uIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIGluZXJ0aWFsTW9kdWxhcml0eSwgaW5lcnRpYWxXZWlnaHQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjAwMDE7XG4gIH1cblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbE1vZHVsYXJpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgIG5vZGUucHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIG5vZGUub3JpZ2luSW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgICB2YXIgbm9kZVR5cGVJbmZvXzEgPSBbXTtcblxuICAgIGlmIChub2Rlcy5ldmVyeShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzT3duUHJvcGVydHkoJ25vZGVUeXBlJyk7XG4gICAgfSkpIHtcbiAgICAgIG5vZGVUeXBlSW5mb18xID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZTtcbiAgICAgIH0pKSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUucHJvcGVydGllcy5ub2RlVHlwZSA9IG5vZGVUeXBlSW5mb18xLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09IG5vZGUubm9kZVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3BlcnR5S2V5cyA9IGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzKTsgLy8g5omA5pyJ6IqC54K55bGe5oCn54m55b6B5ZCR6YeP6ZuG5ZCIXG5cbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcyk7XG4gIH1cblxuICB2YXIgdW5pcXVlSWQgPSAxO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9IFN0cmluZyh1bmlxdWVJZCsrKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307IC8vIHRoZSBzdW0gb2YgdGhlIHdlaWdodHMgb2YgYWxsIGVkZ2VzIGluIHRoZSBncmFwaFxuXG4gIHZhciBtID0gMDtcbiAgYWRqTWF0cml4LmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBrID0gMDtcbiAgICB2YXIgaWlkID0gbm9kZXNbaV0uaWQ7XG4gICAgbmVpZ2hib3JzW2lpZF0gPSB7fTtcbiAgICByb3cuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIGopIHtcbiAgICAgIGlmICghZW50cnkpIHJldHVybjtcbiAgICAgIGsgKz0gZW50cnk7XG4gICAgICB2YXIgamlkID0gbm9kZXNbal0uaWQ7XG4gICAgICBuZWlnaGJvcnNbaWlkXVtqaWRdID0gZW50cnk7XG4gICAgICBtICs9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICBtIC89IDI7XG4gIHZhciB0b3RhbE1vZHVsYXJpdHkgPSBJbmZpbml0eTtcbiAgdmFyIHByZXZpb3VzTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgaXRlciA9IDA7XG4gIHZhciBmaW5hbE5vZGVzID0gW107XG4gIHZhciBmaW5hbENsdXN0ZXJzID0ge307XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ICYmIG5vZGVzLmV2ZXJ5KGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydGllcycpO1xuICAgIH0pKSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKSArIGdldEluZXJ0aWFsTW9kdWxhcml0eShub2RlcywgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgdG90YWxNb2R1bGFyaXR5ID0gZ2V0TW9kdWxhcml0eShub2RlcywgYWRqTWF0cml4LCBrcywgbSk7XG4gICAgfSAvLyDnrKzkuIDmrKHov63ku6NwcmV2aW91c01vZHVsYXJpdHnnm7TmjqXotYvlgLxcblxuXG4gICAgaWYgKGl0ZXIgPT09IDApIHtcbiAgICAgIHByZXZpb3VzTW9kdWxhcml0eSA9IHRvdGFsTW9kdWxhcml0eTtcbiAgICAgIGZpbmFsTm9kZXMgPSBub2RlcztcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSBjbHVzdGVycztcbiAgICB9XG5cbiAgICB2YXIgaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgPSB0b3RhbE1vZHVsYXJpdHkgPiAwICYmIHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSAmJiB0b3RhbE1vZHVsYXJpdHkgLSBwcmV2aW91c01vZHVsYXJpdHkgPCB0aHJlc2hvbGQ7IC8vIOaAu+aooeWdl+W6puWinuWKoOaJjeabtOaWsOacgOS8mOino1xuXG4gICAgaWYgKHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSkge1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgY2x1c3RlcklkOiBub2RlLmNsdXN0ZXJJZFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaW5hbENsdXN0ZXJzID0gKDAsIF91dGlsLmNsb25lKShjbHVzdGVycyk7XG4gICAgICBwcmV2aW91c01vZHVsYXJpdHkgPSB0b3RhbE1vZHVsYXJpdHk7XG4gICAgfSAvLyB3aGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgaXRlcmF0aW9uc1xuXG5cbiAgICBpZiAoaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgfHwgaXRlciA+IDEwMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgO1xuICAgIGl0ZXIrKzsgLy8gcHJlIGNvbXB1dGUgc29tZSB2YWx1ZXMgZm9yIGN1cnJlbnQgY2x1c3RlcnNcblxuICAgIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcbiAgICAgIHZhciBzdW1Ub3QgPSAwO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBjbHVzdGVySWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgc291cmNlQ2x1c3RlcklkICE9PSBjbHVzdGVySWQpIHtcbiAgICAgICAgICBzdW1Ub3QgPSBzdW1Ub3QgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNsdXN0ZXJzW2NsdXN0ZXJJZF0uc3VtVG90ID0gc3VtVG90O1xuICAgIH0pOyAvLyBtb3ZlIHRoZSBub2RlcyB0byBpbmNyZWFzZSB0aGUgZGVsdGEgbW9kdWxhcml0eVxuXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgdmFyIGJlc3RJbmNyZWFzZSA9IDA7XG4gICAgICB2YXIgYmVzdENsdXN0ZXI7XG4gICAgICB2YXIgY29tbW9uUGFyYW0gPSBrc1tpXSAvICgyICogbSk7IC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIGZyb20gbm9kZSB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgIHZhciBraWluID0gMDtcbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzID0gc2VsZkNsdXN0ZXIubm9kZXM7XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHNjTm9kZSkge1xuICAgICAgICB2YXIgc2NOb2RlSWR4ID0gbm9kZU1hcFtzY05vZGUuaWRdLmlkeDtcbiAgICAgICAga2lpbiArPSBhZGpNYXRyaXhbaV1bc2NOb2RlSWR4XSB8fCAwO1xuICAgICAgfSk7IC8vIHRoZSBtb2R1cmFyaXR5IGZvciAqKnJlbW92aW5nKiogdGhlIG5vZGUgaSBmcm9tIHRoZSBvcmlnaW4gY2x1c3RlciBvZiBub2RlIGlcblxuICAgICAgdmFyIHJlbW92ZU1vZHVyYXJpdHkgPSBraWluIC0gc2VsZkNsdXN0ZXIuc3VtVG90ICogY29tbW9uUGFyYW07IC8vIG5vZGVzIGZvciAqKnJlbW92aW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUgPSBzZWxmQ2x1c3Rlck5vZGVzLmZpbHRlcihmdW5jdGlvbiAoc2NOb2RlKSB7XG4gICAgICAgIHJldHVybiBzY05vZGUuaWQgIT09IG5vZGUuaWQ7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0UmVtb3ZlID0gW107XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAobm9kZVJlbW92ZSwgaW5kZXgpIHtcbiAgICAgICAgcHJvcGVydGllc1dlaWdodFJlbW92ZVtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVSZW1vdmUub3JpZ2luSW5kZXhdO1xuICAgICAgfSk7IC8vIHRoZSBpbmVydGlhbE1vZHVsYXJpdHkgZm9yICoqcmVtb3ZpbmcqKiB0aGUgbm9kZSBpIGZyb20gdGhlIG9yaWdpbiBjbHVzdGVyIG9mIG5vZGUgaVxuXG4gICAgICB2YXIgcmVtb3ZlSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZSwgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDsgLy8gdGhlIG5laWdodGJvcnMgb2YgdGhlIG5vZGVcblxuICAgICAgdmFyIG5vZGVOZWlnaGJvcklkcyA9IG5laWdoYm9yc1tub2RlLmlkXTtcbiAgICAgIE9iamVjdC5rZXlzKG5vZGVOZWlnaGJvcklkcykuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlSWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5vZGVNYXBbbmVpZ2hib3JOb2RlSWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7IC8vIGlmIHRoZSBub2RlIGFuZCB0aGUgbmVpZ2hib3Igb2Ygbm9kZSBhcmUgaW4gdGhlIHNhbWUgY2x1c3RlciwgcmV1dHJuXG5cbiAgICAgICAgaWYgKG5laWdoYm9yQ2x1c3RlcklkID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyID0gY2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdO1xuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzID0gbmVpZ2hib3JDbHVzdGVyLm5vZGVzOyAvLyBpZiB0aGUgY2x1c3RlciBpcyBlbXB0eSwgcmVtb3ZlIHRoZSBjbHVzdGVyIGFuZCByZXR1cm5cblxuICAgICAgICBpZiAoIWNsdXN0ZXJOb2RlcyB8fCAhY2x1c3Rlck5vZGVzLmxlbmd0aCkgcmV0dXJuOyAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyBmcm9tIG5vZGUgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJLaWluID0gMDtcbiAgICAgICAgY2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNOb2RlKSB7XG4gICAgICAgICAgdmFyIGNOb2RlSWR4ID0gbm9kZU1hcFtjTm9kZS5pZF0uaWR4O1xuICAgICAgICAgIG5laWdoYm9yQ2x1c3RlcktpaW4gKz0gYWRqTWF0cml4W2ldW2NOb2RlSWR4XSB8fCAwO1xuICAgICAgICB9KTsgLy8gdGhlIG1vZHVyYXJpdHkgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGFkZE1vZHVyYXJpdHkgPSBuZWlnaGJvckNsdXN0ZXJLaWluIC0gbmVpZ2hib3JDbHVzdGVyLnN1bVRvdCAqIGNvbW1vblBhcmFtOyAvLyBub2RlcyBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzQWZ0ZXJBZGQgPSBjbHVzdGVyTm9kZXMuY29uY2F0KFtub2RlXSk7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0QWRkID0gW107XG4gICAgICAgIGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLmZvckVhY2goZnVuY3Rpb24gKG5vZGVBZGQsIGluZGV4KSB7XG4gICAgICAgICAgcHJvcGVydGllc1dlaWdodEFkZFtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVBZGQub3JpZ2luSW5kZXhdO1xuICAgICAgICB9KTsgLy8gdGhlIGluZXJ0aWFsTW9kdWxhcml0eSBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgYWRkSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0OyAvLyB0aGUgaW5jcmVhc2UgbW9kdXJhcml0eSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkZE1vZHVyYXJpdHkgYW5kIHJlbW92ZU1vZHVyYXJpdHlcblxuICAgICAgICB2YXIgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5IC0gcmVtb3ZlTW9kdXJhcml0eTtcblxuICAgICAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgICAgICAgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5ICsgYWRkSW5lcnRpYWxNb2R1bGFyaXR5IC0gKHJlbW92ZU1vZHVyYXJpdHkgKyByZW1vdmVJbmVydGlhbE1vZHVsYXJpdHkpO1xuICAgICAgICB9IC8vIGZpbmQgdGhlIGJlc3QgY2x1c3RlciB0byBtb3ZlIG5vZGUgaSBpbnRvXG5cblxuICAgICAgICBpZiAoaW5jcmVhc2UgPiBiZXN0SW5jcmVhc2UpIHtcbiAgICAgICAgICBiZXN0SW5jcmVhc2UgPSBpbmNyZWFzZTtcbiAgICAgICAgICBiZXN0Q2x1c3RlciA9IG5laWdoYm9yQ2x1c3RlcjtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIGlmIGZvdW5kIGEgYmVzdCBjbHVzdGVyIHRvIG1vdmUgaW50b1xuXG4gICAgICBpZiAoYmVzdEluY3JlYXNlID4gMCkge1xuICAgICAgICBiZXN0Q2x1c3Rlci5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB2YXIgcHJldmlvdXNDbHVzdGVySWRfMSA9IG5vZGUuY2x1c3RlcklkO1xuICAgICAgICBub2RlLmNsdXN0ZXJJZCA9IGJlc3RDbHVzdGVyLmlkOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpOyAvLyByZW1vdmUgZnJvbSBvcmlnaW4gY2x1c3RlclxuXG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIHVwZGF0ZSBzdW1Ub3QgZm9yIGNsdXN0ZXJzXG4gICAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgPSAwO1xuICAgICAgICB2YXIgc2VsZkNsdXN0ZXJTdW1Ub3RfMSA9IDA7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IGJlc3RDbHVzdGVyLmlkICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gYmVzdENsdXN0ZXIuaWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBiZXN0Q2x1c3Rlci5pZCAmJiBzb3VyY2VDbHVzdGVySWQgIT09IGJlc3RDbHVzdGVyLmlkKSB7XG4gICAgICAgICAgICBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBwcmV2aW91c0NsdXN0ZXJJZF8xICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gcHJldmlvdXNDbHVzdGVySWRfMSB8fCB0YXJnZXRDbHVzdGVySWQgPT09IHByZXZpb3VzQ2x1c3RlcklkXzEgJiYgc291cmNlQ2x1c3RlcklkICE9PSBwcmV2aW91c0NsdXN0ZXJJZF8xKSB7XG4gICAgICAgICAgICBzZWxmQ2x1c3RlclN1bVRvdF8xID0gc2VsZkNsdXN0ZXJTdW1Ub3RfMSArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTsgLy8gdGhlIG5vZGVzIG9mIHRoZSBjbHVzdGVycyB0byBtb3ZlIGludG8gYW5kIHJlbW92ZSBhcmUgY2hhbmdlZCwgdXBkYXRlIHRoZWlyIHN1bVRvdFxuXG4gICAgICAgIGJlc3RDbHVzdGVyLnN1bVRvdCA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgICBzZWxmQ2x1c3Rlci5zdW1Ub3QgPSBzZWxmQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgfVxuICAgIH0pO1xuICB9IC8vIGRlbGV0ZSB0aGUgZW1wdHkgY2x1c3RlcnMsIGFzc2lnbiBpbmNyZWFzaW5nIGNsdXN0ZXJJZFxuXG5cbiAgdmFyIG5ld0NsdXN0ZXJJZE1hcCA9IHt9O1xuICB2YXIgY2x1c3RlcklkeCA9IDA7XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV3SWQgPSBTdHJpbmcoY2x1c3RlcklkeCArIDEpO1xuXG4gICAgaWYgKG5ld0lkID09PSBjbHVzdGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjbHVzdGVyLmlkID0gbmV3SWQ7XG4gICAgY2x1c3Rlci5ub2RlcyA9IGNsdXN0ZXIubm9kZXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgY2x1c3RlcklkOiBuZXdJZFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBmaW5hbENsdXN0ZXJzW25ld0lkXSA9IGNsdXN0ZXI7XG4gICAgbmV3Q2x1c3RlcklkTWFwW2NsdXN0ZXJJZF0gPSBuZXdJZDtcbiAgICBkZWxldGUgZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIGNsdXN0ZXJJZHgrKztcbiAgfSk7IC8vIHJlc3RvcmUgbm9kZSBjbHVzdGVySWRcblxuICBmaW5hbE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVJbmZvKSB7XG4gICAgdmFyIG5vZGUgPSBub2RlSW5mby5ub2RlLFxuICAgICAgICBjbHVzdGVySWQgPSBub2RlSW5mby5jbHVzdGVySWQ7XG4gICAgbm9kZS5jbHVzdGVySWQgPSBjbHVzdGVySWQ7XG4gICAgaWYgKG5vZGUuY2x1c3RlcklkICYmIG5ld0NsdXN0ZXJJZE1hcFtub2RlLmNsdXN0ZXJJZF0pIG5vZGUuY2x1c3RlcklkID0gbmV3Q2x1c3RlcklkTWFwW25vZGUuY2x1c3RlcklkXTtcbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjbHVzdGVyczogY2x1c3RlcnNBcnJheSxcbiAgICBjbHVzdGVyRWRnZXM6IGNsdXN0ZXJFZGdlc1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gbG91dmFpbjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _unionFind = _interopRequireDefault(__webpack_require__(/*! ./structs/union-find */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js\"));\n\nvar _binaryHeap = _interopRequireDefault(__webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _binaryHeap.default(compareWeight);\n (0, _util.getEdgesByNodeId)(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n (0, _util.getEdgesByNodeId)(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n (0, _util.getEdgesByNodeId)(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _unionFind.default(nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\nvar _default = minimumSpanningTree;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9tdHMuanM/ZTY2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLDhHQUFzQjs7QUFFdEUseUNBQXlDLG1CQUFPLENBQUMsZ0hBQXVCOztBQUV4RSxZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEdBQUcsR0FBRztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3VuaW9uRmluZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc3RydWN0cy91bmlvbi1maW5kXCIpKTtcblxudmFyIF9iaW5hcnlIZWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cbnZhciBwcmltTVNUID0gZnVuY3Rpb24gcHJpbU1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDku45ub2Rlc1swXeW8gOWni1xuXG5cbiAgdmFyIGN1cnJOb2RlID0gbm9kZXNbMF07XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2aXNpdGVkLmFkZChjdXJyTm9kZSk7IC8vIOeUqOS6jOWPieWghue7tOaKpOi3neW3suWKoOWFpeiKgueCueeahOWFtuS7luiKgueCueeahOi+ueeahOadg+WAvFxuXG4gIHZhciBjb21wYXJlV2VpZ2h0ID0gZnVuY3Rpb24gY29tcGFyZVdlaWdodChhLCBiKSB7XG4gICAgaWYgKHdlaWdodCkge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgdmFyIGVkZ2VRdWV1ZSA9IG5ldyBfYmluYXJ5SGVhcC5kZWZhdWx0KGNvbXBhcmVXZWlnaHQpO1xuICAoMCwgX3V0aWwuZ2V0RWRnZXNCeU5vZGVJZCkoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgKDAsIF91dGlsLmdldEVkZ2VzQnlOb2RlSWQpKHNvdXJjZSwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdmlzaXRlZC5oYXModGFyZ2V0KSkge1xuICAgICAgdmlzaXRlZC5hZGQodGFyZ2V0KTtcbiAgICAgICgwLCBfdXRpbC5nZXRFZGdlc0J5Tm9kZUlkKSh0YXJnZXQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIEtydXNrYWwgYWxnb3JpdGht77yM5aSN5p2C5bqmIE8oRSpsb2dFKSwgRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcmV0dXJuIElFZGdlW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIga3J1c2thbE1TVCA9IGZ1bmN0aW9uIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpIHtcbiAgdmFyIHNlbGVjdGVkRWRnZXMgPSBbXTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWRnZXM7XG4gIH0gLy8g6Iul5oyH5a6ad2VpZ2h077yM5YiZ5bCG5omA5pyJ55qE6L655oyJ5p2D5YC85LuO5bCP5Yiw5aSn5o6S5bqPXG5cblxuICB2YXIgd2VpZ2h0RWRnZXMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZTtcbiAgfSk7XG5cbiAgaWYgKHdlaWdodCkge1xuICAgIHdlaWdodEVkZ2VzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndlaWdodCAtIGIud2VpZ2h0O1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGRpc2pvaW50U2V0ID0gbmV3IF91bmlvbkZpbmQuZGVmYXVsdChub2Rlcy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pZDtcbiAgfSkpOyAvLyDku47mnYPlgLzmnIDlsI/nmoTovrnlvIDlp4vvvIzlpoLmnpzov5nmnaHovrnov57mjqXnmoTkuKTkuKroioLngrnkuo7lm75H5Lit5LiN5Zyo5ZCM5LiA5Liq6L+e6YCa5YiG6YeP5Lit77yM5YiZ5re75Yqg6L+Z5p2h6L65XG4gIC8vIOebtOWIsOmBjeWOhuWujOaJgOacieeCueaIlui+uVxuXG4gIHdoaWxlICh3ZWlnaHRFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGN1ckVkZ2UgPSB3ZWlnaHRFZGdlcy5zaGlmdCgpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJFZGdlLnNvdXJjZTtcbiAgICB2YXIgdGFyZ2V0ID0gY3VyRWRnZS50YXJnZXQ7XG5cbiAgICBpZiAoIWRpc2pvaW50U2V0LmNvbm5lY3RlZChzb3VyY2UsIHRhcmdldCkpIHtcbiAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChjdXJFZGdlKTtcbiAgICAgIGRpc2pvaW50U2V0LnVuaW9uKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIOacgOWwj+eUn+aIkOagkVxuICogcmVmZXI6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tydXNrYWwlMjdzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gd2VpZ2h0IOaMh+WumueUqOS6juS9nOS4uui+ueadg+mHjeeahOWxnuaAp++8jOiLpeS4jeaMh+Wumu+8jOWImeiupOS4uuaJgOaciei+ueadg+mHjeS4gOiHtFxuICogQHBhcmFtIGFsZ28gJ3ByaW0nIHwgJ2tydXNrYWwnIOeul+azleexu+Wei1xuICogQHJldHVybiBFZGdlQ29uZmlnW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZSA9IGZ1bmN0aW9uIG1pbmltdW1TcGFubmluZ1RyZWUoZ3JhcGhEYXRhLCB3ZWlnaHQsIGFsZ28pIHtcbiAgdmFyIGFsZ29zID0ge1xuICAgIHByaW06IHByaW1NU1QsXG4gICAga3J1c2thbDoga3J1c2thbE1TVFxuICB9O1xuICBpZiAoIWFsZ28pIHJldHVybiBrcnVza2FsTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbiAgcmV0dXJuIGFsZ29zW2FsZ29dKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IG1pbmltdW1TcGFubmluZ1RyZWU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _degree = _interopRequireDefault(__webpack_require__(/*! ./degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = (0, _degree.default)(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = (0, _util.getNeighbors)(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\nvar _default = pageRank;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9wYWdlUmFuay5qcz82M2RjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEscUNBQXFDLG1CQUFPLENBQUMsc0ZBQVU7O0FBRXZELFlBQVksbUJBQU8sQ0FBQyxrRkFBUTs7QUFFNUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvcGFnZVJhbmsuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZWdyZWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RlZ3JlZVwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogUGFnZVJhbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFnZVJhbmtcbiAqIHJlZmVyOiBodHRwczovL2dpdGh1Yi5jb20vYW52YWthL25ncmFwaC5wYWdlcmFua1xuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZXBzaWxvbiDliKTmlq3mmK/lkKbmlLbmlZvnmoTnsr7luqblgLzvvIzpu5jorqQgMC4wMDAwMDFcbiAqIEBwYXJhbSBsaW5rUHJvYiDpmLvlsLzns7vmlbDvvIhkdW1waW5nIGZhY3Rvcu+8ie+8jOaMh+S7u+aEj+aXtuWIu++8jOeUqOaIt+iuv+mXruWIsOafkOiKgueCueWQjue7p+e7reiuv+mXruivpeiKgueCuemTvuaOpeeahOS4i+S4gOS4quiKgueCueeahOamgueOh++8jOe7j+mqjOWAvCAwLjg1XG4gKi9cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSAoMCwgX2RlZ3JlZS5kZWZhdWx0KShncmFwaERhdGEpO1xuXG4gIHdoaWxlIChtYXhJdGVyYXRpb25zID4gMCAmJiBkaXN0YW5jZSA+IGVwc2lsb24pIHtcbiAgICBsZWFrZWRSYW5rID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXNDb3VudDsgKytqKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGUuaWQ7XG4gICAgICBjdXJyZW50UmFuayA9IDA7XG5cbiAgICAgIGlmIChub2RlRGVncmVlW25vZGUuaWRdLmluRGVncmVlID09PSAwKSB7XG4gICAgICAgIGN1clJhbmtzW25vZGVJZF0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGVJZCwgZWRnZXMsICdzb3VyY2UnKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcbiAgICAgICAgICB2YXIgb3V0RGVncmVlID0gbm9kZURlZ3JlZVtuZWlnaGJvcl0ub3V0RGVncmVlO1xuICAgICAgICAgIGlmIChvdXREZWdyZWUgPiAwKSBjdXJyZW50UmFuayArPSBwcmV2UmFua3NbbmVpZ2hib3JdIC8gb3V0RGVncmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VyUmFua3Nbbm9kZUlkXSA9IGxpbmtQcm9iICogY3VycmVudFJhbms7XG4gICAgICAgIGxlYWtlZFJhbmsgKz0gY3VyUmFua3Nbbm9kZUlkXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWFrZWRSYW5rID0gKDEgLSBsZWFrZWRSYW5rKSAvIG5vZGVzQ291bnQ7XG4gICAgZGlzdGFuY2UgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbal07XG4gICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICAgIGN1cnJlbnRSYW5rID0gY3VyUmFua3Nbbm9kZUlkXSArIGxlYWtlZFJhbms7XG4gICAgICBkaXN0YW5jZSArPSBNYXRoLmFicyhjdXJyZW50UmFuayAtIHByZXZSYW5rc1tub2RlSWRdKTtcbiAgICAgIHByZXZSYW5rc1tub2RlSWRdID0gY3VycmVudFJhbms7XG4gICAgfVxuXG4gICAgbWF4SXRlcmF0aW9ucyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIHByZXZSYW5rcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IHBhZ2VSYW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\nvar _default = MinBinaryHeap;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2JpbmFyeS1oZWFwLmpzPzY2N2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL3N0cnVjdHMvYmluYXJ5LWhlYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIGRlZmF1bHRDb21wYXJlID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59O1xuXG52YXIgTWluQmluYXJ5SGVhcCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbkJpbmFyeUhlYXAoY29tcGFyZUZuKSB7XG4gICAgaWYgKGNvbXBhcmVGbiA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wYXJlRm4gPSBkZWZhdWx0Q29tcGFyZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBhcmVGbiA9IGNvbXBhcmVGbjtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgfVxuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiAyICogaW5kZXggKyAyO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGluZGV4IC0gMSkgLyAyKTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QubGVuZ3RoIDw9IDA7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUudG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmlzRW1wdHkoKSA/IHVuZGVmaW5lZCA6IHRoaXMubGlzdFswXTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5kZWxNaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRvcCA9IHRoaXMudG9wKCk7XG4gICAgdmFyIGJvdHRvbSA9IHRoaXMubGlzdC5wb3AoKTtcblxuICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5saXN0WzBdID0gYm90dG9tO1xuICAgICAgdGhpcy5tb3ZlRG93bigwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9wO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5saXN0LnB1c2godmFsdWUpO1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5saXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLm1vdmVVcChpbmRleCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUubW92ZVVwID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KGluZGV4KTtcblxuICAgIHdoaWxlIChpbmRleCAmJiBpbmRleCA+IDAgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF0pID4gMCkge1xuICAgICAgLy8gc3dhcFxuICAgICAgdmFyIHRtcCA9IHRoaXMubGlzdFtwYXJlbnRdO1xuICAgICAgdGhpcy5saXN0W3BhcmVudF0gPSB0aGlzLmxpc3RbaW5kZXhdO1xuICAgICAgdGhpcy5saXN0W2luZGV4XSA9IHRtcDsgLy8gW3RoaXMubGlzdFtpbmRleF0sIHRoaXMubGlzdFtwYXJlbnRdXSA9IFt0aGlzLmxpc3RbcGFyZW50XSwgdGhpcy5saXN0W2luZGV4XV1cblxuICAgICAgaW5kZXggPSBwYXJlbnQ7XG4gICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG4gICAgfVxuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVEb3duID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGVsZW1lbnQgPSBpbmRleDtcbiAgICB2YXIgbGVmdCA9IHRoaXMuZ2V0TGVmdChpbmRleCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5nZXRSaWdodChpbmRleCk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmxpc3QubGVuZ3RoO1xuXG4gICAgaWYgKGxlZnQgIT09IG51bGwgJiYgbGVmdCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbbGVmdF0pID4gMCkge1xuICAgICAgZWxlbWVudCA9IGxlZnQ7XG4gICAgfSBlbHNlIGlmIChyaWdodCAhPT0gbnVsbCAmJiByaWdodCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbcmlnaHRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSByaWdodDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT09IGVsZW1lbnQpIHtcbiAgICAgIF9hID0gW3RoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2luZGV4XV0sIHRoaXMubGlzdFtpbmRleF0gPSBfYVswXSwgdGhpcy5saXN0W2VsZW1lbnRdID0gX2FbMV07XG4gICAgICB0aGlzLm1vdmVEb3duKGVsZW1lbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gTWluQmluYXJ5SGVhcDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTWluQmluYXJ5SGVhcDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.LinkedListNode = void 0;\n\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\nexports.LinkedListNode = LinkedListNode;\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\nvar _default = LinkedList;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzPzVkNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLkxpbmtlZExpc3ROb2RlID0gdm9pZCAwO1xuXG52YXIgZGVmYXVsdENvbXBhcmF0b3IgPSBmdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDpk77ooajkuK3ljZXkuKrlhYPntKDoioLngrlcbiAqL1xuXG5cbnZhciBMaW5rZWRMaXN0Tm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3ROb2RlKHZhbHVlLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgPT09IHZvaWQgMCkge1xuICAgICAgbmV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cblxuICBMaW5rZWRMaXN0Tm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gY2FsbGJhY2sgPyBjYWxsYmFjayh0aGlzLnZhbHVlKSA6IFwiXCIuY29uY2F0KHRoaXMudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0Tm9kZTtcbn0oKTtcblxuZXhwb3J0cy5MaW5rZWRMaXN0Tm9kZSA9IExpbmtlZExpc3ROb2RlO1xuXG52YXIgTGlua2VkTGlzdCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3QoY29tcGFyYXRvcikge1xuICAgIGlmIChjb21wYXJhdG9yID09PSB2b2lkIDApIHtcbiAgICAgIGNvbXBhcmF0b3IgPSBkZWZhdWx0Q29tcGFyYXRvcjtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5jb21wYXJlID0gY29tcGFyYXRvcjtcbiAgfVxuICAvKipcbiAgICog5bCG5oyH5a6a5YWD57Sg5re75Yqg5Yiw6ZO+6KGo5aS06YOoXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnByZXBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyDlnKjlpLTpg6jmt7vliqDkuIDkuKroioLngrlcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgdGhpcy5oZWFkKTtcbiAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuXG4gICAgaWYgKCF0aGlzLnRhaWwpIHtcbiAgICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajkuK1cbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIG5ld05vZGUgPSBuZXcgTGlua2VkTGlzdE5vZGUodmFsdWUpOyAvLyDlpoLmnpzkuI3lrZjlnKjlpLToioLngrnvvIzliJnlsIbliJvlu7rnmoTmlrDoioLngrnkvZzkuLrlpLToioLngrlcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8g5bCG5paw6IqC54K56ZmE5Yqg5Yiw6ZO+6KGo5pyr5bC+XG5cblxuICAgIHRoaXMudGFpbC5uZXh0ID0gbmV3Tm9kZTtcbiAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB2YWx1ZSDopoHliKDpmaTnmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZU5vZGUgPSBudWxsOyAvLyDlpoLmnpzliKDpmaTnmoTmmK/lpLTpg6jlhYPntKDvvIzliJnlsIZuZXh05L2c5Li65aS05YWD57SgXG5cbiAgICB3aGlsZSAodGhpcy5oZWFkICYmIHRoaXMuY29tcGFyZSh0aGlzLmhlYWQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgZGVsZXRlTm9kZSA9IHRoaXMuaGVhZDtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIGlmIChjdXJyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgLy8g5aaC5p6c5Yig6Zmk5LqG6IqC54K55Lul5ZCO77yM5bCGbmV4dOiKgueCueWJjeenu1xuICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLm5leHQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFyZShjdXJyZW50Tm9kZS5uZXh0LnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZWxldGVOb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gY3VycmVudE5vZGUubmV4dC5uZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8g5qOA5p+l5bC+6YOo6IqC54K55piv5ZCm6KKr5Yig6ZmkXG5cblxuICAgIGlmICh0aGlzLmNvbXBhcmUodGhpcy50YWlsLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMudGFpbCA9IGN1cnJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVOb2RlO1xuICB9O1xuICAvKipcbiAgICog5p+l5om+5oyH5a6a55qE5YWD57SgXG4gICAqIEBwYXJhbSBwYXJhbTBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2EudmFsdWUsXG4gICAgICAgIHZhbHVlID0gX2IgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9iLFxuICAgICAgICBfYyA9IF9hLmNhbGxiYWNrLFxuICAgICAgICBjYWxsYmFjayA9IF9jID09PSB2b2lkIDAgPyB1bmRlZmluZWQgOiBfYztcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIC8vIOWmguaenOaMh+WumuS6hiBjYWxsYmFja++8jOWImeaMieaMh+WumueahCBjYWxsYmFjayDmn6Xmib5cbiAgICAgIGlmIChjYWxsYmFjayAmJiBjYWxsYmFjayhjdXJyZW50Tm9kZS52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfSAvLyDlpoLmnpzmjIflrprkuoYgdmFsdWXvvIzliJnmjIkgdmFsdWUg5p+l5om+XG5cblxuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlsL7pg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVUYWlsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBkZWxldGVkVGFpbCA9IHRoaXMudGFpbDtcblxuICAgIGlmICh0aGlzLmhlYWQgPT09IHRoaXMudGFpbCkge1xuICAgICAgLy8g6ZO+6KGo5Lit5Y+q5pyJ5LiA5Liq5YWD57SgXG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHJldHVybiBkZWxldGVkVGFpbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50Tm9kZS5uZXh0Lm5leHQpIHtcbiAgICAgICAgY3VycmVudE5vZGUubmV4dCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5aS06YOo6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZGVsZXRlSGVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZWRIZWFkID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKHRoaXMuaGVhZC5uZXh0KSB7XG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWRIZWFkO1xuICB9O1xuICAvKipcbiAgICog5bCG5LiA57uE5YWD57Sg6L2s5oiQ6ZO+6KGo5Lit55qE6IqC54K5XG4gICAqIEBwYXJhbSB2YWx1ZXMg6ZO+6KGo5Lit55qE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZnJvbUFycmF5ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBfdGhpcy5hcHBlbmQodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5bCG6ZO+6KGo5Lit55qE6IqC54K56L2s5oiQ5pWw57uE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIG5vZGVzLnB1c2goY3VycmVudE5vZGUpO1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfTtcbiAgLyoqXG4gICAqIOWPjei9rOmTvuihqOS4reeahOWFg+e0oOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuICAgIHZhciBwcmV2Tm9kZSA9IG51bGw7XG4gICAgdmFyIG5leHROb2RlID0gbnVsbDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5a2Y5YKo5LiL5LiA5Liq5YWD57Sg6IqC54K5XG4gICAgICBuZXh0Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7IC8vIOabtOaUueW9k+WJjeiKgueCueeahOS4i+S4gOS4quiKgueCue+8jOS7peS+v+WwhuWug+i/nuaOpeWIsOS4iuS4gOS4quiKgueCueS4ilxuXG4gICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gcHJldk5vZGU7IC8vIOWwhiBwcmV2Tm9kZSDlkowgY3VycmVudE5vZGUg5ZCR5YmN56e75Yqo5LiA5q2lXG5cbiAgICAgIHByZXZOb2RlID0gY3VycmVudE5vZGU7XG4gICAgICBjdXJyZW50Tm9kZSA9IG5leHROb2RlO1xuICAgIH1cblxuICAgIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcbiAgICB0aGlzLmhlYWQgPSBwcmV2Tm9kZTtcbiAgfTtcblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50b1N0cmluZyhjYWxsYmFjayk7XG4gICAgfSkudG9TdHJpbmcoKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTGlua2VkTGlzdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _linkedList = _interopRequireDefault(__webpack_require__(/*! ./linked-list */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linkedList.default();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\nvar _default = Queue;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3F1ZXVlLmpzPzc0NWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSx5Q0FBeUMsbUJBQU8sQ0FBQyx3R0FBZTs7QUFFaEUsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2xpbmtlZExpc3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpbmtlZC1saXN0XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFF1ZXVlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUXVldWUoKSB7XG4gICAgdGhpcy5saW5rZWRMaXN0ID0gbmV3IF9saW5rZWRMaXN0LmRlZmF1bHQoKTtcbiAgfVxuICAvKipcbiAgICog6Zif5YiX5piv5ZCm5Li656m6XG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOivu+WPlumYn+WIl+WktOmDqOeahOWFg+e0oO+8jCDkuI3liKDpmaTpmJ/liJfkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMubGlua2VkTGlzdC5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG4gIC8qKlxuICAgKiDlnKjpmJ/liJfnmoTlsL7pg6jmlrDlop7kuIDkuKrlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QuYXBwZW5kKHZhbHVlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOmYn+WIl+S4reeahOWktOmDqOWFg+e0oO+8jOWmguaenOmYn+WIl+S4uuepuu+8jOWImei/lOWbniBudWxsXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmRlcXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgUXVldWUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b1N0cmluZyhjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIFF1ZXVlO1xufSgpO1xuXG52YXIgX2RlZmF1bHQgPSBRdWV1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js ***! \****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\nvar _default = UnionFind;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3VuaW9uLWZpbmQuanM/ZGM0MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy91bmlvbi1maW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbi8qKlxuICog5bm25p+l6ZuGIERpc2pvaW50IHNldCB0byBzdXBwb3J0IHF1aWNrIHVuaW9uXG4gKi9cbnZhciBVbmlvbkZpbmQgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbmlvbkZpbmQoaXRlbXMpIHtcbiAgICB0aGlzLmNvdW50ID0gaXRlbXMubGVuZ3RoO1xuICAgIHRoaXMucGFyZW50ID0ge307XG5cbiAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1zXzEgPSBpdGVtczsgX2kgPCBpdGVtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGkgPSBpdGVtc18xW19pXTtcbiAgICAgIHRoaXMucGFyZW50W2ldID0gaTtcbiAgICB9XG4gIH0gLy8gZmluZCB0aGUgcm9vdCBvZiB0aGUgaXRlbVxuXG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB3aGlsZSAodGhpcy5wYXJlbnRbaXRlbV0gIT09IGl0ZW0pIHtcbiAgICAgIGl0ZW0gPSB0aGlzLnBhcmVudFtpdGVtXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBVbmlvbkZpbmQucHJvdG90eXBlLnVuaW9uID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgcm9vdEEgPSB0aGlzLmZpbmQoYSk7XG4gICAgdmFyIHJvb3RCID0gdGhpcy5maW5kKGIpO1xuICAgIGlmIChyb290QSA9PT0gcm9vdEIpIHJldHVybjsgLy8gbWFrZSB0aGUgZWxlbWVudCB3aXRoIHNtYWxsZXIgcm9vdCB0aGUgcGFyZW50XG5cbiAgICBpZiAocm9vdEEgPCByb290Qikge1xuICAgICAgaWYgKHRoaXMucGFyZW50W2JdICE9PSBiKSB0aGlzLnVuaW9uKHRoaXMucGFyZW50W2JdLCBhKTtcbiAgICAgIHRoaXMucGFyZW50W2JdID0gdGhpcy5wYXJlbnRbYV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFthXSAhPT0gYSkgdGhpcy51bmlvbih0aGlzLnBhcmVudFthXSwgYik7XG4gICAgICB0aGlzLnBhcmVudFthXSA9IHRoaXMucGFyZW50W2JdO1xuICAgIH1cbiAgfTsgLy8gd2hldGhlciBhIGFuZCBiIGFyZSBjb25uZWN0ZWQsIGkuZS4gYSBhbmQgYiBoYXZlIHRoZSBzYW1lIHJvb3RcblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuY29ubmVjdGVkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kKGEpID09PSB0aGlzLmZpbmQoYik7XG4gIH07XG5cbiAgcmV0dXJuIFVuaW9uRmluZDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gVW5pb25GaW5kO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uniqueId = exports.getOutEdgesNodeId = exports.getNeighbors = exports.getEdgesByNodeId = void 0;\n\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getNeighbors = getNeighbors;\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getOutEdgesNodeId = getOutEdgesNodeId;\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\n\nexports.getEdgesByNodeId = getEdgesByNodeId;\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};\n\nexports.uniqueId = uniqueId;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi91dGlsLmpzPzgxZTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy51bmlxdWVJZCA9IGV4cG9ydHMuZ2V0T3V0RWRnZXNOb2RlSWQgPSBleHBvcnRzLmdldE5laWdoYm9ycyA9IGV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IHZvaWQgMDtcblxuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTmiYDmnInpgrvlsYVcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDpgrvlsYXnsbvlnotcbiAqL1xudmFyIGdldE5laWdoYm9ycyA9IGZ1bmN0aW9uIGdldE5laWdoYm9ycyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIGlmIChlZGdlcyA9PT0gdm9pZCAwKSB7XG4gICAgZWRnZXMgPSBbXTtcbiAgfVxuXG4gIHZhciBjdXJyZW50RWRnZXMgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICB9KTtcblxuICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAvLyDlvZPliY3oioLngrnkuLogc291cmNl77yM5a6D5omA5oyH5ZCR55qE55uu5qCH6IqC54K5XG4gICAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXJfMSA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXJfMShlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGN1cnJlbnRFZGdlcy5maWx0ZXIobmVpZ2hoYm9yc0NvbnZlcnRlcl8xKS5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldDtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnc291cmNlJykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiB0YXJnZXTvvIzlroPmiYDmjIflkJHnmoTmupDoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2Uuc291cmNlO1xuICAgIH0pO1xuICB9IC8vIOiLpeacquaMh+WumiB0eXBlIO+8jOWImei/lOWbnuaJgOaciemCu+WxhVxuXG5cbiAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCA/IGVkZ2UudGFyZ2V0IDogZWRnZS5zb3VyY2U7XG4gIH07XG5cbiAgcmV0dXJuIGN1cnJlbnRFZGdlcy5tYXAobmVpZ2hoYm9yc0NvbnZlcnRlcik7XG59O1xuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTlh7rovrlcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmdldE5laWdoYm9ycyA9IGdldE5laWdoYm9ycztcblxudmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5nZXRPdXRFZGdlc05vZGVJZCA9IGdldE91dEVkZ2VzTm9kZUlkO1xuXG52YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IGdldEVkZ2VzQnlOb2RlSWQ7XG5cbnZhciB1bmlxdWVJZCA9IGZ1bmN0aW9uIHVuaXF1ZUlkKGluZGV4KSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG5cbiAgdmFyIHJhbmRvbTEgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgdmFyIHJhbmRvbTIgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KGluZGV4LCBcIi1cIikuY29uY2F0KHJhbmRvbTEpLmNvbmNhdChyYW5kb20yKTtcbn07XG5cbmV4cG9ydHMudW5pcXVlSWQgPSB1bmlxdWVJZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n/**\n * 向量运算\n */\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] + otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] - otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] / length;\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = -this.arr[key];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var key in this.arr) {\n res += Math.pow(this.arr[key] - otherVector.arr[key], 2);\n }\n\n return res;\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = (0, _util.clone)(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var key in this.arr) {\n res[key] = (this.arr[key] - min) / (max - min);\n }\n\n return new Vector(res);\n };\n\n return Vector;\n}();\n\nvar _default = Vector;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy92ZWN0b3IuanM/ODJmMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQyw2RUFBWTs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL3V0aWxzL3ZlY3Rvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxuLyoqXG4gKiDlkJHph4/ov5DnrpdcbiAqL1xudmFyIFZlY3RvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZlY3RvcihhcnIpIHtcbiAgICB0aGlzLmFyciA9IGFycjtcbiAgfVxuXG4gIFZlY3Rvci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihvdGhlckFycik7XG4gICAgfVxuXG4gICAgaWYgKCEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMuYXJyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1trZXldID0gdGhpcy5hcnJba2V5XSArIG90aGVyQXJyW2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKG90aGVyQXJyKTtcbiAgICB9XG5cbiAgICBpZiAoIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy5hcnIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzW2tleV0gPSB0aGlzLmFycltrZXldIC0gb3RoZXJBcnJba2V5XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgICB9XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5hdmcgPSBmdW5jdGlvbiAobGVuZ3RoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXNba2V5XSA9IHRoaXMuYXJyW2tleV0gLyBsZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gW107XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1trZXldID0gLXRoaXMuYXJyW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTsgLy8g5bmz5pa55qyn5byP6Led56a7XG5cblxuICBWZWN0b3IucHJvdG90eXBlLnNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8ICEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmFycikge1xuICAgICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJba2V5XSAtIG90aGVyVmVjdG9yLmFycltrZXldLCAyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07IC8vIOW9kuS4gOWMluWkhOeQhlxuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBjbG9uZUFyciA9ICgwLCBfdXRpbC5jbG9uZSkodGhpcy5hcnIpO1xuICAgIGNsb25lQXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICB2YXIgbWF4ID0gY2xvbmVBcnJbY2xvbmVBcnIubGVuZ3RoIC0gMV07XG4gICAgdmFyIG1pbiA9IGNsb25lQXJyWzBdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXNba2V5XSA9ICh0aGlzLmFycltrZXldIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07XG5cbiAgcmV0dXJuIFZlY3Rvcjtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gVmVjdG9yO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js ***! \***************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDI\", {\n enumerable: true,\n get: function get() {\n return _gaddi.default;\n }\n});\nObject.defineProperty(exports, \"breadthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _bfs.default;\n }\n});\nObject.defineProperty(exports, \"connectedComponent\", {\n enumerable: true,\n get: function get() {\n return _connectedComponent.default;\n }\n});\nObject.defineProperty(exports, \"depthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _dfs.default;\n }\n});\nObject.defineProperty(exports, \"detectCycle\", {\n enumerable: true,\n get: function get() {\n return _detectCycle.default;\n }\n});\nObject.defineProperty(exports, \"dijkstra\", {\n enumerable: true,\n get: function get() {\n return _dijkstra.default;\n }\n});\nObject.defineProperty(exports, \"findAllPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findAllPath;\n }\n});\nObject.defineProperty(exports, \"findShortestPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findShortestPath;\n }\n});\nObject.defineProperty(exports, \"floydWarshall\", {\n enumerable: true,\n get: function get() {\n return _floydWarshall.default;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrix\", {\n enumerable: true,\n get: function get() {\n return _adjacentMatrix.default;\n }\n});\nObject.defineProperty(exports, \"getDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.default;\n }\n});\nObject.defineProperty(exports, \"getInDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getInDegree;\n }\n});\nObject.defineProperty(exports, \"getNeighbors\", {\n enumerable: true,\n get: function get() {\n return _util.getNeighbors;\n }\n});\nObject.defineProperty(exports, \"getOutDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getOutDegree;\n }\n});\nObject.defineProperty(exports, \"labelPropagation\", {\n enumerable: true,\n get: function get() {\n return _labelPropagation.default;\n }\n});\nObject.defineProperty(exports, \"louvain\", {\n enumerable: true,\n get: function get() {\n return _louvain.default;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTree\", {\n enumerable: true,\n get: function get() {\n return _mts.default;\n }\n});\nObject.defineProperty(exports, \"pageRank\", {\n enumerable: true,\n get: function get() {\n return _pageRank.default;\n }\n});\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ../adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _bfs = _interopRequireDefault(__webpack_require__(/*! ../bfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js\"));\n\nvar _connectedComponent = _interopRequireDefault(__webpack_require__(/*! ../connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js\"));\n\nvar _degree = _interopRequireWildcard(__webpack_require__(/*! ../degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js\"));\n\nvar _detectCycle = _interopRequireDefault(__webpack_require__(/*! ../detect-cycle */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js\"));\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ../dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ../dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\"));\n\nvar _findPath = __webpack_require__(/*! ../find-path */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ../floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _labelPropagation = _interopRequireDefault(__webpack_require__(/*! ../label-propagation */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js\"));\n\nvar _louvain = _interopRequireDefault(__webpack_require__(/*! ../louvain */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js\"));\n\nvar _mts = _interopRequireDefault(__webpack_require__(/*! ../mts */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js\"));\n\nvar _pageRank = _interopRequireDefault(__webpack_require__(/*! ../pageRank */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js\"));\n\nvar _gaddi = _interopRequireDefault(__webpack_require__(/*! ../gaddi */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js\"));\n\nvar _util = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2FsZ29yaXRobS5qcz8yM2JmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCw2Q0FBNkMsbUJBQU8sQ0FBQyx5R0FBb0I7O0FBRXpFLGtDQUFrQyxtQkFBTyxDQUFDLGlGQUFROztBQUVsRCxpREFBaUQsbUJBQU8sQ0FBQyxpSEFBd0I7O0FBRWpGLHNDQUFzQyxtQkFBTyxDQUFDLHVGQUFXOztBQUV6RCwwQ0FBMEMsbUJBQU8sQ0FBQyxtR0FBaUI7O0FBRW5FLGtDQUFrQyxtQkFBTyxDQUFDLGlGQUFROztBQUVsRCx1Q0FBdUMsbUJBQU8sQ0FBQywyRkFBYTs7QUFFNUQsZ0JBQWdCLG1CQUFPLENBQUMsNkZBQWM7O0FBRXRDLDRDQUE0QyxtQkFBTyxDQUFDLHFHQUFrQjs7QUFFdEUsK0NBQStDLG1CQUFPLENBQUMsNkdBQXNCOztBQUU3RSxzQ0FBc0MsbUJBQU8sQ0FBQyx5RkFBWTs7QUFFMUQsa0NBQWtDLG1CQUFPLENBQUMsaUZBQVE7O0FBRWxELHVDQUF1QyxtQkFBTyxDQUFDLDJGQUFhOztBQUU1RCxvQ0FBb0MsbUJBQU8sQ0FBQyxxRkFBVTs7QUFFdEQsWUFBWSxtQkFBTyxDQUFDLG1GQUFTOztBQUU3QixnREFBZ0QsZ0RBQWdELHVDQUF1QyxzQ0FBc0Msb0ZBQW9GLDJEQUEyRCxFQUFFLGVBQWU7O0FBRTdVLG9EQUFvRCw2Q0FBNkMsWUFBWSxFQUFFLDhFQUE4RSxTQUFTLGdCQUFnQixFQUFFLG1EQUFtRCwrQkFBK0IsdUJBQXVCLEVBQUUsaUJBQWlCLHNGQUFzRix1QkFBdUIsMkVBQTJFLHFGQUFxRixzQ0FBc0MsMENBQTBDLEVBQUUsT0FBTyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsc0JBQXNCLGFBQWEsd0JBQXdCLEVBQUUsZUFBZTs7QUFFcHlCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9hbGdvcml0aG0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiR0FERElcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2dhZGRpLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYnJlYWR0aEZpcnN0U2VhcmNoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9iZnMuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjb25uZWN0ZWRDb21wb25lbnRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Nvbm5lY3RlZENvbXBvbmVudC5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlcHRoRmlyc3RTZWFyY2hcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Rmcy5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZXRlY3RDeWNsZS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRpamtzdHJhXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kaWprc3RyYS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kQWxsUGF0aDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmaW5kU2hvcnRlc3RQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kU2hvcnRlc3RQYXRoO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZsb3lkV2Fyc2hhbGxcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRBZGpNYXRyaXhcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2FkamFjZW50TWF0cml4LmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfZGVncmVlLmdldEluRGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfdXRpbC5nZXROZWlnaGJvcnM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0T3V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZ2V0T3V0RGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImxhYmVsUHJvcGFnYXRpb25cIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2xhYmVsUHJvcGFnYXRpb24uZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJsb3V2YWluXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9sb3V2YWluLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfbXRzLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX3BhZ2VSYW5rLmRlZmF1bHQ7XG4gIH1cbn0pO1xuXG52YXIgX2FkamFjZW50TWF0cml4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vYWRqYWNlbnQtbWF0cml4XCIpKTtcblxudmFyIF9iZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9iZnNcIikpO1xuXG52YXIgX2Nvbm5lY3RlZENvbXBvbmVudCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2Nvbm5lY3RlZC1jb21wb25lbnRcIikpO1xuXG52YXIgX2RlZ3JlZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuLi9kZWdyZWVcIikpO1xuXG52YXIgX2RldGVjdEN5Y2xlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGV0ZWN0LWN5Y2xlXCIpKTtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9kZnNcIikpO1xuXG52YXIgX2RpamtzdHJhID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGlqa3N0cmFcIikpO1xuXG52YXIgX2ZpbmRQYXRoID0gcmVxdWlyZShcIi4uL2ZpbmQtcGF0aFwiKTtcblxudmFyIF9mbG95ZFdhcnNoYWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZmxveWRXYXJzaGFsbFwiKSk7XG5cbnZhciBfbGFiZWxQcm9wYWdhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xhYmVsLXByb3BhZ2F0aW9uXCIpKTtcblxudmFyIF9sb3V2YWluID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG91dmFpblwiKSk7XG5cbnZhciBfbXRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbXRzXCIpKTtcblxudmFyIF9wYWdlUmFuayA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL3BhZ2VSYW5rXCIpKTtcblxudmFyIF9nYWRkaSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2dhZGRpXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MESSAGE = exports.ALGORITHM = void 0;\nvar ALGORITHM = {\n pageRank: 'pageRank',\n breadthFirstSearch: 'breadthFirstSearch',\n connectedComponent: 'connectedComponent',\n depthFirstSearch: 'depthFirstSearch',\n detectCycle: 'detectCycle',\n detectDirectedCycle: 'detectDirectedCycle',\n detectAllCycles: 'detectAllCycles',\n detectAllDirectedCycle: 'detectAllDirectedCycle',\n detectAllUndirectedCycle: 'detectAllUndirectedCycle',\n dijkstra: 'dijkstra',\n findAllPath: 'findAllPath',\n findShortestPath: 'findShortestPath',\n floydWarshall: 'floydWarshall',\n getAdjMatrix: 'getAdjMatrix',\n getDegree: 'getDegree',\n getInDegree: 'getInDegree',\n getNeighbors: 'getNeighbors',\n getOutDegree: 'getOutDegree',\n labelPropagation: 'labelPropagation',\n louvain: 'louvain',\n GADDI: 'GADDI',\n minimumSpanningTree: 'minimumSpanningTree',\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.ALGORITHM = ALGORITHM;\nvar MESSAGE = {\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.MESSAGE = MESSAGE;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzPzE0MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLk1FU1NBR0UgPSBleHBvcnRzLkFMR09SSVRITSA9IHZvaWQgMDtcbnZhciBBTEdPUklUSE0gPSB7XG4gIHBhZ2VSYW5rOiAncGFnZVJhbmsnLFxuICBicmVhZHRoRmlyc3RTZWFyY2g6ICdicmVhZHRoRmlyc3RTZWFyY2gnLFxuICBjb25uZWN0ZWRDb21wb25lbnQ6ICdjb25uZWN0ZWRDb21wb25lbnQnLFxuICBkZXB0aEZpcnN0U2VhcmNoOiAnZGVwdGhGaXJzdFNlYXJjaCcsXG4gIGRldGVjdEN5Y2xlOiAnZGV0ZWN0Q3ljbGUnLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0RGlyZWN0ZWRDeWNsZScsXG4gIGRldGVjdEFsbEN5Y2xlczogJ2RldGVjdEFsbEN5Y2xlcycsXG4gIGRldGVjdEFsbERpcmVjdGVkQ3ljbGU6ICdkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlJyxcbiAgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlJyxcbiAgZGlqa3N0cmE6ICdkaWprc3RyYScsXG4gIGZpbmRBbGxQYXRoOiAnZmluZEFsbFBhdGgnLFxuICBmaW5kU2hvcnRlc3RQYXRoOiAnZmluZFNob3J0ZXN0UGF0aCcsXG4gIGZsb3lkV2Fyc2hhbGw6ICdmbG95ZFdhcnNoYWxsJyxcbiAgZ2V0QWRqTWF0cml4OiAnZ2V0QWRqTWF0cml4JyxcbiAgZ2V0RGVncmVlOiAnZ2V0RGVncmVlJyxcbiAgZ2V0SW5EZWdyZWU6ICdnZXRJbkRlZ3JlZScsXG4gIGdldE5laWdoYm9yczogJ2dldE5laWdoYm9ycycsXG4gIGdldE91dERlZ3JlZTogJ2dldE91dERlZ3JlZScsXG4gIGxhYmVsUHJvcGFnYXRpb246ICdsYWJlbFByb3BhZ2F0aW9uJyxcbiAgbG91dmFpbjogJ2xvdXZhaW4nLFxuICBHQURESTogJ0dBRERJJyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZTogJ21pbmltdW1TcGFubmluZ1RyZWUnLFxuICBTVUNDRVNTOiAnU1VDQ0VTUycsXG4gIEZBSUxVUkU6ICdGQUlMVVJFJ1xufTtcbmV4cG9ydHMuQUxHT1JJVEhNID0gQUxHT1JJVEhNO1xudmFyIE1FU1NBR0UgPSB7XG4gIFNVQ0NFU1M6ICdTVUNDRVNTJyxcbiAgRkFJTFVSRTogJ0ZBSUxVUkUnXG59O1xuZXhwb3J0cy5NRVNTQUdFID0gTUVTU0FHRTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js ***! \******************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\");\n\nvar _index = _interopRequireDefault(__webpack_require__(/*! ./index.worker */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 创建一个在worker中运行的算法\n * @param type 算法类型\n */\nvar createWorker = function createWorker(type) {\n return function () {\n var data = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n\n return new Promise(function (resolve, reject) {\n var worker = new _index.default();\n worker.postMessage({\n _algorithmType: type,\n data: data\n });\n\n worker.onmessage = function (event) {\n var _a = event.data,\n data = _a.data,\n _algorithmType = _a._algorithmType;\n\n if (_constant.MESSAGE.SUCCESS === _algorithmType) {\n resolve(data);\n } else {\n reject();\n }\n\n worker.terminate();\n };\n });\n };\n};\n\nvar _default = createWorker;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcz84MTdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsZ0JBQWdCLG1CQUFPLENBQUMsa0dBQVk7O0FBRXBDLG9DQUFvQyxtQkFBTyxDQUFDLDBHQUFnQjs7QUFFNUQsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2NvbnN0YW50ID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5cbnZhciBfaW5kZXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2luZGV4LndvcmtlclwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5Yib5bu65LiA5Liq5Zyod29ya2Vy5Lit6L+Q6KGM55qE566X5rOVXG4gKiBAcGFyYW0gdHlwZSDnrpfms5XnsbvlnotcbiAqL1xudmFyIGNyZWF0ZVdvcmtlciA9IGZ1bmN0aW9uIGNyZWF0ZVdvcmtlcih0eXBlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBkYXRhW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgX2luZGV4LmRlZmF1bHQoKTtcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIF9hbGdvcml0aG1UeXBlOiB0eXBlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcblxuICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgX2EgPSBldmVudC5kYXRhLFxuICAgICAgICAgICAgZGF0YSA9IF9hLmRhdGEsXG4gICAgICAgICAgICBfYWxnb3JpdGhtVHlwZSA9IF9hLl9hbGdvcml0aG1UeXBlO1xuXG4gICAgICAgIGlmIChfY29uc3RhbnQuTUVTU0FHRS5TVUNDRVNTID09PSBfYWxnb3JpdGhtVHlwZSkge1xuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gY3JlYXRlV29ya2VyO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pageRankAsync = exports.minimumSpanningTreeAsync = exports.louvainAsync = exports.labelPropagationAsync = exports.getOutDegreeAsync = exports.getNeighborsAsync = exports.getInDegreeAsync = exports.getDegreeAsync = exports.getAdjMatrixAsync = exports.floydWarshallAsync = exports.findShortestPathAsync = exports.findAllPathAsync = exports.dijkstraAsync = exports.detectCycleAsync = exports.detectAllUndirectedCycleAsync = exports.detectAllDirectedCycleAsync = exports.detectAllCyclesAsync = exports.connectedComponentAsync = exports.GADDIAsync = void 0;\n\nvar _createWorker = _interopRequireDefault(__webpack_require__(/*! ./createWorker */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\nvar getAdjMatrixAsync = function getAdjMatrixAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getAdjMatrix).apply(void 0, [graphData, directed]);\n};\n/**\n * 图的连通分量\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.getAdjMatrixAsync = getAdjMatrixAsync;\n\nvar connectedComponentAsync = function connectedComponentAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.connectedComponent).apply(void 0, [graphData, directed]);\n};\n/**\n * 获取节点的度\n * @param graphData 图数据\n */\n\n\nexports.connectedComponentAsync = connectedComponentAsync;\n\nvar getDegreeAsync = function getDegreeAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getDegree)(graphData);\n};\n/**\n * 获取节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getDegreeAsync = getDegreeAsync;\n\nvar getInDegreeAsync = function getInDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getInDegree)(graphData, nodeId);\n};\n/**\n * 获取节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegreeAsync = getInDegreeAsync;\n\nvar getOutDegreeAsync = function getOutDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getOutDegree)(graphData, nodeId);\n};\n/**\n * 检测图中的(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.getOutDegreeAsync = getOutDegreeAsync;\n\nvar detectCycleAsync = function detectCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectCycle)(graphData);\n};\n/**\n * 检测图中的(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectCycleAsync = detectCycleAsync;\n\nvar detectAllCyclesAsync = function detectAllCyclesAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllCycles)(graphData);\n};\n/**\n * 检测图中的所有(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllCyclesAsync = detectAllCyclesAsync;\n\nvar detectAllDirectedCycleAsync = function detectAllDirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllDirectedCycle)(graphData);\n};\n/**\n * 检测图中的所有(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllDirectedCycleAsync = detectAllDirectedCycleAsync;\n\nvar detectAllUndirectedCycleAsync = function detectAllUndirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllUndirectedCycle)(graphData);\n};\n/**\n * Dijkstra's algorithm, See {@link https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm}\n * @param graphData 图数据\n */\n\n\nexports.detectAllUndirectedCycleAsync = detectAllUndirectedCycleAsync;\n\nvar dijkstraAsync = function dijkstraAsync(graphData, source, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.dijkstra).apply(void 0, [graphData, source, directed, weightPropertyName]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n */\n\n\nexports.dijkstraAsync = dijkstraAsync;\n\nvar findAllPathAsync = function findAllPathAsync(graphData, start, end, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findAllPath).apply(void 0, [graphData, start, end, directed]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n * @param weightPropertyName 边权重的属名称,若数据中没有权重,则默认每条边权重为 1\n */\n\n\nexports.findAllPathAsync = findAllPathAsync;\n\nvar findShortestPathAsync = function findShortestPathAsync(graphData, start, end, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findShortestPath).apply(void 0, [graphData, start, end, directed, weightPropertyName]);\n};\n/**\n * Floyd–Warshall algorithm, See {@link https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm}\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.findShortestPathAsync = findShortestPathAsync;\n\nvar floydWarshallAsync = function floydWarshallAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.floydWarshall).apply(void 0, [graphData, directed]);\n};\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\n\nexports.floydWarshallAsync = floydWarshallAsync;\n\nvar labelPropagationAsync = function labelPropagationAsync(graphData, directed, weightPropertyName, maxIteration) {\n if (maxIteration === void 0) {\n maxIteration = 1000;\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.labelPropagation)(graphData, directed, weightPropertyName, maxIteration);\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold\n */\n\n\nexports.labelPropagationAsync = labelPropagationAsync;\n\nvar louvainAsync = function louvainAsync(graphData, directed, weightPropertyName, threshold) {\n return (0, _createWorker.default)(_constant.ALGORITHM.louvain)(graphData, directed, weightPropertyName, threshold);\n};\n/**\n * 最小生成树,See {@link https://en.wikipedia.org/wiki/Kruskal%27s_algorithm}\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nexports.louvainAsync = louvainAsync;\n\nvar minimumSpanningTreeAsync = function minimumSpanningTreeAsync(graphData, weight, algo) {\n return (0, _createWorker.default)(_constant.ALGORITHM.minimumSpanningTree).apply(void 0, [graphData, weight, algo]);\n};\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\n\nexports.minimumSpanningTreeAsync = minimumSpanningTreeAsync;\n\nvar pageRankAsync = function pageRankAsync(graphData, epsilon, linkProb) {\n return (0, _createWorker.default)(_constant.ALGORITHM.pageRank).apply(void 0, [graphData, epsilon, linkProb]);\n};\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\n\n\nexports.pageRankAsync = pageRankAsync;\n\nvar getNeighborsAsync = function getNeighborsAsync(nodeId, edges, type) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getNeighbors).apply(void 0, [nodeId, edges, type]);\n};\n/**\n * GADDI 图模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nexports.getNeighborsAsync = getNeighborsAsync;\n\nvar GADDIAsync = function GADDIAsync(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.GADDI).apply(void 0, [graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp]);\n};\n\nexports.GADDIAsync = GADDIAsync;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzPzBiNjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSwyQ0FBMkMsbUJBQU8sQ0FBQywwR0FBZ0I7O0FBRW5FLGdCQUFnQixtQkFBTyxDQUFDLGtHQUFZOztBQUVwQyxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBleHBvcnRzLm1pbmltdW1TcGFubmluZ1RyZWVBc3luYyA9IGV4cG9ydHMubG91dmFpbkFzeW5jID0gZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBleHBvcnRzLmdldE91dERlZ3JlZUFzeW5jID0gZXhwb3J0cy5nZXROZWlnaGJvcnNBc3luYyA9IGV4cG9ydHMuZ2V0SW5EZWdyZWVBc3luYyA9IGV4cG9ydHMuZ2V0RGVncmVlQXN5bmMgPSBleHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZXhwb3J0cy5mbG95ZFdhcnNoYWxsQXN5bmMgPSBleHBvcnRzLmZpbmRTaG9ydGVzdFBhdGhBc3luYyA9IGV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGV4cG9ydHMuZGV0ZWN0Q3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsQ3ljbGVzQXN5bmMgPSBleHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gZXhwb3J0cy5HQURESUFzeW5jID0gdm9pZCAwO1xuXG52YXIgX2NyZWF0ZVdvcmtlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY3JlYXRlV29ya2VyXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cbnZhciBnZXRBZGpNYXRyaXhBc3luYyA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0QWRqTWF0cml4KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDlm77nmoTov57pgJrliIbph49cbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cblxuXG5leHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZ2V0QWRqTWF0cml4QXN5bmM7XG5cbnZhciBjb25uZWN0ZWRDb21wb25lbnRBc3luYyA9IGZ1bmN0aW9uIGNvbm5lY3RlZENvbXBvbmVudEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uY29ubmVjdGVkQ29tcG9uZW50KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gY29ubmVjdGVkQ29tcG9uZW50QXN5bmM7XG5cbnZhciBnZXREZWdyZWVBc3luYyA9IGZ1bmN0aW9uIGdldERlZ3JlZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXREZWdyZWUpKGdyYXBoRGF0YSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTlhaXluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuUlEXG4gKi9cblxuXG5leHBvcnRzLmdldERlZ3JlZUFzeW5jID0gZ2V0RGVncmVlQXN5bmM7XG5cbnZhciBnZXRJbkRlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0SW5EZWdyZWVBc3luYyhncmFwaERhdGEsIG5vZGVJZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXRJbkRlZ3JlZSkoZ3JhcGhEYXRhLCBub2RlSWQpO1xufTtcbi8qKlxuICog6I635Y+W6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZUFzeW5jID0gZ2V0SW5EZWdyZWVBc3luYztcblxudmFyIGdldE91dERlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlQXN5bmMoZ3JhcGhEYXRhLCBub2RlSWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0T3V0RGVncmVlKShncmFwaERhdGEsIG5vZGVJZCk7XG59O1xuLyoqXG4gKiDmo4DmtYvlm77kuK3nmoQo5pyJ5ZCRKSBDeWNsZVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqL1xuXG5cbmV4cG9ydHMuZ2V0T3V0RGVncmVlQXN5bmMgPSBnZXRPdXREZWdyZWVBc3luYztcblxudmFyIGRldGVjdEN5Y2xlQXN5bmMgPSBmdW5jdGlvbiBkZXRlY3RDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahCjml6DlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDeWNsZUFzeW5jID0gZGV0ZWN0Q3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbEN5Y2xlc0FzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbEN5Y2xlcykoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahOaJgOaciSjmnInlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxDeWNsZXNBc3luYyA9IGRldGVjdEFsbEN5Y2xlc0FzeW5jO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKShncmFwaERhdGEpO1xufTtcbi8qKlxuICog5qOA5rWL5Zu+5Lit55qE5omA5pyJKOaXoOWQkSkgQ3ljbGVcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIERpamtzdHJhJ3MgYWxnb3JpdGhtLCBTZWUge0BsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpamtzdHJhJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuXG52YXIgZGlqa3N0cmFBc3luYyA9IGZ1bmN0aW9uIGRpamtzdHJhQXN5bmMoZ3JhcGhEYXRhLCBzb3VyY2UsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZGlqa3N0cmEpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqL1xuXG5cbmV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGRpamtzdHJhQXN5bmM7XG5cbnZhciBmaW5kQWxsUGF0aEFzeW5jID0gZnVuY3Rpb24gZmluZEFsbFBhdGhBc3luYyhncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRBbGxQYXRoKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg6L655p2D6YeN55qE5bGe5ZCN56ew77yM6Iul5pWw5o2u5Lit5rKh5pyJ5p2D6YeN77yM5YiZ6buY6K6k5q+P5p2h6L655p2D6YeN5Li6IDFcbiAqL1xuXG5cbmV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGZpbmRBbGxQYXRoQXN5bmM7XG5cbnZhciBmaW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoQXN5bmMoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRTaG9ydGVzdFBhdGgpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZV0pO1xufTtcbi8qKlxuICogRmxveWTigJNXYXJzaGFsbCBhbGdvcml0aG0sIFNlZSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxveWQlRTIlODAlOTNXYXJzaGFsbF9hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuS4uuacieWQkeWbvlxuICovXG5cblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmaW5kU2hvcnRlc3RQYXRoQXN5bmM7XG5cbnZhciBmbG95ZFdhcnNoYWxsQXN5bmMgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5mbG95ZFdhcnNoYWxsKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG5cbmV4cG9ydHMuZmxveWRXYXJzaGFsbEFzeW5jID0gZmxveWRXYXJzaGFsbEFzeW5jO1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbkFzeW5jID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbkFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSwgbWF4SXRlcmF0aW9uKSB7XG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH1cblxuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5sYWJlbFByb3BhZ2F0aW9uKShncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbik7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZFxuICovXG5cblxuZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBsYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG5cbnZhciBsb3V2YWluQXN5bmMgPSBmdW5jdGlvbiBsb3V2YWluQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0ubG91dmFpbikoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCR77yMU2VlIHtAbGluayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbmV4cG9ydHMubG91dmFpbkFzeW5jID0gbG91dmFpbkFzeW5jO1xuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jKGdyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLm1pbmltdW1TcGFubmluZ1RyZWUpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvXSk7XG59O1xuLyoqXG4gKiBQYWdlUmFuayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWdlUmFua1xuICogcmVmZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnZha2EvbmdyYXBoLnBhZ2VyYW5rXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBlcHNpbG9uIOWIpOaWreaYr+WQpuaUtuaVm+eahOeyvuW6puWAvO+8jOm7mOiupCAwLjAwMDAwMVxuICogQHBhcmFtIGxpbmtQcm9iIOmYu+WwvOezu+aVsO+8iGR1bXBpbmcgZmFjdG9y77yJ77yM5oyH5Lu75oSP5pe25Yi777yM55So5oi36K6/6Zeu5Yiw5p+Q6IqC54K55ZCO57un57ut6K6/6Zeu6K+l6IqC54K56ZO+5o6l55qE5LiL5LiA5Liq6IqC54K555qE5qaC546H77yM57uP6aqM5YC8IDAuODVcbiAqL1xuXG5cbmV4cG9ydHMubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jO1xuXG52YXIgcGFnZVJhbmtBc3luYyA9IGZ1bmN0aW9uIHBhZ2VSYW5rQXN5bmMoZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYikge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5wYWdlUmFuaykuYXBwbHkodm9pZCAwLCBbZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYl0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cblxuXG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBwYWdlUmFua0FzeW5jO1xuXG52YXIgZ2V0TmVpZ2hib3JzQXN5bmMgPSBmdW5jdGlvbiBnZXROZWlnaGJvcnNBc3luYyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmdldE5laWdoYm9ycykuYXBwbHkodm9pZCAwLCBbbm9kZUlkLCBlZGdlcywgdHlwZV0pO1xufTtcbi8qKlxuICogR0FEREkg5Zu+5qih5byP5Yy56YWNXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIHBhdHRlcm4g5pCc57Si5Zu+77yI6ZyA6KaB5Zyo5Y6f5Zu+5LiK5pCc57Si55qE5qih5byP77yJ5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm6K6h566X5pyJ5ZCR5Zu+77yM6buY6K6kIGZhbHNlXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIGxlbmd0aCDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnmlbDmja7kuK3ku6PooajoioLngrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICogQHBhcmFtIGVkZ2VMYWJlbFByb3Ag6L655pWw5o2u5Lit5Luj6KGo6L655qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0TmVpZ2hib3JzQXN5bmMgPSBnZXROZWlnaGJvcnNBc3luYztcblxudmFyIEdBRERJQXN5bmMgPSBmdW5jdGlvbiBHQURESUFzeW5jKGdyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uR0FEREkpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcF0pO1xufTtcblxuZXhwb3J0cy5HQURESUFzeW5jID0gR0FERElBc3luYzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js ***! \******************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar algorithm = _interopRequireWildcard(__webpack_require__(/*! ./algorithm */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ctx = typeof self !== 'undefined' ? self : {};\n\nctx.onmessage = function (event) {\n var _a = event.data,\n _algorithmType = _a._algorithmType,\n data = _a.data; // 如果发送内容没有私有类型。说明不是自己发的。不管\n // fix: https://github.com/antvis/algorithm/issues/25\n\n if (!_algorithmType) {\n return;\n }\n\n if (typeof algorithm[_algorithmType] === 'function') {\n var result = algorithm[_algorithmType].apply(algorithm, data);\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.SUCCESS,\n data: result\n });\n return;\n }\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.FAILURE\n });\n}; // https://stackoverflow.com/questions/50210416/webpack-worker-loader-fails-to-compile-typescript-worker\n\n\nvar _default = null;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4Lndvcmtlci5qcz8wYTYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLG9HQUFhOztBQUU3RCxnQkFBZ0IsbUJBQU8sQ0FBQyxrR0FBWTs7QUFFcEMsZ0RBQWdELGdEQUFnRCx1Q0FBdUMsc0NBQXNDLG9GQUFvRiwyREFBMkQsRUFBRSxlQUFlOztBQUU3VSxvREFBb0QsNkNBQTZDLFlBQVksRUFBRSw4RUFBOEUsU0FBUyxnQkFBZ0IsRUFBRSxtREFBbUQsK0JBQStCLHVCQUF1QixFQUFFLGlCQUFpQixzRkFBc0YsdUJBQXVCLDJFQUEyRSxxRkFBcUYsc0NBQXNDLDBDQUEwQyxFQUFFLE9BQU8sd0JBQXdCLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixhQUFhLHdCQUF3QixFQUFFLGVBQWU7O0FBRXB5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9pbmRleC53b3JrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgYWxnb3JpdGhtID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vYWxnb3JpdGhtXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgZGVmYXVsdDogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBjdHggPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307XG5cbmN0eC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgdmFyIF9hID0gZXZlbnQuZGF0YSxcbiAgICAgIF9hbGdvcml0aG1UeXBlID0gX2EuX2FsZ29yaXRobVR5cGUsXG4gICAgICBkYXRhID0gX2EuZGF0YTsgLy8g5aaC5p6c5Y+R6YCB5YaF5a655rKh5pyJ56eB5pyJ57G75Z6L44CC6K+05piO5LiN5piv6Ieq5bex5Y+R55qE44CC5LiN566hXG4gIC8vIGZpeDogaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9hbGdvcml0aG0vaXNzdWVzLzI1XG5cbiAgaWYgKCFfYWxnb3JpdGhtVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYWxnb3JpdGhtW19hbGdvcml0aG1UeXBlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBhbGdvcml0aG1bX2FsZ29yaXRobVR5cGVdLmFwcGx5KGFsZ29yaXRobSwgZGF0YSk7XG5cbiAgICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgICAgX2FsZ29yaXRobVR5cGU6IF9jb25zdGFudC5NRVNTQUdFLlNVQ0NFU1MsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgIF9hbGdvcml0aG1UeXBlOiBfY29uc3RhbnQuTUVTU0FHRS5GQUlMVVJFXG4gIH0pO1xufTsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTAyMTA0MTYvd2VicGFjay13b3JrZXItbG9hZGVyLWZhaWxzLXRvLWNvbXBpbGUtdHlwZXNjcmlwdC13b3JrZXJcblxuXG52YXIgX2RlZmF1bHQgPSBudWxsO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return addEventListener; });\nfunction addEventListener(target, eventType, callback) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function () {\n target.removeEventListener(eventType, callback, false);\n },\n };\n // @ts-ignore\n }\n if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function () {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n },\n };\n }\n }\n}\n//# sourceMappingURL=add-event-listener.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9hZGQtZXZlbnQtbGlzdGVuZXIuanM/NmM2ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZG9tLXV0aWxAMi4wLjNAQGFudHYvZG9tLXV0aWwvZXNtL2FkZC1ldmVudC1saXN0ZW5lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldC5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQuYXR0YWNoRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRhcmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZGQtZXZlbnQtbGlzdGVuZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return createDom; });\n/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\nvar TABLE;\nvar TABLE_TR;\nvar FRAGMENT_REG;\nvar CONTAINERS;\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div'),\n };\n}\nfunction createDom(str) {\n if (!TABLE) {\n initConstants();\n }\n var name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n var container = CONTAINERS[name];\n str = str.replace(/(^\\s*)|(\\s*$)/g, '');\n container.innerHTML = '' + str;\n var dom = container.childNodes[0];\n container.removeChild(dom);\n return dom;\n}\n//# sourceMappingURL=create-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9jcmVhdGUtZG9tLmpzPzBkYjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9jcmVhdGUtZG9tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDliJvlu7pET00g6IqC54K5XG4gKiBAcGFyYW0gIHtTdHJpbmd9IHN0ciBEb20g5a2X56ym5LiyXG4gKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gIERPTSDoioLngrlcbiAqL1xudmFyIFRBQkxFO1xudmFyIFRBQkxFX1RSO1xudmFyIEZSQUdNRU5UX1JFRztcbnZhciBDT05UQUlORVJTO1xuZnVuY3Rpb24gaW5pdENvbnN0YW50cygpIHtcbiAgICBUQUJMRSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgVEFCTEVfVFIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuICAgIEZSQUdNRU5UX1JFRyA9IC9eXFxzKjwoXFx3K3whKVtePl0qPi87XG4gICAgQ09OVEFJTkVSUyA9IHtcbiAgICAgICAgdHI6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5JyksXG4gICAgICAgIHRib2R5OiBUQUJMRSxcbiAgICAgICAgdGhlYWQ6IFRBQkxFLFxuICAgICAgICB0Zm9vdDogVEFCTEUsXG4gICAgICAgIHRkOiBUQUJMRV9UUixcbiAgICAgICAgdGg6IFRBQkxFX1RSLFxuICAgICAgICAnKic6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVEb20oc3RyKSB7XG4gICAgaWYgKCFUQUJMRSkge1xuICAgICAgICBpbml0Q29uc3RhbnRzKCk7XG4gICAgfVxuICAgIHZhciBuYW1lID0gRlJBR01FTlRfUkVHLnRlc3Qoc3RyKSAmJiBSZWdFeHAuJDE7XG4gICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBDT05UQUlORVJTKSkge1xuICAgICAgICBuYW1lID0gJyonO1xuICAgIH1cbiAgICB2YXIgY29udGFpbmVyID0gQ09OVEFJTkVSU1tuYW1lXTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvKF5cXHMqKXwoXFxzKiQpL2csICcnKTtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJycgKyBzdHI7XG4gICAgdmFyIGRvbSA9IGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdO1xuICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChkb20pO1xuICAgIHJldHVybiBkb207XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGUtZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var height = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}\n//# sourceMappingURL=get-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtaGVpZ2h0LmpzPzgxNWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3BCO0FBQ2YsaUJBQWlCLDBEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZG9tLXV0aWxAMi4wLjNAQGFudHYvZG9tLXV0aWwvZXNtL2dldC1oZWlnaHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0U3R5bGUgZnJvbSAnLi9nZXQtc3R5bGUnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SGVpZ2h0KGVsLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgaGVpZ2h0ID0gZ2V0U3R5bGUoZWwsICdoZWlnaHQnLCBkZWZhdWx0VmFsdWUpO1xuICAgIGlmIChoZWlnaHQgPT09ICdhdXRvJykge1xuICAgICAgICBoZWlnaHQgPSBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUZsb2F0KGhlaWdodCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtaGVpZ2h0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getOuterHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-height */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js\");\n\n\nfunction getOuterHeight(el, defaultValue) {\n var height = Object(_get_height__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderTopWidth')) || 0;\n var pTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingTop')) || 0;\n var pBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingBottom')) || 0;\n var bBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderBottomWidth')) || 0;\n var mTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginTop')) || 0;\n var mBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}\n//# sourceMappingURL=get-outer-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItaGVpZ2h0LmpzPzFhMDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDRTtBQUN0QjtBQUNmLGlCQUFpQiwyREFBUztBQUMxQiwwQkFBMEIsMERBQVE7QUFDbEMsMEJBQTBCLDBEQUFRO0FBQ2xDLDZCQUE2QiwwREFBUTtBQUNyQyw2QkFBNkIsMERBQVE7QUFDckMsMEJBQTBCLDBEQUFRO0FBQ2xDLDZCQUE2QiwwREFBUTtBQUNyQztBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItaGVpZ2h0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFN0eWxlIGZyb20gJy4vZ2V0LXN0eWxlJztcbmltcG9ydCBnZXRIZWlnaHQgZnJvbSAnLi9nZXQtaGVpZ2h0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE91dGVySGVpZ2h0KGVsLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgaGVpZ2h0ID0gZ2V0SGVpZ2h0KGVsLCBkZWZhdWx0VmFsdWUpO1xuICAgIHZhciBiVG9wID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ2JvcmRlclRvcFdpZHRoJykpIHx8IDA7XG4gICAgdmFyIHBUb3AgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAncGFkZGluZ1RvcCcpKSB8fCAwO1xuICAgIHZhciBwQm90dG9tID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ3BhZGRpbmdCb3R0b20nKSkgfHwgMDtcbiAgICB2YXIgYkJvdHRvbSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJCb3R0b21XaWR0aCcpKSB8fCAwO1xuICAgIHZhciBtVG9wID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ21hcmdpblRvcCcpKSB8fCAwO1xuICAgIHZhciBtQm90dG9tID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ21hcmdpbkJvdHRvbScpKSB8fCAwO1xuICAgIHJldHVybiBoZWlnaHQgKyBiVG9wICsgYkJvdHRvbSArIHBUb3AgKyBwQm90dG9tICsgbVRvcCArIG1Cb3R0b207XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtb3V0ZXItaGVpZ2h0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getOuterWidth; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-width */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js\");\n\n\nfunction getOuterWidth(el, defaultValue) {\n var width = Object(_get_width__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderLeftWidth')) || 0;\n var pLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingLeft')) || 0;\n var pRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingRight')) || 0;\n var bRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderRightWidth')) || 0;\n var mRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginRight')) || 0;\n var mLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}\n//# sourceMappingURL=get-outer-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItd2lkdGguanM/OTgyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNBO0FBQ3BCO0FBQ2YsZ0JBQWdCLDBEQUFRO0FBQ3hCLDJCQUEyQiwwREFBUTtBQUNuQywyQkFBMkIsMERBQVE7QUFDbkMsNEJBQTRCLDBEQUFRO0FBQ3BDLDRCQUE0QiwwREFBUTtBQUNwQyw0QkFBNEIsMERBQVE7QUFDcEMsMkJBQTJCLDBEQUFRO0FBQ25DO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZG9tLXV0aWxAMi4wLjNAQGFudHYvZG9tLXV0aWwvZXNtL2dldC1vdXRlci13aWR0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRTdHlsZSBmcm9tICcuL2dldC1zdHlsZSc7XG5pbXBvcnQgZ2V0V2lkdGggZnJvbSAnLi9nZXQtd2lkdGgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3V0ZXJXaWR0aChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHdpZHRoID0gZ2V0V2lkdGgoZWwsIGRlZmF1bHRWYWx1ZSk7XG4gICAgdmFyIGJMZWZ0ID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ2JvcmRlckxlZnRXaWR0aCcpKSB8fCAwO1xuICAgIHZhciBwTGVmdCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdwYWRkaW5nTGVmdCcpKSB8fCAwO1xuICAgIHZhciBwUmlnaHQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAncGFkZGluZ1JpZ2h0JykpIHx8IDA7XG4gICAgdmFyIGJSaWdodCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJSaWdodFdpZHRoJykpIHx8IDA7XG4gICAgdmFyIG1SaWdodCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5SaWdodCcpKSB8fCAwO1xuICAgIHZhciBtTGVmdCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5MZWZ0JykpIHx8IDA7XG4gICAgcmV0dXJuIHdpZHRoICsgYkxlZnQgKyBiUmlnaHQgKyBwTGVmdCArIHBSaWdodCArIG1MZWZ0ICsgbVJpZ2h0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LW91dGVyLXdpZHRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getRatio; });\nfunction getRatio() {\n return window.devicePixelRatio ? window.devicePixelRatio : 2;\n}\n//# sourceMappingURL=get-ratio.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtcmF0aW8uanM/NDBlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtcmF0aW8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRSYXRpbygpIHtcbiAgICByZXR1cm4gd2luZG93LmRldmljZVBpeGVsUmF0aW8gPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtcmF0aW8uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getStyle; });\n/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nfunction getStyle(dom, name, defaultValue) {\n var v;\n try {\n v = window.getComputedStyle ?\n window.getComputedStyle(dom, null)[name] :\n dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n }\n catch (e) {\n // do nothing\n }\n finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}\n//# sourceMappingURL=get-style.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtc3R5bGUuanM/ZDYzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxJQUFJO0FBQ2hCLFlBQVksT0FBTztBQUNuQjtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtc3R5bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOiOt+WPluagt+W8j1xuICogQHBhcmFtICB7T2JqZWN0fSBkb20gRE9N6IqC54K5XG4gKiBAcGFyYW0gIHtTdHJpbmd9IG5hbWUg5qC35byP5ZCNXG4gKiBAcGFyYW0gIHtBbnl9IGRlZmF1bHRWYWx1ZSDpu5jorqTlgLxcbiAqIEByZXR1cm4ge1N0cmluZ30g5bGe5oCn5YC8XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFN0eWxlKGRvbSwgbmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHY7XG4gICAgdHJ5IHtcbiAgICAgICAgdiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID9cbiAgICAgICAgICAgIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvbSwgbnVsbClbbmFtZV0gOlxuICAgICAgICAgICAgZG9tLnN0eWxlW25hbWVdOyAvLyDkuIDoiKzkuI3kvJrotbDliLDov5nkuKrpgLvovpHvvIxkb20uc3R5bGUg6I635Y+W55qE5piv5qCH562+IHN0eWxlIOWxnuaAp++8jOS5n+S4jeWHhuehrlxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB2ID0gdiA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogdjtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtc3R5bGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var width = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}\n//# sourceMappingURL=get-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtd2lkdGguanM/YmQwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDcEI7QUFDZixnQkFBZ0IsMERBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9kb20tdXRpbEAyLjAuM0BAYW50di9kb20tdXRpbC9lc20vZ2V0LXdpZHRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFN0eWxlIGZyb20gJy4vZ2V0LXN0eWxlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhlaWdodChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHdpZHRoID0gZ2V0U3R5bGUoZWwsICd3aWR0aCcsIGRlZmF1bHRWYWx1ZSk7XG4gICAgaWYgKHdpZHRoID09PSAnYXV0bycpIHtcbiAgICAgICAgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQod2lkdGgpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXdpZHRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js ***! \************************************************************************/ /*! exports provided: addEventListener, createDom, getHeight, getOuterHeight, getOuterWidth, getRatio, getStyle, getWidth, modifyCSS */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_event_listener__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-event-listener */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEventListener\", function() { return _add_event_listener__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _create_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-dom */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return _create_dom__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-height */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getHeight\", function() { return _get_height__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _get_outer_height__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./get-outer-height */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterHeight\", function() { return _get_outer_height__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _get_outer_width__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-outer-width */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterWidth\", function() { return _get_outer_width__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _get_ratio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./get-ratio */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getRatio\", function() { return _get_ratio__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStyle\", function() { return _get_style__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./get-width */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getWidth\", function() { return _get_width__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _modify_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modify-css */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"modifyCSS\", function() { return _modify_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n// dom\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9pbmRleC5qcz85YmNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDbUU7QUFDZjtBQUNBO0FBQ1c7QUFDRjtBQUNYO0FBQ0E7QUFDQTtBQUNFO0FBQ3BEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9kb20tdXRpbEAyLjAuM0BAYW50di9kb20tdXRpbC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBkb21cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4vYWRkLWV2ZW50LWxpc3RlbmVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlRG9tIH0gZnJvbSAnLi9jcmVhdGUtZG9tJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SGVpZ2h0IH0gZnJvbSAnLi9nZXQtaGVpZ2h0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0T3V0ZXJIZWlnaHQgfSBmcm9tICcuL2dldC1vdXRlci1oZWlnaHQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRPdXRlcldpZHRoIH0gZnJvbSAnLi9nZXQtb3V0ZXItd2lkdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRSYXRpbyB9IGZyb20gJy4vZ2V0LXJhdGlvJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0U3R5bGUgfSBmcm9tICcuL2dldC1zdHlsZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdpZHRoIH0gZnJvbSAnLi9nZXQtd2lkdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb2RpZnlDU1MgfSBmcm9tICcuL21vZGlmeS1jc3MnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return modifyCSS; });\nfunction modifyCSS(dom, css) {\n if (dom) {\n for (var key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}\n//# sourceMappingURL=modify-css.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9tb2RpZnktY3NzLmpzP2QzNzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9tb2RpZnktY3NzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9kaWZ5Q1NTKGRvbSwgY3NzKSB7XG4gICAgaWYgKGRvbSkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gY3NzKSB7XG4gICAgICAgICAgICBpZiAoY3NzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBkb20uc3R5bGVba2V5XSA9IGNzc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkb207XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2RpZnktY3NzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js\n"); /***/ }), /***/ "./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once,\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n this.on(evt, callback, true);\n return this;\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function (es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i], callback = _a.callback, once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n }\n else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n }\n else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventEmitter);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2V2ZW50LWVtaXR0ZXJAMC4xLjJAQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanM/OWQ5OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixZQUFZO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2V2ZW50LWVtaXR0ZXJAMC4xLjJAQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgV0lMRENBUkQgPSAnKic7XG4vKiBldmVudC1lbWl0dGVyICovXG52YXIgRXZlbnRFbWl0dGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOebkeWQrOS4gOS4quS6i+S7tlxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0gb25jZVxuICAgICAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZ0LCBjYWxsYmFjaywgb25jZSkge1xuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1tldnRdKSB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudHNbZXZ0XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldnRdLnB1c2goe1xuICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgb25jZTogISFvbmNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnm5HlkKzkuIDkuKrkuovku7bkuIDmrKFcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gKGV2dCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5vbihldnQsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDop6blj5HkuIDkuKrkuovku7ZcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGFyZ3NcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgdmFyIHdpbGRjYXJkRXZlbnRzID0gdGhpcy5fZXZlbnRzW1dJTERDQVJEXSB8fCBbXTtcbiAgICAgICAgLy8g5a6e6ZmF55qE5aSE55CGIGVtaXQg5pa55rOVXG4gICAgICAgIHZhciBkb0VtaXQgPSBmdW5jdGlvbiAoZXMpIHtcbiAgICAgICAgICAgIHZhciBsZW5ndGggPSBlcy5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gZXNbaV0sIGNhbGxiYWNrID0gX2EuY2FsbGJhY2ssIG9uY2UgPSBfYS5vbmNlO1xuICAgICAgICAgICAgICAgIGlmIChvbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzLl9ldmVudHNbZXZ0XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShfdGhpcywgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGRvRW1pdChldmVudHMpO1xuICAgICAgICBkb0VtaXQod2lsZGNhcmRFdmVudHMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Y+W5raI55uR5ZCs5LiA5Liq5LqL5Lu277yM5oiW6ICF5LiA5LiqY2hhbm5lbFxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uIChldnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghZXZ0KSB7XG4gICAgICAgICAgICAvLyBldnQg5Li656m65YWo6YOo5riF6ZmkXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyBldnQg5a2Y5Zyo77yMY2FsbGJhY2sg5Li656m677yM5riF6Zmk5LqL5Lu25omA5pyJ5pa55rOVXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZXZ0IOWtmOWcqO+8jGNhbGxiYWNrIOWtmOWcqO+8jOa4hemZpOWMuemFjeeahFxuICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoXzEgPSBldmVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoXzE7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzW2ldLmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF8xLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qIOW9k+WJjeaJgOacieeahOS6i+S7tiAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlcjtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBFdmVudEVtaXR0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n\n\n\nvar Base = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Base);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2Jhc2UuanM/YzRlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNHO0FBQ0Y7QUFDbkM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFHO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMkRBQUU7QUFDVyxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgRUUgZnJvbSAnQGFudHYvZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgeyBtaXggfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIEJhc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQmFzZShjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpuiiq+mUgOavgVxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIF90aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZGVmYXVsdENmZyA9IF90aGlzLmdldERlZmF1bHRDZmcoKTtcbiAgICAgICAgX3RoaXMuY2ZnID0gbWl4KGRlZmF1bHRDZmcsIGNmZyk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOm7mOiupOeahOmFjee9rumhuVxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IOm7mOiupOeahOmFjee9rumhuVxuICAgICAqL1xuICAgIEJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9O1xuICAgIC8vIOWunueOsOaOpeWPo+eahOaWueazlVxuICAgIEJhc2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNmZ1tuYW1lXTtcbiAgICB9O1xuICAgIC8vIOWunueOsOaOpeWPo+eahOaWueazlVxuICAgIEJhc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmNmZ1tuYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+j55qE5pa55rOVXG4gICAgQmFzZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jZmcgPSB7XG4gICAgICAgICAgICBkZXN0cm95ZWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub2ZmKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBCYXNlO1xufShFRSkpO1xuZXhwb3J0IGRlZmF1bHQgQmFzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! detect-browser */ \"./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _animate_timeline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../animate/timeline */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js\");\n/* harmony import */ var _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../event/event-contoller */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js\");\n\n\n\n\n\n\nvar PX_SUFFIX = 'px';\nvar browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_1__[\"detect\"])();\nvar isFirefox = browser && browser.name === 'firefox';\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initContainer();\n _this.initDom();\n _this.initEvents();\n _this.initTimeline();\n return _this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n };\n /**\n * @protected\n * 初始化容器\n */\n Canvas.prototype.initContainer = function () {\n var container = this.get('container');\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n };\n /**\n * @protected\n * 初始化 DOM\n */\n Canvas.prototype.initDom = function () {\n var el = this.createDom();\n this.set('el', el);\n // 附加到容器\n var container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n };\n /**\n * @protected\n * 初始化绑定的事件\n */\n Canvas.prototype.initEvents = function () {\n var eventController = new _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n canvas: this,\n });\n eventController.init();\n this.set('eventController', eventController);\n };\n /**\n * @protected\n * 初始化时间轴\n */\n Canvas.prototype.initTimeline = function () {\n var timeline = new _animate_timeline__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this);\n this.set('timeline', timeline);\n };\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n Canvas.prototype.setDOMSize = function (width, height) {\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"]) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n };\n // 实现接口\n Canvas.prototype.changeSize = function (width, height) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n };\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n Canvas.prototype.getRenderer = function () {\n return this.get('renderer');\n };\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n Canvas.prototype.getCursor = function () {\n return this.get('cursor');\n };\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n Canvas.prototype.setCursor = function (cursor) {\n this.set('cursor', cursor);\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"] && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n };\n // 实现接口\n Canvas.prototype.getPointByEvent = function (ev) {\n var supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.layerX) && ev.layerX !== ev.offsetX) {\n return {\n x: ev.layerX,\n y: ev.layerY,\n };\n }\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n var _a = this.getClientByEvent(ev), clientX = _a.x, clientY = _a.y;\n return this.getPointByClient(clientX, clientY);\n };\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n Canvas.prototype.getClientByEvent = function (ev) {\n var clientInfo = ev;\n if (ev.touches) {\n if (ev.type === 'touchend') {\n clientInfo = ev.changedTouches[0];\n }\n else {\n clientInfo = ev.touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY,\n };\n };\n // 实现接口\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.getClientByPoint = function (x, y) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.draw = function () { };\n /**\n * @protected\n * 销毁 DOM 容器\n */\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n el.parentNode.removeChild(el);\n };\n /**\n * @protected\n * 清理所有的事件\n */\n Canvas.prototype.clearEvents = function () {\n var eventController = this.get('eventController');\n eventController.destroy();\n };\n Canvas.prototype.isCanvas = function () {\n return true;\n };\n Canvas.prototype.getParent = function () {\n return null;\n };\n Canvas.prototype.destroy = function () {\n var timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n return Canvas;\n}(_container__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NhbnZhcy5qcz85ZjFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ007QUFDSjtBQUNzQjtBQUNmO0FBQ1k7QUFDdkQ7QUFDQSxjQUFjLDZEQUFNO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDhEQUFlO0FBQ2pEO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix3REFBSztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxrREFBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSAnZGV0ZWN0LWJyb3dzZXInO1xuaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBpc0Jyb3dzZXIsIGlzTmlsLCBpc1N0cmluZyB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgVGltZWxpbmUgZnJvbSAnLi4vYW5pbWF0ZS90aW1lbGluZSc7XG5pbXBvcnQgRXZlbnRDb250cm9sbGVyIGZyb20gJy4uL2V2ZW50L2V2ZW50LWNvbnRvbGxlcic7XG52YXIgUFhfU1VGRklYID0gJ3B4JztcbnZhciBicm93c2VyID0gZGV0ZWN0KCk7XG52YXIgaXNGaXJlZm94ID0gYnJvd3NlciAmJiBicm93c2VyLm5hbWUgPT09ICdmaXJlZm94JztcbnZhciBDYW52YXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENhbnZhcywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYW52YXMoY2ZnKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNmZykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgICAgICBfdGhpcy5pbml0RG9tKCk7XG4gICAgICAgIF90aGlzLmluaXRFdmVudHMoKTtcbiAgICAgICAgX3RoaXMuaW5pdFRpbWVsaW5lKCk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2ZnID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnLmNhbGwodGhpcyk7XG4gICAgICAgIC8vIHNldCBkZWZhdWx0IGN1cnNvciBzdHlsZSBmb3IgY2FudmFzXG4gICAgICAgIGNmZ1snY3Vyc29yJ10gPSAnZGVmYXVsdCc7XG4gICAgICAgIC8vIENTUyB0cmFuc2Zvcm0g55uu5YmN5bCa5pyq57uP6L+H6ZW/5pe26Ze06aqM6K+B77yM5Li65LqG6YG/5YWN5b2x5ZON5LiK5bGC5Lia5Yqh77yM6buY6K6k5YWz6Zet77yM5LiK5bGC5oyJ6ZyA5byA5ZCvXG4gICAgICAgIGNmZ1snc3VwcG9ydENTU1RyYW5zZm9ybSddID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyW5a655ZmoXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5pbml0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgICAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyWIERPTVxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuaW5pdERvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jcmVhdGVEb20oKTtcbiAgICAgICAgdGhpcy5zZXQoJ2VsJywgZWwpO1xuICAgICAgICAvLyDpmYTliqDliLDlrrnlmahcbiAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgLy8g6K6+572u5Yid5aeL5a695bqmXG4gICAgICAgIHRoaXMuc2V0RE9NU2l6ZSh0aGlzLmdldCgnd2lkdGgnKSwgdGhpcy5nZXQoJ2hlaWdodCcpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJbnu5HlrprnmoTkuovku7ZcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmluaXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBldmVudENvbnRyb2xsZXIgPSBuZXcgRXZlbnRDb250cm9sbGVyKHtcbiAgICAgICAgICAgIGNhbnZhczogdGhpcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGV2ZW50Q29udHJvbGxlci5pbml0KCk7XG4gICAgICAgIHRoaXMuc2V0KCdldmVudENvbnRyb2xsZXInLCBldmVudENvbnRyb2xsZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWIneWni+WMluaXtumXtOi9tFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuaW5pdFRpbWVsaW5lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZWxpbmUgPSBuZXcgVGltZWxpbmUodGhpcyk7XG4gICAgICAgIHRoaXMuc2V0KCd0aW1lbGluZScsIHRpbWVsaW5lKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDkv67mlLnnlLvluIPlr7nlupTnmoQgRE9NIOeahOWkp+Wwj1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAg5a695bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCDpq5jluqZcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLnNldERPTVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aCArIFBYX1NVRkZJWDtcbiAgICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9IGhlaWdodCArIFBYX1NVRkZJWDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5jaGFuZ2VTaXplID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy5zZXRET01TaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB0aGlzLnNldCgnd2lkdGgnLCB3aWR0aCk7XG4gICAgICAgIHRoaXMuc2V0KCdoZWlnaHQnLCBoZWlnaHQpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdjaGFuZ2VTaXplJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3nmoTmuLLmn5PlvJXmk45cbiAgICAgKiBAcmV0dXJuIHtSZW5kZXJlcn0g6L+U5Zue5b2T5YmN55qE5riy5p+T5byV5pOOXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRSZW5kZXJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdyZW5kZXJlcicpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W55S75biD55qEIGN1cnNvciDmoLflvI9cbiAgICAgKiBAcmV0dXJuIHtDdXJzb3J9XG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRDdXJzb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnY3Vyc29yJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDorr7nva7nlLvluIPnmoQgY3Vyc29yIOagt+W8j1xuICAgICAqIEBwYXJhbSB7Q3Vyc29yfSBjdXJzb3IgIGN1cnNvciDmoLflvI9cbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLnNldEN1cnNvciA9IGZ1bmN0aW9uIChjdXJzb3IpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2N1cnNvcicsIGN1cnNvcik7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoaXNCcm93c2VyICYmIGVsKSB7XG4gICAgICAgICAgICAvLyDnm7TmjqXorr7nva7moLflvI/vvIzkuI3nrYnlvoXpvKDmoIfnp7vliqjml7blho3orr7nva5cbiAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRQb2ludEJ5RXZlbnQgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIHN1cHBvcnRDU1NUcmFuc2Zvcm0gPSB0aGlzLmdldCgnc3VwcG9ydENTU1RyYW5zZm9ybScpO1xuICAgICAgICBpZiAoc3VwcG9ydENTU1RyYW5zZm9ybSkge1xuICAgICAgICAgICAgLy8gRm9yIEZpcmVmb3ggPD0gMzhcbiAgICAgICAgICAgIGlmIChpc0ZpcmVmb3ggJiYgIWlzTmlsKGV2LmxheWVyWCkgJiYgZXYubGF5ZXJYICE9PSBldi5vZmZzZXRYKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogZXYubGF5ZXJYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldi5sYXllclksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNOaWwoZXYub2Zmc2V0WCkpIHtcbiAgICAgICAgICAgICAgICAvLyBGb3IgSUU2KywgRmlyZWZveCA+PSAzOSwgQ2hyb21lLCBTYWZhcmksIE9wZXJhXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogZXYub2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgeTogZXYub2Zmc2V0WSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHNob3VsZCBjYWxjdWxhdGUgYnkgc2VsZiBmb3Igb3RoZXIgY2FzZXMsIGxpa2UgU2FmYXJpIGluIGlvc1xuICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IENTUyB0cmFuc2Zvcm1cbiAgICAgICAgdmFyIF9hID0gdGhpcy5nZXRDbGllbnRCeUV2ZW50KGV2KSwgY2xpZW50WCA9IF9hLngsIGNsaWVudFkgPSBfYS55O1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQb2ludEJ5Q2xpZW50KGNsaWVudFgsIGNsaWVudFkpO1xuICAgIH07XG4gICAgLy8g6I635Y+WIHRvdWNoIOS6i+S7tueahCBjbGllbnRYIOWSjCBjbGllbnRZIOmcgOimgeWNleeLrOWkhOeQhlxuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0Q2xpZW50QnlFdmVudCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgY2xpZW50SW5mbyA9IGV2O1xuICAgICAgICBpZiAoZXYudG91Y2hlcykge1xuICAgICAgICAgICAgaWYgKGV2LnR5cGUgPT09ICd0b3VjaGVuZCcpIHtcbiAgICAgICAgICAgICAgICBjbGllbnRJbmZvID0gZXYuY2hhbmdlZFRvdWNoZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjbGllbnRJbmZvID0gZXYudG91Y2hlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogY2xpZW50SW5mby5jbGllbnRYLFxuICAgICAgICAgICAgeTogY2xpZW50SW5mby5jbGllbnRZLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRQb2ludEJ5Q2xpZW50ID0gZnVuY3Rpb24gKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBiYm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBjbGllbnRYIC0gYmJveC5sZWZ0LFxuICAgICAgICAgICAgeTogY2xpZW50WSAtIGJib3gudG9wLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRDbGllbnRCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBiYm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ICsgYmJveC5sZWZ0LFxuICAgICAgICAgICAgeTogeSArIGJib3gudG9wLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDplIDmr4EgRE9NIOWuueWZqFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUucmVtb3ZlRG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5riF55CG5omA5pyJ55qE5LqL5Lu2XG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5jbGVhckV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGV2ZW50Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdldmVudENvbnRyb2xsZXInKTtcbiAgICAgICAgZXZlbnRDb250cm9sbGVyLmRlc3Ryb3koKTtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuaXNDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgLy8g5ZCM5Yid5aeL5YyW5pe255u45Y+N6aG65bqP6LCD55SoXG4gICAgICAgIGlmICh0aW1lbGluZSkge1xuICAgICAgICAgICAgLy8g55S75biD6ZSA5q+B5pe26Ieq5Yqo5YGc5q2i5Yqo55S7XG4gICAgICAgICAgICB0aW1lbGluZS5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhckV2ZW50cygpO1xuICAgICAgICB0aGlzLnJlbW92ZURvbSgpO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtcbiAgICB9O1xuICAgIHJldHVybiBDYW52YXM7XG59KENvbnRhaW5lcikpO1xuZXhwb3J0IGRlZmF1bHQgQ2FudmFzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FudmFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n\n\n\n\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) { destroy = true; }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n }\n else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getCanvasBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isObject\"])(type)) {\n cfg = type;\n }\n else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0], cfg = args[1];\n var group;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isFunction\"])(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n }\n else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n }\n else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n }\n else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n }\n else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n }\n else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return this.get('children');\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) { destroy = true; }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst = element;\n }\n else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(_element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Container);\n//# sourceMappingURL=container.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NvbnRhaW5lci5qcz8yZTE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNOO0FBQ3VFO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixnQkFBZ0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0VBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkRBQVU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlFQUFjO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsUUFBUTtBQUNqRDtBQUNBLGdCQUFnQixpRUFBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxRQUFRO0FBQ2pELGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QixlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBLGlDQUFpQyxnQkFBZ0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQjtBQUNoQyxnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0JBQWdCO0FBQ2hDLGdCQUFnQixjQUFjO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsY0FBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixnQkFBZ0I7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLENBQUMsZ0RBQU87QUFDTSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9jb250YWluZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgRWxlbWVudCBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNPYmplY3QsIGVhY2gsIHJlbW92ZUZyb21BcnJheSwgdXBwZXJGaXJzdCwgaXNBbGxvd0NhcHR1cmUgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIFNIQVBFX01BUCA9IHt9O1xudmFyIElOREVYID0gJ19JTkRFWCc7XG4vKipcbiAqIOiuvue9riBjYW52YXNcbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQg5YWD57SgXG4gKiBAcGFyYW0ge0lDYW52YXN9ICBjYW52YXMgIOeUu+W4g1xuICovXG5mdW5jdGlvbiBzZXRDYW52YXMoZWxlbWVudCwgY2FudmFzKSB7XG4gICAgZWxlbWVudC5zZXQoJ2NhbnZhcycsIGNhbnZhcyk7XG4gICAgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IGVsZW1lbnQuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHNldENhbnZhcyhjaGlsZCwgY2FudmFzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiDorr7nva4gdGltZWxpbmVcbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQgIOWFg+e0oFxuICogQHBhcmFtIHtUaW1lbGluZX0gdGltZWxpbmUg5pe26Ze06L20XG4gKi9cbmZ1bmN0aW9uIHNldFRpbWVsaW5lKGVsZW1lbnQsIHRpbWVsaW5lKSB7XG4gICAgZWxlbWVudC5zZXQoJ3RpbWVsaW5lJywgdGltZWxpbmUpO1xuICAgIGlmIChlbGVtZW50LmlzR3JvdXAoKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBlbGVtZW50LmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lbGluZShjaGlsZCwgdGltZWxpbmUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjb250YWlucyhjb250YWluZXIsIGVsZW1lbnQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBjb250YWluZXIuZ2V0Q2hpbGRyZW4oKTtcbiAgICByZXR1cm4gY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KSA+PSAwO1xufVxuZnVuY3Rpb24gcmVtb3ZlQ2hpbGQoY29udGFpbmVyLCBlbGVtZW50LCBkZXN0cm95KSB7XG4gICAgaWYgKGRlc3Ryb3kgPT09IHZvaWQgMCkgeyBkZXN0cm95ID0gdHJ1ZTsgfVxuICAgIC8vIOS4jeWGjeiwg+eUqCBlbGVtZW50LnJlbW92ZSgpIOaWueazle+8jOS8muWHuueOsOW+queOr+iwg+eUqFxuICAgIGlmIChkZXN0cm95KSB7XG4gICAgICAgIGVsZW1lbnQuZGVzdHJveSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhcmVudCcsIG51bGwpO1xuICAgICAgICBlbGVtZW50LnNldCgnY2FudmFzJywgbnVsbCk7XG4gICAgfVxuICAgIHJlbW92ZUZyb21BcnJheShjb250YWluZXIuZ2V0Q2hpbGRyZW4oKSwgZWxlbWVudCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYXJlcihjb21wYXJlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChsZWZ0LCByaWdodCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCByaWdodCk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IDAgPyBsZWZ0W0lOREVYXSAtIHJpZ2h0W0lOREVYXSA6IHJlc3VsdDtcbiAgICB9O1xufVxudmFyIENvbnRhaW5lciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29udGFpbmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbnRhaW5lcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDb250YWluZXIucHJvdG90eXBlLmlzQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvLyDmoLnmja7lrZDoioLngrnnoa7lrpogQkJveFxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0QkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g5omA5pyJ55qE5YC85Y+v6IO95Zyo55S75biD55qE5Y+v6KeG5Yy65aSWXG4gICAgICAgIHZhciBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhYID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgbWluWSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHhBcnIgPSBbXTtcbiAgICAgICAgdmFyIHlBcnIgPSBbXTtcbiAgICAgICAgLy8g5bCG5Y+v6KeB5YWD57Sg44CB5Zu+5b2i5Lul5Y+K5LiN5Li656m655qE5Zu+5b2i5YiG57uE562b6YCJ5Ye65p2l77yM55So5LqO5YyF5Zu055uS5ZCI5bm2XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCd2aXNpYmxlJykgJiYgKCFjaGlsZC5pc0dyb3VwKCkgfHwgKGNoaWxkLmlzR3JvdXAoKSAmJiBjaGlsZC5nZXRDaGlsZHJlbigpLmxlbmd0aCA+IDApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYm94ID0gY2hpbGQuZ2V0QkJveCgpO1xuICAgICAgICAgICAgICAgIHhBcnIucHVzaChib3gubWluWCwgYm94Lm1heFgpO1xuICAgICAgICAgICAgICAgIHlBcnIucHVzaChib3gubWluWSwgYm94Lm1heFkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaW5YID0gbWluKHhBcnIpO1xuICAgICAgICAgICAgbWF4WCA9IG1heCh4QXJyKTtcbiAgICAgICAgICAgIG1pblkgPSBtaW4oeUFycik7XG4gICAgICAgICAgICBtYXhZID0gbWF4KHlBcnIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWluWCA9IDA7XG4gICAgICAgICAgICBtYXhYID0gMDtcbiAgICAgICAgICAgIG1pblkgPSAwO1xuICAgICAgICAgICAgbWF4WSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJveCA9IHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBib3g7XG4gICAgfTtcbiAgICAvLyDojrflj5bnlLvluIPnmoTljIXlm7Tnm5JcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhYID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgbWluWSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHhBcnIgPSBbXTtcbiAgICAgICAgdmFyIHlBcnIgPSBbXTtcbiAgICAgICAgLy8g5bCG5Y+v6KeB5YWD57Sg44CB5Zu+5b2i5Lul5Y+K5LiN5Li656m655qE5Zu+5b2i5YiG57uE562b6YCJ5Ye65p2l77yM55So5LqO5YyF5Zu055uS5ZCI5bm2XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCd2aXNpYmxlJykgJiYgKCFjaGlsZC5pc0dyb3VwKCkgfHwgKGNoaWxkLmlzR3JvdXAoKSAmJiBjaGlsZC5nZXRDaGlsZHJlbigpLmxlbmd0aCA+IDApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYm94ID0gY2hpbGQuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICAgICAgICAgIHhBcnIucHVzaChib3gubWluWCwgYm94Lm1heFgpO1xuICAgICAgICAgICAgICAgIHlBcnIucHVzaChib3gubWluWSwgYm94Lm1heFkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaW5YID0gbWluKHhBcnIpO1xuICAgICAgICAgICAgbWF4WCA9IG1heCh4QXJyKTtcbiAgICAgICAgICAgIG1pblkgPSBtaW4oeUFycik7XG4gICAgICAgICAgICBtYXhZID0gbWF4KHlBcnIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWluWCA9IDA7XG4gICAgICAgICAgICBtYXhYID0gMDtcbiAgICAgICAgICAgIG1pblkgPSAwO1xuICAgICAgICAgICAgbWF4WSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJveCA9IHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBib3g7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTtcbiAgICAgICAgY2ZnWydjaGlsZHJlbiddID0gW107XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2hpbGRyZW5NYXJpeCh0b3RhbE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOS4jeS9huW6lOeUqOWIsOiHquW3sei6q+S4iui/mOimgeW6lOeUqOS6juWtkOWFg+e0oFxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYXBwbHlNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIHZhciBwcmVUb3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5hcHBseU1hdHJpeC5jYWxsKHRoaXMsIG1hdHJpeCk7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgLy8gdG90YWxNYXRyaXgg5rKh5pyJ5Y+R55Sf5Y+Y5YyW5pe277yM6L+Z6YeM5LuF6ICD6JmR5Lik6ICF6YO95Li6IG51bGwg5pe2XG4gICAgICAgIC8vIOS4jee7p+e7reWQkeS4i+S8oOmAkuefqemYtVxuICAgICAgICBpZiAodG90YWxNYXRyaXggPT09IHByZVRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXBwbHlDaGlsZHJlbk1hcml4KHRvdGFsTWF0cml4KTtcbiAgICB9O1xuICAgIC8vIOWcqOWtkOWFg+e0oOS4iuiuvue9ruefqemYtVxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuX2FwcGx5Q2hpbGRyZW5NYXJpeCA9IGZ1bmN0aW9uICh0b3RhbE1hdHJpeCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgY2hpbGQuYXBwbHlNYXRyaXgodG90YWxNYXRyaXgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vIOWFvOWuueiAgeeJiOacrOeahOaOpeWPo1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYWRkU2hhcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHR5cGUgPSBhcmdzWzBdO1xuICAgICAgICB2YXIgY2ZnID0gYXJnc1sxXTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHR5cGUpKSB7XG4gICAgICAgICAgICBjZmcgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2ZnWyd0eXBlJ10gPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaGFwZVR5cGUgPSBTSEFQRV9NQVBbY2ZnLnR5cGVdO1xuICAgICAgICBpZiAoIXNoYXBlVHlwZSkge1xuICAgICAgICAgICAgc2hhcGVUeXBlID0gdXBwZXJGaXJzdChjZmcudHlwZSk7XG4gICAgICAgICAgICBTSEFQRV9NQVBbY2ZnLnR5cGVdID0gc2hhcGVUeXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBTaGFwZUJhc2UgPSB0aGlzLmdldFNoYXBlQmFzZSgpO1xuICAgICAgICB2YXIgc2hhcGUgPSBuZXcgU2hhcGVCYXNlW3NoYXBlVHlwZV0oY2ZnKTtcbiAgICAgICAgdGhpcy5hZGQoc2hhcGUpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmFkZEdyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBncm91cENsYXNzID0gYXJnc1swXSwgY2ZnID0gYXJnc1sxXTtcbiAgICAgICAgdmFyIGdyb3VwO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihncm91cENsYXNzKSkge1xuICAgICAgICAgICAgaWYgKGNmZykge1xuICAgICAgICAgICAgICAgIGdyb3VwID0gbmV3IGdyb3VwQ2xhc3MoY2ZnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwID0gbmV3IGdyb3VwQ2xhc3Moe1xuICAgICAgICAgICAgICAgICAgICAvLyBjYW52YXMsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0bXBDZmcgPSBncm91cENsYXNzIHx8IHt9O1xuICAgICAgICAgICAgdmFyIFRtcEdyb3VwQ2xhc3MgPSB0aGlzLmdldEdyb3VwQmFzZSgpO1xuICAgICAgICAgICAgZ3JvdXAgPSBuZXcgVG1wR3JvdXBDbGFzcyh0bXBDZmcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkKGdyb3VwKTtcbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXM7XG4gICAgICAgIGlmICh0aGlzLmlzQ2FudmFzKCkpIHtcbiAgICAgICAgICAgIGNhbnZhcyA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbnZhcztcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0U2hhcGUgPSBmdW5jdGlvbiAoeCwgeSwgZXYpIHtcbiAgICAgICAgLy8g5aaC5p6c5LiN5pSv5oyB5ou+5Y+W77yM5YiZ55u05o6l6L+U5ZueXG4gICAgICAgIGlmICghaXNBbGxvd0NhcHR1cmUodGhpcykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIHNoYXBlO1xuICAgICAgICAvLyDlpoLmnpzlrrnlmajmmK8gZ3JvdXBcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2FudmFzKCkpIHtcbiAgICAgICAgICAgIHZhciB2ID0gW3gsIHksIDFdO1xuICAgICAgICAgICAgLy8g5bCGIHgsIHkg6L2s5o2i5oiQ5a+55bqU5LqOIGdyb3VwIOeahOWxgOmDqOWdkOagh1xuICAgICAgICAgICAgdiA9IHRoaXMuaW52ZXJ0RnJvbU1hdHJpeCh2KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0NsaXBwZWQodlswXSwgdlsxXSkpIHtcbiAgICAgICAgICAgICAgICBzaGFwZSA9IHRoaXMuX2ZpbmRTaGFwZShjaGlsZHJlbiwgdlswXSwgdlsxXSwgZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSB0aGlzLl9maW5kU2hhcGUoY2hpbGRyZW4sIHgsIHksIGV2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLl9maW5kU2hhcGUgPSBmdW5jdGlvbiAoY2hpbGRyZW4sIHgsIHksIGV2KSB7XG4gICAgICAgIHZhciBzaGFwZSA9IG51bGw7XG4gICAgICAgIGZvciAodmFyIGkgPSBjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAoaXNBbGxvd0NhcHR1cmUoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IGNoaWxkLmdldFNoYXBlKHgsIHksIGV2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuaXNIaXQoeCwgeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBjaGlsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldENhbnZhcygpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICB2YXIgcHJlUGFyZW50ID0gZWxlbWVudC5nZXRQYXJlbnQoKTtcbiAgICAgICAgaWYgKHByZVBhcmVudCkge1xuICAgICAgICAgICAgcmVtb3ZlQ2hpbGQocHJlUGFyZW50LCBlbGVtZW50LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhcmVudCcsIHRoaXMpO1xuICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICBzZXRDYW52YXMoZWxlbWVudCwgY2FudmFzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZWxpbmUpIHtcbiAgICAgICAgICAgIHNldFRpbWVsaW5lKGVsZW1lbnQsIHRpbWVsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbi5wdXNoKGVsZW1lbnQpO1xuICAgICAgICBlbGVtZW50Lm9uQ2FudmFzQ2hhbmdlKCdhZGQnKTtcbiAgICAgICAgdGhpcy5fYXBwbHlFbGVtZW50TWF0cml4KGVsZW1lbnQpO1xuICAgIH07XG4gICAgLy8g5bCG5b2T5YmN5a655Zmo55qE55+p6Zi15bqU55So5Yiw5a2Q5YWD57SgXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5fYXBwbHlFbGVtZW50TWF0cml4ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICAvLyDmt7vliqDlm77lvaLmiJbogIXliIbnu4Tml7bvvIzpnIDopoHmiorlvZPliY3lm77lhYPnmoTnn6npmLXorr7nva7ov5vljrtcbiAgICAgICAgaWYgKHRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICBlbGVtZW50LmFwcGx5TWF0cml4KHRvdGFsTWF0cml4KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjaGlsZHJlbicpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5zb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIC8vIOeos+WumuaOkuW6j1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgICAgICAgICBjaGlsZFtJTkRFWF0gPSBpbmRleDtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNoaWxkcmVuLnNvcnQoZ2V0Q29tcGFyZXIoZnVuY3Rpb24gKG9iajEsIG9iajIpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmoxLmdldCgnekluZGV4JykgLSBvYmoyLmdldCgnekluZGV4Jyk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnc29ydCcpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2NsZWFyaW5nJywgdHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjaGlsZHJlbltpXS5kZXN0cm95KCk7IC8vIOmUgOavgeWtkOWFg+e0oFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdjaGlsZHJlbicsIFtdKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnY2xlYXInKTtcbiAgICAgICAgdGhpcy5zZXQoJ2NsZWFyaW5nJywgZmFsc2UpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluesrOS4gOS4quWtkOWFg+e0oFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDnrKzkuIDkuKrlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldEZpcnN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZEJ5SW5kZXgoMCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bmnIDlkI7kuIDkuKrlrZDlhYPntKBcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRMYXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENoaWxkQnlJbmRleChjaGlsZHJlbi5sZW5ndGggLSAxKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOagueaNrue0ouW8leiOt+WPluWtkOWFg+e0oFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDnrKzkuIDkuKrlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENoaWxkQnlJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbltpbmRleF07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlrZDlhYPntKDnmoTmlbDph49cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOWtkOWFg+e0oOaVsOmHj1xuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuWMheWQq+WvueW6lOWFg+e0oFxuICAgICAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQg5YWD57SgXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmNvbnRhaW4gPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpID4gLTE7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vpmaTlr7nlupTlrZDlhYPntKBcbiAgICAgKiBAcGFyYW0ge0lFbGVtZW50fSBlbGVtZW50IOWtkOWFg+e0oFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGVzdHJveSDmmK/lkKbplIDmr4HlrZDlhYPntKDvvIzpu5jorqTkuLogdHJ1ZVxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoZWxlbWVudCwgZGVzdHJveSkge1xuICAgICAgICBpZiAoZGVzdHJveSA9PT0gdm9pZCAwKSB7IGRlc3Ryb3kgPSB0cnVlOyB9XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW4oZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKGRlc3Ryb3kpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmn6Xmib7miYDmnInljLnphY3nmoTlhYPntKBcbiAgICAgKiBAcGFyYW0gIHtFbGVtZW50RmlsdGVyRm59ICAgZm4gIOWMuemFjeWHveaVsFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50W119IOWFg+e0oOaVsOe7hFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB2YXIgcnN0ID0gW107XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChmbihlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gcnN0LmNvbmNhdChlbGVtZW50LmZpbmRBbGwoZm4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByc3Q7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmn6Xmib7lhYPntKDvvIzmib7liLDnrKzkuIDkuKrov5Tlm55cbiAgICAgKiBAcGFyYW0gIHtFbGVtZW50RmlsdGVyRm59IGZuICAgIOWMuemFjeWHveaVsFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fG51bGx9IOWFg+e0oO+8jOWPr+S7peS4uuepulxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB2YXIgcnN0ID0gbnVsbDtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGZuKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gZWxlbWVudC5maW5kKGZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcnN0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5qC55o2uIElEIOafpeaJvuWFg+e0oFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCDlhYPntKAgaWRcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudHxudWxsfSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmZpbmRCeUlkID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgnaWQnKSA9PT0gaWQ7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6K+l5pa55rOV5Y2z5bCG5bqf5byD77yM5LiN5bu66K6u5L2/55SoXG4gICAgICog5qC55o2uIGNsYXNzTmFtZSDmn6Xmib7lhYPntKBcbiAgICAgKiBUT0RPOiDor6XmlrnlvI/lrprkuYnmmoLml7blj6rnu5kgRzYgMy4zIOS7peWQjueahOeJiOacrOS9v+eUqO+8jOW+hSBHNiDkuK3nmoQgZmluZEJ5Q2xhc3NOYW1lIOaWueazleenu+mZpOWQju+8jEcg5Lmf6ZyA6KaB5ZCM5q2l56e76ZmkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSDlhYPntKAgY2xhc3NOYW1lXG4gICAgICogQHJldHVybiB7SUVsZW1lbnQgfCBudWxsfSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmZpbmRCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gY2xhc3NOYW1lO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOagueaNriBuYW1lIOafpeaJvuWFg+e0oOWIl+ihqFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICAgIG5hbWUg5YWD57Sg5ZCN56ewXG4gICAgICogQHJldHVybiB7SUVsZW1lbnRbXX0g5YWD57SgXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5maW5kQWxsQnlOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IG5hbWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRhaW5lcjtcbn0oRWxlbWVudCkpO1xuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGFpbmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js\");\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(arr[i])) {\n result.push([].concat(arr[i]));\n }\n else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isEqual\"])(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime, delay = animation.delay, duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) { };\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) { };\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0], value = args[1];\n if (!name)\n return this.attrs;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {},\n _a[name] = value,\n _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n }\n else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) { destroy = true; }\n var parent = this.getParent();\n if (parent) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n }\n else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(parentMatrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(matrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"invert\"])(matrix);\n if (invertMatrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas,\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(originAttrs, function (i, k) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n }\n else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({ attrs: attrs });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0], duration = args[1], _a = args[2], easing = _a === void 0 ? 'easeLinear' : _a, _b = args[3], callback = _b === void 0 ? _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"] : _b, _c = args[4], delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n }\n else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n pauseCallback = animateCfg.pauseCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n resumeCallback = animateCfg.resumeCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n }\n else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(easing)) {\n callback = easing;\n easing = 'easeLinear';\n }\n else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])(),\n onFrame: onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n }\n else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) { toEnd = true; }\n var animations = this.get('animations');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n }\n else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime,\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n }\n else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function (i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isParent\"])(element, relativeShape)) {\n return \"break\";\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(name_1)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n }\n else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) { translateX = 0; }\n if (translateY === void 0) { translateY = 0; }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(), x = _a.x, y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Element);\n//# sourceMappingURL=element.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2VsZW1lbnQuanM/NjVkYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNtRjtBQUM3RTtBQUNpQjtBQUNhO0FBQzVDO0FBQzFCLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkMsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUixpREFBaUQsMERBQU87QUFDeEQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQUc7QUFDWDtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxJQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxJQUFJO0FBQ25CLGVBQWUsSUFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxnQkFBZ0I7QUFDakQ7QUFDQTtBQUNBLFlBQVksa0VBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG1FQUFjO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG1FQUFjO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGNBQWM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpRUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwyREFBTTtBQUNyQztBQUNBLHVCQUF1QixpRUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsNkRBQVU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQkFBZ0IsMERBQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsOEJBQThCLGVBQWU7QUFDN0MsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzSkFBc0osK0NBQUk7QUFDMUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLCtDQUFJO0FBQ2xELHdEQUF3RCwrQ0FBSTtBQUM1RCwwREFBMEQsK0NBQUk7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0JBQWtCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsY0FBYztBQUM3QztBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkIsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTtBQUNBLG9CQUFvQiwwREFBTztBQUMzQixvQkFBb0IsdURBQUk7QUFDeEI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0Esb0NBQW9DLGdCQUFnQjtBQUNwRCxvQ0FBb0MsZ0JBQWdCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTtBQUNTLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2VsZW1lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzRXF1YWwsIGlzRnVuY3Rpb24sIGlzTnVtYmVyLCBpc09iamVjdCwgaXNBcnJheSwgbm9vcCwgbWl4LCB1cHBlckZpcnN0LCB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgcmVtb3ZlRnJvbUFycmF5LCBpc1BhcmVudCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBtdWx0aXBseU1hdHJpeCwgbXVsdGlwbHlWZWMyLCBpbnZlcnQgfSBmcm9tICcuLi91dGlsL21hdHJpeCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIHRyYW5zZm9ybSA9IGV4dC50cmFuc2Zvcm07XG52YXIgTUFUUklYID0gJ21hdHJpeCc7XG52YXIgQ0xPTkVfQ0ZHUyA9IFsnekluZGV4JywgJ2NhcHR1cmUnLCAndmlzaWJsZScsICd0eXBlJ107XG4vLyDlj6/ku6XlnKggdG9BdHRycyDkuK3orr7nva7vvIzkvYbkuI3lsZ7kuo7nu5jlm77lsZ7mgKfnmoTlrZfmrrVcbnZhciBSRVNFUlZFRF9QT1JQUyA9IFsncmVwZWF0J107XG52YXIgREVMRUdBVElPTl9TUExJVCA9ICc6JztcbnZhciBXSUxEQ0FSRCA9ICcqJztcbi8vIOmcgOimgeiAg+iZkeaVsOe7hOW1jOWll+aVsOe7hOeahOWcuuaZr1xuLy8g5pWw57uE5bWM5aWX5a+56LGh55qE5Zy65pmv5LiN6ICD6JmRXG5mdW5jdGlvbiBfY2xvbmVBcnJheUF0dHIoYXJyKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFycltpXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtdLmNvbmNhdChhcnJbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFycltpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldEZvcm1hdEZyb21BdHRycyh0b0F0dHJzLCBzaGFwZSkge1xuICAgIHZhciBmcm9tQXR0cnMgPSB7fTtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRycztcbiAgICBmb3IgKHZhciBrIGluIHRvQXR0cnMpIHtcbiAgICAgICAgZnJvbUF0dHJzW2tdID0gYXR0cnNba107XG4gICAgfVxuICAgIHJldHVybiBmcm9tQXR0cnM7XG59XG5mdW5jdGlvbiBnZXRGb3JtYXRUb0F0dHJzKHByb3BzLCBzaGFwZSkge1xuICAgIHZhciB0b0F0dHJzID0ge307XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIGVhY2gocHJvcHMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICAgIGlmIChSRVNFUlZFRF9QT1JQUy5pbmRleE9mKGspID09PSAtMSAmJiAhaXNFcXVhbChhdHRyc1trXSwgdikpIHtcbiAgICAgICAgICAgIHRvQXR0cnNba10gPSB2O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRvQXR0cnM7XG59XG5mdW5jdGlvbiBjaGVja0V4aXN0ZWRBdHRycyhhbmltYXRpb25zLCBhbmltYXRpb24pIHtcbiAgICBpZiAoYW5pbWF0aW9uLm9uRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbnM7XG4gICAgfVxuICAgIHZhciBzdGFydFRpbWUgPSBhbmltYXRpb24uc3RhcnRUaW1lLCBkZWxheSA9IGFuaW1hdGlvbi5kZWxheSwgZHVyYXRpb24gPSBhbmltYXRpb24uZHVyYXRpb247XG4gICAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgICBlYWNoKGFuaW1hdGlvbnMsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIC8vIOWQjuS4gOS4quWKqOeUu+W8gOWni+aJp+ihjOeahOaXtumXtCA8IOWJjeS4gOS4quWKqOeUu+eahOe7k+adn+aXtumXtCAmJiDlkI7kuIDkuKrliqjnlLvnmoTmiafooYzml7bpl7QgPiDliY3kuIDkuKrliqjnlLvnmoTlu7bov59cbiAgICAgICAgaWYgKHN0YXJ0VGltZSArIGRlbGF5IDwgaXRlbS5zdGFydFRpbWUgKyBpdGVtLmRlbGF5ICsgaXRlbS5kdXJhdGlvbiAmJiBkdXJhdGlvbiA+IGl0ZW0uZGVsYXkpIHtcbiAgICAgICAgICAgIGVhY2goYW5pbWF0aW9uLnRvQXR0cnMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoaXRlbS50b0F0dHJzLCBrKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS50b0F0dHJzW2tdO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS5mcm9tQXR0cnNba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYW5pbWF0aW9ucztcbn1cbnZhciBFbGVtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFbGVtZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEVsZW1lbnQoY2ZnKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNmZykgfHwgdGhpcztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICog5Zu+5b2i5bGe5oCnXG4gICAgICAgICAqIEB0eXBlIHtTaGFwZUF0dHJzfVxuICAgICAgICAgKi9cbiAgICAgICAgX3RoaXMuYXR0cnMgPSB7fTtcbiAgICAgICAgdmFyIGF0dHJzID0gX3RoaXMuZ2V0RGVmYXVsdEF0dHJzKCk7XG4gICAgICAgIG1peChhdHRycywgY2ZnLmF0dHJzKTtcbiAgICAgICAgX3RoaXMuYXR0cnMgPSBhdHRycztcbiAgICAgICAgX3RoaXMuaW5pdEF0dHJzKGF0dHJzKTtcbiAgICAgICAgX3RoaXMuaW5pdEFuaW1hdGUoKTsgLy8g5Yid5aeL5YyW5Yqo55S7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLy8gb3ZlcnJpZGVcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgICAgICB6SW5kZXg6IDAsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog6I635Y+W6buY6K6k55qE5bGe55u4XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF0cml4OiB0aGlzLmdldERlZmF1bHRNYXRyaXgoKSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLm9uQ2FudmFzQ2hhbmdlID0gZnVuY3Rpb24gKGNoYW5nZVR5cGUpIHsgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyW5bGe5oCn77yM5pyJ5Lqb5bGe5oCn6ZyA6KaB5Yqg5belXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGF0dHJzIOWxnuaAp+WAvFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykgeyB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJbliqjnlLtcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5pbml0QW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hYmxlJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpbmcnLCBmYWxzZSk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5pc0dyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgncGFyZW50Jyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5hdHRyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSBhcmdzWzBdLCB2YWx1ZSA9IGFyZ3NbMV07XG4gICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHJzO1xuICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gbmFtZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cihrLCBuYW1lW2tdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJBdHRyc0NoYW5nZShuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5zZXRBdHRyKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJBdHRyc0NoYW5nZSgoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICBfYVtuYW1lXSA9IHZhbHVlLFxuICAgICAgICAgICAgICAgIF9hKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hdHRyc1tuYW1lXTtcbiAgICB9O1xuICAgIC8vIOaYr+WQpuiiq+ijgeWJqu+8jOiiq+ijgeWJquWImeS4jeaYvuekuu+8jOS4jeWPguS4juaLvuWPllxuICAgIEVsZW1lbnQucHJvdG90eXBlLmlzQ2xpcHBlZCA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHZhciBjbGlwID0gdGhpcy5nZXRDbGlwKCk7XG4gICAgICAgIHJldHVybiBjbGlwICYmICFjbGlwLmlzSGl0KHJlZlgsIHJlZlkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5YaF6YOo6K6+572u5bGe5oCn5YC855qE5o6l5Y+jXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUg5bGe5oCn5ZCNXG4gICAgICogQHBhcmFtIHthbnl9IHZhbHVlIOWxnuaAp+WAvFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNldEF0dHIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIG9yaWdpblZhbHVlID0gdGhpcy5hdHRyc1tuYW1lXTtcbiAgICAgICAgaWYgKG9yaWdpblZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5hdHRyc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbkF0dHJDaGFuZ2UobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWxnuaAp+WAvOWPkeeUn+aUueWPmFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIOWxnuaAp+WQjVxuICAgICAqIEBwYXJhbSB7YW55fSB2YWx1ZSDlsZ7mgKflgLxcbiAgICAgKiBAcGFyYW0ge2FueX0gb3JpZ2luVmFsdWUg5bGe5oCn5YC8XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KCd0b3RhbE1hdHJpeCcsIG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKfmm7TmlLnlkI7pnIDopoHlgZrnmoTkuovmg4VcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZSA9IGZ1bmN0aW9uICh0YXJnZXRBdHRycykge1xuICAgICAgICBpZiAodGhpcy5jZmcuaXNDbGlwU2hhcGUpIHtcbiAgICAgICAgICAgIHZhciBhcHBseVRvID0gdGhpcy5jZmcuYXBwbHlUbztcbiAgICAgICAgICAgIGlmIChhcHBseVRvKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlUby5vbkNhbnZhc0NoYW5nZSgnY2xpcCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnYXR0cicpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDkuI3mmK/pq5jpopHmk43kvZznm7TmjqXkvb/nlKggc2V0XG4gICAgICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ3Nob3cnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDkuI3mmK/pq5jpopHmk43kvZznm7TmjqXkvb/nlKggc2V0XG4gICAgICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgZmFsc2UpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdoaWRlJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0WkluZGV4ID0gZnVuY3Rpb24gKHpJbmRleCkge1xuICAgICAgICB0aGlzLnNldCgnekluZGV4JywgekluZGV4KTtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIC8vIOaUueWPmCB6SW5kZXgg5LiN5bqU6K+l56uL5Y2z6Kem5Y+R5riy5p+TICjosIPnlKggb25DYW52YXNDaGFuZ2UoJ3pJbmRleCcpKe+8jOmcgOimgee7j+i/hyBzb3J0IOWGjeinpuWPkVxuICAgICAgICAgICAgcGFyZW50LnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnRvRnJvbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5nZXRDaGlsZHJlbigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtcbiAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgY2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnekluZGV4Jyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS50b0JhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5nZXRDaGlsZHJlbigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtcbiAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgY2hpbGRyZW4udW5zaGlmdCh0aGlzKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnekluZGV4Jyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZGVzdHJveSkge1xuICAgICAgICBpZiAoZGVzdHJveSA9PT0gdm9pZCAwKSB7IGRlc3Ryb3kgPSB0cnVlOyB9XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICByZW1vdmVGcm9tQXJyYXkocGFyZW50LmdldENoaWxkcmVuKCksIHRoaXMpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQuZ2V0KCdjbGVhcmluZycpKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c54i25YWD57Sg5q2j5Zyo5riF55CG77yM5b2T5YmN5YWD57Sg5LiN6Kem5Y+RIHJlbW92ZVxuICAgICAgICAgICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ3JlbW92ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgncmVtb3ZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc3Ryb3kpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5yZXNldE1hdHJpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5hdHRyKE1BVFJJWCwgdGhpcy5nZXREZWZhdWx0TWF0cml4KCkpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdtYXRyaXgnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldE1hdHJpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cihNQVRSSVgpO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0TWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgdGhpcy5hdHRyKE1BVFJJWCwgbSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ21hdHJpeCcpO1xuICAgIH07XG4gICAgLy8g6I635Y+W5oC755qEIG1hdHJpeFxuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldFRvdGFsTWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdG90YWxNYXRyaXggPSB0aGlzLmNmZy50b3RhbE1hdHJpeDtcbiAgICAgICAgaWYgKCF0b3RhbE1hdHJpeCkge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRNYXRyaXggPSB0aGlzLmF0dHIoJ21hdHJpeCcpO1xuICAgICAgICAgICAgdmFyIHBhcmVudE1hdHJpeCA9IHRoaXMuY2ZnLnBhcmVudE1hdHJpeDtcbiAgICAgICAgICAgIGlmIChwYXJlbnRNYXRyaXggJiYgY3VycmVudE1hdHJpeCkge1xuICAgICAgICAgICAgICAgIHRvdGFsTWF0cml4ID0gbXVsdGlwbHlNYXRyaXgocGFyZW50TWF0cml4LCBjdXJyZW50TWF0cml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsTWF0cml4ID0gY3VycmVudE1hdHJpeCB8fCBwYXJlbnRNYXRyaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldCgndG90YWxNYXRyaXgnLCB0b3RhbE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvdGFsTWF0cml4O1xuICAgIH07XG4gICAgLy8g5LiK5bGC5YiG57uE6K6+572uIG1hdHJpeFxuICAgIEVsZW1lbnQucHJvdG90eXBlLmFwcGx5TWF0cml4ID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICB2YXIgY3VycmVudE1hdHJpeCA9IHRoaXMuYXR0cignbWF0cml4Jyk7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IG51bGw7XG4gICAgICAgIGlmIChtYXRyaXggJiYgY3VycmVudE1hdHJpeCkge1xuICAgICAgICAgICAgdG90YWxNYXRyaXggPSBtdWx0aXBseU1hdHJpeChtYXRyaXgsIGN1cnJlbnRNYXRyaXgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG90YWxNYXRyaXggPSBjdXJyZW50TWF0cml4IHx8IG1hdHJpeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgndG90YWxNYXRyaXgnLCB0b3RhbE1hdHJpeCk7XG4gICAgICAgIHRoaXMuc2V0KCdwYXJlbnRNYXRyaXgnLCBtYXRyaXgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOiOt+WPlum7mOiupOeahOefqemYtVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJbXXxudWxsfSDpu5jorqTnmoTnn6npmLVcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXREZWZhdWx0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIC8vIOWwhuWQkemHj+W6lOeUqOiuvue9rueahOefqemYtVxuICAgIEVsZW1lbnQucHJvdG90eXBlLmFwcGx5VG9NYXRyaXggPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5hdHRyKCdtYXRyaXgnKTtcbiAgICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5VmVjMihtYXRyaXgsIHYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgIH07XG4gICAgLy8g5qC55o2u6K6+572u55qE55+p6Zi177yM5bCG5ZCR6YeP6L2s5o2i55u45a+55LqO5Zu+5b2iL+WIhue7hOeahOS9jee9rlxuICAgIEVsZW1lbnQucHJvdG90eXBlLmludmVydEZyb21NYXRyaXggPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5hdHRyKCdtYXRyaXgnKTtcbiAgICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICAgICAgdmFyIGludmVydE1hdHJpeCA9IGludmVydChtYXRyaXgpO1xuICAgICAgICAgICAgaWYgKGludmVydE1hdHJpeCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtdWx0aXBseVZlYzIoaW52ZXJ0TWF0cml4LCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9O1xuICAgIC8vIOiuvue9riBjbGlwXG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0Q2xpcCA9IGZ1bmN0aW9uIChjbGlwQ2ZnKSB7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldENhbnZhcygpO1xuICAgICAgICAvLyDlupTor6Xlj6rorr7nva7lvZPliY3lhYPntKDnmoQgY2xpcO+8jOS4jeW6lOivpeWOu+S/ruaUuSBjbGlwIOacrOi6q++8jOaWueS+vyBjbGlwIOiiq+WkjeeUqFxuICAgICAgICAvLyBUT0RPOiBzZXRDbGlwIOeahOS8oOWPguaXoiBzaGFwZSDphY3nva7vvIzkuZ/mlK/mjIEgc2hhcGUg5a+56LGhXG4gICAgICAgIC8vIGNvbnN0IHByZVNoYXBlID0gdGhpcy5nZXQoJ2NsaXBTaGFwZScpO1xuICAgICAgICAvLyBpZiAocHJlU2hhcGUpIHtcbiAgICAgICAgLy8gICAvLyDlsIbkuYvliY3nmoQgY2xpcFNoYXBlIOmUgOavgVxuICAgICAgICAvLyAgIHByZVNoYXBlLmRlc3Ryb3koKTtcbiAgICAgICAgLy8gfVxuICAgICAgICB2YXIgY2xpcFNoYXBlID0gbnVsbDtcbiAgICAgICAgLy8g5aaC5p6c6YWN572u6aG55Li6IG51bGzvvIzliJnkuI3np7vpmaQgY2xpcFNoYXBlXG4gICAgICAgIGlmIChjbGlwQ2ZnKSB7XG4gICAgICAgICAgICB2YXIgU2hhcGVCYXNlID0gdGhpcy5nZXRTaGFwZUJhc2UoKTtcbiAgICAgICAgICAgIHZhciBzaGFwZVR5cGUgPSB1cHBlckZpcnN0KGNsaXBDZmcudHlwZSk7XG4gICAgICAgICAgICB2YXIgQ29ucyA9IFNoYXBlQmFzZVtzaGFwZVR5cGVdO1xuICAgICAgICAgICAgaWYgKENvbnMpIHtcbiAgICAgICAgICAgICAgICBjbGlwU2hhcGUgPSBuZXcgQ29ucyh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGNsaXBDZmcudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaXNDbGlwU2hhcGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5VG86IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiBjbGlwQ2ZnLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgICBjYW52YXM6IGNhbnZhcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgnY2xpcFNoYXBlJywgY2xpcFNoYXBlKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnY2xpcCcpO1xuICAgICAgICByZXR1cm4gY2xpcFNoYXBlO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0Q2xpcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g6auY6aKR546H6LCD55So55qE5Zyw5pa555u05o6l5L2/55SoIHRoaXMuY2ZnLnh4eFxuICAgICAgICB2YXIgY2xpcFNoYXBlID0gdGhpcy5jZmcuY2xpcFNoYXBlO1xuICAgICAgICAvLyDmnKrorr7nva7ml7bov5Tlm54gTnVsbO+8jOS/neivgeS4gOiHtOaAp1xuICAgICAgICBpZiAoIWNsaXBTaGFwZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsaXBTaGFwZTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgb3JpZ2luQXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICB2YXIgYXR0cnMgPSB7fTtcbiAgICAgICAgZWFjaChvcmlnaW5BdHRycywgZnVuY3Rpb24gKGksIGspIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9yaWdpbkF0dHJzW2tdKSkge1xuICAgICAgICAgICAgICAgIGF0dHJzW2tdID0gX2Nsb25lQXJyYXlBdHRyKG9yaWdpbkF0dHJzW2tdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dHJzW2tdID0gb3JpZ2luQXR0cnNba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY29ucyA9IHRoaXMuY29uc3RydWN0b3I7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdmFyIGNsb25lID0gbmV3IGNvbnMoeyBhdHRyczogYXR0cnMgfSk7XG4gICAgICAgIGVhY2goQ0xPTkVfQ0ZHUywgZnVuY3Rpb24gKGNmZ05hbWUpIHtcbiAgICAgICAgICAgIGNsb25lLnNldChjZmdOYW1lLCBfdGhpcy5nZXQoY2ZnTmFtZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRlc3Ryb3llZCA9IHRoaXMuZGVzdHJveWVkO1xuICAgICAgICBpZiAoZGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdHRycyA9IHt9O1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8gdGhpcy5vbkNhbnZhc0NoYW5nZSgnZGVzdHJveScpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSE5LqO5Yqo55S75pqC5YGc54q25oCBXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0g5piv5ZCm5aSE5LqO5Yqo55S75pqC5YGc54q25oCBXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaXNBbmltYXRlUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ19wYXVzZScpLmlzUGF1c2VkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5omn6KGM5Yqo55S777yM5pSv5oyB5aSa56eN5Ye95pWw562+5ZCNXG4gICAgICogMS4gYW5pbWF0ZSh0b0F0dHJzOiBFbGVtZW50QXR0cnMsIGR1cmF0aW9uOiBudW1iZXIsIGVhc2luZz86IHN0cmluZywgY2FsbGJhY2s/OiAoKSA9PiB2b2lkLCBkZWxheT86IG51bWJlcilcbiAgICAgKiAyLiBhbmltYXRlKG9uRnJhbWU6IE9uRnJhbWUsIGR1cmF0aW9uOiBudW1iZXIsIGVhc2luZz86IHN0cmluZywgY2FsbGJhY2s/OiAoKSA9PiB2b2lkLCBkZWxheT86IG51bWJlcilcbiAgICAgKiAzLiBhbmltYXRlKHRvQXR0cnM6IEVsZW1lbnRBdHRycywgY2ZnOiBBbmltYXRlQ2ZnKVxuICAgICAqIDQuIGFuaW1hdGUob25GcmFtZTogT25GcmFtZSwgY2ZnOiBBbmltYXRlQ2ZnKVxuICAgICAqIOWQhOS4quWPguaVsOeahOWQq+S5ieS4ujpcbiAgICAgKiAgIHRvQXR0cnMgIOWKqOeUu+acgOe7iOeKtuaAgVxuICAgICAqICAgb25GcmFtZSAg6Ieq5a6a5LmJ5bin5Yqo55S75Ye95pWwXG4gICAgICogICBkdXJhdGlvbiDliqjnlLvmiafooYzml7bpl7RcbiAgICAgKiAgIGVhc2luZyAgIOWKqOeUu+e8k+WKqOaViOaenFxuICAgICAqICAgY2FsbGJhY2sg5Yqo55S75omn6KGM5ZCO55qE5Zue6LCDXG4gICAgICogICBkZWxheSAgICDliqjnlLvlu7bov5/ml7bpl7RcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5nZXQoJ3RpbWVsaW5lJykgJiYgIXRoaXMuZ2V0KCdjYW52YXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpbmcnLCB0cnVlKTtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIGlmICghdGltZWxpbmUpIHtcbiAgICAgICAgICAgIHRpbWVsaW5lID0gdGhpcy5nZXQoJ2NhbnZhcycpLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCd0aW1lbGluZScsIHRpbWVsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuZ2V0KCdhbmltYXRpb25zJykgfHwgW107XG4gICAgICAgIC8vIOWIneWni+WMliB0aWNrXG4gICAgICAgIGlmICghdGltZWxpbmUudGltZXIpIHtcbiAgICAgICAgICAgIHRpbWVsaW5lLmluaXRUaW1lcigpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b0F0dHJzID0gYXJnc1swXSwgZHVyYXRpb24gPSBhcmdzWzFdLCBfYSA9IGFyZ3NbMl0sIGVhc2luZyA9IF9hID09PSB2b2lkIDAgPyAnZWFzZUxpbmVhcicgOiBfYSwgX2IgPSBhcmdzWzNdLCBjYWxsYmFjayA9IF9iID09PSB2b2lkIDAgPyBub29wIDogX2IsIF9jID0gYXJnc1s0XSwgZGVsYXkgPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jO1xuICAgICAgICB2YXIgb25GcmFtZTtcbiAgICAgICAgdmFyIHJlcGVhdDtcbiAgICAgICAgdmFyIHBhdXNlQ2FsbGJhY2s7XG4gICAgICAgIHZhciByZXN1bWVDYWxsYmFjaztcbiAgICAgICAgdmFyIGFuaW1hdGVDZmc7XG4gICAgICAgIC8vIOesrOS6jOS4quWPguaVsO+8jOaXouWPr+S7peaYr+WKqOeUu+acgOe7iOeKtuaAgSB0b0F0dHJz77yM5Lmf5Y+v5Lul5piv6Ieq5a6a5LmJ5bin5Yqo55S75Ye95pWwIG9uRnJhbWVcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odG9BdHRycykpIHtcbiAgICAgICAgICAgIG9uRnJhbWUgPSB0b0F0dHJzO1xuICAgICAgICAgICAgdG9BdHRycyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHRvQXR0cnMpICYmIHRvQXR0cnMub25GcmFtZSkge1xuICAgICAgICAgICAgLy8g5YW85a65IDMuMCDkuK3nmoTlhpnms5XvvIxvbkZyYW1lIOWSjCByZXBlYXQg5Y+v5ZyoIHRvQXR0cnMg5Lit6K6+572uXG4gICAgICAgICAgICBvbkZyYW1lID0gdG9BdHRycy5vbkZyYW1lO1xuICAgICAgICAgICAgcmVwZWF0ID0gdG9BdHRycy5yZXBlYXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8g56ys5LqM5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv5omn6KGM5pe26Ze0IGR1cmF0aW9u77yM5Lmf5Y+v5Lul5piv5Yqo55S75Y+C5pWwIGFuaW1hdGVDZmdcbiAgICAgICAgaWYgKGlzT2JqZWN0KGR1cmF0aW9uKSkge1xuICAgICAgICAgICAgYW5pbWF0ZUNmZyA9IGR1cmF0aW9uO1xuICAgICAgICAgICAgZHVyYXRpb24gPSBhbmltYXRlQ2ZnLmR1cmF0aW9uO1xuICAgICAgICAgICAgZWFzaW5nID0gYW5pbWF0ZUNmZy5lYXNpbmcgfHwgJ2Vhc2VMaW5lYXInO1xuICAgICAgICAgICAgZGVsYXkgPSBhbmltYXRlQ2ZnLmRlbGF5IHx8IDA7XG4gICAgICAgICAgICAvLyBhbmltYXRlQ2ZnIOS4reeahOiuvue9ruS8mOWFiOe6p+abtOmrmFxuICAgICAgICAgICAgcmVwZWF0ID0gYW5pbWF0ZUNmZy5yZXBlYXQgfHwgcmVwZWF0IHx8IGZhbHNlO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBhbmltYXRlQ2ZnLmNhbGxiYWNrIHx8IG5vb3A7XG4gICAgICAgICAgICBwYXVzZUNhbGxiYWNrID0gYW5pbWF0ZUNmZy5wYXVzZUNhbGxiYWNrIHx8IG5vb3A7XG4gICAgICAgICAgICByZXN1bWVDYWxsYmFjayA9IGFuaW1hdGVDZmcucmVzdW1lQ2FsbGJhY2sgfHwgbm9vcDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOesrOWbm+S4quWPguaVsO+8jOaXouWPr+S7peaYr+Wbnuiwg+WHveaVsCBjYWxsYmFja++8jOS5n+WPr+S7peaYr+W7tui/n+aXtumXtCBkZWxheVxuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgICAgIGRlbGF5ID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g56ys5LiJ5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv57yT5Yqo5Y+C5pWwIGVhc2luZ++8jOS5n+WPr+S7peaYr+Wbnuiwg+WHveaVsCBjYWxsYmFja1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oZWFzaW5nKSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZWFzaW5nO1xuICAgICAgICAgICAgICAgIGVhc2luZyA9ICdlYXNlTGluZWFyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVhc2luZyA9IGVhc2luZyB8fCAnZWFzZUxpbmVhcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvcm1hdFRvQXR0cnMgPSBnZXRGb3JtYXRUb0F0dHJzKHRvQXR0cnMsIHRoaXMpO1xuICAgICAgICB2YXIgYW5pbWF0aW9uID0ge1xuICAgICAgICAgICAgZnJvbUF0dHJzOiBnZXRGb3JtYXRGcm9tQXR0cnMoZm9ybWF0VG9BdHRycywgdGhpcyksXG4gICAgICAgICAgICB0b0F0dHJzOiBmb3JtYXRUb0F0dHJzLFxuICAgICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgICAgZWFzaW5nOiBlYXNpbmcsXG4gICAgICAgICAgICByZXBlYXQ6IHJlcGVhdCxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgICAgIHBhdXNlQ2FsbGJhY2s6IHBhdXNlQ2FsbGJhY2ssXG4gICAgICAgICAgICByZXN1bWVDYWxsYmFjazogcmVzdW1lQ2FsbGJhY2ssXG4gICAgICAgICAgICBkZWxheTogZGVsYXksXG4gICAgICAgICAgICBzdGFydFRpbWU6IHRpbWVsaW5lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIGlkOiB1bmlxdWVJZCgpLFxuICAgICAgICAgICAgb25GcmFtZTogb25GcmFtZSxcbiAgICAgICAgICAgIHBhdGhGb3JtYXR0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICAvLyDlpoLmnpzliqjnlLvlhYPntKDpmJ/liJfkuK3lt7Lnu4/mnInov5nkuKrlm77lvaLkuoZcbiAgICAgICAgaWYgKGFuaW1hdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8g5YWI5qOA5p+l5piv5ZCm6ZyA6KaB5ZCI5bm25bGe5oCn44CC6Iul5pyJ55u45ZCM55qE5Yqo55S777yM5bCG6K+l5bGe5oCn5LuO5YmN5LiA5Liq5Yqo55S75Lit5Yig6ZmkLOebtOaOpeeUqOWQjuS4gOS4quWKqOeUu+S4rVxuICAgICAgICAgICAgYW5pbWF0aW9ucyA9IGNoZWNrRXhpc3RlZEF0dHJzKGFuaW1hdGlvbnMsIGFuaW1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyDlkKbliJnlsIblm77lvaLmt7vliqDliLDliqjnlLvlhYPntKDpmJ/liJdcbiAgICAgICAgICAgIHRpbWVsaW5lLmFkZEFuaW1hdG9yKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGFuaW1hdGlvbnMucHVzaChhbmltYXRpb24pO1xuICAgICAgICB0aGlzLnNldCgnYW5pbWF0aW9ucycsIGFuaW1hdGlvbnMpO1xuICAgICAgICB0aGlzLnNldCgnX3BhdXNlJywgeyBpc1BhdXNlZDogZmFsc2UgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlgZzmraLliqjnlLtcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRvRW5kIOaYr+WQpuWIsOWKqOeUu+eahOacgOe7iOeKtuaAgVxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnN0b3BBbmltYXRlID0gZnVuY3Rpb24gKHRvRW5kKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0b0VuZCA9PT0gdm9pZCAwKSB7IHRvRW5kID0gdHJ1ZTsgfVxuICAgICAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuZ2V0KCdhbmltYXRpb25zJyk7XG4gICAgICAgIGVhY2goYW5pbWF0aW9ucywgZnVuY3Rpb24gKGFuaW1hdGlvbikge1xuICAgICAgICAgICAgLy8g5bCG5Yqo55S75omn6KGM5Yiw5pyA5ZCO5LiA5binXG4gICAgICAgICAgICBpZiAodG9FbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uLm9uRnJhbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuYXR0cihhbmltYXRpb24ub25GcmFtZSgxKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKGFuaW1hdGlvbi50b0F0dHJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYW5pbWF0aW9uLmNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75YGc5q2i5pe255qE5Zue6LCDXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgnYW5pbWF0aW5nJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNldCgnYW5pbWF0aW9ucycsIFtdKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaaguWBnOWKqOeUu1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnBhdXNlQW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5nZXQoJ2FuaW1hdGlvbnMnKTtcbiAgICAgICAgdmFyIHBhdXNlVGltZSA9IHRpbWVsaW5lLmdldFRpbWUoKTtcbiAgICAgICAgZWFjaChhbmltYXRpb25zLCBmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlZCA9IHRydWU7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlVGltZSA9IHBhdXNlVGltZTtcbiAgICAgICAgICAgIGlmIChhbmltYXRpb24ucGF1c2VDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aaguWBnOaXtueahOWbnuiwg1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5wYXVzZUNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyDorrDlvZXkuIvmmK/lnKjku4DkuYjml7blgJnmmoLlgZznmoRcbiAgICAgICAgdGhpcy5zZXQoJ19wYXVzZScsIHtcbiAgICAgICAgICAgIGlzUGF1c2VkOiB0cnVlLFxuICAgICAgICAgICAgcGF1c2VUaW1lOiBwYXVzZVRpbWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaBouWkjeWKqOeUu1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJlc3VtZUFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICB2YXIgY3VycmVudCA9IHRpbWVsaW5lLmdldFRpbWUoKTtcbiAgICAgICAgdmFyIGFuaW1hdGlvbnMgPSB0aGlzLmdldCgnYW5pbWF0aW9ucycpO1xuICAgICAgICB2YXIgcGF1c2VUaW1lID0gdGhpcy5nZXQoJ19wYXVzZScpLnBhdXNlVGltZTtcbiAgICAgICAgLy8g5LmL5ZCO5pu05paw5bGe5oCn6ZyA6KaB6K6h566X5Yqo55S75bey57uP5omn6KGM55qE5pe26ZW/77yM5aaC5p6c5pqC5YGc5LqG77yM5bCx5oqK5Yid5aeL5pe26Ze06LCD5ZCOXG4gICAgICAgIGVhY2goYW5pbWF0aW9ucywgZnVuY3Rpb24gKGFuaW1hdGlvbikge1xuICAgICAgICAgICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWUgKyAoY3VycmVudCAtIHBhdXNlVGltZSk7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYW5pbWF0aW9uLl9wYXVzZVRpbWUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi5yZXN1bWVDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5yZXN1bWVDYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ19wYXVzZScsIHtcbiAgICAgICAgICAgIGlzUGF1c2VkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpb25zJywgYW5pbWF0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6Kem5Y+R5aeU5omY5LqL5Lu2XG4gICAgICogQHBhcmFtICB7c3RyaW5nfSAgICAgdHlwZSDkuovku7bnsbvlnotcbiAgICAgKiBAcGFyYW0gIHtHcmFwaEV2ZW50fSBldmVudE9iaiDkuovku7blr7nosaFcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5lbWl0RGVsZWdhdGlvbiA9IGZ1bmN0aW9uICh0eXBlLCBldmVudE9iaikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcGF0aHMgPSBldmVudE9iai5wcm9wYWdhdGlvblBhdGg7XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICB2YXIgcmVsYXRpdmVTaGFwZTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLmZyb21TaGFwZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgICAgIHJlbGF0aXZlU2hhcGUgPSBldmVudE9iai50b1NoYXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gcGF0aHNbaV07XG4gICAgICAgICAgICAvLyDmmoLlrprot58gbmFtZSDnu5HlrppcbiAgICAgICAgICAgIHZhciBuYW1lXzEgPSBlbGVtZW50LmdldCgnbmFtZScpO1xuICAgICAgICAgICAgaWYgKG5hbWVfMSkge1xuICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4qiBtb3VzZWVudGVyIOWSjCBtb3VzZWxlYXZlIOeahOWBnOatouWNs+WPr++8jOWboOS4uuWQjumdoueahOmDveaYr+WJjemdoueahCBQYXJlbnRcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgLy8g5Y+q5pyJIGVsZW1lbnQg5pivIEdyb3VwIOaIluiAhSBDYW52YXMg55qE5pe25YCZ77yM5omN6ZyA6KaB5Yik5patIGlzUGFyZW50XG4gICAgICAgICAgICAgICAgKGVsZW1lbnQuaXNHcm91cCgpIHx8IChlbGVtZW50LmlzQ2FudmFzICYmIGVsZW1lbnQuaXNDYW52YXMoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlU2hhcGUgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNQYXJlbnQoZWxlbWVudCwgcmVsYXRpdmVTaGFwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkobmFtZV8xKSkge1xuICAgICAgICAgICAgICAgICAgICBlYWNoKG5hbWVfMSwgZnVuY3Rpb24gKHN1Yk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmVtaXREZWxlZ2F0ZUV2ZW50KGVsZW1lbnQsIHN1Yk5hbWUsIGV2ZW50T2JqKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzXzEuZW1pdERlbGVnYXRlRXZlbnQoZWxlbWVudCwgbmFtZV8xLCBldmVudE9iaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgdGhpc18xID0gdGhpcztcbiAgICAgICAgLy8g6Iez5bCR5pyJ5LiA5Liq5a+56LGh77yM5LiU56ys5LiA5Liq5a+56LGh5Li6IHNoYXBlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMShpKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmVtaXREZWxlZ2F0ZUV2ZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIGV2ZW50T2JqKSB7XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICAvLyDkuovku7blp5TmiZjnmoTlvaLlvI8gbmFtZTp0eXBlXG4gICAgICAgIHZhciBldmVudE5hbWUgPSBuYW1lICsgREVMRUdBVElPTl9TUExJVCArIGV2ZW50T2JqLnR5cGU7XG4gICAgICAgIGlmIChldmVudHNbZXZlbnROYW1lXSB8fCBldmVudHNbV0lMRENBUkRdKSB7XG4gICAgICAgICAgICAvLyDlr7nkuo7pgJrphY3nrKYgKu+8jOS6i+S7tuWQjeensCA9IOWnlOaJmOS6i+S7tuWQjeensFxuICAgICAgICAgICAgZXZlbnRPYmoubmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgICAgIGV2ZW50T2JqLmN1cnJlbnRUYXJnZXQgPSBlbGVtZW50O1xuICAgICAgICAgICAgZXZlbnRPYmouZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuICAgICAgICAgICAgLy8g5bCG5aeU5omY5LqL5Lu255qE55uR5ZCs5a+56LGhIGRlbGVnYXRlT2JqZWN0IOaMgui9veWIsOS6i+S7tuWvueixoeS4ilxuICAgICAgICAgICAgZXZlbnRPYmouZGVsZWdhdGVPYmplY3QgPSBlbGVtZW50LmdldCgnZGVsZWdhdGVPYmplY3QnKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdChldmVudE5hbWUsIGV2ZW50T2JqKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog56e75Yqo5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zbGF0ZVgg5rC05bmz56e75Yqo6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zbGF0ZVkg5Z6C55u056e75Yqo6Led56a7XG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICh0cmFuc2xhdGVYLCB0cmFuc2xhdGVZKSB7XG4gICAgICAgIGlmICh0cmFuc2xhdGVYID09PSB2b2lkIDApIHsgdHJhbnNsYXRlWCA9IDA7IH1cbiAgICAgICAgaWYgKHRyYW5zbGF0ZVkgPT09IHZvaWQgMCkgeyB0cmFuc2xhdGVZID0gMDsgfVxuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZXV0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOenu+WKqOWFg+e0oOWIsOebruagh+S9jee9rlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRYIOebruagh+S9jee9rueahOawtOW5s+WdkOagh1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRYIOebruagh+S9jee9rueahOWeguebtOWdkOagh1xuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHRhcmdldFgsIHRhcmdldFkpIHtcbiAgICAgICAgdmFyIHggPSB0aGlzLmF0dHIoJ3gnKSB8fCAwO1xuICAgICAgICB2YXIgeSA9IHRoaXMuYXR0cigneScpIHx8IDA7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKHRhcmdldFggLSB4LCB0YXJnZXRZIC0geSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog56e75Yqo5YWD57Sg5Yiw55uu5qCH5L2N572u77yM562J5Lu35LqOIG1vdmUg5pa55rOV44CC55Sx5LqOIG1vdmVUbyDnmoTor63kuYnmgKfmm7TlvLrvvIzlm6DmraTlnKjmlofmoaPkuK3mjqjojZDkvb/nlKggbW92ZVRvIOaWueazlVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRYIOebruagh+S9jee9rueahCB4IOi9tOWdkOagh1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRZIOebruagh+S9jee9rueahCB5IOi9tOWdkOagh1xuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5tb3ZlVG8gPSBmdW5jdGlvbiAodGFyZ2V0WCwgdGFyZ2V0WSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb3ZlKHRhcmdldFgsIHRhcmdldFkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog57yp5pS+5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvWCDmsLTlubPnvKnmlL7mr5TkvotcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9ZIOWeguebtOe8qeaUvuavlOS+i1xuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uIChyYXRpb1gsIHJhdGlvWSkge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3MnLCByYXRpb1gsIHJhdGlvWSB8fCByYXRpb1hdXSk7XG4gICAgICAgIHRoaXMuc2V0TWF0cml4KG5ld01hdHJpeCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Lul55S75biD5bem5LiK6KeSICgwLCAwKSDkuLrkuK3lv4Pml4vovazlhYPntKBcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaWFuIOaXi+i9rOinkuW6pijlvKfluqblgLwpXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChyYWRpYW4pIHtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIHZhciBuZXdNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWydyJywgcmFkaWFuXV0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOS7pei1t+Wni+eCueS4uuS4reW/g+aXi+i9rOWFg+e0oFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpYW4g5peL6L2s6KeS5bqmKOW8p+W6puWAvClcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucm90YXRlQXRTdGFydCA9IGZ1bmN0aW9uIChyb3RhdGUpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIHZhciBuZXdNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbXG4gICAgICAgICAgICBbJ3QnLCAteCwgLXldLFxuICAgICAgICAgICAgWydyJywgcm90YXRlXSxcbiAgICAgICAgICAgIFsndCcsIHgsIHldLFxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5zZXRNYXRyaXgobmV3TWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDku6Xku7vmhI/ngrkgKHgsIHkpIOS4uuS4reW/g+aXi+i9rOWFg+e0oFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpYW4g5peL6L2s6KeS5bqmKOW8p+W6puWAvClcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucm90YXRlQXRQb2ludCA9IGZ1bmN0aW9uICh4LCB5LCByb3RhdGUpIHtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIHZhciBuZXdNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbXG4gICAgICAgICAgICBbJ3QnLCAteCwgLXldLFxuICAgICAgICAgICAgWydyJywgcm90YXRlXSxcbiAgICAgICAgICAgIFsndCcsIHgsIHldLFxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5zZXRNYXRyaXgobmV3TWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gRWxlbWVudDtcbn0oQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgRWxlbWVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsZW1lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js\");\n\n\nvar AbstractGroup = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGroup);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2dyb3VwLmpzP2I3ZGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0U7QUFDcEM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxrREFBUztBQUNJLDRFQUFhLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2dyb3VwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJztcbnZhciBBYnN0cmFjdEdyb3VwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBYnN0cmFjdEdyb3VwLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFic3RyYWN0R3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQWJzdHJhY3RHcm91cC5wcm90b3R5cGUuaXNHcm91cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBBYnN0cmFjdEdyb3VwLnByb3RvdHlwZS5pc0VudGl0eUdyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBBYnN0cmFjdEdyb3VwLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsb25lID0gX3N1cGVyLnByb3RvdHlwZS5jbG9uZS5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDojrflj5bmnoTpgKDlh73mlbBcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGNsb25lLmFkZChjaGlsZC5jbG9uZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgfTtcbiAgICByZXR1cm4gQWJzdHJhY3RHcm91cDtcbn0oQ29udGFpbmVyKSk7XG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdEdyb3VwO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JvdXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\");\n\n\n\nvar AbstractShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur, shadowBlur = _a === void 0 ? 0 : _a, _b = attrs.shadowOffsetX, shadowOffsetX = _b === void 0 ? 0 : _b, _c = attrs.shadowOffsetY, shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0], refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(_element__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractShape);\n//# sourceMappingURL=shape.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L3NoYXBlLmpzPzZhMjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRjtBQUNjO0FBQzlDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLEtBQUs7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGlFQUFZO0FBQ3RDLDJCQUEyQixpRUFBWTtBQUN2Qyw2QkFBNkIsaUVBQVk7QUFDekMsOEJBQThCLGlFQUFZO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QixnQkFBZ0IsT0FBTztBQUN2QixnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLGdEQUFPO0FBQ00sNEVBQWEsRUFBQztBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3Qvc2hhcGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBtdWx0aXBseVZlYzIgfSBmcm9tICcuLi91dGlsL21hdHJpeCc7XG52YXIgQWJzdHJhY3RTaGFwZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQWJzdHJhY3RTaGFwZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBYnN0cmFjdFNoYXBlKGNmZykge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuICAgIH1cbiAgICAvLyDmmK/lkKblnKjljIXlm7Tnm5LlhoVcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5faXNJbkJCb3ggPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICB2YXIgYmJveCA9IHRoaXMuZ2V0QkJveCgpO1xuICAgICAgICByZXR1cm4gYmJveC5taW5YIDw9IHJlZlggJiYgYmJveC5tYXhYID49IHJlZlggJiYgYmJveC5taW5ZIDw9IHJlZlkgJiYgYmJveC5tYXhZID49IHJlZlk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKfmm7TmlLnlkI7pnIDopoHlgZrnmoTkuovmg4VcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHBhcmFtIHtTaGFwZUF0dHJzfSB0YXJnZXRBdHRycyDmuLLmn5PnmoTlm77lg4/lsZ7mgKdcbiAgICAgKi9cbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZS5jYWxsKHRoaXMsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgdGhpcy5jbGVhckNhY2hlQkJveCgpO1xuICAgIH07XG4gICAgLy8g6K6h566X5YyF5Zu055uS5pe277yM6ZyA6KaB57yT5a2Y77yM6L+Z5piv5LiA5Liq6auY6aKR55qE5pON5L2cXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuZ2V0QkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJib3ggPSB0aGlzLmNmZy5iYm94O1xuICAgICAgICBpZiAoIWJib3gpIHtcbiAgICAgICAgICAgIGJib3ggPSB0aGlzLmNhbGN1bGF0ZUJCb3goKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdiYm94JywgYmJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJib3g7XG4gICAgfTtcbiAgICAvLyDorqHnrpfnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5JcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5nZXRDYW52YXNCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2FudmFzQkJveCA9IHRoaXMuY2ZnLmNhbnZhc0JCb3g7XG4gICAgICAgIGlmICghY2FudmFzQkJveCkge1xuICAgICAgICAgICAgY2FudmFzQkJveCA9IHRoaXMuY2FsY3VsYXRlQ2FudmFzQkJveCgpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2NhbnZhc0JCb3gnLCBjYW52YXNCQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FudmFzQkJveDtcbiAgICB9O1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmFwcGx5TWF0cml4ID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFwcGx5TWF0cml4LmNhbGwodGhpcywgbWF0cml4KTtcbiAgICAgICAgLy8g5riF55CG5o6J57yT5a2Y55qE5YyF5Zu055uSXG4gICAgICAgIHRoaXMuc2V0KCdjYW52YXNCQm94JywgbnVsbCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDorqHnrpfnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5LvvIzpu5jorqTnrYnlkIzkuo4gYmJveFxuICAgICAqIEByZXR1cm4ge0JCb3h9IOWMheWbtOebklxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmNhbGN1bGF0ZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgdmFyIG1pblggPSBiYm94Lm1pblgsIG1pblkgPSBiYm94Lm1pblksIG1heFggPSBiYm94Lm1heFgsIG1heFkgPSBiYm94Lm1heFk7XG4gICAgICAgIGlmICh0b3RhbE1hdHJpeCkge1xuICAgICAgICAgICAgdmFyIHRvcExlZnQgPSBtdWx0aXBseVZlYzIodG90YWxNYXRyaXgsIFtiYm94Lm1pblgsIGJib3gubWluWV0pO1xuICAgICAgICAgICAgdmFyIHRvcFJpZ2h0ID0gbXVsdGlwbHlWZWMyKHRvdGFsTWF0cml4LCBbYmJveC5tYXhYLCBiYm94Lm1pblldKTtcbiAgICAgICAgICAgIHZhciBib3R0b21MZWZ0ID0gbXVsdGlwbHlWZWMyKHRvdGFsTWF0cml4LCBbYmJveC5taW5YLCBiYm94Lm1heFldKTtcbiAgICAgICAgICAgIHZhciBib3R0b21SaWdodCA9IG11bHRpcGx5VmVjMih0b3RhbE1hdHJpeCwgW2Jib3gubWF4WCwgYmJveC5tYXhZXSk7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4odG9wTGVmdFswXSwgdG9wUmlnaHRbMF0sIGJvdHRvbUxlZnRbMF0sIGJvdHRvbVJpZ2h0WzBdKTtcbiAgICAgICAgICAgIG1heFggPSBNYXRoLm1heCh0b3BMZWZ0WzBdLCB0b3BSaWdodFswXSwgYm90dG9tTGVmdFswXSwgYm90dG9tUmlnaHRbMF0pO1xuICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKHRvcExlZnRbMV0sIHRvcFJpZ2h0WzFdLCBib3R0b21MZWZ0WzFdLCBib3R0b21SaWdodFsxXSk7XG4gICAgICAgICAgICBtYXhZID0gTWF0aC5tYXgodG9wTGVmdFsxXSwgdG9wUmlnaHRbMV0sIGJvdHRvbUxlZnRbMV0sIGJvdHRvbVJpZ2h0WzFdKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICAvLyDlpoLmnpzlrZjlnKggc2hhZG93IOWImeiuoeeulyBzaGFkb3dcbiAgICAgICAgaWYgKGF0dHJzLnNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBhdHRycy5zaGFkb3dCbHVyLCBzaGFkb3dCbHVyID0gX2EgPT09IHZvaWQgMCA/IDAgOiBfYSwgX2IgPSBhdHRycy5zaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRYID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYiwgX2MgPSBhdHRycy5zaGFkb3dPZmZzZXRZLCBzaGFkb3dPZmZzZXRZID0gX2MgPT09IHZvaWQgMCA/IDAgOiBfYztcbiAgICAgICAgICAgIHZhciBzaGFkb3dMZWZ0ID0gbWluWCAtIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRYO1xuICAgICAgICAgICAgdmFyIHNoYWRvd1JpZ2h0ID0gbWF4WCArIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRYO1xuICAgICAgICAgICAgdmFyIHNoYWRvd1RvcCA9IG1pblkgLSBzaGFkb3dCbHVyICsgc2hhZG93T2Zmc2V0WTtcbiAgICAgICAgICAgIHZhciBzaGFkb3dCb3R0b20gPSBtYXhZICsgc2hhZG93Qmx1ciArIHNoYWRvd09mZnNldFk7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgc2hhZG93TGVmdCk7XG4gICAgICAgICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgc2hhZG93UmlnaHQpO1xuICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIHNoYWRvd1RvcCk7XG4gICAgICAgICAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgc2hhZG93Qm90dG9tKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDmuIXnkIbnvJPlrZjnmoQgYmJveFxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmNsZWFyQ2FjaGVCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnYmJveCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnY2FudmFzQkJveCcsIG51bGwpO1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuaXNDbGlwU2hhcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnaXNDbGlwU2hhcGUnKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDkuI3lkIznmoTlm77lvaLoh6rlt7Hlrp7njrDmmK/lkKblnKjlm77lvaLlhoXpg6jnmoTpgLvovpHvvIzopoHliKTmlq3ovrnlkozloavlhYXljLrln59cbiAgICAgKiBAcGFyYW0gIHtudW1iZXJ9ICByZWZYIOebuOWvueS6juWbvuW9oueahOWdkOaghyB4XG4gICAgICogQHBhcmFtICB7bnVtYmVyfSAgcmVmWSDnm7jlr7nkuo7lm77lvaLnmoTlnZDmoIcgWVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IOeCueaYr+WQpuWcqOWbvuW9ouWGhemDqFxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmlzSW5TaGFwZSA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuS7heS7heS9v+eUqCBCQm94IOajgOa1i+WwseWPr+S7peWIpOWumuaLvuWPluWIsOWbvuW9olxuICAgICAqIOm7mOiupOaYryBmYWxzZe+8jOS9huaYr+acieS6m+WbvuW9ouS+i+WmgiBpbWFnZeOAgW1hcmtlciDnrYnpg73lj6/nm7TmjqXkvb/nlKggQkJveCDnmoTmo4DmtYvogIzkuI3pnIDopoHkvb/nlKjlm77lvaLmi77lj5ZcbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufSDku4Xku4Xkvb/nlKggQkJveCDov5vooYzmi77lj5ZcbiAgICAgKi9cbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5pc09ubHlIaXRCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8vIOS4jeWQjOeahCBTaGFwZSDlkIToh6rlrp7njrBcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5pc0hpdCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHZhciBzdGFydEFycm93U2hhcGUgPSB0aGlzLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgICAgIHZhciBlbmRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIHZlYyA9IFt4LCB5LCAxXTtcbiAgICAgICAgdmVjID0gdGhpcy5pbnZlcnRGcm9tTWF0cml4KHZlYyk7XG4gICAgICAgIHZhciByZWZYID0gdmVjWzBdLCByZWZZID0gdmVjWzFdO1xuICAgICAgICB2YXIgaW5CQm94ID0gdGhpcy5faXNJbkJCb3gocmVmWCwgcmVmWSk7XG4gICAgICAgIC8vIOi3s+i/h+WbvuW9oueahOaLvuWPlu+8jOWcqOafkOS6m+WbvuW9ouS4reWPr+S7peecgeeVpeS4gOWAjeeahOajgOa1i+aIkOacrFxuICAgICAgICBpZiAodGhpcy5pc09ubHlIaXRCb3goKSkge1xuICAgICAgICAgICAgcmV0dXJuIGluQkJveDtcbiAgICAgICAgfVxuICAgICAgICAvLyDooqvoo4Hlh4/mjonnmoTlkozkuI3lnKjljIXlm7Tnm5LlhoXnmoTkuI3ov5vooYzorqHnrpdcbiAgICAgICAgaWYgKGluQkJveCAmJiAhdGhpcy5pc0NsaXBwZWQocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgIC8vIOWvueWbvuW9oui/m+ihjOaLvuWPluWIpOaWrVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNJblNoYXBlKHJlZlgsIHJlZlkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDlr7notbflp4vnrq3lpLTov5vooYzmi77lj5bliKTmlq1cbiAgICAgICAgICAgIGlmIChzdGFydEFycm93U2hhcGUgJiYgc3RhcnRBcnJvd1NoYXBlLmlzSGl0KHJlZlgsIHJlZlkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDlr7nnu5PmnZ/nrq3lpLTov5vooYzmi77lj5bliKTmlq1cbiAgICAgICAgICAgIGlmIChlbmRBcnJvd1NoYXBlICYmIGVuZEFycm93U2hhcGUuaXNIaXQocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICByZXR1cm4gQWJzdHJhY3RTaGFwZTtcbn0oRWxlbWVudCkpO1xuZXhwb3J0IGRlZmF1bHQgQWJzdHJhY3RTaGFwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYXBlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/index.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-ease */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js\");\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/color */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js\");\n\n\n\n // 目前整体动画只需要数值和数组的差值计算\n\n\nvar IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape, animation, ratio) {\n var cProps = {}; // 此刻属性\n var fromAttrs = animation.fromAttrs, toAttrs = animation.toAttrs;\n if (shape.destroyed) {\n return;\n }\n var interf; // 差值函数\n for (var k in toAttrs) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEqual\"])(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n var toPath = toAttrs[k];\n var fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]); // 终点状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]); // 起始状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"fillPathByDiff\"](fromPath, toPath);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n }\n else if (!animation.pathFormatted) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (var i = 0; i < toPath.length; i++) {\n var toPathPoint = toPath[i];\n var fromPathPoint = fromPath[i];\n var cPathPoint = [];\n for (var j = 0; j < toPathPoint.length; j++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(toPathPoint[j]) && fromPathPoint && Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(fromPathPoint[j])) {\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n }\n else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n }\n else if (k === 'matrix') {\n /*\n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n var matrixFn = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolateArray\"])(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n var currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n }\n else if (Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isColorProp\"])(k) && Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isGradientColor\"])(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n }\n else if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape, animation, elapsed) {\n var startTime = animation.startTime, delay = animation.delay;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n var ratio;\n var duration = animation.duration;\n var easing = animation.easing;\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = (elapsed % duration) / duration;\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n }\n else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n var attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n }\n else {\n _update(shape, animation, ratio);\n }\n return false;\n}\nvar Timeline = /** @class */ (function () {\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n function Timeline(canvas) {\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n this.animators = [];\n /**\n * 当前时间\n * @type {number}\n */\n this.current = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n this.timer = null;\n this.canvas = canvas;\n }\n /**\n * 初始化定时器\n */\n Timeline.prototype.initTimer = function () {\n var _this = this;\n var isFinished = false;\n var shape;\n var animations;\n var animation;\n this.timer = d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"](function (elapsed) {\n _this.current = elapsed;\n if (_this.animators.length > 0) {\n for (var i = _this.animators.length - 1; i >= 0; i--) {\n shape = _this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n _this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (var j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n _this.removeAnimator(i);\n }\n }\n var autoDraw = _this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n _this.canvas.draw();\n }\n }\n });\n };\n /**\n * 增加动画元素\n */\n Timeline.prototype.addAnimator = function (shape) {\n this.animators.push(shape);\n };\n /**\n * 移除动画元素\n */\n Timeline.prototype.removeAnimator = function (index) {\n this.animators.splice(index, 1);\n };\n /**\n * 是否有动画在执行\n */\n Timeline.prototype.isAnimating = function () {\n return !!this.animators.length;\n };\n /**\n * 停止定时器\n */\n Timeline.prototype.stop = function () {\n if (this.timer) {\n this.timer.stop();\n }\n };\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n Timeline.prototype.stopAllAnimations = function (toEnd) {\n if (toEnd === void 0) { toEnd = true; }\n this.animators.forEach(function (animator) {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n };\n /**\n * 获取当前时间\n */\n Timeline.prototype.getTime = function () {\n return this.current;\n };\n return Timeline;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Timeline);\n//# sourceMappingURL=timeline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2FuaW1hdGUvdGltZWxpbmUuanM/NTExOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRDtBQUN2QjtBQUNGO0FBQzZCO0FBQ3RCO0FBQ29CO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFVBQVU7QUFDckIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYSwwREFBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBd0IsYUFBYTtBQUNsRSwrQkFBK0IsMERBQXdCLGVBQWU7QUFDdEUsK0JBQStCLHlEQUF1QjtBQUN0RCwrQkFBK0IscURBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDBEQUF3QjtBQUNyRCwrQkFBK0IsMERBQXdCO0FBQ3ZELCtCQUErQixxREFBbUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixtQkFBbUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHdCQUF3QjtBQUMzRCw0QkFBNEIsMkRBQVEscUNBQXFDLDJEQUFRO0FBQ2pGLHFDQUFxQyxrRUFBVztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVFQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsK0RBQVcsT0FBTyxtRUFBZTtBQUN0RDtBQUNBO0FBQ0Esc0JBQXNCLDZEQUFVO0FBQ2hDO0FBQ0EseUJBQXlCLGtFQUFXO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsT0FBTztBQUNsQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9DQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0NBQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw4Q0FBYTtBQUNsQztBQUNBO0FBQ0Esd0RBQXdELFFBQVE7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxRQUFRO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQSwrQkFBK0IsY0FBYztBQUM3QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2FuaW1hdGUvdGltZWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VxdWFsLCBpc051bWJlciwgaXNGdW5jdGlvbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0ICogYXMgZDNUaW1lciBmcm9tICdkMy10aW1lcic7XG5pbXBvcnQgKiBhcyBkM0Vhc2UgZnJvbSAnZDMtZWFzZSc7XG5pbXBvcnQgeyBpbnRlcnBvbGF0ZSwgaW50ZXJwb2xhdGVBcnJheSB9IGZyb20gJ2QzLWludGVycG9sYXRlJzsgLy8g55uu5YmN5pW05L2T5Yqo55S75Y+q6ZyA6KaB5pWw5YC85ZKM5pWw57uE55qE5beu5YC86K6h566XXG5pbXBvcnQgKiBhcyBQYXRoVXRpbCBmcm9tICcuLi91dGlsL3BhdGgnO1xuaW1wb3J0IHsgaXNDb2xvclByb3AsIGlzR3JhZGllbnRDb2xvciB9IGZyb20gJy4uL3V0aWwvY29sb3InO1xudmFyIElERU5USVRZX01BVFJJWCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbi8qKlxuICog5L2/55SoIHJhdGlvIOi/m+ihjOaPkuWAvOiuoeeul+adpeabtOaWsOWxnuaAp1xuICogQHBhcmFtIHtJRWxlbWVudH0gIHNoYXBlICAgIOWFg+e0oFxuICogQHBhcmFtIHtBbmltYXRpb259IGFuaW1hdGlvbiDliqjnlLtcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICByYXRpbyAgICDmr5TkvotcbiAqIEByZXR1cm4ge2Jvb2xlYW59ICDliqjnlLvmmK/lkKbmiafooYzlrozmiJBcbiAqL1xuZnVuY3Rpb24gX3VwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCByYXRpbykge1xuICAgIHZhciBjUHJvcHMgPSB7fTsgLy8g5q2k5Yi75bGe5oCnXG4gICAgdmFyIGZyb21BdHRycyA9IGFuaW1hdGlvbi5mcm9tQXR0cnMsIHRvQXR0cnMgPSBhbmltYXRpb24udG9BdHRycztcbiAgICBpZiAoc2hhcGUuZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGludGVyZjsgLy8gIOW3ruWAvOWHveaVsFxuICAgIGZvciAodmFyIGsgaW4gdG9BdHRycykge1xuICAgICAgICBpZiAoIWlzRXF1YWwoZnJvbUF0dHJzW2tdLCB0b0F0dHJzW2tdKSkge1xuICAgICAgICAgICAgaWYgKGsgPT09ICdwYXRoJykge1xuICAgICAgICAgICAgICAgIHZhciB0b1BhdGggPSB0b0F0dHJzW2tdO1xuICAgICAgICAgICAgICAgIHZhciBmcm9tUGF0aCA9IGZyb21BdHRyc1trXTtcbiAgICAgICAgICAgICAgICBpZiAodG9QYXRoLmxlbmd0aCA+IGZyb21QYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0b1BhdGggPSBQYXRoVXRpbC5wYXJzZVBhdGhTdHJpbmcodG9BdHRyc1trXSk7IC8vIOe7iOeCueeKtuaAgVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyhmcm9tQXR0cnNba10pOyAvLyDotbflp4vnirbmgIFcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5maWxsUGF0aEJ5RGlmZihmcm9tUGF0aCwgdG9QYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5mb3JtYXRQYXRoKGZyb21QYXRoLCB0b1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24uZnJvbUF0dHJzLnBhdGggPSBmcm9tUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnRvQXR0cnMucGF0aCA9IHRvUGF0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWFuaW1hdGlvbi5wYXRoRm9ybWF0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyh0b0F0dHJzW2tdKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5wYXJzZVBhdGhTdHJpbmcoZnJvbUF0dHJzW2tdKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5mb3JtYXRQYXRoKGZyb21QYXRoLCB0b1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24uZnJvbUF0dHJzLnBhdGggPSBmcm9tUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnRvQXR0cnMucGF0aCA9IHRvUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnBhdGhGb3JtYXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdG9QYXRoUG9pbnQgPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIHZhciBmcm9tUGF0aFBvaW50ID0gZnJvbVBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIHZhciBjUGF0aFBvaW50ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdG9QYXRoUG9pbnQubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcih0b1BhdGhQb2ludFtqXSkgJiYgZnJvbVBhdGhQb2ludCAmJiBpc051bWJlcihmcm9tUGF0aFBvaW50W2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZiA9IGludGVycG9sYXRlKGZyb21QYXRoUG9pbnRbal0sIHRvUGF0aFBvaW50W2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjUGF0aFBvaW50LnB1c2goaW50ZXJmKHJhdGlvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjUGF0aFBvaW50LnB1c2godG9QYXRoUG9pbnRbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNQcm9wc1trXS5wdXNoKGNQYXRoUG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGsgPT09ICdtYXRyaXgnKSB7XG4gICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAg5a+555+p6Zi16L+b6KGM5o+S5YC85pe277yM6ZyA6KaB5L+d6K+B55+p6Zi15LiN5Li656m677yM5Li656m65YiZ5L2/55So5Y2V5L2N55+p6Zi1XG4gICAgICAgICAgICAgICAgIFRPRE86IOS6jOe7tOWSjOS4iee7tOWcuuaZr+S4i+WNleS9jeefqemYteS4jeWQjO+8jOS5i+WQjiBXZWJHTCDniYjpnIDopoHlgZrov5vkuIDmraXlpITnkIZcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB2YXIgbWF0cml4Rm4gPSBpbnRlcnBvbGF0ZUFycmF5KGZyb21BdHRyc1trXSB8fCBJREVOVElUWV9NQVRSSVgsIHRvQXR0cnNba10gfHwgSURFTlRJVFlfTUFUUklYKTtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudE1hdHJpeCA9IG1hdHJpeEZuKHJhdGlvKTtcbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSBjdXJyZW50TWF0cml4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNDb2xvclByb3AoaykgJiYgaXNHcmFkaWVudENvbG9yKHRvQXR0cnNba10pKSB7XG4gICAgICAgICAgICAgICAgY1Byb3BzW2tdID0gdG9BdHRyc1trXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0Z1bmN0aW9uKHRvQXR0cnNba10pKSB7XG4gICAgICAgICAgICAgICAgLy8g6Z2e5Ye95pWw57G75Z6L55qE5YC85omN6IO95YGa5o+S5YC8XG4gICAgICAgICAgICAgICAgaW50ZXJmID0gaW50ZXJwb2xhdGUoZnJvbUF0dHJzW2tdLCB0b0F0dHJzW2tdKTtcbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSBpbnRlcmYocmF0aW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNoYXBlLmF0dHIoY1Byb3BzKTtcbn1cbi8qKlxuICog5qC55o2u6Ieq5a6a5LmJ5bin5Yqo55S75Ye95pWwIG9uRnJhbWUg5p2l5pu05paw5bGe5oCnXG4gKiBAcGFyYW0ge0lFbGVtZW50fSAgc2hhcGUgICAg5YWD57SgXG4gKiBAcGFyYW0ge0FuaW1hdGlvbn0gYW5pbWF0aW9uIOWKqOeUu1xuICogQHBhcmFtIHtudW1iZXJ9ICAgIGVsYXBzZWQgIOWKqOeUu+aJp+ihjOaXtumXtCjmr6vnp5IpXG4gKiBAcmV0dXJuIHtib29sZWFufSAg5Yqo55S75piv5ZCm5omn6KGM5a6M5oiQXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCBlbGFwc2VkKSB7XG4gICAgdmFyIHN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWUsIGRlbGF5ID0gYW5pbWF0aW9uLmRlbGF5O1xuICAgIC8vIOWmguaenOi/mOayoeacieW8gOWni+aJp+ihjOaIluaaguWBnO+8jOWFiOS4jeabtOaWsFxuICAgIGlmIChlbGFwc2VkIDwgc3RhcnRUaW1lICsgZGVsYXkgfHwgYW5pbWF0aW9uLl9wYXVzZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcmF0aW87XG4gICAgdmFyIGR1cmF0aW9uID0gYW5pbWF0aW9uLmR1cmF0aW9uO1xuICAgIHZhciBlYXNpbmcgPSBhbmltYXRpb24uZWFzaW5nO1xuICAgIC8vIOW3suaJp+ihjOaXtumXtFxuICAgIGVsYXBzZWQgPSBlbGFwc2VkIC0gc3RhcnRUaW1lIC0gYW5pbWF0aW9uLmRlbGF5O1xuICAgIGlmIChhbmltYXRpb24ucmVwZWF0KSB7XG4gICAgICAgIC8vIOWmguaenOWKqOeUu+mHjeWkjeaJp+ihjO+8jOWImSBlbGFwc2VkID4gZHVyYXRpb27vvIzorqHnrpcgcmF0aW8g5pe26ZyA5Y+W5qihXG4gICAgICAgIHJhdGlvID0gKGVsYXBzZWQgJSBkdXJhdGlvbikgLyBkdXJhdGlvbjtcbiAgICAgICAgcmF0aW8gPSBkM0Vhc2VbZWFzaW5nXShyYXRpbyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByYXRpbyA9IGVsYXBzZWQgLyBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHJhdGlvIDwgMSkge1xuICAgICAgICAgICAgLy8g5Yqo55S75pyq5omn6KGM5a6MXG4gICAgICAgICAgICByYXRpbyA9IGQzRWFzZVtlYXNpbmddKHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWKqOeUu+W3suaJp+ihjOWujFxuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi5vbkZyYW1lKSB7XG4gICAgICAgICAgICAgICAgc2hhcGUuYXR0cihhbmltYXRpb24ub25GcmFtZSgxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaGFwZS5hdHRyKGFuaW1hdGlvbi50b0F0dHJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChhbmltYXRpb24ub25GcmFtZSkge1xuICAgICAgICB2YXIgYXR0cnMgPSBhbmltYXRpb24ub25GcmFtZShyYXRpbyk7XG4gICAgICAgIHNoYXBlLmF0dHIoYXR0cnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgX3VwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCByYXRpbyk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbnZhciBUaW1lbGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiDml7bpl7TovbTmnoTpgKDlh73mlbDvvIzkvp3otZbkuo7nlLvluINcbiAgICAgKiBAcGFyYW0ge31cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBUaW1lbGluZShjYW52YXMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaJp+ihjOWKqOeUu+eahOWFg+e0oOWIl+ihqFxuICAgICAgICAgKiBAdHlwZSB7SUVsZW1lbnRbXX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYW5pbWF0b3JzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlvZPliY3ml7bpl7RcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3VycmVudCA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlrprml7blmahcbiAgICAgICAgICogQHR5cGUge2QzVGltZXIuVGltZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWIneWni+WMluWumuaXtuWZqFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5pbml0VGltZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgIHZhciBzaGFwZTtcbiAgICAgICAgdmFyIGFuaW1hdGlvbnM7XG4gICAgICAgIHZhciBhbmltYXRpb247XG4gICAgICAgIHRoaXMudGltZXIgPSBkM1RpbWVyLnRpbWVyKGZ1bmN0aW9uIChlbGFwc2VkKSB7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50ID0gZWxhcHNlZDtcbiAgICAgICAgICAgIGlmIChfdGhpcy5hbmltYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBfdGhpcy5hbmltYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBfdGhpcy5hbmltYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGFwZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOW3sue7j+iiq+mUgOavge+8jOebtOaOpeenu+WHuumYn+WIl1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQW5pbWF0b3IoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmlzQW5pbWF0ZVBhdXNlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25zID0gc2hhcGUuZ2V0KCdhbmltYXRpb25zJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gYW5pbWF0aW9ucy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IHVwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCBlbGFwc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25zLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uLmNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24uY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbW92ZUFuaW1hdG9yKGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBhdXRvRHJhdyA9IF90aGlzLmNhbnZhcy5nZXQoJ2F1dG9EcmF3Jyk7XG4gICAgICAgICAgICAgICAgLy8g6Z2e6Ieq5Yqo5riy5p+T5qih5byP5LiL77yM5omL5Yqo6LCD55SoIGNhbnZhcy5kcmF3KCkg6YeN5paw5riy5p+TXG4gICAgICAgICAgICAgICAgaWYgKCFhdXRvRHJhdykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5jYW52YXMuZHJhdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlop7liqDliqjnlLvlhYPntKBcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuYWRkQW5pbWF0b3IgPSBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgdGhpcy5hbmltYXRvcnMucHVzaChzaGFwZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vpmaTliqjnlLvlhYPntKBcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUucmVtb3ZlQW5pbWF0b3IgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdGhpcy5hbmltYXRvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuacieWKqOeUu+WcqOaJp+ihjFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5pc0FuaW1hdGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hbmltYXRvcnMubGVuZ3RoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5YGc5q2i5a6a5pe25ZmoXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog5YGc5q2i5pe26Ze06L205LiK5omA5pyJ5YWD57Sg55qE5Yqo55S777yM5bm2572u56m65Yqo55S75YWD57Sg5YiX6KGoXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0b0VuZCDmmK/lkKbliLDliqjnlLvnmoTmnIDnu4jnirbmgIHvvIznlKjmnaXpgI/kvKDnu5nliqjnlLvlhYPntKDnmoQgc3RvcEFuaW1hdGUg5pa55rOVXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLnN0b3BBbGxBbmltYXRpb25zID0gZnVuY3Rpb24gKHRvRW5kKSB7XG4gICAgICAgIGlmICh0b0VuZCA9PT0gdm9pZCAwKSB7IHRvRW5kID0gdHJ1ZTsgfVxuICAgICAgICB0aGlzLmFuaW1hdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChhbmltYXRvcikge1xuICAgICAgICAgICAgYW5pbWF0b3Iuc3RvcEFuaW1hdGUodG9FbmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hbmltYXRvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jYW52YXMuZHJhdygpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W5b2T5YmN5pe26Ze0XG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLmdldFRpbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gVGltZWxpbmU7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgVGltZWxpbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lbGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var _a = shape.attr(), x = _a.x, y = _a.y, r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n});\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvY2lyY2xlLmpzPzA4NTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBfYSA9IHNoYXBlLmF0dHIoKSwgeCA9IF9hLngsIHkgPSBfYS55LCByID0gX2EucjtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4IC0gcixcbiAgICAgICAgeTogeSAtIHIsXG4gICAgICAgIHdpZHRoOiByICogMixcbiAgICAgICAgaGVpZ2h0OiByICogMixcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2lyY2xlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, rx = attrs.rx, ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvZWxsaXBzZS5qcz9hNDBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueSwgcnggPSBhdHRycy5yeCwgcnkgPSBhdHRycy5yeTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4IC0gcngsXG4gICAgICAgIHk6IHkgLSByeSxcbiAgICAgICAgd2lkdGg6IHJ4ICogMixcbiAgICAgICAgaGVpZ2h0OiByeSAqIDIsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsbGlwc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js ***! \*************************************************************************/ /*! exports provided: getBBoxMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_0__[\"getMethod\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js\");\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js\");\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js\");\n\n\n\n\n\n\n\n\n\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('rect', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('image', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]); // image 使用 rect 的包围盒计算\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('circle', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('marker', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]); // marker 使用 circle 的计算方案\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polyline', _polyline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polygon', _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('text', _text__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('path', _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('line', _line__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('ellipse', _ellipse__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvaW5kZXguanM/ZTM0ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUQ7QUFDdkI7QUFDSTtBQUNJO0FBQ0Y7QUFDTjtBQUNBO0FBQ0E7QUFDTTtBQUNoQywwREFBUSxTQUFTLDZDQUFJO0FBQ3JCLDBEQUFRLFVBQVUsNkNBQUksRUFBRTtBQUN4QiwwREFBUSxXQUFXLCtDQUFNO0FBQ3pCLDBEQUFRLFdBQVcsK0NBQU0sRUFBRTtBQUMzQiwwREFBUSxhQUFhLGlEQUFRO0FBQzdCLDBEQUFRLFlBQVksZ0RBQU87QUFDM0IsMERBQVEsU0FBUyw2Q0FBSTtBQUNyQiwwREFBUSxTQUFTLDZDQUFJO0FBQ3JCLDBEQUFRLFNBQVMsNkNBQUk7QUFDckIsMERBQVEsWUFBWSxnREFBTztBQUNXO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXIsIGdldE1ldGhvZCB9IGZyb20gJy4vcmVnaXN0ZXInO1xuaW1wb3J0IHJlY3QgZnJvbSAnLi9yZWN0JztcbmltcG9ydCBjaXJjbGUgZnJvbSAnLi9jaXJjbGUnO1xuaW1wb3J0IHBvbHlsaW5lIGZyb20gJy4vcG9seWxpbmUnO1xuaW1wb3J0IHBvbHlnb24gZnJvbSAnLi9wb2x5Z29uJztcbmltcG9ydCB0ZXh0IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgcGF0aCBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IGxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJy4vZWxsaXBzZSc7XG5yZWdpc3RlcigncmVjdCcsIHJlY3QpO1xucmVnaXN0ZXIoJ2ltYWdlJywgcmVjdCk7IC8vIGltYWdlIOS9v+eUqCByZWN0IOeahOWMheWbtOebkuiuoeeul1xucmVnaXN0ZXIoJ2NpcmNsZScsIGNpcmNsZSk7XG5yZWdpc3RlcignbWFya2VyJywgY2lyY2xlKTsgLy8gbWFya2VyIOS9v+eUqCBjaXJjbGUg55qE6K6h566X5pa55qGIXG5yZWdpc3RlcigncG9seWxpbmUnLCBwb2x5bGluZSk7XG5yZWdpc3RlcigncG9seWdvbicsIHBvbHlnb24pO1xucmVnaXN0ZXIoJ3RleHQnLCB0ZXh0KTtcbnJlZ2lzdGVyKCdwYXRoJywgcGF0aCk7XG5yZWdpc3RlcignbGluZScsIGxpbmUpO1xucmVnaXN0ZXIoJ2VsbGlwc2UnLCBlbGxpcHNlKTtcbmV4cG9ydCB7IGdldE1ldGhvZCBhcyBnZXRCQm94TWV0aG9kIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvbGluZS5qcz9iYjA1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBd0M7QUFDekI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDREQUFjO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vYmJveC9saW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2VBcnJvd0JCb3ggfSBmcm9tICcuL3V0aWwnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciB4MSA9IGF0dHJzLngxLCB5MSA9IGF0dHJzLnkxLCB4MiA9IGF0dHJzLngyLCB5MiA9IGF0dHJzLnkyO1xuICAgIHZhciBtaW5YID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgICB2YXIgbWF4WCA9IE1hdGgubWF4KHgxLCB4Mik7XG4gICAgdmFyIG1pblkgPSBNYXRoLm1pbih5MSwgeTIpO1xuICAgIHZhciBtYXhZID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgICB2YXIgYmJveCA9IHtcbiAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgbWF4WTogbWF4WSxcbiAgICB9O1xuICAgIGJib3ggPSBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICB5OiBiYm94Lm1pblksXG4gICAgICAgIHdpZHRoOiBiYm94Lm1heFggLSBiYm94Lm1pblgsXG4gICAgICAgIGhlaWdodDogYmJveC5tYXhZIC0gYmJveC5taW5ZLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\");\n\n\n\n\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Quad\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Cubic\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Arc\"].box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n xArr = xArr.filter(function (item) { return !Number.isNaN(item); });\n yArr = yArr.filter(function (item) { return !Number.isNaN(item); });\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(yArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(xArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n }\n else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n }\n else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint, currentPoint = segment.currentPoint, nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumberEqual\"])(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var path = attrs.path, stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"path2Segments\"])(path);\n var _a = getPathBox(segments, lineWidth), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcGF0aC5qcz9hN2EyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkY7QUFDM0M7QUFDSztBQUNiO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGlEQUFRO0FBQzlCO0FBQ0E7QUFDQSxzQkFBc0Isa0RBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGdEQUFjO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsNEJBQTRCLEVBQUU7QUFDdEUsd0NBQXdDLDRCQUE0QixFQUFFO0FBQ3RFLGVBQWUsc0RBQUc7QUFDbEIsZUFBZSxzREFBRztBQUNsQixlQUFlLHNEQUFHO0FBQ2xCLGVBQWUsc0RBQUc7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw4QkFBOEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELGdFQUFhO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsNENBQTRDLHFFQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0REFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1YWQgYXMgUXVhZFV0aWwsIEN1YmljIGFzIEN1YmljVXRpbCwgQXJjIGFzIEVsbGlwc2VBcmNVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IHBhdGgyU2VnbWVudHMgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgaXNOdW1iZXJFcXVhbCwgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IG1lcmdlQXJyb3dCQm94IH0gZnJvbSAnLi91dGlsJztcbmZ1bmN0aW9uIGdldFBhdGhCb3goc2VnbWVudHMsIGxpbmVXaWR0aCkge1xuICAgIHZhciB4QXJyID0gW107XG4gICAgdmFyIHlBcnIgPSBbXTtcbiAgICB2YXIgc2VnbWVudHNXaXRoQW5nbGUgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgICAgIHZhciBjdXJyZW50UG9pbnQgPSBzZWdtZW50LmN1cnJlbnRQb2ludCwgcGFyYW1zID0gc2VnbWVudC5wYXJhbXMsIHByZVBvaW50ID0gc2VnbWVudC5wcmVQb2ludDtcbiAgICAgICAgdmFyIGJveCA9IHZvaWQgMDtcbiAgICAgICAgc3dpdGNoIChzZWdtZW50LmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGJveCA9IFF1YWRVdGlsLmJveChwcmVQb2ludFswXSwgcHJlUG9pbnRbMV0sIHBhcmFtc1sxXSwgcGFyYW1zWzJdLCBwYXJhbXNbM10sIHBhcmFtc1s0XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBib3ggPSBDdWJpY1V0aWwuYm94KHByZVBvaW50WzBdLCBwcmVQb2ludFsxXSwgcGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSwgcGFyYW1zWzRdLCBwYXJhbXNbNV0sIHBhcmFtc1s2XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICB2YXIgYXJjUGFyYW1zID0gc2VnbWVudC5hcmNQYXJhbXM7XG4gICAgICAgICAgICAgICAgYm94ID0gRWxsaXBzZUFyY1V0aWwuYm94KGFyY1BhcmFtcy5jeCwgYXJjUGFyYW1zLmN5LCBhcmNQYXJhbXMucngsIGFyY1BhcmFtcy5yeSwgYXJjUGFyYW1zLnhSb3RhdGlvbiwgYXJjUGFyYW1zLnN0YXJ0QW5nbGUsIGFyY1BhcmFtcy5lbmRBbmdsZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHhBcnIucHVzaChjdXJyZW50UG9pbnRbMF0pO1xuICAgICAgICAgICAgICAgIHlBcnIucHVzaChjdXJyZW50UG9pbnRbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3gpIHtcbiAgICAgICAgICAgIHNlZ21lbnQuYm94ID0gYm94O1xuICAgICAgICAgICAgeEFyci5wdXNoKGJveC54LCBib3gueCArIGJveC53aWR0aCk7XG4gICAgICAgICAgICB5QXJyLnB1c2goYm94LnksIGJveC55ICsgYm94LmhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVXaWR0aCAmJiAoc2VnbWVudC5jb21tYW5kID09PSAnTCcgfHwgc2VnbWVudC5jb21tYW5kID09PSAnTScpICYmIHNlZ21lbnQucHJlUG9pbnQgJiYgc2VnbWVudC5uZXh0UG9pbnQpIHtcbiAgICAgICAgICAgIHNlZ21lbnRzV2l0aEFuZ2xlLnB1c2goc2VnbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gYmJveCBjYWxjdWxhdGlvbiBzaG91bGQgaWdub3JlIE5hTiBmb3IgcGF0aCBhdHRyaWJ1dGVcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvMjEwXG4gICAgeEFyciA9IHhBcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAhTnVtYmVyLmlzTmFOKGl0ZW0pOyB9KTtcbiAgICB5QXJyID0geUFyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuICFOdW1iZXIuaXNOYU4oaXRlbSk7IH0pO1xuICAgIHZhciBtaW5YID0gbWluKHhBcnIpO1xuICAgIHZhciBtaW5ZID0gbWluKHlBcnIpO1xuICAgIHZhciBtYXhYID0gbWF4KHhBcnIpO1xuICAgIHZhciBtYXhZID0gbWF4KHlBcnIpO1xuICAgIGlmIChzZWdtZW50c1dpdGhBbmdsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50c1dpdGhBbmdsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzV2l0aEFuZ2xlW2ldO1xuICAgICAgICB2YXIgY3VycmVudFBvaW50ID0gc2VnbWVudC5jdXJyZW50UG9pbnQ7XG4gICAgICAgIHZhciBleHRyYSA9IHZvaWQgMDtcbiAgICAgICAgaWYgKGN1cnJlbnRQb2ludFswXSA9PT0gbWluWCkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtaW5YID0gbWluWCAtIGV4dHJhLnhFeHRyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50UG9pbnRbMF0gPT09IG1heFgpIHtcbiAgICAgICAgICAgIGV4dHJhID0gZ2V0RXh0cmFGcm9tU2VnbWVudFdpdGhBbmdsZShzZWdtZW50LCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgbWF4WCA9IG1heFggKyBleHRyYS54RXh0cmE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRQb2ludFsxXSA9PT0gbWluWSkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtaW5ZID0gbWluWSAtIGV4dHJhLnlFeHRyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50UG9pbnRbMV0gPT09IG1heFkpIHtcbiAgICAgICAgICAgIGV4dHJhID0gZ2V0RXh0cmFGcm9tU2VnbWVudFdpdGhBbmdsZShzZWdtZW50LCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgbWF4WSA9IG1heFkgKyBleHRyYS55RXh0cmE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogbWluWCxcbiAgICAgICAgeTogbWluWSxcbiAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCkge1xuICAgIHZhciBwcmVQb2ludCA9IHNlZ21lbnQucHJlUG9pbnQsIGN1cnJlbnRQb2ludCA9IHNlZ21lbnQuY3VycmVudFBvaW50LCBuZXh0UG9pbnQgPSBzZWdtZW50Lm5leHRQb2ludDtcbiAgICB2YXIgY3VycmVudEFuZFByZSA9IE1hdGgucG93KGN1cnJlbnRQb2ludFswXSAtIHByZVBvaW50WzBdLCAyKSArIE1hdGgucG93KGN1cnJlbnRQb2ludFsxXSAtIHByZVBvaW50WzFdLCAyKTtcbiAgICB2YXIgY3VycmVudEFuZE5leHQgPSBNYXRoLnBvdyhjdXJyZW50UG9pbnRbMF0gLSBuZXh0UG9pbnRbMF0sIDIpICsgTWF0aC5wb3coY3VycmVudFBvaW50WzFdIC0gbmV4dFBvaW50WzFdLCAyKTtcbiAgICB2YXIgcHJlQW5kTmV4dCA9IE1hdGgucG93KHByZVBvaW50WzBdIC0gbmV4dFBvaW50WzBdLCAyKSArIE1hdGgucG93KHByZVBvaW50WzFdIC0gbmV4dFBvaW50WzFdLCAyKTtcbiAgICAvLyDku6UgY3VycmVudFBvaW50IOS4uumhtueCueeahOWkueinklxuICAgIHZhciBjdXJyZW50QW5nbGUgPSBNYXRoLmFjb3MoKGN1cnJlbnRBbmRQcmUgKyBjdXJyZW50QW5kTmV4dCAtIHByZUFuZE5leHQpIC8gKDIgKiBNYXRoLnNxcnQoY3VycmVudEFuZFByZSkgKiBNYXRoLnNxcnQoY3VycmVudEFuZE5leHQpKSk7XG4gICAgLy8g5aS56KeS5Li656m644CBIDAg5oiWIFBJIOaXtu+8jOS4jemcgOimgeiuoeeul+WkueinkuWkhOeahOmineWkluWuveW6plxuICAgIC8vIOazqOaEjzog55Sx5LqO6K6h566X57K+5bqm6Zeu6aKY77yM5aS56KeS5Li6IDAg55qE5oOF5Ya16K6h566X5Ye65p2l55qE6KeS5bqm5Y+v6IO95piv5LiA5Liq5b6I5bCP55qE5YC877yM6L+Y6ZyA6KaB5Yik5pat5YW25LiOIDAg5piv5ZCm6L+R5Ly855u4562JXG4gICAgaWYgKCFjdXJyZW50QW5nbGUgfHwgTWF0aC5zaW4oY3VycmVudEFuZ2xlKSA9PT0gMCB8fCBpc051bWJlckVxdWFsKGN1cnJlbnRBbmdsZSwgMCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHhFeHRyYTogMCxcbiAgICAgICAgICAgIHlFeHRyYTogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHhBbmdsZSA9IE1hdGguYWJzKE1hdGguYXRhbjIobmV4dFBvaW50WzFdIC0gY3VycmVudFBvaW50WzFdLCBuZXh0UG9pbnRbMF0gLSBjdXJyZW50UG9pbnRbMF0pKTtcbiAgICB2YXIgeUFuZ2xlID0gTWF0aC5hYnMoTWF0aC5hdGFuMihuZXh0UG9pbnRbMF0gLSBjdXJyZW50UG9pbnRbMF0sIG5leHRQb2ludFsxXSAtIGN1cnJlbnRQb2ludFsxXSkpO1xuICAgIC8vIOWwhuWkueinkui9rOS4uumUkOinklxuICAgIHhBbmdsZSA9IHhBbmdsZSA+IE1hdGguUEkgLyAyID8gTWF0aC5QSSAtIHhBbmdsZSA6IHhBbmdsZTtcbiAgICB5QW5nbGUgPSB5QW5nbGUgPiBNYXRoLlBJIC8gMiA/IE1hdGguUEkgLSB5QW5nbGUgOiB5QW5nbGU7XG4gICAgLy8g6L+Z6YeM5LiN6ICD6JmR5Zyo5rC05bmz5ZKM5Z6C55u05pa55ZCR55qE5oqV5b2x77yM55u05o6l5L2/55So5pyA5aSn5beu5YC8XG4gICAgLy8g55Sx5LqO5LiK5bGC57uf5LiA5Yqg5YeP5LqG5LqM5YiG5LmL5LiA57q/5a6977yM6L+Z6YeM6ZyA6KaB6L+b6KGM5byl6KGlXG4gICAgdmFyIGV4dHJhID0ge1xuICAgICAgICAvLyDmsLTlubPmlrnlkJHmipXlvbFcbiAgICAgICAgeEV4dHJhOiBNYXRoLmNvcyhjdXJyZW50QW5nbGUgLyAyIC0geEFuZ2xlKSAqICgobGluZVdpZHRoIC8gMikgKiAoMSAvIE1hdGguc2luKGN1cnJlbnRBbmdsZSAvIDIpKSkgLSBsaW5lV2lkdGggLyAyIHx8IDAsXG4gICAgICAgIC8vIOWeguebtOaWueWQkeaKleW9sVxuICAgICAgICB5RXh0cmE6IE1hdGguY29zKHlBbmdsZSAtIGN1cnJlbnRBbmdsZSAvIDIpICogKChsaW5lV2lkdGggLyAyKSAqICgxIC8gTWF0aC5zaW4oY3VycmVudEFuZ2xlIC8gMikpKSAtIGxpbmVXaWR0aCAvIDIgfHwgMCxcbiAgICB9O1xuICAgIHJldHVybiBleHRyYTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgcGF0aCA9IGF0dHJzLnBhdGgsIHN0cm9rZSA9IGF0dHJzLnN0cm9rZTtcbiAgICB2YXIgbGluZVdpZHRoID0gc3Ryb2tlID8gYXR0cnMubGluZVdpZHRoIDogMDsgLy8g5Y+q5pyJ5pyJIHN0cm9rZSDml7bvvIxsaW5lV2lkdGgg5omN55Sf5pWIXG4gICAgdmFyIHNlZ21lbnRzID0gc2hhcGUuZ2V0KCdzZWdtZW50cycpIHx8IHBhdGgyU2VnbWVudHMocGF0aCk7XG4gICAgdmFyIF9hID0gZ2V0UGF0aEJveChzZWdtZW50cywgbGluZVdpZHRoKSwgeCA9IF9hLngsIHkgPSBfYS55LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gICAgdmFyIGJib3ggPSB7XG4gICAgICAgIG1pblg6IHgsXG4gICAgICAgIG1pblk6IHksXG4gICAgICAgIG1heFg6IHggKyB3aWR0aCxcbiAgICAgICAgbWF4WTogeSArIGhlaWdodCxcbiAgICB9O1xuICAgIGJib3ggPSBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICB5OiBiYm94Lm1pblksXG4gICAgICAgIHdpZHRoOiBiYm94Lm1heFggLSBiYm94Lm1pblgsXG4gICAgICAgIGhlaWdodDogYmJveC5tYXhZIC0gYmJveC5taW5ZLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr);\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWdvbi5qcz85Nzc4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBb0M7QUFDckI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlEQUFJO0FBQ2YsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgcG9pbnRzID0gYXR0cnMucG9pbnRzO1xuICAgIHZhciB4QXJyID0gW107XG4gICAgdmFyIHlBcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIHhBcnIucHVzaChwb2ludFswXSk7XG4gICAgICAgIHlBcnIucHVzaChwb2ludFsxXSk7XG4gICAgfVxuICAgIHJldHVybiBVdGlsLmdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWdvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWxpbmUuanM/NmU3MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBb0M7QUFDSTtBQUN6QjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaURBQUk7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0REFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IG1lcmdlQXJyb3dCQm94IH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgcG9pbnRzID0gYXR0cnMucG9pbnRzO1xuICAgIHZhciB4QXJyID0gW107XG4gICAgdmFyIHlBcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIHhBcnIucHVzaChwb2ludFswXSk7XG4gICAgICAgIHlBcnIucHVzaChwb2ludFsxXSk7XG4gICAgfVxuICAgIHZhciBfYSA9IFV0aWwuZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFyciksIHggPSBfYS54LCB5ID0gX2EueSwgd2lkdGggPSBfYS53aWR0aCwgaGVpZ2h0ID0gX2EuaGVpZ2h0O1xuICAgIHZhciBiYm94ID0ge1xuICAgICAgICBtaW5YOiB4LFxuICAgICAgICBtaW5ZOiB5LFxuICAgICAgICBtYXhYOiB4ICsgd2lkdGgsXG4gICAgICAgIG1heFk6IHkgKyBoZWlnaHQsXG4gICAgfTtcbiAgICBiYm94ID0gbWVyZ2VBcnJvd0JCb3goc2hhcGUsIGJib3gpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJib3gubWluWCxcbiAgICAgICAgeTogYmJveC5taW5ZLFxuICAgICAgICB3aWR0aDogYmJveC5tYXhYIC0gYmJveC5taW5YLFxuICAgICAgICBoZWlnaHQ6IGJib3gubWF4WSAtIGJib3gubWluWSxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n});\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcmVjdC5qcz9kOWYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueSwgd2lkdGggPSBhdHRycy53aWR0aCwgaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js ***! \****************************************************************************/ /*! exports provided: register, getMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMethod\", function() { return getMethod; });\nvar cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nfunction register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nfunction getMethod(type) {\n return cache.get(type);\n}\n//# sourceMappingURL=register.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcmVnaXN0ZXIuanM/ZTY4NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlZ2lzdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNhY2hlID0gbmV3IE1hcCgpO1xuLyoqXG4gKiDms6jlhozorqHnrpfljIXlm7Tnm5LnmoTnrpfms5VcbiAqIEBwYXJhbSB0eXBlIOaWueazleWQjVxuICogQHBhcmFtIG1ldGhvZCDmlrnms5VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKHR5cGUsIG1ldGhvZCkge1xuICAgIGNhY2hlLnNldCh0eXBlLCBtZXRob2QpO1xufVxuLyoqXG4gKiDojrflj5borqHnrpfljIXlm7Tnm5LnmoTnrpfms5VcbiAqIEBwYXJhbSB0eXBlIOaWueazleWQjVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0aG9kKHR5cGUpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KHR5cGUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVnaXN0ZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/text */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, text = attrs.text, fontSize = attrs.fontSize, lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"assembleFont\"])(attrs);\n }\n var width = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextWidth\"])(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0,\n };\n }\n else {\n var textAlign = attrs.textAlign, textBaseline = attrs.textBaseline;\n var height = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextHeight\"])(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n }\n else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n }\n else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n});\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdGV4dC5qcz81YjEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUU7QUFDMUQ7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwrREFBWTtBQUMzQjtBQUNBLGdCQUFnQiwrREFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0VBQWEsNkJBQTZCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFRleHRXaWR0aCwgZ2V0VGV4dEhlaWdodCwgYXNzZW1ibGVGb250IH0gZnJvbSAnLi4vdXRpbC90ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55LCB0ZXh0ID0gYXR0cnMudGV4dCwgZm9udFNpemUgPSBhdHRycy5mb250U2l6ZSwgbGluZUhlaWdodCA9IGF0dHJzLmxpbmVIZWlnaHQ7XG4gICAgdmFyIGZvbnQgPSBhdHRycy5mb250O1xuICAgIGlmICghZm9udCkge1xuICAgICAgICAvLyDlpoLmnpzmnKrnu4Too4UgZm9udFxuICAgICAgICBmb250ID0gYXNzZW1ibGVGb250KGF0dHJzKTtcbiAgICB9XG4gICAgdmFyIHdpZHRoID0gZ2V0VGV4dFdpZHRoKHRleHQsIGZvbnQpO1xuICAgIHZhciBiYm94O1xuICAgIGlmICghd2lkdGgpIHtcbiAgICAgICAgLy8g5aaC5p6cd2lkdGjkuI3lrZjlnKjvvIzlm5vngrnlhbHlhbblrp7ngrlcbiAgICAgICAgYmJveCA9IHtcbiAgICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgICB5OiB5LFxuICAgICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGV4dEFsaWduID0gYXR0cnMudGV4dEFsaWduLCB0ZXh0QmFzZWxpbmUgPSBhdHRycy50ZXh0QmFzZWxpbmU7XG4gICAgICAgIHZhciBoZWlnaHQgPSBnZXRUZXh0SGVpZ2h0KHRleHQsIGZvbnRTaXplLCBsaW5lSGVpZ2h0KTsgLy8gYXR0cnMuaGVpZ2h0XG4gICAgICAgIC8vIOm7mOiupOW3puWPs+Wvuem9kO+8mmxlZnQsIOm7mOiupOS4iuS4i+Wvuem9kCBib3R0b21cbiAgICAgICAgdmFyIHBvaW50ID0ge1xuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHkgLSBoZWlnaHQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0ZXh0QWxpZ24pIHtcbiAgICAgICAgICAgIGlmICh0ZXh0QWxpZ24gPT09ICdlbmQnIHx8IHRleHRBbGlnbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHBvaW50LnggLT0gd2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0ZXh0QWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgICAgICAgcG9pbnQueCAtPSB3aWR0aCAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHRCYXNlbGluZSkge1xuICAgICAgICAgICAgaWYgKHRleHRCYXNlbGluZSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBwb2ludC55ICs9IGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRleHRCYXNlbGluZSA9PT0gJ21pZGRsZScpIHtcbiAgICAgICAgICAgICAgICBwb2ludC55ICs9IGhlaWdodCAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmJveCA9IHtcbiAgICAgICAgICAgIHg6IHBvaW50LngsXG4gICAgICAgICAgICB5OiBwb2ludC55LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBiYm94O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js ***! \************************************************************************/ /*! exports provided: mergeBBox, mergeArrowBBox */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeArrowBBox\", function() { return mergeArrowBBox; });\n// 合并包围盒\nfunction mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n// 合并箭头的包围盒\nfunction mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdXRpbC5qcz8yNmE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOWQiOW5tuWMheWbtOebklxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQkJveChiYm94MSwgYmJveDIpIHtcbiAgICBpZiAoIWJib3gxIHx8ICFiYm94Mikge1xuICAgICAgICByZXR1cm4gYmJveDEgfHwgYmJveDI7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IE1hdGgubWluKGJib3gxLm1pblgsIGJib3gyLm1pblgpLFxuICAgICAgICBtaW5ZOiBNYXRoLm1pbihiYm94MS5taW5ZLCBiYm94Mi5taW5ZKSxcbiAgICAgICAgbWF4WDogTWF0aC5tYXgoYmJveDEubWF4WCwgYmJveDIubWF4WCksXG4gICAgICAgIG1heFk6IE1hdGgubWF4KGJib3gxLm1heFksIGJib3gyLm1heFkpLFxuICAgIH07XG59XG4vLyDlkIjlubbnrq3lpLTnmoTljIXlm7Tnm5JcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCkge1xuICAgIHZhciBzdGFydEFycm93U2hhcGUgPSBzaGFwZS5nZXQoJ3N0YXJ0QXJyb3dTaGFwZScpO1xuICAgIHZhciBlbmRBcnJvd1NoYXBlID0gc2hhcGUuZ2V0KCdlbmRBcnJvd1NoYXBlJyk7XG4gICAgdmFyIHN0YXJ0QXJyb3dCQm94ID0gbnVsbDtcbiAgICB2YXIgZW5kQXJyb3dCQm94ID0gbnVsbDtcbiAgICBpZiAoc3RhcnRBcnJvd1NoYXBlKSB7XG4gICAgICAgIHN0YXJ0QXJyb3dCQm94ID0gc3RhcnRBcnJvd1NoYXBlLmdldENhbnZhc0JCb3goKTtcbiAgICAgICAgYmJveCA9IG1lcmdlQkJveChiYm94LCBzdGFydEFycm93QkJveCk7XG4gICAgfVxuICAgIGlmIChlbmRBcnJvd1NoYXBlKSB7XG4gICAgICAgIGVuZEFycm93QkJveCA9IGVuZEFycm93U2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICBiYm94ID0gbWVyZ2VCQm94KGJib3gsIGVuZEFycm93QkJveCk7XG4gICAgfVxuICAgIHJldHVybiBiYm94O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js ***! \************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph-event */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\n\n\nvar CLICK_OFFSET = 40;\nvar LEFT_BTN_CODE = 0;\nvar DELEGATION_SPLIT = ':';\nvar EVENTS = [\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'mouseout',\n 'mouseover',\n 'mousemove',\n 'mouseleave',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'drop',\n 'contextmenu',\n 'mousewheel',\n];\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (var key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n var relativeShape = void 0;\n var isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n }\n else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"isParent\"])(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\nvar EventController = /** @class */ (function () {\n function EventController(cfg) {\n var _this = this;\n // 正在被拖拽的图形\n this.draggingShape = null;\n this.dragging = false;\n // 当前鼠标/touch所在位置的图形\n this.currentShape = null;\n this.mousedownShape = null;\n this.mousedownPoint = null;\n // 统一处理所有的回调\n this._eventCallback = function (ev) {\n var type = ev.type;\n _this._triggerEvent(type, ev);\n };\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n this._onDocumentMove = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging || _this.currentShape) {\n var pointInfo = _this._getPointInfo(ev);\n // 还在拖拽过程中\n if (_this.dragging) {\n _this._emitEvent('drag', ev, pointInfo, _this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n this._onDocumentMouseUp = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging) {\n var pointInfo = _this._getPointInfo(ev);\n if (_this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n _this._emitEvent('drop', ev, pointInfo, null);\n }\n _this._emitEvent('dragend', ev, pointInfo, _this.draggingShape);\n _this._afterDrag(_this.draggingShape, pointInfo, ev);\n }\n }\n };\n this.canvas = cfg.canvas;\n }\n EventController.prototype.init = function () {\n this._bindEvents();\n };\n // 注册事件\n EventController.prototype._bindEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.addEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n // 清理事件\n EventController.prototype._clearEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.removeEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n EventController.prototype._getEventObj = function (type, event, point, target, fromShape, toShape) {\n var eventObj = new _graph_event__WEBPACK_IMPORTED_MODULE_0__[\"default\"](type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n };\n // 根据点获取图形,提取成独立方法,便于后续优化\n EventController.prototype._getShape = function (point, ev) {\n return this.canvas.getShape(point.x, point.y, ev);\n };\n // 获取事件的当前点的信息\n EventController.prototype._getPointInfo = function (ev) {\n var canvas = this.canvas;\n var clientPoint = canvas.getClientByEvent(ev);\n var point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n };\n };\n // 触发事件\n EventController.prototype._triggerEvent = function (type, ev) {\n var pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n var shape = this._getShape(pointInfo, ev);\n var method = this[\"_on\" + type];\n var leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n }\n else {\n var preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n }\n else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n }\n else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n var canvas = this.canvas;\n var el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n };\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n EventController.prototype._onmousedown = function (pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n };\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n EventController.prototype._emitMouseoverEvents = function (event, pointInfo, fromShape, toShape) {\n var el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n };\n // dragover 不等同于 mouseover,而等同于 mousemove\n EventController.prototype._emitDragoverEvents = function (event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n }\n else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n };\n // drag 完成后,需要做一些清理工作\n EventController.prototype._afterDrag = function (draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n var shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n };\n // 按键抬起时,会终止拖拽、触发点击\n EventController.prototype._onmouseup = function (pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n var draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n }\n else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n };\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n EventController.prototype._ondragover = function (pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n var preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n };\n // 大量的图形事件,都通过 mousemove 模拟\n EventController.prototype._onmousemove = function (pointInfo, shape, event) {\n var canvas = this.canvas;\n var preShape = this.currentShape;\n var draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n }\n else {\n var mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n var mousedownShape = this.mousedownShape;\n var now = event.timeStamp;\n var timeWindow = now - this.mousedownTimeStamp;\n var dx = mousedownPoint.clientX - pointInfo.clientX;\n var dy = mousedownPoint.clientY - pointInfo.clientY;\n var dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n };\n // 触发事件\n EventController.prototype._emitEvent = function (type, event, pointInfo, shape, fromShape, toShape) {\n var eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n var parent_1 = shape.getParent();\n // 执行冒泡\n while (parent_1) {\n // 委托事件要先触发\n parent_1.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent_1, type, eventObj);\n }\n eventObj.propagationPath.push(parent_1);\n parent_1 = parent_1.getParent();\n }\n }\n else {\n // 如果没有 shape 直接在 canvas 上触发\n var canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n };\n EventController.prototype.destroy = function () {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n };\n return EventController;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);\n//# sourceMappingURL=event-contoller.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2V2ZW50L2V2ZW50LWNvbnRvbGxlci5qcz85OTE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3VDO0FBQ087QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0RBQVU7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQSw2RUFBNkU7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUZBQW1GO0FBQ25GO0FBQ0EsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLDhFQUFlLEVBQUM7QUFDL0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2V2ZW50L2V2ZW50LWNvbnRvbGxlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDkuovku7blpITnkIblmahcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgR3JhcGhFdmVudCBmcm9tICcuL2dyYXBoLWV2ZW50JztcbmltcG9ydCB7IGVhY2gsIGlzUGFyZW50IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbnZhciBDTElDS19PRkZTRVQgPSA0MDtcbnZhciBMRUZUX0JUTl9DT0RFID0gMDtcbnZhciBERUxFR0FUSU9OX1NQTElUID0gJzonO1xudmFyIEVWRU5UUyA9IFtcbiAgICAnbW91c2Vkb3duJyxcbiAgICAnbW91c2V1cCcsXG4gICAgJ2RibGNsaWNrJyxcbiAgICAnbW91c2VvdXQnLFxuICAgICdtb3VzZW92ZXInLFxuICAgICdtb3VzZW1vdmUnLFxuICAgICdtb3VzZWxlYXZlJyxcbiAgICAnbW91c2VlbnRlcicsXG4gICAgJ3RvdWNoc3RhcnQnLFxuICAgICd0b3VjaG1vdmUnLFxuICAgICd0b3VjaGVuZCcsXG4gICAgJ2RyYWdlbnRlcicsXG4gICAgJ2RyYWdvdmVyJyxcbiAgICAnZHJhZ2xlYXZlJyxcbiAgICAnZHJvcCcsXG4gICAgJ2NvbnRleHRtZW51JyxcbiAgICAnbW91c2V3aGVlbCcsXG5dO1xuLy8g5piv5ZCm5pyJ5aeU5omY5LqL5Lu255uR5ZCsXG5mdW5jdGlvbiBoYXNEZWxlZ2F0aW9uKGV2ZW50cywgdHlwZSkge1xuICAgIGZvciAodmFyIGtleSBpbiBldmVudHMpIHtcbiAgICAgICAgaWYgKGV2ZW50cy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleS5pbmRleE9mKERFTEVHQVRJT05fU1BMSVQgKyB0eXBlKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyDop6blj5Hnm67moIfkuovku7bvvIznm67moIflj6rog73mmK8gc2hhcGUg5oiWIGNhbnZhc1xuZnVuY3Rpb24gZW1pdFRhcmdldEV2ZW50KHRhcmdldCwgdHlwZSwgZXZlbnRPYmopIHtcbiAgICBldmVudE9iai5uYW1lID0gdHlwZTtcbiAgICBldmVudE9iai50YXJnZXQgPSB0YXJnZXQ7XG4gICAgZXZlbnRPYmouY3VycmVudFRhcmdldCA9IHRhcmdldDtcbiAgICBldmVudE9iai5kZWxlZ2F0ZVRhcmdldCA9IHRhcmdldDtcbiAgICB0YXJnZXQuZW1pdCh0eXBlLCBldmVudE9iaik7XG59XG4vLyDkuovku7blhpLms6EsIGVudGVyIOWSjCBsZWF2ZSDpnIDopoHlr7kgZnJvbVNoYXBlIOWSjCB0b1NoYXBlIOi/m+ihjOWIpOWQjFxuZnVuY3Rpb24gYnViYmxlRXZlbnQoY29udGFpbmVyLCB0eXBlLCBldmVudE9iaikge1xuICAgIGlmIChldmVudE9iai5idWJibGVzKSB7XG4gICAgICAgIHZhciByZWxhdGl2ZVNoYXBlID0gdm9pZCAwO1xuICAgICAgICB2YXIgaXNPdmVyRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLmZyb21TaGFwZTtcbiAgICAgICAgICAgIGlzT3ZlckV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgICAgIGlzT3ZlckV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlbGF0aXZlU2hhcGUgPSBldmVudE9iai50b1NoYXBlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNhbnZhcyDkuIrnmoQgbW91c2VlbnRlcu+8jCBtb3VzZWxlYXZlIOS6i+S7tu+8jOS7heW9k+i/m+WFpeaIluiAheenu+WHuiBjYW52YXMg5pe26Kem5Y+RXG4gICAgICAgIGlmIChjb250YWluZXIuaXNDYW52YXMoKSAmJiBpc092ZXJFdmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOebuOWFs+WbvuW9ouWQjOW9k+WJjeWbvuW9ouWcqOWQjOS4gOS4quWuueWZqOWGhe+8jOS4jeinpuWPkeS6i+S7tlxuICAgICAgICBpZiAocmVsYXRpdmVTaGFwZSAmJiBpc1BhcmVudChjb250YWluZXIsIHJlbGF0aXZlU2hhcGUpKSB7XG4gICAgICAgICAgICAvLyDpmLvmraLnu6fnu63lkJHkuIrlhpLms6FcbiAgICAgICAgICAgIGV2ZW50T2JqLmJ1YmJsZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyDkuovku7blkI3np7Dlj6/og73lnKjlp5TmiZjov4fnqIvkuK3ooqvkv67mlLnvvIzlm6DmraTkuovku7blhpLms6Hml7bpnIDopoHph43mlrDorr7nva7kuovku7blkI3np7BcbiAgICAgICAgZXZlbnRPYmoubmFtZSA9IHR5cGU7XG4gICAgICAgIGV2ZW50T2JqLmN1cnJlbnRUYXJnZXQgPSBjb250YWluZXI7XG4gICAgICAgIGV2ZW50T2JqLmRlbGVnYXRlVGFyZ2V0ID0gY29udGFpbmVyO1xuICAgICAgICBjb250YWluZXIuZW1pdCh0eXBlLCBldmVudE9iaik7XG4gICAgfVxufVxudmFyIEV2ZW50Q29udHJvbGxlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudENvbnRyb2xsZXIoY2ZnKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIC8vIOato+WcqOiiq+aLluaLveeahOWbvuW9olxuICAgICAgICB0aGlzLmRyYWdnaW5nU2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIC8vIOW9k+WJjem8oOaghy90b3VjaOaJgOWcqOS9jee9rueahOWbvuW9olxuICAgICAgICB0aGlzLmN1cnJlbnRTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgLy8g57uf5LiA5aSE55CG5omA5pyJ55qE5Zue6LCDXG4gICAgICAgIHRoaXMuX2V2ZW50Q2FsbGJhY2sgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciB0eXBlID0gZXYudHlwZTtcbiAgICAgICAgICAgIF90aGlzLl90cmlnZ2VyRXZlbnQodHlwZSwgZXYpO1xuICAgICAgICB9O1xuICAgICAgICAvLyDlnKggZG9jdW1lbnQg5aSE55CG5ouW5ou95Yiw55S75biD5aSW55qE5LqL5Lu277yM5aSE55CG5LuO5Zu+5b2i5LiK56e76Zmk55S75biD5pyq6KKr5o2V5o2J55qE6Zeu6aKYXG4gICAgICAgIHRoaXMuX29uRG9jdW1lbnRNb3ZlID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gX3RoaXMuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgICAgIGlmIChlbCAhPT0gZXYudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8g5LiN5ZyoIGNhbnZhcyDkuIrnp7vliqhcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZHJhZ2dpbmcgfHwgX3RoaXMuY3VycmVudFNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwb2ludEluZm8gPSBfdGhpcy5fZ2V0UG9pbnRJbmZvKGV2KTtcbiAgICAgICAgICAgICAgICAgICAgLy8g6L+Y5Zyo5ouW5ou96L+H56iL5LitXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2VtaXRFdmVudCgnZHJhZycsIGV2LCBwb2ludEluZm8sIF90aGlzLmRyYWdnaW5nU2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIOivtOaYjuS7juafkOS4quWbvuW9ouebtOaOpeenu+WKqOWIsOS6hueUu+W4g+Wklumdou+8jFxuICAgICAgICAgICAgICAgICAgICAvLyDkv67lpI3kuoYgbW91c2VsZWF2ZSDnmoQgYnVnIOWQjuS4jeWGjeWHuueOsOi/meenjeaDheWGtVxuICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5jdXJyZW50U2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbGVhdmUnLCBldiwgcG9pbnRJbmZvLCB0aGlzLmN1cnJlbnRTaGFwZSwgdGhpcy5jdXJyZW50U2hhcGUsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgIHRoaXMuY3VycmVudFNoYXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8g5ZyoIGRvY3VtZW50IOS4iuWkhOeQhuaLluaLveWIsOWklumdou+8jOmHiuaUvum8oOagh+aXtuinpuWPkSBkcmFnZW5kXG4gICAgICAgIHRoaXMuX29uRG9jdW1lbnRNb3VzZVVwID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gX3RoaXMuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgICAgIGlmIChlbCAhPT0gZXYudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8g5LiN5ZyoIGNhbnZhcyDkuIrnp7vliqhcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50SW5mbyA9IF90aGlzLl9nZXRQb2ludEluZm8oZXYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5Zyo5ouW5ou955qE5Zu+5b2i77yM5YiZ5Lmf6Kem5Y+RIGRyb3Ag5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZW1pdEV2ZW50KCdkcm9wJywgZXYsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2VtaXRFdmVudCgnZHJhZ2VuZCcsIGV2LCBwb2ludEluZm8sIF90aGlzLmRyYWdnaW5nU2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fYWZ0ZXJEcmFnKF90aGlzLmRyYWdnaW5nU2hhcGUsIHBvaW50SW5mbywgZXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjZmcuY2FudmFzO1xuICAgIH1cbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2JpbmRFdmVudHMoKTtcbiAgICB9O1xuICAgIC8vIOazqOWGjOS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2JpbmRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaChFVkVOVFMsIGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfdGhpcy5fZXZlbnRDYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIC8vIOWkhOeQhuenu+WKqOWIsOWklumdouayoeacieinpuWPkSBzaGFwZSBtb3VzZSBsZWF2ZSDnmoTkuovku7ZcbiAgICAgICAgICAgIC8vIOWkhOeQhuaLluaLveWIsOWklumDqOeahOmXrumimFxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fb25Eb2N1bWVudE1vdmUpO1xuICAgICAgICAgICAgLy8g5aSE55CG5ouW5ou96L+H56iL5Lit5Zyo5aSW6YOo6YeK5pS+6byg5qCH55qE6Zeu6aKYXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fb25Eb2N1bWVudE1vdXNlVXApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDmuIXnkIbkuovku7ZcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9jbGVhckV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKEVWRU5UUywgZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLl9ldmVudENhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fb25Eb2N1bWVudE1vdmUpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX29uRG9jdW1lbnRNb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZ2V0RXZlbnRPYmogPSBmdW5jdGlvbiAodHlwZSwgZXZlbnQsIHBvaW50LCB0YXJnZXQsIGZyb21TaGFwZSwgdG9TaGFwZSkge1xuICAgICAgICB2YXIgZXZlbnRPYmogPSBuZXcgR3JhcGhFdmVudCh0eXBlLCBldmVudCk7XG4gICAgICAgIGV2ZW50T2JqLmZyb21TaGFwZSA9IGZyb21TaGFwZTtcbiAgICAgICAgZXZlbnRPYmoudG9TaGFwZSA9IHRvU2hhcGU7XG4gICAgICAgIGV2ZW50T2JqLnggPSBwb2ludC54O1xuICAgICAgICBldmVudE9iai55ID0gcG9pbnQueTtcbiAgICAgICAgZXZlbnRPYmouY2xpZW50WCA9IHBvaW50LmNsaWVudFg7XG4gICAgICAgIGV2ZW50T2JqLmNsaWVudFkgPSBwb2ludC5jbGllbnRZO1xuICAgICAgICBldmVudE9iai5wcm9wYWdhdGlvblBhdGgucHVzaCh0YXJnZXQpO1xuICAgICAgICAvLyDkuovku7bnmoR4LHnlupTor6XmmK/ln7rkuo7nlLvluIPlt6bkuIrop5LnmoTvvIzkuI5jYW52YXPnmoRtYXRyaXjml6DlhbNcbiAgICAgICAgcmV0dXJuIGV2ZW50T2JqO1xuICAgIH07XG4gICAgLy8g5qC55o2u54K56I635Y+W5Zu+5b2i77yM5o+Q5Y+W5oiQ54us56uL5pa55rOV77yM5L6/5LqO5ZCO57ut5LyY5YyWXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZ2V0U2hhcGUgPSBmdW5jdGlvbiAocG9pbnQsIGV2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbnZhcy5nZXRTaGFwZShwb2ludC54LCBwb2ludC55LCBldik7XG4gICAgfTtcbiAgICAvLyDojrflj5bkuovku7bnmoTlvZPliY3ngrnnmoTkv6Hmga9cbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRQb2ludEluZm8gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICB2YXIgY2xpZW50UG9pbnQgPSBjYW52YXMuZ2V0Q2xpZW50QnlFdmVudChldik7XG4gICAgICAgIHZhciBwb2ludCA9IGNhbnZhcy5nZXRQb2ludEJ5RXZlbnQoZXYpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgICAgICBjbGllbnRYOiBjbGllbnRQb2ludC54LFxuICAgICAgICAgICAgY2xpZW50WTogY2xpZW50UG9pbnQueSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8vIOinpuWPkeS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX3RyaWdnZXJFdmVudCA9IGZ1bmN0aW9uICh0eXBlLCBldikge1xuICAgICAgICB2YXIgcG9pbnRJbmZvID0gdGhpcy5fZ2V0UG9pbnRJbmZvKGV2KTtcbiAgICAgICAgLy8g5q+P5qyh6YO96I635Y+W5Zu+5b2i5pyJ5LiA5a6a5oiQ5pys77yM5ZCO5pyf5Y+v5Lul6ICD6JmR6L+b6KGM57yT5a2Y562W55WlXG4gICAgICAgIHZhciBzaGFwZSA9IHRoaXMuX2dldFNoYXBlKHBvaW50SW5mbywgZXYpO1xuICAgICAgICB2YXIgbWV0aG9kID0gdGhpc1tcIl9vblwiICsgdHlwZV07XG4gICAgICAgIHZhciBsZWF2ZUNhbnZhcyA9IGZhbHNlO1xuICAgICAgICBpZiAobWV0aG9kKSB7XG4gICAgICAgICAgICBtZXRob2QuY2FsbCh0aGlzLCBwb2ludEluZm8sIHNoYXBlLCBldik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcHJlU2hhcGUgPSB0aGlzLmN1cnJlbnRTaGFwZTtcbiAgICAgICAgICAgIC8vIOWmguaenOi/m+WFpeOAgeenu+WHuueUu+W4g+aXtuWtmOWcqOWbvuW9ou+8jOWImeimgeWIhuWIq+inpuWPkeS6i+S7tlxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJyB8fCB0eXBlID09PSAnZHJhZ2VudGVyJyB8fCB0eXBlID09PSAnbW91c2VvdmVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBudWxsLCBudWxsLCBzaGFwZSk7IC8vIOWFiOi/m+WFpeeUu+W4g1xuICAgICAgICAgICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQodHlwZSwgZXYsIHBvaW50SW5mbywgc2hhcGUsIG51bGwsIHNoYXBlKTsgLy8g5YaN6Kem5Y+R5Zu+5b2i55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnbW91c2VlbnRlcicgJiYgdGhpcy5kcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOato+WcqOaLluaLveWbvuW9oiwg5YiZ6Kem5Y+RIGRyYWdsZWF2ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdlbnRlcicsIGV2LCBwb2ludEluZm8sIG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJyB8fCB0eXBlID09PSAnZHJhZ2xlYXZlJyB8fCB0eXBlID09PSAnbW91c2VvdXQnKSB7XG4gICAgICAgICAgICAgICAgbGVhdmVDYW52YXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcmVTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQodHlwZSwgZXYsIHBvaW50SW5mbywgcHJlU2hhcGUsIHByZVNoYXBlLCBudWxsKTsgLy8g5YWI6Kem5Y+R5Zu+5b2i55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBudWxsLCBwcmVTaGFwZSwgbnVsbCk7IC8vIOWGjeinpuWPkeemu+W8gOeUu+W4g+S6i+S7tlxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnbW91c2VsZWF2ZScgJiYgdGhpcy5kcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2xlYXZlJywgZXYsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KHR5cGUsIGV2LCBwb2ludEluZm8sIHNoYXBlLCBudWxsLCBudWxsKTsgLy8g5LiA6Iis5LqL5Lu25Lit5LiN6ZyA6KaB6ICD6JmRIGZyb20sIHRvXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsZWF2ZUNhbnZhcykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2hhcGUgPSBzaGFwZTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlvZPpvKDmoIfku47nlLvluIPnp7vliqjliLAgc2hhcGUg5oiW6ICF5LuOIHByZVNoYXBlIOenu+WKqOWIsCBzaGFwZSDml7bvvIzlupTnlKggc2hhcGUg5LiK55qE6byg5qCH5qC35byPXG4gICAgICAgIGlmIChzaGFwZSAmJiAhc2hhcGUuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9IHNoYXBlLmF0dHIoJ2N1cnNvcicpIHx8IGNhbnZhcy5nZXQoJ2N1cnNvcicpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDorrDlvZXkuIvngrnlh7vnmoTkvY3nva7jgIHlm77lvaLvvIzkvr/kuo7mi5bmi73kuovku7bjgIFjbGljayDkuovku7bnmoTliKTlrppcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9vbm1vdXNlZG93biA9IGZ1bmN0aW9uIChwb2ludEluZm8sIHNoYXBlLCBldmVudCkge1xuICAgICAgICAvLyDlj6rmnInpvKDmoIflt6bplK7nmoQgbW91c2Vkb3duIOS6i+S7tuaJjeS8muiuvue9riBtb3VzZWRvd25TaGFwZSDnrYnlsZ7mgKfvvIzpgb/lhY3pvKDmoIflj7PplK7nmoQgbW91c2Vkb3duIOS6i+S7tuW8lei1t+WFtuS7luS6i+S7tuWPkeeUn1xuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBMRUZUX0JUTl9DT0RFKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlZG93blNoYXBlID0gc2hhcGU7XG4gICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gcG9pbnRJbmZvO1xuICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25UaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZWRvd24nLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSwgbnVsbCwgbnVsbCk7IC8vIG1vdXNlZG93biDkuI3ogIPomZFmcm9tU2hhcGUsIHRvU2hhcGVcbiAgICB9O1xuICAgIC8vIG1vdXNlbGVhdmUg5ZKMIG1vdXNlZW50ZXIg6YO95piv5oiQ5a+55a2Y5Zyo55qEXG4gICAgLy8gbW91c2VlbnRlciDlkowgbW91c2VvdmVyIOWQjOaXtuinpuWPkVxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2VtaXRNb3VzZW92ZXJFdmVudHMgPSBmdW5jdGlvbiAoZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCB0b1NoYXBlKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGZyb21TaGFwZSAhPT0gdG9TaGFwZSkge1xuICAgICAgICAgICAgaWYgKGZyb21TaGFwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2VvdXQnLCBldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZWxlYXZlJywgZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgICAgIC8vIOW9k+m8oOagh+S7jiBmcm9tU2hhcGUg56e75Yqo5Yiw55S75biD5LiK5pe277yM6YeN572u6byg5qCH5qC35byPXG4gICAgICAgICAgICAgICAgaWYgKCF0b1NoYXBlIHx8IHRvU2hhcGUuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5jdXJzb3IgPSB0aGlzLmNhbnZhcy5nZXQoJ2N1cnNvcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZW92ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2VlbnRlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIGRyYWdvdmVyIOS4jeetieWQjOS6jiBtb3VzZW92ZXLvvIzogIznrYnlkIzkuo4gbW91c2Vtb3ZlXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZW1pdERyYWdvdmVyRXZlbnRzID0gZnVuY3Rpb24gKGV2ZW50LCBwb2ludEluZm8sIGZyb21TaGFwZSwgdG9TaGFwZSwgaXNDYW52YXNFbWl0KSB7XG4gICAgICAgIGlmICh0b1NoYXBlKSB7XG4gICAgICAgICAgICBpZiAodG9TaGFwZSAhPT0gZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZyb21TaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdsZWF2ZScsIGV2ZW50LCBwb2ludEluZm8sIGZyb21TaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnZW50ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0NhbnZhc0VtaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdvdmVyJywgZXZlbnQsIHBvaW50SW5mbywgdG9TaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiDmraTlpITliKTmlq3mnInpl67popjvvIzlvZMgZHJhZyDlm77lvaLml7bvvIzkuZ/kvJrop6blj5HkuIDmrKEgZHJhZ2xlYXZlIOS6i+S7tu+8jOWboOS4uuatpOaXtiB0b1NoYXBlIOS4uiBudWxs77yM6L+Z5LiN5piv5omA5pyf5pyb55qEXG4gICAgICAgICAgICAvLyDnu4/ov4fnqbrnmb3ljLrln59cbiAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2xlYXZlJywgZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NhbnZhc0VtaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ292ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gZHJhZyDlrozmiJDlkI7vvIzpnIDopoHlgZrkuIDkupvmuIXnkIblt6XkvZxcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9hZnRlckRyYWcgPSBmdW5jdGlvbiAoZHJhZ2dpbmdTaGFwZSwgcG9pbnRJbmZvLCBldmVudCkge1xuICAgICAgICBpZiAoZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgZHJhZ2dpbmdTaGFwZS5zZXQoJ2NhcHR1cmUnLCB0cnVlKTsgLy8g5oGi5aSN5Y+v5Lul5ou+5Y+WXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nU2hhcGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gZHJhZyDlrozmiJDlkI7vvIzmnInlj6/og70gZHJhZ2dpbmdTaGFwZSDlt7Lnu4/np7vliqjliLDkuoblvZPliY3kvY3nva7vvIzmiYDku6XkuI3og73nm7TmjqXlj5blvZPliY3lm77lvaJcbiAgICAgICAgdmFyIHNoYXBlID0gdGhpcy5fZ2V0U2hhcGUocG9pbnRJbmZvLCBldmVudCk7XG4gICAgICAgIC8vIOaLluaLveWujOaIkOWQju+8jOi/m+ihjCBlbnRlcu+8jGxlYXZlIOeahOWIpOWumlxuICAgICAgICBpZiAoc2hhcGUgIT09IGRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRNb3VzZW92ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgZHJhZ2dpbmdTaGFwZSwgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFNoYXBlID0gc2hhcGU7IC8vIOabtOaWsOW9k+WJjSBzaGFwZe+8jOWmguaenOS4jeWkhOeQhuW9k+WJjeWbvuW9oueahCBtb3VzZWxlYXZlIOS6i+S7tuWPr+iDveS8muWHuumXrumimFxuICAgIH07XG4gICAgLy8g5oyJ6ZSu5oqs6LW35pe277yM5Lya57uI5q2i5ouW5ou944CB6Kem5Y+R54K55Ye7XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fb25tb3VzZXVwID0gZnVuY3Rpb24gKHBvaW50SW5mbywgc2hhcGUsIGV2ZW50KSB7XG4gICAgICAgIC8vIGVldmVudC5idXR0b24gPT09IDAg6KGo56S66byg5qCH5bem6ZSu5LqL5Lu277yM5q2k5aSE5Yqg5LiK5Yik5pat5Li76KaB5piv5Li65LqG6YG/5YWN5Y+z6ZSu6byg5qCH5Lya6Kem5Y+RIG1vdXNldXAg5ZKMIGNsaWNrIOS6i+S7tlxuICAgICAgICAvLyByZWY6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Nb3VzZUV2ZW50L2J1dHRvblxuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBMRUZUX0JUTl9DT0RFKSB7XG4gICAgICAgICAgICB2YXIgZHJhZ2dpbmdTaGFwZSA9IHRoaXMuZHJhZ2dpbmdTaGFwZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgLy8g5a2Y5Zyo5Y+v5Lul5ouW5ou955qE5Zu+5b2i77yM5ZCM5pe25ouW5ou95Yiw5YW25LuW5Zu+5b2i5LiK5pe26Kem5Y+RIGRyYWcg5LqL5Lu2XG4gICAgICAgICAgICAgICAgaWYgKGRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcm9wJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdlbmQnLCBldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlckRyYWcoZHJhZ2dpbmdTaGFwZSwgcG9pbnRJbmZvLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNldXAnLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7IC8vIOWFiOinpuWPkSBtb3VzZXVwIOWGjeinpuWPkSBjbGlja1xuICAgICAgICAgICAgICAgIGlmIChzaGFwZSA9PT0gdGhpcy5tb3VzZWRvd25TaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2NsaWNrJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blNoYXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5b2T6Kem5Y+R5rWP6KeI5Zmo55qEIGRyYWdvdmVyIOS6i+S7tuaXtu+8jOS4jeS8muWGjeinpuWPkSBtb3VzZW1vdmUg77yM5omA5Lul6L+Z5pe25YCZ55qEIGRyYWdlbnRlciwgZHJhZ2xlYXZlIOS6i+S7tumcgOimgemHjeaWsOWkhOeQhlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX29uZHJhZ292ZXIgPSBmdW5jdGlvbiAocG9pbnRJbmZvLCBzaGFwZSwgZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8g5aaC5p6c5LiN5a+5IGRyYWdvdmVyIOi/m+ihjCBwcmV2ZW50RGVmYXVsdO+8jOWImeS4jeS8muWcqCBjYW52YXMg5LiK6Kem5Y+RIGRyb3Ag5LqL5Lu2XG4gICAgICAgIHZhciBwcmVTaGFwZSA9IHRoaXMuY3VycmVudFNoYXBlO1xuICAgICAgICB0aGlzLl9lbWl0RHJhZ292ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgcHJlU2hhcGUsIHNoYXBlLCB0cnVlKTtcbiAgICB9O1xuICAgIC8vIOWkp+mHj+eahOWbvuW9ouS6i+S7tu+8jOmDvemAmui/hyBtb3VzZW1vdmUg5qih5oufXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fb25tb3VzZW1vdmUgPSBmdW5jdGlvbiAocG9pbnRJbmZvLCBzaGFwZSwgZXZlbnQpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICB2YXIgcHJlU2hhcGUgPSB0aGlzLmN1cnJlbnRTaGFwZTtcbiAgICAgICAgdmFyIGRyYWdnaW5nU2hhcGUgPSB0aGlzLmRyYWdnaW5nU2hhcGU7XG4gICAgICAgIC8vIOato+WcqOaLluaLveaXtlxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgLy8g5q2j5Zyo5ouW5ou95LitXG4gICAgICAgICAgICBpZiAoZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOaLluaLveS6hiBzaGFwZSDkvJrop6blj5EgZHJhZ2VudGVyLCBkcmFnbGVhdmUsIGRyYWdvdmVyIOWSjCBkcmFnIOS6i+S7tlxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXREcmFnb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgc2hhcGUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWmguaenOWtmOWcqCBkcmFnZ2luZ1NoYXBlIOWImeS8muWcqCBkcmFnZ2luZ1NoYXBlIOS4iuinpuWPkSBkcmFnIOS6i+S7tu+8jOWGkuazoeWIsCBjYW52YXMg5LiKXG4gICAgICAgICAgICAvLyDlkKbliJnlnKggY2FudmFzIOS4iuinpuWPkSBkcmFnIOS6i+S7tlxuICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnJywgZXZlbnQsIHBvaW50SW5mbywgZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbW91c2Vkb3duUG9pbnQgPSB0aGlzLm1vdXNlZG93blBvaW50O1xuICAgICAgICAgICAgaWYgKG1vdXNlZG93blBvaW50KSB7XG4gICAgICAgICAgICAgICAgLy8g5b2T6byg5qCH54K55Ye75LiL5Y6777yM5ZCM5pe256e75Yqo5pe277yM6L+b6KGMIGRyYWcg5Yik5a6aXG4gICAgICAgICAgICAgICAgdmFyIG1vdXNlZG93blNoYXBlID0gdGhpcy5tb3VzZWRvd25TaGFwZTtcbiAgICAgICAgICAgICAgICB2YXIgbm93ID0gZXZlbnQudGltZVN0YW1wO1xuICAgICAgICAgICAgICAgIHZhciB0aW1lV2luZG93ID0gbm93IC0gdGhpcy5tb3VzZWRvd25UaW1lU3RhbXA7XG4gICAgICAgICAgICAgICAgdmFyIGR4ID0gbW91c2Vkb3duUG9pbnQuY2xpZW50WCAtIHBvaW50SW5mby5jbGllbnRYO1xuICAgICAgICAgICAgICAgIHZhciBkeSA9IG1vdXNlZG93blBvaW50LmNsaWVudFkgLSBwb2ludEluZm8uY2xpZW50WTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzdCA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgICAgICAgICAgIGlmICh0aW1lV2luZG93ID4gMTIwIHx8IGRpc3QgPiBDTElDS19PRkZTRVQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vdXNlZG93blNoYXBlICYmIG1vdXNlZG93blNoYXBlLmdldCgnZHJhZ2dhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruS6hiBkcmFnZ2FibGUg55qEIHNoYXBlIOaJjeiDveinpuWPkSBkcmFnIOebuOWFs+eahOS6i+S7tlxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dpbmdTaGFwZSA9IHRoaXMubW91c2Vkb3duU2hhcGU7IC8vIOaLluWKqOm8oOagh+eCueS4i+aXtueahCBzaGFwZVxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dpbmdTaGFwZS5zZXQoJ2NhcHR1cmUnLCBmYWxzZSk7IC8vIOemgeatoue7p+e7reaLvuWPlu+8jOWQpuWImeaXoOazlei/m+ihjCBkcmFnb3ZlcixkcmFnZW50ZXIsZHJhZ2xlYXZlLGRyb3DnmoTliKTlrppcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IGRyYWdnaW5nU2hhcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ3N0YXJ0JywgZXZlbnQsIHBvaW50SW5mbywgZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmuIXnkIbmjInkuIvpvKDmoIfml7bnvJPlrZjnmoTlgLxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25Qb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIW1vdXNlZG93blNoYXBlICYmIGNhbnZhcy5nZXQoJ2RyYWdnYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDorr7nva7kuoYgZHJhZ2dhYmxlIOeahCBjYW52YXMg5omN6IO96Kem5Y+RIGRyYWcg55u45YWz55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ3N0YXJ0JywgZXZlbnQsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmuIXnkIbmjInkuIvpvKDmoIfml7bnvJPlrZjnmoTlgLxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25Qb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0TW91c2VvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbW92ZScsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdE1vdXNlb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgc2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbW92ZScsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDmsqHmnInmjInplK7mjInkuIvml7bvvIzliJnnm7TmjqXop6blj5EgbW91c2Ugb3ZlciDnm7jlhbPnmoTlkITnp43kuovku7ZcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0TW91c2VvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgLy8g5aeL57uI6Kem5Y+R56e75YqoXG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZW1vdmUnLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOinpuWPkeS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2VtaXRFdmVudCA9IGZ1bmN0aW9uICh0eXBlLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKSB7XG4gICAgICAgIHZhciBldmVudE9iaiA9IHRoaXMuX2dldEV2ZW50T2JqKHR5cGUsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAvLyDlrZjlnKggc2hhcGUg6Kem5Y+R77yM5YiZ6L+b6KGM5YaS5rOh5aSE55CGXG4gICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgZXZlbnRPYmouc2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICAgIC8vIOinpuWPkSBzaGFwZSDkuIrnmoTkuovku7ZcbiAgICAgICAgICAgIGVtaXRUYXJnZXRFdmVudChzaGFwZSwgdHlwZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgdmFyIHBhcmVudF8xID0gc2hhcGUuZ2V0UGFyZW50KCk7XG4gICAgICAgICAgICAvLyDmiafooYzlhpLms6FcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnRfMSkge1xuICAgICAgICAgICAgICAgIC8vIOWnlOaJmOS6i+S7tuimgeWFiOinpuWPkVxuICAgICAgICAgICAgICAgIHBhcmVudF8xLmVtaXREZWxlZ2F0aW9uKHR5cGUsIGV2ZW50T2JqKTtcbiAgICAgICAgICAgICAgICAvLyDkuovku7blhpLms6HlgZzmraLvvIzkuI3og73lpqjnoo3lp5TmiZjkuovku7ZcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50T2JqLnByb3BhZ2F0aW9uU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgICAgICBidWJibGVFdmVudChwYXJlbnRfMSwgdHlwZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBldmVudE9iai5wcm9wYWdhdGlvblBhdGgucHVzaChwYXJlbnRfMSk7XG4gICAgICAgICAgICAgICAgcGFyZW50XzEgPSBwYXJlbnRfMS5nZXRQYXJlbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWmguaenOayoeaciSBzaGFwZSDnm7TmjqXlnKggY2FudmFzIOS4iuinpuWPkVxuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICAgICAgLy8g55u05o6l6Kem5Y+RIGNhbnZhcyDkuIrnmoTkuovku7ZcbiAgICAgICAgICAgIGVtaXRUYXJnZXRFdmVudChjYW52YXMsIHR5cGUsIGV2ZW50T2JqKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDmuIXnkIbkuovku7ZcbiAgICAgICAgdGhpcy5fY2xlYXJFdmVudHMoKTtcbiAgICAgICAgLy8g5riF55CG57yT5a2Y55qE5a+56LGhXG4gICAgICAgIHRoaXMuY2FudmFzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50U2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLmRyYWdnaW5nU2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duVGltZVN0YW1wID0gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiBFdmVudENvbnRyb2xsZXI7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgRXZlbnRDb250cm9sbGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXZlbnQtY29udG9sbGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar GraphEvent = /** @class */ (function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () { };\n GraphEvent.prototype.restore = function () { };\n return GraphEvent;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (GraphEvent);\n//# sourceMappingURL=graph-event.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2V2ZW50L2dyYXBoLWV2ZW50LmpzPzJmMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QyxnREFBZ0Q7QUFDaEQ7QUFDQSxDQUFDO0FBQ2MseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vZXZlbnQvZ3JhcGgtZXZlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgR3JhcGhFdmVudCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKblhYHorrjlhpLms6FcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJ1YmJsZXMgPSB0cnVlO1xuICAgICAgICAvKipcbiAgICAgICAgICog6Kem5Y+R5a+56LGhXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDnm5HlkKzlr7nosaFcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3VycmVudFRhcmdldCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlp5TmiZjlr7nosaFcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVsZWdhdGVUYXJnZXQgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5aeU5omY5LqL5Lu255uR5ZCs5a+56LGh55qE5Luj55CG5a+56LGh77yM5Y2zIGV2LmRlbGVnYXRlT2JqZWN0ID0gZXYuY3VycmVudFRhcmdldC5nZXQoJ2RlbGVnYXRlT2JqZWN0JylcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVsZWdhdGVPYmplY3QgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5piv5ZCm6Zi75q2i5LqG5Y6f55Sf5LqL5Lu2XG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbpmLvmraLkvKDmkq3vvIjlkJHkuIrlhpLms6HvvIlcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICog6Kem5Y+R5LqL5Lu255qE5Zu+5b2iXG4gICAgICAgICAqIEB0eXBlIHtJU2hhcGV9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnNoYXBlID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOW8gOWni+inpuWPkeS6i+S7tueahOWbvuW9olxuICAgICAgICAgKiBAdHlwZSB7SVNoYXBlfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5mcm9tU2hhcGUgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5LqL5Lu257uT5p2f5pe255qE6Kem5Y+R5Zu+5b2iXG4gICAgICAgICAqIEB0eXBlIHtJU2hhcGV9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRvU2hhcGUgPSBudWxsO1xuICAgICAgICAvLyDop6blj5Hkuovku7bnmoTot6/lvoRcbiAgICAgICAgdGhpcy5wcm9wYWdhdGlvblBhdGggPSBbXTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5uYW1lID0gdHlwZTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMudGltZVN0YW1wID0gZXZlbnQudGltZVN0YW1wO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDpmLvmraLmtY/op4jlmajpu5jorqTnmoTooYzkuLpcbiAgICAgKi9cbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmYu+atouWGkuazoVxuICAgICAqL1xuICAgIEdyYXBoRXZlbnQucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlO1xuICAgIH07XG4gICAgR3JhcGhFdmVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlID0gdGhpcy50eXBlO1xuICAgICAgICByZXR1cm4gXCJbRXZlbnQgKHR5cGU9XCIgKyB0eXBlICsgXCIpXVwiO1xuICAgIH07XG4gICAgR3JhcGhFdmVudC5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIHJldHVybiBHcmFwaEV2ZW50O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEdyYXBoRXZlbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncmFwaC1ldmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/path */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"PathUtil\", function() { return _util_path__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _types__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_interfaces__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _interfaces__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _interfaces__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _event_graph_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./event/graph-event */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Event\", function() { return _event_graph_event__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _abstract_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _abstract_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./abstract/canvas */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractCanvas\", function() { return _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _abstract_group__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./abstract/group */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGroup\", function() { return _abstract_group__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _abstract_shape__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./abstract/shape */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractShape\", function() { return _abstract_shape__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _bbox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bbox */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _bbox__WEBPACK_IMPORTED_MODULE_8__[\"getBBoxMethod\"]; });\n\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util/text */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"getTextHeight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"assembleFont\"]; });\n\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return _util_util__WEBPACK_IMPORTED_MODULE_10__[\"isAllowCapture\"]; });\n\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./util/matrix */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"multiplyVec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"invert\"]; });\n\n/* harmony import */ var _util_offscreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./util/offscreen */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return _util_offscreen__WEBPACK_IMPORTED_MODULE_12__[\"getOffScreenContext\"]; });\n\n/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2luZGV4LmpzPzUzY2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3dDO0FBQ2hCO0FBQ0s7QUFDMEI7QUFDTDtBQUNZO0FBQ0Y7QUFDQTtBQUN4QztBQUNtQjtBQUNtQjtBQUNiO0FBQ1E7QUFDRTtBQUNoRDtBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBHIOeahOWfuuehgOaOpeWPo+WumuS5ieWSjOaJgOacieeahOaKveixoeexu1xuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCAqIGFzIFBhdGhVdGlsIGZyb20gJy4vdXRpbC9wYXRoJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRXZlbnQgfSBmcm9tICcuL2V2ZW50L2dyYXBoLWV2ZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQmFzZSB9IGZyb20gJy4vYWJzdHJhY3QvYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0Q2FudmFzIH0gZnJvbSAnLi9hYnN0cmFjdC9jYW52YXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBBYnN0cmFjdEdyb3VwIH0gZnJvbSAnLi9hYnN0cmFjdC9ncm91cCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0U2hhcGUgfSBmcm9tICcuL2Fic3RyYWN0L3NoYXBlJztcbmV4cG9ydCB7IFBhdGhVdGlsIH07XG5leHBvcnQgeyBnZXRCQm94TWV0aG9kIH0gZnJvbSAnLi9iYm94JztcbmV4cG9ydCB7IGdldFRleHRIZWlnaHQsIGFzc2VtYmxlRm9udCB9IGZyb20gJy4vdXRpbC90ZXh0JztcbmV4cG9ydCB7IGlzQWxsb3dDYXB0dXJlIH0gZnJvbSAnLi91dGlsL3V0aWwnO1xuZXhwb3J0IHsgbXVsdGlwbHlWZWMyLCBpbnZlcnQgfSBmcm9tICcuL3V0aWwvbWF0cml4JztcbmV4cG9ydCB7IGdldE9mZlNjcmVlbkNvbnRleHQgfSBmcm9tICcuL3V0aWwvb2Zmc2NyZWVuJztcbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcwLjUuNic7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("//# sourceMappingURL=interfaces.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2ludGVyZmFjZXMuanM/NmQ4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vaW50ZXJmYWNlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVyZmFjZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3R5cGVzLmpzP2NkNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3R5cGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js ***! \*************************************************************************/ /*! exports provided: isColorProp, isGradientColor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isColorProp\", function() { return isColorProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGradientColor\", function() { return isGradientColor; });\nvar isColorProp = function (prop) { return ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop); };\nvar isGradientColor = function (val) { return /^[r,R,L,l]{1}[\\s]*\\(/.test(val); };\n//# sourceMappingURL=color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvY29sb3IuanM/NjM3ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTyxtQ0FBbUMsc0VBQXNFO0FBQ3pHLHNDQUFzQyxvQkFBb0IsRUFBRSxtQkFBbUI7QUFDdEYiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvY29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGlzQ29sb3JQcm9wID0gZnVuY3Rpb24gKHByb3ApIHsgcmV0dXJuIFsnZmlsbCcsICdzdHJva2UnLCAnZmlsbFN0eWxlJywgJ3N0cm9rZVN0eWxlJ10uaW5jbHVkZXMocHJvcCk7IH07XG5leHBvcnQgdmFyIGlzR3JhZGllbnRDb2xvciA9IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIC9eW3IsUixMLGxdezF9W1xcc10qXFwoLy50ZXN0KHZhbCk7IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb2xvci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js ***! \**************************************************************************/ /*! exports provided: multiplyMatrix, multiplyVec2, invert */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyMatrix\", function() { return multiplyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return multiplyVec2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nfunction multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nfunction multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nfunction invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n//# sourceMappingURL=matrix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvbWF0cml4LmpzPzNjNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS91dGlsL21hdHJpeC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDnn6npmLXov5DnrpfvvIzmnKzmnaXmmK/opoHlvJXlhaUgZ2wtbWF0cml4LCDkvYbmmK/ogIPomZHliLAgZy1tb2JpbGUg5a+55aSn5bCP5pyJ6ZmQ5Yi277yM5ZCM5pe2IGctd2ViZ2wg5L2/55So55qEIG1hdHJpeCDkuI3kuIDoh7RcbiAqIOaJgOS7pe+8jOi/memHjOS7heWunueOsCAyRCDlh6DkuKrov5DnrpfvvIzkuIrlsYLoh6rlt7HlvJXlhaUgZ2wtbWF0cml4XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuLyoqXG4gKiAz6Zi255+p6Zi155u45LmYXG4gKiBAcGFyYW0ge251bWJlcltdfSBhIOefqemYtTFcbiAqIEBwYXJhbSB7bnVtYmVyW119IGIg55+p6Zi1MlxuICovXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlNYXRyaXgoYSwgYikge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgYTAwID0gYVswXTtcbiAgICB2YXIgYTAxID0gYVsxXTtcbiAgICB2YXIgYTAyID0gYVsyXTtcbiAgICB2YXIgYTEwID0gYVszXTtcbiAgICB2YXIgYTExID0gYVs0XTtcbiAgICB2YXIgYTEyID0gYVs1XTtcbiAgICB2YXIgYTIwID0gYVs2XTtcbiAgICB2YXIgYTIxID0gYVs3XTtcbiAgICB2YXIgYTIyID0gYVs4XTtcbiAgICB2YXIgYjAwID0gYlswXTtcbiAgICB2YXIgYjAxID0gYlsxXTtcbiAgICB2YXIgYjAyID0gYlsyXTtcbiAgICB2YXIgYjEwID0gYlszXTtcbiAgICB2YXIgYjExID0gYls0XTtcbiAgICB2YXIgYjEyID0gYls1XTtcbiAgICB2YXIgYjIwID0gYls2XTtcbiAgICB2YXIgYjIxID0gYls3XTtcbiAgICB2YXIgYjIyID0gYls4XTtcbiAgICBvdXRbMF0gPSBiMDAgKiBhMDAgKyBiMDEgKiBhMTAgKyBiMDIgKiBhMjA7XG4gICAgb3V0WzFdID0gYjAwICogYTAxICsgYjAxICogYTExICsgYjAyICogYTIxO1xuICAgIG91dFsyXSA9IGIwMCAqIGEwMiArIGIwMSAqIGExMiArIGIwMiAqIGEyMjtcbiAgICBvdXRbM10gPSBiMTAgKiBhMDAgKyBiMTEgKiBhMTAgKyBiMTIgKiBhMjA7XG4gICAgb3V0WzRdID0gYjEwICogYTAxICsgYjExICogYTExICsgYjEyICogYTIxO1xuICAgIG91dFs1XSA9IGIxMCAqIGEwMiArIGIxMSAqIGExMiArIGIxMiAqIGEyMjtcbiAgICBvdXRbNl0gPSBiMjAgKiBhMDAgKyBiMjEgKiBhMTAgKyBiMjIgKiBhMjA7XG4gICAgb3V0WzddID0gYjIwICogYTAxICsgYjIxICogYTExICsgYjIyICogYTIxO1xuICAgIG91dFs4XSA9IGIyMCAqIGEwMiArIGIyMSAqIGExMiArIGIyMiAqIGEyMjtcbiAgICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiAz6Zi255+p6Zi15ZCMMumYtuWQkemHj+ebuOS5mFxuICogQHBhcmFtIHtudW1iZXJbXX0gbSDnn6npmLVcbiAqIEBwYXJhbSB7bnVtYmVyW119IHYg5LqM6Zi25ZCR6YePXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVZlYzIobSwgdikge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgeCA9IHZbMF07XG4gICAgdmFyIHkgPSB2WzFdO1xuICAgIG91dFswXSA9IG1bMF0gKiB4ICsgbVszXSAqIHkgKyBtWzZdO1xuICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs0XSAqIHkgKyBtWzddO1xuICAgIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIOefqemYteeahOmAhlxuICogQHBhcmFtIHtudW1iZXJbXX0gYSDnn6npmLVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludmVydChhKSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciBhMDAgPSBhWzBdO1xuICAgIHZhciBhMDEgPSBhWzFdO1xuICAgIHZhciBhMDIgPSBhWzJdO1xuICAgIHZhciBhMTAgPSBhWzNdO1xuICAgIHZhciBhMTEgPSBhWzRdO1xuICAgIHZhciBhMTIgPSBhWzVdO1xuICAgIHZhciBhMjAgPSBhWzZdO1xuICAgIHZhciBhMjEgPSBhWzddO1xuICAgIHZhciBhMjIgPSBhWzhdO1xuICAgIHZhciBiMDEgPSBhMjIgKiBhMTEgLSBhMTIgKiBhMjE7XG4gICAgdmFyIGIxMSA9IC1hMjIgKiBhMTAgKyBhMTIgKiBhMjA7XG4gICAgdmFyIGIyMSA9IGEyMSAqIGExMCAtIGExMSAqIGEyMDtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50XG4gICAgdmFyIGRldCA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSArIGEwMiAqIGIyMTtcbiAgICBpZiAoIWRldCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZGV0ID0gMS4wIC8gZGV0O1xuICAgIG91dFswXSA9IGIwMSAqIGRldDtcbiAgICBvdXRbMV0gPSAoLWEyMiAqIGEwMSArIGEwMiAqIGEyMSkgKiBkZXQ7XG4gICAgb3V0WzJdID0gKGExMiAqIGEwMSAtIGEwMiAqIGExMSkgKiBkZXQ7XG4gICAgb3V0WzNdID0gYjExICogZGV0O1xuICAgIG91dFs0XSA9IChhMjIgKiBhMDAgLSBhMDIgKiBhMjApICogZGV0O1xuICAgIG91dFs1XSA9ICgtYTEyICogYTAwICsgYTAyICogYTEwKSAqIGRldDtcbiAgICBvdXRbNl0gPSBiMjEgKiBkZXQ7XG4gICAgb3V0WzddID0gKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApICogZGV0O1xuICAgIG91dFs4XSA9IChhMTEgKiBhMDAgLSBhMDEgKiBhMTApICogZGV0O1xuICAgIHJldHVybiBvdXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXRyaXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js ***! \*****************************************************************************/ /*! exports provided: getOffScreenContext */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return getOffScreenContext; });\n// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nfunction getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n//# sourceMappingURL=offscreen.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvb2Zmc2NyZWVuLmpzP2FmZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vdXRpbC9vZmZzY3JlZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDlhajlsYDorr7nva7kuIDkuKrllK/kuIDnprvlsY/nmoQgY3R477yM55So5LqO6K6h566XIGlzUG9pbnRJblBhdGhcbnZhciBvZmZTY3JlZW5DdHggPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9mZlNjcmVlbkNvbnRleHQoKSB7XG4gICAgaWYgKCFvZmZTY3JlZW5DdHgpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXMud2lkdGggPSAxO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMTtcbiAgICAgICAgb2ZmU2NyZWVuQ3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgfVxuICAgIHJldHVybiBvZmZTY3JlZW5DdHg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vZmZzY3JlZW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js ***! \************************************************************************/ /*! exports provided: catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catmullRomToBezier\", function() { return catmullRomToBezier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPath\", function() { return fillPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPathByDiff\", function() { return fillPathByDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPath\", function() { return formatPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return intersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathArray\", function() { return parsePathArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathString\", function() { return parsePathString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToAbsolute\", function() { return pathToAbsolute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToCurve\", function() { return pathToCurve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectPath\", function() { return rectPath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function (crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n }\n else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n }\n else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n }\n else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n }\n else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n return d;\n};\nvar ellipsePath = function (x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n }\n else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n }\n else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n }\n else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n }\n else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n }\n else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function (x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function (x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function (path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function (path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in\n {\n T: 1,\n Q: 1,\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n var fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C')\n pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [\n -0.1252,\n 0.1252,\n -0.3678,\n 0.3678,\n -0.5873,\n 0.5873,\n -0.7699,\n 0.7699,\n -0.9041,\n 0.9041,\n -0.9816,\n 0.9816,\n ];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function (x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y))));\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function (source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\n\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvcGF0aC5qcz80Zjk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsbUJBQW1CO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsUUFBUTtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELFFBQVE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLG1EQUFtRCxRQUFRO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLFFBQVE7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLCtCQUErQjtBQUMvQix3Q0FBd0M7QUFDeEM7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywwREFBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVCQUF1QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwyQkFBMkI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLHNCQUFzQjtBQUN0QjtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0EsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixnREFBZ0Q7QUFDOUU7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFFBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMySjtBQUMzSiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vdXRpbC9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIFNQQUNFUyA9ICdcXHgwOVxceDBhXFx4MGJcXHgwY1xceDBkXFx4MjBcXHhhMFxcdTE2ODBcXHUxODBlXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMGFcXHUyMDJmXFx1MjA1ZlxcdTMwMDBcXHUyMDI4XFx1MjAyOSc7XG52YXIgUEFUSF9DT01NQU5EID0gbmV3IFJlZ0V4cChcIihbYS16XSlbXCIgKyBTUEFDRVMgKyBcIixdKigoLT9cXFxcZCpcXFxcLj9cXFxcZCooPzplW1xcXFwtK10/XFxcXGQrKT9bXCIgKyBTUEFDRVMgKyBcIl0qLD9bXCIgKyBTUEFDRVMgKyBcIl0qKSspXCIsICdpZycpO1xudmFyIFBBVEhfVkFMVUVTID0gbmV3IFJlZ0V4cChcIigtP1xcXFxkKlxcXFwuP1xcXFxkKig/OmVbXFxcXC0rXT9cXFxcZCspPylbXCIgKyBTUEFDRVMgKyBcIl0qLD9bXCIgKyBTUEFDRVMgKyBcIl0qXCIsICdpZycpO1xuLy8gUGFyc2UgZ2l2ZW4gcGF0aCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBhcnJheXMgb2YgcGF0aCBzZWdtZW50c1xudmFyIHBhcnNlUGF0aFN0cmluZyA9IGZ1bmN0aW9uIChwYXRoU3RyaW5nKSB7XG4gICAgaWYgKCFwYXRoU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheShwYXRoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gcGF0aFN0cmluZztcbiAgICB9XG4gICAgdmFyIHBhcmFtQ291bnRzID0ge1xuICAgICAgICBhOiA3LFxuICAgICAgICBjOiA2LFxuICAgICAgICBvOiAyLFxuICAgICAgICBoOiAxLFxuICAgICAgICBsOiAyLFxuICAgICAgICBtOiAyLFxuICAgICAgICByOiA0LFxuICAgICAgICBxOiA0LFxuICAgICAgICBzOiA0LFxuICAgICAgICB0OiAyLFxuICAgICAgICB2OiAxLFxuICAgICAgICB1OiAzLFxuICAgICAgICB6OiAwLFxuICAgIH07XG4gICAgdmFyIGRhdGEgPSBbXTtcbiAgICBTdHJpbmcocGF0aFN0cmluZykucmVwbGFjZShQQVRIX0NPTU1BTkQsIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBbXTtcbiAgICAgICAgdmFyIG5hbWUgPSBiLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGMucmVwbGFjZShQQVRIX1ZBTFVFUywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIGIgJiYgcGFyYW1zLnB1c2goK2IpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdtJyAmJiBwYXJhbXMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgZGF0YS5wdXNoKFtiXS5jb25jYXQocGFyYW1zLnNwbGljZSgwLCAyKSkpO1xuICAgICAgICAgICAgbmFtZSA9ICdsJztcbiAgICAgICAgICAgIGIgPSBiID09PSAnbScgPyAnbCcgOiAnTCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09ICdvJyAmJiBwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goW2IsIHBhcmFtc1swXV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lID09PSAncicpIHtcbiAgICAgICAgICAgIGRhdGEucHVzaChbYl0uY29uY2F0KHBhcmFtcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKHBhcmFtcy5sZW5ndGggPj0gcGFyYW1Db3VudHNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goW2JdLmNvbmNhdChwYXJhbXMuc3BsaWNlKDAsIHBhcmFtQ291bnRzW25hbWVdKSkpO1xuICAgICAgICAgICAgICAgIGlmICghcGFyYW1Db3VudHNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoU3RyaW5nO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xufTtcbi8vIGh0dHA6Ly9zY2hlcGVycy5jYy9nZXR0aW5nLXRvLXRoZS1wb2ludFxudmFyIGNhdG11bGxSb21Ub0JlemllciA9IGZ1bmN0aW9uIChjcnAsIHopIHtcbiAgICB2YXIgZCA9IFtdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBmb3IgKHZhciBpID0gMCwgaUxlbiA9IGNycC5sZW5ndGg7IGlMZW4gLSAyICogIXogPiBpOyBpICs9IDIpIHtcbiAgICAgICAgdmFyIHAgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogK2NycFtpIC0gMl0sXG4gICAgICAgICAgICAgICAgeTogK2NycFtpIC0gMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6ICtjcnBbaV0sXG4gICAgICAgICAgICAgICAgeTogK2NycFtpICsgMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6ICtjcnBbaSArIDJdLFxuICAgICAgICAgICAgICAgIHk6ICtjcnBbaSArIDNdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiArY3JwW2kgKyA0XSxcbiAgICAgICAgICAgICAgICB5OiArY3JwW2kgKyA1XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGlmICh6KSB7XG4gICAgICAgICAgICBpZiAoIWkpIHtcbiAgICAgICAgICAgICAgICBwWzBdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwW2lMZW4gLSAyXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFtpTGVuIC0gMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlMZW4gLSA0ID09PSBpKSB7XG4gICAgICAgICAgICAgICAgcFszXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogK2NycFswXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFsxXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaUxlbiAtIDIgPT09IGkpIHtcbiAgICAgICAgICAgICAgICBwWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwWzBdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwWzFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcFszXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogK2NycFsyXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFszXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlMZW4gLSA0ID09PSBpKSB7XG4gICAgICAgICAgICAgICAgcFszXSA9IHBbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaSkge1xuICAgICAgICAgICAgICAgIHBbMF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICtjcnBbaV0sXG4gICAgICAgICAgICAgICAgICAgIHk6ICtjcnBbaSArIDFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZC5wdXNoKFtcbiAgICAgICAgICAgICdDJyxcbiAgICAgICAgICAgICgtcFswXS54ICsgNiAqIHBbMV0ueCArIHBbMl0ueCkgLyA2LFxuICAgICAgICAgICAgKC1wWzBdLnkgKyA2ICogcFsxXS55ICsgcFsyXS55KSAvIDYsXG4gICAgICAgICAgICAocFsxXS54ICsgNiAqIHBbMl0ueCAtIHBbM10ueCkgLyA2LFxuICAgICAgICAgICAgKHBbMV0ueSArIDYgKiBwWzJdLnkgLSBwWzNdLnkpIC8gNixcbiAgICAgICAgICAgIHBbMl0ueCxcbiAgICAgICAgICAgIHBbMl0ueSxcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIHJldHVybiBkO1xufTtcbnZhciBlbGxpcHNlUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIGEpIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgaWYgKGEgPT09IG51bGwgJiYgcnkgPT09IG51bGwpIHtcbiAgICAgICAgcnkgPSByeDtcbiAgICB9XG4gICAgeCA9ICt4O1xuICAgIHkgPSAreTtcbiAgICByeCA9ICtyeDtcbiAgICByeSA9ICtyeTtcbiAgICBpZiAoYSAhPT0gbnVsbCkge1xuICAgICAgICB2YXIgcmFkID0gTWF0aC5QSSAvIDE4MDtcbiAgICAgICAgdmFyIHgxID0geCArIHJ4ICogTWF0aC5jb3MoLXJ5ICogcmFkKTtcbiAgICAgICAgdmFyIHgyID0geCArIHJ4ICogTWF0aC5jb3MoLWEgKiByYWQpO1xuICAgICAgICB2YXIgeTEgPSB5ICsgcnggKiBNYXRoLnNpbigtcnkgKiByYWQpO1xuICAgICAgICB2YXIgeTIgPSB5ICsgcnggKiBNYXRoLnNpbigtYSAqIHJhZCk7XG4gICAgICAgIHJlcyA9IFtcbiAgICAgICAgICAgIFsnTScsIHgxLCB5MV0sXG4gICAgICAgICAgICBbJ0EnLCByeCwgcngsIDAsICsoYSAtIHJ5ID4gMTgwKSwgMCwgeDIsIHkyXSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlcyA9IFtbJ00nLCB4LCB5XSwgWydtJywgMCwgLXJ5XSwgWydhJywgcngsIHJ5LCAwLCAxLCAxLCAwLCAyICogcnldLCBbJ2EnLCByeCwgcnksIDAsIDEsIDEsIDAsIC0yICogcnldLCBbJ3onXV07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xudmFyIHBhdGhUb0Fic29sdXRlID0gZnVuY3Rpb24gKHBhdGhBcnJheSkge1xuICAgIHBhdGhBcnJheSA9IHBhcnNlUGF0aFN0cmluZyhwYXRoQXJyYXkpO1xuICAgIGlmICghcGF0aEFycmF5IHx8ICFwYXRoQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbWydNJywgMCwgMF1dO1xuICAgIH1cbiAgICB2YXIgcmVzID0gW107XG4gICAgdmFyIHggPSAwO1xuICAgIHZhciB5ID0gMDtcbiAgICB2YXIgbXggPSAwO1xuICAgIHZhciBteSA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICB2YXIgcGEwO1xuICAgIHZhciBkb3RzO1xuICAgIGlmIChwYXRoQXJyYXlbMF1bMF0gPT09ICdNJykge1xuICAgICAgICB4ID0gK3BhdGhBcnJheVswXVsxXTtcbiAgICAgICAgeSA9ICtwYXRoQXJyYXlbMF1bMl07XG4gICAgICAgIG14ID0geDtcbiAgICAgICAgbXkgPSB5O1xuICAgICAgICBzdGFydCsrO1xuICAgICAgICByZXNbMF0gPSBbJ00nLCB4LCB5XTtcbiAgICB9XG4gICAgdmFyIGNyeiA9IHBhdGhBcnJheS5sZW5ndGggPT09IDMgJiZcbiAgICAgICAgcGF0aEFycmF5WzBdWzBdID09PSAnTScgJiZcbiAgICAgICAgcGF0aEFycmF5WzFdWzBdLnRvVXBwZXJDYXNlKCkgPT09ICdSJyAmJlxuICAgICAgICBwYXRoQXJyYXlbMl1bMF0udG9VcHBlckNhc2UoKSA9PT0gJ1onO1xuICAgIGZvciAodmFyIHIgPSB2b2lkIDAsIHBhID0gdm9pZCAwLCBpID0gc3RhcnQsIGlpID0gcGF0aEFycmF5Lmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgcmVzLnB1c2goKHIgPSBbXSkpO1xuICAgICAgICBwYSA9IHBhdGhBcnJheVtpXTtcbiAgICAgICAgcGEwID0gcGFbMF07XG4gICAgICAgIGlmIChwYTAgIT09IHBhMC50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgICAgICByWzBdID0gcGEwLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHJbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgclsxXSA9IHBhWzFdO1xuICAgICAgICAgICAgICAgICAgICByWzJdID0gcGFbMl07XG4gICAgICAgICAgICAgICAgICAgIHJbM10gPSBwYVszXTtcbiAgICAgICAgICAgICAgICAgICAgcls0XSA9IHBhWzRdO1xuICAgICAgICAgICAgICAgICAgICByWzVdID0gcGFbNV07XG4gICAgICAgICAgICAgICAgICAgIHJbNl0gPSArcGFbNl0gKyB4O1xuICAgICAgICAgICAgICAgICAgICByWzddID0gK3BhWzddICsgeTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSArcGFbMV0gKyB5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgclsxXSA9ICtwYVsxXSArIHg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICBkb3RzID0gW3gsIHldLmNvbmNhdChwYS5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAyLCBqaiA9IGRvdHMubGVuZ3RoOyBqIDwgamo7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG90c1tqXSA9ICtkb3RzW2pdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvdHNbKytqXSA9ICtkb3RzW2pdICsgeTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoY2F0bXVsbFJvbVRvQmV6aWVyKGRvdHMsIGNyeikpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdPJzpcbiAgICAgICAgICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBkb3RzID0gZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgZG90cy5wdXNoKGRvdHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGRvdHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGVsbGlwc2VQYXRoKHgsIHksIHBhWzFdLCBwYVsyXSwgcGFbM10pKTtcbiAgICAgICAgICAgICAgICAgICAgciA9IFsnVSddLmNvbmNhdChyZXNbcmVzLmxlbmd0aCAtIDFdLnNsaWNlKC0yKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBteCA9ICtwYVsxXSArIHg7XG4gICAgICAgICAgICAgICAgICAgIG15ID0gK3BhWzJdICsgeTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvciBsaW50XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDEsIGpqID0gcGEubGVuZ3RoOyBqIDwgamo7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcltqXSA9ICtwYVtqXSArIChqICUgMiA/IHggOiB5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhMCA9PT0gJ1InKSB7XG4gICAgICAgICAgICBkb3RzID0gW3gsIHldLmNvbmNhdChwYS5zbGljZSgxKSk7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGNhdG11bGxSb21Ub0Jlemllcihkb3RzLCBjcnopKTtcbiAgICAgICAgICAgIHIgPSBbJ1InXS5jb25jYXQocGEuc2xpY2UoLTIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwYTAgPT09ICdPJykge1xuICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgICAgZG90cyA9IGVsbGlwc2VQYXRoKHgsIHksIHBhWzFdLCBwYVsyXSk7XG4gICAgICAgICAgICBkb3RzLnB1c2goZG90c1swXSk7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGRvdHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhMCA9PT0gJ1UnKSB7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGVsbGlwc2VQYXRoKHgsIHksIHBhWzFdLCBwYVsyXSwgcGFbM10pKTtcbiAgICAgICAgICAgIHIgPSBbJ1UnXS5jb25jYXQocmVzW3Jlcy5sZW5ndGggLSAxXS5zbGljZSgtMikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDAsIGtrID0gcGEubGVuZ3RoOyBrIDwga2s7IGsrKykge1xuICAgICAgICAgICAgICAgIHJba10gPSBwYVtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYTAgPSBwYTAudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKHBhMCAhPT0gJ08nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHJbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgeCA9ICtteDtcbiAgICAgICAgICAgICAgICAgICAgeSA9ICtteTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgIHggPSByWzFdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICAgICAgeSA9IHJbMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBteCA9IHJbci5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgbXkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBmb3IgbGludFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHggPSByW3IubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgICAgIHkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgbDJjID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuIFt4MSwgeTEsIHgyLCB5MiwgeDIsIHkyXTtcbn07XG52YXIgcTJjID0gZnVuY3Rpb24gKHgxLCB5MSwgYXgsIGF5LCB4MiwgeTIpIHtcbiAgICB2YXIgXzEzID0gMSAvIDM7XG4gICAgdmFyIF8yMyA9IDIgLyAzO1xuICAgIHJldHVybiBbXzEzICogeDEgKyBfMjMgKiBheCwgXzEzICogeTEgKyBfMjMgKiBheSwgXzEzICogeDIgKyBfMjMgKiBheCwgXzEzICogeTIgKyBfMjMgKiBheSwgeDIsIHkyXTtcbn07XG52YXIgYTJjID0gZnVuY3Rpb24gKHgxLCB5MSwgcngsIHJ5LCBhbmdsZSwgbGFyZ2VfYXJjX2ZsYWcsIHN3ZWVwX2ZsYWcsIHgyLCB5MiwgcmVjdXJzaXZlKSB7XG4gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gb2Ygd2hlcmUgdGhpcyBtYXRoIGNhbWUgZnJvbSB2aXNpdDpcbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbXBsbm90ZS5odG1sI0FyY0ltcGxlbWVudGF0aW9uTm90ZXNcbiAgICBpZiAocnggPT09IHJ5KSB7XG4gICAgICAgIHJ4ICs9IDE7XG4gICAgfVxuICAgIHZhciBfMTIwID0gKE1hdGguUEkgKiAxMjApIC8gMTgwO1xuICAgIHZhciByYWQgPSAoTWF0aC5QSSAvIDE4MCkgKiAoK2FuZ2xlIHx8IDApO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgeHk7XG4gICAgdmFyIGYxO1xuICAgIHZhciBmMjtcbiAgICB2YXIgY3g7XG4gICAgdmFyIGN5O1xuICAgIHZhciByb3RhdGUgPSBmdW5jdGlvbiAoeCwgeSwgcmFkKSB7XG4gICAgICAgIHZhciBYID0geCAqIE1hdGguY29zKHJhZCkgLSB5ICogTWF0aC5zaW4ocmFkKTtcbiAgICAgICAgdmFyIFkgPSB4ICogTWF0aC5zaW4ocmFkKSArIHkgKiBNYXRoLmNvcyhyYWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogWCxcbiAgICAgICAgICAgIHk6IFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBpZiAoIXJlY3Vyc2l2ZSkge1xuICAgICAgICB4eSA9IHJvdGF0ZSh4MSwgeTEsIC1yYWQpO1xuICAgICAgICB4MSA9IHh5Lng7XG4gICAgICAgIHkxID0geHkueTtcbiAgICAgICAgeHkgPSByb3RhdGUoeDIsIHkyLCAtcmFkKTtcbiAgICAgICAgeDIgPSB4eS54O1xuICAgICAgICB5MiA9IHh5Lnk7XG4gICAgICAgIGlmICh4MSA9PT0geDIgJiYgeTEgPT09IHkyKSB7XG4gICAgICAgICAgICAvLyDoi6XlvKfnmoTotbflp4vngrnlkoznu4jngrnph43lj6DliJnplJnlvIDkuIDngrlcbiAgICAgICAgICAgIHgyICs9IDE7XG4gICAgICAgICAgICB5MiArPSAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnN0IGNvcyA9IE1hdGguY29zKE1hdGguUEkgLyAxODAgKiBhbmdsZSk7XG4gICAgICAgIC8vIGNvbnN0IHNpbiA9IE1hdGguc2luKE1hdGguUEkgLyAxODAgKiBhbmdsZSk7XG4gICAgICAgIHZhciB4ID0gKHgxIC0geDIpIC8gMjtcbiAgICAgICAgdmFyIHkgPSAoeTEgLSB5MikgLyAyO1xuICAgICAgICB2YXIgaCA9ICh4ICogeCkgLyAocnggKiByeCkgKyAoeSAqIHkpIC8gKHJ5ICogcnkpO1xuICAgICAgICBpZiAoaCA+IDEpIHtcbiAgICAgICAgICAgIGggPSBNYXRoLnNxcnQoaCk7XG4gICAgICAgICAgICByeCA9IGggKiByeDtcbiAgICAgICAgICAgIHJ5ID0gaCAqIHJ5O1xuICAgICAgICB9XG4gICAgICAgIHZhciByeDIgPSByeCAqIHJ4O1xuICAgICAgICB2YXIgcnkyID0gcnkgKiByeTtcbiAgICAgICAgdmFyIGsgPSAobGFyZ2VfYXJjX2ZsYWcgPT09IHN3ZWVwX2ZsYWcgPyAtMSA6IDEpICpcbiAgICAgICAgICAgIE1hdGguc3FydChNYXRoLmFicygocngyICogcnkyIC0gcngyICogeSAqIHkgLSByeTIgKiB4ICogeCkgLyAocngyICogeSAqIHkgKyByeTIgKiB4ICogeCkpKTtcbiAgICAgICAgY3ggPSAoayAqIHJ4ICogeSkgLyByeSArICh4MSArIHgyKSAvIDI7XG4gICAgICAgIGN5ID0gKGsgKiAtcnkgKiB4KSAvIHJ4ICsgKHkxICsgeTIpIC8gMjtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmMSA9IE1hdGguYXNpbigoKHkxIC0gY3kpIC8gcnkpLnRvRml4ZWQoOSkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGYyID0gTWF0aC5hc2luKCgoeTIgLSBjeSkgLyByeSkudG9GaXhlZCg5KSk7XG4gICAgICAgIGYxID0geDEgPCBjeCA/IE1hdGguUEkgLSBmMSA6IGYxO1xuICAgICAgICBmMiA9IHgyIDwgY3ggPyBNYXRoLlBJIC0gZjIgOiBmMjtcbiAgICAgICAgZjEgPCAwICYmIChmMSA9IE1hdGguUEkgKiAyICsgZjEpO1xuICAgICAgICBmMiA8IDAgJiYgKGYyID0gTWF0aC5QSSAqIDIgKyBmMik7XG4gICAgICAgIGlmIChzd2VlcF9mbGFnICYmIGYxID4gZjIpIHtcbiAgICAgICAgICAgIGYxID0gZjEgLSBNYXRoLlBJICogMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN3ZWVwX2ZsYWcgJiYgZjIgPiBmMSkge1xuICAgICAgICAgICAgZjIgPSBmMiAtIE1hdGguUEkgKiAyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmMSA9IHJlY3Vyc2l2ZVswXTtcbiAgICAgICAgZjIgPSByZWN1cnNpdmVbMV07XG4gICAgICAgIGN4ID0gcmVjdXJzaXZlWzJdO1xuICAgICAgICBjeSA9IHJlY3Vyc2l2ZVszXTtcbiAgICB9XG4gICAgdmFyIGRmID0gZjIgLSBmMTtcbiAgICBpZiAoTWF0aC5hYnMoZGYpID4gXzEyMCkge1xuICAgICAgICB2YXIgZjJvbGQgPSBmMjtcbiAgICAgICAgdmFyIHgyb2xkID0geDI7XG4gICAgICAgIHZhciB5Mm9sZCA9IHkyO1xuICAgICAgICBmMiA9IGYxICsgXzEyMCAqIChzd2VlcF9mbGFnICYmIGYyID4gZjEgPyAxIDogLTEpO1xuICAgICAgICB4MiA9IGN4ICsgcnggKiBNYXRoLmNvcyhmMik7XG4gICAgICAgIHkyID0gY3kgKyByeSAqIE1hdGguc2luKGYyKTtcbiAgICAgICAgcmVzID0gYTJjKHgyLCB5MiwgcngsIHJ5LCBhbmdsZSwgMCwgc3dlZXBfZmxhZywgeDJvbGQsIHkyb2xkLCBbZjIsIGYyb2xkLCBjeCwgY3ldKTtcbiAgICB9XG4gICAgZGYgPSBmMiAtIGYxO1xuICAgIHZhciBjMSA9IE1hdGguY29zKGYxKTtcbiAgICB2YXIgczEgPSBNYXRoLnNpbihmMSk7XG4gICAgdmFyIGMyID0gTWF0aC5jb3MoZjIpO1xuICAgIHZhciBzMiA9IE1hdGguc2luKGYyKTtcbiAgICB2YXIgdCA9IE1hdGgudGFuKGRmIC8gNCk7XG4gICAgdmFyIGh4ID0gKDQgLyAzKSAqIHJ4ICogdDtcbiAgICB2YXIgaHkgPSAoNCAvIDMpICogcnkgKiB0O1xuICAgIHZhciBtMSA9IFt4MSwgeTFdO1xuICAgIHZhciBtMiA9IFt4MSArIGh4ICogczEsIHkxIC0gaHkgKiBjMV07XG4gICAgdmFyIG0zID0gW3gyICsgaHggKiBzMiwgeTIgLSBoeSAqIGMyXTtcbiAgICB2YXIgbTQgPSBbeDIsIHkyXTtcbiAgICBtMlswXSA9IDIgKiBtMVswXSAtIG0yWzBdO1xuICAgIG0yWzFdID0gMiAqIG0xWzFdIC0gbTJbMV07XG4gICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICByZXR1cm4gW20yLCBtMywgbTRdLmNvbmNhdChyZXMpO1xuICAgIH1cbiAgICByZXMgPSBbbTIsIG0zLCBtNF0uY29uY2F0KHJlcykuam9pbigpLnNwbGl0KCcsJyk7XG4gICAgdmFyIG5ld3JlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHJlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICAgIG5ld3Jlc1tpXSA9IGkgJSAyID8gcm90YXRlKHJlc1tpIC0gMV0sIHJlc1tpXSwgcmFkKS55IDogcm90YXRlKHJlc1tpXSwgcmVzW2kgKyAxXSwgcmFkKS54O1xuICAgIH1cbiAgICByZXR1cm4gbmV3cmVzO1xufTtcbnZhciBwYXRoVG9DdXJ2ZSA9IGZ1bmN0aW9uIChwYXRoLCBwYXRoMikge1xuICAgIHZhciBwID0gcGF0aFRvQWJzb2x1dGUocGF0aCk7XG4gICAgdmFyIHAyID0gcGF0aDIgJiYgcGF0aFRvQWJzb2x1dGUocGF0aDIpO1xuICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgYng6IDAsXG4gICAgICAgIGJ5OiAwLFxuICAgICAgICBYOiAwLFxuICAgICAgICBZOiAwLFxuICAgICAgICBxeDogbnVsbCxcbiAgICAgICAgcXk6IG51bGwsXG4gICAgfTtcbiAgICB2YXIgYXR0cnMyID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICBieDogMCxcbiAgICAgICAgYnk6IDAsXG4gICAgICAgIFg6IDAsXG4gICAgICAgIFk6IDAsXG4gICAgICAgIHF4OiBudWxsLFxuICAgICAgICBxeTogbnVsbCxcbiAgICB9O1xuICAgIHZhciBwY29tczEgPSBbXTsgLy8gcGF0aCBjb21tYW5kcyBvZiBvcmlnaW5hbCBwYXRoIHBcbiAgICB2YXIgcGNvbXMyID0gW107IC8vIHBhdGggY29tbWFuZHMgb2Ygb3JpZ2luYWwgcGF0aCBwMlxuICAgIHZhciBwZmlyc3QgPSAnJzsgLy8gdGVtcG9yYXJ5IGhvbGRlciBmb3Igb3JpZ2luYWwgcGF0aCBjb21tYW5kXG4gICAgdmFyIHBjb20gPSAnJzsgLy8gaG9sZGVyIGZvciBwcmV2aW91cyBwYXRoIGNvbW1hbmQgb2Ygb3JpZ2luYWwgcGF0aFxuICAgIHZhciBpaTtcbiAgICB2YXIgcHJvY2Vzc1BhdGggPSBmdW5jdGlvbiAocGF0aCwgZCwgcGNvbSkge1xuICAgICAgICB2YXIgbng7XG4gICAgICAgIHZhciBueTtcbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gWydDJywgZC54LCBkLnksIGQueCwgZC55LCBkLngsIGQueV07XG4gICAgICAgIH1cbiAgICAgICAgIShwYXRoWzBdIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVDogMSxcbiAgICAgICAgICAgICAgICBROiAxLFxuICAgICAgICAgICAgfSkgJiYgKGQucXggPSBkLnF5ID0gbnVsbCk7XG4gICAgICAgIHN3aXRjaCAocGF0aFswXSkge1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgZC5YID0gcGF0aFsxXTtcbiAgICAgICAgICAgICAgICBkLlkgPSBwYXRoWzJdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChhMmMuYXBwbHkoMCwgW2QueCwgZC55XS5jb25jYXQocGF0aC5zbGljZSgxKSkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgICAgIGlmIChwY29tID09PSAnQycgfHwgcGNvbSA9PT0gJ1MnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIFwiU1wiIGNhc2Ugd2UgaGF2ZSB0byB0YWtlIGludG8gYWNjb3VudCwgaWYgdGhlIHByZXZpb3VzIGNvbW1hbmQgaXMgQy9TLlxuICAgICAgICAgICAgICAgICAgICBueCA9IGQueCAqIDIgLSBkLmJ4OyAvLyBBbmQgcmVmbGVjdCB0aGUgcHJldmlvdXNcbiAgICAgICAgICAgICAgICAgICAgbnkgPSBkLnkgKiAyIC0gZC5ieTsgLy8gY29tbWFuZCdzIGNvbnRyb2wgcG9pbnQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9pbnQuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBvciBzb21lIGVsc2Ugb3Igbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBueCA9IGQueDtcbiAgICAgICAgICAgICAgICAgICAgbnkgPSBkLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhdGggPSBbJ0MnLCBueCwgbnldLmNvbmNhdChwYXRoLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgIGlmIChwY29tID09PSAnUScgfHwgcGNvbSA9PT0gJ1QnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIFwiVFwiIGNhc2Ugd2UgaGF2ZSB0byB0YWtlIGludG8gYWNjb3VudCwgaWYgdGhlIHByZXZpb3VzIGNvbW1hbmQgaXMgUS9ULlxuICAgICAgICAgICAgICAgICAgICBkLnF4ID0gZC54ICogMiAtIGQucXg7IC8vIEFuZCBtYWtlIGEgcmVmbGVjdGlvbiBzaW1pbGFyXG4gICAgICAgICAgICAgICAgICAgIGQucXkgPSBkLnkgKiAyIC0gZC5xeTsgLy8gdG8gY2FzZSBcIlNcIi5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9yIHNvbWV0aGluZyBlbHNlIG9yIG5vdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgZC5xeCA9IGQueDtcbiAgICAgICAgICAgICAgICAgICAgZC5xeSA9IGQueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChxMmMoZC54LCBkLnksIGQucXgsIGQucXksIHBhdGhbMV0sIHBhdGhbMl0pKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGQucXggPSBwYXRoWzFdO1xuICAgICAgICAgICAgICAgIGQucXkgPSBwYXRoWzJdO1xuICAgICAgICAgICAgICAgIHBhdGggPSBbJ0MnXS5jb25jYXQocTJjKGQueCwgZC55LCBwYXRoWzFdLCBwYXRoWzJdLCBwYXRoWzNdLCBwYXRoWzRdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgcGF0aFsxXSwgcGF0aFsyXSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChsMmMoZC54LCBkLnksIHBhdGhbMV0sIGQueSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChsMmMoZC54LCBkLnksIGQueCwgcGF0aFsxXSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChsMmMoZC54LCBkLnksIGQuWCwgZC5ZKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG4gICAgdmFyIGZpeEFyYyA9IGZ1bmN0aW9uIChwcCwgaSkge1xuICAgICAgICBpZiAocHBbaV0ubGVuZ3RoID4gNykge1xuICAgICAgICAgICAgcHBbaV0uc2hpZnQoKTtcbiAgICAgICAgICAgIHZhciBwaSA9IHBwW2ldO1xuICAgICAgICAgICAgd2hpbGUgKHBpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBjb21zMVtpXSA9ICdBJzsgLy8gaWYgY3JlYXRlZCBtdWx0aXBsZSBDOnMsIHRoZWlyIG9yaWdpbmFsIHNlZyBpcyBzYXZlZFxuICAgICAgICAgICAgICAgIHAyICYmIChwY29tczJbaV0gPSAnQScpOyAvLyB0aGUgc2FtZSBhcyBhYm92ZVxuICAgICAgICAgICAgICAgIHBwLnNwbGljZShpKyssIDAsIFsnQyddLmNvbmNhdChwaS5zcGxpY2UoMCwgNikpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBwLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIGlpID0gTWF0aC5tYXgocC5sZW5ndGgsIChwMiAmJiBwMi5sZW5ndGgpIHx8IDApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgZml4TSA9IGZ1bmN0aW9uIChwYXRoMSwgcGF0aDIsIGExLCBhMiwgaSkge1xuICAgICAgICBpZiAocGF0aDEgJiYgcGF0aDIgJiYgcGF0aDFbaV1bMF0gPT09ICdNJyAmJiBwYXRoMltpXVswXSAhPT0gJ00nKSB7XG4gICAgICAgICAgICBwYXRoMi5zcGxpY2UoaSwgMCwgWydNJywgYTIueCwgYTIueV0pO1xuICAgICAgICAgICAgYTEuYnggPSAwO1xuICAgICAgICAgICAgYTEuYnkgPSAwO1xuICAgICAgICAgICAgYTEueCA9IHBhdGgxW2ldWzFdO1xuICAgICAgICAgICAgYTEueSA9IHBhdGgxW2ldWzJdO1xuICAgICAgICAgICAgaWkgPSBNYXRoLm1heChwLmxlbmd0aCwgKHAyICYmIHAyLmxlbmd0aCkgfHwgMCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlpID0gTWF0aC5tYXgocC5sZW5ndGgsIChwMiAmJiBwMi5sZW5ndGgpIHx8IDApO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWk7IGkrKykge1xuICAgICAgICBwW2ldICYmIChwZmlyc3QgPSBwW2ldWzBdKTsgLy8gc2F2ZSBjdXJyZW50IHBhdGggY29tbWFuZFxuICAgICAgICBpZiAocGZpcnN0ICE9PSAnQycpIHtcbiAgICAgICAgICAgIC8vIEMgaXMgbm90IHNhdmVkIHlldCwgYmVjYXVzZSBpdCBtYXkgYmUgcmVzdWx0IG9mIGNvbnZlcnNpb25cbiAgICAgICAgICAgIHBjb21zMVtpXSA9IHBmaXJzdDsgLy8gU2F2ZSBjdXJyZW50IHBhdGggY29tbWFuZFxuICAgICAgICAgICAgaSAmJiAocGNvbSA9IHBjb21zMVtpIC0gMV0pOyAvLyBHZXQgcHJldmlvdXMgcGF0aCBjb21tYW5kIHBjb21cbiAgICAgICAgfVxuICAgICAgICBwW2ldID0gcHJvY2Vzc1BhdGgocFtpXSwgYXR0cnMsIHBjb20pOyAvLyBQcmV2aW91cyBwYXRoIGNvbW1hbmQgaXMgaW5wdXR0ZWQgdG8gcHJvY2Vzc1BhdGhcbiAgICAgICAgaWYgKHBjb21zMVtpXSAhPT0gJ0EnICYmIHBmaXJzdCA9PT0gJ0MnKVxuICAgICAgICAgICAgcGNvbXMxW2ldID0gJ0MnOyAvLyBBIGlzIHRoZSBvbmx5IGNvbW1hbmRcbiAgICAgICAgLy8gd2hpY2ggbWF5IHByb2R1Y2UgbXVsdGlwbGUgQzpzXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgQyBpcyBhbHNvIEMgaW4gb3JpZ2luYWwgcGF0aFxuICAgICAgICBmaXhBcmMocCwgaSk7IC8vIGZpeEFyYyBhZGRzIGFsc28gdGhlIHJpZ2h0IGFtb3VudCBvZiBBOnMgdG8gcGNvbXMxXG4gICAgICAgIGlmIChwMikge1xuICAgICAgICAgICAgLy8gdGhlIHNhbWUgcHJvY2VkdXJlcyBpcyBkb25lIHRvIHAyXG4gICAgICAgICAgICBwMltpXSAmJiAocGZpcnN0ID0gcDJbaV1bMF0pO1xuICAgICAgICAgICAgaWYgKHBmaXJzdCAhPT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgcGNvbXMyW2ldID0gcGZpcnN0O1xuICAgICAgICAgICAgICAgIGkgJiYgKHBjb20gPSBwY29tczJbaSAtIDFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAyW2ldID0gcHJvY2Vzc1BhdGgocDJbaV0sIGF0dHJzMiwgcGNvbSk7XG4gICAgICAgICAgICBpZiAocGNvbXMyW2ldICE9PSAnQScgJiYgcGZpcnN0ID09PSAnQycpIHtcbiAgICAgICAgICAgICAgICBwY29tczJbaV0gPSAnQyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaXhBcmMocDIsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpeE0ocCwgcDIsIGF0dHJzLCBhdHRyczIsIGkpO1xuICAgICAgICBmaXhNKHAyLCBwLCBhdHRyczIsIGF0dHJzLCBpKTtcbiAgICAgICAgdmFyIHNlZyA9IHBbaV07XG4gICAgICAgIHZhciBzZWcyID0gcDIgJiYgcDJbaV07XG4gICAgICAgIHZhciBzZWdsZW4gPSBzZWcubGVuZ3RoO1xuICAgICAgICB2YXIgc2VnMmxlbiA9IHAyICYmIHNlZzIubGVuZ3RoO1xuICAgICAgICBhdHRycy54ID0gc2VnW3NlZ2xlbiAtIDJdO1xuICAgICAgICBhdHRycy55ID0gc2VnW3NlZ2xlbiAtIDFdO1xuICAgICAgICBhdHRycy5ieCA9IHBhcnNlRmxvYXQoc2VnW3NlZ2xlbiAtIDRdKSB8fCBhdHRycy54O1xuICAgICAgICBhdHRycy5ieSA9IHBhcnNlRmxvYXQoc2VnW3NlZ2xlbiAtIDNdKSB8fCBhdHRycy55O1xuICAgICAgICBhdHRyczIuYnggPSBwMiAmJiAocGFyc2VGbG9hdChzZWcyW3NlZzJsZW4gLSA0XSkgfHwgYXR0cnMyLngpO1xuICAgICAgICBhdHRyczIuYnkgPSBwMiAmJiAocGFyc2VGbG9hdChzZWcyW3NlZzJsZW4gLSAzXSkgfHwgYXR0cnMyLnkpO1xuICAgICAgICBhdHRyczIueCA9IHAyICYmIHNlZzJbc2VnMmxlbiAtIDJdO1xuICAgICAgICBhdHRyczIueSA9IHAyICYmIHNlZzJbc2VnMmxlbiAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gcDIgPyBbcCwgcDJdIDogcDtcbn07XG52YXIgcDJzID0gLyw/KFthLXpdKSw/L2dpO1xudmFyIHBhcnNlUGF0aEFycmF5ID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKCcsJykucmVwbGFjZShwMnMsICckMScpO1xufTtcbnZhciBiYXNlMyA9IGZ1bmN0aW9uICh0LCBwMSwgcDIsIHAzLCBwNCkge1xuICAgIHZhciB0MSA9IC0zICogcDEgKyA5ICogcDIgLSA5ICogcDMgKyAzICogcDQ7XG4gICAgdmFyIHQyID0gdCAqIHQxICsgNiAqIHAxIC0gMTIgKiBwMiArIDYgKiBwMztcbiAgICByZXR1cm4gdCAqIHQyIC0gMyAqIHAxICsgMyAqIHAyO1xufTtcbnZhciBiZXpsZW4gPSBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB6KSB7XG4gICAgaWYgKHogPT09IG51bGwpIHtcbiAgICAgICAgeiA9IDE7XG4gICAgfVxuICAgIHogPSB6ID4gMSA/IDEgOiB6IDwgMCA/IDAgOiB6O1xuICAgIHZhciB6MiA9IHogLyAyO1xuICAgIHZhciBuID0gMTI7XG4gICAgdmFyIFR2YWx1ZXMgPSBbXG4gICAgICAgIC0wLjEyNTIsXG4gICAgICAgIDAuMTI1MixcbiAgICAgICAgLTAuMzY3OCxcbiAgICAgICAgMC4zNjc4LFxuICAgICAgICAtMC41ODczLFxuICAgICAgICAwLjU4NzMsXG4gICAgICAgIC0wLjc2OTksXG4gICAgICAgIDAuNzY5OSxcbiAgICAgICAgLTAuOTA0MSxcbiAgICAgICAgMC45MDQxLFxuICAgICAgICAtMC45ODE2LFxuICAgICAgICAwLjk4MTYsXG4gICAgXTtcbiAgICB2YXIgQ3ZhbHVlcyA9IFswLjI0OTEsIDAuMjQ5MSwgMC4yMzM1LCAwLjIzMzUsIDAuMjAzMiwgMC4yMDMyLCAwLjE2MDEsIDAuMTYwMSwgMC4xMDY5LCAwLjEwNjksIDAuMDQ3MiwgMC4wNDcyXTtcbiAgICB2YXIgc3VtID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YXIgY3QgPSB6MiAqIFR2YWx1ZXNbaV0gKyB6MjtcbiAgICAgICAgdmFyIHhiYXNlID0gYmFzZTMoY3QsIHgxLCB4MiwgeDMsIHg0KTtcbiAgICAgICAgdmFyIHliYXNlID0gYmFzZTMoY3QsIHkxLCB5MiwgeTMsIHk0KTtcbiAgICAgICAgdmFyIGNvbWIgPSB4YmFzZSAqIHhiYXNlICsgeWJhc2UgKiB5YmFzZTtcbiAgICAgICAgc3VtICs9IEN2YWx1ZXNbaV0gKiBNYXRoLnNxcnQoY29tYik7XG4gICAgfVxuICAgIHJldHVybiB6MiAqIHN1bTtcbn07XG52YXIgY3VydmVEaW0gPSBmdW5jdGlvbiAoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKSB7XG4gICAgdmFyIHR2YWx1ZXMgPSBbXTtcbiAgICB2YXIgYm91bmRzID0gW1tdLCBbXV07XG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgdmFyIGM7XG4gICAgdmFyIHQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHtcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIGIgPSA2ICogeDAgLSAxMiAqIHgxICsgNiAqIHgyO1xuICAgICAgICAgICAgYSA9IC0zICogeDAgKyA5ICogeDEgLSA5ICogeDIgKyAzICogeDM7XG4gICAgICAgICAgICBjID0gMyAqIHgxIC0gMyAqIHgwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYiA9IDYgKiB5MCAtIDEyICogeTEgKyA2ICogeTI7XG4gICAgICAgICAgICBhID0gLTMgKiB5MCArIDkgKiB5MSAtIDkgKiB5MiArIDMgKiB5MztcbiAgICAgICAgICAgIGMgPSAzICogeTEgLSAzICogeTA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKGEpIDwgMWUtMTIpIHtcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhiKSA8IDFlLTEyKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLWMgLyBiO1xuICAgICAgICAgICAgaWYgKHQgPiAwICYmIHQgPCAxKSB7XG4gICAgICAgICAgICAgICAgdHZhbHVlcy5wdXNoKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIyYWMgPSBiICogYiAtIDQgKiBjICogYTtcbiAgICAgICAgdmFyIHNxcnRiMmFjID0gTWF0aC5zcXJ0KGIyYWMpO1xuICAgICAgICBpZiAoYjJhYyA8IDApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0MSA9ICgtYiArIHNxcnRiMmFjKSAvICgyICogYSk7XG4gICAgICAgIGlmICh0MSA+IDAgJiYgdDEgPCAxKSB7XG4gICAgICAgICAgICB0dmFsdWVzLnB1c2godDEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0MiA9ICgtYiAtIHNxcnRiMmFjKSAvICgyICogYSk7XG4gICAgICAgIGlmICh0MiA+IDAgJiYgdDIgPCAxKSB7XG4gICAgICAgICAgICB0dmFsdWVzLnB1c2godDIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBqID0gdHZhbHVlcy5sZW5ndGg7XG4gICAgdmFyIGpsZW4gPSBqO1xuICAgIHZhciBtdDtcbiAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIHQgPSB0dmFsdWVzW2pdO1xuICAgICAgICBtdCA9IDEgLSB0O1xuICAgICAgICBib3VuZHNbMF1bal0gPSBtdCAqIG10ICogbXQgKiB4MCArIDMgKiBtdCAqIG10ICogdCAqIHgxICsgMyAqIG10ICogdCAqIHQgKiB4MiArIHQgKiB0ICogdCAqIHgzO1xuICAgICAgICBib3VuZHNbMV1bal0gPSBtdCAqIG10ICogbXQgKiB5MCArIDMgKiBtdCAqIG10ICogdCAqIHkxICsgMyAqIG10ICogdCAqIHQgKiB5MiArIHQgKiB0ICogdCAqIHkzO1xuICAgIH1cbiAgICBib3VuZHNbMF1bamxlbl0gPSB4MDtcbiAgICBib3VuZHNbMV1bamxlbl0gPSB5MDtcbiAgICBib3VuZHNbMF1bamxlbiArIDFdID0geDM7XG4gICAgYm91bmRzWzFdW2psZW4gKyAxXSA9IHkzO1xuICAgIGJvdW5kc1swXS5sZW5ndGggPSBib3VuZHNbMV0ubGVuZ3RoID0gamxlbiArIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluOiB7XG4gICAgICAgICAgICB4OiBNYXRoLm1pbi5hcHBseSgwLCBib3VuZHNbMF0pLFxuICAgICAgICAgICAgeTogTWF0aC5taW4uYXBwbHkoMCwgYm91bmRzWzFdKSxcbiAgICAgICAgfSxcbiAgICAgICAgbWF4OiB7XG4gICAgICAgICAgICB4OiBNYXRoLm1heC5hcHBseSgwLCBib3VuZHNbMF0pLFxuICAgICAgICAgICAgeTogTWF0aC5tYXguYXBwbHkoMCwgYm91bmRzWzFdKSxcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbnZhciBpbnRlcnNlY3QgPSBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KSB7XG4gICAgaWYgKE1hdGgubWF4KHgxLCB4MikgPCBNYXRoLm1pbih4MywgeDQpIHx8XG4gICAgICAgIE1hdGgubWluKHgxLCB4MikgPiBNYXRoLm1heCh4MywgeDQpIHx8XG4gICAgICAgIE1hdGgubWF4KHkxLCB5MikgPCBNYXRoLm1pbih5MywgeTQpIHx8XG4gICAgICAgIE1hdGgubWluKHkxLCB5MikgPiBNYXRoLm1heCh5MywgeTQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIG54ID0gKHgxICogeTIgLSB5MSAqIHgyKSAqICh4MyAtIHg0KSAtICh4MSAtIHgyKSAqICh4MyAqIHk0IC0geTMgKiB4NCk7XG4gICAgdmFyIG55ID0gKHgxICogeTIgLSB5MSAqIHgyKSAqICh5MyAtIHk0KSAtICh5MSAtIHkyKSAqICh4MyAqIHk0IC0geTMgKiB4NCk7XG4gICAgdmFyIGRlbm9taW5hdG9yID0gKHgxIC0geDIpICogKHkzIC0geTQpIC0gKHkxIC0geTIpICogKHgzIC0geDQpO1xuICAgIGlmICghZGVub21pbmF0b3IpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcHggPSBueCAvIGRlbm9taW5hdG9yO1xuICAgIHZhciBweSA9IG55IC8gZGVub21pbmF0b3I7XG4gICAgdmFyIHB4MiA9ICtweC50b0ZpeGVkKDIpO1xuICAgIHZhciBweTIgPSArcHkudG9GaXhlZCgyKTtcbiAgICBpZiAocHgyIDwgK01hdGgubWluKHgxLCB4MikudG9GaXhlZCgyKSB8fFxuICAgICAgICBweDIgPiArTWF0aC5tYXgoeDEsIHgyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB4MiA8ICtNYXRoLm1pbih4MywgeDQpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHgyID4gK01hdGgubWF4KHgzLCB4NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPCArTWF0aC5taW4oeTEsIHkyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA+ICtNYXRoLm1heCh5MSwgeTIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHkyIDwgK01hdGgubWluKHkzLCB5NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPiArTWF0aC5tYXgoeTMsIHk0KS50b0ZpeGVkKDIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcHgsXG4gICAgICAgIHk6IHB5LFxuICAgIH07XG59O1xudmFyIGlzUG9pbnRJbnNpZGVCQm94ID0gZnVuY3Rpb24gKGJib3gsIHgsIHkpIHtcbiAgICByZXR1cm4geCA+PSBiYm94LnggJiYgeCA8PSBiYm94LnggKyBiYm94LndpZHRoICYmIHkgPj0gYmJveC55ICYmIHkgPD0gYmJveC55ICsgYmJveC5oZWlnaHQ7XG59O1xudmFyIHJlY3RQYXRoID0gZnVuY3Rpb24gKHgsIHksIHcsIGgsIHIpIHtcbiAgICBpZiAocikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgWydNJywgK3ggKyArciwgeV0sXG4gICAgICAgICAgICBbJ2wnLCB3IC0gciAqIDIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCBoIC0gciAqIDJdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgLXIsIHJdLFxuICAgICAgICAgICAgWydsJywgciAqIDIgLSB3LCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDAsIDEsIC1yLCAtcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCByICogMiAtIGhdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgLXJdLFxuICAgICAgICAgICAgWyd6J10sXG4gICAgICAgIF07XG4gICAgfVxuICAgIHZhciByZXMgPSBbWydNJywgeCwgeV0sIFsnbCcsIHcsIDBdLCBbJ2wnLCAwLCBoXSwgWydsJywgLXcsIDBdLCBbJ3onXV07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlcy5wYXJzZVBhdGhBcnJheSA9IHBhcnNlUGF0aEFycmF5O1xuICAgIHJldHVybiByZXM7XG59O1xudmFyIGJveCA9IGZ1bmN0aW9uICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgaWYgKHggPT09IG51bGwpIHtcbiAgICAgICAgeCA9IHkgPSB3aWR0aCA9IGhlaWdodCA9IDA7XG4gICAgfVxuICAgIGlmICh5ID09PSBudWxsKSB7XG4gICAgICAgIHkgPSB4Lnk7XG4gICAgICAgIHdpZHRoID0geC53aWR0aDtcbiAgICAgICAgaGVpZ2h0ID0geC5oZWlnaHQ7XG4gICAgICAgIHggPSB4Lng7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgdzogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBoOiBoZWlnaHQsXG4gICAgICAgIHgyOiB4ICsgd2lkdGgsXG4gICAgICAgIHkyOiB5ICsgaGVpZ2h0LFxuICAgICAgICBjeDogeCArIHdpZHRoIC8gMixcbiAgICAgICAgY3k6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgICByMTogTWF0aC5taW4od2lkdGgsIGhlaWdodCkgLyAyLFxuICAgICAgICByMjogTWF0aC5tYXgod2lkdGgsIGhlaWdodCkgLyAyLFxuICAgICAgICByMDogTWF0aC5zcXJ0KHdpZHRoICogd2lkdGggKyBoZWlnaHQgKiBoZWlnaHQpIC8gMixcbiAgICAgICAgcGF0aDogcmVjdFBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCksXG4gICAgICAgIHZiOiBbeCwgeSwgd2lkdGgsIGhlaWdodF0uam9pbignICcpLFxuICAgIH07XG59O1xudmFyIGlzQkJveEludGVyc2VjdCA9IGZ1bmN0aW9uIChiYm94MSwgYmJveDIpIHtcbiAgICBiYm94MSA9IGJveChiYm94MSk7XG4gICAgYmJveDIgPSBib3goYmJveDIpO1xuICAgIHJldHVybiAoaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gyLCBiYm94MS54MiwgYmJveDEueSkgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkyKSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueDIsIGJib3gxLnkyKSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueSkgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDEsIGJib3gyLngyLCBiYm94Mi55KSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueTIpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54MiwgYmJveDIueTIpIHx8XG4gICAgICAgICgoKGJib3gxLnggPCBiYm94Mi54MiAmJiBiYm94MS54ID4gYmJveDIueCkgfHwgKGJib3gyLnggPCBiYm94MS54MiAmJiBiYm94Mi54ID4gYmJveDEueCkpICYmXG4gICAgICAgICAgICAoKGJib3gxLnkgPCBiYm94Mi55MiAmJiBiYm94MS55ID4gYmJveDIueSkgfHwgKGJib3gyLnkgPCBiYm94MS55MiAmJiBiYm94Mi55ID4gYmJveDEueSkpKSk7XG59O1xudmFyIGJlemllckJCb3ggPSBmdW5jdGlvbiAocDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnkpIHtcbiAgICBpZiAoIWlzQXJyYXkocDF4KSkge1xuICAgICAgICBwMXggPSBbcDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnldO1xuICAgIH1cbiAgICB2YXIgYmJveCA9IGN1cnZlRGltLmFwcGx5KG51bGwsIHAxeCk7XG4gICAgcmV0dXJuIGJveChiYm94Lm1pbi54LCBiYm94Lm1pbi55LCBiYm94Lm1heC54IC0gYmJveC5taW4ueCwgYmJveC5tYXgueSAtIGJib3gubWluLnkpO1xufTtcbnZhciBmaW5kRG90c0F0U2VnbWVudCA9IGZ1bmN0aW9uIChwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeSwgdCkge1xuICAgIHZhciB0MSA9IDEgLSB0O1xuICAgIHZhciB0MTMgPSBNYXRoLnBvdyh0MSwgMyk7XG4gICAgdmFyIHQxMiA9IE1hdGgucG93KHQxLCAyKTtcbiAgICB2YXIgdDIgPSB0ICogdDtcbiAgICB2YXIgdDMgPSB0MiAqIHQ7XG4gICAgdmFyIHggPSB0MTMgKiBwMXggKyB0MTIgKiAzICogdCAqIGMxeCArIHQxICogMyAqIHQgKiB0ICogYzJ4ICsgdDMgKiBwMng7XG4gICAgdmFyIHkgPSB0MTMgKiBwMXkgKyB0MTIgKiAzICogdCAqIGMxeSArIHQxICogMyAqIHQgKiB0ICogYzJ5ICsgdDMgKiBwMnk7XG4gICAgdmFyIG14ID0gcDF4ICsgMiAqIHQgKiAoYzF4IC0gcDF4KSArIHQyICogKGMyeCAtIDIgKiBjMXggKyBwMXgpO1xuICAgIHZhciBteSA9IHAxeSArIDIgKiB0ICogKGMxeSAtIHAxeSkgKyB0MiAqIChjMnkgLSAyICogYzF5ICsgcDF5KTtcbiAgICB2YXIgbnggPSBjMXggKyAyICogdCAqIChjMnggLSBjMXgpICsgdDIgKiAocDJ4IC0gMiAqIGMyeCArIGMxeCk7XG4gICAgdmFyIG55ID0gYzF5ICsgMiAqIHQgKiAoYzJ5IC0gYzF5KSArIHQyICogKHAyeSAtIDIgKiBjMnkgKyBjMXkpO1xuICAgIHZhciBheCA9IHQxICogcDF4ICsgdCAqIGMxeDtcbiAgICB2YXIgYXkgPSB0MSAqIHAxeSArIHQgKiBjMXk7XG4gICAgdmFyIGN4ID0gdDEgKiBjMnggKyB0ICogcDJ4O1xuICAgIHZhciBjeSA9IHQxICogYzJ5ICsgdCAqIHAyeTtcbiAgICB2YXIgYWxwaGEgPSA5MCAtIChNYXRoLmF0YW4yKG14IC0gbngsIG15IC0gbnkpICogMTgwKSAvIE1hdGguUEk7XG4gICAgLy8gKG14ID4gbnggfHwgbXkgPCBueSkgJiYgKGFscGhhICs9IDE4MCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgbToge1xuICAgICAgICAgICAgeDogbXgsXG4gICAgICAgICAgICB5OiBteSxcbiAgICAgICAgfSxcbiAgICAgICAgbjoge1xuICAgICAgICAgICAgeDogbngsXG4gICAgICAgICAgICB5OiBueSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgIHg6IGF4LFxuICAgICAgICAgICAgeTogYXksXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgICAgeDogY3gsXG4gICAgICAgICAgICB5OiBjeSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxwaGE6IGFscGhhLFxuICAgIH07XG59O1xudmFyIGludGVySGVscGVyID0gZnVuY3Rpb24gKGJlejEsIGJlejIsIGp1c3RDb3VudCkge1xuICAgIHZhciBiYm94MSA9IGJlemllckJCb3goYmV6MSk7XG4gICAgdmFyIGJib3gyID0gYmV6aWVyQkJveChiZXoyKTtcbiAgICBpZiAoIWlzQkJveEludGVyc2VjdChiYm94MSwgYmJveDIpKSB7XG4gICAgICAgIHJldHVybiBqdXN0Q291bnQgPyAwIDogW107XG4gICAgfVxuICAgIHZhciBsMSA9IGJlemxlbi5hcHBseSgwLCBiZXoxKTtcbiAgICB2YXIgbDIgPSBiZXpsZW4uYXBwbHkoMCwgYmV6Mik7XG4gICAgdmFyIG4xID0gfn4obDEgLyA4KTtcbiAgICB2YXIgbjIgPSB+fihsMiAvIDgpO1xuICAgIHZhciBkb3RzMSA9IFtdO1xuICAgIHZhciBkb3RzMiA9IFtdO1xuICAgIHZhciB4eSA9IHt9O1xuICAgIHZhciByZXMgPSBqdXN0Q291bnQgPyAwIDogW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMSArIDE7IGkrKykge1xuICAgICAgICB2YXIgZCA9IGZpbmREb3RzQXRTZWdtZW50LmFwcGx5KDAsIGJlejEuY29uY2F0KGkgLyBuMSkpO1xuICAgICAgICBkb3RzMS5wdXNoKHtcbiAgICAgICAgICAgIHg6IGQueCxcbiAgICAgICAgICAgIHk6IGQueSxcbiAgICAgICAgICAgIHQ6IGkgLyBuMSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjIgKyAxOyBpKyspIHtcbiAgICAgICAgdmFyIGQgPSBmaW5kRG90c0F0U2VnbWVudC5hcHBseSgwLCBiZXoyLmNvbmNhdChpIC8gbjIpKTtcbiAgICAgICAgZG90czIucHVzaCh7XG4gICAgICAgICAgICB4OiBkLngsXG4gICAgICAgICAgICB5OiBkLnksXG4gICAgICAgICAgICB0OiBpIC8gbjIsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuMjsgaisrKSB7XG4gICAgICAgICAgICB2YXIgZGkgPSBkb3RzMVtpXTtcbiAgICAgICAgICAgIHZhciBkaTEgPSBkb3RzMVtpICsgMV07XG4gICAgICAgICAgICB2YXIgZGogPSBkb3RzMltqXTtcbiAgICAgICAgICAgIHZhciBkajEgPSBkb3RzMltqICsgMV07XG4gICAgICAgICAgICB2YXIgY2kgPSBNYXRoLmFicyhkaTEueCAtIGRpLngpIDwgMC4wMDEgPyAneScgOiAneCc7XG4gICAgICAgICAgICB2YXIgY2ogPSBNYXRoLmFicyhkajEueCAtIGRqLngpIDwgMC4wMDEgPyAneScgOiAneCc7XG4gICAgICAgICAgICB2YXIgaXMgPSBpbnRlcnNlY3QoZGkueCwgZGkueSwgZGkxLngsIGRpMS55LCBkai54LCBkai55LCBkajEueCwgZGoxLnkpO1xuICAgICAgICAgICAgaWYgKGlzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHh5W2lzLngudG9GaXhlZCg0KV0gPT09IGlzLnkudG9GaXhlZCg0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeHlbaXMueC50b0ZpeGVkKDQpXSA9IGlzLnkudG9GaXhlZCg0KTtcbiAgICAgICAgICAgICAgICB2YXIgdDEgPSBkaS50ICsgTWF0aC5hYnMoKGlzW2NpXSAtIGRpW2NpXSkgLyAoZGkxW2NpXSAtIGRpW2NpXSkpICogKGRpMS50IC0gZGkudCk7XG4gICAgICAgICAgICAgICAgdmFyIHQyID0gZGoudCArIE1hdGguYWJzKChpc1tjal0gLSBkaltjal0pIC8gKGRqMVtjal0gLSBkaltjal0pKSAqIChkajEudCAtIGRqLnQpO1xuICAgICAgICAgICAgICAgIGlmICh0MSA+PSAwICYmIHQxIDw9IDEgJiYgdDIgPj0gMCAmJiB0MiA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChqdXN0Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGlzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MTogdDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDI6IHQyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgaW50ZXJQYXRoSGVscGVyID0gZnVuY3Rpb24gKHBhdGgxLCBwYXRoMiwganVzdENvdW50KSB7XG4gICAgcGF0aDEgPSBwYXRoVG9DdXJ2ZShwYXRoMSk7XG4gICAgcGF0aDIgPSBwYXRoVG9DdXJ2ZShwYXRoMik7XG4gICAgdmFyIHgxO1xuICAgIHZhciB5MTtcbiAgICB2YXIgeDI7XG4gICAgdmFyIHkyO1xuICAgIHZhciB4MW07XG4gICAgdmFyIHkxbTtcbiAgICB2YXIgeDJtO1xuICAgIHZhciB5Mm07XG4gICAgdmFyIGJlejE7XG4gICAgdmFyIGJlejI7XG4gICAgdmFyIHJlcyA9IGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBwYXRoMS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICAgIHZhciBwaSA9IHBhdGgxW2ldO1xuICAgICAgICBpZiAocGlbMF0gPT09ICdNJykge1xuICAgICAgICAgICAgeDEgPSB4MW0gPSBwaVsxXTtcbiAgICAgICAgICAgIHkxID0geTFtID0gcGlbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAocGlbMF0gPT09ICdDJykge1xuICAgICAgICAgICAgICAgIGJlejEgPSBbeDEsIHkxXS5jb25jYXQocGkuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIHgxID0gYmV6MVs2XTtcbiAgICAgICAgICAgICAgICB5MSA9IGJlejFbN107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBiZXoxID0gW3gxLCB5MSwgeDEsIHkxLCB4MW0sIHkxbSwgeDFtLCB5MW1dO1xuICAgICAgICAgICAgICAgIHgxID0geDFtO1xuICAgICAgICAgICAgICAgIHkxID0geTFtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpqID0gcGF0aDIubGVuZ3RoOyBqIDwgamo7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBwaiA9IHBhdGgyW2pdO1xuICAgICAgICAgICAgICAgIGlmIChwalswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICAgICAgICAgIHgyID0geDJtID0gcGpbMV07XG4gICAgICAgICAgICAgICAgICAgIHkyID0geTJtID0gcGpbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGpbMF0gPT09ICdDJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV6MiA9IFt4MiwgeTJdLmNvbmNhdChwai5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4MiA9IGJlejJbNl07XG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IGJlejJbN107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXoyID0gW3gyLCB5MiwgeDIsIHkyLCB4Mm0sIHkybSwgeDJtLCB5Mm1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4Mm07XG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IHkybTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgaW50ciA9IGludGVySGVscGVyKGJlejEsIGJlejIsIGp1c3RDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChqdXN0Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBpbnRyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDAsIGtrID0gaW50ci5sZW5ndGg7IGsgPCBrazsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cltrXS5zZWdtZW50MSA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cltrXS5zZWdtZW50MiA9IGo7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cltrXS5iZXoxID0gYmV6MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLmJlejIgPSBiZXoyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gcmVzLmNvbmNhdChpbnRyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBpbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAocGF0aDEsIHBhdGgyKSB7XG4gICAgcmV0dXJuIGludGVyUGF0aEhlbHBlcihwYXRoMSwgcGF0aDIpO1xufTtcbmZ1bmN0aW9uIGRlY2FzdGVsamF1KHBvaW50cywgdCkge1xuICAgIHZhciBsZWZ0ID0gW107XG4gICAgdmFyIHJpZ2h0ID0gW107XG4gICAgZnVuY3Rpb24gcmVjdXJzZShwb2ludHMsIHQpIHtcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxlZnQucHVzaChwb2ludHNbMF0pO1xuICAgICAgICAgICAgcmlnaHQucHVzaChwb2ludHNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIG1pZGRsZVBvaW50cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdC5wdXNoKHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpID09PSBwb2ludHMubGVuZ3RoIC0gMikge1xuICAgICAgICAgICAgICAgICAgICByaWdodC5wdXNoKHBvaW50c1tpICsgMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtaWRkbGVQb2ludHNbaV0gPSBbXG4gICAgICAgICAgICAgICAgICAgICgxIC0gdCkgKiBwb2ludHNbaV1bMF0gKyB0ICogcG9pbnRzW2kgKyAxXVswXSxcbiAgICAgICAgICAgICAgICAgICAgKDEgLSB0KSAqIHBvaW50c1tpXVsxXSArIHQgKiBwb2ludHNbaSArIDFdWzFdLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWN1cnNlKG1pZGRsZVBvaW50cywgdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVjdXJzZShwb2ludHMsIHQpO1xuICAgIH1cbiAgICByZXR1cm4geyBsZWZ0OiBsZWZ0LCByaWdodDogcmlnaHQucmV2ZXJzZSgpIH07XG59XG5mdW5jdGlvbiBzcGxpdEN1cnZlKHN0YXJ0LCBlbmQsIGNvdW50KSB7XG4gICAgdmFyIHBvaW50cyA9IFtbc3RhcnRbMV0sIHN0YXJ0WzJdXV07XG4gICAgY291bnQgPSBjb3VudCB8fCAyO1xuICAgIHZhciBzZWdtZW50cyA9IFtdO1xuICAgIGlmIChlbmRbMF0gPT09ICdBJykge1xuICAgICAgICBwb2ludHMucHVzaChlbmRbNl0pO1xuICAgICAgICBwb2ludHMucHVzaChlbmRbN10pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbmRbMF0gPT09ICdDJykge1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzFdLCBlbmRbMl1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFszXSwgZW5kWzRdXSk7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbNV0sIGVuZFs2XV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbmRbMF0gPT09ICdTJyB8fCBlbmRbMF0gPT09ICdRJykge1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzFdLCBlbmRbMl1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFszXSwgZW5kWzRdXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzFdLCBlbmRbMl1dKTtcbiAgICB9XG4gICAgdmFyIGxlZnRTZWdtZW50cyA9IHBvaW50cztcbiAgICB2YXIgdCA9IDEgLyBjb3VudDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciBydCA9IHQgLyAoMSAtIHQgKiBpKTtcbiAgICAgICAgdmFyIHNwbGl0ID0gZGVjYXN0ZWxqYXUobGVmdFNlZ21lbnRzLCBydCk7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goc3BsaXQubGVmdCk7XG4gICAgICAgIGxlZnRTZWdtZW50cyA9IHNwbGl0LnJpZ2h0O1xuICAgIH1cbiAgICBzZWdtZW50cy5wdXNoKGxlZnRTZWdtZW50cyk7XG4gICAgdmFyIHJlc3VsdCA9IHNlZ21lbnRzLm1hcChmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgICAgICB2YXIgY21kID0gW107XG4gICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAgICAgY21kLnB1c2goJ0MnKTtcbiAgICAgICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFsyXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgICAgIGNtZC5wdXNoKCdRJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbWQgPSBjbWQuY29uY2F0KHNlZ21lbnRbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY21kLnB1c2goJ0wnKTtcbiAgICAgICAgfVxuICAgICAgICBjbWQgPSBjbWQuY29uY2F0KHNlZ21lbnRbc2VnbWVudC5sZW5ndGggLSAxXSk7XG4gICAgICAgIHJldHVybiBjbWQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbnZhciBzcGxpdFNlZ21lbnQgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgY291bnQpIHtcbiAgICBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIFtbXS5jb25jYXQoc3RhcnQpXTtcbiAgICB9XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgaWYgKGVuZFswXSA9PT0gJ0wnIHx8IGVuZFswXSA9PT0gJ0MnIHx8IGVuZFswXSA9PT0gJ1EnKSB7XG4gICAgICAgIHNlZ21lbnRzID0gc2VnbWVudHMuY29uY2F0KHNwbGl0Q3VydmUoc3RhcnQsIGVuZCwgY291bnQpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciB0ZW1wID0gW10uY29uY2F0KHN0YXJ0KTtcbiAgICAgICAgaWYgKHRlbXBbMF0gPT09ICdNJykge1xuICAgICAgICAgICAgdGVtcFswXSA9ICdMJztcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBjb3VudCAtIDE7IGkrKykge1xuICAgICAgICAgICAgc2VnbWVudHMucHVzaCh0ZW1wKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudHM7XG59O1xudmFyIGZpbGxQYXRoID0gZnVuY3Rpb24gKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gICAgdmFyIHNvdXJjZUxlbiA9IHNvdXJjZS5sZW5ndGggLSAxO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoIC0gMTtcbiAgICB2YXIgcmF0aW8gPSBzb3VyY2VMZW4gLyB0YXJnZXRMZW47XG4gICAgdmFyIHNlZ21lbnRzVG9GaWxsID0gW107XG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDEgJiYgc291cmNlWzBdWzBdID09PSAnTScpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YXJnZXRMZW4gLSBzb3VyY2VMZW47IGkrKykge1xuICAgICAgICAgICAgc291cmNlLnB1c2goc291cmNlWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldExlbjsgaSsrKSB7XG4gICAgICAgIHZhciBpbmRleCA9IE1hdGguZmxvb3IocmF0aW8gKiBpKTtcbiAgICAgICAgc2VnbWVudHNUb0ZpbGxbaW5kZXhdID0gKHNlZ21lbnRzVG9GaWxsW2luZGV4XSB8fCAwKSArIDE7XG4gICAgfVxuICAgIHZhciBmaWxsZWQgPSBzZWdtZW50c1RvRmlsbC5yZWR1Y2UoZnVuY3Rpb24gKGZpbGxlZCwgY291bnQsIGkpIHtcbiAgICAgICAgaWYgKGkgPT09IHNvdXJjZUxlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGxlZC5jb25jYXQoc291cmNlW3NvdXJjZUxlbl0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsZWQuY29uY2F0KHNwbGl0U2VnbWVudChzb3VyY2VbaV0sIHNvdXJjZVtpICsgMV0sIGNvdW50KSk7XG4gICAgfSwgW10pO1xuICAgIGZpbGxlZC51bnNoaWZ0KHNvdXJjZVswXSk7XG4gICAgaWYgKHRhcmdldFt0YXJnZXRMZW5dID09PSAnWicgfHwgdGFyZ2V0W3RhcmdldExlbl0gPT09ICd6Jykge1xuICAgICAgICBmaWxsZWQucHVzaCgnWicpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsbGVkO1xufTtcbnZhciBpc0VxdWFsID0gZnVuY3Rpb24gKG9iajEsIG9iajIpIHtcbiAgICBpZiAob2JqMS5sZW5ndGggIT09IG9iajIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgZWFjaChvYmoxLCBmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICBpZiAoaXRlbSAhPT0gb2JqMltpXSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmZ1bmN0aW9uIGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSkge1xuICAgIHZhciB0eXBlID0gbnVsbDtcbiAgICB2YXIgbWluID0gbW9kaWZ5O1xuICAgIGlmIChhZGQgPCBtaW4pIHtcbiAgICAgICAgbWluID0gYWRkO1xuICAgICAgICB0eXBlID0gJ2FkZCc7XG4gICAgfVxuICAgIGlmIChkZWwgPCBtaW4pIHtcbiAgICAgICAgbWluID0gZGVsO1xuICAgICAgICB0eXBlID0gJ2RlbCc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIG1pbjogbWluLFxuICAgIH07XG59XG4vKlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2VcbiAqIOiuoeeul+S4pOadoXBhdGjnmoTnvJbovpHot53nprtcbiAqL1xudmFyIGxldmVuc2h0ZWluRGlzdGFuY2UgPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgdGFyZ2V0TGVuID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICB2YXIgc291cmNlU2VnbWVudDtcbiAgICB2YXIgdGFyZ2V0U2VnbWVudDtcbiAgICB2YXIgdGVtcCA9IDA7XG4gICAgaWYgKHNvdXJjZUxlbiA9PT0gMCB8fCB0YXJnZXRMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBkaXN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gc291cmNlTGVuOyBpKyspIHtcbiAgICAgICAgZGlzdFtpXSA9IFtdO1xuICAgICAgICBkaXN0W2ldWzBdID0geyBtaW46IGkgfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGFyZ2V0TGVuOyBqKyspIHtcbiAgICAgICAgZGlzdFswXVtqXSA9IHsgbWluOiBqIH07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgIHNvdXJjZVNlZ21lbnQgPSBzb3VyY2VbaSAtIDFdO1xuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICAgICAgdGFyZ2V0U2VnbWVudCA9IHRhcmdldFtqIC0gMV07XG4gICAgICAgICAgICBpZiAoaXNFcXVhbChzb3VyY2VTZWdtZW50LCB0YXJnZXRTZWdtZW50KSkge1xuICAgICAgICAgICAgICAgIHRlbXAgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGVtcCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGVsID0gZGlzdFtpIC0gMV1bal0ubWluICsgMTtcbiAgICAgICAgICAgIHZhciBhZGQgPSBkaXN0W2ldW2ogLSAxXS5taW4gKyAxO1xuICAgICAgICAgICAgdmFyIG1vZGlmeSA9IGRpc3RbaSAtIDFdW2ogLSAxXS5taW4gKyB0ZW1wO1xuICAgICAgICAgICAgZGlzdFtpXVtqXSA9IGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3Q7XG59O1xudmFyIGZpbGxQYXRoQnlEaWZmID0gZnVuY3Rpb24gKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgdmFyIGRpZmZNYXRyaXggPSBsZXZlbnNodGVpbkRpc3RhbmNlKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgdGFyZ2V0TGVuID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICB2YXIgY2hhbmdlcyA9IFtdO1xuICAgIHZhciBpbmRleCA9IDE7XG4gICAgdmFyIG1pblBvcyA9IDE7XG4gICAgLy8g5aaC5p6cc291cmNl5ZKMdGFyZ2V05LiN5piv5a6M5YWo5LiN55u4562JXG4gICAgaWYgKGRpZmZNYXRyaXhbc291cmNlTGVuXVt0YXJnZXRMZW5dLm1pbiAhPT0gc291cmNlTGVuKSB7XG4gICAgICAgIC8vIOiOt+WPluS7jnNvdXJjZeWIsHRhcmdldOaJgOmcgOaUueWKqFxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBzb3VyY2VMZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIG1pbiA9IGRpZmZNYXRyaXhbaV1baV0ubWluO1xuICAgICAgICAgICAgbWluUG9zID0gaTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBpbmRleDsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChkaWZmTWF0cml4W2ldW2pdLm1pbiA8IG1pbikge1xuICAgICAgICAgICAgICAgICAgICBtaW4gPSBkaWZmTWF0cml4W2ldW2pdLm1pbjtcbiAgICAgICAgICAgICAgICAgICAgbWluUG9zID0gajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbmRleCA9IG1pblBvcztcbiAgICAgICAgICAgIGlmIChkaWZmTWF0cml4W2ldW2luZGV4XS50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHsgaW5kZXg6IGkgLSAxLCB0eXBlOiBkaWZmTWF0cml4W2ldW2luZGV4XS50eXBlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOWvuXNvdXJjZei/m+ihjOWinuWIoHBhdGhcbiAgICAgICAgZm9yICh2YXIgaSA9IGNoYW5nZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hhbmdlc1tpXS5pbmRleDtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzW2ldLnR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShpbmRleCwgMCwgW10uY29uY2F0KHNvdXJjZVtpbmRleF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHNvdXJjZeWwvumDqOihpem9kFxuICAgIHNvdXJjZUxlbiA9IHNvdXJjZS5sZW5ndGg7XG4gICAgdmFyIGRpZmYgPSB0YXJnZXRMZW4gLSBzb3VyY2VMZW47XG4gICAgaWYgKHNvdXJjZUxlbiA8IHRhcmdldExlbikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmY7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtzb3VyY2VMZW4gLSAxXVswXSA9PT0gJ3onIHx8IHNvdXJjZVtzb3VyY2VMZW4gLSAxXVswXSA9PT0gJ1onKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShzb3VyY2VMZW4gLSAyLCAwLCBzb3VyY2Vbc291cmNlTGVuIC0gMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnB1c2goc291cmNlW3NvdXJjZUxlbiAtIDFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUxlbiArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG59O1xuLy8g5bCG5Lik5Liq54K55Z2H5YiG5oiQY291bnTkuKrngrlcbmZ1bmN0aW9uIF9zcGxpdFBvaW50cyhwb2ludHMsIGZvcm1lciwgY291bnQpIHtcbiAgICB2YXIgcmVzdWx0ID0gW10uY29uY2F0KHBvaW50cyk7XG4gICAgdmFyIGluZGV4O1xuICAgIHZhciB0ID0gMSAvIChjb3VudCArIDEpO1xuICAgIHZhciBmb3JtZXJFbmQgPSBfZ2V0U2VnbWVudFBvaW50cyhmb3JtZXIpWzBdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHtcbiAgICAgICAgdCAqPSBpO1xuICAgICAgICBpbmRleCA9IE1hdGguZmxvb3IocG9pbnRzLmxlbmd0aCAqIHQpO1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC51bnNoaWZ0KFtmb3JtZXJFbmRbMF0gKiB0ICsgcG9pbnRzW2luZGV4XVswXSAqICgxIC0gdCksIGZvcm1lckVuZFsxXSAqIHQgKyBwb2ludHNbaW5kZXhdWzFdICogKDEgLSB0KV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnNwbGljZShpbmRleCwgMCwgW1xuICAgICAgICAgICAgICAgIGZvcm1lckVuZFswXSAqIHQgKyBwb2ludHNbaW5kZXhdWzBdICogKDEgLSB0KSxcbiAgICAgICAgICAgICAgICBmb3JtZXJFbmRbMV0gKiB0ICsgcG9pbnRzW2luZGV4XVsxXSAqICgxIC0gdCksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLypcbiAqIOaKveWPlnBhdGhTZWdtZW505Lit55qE5YWz6ZSu54K5XG4gKiBNLEwsQSxRLEgsVuS4gOS4querr+eCuVxuICogUSwgU+aKveWPluS4gOS4querr+eCue+8jOS4gOS4quaOp+WItueCuVxuICogQ+aKveWPluS4gOS4querr+eCue+8jOS4pOS4quaOp+WItueCuVxuICovXG5mdW5jdGlvbiBfZ2V0U2VnbWVudFBvaW50cyhzZWdtZW50KSB7XG4gICAgdmFyIHBvaW50cyA9IFtdO1xuICAgIHN3aXRjaCAoc2VnbWVudFswXSkge1xuICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbNl0sIHNlZ21lbnRbN11dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzNdLCBzZWdtZW50WzRdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzVdLCBzZWdtZW50WzZdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbM10sIHNlZ21lbnRbNF1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzNdLCBzZWdtZW50WzRdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMV1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzFdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgcmV0dXJuIHBvaW50cztcbn1cbnZhciBmb3JtYXRQYXRoID0gZnVuY3Rpb24gKGZyb21QYXRoLCB0b1BhdGgpIHtcbiAgICBpZiAoZnJvbVBhdGgubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIGZyb21QYXRoO1xuICAgIH1cbiAgICB2YXIgcG9pbnRzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9QYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmcm9tUGF0aFtpXVswXSAhPT0gdG9QYXRoW2ldWzBdKSB7XG4gICAgICAgICAgICAvLyDojrflj5Zmcm9tUGF0aOeahHBhdGhTZWdtZW5055qE56uv54K577yM5qC55o2udG9QYXRo55qE5oyH5Luk5a+55YW25pS56YCgXG4gICAgICAgICAgICBwb2ludHMgPSBfZ2V0U2VnbWVudFBvaW50cyhmcm9tUGF0aFtpXSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRvUGF0aFtpXVswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnTSddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ0wnXS5jb25jYXQocG9pbnRzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gW10uY29uY2F0KHRvUGF0aFtpXSk7XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldWzZdID0gcG9pbnRzWzBdWzBdO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXVs3XSA9IHBvaW50c1swXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gX3NwbGl0UG9pbnRzKHBvaW50cywgZnJvbVBhdGhbaSAtIDFdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gdG9QYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydRJ10uY29uY2F0KHBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyci5jb25jYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnVCddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ0MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gX3NwbGl0UG9pbnRzKHBvaW50cywgZnJvbVBhdGhbaSAtIDFdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gdG9QYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydTJ10uY29uY2F0KHBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyci5jb25jYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gdG9QYXRoW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmcm9tUGF0aDtcbn07XG5leHBvcnQgeyBjYXRtdWxsUm9tVG9CZXppZXIsIGZpbGxQYXRoLCBmaWxsUGF0aEJ5RGlmZiwgZm9ybWF0UGF0aCwgaW50ZXJzZWN0aW9uLCBwYXJzZVBhdGhBcnJheSwgcGFyc2VQYXRoU3RyaW5nLCBwYXRoVG9BYnNvbHV0ZSwgcGF0aFRvQ3VydmUsIHJlY3RQYXRoLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js ***! \************************************************************************/ /*! exports provided: getTextHeight, getLineSpaceing, getTextWidth, assembleFont */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return getTextHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineSpaceing\", function() { return getLineSpaceing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextWidth\", function() { return getTextWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return assembleFont; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _offscreen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./offscreen */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js\");\n\n\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nfunction getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nfunction getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nfunction getTextWidth(text, font) {\n var context = Object(_offscreen__WEBPACK_IMPORTED_MODULE_1__[\"getOffScreenContext\"])(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n }\n else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nfunction assembleFont(attrs) {\n var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvdGV4dC5qcz8wYzFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ0c7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxrQkFBa0Isc0VBQW1CLEdBQUc7QUFDeEM7QUFDQTtBQUNBLFFBQVEsbURBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQSxRQUFRLGtEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS91dGlsL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCwgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgZ2V0T2ZmU2NyZWVuQ29udGV4dCB9IGZyb20gJy4vb2Zmc2NyZWVuJztcbi8qKlxuICog6I635Y+W5paH5pys55qE6auY5bqmXG4gKiBAcGFyYW0gdGV4dCDmlofmnKxcbiAqIEBwYXJhbSBmb250U2l6ZSDlrZfkvZPlpKflsI9cbiAqIEBwYXJhbSBsaW5lSGVpZ2h0IOihjOmrmO+8jOWPr+S7peS4uuepulxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dEhlaWdodCh0ZXh0LCBmb250U2l6ZSwgbGluZUhlaWdodCkge1xuICAgIHZhciBsaW5lQ291bnQgPSAxO1xuICAgIGlmIChpc1N0cmluZyh0ZXh0KSkge1xuICAgICAgICBsaW5lQ291bnQgPSB0ZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChsaW5lQ291bnQgPiAxKSB7XG4gICAgICAgIHZhciBzcGFjZWluZ1kgPSBnZXRMaW5lU3BhY2VpbmcoZm9udFNpemUsIGxpbmVIZWlnaHQpO1xuICAgICAgICByZXR1cm4gZm9udFNpemUgKiBsaW5lQ291bnQgKyBzcGFjZWluZ1kgKiAobGluZUNvdW50IC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBmb250U2l6ZTtcbn1cbi8qKlxuICog6I635Y+W6KGM6Ze06Led5aaC5p6c5paH5pys5aSa6KGM77yM6ZyA6KaB6I635Y+W5paH5pys6Ze06LedXG4gKiBAcGFyYW0gZm9udFNpemUg5a2X5L2T5aSn5bCPXG4gKiBAcGFyYW0gbGluZUhlaWdodCDooYzpq5hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVTcGFjZWluZyhmb250U2l6ZSwgbGluZUhlaWdodCkge1xuICAgIHJldHVybiBsaW5lSGVpZ2h0ID8gbGluZUhlaWdodCAtIGZvbnRTaXplIDogZm9udFNpemUgKiAwLjE0O1xufVxuLyoqXG4gKiDlrZfkvZPlrr3luqZcbiAqIEBwYXJhbSB0ZXh0IOaWh+acrFxuICogQHBhcmFtIGZvbnQg5a2X5L2TXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0V2lkdGgodGV4dCwgZm9udCkge1xuICAgIHZhciBjb250ZXh0ID0gZ2V0T2ZmU2NyZWVuQ29udGV4dCgpOyAvLyDojrflj5bnprvlsY/nmoQgY3R4IOi/m+ihjOiuoeeul1xuICAgIHZhciB3aWR0aCA9IDA7XG4gICAgLy8gbnVsbCDmiJbogIUgdW5kZWZpbmVkIOaXtu+8jOWuveW6puS4uiAwXG4gICAgaWYgKGlzTmlsKHRleHQpIHx8IHRleHQgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICB9XG4gICAgY29udGV4dC5zYXZlKCk7XG4gICAgY29udGV4dC5mb250ID0gZm9udDtcbiAgICBpZiAoaXNTdHJpbmcodGV4dCkgJiYgdGV4dC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICAgICAgdmFyIHRleHRBcnIgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZWFjaCh0ZXh0QXJyLCBmdW5jdGlvbiAoc3ViVGV4dCkge1xuICAgICAgICAgICAgdmFyIG1lYXN1cmVXaWR0aCA9IGNvbnRleHQubWVhc3VyZVRleHQoc3ViVGV4dCkud2lkdGg7XG4gICAgICAgICAgICBpZiAod2lkdGggPCBtZWFzdXJlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IG1lYXN1cmVXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3aWR0aCA9IGNvbnRleHQubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XG4gICAgfVxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgIHJldHVybiB3aWR0aDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZUZvbnQoYXR0cnMpIHtcbiAgICB2YXIgZm9udFNpemUgPSBhdHRycy5mb250U2l6ZSwgZm9udEZhbWlseSA9IGF0dHJzLmZvbnRGYW1pbHksIGZvbnRXZWlnaHQgPSBhdHRycy5mb250V2VpZ2h0LCBmb250U3R5bGUgPSBhdHRycy5mb250U3R5bGUsIGZvbnRWYXJpYW50ID0gYXR0cnMuZm9udFZhcmlhbnQ7XG4gICAgcmV0dXJuIFtmb250U3R5bGUsIGZvbnRWYXJpYW50LCBmb250V2VpZ2h0LCBmb250U2l6ZSArIFwicHhcIiwgZm9udEZhbWlseV0uam9pbignICcpLnRyaW0oKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js ***! \************************************************************************/ /*! exports provided: removeFromArray, isBrowser, isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst, isParent, isAllowCapture */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFromArray\", function() { return removeFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBrowser\", function() { return isBrowser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isParent\", function() { return isParent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return isAllowCapture; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"]; });\n\nfunction removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// 是否元素的父容器\nfunction isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nfunction isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvdXRpbC5qcz9iNTI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDNEY7QUFDbkc7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiByZW1vdmVGcm9tQXJyYXkoYXJyLCBvYmopIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihvYmopO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxufVxuZXhwb3J0IHZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcbmV4cG9ydCB7IGlzTmlsLCBpc0Z1bmN0aW9uLCBpc1N0cmluZywgaXNPYmplY3QsIGlzQXJyYXksIG1peCwgZWFjaCwgdXBwZXJGaXJzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLy8g5piv5ZCm5YWD57Sg55qE54i25a655ZmoXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJlbnQoY29udGFpbmVyLCBzaGFwZSkge1xuICAgIC8vIOaJgOaciSBzaGFwZSDpg73mmK8gY2FudmFzIOeahOWtkOWFg+e0oFxuICAgIGlmIChjb250YWluZXIuaXNDYW52YXMoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIHBhcmVudCA9IHNoYXBlLmdldFBhcmVudCgpO1xuICAgIHZhciBpc1BhcmVudCA9IGZhbHNlO1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKHBhcmVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgICAgICBpc1BhcmVudCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgfVxuICAgIHJldHVybiBpc1BhcmVudDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0FsbG93Q2FwdHVyZShlbGVtZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbGVtZW50LmNmZy52aXNpYmxlICYmIGVsZW1lbnQuY2ZnLmNhcHR1cmU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_hit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/hit */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n };\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n };\n /**\n * 获取屏幕像素比\n */\n Canvas.prototype.getPixelRatio = function () {\n var pixelRatio = this.get('pixelRatio') || Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"getPixelRatio\"])();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n };\n Canvas.prototype.getViewRange = function () {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height,\n };\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = document.createElement('canvas');\n var context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n Canvas.prototype.setDOMSize = function (width, height) {\n _super.prototype.setDOMSize.call(this, width, height);\n var context = this.get('context');\n var el = this.get('el');\n var pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n };\n // 复写基类方法\n Canvas.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n var context = this.get('context');\n var element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n };\n Canvas.prototype.getShape = function (x, y) {\n var shape;\n if (this.get('quickHit')) {\n shape = Object(_util_hit__WEBPACK_IMPORTED_MODULE_2__[\"getShape\"])(this, x, y);\n }\n else {\n shape = _super.prototype.getShape.call(this, x, y, null);\n }\n return shape;\n };\n // 对绘制区域边缘取整,避免浮点数问题\n Canvas.prototype._getRefreshRegion = function () {\n var elements = this.get('refreshElements');\n var viewRegion = this.getViewRange();\n var region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n }\n else {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"getMergedRegion\"])(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n var clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"mergeView\"])(region, viewRegion);\n }\n }\n }\n return region;\n };\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n Canvas.prototype.refreshElement = function (element) {\n var refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n };\n // 清理还在进行的绘制\n Canvas.prototype._clearFrame = function () {\n var drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"clearAnimationFrame\"])(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n };\n // 手工调用绘制接口\n Canvas.prototype.draw = function () {\n var drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n };\n // 绘制所有图形\n Canvas.prototype._drawAll = function () {\n var context = this.get('context');\n var element = this.get('el');\n var children = this.getChildren();\n context.clearRect(0, 0, element.width, element.height);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n };\n // 绘制局部\n Canvas.prototype._drawRegion = function () {\n var context = this.get('context');\n var refreshElements = this.get('refreshElements');\n var children = this.getChildren();\n var region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"checkRefresh\"])(this, children, region);\n // 绘制子元素\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children, region);\n context.restore();\n }\n else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"clearChanged\"])(refreshElements);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"each\"])(refreshElements, function (element) {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n };\n // 触发绘制\n Canvas.prototype._startDraw = function () {\n var _this = this;\n var drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"requestAnimationFrame\"])(function () {\n if (_this.get('localRefresh')) {\n _this._drawRegion();\n }\n else {\n _this._drawAll();\n }\n _this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n };\n Canvas.prototype.skipDraw = function () { };\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vY2FudmFzLmpzPzNkYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNZO0FBQ1I7QUFDTDtBQUNMO0FBQ2tFO0FBQzBCO0FBQ3hIO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxnRUFBYTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwwREFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrRUFBZTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0REFBUztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0VBQW1CO0FBQzNCLFFBQVEsK0RBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBLFlBQVksK0RBQVk7QUFDeEI7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0VBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFjO0FBQ0QscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS9jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0Q2FudmFzIH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi91dGlsL2hpdCc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCBHcm91cCBmcm9tICcuL2dyb3VwJztcbmltcG9ydCB7IGVhY2gsIGdldFBpeGVsUmF0aW8sIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2xlYXJBbmltYXRpb25GcmFtZSB9IGZyb20gJy4vdXRpbC91dGlsJztcbmltcG9ydCB7IGFwcGx5QXR0cnNUb0NvbnRleHQsIGRyYXdDaGlsZHJlbiwgZ2V0TWVyZ2VkUmVnaW9uLCBtZXJnZVZpZXcsIGNoZWNrUmVmcmVzaCwgY2xlYXJDaGFuZ2VkIH0gZnJvbSAnLi91dGlsL2RyYXcnO1xudmFyIENhbnZhcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FudmFzLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhbnZhcygpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDYW52YXMucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8g6K6+572u5riy5p+T5byV5pOO5Li6IGNhbnZhc++8jOWPquivu+WxnuaAp1xuICAgICAgICBjZmdbJ3JlbmRlcmVyJ10gPSAnY2FudmFzJztcbiAgICAgICAgLy8g5piv5ZCm6Ieq5Yqo57uY5Yi277yM5LiN6ZyA6KaB55So5oi36LCD55SoIGRyYXcg5pa55rOVXG4gICAgICAgIGNmZ1snYXV0b0RyYXcnXSA9IHRydWU7XG4gICAgICAgIC8vIOaYr+WQpuWFgeiuuOWxgOmDqOWIt+aWsOWbvuihqFxuICAgICAgICBjZmdbJ2xvY2FsUmVmcmVzaCddID0gdHJ1ZTtcbiAgICAgICAgY2ZnWydyZWZyZXNoRWxlbWVudHMnXSA9IFtdO1xuICAgICAgICAvLyDmmK/lkKblnKjop4blm77lhoXoh6rliqjoo4HliapcbiAgICAgICAgY2ZnWydjbGlwVmlldyddID0gdHJ1ZTtcbiAgICAgICAgLy8g5piv5ZCm5L2/55So5b+r6YCf5ou+5Y+W55qE5pa55qGI77yM6buY6K6k5Li6IGZhbHNl77yM5LiK5bGC5Y+v5Lul5omT5byAXG4gICAgICAgIGNmZ1sncXVpY2tIaXQnXSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gY2ZnO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICog6Kem5Y+R55S75biD5pu05paw55qE5LiJ56eNIGNoYW5nZVR5cGVcbiAgICAgICAgICogMS4gYXR0cjog5L+u5pS555S75biD55qE57uY5Zu+5bGe5oCnXG4gICAgICAgICAqIDIuIHNvcnQ6IOeUu+W4g+aOkuW6j++8jOWbvuW9oueahOWxguasoeS8muWPkeeUn+WPmOWMllxuICAgICAgICAgKiAzLiBjaGFuZ2VTaXplOiDmlLnlj5jnlLvluIPlpKflsI9cbiAgICAgICAgICovXG4gICAgICAgIGlmIChjaGFuZ2VUeXBlID09PSAnYXR0cicgfHwgY2hhbmdlVHlwZSA9PT0gJ3NvcnQnIHx8IGNoYW5nZVR5cGUgPT09ICdjaGFuZ2VTaXplJykge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3JlZnJlc2hFbGVtZW50cycsIFt0aGlzXSk7XG4gICAgICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5blsY/luZXlg4/ntKDmr5RcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBpeGVsUmF0aW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwaXhlbFJhdGlvID0gdGhpcy5nZXQoJ3BpeGVsUmF0aW8nKSB8fCBnZXRQaXhlbFJhdGlvKCk7XG4gICAgICAgIC8vIOS4jei2syAxIOeahOWPliAx77yM6LaF5Ye6IDEg55qE5Y+W5pW0XG4gICAgICAgIHJldHVybiBwaXhlbFJhdGlvID49IDEgPyBNYXRoLmNlaWwocGl4ZWxSYXRpbykgOiAxO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRWaWV3UmFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW5YOiAwLFxuICAgICAgICAgICAgbWluWTogMCxcbiAgICAgICAgICAgIG1heFg6IHRoaXMuY2ZnLndpZHRoLFxuICAgICAgICAgICAgbWF4WTogdGhpcy5jZmcuaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5Z+657G755qE5pa55rOV55Sf5oiQ5qCH562+XG4gICAgQ2FudmFzLnByb3RvdHlwZS5jcmVhdGVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIHZhciBjb250ZXh0ID0gZWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAvLyDnvJPlrZggY29udGV4dCDlr7nosaFcbiAgICAgICAgdGhpcy5zZXQoJ2NvbnRleHQnLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLnNldERPTVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLnNldERPTVNpemUuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIHBpeGVsUmF0aW8gPSB0aGlzLmdldFBpeGVsUmF0aW8oKTtcbiAgICAgICAgZWwud2lkdGggPSBwaXhlbFJhdGlvICogd2lkdGg7XG4gICAgICAgIGVsLmhlaWdodCA9IHBpeGVsUmF0aW8gKiBoZWlnaHQ7XG4gICAgICAgIC8vIOiuvue9riBjYW52YXMg5YWD57Sg55qE5a695bqm5ZKM6auY5bqm77yM5Lya6YeN572u57yp5pS+77yM5Zug5q2kIGNvbnRleHQuc2NhbGUg6ZyA6KaB5Zyo5q+P5qyh6K6+572u5a6944CB6auY5ZCO6LCD55SoXG4gICAgICAgIGlmIChwaXhlbFJhdGlvID4gMSkge1xuICAgICAgICAgICAgY29udGV4dC5zY2FsZShwaXhlbFJhdGlvLCBwaXhlbFJhdGlvKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5aSN5YaZ5Z+657G75pa55rOVXG4gICAgQ2FudmFzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5jbGVhci5jYWxsKHRoaXMpO1xuICAgICAgICB0aGlzLl9jbGVhckZyYW1lKCk7IC8vIOmcgOimgea4heeQhuaOieW7tui/n+e7mOWItueahOW4p1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0U2hhcGUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICB2YXIgc2hhcGU7XG4gICAgICAgIGlmICh0aGlzLmdldCgncXVpY2tIaXQnKSkge1xuICAgICAgICAgICAgc2hhcGUgPSBnZXRTaGFwZSh0aGlzLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNoYXBlID0gX3N1cGVyLnByb3RvdHlwZS5nZXRTaGFwZS5jYWxsKHRoaXMsIHgsIHksIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIC8vIOWvuee7mOWItuWMuuWfn+i+uee8mOWPluaVtO+8jOmBv+WFjea1rueCueaVsOmXrumimFxuICAgIENhbnZhcy5wcm90b3R5cGUuX2dldFJlZnJlc2hSZWdpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuZ2V0KCdyZWZyZXNoRWxlbWVudHMnKTtcbiAgICAgICAgdmFyIHZpZXdSZWdpb24gPSB0aGlzLmdldFZpZXdSYW5nZSgpO1xuICAgICAgICB2YXIgcmVnaW9uO1xuICAgICAgICAvLyDlpoLmnpzmmK/lvZPliY3nlLvluIPmlbTkvZPlj5HnlJ/kuoblj5jljJbvvIzliJnnm7TmjqXph43nu5jmlbTkuKrnlLvluINcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCAmJiBlbGVtZW50c1swXSA9PT0gdGhpcykge1xuICAgICAgICAgICAgcmVnaW9uID0gdmlld1JlZ2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlZ2lvbiA9IGdldE1lcmdlZFJlZ2lvbihlbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAocmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgcmVnaW9uLm1pblggPSBNYXRoLmZsb29yKHJlZ2lvbi5taW5YKTtcbiAgICAgICAgICAgICAgICByZWdpb24ubWluWSA9IE1hdGguZmxvb3IocmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgICAgIHJlZ2lvbi5tYXhYID0gTWF0aC5jZWlsKHJlZ2lvbi5tYXhYKTtcbiAgICAgICAgICAgICAgICByZWdpb24ubWF4WSA9IE1hdGguY2VpbChyZWdpb24ubWF4WSk7XG4gICAgICAgICAgICAgICAgcmVnaW9uLm1heFkgKz0gMTsgLy8g5Zyo5b6I5aSa546v5aKD5LiL5a2X5L2T55qE6auY5L2O5Lya5LiN5LiA6Ie077yM6ZmE5Yqg5LiA5YOP57Sg77yM6YG/5YWN5q6L5b2xXG4gICAgICAgICAgICAgICAgdmFyIGNsaXBWaWV3ID0gdGhpcy5nZXQoJ2NsaXBWaWV3Jyk7XG4gICAgICAgICAgICAgICAgLy8g6Ieq5Yqo6KOB5Ymq5LiN5ZyoIHZpZXcg5YaF55qE5Yy65Z+fXG4gICAgICAgICAgICAgICAgaWYgKGNsaXBWaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA9IG1lcmdlVmlldyhyZWdpb24sIHZpZXdSZWdpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVnaW9uO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Yi35paw5Zu+5b2i5YWD57Sg77yM6L+Z6YeM5LuF5LuF5piv5pS+5YWl6Zif5YiX77yM5LiL5qyh57uY5Yi25pe26L+b6KGM57uY5Yi2XG4gICAgICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCDlm77lvaLlhYPntKBcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLnJlZnJlc2hFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHJlZnJlc2hFbGVtZW50cyA9IHRoaXMuZ2V0KCdyZWZyZXNoRWxlbWVudHMnKTtcbiAgICAgICAgcmVmcmVzaEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIC8vIGlmICh0aGlzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAvLyAgIHRoaXMuX3N0YXJ0RHJhdygpO1xuICAgICAgICAvLyB9XG4gICAgfTtcbiAgICAvLyDmuIXnkIbov5jlnKjov5vooYznmoTnu5jliLZcbiAgICBDYW52YXMucHJvdG90eXBlLl9jbGVhckZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZHJhd0ZyYW1lID0gdGhpcy5nZXQoJ2RyYXdGcmFtZScpO1xuICAgICAgICBpZiAoZHJhd0ZyYW1lKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzlhajpg6jmuLLmn5Pml7bvvIzlrZjlnKjlsYDpg6jmuLLmn5PvvIzliJnmipvlvIPmjonlsYDpg6jmuLLmn5NcbiAgICAgICAgICAgIGNsZWFyQW5pbWF0aW9uRnJhbWUoZHJhd0ZyYW1lKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdkcmF3RnJhbWUnLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoRWxlbWVudHMnLCBbXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOaJi+W3peiwg+eUqOe7mOWItuaOpeWPo1xuICAgIENhbnZhcy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRyYXdGcmFtZSA9IHRoaXMuZ2V0KCdkcmF3RnJhbWUnKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdhdXRvRHJhdycpICYmIGRyYXdGcmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0YXJ0RHJhdygpO1xuICAgIH07XG4gICAgLy8g57uY5Yi25omA5pyJ5Zu+5b2iXG4gICAgQ2FudmFzLnByb3RvdHlwZS5fZHJhd0FsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCB0aGlzKTtcbiAgICAgICAgZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgICAgICAgLy8g5a+55LqOIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvNDIyIOeahOWcuuaZr++8jOWFqOWxgOa4suafk+eahOaooeW8j+S4i+S5n+S8muiusOW9leabtOaWsOeahOWFg+e0oOmYn+WIl++8jOWboOatpOWFqOWxgOa4suafk+WujOWQjuS5n+mcgOimgee9ruepulxuICAgICAgICB0aGlzLnNldCgncmVmcmVzaEVsZW1lbnRzJywgW10pO1xuICAgIH07XG4gICAgLy8g57uY5Yi25bGA6YOoXG4gICAgQ2FudmFzLnByb3RvdHlwZS5fZHJhd1JlZ2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgcmVmcmVzaEVsZW1lbnRzID0gdGhpcy5nZXQoJ3JlZnJlc2hFbGVtZW50cycpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciByZWdpb24gPSB0aGlzLl9nZXRSZWZyZXNoUmVnaW9uKCk7XG4gICAgICAgIC8vIOmcgOimgeazqOaEj+WPr+iDveayoeaciSByZWdpb24g55qE5Zy65pmvXG4gICAgICAgIC8vIOS4gOiIrOWPkeeUn+WcqOiuvue9ruS6hiBsb2NhbFJlZnJlc2ggLOWcqOayoeacieWbvuW9ouWPkeeUn+WPmOWMlueahOaDheWGteS4i++8jOeUqOaIt+iwg+eUqOS6hiBkcmF3XG4gICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgIC8vIOa4heeQhuaMh+WumuWMuuWfn1xuICAgICAgICAgICAgY29udGV4dC5jbGVhclJlY3QocmVnaW9uLm1pblgsIHJlZ2lvbi5taW5ZLCByZWdpb24ubWF4WCAtIHJlZ2lvbi5taW5YLCByZWdpb24ubWF4WSAtIHJlZ2lvbi5taW5ZKTtcbiAgICAgICAgICAgIC8vIOS/neWtmOS4iuS4i+aWh++8jOiuvue9riBjbGlwXG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICBjb250ZXh0LnJlY3QocmVnaW9uLm1pblgsIHJlZ2lvbi5taW5ZLCByZWdpb24ubWF4WCAtIHJlZ2lvbi5taW5YLCByZWdpb24ubWF4WSAtIHJlZ2lvbi5taW5ZKTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCB0aGlzKTtcbiAgICAgICAgICAgIC8vIOehruiupOabtOaWsOeahOWFg+e0oO+8jOi/meS4quS8mOWMluWPr+S7peaPkOWNhyAxMCDlgI3lt6blj7PnmoTmgKfog73vvIwxMFcg5Liq5bim5pyJIGdyb3VwIOeahOiKgueCue+8jOWxgOmDqOa4suafk+S8muS7jiA5MG1zIOS4i+mZjeWIsCA1LTYgbXNcbiAgICAgICAgICAgIGNoZWNrUmVmcmVzaCh0aGlzLCBjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgIC8vIOe7mOWItuWtkOWFg+e0oFxuICAgICAgICAgICAgZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVmcmVzaEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8g6Ziy5q2i5Y+R55Sf5pS55Y+Y55qEIGVsZW1lbnRzIOayoeaciSByZWdpb24g55qE5Zy65pmv77yM6L+Z5Lya5Y+R55Sf5Zyo5aSa5Liq5oOF5Ya15LiLXG4gICAgICAgICAgICAvLyAxLiDnqbrnmoQgZ3JvdXBcbiAgICAgICAgICAgIC8vIDIuIOaJgOaciSBlbGVtZW50cyDmsqHmnInlnKjnu5jlm77ljLrln59cbiAgICAgICAgICAgIC8vIDMuIGdyb3VwIOS4i+mdoueahCBlbGVtZW50cyDpmpDol4/mjolcbiAgICAgICAgICAgIC8vIOWmguaenOS4jei/m+ihjOa4heeQhiBoYXNDaGFuZ2VkIOeahOeKtuaAgeS8muS4jeato+ehrlxuICAgICAgICAgICAgY2xlYXJDaGFuZ2VkKHJlZnJlc2hFbGVtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaChyZWZyZXNoRWxlbWVudHMsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5nZXQoJ2hhc0NoYW5nZWQnKSkge1xuICAgICAgICAgICAgICAgIC8vIOWcqOinhueql+WklueahCBHcm91cCDlhYPntKDkvJrliqDlhaXliLDmm7TmlrDpmJ/liJfph4zvvIzkvYblrp7pmYXljbTmsqHmnInmiafooYwgZHJhdygpIOmAu+i+ke+8jOS5n+Wwseayoeaciea4hemZpCBoYXNDaGFuZ2VkIOagh+iusFxuICAgICAgICAgICAgICAgIC8vIOWNs+W3sue7j+mHjee7mOWujOOAgeS9hiBoYXNDaGFuZ2VkIOagh+iusOayoeaciea4hemZpOeahOWFg+e0oO+8jOmcgOimgee7n+S4gOa4hemZpOaOieOAguS4u+imgeaYryBHcm91cCDlrZjlnKjpl67popjvvIzlhbfkvZPljp/lm6DlvoXmjpLmn6VcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoRWxlbWVudHMnLCBbXSk7XG4gICAgfTtcbiAgICAvLyDop6blj5Hnu5jliLZcbiAgICBDYW52YXMucHJvdG90eXBlLl9zdGFydERyYXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBkcmF3RnJhbWUgPSB0aGlzLmdldCgnZHJhd0ZyYW1lJyk7XG4gICAgICAgIGlmICghZHJhd0ZyYW1lKSB7XG4gICAgICAgICAgICBkcmF3RnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5nZXQoJ2xvY2FsUmVmcmVzaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9kcmF3UmVnaW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZHJhd0FsbCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5zZXQoJ2RyYXdGcmFtZScsIG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldCgnZHJhd0ZyYW1lJywgZHJhd0ZyYW1lKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5za2lwRHJhdyA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLnJlbW92ZURvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIC8vIOmcgOimgea4heeQhiBjYW52YXMg55S75biD5YaF5a6577yM5ZCm5YiZaW9z5LiLIOWIm+W7uueahGNhbnZhc+Weg+WcvuacquWbnuaUtu+8jOWvvOiHtFRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHPpl67pophcbiAgICAgICAgLy8g55u45YWz6Zeu6aKY5YiX6KGoXG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUyNTMyNjE0L3RvdGFsLWNhbnZhcy1tZW1vcnktdXNlLWV4Y2VlZHMtdGhlLW1heGltdW0tbGltaXQtc2FmYXJpLTEyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVubGF5ZXJzL29wZW5sYXllcnMvaXNzdWVzLzkyOTFcbiAgICAgICAgZWwud2lkdGggPSAwO1xuICAgICAgICBlbC5oZWlnaHQgPSAwO1xuICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9O1xuICAgIHJldHVybiBDYW52YXM7XG59KEFic3RyYWN0Q2FudmFzKSk7XG5leHBvcnQgZGVmYXVsdCBDYW52YXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW52YXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_2__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n // 同 shape 中的方法重复了\n Group.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n Group.prototype.cacheCanvasBBox = function () {\n var children = this.cfg.children;\n var xArr = [];\n var yArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(children, function (child) {\n var bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n var bbox = null;\n if (xArr.length) {\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(xArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(yArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(yArr);\n bbox = {\n minX: minX,\n minY: minY,\n x: minX,\n y: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n var canvas = this.cfg.canvas;\n if (canvas) {\n var viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"intersectRect\"])(bbox, viewRange));\n }\n }\n else {\n this.set('isInView', false);\n }\n this.set('cacheCanvasBBox', bbox);\n };\n Group.prototype.draw = function (context, region) {\n var children = this.cfg.children;\n var allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, this.getClip());\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n };\n // 绘制时被跳过,一般发生在分组隐藏时\n Group.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vZ3JvdXAuanM/OTI5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNXO0FBQ1o7QUFDK0M7QUFDcEM7QUFDQTtBQUM1QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHVCQUF1QixzREFBRztBQUMxQix1QkFBdUIsc0RBQUc7QUFDMUIsdUJBQXVCLHNEQUFHO0FBQzFCLHVCQUF1QixzREFBRztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsZ0VBQWE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzRUFBbUI7QUFDL0I7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywwREFBYTtBQUNBLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vZ3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0R3JvdXAgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBhcHBseUF0dHJzVG9Db250ZXh0LCBkcmF3Q2hpbGRyZW4sIHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgZWFjaCwgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGludGVyc2VjdFJlY3QgfSBmcm9tICcuL3V0aWwvdXRpbCc7XG52YXIgR3JvdXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEdyb3VwLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEdyb3VwKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOS4gOS6m+aWueazleiwg+eUqOS8muW8lei1t+eUu+W4g+WPmOWMllxuICAgICAqIEBwYXJhbSB7Q2hhbmdlVHlwZX0gY2hhbmdlVHlwZSDmlLnlj5jnmoTnsbvlnotcbiAgICAgKi9cbiAgICBHcm91cC5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICByZWZyZXNoRWxlbWVudCh0aGlzLCBjaGFuZ2VUeXBlKTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8vIOWQjCBzaGFwZSDkuK3nmoTmlrnms5Xph43lpI3kuoZcbiAgICBHcm91cC5wcm90b3R5cGUuX2FwcGx5Q2xpcCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjbGlwKSB7XG4gICAgICAgIGlmIChjbGlwKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIC8vIOWwhiBjbGlwIOeahOWxnuaAp+aMgui9veWIsCBjb250ZXh0IOS4ilxuICAgICAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCBjbGlwKTtcbiAgICAgICAgICAgIC8vIOe7mOWItiBjbGlwIOi3r+W+hFxuICAgICAgICAgICAgY2xpcC5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICAvLyDoo4HliapcbiAgICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICAgICAgY2xpcC5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOi/meS4quaWueazleS7peWJjeebtOaOpeS9v+eUqOeahCBnZXRDYW52YXNCQm9477yM55Sx5LqOIGdyb3VwIOS4iuayoeaciee8k+WtmO+8jOaJgOS7peavj+asoemHjeaWsOiuoeeul++8jOWvvOiHtOaAp+iDveW8gOmUgOavlOi+g+Wkp1xuICAgIC8vIOWkp+amguiDveWkn+iKguecgeWFqOWxgOa4suafkyAxNS0yMCUg55qE5oCn6IO977yM5aaC5p6c5LiN5Zyo6L+Z6YeM5Yqg57yT5a2Y5LyY5YyW5ZCOIDEwVyDkuKroioLngrnml6Dms5Xovr7liLAgNS02IG1z77yM5aSn5qaC6IO95aSfIDMwLTQwbXNcbiAgICBHcm91cC5wcm90b3R5cGUuY2FjaGVDYW52YXNCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNmZy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIHhBcnIgPSBbXTtcbiAgICAgICAgdmFyIHlBcnIgPSBbXTtcbiAgICAgICAgZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICB2YXIgYmJveCA9IGNoaWxkLmNmZy5jYWNoZUNhbnZhc0JCb3g7XG4gICAgICAgICAgICAvLyBpc0ludmlldyDnmoTliKTlrprmmK/kuIDml6blm77lvaLmiJbogIXliIbnu4TmuLLmn5PlsLHopoHorqHnrpfmmK/lkKblnKjop4blm77lhoXvvIxcbiAgICAgICAgICAgIC8vIOi/meS4quWIpOWumiAxMFcg5Liq5Zu+5b2i5LiL5beu5LiN5aSa6IO95aSf6IqC55yBIDUtNiBtcyDnmoTlvIDplIBcbiAgICAgICAgICAgIGlmIChiYm94ICYmIGNoaWxkLmNmZy5pc0luVmlldykge1xuICAgICAgICAgICAgICAgIHhBcnIucHVzaChiYm94Lm1pblgsIGJib3gubWF4WCk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGJib3gubWluWSwgYmJveC5tYXhZKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBiYm94ID0gbnVsbDtcbiAgICAgICAgaWYgKHhBcnIubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgbWluWCA9IG1pbih4QXJyKTtcbiAgICAgICAgICAgIHZhciBtYXhYID0gbWF4KHhBcnIpO1xuICAgICAgICAgICAgdmFyIG1pblkgPSBtaW4oeUFycik7XG4gICAgICAgICAgICB2YXIgbWF4WSA9IG1heCh5QXJyKTtcbiAgICAgICAgICAgIGJib3ggPSB7XG4gICAgICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICAgICAgICAgIG1heFk6IG1heFksXG4gICAgICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2ZnLmNhbnZhcztcbiAgICAgICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmlld1JhbmdlID0gY2FudmFzLmdldFZpZXdSYW5nZSgpO1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOi/meS4quWcsOaWueWIpOWumiBpc0luVmlldyA9PSBmYWxzZSDorr7nva4gYmJveCDkuLogZmFsc2Ug55qE6K+d77yM5ou+5Y+W55qE5oCn6IO95Lya5pu06auYXG4gICAgICAgICAgICAgICAgLy8g5L2G5piv55uu5YmNIDEwVyDlm77lvaLnmoTmi77lj5blnKggMi01bXMg5YaF77yM6L+Z5Liq5LyY5YyW5oSP5LmJ5LiN5aSn77yM5Y+v5Lul5ZCO5pyf6KeC5a+f5YaN55yLXG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoJ2lzSW5WaWV3JywgaW50ZXJzZWN0UmVjdChiYm94LCB2aWV3UmFuZ2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdpc0luVmlldycsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgYmJveCk7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0LCByZWdpb24pIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jZmcuY2hpbGRyZW47XG4gICAgICAgIHZhciBhbGxvd0RyYXcgPSByZWdpb24gPyB0aGlzLmNmZy5yZWZyZXNoIDogdHJ1ZTsgLy8g5bGA6YOo5Yi35paw6ZyA6KaB5Yik5a6aXG4gICAgICAgIC8vIOi/meS4quWcsOaWuemcgOimgeWIpOWumu+8jOWcqCBHNiDnmoTlnLrmma/mr4/kuKogZ3JvdXAg6YO95pyJIHRyYW5zZm9ybSDnmoTlnLrmma/kuIvmgKfog73kvJrlvIDplIDpnZ7luLjlpKdcbiAgICAgICAgLy8g6YCa6L+HIHJlZnJlc2gg55qE5Yik5a6a77yM5Y+v5Lul5LiN5Yi35paw5rKh5pyJ5Y+R55Sf6L+H5Y+Y5YyW55qE5YiG57uE77yM5LiN5Zyo6KeG56qX5YaF55qE5YiG57uE562J562JXG4gICAgICAgIC8vIOWmguaenOaDs+i/m+S4gOatpeaPkOWNh+WxgOmDqOa4suafk+aAp+iDve+8jOWPr+S7pei/m+S4gOatpeS8mOWMliByZWZyZXNoIOeahOWIpOWumu+8jOS+neeEtuaciea9nOWKm1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoICYmIGFsbG93RHJhdykge1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICAvLyBncm91cCDkuIrnmoTnn6npmLXlkozlsZ7mgKfkuZ/kvJrlupTnlKjliLDkuIrkuIvmlofkuIpcbiAgICAgICAgICAgIC8vIOWFiOWwhiBhdHRycyDlupTnlKjliLDkuIrkuIvmlofkuK3vvIzlho3orr7nva4gY2xpcOOAguWboOS4uiBjbGlwIOW6lOivpeiiq+W9k+WJjeWFg+e0oOeahCBtYXRyaXgg5omA5b2x5ZONXG4gICAgICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fYXBwbHlDbGlwKGNvbnRleHQsIHRoaXMuZ2V0Q2xpcCgpKTtcbiAgICAgICAgICAgIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZUNhbnZhc0JCb3goKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDov5nph4znmoTmiJDmnKzmr5TovoPlpKfvvIzlpoLmnpzkuI3nu5jliLbliJnkuI3lho1cbiAgICAgICAgLy8gdGhpcy5zZXQoJ2NhY2hlQ2FudmFzQkJveCcsIHRoaXMuZ2V0Q2FudmFzQkJveCgpKTtcbiAgICAgICAgdGhpcy5jZmcucmVmcmVzaCA9IG51bGw7XG4gICAgICAgIC8vIOe7mOWItuWQju+8jOa2iOmZpOabtOaWsOagh+iusFxuICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICB9O1xuICAgIC8vIOe7mOWItuaXtuiiq+i3s+i/h++8jOS4gOiIrOWPkeeUn+WcqOWIhue7hOmakOiXj+aXtlxuICAgIEdyb3VwLnByb3RvdHlwZS5za2lwRHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2NhY2hlQ2FudmFzQkJveCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICB9O1xuICAgIHJldHVybiBHcm91cDtcbn0oQWJzdHJhY3RHcm91cCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JvdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"getArcParams\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _util_arc_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/arc-params */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArcParams\", function() { return _util_arc_params__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\nvar version = '0.5.12';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vaW5kZXguanM/MzY3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNnQjtBQUNGO0FBQzFCO0FBQzJDO0FBQ3JEO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmV4cG9ydCAqIGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENhbnZhcyB9IGZyb20gJy4vY2FudmFzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgR3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmV4cG9ydCB7IFNoYXBlIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEFyY1BhcmFtcyB9IGZyb20gJy4vdXRpbC9hcmMtcGFyYW1zJztcbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcwLjUuMTInO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../group */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\");\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_4__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var type = this.get('type');\n var lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(type);\n var box = bboxMethod(this);\n var halfLineWidth = lineWidth / 2;\n var minX = box.x - halfLineWidth;\n var minY = box.y - halfLineWidth;\n var maxX = box.x + box.width + halfLineWidth;\n var maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX: minX,\n y: minY,\n minY: minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX: maxX,\n maxY: maxY,\n };\n };\n ShapeBase.prototype.isFill = function () {\n return !!this.attrs['fill'] || this.isClipShape();\n };\n ShapeBase.prototype.isStroke = function () {\n return !!this.attrs['stroke'];\n };\n // 同 shape 中的方法重复了\n ShapeBase.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 绘制图形时需要考虑 region 限制\n ShapeBase.prototype.draw = function (context, region) {\n var clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n var bbox = this.getCanvasBBox();\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, clip);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n };\n ShapeBase.prototype.getCanvasViewBox = function () {\n var canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n };\n ShapeBase.prototype.cacheCanvasBBox = function () {\n var canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n var bbox = this.getCanvasBBox();\n var isInView = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n }\n else {\n this.set('cacheCanvasBBox', null);\n }\n }\n };\n ShapeBase.prototype._afterDraw = function () {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n };\n ShapeBase.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n };\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.drawPath = function (context) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.fill = function (context) {\n context.fill();\n };\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.stroke = function (context) {\n context.stroke();\n };\n // 绘制或者填充\n ShapeBase.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.createPath = function (context) { };\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.afterDrawPath = function (context) { };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n // return HitUtil.isHitShape(this, refX, refY);\n var isStroke = this.isStroke();\n var isFill = this.isFill();\n var lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n };\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n ShapeBase.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n if (!this.isStroke()) {\n return 0;\n }\n var attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvYmFzZS5qcz8yYjRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ0M7QUFDTztBQUNlO0FBQ3RCO0FBQ1o7QUFDSjtBQUM3QjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFFQUFxRTtBQUNuSDtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLFFBQVEsaUVBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixrRUFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0VBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNFQUFtQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0VBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQSw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMERBQWE7QUFDQSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdFNoYXBlIH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmltcG9ydCB7IGlzTmlsLCBpbnRlcnNlY3RSZWN0IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IGFwcGx5QXR0cnNUb0NvbnRleHQsIHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbmltcG9ydCB7IGdldEJCb3hNZXRob2QgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgR3JvdXAgZnJvbSAnLi4vZ3JvdXAnO1xudmFyIFNoYXBlQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU2hhcGVCYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNoYXBlQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8g6K6+572u6buY6K6k5YC8XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IGxpbmVXaWR0aDogMSwgbGluZUFwcGVuZFdpZHRoOiAwLCBzdHJva2VPcGFjaXR5OiAxLCBmaWxsT3BhY2l0eTogMSB9KTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0U2hhcGVCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU2hhcGU7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICByZWZyZXNoRWxlbWVudCh0aGlzLCBjaGFuZ2VUeXBlKTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuY2FsY3VsYXRlQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGUgPSB0aGlzLmdldCgndHlwZScpO1xuICAgICAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRIaXRMaW5lV2lkdGgoKTtcbiAgICAgICAgLy8gY29uc3QgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGJib3hNZXRob2QgPSBnZXRCQm94TWV0aG9kKHR5cGUpO1xuICAgICAgICB2YXIgYm94ID0gYmJveE1ldGhvZCh0aGlzKTtcbiAgICAgICAgdmFyIGhhbGZMaW5lV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICB2YXIgbWluWCA9IGJveC54IC0gaGFsZkxpbmVXaWR0aDtcbiAgICAgICAgdmFyIG1pblkgPSBib3gueSAtIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIHZhciBtYXhYID0gYm94LnggKyBib3gud2lkdGggKyBoYWxmTGluZVdpZHRoO1xuICAgICAgICB2YXIgbWF4WSA9IGJveC55ICsgYm94LmhlaWdodCArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgd2lkdGg6IGJveC53aWR0aCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogYm94LmhlaWdodCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0ZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXR0cnNbJ2ZpbGwnXSB8fCB0aGlzLmlzQ2xpcFNoYXBlKCk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzU3Ryb2tlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmF0dHJzWydzdHJva2UnXTtcbiAgICB9O1xuICAgIC8vIOWQjCBzaGFwZSDkuK3nmoTmlrnms5Xph43lpI3kuoZcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLl9hcHBseUNsaXAgPSBmdW5jdGlvbiAoY29udGV4dCwgY2xpcCkge1xuICAgICAgICBpZiAoY2xpcCkge1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICAvLyDlsIYgY2xpcCDnmoTlsZ7mgKfmjILovb3liLAgY29udGV4dCDkuIpcbiAgICAgICAgICAgIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgY2xpcCk7XG4gICAgICAgICAgICAvLyDnu5jliLYgY2xpcCDot6/lvoRcbiAgICAgICAgICAgIGNsaXAuY3JlYXRlUGF0aChjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICAgICAgLy8g6KOB5YmqXG4gICAgICAgICAgICBjb250ZXh0LmNsaXAoKTtcbiAgICAgICAgICAgIGNsaXAuX2FmdGVyRHJhdygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDnu5jliLblm77lvaLml7bpnIDopoHogIPomZEgcmVnaW9uIOmZkOWItlxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0LCByZWdpb24pIHtcbiAgICAgICAgdmFyIGNsaXAgPSB0aGlzLmNmZy5jbGlwU2hhcGU7XG4gICAgICAgIC8vIOWmguaenOaMh+WumuS6hiByZWdpb27vvIzlkIzml7bkuI3lhYHorrjliLfmlrDml7bvvIznm7TmjqXov5Tlm55cbiAgICAgICAgaWYgKHJlZ2lvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2ZnLnJlZnJlc2ggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoJ2hhc0NoYW5nZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5piv5ZCm55u45Lqk6ZyA6KaB6ICD6JmRIGNsaXAg55qE5YyF5Zu055uSXG4gICAgICAgICAgICB2YXIgYmJveCA9IHRoaXMuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICAgICAgaWYgKCFpbnRlcnNlY3RSZWN0KHJlZ2lvbiwgYmJveCkpIHtcbiAgICAgICAgICAgICAgICAvLyDlm77lvaLnmoTljIXlm7Tnm5LkuI7ph43nu5jljLrln5/kuI3nm7jkuqTml7bvvIzkuZ/pnIDopoHmuIXpmaTmoIforrBcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAvLyDlrZjlnKjlpJrnp43mg4XlvaLpnIDopoHmm7TmlrAgY2FjaGVDYW52YXNCQm94IOWSjCBpc0ludmlldyDnmoTliKTlrppcbiAgICAgICAgICAgICAgICAvLyAxLiDkuYvliY3lm77lvaLlnKjop4bnqpflhoXvvIzkvYbmmK/njrDlnKjkuI3lho3op4bnqpflhoVcbiAgICAgICAgICAgICAgICAvLyAyLiDlpoLmnpzlvZPliY3nmoTlm77lvaLku6Xlj4rniLblhYPntKDpg73msqHmnInlj5HnlJ/ov4flj5jljJbvvIxyZWZyZXNoID0gZmFsc2Ug5LiN5Lya6LWw5Yiw6L+Z6YeM77yM5omA5Lul6L+Z6YeM55qE5Zu+5b2i6YO95piv54i25YWD57Sg5Y+R55Sf5Y+Y5YyW77yM5L2G5piv5rKh5pyJ5Zyo6KeG5Zu+5YaF55qE5YWD57SgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2ZnLmlzSW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyRHJhdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgIC8vIOWFiOWwhiBhdHRycyDlupTnlKjliLDkuIrkuIvmlofkuK3vvIzlho3orr7nva4gY2xpcOOAguWboOS4uiBjbGlwIOW6lOivpeiiq+W9k+WJjeWFg+e0oOeahCBtYXRyaXgg5omA5b2x5ZONXG4gICAgICAgIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG4gICAgICAgIHRoaXMuX2FwcGx5Q2xpcChjb250ZXh0LCBjbGlwKTtcbiAgICAgICAgdGhpcy5kcmF3UGF0aChjb250ZXh0KTtcbiAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIHRoaXMuX2FmdGVyRHJhdygpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRDYW52YXNWaWV3Qm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jZmcuY2FudmFzO1xuICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldFZpZXdSYW5nZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jYWNoZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXNCQm94ID0gdGhpcy5nZXRDYW52YXNWaWV3Qm94KCk7XG4gICAgICAgIC8vIOe7mOWItueahOaXtuWAmee8k+WtmOWMheWbtOebklxuICAgICAgICBpZiAoY2FudmFzQkJveCkge1xuICAgICAgICAgICAgdmFyIGJib3ggPSB0aGlzLmdldENhbnZhc0JCb3goKTtcbiAgICAgICAgICAgIHZhciBpc0luVmlldyA9IGludGVyc2VjdFJlY3QoYmJveCwgY2FudmFzQkJveCk7XG4gICAgICAgICAgICB0aGlzLnNldCgnaXNJblZpZXcnLCBpc0luVmlldyk7XG4gICAgICAgICAgICAvLyDkuI3lho3op4bnqpflhoUgY2FjaGVDYW52YXNCQm94IOiuvue9ruaIkCBudWxs77yM5Lya5o+Q5Y2H5bGA6YOo5riy5p+T55qE5oCn6IO977yMXG4gICAgICAgICAgICAvLyDlm6DkuLrlnKjlsYDpg6jmuLLmn5PlvbHlk43nmoTljIXlm7Tnm5LorqHnrpfml7bkuI3ogIPomZHov5nkuKrlm77lvaLnmoTljIXlm7Tnm5JcbiAgICAgICAgICAgIC8vIOeItuWFg+e0oCBjYWNoZUNhbnZhc0JCb3gg6K6h566X55qE5pe25YCZ5Lmf5LiN6K6h566XXG4gICAgICAgICAgICBpZiAoaXNJblZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgYmJveCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuX2FmdGVyRHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jYWNoZUNhbnZhc0JCb3goKTtcbiAgICAgICAgLy8g57uY5Yi25ZCO5raI6Zmk5qCH6K6wXG4gICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNldCgncmVmcmVzaCcsIG51bGwpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5za2lwRHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2NhY2hlQ2FudmFzQkJveCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnaXNJblZpZXcnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zZXQoJ2hhc0NoYW5nZWQnLCBmYWxzZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnu5jliLblm77lvaLnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCDkuIrkuIvmlodcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICB0aGlzLnN0cm9rZUFuZEZpbGwoY29udGV4dCk7XG4gICAgICAgIHRoaXMuYWZ0ZXJEcmF3UGF0aChjb250ZXh0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDloavlhYXlm77lvaJcbiAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOe7mOWItuWbvuW9oui+ueahhlxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zdHJva2UgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgIH07XG4gICAgLy8g57uY5Yi25oiW6ICF5aGr5YWFXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zdHJva2VBbmRGaWxsID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRycywgbGluZVdpZHRoID0gX2EubGluZVdpZHRoLCBvcGFjaXR5ID0gX2Eub3BhY2l0eSwgc3Ryb2tlT3BhY2l0eSA9IF9hLnN0cm9rZU9wYWNpdHksIGZpbGxPcGFjaXR5ID0gX2EuZmlsbE9wYWNpdHk7XG4gICAgICAgIGlmICh0aGlzLmlzRmlsbCgpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKGZpbGxPcGFjaXR5KSAmJiBmaWxsT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBmaWxsT3BhY2l0eTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTdHJva2UoKSkge1xuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKHN0cm9rZU9wYWNpdHkpICYmIHN0cm9rZU9wYWNpdHkgIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IHN0cm9rZU9wYWNpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3Ryb2tlKGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWZ0ZXJEcmF3UGF0aChjb250ZXh0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDnu5jliLblm77lvaLnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCDkuIrkuIvmlodcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkgeyB9O1xuICAgIC8qKlxuICAgICAqIOe7mOWItuWujOaIkCBwYXRoIOWQjueahOaTjeS9nFxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuYWZ0ZXJEcmF3UGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7IH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0luU2hhcGUgPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICAvLyByZXR1cm4gSGl0VXRpbC5pc0hpdFNoYXBlKHRoaXMsIHJlZlgsIHJlZlkpO1xuICAgICAgICB2YXIgaXNTdHJva2UgPSB0aGlzLmlzU3Ryb2tlKCk7XG4gICAgICAgIHZhciBpc0ZpbGwgPSB0aGlzLmlzRmlsbCgpO1xuICAgICAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRIaXRMaW5lV2lkdGgoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJblN0cm9rZU9yUGF0aChyZWZYLCByZWZZLCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpO1xuICAgIH07XG4gICAgLy8g5LmL5omA5Lul5LiN5ouG5oiQIGlzSW5TdHJva2Ug5ZKMIGlzSW5QYXRoIOWcqOS6juS4pOiAheWtmOWcqOS4gOS6m+WFseWQjOeahOiuoeeul1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W57q/5ou+5Y+W55qE5a695bqmXG4gICAgICogQHJldHVybnMge251bWJlcn0g57q/55qE5ou+5Y+W5a695bqmXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRIaXRMaW5lV2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICByZXR1cm4gYXR0cnNbJ2xpbmVXaWR0aCddICsgYXR0cnNbJ2xpbmVBcHBlbmRXaWR0aCddO1xuICAgIH07XG4gICAgcmV0dXJuIFNoYXBlQmFzZTtcbn0oQWJzdHJhY3RTaGFwZSkpO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGVCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n var halfLineWidth = lineWidth / 2;\n var absDistance = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n };\n Circle.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvY2lyY2xlLmpzP2E1ZmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ1M7QUFDeEM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsbUJBQW1CO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDJEQUFRO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0kscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9jaXJjbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5ZyGXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIENpcmNsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2lyY2xlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDaXJjbGUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgcjogMCB9KTtcbiAgICB9O1xuICAgIENpcmNsZS5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByID0gYXR0cnMucjtcbiAgICAgICAgdmFyIGhhbGZMaW5lV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICB2YXIgYWJzRGlzdGFuY2UgPSBkaXN0YW5jZShjeCwgY3ksIHgsIHkpO1xuICAgICAgICAvLyDnm7TmjqXnlKjot53nprvvvIzlpoLmnpzlkIzml7blrZjlnKjovrnlkozloavlhYXml7bvvIzlj6/ku6Xlh4/lsJHkuKTmrKHorqHnrpdcbiAgICAgICAgaWYgKGlzRmlsbCAmJiBpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFic0Rpc3RhbmNlIDw9IHIgKyBoYWxmTGluZVdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhYnNEaXN0YW5jZSA8PSByO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFic0Rpc3RhbmNlID49IHIgLSBoYWxmTGluZVdpZHRoICYmIGFic0Rpc3RhbmNlIDw9IHIgKyBoYWxmTGluZVdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIENpcmNsZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgY3ggPSBhdHRycy54O1xuICAgICAgICB2YXIgY3kgPSBhdHRycy55O1xuICAgICAgICB2YXIgciA9IGF0dHJzLnI7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuYXJjKGN4LCBjeSwgciwgMCwgTWF0aC5QSSAqIDIsIGZhbHNlKTtcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9O1xuICAgIHJldHVybiBDaXJjbGU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2lyY2xlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\n\n\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var halfLineWith = lineWidth / 2;\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx, ry = attrs.ry;\n var squareX = (x - cx) * (x - cx);\n var squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return (ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1);\n }\n return false;\n };\n Ellipse.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx;\n var ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n }\n else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvZWxsaXBzZS5qcz9hMzBiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ2I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywyQkFBMkI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvZWxsaXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDmpK3lnIZcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG4vLyDmoLnmja7mpK3lnIblhazlvI/orqHnrpcgeCp4L3J4KnJ4ICsgeSp5L3J5KnJ5O1xuZnVuY3Rpb24gZWxsaXBzZURpc3RhbmNlKHNxdWFyZVgsIHNxdWFyZVksIHJ4LCByeSkge1xuICAgIHJldHVybiBzcXVhcmVYIC8gKHJ4ICogcngpICsgc3F1YXJlWSAvIChyeSAqIHJ5KTtcbn1cbnZhciBFbGxpcHNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFbGxpcHNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEVsbGlwc2UoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCByeDogMCwgcnk6IDAgfSk7XG4gICAgfTtcbiAgICBFbGxpcHNlLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGhhbGZMaW5lV2l0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByeCA9IGF0dHJzLnJ4LCByeSA9IGF0dHJzLnJ5O1xuICAgICAgICB2YXIgc3F1YXJlWCA9ICh4IC0gY3gpICogKHggLSBjeCk7XG4gICAgICAgIHZhciBzcXVhcmVZID0gKHkgLSBjeSkgKiAoeSAtIGN5KTtcbiAgICAgICAgLy8g5L2/55So5qSt5ZyG55qE5YWs5byP77yaIHgqeC9yeCpyeCArIHkqeS9yeSpyeSA9IDE7XG4gICAgICAgIGlmIChpc0ZpbGwgJiYgaXNTdHJva2UpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcnggKyBoYWxmTGluZVdpdGgsIHJ5ICsgaGFsZkxpbmVXaXRoKSA8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcngsIHJ5KSA8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIChlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcnggLSBoYWxmTGluZVdpdGgsIHJ5IC0gaGFsZkxpbmVXaXRoKSA+PSAxICYmXG4gICAgICAgICAgICAgICAgZWxsaXBzZURpc3RhbmNlKHNxdWFyZVgsIHNxdWFyZVksIHJ4ICsgaGFsZkxpbmVXaXRoLCByeSArIGhhbGZMaW5lV2l0aCkgPD0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgY3ggPSBhdHRycy54O1xuICAgICAgICB2YXIgY3kgPSBhdHRycy55O1xuICAgICAgICB2YXIgcnggPSBhdHRycy5yeDtcbiAgICAgICAgdmFyIHJ5ID0gYXR0cnMucnk7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIC8vIOWFvOWuuemAu+i+kVxuICAgICAgICBpZiAoY29udGV4dC5lbGxpcHNlKSB7XG4gICAgICAgICAgICBjb250ZXh0LmVsbGlwc2UoY3gsIGN5LCByeCwgcnksIDAsIDAsIE1hdGguUEkgKiAyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzkuI3mlK/mjIHvvIzliJnkvb/nlKjlnIbmnaXnu5jliLbvvIzov5vooYzlj5jlvaJcbiAgICAgICAgICAgIHZhciByID0gcnggPiByeSA/IHJ4IDogcnk7XG4gICAgICAgICAgICB2YXIgc2NhbGVYID0gcnggPiByeSA/IDEgOiByeCAvIHJ5O1xuICAgICAgICAgICAgdmFyIHNjYWxlWSA9IHJ4ID4gcnkgPyByeSAvIHJ4IDogMTtcbiAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoY3gsIGN5KTtcbiAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoc2NhbGVYLCBzY2FsZVkpO1xuICAgICAgICAgICAgY29udGV4dC5hcmMoMCwgMCwgciwgMCwgTWF0aC5QSSAqIDIpO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gRWxsaXBzZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBFbGxpcHNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxsaXBzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\n\n\n\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\nvar ImageShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ImageShape, _super);\n function ImageShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageShape.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n ImageShape.prototype.initAttrs = function (attrs) {\n this._setImage(attrs.img);\n };\n // image 不计算 stroke\n ImageShape.prototype.isStroke = function () {\n return false;\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n ImageShape.prototype.isOnlyHitBox = function () {\n return true;\n };\n ImageShape.prototype._afterLoading = function () {\n if (this.get('toDraw') === true) {\n var canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n }\n else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n };\n ImageShape.prototype._setImage = function (img) {\n var _this = this;\n var attrs = this.attrs;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(img)) {\n var image_1 = new Image();\n image_1.onload = function () {\n // 图片未加载完,则已经被销毁\n if (_this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n _this.attr('img', image_1);\n _this.set('loading', false);\n _this._afterLoading();\n var callback = _this.get('callback');\n if (callback) {\n callback.call(_this);\n }\n };\n // 设置跨域\n image_1.crossOrigin = 'Anonymous';\n image_1.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n }\n else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n }\n else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n };\n ImageShape.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n };\n ImageShape.prototype.createPath = function (context) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height, sx = attrs.sx, sy = attrs.sy, swidth = attrs.swidth, sheight = attrs.sheight;\n var img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sx) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sy) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(swidth) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n }\n else {\n context.drawImage(img, x, y, width, height);\n }\n }\n };\n return ImageShape;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ImageShape);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW1hZ2UuanM/Yzg2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ2I7QUFDZ0I7QUFDL0M7QUFDQSx5Q0FBeUMsMkRBQVE7QUFDakQ7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxrQ0FBa0M7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLLFNBQVMsd0RBQUssU0FBUyx3REFBSyxhQUFhLHdEQUFLO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSx5RUFBVSxFQUFDO0FBQzFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOWbvueJh1xuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc05pbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5mdW5jdGlvbiBpc0NhbnZhcyhkb20pIHtcbiAgICByZXR1cm4gZG9tIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgaXNTdHJpbmcoZG9tLm5vZGVOYW1lKSAmJiBkb20ubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0NBTlZBUyc7XG59XG52YXIgSW1hZ2VTaGFwZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSW1hZ2VTaGFwZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbWFnZVNoYXBlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcbiAgICB9O1xuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9zZXRJbWFnZShhdHRycy5pbWcpO1xuICAgIH07XG4gICAgLy8gaW1hZ2Ug5LiN6K6h566XIHN0cm9rZVxuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmlzU3Ryb2tlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvLyDku4Xku4Xkvb/nlKjljIXlm7Tnm5Lmo4DmtYvmnaXov5vooYzmi77lj5ZcbiAgICAvLyDmiYDku6XkuI3pnIDopoHlpI3lhpkgaXNJblN0cm9rZU9yUGF0aCDnmoTmlrnms5VcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5pc09ubHlIaXRCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuX2FmdGVyTG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCd0b0RyYXcnKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgICAgICAvLyDov5nmrrXlupTor6XmlLnmiJDlsYDpg6jmuLLmn5NcbiAgICAgICAgICAgICAgICBjYW52YXMuZHJhdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g6L+Z56eN5pa55byP5aaC5p6c5Y+R55Sf6YGu5oyh5Lya5Ye6546w6Zeu6aKYXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKHRoaXMuZ2V0KCdjb250ZXh0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5fc2V0SW1hZ2UgPSBmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIGlmIChpc1N0cmluZyhpbWcpKSB7XG4gICAgICAgICAgICB2YXIgaW1hZ2VfMSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaW1hZ2VfMS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8g5Zu+54mH5pyq5Yqg6L295a6M77yM5YiZ5bey57uP6KKr6ZSA5q+BXG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOe8k+WtmOWOn+Wni+WcsOWdgO+8jOWPr+S7peWBmuWvueavlO+8jOmYsuatoumHjeWkjeWKoOi9veWbvueJh1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOiAg+iZkeWIsOWcqOWKoOi9vei/h+eoi+S4reWPr+iDveabv+aNoiBpbWcg5bGe5oCn77yM5YiZ5oOF5Ya15pu05Yqg5aSN5p2CXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXQoJ2ltZ1NyYycsIGltZyk7XG4gICAgICAgICAgICAgICAgLy8g6L+Z6YeM5Lya5b6q546v6LCD55SoIF9zZXRJbWFnZSDmlrnms5XvvIzkvYbkuI3kvJrlho3otbDov5nkuKrliIbmlK9cbiAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKCdpbWcnLCBpbWFnZV8xKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXQoJ2xvYWRpbmcnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgX3RoaXMuX2FmdGVyTG9hZGluZygpO1xuICAgICAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IF90aGlzLmdldCgnY2FsbGJhY2snKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbChfdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIOiuvue9rui3qOWfn1xuICAgICAgICAgICAgaW1hZ2VfMS5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xuICAgICAgICAgICAgaW1hZ2VfMS5zcmMgPSBpbWc7XG4gICAgICAgICAgICAvLyBsb2FkaW5nIOi/h+eoi+S4reS4jee7mOWItlxuICAgICAgICAgICAgdGhpcy5zZXQoJ2xvYWRpbmcnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbWcgaW5zdGFuY2VvZiBJbWFnZSkge1xuICAgICAgICAgICAgLy8g5aaC5p6c5piv5LiA5LiqIGltYWdlIOWvueixoe+8jOWImeiuvue9ruWuvemrmFxuICAgICAgICAgICAgaWYgKCFhdHRycy53aWR0aCkge1xuICAgICAgICAgICAgICAgIGF0dHJzLndpZHRoID0gaW1nLndpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBhdHRycy5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzQ2FudmFzKGltZykpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOiuvue9ruS6hiBjYW52YXMg5a+56LGhXG4gICAgICAgICAgICBpZiAoIWF0dHJzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgYXR0cnMud2lkdGggPSBOdW1iZXIoaW1nLmdldEF0dHJpYnV0ZSgnd2lkdGgnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGF0dHJzLmhlaWdodCwgTnVtYmVyKGltZy5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIC8vIOWmguaenOWKoOi9veeahOW3sue7j+aYr+W9k+WJjeWbvueJh++8jOWImeS4jeWGjeWkhOeQhlxuICAgICAgICBpZiAobmFtZSA9PT0gJ2ltZycpIHtcbiAgICAgICAgICAgIC8vIOWPr+S7peWKoOe8k+WGsu+8jCYmIHRoaXMuZ2V0KCdpbWdTcmMnKSAhPT0gdmFsdWVcbiAgICAgICAgICAgIHRoaXMuX3NldEltYWdlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIC8vIOato+WcqOWKoOi9veWImeS4jee7mOWItlxuICAgICAgICBpZiAodGhpcy5nZXQoJ2xvYWRpbmcnKSkge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RvRHJhdycsIHRydWUpOyAvLyDliqDovb3lrozmiJDlkI7nu5jliLZcbiAgICAgICAgICAgIHRoaXMuc2V0KCdjb250ZXh0JywgY29udGV4dCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueCwgeSA9IGF0dHJzLnksIHdpZHRoID0gYXR0cnMud2lkdGgsIGhlaWdodCA9IGF0dHJzLmhlaWdodCwgc3ggPSBhdHRycy5zeCwgc3kgPSBhdHRycy5zeSwgc3dpZHRoID0gYXR0cnMuc3dpZHRoLCBzaGVpZ2h0ID0gYXR0cnMuc2hlaWdodDtcbiAgICAgICAgdmFyIGltZyA9IGF0dHJzLmltZztcbiAgICAgICAgaWYgKGltZyBpbnN0YW5jZW9mIEltYWdlIHx8IGlzQ2FudmFzKGltZykpIHtcbiAgICAgICAgICAgIGlmICghaXNOaWwoc3gpICYmICFpc05pbChzeSkgJiYgIWlzTmlsKHN3aWR0aCkgJiYgIWlzTmlsKHNoZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1nLCBzeCwgc3ksIHN3aWR0aCwgc2hlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gSW1hZ2VTaGFwZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBJbWFnZVNoYXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js ***! \*******************************************************************************/ /*! exports provided: Base, Circle, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./image */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./marker */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW5kZXguanM/NmEwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNJO0FBQ0U7QUFDSjtBQUNGO0FBQ0k7QUFDSjtBQUNNO0FBQ0U7QUFDUjtBQUNBO0FBQ3pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2lyY2xlIH0gZnJvbSAnLi9jaXJjbGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbGxpcHNlIH0gZnJvbSAnLi9lbGxpcHNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tICcuL2ltYWdlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGluZSB9IGZyb20gJy4vbGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hcmtlciB9IGZyb20gJy4vbWFya2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlnb24gfSBmcm9tICcuL3BvbHlnb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb2x5bGluZSB9IGZyb20gJy4vcG9seWxpbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWN0IH0gZnJvbSAnLi9yZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-stroke/line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了箭头\n Line.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n Line.prototype.setArrow = function () {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addStartArrow\"](this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addEndArrow\"](this, attrs, x1, y1, x2, y2);\n }\n };\n Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return Object(_util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y);\n };\n Line.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n var startArrowDistance = {\n dx: 0,\n dy: 0,\n };\n var endArrowDistance = {\n dx: 0,\n dy: 0,\n };\n if (startArrow && startArrow.d) {\n startArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.endArrow.d);\n }\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n };\n Line.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbGluZS5qcz81MjllIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNnRDtBQUNqQjtBQUNhO0FBQ0Q7QUFDM0M7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsaUVBQWlFO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHlEQUF1QjtBQUNuQztBQUNBO0FBQ0EsWUFBWSx1REFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9FQUFNO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDREQUEwQjtBQUMzRDtBQUNBO0FBQ0EsK0JBQStCLDREQUEwQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcg57q/XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgTGluZSBhcyBMaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgaW5MaW5lIGZyb20gJy4uL3V0aWwvaW4tc3Ryb2tlL2xpbmUnO1xuaW1wb3J0ICogYXMgQXJyb3dVdGlsIGZyb20gJy4uL3V0aWwvYXJyb3cnO1xudmFyIExpbmUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKExpbmUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGluZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBMaW5lLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAwLCBzdGFydEFycm93OiBmYWxzZSwgZW5kQXJyb3c6IGZhbHNlIH0pO1xuICAgIH07XG4gICAgTGluZS5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hueureWktFxuICAgIExpbmUucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICAvLyDnlLHkuo7nrq3lpLTnmoTnu5jliLbkvp3otZbkuo4gbGluZSDnmoTor7jlpJogYXR0cnPvvIzlm6DmraTov5nph4zkuI3lho3lr7nmr4/kuKogYXR0ciDov5vooYzliKTmlq3vvIxhdHRyIOavj+asoeWPmOWMlumDveS8muW9seWTjeeureWktOeahOabtOaWsFxuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5zZXRBcnJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4MSA9IGF0dHJzLngxLCB5MSA9IGF0dHJzLnkxLCB4MiA9IGF0dHJzLngyLCB5MiA9IGF0dHJzLnkyLCBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRTdGFydEFycm93KHRoaXMsIGF0dHJzLCB4MiwgeTIsIHgxLCB5MSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93KSB7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkRW5kQXJyb3codGhpcywgYXR0cnMsIHgxLCB5MSwgeDIsIHkyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTGluZS5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgaWYgKCFpc1N0cm9rZSB8fCAhbGluZVdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBpbkxpbmUoeDEsIHkxLCB4MiwgeTIsIGxpbmVXaWR0aCwgeCwgeSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4MSA9IGF0dHJzLngxLCB5MSA9IGF0dHJzLnkxLCB4MiA9IGF0dHJzLngyLCB5MiA9IGF0dHJzLnkyLCBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dEaXN0YW5jZSA9IHtcbiAgICAgICAgICAgIGR4OiAwLFxuICAgICAgICAgICAgZHk6IDAsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBlbmRBcnJvd0Rpc3RhbmNlID0ge1xuICAgICAgICAgICAgZHg6IDAsXG4gICAgICAgICAgICBkeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cgJiYgc3RhcnRBcnJvdy5kKSB7XG4gICAgICAgICAgICBzdGFydEFycm93RGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh4MSwgeTEsIHgyLCB5MiwgYXR0cnMuc3RhcnRBcnJvdy5kKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cgJiYgZW5kQXJyb3cuZCkge1xuICAgICAgICAgICAgZW5kQXJyb3dEaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHgxLCB5MSwgeDIsIHkyLCBhdHRycy5lbmRBcnJvdy5kKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICAvLyDlpoLmnpzoh6rlrprkuYnnrq3lpLTvvIznur/mnaHnm7jlupTnvKnov5tcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oeDEgKyBzdGFydEFycm93RGlzdGFuY2UuZHgsIHkxICsgc3RhcnRBcnJvd0Rpc3RhbmNlLmR5KTtcbiAgICAgICAgY29udGV4dC5saW5lVG8oeDIgLSBlbmRBcnJvd0Rpc3RhbmNlLmR4LCB5MiAtIGVuZEFycm93RGlzdGFuY2UuZHkpO1xuICAgIH07XG4gICAgTGluZS5wcm90b3R5cGUuYWZ0ZXJEcmF3UGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBzdGFydEFycm93U2hhcGUgPSB0aGlzLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgICAgIHZhciBlbmRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgc3RhcnRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIGVuZEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGxlbmd0aCBvZiBsaW5lXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBsZW5ndGhcbiAgICAgKi9cbiAgICBMaW5lLnByb3RvdHlwZS5nZXRUb3RhbExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5sZW5ndGgoeDEsIHkxLCB4MiwgeTIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpb1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIExpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4MSA9IF9hLngxLCB5MSA9IF9hLnkxLCB4MiA9IF9hLngyLCB5MiA9IF9hLnkyO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgcmF0aW8pO1xuICAgIH07XG4gICAgcmV0dXJuIExpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgTGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down': function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.initAttrs = function (attrs) {\n this._resetParamsCache();\n };\n // 重置绘制 path 存储的缓存\n Marker.prototype._resetParamsCache = function () {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n };\n // 更新属性时,检测是否更改了 path\n Marker.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n Marker.prototype.isOnlyHitBox = function () {\n return true;\n };\n Marker.prototype._getR = function (attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(attrs.r) ? attrs.radius : attrs.r;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n var symbol = attrs.symbol || 'circle';\n var r = this._getR(attrs);\n var method;\n var path;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_4__[\"isFunction\"])(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"path2Absolute\"])(path);\n }\n else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n if (!method) {\n console.warn(symbol + \" marker is not supported.\");\n return null;\n }\n path = method(x, y, r);\n }\n return path;\n };\n Marker.prototype.createPath = function (context) {\n var path = this._getPath();\n var paramsCache = this.get('paramsCache');\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, { path: path }, paramsCache);\n };\n Marker.Symbols = Symbols;\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=marker.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbWFya2VyLmpzPzFlZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNDO0FBQ2E7QUFDakI7QUFDVztBQUNGO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdEQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxRUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRLGlCQUFpQixhQUFhO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbWFya2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1hcmtlclxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHBhdGgyQWJzb2x1dGUgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBkcmF3UGF0aCB9IGZyb20gJy4uL3V0aWwvZHJhdyc7XG52YXIgU3ltYm9scyA9IHtcbiAgICAvLyDlnIZcbiAgICBjaXJjbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCB4IC0gciwgeV0sXG4gICAgICAgICAgICBbJ0EnLCByLCByLCAwLCAxLCAwLCB4ICsgciwgeV0sXG4gICAgICAgICAgICBbJ0EnLCByLCByLCAwLCAxLCAwLCB4IC0gciwgeV0sXG4gICAgICAgIF07XG4gICAgfSxcbiAgICAvLyDmraPmlrnlvaJcbiAgICBzcXVhcmU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgKyByXSwgWydMJywgeCAtIHIsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g6I+x5b2iXG4gICAgZGlhbW9uZDogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeV0sIFsnTCcsIHgsIHkgLSByXSwgWydMJywgeCArIHIsIHldLCBbJ0wnLCB4LCB5ICsgcl0sIFsnWiddXTtcbiAgICB9LFxuICAgIC8vIOS4ieinkuW9olxuICAgIHRyaWFuZ2xlOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5ICsgZGlmZlldLCBbJ0wnLCB4LCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSArIGRpZmZZXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g5YCS5LiJ6KeS5b2iXG4gICAgJ3RyaWFuZ2xlLWRvd24nOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSAtIGRpZmZZXSwgWydMJywgeCwgeSArIGRpZmZZXSwgWydaJ11dO1xuICAgIH0sXG59O1xudmFyIE1hcmtlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTWFya2VyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1hcmtlcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBNYXJrZXIucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9yZXNldFBhcmFtc0NhY2hlKCk7XG4gICAgfTtcbiAgICAvLyDph43nva7nu5jliLYgcGF0aCDlrZjlgqjnmoTnvJPlrZhcbiAgICBNYXJrZXIucHJvdG90eXBlLl9yZXNldFBhcmFtc0NhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDkuLrkuobliqDpgJ8gcGF0aCDnmoTnu5jliLbjgIHmi77lj5blkozorqHnrpfvvIzov5nkuKrlnLDmlrnlj6/ku6XnvJPlrZjlvojlpJrkuJzopb9cbiAgICAgICAgLy8g6L+Z5Lqb57yT5a2Y6YO95piv56ys5LiA5qyh6ZyA6KaB5pe26K6h566X5ZKM5a2Y5YKo77yM6Jm954S25aKe5Yqg5LqG5aSN5p2C5bqm77yM5L2G5piv6aKR57mB6LCD55So55qE5pa55rOV77yM5oCn6IO95pyJ5b6I5aSn5o+Q5Y2HXG4gICAgICAgIHRoaXMuc2V0KCdwYXJhbXNDYWNoZScsIHt9KTsgLy8g5riF55CG57yT5a2YXG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcGF0aFxuICAgIE1hcmtlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIGlmIChbJ3N5bWJvbCcsICd4JywgJ3knLCAncicsICdyYWRpdXMnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgLy8gcGF0aCDnm7jlhbPlsZ7mgKfmm7TmlLnml7bvvIzmuIXnkIbnvJPlrZhcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0UGFyYW1zQ2FjaGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5LuF5LuF5L2/55So5YyF5Zu055uS5qOA5rWL5p2l6L+b6KGM5ou+5Y+WXG4gICAgLy8g5omA5Lul5LiN6ZyA6KaB5aSN5YaZIGlzSW5TdHJva2VPclBhdGgg55qE5pa55rOVXG4gICAgTWFya2VyLnByb3RvdHlwZS5pc09ubHlIaXRCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgTWFya2VyLnByb3RvdHlwZS5fZ2V0UiA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICAvLyDlhbzlrrkgciDlkowgcmFkaXVzIOS4pOenjeWGmeazle+8jOaOqOiNkOS9v+eUqCByXG4gICAgICAgIHJldHVybiBpc05pbChhdHRycy5yKSA/IGF0dHJzLnJhZGl1cyA6IGF0dHJzLnI7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLl9nZXRQYXRoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHN5bWJvbCA9IGF0dHJzLnN5bWJvbCB8fCAnY2lyY2xlJztcbiAgICAgICAgdmFyIHIgPSB0aGlzLl9nZXRSKGF0dHJzKTtcbiAgICAgICAgdmFyIG1ldGhvZDtcbiAgICAgICAgdmFyIHBhdGg7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHN5bWJvbCkpIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IHN5bWJvbDtcbiAgICAgICAgICAgIHBhdGggPSBtZXRob2QoeCwgeSwgcik7XG4gICAgICAgICAgICAvLyDlsIYgcGF0aCDovazmiJDnu53lr7not6/lvoRcbiAgICAgICAgICAgIHBhdGggPSBwYXRoMkFic29sdXRlKHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g5YaF572uIHN5bWJvbCDnmoQgcGF0aCDpg73mmK/nu53lr7not6/lvoTvvIznm7TmjqXnu5jliLbljbPlj6/vvIzkuI3pnIDopoHlr7kgcGF0aCDov5vooYznibnmrorlpITnkIZcbiAgICAgICAgICAgIG1ldGhvZCA9IE1hcmtlci5TeW1ib2xzW3N5bWJvbF07XG4gICAgICAgICAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihzeW1ib2wgKyBcIiBtYXJrZXIgaXMgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoID0gbWV0aG9kKHgsIHksIHIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG4gICAgTWFya2VyLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLl9nZXRQYXRoKCk7XG4gICAgICAgIHZhciBwYXJhbXNDYWNoZSA9IHRoaXMuZ2V0KCdwYXJhbXNDYWNoZScpO1xuICAgICAgICBkcmF3UGF0aCh0aGlzLCBjb250ZXh0LCB7IHBhdGg6IHBhdGggfSwgcGFyYW1zQ2FjaGUpO1xuICAgIH07XG4gICAgTWFya2VyLlN5bWJvbHMgPSBTeW1ib2xzO1xuICAgIHJldHVybiBNYXJrZXI7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgTWFya2VyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFya2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\n\n\n\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.initAttrs = function (attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 path\n Path.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n // 将 path 转换成绝对路径\n Path.prototype._setPathArr = function (path) {\n // 转换 path 的格式\n this.attrs.path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Absolute\"])(path);\n var hasArc = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n };\n Path.prototype.getSegments = function () {\n var segments = this.get('segements');\n if (!segments) {\n segments = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Segments\"])(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n };\n Path.prototype.setArrow = function () {\n var attrs = this.attr();\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n var tangent = this.getStartTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addStartArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n var tangent = this.getEndTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addEndArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n };\n Path.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var segments = this.getSegments();\n var hasArc = this.get('hasArc');\n var isHit = false;\n if (isStroke) {\n var length_1 = this.getTotalLength();\n isHit = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isPointInStroke(segments, lineWidth, x, y, length_1);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n else {\n var path = this.attr('path');\n var extractResutl = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n };\n Path.prototype.createPath = function (context) {\n var attrs = this.attr();\n var paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, attrs, paramsCache);\n };\n Path.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get total length of path\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n var curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2],\n };\n }\n return null;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var seg = curve[index];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(seg) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(index)) {\n return null;\n }\n var l = seg.length;\n var nextSeg = curve[index + 1];\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].pointAt(seg[l - 2], seg[l - 1], nextSeg[1], nextSeg[2], nextSeg[3], nextSeg[4], nextSeg[5], nextSeg[6], subt);\n };\n Path.prototype._calculateCurve = function () {\n var path = this.attr().path;\n this.set('curve', _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].pathToCurve(path));\n };\n Path.prototype._setTcache = function () {\n var totalLength = 0;\n var tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n var tCache = [];\n var segmentT;\n var segmentL;\n var segmentN;\n var l;\n var curve = this.get('curve');\n if (!curve) {\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength +=\n _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]) || 0;\n }\n });\n this.set('totalLength', totalLength);\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]);\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.getSegments();\n var result;\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.getSegments();\n var length = segments.length;\n var result;\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcGF0aC5qcz80ZTM5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDTTtBQUNUO0FBQ1Y7QUFDZ0M7QUFDdkI7QUFDa0I7QUFDUjtBQUNkO0FBQ087QUFDM0M7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLGdCQUFnQixxRUFBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxQ0FBcUM7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixxRUFBYTtBQUN2QyxxQkFBcUIsa0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUU7QUFDcEMsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFFQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0RBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkVBQWE7QUFDckM7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGtEQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx3REFBSyxTQUFTLHdEQUFLO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrREFBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsa0RBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrREFBUztBQUM3QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0RBQVM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEN1YmljIGFzIEN1YmljVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBlYWNoLCBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgcGF0aDJBYnNvbHV0ZSwgcGF0aDJTZWdtZW50cyB9IGZyb20gJ0BhbnR2L3BhdGgtdXRpbCc7XG5pbXBvcnQgeyBkcmF3UGF0aCB9IGZyb20gJy4uL3V0aWwvZHJhdyc7XG5pbXBvcnQgaXNQb2ludEluUGF0aCBmcm9tICcuLi91dGlsL2luLXBhdGgvcG9pbnQtaW4tcGF0aCc7XG5pbXBvcnQgaXNJblBvbHlnb24gZnJvbSAnLi4vdXRpbC9pbi1wYXRoL3BvbHlnb24nO1xuaW1wb3J0IFBhdGhVdGlsIGZyb20gJy4uL3V0aWwvcGF0aCc7XG5pbXBvcnQgKiBhcyBBcnJvd1V0aWwgZnJvbSAnLi4vdXRpbC9hcnJvdyc7XG4vLyDmmK/lkKblnKjlpJrkuKrlpJrovrnlvaLlhoXpg6hcbmZ1bmN0aW9uIGlzSW5Qb2x5Z29ucyhwb2x5Z29ucywgeCwgeSkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9seWdvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHBvbHlnb25zW2ldO1xuICAgICAgICBpc0hpdCA9IGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSk7XG4gICAgICAgIGlmIChpc0hpdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzSGl0O1xufVxudmFyIFBhdGggPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBhdGgsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQYXRoLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5pbml0QXR0cnMgPSBmdW5jdGlvbiAoYXR0cnMpIHtcbiAgICAgICAgdGhpcy5fc2V0UGF0aEFycihhdHRycy5wYXRoKTtcbiAgICAgICAgdGhpcy5zZXRBcnJvdygpO1xuICAgIH07XG4gICAgLy8g5pu05paw5bGe5oCn5pe277yM5qOA5rWL5piv5ZCm5pu05pS55LqGIHBhdGhcbiAgICBQYXRoLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdwYXRoJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0UGF0aEFycih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g55Sx5LqO566t5aS055qE57uY5Yi25L6d6LWW5LqOIGxpbmUg55qE6K+45aSaIGF0dHJz77yM5Zug5q2k6L+Z6YeM5LiN5YaN5a+55q+P5LiqIGF0dHIg6L+b6KGM5Yik5pat77yMYXR0ciDmr4/mrKHlj5jljJbpg73kvJrlvbHlk43nrq3lpLTnmoTmm7TmlrBcbiAgICAgICAgdGhpcy5zZXRBcnJvdygpO1xuICAgIH07XG4gICAgLy8g5bCGIHBhdGgg6L2s5o2i5oiQ57ud5a+56Lev5b6EXG4gICAgUGF0aC5wcm90b3R5cGUuX3NldFBhdGhBcnIgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAvLyDovazmjaIgcGF0aCDnmoTmoLzlvI9cbiAgICAgICAgdGhpcy5hdHRycy5wYXRoID0gcGF0aDJBYnNvbHV0ZShwYXRoKTtcbiAgICAgICAgdmFyIGhhc0FyYyA9IFBhdGhVdGlsLmhhc0FyYyhwYXRoKTtcbiAgICAgICAgLy8g5Li65LqG5Yqg6YCfIHBhdGgg55qE57uY5Yi244CB5ou+5Y+W5ZKM6K6h566X77yM6L+Z5Liq5Zyw5pa55Y+v5Lul57yT5a2Y5b6I5aSa5Lic6KW/XG4gICAgICAgIC8vIOi/meS6m+e8k+WtmOmDveaYr+esrOS4gOasoemcgOimgeaXtuiuoeeul+WSjOWtmOWCqO+8jOiZveeEtuWinuWKoOS6huWkjeadguW6pu+8jOS9huaYr+mikee5geiwg+eUqOeahOaWueazle+8jOaAp+iDveacieW+iOWkp+aPkOWNh1xuICAgICAgICB0aGlzLnNldCgnaGFzQXJjJywgaGFzQXJjKTtcbiAgICAgICAgdGhpcy5zZXQoJ3BhcmFtc0NhY2hlJywge30pOyAvLyDmuIXnkIbnvJPlrZhcbiAgICAgICAgdGhpcy5zZXQoJ3NlZ21lbnRzJywgbnVsbCk7IC8vIOW7tui/n+eUn+aIkCBwYXRo77yM5Zyo5Yqo55S75Zy65pmv5LiL5Y+v6IO95LiN5Lya5pyJ5ou+5Y+WXG4gICAgICAgIHRoaXMuc2V0KCdjdXJ2ZScsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIG51bGwpO1xuICAgIH07XG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0U2VnbWVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZWdtZW50cyA9IHRoaXMuZ2V0KCdzZWdlbWVudHMnKTtcbiAgICAgICAgaWYgKCFzZWdtZW50cykge1xuICAgICAgICAgICAgc2VnbWVudHMgPSBwYXRoMlNlZ21lbnRzKHRoaXMuYXR0cigncGF0aCcpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdzZWdtZW50cycsIHNlZ21lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VnbWVudHM7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5zZXRBcnJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cpIHtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gdGhpcy5nZXRTdGFydFRhbmdlbnQoKTtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRTdGFydEFycm93KHRoaXMsIGF0dHJzLCB0YW5nZW50WzBdWzBdLCB0YW5nZW50WzBdWzFdLCB0YW5nZW50WzFdWzBdLCB0YW5nZW50WzFdWzFdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cpIHtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gdGhpcy5nZXRFbmRUYW5nZW50KCk7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkRW5kQXJyb3codGhpcywgYXR0cnMsIHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgc2VnbWVudHMgPSB0aGlzLmdldFNlZ21lbnRzKCk7XG4gICAgICAgIHZhciBoYXNBcmMgPSB0aGlzLmdldCgnaGFzQXJjJyk7XG4gICAgICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNTdHJva2UpIHtcbiAgICAgICAgICAgIHZhciBsZW5ndGhfMSA9IHRoaXMuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgICAgIGlzSGl0ID0gUGF0aFV0aWwuaXNQb2ludEluU3Ryb2tlKHNlZ21lbnRzLCBsaW5lV2lkdGgsIHgsIHksIGxlbmd0aF8xKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSGl0ICYmIGlzRmlsbCkge1xuICAgICAgICAgICAgaWYgKGhhc0FyYykge1xuICAgICAgICAgICAgICAgIC8vIOWtmOWcqOabsue6v+aXtu+8jOaaguaXtuS9v+eUqCBjYW52YXMg55qEIGFwaSDorqHnrpfvvIzlkI7nu63lj6/ku6Xov5vooYzlpJrovrnlvaLliIflibJcbiAgICAgICAgICAgICAgICBpc0hpdCA9IGlzUG9pbnRJblBhdGgodGhpcywgeCwgeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IHRoaXMuYXR0cigncGF0aCcpO1xuICAgICAgICAgICAgICAgIHZhciBleHRyYWN0UmVzdXRsID0gUGF0aFV0aWwuZXh0cmFjdFBvbHlnb25zKHBhdGgpO1xuICAgICAgICAgICAgICAgIC8vIOaPkOWPluWHuuadpeeahOWkmui+ueW9ouWMheWQq+mXreWQiOeahOWSjOmdnumXreWQiOeahO+8jOWcqOi/memHjOe7n+S4gOaMieeFp+Wkmui+ueW9ouWkhOeQhlxuICAgICAgICAgICAgICAgIGlzSGl0ID0gaXNJblBvbHlnb25zKGV4dHJhY3RSZXN1dGwucG9seWdvbnMsIHgsIHkpIHx8IGlzSW5Qb2x5Z29ucyhleHRyYWN0UmVzdXRsLnBvbHlsaW5lcywgeCwgeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSGl0O1xuICAgIH07XG4gICAgUGF0aC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgcGFyYW1zQ2FjaGUgPSB0aGlzLmdldCgncGFyYW1zQ2FjaGUnKTsgLy8g55Sx5LqO6K6h566X5ZyG5byn55qE5Y+C5pWw5oiQ5pys5b6I5aSn77yM5omA5Lul6KaB57yT5a2YXG4gICAgICAgIGRyYXdQYXRoKHRoaXMsIGNvbnRleHQsIGF0dHJzLCBwYXJhbXNDYWNoZSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5hZnRlckRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdzdGFydEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIGVuZEFycm93U2hhcGUgPSB0aGlzLmdldCgnZW5kQXJyb3dTaGFwZScpO1xuICAgICAgICBpZiAoc3RhcnRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBzdGFydEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgZW5kQXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgdG90YWwgbGVuZ3RoIG9mIHBhdGhcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICAgICAgaWYgKCFpc05pbCh0b3RhbExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDdXJ2ZSgpO1xuICAgICAgICB0aGlzLl9zZXRUY2FjaGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpb1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIGlmICghdENhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDdXJ2ZSgpO1xuICAgICAgICAgICAgdGhpcy5fc2V0VGNhY2hlKCk7XG4gICAgICAgICAgICB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnQ7XG4gICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgdmFyIGN1cnZlID0gdGhpcy5nZXQoJ2N1cnZlJyk7XG4gICAgICAgIGlmICghdENhY2hlIHx8IHRDYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmIChjdXJ2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHg6IGN1cnZlWzBdWzFdLFxuICAgICAgICAgICAgICAgICAgICB5OiBjdXJ2ZVswXVsyXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0Q2FjaGUsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAocmF0aW8gPj0gdlswXSAmJiByYXRpbyA8PSB2WzFdKSB7XG4gICAgICAgICAgICAgICAgc3VidCA9IChyYXRpbyAtIHZbMF0pIC8gKHZbMV0gLSB2WzBdKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2VnID0gY3VydmVbaW5kZXhdO1xuICAgICAgICBpZiAoaXNOaWwoc2VnKSB8fCBpc05pbChpbmRleCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsID0gc2VnLmxlbmd0aDtcbiAgICAgICAgdmFyIG5leHRTZWcgPSBjdXJ2ZVtpbmRleCArIDFdO1xuICAgICAgICByZXR1cm4gQ3ViaWNVdGlsLnBvaW50QXQoc2VnW2wgLSAyXSwgc2VnW2wgLSAxXSwgbmV4dFNlZ1sxXSwgbmV4dFNlZ1syXSwgbmV4dFNlZ1szXSwgbmV4dFNlZ1s0XSwgbmV4dFNlZ1s1XSwgbmV4dFNlZ1s2XSwgc3VidCk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5fY2FsY3VsYXRlQ3VydmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXRoID0gdGhpcy5hdHRyKCkucGF0aDtcbiAgICAgICAgdGhpcy5zZXQoJ2N1cnZlJywgUGF0aFV0aWwucGF0aFRvQ3VydmUocGF0aCkpO1xuICAgIH07XG4gICAgUGF0aC5wcm90b3R5cGUuX3NldFRjYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcbiAgICAgICAgdmFyIHRlbXBMZW5ndGggPSAwO1xuICAgICAgICAvLyDmr4/mrrUgY3VydmUg5a+55bqU6LW35q2i54K555qE6ZW/5bqm5q+U5L6L5YiX6KGo77yM5b2i5aaCOiBbWzAsIDAuMjVdLCBbMC4yNSwgMC42XS4gWzAuNiwgMC45XSwgWzAuOSwgMV1dXG4gICAgICAgIHZhciB0Q2FjaGUgPSBbXTtcbiAgICAgICAgdmFyIHNlZ21lbnRUO1xuICAgICAgICB2YXIgc2VnbWVudEw7XG4gICAgICAgIHZhciBzZWdtZW50TjtcbiAgICAgICAgdmFyIGw7XG4gICAgICAgIHZhciBjdXJ2ZSA9IHRoaXMuZ2V0KCdjdXJ2ZScpO1xuICAgICAgICBpZiAoIWN1cnZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWFjaChjdXJ2ZSwgZnVuY3Rpb24gKHNlZ21lbnQsIGkpIHtcbiAgICAgICAgICAgIHNlZ21lbnROID0gY3VydmVbaSArIDFdO1xuICAgICAgICAgICAgbCA9IHNlZ21lbnQubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHNlZ21lbnROKSB7XG4gICAgICAgICAgICAgICAgdG90YWxMZW5ndGggKz1cbiAgICAgICAgICAgICAgICAgICAgQ3ViaWNVdGlsLmxlbmd0aChzZWdtZW50W2wgLSAyXSwgc2VnbWVudFtsIC0gMV0sIHNlZ21lbnROWzFdLCBzZWdtZW50TlsyXSwgc2VnbWVudE5bM10sIHNlZ21lbnROWzRdLCBzZWdtZW50Tls1XSwgc2VnbWVudE5bNl0pIHx8IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCB0b3RhbExlbmd0aCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RDYWNoZScsIFtdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKGN1cnZlLCBmdW5jdGlvbiAoc2VnbWVudCwgaSkge1xuICAgICAgICAgICAgc2VnbWVudE4gPSBjdXJ2ZVtpICsgMV07XG4gICAgICAgICAgICBsID0gc2VnbWVudC5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoc2VnbWVudE4pIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50VCA9IFtdO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzBdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRMID0gQ3ViaWNVdGlsLmxlbmd0aChzZWdtZW50W2wgLSAyXSwgc2VnbWVudFtsIC0gMV0sIHNlZ21lbnROWzFdLCBzZWdtZW50TlsyXSwgc2VnbWVudE5bM10sIHNlZ21lbnROWzRdLCBzZWdtZW50Tls1XSwgc2VnbWVudE5bNl0pO1xuICAgICAgICAgICAgICAgIC8vIOW9kyBwYXRoIOS4jei/nue7reaXtu+8jHNlZ21lbnRMIOWPr+iDveS4uuepuu+8jOS4uuepuuaXtumcgOimgeS9nOS4uiAwIOWkhOeQhlxuICAgICAgICAgICAgICAgIHRlbXBMZW5ndGggKz0gc2VnbWVudEwgfHwgMDtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFsxXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICB0Q2FjaGUucHVzaChzZWdtZW50VCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgdENhY2hlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBzdGFydCB0YW5nZW50IHZlY3RvclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFN0YXJ0VGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlZ21lbnRzID0gdGhpcy5nZXRTZWdtZW50cygpO1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0UG9pbnQgPSBzZWdtZW50c1swXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgZW5kUG9pbnQgPSBzZWdtZW50c1sxXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNlZ21lbnRzWzFdLnN0YXJ0VGFuZ2VudDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgaWYgKHRhbmdlbnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSAtIHRhbmdlbnRbMF0sIHN0YXJ0UG9pbnRbMV0gLSB0YW5nZW50WzFdXSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW3N0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtlbmRQb2ludFswXSwgZW5kUG9pbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgZW5kIHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0RW5kVGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlZ21lbnRzID0gdGhpcy5nZXRTZWdtZW50cygpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAobGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0UG9pbnQgPSBzZWdtZW50c1tsZW5ndGggLSAyXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgZW5kUG9pbnQgPSBzZWdtZW50c1tsZW5ndGggLSAxXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNlZ21lbnRzW2xlbmd0aCAtIDFdLmVuZFRhbmdlbnQ7XG4gICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGlmICh0YW5nZW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW2VuZFBvaW50WzBdIC0gdGFuZ2VudFswXSwgZW5kUG9pbnRbMV0gLSB0YW5nZW50WzFdXSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW2VuZFBvaW50WzBdLCBlbmRQb2ludFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW3N0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBQYXRoO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBhdGg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js\");\n/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Polygon.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var points = this.attr().points;\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(points, x, y); // isPointInPath(shape, x, y);\n }\n return isHit;\n };\n Polygon.prototype.createPath = function (context) {\n var attrs = this.attr();\n var points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n }\n else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcG9seWdvbi5qcz9kOWU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNIO0FBQ3FCO0FBQ0Y7QUFDbEQ7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isd0VBQVU7QUFDOUI7QUFDQTtBQUNBLG9CQUFvQixxRUFBVyxlQUFlO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9wb2x5Z29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOWkmui+ueW9olxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IGluUG9seWxpbmUgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUnO1xuaW1wb3J0IGlzSW5Qb2x5Z29uIGZyb20gJy4uL3V0aWwvaW4tcGF0aC9wb2x5Z29uJztcbnZhciBQb2x5Z29uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQb2x5Z29uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBvbHlnb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUG9seWdvbi5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgaXNIaXQgPSBpblBvbHlsaW5lKHBvaW50cywgbGluZVdpZHRoLCB4LCB5LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSGl0ICYmIGlzRmlsbCkge1xuICAgICAgICAgICAgaXNIaXQgPSBpc0luUG9seWdvbihwb2ludHMsIHgsIHkpOyAvLyBpc1BvaW50SW5QYXRoKHNoYXBlLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQ7XG4gICAgfTtcbiAgICBQb2x5Z29uLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBwb2ludHMgPSBhdHRycy5wb2ludHM7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50WzBdLCBwb2ludFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgfTtcbiAgICByZXR1cm4gUG9seWdvbjtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBQb2x5Z29uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWdvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\nvar PolyLine = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PolyLine, _super);\n function PolyLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PolyLine.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n PolyLine.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 points\n PolyLine.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n PolyLine.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n PolyLine.prototype.setArrow = function () {\n var attrs = this.attr();\n var _a = this.attrs, points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addStartArrow\"](this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addEndArrow\"](this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n };\n // 不允许 fill\n PolyLine.prototype.isFill = function () {\n return false;\n };\n PolyLine.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n var points = this.attr().points;\n return Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(points, lineWidth, x, y, false);\n };\n // 始终填充\n PolyLine.prototype.isStroke = function () {\n return true;\n };\n PolyLine.prototype.createPath = function (context) {\n var _a = this.attr(), points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n if (points.length < 2) {\n return;\n }\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n context.beginPath();\n context.moveTo(x1, y1);\n for (var i = 0; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n };\n PolyLine.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n PolyLine.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n PolyLine.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n PolyLine.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return PolyLine;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolyLine);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcG9seWxpbmUuanM/NDQyMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNJO0FBQ1E7QUFDZjtBQUNWO0FBQ3FCO0FBQ1Q7QUFDM0M7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBdUI7QUFDbkM7QUFDQTtBQUNBLFlBQVksdURBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0VBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNERBQTBCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3REFBSztBQUNsQjtBQUNBO0FBQ0EsZ0NBQWdDLHFEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsZUFBZSxpREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixpREFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IFBvbHlsaW5lIGFzIFBvbHlsaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBlYWNoLCBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IGluUG9seWxpbmUgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUnO1xuaW1wb3J0ICogYXMgQXJyb3dVdGlsIGZyb20gJy4uL3V0aWwvYXJyb3cnO1xudmFyIFBvbHlMaW5lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQb2x5TGluZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQb2x5TGluZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQb2x5TGluZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyBzdGFydEFycm93OiBmYWxzZSwgZW5kQXJyb3c6IGZhbHNlIH0pO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcG9pbnRzXG4gICAgUG9seUxpbmUucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgICAgIGlmIChbJ3BvaW50cyddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENhY2hlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5fcmVzZXRDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCBudWxsKTtcbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5zZXRBcnJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cnMsIHBvaW50cyA9IF9hLnBvaW50cywgc3RhcnRBcnJvdyA9IF9hLnN0YXJ0QXJyb3csIGVuZEFycm93ID0gX2EuZW5kQXJyb3c7XG4gICAgICAgIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuICAgICAgICB2YXIgeDEgPSBwb2ludHNbMF1bMF07XG4gICAgICAgIHZhciB5MSA9IHBvaW50c1swXVsxXTtcbiAgICAgICAgdmFyIHgyID0gcG9pbnRzW2xlbmd0aCAtIDFdWzBdO1xuICAgICAgICB2YXIgeTIgPSBwb2ludHNbbGVuZ3RoIC0gMV1bMV07XG4gICAgICAgIGlmIChzdGFydEFycm93KSB7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkU3RhcnRBcnJvdyh0aGlzLCBhdHRycywgcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV0sIHgxLCB5MSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93KSB7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkRW5kQXJyb3codGhpcywgYXR0cnMsIHBvaW50c1tsZW5ndGggLSAyXVswXSwgcG9pbnRzW2xlbmd0aCAtIDJdWzFdLCB4MiwgeTIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDkuI3lhYHorrggZmlsbFxuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5pc0ZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICAvLyDmsqHmnInorr7nva4gc3Ryb2tlIOS4jeiDveiiq+aLvuWPliwg5rKh5pyJ57q/5a695LiN6IO96KKr5ou+5Y+WXG4gICAgICAgIGlmICghaXNTdHJva2UgfHwgIWxpbmVXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHJldHVybiBpblBvbHlsaW5lKHBvaW50cywgbGluZVdpZHRoLCB4LCB5LCBmYWxzZSk7XG4gICAgfTtcbiAgICAvLyDlp4vnu4jloavlhYVcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgcG9pbnRzID0gX2EucG9pbnRzLCBzdGFydEFycm93ID0gX2Euc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBfYS5lbmRBcnJvdztcbiAgICAgICAgdmFyIGxlbmd0aCA9IHBvaW50cy5sZW5ndGg7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4MSA9IHBvaW50c1swXVswXTtcbiAgICAgICAgdmFyIHkxID0gcG9pbnRzWzBdWzFdO1xuICAgICAgICB2YXIgeDIgPSBwb2ludHNbbGVuZ3RoIC0gMV1bMF07XG4gICAgICAgIHZhciB5MiA9IHBvaW50c1tsZW5ndGggLSAxXVsxXTtcbiAgICAgICAgLy8g5aaC5p6c5a6a5LmJ5LqG566t5aS077yM5bm25LiU5piv6Ieq5a6a5LmJ566t5aS077yM57q/5p2h55u45bqU57yp6L+bXG4gICAgICAgIGlmIChzdGFydEFycm93ICYmIHN0YXJ0QXJyb3cuZCkge1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQoeDEsIHkxLCBwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXSwgc3RhcnRBcnJvdy5kKTtcbiAgICAgICAgICAgIHgxICs9IGRpc3RhbmNlLmR4O1xuICAgICAgICAgICAgeTEgKz0gZGlzdGFuY2UuZHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93ICYmIGVuZEFycm93LmQpIHtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHBvaW50c1tsZW5ndGggLSAyXVswXSwgcG9pbnRzW2xlbmd0aCAtIDJdWzFdLCB4MiwgeTIsIGVuZEFycm93LmQpO1xuICAgICAgICAgICAgeDIgLT0gZGlzdGFuY2UuZHg7XG4gICAgICAgICAgICB5MiAtPSBkaXN0YW5jZS5keTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0Lm1vdmVUbyh4MSwgeTEpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmxpbmVUbyh4MiwgeTIpO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmFmdGVyRHJhd1BhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgc3RhcnRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ3N0YXJ0QXJyb3dTaGFwZScpO1xuICAgICAgICB2YXIgZW5kQXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdlbmRBcnJvd1NoYXBlJyk7XG4gICAgICAgIGlmIChzdGFydEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIHN0YXJ0QXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBlbmRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBsZW5ndGggb2YgcG9seWxpbmVcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRUb3RhbExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgLy8gZ2V0IHRvdGFsTGVuZ3RoIGZyb20gY2FjaGVcbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgICAgIGlmICghaXNOaWwodG90YWxMZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWxMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgUG9seWxpbmVVdGlsLmxlbmd0aChwb2ludHMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpb1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uIChyYXRpbykge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICAvLyBnZXQgdENhY2hlIGZyb20gY2FjaGVcbiAgICAgICAgdmFyIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgaWYgKCF0Q2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRjYWNoZSgpO1xuICAgICAgICAgICAgdENhY2hlID0gdGhpcy5nZXQoJ3RDYWNoZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdWJ0O1xuICAgICAgICB2YXIgaW5kZXg7XG4gICAgICAgIGVhY2godENhY2hlLCBmdW5jdGlvbiAodiwgaSkge1xuICAgICAgICAgICAgaWYgKHJhdGlvID49IHZbMF0gJiYgcmF0aW8gPD0gdlsxXSkge1xuICAgICAgICAgICAgICAgIHN1YnQgPSAocmF0aW8gLSB2WzBdKSAvICh2WzFdIC0gdlswXSk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIExpbmVVdGlsLnBvaW50QXQocG9pbnRzW2luZGV4XVswXSwgcG9pbnRzW2luZGV4XVsxXSwgcG9pbnRzW2luZGV4ICsgMV1bMF0sIHBvaW50c1tpbmRleCArIDFdWzFdLCBzdWJ0KTtcbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5fc2V0VGNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICBpZiAoIXBvaW50cyB8fCBwb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICBpZiAodG90YWxMZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0ZW1wTGVuZ3RoID0gMDtcbiAgICAgICAgdmFyIHRDYWNoZSA9IFtdO1xuICAgICAgICB2YXIgc2VnbWVudFQ7XG4gICAgICAgIHZhciBzZWdtZW50TDtcbiAgICAgICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwLCBpKSB7XG4gICAgICAgICAgICBpZiAocG9pbnRzW2kgKyAxXSkge1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUID0gW107XG4gICAgICAgICAgICAgICAgc2VnbWVudFRbMF0gPSB0ZW1wTGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgICAgICAgICAgc2VnbWVudEwgPSBMaW5lVXRpbC5sZW5ndGgocFswXSwgcFsxXSwgcG9pbnRzW2kgKyAxXVswXSwgcG9pbnRzW2kgKyAxXVsxXSk7XG4gICAgICAgICAgICAgICAgdGVtcExlbmd0aCArPSBzZWdtZW50TDtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFsxXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICB0Q2FjaGUucHVzaChzZWdtZW50VCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgdENhY2hlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBzdGFydCB0YW5nZW50IHZlY3RvclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRTdGFydFRhbmdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdXSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXV0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGVuZCB0YW5nZW50IHZlY3RvclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRFbmRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICB2YXIgbCA9IHBvaW50cy5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbbCAtIDFdWzBdLCBwb2ludHNbbCAtIDFdWzFdXSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbbF1bMF0sIHBvaW50c1tsXVsxXV0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIFBvbHlMaW5lO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBvbHlMaW5lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_parse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/parse */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/rect */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js\");\n/* harmony import */ var _util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/in-stroke/rect-radius */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var minX = attrs.x;\n var minY = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n var halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return Object(_util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(minX, minY, width, height, lineWidth, x, y);\n }\n }\n else {\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n return isHit;\n }\n };\n Rect.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n }\n else {\n var _a = Object(_util_parse__WEBPACK_IMPORTED_MODULE_2__[\"parseRadius\"])(radius), r1 = _a[0], r2 = _a[1], r3 = _a[2], r4 = _a[3];\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcmVjdC5qcz9lYjZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ2E7QUFDUDtBQUNPO0FBQ2lCO0FBQ0g7QUFDMUQ7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsNkNBQTZDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHdEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBSztBQUM1QjtBQUNBO0FBQ0EsdUJBQXVCLG9FQUFNO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkVBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJFQUFhO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsK0RBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg55+p5b2iXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgcGFyc2VSYWRpdXMgfSBmcm9tICcuLi91dGlsL3BhcnNlJztcbmltcG9ydCB7IGluQm94IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCBpblJlY3QgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvcmVjdCc7XG5pbXBvcnQgaW5SZWN0V2l0aFJhZGl1cyBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9yZWN0LXJhZGl1cyc7XG5pbXBvcnQgaXNQb2ludEluUGF0aCBmcm9tICcuLi91dGlsL2luLXBhdGgvcG9pbnQtaW4tcGF0aCc7XG52YXIgUmVjdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUmVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSZWN0KCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFJlY3QucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFkaXVzOiAwIH0pO1xuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBtaW5YID0gYXR0cnMueDtcbiAgICAgICAgdmFyIG1pblkgPSBhdHRycy55O1xuICAgICAgICB2YXIgd2lkdGggPSBhdHRycy53aWR0aDtcbiAgICAgICAgdmFyIGhlaWdodCA9IGF0dHJzLmhlaWdodDtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGF0dHJzLnJhZGl1cztcbiAgICAgICAgLy8g5peg5ZyG6KeS5pe255qE562W55WlXG4gICAgICAgIGlmICghcmFkaXVzKSB7XG4gICAgICAgICAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgIC8vIOWQjOaXtuWhq+WFheWSjOW4puaciei+ueahhlxuICAgICAgICAgICAgaWYgKGlzRmlsbCAmJiBpc1N0cm9rZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbkJveChtaW5YIC0gaGFsZldpZHRoLCBtaW5ZIC0gaGFsZldpZHRoLCB3aWR0aCArIGhhbGZXaWR0aCwgaGVpZ2h0ICsgaGFsZldpZHRoLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOS7heWhq+WFhVxuICAgICAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbkJveChtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpblJlY3QobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgbGluZVdpZHRoLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpblJlY3RXaXRoUmFkaXVzKG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIHJhZGl1cywgbGluZVdpZHRoLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOS7heWhq+WFheaXtuW4puacieWchuinkueahOefqeW9ouebtOaOpemAmui/h+WbvuW9ouaLvuWPllxuICAgICAgICAgICAgLy8g5Lul5ZCO5Y+v5Lul5pS55oiQ57qv5pWw5a2m55qE6L+R5Ly85ou+5Y+W77yM5bCG5ZyG5byn5YiH5Ymy5oiQ5aSa6L655b2iXG4gICAgICAgICAgICBpZiAoIWlzSGl0ICYmIGlzRmlsbCkge1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gaXNQb2ludEluUGF0aCh0aGlzLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpc0hpdDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHdpZHRoID0gYXR0cnMud2lkdGg7XG4gICAgICAgIHZhciBoZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgICAgIHZhciByYWRpdXMgPSBhdHRycy5yYWRpdXM7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGlmIChyYWRpdXMgPT09IDApIHtcbiAgICAgICAgICAgIC8vIOaUueaIkOWOn+eUn+eahHJlY3Tmlrnms5VcbiAgICAgICAgICAgIGNvbnRleHQucmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHBhcnNlUmFkaXVzKHJhZGl1cyksIHIxID0gX2FbMF0sIHIyID0gX2FbMV0sIHIzID0gX2FbMl0sIHI0ID0gX2FbM107XG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh4ICsgcjEsIHkpO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCArIHdpZHRoIC0gcjIsIHkpO1xuICAgICAgICAgICAgcjIgIT09IDAgJiYgY29udGV4dC5hcmMoeCArIHdpZHRoIC0gcjIsIHkgKyByMiwgcjIsIC1NYXRoLlBJIC8gMiwgMCk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByMyk7XG4gICAgICAgICAgICByMyAhPT0gMCAmJiBjb250ZXh0LmFyYyh4ICsgd2lkdGggLSByMywgeSArIGhlaWdodCAtIHIzLCByMywgMCwgTWF0aC5QSSAvIDIpO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCArIHI0LCB5ICsgaGVpZ2h0KTtcbiAgICAgICAgICAgIHI0ICE9PSAwICYmIGNvbnRleHQuYXJjKHggKyByNCwgeSArIGhlaWdodCAtIHI0LCByNCwgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCwgeSArIHIxKTtcbiAgICAgICAgICAgIHIxICE9PSAwICYmIGNvbnRleHQuYXJjKHggKyByMSwgeSArIHIxLCByMSwgTWF0aC5QSSwgTWF0aC5QSSAqIDEuNSk7XG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gUmVjdDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBSZWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 默认文本属性\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n // 仅仅使用包围盒检测来进行拾取\n Text.prototype.isOnlyHitBox = function () {\n return true;\n };\n // 初始化时组合 font,同时判断 text 是否换行\n Text.prototype.initAttrs = function (attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n };\n // 组装字体\n Text.prototype._assembleFont = function () {\n var attrs = this.attrs;\n attrs.font = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"assembleFont\"])(attrs);\n };\n // 如果文本换行,则缓存数组\n Text.prototype._setText = function (text) {\n var textArr = null;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n };\n // 更新属性时,检测是否更改了 font、text\n Text.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n };\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n // }\n // 如果文本多行,需要获取文本间距\n Text.prototype._getSpaceingY = function () {\n var attrs = this.attrs;\n var lineHeight = attrs.lineHeight;\n var fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n };\n // 绘制文本,考虑多行的场景\n Text.prototype._drawTextArr = function (context, textArr, isFill) {\n var attrs = this.attrs;\n var textBaseline = attrs.textBaseline;\n var x = attrs.x;\n var y = attrs.y;\n var fontSize = attrs.fontSize * 1;\n var spaceingY = this._getSpaceingY();\n var height = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"getTextHeight\"])(attrs.text, attrs.fontSize, attrs.lineHeight);\n var subY;\n Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(textArr, function (subText, index) {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle')\n subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top')\n subY += height - fontSize;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n }\n else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n };\n // 绘制文本,同时考虑填充和绘制边框\n Text.prototype._drawText = function (context, isFill) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n }\n else {\n var text = attrs.text;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n }\n else {\n context.strokeText(text, x, y);\n }\n }\n }\n };\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n Text.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n this.afterDrawPath(context);\n };\n // 复写填充逻辑\n Text.prototype.fill = function (context) {\n this._drawText(context, true);\n };\n // 复写绘制边框的逻辑\n Text.prototype.stroke = function (context) {\n this._drawText(context, false);\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvdGV4dC5qcz9hYWFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ3NCO0FBQ007QUFDM0Q7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywrS0FBK0s7QUFDN047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGlFQUFZO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGtFQUFhO0FBQ2xDO0FBQ0EsUUFBUSx1REFBSTtBQUNaLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix3REFBSztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5paH5pysXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgaXNOaWwsIGlzU3RyaW5nLCBlYWNoIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IGdldFRleHRIZWlnaHQsIGFzc2VtYmxlRm9udCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG52YXIgVGV4dCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUZXh0KCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8vIOm7mOiupOaWh+acrOWxnuaAp1xuICAgIFRleHQucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgdGV4dDogbnVsbCwgZm9udFNpemU6IDEyLCBmb250RmFtaWx5OiAnc2Fucy1zZXJpZicsIGZvbnRTdHlsZTogJ25vcm1hbCcsIGZvbnRXZWlnaHQ6ICdub3JtYWwnLCBmb250VmFyaWFudDogJ25vcm1hbCcsIHRleHRBbGlnbjogJ3N0YXJ0JywgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyB9KTtcbiAgICB9O1xuICAgIC8vIOS7heS7heS9v+eUqOWMheWbtOebkuajgOa1i+adpei/m+ihjOaLvuWPllxuICAgIFRleHQucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICAvLyDliJ3lp4vljJbml7bnu4TlkIggZm9udO+8jOWQjOaXtuWIpOaWrSB0ZXh0IOaYr+WQpuaNouihjFxuICAgIFRleHQucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9hc3NlbWJsZUZvbnQoKTtcbiAgICAgICAgaWYgKGF0dHJzLnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRleHQoYXR0cnMudGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOe7hOijheWtl+S9k1xuICAgIFRleHQucHJvdG90eXBlLl9hc3NlbWJsZUZvbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIGF0dHJzLmZvbnQgPSBhc3NlbWJsZUZvbnQoYXR0cnMpO1xuICAgIH07XG4gICAgLy8g5aaC5p6c5paH5pys5o2i6KGM77yM5YiZ57yT5a2Y5pWw57uEXG4gICAgVGV4dC5wcm90b3R5cGUuX3NldFRleHQgPSBmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICB2YXIgdGV4dEFyciA9IG51bGw7XG4gICAgICAgIGlmIChpc1N0cmluZyh0ZXh0KSAmJiB0ZXh0LmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdGV4dEFyciA9IHRleHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCd0ZXh0QXJyJywgdGV4dEFycik7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgZm9udOOAgXRleHRcbiAgICBUZXh0LnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnZm9udCcpKSB7XG4gICAgICAgICAgICB0aGlzLl9hc3NlbWJsZUZvbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g6L+Z5Liq5pa55rOV5ZyoIHRleHQg5pe25rKh5pyJ5Y+v5Lul5YGa55qE5LqL5oOF77yM5aaC5p6c6KaB5pSv5oyB5paH5a2X6IOM5pmv5pe25Y+v5Lul6ICD6JmRXG4gICAgLy8gY3JlYXRlUGF0aChjb250ZXh0KSB7XG4gICAgLy8gfVxuICAgIC8vIOWmguaenOaWh+acrOWkmuihjO+8jOmcgOimgeiOt+WPluaWh+acrOmXtOi3nVxuICAgIFRleHQucHJvdG90eXBlLl9nZXRTcGFjZWluZ1kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIHZhciBsaW5lSGVpZ2h0ID0gYXR0cnMubGluZUhlaWdodDtcbiAgICAgICAgdmFyIGZvbnRTaXplID0gYXR0cnMuZm9udFNpemUgKiAxO1xuICAgICAgICByZXR1cm4gbGluZUhlaWdodCA/IGxpbmVIZWlnaHQgLSBmb250U2l6ZSA6IGZvbnRTaXplICogMC4xNDtcbiAgICB9O1xuICAgIC8vIOe7mOWItuaWh+acrO+8jOiAg+iZkeWkmuihjOeahOWcuuaZr1xuICAgIFRleHQucHJvdG90eXBlLl9kcmF3VGV4dEFyciA9IGZ1bmN0aW9uIChjb250ZXh0LCB0ZXh0QXJyLCBpc0ZpbGwpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgdmFyIHRleHRCYXNlbGluZSA9IGF0dHJzLnRleHRCYXNlbGluZTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54O1xuICAgICAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciBmb250U2l6ZSA9IGF0dHJzLmZvbnRTaXplICogMTtcbiAgICAgICAgdmFyIHNwYWNlaW5nWSA9IHRoaXMuX2dldFNwYWNlaW5nWSgpO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gZ2V0VGV4dEhlaWdodChhdHRycy50ZXh0LCBhdHRycy5mb250U2l6ZSwgYXR0cnMubGluZUhlaWdodCk7XG4gICAgICAgIHZhciBzdWJZO1xuICAgICAgICBlYWNoKHRleHRBcnIsIGZ1bmN0aW9uIChzdWJUZXh0LCBpbmRleCkge1xuICAgICAgICAgICAgc3ViWSA9IHkgKyBpbmRleCAqIChzcGFjZWluZ1kgKyBmb250U2l6ZSkgLSBoZWlnaHQgKyBmb250U2l6ZTsgLy8gYm90dG9tO1xuICAgICAgICAgICAgaWYgKHRleHRCYXNlbGluZSA9PT0gJ21pZGRsZScpXG4gICAgICAgICAgICAgICAgc3ViWSArPSBoZWlnaHQgLSBmb250U2l6ZSAtIChoZWlnaHQgLSBmb250U2l6ZSkgLyAyO1xuICAgICAgICAgICAgaWYgKHRleHRCYXNlbGluZSA9PT0gJ3RvcCcpXG4gICAgICAgICAgICAgICAgc3ViWSArPSBoZWlnaHQgLSBmb250U2l6ZTtcbiAgICAgICAgICAgIGlmICghaXNOaWwoc3ViVGV4dCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoc3ViVGV4dCwgeCwgc3ViWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQoc3ViVGV4dCwgeCwgc3ViWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vIOe7mOWItuaWh+acrO+8jOWQjOaXtuiAg+iZkeWhq+WFheWSjOe7mOWItui+ueahhlxuICAgIFRleHQucHJvdG90eXBlLl9kcmF3VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBpc0ZpbGwpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgdGV4dEFyciA9IHRoaXMuZ2V0KCd0ZXh0QXJyJyk7XG4gICAgICAgIGlmICh0ZXh0QXJyKSB7XG4gICAgICAgICAgICB0aGlzLl9kcmF3VGV4dEFycihjb250ZXh0LCB0ZXh0QXJyLCBpc0ZpbGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRleHQgPSBhdHRycy50ZXh0O1xuICAgICAgICAgICAgaWYgKCFpc05pbCh0ZXh0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCB4LCB5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dCh0ZXh0LCB4LCB5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOWkjeWGmee7mOWItuWSjOWhq+WFheeahOmAu+i+ke+8muWvueS6juaWh+acrO+8jOW6lOivpeWFiOe7mOWItui+ueahhu+8jOWGjei/m+ihjOWhq+WFhVxuICAgIFRleHQucHJvdG90eXBlLnN0cm9rZUFuZEZpbGwgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHJzLCBsaW5lV2lkdGggPSBfYS5saW5lV2lkdGgsIG9wYWNpdHkgPSBfYS5vcGFjaXR5LCBzdHJva2VPcGFjaXR5ID0gX2Euc3Ryb2tlT3BhY2l0eSwgZmlsbE9wYWNpdHkgPSBfYS5maWxsT3BhY2l0eTtcbiAgICAgICAgaWYgKHRoaXMuaXNTdHJva2UoKSkge1xuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKHN0cm9rZU9wYWNpdHkpICYmIHN0cm9rZU9wYWNpdHkgIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3Ryb2tlKGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRmlsbCgpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKGZpbGxPcGFjaXR5KSAmJiBmaWxsT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBmaWxsT3BhY2l0eTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZnRlckRyYXdQYXRoKGNvbnRleHQpO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5aGr5YWF6YC76L6RXG4gICAgVGV4dC5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuX2RyYXdUZXh0KGNvbnRleHQsIHRydWUpO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ57uY5Yi26L655qGG55qE6YC76L6RXG4gICAgVGV4dC5wcm90b3R5cGUuc3Ryb2tlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fZHJhd1RleHQoY29udGV4dCwgZmFsc2UpO1xuICAgIH07XG4gICAgcmV0dXJuIFRleHQ7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getArcParams; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : rx,\n ry: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=arc-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9hcmMtcGFyYW1zLmpzPzhkNjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxvQkFBb0IsaURBQUcsQ0FBQyxzREFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBVztBQUN2QixZQUFZLHlEQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9hcmMtcGFyYW1zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kLCB0b1JhZGlhbiwgaXNTYW1lUG9pbnQgfSBmcm9tICcuL3V0aWwnO1xuLy8g5ZCR6YeP6ZW/5bqmXG5mdW5jdGlvbiB2TWFnKHYpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHZbMF0gKiB2WzBdICsgdlsxXSAqIHZbMV0pO1xufVxuLy8gdS52L3x1fHx2fO+8jOiuoeeul+WkueinkueahOS9meW8puWAvFxuZnVuY3Rpb24gdlJhdGlvKHUsIHYpIHtcbiAgICAvLyDlvZPlrZjlnKjkuIDkuKrlkJHph4/nmoTplb/luqbkuLogMCDml7bvvIzlpLnop5LkuZ/kuLogMO+8jOWNs+WkueinkueahOS9meW8puWAvOS4uiAxXG4gICAgcmV0dXJuIHZNYWcodSkgKiB2TWFnKHYpID8gKHVbMF0gKiB2WzBdICsgdVsxXSAqIHZbMV0pIC8gKHZNYWcodSkgKiB2TWFnKHYpKSA6IDE7XG59XG4vLyDlkJHph4/op5LluqZcbmZ1bmN0aW9uIHZBbmdsZSh1LCB2KSB7XG4gICAgcmV0dXJuICh1WzBdICogdlsxXSA8IHVbMV0gKiB2WzBdID8gLTEgOiAxKSAqIE1hdGguYWNvcyh2UmF0aW8odSwgdikpO1xufVxuLy8gQSAwOnJ4IDE6cnkgMjp4LWF4aXMtcm90YXRpb24gMzpsYXJnZS1hcmMtZmxhZyA0OnN3ZWVwLWZsYWcgNTogeCA2OiB5XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBcmNQYXJhbXMoc3RhcnRQb2ludCwgcGFyYW1zKSB7XG4gICAgdmFyIHJ4ID0gcGFyYW1zWzFdO1xuICAgIHZhciByeSA9IHBhcmFtc1syXTtcbiAgICB2YXIgeFJvdGF0aW9uID0gbW9kKHRvUmFkaWFuKHBhcmFtc1szXSksIE1hdGguUEkgKiAyKTtcbiAgICB2YXIgYXJjRmxhZyA9IHBhcmFtc1s0XTtcbiAgICB2YXIgc3dlZXBGbGFnID0gcGFyYW1zWzVdO1xuICAgIC8vIOW8p+W9oui1t+eCueWdkOagh1xuICAgIHZhciB4MSA9IHN0YXJ0UG9pbnRbMF07XG4gICAgdmFyIHkxID0gc3RhcnRQb2ludFsxXTtcbiAgICAvLyDlvKflvaLnu4jngrnlnZDmoIdcbiAgICB2YXIgeDIgPSBwYXJhbXNbNl07XG4gICAgdmFyIHkyID0gcGFyYW1zWzddO1xuICAgIHZhciB4cCA9IChNYXRoLmNvcyh4Um90YXRpb24pICogKHgxIC0geDIpKSAvIDIuMCArIChNYXRoLnNpbih4Um90YXRpb24pICogKHkxIC0geTIpKSAvIDIuMDtcbiAgICB2YXIgeXAgPSAoLTEgKiBNYXRoLnNpbih4Um90YXRpb24pICogKHgxIC0geDIpKSAvIDIuMCArIChNYXRoLmNvcyh4Um90YXRpb24pICogKHkxIC0geTIpKSAvIDIuMDtcbiAgICB2YXIgbGFtYmRhID0gKHhwICogeHApIC8gKHJ4ICogcngpICsgKHlwICogeXApIC8gKHJ5ICogcnkpO1xuICAgIGlmIChsYW1iZGEgPiAxKSB7XG4gICAgICAgIHJ4ICo9IE1hdGguc3FydChsYW1iZGEpO1xuICAgICAgICByeSAqPSBNYXRoLnNxcnQobGFtYmRhKTtcbiAgICB9XG4gICAgdmFyIGRpZmYgPSByeCAqIHJ4ICogKHlwICogeXApICsgcnkgKiByeSAqICh4cCAqIHhwKTtcbiAgICB2YXIgZiA9IGRpZmYgPyBNYXRoLnNxcnQoKHJ4ICogcnggKiAocnkgKiByeSkgLSBkaWZmKSAvIGRpZmYpIDogMTtcbiAgICBpZiAoYXJjRmxhZyA9PT0gc3dlZXBGbGFnKSB7XG4gICAgICAgIGYgKj0gLTE7XG4gICAgfVxuICAgIGlmIChpc05hTihmKSkge1xuICAgICAgICBmID0gMDtcbiAgICB9XG4gICAgLy8g5peL6L2s5YmN55qE6LW354K55Z2Q5qCH77yM5LiU5b2T6ZW/5Y2K6L205ZKM55+t5Y2K6L2055qE6ZW/5bqm5Li6IDAg5pe277yM5Z2Q5qCH5oyJICgwLCAwKSDlpITnkIZcbiAgICB2YXIgY3hwID0gcnkgPyAoZiAqIHJ4ICogeXApIC8gcnkgOiAwO1xuICAgIHZhciBjeXAgPSByeCA/IChmICogLXJ5ICogeHApIC8gcnggOiAwO1xuICAgIC8vIOakreWchuWchuW/g+WdkOagh1xuICAgIHZhciBjeCA9ICh4MSArIHgyKSAvIDIuMCArIE1hdGguY29zKHhSb3RhdGlvbikgKiBjeHAgLSBNYXRoLnNpbih4Um90YXRpb24pICogY3lwO1xuICAgIHZhciBjeSA9ICh5MSArIHkyKSAvIDIuMCArIE1hdGguc2luKHhSb3RhdGlvbikgKiBjeHAgKyBNYXRoLmNvcyh4Um90YXRpb24pICogY3lwO1xuICAgIC8vIOi1t+Wni+eCueeahOWNleS9jeWQkemHj1xuICAgIHZhciB1ID0gWyh4cCAtIGN4cCkgLyByeCwgKHlwIC0gY3lwKSAvIHJ5XTtcbiAgICAvLyDnu4jmraLngrnnmoTljZXkvY3lkJHph49cbiAgICB2YXIgdiA9IFsoLTEgKiB4cCAtIGN4cCkgLyByeCwgKC0xICogeXAgLSBjeXApIC8gcnldO1xuICAgIC8vIOiuoeeul+i1t+Wni+eCueWSjOWchuW/g+eahOi/nue6v++8jOS4jiB4IOi9tOato+aWueWQkeeahOWkueinklxuICAgIHZhciB0aGV0YSA9IHZBbmdsZShbMSwgMF0sIHUpO1xuICAgIC8vIOiuoeeul+WchuW8p+i1t+Wni+eCueWSjOe7iOatoueCueS4juakreWchuWchuW/g+i/nue6v+eahOWkueinklxuICAgIHZhciBkVGhldGEgPSB2QW5nbGUodSwgdik7XG4gICAgaWYgKHZSYXRpbyh1LCB2KSA8PSAtMSkge1xuICAgICAgICBkVGhldGEgPSBNYXRoLlBJO1xuICAgIH1cbiAgICBpZiAodlJhdGlvKHUsIHYpID49IDEpIHtcbiAgICAgICAgZFRoZXRhID0gMDtcbiAgICB9XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMCAmJiBkVGhldGEgPiAwKSB7XG4gICAgICAgIGRUaGV0YSA9IGRUaGV0YSAtIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICBpZiAoc3dlZXBGbGFnID09PSAxICYmIGRUaGV0YSA8IDApIHtcbiAgICAgICAgZFRoZXRhID0gZFRoZXRhICsgMiAqIE1hdGguUEk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGN4OiBjeCxcbiAgICAgICAgY3k6IGN5LFxuICAgICAgICAvLyDlvKflvaLnmoTotbfngrnlkoznu4jngrnnm7jlkIzml7bvvIzplb/ovbTlkoznn63ovbTnmoTplb/luqbmjIkgMCDlpITnkIZcbiAgICAgICAgcng6IGlzU2FtZVBvaW50KHN0YXJ0UG9pbnQsIFt4MiwgeTJdKSA/IDAgOiByeCxcbiAgICAgICAgcnk6IGlzU2FtZVBvaW50KHN0YXJ0UG9pbnQsIFt4MiwgeTJdKSA/IDAgOiByeSxcbiAgICAgICAgc3RhcnRBbmdsZTogdGhldGEsXG4gICAgICAgIGVuZEFuZ2xlOiB0aGV0YSArIGRUaGV0YSxcbiAgICAgICAgeFJvdGF0aW9uOiB4Um90YXRpb24sXG4gICAgICAgIGFyY0ZsYWc6IGFyY0ZsYWcsXG4gICAgICAgIHN3ZWVwRmxhZzogc3dlZXBGbGFnLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmMtcGFyYW1zLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js ***! \******************************************************************************/ /*! exports provided: getShortenOffset, addStartArrow, addEndArrow */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShortenOffset\", function() { return getShortenOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addStartArrow\", function() { return addStartArrow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEndArrow\", function() { return addEndArrow; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n\n\nvar sin = Math.sin, cos = Math.cos, atan2 = Math.atan2, PI = Math.PI;\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: \"M\" + 10 * cos(PI / 6) + \",\" + 10 * sin(PI / 6) + \" L0,0 L\" + 10 * cos(PI / 6) + \",-\" + 10 * sin(PI / 6),\n // 使用 shape stroke 值\n stroke: stroke,\n lineWidth: lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow, stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var arrowAttrs = isStart ? startArrow : endArrow;\n var d = arrowAttrs.d, arrowFill = arrowAttrs.fill, arrowStroke = arrowAttrs.stroke, arrowLineWidth = arrowAttrs.lineWidth, restAttrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(arrowAttrs, [\"d\", \"fill\", \"stroke\", \"lineWidth\"]);\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, restAttrs), { \n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke, lineWidth: arrowLineWidth || lineWidth, \n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill }),\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nfunction getShortenOffset(x1, y1, x2, y2, d) {\n var rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9hcnJvdy5qcz81MzlhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNUO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJJQUEySSxvREFBTTtBQUNqSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxlO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLHdCQUF3QjtBQUNyQztBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFdBQVc7QUFDdEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL2Fycm93LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgUGF0aCB9IGZyb20gJy4uL3NoYXBlJztcbnZhciBzaW4gPSBNYXRoLnNpbiwgY29zID0gTWF0aC5jb3MsIGF0YW4yID0gTWF0aC5hdGFuMiwgUEkgPSBNYXRoLlBJO1xuZnVuY3Rpb24gX2FkZERlZmF1bHRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBpc1N0YXJ0KSB7XG4gICAgdmFyIHN0cm9rZSA9IGF0dHJzLnN0cm9rZSwgbGluZVdpZHRoID0gYXR0cnMubGluZVdpZHRoO1xuICAgIHZhciB4ID0geDEgLSB4MjtcbiAgICB2YXIgeSA9IHkxIC0geTI7XG4gICAgdmFyIHJhZCA9IGF0YW4yKHksIHgpO1xuICAgIHZhciBhcnJvd1NoYXBlID0gbmV3IFBhdGgoe1xuICAgICAgICB0eXBlOiAncGF0aCcsXG4gICAgICAgIGNhbnZhczogc2hhcGUuZ2V0KCdjYW52YXMnKSxcbiAgICAgICAgaXNBcnJvd1NoYXBlOiB0cnVlLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgLy8g6buY6K6k566t5aS055qE6L656ZW/5Li6IDEw77yM5aS56KeS5Li6IDYwIOW6plxuICAgICAgICAgICAgcGF0aDogXCJNXCIgKyAxMCAqIGNvcyhQSSAvIDYpICsgXCIsXCIgKyAxMCAqIHNpbihQSSAvIDYpICsgXCIgTDAsMCBMXCIgKyAxMCAqIGNvcyhQSSAvIDYpICsgXCIsLVwiICsgMTAgKiBzaW4oUEkgLyA2KSxcbiAgICAgICAgICAgIC8vIOS9v+eUqCBzaGFwZSBzdHJva2Ug5YC8XG4gICAgICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgICAgIGxpbmVXaWR0aDogbGluZVdpZHRoLFxuICAgICAgICB9LFxuICAgIH0pO1xuICAgIGFycm93U2hhcGUudHJhbnNsYXRlKHgyLCB5Mik7XG4gICAgYXJyb3dTaGFwZS5yb3RhdGVBdFBvaW50KHgyLCB5MiwgcmFkKTtcbiAgICBzaGFwZS5zZXQoaXNTdGFydCA/ICdzdGFydEFycm93U2hhcGUnIDogJ2VuZEFycm93U2hhcGUnLCBhcnJvd1NoYXBlKTtcbn1cbi8qKlxuICog566t5aS0IHBhdGgg55qE6K6+572u6KaB5rGCXG4gKiAxLiDnrq3lpLTpobbngrnlnZDmoIfpnIDopoHkuLogKDAsIDApXG4gKiAyLiDnrq3lpLTlpLnop5LnmoTkuK3lv4PliIblibLnur/pnIDopoHkuI4gWCDovbTmraPmlrnlkJHlr7npvZBcbiAqL1xuZnVuY3Rpb24gX2FkZEN1c3RvbWl6ZWRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBpc1N0YXJ0KSB7XG4gICAgdmFyIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93LCBzdHJva2UgPSBhdHRycy5zdHJva2UsIGxpbmVXaWR0aCA9IGF0dHJzLmxpbmVXaWR0aDtcbiAgICB2YXIgYXJyb3dBdHRycyA9IGlzU3RhcnQgPyBzdGFydEFycm93IDogZW5kQXJyb3c7XG4gICAgdmFyIGQgPSBhcnJvd0F0dHJzLmQsIGFycm93RmlsbCA9IGFycm93QXR0cnMuZmlsbCwgYXJyb3dTdHJva2UgPSBhcnJvd0F0dHJzLnN0cm9rZSwgYXJyb3dMaW5lV2lkdGggPSBhcnJvd0F0dHJzLmxpbmVXaWR0aCwgcmVzdEF0dHJzID0gX19yZXN0KGFycm93QXR0cnMsIFtcImRcIiwgXCJmaWxsXCIsIFwic3Ryb2tlXCIsIFwibGluZVdpZHRoXCJdKTtcbiAgICB2YXIgeCA9IHgxIC0geDI7XG4gICAgdmFyIHkgPSB5MSAtIHkyO1xuICAgIHZhciByYWQgPSBhdGFuMih5LCB4KTtcbiAgICBpZiAoZCkge1xuICAgICAgICB4MiA9IHgyIC0gY29zKHJhZCkgKiBkO1xuICAgICAgICB5MiA9IHkyIC0gc2luKHJhZCkgKiBkO1xuICAgIH1cbiAgICB2YXIgYXJyb3dTaGFwZSA9IG5ldyBQYXRoKHtcbiAgICAgICAgdHlwZTogJ3BhdGgnLFxuICAgICAgICBjYW52YXM6IHNoYXBlLmdldCgnY2FudmFzJyksXG4gICAgICAgIGlzQXJyb3dTaGFwZTogdHJ1ZSxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN0QXR0cnMpLCB7IFxuICAgICAgICAgICAgLy8g5pSv5oyB5Y2V54us6K6+572u566t5aS055qEIHN0cm9rZSDlkowgbGluZVdpZHRo77yM6Iul5Li656m65YiZ5L2/55SoIHNoYXBlIOeahOWAvFxuICAgICAgICAgICAgc3Ryb2tlOiBhcnJvd1N0cm9rZSB8fCBzdHJva2UsIGxpbmVXaWR0aDogYXJyb3dMaW5lV2lkdGggfHwgbGluZVdpZHRoLCBcbiAgICAgICAgICAgIC8vIOeureWktOaYr+WQpuWhq+WFhemcgOimgeaJi+WKqOiuvue9ru+8jOS4jeS8mue7p+aJv+iHqiBzaGFwZSDnmoTlgLxcbiAgICAgICAgICAgIGZpbGw6IGFycm93RmlsbCB9KSxcbiAgICB9KTtcbiAgICBhcnJvd1NoYXBlLnRyYW5zbGF0ZSh4MiwgeTIpO1xuICAgIGFycm93U2hhcGUucm90YXRlQXRQb2ludCh4MiwgeTIsIHJhZCk7XG4gICAgc2hhcGUuc2V0KGlzU3RhcnQgPyAnc3RhcnRBcnJvd1NoYXBlJyA6ICdlbmRBcnJvd1NoYXBlJywgYXJyb3dTaGFwZSk7XG59XG4vKipcbiAqIOWmguaenOiHquWumuS5ieeureWktOW5tuS4lOaciSBkIOmcgOimgeWBmuWBj+enu++8jOWmguaenOebtOaOpeeUu++8jOe6v+adoeS8mui2heWHuueureWktOWwluerr++8jOWboOatpOmcgOimgeagueaNrueureWktOWBj+enuyBkLCDov5Tlm57nur/pnIDopoHnvKnnn63nmoTot53nprtcbiAqIHwtLS0tLS0tLS0tLS0tLS0tXG4gKiB8PHwtLS0tLS0tLS0tLS0tLVxuICogfFxuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnrq3lpLTkvZznlKjngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOeureWktOS9nOeUqOeCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0gZCAg566t5aS05rK/57q/5p2h5pa55ZCR55qE5YGP56e76Led56a7XG4gKiBAcmV0dXJuIHt7ZHg6IG51bWJlciwgZHk6IG51bWJlcn19IOi/lOWbnue6v+adoeWBj+enu+i3neemu1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnRlbk9mZnNldCh4MSwgeTEsIHgyLCB5MiwgZCkge1xuICAgIHZhciByYWQgPSBhdGFuMih5MiAtIHkxLCB4MiAtIHgxKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkeDogY29zKHJhZCkgKiBkLFxuICAgICAgICBkeTogc2luKHJhZCkgKiBkLFxuICAgIH07XG59XG4vKipcbiAqIOe7mOWItui1t+Wni+eureWktFxuICogQHBhcmFtIHtJU2hhcGV9IHNoYXBlIOWbvuW9olxuICogQHBhcmFtIHtTaGFwZUF0dHJzfSBhdHRycyBzaGFwZSDnmoTnu5jlm77lsZ7mgKdcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0geDIg566t5aS05L2c55So54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnrq3lpLTkvZznlKjngrkgeVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU3RhcnRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycy5zdGFydEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBfYWRkQ3VzdG9taXplZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIHRydWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChhdHRycy5zdGFydEFycm93KSB7XG4gICAgICAgIF9hZGREZWZhdWx0QXJyb3coc2hhcGUsIGF0dHJzLCB4MSwgeTEsIHgyLCB5MiwgdHJ1ZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzaGFwZS5zZXQoJ3N0YXJ0QXJyb3dTaGFwZScsIG51bGwpO1xuICAgIH1cbn1cbi8qKlxuICog57uY5Yi257uT5p2f566t5aS0XG4gKiBAcGFyYW0ge0lTaGFwZX0gc2hhcGUg5Zu+5b2iXG4gKiBAcGFyYW0ge1NoYXBlQXR0cnN9IGF0dHJzIHNoYXBlIOeahOe7mOWbvuWxnuaAp1xuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnrq3lpLTkvZznlKjngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOeureWktOS9nOeUqOeCuSB5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRFbmRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycy5lbmRBcnJvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgX2FkZEN1c3RvbWl6ZWRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBmYWxzZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGF0dHJzLmVuZEFycm93KSB7XG4gICAgICAgIF9hZGREZWZhdWx0QXJyb3coc2hhcGUsIGF0dHJzLCB4MSwgeTEsIHgyLCB5MiwgZmFsc2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2hhcGUuc2V0KCdzdGFydEFycm93U2hhcGUnLCBudWxsKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcnJvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js ***! \*****************************************************************************/ /*! exports provided: applyAttrsToContext, drawChildren, checkRefresh, checkChildrenRefresh, clearChanged, drawPath, refreshElement, getRefreshRegion, getMergedRegion, mergeView */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyAttrsToContext\", function() { return applyAttrsToContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRefresh\", function() { return checkRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkChildrenRefresh\", function() { return checkChildrenRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearChanged\", function() { return clearChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawPath\", function() { return drawPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRefreshRegion\", function() { return getRefreshRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMergedRegion\", function() { return getMergedRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeView\", function() { return mergeView; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _arc_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc-params */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\nvar SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\nfunction applyAttrsToContext(context, element) {\n var attrs = element.attr();\n for (var k in attrs) {\n var v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n var name_1 = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name_1 === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n }\n else if (name_1 === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) && context.setLineDash(v);\n }\n else {\n if (name_1 === 'strokeStyle' || name_1 === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = Object(_parse__WEBPACK_IMPORTED_MODULE_1__[\"parseStyle\"])(context, element, v);\n }\n else if (name_1 === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name_1] = v;\n }\n }\n}\nfunction drawChildren(context, children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n child.draw(context, region);\n }\n else {\n child.skipDraw();\n }\n }\n}\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nfunction checkRefresh(canvas, children, region) {\n var refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(refreshElements, function (el) {\n if (el !== canvas) {\n var parent_1 = el.cfg.parent;\n while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) {\n parent_1.cfg.refresh = true;\n parent_1 = parent_1.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n }\n else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nfunction checkChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n }\n else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n var refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nfunction clearChanged(elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\nfunction checkElementRefresh(shape, region) {\n var bbox = shape.cfg.cacheCanvasBBox;\n var isAllow = shape.cfg.isInView && bbox && Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(bbox, region);\n return isAllow;\n}\n// 绘制 path\nfunction drawPath(shape, context, attrs, arcParamsCache) {\n var path = attrs.path, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (!path) {\n return;\n }\n var currentPoint = [0, 0]; // 当前图形\n var startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n var distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (var i = 0; i < path.length; i++) {\n var params = path[i];\n var command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n var tangent = shape.getStartTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n }\n else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n var lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n var dx = distance.dx, dy = distance.dy;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n var arcParams = void 0;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n }\n else {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n }\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation, sweepFlag = arcParams.sweepFlag;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n }\n else {\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n// 刷新图形元素(Shape 或者 Group)\nfunction refreshElement(element, changeType) {\n var canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\nfunction getRefreshRegion(element) {\n var region;\n if (!element.destroyed) {\n var cacheBox = element.get('cacheCanvasBBox');\n var validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n var bbox = element.getCanvasBBox();\n var validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeRegion\"])(cacheBox, bbox);\n }\n else if (validCache) {\n region = cacheBox;\n }\n else if (validBBox) {\n region = bbox;\n }\n }\n else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\nfunction getMergedRegion(elements) {\n if (!elements.length) {\n return null;\n }\n var minXArr = [];\n var minYArr = [];\n var maxXArr = [];\n var maxYArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(elements, function (el) {\n var region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minXArr),\n minY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minYArr),\n maxX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxXArr),\n maxY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxYArr),\n };\n}\nfunction mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9kcmF3LmpzP2MzOTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDaEI7QUFDRztBQUNZO0FBQ1Q7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5REFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCwyREFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw0REFBMEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDREQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDREQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsMkRBQVk7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMkRBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHlEQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsY0FBYyxzREFBRztBQUNqQixjQUFjLHNEQUFHO0FBQ2pCLGNBQWMsc0RBQUc7QUFDakIsY0FBYyxzREFBRztBQUNqQjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMkRBQWE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9kcmF3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHBhcnNlU3R5bGUgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCBnZXRBcmNQYXJhbXMgZnJvbSAnLi9hcmMtcGFyYW1zJztcbmltcG9ydCB7IG1lcmdlUmVnaW9uLCBpbnRlcnNlY3RSZWN0IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCAqIGFzIEFycm93VXRpbCBmcm9tICcuLi91dGlsL2Fycm93JztcbnZhciBTSEFQRV9BVFRSU19NQVAgPSB7XG4gICAgZmlsbDogJ2ZpbGxTdHlsZScsXG4gICAgc3Ryb2tlOiAnc3Ryb2tlU3R5bGUnLFxuICAgIG9wYWNpdHk6ICdnbG9iYWxBbHBoYScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgZWxlbWVudCkge1xuICAgIHZhciBhdHRycyA9IGVsZW1lbnQuYXR0cigpO1xuICAgIGZvciAodmFyIGsgaW4gYXR0cnMpIHtcbiAgICAgICAgdmFyIHYgPSBhdHRyc1trXTtcbiAgICAgICAgLy8g6L2s5o2i5LiA5LiL5LiN5LiOIGNhbnZhcyDlhbzlrrnnmoTlsZ7mgKflkI1cbiAgICAgICAgdmFyIG5hbWVfMSA9IFNIQVBFX0FUVFJTX01BUFtrXSA/IFNIQVBFX0FUVFJTX01BUFtrXSA6IGs7XG4gICAgICAgIGlmIChuYW1lXzEgPT09ICdtYXRyaXgnICYmIHYpIHtcbiAgICAgICAgICAgIC8vIOiuvue9ruefqemYtVxuICAgICAgICAgICAgY29udGV4dC50cmFuc2Zvcm0odlswXSwgdlsxXSwgdlszXSwgdls0XSwgdls2XSwgdls3XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobmFtZV8xID09PSAnbGluZURhc2gnICYmIGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAgIC8vIOiuvue9ruiZmue6v++8jOWPquaUr+aMgeaVsOe7hOW9ouW8j++8jOmdnuaVsOe7hOW9ouW8j+S4jeWBmuS7u+S9leaTjeS9nFxuICAgICAgICAgICAgaXNBcnJheSh2KSAmJiBjb250ZXh0LnNldExpbmVEYXNoKHYpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5hbWVfMSA9PT0gJ3N0cm9rZVN0eWxlJyB8fCBuYW1lXzEgPT09ICdmaWxsU3R5bGUnKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5Zyo5riQ5Y+Y44CBcGF0dGVybiDov5nkuKrlvIDplIDmnInkupvlpKdcbiAgICAgICAgICAgICAgICAvLyDlj6/ku6XogIPomZHnvJPlrZjmnLrliLbvvIzpgJrov4cgaGFzVXBkYXRlIOadpemBv+WFjeS4gOS6m+i/kOeul1xuICAgICAgICAgICAgICAgIHYgPSBwYXJzZVN0eWxlKGNvbnRleHQsIGVsZW1lbnQsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZV8xID09PSAnZ2xvYmFsQWxwaGEnKSB7XG4gICAgICAgICAgICAgICAgLy8gb3BhY2l0eSDmlYjmnpzlj6/ku6Xlj6DliqDvvIzlrZDlhYPntKDnmoQgb3BhY2l0eSDpnIDopoHkuI7niLblhYPntKAgb3BhY2l0eSDnm7jkuZhcbiAgICAgICAgICAgICAgICB2ID0gdiAqIGNvbnRleHQuZ2xvYmFsQWxwaGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0W25hbWVfMV0gPSB2O1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbiwgcmVnaW9uKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmNmZy52aXNpYmxlKSB7XG4gICAgICAgICAgICBjaGlsZC5kcmF3KGNvbnRleHQsIHJlZ2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaGlsZC5za2lwRHJhdygpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8g6L+Z5Liq5Zyw5pa555qE6YC76L6R5q+U6L6D5aSN5p2C77yM566A5Y2V55S75LqG5LiA5byg5Zu+77yaaHR0cHM6Ly93d3cueXVxdWUuY29tL2FudHYvb3UyOTJuL3BjZ3Q1ZyNPVzFRRVxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmVmcmVzaChjYW52YXMsIGNoaWxkcmVuLCByZWdpb24pIHtcbiAgICB2YXIgcmVmcmVzaEVsZW1lbnRzID0gY2FudmFzLmdldCgncmVmcmVzaEVsZW1lbnRzJyk7XG4gICAgLy8g5YWI6YGN5Y6G6ZyA6KaB5Yi35paw55qE5YWD57Sg77yM5bCG6L+Z5Lqb5YWD57Sg55qE54i25YWD57Sg5Lmf6K6+572uIHJlZnJlc2hcbiAgICBlYWNoKHJlZnJlc2hFbGVtZW50cywgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIGlmIChlbCAhPT0gY2FudmFzKSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBlbC5jZmcucGFyZW50O1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudF8xICYmIHBhcmVudF8xICE9PSBjYW52YXMgJiYgIXBhcmVudF8xLmNmZy5yZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50XzEuY2ZnLnJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudF8xID0gcGFyZW50XzEuY2ZnLnBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZWZyZXNoRWxlbWVudHNbMF0gPT09IGNhbnZhcykge1xuICAgICAgICBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyDmo4Dmn6XmiYDmnInlrZDlhYPntKDmmK/lkKblj6/ku6XliLfmlrBcbiAgICAgICAgY2hlY2tDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgfVxufVxuLy8g5qOA5p+l5omA5pyJ55qE5a2Q5YWD57Sg5piv5ZCm5bqU6K+l5pu05pawXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIGlmIChjaGlsZC5jZmcudmlzaWJsZSkge1xuICAgICAgICAgICAgLy8g5YWI5Yik5patIGhhc0NoYW5nZWTvvIzlm6DkuLrlroPnmoTkvJjlhYjnuqfliKTmlq3lupTor6Xpq5jkuo4gcmVmcmVzaFxuICAgICAgICAgICAgaWYgKGNoaWxkLmNmZy5oYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6IqC54K55Y+R55Sf5LqGIGNoYW5nZe+8jOWImemcgOimgee6p+iBlOiuvue9ruWtkOWFg+e0oOeahCByZWZyZXNoXG4gICAgICAgICAgICAgICAgY2hpbGQuY2ZnLnJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2hpbGRyZW5SZWZyZXNoKGNoaWxkLmNmZy5jaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5jZmcucmVmcmVzaCkge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeWbvuW9oi/liIbnu4QgcmVmcmVzaCA9IHRydWXvvIzor7TmmI7lhbblrZDoioLngrnlrZjlnKggY2hhbmdlZFxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tDaGlsZHJlblJlZnJlc2goY2hpbGQuY2ZnLmNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOi/meS4quWIhuaUr+ivtOaYjuatpOasoeWxgOmDqOWIt+aWsO+8jOaJgOacieeahOiKgueCueWSjOeItuWFg+e0oOayoeacieWPkeeUn+WPmOWMlu+8jOS7hemcgOimgeajgOafpeWMheWbtOebku+8iOe8k+WtmO+8ieaYr+WQpuebuOS6pOWNs+WPr1xuICAgICAgICAgICAgICAgIHZhciByZWZyZXNoID0gY2hlY2tFbGVtZW50UmVmcmVzaChjaGlsZCwgcmVnaW9uKTtcbiAgICAgICAgICAgICAgICBjaGlsZC5jZmcucmVmcmVzaCA9IHJlZnJlc2g7XG4gICAgICAgICAgICAgICAgaWYgKHJlZnJlc2ggJiYgY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOmcgOimgeWIt+aWsO+8jOivtOaYjuWtkOWFg+e0oOS5n+mcgOimgeWIt+aWsO+8jOe7p+e7rei/m+ihjOWIpOWumlxuICAgICAgICAgICAgICAgICAgICBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZC5jZmcuY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8g55Sx5LqO5a+55pS55Y+Y55qE5Zu+5b2i5pS+5YWlIHJlZnJlc2hFbGVtZW50cyDml7blgZrkuobkvJjljJbvvIzliKTlrprniLblhYPntKAgY2hhbmdlZCDml7bkuI3liqDlhaVcbi8vIOmCo+S5iOacieWPr+iDveS8muWHuueOsCBlbGVtZW50cyDpg73kuLrnqbrvvIzmiYDku6XmnIDnu4ggZ3JvdXBcbmV4cG9ydCBmdW5jdGlvbiBjbGVhckNoYW5nZWQoZWxlbWVudHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbCA9IGVsZW1lbnRzW2ldO1xuICAgICAgICBlbC5jZmcuaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAvLyDnuqfogZTmuIXnkIZcbiAgICAgICAgaWYgKGVsLmlzR3JvdXAoKSAmJiAhZWwuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICBjbGVhckNoYW5nZWQoZWwuY2ZnLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIOW9k+afkOS4queItuWFg+e0oOWPkeeUn+aUueWPmOaXtu+8jOiwg+eUqOi/meS4quaWueazlee6p+iBlOiuvue9riByZWZyZXNoXG5mdW5jdGlvbiBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIC8vIGxldCByZWZyZXNoID0gdHJ1ZTtcbiAgICAgICAgLy8g6I635Y+W57yT5a2Y55qEIGJib3jvvIzlpoLmnpzov5nkuKogYmJveCDov5jlrZjlnKjliJnor7TmmI7niLblhYPntKDkuI3mmK/nn6npmLXlj5HnlJ/kuobmlLnlj5hcbiAgICAgICAgLy8gY29uc3QgYmJveCA9IGNoaWxkLmNmZy5jYW52YXNCQm94O1xuICAgICAgICAvLyBpZiAoYmJveCkge1xuICAgICAgICAvLyAgIC8vIOWmguaenOi/meaXtuWAmVxuICAgICAgICAvLyAgIHJlZnJlc2ggPSBpbnRlcnNlY3RSZWN0KGJib3gsIHJlZ2lvbik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY2hpbGQuY2ZnLnJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAvLyDlpoLmnpzpnIDopoHliLfmlrDlvZPliY3oioLngrnvvIzmiYDmnInnmoTlrZDlhYPntKDorr7nva4gcmVmcmVzaFxuICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGQuZ2V0KCdjaGlsZHJlbicpLCByZWdpb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gY2hlY2tFbGVtZW50UmVmcmVzaChzaGFwZSwgcmVnaW9uKSB7XG4gICAgdmFyIGJib3ggPSBzaGFwZS5jZmcuY2FjaGVDYW52YXNCQm94O1xuICAgIHZhciBpc0FsbG93ID0gc2hhcGUuY2ZnLmlzSW5WaWV3ICYmIGJib3ggJiYgaW50ZXJzZWN0UmVjdChiYm94LCByZWdpb24pO1xuICAgIHJldHVybiBpc0FsbG93O1xufVxuLy8g57uY5Yi2IHBhdGhcbmV4cG9ydCBmdW5jdGlvbiBkcmF3UGF0aChzaGFwZSwgY29udGV4dCwgYXR0cnMsIGFyY1BhcmFtc0NhY2hlKSB7XG4gICAgdmFyIHBhdGggPSBhdHRycy5wYXRoLCBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgY3VycmVudFBvaW50ID0gWzAsIDBdOyAvLyDlvZPliY3lm77lvaJcbiAgICB2YXIgc3RhcnRNb3ZlUG9pbnQgPSBbMCwgMF07IC8vIOW8gOWniyBNIOeahOeCue+8jOWPr+iDveS8muacieWkmuS4qlxuICAgIHZhciBkaXN0YW5jZSA9IHtcbiAgICAgICAgZHg6IDAsXG4gICAgICAgIGR5OiAwLFxuICAgIH07XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IHBhdGhbaV07XG4gICAgICAgIHZhciBjb21tYW5kID0gcGFyYW1zWzBdO1xuICAgICAgICBpZiAoaSA9PT0gMCAmJiBzdGFydEFycm93ICYmIHN0YXJ0QXJyb3cuZCkge1xuICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSBzaGFwZS5nZXRTdGFydFRhbmdlbnQoKTtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQodGFuZ2VudFswXVswXSwgdGFuZ2VudFswXVsxXSwgdGFuZ2VudFsxXVswXSwgdGFuZ2VudFsxXVsxXSwgc3RhcnRBcnJvdy5kKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpID09PSBwYXRoLmxlbmd0aCAtIDIgJiYgcGF0aFtpICsgMV1bMF0gPT09ICdaJyAmJiBlbmRBcnJvdyAmJiBlbmRBcnJvdy5kKSB7XG4gICAgICAgICAgICAvLyDkuLrkuobpmLLmraLnu5PlsL7kuLogWiDnmoQgc2VnbWVudCDnvKnnn63kuI3otbfmlYjvvIzpnIDopoHlj5bmnIDlkI7kuKTkuKogc2VnbWVudCDnibnmrorlpITnkIZcbiAgICAgICAgICAgIHZhciBsYXN0UGF0aCA9IHBhdGhbaSArIDFdO1xuICAgICAgICAgICAgaWYgKGxhc3RQYXRoWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNoYXBlLmdldEVuZFRhbmdlbnQoKTtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0sIGVuZEFycm93LmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMSAmJiBlbmRBcnJvdyAmJiBlbmRBcnJvdy5kKSB7XG4gICAgICAgICAgICBpZiAocGF0aFswXSAhPT0gJ1onKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSBzaGFwZS5nZXRFbmRUYW5nZW50KCk7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh0YW5nZW50WzBdWzBdLCB0YW5nZW50WzBdWzFdLCB0YW5nZW50WzFdWzBdLCB0YW5nZW50WzFdWzFdLCBlbmRBcnJvdy5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZHggPSBkaXN0YW5jZS5keCwgZHkgPSBkaXN0YW5jZS5keTtcbiAgICAgICAgLy8gVixILFMsVCDpg73lnKjliY3pnaLooqvovazmjaLmiJDmoIflh4blvaLlvI9cbiAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwYXJhbXNbMV0gLSBkeCwgcGFyYW1zWzJdIC0gZHkpO1xuICAgICAgICAgICAgICAgIHN0YXJ0TW92ZVBvaW50ID0gW3BhcmFtc1sxXSwgcGFyYW1zWzJdXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBhcmFtc1sxXSAtIGR4LCBwYXJhbXNbMl0gLSBkeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8ocGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSAtIGR4LCBwYXJhbXNbNF0gLSBkeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8ocGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSwgcGFyYW1zWzRdLCBwYXJhbXNbNV0gLSBkeCwgcGFyYW1zWzZdIC0gZHkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6IHtcbiAgICAgICAgICAgICAgICB2YXIgYXJjUGFyYW1zID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIC8vIOS4uuS6huWKoOmAn+e7mOWItu+8jOWPr+S7peaPkOS+m+WPguaVsOeahOe8k+WtmO+8jOWQhOS4quWbvuW9ouiHquW3see8k+WtmFxuICAgICAgICAgICAgICAgIGlmIChhcmNQYXJhbXNDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBhcmNQYXJhbXMgPSBhcmNQYXJhbXNDYWNoZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmNQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyY1BhcmFtcyA9IGdldEFyY1BhcmFtcyhjdXJyZW50UG9pbnQsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmNQYXJhbXNDYWNoZVtpXSA9IGFyY1BhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJjUGFyYW1zID0gZ2V0QXJjUGFyYW1zKGN1cnJlbnRQb2ludCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGN4ID0gYXJjUGFyYW1zLmN4LCBjeSA9IGFyY1BhcmFtcy5jeSwgcnggPSBhcmNQYXJhbXMucngsIHJ5ID0gYXJjUGFyYW1zLnJ5LCBzdGFydEFuZ2xlID0gYXJjUGFyYW1zLnN0YXJ0QW5nbGUsIGVuZEFuZ2xlID0gYXJjUGFyYW1zLmVuZEFuZ2xlLCB4Um90YXRpb24gPSBhcmNQYXJhbXMueFJvdGF0aW9uLCBzd2VlcEZsYWcgPSBhcmNQYXJhbXMuc3dlZXBGbGFnO1xuICAgICAgICAgICAgICAgIC8vIOebtOaOpeS9v+eUqOakreWchueahCBhcGlcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5lbGxpcHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxsaXBzZShjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgMSAtIHN3ZWVwRmxhZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJ4ID4gcnkgPyByeCA6IHJ5O1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGVYID0gcnggPiByeSA/IDEgOiByeCAvIHJ5O1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGVZID0gcnggPiByeSA/IHJ5IC8gcnggOiAxO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdGF0ZSh4Um90YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNjYWxlKHNjYWxlWCwgc2NhbGVZKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmMoMCwgMCwgciwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIDEgLSBzd2VlcEZsYWcpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNjYWxlKDEgLyBzY2FsZVgsIDEgLyBzY2FsZVkpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdGF0ZSgteFJvdGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLWN4LCAtY3kpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIOacieS6hiBaIOWQju+8jOW9k+WJjeiKgueCueS7juW8gOWniyBNIOeahOeCueW8gOWni1xuICAgICAgICBpZiAoY29tbWFuZCA9PT0gJ1onKSB7XG4gICAgICAgICAgICBjdXJyZW50UG9pbnQgPSBzdGFydE1vdmVQb2ludDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSBwYXJhbXMubGVuZ3RoO1xuICAgICAgICAgICAgY3VycmVudFBvaW50ID0gW3BhcmFtc1tsZW4gLSAyXSwgcGFyYW1zW2xlbiAtIDFdXTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIOWIt+aWsOWbvuW9ouWFg+e0oChTaGFwZSDmiJbogIUgR3JvdXApXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSkge1xuICAgIHZhciBjYW52YXMgPSBlbGVtZW50LmdldCgnY2FudmFzJyk7XG4gICAgLy8g5Y+q5pyJ5a2Y5Zyo5LqOIGNhbnZhcyDkuIrml7bnlJ/mlYhcbiAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VUeXBlID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgLy8g5LiA5pemIHJlbW92Ze+8jOWImeaXoOazleWcqCBlbGVtZW50IOS4iuaLv+WIsOWMheWbtOebklxuICAgICAgICAgICAgLy8gZGVzdHJveSDlkI7miYDmnInlsZ7mgKfpg73mi7/kuI3liLDvvIzmiYDku6XpnIDopoHmmoLlrZjkuIDkuItcbiAgICAgICAgICAgIC8vIOi/meaYr+S4gOautSBoYWNrIOeahOS7o+eggVxuICAgICAgICAgICAgZWxlbWVudC5fY2FjaGVDYW52YXNCQm94ID0gZWxlbWVudC5nZXQoJ2NhY2hlQ2FudmFzQkJveCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOmYsuatouWPjeWkjeWIt+aWsFxuICAgICAgICBpZiAoIWVsZW1lbnQuZ2V0KCdoYXNDaGFuZ2VkJykpIHtcbiAgICAgICAgICAgIC8vIOS9huaYr+Wni+e7iOimgeagh+iusOS4uiBoYXNDaGFuZ2Vk77yM5L6/5LqO5ZCO6Z2i6L+b6KGM5bGA6YOo5riy5p+TXG4gICAgICAgICAgICBlbGVtZW50LnNldCgnaGFzQ2hhbmdlZCcsIHRydWUpO1xuICAgICAgICAgICAgLy8g5pys5p2l5Y+q5pyJ5bGA6YOo5riy5p+T5qih5byP5LiL77yM5omN6ZyA6KaB6K6w5b2V5pu05paw55qE5YWD57Sg6Zif5YiXXG4gICAgICAgICAgICAvLyBpZiAoY2FudmFzLmdldCgnbG9jYWxSZWZyZXNoJykpIHtcbiAgICAgICAgICAgIC8vICAgY2FudmFzLnJlZnJlc2hFbGVtZW50KGVsZW1lbnQsIGNoYW5nZVR5cGUsIGNhbnZhcyk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAvLyDkvYblr7nkuo4gaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9nL2lzc3Vlcy80MjIg55qE5Zy65pmv77yM5YWo5bGA5riy5p+T55qE5qih5byP5LiL5Lmf6ZyA6KaB6K6w5b2V5pu05paw55qE5YWD57Sg6Zif5YiXXG4gICAgICAgICAgICAvLyDlpoLmnpzlvZPliY3lhYPntKDnmoTniLblhYPntKDlj5HnlJ/kuobmlLnlj5jvvIzlj6/ku6XkuI3mlL7lhaXpmJ/liJfvvIzov5nlj6Xor53lpKfmpoLog73lpJ/mj5DljYcgMTUlIOeahOWIneasoea4suafk+aAp+iDvVxuICAgICAgICAgICAgaWYgKCEoZWxlbWVudC5jZmcucGFyZW50ICYmIGVsZW1lbnQuY2ZnLnBhcmVudC5nZXQoJ2hhc0NoYW5nZWQnKSkpIHtcbiAgICAgICAgICAgICAgICBjYW52YXMucmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSwgY2FudmFzKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAgICAgICAgICAgICBjYW52YXMuZHJhdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWZyZXNoUmVnaW9uKGVsZW1lbnQpIHtcbiAgICB2YXIgcmVnaW9uO1xuICAgIGlmICghZWxlbWVudC5kZXN0cm95ZWQpIHtcbiAgICAgICAgdmFyIGNhY2hlQm94ID0gZWxlbWVudC5nZXQoJ2NhY2hlQ2FudmFzQkJveCcpO1xuICAgICAgICB2YXIgdmFsaWRDYWNoZSA9IGNhY2hlQm94ICYmICEhKGNhY2hlQm94LndpZHRoICYmIGNhY2hlQm94LmhlaWdodCk7XG4gICAgICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgIHZhciB2YWxpZEJCb3ggPSBiYm94ICYmICEhKGJib3gud2lkdGggJiYgYmJveC5oZWlnaHQpO1xuICAgICAgICAvLyDmmK/lkKbmmK/mnInmlYggYmJveCDliKTlrprvvIzkuIDkupsgTmFOIOaIluiAhSDlrr3pq5jkuLogMCDnmoTmg4XlhrXov4fmu6TmjolcbiAgICAgICAgaWYgKHZhbGlkQ2FjaGUgJiYgdmFsaWRCQm94KSB7XG4gICAgICAgICAgICByZWdpb24gPSBtZXJnZVJlZ2lvbihjYWNoZUJveCwgYmJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsaWRDYWNoZSkge1xuICAgICAgICAgICAgcmVnaW9uID0gY2FjaGVCb3g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsaWRCQm94KSB7XG4gICAgICAgICAgICByZWdpb24gPSBiYm94O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyDlm6DkuLrlhYPntKDlt7Lnu4/plIDmr4HmiYDku6Xml6Dms5Xojrflj5bliLDnvJPlrZjnmoTljIXlm7Tnm5JcbiAgICAgICAgcmVnaW9uID0gZWxlbWVudFsnX2NhY2hlQ2FudmFzQkJveCddO1xuICAgIH1cbiAgICByZXR1cm4gcmVnaW9uO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lcmdlZFJlZ2lvbihlbGVtZW50cykge1xuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgbWluWEFyciA9IFtdO1xuICAgIHZhciBtaW5ZQXJyID0gW107XG4gICAgdmFyIG1heFhBcnIgPSBbXTtcbiAgICB2YXIgbWF4WUFyciA9IFtdO1xuICAgIGVhY2goZWxlbWVudHMsIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICB2YXIgcmVnaW9uID0gZ2V0UmVmcmVzaFJlZ2lvbihlbCk7XG4gICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgIG1pblhBcnIucHVzaChyZWdpb24ubWluWCk7XG4gICAgICAgICAgICBtaW5ZQXJyLnB1c2gocmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgbWF4WEFyci5wdXNoKHJlZ2lvbi5tYXhYKTtcbiAgICAgICAgICAgIG1heFlBcnIucHVzaChyZWdpb24ubWF4WSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBtaW4obWluWEFyciksXG4gICAgICAgIG1pblk6IG1pbihtaW5ZQXJyKSxcbiAgICAgICAgbWF4WDogbWF4KG1heFhBcnIpLFxuICAgICAgICBtYXhZOiBtYXgobWF4WUFyciksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVZpZXcocmVnaW9uLCB2aWV3UmVnaW9uKSB7XG4gICAgaWYgKCFyZWdpb24gfHwgIXZpZXdSZWdpb24pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIOS4jeebuOS6pO+8jOWImeebtOaOpei/lOWbniBudWxsXG4gICAgaWYgKCFpbnRlcnNlY3RSZWN0KHJlZ2lvbiwgdmlld1JlZ2lvbikpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IE1hdGgubWF4KHJlZ2lvbi5taW5YLCB2aWV3UmVnaW9uLm1pblgpLFxuICAgICAgICBtaW5ZOiBNYXRoLm1heChyZWdpb24ubWluWSwgdmlld1JlZ2lvbi5taW5ZKSxcbiAgICAgICAgbWF4WDogTWF0aC5taW4ocmVnaW9uLm1heFgsIHZpZXdSZWdpb24ubWF4WCksXG4gICAgICAgIG1heFk6IE1hdGgubWluKHJlZ2lvbi5tYXhZLCB2aWV3UmVnaW9uLm1heFkpLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js ***! \****************************************************************************/ /*! exports provided: getShape */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShape\", function() { return getShape; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n\nfunction invertFromMatrix(v, matrix) {\n if (matrix) {\n var invertMatrix = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(matrix);\n return Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"multiplyVec2\"])(invertMatrix, v);\n }\n return v;\n}\nfunction getRefXY(element, x, y) {\n // @ts-ignore\n var totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n var _a = invertFromMatrix([x, y, 1], totalMatrix), refX = _a[0], refY = _a[1];\n return [refX, refY];\n }\n return [x, y];\n}\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element, x, y) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"isAllowCapture\"])(element) || element.cfg.isInView === false) {\n return false;\n }\n if (element.cfg.clipShape) {\n // 如果存在 clip\n var _a = getRefXY(element, x, y), refX = _a[0], refY = _a[1];\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n var bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n// 这个方法复写了 g-base 的 getShape\nfunction getShape(container, x, y) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n var shape = null;\n var children = container.getChildren();\n var count = children.length;\n for (var i = count - 1; i >= 0; i--) {\n var child = children[i];\n if (child.isGroup()) {\n shape = getShape(child, x, y);\n }\n else if (preTest(child, x, y)) {\n var curShape = child;\n var _a = getRefXY(child, x, y), refX = _a[0], refY = _a[1];\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}\n//# sourceMappingURL=hit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9oaXQuanM/MjE1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDcEU7QUFDQTtBQUNBLDJCQUEyQiwyREFBTTtBQUNqQyxlQUFlLGlFQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG1FQUFjO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaGl0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBbGxvd0NhcHR1cmUsIG11bHRpcGx5VmVjMiwgaW52ZXJ0IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmZ1bmN0aW9uIGludmVydEZyb21NYXRyaXgodiwgbWF0cml4KSB7XG4gICAgaWYgKG1hdHJpeCkge1xuICAgICAgICB2YXIgaW52ZXJ0TWF0cml4ID0gaW52ZXJ0KG1hdHJpeCk7XG4gICAgICAgIHJldHVybiBtdWx0aXBseVZlYzIoaW52ZXJ0TWF0cml4LCB2KTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59XG5mdW5jdGlvbiBnZXRSZWZYWShlbGVtZW50LCB4LCB5KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciB0b3RhbE1hdHJpeCA9IGVsZW1lbnQuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICBpZiAodG90YWxNYXRyaXgpIHtcbiAgICAgICAgdmFyIF9hID0gaW52ZXJ0RnJvbU1hdHJpeChbeCwgeSwgMV0sIHRvdGFsTWF0cml4KSwgcmVmWCA9IF9hWzBdLCByZWZZID0gX2FbMV07XG4gICAgICAgIHJldHVybiBbcmVmWCwgcmVmWV07XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG59XG4vLyDmi77lj5bliY3nmoTmo4DmtYvvvIzlj6rmnInpgJrov4fmo4DmtYvmiY3og73nu6fnu63mi77lj5ZcbmZ1bmN0aW9uIHByZVRlc3QoZWxlbWVudCwgeCwgeSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoZWxlbWVudC5pc0NhbnZhcyAmJiBlbGVtZW50LmlzQ2FudmFzKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIOS4jeWFgeiuuOiiq+aLvuWPlu+8jOWImei/lOWbniBudWxsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghaXNBbGxvd0NhcHR1cmUoZWxlbWVudCkgfHwgZWxlbWVudC5jZmcuaXNJblZpZXcgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuY2ZnLmNsaXBTaGFwZSkge1xuICAgICAgICAvLyDlpoLmnpzlrZjlnKggY2xpcFxuICAgICAgICB2YXIgX2EgPSBnZXRSZWZYWShlbGVtZW50LCB4LCB5KSwgcmVmWCA9IF9hWzBdLCByZWZZID0gX2FbMV07XG4gICAgICAgIGlmIChlbGVtZW50LmlzQ2xpcHBlZChyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmUg77yM6L+Z5Liq5Zyw5pa56LCD55So6L+H5LqO6aKR57mBXG4gICAgdmFyIGJib3ggPSBlbGVtZW50LmNmZy5jYWNoZUNhbnZhc0JCb3ggfHwgZWxlbWVudC5nZXRDYW52YXNCQm94KCk7XG4gICAgLy8g5aaC5p6c5rKh5pyJ57yT5a2YIGJib3jvvIzliJnor7TmmI7kuI3lj6/op4FcbiAgICAvLyDms6jph4rmjonnmoTov5nmrrXlj6/og73kvJrliqDpgJ/mi77lj5bvvIzkuIrpnaLnmoTor63lj6XmlLnlhpnmiJAgY29uc3QgYmJveCA9IGVsZW1lbnQuY2ZnLmNhY2hlQ2FudmFzQkJveDtcbiAgICAvLyDov5nml7blgJnnmoTmi77lj5blgYforr7lm77lvaIv5YiG57uE5Zyo5LiK5LiA5qyh57uY5Yi26YO95Zyo6KeG56qX5YaF77yM5L2G5piv5LiK6Z2i5bey57uP5Yik5a6a5LqGIGlzSW5WaWV3IOaJgOS7peaEj+S5ieS4jeWkp1xuICAgIC8vIOeOsOWcqOi/mOiwg+eUqCBlbGVtZW50LmdldENhbnZhc0JCb3goKTsg5LiA5Liq5b6I5aSn55qE5Y6f5Zug5piv5L6/5LqO5Y2V5YWD5rWL6K+VXG4gICAgLy8gaWYgKCFiYm94KSB7XG4gICAgLy8gICByZXR1cm4gZmFsc2U7XG4gICAgLy8gfVxuICAgIGlmICghKHggPj0gYmJveC5taW5YICYmIHggPD0gYmJveC5tYXhYICYmIHkgPj0gYmJveC5taW5ZICYmIHkgPD0gYmJveC5tYXhZKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8g6L+Z5Liq5pa55rOV5aSN5YaZ5LqGIGctYmFzZSDnmoQgZ2V0U2hhcGVcbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFwZShjb250YWluZXIsIHgsIHkpIHtcbiAgICAvLyDmsqHmnInpgJrov4fmo4DmtYvvvIzliJnov5Tlm54gbnVsbFxuICAgIGlmICghcHJlVGVzdChjb250YWluZXIsIHgsIHkpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgc2hhcGUgPSBudWxsO1xuICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXRDaGlsZHJlbigpO1xuICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gY291bnQgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgc2hhcGUgPSBnZXRTaGFwZShjaGlsZCwgeCwgeSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJlVGVzdChjaGlsZCwgeCwgeSkpIHtcbiAgICAgICAgICAgIHZhciBjdXJTaGFwZSA9IGNoaWxkO1xuICAgICAgICAgICAgdmFyIF9hID0gZ2V0UmVmWFkoY2hpbGQsIHgsIHkpLCByZWZYID0gX2FbMF0sIHJlZlkgPSBfYVsxXTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmIChjdXJTaGFwZS5pc0luU2hhcGUocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICBzaGFwZSA9IGNoaWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNoYXBlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGl0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js": /*!**********************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js ***! \**********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isPointInPath; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n\nfunction isPointInPath(shape, x, y) {\n var ctx = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"getOffScreenContext\"])();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n//# sourceMappingURL=point-in-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1wYXRoL3BvaW50LWluLXBhdGguanM/MGM1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDcEM7QUFDZixjQUFjLHdFQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXBhdGgvcG9pbnQtaW4tcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE9mZlNjcmVlbkNvbnRleHQgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQb2ludEluUGF0aChzaGFwZSwgeCwgeSkge1xuICAgIHZhciBjdHggPSBnZXRPZmZTY3JlZW5Db250ZXh0KCk7XG4gICAgc2hhcGUuY3JlYXRlUGF0aChjdHgpO1xuICAgIHJldHVybiBjdHguaXNQb2ludEluUGF0aCh4LCB5KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvaW50LWluLXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js ***! \****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isInPolygon; });\n/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1wYXRoL3BvbHlnb24uanM/NTg1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2x5Z29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOWIpOaWreeCueaYr+WQpuWcqOWkmui+ueW9ouWGhVxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbi8vIOWkmui+ueW9oueahOWwhOe6v+ajgOa1i++8jOWPguiAg++8mmh0dHBzOi8vYmxvZy5jc2RuLm5ldC9XaWxsaWFtU3VuMDEyMi9hcnRpY2xlL2RldGFpbHMvNzc5OTQ1MjZcbnZhciB0b2xlcmFuY2UgPSAxZS02O1xuLy8g5LiJ5oCB5Ye95pWw77yM5Yik5pat5Lik5LiqZG91Ymxl5ZyoZXBz57K+5bqm5LiL55qE5aSn5bCP5YWz57O7XG5mdW5jdGlvbiBkY21wKHgpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCB0b2xlcmFuY2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiB4IDwgMCA/IC0xIDogMTtcbn1cbi8vIOWIpOaWreeCuVHmmK/lkKblnKhwMeWSjHAy55qE57q/5q615LiKXG5mdW5jdGlvbiBvblNlZ21lbnQocDEsIHAyLCBxKSB7XG4gICAgaWYgKChxWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pID09PSAocDJbMF0gLSBwMVswXSkgKiAocVsxXSAtIHAxWzFdKSAmJlxuICAgICAgICBNYXRoLm1pbihwMVswXSwgcDJbMF0pIDw9IHFbMF0gJiZcbiAgICAgICAgcVswXSA8PSBNYXRoLm1heChwMVswXSwgcDJbMF0pICYmXG4gICAgICAgIE1hdGgubWluKHAxWzFdLCBwMlsxXSkgPD0gcVsxXSAmJlxuICAgICAgICBxWzFdIDw9IE1hdGgubWF4KHAxWzFdLCBwMlsxXSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIOWIpOaWreeCuVDlnKjlpJrovrnlvaLlhoUt5bCE57q/5rOVXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0luUG9seWdvbihwb2ludHMsIHgsIHkpIHtcbiAgICB2YXIgaXNIaXQgPSBmYWxzZTtcbiAgICB2YXIgbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgaWYgKG4gPD0gMikge1xuICAgICAgICAvLyBzdmcg5Lit54K55bCP5LqOIDMg5Liq5pe277yM5LiN5pi+56S677yM5Lmf5peg5rOV6KKr5ou+5Y+WXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgdmFyIHAxID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgcDIgPSBwb2ludHNbKGkgKyAxKSAlIG5dO1xuICAgICAgICBpZiAob25TZWdtZW50KHAxLCBwMiwgW3gsIHldKSkge1xuICAgICAgICAgICAgLy8g54K55Zyo5aSa6L655b2i5LiA5p2h6L655LiKXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyDliY3kuIDkuKrliKTmlq1taW4ocDFbMV0scDJbMV0pPFAueTw9bWF4KHAxWzFdLHAyWzFdKVxuICAgICAgICAvLyDlkI7kuIDkuKrliKTmlq3ooqvmtYvngrkg5ZyoIOWwhOe6v+S4jui+ueS6pOeCuSDnmoTlt6bovrlcbiAgICAgICAgaWYgKGRjbXAocDFbMV0gLSB5KSA+IDAgIT09IGRjbXAocDJbMV0gLSB5KSA+IDAgJiZcbiAgICAgICAgICAgIGRjbXAoeCAtICgoeSAtIHAxWzFdKSAqIChwMVswXSAtIHAyWzBdKSkgLyAocDFbMV0gLSBwMlsxXSkgLSBwMVswXSkgPCAwKSB7XG4gICAgICAgICAgICBpc0hpdCA9ICFpc0hpdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNIaXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return arc; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\nfunction arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvYXJjLmpzP2UyN2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3BCO0FBQ2YsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxzREFBUTtBQUNuQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL2FyYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSAnLi4vdXRpbCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcmMoY3gsIGN5LCByLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgbGluZVdpZHRoLCB4LCB5KSB7XG4gICAgdmFyIGFuZ2xlID0gKE1hdGguYXRhbjIoeSAtIGN5LCB4IC0gY3gpICsgTWF0aC5QSSAqIDIpICUgKE1hdGguUEkgKiAyKTsgLy8g6L2s5o2i5YiwIDAgLSAyICogTWF0aC5QSSDkuYvpl7RcbiAgICBpZiAoYW5nbGUgPCBzdGFydEFuZ2xlIHx8IGFuZ2xlID4gZW5kQW5nbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgIHg6IGN4ICsgciAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogY3kgKyByICogTWF0aC5zaW4oYW5nbGUpLFxuICAgIH07XG4gICAgcmV0dXJuIGRpc3RhbmNlKHBvaW50LngsIHBvaW50LnksIHgsIHkpIDw9IGxpbmVXaWR0aCAvIDI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inLine; });\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n\nfunction inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"].pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvbGluZS5qcz8zZDA5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFnRDtBQUNqQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlEQUFRO0FBQ25CO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5MaW5lKHgxLCB5MSwgeDIsIHkyLCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgbWluWCA9IE1hdGgubWluKHgxLCB4Mik7XG4gICAgdmFyIG1heFggPSBNYXRoLm1heCh4MSwgeDIpO1xuICAgIHZhciBtaW5ZID0gTWF0aC5taW4oeTEsIHkyKTtcbiAgICB2YXIgbWF4WSA9IE1hdGgubWF4KHkxLCB5Mik7XG4gICAgdmFyIGhhbGZXaWR0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgLy8g5Zug5Li655uu5YmN55qE5pa55qGI5piv6K6h566X54K55Yiw55u057q/55qE6Led56a777yM6ICM5pyJ5Y+v6IO95Lya5Zyo5bu26ZW/57q/5LiK77yM5omA5Lul6KaB5YWI5Yik5pat5piv5ZCm5Zyo5YyF5Zu055uS5YaFXG4gICAgLy8g6L+Z56eN5pa55qGI5Lya5Zyo5rC05bmz5oiW6ICF56uW55u055qE5oOF5Ya15LiL6L2957q/55qE5bu26ZW/57q/5LiK5pyJ5Y2KIGxpbmVXaWR0aCDnmoTor6/lt65cbiAgICBpZiAoISh4ID49IG1pblggLSBoYWxmV2lkdGggJiYgeCA8PSBtYXhYICsgaGFsZldpZHRoICYmIHkgPj0gbWluWSAtIGhhbGZXaWR0aCAmJiB5IDw9IG1heFkgKyBoYWxmV2lkdGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8g5Zug5Li65bey57uP6K6h566X5LqG5YyF5Zu055uS77yM5omA5Lul5LuF6ZyA6KaB6K6h566X5Yiw55u057q/55qE6Led56a75Y2z5Y+v77yM5Y+v5Lul5pi+6JGX5o+Q5Y2H5oCn6IO9XG4gICAgcmV0dXJuIExpbmVVdGlsLnBvaW50VG9MaW5lKHgxLCB5MSwgeDIsIHkyLCB4LCB5KSA8PSBsaW5lV2lkdGggLyAyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js": /*!*******************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js ***! \*******************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inPolyline; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n\nfunction inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUuanM/YTJiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDYjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5MaW5lIGZyb20gJy4vbGluZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpblBvbHlsaW5lKHBvaW50cywgbGluZVdpZHRoLCB4LCB5LCBpc0Nsb3NlKSB7XG4gICAgdmFyIGNvdW50ID0gcG9pbnRzLmxlbmd0aDtcbiAgICBpZiAoY291bnQgPCAyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgeDEgPSBwb2ludHNbaV1bMF07XG4gICAgICAgIHZhciB5MSA9IHBvaW50c1tpXVsxXTtcbiAgICAgICAgdmFyIHgyID0gcG9pbnRzW2kgKyAxXVswXTtcbiAgICAgICAgdmFyIHkyID0gcG9pbnRzW2kgKyAxXVsxXTtcbiAgICAgICAgaWYgKGluTGluZSh4MSwgeTEsIHgyLCB5MiwgbGluZVdpZHRoLCB4LCB5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5aaC5p6c5bCB6Zet77yM5YiZ6K6h566X6LW35aeL54K55ZKM57uT5p2f54K555qE6L65XG4gICAgaWYgKGlzQ2xvc2UpIHtcbiAgICAgICAgdmFyIGZpcnN0ID0gcG9pbnRzWzBdO1xuICAgICAgICB2YXIgbGFzdCA9IHBvaW50c1tjb3VudCAtIDFdO1xuICAgICAgICBpZiAoaW5MaW5lKGZpcnN0WzBdLCBmaXJzdFsxXSwgbGFzdFswXSwgbGFzdFsxXSwgbGluZVdpZHRoLCB4LCB5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js": /*!**********************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js ***! \**********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rectWithRadius; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arc */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n\nfunction rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n return (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y));\n}\n//# sourceMappingURL=rect-radius.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcmVjdC1yYWRpdXMuanM/Y2IwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QjtBQUNGO0FBQ1g7QUFDZjtBQUNBLFlBQVkscURBQU07QUFDbEIsUUFBUSxxREFBTTtBQUNkLFFBQVEscURBQU07QUFDZCxRQUFRLHFEQUFNO0FBQ2QsUUFBUSxvREFBSztBQUNiLFFBQVEsb0RBQUs7QUFDYixRQUFRLG9EQUFLO0FBQ2IsUUFBUSxvREFBSztBQUNiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcmVjdC1yYWRpdXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5MaW5lIGZyb20gJy4vbGluZSc7XG5pbXBvcnQgaW5BcmMgZnJvbSAnLi9hcmMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFdpdGhSYWRpdXMobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgcmFkaXVzLCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICByZXR1cm4gKGluTGluZShtaW5YICsgcmFkaXVzLCBtaW5ZLCBtaW5YICsgd2lkdGggLSByYWRpdXMsIG1pblksIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5MaW5lKG1pblggKyB3aWR0aCwgbWluWSArIHJhZGl1cywgbWluWCArIHdpZHRoLCBtaW5ZICsgaGVpZ2h0IC0gcmFkaXVzLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluTGluZShtaW5YICsgd2lkdGggLSByYWRpdXMsIG1pblkgKyBoZWlnaHQsIG1pblggKyByYWRpdXMsIG1pblkgKyBoZWlnaHQsIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5MaW5lKG1pblgsIG1pblkgKyBoZWlnaHQgLSByYWRpdXMsIG1pblgsIG1pblkgKyByYWRpdXMsIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5BcmMobWluWCArIHdpZHRoIC0gcmFkaXVzLCBtaW5ZICsgcmFkaXVzLCByYWRpdXMsIDEuNSAqIE1hdGguUEksIDIgKiBNYXRoLlBJLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluQXJjKG1pblggKyB3aWR0aCAtIHJhZGl1cywgbWluWSArIGhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLCAwLjUgKiBNYXRoLlBJLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluQXJjKG1pblggKyByYWRpdXMsIG1pblkgKyBoZWlnaHQgLSByYWRpdXMsIHJhZGl1cywgMC41ICogTWF0aC5QSSwgTWF0aC5QSSwgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkFyYyhtaW5YICsgcmFkaXVzLCBtaW5ZICsgcmFkaXVzLCByYWRpdXMsIE1hdGguUEksIDEuNSAqIE1hdGguUEksIGxpbmVXaWR0aCwgeCwgeSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC1yYWRpdXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return inRect; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\nfunction inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)); // 左边\n}\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcmVjdC5qcz82ZTk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFnQztBQUNqQjtBQUNmO0FBQ0E7QUFDQSxZQUFZLG1EQUFLO0FBQ2pCLFFBQVEsbURBQUs7QUFDYixRQUFRLG1EQUFLO0FBQ2IsUUFBUSxtREFBSywrREFBK0Q7QUFDNUU7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9yZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5Cb3ggfSBmcm9tICcuLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluUmVjdChtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAvLyDlsIblm5vkuKrovrnnnIvlgZrnn6nlvaLmnaXmo4DmtYvvvIzmr5TovrnnmoTmo4DmtYvnrpfms5XopoHlv6tcbiAgICByZXR1cm4gKGluQm94KG1pblggLSBoYWxmV2lkdGgsIG1pblkgLSBoYWxmV2lkdGgsIHdpZHRoLCBsaW5lV2lkdGgsIHgsIHkpIHx8IC8vIOS4iui+uVxuICAgICAgICBpbkJveChtaW5YICsgd2lkdGggLSBoYWxmV2lkdGgsIG1pblkgLSBoYWxmV2lkdGgsIGxpbmVXaWR0aCwgaGVpZ2h0LCB4LCB5KSB8fCAvLyDlj7PovrlcbiAgICAgICAgaW5Cb3gobWluWCArIGhhbGZXaWR0aCwgbWluWSArIGhlaWdodCAtIGhhbGZXaWR0aCwgd2lkdGgsIGxpbmVXaWR0aCwgeCwgeSkgfHwgLy8g5LiL6L65XG4gICAgICAgIGluQm94KG1pblggLSBoYWxmV2lkdGgsIG1pblkgKyBoYWxmV2lkdGgsIGxpbmVXaWR0aCwgaGVpZ2h0LCB4LCB5KSk7IC8vIOW3pui+uVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js ***! \******************************************************************************/ /*! exports provided: parseLineGradient, parseRadialGradient, parsePattern, parseStyle, parseRadius */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLineGradient\", function() { return parseLineGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadialGradient\", function() { return parseRadialGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePattern\", function() { return parsePattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseStyle\", function() { return parseStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction addStop(steps, gradient) {\n var arr = steps.match(regexColorStop);\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n var itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseLineGradient(context, element, gradientStr) {\n var arr = regexLG.exec(gradientStr);\n var angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n var steps = arr[2];\n var box = element.getBBox();\n var start;\n var end;\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n }\n else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n }\n else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n }\n else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n var gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseRadialGradient(context, element, gradientStr) {\n var arr = regexRG.exec(gradientStr);\n var fx = parseFloat(arr[1]);\n var fy = parseFloat(arr[2]);\n var fr = parseFloat(arr[3]);\n var steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n var colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n var box = element.getBBox();\n var width = box.maxX - box.minX;\n var height = box.maxY - box.minY;\n var r = Math.sqrt(width * width + height * height) / 2;\n var gradient = context.createRadialGradient(box.minX + width * fx, box.minY + height * fy, 0, box.minX + width / 2, box.minY + height / 2, fr * r);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nfunction parsePattern(context, element, patternStr) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n var pattern;\n var img;\n var arr = regexPR.exec(patternStr);\n var repeat = arr[1];\n var source = arr[2];\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return pattern;\n}\nfunction parseStyle(context, element, color) {\n var bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9wYXJzZS5qcz8wNDc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0RBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxJQUFJO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEMsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLElBQUk7QUFDakI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQyxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9wYXJzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nLCBlYWNoLCBpc0FycmF5IH0gZnJvbSAnLi91dGlsJztcbnZhciByZWdleExHID0gL15sXFxzKlxcKFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleFJHID0gL15yXFxzKlxcKFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleFBSID0gL15wXFxzKlxcKFxccyooW2F4eW5dKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4Q29sb3JTdG9wID0gL1tcXGQuXSs6KCNbXlxcc10rfFteXFwpXStcXCkpL2dpO1xuZnVuY3Rpb24gYWRkU3RvcChzdGVwcywgZ3JhZGllbnQpIHtcbiAgICB2YXIgYXJyID0gc3RlcHMubWF0Y2gocmVnZXhDb2xvclN0b3ApO1xuICAgIGVhY2goYXJyLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB2YXIgaXRlbUFyciA9IGl0ZW0uc3BsaXQoJzonKTtcbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKGl0ZW1BcnJbMF0sIGl0ZW1BcnJbMV0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiDlsIbovrnlkozloavlhYXorr7nva7nmoTpopzoibLovazmjaLmiJDnur/mgKfmuJDlj5jlr7nosaFcbiAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNhbnZhcyDkuIrkuIvmlodcbiAqIEBwYXJhbSB7SUVsZW1lbnR9ICAgICAgICAgICAgICAgICBlbGVtZW50ICDlm77lvaLlhYPntKBcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICBncmFkaWVudFN0ciAgIOminOiJslxuICogQHJldHVybnMge2FueX0g5riQ5Y+Y5a+56LGhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmVHcmFkaWVudChjb250ZXh0LCBlbGVtZW50LCBncmFkaWVudFN0cikge1xuICAgIHZhciBhcnIgPSByZWdleExHLmV4ZWMoZ3JhZGllbnRTdHIpO1xuICAgIHZhciBhbmdsZSA9IChwYXJzZUZsb2F0KGFyclsxXSkgJSAzNjApICogKE1hdGguUEkgLyAxODApO1xuICAgIHZhciBzdGVwcyA9IGFyclsyXTtcbiAgICB2YXIgYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIHN0YXJ0O1xuICAgIHZhciBlbmQ7XG4gICAgaWYgKGFuZ2xlID49IDAgJiYgYW5nbGUgPCAoMSAvIDIpICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgxIC8gMikgKiBNYXRoLlBJIDw9IGFuZ2xlICYmIGFuZ2xlIDwgTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCAoMyAvIDIpICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciB0YW5UaGV0YSA9IE1hdGgudGFuKGFuZ2xlKTtcbiAgICB2YXIgdGFuVGhldGEyID0gdGFuVGhldGEgKiB0YW5UaGV0YTtcbiAgICB2YXIgeCA9IChlbmQueCAtIHN0YXJ0LnggKyB0YW5UaGV0YSAqIChlbmQueSAtIHN0YXJ0LnkpKSAvICh0YW5UaGV0YTIgKyAxKSArIHN0YXJ0Lng7XG4gICAgdmFyIHkgPSAodGFuVGhldGEgKiAoZW5kLnggLSBzdGFydC54ICsgdGFuVGhldGEgKiAoZW5kLnkgLSBzdGFydC55KSkpIC8gKHRhblRoZXRhMiArIDEpICsgc3RhcnQueTtcbiAgICB2YXIgZ3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0LngsIHN0YXJ0LnksIHgsIHkpO1xuICAgIGFkZFN0b3Aoc3RlcHMsIGdyYWRpZW50KTtcbiAgICByZXR1cm4gZ3JhZGllbnQ7XG59XG4vKipcbiAqIOWwhui+ueWSjOWhq+WFheiuvue9rueahOminOiJsui9rOaNouaIkOWchuW9oua4kOWPmOWvueixoVxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY2FudmFzIOS4iuS4i+aWh1xuICogQHBhcmFtIHtJRWxlbWVudH0gICAgICAgICAgICAgICAgIGVsZW1lbnQgIOWbvuW9ouWFg+e0oFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgIGdyYWRpZW50U3RyICAg6aKc6ImyXG4gKiBAcmV0dXJucyB7YW55fSDmuJDlj5jlr7nosaFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkaWFsR3JhZGllbnQoY29udGV4dCwgZWxlbWVudCwgZ3JhZGllbnRTdHIpIHtcbiAgICB2YXIgYXJyID0gcmVnZXhSRy5leGVjKGdyYWRpZW50U3RyKTtcbiAgICB2YXIgZnggPSBwYXJzZUZsb2F0KGFyclsxXSk7XG4gICAgdmFyIGZ5ID0gcGFyc2VGbG9hdChhcnJbMl0pO1xuICAgIHZhciBmciA9IHBhcnNlRmxvYXQoYXJyWzNdKTtcbiAgICB2YXIgc3RlcHMgPSBhcnJbNF07XG4gICAgLy8g546v5Y2K5b6E5Li6MOaXtu+8jOm7mOiupOaXoOa4kOWPmO+8jOWPlua4kOWPmOW6j+WIl+eahOacgOWQjuS4gOS4quminOiJslxuICAgIGlmIChmciA9PT0gMCkge1xuICAgICAgICB2YXIgY29sb3JzID0gc3RlcHMubWF0Y2gocmVnZXhDb2xvclN0b3ApO1xuICAgICAgICByZXR1cm4gY29sb3JzW2NvbG9ycy5sZW5ndGggLSAxXS5zcGxpdCgnOicpWzFdO1xuICAgIH1cbiAgICB2YXIgYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIHdpZHRoID0gYm94Lm1heFggLSBib3gubWluWDtcbiAgICB2YXIgaGVpZ2h0ID0gYm94Lm1heFkgLSBib3gubWluWTtcbiAgICB2YXIgciA9IE1hdGguc3FydCh3aWR0aCAqIHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0KSAvIDI7XG4gICAgdmFyIGdyYWRpZW50ID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChib3gubWluWCArIHdpZHRoICogZngsIGJveC5taW5ZICsgaGVpZ2h0ICogZnksIDAsIGJveC5taW5YICsgd2lkdGggLyAyLCBib3gubWluWSArIGhlaWdodCAvIDIsIGZyICogcik7XG4gICAgYWRkU3RvcChzdGVwcywgZ3JhZGllbnQpO1xuICAgIHJldHVybiBncmFkaWVudDtcbn1cbi8qKlxuICog6L655ZKM5aGr5YWF6K6+572u55qE6aKc6Imy6L2s5o2i5oiQIHBhdHRlcm5cbiAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNhbnZhcyDkuIrkuIvmlodcbiAqIEBwYXJhbSB7SUVsZW1lbnR9ICAgICAgICAgICAgICAgICBlbGVtZW50ICDlm77lvaLlhYPntKBcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICBwYXR0ZXJuU3RyICAg55Sf5oiQIHBhdHRlcm4g55qE5a2X56ym5LiyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdHRlcm4oY29udGV4dCwgZWxlbWVudCwgcGF0dGVyblN0cikge1xuICAgIC8vIOWcqOi9rOaNoui/h+eoi+S4rei/m+ihjOS6hue8k+WtmFxuICAgIGlmIChlbGVtZW50LmdldCgncGF0dGVyblNvdXJjZScpICYmIGVsZW1lbnQuZ2V0KCdwYXR0ZXJuU291cmNlJykgPT09IHBhdHRlcm5TdHIpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdwYXR0ZXJuJyk7XG4gICAgfVxuICAgIHZhciBwYXR0ZXJuO1xuICAgIHZhciBpbWc7XG4gICAgdmFyIGFyciA9IHJlZ2V4UFIuZXhlYyhwYXR0ZXJuU3RyKTtcbiAgICB2YXIgcmVwZWF0ID0gYXJyWzFdO1xuICAgIHZhciBzb3VyY2UgPSBhcnJbMl07XG4gICAgLy8gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gcGF0dGVybiBsb2Fkc1xuICAgIGZ1bmN0aW9uIG9ubG9hZCgpIHtcbiAgICAgICAgLy8gQ3JlYXRlIHBhdHRlcm5cbiAgICAgICAgcGF0dGVybiA9IGNvbnRleHQuY3JlYXRlUGF0dGVybihpbWcsIHJlcGVhdCk7XG4gICAgICAgIGVsZW1lbnQuc2V0KCdwYXR0ZXJuJywgcGF0dGVybik7IC8vIGJlIGEgY2FjaGVcbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhdHRlcm5Tb3VyY2UnLCBwYXR0ZXJuU3RyKTtcbiAgICB9XG4gICAgc3dpdGNoIChyZXBlYXQpIHtcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgICAgICByZXBlYXQgPSAncmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgIHJlcGVhdCA9ICdyZXBlYXQteCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICByZXBlYXQgPSAncmVwZWF0LXknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgICAgcmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgIH1cbiAgICBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAvLyBJZiBzb3VyY2UgVVJMIGlzIG5vdCBhIGRhdGEgVVJMXG4gICAgaWYgKCFzb3VyY2UubWF0Y2goL15kYXRhOi9pKSkge1xuICAgICAgICAvLyBTZXQgY3Jvc3NPcmlnaW4gZm9yIHRoaXMgaW1hZ2VcbiAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgfVxuICAgIGltZy5zcmMgPSBzb3VyY2U7XG4gICAgaWYgKGltZy5jb21wbGV0ZSkge1xuICAgICAgICBvbmxvYWQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGltZy5vbmxvYWQgPSBvbmxvYWQ7XG4gICAgICAgIC8vIEZpeCBvbmxvYWQoKSBidWcgaW4gSUU5XG4gICAgICAgIGltZy5zcmMgPSBpbWcuc3JjO1xuICAgIH1cbiAgICByZXR1cm4gcGF0dGVybjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0eWxlKGNvbnRleHQsIGVsZW1lbnQsIGNvbG9yKSB7XG4gICAgdmFyIGJib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICBpZiAoaXNOYU4oYmJveC54KSB8fCBpc05hTihiYm94LnkpIHx8IGlzTmFOKGJib3gud2lkdGgpIHx8IGlzTmFOKGJib3guaGVpZ2h0KSkge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhjb2xvcikpIHtcbiAgICAgICAgaWYgKGNvbG9yWzFdID09PSAnKCcgfHwgY29sb3JbMl0gPT09ICcoJykge1xuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAnbCcpIHtcbiAgICAgICAgICAgICAgICAvLyByZWdleExHLnRlc3QoY29sb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlTGluZUdyYWRpZW50KGNvbnRleHQsIGVsZW1lbnQsIGNvbG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvclswXSA9PT0gJ3InKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVnZXhSRy50ZXN0KGNvbG9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVJhZGlhbEdyYWRpZW50KGNvbnRleHQsIGVsZW1lbnQsIGNvbG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvclswXSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVnZXhQUi50ZXN0KGNvbG9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBhdHRlcm4oY29udGV4dCwgZWxlbWVudCwgY29sb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgaWYgKGNvbG9yIGluc3RhbmNlb2YgQ2FudmFzUGF0dGVybikge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkaXVzKHJhZGl1cykge1xuICAgIHZhciByMSA9IDA7XG4gICAgdmFyIHIyID0gMDtcbiAgICB2YXIgcjMgPSAwO1xuICAgIHZhciByNCA9IDA7XG4gICAgaWYgKGlzQXJyYXkocmFkaXVzKSkge1xuICAgICAgICBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcjEgPSByMyA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgICAgICByNCA9IHJhZGl1c1szXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXM7XG4gICAgfVxuICAgIHJldHVybiBbcjEsIHIyLCByMywgcjRdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _in_stroke_line__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./in-stroke/line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./in-stroke/arc */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__[\"ext\"].transform;\nfunction hasArc(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint, box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"inBox\"])(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = Object(_in_stroke_line__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n var qDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Quad\"].pointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], x, y);\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n var cDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Cubic\"].pointDistance(prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], x, y, length);\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n var arcParams = segment.arcParams;\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation;\n var p = [x, y, 1];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var m = transform(null, [\n ['t', -cx, -cy],\n ['r', -xRotation],\n ['s', 1 / scaleX, 1 / scaleY],\n ]);\n gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__[\"transformMat3\"](p, p, m);\n isHit = Object(_in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n var count = path.length;\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n }\n else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n }\n else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines,\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({ hasArc: hasArc, extractPolygons: extractPolygons, isPointInStroke: isPointInStroke }, _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"PathUtil\"]));\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9wYXRoLmpzP2ZkNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ3dDO0FBQ1E7QUFDRTtBQUNWO0FBQ0Q7QUFDUjtBQUNPO0FBQ0Y7QUFDcEMsZ0JBQWdCLHFEQUFHO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1EQUFLO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwrREFBTTtBQUM5QjtBQUNBO0FBQ0EsZ0NBQWdDLGlEQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxrREFBUztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDREQUFrQjtBQUNsQyx3QkFBd0IsOERBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxxSEFBUSxFQUFFLHFGQUFxRixFQUFFLHFEQUFRLENBQUMsRUFBQztBQUMxSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHBhdGgg55qE5LiA5Lqb5bel5YW3XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgUGF0aFV0aWwgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgUXVhZCBhcyBRdWFkVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBDdWJpYyBhcyBDdWJpY1V0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0ICogYXMgdmVjMyBmcm9tICdnbC1tYXRyaXgvdmVjMyc7XG5pbXBvcnQgeyBpbkJveCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgaW5MaW5lIGZyb20gJy4vaW4tc3Ryb2tlL2xpbmUnO1xuaW1wb3J0IGluQXJjIGZyb20gJy4vaW4tc3Ryb2tlL2FyYyc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbmZ1bmN0aW9uIGhhc0FyYyhwYXRoKSB7XG4gICAgdmFyIGhhc0FyYyA9IGZhbHNlO1xuICAgIHZhciBjb3VudCA9IHBhdGgubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcGFyYW1zID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIGNtZCA9IHBhcmFtc1swXTtcbiAgICAgICAgaWYgKGNtZCA9PT0gJ0MnIHx8IGNtZCA9PT0gJ0EnIHx8IGNtZCA9PT0gJ1EnKSB7XG4gICAgICAgICAgICBoYXNBcmMgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0FyYztcbn1cbmZ1bmN0aW9uIGlzUG9pbnRJblN0cm9rZShzZWdtZW50cywgbGluZVdpZHRoLCB4LCB5LCBsZW5ndGgpIHtcbiAgICB2YXIgaXNIaXQgPSBmYWxzZTtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgICAgIHZhciBjdXJyZW50UG9pbnQgPSBzZWdtZW50LmN1cnJlbnRQb2ludCwgcGFyYW1zID0gc2VnbWVudC5wYXJhbXMsIHByZVBvaW50ID0gc2VnbWVudC5wcmVQb2ludCwgYm94ID0gc2VnbWVudC5ib3g7XG4gICAgICAgIC8vIOWmguaenOWcqOWJjemdouW3sue7j+eUn+aIkOi/h+WMheWbtOebku+8jOebtOaOpeaMieeFp+WMheWbtOebkuiuoeeul1xuICAgICAgICBpZiAoYm94ICYmICFpbkJveChib3gueCAtIGhhbGZXaWR0aCwgYm94LnkgLSBoYWxmV2lkdGgsIGJveC53aWR0aCArIGxpbmVXaWR0aCwgYm94LmhlaWdodCArIGxpbmVXaWR0aCwgeCwgeSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoc2VnbWVudC5jb21tYW5kKSB7XG4gICAgICAgICAgICAvLyBMIOWSjCBaIOmDveaYr+ebtOe6v++8jCBNIOS4jei/m+ihjOaLvuWPllxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICBpc0hpdCA9IGluTGluZShwcmVQb2ludFswXSwgcHJlUG9pbnRbMV0sIGN1cnJlbnRQb2ludFswXSwgY3VycmVudFBvaW50WzFdLCBsaW5lV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgdmFyIHFEaXN0YW5jZSA9IFF1YWRVdGlsLnBvaW50RGlzdGFuY2UocHJlUG9pbnRbMF0sIHByZVBvaW50WzFdLCBwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHgsIHkpO1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gcURpc3RhbmNlIDw9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICB2YXIgY0Rpc3RhbmNlID0gQ3ViaWNVdGlsLnBvaW50RGlzdGFuY2UocHJlUG9pbnRbMF0sIC8vIOS4iuS4gOautee7k+adn+S9jee9riwg5Y2zIEMg55qE6LW35aeL54K5XG4gICAgICAgICAgICAgICAgcHJlUG9pbnRbMV0sIHBhcmFtc1sxXSwgLy8gJ0MnIOeahOWPguaVsO+8jDHjgIEyIOS4uuesrOS4gOS4quaOp+WItueCue+8jDPjgIE0IOS4uuesrOS6jOS4quaOp+WItueCue+8jDXjgIE2IOS4uue7k+adn+eCuVxuICAgICAgICAgICAgICAgIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHBhcmFtc1s1XSwgcGFyYW1zWzZdLCB4LCB5LCBsZW5ndGgpO1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gY0Rpc3RhbmNlIDw9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfngrnliLDmpK3lnIblnIblvKfnmoTot53nprvvvIzmmoLml7bkvb/nlKjov5HkvLznrpfms5XvvIzlkI7pnaLlj6/ku6XmlLnmiJDliIflibLms5XmsYLmnIDov5Hot53nprtcbiAgICAgICAgICAgICAgICB2YXIgYXJjUGFyYW1zID0gc2VnbWVudC5hcmNQYXJhbXM7XG4gICAgICAgICAgICAgICAgdmFyIGN4ID0gYXJjUGFyYW1zLmN4LCBjeSA9IGFyY1BhcmFtcy5jeSwgcnggPSBhcmNQYXJhbXMucngsIHJ5ID0gYXJjUGFyYW1zLnJ5LCBzdGFydEFuZ2xlID0gYXJjUGFyYW1zLnN0YXJ0QW5nbGUsIGVuZEFuZ2xlID0gYXJjUGFyYW1zLmVuZEFuZ2xlLCB4Um90YXRpb24gPSBhcmNQYXJhbXMueFJvdGF0aW9uO1xuICAgICAgICAgICAgICAgIHZhciBwID0gW3gsIHksIDFdO1xuICAgICAgICAgICAgICAgIHZhciByID0gcnggPiByeSA/IHJ4IDogcnk7XG4gICAgICAgICAgICAgICAgdmFyIHNjYWxlWCA9IHJ4ID4gcnkgPyAxIDogcnggLyByeTtcbiAgICAgICAgICAgICAgICB2YXIgc2NhbGVZID0gcnggPiByeSA/IHJ5IC8gcnggOiAxO1xuICAgICAgICAgICAgICAgIHZhciBtID0gdHJhbnNmb3JtKG51bGwsIFtcbiAgICAgICAgICAgICAgICAgICAgWyd0JywgLWN4LCAtY3ldLFxuICAgICAgICAgICAgICAgICAgICBbJ3InLCAteFJvdGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgWydzJywgMSAvIHNjYWxlWCwgMSAvIHNjYWxlWV0sXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKHAsIHAsIG0pO1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gaW5BcmMoMCwgMCwgciwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGxpbmVXaWR0aCwgcFswXSwgcFsxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0hpdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzSGl0O1xufVxuLyoqXG4gKiDmj5Dlj5blh7rlhoXpg6jnmoTpl63lkIjlpJrovrnlvaLlkozpnZ7pl63lkIjnmoTlpJrovrnlvaLvvIzlgYforr4gcGF0aCDkuI3lrZjlnKjlnIblvKdcbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGgg6Lev5b6EXG4gKiBAcmV0dXJucyB7QXJyYXl9IOeCueeahOmbhuWQiFxuICovXG5mdW5jdGlvbiBleHRyYWN0UG9seWdvbnMocGF0aCkge1xuICAgIHZhciBjb3VudCA9IHBhdGgubGVuZ3RoO1xuICAgIHZhciBwb2x5Z29ucyA9IFtdO1xuICAgIHZhciBwb2x5bGluZXMgPSBbXTtcbiAgICB2YXIgcG9pbnRzID0gW107IC8vIOmYsuatouesrOS4gOS4quWRveS7pOS4jeaYryAnTSdcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IHBhdGhbaV07XG4gICAgICAgIHZhciBjbWQgPSBwYXJhbXNbMF07XG4gICAgICAgIGlmIChjbWQgPT09ICdNJykge1xuICAgICAgICAgICAgLy8g6YGH5YiwICdNJyDliKTlrprmmK/lkKbmmK/mlrDmlbDnu4TvvIzmlrDmlbDnu4TkuK3msqHmnInngrlcbiAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5Zyo54K577yM5YiZ6K+05piO5rKh5pyJ6YGH5YiwICdaJ++8jOW8gOWni+S6huS4gOS4quaWsOeahOWkmui+ueW9olxuICAgICAgICAgICAgICAgIHBvbHlsaW5lcy5wdXNoKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgcG9pbnRzID0gW107IC8vIOWIm+W7uuaWsOeahOeCuVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3BhcmFtc1sxXSwgcGFyYW1zWzJdXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY21kID09PSAnWicpIHtcbiAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8g5a2Y5Zyo54K5XG4gICAgICAgICAgICAgICAgcG9seWdvbnMucHVzaChwb2ludHMpO1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdOyAvLyDlvIDlp4vmlrDnmoTngrnpm4blkIhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWmguaenOS4jeWtmOWcqOeCue+8jOWQjOaXtiAnWifvvIzliJnor7TmmI7mmK/plJnor6/vvIzkuI3lpITnkIZcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtwYXJhbXNbMV0sIHBhcmFtc1syXV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIOivtOaYjiBwb2ludHMg5pyq5pS+5YWlIHBvbHlnb25zIOaIluiAhSBwb2x5bGluZVxuICAgIC8vIOS7heW9k+WPquacieS4gOS4qiBN77yM5rKh5pyJIFog5pe25Lya5Y+R55Sf6L+Z56eN5oOF5Ya1XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBvbHlsaW5lcy5wdXNoKHBvaW50cyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHBvbHlnb25zOiBwb2x5Z29ucyxcbiAgICAgICAgcG9seWxpbmVzOiBwb2x5bGluZXMsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IF9fYXNzaWduKHsgaGFzQXJjOiBoYXNBcmMsIGV4dHJhY3RQb2x5Z29uczogZXh0cmFjdFBvbHlnb25zLCBpc1BvaW50SW5TdHJva2U6IGlzUG9pbnRJblN0cm9rZSB9LCBQYXRoVXRpbCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js ***! \*****************************************************************************/ /*! exports provided: getPixelRatio, distance, inBox, intersectRect, mergeRegion, isSamePoint, isNil, isString, isFunction, isArray, each, toRadian, mod, isNumberEqual, requestAnimationFrame, clearAnimationFrame */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPixelRatio\", function() { return getPixelRatio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inBox\", function() { return inBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRect\", function() { return intersectRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeRegion\", function() { return mergeRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSamePoint\", function() { return isSamePoint; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"requestAnimationFrame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clearAnimationFrame\"]; });\n\nfunction getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nfunction inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nfunction intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n// 合并两个区域\nfunction mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC91dGlsLmpzP2FhMDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ21KO0FBQ25KIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQaXhlbFJhdGlvKCkge1xuICAgIHJldHVybiB3aW5kb3cgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDE7XG59XG4vKipcbiAqIOS4pOeCueS5i+mXtOeahOi3neemu1xuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHZhciBkeCA9IHgxIC0geDI7XG4gICAgdmFyIGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cbi8qKlxuICog5piv5ZCm5Zyo5YyF5Zu055uS5YaFXG4gKiBAcGFyYW0ge251bWJlcn0gbWluWCAgIOWMheWbtOebkuW8gOWni+eahOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0gbWluWSAgIOWMheWbtOebkuW8gOWni+eahOeCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGggIOWuveW6plxuICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCDpq5jluqZcbiAqIEBwYXJhbSB7W3R5cGVdfSB4ICAgICAg5qOA5rWL54K555qEIHhcbiAqIEBwYXJhbSB7W3R5cGVdfSB5ICAgICAg55uR5rWL54K555qEIHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluQm94KG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIHgsIHkpIHtcbiAgICByZXR1cm4geCA+PSBtaW5YICYmIHggPD0gbWluWCArIHdpZHRoICYmIHkgPj0gbWluWSAmJiB5IDw9IG1pblkgKyBoZWlnaHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0UmVjdChib3gxLCBib3gyKSB7XG4gICAgcmV0dXJuICEoYm94Mi5taW5YID4gYm94MS5tYXhYIHx8IGJveDIubWF4WCA8IGJveDEubWluWCB8fCBib3gyLm1pblkgPiBib3gxLm1heFkgfHwgYm94Mi5tYXhZIDwgYm94MS5taW5ZKTtcbn1cbi8vIOWQiOW5tuS4pOS4quWMuuWfn1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUmVnaW9uKHJlZ2lvbjEsIHJlZ2lvbjIpIHtcbiAgICBpZiAoIXJlZ2lvbjEgfHwgIXJlZ2lvbjIpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lvbjEgfHwgcmVnaW9uMjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluWDogTWF0aC5taW4ocmVnaW9uMS5taW5YLCByZWdpb24yLm1pblgpLFxuICAgICAgICBtaW5ZOiBNYXRoLm1pbihyZWdpb24xLm1pblksIHJlZ2lvbjIubWluWSksXG4gICAgICAgIG1heFg6IE1hdGgubWF4KHJlZ2lvbjEubWF4WCwgcmVnaW9uMi5tYXhYKSxcbiAgICAgICAgbWF4WTogTWF0aC5tYXgocmVnaW9uMS5tYXhZLCByZWdpb24yLm1heFkpLFxuICAgIH07XG59XG4vKipcbiAqIOWIpOaWreS4pOS4queCueaYr+WQpumHjeWQiO+8jOeCueWdkOagh+eahOagvOW8j+S4uiBbeCwgeV1cbiAqIEBwYXJhbSB7QXJyYXl9IHBvaW50MSDnrKzkuIDkuKrngrlcbiAqIEBwYXJhbSB7QXJyYXl9IHBvaW50MiDnrKzkuozkuKrngrlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZVBvaW50KHBvaW50MSwgcG9pbnQyKSB7XG4gICAgcmV0dXJuIHBvaW50MVswXSA9PT0gcG9pbnQyWzBdICYmIHBvaW50MVsxXSA9PT0gcG9pbnQyWzFdO1xufVxuZXhwb3J0IHsgaXNOaWwsIGlzU3RyaW5nLCBpc0Z1bmN0aW9uLCBpc0FycmF5LCBlYWNoLCB0b1JhZGlhbiwgbW9kLCBpc051bWJlckVxdWFsLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNsZWFyQW5pbWF0aW9uRnJhbWUsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js\");\n\n\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n }\n else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n }\n else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) { },\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0], y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = _ellipse__WEBPACK_IMPORTED_MODULE_1__[\"default\"].nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n }\n else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2FyYy5qcz84OTc3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNUO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrQkFBa0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGVBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGtCQUFrQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QjtBQUNBLHdFQUF3RSxFQUFFO0FBQzFFO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQU87QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2FyYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlLCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgZWxsaXBzZSBmcm9tICcuL2VsbGlwc2UnO1xuLy8g5YGP5a+85pWwIHhcbmZ1bmN0aW9uIGRlcml2YXRpdmVYQXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFuZ2xlKSB7XG4gICAgcmV0dXJuIC0xICogcnggKiBNYXRoLmNvcyh4Um90YXRpb24pICogTWF0aC5zaW4oYW5nbGUpIC0gcnkgKiBNYXRoLnNpbih4Um90YXRpb24pICogTWF0aC5jb3MoYW5nbGUpO1xufVxuLy8g5YGP5a+85pWwIHlcbmZ1bmN0aW9uIGRlcml2YXRpdmVZQXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFuZ2xlKSB7XG4gICAgcmV0dXJuIC0xICogcnggKiBNYXRoLnNpbih4Um90YXRpb24pICogTWF0aC5zaW4oYW5nbGUpICsgcnkgKiBNYXRoLmNvcyh4Um90YXRpb24pICogTWF0aC5jb3MoYW5nbGUpO1xufVxuLy8geCDnmoTmnoHlgLxcbmZ1bmN0aW9uIHhFeHRyZW1hKHJ4LCByeSwgeFJvdGF0aW9uKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbigoLXJ5IC8gcngpICogTWF0aC50YW4oeFJvdGF0aW9uKSk7XG59XG4vLyB5IOeahOaegeWAvFxuZnVuY3Rpb24geUV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuKHJ5IC8gKHJ4ICogTWF0aC50YW4oeFJvdGF0aW9uKSkpO1xufVxuLy8g5qC55o2u6KeS5bqm5rGCIHgg5Z2Q5qCHXG5mdW5jdGlvbiB4QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgYW5nbGUpIHtcbiAgICByZXR1cm4gcnggKiBNYXRoLmNvcyh4Um90YXRpb24pICogTWF0aC5jb3MoYW5nbGUpIC0gcnkgKiBNYXRoLnNpbih4Um90YXRpb24pICogTWF0aC5zaW4oYW5nbGUpICsgY3g7XG59XG4vLyDmoLnmja7op5LluqbmsYIgeSDlnZDmoIdcbmZ1bmN0aW9uIHlBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBhbmdsZSkge1xuICAgIHJldHVybiByeCAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSkgKyByeSAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgKyBjeTtcbn1cbi8vIOiOt+WPlueCueWcqOakreWchuS4iueahOinkuW6plxuZnVuY3Rpb24gZ2V0QW5nbGUocngsIHJ5LCB4MCwgeTApIHtcbiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHkwICogcngsIHgwICogcnkpO1xuICAgIC8vIOi9rOaNouWIsCAwIC0gMlBJIOWGhVxuICAgIHJldHVybiAoYW5nbGUgKyBNYXRoLlBJICogMikgJSAoTWF0aC5QSSAqIDIpO1xufVxuLy8g5qC55o2u6KeS5bqm6I635Y+W77yMeCx5XG5mdW5jdGlvbiBnZXRQb2ludChyeCwgcnksIGFuZ2xlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcnggKiBNYXRoLmNvcyhhbmdsZSksXG4gICAgICAgIHk6IHJ5ICogTWF0aC5zaW4oYW5nbGUpLFxuICAgIH07XG59XG4vLyDml4vovaxcbmZ1bmN0aW9uIHJvdGF0ZSh4LCB5LCBhbmdsZSkge1xuICAgIHZhciBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XG4gICAgdmFyIHNpbiA9IE1hdGguc2luKGFuZ2xlKTtcbiAgICByZXR1cm4gW3ggKiBjb3MgLSB5ICogc2luLCB4ICogc2luICsgeSAqIGNvc107XG59XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLyoqXG4gICAgICog6K6h566X5YyF5Zu055uSXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN4ICAgICAgICAg5ZyG5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3kgICAgICAgICDlnIblv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCAgICAgICAgIHgg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5ICAgICAgICAgeSDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geFJvdGF0aW9uICDml4vovazop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRBbmdsZSDotbflp4vop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kQW5nbGUgICDnu5PmnZ/op5LluqZcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWMheWbtOebkuWvueixoVxuICAgICAqL1xuICAgIGJveDogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XG4gICAgICAgIHZhciB4RGltID0geEV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pO1xuICAgICAgICB2YXIgbWluWCA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WCA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHhzID0gW3N0YXJ0QW5nbGUsIGVuZEFuZ2xlXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IC1NYXRoLlBJICogMjsgaSA8PSBNYXRoLlBJICogMjsgaSArPSBNYXRoLlBJKSB7XG4gICAgICAgICAgICB2YXIgeEFuZ2xlID0geERpbSArIGk7XG4gICAgICAgICAgICBpZiAoc3RhcnRBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPCB4QW5nbGUgJiYgeEFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeHMucHVzaCh4QW5nbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbmRBbmdsZSA8IHhBbmdsZSAmJiB4QW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHhzLnB1c2goeEFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHggPSB4QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgeHNbaV0pO1xuICAgICAgICAgICAgaWYgKHggPCBtaW5YKSB7XG4gICAgICAgICAgICAgICAgbWluWCA9IHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeCA+IG1heFgpIHtcbiAgICAgICAgICAgICAgICBtYXhYID0geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgeURpbSA9IHlFeHRyZW1hKHJ4LCByeSwgeFJvdGF0aW9uKTtcbiAgICAgICAgdmFyIG1pblkgPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIG1heFkgPSAtSW5maW5pdHk7XG4gICAgICAgIHZhciB5cyA9IFtzdGFydEFuZ2xlLCBlbmRBbmdsZV07XG4gICAgICAgIGZvciAodmFyIGkgPSAtTWF0aC5QSSAqIDI7IGkgPD0gTWF0aC5QSSAqIDI7IGkgKz0gTWF0aC5QSSkge1xuICAgICAgICAgICAgdmFyIHlBbmdsZSA9IHlEaW0gKyBpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPCBlbmRBbmdsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdGFydEFuZ2xlIDwgeUFuZ2xlICYmIHlBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHlzLnB1c2goeUFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZW5kQW5nbGUgPCB5QW5nbGUgJiYgeUFuZ2xlIDwgc3RhcnRBbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICB5cy5wdXNoKHlBbmdsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB5ID0geUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHlzW2ldKTtcbiAgICAgICAgICAgIGlmICh5IDwgbWluWSkge1xuICAgICAgICAgICAgICAgIG1pblkgPSB5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHkgPiBtYXhZKSB7XG4gICAgICAgICAgICAgICAgbWF4WSA9IHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiOt+WPluWchuW8p+eahOmVv+W6pu+8jOiuoeeul+WchuW8p+mVv+W6puaXtuS4jeiAg+iZkeaXi+i9rOinkuW6pu+8jFxuICAgICAqIOS7hei3nyByeCwgcnksIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlIOebuOWFs1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeCAgICAgICAgIOWchuW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN5ICAgICAgICAg5ZyG5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnggICAgICAgICB4IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSAgICAgICAgIHkg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHhSb3RhdGlvbiAg5peL6L2s6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0QW5nbGUg6LW35aeL6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZEFuZ2xlICAg57uT5p2f6KeS5bqmXG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHsgfSxcbiAgICAvKipcbiAgICAgKiDojrflj5bmjIflrprngrnliLDlnIblvKfnmoTmnIDov5Hot53nprvnmoTngrlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3ggICAgICAgICDlnIblv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeSAgICAgICAgIOWchuW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4ICAgICAgICAgeCDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkgICAgICAgICB5IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4Um90YXRpb24gIOaXi+i9rOinkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEFuZ2xlIOi1t+Wni+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRBbmdsZSAgIOe7k+adn+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MCAgICAgICAgIOaMh+WumueCueeahCB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkwICAgICAgICAg5oyH5a6a54K555qEIHlcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWIsOaMh+WumueCueacgOi/kei3neemu+eahOeCuVxuICAgICAqL1xuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB4MCwgeTApIHtcbiAgICAgICAgLy8g5bCG5pyA6L+R6Led56a76Zeu6aKY6L2s5o2i5oiQ5Yiw5qSt5ZyG5Lit5b+DIDAsMCDmsqHmnInml4vovaznmoTmpK3lnIbpl67pophcbiAgICAgICAgdmFyIHJlbGF0aXZlVmVjdG9yID0gcm90YXRlKHgwIC0gY3gsIHkwIC0gY3ksIC14Um90YXRpb24pO1xuICAgICAgICB2YXIgeDEgPSByZWxhdGl2ZVZlY3RvclswXSwgeTEgPSByZWxhdGl2ZVZlY3RvclsxXTtcbiAgICAgICAgLy8g6K6h566X54K55Yiw5qSt5ZyG55qE5pyA6L+R55qE54K5XG4gICAgICAgIHZhciByZWxhdGl2ZVBvaW50ID0gZWxsaXBzZS5uZWFyZXN0UG9pbnQoMCwgMCwgcngsIHJ5LCB4MSwgeTEpO1xuICAgICAgICAvLyDojrflj5bngrnlnKjmpK3lnIbkuIrnmoTop5LluqZcbiAgICAgICAgdmFyIGFuZ2xlID0gZ2V0QW5nbGUocngsIHJ5LCByZWxhdGl2ZVBvaW50LngsIHJlbGF0aXZlUG9pbnQueSk7XG4gICAgICAgIC8vIOeCueayoeacieWcqOWchuW8p+S4ilxuICAgICAgICBpZiAoYW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICAgICAgICAvLyDlsI/kuo7otbflp4vlnIblvKdcbiAgICAgICAgICAgIHJlbGF0aXZlUG9pbnQgPSBnZXRQb2ludChyeCwgcnksIHN0YXJ0QW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFuZ2xlID4gZW5kQW5nbGUpIHtcbiAgICAgICAgICAgIC8vIOWkp+S6jue7k+adn+WchuW8p1xuICAgICAgICAgICAgcmVsYXRpdmVQb2ludCA9IGdldFBvaW50KHJ4LCByeSwgZW5kQW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOaXi+i9rOWIsCB4Um90YXRpb24g55qE6KeS5bqmXG4gICAgICAgIHZhciB2ZWN0b3IgPSByb3RhdGUocmVsYXRpdmVQb2ludC54LCByZWxhdGl2ZVBvaW50LnksIHhSb3RhdGlvbik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB2ZWN0b3JbMF0gKyBjeCxcbiAgICAgICAgICAgIHk6IHZlY3RvclsxXSArIGN5LFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB4MCwgeTApIHtcbiAgICAgICAgdmFyIG5lYXJlc3RQb2ludCA9IHRoaXMubmVhcmVzdFBvaW50KGN4LCBjeSwgcngsIHJ5LCB4MCwgeTApO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UobmVhcmVzdFBvaW50LngsIG5lYXJlc3RQb2ludC55LCB4MCwgeTApO1xuICAgIH0sXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IChlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpICogdCArIHN0YXJ0QW5nbGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgYW5nbGUpLFxuICAgICAgICAgICAgeTogeUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIGFuZ2xlKSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIHRhbmdlbnRBbmdsZTogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IChlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpICogdCArIHN0YXJ0QW5nbGU7XG4gICAgICAgIHZhciBkeCA9IGRlcml2YXRpdmVYQXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFuZ2xlKTtcbiAgICAgICAgdmFyIGR5ID0gZGVyaXZhdGl2ZVlBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpO1xuICAgICAgICByZXR1cm4gcGlNb2QoTWF0aC5hdGFuMihkeSwgZHgpKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js ***! \*********************************************************************/ /*! exports provided: nearestPoint, snapLength */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nearestPoint\", function() { return nearestPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snapLength\", function() { return snapLength; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nfunction nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nfunction snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n//# sourceMappingURL=bezier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2Jlemllci5qcz84YmE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixhQUFhO0FBQ2hDO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2Jlemllci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSAnLi91dGlsJztcbnZhciBFUFNJTE9OID0gMC4wMDAxO1xuLyoqXG4gKiDkvb/nlKjniZvpob/liIflibLms5XmsYLmnIDov5HnmoTngrlcbiAqIEBwYXJhbSB7bnVtYmVyW119IHhBcnIgICAgICDngrnnmoQgeCDmlbDnu4RcbiAqIEBwYXJhbSB7bnVtYmVyW119IHlBcnIgICAgICDngrnnmoQgeSDmlbDnu4RcbiAqIEBwYXJhbSB7bnVtYmVyfSAgIHggICAgICAgICDmjIflrprnmoTngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9ICAgeSAgICAgICAgIOaMh+WumueahOeCuSB5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0Q2FsbGJhY2sg5beu5YC85Ye95pWwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZWFyZXN0UG9pbnQoeEFyciwgeUFyciwgeCwgeSwgdENhbGxiYWNrLCBsZW5ndGgpIHtcbiAgICB2YXIgdDtcbiAgICB2YXIgZCA9IEluZmluaXR5O1xuICAgIHZhciB2MCA9IFt4LCB5XTtcbiAgICB2YXIgc2VnTnVtID0gMjA7XG4gICAgaWYgKGxlbmd0aCAmJiBsZW5ndGggPiAyMDApIHtcbiAgICAgICAgc2VnTnVtID0gbGVuZ3RoIC8gMTA7XG4gICAgfVxuICAgIHZhciBpbmNyZWFzZVJhdGUgPSAxIC8gc2VnTnVtO1xuICAgIHZhciBpbnRlcnZhbCA9IGluY3JlYXNlUmF0ZSAvIDEwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHNlZ051bTsgaSsrKSB7XG4gICAgICAgIHZhciBfdCA9IGkgKiBpbmNyZWFzZVJhdGU7XG4gICAgICAgIHZhciB2MSA9IFt0Q2FsbGJhY2suYXBwbHkobnVsbCwgeEFyci5jb25jYXQoW190XSkpLCB0Q2FsbGJhY2suYXBwbHkobnVsbCwgeUFyci5jb25jYXQoW190XSkpXTtcbiAgICAgICAgdmFyIGQxID0gZGlzdGFuY2UodjBbMF0sIHYwWzFdLCB2MVswXSwgdjFbMV0pO1xuICAgICAgICBpZiAoZDEgPCBkKSB7XG4gICAgICAgICAgICB0ID0gX3Q7XG4gICAgICAgICAgICBkID0gZDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5o+Q5YmN57uI5q2iXG4gICAgaWYgKHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHhBcnJbMF0sXG4gICAgICAgICAgICB5OiB5QXJyWzBdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAodCA9PT0gMSkge1xuICAgICAgICB2YXIgY291bnQgPSB4QXJyLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHhBcnJbY291bnQgLSAxXSxcbiAgICAgICAgICAgIHk6IHlBcnJbY291bnQgLSAxXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZCA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICBpZiAoaW50ZXJ2YWwgPCBFUFNJTE9OKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldiA9IHQgLSBpbnRlcnZhbDtcbiAgICAgICAgdmFyIG5leHQgPSB0ICsgaW50ZXJ2YWw7XG4gICAgICAgIHZhciB2MSA9IFt0Q2FsbGJhY2suYXBwbHkobnVsbCwgeEFyci5jb25jYXQoW3ByZXZdKSksIHRDYWxsYmFjay5hcHBseShudWxsLCB5QXJyLmNvbmNhdChbcHJldl0pKV07XG4gICAgICAgIHZhciBkMSA9IGRpc3RhbmNlKHYwWzBdLCB2MFsxXSwgdjFbMF0sIHYxWzFdKTtcbiAgICAgICAgaWYgKHByZXYgPj0gMCAmJiBkMSA8IGQpIHtcbiAgICAgICAgICAgIHQgPSBwcmV2O1xuICAgICAgICAgICAgZCA9IGQxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHYyID0gW3RDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbbmV4dF0pKSwgdENhbGxiYWNrLmFwcGx5KG51bGwsIHlBcnIuY29uY2F0KFtuZXh0XSkpXTtcbiAgICAgICAgICAgIHZhciBkMiA9IGRpc3RhbmNlKHYwWzBdLCB2MFsxXSwgdjJbMF0sIHYyWzFdKTtcbiAgICAgICAgICAgIGlmIChuZXh0IDw9IDEgJiYgZDIgPCBkKSB7XG4gICAgICAgICAgICAgICAgdCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgZCA9IGQyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwgKj0gMC41O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHRDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbdF0pKSxcbiAgICAgICAgeTogdENhbGxiYWNrLmFwcGx5KG51bGwsIHlBcnIuY29uY2F0KFt0XSkpLFxuICAgIH07XG59XG4vLyDov5HkvLzmsYLop6MgaHR0cHM6Ly9jb21tdW5pdHkua2hyb25vcy5vcmcvdC8zZC1jdWJpYy1iZXppZXItc2VnbWVudC1sZW5ndGgvNjIzNjMvMlxuZXhwb3J0IGZ1bmN0aW9uIHNuYXBMZW5ndGgoeEFyciwgeUFycikge1xuICAgIHZhciB0b3RhbExlbmd0aCA9IDA7XG4gICAgdmFyIGNvdW50ID0geEFyci5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciB4ID0geEFycltpXTtcbiAgICAgICAgdmFyIHkgPSB5QXJyW2ldO1xuICAgICAgICB2YXIgbmV4dFggPSB4QXJyWyhpICsgMSkgJSBjb3VudF07XG4gICAgICAgIHZhciBuZXh0WSA9IHlBcnJbKGkgKyAxKSAlIGNvdW50XTtcbiAgICAgICAgdG90YWxMZW5ndGggKz0gZGlzdGFuY2UoeCwgeSwgbmV4dFgsIG5leHRZKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsTGVuZ3RoIC8gMjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJlemllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js\");\n\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(a, 0)) {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(disc, 0)) {\n extremas.push(-b / (2 * a));\n }\n else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x1, y1, x2, y2, t);\n var c2 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x2, y2, x3, y3, t);\n var c3 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x3, y3, x4, y4, t);\n var c12 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"snapLength\"])([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n extrema: extrema,\n box: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2N1YmljLmpzP2Y4OTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0U7QUFDOUM7QUFDMEI7QUFDcEQ7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQWE7QUFDckIsYUFBYSwyREFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBYTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkNBQUk7QUFDakIsYUFBYSw2Q0FBSTtBQUNqQixhQUFhLDZDQUFJO0FBQ2pCLGNBQWMsNkNBQUk7QUFDbEIsY0FBYyw2Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwREFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLDREQUFZO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2N1YmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UsIGlzTnVtYmVyRXF1YWwsIGdldEJCb3hCeUFycmF5LCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgc25hcExlbmd0aCwgbmVhcmVzdFBvaW50IH0gZnJvbSAnLi9iZXppZXInO1xuZnVuY3Rpb24gY3ViaWNBdChwMCwgcDEsIHAyLCBwMywgdCkge1xuICAgIHZhciBvbmV0ID0gMSAtIHQ7IC8vIHQgKiB0ICogdCDnmoTmgKfog73lpKfmpoLmmK8gTWF0aC5wb3codCwgMykg55qE5LiJ5YCNXG4gICAgcmV0dXJuIG9uZXQgKiBvbmV0ICogb25ldCAqIHAwICsgMyAqIHAxICogdCAqIG9uZXQgKiBvbmV0ICsgMyAqIHAyICogdCAqIHQgKiBvbmV0ICsgcDMgKiB0ICogdCAqIHQ7XG59XG5mdW5jdGlvbiBkZXJpdmF0aXZlQXQocDAsIHAxLCBwMiwgcDMsIHQpIHtcbiAgICB2YXIgb25ldCA9IDEgLSB0O1xuICAgIHJldHVybiAzICogKG9uZXQgKiBvbmV0ICogKHAxIC0gcDApICsgMiAqIG9uZXQgKiB0ICogKHAyIC0gcDEpICsgdCAqIHQgKiAocDMgLSBwMikpO1xufVxuZnVuY3Rpb24gZXh0cmVtYShwMCwgcDEsIHAyLCBwMykge1xuICAgIHZhciBhID0gLTMgKiBwMCArIDkgKiBwMSAtIDkgKiBwMiArIDMgKiBwMztcbiAgICB2YXIgYiA9IDYgKiBwMCAtIDEyICogcDEgKyA2ICogcDI7XG4gICAgdmFyIGMgPSAzICogcDEgLSAzICogcDA7XG4gICAgdmFyIGV4dHJlbWFzID0gW107XG4gICAgdmFyIHQxO1xuICAgIHZhciB0MjtcbiAgICB2YXIgZGlzY1NxcnQ7XG4gICAgaWYgKGlzTnVtYmVyRXF1YWwoYSwgMCkpIHtcbiAgICAgICAgaWYgKCFpc051bWJlckVxdWFsKGIsIDApKSB7XG4gICAgICAgICAgICB0MSA9IC1jIC8gYjtcbiAgICAgICAgICAgIGlmICh0MSA+PSAwICYmIHQxIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBleHRyZW1hcy5wdXNoKHQxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGRpc2MgPSBiICogYiAtIDQgKiBhICogYztcbiAgICAgICAgaWYgKGlzTnVtYmVyRXF1YWwoZGlzYywgMCkpIHtcbiAgICAgICAgICAgIGV4dHJlbWFzLnB1c2goLWIgLyAoMiAqIGEpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkaXNjID4gMCkge1xuICAgICAgICAgICAgZGlzY1NxcnQgPSBNYXRoLnNxcnQoZGlzYyk7XG4gICAgICAgICAgICB0MSA9ICgtYiArIGRpc2NTcXJ0KSAvICgyICogYSk7XG4gICAgICAgICAgICB0MiA9ICgtYiAtIGRpc2NTcXJ0KSAvICgyICogYSk7XG4gICAgICAgICAgICBpZiAodDEgPj0gMCAmJiB0MSA8PSAxKSB7XG4gICAgICAgICAgICAgICAgZXh0cmVtYXMucHVzaCh0MSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodDIgPj0gMCAmJiB0MiA8PSAxKSB7XG4gICAgICAgICAgICAgICAgZXh0cmVtYXMucHVzaCh0Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV4dHJlbWFzO1xufVxuLy8g5YiG5Ymy6LSd5aGe5bCU5puy57q/XG5mdW5jdGlvbiBkaXZpZGVDdWJpYyh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAvLyDliJLliIbngrlcbiAgICB2YXIgeHQgPSBjdWJpY0F0KHgxLCB4MiwgeDMsIHg0LCB0KTtcbiAgICB2YXIgeXQgPSBjdWJpY0F0KHkxLCB5MiwgeTMsIHk0LCB0KTtcbiAgICAvLyDorqHnrpfkuKTngrnkuYvpl7TnmoTlt67lgLzngrlcbiAgICB2YXIgYzEgPSBsaW5lLnBvaW50QXQoeDEsIHkxLCB4MiwgeTIsIHQpO1xuICAgIHZhciBjMiA9IGxpbmUucG9pbnRBdCh4MiwgeTIsIHgzLCB5MywgdCk7XG4gICAgdmFyIGMzID0gbGluZS5wb2ludEF0KHgzLCB5MywgeDQsIHk0LCB0KTtcbiAgICB2YXIgYzEyID0gbGluZS5wb2ludEF0KGMxLngsIGMxLnksIGMyLngsIGMyLnksIHQpO1xuICAgIHZhciBjMjMgPSBsaW5lLnBvaW50QXQoYzIueCwgYzIueSwgYzMueCwgYzMueSwgdCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW3gxLCB5MSwgYzEueCwgYzEueSwgYzEyLngsIGMxMi55LCB4dCwgeXRdLFxuICAgICAgICBbeHQsIHl0LCBjMjMueCwgYzIzLnksIGMzLngsIGMzLnksIHg0LCB5NF0sXG4gICAgXTtcbn1cbi8vIOS9v+eUqOi/reS7o+azleWPlui0neWhnuWwlOabsue6v+eahOmVv+W6pu+8jOS6jOmYtuWSjOS4iemYtuWIhuW8gOWGme+8jOabtOa4heaZsOWSjOS+v+S6juiwg+ivlVxuZnVuY3Rpb24gY3ViaWNMZW5ndGgoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBpdGVyYXRpb25Db3VudCkge1xuICAgIGlmIChpdGVyYXRpb25Db3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc25hcExlbmd0aChbeDEsIHgyLCB4MywgeDRdLCBbeTEsIHkyLCB5MywgeTRdKTtcbiAgICB9XG4gICAgdmFyIGN1YmljcyA9IGRpdmlkZUN1YmljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgMC41KTtcbiAgICB2YXIgbGVmdCA9IGN1Ymljc1swXTtcbiAgICB2YXIgcmlnaHQgPSBjdWJpY3NbMV07XG4gICAgbGVmdC5wdXNoKGl0ZXJhdGlvbkNvdW50IC0gMSk7XG4gICAgcmlnaHQucHVzaChpdGVyYXRpb25Db3VudCAtIDEpO1xuICAgIHJldHVybiBjdWJpY0xlbmd0aC5hcHBseShudWxsLCBsZWZ0KSArIGN1YmljTGVuZ3RoLmFwcGx5KG51bGwsIHJpZ2h0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBleHRyZW1hOiBleHRyZW1hLFxuICAgIGJveDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xuICAgICAgICB2YXIgeEFyciA9IFt4MSwgeDRdO1xuICAgICAgICB2YXIgeUFyciA9IFt5MSwgeTRdO1xuICAgICAgICB2YXIgeEV4dHJlbWEgPSBleHRyZW1hKHgxLCB4MiwgeDMsIHg0KTtcbiAgICAgICAgdmFyIHlFeHRyZW1hID0gZXh0cmVtYSh5MSwgeTIsIHkzLCB5NCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeEV4dHJlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHhBcnIucHVzaChjdWJpY0F0KHgxLCB4MiwgeDMsIHg0LCB4RXh0cmVtYVtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeUV4dHJlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHlBcnIucHVzaChjdWJpY0F0KHkxLCB5MiwgeTMsIHk0LCB5RXh0cmVtYVtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRCQm94QnlBcnJheSh4QXJyLCB5QXJyKTtcbiAgICB9LFxuICAgIGxlbmd0aDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xuICAgICAgICAvLyDov63ku6PkuInmrKHvvIzliJLliIbmiJAgOCDmrrXmsYLplb/luqZcbiAgICAgICAgcmV0dXJuIGN1YmljTGVuZ3RoKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgMyk7XG4gICAgfSxcbiAgICBuZWFyZXN0UG9pbnQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHgwLCB5MCwgbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQoW3gxLCB4MiwgeDMsIHg0XSwgW3kxLCB5MiwgeTMsIHk0XSwgeDAsIHkwLCBjdWJpY0F0LCBsZW5ndGgpO1xuICAgIH0sXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgeDAsIHkwLCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB4MCwgeTAsIGxlbmd0aCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZShwb2ludC54LCBwb2ludC55LCB4MCwgeTApO1xuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbkF0OiBjdWJpY0F0LFxuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IGN1YmljQXQoeDEsIHgyLCB4MywgeDQsIHQpLFxuICAgICAgICAgICAgeTogY3ViaWNBdCh5MSwgeTIsIHkzLCB5NCwgdCksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBkaXZpZGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAgICAgcmV0dXJuIGRpdmlkZUN1YmljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCk7XG4gICAgfSxcbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAgICAgdmFyIGR4ID0gZGVyaXZhdGl2ZUF0KHgxLCB4MiwgeDMsIHg0LCB0KTtcbiAgICAgICAgdmFyIGR5ID0gZGVyaXZhdGl2ZUF0KHkxLCB5MiwgeTMsIHk0LCB0KTtcbiAgICAgICAgcmV0dXJuIHBpTW9kKE1hdGguYXRhbjIoZHksIGR4KSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jdWJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\n\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function (x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function (x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function (x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y,\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = ((squareA - squareB) * Math.pow(Math.cos(t), 3)) / a;\n var ey = ((squareB - squareA) * Math.pow(Math.sin(t), 3)) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY),\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function (x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle),\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(tangentAngle);\n },\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2VsbGlwc2UuanM/MDBkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1EQUFLO0FBQ3BCLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1tYXRoQDAuMS43QEBhbnR2L2ctbWF0aC9lc20vZWxsaXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDmpK3lnIbnmoTkuIDkupvorqHnrpfvvIxcbiAqICAtIOWRqOmVv+iuoeeul+WPguiAg++8mmh0dHBzOi8vd3d3Lm1hdGhzaXNmdW4uY29tL2dlb21ldHJ5L2VsbGlwc2UtcGVyaW1ldGVyLmh0bWxcbiAqICAtIOi3neemu+iuoeeul+WPguiAg++8mmh0dHBzOi8vd2V0LXJvYm90cy5naG9zdC5pby9zaW1wbGUtbWV0aG9kLWZvci1kaXN0YW5jZS10by1lbGxpcHNlL1xuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IGRpc3RhbmNlLCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5mdW5jdGlvbiBjb3B5c2lnbih2MSwgdjIpIHtcbiAgICB2YXIgYWJzdiA9IE1hdGguYWJzKHYxKTtcbiAgICByZXR1cm4gdjIgPiAwID8gYWJzdiA6IGFic3YgKiAtMTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDljIXlm7Tnm5LorqHnrpdcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAg5qSt5ZyG5Lit5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAg5qSt5ZyG5Lit5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcngg5qSt5ZyGIHgg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5IOakreWchiB5IOaWueWQkeWNiuW+hFxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4IC0gcngsXG4gICAgICAgICAgICB5OiB5IC0gcnksXG4gICAgICAgICAgICB3aWR0aDogcnggKiAyLFxuICAgICAgICAgICAgaGVpZ2h0OiByeSAqIDIsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDorqHnrpflkajplb/vvIzkvb/nlKjov5HkvLzms5VcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAg5qSt5ZyG5Lit5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAg5qSt5ZyG5Lit5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcngg5qSt5ZyGIHgg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5IOakreWchiB5IOaWueWQkeWNiuW+hFxuICAgICAqIEByZXR1cm4ge251bWJlcn0g5qSt5ZyG5ZGo6ZW/XG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5KSB7XG4gICAgICAgIHJldHVybiBNYXRoLlBJICogKDMgKiAocnggKyByeSkgLSBNYXRoLnNxcnQoKDMgKiByeCArIHJ5KSAqIChyeCArIDMgKiByeSkpKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi3neemu+akreWchuacgOi/keeahOeCuVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgwICDmjIflrprnmoTngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MCAg5oyH5a6a55qE54K5IHlcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOakreWchuS4iui3neemu+aMh+WumueCueacgOi/keeahOeCuVxuICAgICAqL1xuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKHgsIHksIHJ4LCByeSwgeDAsIHkwKSB7XG4gICAgICAgIHZhciBhID0gcng7XG4gICAgICAgIHZhciBiID0gcnk7XG4gICAgICAgIC8vIOWBh+WmguakreWchuWNiuW+hOS4ujDliJnov5Tlm57lnIblv4NcbiAgICAgICAgaWYgKGEgPT09IDAgfHwgYiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIOi9rOaNouaIkCAw77yMIDAg5Li65Lit5b+D55qE5qSt5ZyG6K6h566XXG4gICAgICAgIHZhciByZWxhdGl2ZVggPSB4MCAtIHg7XG4gICAgICAgIHZhciByZWxhdGl2ZVkgPSB5MCAtIHk7XG4gICAgICAgIHZhciBweCA9IE1hdGguYWJzKHJlbGF0aXZlWCk7XG4gICAgICAgIHZhciBweSA9IE1hdGguYWJzKHJlbGF0aXZlWSk7XG4gICAgICAgIHZhciBzcXVhcmVBID0gYSAqIGE7XG4gICAgICAgIHZhciBzcXVhcmVCID0gYiAqIGI7XG4gICAgICAgIC8vIGNvbnN0IGFuZ2xlMCA9IE1hdGguYXRhbjIocmVsYXRpdmVZLCByZWxhdGl2ZVgpO1xuICAgICAgICB2YXIgdCA9IE1hdGguUEkgLyA0O1xuICAgICAgICB2YXIgbmVhcmVzdFg7IC8vIOakreWchuS4iueahOS7u+S4gOeCuVxuICAgICAgICB2YXIgbmVhcmVzdFk7XG4gICAgICAgIC8vIOi/reS7oyA0IOasoVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgbmVhcmVzdFggPSBhICogTWF0aC5jb3ModCk7XG4gICAgICAgICAgICBuZWFyZXN0WSA9IGIgKiBNYXRoLnNpbih0KTtcbiAgICAgICAgICAgIHZhciBleCA9ICgoc3F1YXJlQSAtIHNxdWFyZUIpICogTWF0aC5wb3coTWF0aC5jb3ModCksIDMpKSAvIGE7XG4gICAgICAgICAgICB2YXIgZXkgPSAoKHNxdWFyZUIgLSBzcXVhcmVBKSAqIE1hdGgucG93KE1hdGguc2luKHQpLCAzKSkgLyBiO1xuICAgICAgICAgICAgdmFyIHJ4MSA9IG5lYXJlc3RYIC0gZXg7XG4gICAgICAgICAgICB2YXIgcnkxID0gbmVhcmVzdFkgLSBleTtcbiAgICAgICAgICAgIHZhciBxeCA9IHB4IC0gZXg7XG4gICAgICAgICAgICB2YXIgcXkgPSBweSAtIGV5O1xuICAgICAgICAgICAgdmFyIHIgPSBNYXRoLmh5cG90KHJ5MSwgcngxKTtcbiAgICAgICAgICAgIHZhciBxID0gTWF0aC5oeXBvdChxeSwgcXgpO1xuICAgICAgICAgICAgdmFyIGRlbHRhX2MgPSByICogTWF0aC5hc2luKChyeDEgKiBxeSAtIHJ5MSAqIHF4KSAvIChyICogcSkpO1xuICAgICAgICAgICAgdmFyIGRlbHRhX3QgPSBkZWx0YV9jIC8gTWF0aC5zcXJ0KHNxdWFyZUEgKyBzcXVhcmVCIC0gbmVhcmVzdFggKiBuZWFyZXN0WCAtIG5lYXJlc3RZICogbmVhcmVzdFkpO1xuICAgICAgICAgICAgdCArPSBkZWx0YV90O1xuICAgICAgICAgICAgdCA9IE1hdGgubWluKE1hdGguUEkgLyAyLCBNYXRoLm1heCgwLCB0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKyBjb3B5c2lnbihuZWFyZXN0WCwgcmVsYXRpdmVYKSxcbiAgICAgICAgICAgIHk6IHkgKyBjb3B5c2lnbihuZWFyZXN0WSwgcmVsYXRpdmVZKSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWIsOakreWchuacgOi/keeahOi3neemu1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgwICDmjIflrprnmoTngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MCAg5oyH5a6a55qE54K5IHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOeCueWIsOakreWchueahOi3neemu1xuICAgICAqL1xuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIHgwLCB5MCkge1xuICAgICAgICB2YXIgbmVhcmVzdFBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoeCwgeSwgcngsIHJ5LCB4MCwgeTApO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UobmVhcmVzdFBvaW50LngsIG5lYXJlc3RQb2ludC55LCB4MCwgeTApO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5qC55o2u5q+U5L6L6I635Y+W54K5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgg5qSt5ZyG5Lit5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5oyH5a6a5q+U5L6L77yMeOi9tOaWueWQkeS4uiAwXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDngrlcbiAgICAgKi9cbiAgICBwb2ludEF0OiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5LCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IDIgKiBNYXRoLlBJICogdDsgLy8g5oyJ54Wn6KeS5bqm6L+b6KGM6K6h566X77yM6ICM5LiN5oyJ54Wn5ZGo6ZW/6K6h566XXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ICsgcnggKiBNYXRoLmNvcyhhbmdsZSksXG4gICAgICAgICAgICB5OiB5ICsgcnkgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5TkvovorqHnrpfliIfnur/op5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDmjIflrprmr5TkvosgMCAtIDEg5LmL6Ze077yMeOi9tOaWueWQkeS4uiAw44CC5ZyoIDAtMSDojIPlm7TkuYvlpJbmmK/lvqrnjq/ov5jmmK/ov5Tlm54gbnVsbO+8jOi/mOmcgOimgeiwg+aVtFxuICAgICAqIEByZXR1cm4ge251bWJlcn0g6KeS5bqm77yM5ZyoIDAgLSAyUEkg5LmL6Ze0XG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5LCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IDIgKiBNYXRoLlBJICogdDsgLy8g5oyJ54Wn6KeS5bqm6L+b6KGM6K6h566X77yM6ICM5LiN5oyJ54Wn5ZGo6ZW/6K6h566XXG4gICAgICAgIC8vIOebtOaOpeS9v+eUqCB4LHkg55qE5a+85pWw6K6h566X77yMIHgnID0gLXJ4ICogc2luKHQpOyB5JyA9IHJ5ICogY29zKHQpO1xuICAgICAgICB2YXIgdGFuZ2VudEFuZ2xlID0gTWF0aC5hdGFuMihyeSAqIE1hdGguY29zKGFuZ2xlKSwgLXJ4ICogTWF0aC5zaW4oYW5nbGUpKTtcbiAgICAgICAgLy8g5Lmf5Y+v5Lul5L2/55So5oyH5a6a54K555qE5YiH57q/5pa556iL6K6h566X77yM5oiQ5pys5pyJ5Lqb6auYXG4gICAgICAgIC8vIGNvbnN0IHBvaW50ID0gdGhpcy5wb2ludEF0KDAsIDAsIHJ4LCByeSwgdCk7IC8vIOakreWchueahOWIh+e6v+WQjOakreWchueahOS4reW/g+S4jeebuOWFs1xuICAgICAgICAvLyBsZXQgdGFuZ2VudEFuZ2xlID0gLTEgKiBNYXRoLmF0YW4oKHJ5ICogcnkgKiBwb2ludC54KSAvIChyeCAqIHJ4ICogcG9pbnQueSkpO1xuICAgICAgICAvLyBpZiAoYW5nbGUgPj0gMCAmJiBhbmdsZSA8PSBNYXRoLlBJKSB7XG4gICAgICAgIC8vICAgdGFuZ2VudEFuZ2xlICs9IE1hdGguUEk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIHBpTW9kKHRhbmdlbnRBbmdsZSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGxpcHNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js ***! \********************************************************************/ /*! exports provided: Quad, Cubic, Arc, Line, Polygon, Polyline, Util */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quadratic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadratic */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quad\", function() { return _quadratic__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cubic */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cubic\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arc\", function() { return _arc__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_6__; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2luZGV4LmpzP2Y2OTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ0g7QUFDSjtBQUNFO0FBQ007QUFDRTtBQUNIO0FBQzRCO0FBQzNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLW1hdGhAMC4xLjdAQGFudHYvZy1tYXRoL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWFkIGZyb20gJy4vcXVhZHJhdGljJztcbmltcG9ydCBDdWJpYyBmcm9tICcuL2N1YmljJztcbmltcG9ydCBBcmMgZnJvbSAnLi9hcmMnO1xuaW1wb3J0IExpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBQb2x5Z29uIGZyb20gJy4vcG9seWdvbic7XG5pbXBvcnQgUG9seWxpbmUgZnJvbSAnLi9wb2x5bGluZSc7XG5pbXBvcnQgKiBhcyBVdGlsIGZyb20gJy4vdXRpbCc7XG5leHBvcnQgeyBRdWFkLCBDdWJpYywgQXJjLCBMaW5lLCBQb2x5Z29uLCBQb2x5bGluZSwgVXRpbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec2.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function (x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function (x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function (x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"exactEquals\"](d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"](u, u);\n var a = [x - x1, y - y1];\n return Math.abs(gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"dot\"](a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function (x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2xpbmUuanM/YTZlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0Q7QUFDWDtBQUN4QjtBQUNmO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsNERBQWM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzREFBUTtBQUMzQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsd0RBQWM7QUFDdEI7QUFDQSx3QkFBd0Isa0RBQVE7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLW1hdGhAMC4xLjdAQGFudHYvZy1tYXRoL2VzbS9saW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UsIGdldEJCb3hCeUFycmF5IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCAqIGFzIHZlYzIgZnJvbSAnZ2wtbWF0cml4L3ZlYzInO1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIC8qKlxuICAgICAqIOiuoeeul+e6v+auteeahOWMheWbtOebklxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uS5a+56LGhXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KFt4MSwgeDJdLCBbeTEsIHkyXSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDnur/mrrXnmoTplb/luqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOi3neemu1xuICAgICAqL1xuICAgIGxlbmd0aDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mik7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5bngrlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDmjIflrprmr5TkvotcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWMheWQqyB4LCB5IOeahOeCuVxuICAgICAqL1xuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogKDEgLSB0KSAqIHgxICsgdCAqIHgyLFxuICAgICAgICAgICAgeTogKDEgLSB0KSAqIHkxICsgdCAqIHkyLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Yiw57q/5q6155qE6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOa1i+ivleeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOa1i+ivleeCuSB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDot53nprtcbiAgICAgKi9cbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHtcbiAgICAgICAgLy8g5oqV5b2x6Led56a7IHgxLCB5MSDnmoTlkJHph4/vvIzlgYforr4gcCwgcDEsIHAyIOS4ieS4queCue+8jOaKleW9seeCueS4uiBhXG4gICAgICAgIC8vIHAxYSA9IHAxcC5wMXAyL3xwMXAyfCAqIChwMXAg55qE5Y2V5L2N5ZCR6YePKVxuICAgICAgICB2YXIgY3Jvc3MgPSAoeDIgLSB4MSkgKiAoeCAtIHgxKSArICh5MiAtIHkxKSAqICh5IC0geTEpO1xuICAgICAgICBpZiAoY3Jvc3MgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2UoeDEsIHkxLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoU3F1YXJlID0gKHgyIC0geDEpICogKHgyIC0geDEpICsgKHkyIC0geTEpICogKHkyIC0geTEpO1xuICAgICAgICBpZiAoY3Jvc3MgPiBsZW5ndGhTcXVhcmUpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZSh4MiwgeTIsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50VG9MaW5lKHgxLCB5MSwgeDIsIHkyLCB4LCB5KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWIsOebtOe6v+eahOi3neemu++8jOiAjOS4jeaYr+eCueWIsOe6v+auteeahOi3neemu1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmtYvor5XngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmtYvor5XngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g6Led56a7XG4gICAgICovXG4gICAgcG9pbnRUb0xpbmU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgICAgICB2YXIgZCA9IFt4MiAtIHgxLCB5MiAtIHkxXTtcbiAgICAgICAgLy8g5aaC5p6c56uv54K555u4562J77yM5YiZ5Yik5a6a54K55Yiw54K555qE6Led56a7XG4gICAgICAgIGlmICh2ZWMyLmV4YWN0RXF1YWxzKGQsIFswLCAwXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoKHggLSB4MSkgKiAoeCAtIHgxKSArICh5IC0geTEpICogKHkgLSB5MSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1ID0gWy1kWzFdLCBkWzBdXTtcbiAgICAgICAgdmVjMi5ub3JtYWxpemUodSwgdSk7XG4gICAgICAgIHZhciBhID0gW3ggLSB4MSwgeSAtIHkxXTtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHZlYzIuZG90KGEsIHUpKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOe6v+auteeahOinkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g5a+85pWwXG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYXRhbjIoeTIgLSB5MSwgeDIgLSB4MSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js\");\n\n\nfunction getAllPoints(points) {\n var tmp = points.slice(0);\n if (points.length) {\n tmp.push(points[0]);\n }\n return tmp;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多边形的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n return _polyline__WEBPACK_IMPORTED_MODULE_1__[\"default\"].box(points);\n },\n /**\n * 计算多边形的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多边形边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(getAllPoints(points));\n },\n /**\n * 根据比例获取多边形的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(getAllPoints(points), t);\n },\n /**\n * 指定点到多边形的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多边形的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(getAllPoints(points), x, y);\n },\n /**\n * 根据比例获取多边形的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(getAllPoints(points), t);\n },\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3BvbHlnb24uanM/OTZkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0c7QUFDaEU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaURBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsbUVBQWlCO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludEF0U2VnbWVudHMsIGFuZ2xlQXRTZWdtZW50cywgZGlzdGFuY2VBdFNlZ21lbnQsIGxlbmd0aE9mU2VnbWVudCB9IGZyb20gJy4vc2VnbWVudHMnO1xuaW1wb3J0IHBvbHlsaW5lIGZyb20gJy4vcG9seWxpbmUnO1xuZnVuY3Rpb24gZ2V0QWxsUG9pbnRzKHBvaW50cykge1xuICAgIHZhciB0bXAgPSBwb2ludHMuc2xpY2UoMCk7XG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgdG1wLnB1c2gocG9pbnRzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRtcDtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDorqHnrpflpJrovrnlvaLnmoTljIXlm7Tnm5JcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHJldHVybiBwb2x5bGluZS5ib3gocG9pbnRzKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiuoeeul+Wkmui+ueW9oueahOmVv+W6plxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDlpJrovrnlvaLovrnnmoTplb/luqZcbiAgICAgKi9cbiAgICBsZW5ndGg6IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aE9mU2VnbWVudChnZXRBbGxQb2ludHMocG9pbnRzKSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrovrnlvaLnmoTngrlcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmui+ueW9oueahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE54K5XG4gICAgICovXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHBvaW50cywgdCkge1xuICAgICAgICByZXR1cm4gcG9pbnRBdFNlZ21lbnRzKGdldEFsbFBvaW50cyhwb2ludHMpLCB0KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMh+WumueCueWIsOWkmui+ueW9oueahOi3neemu1xuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgg5oyH5a6a54K555qEIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSDmjIflrprngrnnmoQgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g54K55Yiw5aSa6L655b2i55qE6Led56a7XG4gICAgICovXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHBvaW50cywgeCwgeSkge1xuICAgICAgICByZXR1cm4gZGlzdGFuY2VBdFNlZ21lbnQoZ2V0QWxsUG9pbnRzKHBvaW50cyksIHgsIHkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5qC55o2u5q+U5L6L6I635Y+W5aSa6L655b2i55qE5YiH57q/6KeS5bqmXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDlnKjlpJrovrnlvaLnmoTplb/luqbkuIrnmoTmr5TkvotcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOagueaNruavlOS+i+WAvOiuoeeul+WHuuadpeeahOinkuW6plxuICAgICAqL1xuICAgIHRhbmdlbnRBbmdsZTogZnVuY3Rpb24gKHBvaW50cywgdCkge1xuICAgICAgICByZXR1cm4gYW5nbGVBdFNlZ21lbnRzKGdldEFsbFBvaW50cyhwb2ludHMpLCB0KTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(points, t);\n },\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3BvbHlsaW5lLmpzP2QzMGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtHO0FBQzFEO0FBQ3pCO0FBQ2Y7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLG1FQUFpQjtBQUNoQyxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLW1hdGhAMC4xLjdAQGFudHYvZy1tYXRoL2VzbS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50QXRTZWdtZW50cywgYW5nbGVBdFNlZ21lbnRzLCBkaXN0YW5jZUF0U2VnbWVudCwgbGVuZ3RoT2ZTZWdtZW50IH0gZnJvbSAnLi9zZWdtZW50cyc7XG5pbXBvcnQgeyBnZXRCQm94QnlBcnJheSB9IGZyb20gJy4vdXRpbCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLyoqXG4gICAgICog6K6h566X5aSa5oqY57q/55qE5YyF5Zu055uSXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWMheWbtOebklxuICAgICAqL1xuICAgIGJveDogZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgeEFyci5wdXNoKHBvaW50WzBdKTtcbiAgICAgICAgICAgIHlBcnIucHVzaChwb2ludFsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6K6h566X5aSa5oqY57q/55qE6ZW/5bqmXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWkmuadoei+ueeahOmVv+W6plxuICAgICAqL1xuICAgIGxlbmd0aDogZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICByZXR1cm4gbGVuZ3RoT2ZTZWdtZW50KHBvaW50cyk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrmipjnur/nmoTngrlcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmuaKmOe6v+eahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE54K5XG4gICAgICovXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHBvaW50cywgdCkge1xuICAgICAgICByZXR1cm4gcG9pbnRBdFNlZ21lbnRzKHBvaW50cywgdCk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjIflrprngrnliLDlpJrmipjnur/nmoTot53nprtcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IOaMh+WumueCueeahCB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkg5oyH5a6a54K555qEIHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOeCueWIsOWkmuaKmOe6v+eahOi3neemu1xuICAgICAqL1xuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uIChwb2ludHMsIHgsIHkpIHtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlQXRTZWdtZW50KHBvaW50cywgeCwgeSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrmipjnur/nmoTliIfnur/op5LluqZcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmuaKmOe6v+eahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE6KeS5bqmXG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBhbmdsZUF0U2VnbWVudHMocG9pbnRzLCB0KTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlsaW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js\");\n\n\n\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumberEqual\"])(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x2, y2) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x2, y2, x3, y3) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n box: function (x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"piMod\"])(angle);\n },\n});\n//# sourceMappingURL=quadratic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3F1YWRyYXRpYy5qcz84ODlkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQzhDO0FBQ2hDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkNBQUk7QUFDNUI7QUFDQSx3QkFBd0IsNkNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUSxtQkFBbUIsc0RBQVEsbUJBQW1CLHNEQUFRO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNERBQWM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLDREQUFZO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1EQUFLO0FBQ3BCLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1tYXRoQDAuMS43QEBhbnR2L2ctbWF0aC9lc20vcXVhZHJhdGljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IGRpc3RhbmNlLCBpc051bWJlckVxdWFsLCBnZXRCQm94QnlBcnJheSwgcGlNb2QgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgbmVhcmVzdFBvaW50IH0gZnJvbSAnLi9iZXppZXInO1xuLy8g5beu5YC85YWs5byPXG5mdW5jdGlvbiBxdWFkcmF0aWNBdChwMCwgcDEsIHAyLCB0KSB7XG4gICAgdmFyIG9uZXQgPSAxIC0gdDtcbiAgICByZXR1cm4gb25ldCAqIG9uZXQgKiBwMCArIDIgKiB0ICogb25ldCAqIHAxICsgdCAqIHQgKiBwMjtcbn1cbi8vIOaxguaegeWAvFxuZnVuY3Rpb24gZXh0cmVtYShwMCwgcDEsIHAyKSB7XG4gICAgdmFyIGEgPSBwMCArIHAyIC0gMiAqIHAxO1xuICAgIGlmIChpc051bWJlckVxdWFsKGEsIDApKSB7XG4gICAgICAgIHJldHVybiBbMC41XTtcbiAgICB9XG4gICAgdmFyIHJzdCA9IChwMCAtIHAxKSAvIGE7XG4gICAgaWYgKHJzdCA8PSAxICYmIHJzdCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBbcnN0XTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuZnVuY3Rpb24gZGVyaXZhdGl2ZUF0KHAwLCBwMSwgcDIsIHQpIHtcbiAgICByZXR1cm4gMiAqICgxIC0gdCkgKiAocDEgLSBwMCkgKyAyICogdCAqIChwMiAtIHAxKTtcbn1cbi8vIOWIhuWJsui0neWhnuWwlOabsue6v1xuZnVuY3Rpb24gZGl2aWRlUXVhZHJhdGljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHQpIHtcbiAgICAvLyDliJLliIbngrlcbiAgICB2YXIgeHQgPSBxdWFkcmF0aWNBdCh4MSwgeDIsIHgzLCB0KTtcbiAgICB2YXIgeXQgPSBxdWFkcmF0aWNBdCh5MSwgeTIsIHkzLCB0KTtcbiAgICAvLyDliIblibLnmoTnrKzkuIDmnaHmm7Lnur/nmoTmjqfliLbngrlcbiAgICB2YXIgY29udHJvbFBvaW50MSA9IGxpbmUucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgdCk7XG4gICAgLy8g5YiG5Ymy55qE56ys5LqM5p2h5puy57q/55qE5o6n5Yi254K5XG4gICAgdmFyIGNvbnRyb2xQb2ludDIgPSBsaW5lLnBvaW50QXQoeDIsIHkyLCB4MywgeTMsIHQpO1xuICAgIHJldHVybiBbXG4gICAgICAgIFt4MSwgeTEsIGNvbnRyb2xQb2ludDEueCwgY29udHJvbFBvaW50MS55LCB4dCwgeXRdLFxuICAgICAgICBbeHQsIHl0LCBjb250cm9sUG9pbnQyLngsIGNvbnRyb2xQb2ludDIueSwgeDMsIHkzXSxcbiAgICBdO1xufVxuLy8g5L2/55So6L+t5Luj5rOV5Y+W6LSd5aGe5bCU5puy57q/55qE6ZW/5bqmXG5mdW5jdGlvbiBxdWFkcmF0aWNMZW5ndGgoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgaXRlcmF0aW9uQ291bnQpIHtcbiAgICBpZiAoaXRlcmF0aW9uQ291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChkaXN0YW5jZSh4MSwgeTEsIHgyLCB5MikgKyBkaXN0YW5jZSh4MiwgeTIsIHgzLCB5MykgKyBkaXN0YW5jZSh4MSwgeTEsIHgzLCB5MykpIC8gMjtcbiAgICB9XG4gICAgdmFyIHF1YWRyYXRpY3MgPSBkaXZpZGVRdWFkcmF0aWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgMC41KTtcbiAgICB2YXIgbGVmdCA9IHF1YWRyYXRpY3NbMF07XG4gICAgdmFyIHJpZ2h0ID0gcXVhZHJhdGljc1sxXTtcbiAgICBsZWZ0LnB1c2goaXRlcmF0aW9uQ291bnQgLSAxKTtcbiAgICByaWdodC5wdXNoKGl0ZXJhdGlvbkNvdW50IC0gMSk7XG4gICAgcmV0dXJuIHF1YWRyYXRpY0xlbmd0aC5hcHBseShudWxsLCBsZWZ0KSArIHF1YWRyYXRpY0xlbmd0aC5hcHBseShudWxsLCByaWdodCk7XG59XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgYm94OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5Mykge1xuICAgICAgICB2YXIgeEV4dHJlbWEgPSBleHRyZW1hKHgxLCB4MiwgeDMpWzBdO1xuICAgICAgICB2YXIgeUV4dHJlbWEgPSBleHRyZW1hKHkxLCB5MiwgeTMpWzBdO1xuICAgICAgICAvLyDmjqfliLbngrnkuI3liqDlhaUgYm94IOeahOiuoeeul1xuICAgICAgICB2YXIgeEFyciA9IFt4MSwgeDNdO1xuICAgICAgICB2YXIgeUFyciA9IFt5MSwgeTNdO1xuICAgICAgICBpZiAoeEV4dHJlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgeEFyci5wdXNoKHF1YWRyYXRpY0F0KHgxLCB4MiwgeDMsIHhFeHRyZW1hKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHlFeHRyZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHlBcnIucHVzaChxdWFkcmF0aWNBdCh5MSwgeTIsIHkzLCB5RXh0cmVtYSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRCQm94QnlBcnJheSh4QXJyLCB5QXJyKTtcbiAgICB9LFxuICAgIGxlbmd0aDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICAgICAgcmV0dXJuIHF1YWRyYXRpY0xlbmd0aCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCAzKTtcbiAgICB9LFxuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHgwLCB5MCkge1xuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50KFt4MSwgeDIsIHgzXSwgW3kxLCB5MiwgeTNdLCB4MCwgeTAsIHF1YWRyYXRpY0F0KTtcbiAgICB9LFxuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4MCwgeTApIHtcbiAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDAsIHkwKTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHBvaW50LngsIHBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uQXQ6IHF1YWRyYXRpY0F0LFxuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBxdWFkcmF0aWNBdCh4MSwgeDIsIHgzLCB0KSxcbiAgICAgICAgICAgIHk6IHF1YWRyYXRpY0F0KHkxLCB5MiwgeTMsIHQpLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgZGl2aWRlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCkge1xuICAgICAgICByZXR1cm4gZGl2aWRlUXVhZHJhdGljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHQpO1xuICAgIH0sXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCkge1xuICAgICAgICB2YXIgZHggPSBkZXJpdmF0aXZlQXQoeDEsIHgyLCB4MywgdCk7XG4gICAgICAgIHZhciBkeSA9IGRlcml2YXRpdmVBdCh5MSwgeTIsIHkzLCB0KTtcbiAgICAgICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihkeSwgZHgpO1xuICAgICAgICByZXR1cm4gcGlNb2QoYW5nbGUpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVhZHJhdGljLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js ***! \***********************************************************************/ /*! exports provided: lengthOfSegment, pointAtSegments, angleAtSegments, distanceAtSegment */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lengthOfSegment\", function() { return lengthOfSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointAtSegments\", function() { return pointAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleAtSegments\", function() { return angleAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distanceAtSegment\", function() { return distanceAtSegment; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n\n\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1,\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return { segments: segments, totalLength: totalLength };\n}\nfunction lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nfunction pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nfunction angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nfunction distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}\n//# sourceMappingURL=segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3NlZ21lbnRzLmpzPzMyNWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDUTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUM7QUFDQTtBQUNBLHVCQUF1QixzREFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUM7QUFDQTtBQUNBLHVCQUF1QixzREFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw2Q0FBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQSx5QkFBeUIsNkNBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3NlZ21lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSAnLi91dGlsJztcbmZ1bmN0aW9uIGFuYWx5emVQb2ludHMocG9pbnRzKSB7XG4gICAgLy8g6K6h566X5q+P5q6155qE6ZW/5bqm5ZKM5oC755qE6ZW/5bqmXG4gICAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcbiAgICB2YXIgc2VnbWVudHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIGZyb20gPSBwb2ludHNbaV07XG4gICAgICAgIHZhciB0byA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIHZhciBsZW5ndGhfMSA9IGRpc3RhbmNlKGZyb21bMF0sIGZyb21bMV0sIHRvWzBdLCB0b1sxXSk7XG4gICAgICAgIHZhciBzZWcgPSB7XG4gICAgICAgICAgICBmcm9tOiBmcm9tLFxuICAgICAgICAgICAgdG86IHRvLFxuICAgICAgICAgICAgbGVuZ3RoOiBsZW5ndGhfMSxcbiAgICAgICAgfTtcbiAgICAgICAgc2VnbWVudHMucHVzaChzZWcpO1xuICAgICAgICB0b3RhbExlbmd0aCArPSBsZW5ndGhfMTtcbiAgICB9XG4gICAgcmV0dXJuIHsgc2VnbWVudHM6IHNlZ21lbnRzLCB0b3RhbExlbmd0aDogdG90YWxMZW5ndGggfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGhPZlNlZ21lbnQocG9pbnRzKSB7XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgdG90YWxMZW5ndGggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgZnJvbSA9IHBvaW50c1tpXTtcbiAgICAgICAgdmFyIHRvID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgdG90YWxMZW5ndGggKz0gZGlzdGFuY2UoZnJvbVswXSwgZnJvbVsxXSwgdG9bMF0sIHRvWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsTGVuZ3RoO1xufVxuLyoqXG4gKiDmjInnhafmr5TkvovlnKjmlbDmja7niYfmrrXkuK3ojrflj5bngrlcbiAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIhcbiAqIEBwYXJhbSB7bnVtYmVyfSB0IOeZvuWIhuavlCAwLTFcbiAqIEByZXR1cm4ge29iamVjdH0g54K555qE5Z2Q5qCHXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb2ludEF0U2VnbWVudHMocG9pbnRzLCB0KSB7XG4gICAgLy8g6L6555WM5Yik5patXG4gICAgaWYgKHQgPiAxIHx8IHQgPCAwIHx8IHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgX2EgPSBhbmFseXplUG9pbnRzKHBvaW50cyksIHNlZ21lbnRzID0gX2Euc2VnbWVudHMsIHRvdGFsTGVuZ3RoID0gX2EudG90YWxMZW5ndGg7XG4gICAgLy8g5aSa5Liq54K55pyJ5Y+v6IO96YeN5ZCIXG4gICAgaWYgKHRvdGFsTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwb2ludHNbMF1bMF0sXG4gICAgICAgICAgICB5OiBwb2ludHNbMF1bMV0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIOiuoeeul+avlOS+i1xuICAgIHZhciBzdGFydFJhdGlvID0gMDtcbiAgICB2YXIgcG9pbnQgPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZyA9IHNlZ21lbnRzW2ldO1xuICAgICAgICB2YXIgZnJvbSA9IHNlZy5mcm9tLCB0byA9IHNlZy50bztcbiAgICAgICAgdmFyIGN1cnJlbnRSYXRpbyA9IHNlZy5sZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgaWYgKHQgPj0gc3RhcnRSYXRpbyAmJiB0IDw9IHN0YXJ0UmF0aW8gKyBjdXJyZW50UmF0aW8pIHtcbiAgICAgICAgICAgIHZhciBsb2NhbFJhdGlvID0gKHQgLSBzdGFydFJhdGlvKSAvIGN1cnJlbnRSYXRpbztcbiAgICAgICAgICAgIHBvaW50ID0gbGluZS5wb2ludEF0KGZyb21bMF0sIGZyb21bMV0sIHRvWzBdLCB0b1sxXSwgbG9jYWxSYXRpbyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGFydFJhdGlvICs9IGN1cnJlbnRSYXRpbztcbiAgICB9XG4gICAgcmV0dXJuIHBvaW50O1xufVxuLyoqXG4gKiDmjInnhafmr5TkvovlnKjmlbDmja7niYfmrrXkuK3ojrflj5bliIfnur/nmoTop5LluqZcbiAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIhcbiAqIEBwYXJhbSB7bnVtYmVyfSB0IOeZvuWIhuavlCAwLTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZ2xlQXRTZWdtZW50cyhwb2ludHMsIHQpIHtcbiAgICAvLyDovrnnlYzliKTmlq1cbiAgICBpZiAodCA+IDEgfHwgdCA8IDAgfHwgcG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHZhciBfYSA9IGFuYWx5emVQb2ludHMocG9pbnRzKSwgc2VnbWVudHMgPSBfYS5zZWdtZW50cywgdG90YWxMZW5ndGggPSBfYS50b3RhbExlbmd0aDtcbiAgICAvLyDorqHnrpfmr5TkvotcbiAgICB2YXIgc3RhcnRSYXRpbyA9IDA7XG4gICAgdmFyIGFuZ2xlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWcgPSBzZWdtZW50c1tpXTtcbiAgICAgICAgdmFyIGZyb20gPSBzZWcuZnJvbSwgdG8gPSBzZWcudG87XG4gICAgICAgIHZhciBjdXJyZW50UmF0aW8gPSBzZWcubGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgIGlmICh0ID49IHN0YXJ0UmF0aW8gJiYgdCA8PSBzdGFydFJhdGlvICsgY3VycmVudFJhdGlvKSB7XG4gICAgICAgICAgICBhbmdsZSA9IE1hdGguYXRhbjIodG9bMV0gLSBmcm9tWzFdLCB0b1swXSAtIGZyb21bMF0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRSYXRpbyArPSBjdXJyZW50UmF0aW87XG4gICAgfVxuICAgIHJldHVybiBhbmdsZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUF0U2VnbWVudChwb2ludHMsIHgsIHkpIHtcbiAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgbmV4dFBvaW50ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgdmFyIGRpc3RhbmNlXzEgPSBsaW5lLnBvaW50RGlzdGFuY2UocG9pbnRbMF0sIHBvaW50WzFdLCBuZXh0UG9pbnRbMF0sIG5leHRQb2ludFsxXSwgeCwgeSk7XG4gICAgICAgIGlmIChkaXN0YW5jZV8xIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VfMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWluRGlzdGFuY2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWdtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js ***! \*******************************************************************/ /*! exports provided: distance, isNumberEqual, getBBoxByArray, getBBoxRange, piMod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return isNumberEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxByArray\", function() { return getBBoxByArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxRange\", function() { return getBBoxRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"piMod\", function() { return piMod; });\nfunction minNum(array) {\n return Math.min.apply(null, array);\n}\nfunction maxNum(array) {\n return Math.max.apply(null, array);\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nfunction getBBoxByArray(xArr, yArr) {\n var minX = minNum(xArr);\n var minY = minNum(yArr);\n var maxX = maxNum(xArr);\n var maxY = maxNum(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: minNum([x1, x2]),\n maxX: maxNum([x1, x2]),\n minY: minNum([y1, y2]),\n maxY: maxNum([y1, y2]),\n };\n}\nfunction piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3V0aWwuanM/Y2RkZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksT0FBTztBQUNuQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3V0aWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBtaW5OdW0oYXJyYXkpIHtcbiAgICByZXR1cm4gTWF0aC5taW4uYXBwbHkobnVsbCwgYXJyYXkpO1xufVxuZnVuY3Rpb24gbWF4TnVtKGFycmF5KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGFycmF5KTtcbn1cbi8qKlxuICog5Lik54K55LmL6Ze055qE6Led56a7XG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAqIEByZXR1cm4ge251bWJlcn0g6Led56a7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHZhciBkeCA9IHgxIC0geDI7XG4gICAgdmFyIGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlckVxdWFsKHYxLCB2Mikge1xuICAgIHJldHVybiBNYXRoLmFicyh2MSAtIHYyKSA8IDAuMDAxO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpIHtcbiAgICB2YXIgbWluWCA9IG1pbk51bSh4QXJyKTtcbiAgICB2YXIgbWluWSA9IG1pbk51bSh5QXJyKTtcbiAgICB2YXIgbWF4WCA9IG1heE51bSh4QXJyKTtcbiAgICB2YXIgbWF4WSA9IG1heE51bSh5QXJyKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBtaW5YLFxuICAgICAgICB5OiBtaW5ZLFxuICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRCQm94UmFuZ2UoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBtaW5OdW0oW3gxLCB4Ml0pLFxuICAgICAgICBtYXhYOiBtYXhOdW0oW3gxLCB4Ml0pLFxuICAgICAgICBtaW5ZOiBtaW5OdW0oW3kxLCB5Ml0pLFxuICAgICAgICBtYXhZOiBtYXhOdW0oW3kxLCB5Ml0pLFxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcGlNb2QoYW5nbGUpIHtcbiAgICByZXR1cm4gKGFuZ2xlICsgTWF0aC5QSSAqIDIpICUgKE1hdGguUEkgKiAyKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\");\n/* harmony import */ var _defs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./defs */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js\");\n\n\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n return _super.call(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), { autoDraw: true, \n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg' })) || this;\n }\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_6__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n Canvas.prototype.getShape = function (x, y, ev) {\n var target = ev.target || ev.srcElement;\n if (!_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][target.tagName]) {\n var parent_1 = target.parentNode;\n while (parent_1 && !_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][parent_1.tagName]) {\n parent_1 = parent_1.parentNode;\n }\n target = parent_1;\n }\n return this.find(function (child) { return child.get('el') === target; });\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"createSVGElement\"])('svg');\n var context = new _defs__WEBPACK_IMPORTED_MODULE_8__[\"default\"](element);\n element.setAttribute('width', \"\" + this.get('width'));\n element.setAttribute('height', \"\" + this.get('height'));\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n var context = this.get('context');\n var el = this.get('el');\n if (changeType === 'sort') {\n var children_1 = this.get('children');\n if (children_1 && children_1.length) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"sortDom\"])(this, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n var defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n }\n else if (changeType === 'matrix') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setTransform\"])(this);\n }\n else if (changeType === 'clip') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n }\n else if (changeType === 'changeSize') {\n el.setAttribute('width', \"\" + this.get('width'));\n el.setAttribute('height', \"\" + this.get('height'));\n }\n };\n // 复写基类的 draw 方法\n Canvas.prototype.draw = function () {\n var context = this.get('context');\n var children = this.getChildren();\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children);\n }\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9jYW52YXMuanM/ZTUxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNFO0FBQ0g7QUFDQTtBQUNRO0FBQ0k7QUFDdEI7QUFDTDtBQUNGO0FBQzFCO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0EsaUNBQWlDLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxTQUFTO0FBQzlEO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLDhDQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1REFBYTtBQUMxQjtBQUNBLGdDQUFnQyx1REFBYTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxtQ0FBbUMsRUFBRTtBQUNoRjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0VBQWdCO0FBQ3RDLDBCQUEwQiw2Q0FBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlEQUFPO0FBQ3ZCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQVk7QUFDeEI7QUFDQTtBQUNBLFlBQVkseURBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFPO0FBQ2Y7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywyREFBYztBQUNELHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENhbnZhcyB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBTSEFQRV9UT19UQUdTIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgeyBkcmF3Q2hpbGRyZW4gfSBmcm9tICcuL3V0aWwvZHJhdyc7XG5pbXBvcnQgeyBzZXRUcmFuc2Zvcm0sIHNldENsaXAgfSBmcm9tICcuL3V0aWwvc3ZnJztcbmltcG9ydCB7IHNvcnREb20sIGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuL3V0aWwvZG9tJztcbmltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4vZ3JvdXAnO1xuaW1wb3J0IERlZnMgZnJvbSAnLi9kZWZzJztcbnZhciBDYW52YXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENhbnZhcywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYW52YXMoY2ZnKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY2ZnKSwgeyBhdXRvRHJhdzogdHJ1ZSwgXG4gICAgICAgICAgICAvLyDorr7nva7muLLmn5PlvJXmk47kuLogY2FudmFz77yM5Y+q6K+75bGe5oCnXG4gICAgICAgICAgICByZW5kZXJlcjogJ3N2ZycgfSkpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0U2hhcGVCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU2hhcGU7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgLy8g6KaG55uWIENvbnRhaW5lciDkuK3pgJrov4fpgY3ljobnmoTmlrnlvI/ojrflj5Ygc2hhcGUg5a+56LGh55qE6YC76L6R77yM55u05o6l6LWwIFNWRyDnmoQgZG9tIOaLvuWPluWNs+WPr1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0U2hhcGUgPSBmdW5jdGlvbiAoeCwgeSwgZXYpIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldCB8fCBldi5zcmNFbGVtZW50O1xuICAgICAgICBpZiAoIVNIQVBFX1RPX1RBR1NbdGFyZ2V0LnRhZ05hbWVdKSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50XzEgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnRfMSAmJiAhU0hBUEVfVE9fVEFHU1twYXJlbnRfMS50YWdOYW1lXSkge1xuICAgICAgICAgICAgICAgIHBhcmVudF8xID0gcGFyZW50XzEucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldCA9IHBhcmVudF8xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiBjaGlsZC5nZXQoJ2VsJykgPT09IHRhcmdldDsgfSk7XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvnmoTmlrnms5XnlJ/miJDmoIfnrb5cbiAgICBDYW52YXMucHJvdG90eXBlLmNyZWF0ZURvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCdzdmcnKTtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBuZXcgRGVmcyhlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIHRoaXMuZ2V0KCd3aWR0aCcpKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyB0aGlzLmdldCgnaGVpZ2h0JykpO1xuICAgICAgICAvLyDnvJPlrZggY29udGV4dCDlr7nosaFcbiAgICAgICAgdGhpcy5zZXQoJ2NvbnRleHQnLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChjaGFuZ2VUeXBlID09PSAnc29ydCcpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbl8xID0gdGhpcy5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5fMSAmJiBjaGlsZHJlbl8xLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNvcnREb20odGhpcywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuXzEuaW5kZXhPZihhKSAtIGNoaWxkcmVuXzEuaW5kZXhPZihiKSA/IDEgOiAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdjbGVhcicpIHtcbiAgICAgICAgICAgIC8vIGVsIG1heWJlIG51bGwgZm9yIGNhbnZhc1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgLy8g5riF56m6IFNWRyDlhYPntKBcbiAgICAgICAgICAgICAgICBlbC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICB2YXIgZGVmc0VsID0gY29udGV4dC5lbDtcbiAgICAgICAgICAgICAgICAvLyDmuIXnqbogZGVmcyDlhYPntKBcbiAgICAgICAgICAgICAgICBkZWZzRWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgLy8g5bCG5riF56m65ZCO55qEIGRlZnMg5YWD57Sg5oyC6L295YiwIGVsIOS4i1xuICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGRlZnNFbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHNldFRyYW5zZm9ybSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xpcCcpIHtcbiAgICAgICAgICAgIHNldENsaXAodGhpcywgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NoYW5nZVNpemUnKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIHRoaXMuZ2V0KCd3aWR0aCcpKTtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgXCJcIiArIHRoaXMuZ2V0KCdoZWlnaHQnKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOWkjeWGmeWfuuexu+eahCBkcmF3IOaWueazlVxuICAgIENhbnZhcy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHNldENsaXAodGhpcywgY29udGV4dCk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBDYW52YXM7XG59KEFic3RyYWN0Q2FudmFzKSk7XG5leHBvcnQgZGVmYXVsdCBDYW52YXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW52YXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js ***! \*********************************************************************/ /*! exports provided: SHAPE_TO_TAGS, SVG_ATTR_MAP, EVENTS */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHAPE_TO_TAGS\", function() { return SHAPE_TO_TAGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_ATTR_MAP\", function() { return SVG_ATTR_MAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return EVENTS; });\nvar SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject',\n};\nvar SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio',\n};\nvar EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'contextmenu',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'wheel',\n];\n//# sourceMappingURL=constant.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9jb25zdGFudC5qcz9kMzE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vY29uc3RhbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFNIQVBFX1RPX1RBR1MgPSB7XG4gICAgcmVjdDogJ3BhdGgnLFxuICAgIGNpcmNsZTogJ2NpcmNsZScsXG4gICAgbGluZTogJ2xpbmUnLFxuICAgIHBhdGg6ICdwYXRoJyxcbiAgICBtYXJrZXI6ICdwYXRoJyxcbiAgICB0ZXh0OiAndGV4dCcsXG4gICAgcG9seWxpbmU6ICdwb2x5bGluZScsXG4gICAgcG9seWdvbjogJ3BvbHlnb24nLFxuICAgIGltYWdlOiAnaW1hZ2UnLFxuICAgIGVsbGlwc2U6ICdlbGxpcHNlJyxcbiAgICBkb206ICdmb3JlaWduT2JqZWN0Jyxcbn07XG5leHBvcnQgdmFyIFNWR19BVFRSX01BUCA9IHtcbiAgICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gICAgZmlsbFN0eWxlOiAnZmlsbCcsXG4gICAgZmlsbDogJ2ZpbGwnLFxuICAgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgICBzdHJva2VTdHlsZTogJ3N0cm9rZScsXG4gICAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5JyxcbiAgICBzdHJva2U6ICdzdHJva2UnLFxuICAgIHg6ICd4JyxcbiAgICB5OiAneScsXG4gICAgcjogJ3InLFxuICAgIHJ4OiAncngnLFxuICAgIHJ5OiAncnknLFxuICAgIHdpZHRoOiAnd2lkdGgnLFxuICAgIGhlaWdodDogJ2hlaWdodCcsXG4gICAgeDE6ICd4MScsXG4gICAgeDI6ICd4MicsXG4gICAgeTE6ICd5MScsXG4gICAgeTI6ICd5MicsXG4gICAgbGluZUNhcDogJ3N0cm9rZS1saW5lY2FwJyxcbiAgICBsaW5lSm9pbjogJ3N0cm9rZS1saW5lam9pbicsXG4gICAgbGluZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJyxcbiAgICBsaW5lRGFzaDogJ3N0cm9rZS1kYXNoYXJyYXknLFxuICAgIGxpbmVEYXNoT2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICAgIG1pdGVyTGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gICAgZm9udDogJ2ZvbnQnLFxuICAgIGZvbnRTaXplOiAnZm9udC1zaXplJyxcbiAgICBmb250U3R5bGU6ICdmb250LXN0eWxlJyxcbiAgICBmb250VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gICAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICAgIHN0YXJ0QXJyb3c6ICdtYXJrZXItc3RhcnQnLFxuICAgIGVuZEFycm93OiAnbWFya2VyLWVuZCcsXG4gICAgcGF0aDogJ2QnLFxuICAgIGNsYXNzOiAnY2xhc3MnLFxuICAgIGlkOiAnaWQnLFxuICAgIHN0eWxlOiAnc3R5bGUnLFxuICAgIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbn07XG5leHBvcnQgdmFyIEVWRU5UUyA9IFtcbiAgICAnY2xpY2snLFxuICAgICdtb3VzZWRvd24nLFxuICAgICdtb3VzZXVwJyxcbiAgICAnZGJsY2xpY2snLFxuICAgICdjb250ZXh0bWVudScsXG4gICAgJ21vdXNlZW50ZXInLFxuICAgICdtb3VzZWxlYXZlJyxcbiAgICAnbW91c2VvdmVyJyxcbiAgICAnbW91c2VvdXQnLFxuICAgICdtb3VzZW1vdmUnLFxuICAgICd3aGVlbCcsXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\n\n\nvar Arrow = /** @class */ (function () {\n function Arrow(attrs, type) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('marker');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('marker_');\n el.setAttribute('id', id);\n var shape = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n }\n else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n Arrow.prototype.match = function () {\n return false;\n };\n Arrow.prototype._setDefaultPath = function (type, el) {\n var parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', \"M0,0 L\" + 10 * Math.cos(Math.PI / 6) + \",5 L0,10\");\n parent.setAttribute('refX', \"\" + 10 * Math.cos(Math.PI / 6));\n parent.setAttribute('refY', \"\" + 5);\n };\n Arrow.prototype._setMarker = function (r, el) {\n var parent = this.el;\n var path = this.cfg.path;\n var d = this.cfg.d;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n path = path\n .map(function (segment) {\n return segment.join(' ');\n })\n .join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', \"\" + d / r);\n }\n };\n Arrow.prototype.update = function (fill) {\n var child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n }\n else {\n child.setAttribute('fill', fill);\n }\n };\n return Arrow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Arrow);\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2Fycm93LmpzP2JhZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDK0M7QUFDQTtBQUMvQztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBLG9CQUFvQixrRUFBZ0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2Msb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL2RlZnMvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgYXJyb3dcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgaXNBcnJheSwgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgQXJyb3cgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXJyb3coYXR0cnMsIHR5cGUpIHtcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdmFyIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgnbWFya2VyJyk7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdtYXJrZXJfJyk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgICAgIHZhciBzaGFwZSA9IGNyZWF0ZVNWR0VsZW1lbnQoJ3BhdGgnKTtcbiAgICAgICAgc2hhcGUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCBhdHRycy5zdHJva2UgfHwgJ25vbmUnKTtcbiAgICAgICAgc2hhcGUuc2V0QXR0cmlidXRlKCdmaWxsJywgYXR0cnMuZmlsbCB8fCAnbm9uZScpO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChzaGFwZSk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnb3ZlcmZsb3cnLCAndmlzaWJsZScpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ29yaWVudCcsICdhdXRvLXN0YXJ0LXJldmVyc2UnKTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmNoaWxkID0gc2hhcGU7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdmFyIGNmZyA9IGF0dHJzW3R5cGUgPT09ICdtYXJrZXItc3RhcnQnID8gJ3N0YXJ0QXJyb3cnIDogJ2VuZEFycm93J107XG4gICAgICAgIHRoaXMuc3Ryb2tlID0gYXR0cnMuc3Ryb2tlIHx8ICcjMDAwJztcbiAgICAgICAgaWYgKGNmZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0RGVmYXVsdFBhdGgodHlwZSwgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jZmcgPSBjZmc7IC8vIHdoZW4gYXJyb3cgY29uZmlnIGV4aXN0c1xuICAgICAgICAgICAgdGhpcy5fc2V0TWFya2VyKGF0dHJzLmxpbmVXaWR0aCwgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBBcnJvdy5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEFycm93LnByb3RvdHlwZS5fc2V0RGVmYXVsdFBhdGggPSBmdW5jdGlvbiAodHlwZSwgZWwpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZWw7XG4gICAgICAgIC8vIOm7mOiupOeureWktOeahOi+uemVv+S4uiAxMO+8jOWkueinkuS4uiA2MCDluqZcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgXCJNMCwwIExcIiArIDEwICogTWF0aC5jb3MoTWF0aC5QSSAvIDYpICsgXCIsNSBMMCwxMFwiKTtcbiAgICAgICAgcGFyZW50LnNldEF0dHJpYnV0ZSgncmVmWCcsIFwiXCIgKyAxMCAqIE1hdGguY29zKE1hdGguUEkgLyA2KSk7XG4gICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JlZlknLCBcIlwiICsgNSk7XG4gICAgfTtcbiAgICBBcnJvdy5wcm90b3R5cGUuX3NldE1hcmtlciA9IGZ1bmN0aW9uIChyLCBlbCkge1xuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5lbDtcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmNmZy5wYXRoO1xuICAgICAgICB2YXIgZCA9IHRoaXMuY2ZnLmQ7XG4gICAgICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aFxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VnbWVudC5qb2luKCcgJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2QnLCBwYXRoKTtcbiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgaWYgKGQpIHtcbiAgICAgICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JlZlgnLCBcIlwiICsgZCAvIHIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBcnJvdy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGZpbGwpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZDtcbiAgICAgICAgaWYgKGNoaWxkLmF0dHIpIHtcbiAgICAgICAgICAgIGNoaWxkLmF0dHIoJ2ZpbGwnLCBmaWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGZpbGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQXJyb3c7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgQXJyb3c7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcnJvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\n\n\nvar Clip = /** @class */ (function () {\n function Clip(cfg) {\n this.type = 'clip';\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('clipPath');\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('clip_');\n el.id = this.id;\n var shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n Clip.prototype.match = function () {\n return false;\n };\n Clip.prototype.remove = function () {\n var el = this.el;\n el.parentNode.removeChild(el);\n };\n return Clip;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Clip);\n//# sourceMappingURL=clip.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2NsaXAuanM/OTEwYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNzQztBQUNTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBLGtCQUFrQiwyREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2NsaXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgY2xpcFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciBDbGlwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENsaXAoY2ZnKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdjbGlwJztcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdmFyIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgnY2xpcFBhdGgnKTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmlkID0gdW5pcXVlSWQoJ2NsaXBfJyk7XG4gICAgICAgIGVsLmlkID0gdGhpcy5pZDtcbiAgICAgICAgdmFyIHNoYXBlRWwgPSBjZmcuY2ZnLmVsO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChzaGFwZUVsKTtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBDbGlwLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgQ2xpcC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmVsO1xuICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9O1xuICAgIHJldHVybiBDbGlwO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IENsaXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGlwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction addStop(steps) {\n var arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n var stops = '';\n arr.sort(function (a, b) {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n item = item.split(':');\n stops += \"\";\n });\n return stops;\n}\nfunction parseLineGradient(color, el) {\n var arr = regexLG.exec(color);\n var angle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(parseFloat(arr[1])), Math.PI * 2);\n var steps = arr[2];\n var start;\n var end;\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 1,\n };\n }\n else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n }\n else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1,\n };\n end = {\n x: 0,\n y: 0,\n };\n }\n else {\n start = {\n x: 0,\n y: 1,\n };\n end = {\n x: 1,\n y: 0,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\nfunction parseRadialGradient(color, self) {\n var arr = regexRG.exec(color);\n var cx = parseFloat(arr[1]);\n var cy = parseFloat(arr[2]);\n var r = parseFloat(arr[3]);\n var steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\nvar Gradient = /** @class */ (function () {\n function Gradient(cfg) {\n this.cfg = {};\n var el = null;\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('linearGradient');\n parseLineGradient(cfg, el);\n }\n else {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n Gradient.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Gradient;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Gradient);\n//# sourceMappingURL=gradient.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2dyYWRpZW50LmpzP2MwM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMkQ7QUFDWjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBRyxDQUFDLDJEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekI7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2dyYWRpZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGdyYWRpZW50XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IGVhY2gsIG1vZCwgdG9SYWRpYW4sIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xudmFyIHJlZ2V4TEcgPSAvXmxcXHMqXFwoXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4UkcgPSAvXnJcXHMqXFwoXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4Q29sb3JTdG9wID0gL1tcXGQuXSs6KCNbXlxcc10rfFteKV0rXFwpKS9naTtcbmZ1bmN0aW9uIGFkZFN0b3Aoc3RlcHMpIHtcbiAgICB2YXIgYXJyID0gc3RlcHMubWF0Y2gocmVnZXhDb2xvclN0b3ApO1xuICAgIGlmICghYXJyKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgdmFyIHN0b3BzID0gJyc7XG4gICAgYXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgYSA9IGEuc3BsaXQoJzonKTtcbiAgICAgICAgYiA9IGIuc3BsaXQoJzonKTtcbiAgICAgICAgcmV0dXJuIE51bWJlcihhWzBdKSAtIE51bWJlcihiWzBdKTtcbiAgICB9KTtcbiAgICBlYWNoKGFyciwgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaXRlbSA9IGl0ZW0uc3BsaXQoJzonKTtcbiAgICAgICAgc3RvcHMgKz0gXCI8c3RvcCBvZmZzZXQ9XFxcIlwiICsgaXRlbVswXSArIFwiXFxcIiBzdG9wLWNvbG9yPVxcXCJcIiArIGl0ZW1bMV0gKyBcIlxcXCI+PC9zdG9wPlwiO1xuICAgIH0pO1xuICAgIHJldHVybiBzdG9wcztcbn1cbmZ1bmN0aW9uIHBhcnNlTGluZUdyYWRpZW50KGNvbG9yLCBlbCkge1xuICAgIHZhciBhcnIgPSByZWdleExHLmV4ZWMoY29sb3IpO1xuICAgIHZhciBhbmdsZSA9IG1vZCh0b1JhZGlhbihwYXJzZUZsb2F0KGFyclsxXSkpLCBNYXRoLlBJICogMik7XG4gICAgdmFyIHN0ZXBzID0gYXJyWzJdO1xuICAgIHZhciBzdGFydDtcbiAgICB2YXIgZW5kO1xuICAgIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDwgMC41ICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgICAgICBlbmQgPSB7XG4gICAgICAgICAgICB4OiAxLFxuICAgICAgICAgICAgeTogMSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoMC41ICogTWF0aC5QSSA8PSBhbmdsZSAmJiBhbmdsZSA8IE1hdGguUEkpIHtcbiAgICAgICAgc3RhcnQgPSB7XG4gICAgICAgICAgICB4OiAxLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCAxLjUgKiBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RhcnQgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciB0YW5UaGV0YSA9IE1hdGgudGFuKGFuZ2xlKTtcbiAgICB2YXIgdGFuVGhldGEyID0gdGFuVGhldGEgKiB0YW5UaGV0YTtcbiAgICB2YXIgeCA9IChlbmQueCAtIHN0YXJ0LnggKyB0YW5UaGV0YSAqIChlbmQueSAtIHN0YXJ0LnkpKSAvICh0YW5UaGV0YTIgKyAxKSArIHN0YXJ0Lng7XG4gICAgdmFyIHkgPSAodGFuVGhldGEgKiAoZW5kLnggLSBzdGFydC54ICsgdGFuVGhldGEgKiAoZW5kLnkgLSBzdGFydC55KSkpIC8gKHRhblRoZXRhMiArIDEpICsgc3RhcnQueTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3gxJywgc3RhcnQueCk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCd5MScsIHN0YXJ0LnkpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgneDInLCB4KTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3kyJywgeSk7XG4gICAgZWwuaW5uZXJIVE1MID0gYWRkU3RvcChzdGVwcyk7XG59XG5mdW5jdGlvbiBwYXJzZVJhZGlhbEdyYWRpZW50KGNvbG9yLCBzZWxmKSB7XG4gICAgdmFyIGFyciA9IHJlZ2V4UkcuZXhlYyhjb2xvcik7XG4gICAgdmFyIGN4ID0gcGFyc2VGbG9hdChhcnJbMV0pO1xuICAgIHZhciBjeSA9IHBhcnNlRmxvYXQoYXJyWzJdKTtcbiAgICB2YXIgciA9IHBhcnNlRmxvYXQoYXJyWzNdKTtcbiAgICB2YXIgc3RlcHMgPSBhcnJbNF07XG4gICAgc2VsZi5zZXRBdHRyaWJ1dGUoJ2N4JywgY3gpO1xuICAgIHNlbGYuc2V0QXR0cmlidXRlKCdjeScsIGN5KTtcbiAgICBzZWxmLnNldEF0dHJpYnV0ZSgncicsIHIpO1xuICAgIHNlbGYuaW5uZXJIVE1MID0gYWRkU3RvcChzdGVwcyk7XG59XG52YXIgR3JhZGllbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gR3JhZGllbnQoY2ZnKSB7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IG51bGw7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdncmFkaWVudF8nKTtcbiAgICAgICAgaWYgKGNmZy50b0xvd2VyQ2FzZSgpWzBdID09PSAnbCcpIHtcbiAgICAgICAgICAgIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgnbGluZWFyR3JhZGllbnQnKTtcbiAgICAgICAgICAgIHBhcnNlTGluZUdyYWRpZW50KGNmZywgZWwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwgPSBjcmVhdGVTVkdFbGVtZW50KCdyYWRpYWxHcmFkaWVudCcpO1xuICAgICAgICAgICAgcGFyc2VSYWRpYWxHcmFkaWVudChjZmcsIGVsKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBHcmFkaWVudC5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAodHlwZSwgYXR0cikge1xuICAgICAgICByZXR1cm4gdGhpcy5jZmcgPT09IGF0dHI7XG4gICAgfTtcbiAgICByZXR1cm4gR3JhZGllbnQ7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JhZGllbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncmFkaWVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _gradient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gradient */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js\");\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shadow */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./arrow */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js\");\n/* harmony import */ var _clip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js\");\n/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pattern */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\n\nvar Defs = /** @class */ (function () {\n function Defs(canvas) {\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_6__[\"createSVGElement\"])('defs');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n Defs.prototype.find = function (type, attr) {\n var children = this.children;\n var result = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n };\n Defs.prototype.findById = function (id) {\n var children = this.children;\n var flag = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n };\n Defs.prototype.add = function (item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n };\n Defs.prototype.getDefaultArrow = function (attrs, name) {\n var stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addGradient = function (cfg) {\n var gradient = new _gradient__WEBPACK_IMPORTED_MODULE_1__[\"default\"](cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n };\n Defs.prototype.addArrow = function (attrs, name) {\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addShadow = function (cfg) {\n var shadow = new _shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"](cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n };\n Defs.prototype.addPattern = function (cfg) {\n var pattern = new _pattern__WEBPACK_IMPORTED_MODULE_5__[\"default\"](cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n };\n Defs.prototype.addClip = function (cfg) {\n var clip = new _clip__WEBPACK_IMPORTED_MODULE_4__[\"default\"](cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n };\n return Defs;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Defs);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2luZGV4LmpzPzNiNGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ0o7QUFDSjtBQUNGO0FBQ0Y7QUFDTTtBQUNlO0FBQy9DO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxQkFBcUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsOENBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsOENBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwrQ0FBTTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGdEQUFPO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkNBQUk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vZGVmcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBkZWZzXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR3JhZGllbnQgZnJvbSAnLi9ncmFkaWVudCc7XG5pbXBvcnQgU2hhZG93IGZyb20gJy4vc2hhZG93JztcbmltcG9ydCBBcnJvdyBmcm9tICcuL2Fycm93JztcbmltcG9ydCBDbGlwIGZyb20gJy4vY2xpcCc7XG5pbXBvcnQgUGF0dGVybiBmcm9tICcuL3BhdHRlcm4nO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciBEZWZzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERlZnMoY2FudmFzKSB7XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2RlZnMnKTtcbiAgICAgICAgdmFyIGlkID0gdW5pcXVlSWQoJ2RlZnNfJyk7XG4gICAgICAgIGVsLmlkID0gaWQ7XG4gICAgICAgIGNhbnZhcy5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgdGhpcy5kZWZhdWx0QXJyb3cgPSB7fTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICB9XG4gICAgRGVmcy5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uICh0eXBlLCBhdHRyKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0ubWF0Y2godHlwZSwgYXR0cikpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBjaGlsZHJlbltpXS5pZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuZmluZEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIGZsYWcgPSBudWxsO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgZmxhZyA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbGFnO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGl0ZW0pO1xuICAgICAgICBpdGVtLmNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXM7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5nZXREZWZhdWx0QXJyb3cgPSBmdW5jdGlvbiAoYXR0cnMsIG5hbWUpIHtcbiAgICAgICAgdmFyIHN0cm9rZSA9IGF0dHJzLnN0cm9rZSB8fCBhdHRycy5zdHJva2VTdHlsZTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFycm93W3N0cm9rZV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRBcnJvd1tzdHJva2VdLmlkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhcnJvdyA9IG5ldyBBcnJvdyhhdHRycywgbmFtZSk7XG4gICAgICAgIHRoaXMuZGVmYXVsdEFycm93W3N0cm9rZV0gPSBhcnJvdztcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChhcnJvdy5lbCk7XG4gICAgICAgIHRoaXMuYWRkKGFycm93KTtcbiAgICAgICAgcmV0dXJuIGFycm93LmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkR3JhZGllbnQgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBncmFkaWVudCA9IG5ldyBHcmFkaWVudChjZmcpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKGdyYWRpZW50LmVsKTtcbiAgICAgICAgdGhpcy5hZGQoZ3JhZGllbnQpO1xuICAgICAgICByZXR1cm4gZ3JhZGllbnQuaWQ7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5hZGRBcnJvdyA9IGZ1bmN0aW9uIChhdHRycywgbmFtZSkge1xuICAgICAgICB2YXIgYXJyb3cgPSBuZXcgQXJyb3coYXR0cnMsIG5hbWUpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKGFycm93LmVsKTtcbiAgICAgICAgdGhpcy5hZGQoYXJyb3cpO1xuICAgICAgICByZXR1cm4gYXJyb3cuaWQ7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5hZGRTaGFkb3cgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBzaGFkb3cgPSBuZXcgU2hhZG93KGNmZyk7XG4gICAgICAgIHRoaXMuZWwuYXBwZW5kQ2hpbGQoc2hhZG93LmVsKTtcbiAgICAgICAgdGhpcy5hZGQoc2hhZG93KTtcbiAgICAgICAgcmV0dXJuIHNoYWRvdy5pZDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZFBhdHRlcm4gPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBwYXR0ZXJuID0gbmV3IFBhdHRlcm4oY2ZnKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChwYXR0ZXJuLmVsKTtcbiAgICAgICAgdGhpcy5hZGQocGF0dGVybik7XG4gICAgICAgIHJldHVybiBwYXR0ZXJuLmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkQ2xpcCA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICAgICAgdmFyIGNsaXAgPSBuZXcgQ2xpcChjZmcpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKGNsaXAuZWwpO1xuICAgICAgICB0aGlzLmFkZChjbGlwKTtcbiAgICAgICAgcmV0dXJuIGNsaXAuaWQ7XG4gICAgfTtcbiAgICByZXR1cm4gRGVmcztcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBEZWZzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar Pattern = /** @class */ (function () {\n function Pattern(cfg) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('pattern');\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n var child = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('image');\n el.appendChild(child);\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n var arr = regexPR.exec(cfg);\n var source = arr[2];\n child.setAttribute('href', source);\n var img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', \"\" + img.width);\n el.setAttribute('height', \"\" + img.height);\n }\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return this;\n }\n Pattern.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Pattern;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Pattern);\n//# sourceMappingURL=pattern.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3BhdHRlcm4uanM/YmE4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNzQztBQUNTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBLG9CQUFvQixrRUFBZ0I7QUFDcEM7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3BhdHRlcm4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgcGF0dGVyblxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciByZWdleFBSID0gL15wXFxzKlxcKFxccyooW2F4eW5dKVxccypcXClcXHMqKC4qKS9pO1xudmFyIFBhdHRlcm4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUGF0dGVybihjZmcpIHtcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdmFyIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgncGF0dGVybicpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3BhdHRlcm5Vbml0cycsICd1c2VyU3BhY2VPblVzZScpO1xuICAgICAgICB2YXIgY2hpbGQgPSBjcmVhdGVTVkdFbGVtZW50KCdpbWFnZScpO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdwYXR0ZXJuXycpO1xuICAgICAgICBlbC5pZCA9IGlkO1xuICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHZhciBhcnIgPSByZWdleFBSLmV4ZWMoY2ZnKTtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyclsyXTtcbiAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCdocmVmJywgc291cmNlKTtcbiAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpZiAoIXNvdXJjZS5tYXRjaCgvXmRhdGE6L2kpKSB7XG4gICAgICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICAgICAgfVxuICAgICAgICBpbWcuc3JjID0gc291cmNlO1xuICAgICAgICBmdW5jdGlvbiBvbmxvYWQoKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIGltZy53aWR0aCk7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyBpbWcuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICBvbmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBvbmxvYWQ7XG4gICAgICAgICAgICAvLyBGaXggb25sb2FkKCkgYnVnIGluIElFOVxuICAgICAgICAgICAgaW1nLnNyYyA9IGltZy5zcmM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIFBhdHRlcm4ucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHR5cGUsIGF0dHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnID09PSBhdHRyO1xuICAgIH07XG4gICAgcmV0dXJuIFBhdHRlcm47XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgUGF0dGVybjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdHRlcm4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\n\n\nvar ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy',\n};\nvar SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%',\n};\nvar Shadow = /** @class */ (function () {\n function Shadow(cfg) {\n this.type = 'filter';\n this.cfg = {};\n this.type = 'filter';\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('filter');\n // expand the filter region to fill in shadows\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(SHADOW_DIMENSION, function (v, k) {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n Shadow.prototype.match = function (type, cfg) {\n if (this.type !== type) {\n return false;\n }\n var flag = true;\n var config = this.cfg;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(Object.keys(config), function (attr) {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n };\n Shadow.prototype.update = function (name, value) {\n var config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n };\n Shadow.prototype._parseShadow = function (config, el) {\n var child = \"\";\n el.innerHTML = child;\n };\n return Shadow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shadow);\n//# sourceMappingURL=shadow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3NoYWRvdy5qcz9lZjRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ0c7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBLGtCQUFrQiwyREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3NoYWRvdy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBzaGFkb3dcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgZWFjaCwgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgQVRUUl9NQVAgPSB7XG4gICAgc2hhZG93Q29sb3I6ICdjb2xvcicsXG4gICAgc2hhZG93T3BhY2l0eTogJ29wYWNpdHknLFxuICAgIHNoYWRvd0JsdXI6ICdibHVyJyxcbiAgICBzaGFkb3dPZmZzZXRYOiAnZHgnLFxuICAgIHNoYWRvd09mZnNldFk6ICdkeScsXG59O1xudmFyIFNIQURPV19ESU1FTlNJT04gPSB7XG4gICAgeDogJy00MCUnLFxuICAgIHk6ICctNDAlJyxcbiAgICB3aWR0aDogJzIwMCUnLFxuICAgIGhlaWdodDogJzIwMCUnLFxufTtcbnZhciBTaGFkb3cgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2hhZG93KGNmZykge1xuICAgICAgICB0aGlzLnR5cGUgPSAnZmlsdGVyJztcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZpbHRlcic7XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2ZpbHRlcicpO1xuICAgICAgICAvLyBleHBhbmQgdGhlIGZpbHRlciByZWdpb24gdG8gZmlsbCBpbiBzaGFkb3dzXG4gICAgICAgIGVhY2goU0hBRE9XX0RJTUVOU0lPTiwgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShrLCB2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5pZCA9IHVuaXF1ZUlkKCdmaWx0ZXJfJyk7XG4gICAgICAgIHRoaXMuZWwuaWQgPSB0aGlzLmlkO1xuICAgICAgICB0aGlzLmNmZyA9IGNmZztcbiAgICAgICAgdGhpcy5fcGFyc2VTaGFkb3coY2ZnLCBlbCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBTaGFkb3cucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHR5cGUsIGNmZykge1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZsYWcgPSB0cnVlO1xuICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jZmc7XG4gICAgICAgIGVhY2goT2JqZWN0LmtleXMoY29uZmlnKSwgZnVuY3Rpb24gKGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChjb25maWdbYXR0cl0gIT09IGNmZ1thdHRyXSkge1xuICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmxhZztcbiAgICB9O1xuICAgIFNoYWRvdy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBjb25maWcgPSB0aGlzLmNmZztcbiAgICAgICAgY29uZmlnW0FUVFJfTUFQW25hbWVdXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9wYXJzZVNoYWRvdyhjb25maWcsIHRoaXMuZWwpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIFNoYWRvdy5wcm90b3R5cGUuX3BhcnNlU2hhZG93ID0gZnVuY3Rpb24gKGNvbmZpZywgZWwpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gXCI8ZmVEcm9wU2hhZG93XFxuICAgICAgZHg9XFxcIlwiICsgKGNvbmZpZy5keCB8fCAwKSArIFwiXFxcIlxcbiAgICAgIGR5PVxcXCJcIiArIChjb25maWcuZHkgfHwgMCkgKyBcIlxcXCJcXG4gICAgICBzdGREZXZpYXRpb249XFxcIlwiICsgKGNvbmZpZy5ibHVyID8gY29uZmlnLmJsdXIgLyAxMCA6IDApICsgXCJcXFwiXFxuICAgICAgZmxvb2QtY29sb3I9XFxcIlwiICsgKGNvbmZpZy5jb2xvciA/IGNvbmZpZy5jb2xvciA6ICcjMDAwJykgKyBcIlxcXCJcXG4gICAgICBmbG9vZC1vcGFjaXR5PVxcXCJcIiArIChjb25maWcub3BhY2l0eSA/IGNvbmZpZy5vcGFjaXR5IDogMSkgKyBcIlxcXCJcXG4gICAgICAvPlwiO1xuICAgICAgICBlbC5pbm5lckhUTUwgPSBjaGlsZDtcbiAgICB9O1xuICAgIHJldHVybiBTaGFkb3c7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgU2hhZG93O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hhZG93LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n\n\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // SVG 中分组对应实体标签 \n Group.prototype.isEntityGroup = function () {\n return true;\n };\n Group.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_7__[\"createSVGElement\"])('g');\n this.set('el', element);\n var parent = this.getParent();\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n };\n // 覆盖基类的 afterAttrsChange 方法\n Group.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n Group.prototype.draw = function (context) {\n var children = this.getChildren();\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n this.createDom();\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setClip\"])(this, context);\n this.createPath(context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"drawChildren\"])(context, children);\n }\n }\n };\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n Group.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setTransform\"])(this);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9ncm91cC5qcz8wYjI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNXO0FBQ1g7QUFDRDtBQUMwQjtBQUNSO0FBQ1Q7QUFDSTtBQUM5QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGtFQUFnQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0EsUUFBUSxpRUFBYztBQUN0QjtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQU87QUFDbkI7QUFDQTtBQUNBLGdCQUFnQiwrREFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxLQUFLO0FBQ3BCLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQkFBZ0Isc0RBQVk7QUFDNUIsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNULFFBQVEsOERBQVk7QUFDcEI7QUFDQTtBQUNBLENBQUMsQ0FBQywwREFBYTtBQUNBLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9ncm91cC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RHcm91cCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGRyYXdDaGlsZHJlbiwgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuL3V0aWwvZHJhdyc7XG5pbXBvcnQgeyBzZXRDbGlwLCBzZXRUcmFuc2Zvcm0gfSBmcm9tICcuL3V0aWwvc3ZnJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4vdXRpbC9kb20nO1xudmFyIEdyb3VwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhHcm91cCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBHcm91cCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICAvLyBTVkcg5Lit5YiG57uE5a+55bqU5a6e5L2T5qCH562+IDxnPlxuICAgIEdyb3VwLnByb3RvdHlwZS5pc0VudGl0eUdyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5jcmVhdGVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnZycpO1xuICAgICAgICB0aGlzLnNldCgnZWwnLCBlbGVtZW50KTtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHZhciBwYXJlbnROb2RlID0gcGFyZW50LmdldCgnZWwnKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHBhcmVudE5vZGUgbWF5YmUgbnVsbCBmb3IgZ3JvdXBcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50LmNyZWF0ZURvbSgpO1xuICAgICAgICAgICAgICAgIHBhcmVudC5zZXQoJ2VsJywgcGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9O1xuICAgIC8vIOimhuebluWfuuexu+eahCBhZnRlckF0dHJzQ2hhbmdlIOaWueazlVxuICAgIEdyb3VwLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZS5jYWxsKHRoaXMsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgLy8g5Y+q5pyJ5oyC6L295Yiw55S75biD5LiL77yM5omN5a+55YWD57Sg6L+b6KGM5a6e6ZmF5riy5p+TXG4gICAgICAgIGlmIChjYW52YXMgJiYgY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVBhdGgoY29udGV4dCwgdGFyZ2V0QXR0cnMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgR3JvdXAucHJvdG90eXBlLm9uQ2FudmFzQ2hhbmdlID0gZnVuY3Rpb24gKGNoYW5nZVR5cGUpIHtcbiAgICAgICAgcmVmcmVzaEVsZW1lbnQodGhpcywgY2hhbmdlVHlwZSk7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZ2V0U2hhcGVCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU2hhcGU7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmICh0aGlzLmdldCgnZGVzdHJveWVkJykpIHtcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOe7mOWItuWIhue7hOeahOi3r+W+hFxuICAgICAqIEBwYXJhbSB7RGVmc30gY29udGV4dCDkuIrkuIvmlodcbiAgICAgKiBAcGFyYW0ge1NoYXBlQXR0cnN9IHRhcmdldEF0dHJzIOa4suafk+eahOebruagh+WxnuaAp1xuICAgICAqL1xuICAgIEdyb3VwLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0VHJhbnNmb3JtKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIEdyb3VwO1xufShBYnN0cmFjdEdyb3VwKSk7XG5leHBvcnQgZGVmYXVsdCBHcm91cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyb3VwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9pbmRleC5qcz85N2Y0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNKO0FBQ2dCO0FBQ0Y7QUFDMUI7QUFDVjtBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmV4cG9ydCAqIGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENhbnZhcyB9IGZyb20gJy4vY2FudmFzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgR3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmV4cG9ydCB7IFNoYXBlIH07XG5leHBvcnQgdmFyIHZlcnNpb24gPSAnMC41LjYnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./index */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../group */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\");\n\n\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'svg';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n // 覆盖基类的 afterAttrsChange 方法\n ShapeBase.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_6__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var el = this.get('el');\n var bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n }\n else {\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var lineWidth = this.getHitLineWidth();\n var halfWidth = lineWidth / 2;\n var minX = x - halfWidth;\n var minY = y - halfWidth;\n var maxX = x + width + halfWidth;\n var maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: width + lineWidth,\n height: height + lineWidth,\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n };\n ShapeBase.prototype.isFill = function () {\n var _a = this.attr(), fill = _a.fill, fillStyle = _a.fillStyle;\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n };\n ShapeBase.prototype.isStroke = function () {\n var _a = this.attr(), stroke = _a.stroke, strokeStyle = _a.strokeStyle;\n return (stroke || strokeStyle) && this.canStroke;\n };\n ShapeBase.prototype.draw = function (context, targetAttrs) {\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(this);\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setClip\"])(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n ShapeBase.prototype.createPath = function (context, targetAttrs) { };\n // stroke and fill\n ShapeBase.prototype.strokeAndFill = function (context, targetAttrs) {\n var attrs = targetAttrs || this.attr();\n var fill = attrs.fill, fillStyle = attrs.fillStyle, stroke = attrs.stroke, strokeStyle = attrs.strokeStyle, fillOpacity = attrs.fillOpacity, strokeOpacity = attrs.strokeOpacity, lineWidth = attrs.lineWidth;\n var el = this.get('el');\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n }\n else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n }\n else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['fillOpacity'], fillOpacity);\n }\n }\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n }\n else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n }\n else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['lineWidth'], lineWidth);\n }\n }\n };\n ShapeBase.prototype._setColor = function (context, attr, value) {\n var el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], value);\n }\n };\n ShapeBase.prototype.shadow = function (context, targetAttrs) {\n var attrs = this.attr();\n var _a = targetAttrs || attrs, shadowOffsetX = _a.shadowOffsetX, shadowOffsetY = _a.shadowOffsetY, shadowBlur = _a.shadowBlur, shadowColor = _a.shadowColor;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setShadow\"])(this, context);\n }\n };\n ShapeBase.prototype.transform = function (targetAttrs) {\n var attrs = this.attr();\n var matrix = (targetAttrs || attrs).matrix;\n if (matrix) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setTransform\"])(this);\n }\n };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n return this.isPointInPath(refX, refY);\n };\n ShapeBase.prototype.isPointInPath = function (refX, refY) {\n var el = this.get('el');\n var canvas = this.get('canvas');\n var bbox = canvas.get('el').getBoundingClientRect();\n var clientX = refX + bbox.left;\n var clientY = refY + bbox.top;\n var element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n var _a = this.attrs, lineWidth = _a.lineWidth, lineAppendWidth = _a.lineAppendWidth;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9iYXNlLmpzPzgwYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ0M7QUFDa0I7QUFDdkI7QUFDTTtBQUNIO0FBQ1Y7QUFDSjtBQUNnQjtBQUM3QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUVBQXFFO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixrRUFBYTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQVM7QUFDekI7QUFDQSxZQUFZLHlEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsS0FBSztBQUNwQixlQUFlLFdBQVc7QUFDMUI7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQTtBQUNBLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzREFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsRUFBRTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzREFBWTtBQUN4QztBQUNBLHlCQUF5QixFQUFFO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFZO0FBQ3hDO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDBEQUFhO0FBQ0Esd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdFNoYXBlIH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmltcG9ydCB7IHNldFNoYWRvdywgc2V0VHJhbnNmb3JtLCBzZXRDbGlwIH0gZnJvbSAnLi4vdXRpbC9zdmcnO1xuaW1wb3J0IHsgY3JlYXRlRG9tIH0gZnJvbSAnLi4vdXRpbC9kb20nO1xuaW1wb3J0IHsgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgR3JvdXAgZnJvbSAnLi4vZ3JvdXAnO1xuaW1wb3J0IHsgZ2V0QkJveE1ldGhvZCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG52YXIgU2hhcGVCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTaGFwZUJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU2hhcGVCYXNlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdzdmcnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDorr7nva7pu5jorqTlgLxcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgbGluZVdpZHRoOiAxLCBsaW5lQXBwZW5kV2lkdGg6IDAsIHN0cm9rZU9wYWNpdHk6IDEsIGZpbGxPcGFjaXR5OiAxIH0pO1xuICAgIH07XG4gICAgLy8g6KaG55uW5Z+657G755qEIGFmdGVyQXR0cnNDaGFuZ2Ug5pa55rOVXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZS5jYWxsKHRoaXMsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgLy8g5Y+q5pyJ5oyC6L295Yiw55S75biD5LiL77yM5omN5a+55YWD57Sg6L+b6KGM5a6e6ZmF5riy5p+TXG4gICAgICAgIGlmIChjYW52YXMgJiYgY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgICAgICB0aGlzLmRyYXcoY29udGV4dCwgdGFyZ2V0QXR0cnMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOS4gOS6m+aWueazleiwg+eUqOS8muW8lei1t+eUu+W4g+WPmOWMllxuICAgICAqIEBwYXJhbSB7Q2hhbmdlVHlwZX0gY2hhbmdlVHlwZSDmlLnlj5jnmoTnsbvlnotcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLm9uQ2FudmFzQ2hhbmdlID0gZnVuY3Rpb24gKGNoYW5nZVR5cGUpIHtcbiAgICAgICAgcmVmcmVzaEVsZW1lbnQodGhpcywgY2hhbmdlVHlwZSk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNhbGN1bGF0ZUJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgYmJveCA9IG51bGw7XG4gICAgICAgIC8vIOWMheWbtOebkuiuoeeul+S+nei1luS6jue7mOWItu+8jOWmguaenOi/mOayoeacieeUn+aIkOWvueW6lOeahCBEb20g5YWD57Sg77yM5YiZ5YyF5Zu055uS55qE6ZW/5a695Z2H5Li6IDBcbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBiYm94ID0gZWwuZ2V0QkJveCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGJib3hNZXRob2QgPSBnZXRCQm94TWV0aG9kKHRoaXMuZ2V0KCd0eXBlJykpO1xuICAgICAgICAgICAgaWYgKGJib3hNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBiYm94ID0gYmJveE1ldGhvZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYmJveCkge1xuICAgICAgICAgICAgdmFyIHggPSBiYm94LngsIHkgPSBiYm94LnksIHdpZHRoID0gYmJveC53aWR0aCwgaGVpZ2h0ID0gYmJveC5oZWlnaHQ7XG4gICAgICAgICAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRIaXRMaW5lV2lkdGgoKTtcbiAgICAgICAgICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICAgICAgdmFyIG1pblggPSB4IC0gaGFsZldpZHRoO1xuICAgICAgICAgICAgdmFyIG1pblkgPSB5IC0gaGFsZldpZHRoO1xuICAgICAgICAgICAgdmFyIG1heFggPSB4ICsgd2lkdGggKyBoYWxmV2lkdGg7XG4gICAgICAgICAgICB2YXIgbWF4WSA9IHkgKyBoZWlnaHQgKyBoYWxmV2lkdGg7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbWluWDogMCxcbiAgICAgICAgICAgIG1pblk6IDAsXG4gICAgICAgICAgICBtYXhYOiAwLFxuICAgICAgICAgICAgbWF4WTogMCxcbiAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0ZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCBmaWxsID0gX2EuZmlsbCwgZmlsbFN0eWxlID0gX2EuZmlsbFN0eWxlO1xuICAgICAgICByZXR1cm4gKGZpbGwgfHwgZmlsbFN0eWxlIHx8IHRoaXMuaXNDbGlwU2hhcGUoKSkgJiYgdGhpcy5jYW5GaWxsO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc1N0cm9rZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHN0cm9rZSA9IF9hLnN0cm9rZSwgc3Ryb2tlU3R5bGUgPSBfYS5zdHJva2VTdHlsZTtcbiAgICAgICAgcmV0dXJuIChzdHJva2UgfHwgc3Ryb2tlU3R5bGUpICYmIHRoaXMuY2FuU3Ryb2tlO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVEb20odGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgICAgIHRoaXMuc2hhZG93KGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgICAgIHRoaXMuc3Ryb2tlQW5kRmlsbChjb250ZXh0LCB0YXJnZXRBdHRycyk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybSh0YXJnZXRBdHRycyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDnu5jliLblm77lvaLnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0RlZnN9IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICogQHBhcmFtIHtTaGFwZUF0dHJzfSB0YXJnZXRBdHRycyDmuLLmn5PnmoTnm67moIflsZ7mgKdcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHsgfTtcbiAgICAvLyBzdHJva2UgYW5kIGZpbGxcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnN0cm9rZUFuZEZpbGwgPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGFyZ2V0QXR0cnMgfHwgdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBmaWxsID0gYXR0cnMuZmlsbCwgZmlsbFN0eWxlID0gYXR0cnMuZmlsbFN0eWxlLCBzdHJva2UgPSBhdHRycy5zdHJva2UsIHN0cm9rZVN0eWxlID0gYXR0cnMuc3Ryb2tlU3R5bGUsIGZpbGxPcGFjaXR5ID0gYXR0cnMuZmlsbE9wYWNpdHksIHN0cm9rZU9wYWNpdHkgPSBhdHRycy5zdHJva2VPcGFjaXR5LCBsaW5lV2lkdGggPSBhdHRycy5saW5lV2lkdGg7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAodGhpcy5jYW5GaWxsKSB7XG4gICAgICAgICAgICAvLyDliJ3mrKHmuLLmn5Plkozmm7TmlrDmuLLmn5PnmoTpgLvovpHmnInmiYDkuI3lkIw6IOWIneasoea4suafk+WAvOS4uuepuuaXtu+8jOmcgOimgeiuvue9ruS4uiBub25l77yM5ZCm5YiZ5bCx5Lya5piv6buR6Imy77yM6ICM5pu05paw5riy5p+T5YiZ5LiN6ZyA6KaBXG4gICAgICAgICAgICBpZiAoIXRhcmdldEF0dHJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ2ZpbGwnLCBmaWxsIHx8IGZpbGxTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgnZmlsbCcgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRDb2xvcihjb250ZXh0LCAnZmlsbCcsIGZpbGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ2ZpbGxTdHlsZScgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggZmlsbFN0eWxlXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ2ZpbGwnLCBmaWxsU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbGxPcGFjaXR5KSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFsnZmlsbE9wYWNpdHknXSwgZmlsbE9wYWNpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNhblN0cm9rZSAmJiBsaW5lV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldEF0dHJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ3N0cm9rZScsIHN0cm9rZSB8fCBzdHJva2VTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgnc3Ryb2tlJyBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdzdHJva2UnLCBzdHJva2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ3N0cm9rZVN0eWxlJyBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgIC8vIGNvbXBhdGlibGUgd2l0aCBzdHJva2VTdHlsZVxuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdzdHJva2UnLCBzdHJva2VTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3Ryb2tlT3BhY2l0eSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbJ3N0cm9rZU9wYWNpdHknXSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFsnbGluZVdpZHRoJ10sIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuX3NldENvbG9yID0gZnVuY3Rpb24gKGNvbnRleHQsIGF0dHIsIHZhbHVlKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIHNldCBgbm9uZWAgdG8gYXZvaWQgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgJ25vbmUnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgaWYgKC9eW3IsUixMLGxdezF9W1xcc10qXFwoLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFyIGlkID0gY29udGV4dC5maW5kKCdncmFkaWVudCcsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGNvbnRleHQuYWRkR3JhZGllbnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoL15bcCxQXXsxfVtcXHNdKlxcKC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGNvbnRleHQuZmluZCgncGF0dGVybicsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGNvbnRleHQuYWRkUGF0dGVybih2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCBcInVybCgjXCIgKyBpZCArIFwiKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zaGFkb3cgPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBfYSA9IHRhcmdldEF0dHJzIHx8IGF0dHJzLCBzaGFkb3dPZmZzZXRYID0gX2Euc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSA9IF9hLnNoYWRvd09mZnNldFksIHNoYWRvd0JsdXIgPSBfYS5zaGFkb3dCbHVyLCBzaGFkb3dDb2xvciA9IF9hLnNoYWRvd0NvbG9yO1xuICAgICAgICBpZiAoc2hhZG93T2Zmc2V0WCB8fCBzaGFkb3dPZmZzZXRZIHx8IHNoYWRvd0JsdXIgfHwgc2hhZG93Q29sb3IpIHtcbiAgICAgICAgICAgIHNldFNoYWRvdyh0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAodGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBtYXRyaXggPSAodGFyZ2V0QXR0cnMgfHwgYXR0cnMpLm1hdHJpeDtcbiAgICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICAgICAgc2V0VHJhbnNmb3JtKHRoaXMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzSW5TaGFwZSA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUG9pbnRJblBhdGgocmVmWCwgcmVmWSk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzUG9pbnRJblBhdGggPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgdmFyIGJib3ggPSBjYW52YXMuZ2V0KCdlbCcpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgY2xpZW50WCA9IHJlZlggKyBiYm94LmxlZnQ7XG4gICAgICAgIHZhciBjbGllbnRZID0gcmVmWSArIGJib3gudG9wO1xuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoY2xpZW50WCwgY2xpZW50WSk7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuaXNFcXVhbE5vZGUoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bnur/mi77lj5bnmoTlrr3luqZcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSDnur/nmoTmi77lj5blrr3luqZcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldEhpdExpbmVXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRycywgbGluZVdpZHRoID0gX2EubGluZVdpZHRoLCBsaW5lQXBwZW5kV2lkdGggPSBfYS5saW5lQXBwZW5kV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmlzU3Ryb2tlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5lV2lkdGggKyBsaW5lQXBwZW5kV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfTtcbiAgICByZXR1cm4gU2hhcGVCYXNlO1xufShBYnN0cmFjdFNoYXBlKSk7XG5leHBvcnQgZGVmYXVsdCBTaGFwZUJhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'circle';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9jaXJjbGUuanM/OTk1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDVjtBQUNTO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxtQkFBbUI7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGNpcmNsZVxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgQ2lyY2xlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDaXJjbGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdjaXJjbGUnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDaXJjbGUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgcjogMCB9KTtcbiAgICB9O1xuICAgIENpcmNsZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgLy8g5ZyG5ZKM5qSt5ZyG55qE54K55Z2Q5qCH5bGe5oCn5LiN5pivIHgsIHnvvIzogIzmmK8gY3gsIGN5XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3gnIHx8IGF0dHIgPT09ICd5Jykge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShcImNcIiArIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2lyY2xlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IENpcmNsZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNpcmNsZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Dom = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Dom, _super);\n function Dom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'dom';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Dom.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n var element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n var children = el.childNodes;\n for (var i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n }\n else {\n el.innerHTML = element; // set innerHTML\n }\n }\n else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n };\n return Dom;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Dom);\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9kb20uanM/N2YwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDQTtBQUNTO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osZ0JBQWdCLHNEQUFZO0FBQzVCLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxRQUFRO0FBQ3pEO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksa0VBQUcsRUFBQztBQUNuQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2RvbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBkb21cbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgRG9tID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEb20sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRG9tKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdkb20nO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIERvbS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgYXR0cnNbJ2h0bWwnXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBhdHRyc1snaHRtbCddLmNhbGwodGhpcywgYXR0cnMpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZE5vZGVzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVDaGlsZChjaGlsZHJlbltpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGVsZW1lbnQpOyAvLyBhcHBlbmQgdG8gZWwgaWYgaXQncyBhbiBlbGVtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbC5pbm5lckhUTUwgPSBlbGVtZW50OyAvLyBzZXQgaW5uZXJIVE1MXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSBhdHRyc1snaHRtbCddOyAvLyBzZXQgaW5uZXJIVE1MXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBEb207XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgRG9tO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'ellipse';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9lbGxpcHNlLmpzPzM1OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ1Y7QUFDUztBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsMkJBQTJCO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZWxsaXBzZVxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgRWxsaXBzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRWxsaXBzZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBFbGxpcHNlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdlbGxpcHNlJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCByeDogMCwgcnk6IDAgfSk7XG4gICAgfTtcbiAgICBFbGxpcHNlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICAvLyDlnIblkozmpK3lnIbnmoTngrnlnZDmoIflsZ7mgKfkuI3mmK8geCwgee+8jOiAjOaYryBjeCwgY3lcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAneCcgfHwgYXR0ciA9PT0gJ3knKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFwiY1wiICsgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBFbGxpcHNlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IEVsbGlwc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGxpcHNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Image = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Image, _super);\n function Image() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'image';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Image.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n Image.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'img') {\n _this._setImage(attrs.img);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Image.prototype.setAttr = function (name, value) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n };\n Image.prototype._setImage = function (img) {\n var attrs = this.attr();\n var el = this.get('el');\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img)) {\n el.setAttribute('href', img);\n }\n else if (img instanceof window.Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n }\n else if (img instanceof HTMLElement && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n }\n else if (img instanceof ImageData) {\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', \"\" + img.width);\n canvas.setAttribute('height', \"\" + img.height);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', \"\" + img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', \"\" + img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n };\n return Image;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9pbWFnZS5qcz9mMGQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNBO0FBQ0Q7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLGtDQUFrQztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLDJEQUFRO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvaW1hZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgaW1hZ2VcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBJbWFnZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSW1hZ2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW1hZ2UoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2ltYWdlJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBJbWFnZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pO1xuICAgIH07XG4gICAgSW1hZ2UucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAnaW1nJykge1xuICAgICAgICAgICAgICAgIF90aGlzLl9zZXRJbWFnZShhdHRycy5pbWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEltYWdlLnByb3RvdHlwZS5zZXRBdHRyID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYXR0cnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdpbWcnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRJbWFnZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEltYWdlLnByb3RvdHlwZS5fc2V0SW1hZ2UgPSBmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGltZykpIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGltZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaW1nIGluc3RhbmNlb2Ygd2luZG93LkltYWdlKSB7XG4gICAgICAgICAgICBpZiAoIWF0dHJzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGltZy53aWR0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCd3aWR0aCcsIGltZy53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCdoZWlnaHQnLCBpbWcuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGltZy5zcmMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzU3RyaW5nKGltZy5ub2RlTmFtZSkgJiYgaW1nLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdDQU5WQVMnKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBpbWcudG9EYXRhVVJMKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIEltYWdlRGF0YSkge1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBcIlwiICsgaW1nLndpZHRoKTtcbiAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyBpbWcuaGVpZ2h0KTtcbiAgICAgICAgICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLnB1dEltYWdlRGF0YShpbWcsIDAsIDApO1xuICAgICAgICAgICAgaWYgKCFhdHRycy53aWR0aCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBcIlwiICsgaW1nLndpZHRoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHIoJ3dpZHRoJywgaW1nLndpZHRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXR0cnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCdoZWlnaHQnLCBpbWcuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGNhbnZhcy50b0RhdGFVUkwoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBJbWFnZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBJbWFnZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js ***! \************************************************************************/ /*! exports provided: Base, Circle, Dom, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Dom\", function() { return _dom__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./marker */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./text */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9pbmRleC5qcz9hMzM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ0k7QUFDTjtBQUNRO0FBQ0o7QUFDRjtBQUNJO0FBQ0o7QUFDTTtBQUNFO0FBQ1I7QUFDQTtBQUN6QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2lyY2xlIH0gZnJvbSAnLi9jaXJjbGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEb20gfSBmcm9tICcuL2RvbSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsbGlwc2UgfSBmcm9tICcuL2VsbGlwc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbWFnZSB9IGZyb20gJy4vaW1hZ2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5lIH0gZnJvbSAnLi9saW5lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUG9seWdvbiB9IGZyb20gJy4vcG9seWdvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlsaW5lIH0gZnJvbSAnLi9wb2x5bGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlY3QgfSBmcm9tICcuL3JlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0IH0gZnJvbSAnLi90ZXh0Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'line';\n _this.canFill = false;\n _this.canStroke = true;\n return _this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9saW5lLmpzPzViMTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ2dEO0FBQ0o7QUFDRDtBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsaUVBQWlFO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQSw2QkFBNkIsMkRBQVE7QUFDckMsa0RBQWtELHNEQUFZO0FBQzlELHlEQUF5RCxzREFBWTtBQUNyRSxvQ0FBb0Msc0RBQVk7QUFDaEQ7QUFDQTtBQUNBLHVDQUF1QyxzREFBWTtBQUNuRDtBQUNBO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbi8qKlxuICogQGZpbGVvdmVydmlldyBsaW5lXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgZWFjaCwgaXNPYmplY3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBMaW5lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMaW5lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIExpbmUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2xpbmUnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgTGluZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMCwgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIExpbmUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAnc3RhcnRBcnJvdycgfHwgYXR0ciA9PT0gJ2VuZEFycm93Jykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBpc09iamVjdCh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gY29udGV4dC5hZGRBcnJvdyhhdHRycywgU1ZHX0FUVFJfTUFQW2F0dHJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250ZXh0LmdldERlZmF1bHRBcnJvdyhhdHRycywgU1ZHX0FUVFJfTUFQW2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlIG1hdGggY2FsY3VsYXRpb24gdG8gZ2V0IGxlbmd0aCBvZiBsaW5lXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBsZW5ndGhcbiAgICAgKi9cbiAgICBMaW5lLnByb3RvdHlwZS5nZXRUb3RhbExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5sZW5ndGgoeDEsIHkxLCB4MiwgeTIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlIG1hdGggY2FsY3VsYXRpb24gdG8gZ2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpbyBhcyBzYW1lIHNhIENhbnZhcyB2ZXJzaW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgTGluZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5wb2ludEF0KHgxLCB5MSwgeDIsIHkyLCByYXRpbyk7XG4gICAgfTtcbiAgICByZXR1cm4gTGluZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBMaW5lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _symbols__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbols */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js\");\n/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'marker';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Marker.prototype.createPath = function (context) {\n var el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n };\n Marker.prototype._assembleMarker = function () {\n var d = this._getPath();\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d)) {\n return d\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n }\n return d;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n var r = attrs.r || attrs.radius;\n var symbol = attrs.symbol || 'circle';\n var method;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(symbol)) {\n method = symbol;\n }\n else {\n method = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(symbol);\n }\n if (!method) {\n console.warn(method + \" symbol is not exist.\");\n return null;\n }\n return method(x, y, r);\n };\n // 作为其静态属性\n Marker.symbolsFactory = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9tYXJrZXIvaW5kZXguanM/MWY0ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDZTtBQUNqQjtBQUNPO0FBQ3ZDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdEQUFjO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQWM7QUFDMUM7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvbWFya2VyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IG1hcmtlclxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgc3ltYm9sc0ZhY3RvcnkgZnJvbSAnLi9zeW1ib2xzJztcbnZhciBNYXJrZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1hcmtlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNYXJrZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ21hcmtlcic7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE1hcmtlci5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2QnLCB0aGlzLl9hc3NlbWJsZU1hcmtlcigpKTtcbiAgICB9O1xuICAgIE1hcmtlci5wcm90b3R5cGUuX2Fzc2VtYmxlTWFya2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZCA9IHRoaXMuX2dldFBhdGgoKTtcbiAgICAgICAgaWYgKGlzQXJyYXkoZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oJyAnKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH07XG4gICAgTWFya2VyLnByb3RvdHlwZS5fZ2V0UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueCwgeSA9IGF0dHJzLnk7XG4gICAgICAgIC8vIOWFvOWuuSByIOWSjCByYWRpdXMg5Lik56eN5YaZ5rOV77yM5o6o6I2Q5L2/55SoIHJcbiAgICAgICAgdmFyIHIgPSBhdHRycy5yIHx8IGF0dHJzLnJhZGl1cztcbiAgICAgICAgdmFyIHN5bWJvbCA9IGF0dHJzLnN5bWJvbCB8fCAnY2lyY2xlJztcbiAgICAgICAgdmFyIG1ldGhvZDtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oc3ltYm9sKSkge1xuICAgICAgICAgICAgbWV0aG9kID0gc3ltYm9sO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWV0aG9kID0gc3ltYm9sc0ZhY3RvcnkuZ2V0KHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtZXRob2QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihtZXRob2QgKyBcIiBzeW1ib2wgaXMgbm90IGV4aXN0LlwiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRob2QoeCwgeSwgcik7XG4gICAgfTtcbiAgICAvLyDkvZzkuLrlhbbpnZnmgIHlsZ7mgKdcbiAgICBNYXJrZXIuc3ltYm9sc0ZhY3RvcnkgPSBzeW1ib2xzRmFjdG9yeTtcbiAgICByZXR1cm4gTWFya2VyO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IE1hcmtlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x, y],\n ['m', -r, 0],\n ['a', r, r, 0, 1, 0, r * 2, 0],\n ['a', r, r, 0, 1, 0, -r * 2, 0],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n get: function (type) {\n return Symbols[type];\n },\n register: function (type, func) {\n Symbols[type] = func;\n },\n remove: function (type) {\n delete Symbols[type];\n },\n getAll: function () {\n return Symbols;\n },\n});\n//# sourceMappingURL=symbols.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9tYXJrZXIvc3ltYm9scy5qcz85OTdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDZTtBQUNmO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9tYXJrZXIvc3ltYm9scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2xzID0ge1xuICAgIC8vIOWchlxuICAgIGNpcmNsZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFsnTScsIHgsIHldLFxuICAgICAgICAgICAgWydtJywgLXIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMSwgMCwgciAqIDIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMSwgMCwgLXIgKiAyLCAwXSxcbiAgICAgICAgXTtcbiAgICB9LFxuICAgIC8vIOato+aWueW9olxuICAgIHNxdWFyZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSArIHJdLCBbJ0wnLCB4IC0gciwgeSArIHJdLCBbJ1onXV07XG4gICAgfSxcbiAgICAvLyDoj7HlvaJcbiAgICBkaWFtb25kOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydMJywgeCwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeV0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g5LiJ6KeS5b2iXG4gICAgdHJpYW5nbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgKyBkaWZmWV0sIFsnTCcsIHgsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5ICsgZGlmZlldLCBbJ3onXV07XG4gICAgfSxcbiAgICAvLyDlgJLkuInop5LlvaJcbiAgICB0cmlhbmdsZURvd246IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5IC0gZGlmZlldLCBbJ0wnLCB4LCB5ICsgZGlmZlldLCBbJ1onXV07XG4gICAgfSxcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAodHlwZSkge1xuICAgICAgICByZXR1cm4gU3ltYm9sc1t0eXBlXTtcbiAgICB9LFxuICAgIHJlZ2lzdGVyOiBmdW5jdGlvbiAodHlwZSwgZnVuYykge1xuICAgICAgICBTeW1ib2xzW3R5cGVdID0gZnVuYztcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgZGVsZXRlIFN5bWJvbHNbdHlwZV07XG4gICAgfSxcbiAgICBnZXRBbGw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFN5bWJvbHM7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zeW1ib2xzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n\n\n\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'path';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'path' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\n el.setAttribute('d', _this._formatPath(value));\n }\n else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Path.prototype._formatPath = function (value) {\n var newValue = value\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n };\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var el = this.get('el');\n return el ? el.getTotalLength() : null;\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var el = this.get('el');\n var totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n var point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point\n ? {\n x: point.x,\n y: point.y,\n }\n : null;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wYXRoLmpzP2Y4MDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNTO0FBQ1Y7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFDQUFxQztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaLG1DQUFtQywwREFBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwyREFBUTtBQUNyQyxrREFBa0Qsc0RBQVk7QUFDOUQseURBQXlELHNEQUFZO0FBQ3JFLG9DQUFvQyxzREFBWTtBQUNoRDtBQUNBO0FBQ0EsdUNBQXVDLHNEQUFZO0FBQ25EO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc09iamVjdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIFBhdGggPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBhdGgsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGF0aCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncGF0aCc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFBhdGgucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAncGF0aCcgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2QnLCBfdGhpcy5fZm9ybWF0UGF0aCh2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXR0ciA9PT0gJ3N0YXJ0QXJyb3cnIHx8IGF0dHIgPT09ICdlbmRBcnJvdycpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gaXNPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNvbnRleHQuYWRkQXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGV4dC5nZXREZWZhdWx0QXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLl9mb3JtYXRQYXRoID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5qb2luKCcgJyk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgICAgIGlmICh+bmV3VmFsdWUuaW5kZXhPZignTmFOJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgdG90YWwgbGVuZ3RoIG9mIHBhdGhcbiAgICAgKiDlsL3nrqHpgJrov4fmtY/op4jlmajnmoQgU1ZHUGF0aEVsZW1lbnQuZ2V0VG90YWxMZW5ndGgoKSDmjqXlj6Pojrflj5bnmoQgcGF0aCDplb/luqbvvIxcbiAgICAgKiDkuI4gQ2FudmFzIOeJiOacrOmAmui/h+aVsOWtpuiuoeeul+eahOaWueW8j+W+l+WIsOeahOmVv+W6puacieS4gOS6m+e7huW+ruW3ruW8gu+8jOS9huacgOWkp+ivr+W3ruWcqOS4quS9jeaVsOWDj+e0oO+8jOeyvuW6puS4iuWPr+S7peiDveaOpeWPl1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICByZXR1cm4gZWwgPyBlbC5nZXRUb3RhbExlbmd0aCgpIDogbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBwb2ludCBhY2NvcmRpbmcgdG8gcmF0aW9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9cbiAgICAgKiBAcmV0dXJuIHtQb2ludH0gcG9pbnRcbiAgICAgKi9cbiAgICBQYXRoLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uIChyYXRpbykge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvNjM0XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvaW50ID0gZWwgPyBlbC5nZXRQb2ludEF0TGVuZ3RoKHJhdGlvICogdG90YWxMZW5ndGgpIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIHBvaW50XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICB4OiBwb2ludC54LFxuICAgICAgICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gUGF0aDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBQYXRoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polygon.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5Z29uLmpzPzdiYzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUMyQztBQUNBO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1oscUNBQXFDLDBEQUFPO0FBQzVDLHNFQUFzRSxrQ0FBa0MsRUFBRTtBQUMxRztBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5Z29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgcG9seWdvblxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBlYWNoLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgUG9seWdvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUG9seWdvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQb2x5Z29uKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdwb2x5Z29uJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUG9seWdvbi5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICdwb2ludHMnICYmIGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdwb2ludHMnLCB2YWx1ZS5tYXAoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludFswXSArIFwiLFwiICsgcG9pbnRbMV07IH0pLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIFBvbHlnb247XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUG9seWdvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n\n\n\n\n\nvar Polyline = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polyline';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polyline.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n // 更新属性时,检测是否更改了 points\n Polyline.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n Polyline.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n Polyline.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n Polyline.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Polyline.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n Polyline.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Polyline.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Polyline.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polyline);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5bGluZS5qcz9mMjIxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNZO0FBQ1I7QUFDRTtBQUNQO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxQ0FBcUM7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaLHFDQUFxQywwREFBTztBQUM1QyxzRUFBc0Usa0NBQWtDLEVBQUU7QUFDMUc7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCO0FBQ0E7QUFDQSxnQ0FBZ0MscURBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BvbHlsaW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgUG9seWxpbmUgYXMgUG9seWxpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBQb2x5bGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUG9seWxpbmUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG9seWxpbmUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3BvbHlsaW5lJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBwb2ludHNcbiAgICBQb2x5bGluZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIGlmIChbJ3BvaW50cyddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENhY2hlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBvbHlsaW5lLnByb3RvdHlwZS5fcmVzZXRDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCBudWxsKTtcbiAgICB9O1xuICAgIFBvbHlsaW5lLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3BvaW50cycgJiYgaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIHZhbHVlLm1hcChmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50WzBdICsgXCIsXCIgKyBwb2ludFsxXTsgfSkuam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgbGVuZ3RoIG9mIHBvbHlsaW5lXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBsZW5ndGhcbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIC8vIGdldCB0b3RhbExlbmd0aCBmcm9tIGNhY2hlXG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgICAgICBpZiAoIWlzTmlsKHRvdGFsTGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvdGFsTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIFBvbHlsaW5lVXRpbC5sZW5ndGgocG9pbnRzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBwb2ludCBhY2NvcmRpbmcgdG8gcmF0aW9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9cbiAgICAgKiBAcmV0dXJuIHtQb2ludH0gcG9pbnRcbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgLy8gZ2V0IHRDYWNoZSBmcm9tIGNhY2hlXG4gICAgICAgIHZhciB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIGlmICghdENhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUY2FjaGUoKTtcbiAgICAgICAgICAgIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VidDtcbiAgICAgICAgdmFyIGluZGV4O1xuICAgICAgICBlYWNoKHRDYWNoZSwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIGlmIChyYXRpbyA+PSB2WzBdICYmIHJhdGlvIDw9IHZbMV0pIHtcbiAgICAgICAgICAgICAgICBzdWJ0ID0gKHJhdGlvIC0gdlswXSkgLyAodlsxXSAtIHZbMF0pO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5wb2ludEF0KHBvaW50c1tpbmRleF1bMF0sIHBvaW50c1tpbmRleF1bMV0sIHBvaW50c1tpbmRleCArIDFdWzBdLCBwb2ludHNbaW5kZXggKyAxXVsxXSwgc3VidCk7XG4gICAgfTtcbiAgICBQb2x5bGluZS5wcm90b3R5cGUuX3NldFRjYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgaWYgKCFwb2ludHMgfHwgcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgaWYgKHRvdGFsTGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGVtcExlbmd0aCA9IDA7XG4gICAgICAgIHZhciB0Q2FjaGUgPSBbXTtcbiAgICAgICAgdmFyIHNlZ21lbnRUO1xuICAgICAgICB2YXIgc2VnbWVudEw7XG4gICAgICAgIGVhY2gocG9pbnRzLCBmdW5jdGlvbiAocCwgaSkge1xuICAgICAgICAgICAgaWYgKHBvaW50c1tpICsgMV0pIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50VCA9IFtdO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzBdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRMID0gTGluZVV0aWwubGVuZ3RoKHBbMF0sIHBbMV0sIHBvaW50c1tpICsgMV1bMF0sIHBvaW50c1tpICsgMV1bMV0pO1xuICAgICAgICAgICAgICAgIHRlbXBMZW5ndGggKz0gc2VnbWVudEw7XG4gICAgICAgICAgICAgICAgc2VnbWVudFRbMV0gPSB0ZW1wTGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgICAgICAgICAgdENhY2hlLnB1c2goc2VnbWVudFQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ3RDYWNoZScsIHRDYWNoZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgc3RhcnQgdGFuZ2VudCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0U3RhcnRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXV0pO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV1dKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBlbmQgdGFuZ2VudCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0RW5kVGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIGwgPSBwb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzW2wgLSAxXVswXSwgcG9pbnRzW2wgLSAxXVsxXV0pO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzW2xdWzBdLCBwb2ludHNbbF1bMV1dKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBQb2x5bGluZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBQb2x5bGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlsaW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/format */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js\");\n/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'rect';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n var completed = false;\n // 和组装 path 相关的绘图属性\n var pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', _this._assembleRect(attrs));\n completed = true;\n }\n else if (pathRelatedAttrs.indexOf(attr) === -1 && _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Rect.prototype._assembleRect = function (attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n var radius = attrs.radius;\n if (!radius) {\n return \"M \" + x + \",\" + y + \" l \" + w + \",0 l 0,\" + h + \" l\" + -w + \" 0 z\";\n }\n var r = Object(_util_format__WEBPACK_IMPORTED_MODULE_4__[\"parseRadius\"])(radius);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n }\n else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n }\n else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n }\n else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n }\n else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n var d = [\n [\"M \" + (x + r.r1) + \",\" + y],\n [\"l \" + (w - r.r1 - r.r2) + \",0\"],\n [\"a \" + r.r2 + \",\" + r.r2 + \",0,0,1,\" + r.r2 + \",\" + r.r2],\n [\"l 0,\" + (h - r.r2 - r.r3)],\n [\"a \" + r.r3 + \",\" + r.r3 + \",0,0,1,\" + -r.r3 + \",\" + r.r3],\n [\"l \" + (r.r3 + r.r4 - w) + \",0\"],\n [\"a \" + r.r4 + \",\" + r.r4 + \",0,0,1,\" + -r.r4 + \",\" + -r.r4],\n [\"l 0,\" + (r.r4 + r.r1 - h)],\n [\"a \" + r.r1 + \",\" + r.r1 + \",0,0,1,\" + r.r1 + \",\" + -r.r1],\n ['z'],\n ];\n return d.join(' ');\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9yZWN0LmpzP2M2NGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDRDtBQUNaO0FBQ1k7QUFDRTtBQUM3QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLDZDQUE2QztBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsc0RBQVk7QUFDMUUsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdFQUFXO0FBQzNCLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyByZWN0XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCB7IHBhcnNlUmFkaXVzIH0gZnJvbSAnLi4vdXRpbC9mb3JtYXQnO1xudmFyIFJlY3QgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUmVjdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncmVjdCc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFJlY3QucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFkaXVzOiAwIH0pO1xuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIC8vIOWKoOS4iueKtuaAgemHj++8jOeUqOadpeagh+iusCBwYXRoIOaYr+WQpuW3sue7hOijhVxuICAgICAgICB2YXIgY29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgIC8vIOWSjOe7hOijhSBwYXRoIOebuOWFs+eahOe7mOWbvuWxnuaAp1xuICAgICAgICB2YXIgcGF0aFJlbGF0ZWRBdHRycyA9IFsneCcsICd5JywgJ3dpZHRoJywgJ2hlaWdodCcsICdyYWRpdXMnXTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAocGF0aFJlbGF0ZWRBdHRycy5pbmRleE9mKGF0dHIpICE9PSAtMSAmJiAhY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgX3RoaXMuX2Fzc2VtYmxlUmVjdChhdHRycykpO1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXRoUmVsYXRlZEF0dHJzLmluZGV4T2YoYXR0cikgPT09IC0xICYmIFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBSZWN0LnByb3RvdHlwZS5fYXNzZW1ibGVSZWN0ID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgdyA9IGF0dHJzLndpZHRoO1xuICAgICAgICB2YXIgaCA9IGF0dHJzLmhlaWdodDtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGF0dHJzLnJhZGl1cztcbiAgICAgICAgaWYgKCFyYWRpdXMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIk0gXCIgKyB4ICsgXCIsXCIgKyB5ICsgXCIgbCBcIiArIHcgKyBcIiwwIGwgMCxcIiArIGggKyBcIiBsXCIgKyAtdyArIFwiIDAgelwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gcGFyc2VSYWRpdXMocmFkaXVzKTtcbiAgICAgICAgaWYgKGlzQXJyYXkocmFkaXVzKSkge1xuICAgICAgICAgICAgaWYgKHJhZGl1cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByLnIxID0gci5yMiA9IHIucjMgPSByLnI0ID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHIucjEgPSByLnIzID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgICAgIHIucjIgPSByLnI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgICAgIHIucjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICAgICAgci5yMiA9IHIucjQgPSByYWRpdXNbMV07XG4gICAgICAgICAgICAgICAgci5yMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHIucjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICAgICAgci5yMiA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgICAgICByLnIzID0gcmFkaXVzWzJdO1xuICAgICAgICAgICAgICAgIHIucjQgPSByYWRpdXNbM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByLnIxID0gci5yMiA9IHIucjMgPSByLnI0ID0gcmFkaXVzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkID0gW1xuICAgICAgICAgICAgW1wiTSBcIiArICh4ICsgci5yMSkgKyBcIixcIiArIHldLFxuICAgICAgICAgICAgW1wibCBcIiArICh3IC0gci5yMSAtIHIucjIpICsgXCIsMFwiXSxcbiAgICAgICAgICAgIFtcImEgXCIgKyByLnIyICsgXCIsXCIgKyByLnIyICsgXCIsMCwwLDEsXCIgKyByLnIyICsgXCIsXCIgKyByLnIyXSxcbiAgICAgICAgICAgIFtcImwgMCxcIiArIChoIC0gci5yMiAtIHIucjMpXSxcbiAgICAgICAgICAgIFtcImEgXCIgKyByLnIzICsgXCIsXCIgKyByLnIzICsgXCIsMCwwLDEsXCIgKyAtci5yMyArIFwiLFwiICsgci5yM10sXG4gICAgICAgICAgICBbXCJsIFwiICsgKHIucjMgKyByLnI0IC0gdykgKyBcIiwwXCJdLFxuICAgICAgICAgICAgW1wiYSBcIiArIHIucjQgKyBcIixcIiArIHIucjQgKyBcIiwwLDAsMSxcIiArIC1yLnI0ICsgXCIsXCIgKyAtci5yNF0sXG4gICAgICAgICAgICBbXCJsIDAsXCIgKyAoci5yNCArIHIucjEgLSBoKV0sXG4gICAgICAgICAgICBbXCJhIFwiICsgci5yMSArIFwiLFwiICsgci5yMSArIFwiLDAsMCwxLFwiICsgci5yMSArIFwiLFwiICsgLXIucjFdLFxuICAgICAgICAgICAgWyd6J10sXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBkLmpvaW4oJyAnKTtcbiAgICB9O1xuICAgIHJldHVybiBSZWN0O1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFJlY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! detect-browser */ \"./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\nvar LETTER_SPACING = 0.3;\nvar BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging',\n};\n// for FireFox\nvar BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging',\n};\nvar ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end',\n};\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'text';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n Text.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n this._setFont();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'text') {\n _this._setText(\"\" + value);\n }\n else if (attr === 'matrix' && value) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_3__[\"setTransform\"])(_this);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n };\n Text.prototype._setFont = function () {\n var el = this.get('el');\n var _a = this.attr(), textBaseline = _a.textBaseline, textAlign = _a.textAlign;\n var browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_2__[\"detect\"])();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n }\n else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n };\n Text.prototype._setText = function (text) {\n var el = this.get('el');\n var _a = this.attr(), x = _a.x, _b = _a.textBaseline, baseline = _b === void 0 ? 'bottom' : _b;\n if (!text) {\n el.innerHTML = '';\n }\n else if (~text.indexOf('\\n')) {\n var textArr = text.split('\\n');\n var textLen_1 = textArr.length - 1;\n var arr_1 = '';\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(textArr, function (segment, i) {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'top') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'middle') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'bottom') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'hanging') {\n arr_1 += \"\" + segment + \"\";\n }\n }\n else {\n arr_1 += \"\" + segment + \"\";\n }\n });\n el.innerHTML = arr_1;\n }\n else {\n el.innerHTML = text;\n }\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS90ZXh0LmpzPzliOTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNWO0FBQ007QUFDRztBQUNBO0FBQ1o7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsK0tBQStLO0FBQzdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4REFBWTtBQUM1QjtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxzREFBc0QsdUJBQXVCO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZEQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgdGV4dFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBkZXRlY3QgfSBmcm9tICdkZXRlY3QtYnJvd3Nlcic7XG5pbXBvcnQgeyBzZXRUcmFuc2Zvcm0gfSBmcm9tICcuLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgTEVUVEVSX1NQQUNJTkcgPSAwLjM7XG52YXIgQkFTRUxJTkVfTUFQID0ge1xuICAgIHRvcDogJ2JlZm9yZS1lZGdlJyxcbiAgICBtaWRkbGU6ICdjZW50cmFsJyxcbiAgICBib3R0b206ICdhZnRlci1lZGdlJyxcbiAgICBhbHBoYWJldGljOiAnYmFzZWxpbmUnLFxuICAgIGhhbmdpbmc6ICdoYW5naW5nJyxcbn07XG4vLyBmb3IgRmlyZUZveFxudmFyIEJBU0VMSU5FX01BUF9GT1JfRklSRUZPWCA9IHtcbiAgICB0b3A6ICd0ZXh0LWJlZm9yZS1lZGdlJyxcbiAgICBtaWRkbGU6ICdjZW50cmFsJyxcbiAgICBib3R0b206ICd0ZXh0LWFmdGVyLWVkZ2UnLFxuICAgIGFscGhhYmV0aWM6ICdhbHBoYWJldGljJyxcbiAgICBoYW5naW5nOiAnaGFuZ2luZycsXG59O1xudmFyIEFOQ0hPUl9NQVAgPSB7XG4gICAgbGVmdDogJ2xlZnQnLFxuICAgIHN0YXJ0OiAnbGVmdCcsXG4gICAgY2VudGVyOiAnbWlkZGxlJyxcbiAgICByaWdodDogJ2VuZCcsXG4gICAgZW5kOiAnZW5kJyxcbn07XG52YXIgVGV4dCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUZXh0KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgVGV4dC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB0ZXh0OiBudWxsLCBmb250U2l6ZTogMTIsIGZvbnRGYW1pbHk6ICdzYW5zLXNlcmlmJywgZm9udFN0eWxlOiAnbm9ybWFsJywgZm9udFdlaWdodDogJ25vcm1hbCcsIGZvbnRWYXJpYW50OiAnbm9ybWFsJywgdGV4dEFsaWduOiAnc3RhcnQnLCB0ZXh0QmFzZWxpbmU6ICdib3R0b20nIH0pO1xuICAgIH07XG4gICAgVGV4dC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHRoaXMuX3NldEZvbnQoKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX3NldFRleHQoXCJcIiArIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGF0dHIgPT09ICdtYXRyaXgnICYmIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VHJhbnNmb3JtKF90aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgncGFpbnQtb3JkZXInLCAnc3Ryb2tlJyk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnc3Ryb2tlLWxpbmVjYXA6YnV0dDsgc3Ryb2tlLWxpbmVqb2luOm1pdGVyOycpO1xuICAgIH07XG4gICAgVGV4dC5wcm90b3R5cGUuX3NldEZvbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgdGV4dEJhc2VsaW5lID0gX2EudGV4dEJhc2VsaW5lLCB0ZXh0QWxpZ24gPSBfYS50ZXh0QWxpZ247XG4gICAgICAgIHZhciBicm93c2VyID0gZGV0ZWN0KCk7XG4gICAgICAgIGlmIChicm93c2VyICYmIGJyb3dzZXIubmFtZSA9PT0gJ2ZpcmVmb3gnKSB7XG4gICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggRmlyZUZveCBicm93c2VyLCByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvMTE5XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RvbWluYW50LWJhc2VsaW5lJywgQkFTRUxJTkVfTUFQX0ZPUl9GSVJFRk9YW3RleHRCYXNlbGluZV0gfHwgJ2FscGhhYmV0aWMnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnYWxpZ25tZW50LWJhc2VsaW5lJywgQkFTRUxJTkVfTUFQW3RleHRCYXNlbGluZV0gfHwgJ2Jhc2VsaW5lJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0ZXh0LWFuY2hvcicsIEFOQ0hPUl9NQVBbdGV4dEFsaWduXSB8fCAnbGVmdCcpO1xuICAgIH07XG4gICAgVGV4dC5wcm90b3R5cGUuX3NldFRleHQgPSBmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHggPSBfYS54LCBfYiA9IF9hLnRleHRCYXNlbGluZSwgYmFzZWxpbmUgPSBfYiA9PT0gdm9pZCAwID8gJ2JvdHRvbScgOiBfYjtcbiAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh+dGV4dC5pbmRleE9mKCdcXG4nKSkge1xuICAgICAgICAgICAgdmFyIHRleHRBcnIgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgIHZhciB0ZXh0TGVuXzEgPSB0ZXh0QXJyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB2YXIgYXJyXzEgPSAnJztcbiAgICAgICAgICAgIGVhY2godGV4dEFyciwgZnVuY3Rpb24gKHNlZ21lbnQsIGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZWxpbmUgPT09ICdhbHBoYWJldGljJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCJcIiArIC10ZXh0TGVuXzEgKyBcImVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIjAuOWVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICdtaWRkbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIlwiICsgLSh0ZXh0TGVuXzEgLSAxKSAvIDIgKyBcImVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIi1cIiArICh0ZXh0TGVuXzEgKyBMRVRURVJfU1BBQ0lORykgKyBcImVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICdoYW5naW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCJcIiArICgtKHRleHRMZW5fMSAtIDEpIC0gTEVUVEVSX1NQQUNJTkcpICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIjFlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gYXJyXzE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gVGV4dDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBUZXh0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js ***! \*********************************************************************/ /*! exports provided: createSVGElement, createDom, sortDom, moveTo */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSVGElement\", function() { return createSVGElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return createDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortDom\", function() { return sortDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveTo\", function() { return moveTo; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n\n\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nfunction createSVGElement(type) {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nfunction createDom(shape) {\n var type = _constant__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE_TO_TAGS\"][shape.type];\n var parent = shape.getParent();\n if (!type) {\n throw new Error(\"the type \" + shape.type + \" is not supported by svg\");\n }\n var element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nfunction sortDom(element, sorter) {\n var el = element.get('el');\n var childList = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toArray\"])(el.children).sort(sorter);\n // create empty fragment\n var fragment = document.createDocumentFragment();\n childList.forEach(function (child) {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nfunction moveTo(element, targetIndex) {\n var parentNode = element.parentNode;\n var siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n function (node) { return node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs'; });\n // 获取目标节点\n var target = siblings[targetIndex];\n var currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n }\n else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n var targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n }\n else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n }\n else {\n parentNode.appendChild(element);\n }\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2RvbS5qcz80ODI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ087QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1AsZUFBZSx1REFBYTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0Esb0JBQW9CLDBEQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNFQUFzRSxFQUFFO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vdXRpbC9kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTSEFQRV9UT19UQUdTIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuLyoqXG4gKiDliJvlu7rlubbov5Tlm57lm77lvaLnmoQgc3ZnIOWFg+e0oFxuICogQHBhcmFtIHR5cGUgc3Zn57G75Z6LXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTVkdFbGVtZW50KHR5cGUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHR5cGUpO1xufVxuLyoqXG4gKiDliJvlu7rlubbov5Tlm57lm77lvaLnmoQgZG9tIOWFg+e0oFxuICogQHBhcmFtICB7SVNoYXBlfSBzaGFwZSDlm77lvaJcbiAqIEByZXR1cm4ge1NWR0VsZW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEb20oc2hhcGUpIHtcbiAgICB2YXIgdHlwZSA9IFNIQVBFX1RPX1RBR1Nbc2hhcGUudHlwZV07XG4gICAgdmFyIHBhcmVudCA9IHNoYXBlLmdldFBhcmVudCgpO1xuICAgIGlmICghdHlwZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGUgdHlwZSBcIiArIHNoYXBlLnR5cGUgKyBcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN2Z1wiKTtcbiAgICB9XG4gICAgdmFyIGVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KHR5cGUpO1xuICAgIGlmIChzaGFwZS5nZXQoJ2lkJykpIHtcbiAgICAgICAgZWxlbWVudC5pZCA9IHNoYXBlLmdldCgnaWQnKTtcbiAgICB9XG4gICAgc2hhcGUuc2V0KCdlbCcsIGVsZW1lbnQpO1xuICAgIHNoYXBlLnNldCgnYXR0cnMnLCB7fSk7XG4gICAgLy8g5a+55LqOIGRlZnMg5LiL55qEIGRvbSDoioLngrnvvIxwYXJlbnQg5Li656m677yM6YCa6L+HIGNvbnRleHQg57uf5LiA5oyC6L295YiwIGRlZnMg6IqC54K55LiLXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IHBhcmVudC5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFyZW50Tm9kZSBtYXliZSBudWxsIGZvciBncm91cFxuICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudC5jcmVhdGVEb20oKTtcbiAgICAgICAgICAgIHBhcmVudC5zZXQoJ2VsJywgcGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xufVxuLyoqXG4gKiDlr7kgZG9tIOWFg+e0oOi/m+ihjOaOkuW6j1xuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCAg5YWD57SgXG4gKiBAcGFyYW0ge3NvcnRlcn0gICBmdW5jdGlvbiDmjpLluo/lh73mlbBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnREb20oZWxlbWVudCwgc29ydGVyKSB7XG4gICAgdmFyIGVsID0gZWxlbWVudC5nZXQoJ2VsJyk7XG4gICAgdmFyIGNoaWxkTGlzdCA9IHRvQXJyYXkoZWwuY2hpbGRyZW4pLnNvcnQoc29ydGVyKTtcbiAgICAvLyBjcmVhdGUgZW1wdHkgZnJhZ21lbnRcbiAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgY2hpbGRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGNoaWxkKTtcbiAgICB9KTtcbiAgICBlbC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG59XG4vKipcbiAqIOWwhiBkb20g5YWD57Sg56e75Yqo5Yiw54i25YWD57Sg5LiL55qE5oyH5a6a5L2N572uXG4gKiBAcGFyYW0ge1NWR0VsZW1lbnR9IGVsZW1lbnQgICAgIGRvbSDlhYPntKBcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgdGFyZ2V0SW5kZXgg55uu5qCH5L2N572uKOS7jiAwIOW8gOWniylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdmVUbyhlbGVtZW50LCB0YXJnZXRJbmRleCkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgIHZhciBzaWJsaW5ncyA9IEFycmF5LmZyb20ocGFyZW50Tm9kZS5jaGlsZE5vZGVzKS5maWx0ZXIoXG4gICAgLy8g6KaB5rGC5Li65YWD57Sg6IqC54K577yM5LiU5LiN6IO95Li6IGRlZnMg6IqC54K5XG4gICAgZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnZGVmcyc7IH0pO1xuICAgIC8vIOiOt+WPluebruagh+iKgueCuVxuICAgIHZhciB0YXJnZXQgPSBzaWJsaW5nc1t0YXJnZXRJbmRleF07XG4gICAgdmFyIGN1cnJlbnRJbmRleCA9IHNpYmxpbmdzLmluZGV4T2YoZWxlbWVudCk7XG4gICAgLy8g5aaC5p6c55uu5qCH6IqC54K55a2Y5ZyoXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgICAvLyDlvZPliY3ntKLlvJUgPiDnm67moIfntKLlvJXvvIznm7TmjqXmj5LlhaXliLDnm67moIfoioLngrnkuYvliY3ljbPlj69cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRJbmRleCA8IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgICAvLyDlvZPliY3ntKLlvJUgPCDnm67moIfntKLlvJVcbiAgICAgICAgICAgIC8vIOiOt+WPluebruagh+iKgueCueeahOS4i+S4gOS4quiKgueCuVxuICAgICAgICAgICAgdmFyIHRhcmdldE5leHQgPSBzaWJsaW5nc1t0YXJnZXRJbmRleCArIDFdO1xuICAgICAgICAgICAgLy8g5aaC5p6c55uu5qCH6IqC54K555qE5LiL5LiA5Liq6IqC54K55a2Y5Zyo77yM5o+S5YWl5Yiw6K+l6IqC54K55LmL5YmNXG4gICAgICAgICAgICBpZiAodGFyZ2V0TmV4dCkge1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldE5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6K+l6IqC54K55LiN5a2Y5Zyo77yM5YiZ6L+95Yqg5Yiw5pyr5bC+XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kb20uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js ***! \**********************************************************************/ /*! exports provided: drawChildren, refreshElement */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony import */ var _svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n\n\nfunction drawChildren(context, children) {\n children.forEach(function (child) {\n child.draw(context);\n });\n}\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nfunction refreshElement(element, changeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n var canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n var parent_1 = element.getParent();\n var parentChildren = parent_1 ? parent_1.getChildren() : [canvas];\n var el = element.get('el');\n if (changeType === 'remove') {\n var isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n var clipPathEl = el && el.parentNode;\n var defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n }\n else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n }\n else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n }\n else if (changeType === 'zIndex') {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"moveTo\"])(el, parentChildren.indexOf(element));\n }\n else if (changeType === 'sort') {\n var children_1 = element.get('children');\n if (children_1 && children_1.length) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"sortDom\"])(element, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n }\n else if (changeType === 'matrix') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setTransform\"])(element);\n }\n else if (changeType === 'clip') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setClip\"])(element, context);\n }\n else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n }\n else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2RyYXcuanM/MDUyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQThDO0FBQ047QUFDakM7QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFdBQVc7QUFDdEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPO0FBQ3ZCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQVk7QUFDeEI7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2RyYXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXRUcmFuc2Zvcm0sIHNldENsaXAgfSBmcm9tICcuL3N2Zyc7XG5pbXBvcnQgeyBzb3J0RG9tLCBtb3ZlVG8gfSBmcm9tICcuL2RvbSc7XG5leHBvcnQgZnVuY3Rpb24gZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuKSB7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgY2hpbGQuZHJhdyhjb250ZXh0KTtcbiAgICB9KTtcbn1cbi8qKlxuICog5pu05paw5YWD57Sg77yM5YyF5ousIGdyb3VwIOWSjCBzaGFwZVxuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCAgICAgICBTVkcg5YWD57SgXG4gKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUgIOabtOaWsOexu+Wei1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSkge1xuICAgIC8vIOWvueS6jui/mOayoeacieaMgui9veWIsOeUu+W4g+S4i+eahOWFg+e0oO+8jGNhbnZhcyDlj6/og73kuLrnqbpcbiAgICB2YXIgY2FudmFzID0gZWxlbWVudC5nZXQoJ2NhbnZhcycpO1xuICAgIC8vIOWPquacieaMgui9veWIsOeUu+W4g+S4i++8jOaJjeWvueWFg+e0oOi/m+ihjOWunumZhea4suafk1xuICAgIGlmIChjYW52YXMgJiYgY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIHBhcmVudF8xID0gZWxlbWVudC5nZXRQYXJlbnQoKTtcbiAgICAgICAgdmFyIHBhcmVudENoaWxkcmVuID0gcGFyZW50XzEgPyBwYXJlbnRfMS5nZXRDaGlsZHJlbigpIDogW2NhbnZhc107XG4gICAgICAgIHZhciBlbCA9IGVsZW1lbnQuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoY2hhbmdlVHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICAgIHZhciBpc0NsaXBTaGFwZSA9IGVsZW1lbnQuZ2V0KCdpc0NsaXBTaGFwZScpO1xuICAgICAgICAgICAgLy8g5a+55LqOIGNsaXDvvIzkuI3ku4XpnIDopoHlsIYgY2xpcFNoYXBlIOWvueS6jueahCBTVkcg5YWD57Sg5Yig6Zmk77yM6L+Y6ZyA6KaB5bCG5LiK5bGC55qEIGNsaXBQYXRoIOWFg+e0oOS5n+WIoOmZpFxuICAgICAgICAgICAgaWYgKGlzQ2xpcFNoYXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsaXBQYXRoRWwgPSBlbCAmJiBlbC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIHZhciBkZWZzRWwgPSBjbGlwUGF0aEVsICYmIGNsaXBQYXRoRWwucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICBpZiAoY2xpcFBhdGhFbCAmJiBkZWZzRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmc0VsLnJlbW92ZUNoaWxkKGNsaXBQYXRoRWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVsICYmIGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2hpZGUnKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ3pJbmRleCcpIHtcbiAgICAgICAgICAgIG1vdmVUbyhlbCwgcGFyZW50Q2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ3NvcnQnKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5fMSA9IGVsZW1lbnQuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuXzEgJiYgY2hpbGRyZW5fMS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzb3J0RG9tKGVsZW1lbnQsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbl8xLmluZGV4T2YoYSkgLSBjaGlsZHJlbl8xLmluZGV4T2YoYikgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xlYXInKSB7XG4gICAgICAgICAgICAvLyBlbCBtYXliZSBudWxsIGZvciBncm91cFxuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHNldFRyYW5zZm9ybShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xpcCcpIHtcbiAgICAgICAgICAgIHNldENsaXAoZWxlbWVudCwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2F0dHInKSB7XG4gICAgICAgICAgICAvLyDlt7LlnKggYWZ0ZXJBdHRyc0NoYW5nZSDov5vooYzkuoblpITnkIbvvIzmraTlpIQgZG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js ***! \************************************************************************/ /*! exports provided: parseRadius, parsePath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return parsePath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nvar regexDot = /[^\\s,]+/gi;\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4,\n };\n}\nfunction parsePath(path) {\n path = path || [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n return path;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(path)) {\n path = path.match(regexTags);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(path, function (item, index) {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(item, function (sub, i) {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}\n//# sourceMappingURL=format.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2Zvcm1hdC5qcz9jY2EyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEO0FBQ3JEO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vdXRpbC9mb3JtYXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIHJlZ2V4VGFncyA9IC9bTUxIVlFUQ1NBWl0oW15NTEhWUVRDU0FaXSopL2dpO1xudmFyIHJlZ2V4RG90ID0gL1teXFxzLF0rL2dpO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkaXVzKHJhZGl1cykge1xuICAgIHZhciByMSA9IDA7XG4gICAgdmFyIHIyID0gMDtcbiAgICB2YXIgcjMgPSAwO1xuICAgIHZhciByNCA9IDA7XG4gICAgaWYgKGlzQXJyYXkocmFkaXVzKSkge1xuICAgICAgICBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcjEgPSByMyA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgICAgICByNCA9IHJhZGl1c1szXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXM7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHIxOiByMSxcbiAgICAgICAgcjI6IHIyLFxuICAgICAgICByMzogcjMsXG4gICAgICAgIHI0OiByNCxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gICAgcGF0aCA9IHBhdGggfHwgW107XG4gICAgaWYgKGlzQXJyYXkocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhwYXRoKSkge1xuICAgICAgICBwYXRoID0gcGF0aC5tYXRjaChyZWdleFRhZ3MpO1xuICAgICAgICBlYWNoKHBhdGgsIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgaXRlbSA9IGl0ZW0ubWF0Y2gocmVnZXhEb3QpO1xuICAgICAgICAgICAgaWYgKGl0ZW1bMF0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHZhciB0YWcgPSBpdGVtWzBdLmNoYXJBdCgwKTtcbiAgICAgICAgICAgICAgICBpdGVtLnNwbGljZSgxLCAwLCBpdGVtWzBdLnN1YnN0cigxKSk7XG4gICAgICAgICAgICAgICAgaXRlbVswXSA9IHRhZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVhY2goaXRlbSwgZnVuY3Rpb24gKHN1YiwgaSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oc3ViKSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtW2ldID0gK3N1YjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBhdGhbaW5kZXhdID0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcm1hdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js ***! \*********************************************************************/ /*! exports provided: setShadow, setTransform, setClip */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setShadow\", function() { return setShadow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTransform\", function() { return setTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClip\", function() { return setClip; });\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n\nfunction setShadow(model, context) {\n var el = model.cfg.el;\n var attrs = model.attr();\n var cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor,\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n }\n else {\n var id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', \"url(#\" + id + \")\");\n }\n}\nfunction setTransform(model) {\n var matrix = model.attr().matrix;\n if (matrix) {\n var el = model.cfg.el;\n var transform = [];\n for (var i = 0; i < 9; i += 3) {\n transform.push(matrix[i] + \",\" + matrix[i + 1]);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', \"matrix(\" + transform + \")\");\n }\n else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\nfunction setClip(model, context) {\n var clip = model.getClip();\n var el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n }\n else if (clip && !el.hasAttribute('clip-path')) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(clip);\n clip.createPath(context);\n var id = context.addClip(clip);\n el.setAttribute('clip-path', \"url(#\" + id + \")\");\n }\n}\n//# sourceMappingURL=svg.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL3N2Zy5qcz9hMDUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDM0I7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3V0aWwvc3ZnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRG9tIH0gZnJvbSAnLi9kb20nO1xuZXhwb3J0IGZ1bmN0aW9uIHNldFNoYWRvdyhtb2RlbCwgY29udGV4dCkge1xuICAgIHZhciBlbCA9IG1vZGVsLmNmZy5lbDtcbiAgICB2YXIgYXR0cnMgPSBtb2RlbC5hdHRyKCk7XG4gICAgdmFyIGNmZyA9IHtcbiAgICAgICAgZHg6IGF0dHJzLnNoYWRvd09mZnNldFgsXG4gICAgICAgIGR5OiBhdHRycy5zaGFkb3dPZmZzZXRZLFxuICAgICAgICBibHVyOiBhdHRycy5zaGFkb3dCbHVyLFxuICAgICAgICBjb2xvcjogYXR0cnMuc2hhZG93Q29sb3IsXG4gICAgfTtcbiAgICBpZiAoIWNmZy5keCAmJiAhY2ZnLmR5ICYmICFjZmcuYmx1ciAmJiAhY2ZnLmNvbG9yKSB7XG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnZmlsdGVyJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgaWQgPSBjb250ZXh0LmZpbmQoJ2ZpbHRlcicsIGNmZyk7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIGlkID0gY29udGV4dC5hZGRTaGFkb3coY2ZnKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbHRlcicsIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc2Zvcm0obW9kZWwpIHtcbiAgICB2YXIgbWF0cml4ID0gbW9kZWwuYXR0cigpLm1hdHJpeDtcbiAgICBpZiAobWF0cml4KSB7XG4gICAgICAgIHZhciBlbCA9IG1vZGVsLmNmZy5lbDtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDk7IGkgKz0gMykge1xuICAgICAgICAgICAgdHJhbnNmb3JtLnB1c2gobWF0cml4W2ldICsgXCIsXCIgKyBtYXRyaXhbaSArIDFdKTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0uam9pbignLCcpO1xuICAgICAgICBpZiAodHJhbnNmb3JtLmluZGV4T2YoJ05hTicpID09PSAtMSkge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCBcIm1hdHJpeChcIiArIHRyYW5zZm9ybSArIFwiKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignaW52YWxpZCBtYXRyaXg6JywgbWF0cml4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRDbGlwKG1vZGVsLCBjb250ZXh0KSB7XG4gICAgdmFyIGNsaXAgPSBtb2RlbC5nZXRDbGlwKCk7XG4gICAgdmFyIGVsID0gbW9kZWwuZ2V0KCdlbCcpO1xuICAgIGlmICghY2xpcCkge1xuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsaXAtcGF0aCcpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjbGlwICYmICFlbC5oYXNBdHRyaWJ1dGUoJ2NsaXAtcGF0aCcpKSB7XG4gICAgICAgIGNyZWF0ZURvbShjbGlwKTtcbiAgICAgICAgY2xpcC5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICB2YXIgaWQgPSBjb250ZXh0LmFkZENsaXAoY2xpcCk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xpcC1wYXRoJywgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3ZnLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js": /*!********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js ***! \********************************************************************************************/ /*! exports provided: Component, ComponentManager */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return Component; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return ComponentManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Entity */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js\");\n\n\n\n\n\nvar Component = function Component(data) {//\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Component);\n};\n/**\n * 管理某一类 Component,尽可能做到 AoS 而非 SoA\n * @see https://wickedengine.net/2019/09/29/entity-component-system/\n * @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h\n */\n// tslint:disable-next-line:max-classes-per-file\n\nvar ComponentManager = /*#__PURE__*/function () {\n /**\n * 不在 Entity 中维护拥有的 Component 列表,反之亦然\n */\n function ComponentManager(clazz) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, ComponentManager);\n\n this.clazz = void 0;\n this.components = [];\n this.entities = [];\n this.lookup = {};\n this.clazz = clazz;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ComponentManager, [{\n key: \"clear\",\n value: function clear() {\n this.components = [];\n this.entities = [];\n this.lookup = {};\n }\n }, {\n key: \"contains\",\n value: function contains(entity) {\n return this.lookup[entity] > -1;\n }\n }, {\n key: \"create\",\n value: function create(entity, data) {\n this.lookup[entity] = this.components.length;\n var component = new this.clazz(data || {});\n this.components.push(component);\n this.entities.push(entity);\n return component;\n }\n }, {\n key: \"remove\",\n value: function remove(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n if (componentIndex < this.components.length - 1) {\n // 将待删除元素和最后一个元素交换\n // C++ 中有 std::move 这样的操作,避免数据的拷贝\n // @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h#L169\n this.components[componentIndex] = this.components[this.components.length - 1];\n this.entities[componentIndex] = this.entities[this.entities.length - 1];\n this.lookup[this.entities[componentIndex]] = componentIndex;\n }\n } // 待删除元素已经移动到了最后一个\n\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity];\n }\n }, {\n key: \"removeKeepSorted\",\n value: function removeKeepSorted(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n var entity2 = this.entities[componentIndex];\n\n if (componentIndex < this.components.length - 1) {\n // Move every component left by one that is after this element:\n for (var _i = componentIndex + 1; _i < this.components.length; ++_i) {\n this.components[_i - 1] = this.components[_i];\n } // Move every entity left by one that is after this element and update lut:\n\n\n for (var _i2 = componentIndex + 1; _i2 < this.entities.length; ++_i2) {\n this.entities[_i2 - 1] = this.entities[_i2];\n this.lookup[this.entities[_i2 - 1]] = _i2 - 1;\n }\n }\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity2];\n }\n }\n }, {\n key: \"moveItem\",\n value: function moveItem(srcIndex, destIndex) {\n if (srcIndex === destIndex) {\n return;\n } // Save the moved component and entity:\n\n\n var srcComponent = this.components[srcIndex];\n var srcEntity = this.entities[srcIndex]; // Every other entity-component that's in the way gets moved by one and lut is kept updated:\n\n var direction = srcIndex < destIndex ? 1 : -1;\n\n for (var _i3 = srcIndex; _i3 !== destIndex; _i3 += direction) {\n var next = _i3 + direction;\n this.components[_i3] = this.components[next];\n this.entities[_i3] = this.entities[next];\n this.lookup[this.entities[_i3]] = _i3;\n } // Saved entity-component moved to the required position:\n\n\n this.components[destIndex] = srcComponent;\n this.entities[destIndex] = srcEntity;\n this.lookup[srcEntity] = destIndex;\n }\n }, {\n key: \"getEntity\",\n value: function getEntity(index) {\n return this.entities[index];\n }\n /**\n * 由于缺少类似 C++ 的重载操作符,没法通过 [下标] 直接访问。因此只能增加该方法用于遍历。\n */\n\n }, {\n key: \"getComponent\",\n value: function getComponent(index) {\n return this.components[index];\n }\n }, {\n key: \"getComponentByEntity\",\n value: function getComponentByEntity(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n return this.components[componentIndex];\n }\n\n return null;\n }\n }, {\n key: \"getCount\",\n value: function getCount() {\n return this.components.length;\n }\n }, {\n key: \"getEntityByComponentIndex\",\n value: function getEntityByComponentIndex(componentIdx) {\n for (var _i4 = 0, _Object$keys = Object.keys(this.lookup); _i4 < _Object$keys.length; _i4++) {\n var _entity = _Object$keys[_i4];\n var entityInNum = Number(_entity);\n\n if (this.lookup[entityInNum] === componentIdx) {\n return entityInNum;\n }\n }\n\n return _Entity__WEBPACK_IMPORTED_MODULE_4__[\"EMPTY\"];\n }\n }, {\n key: \"find\",\n value: function find(callback) {\n for (var _i5 = 0; _i5 < this.getCount(); _i5++) {\n var _component = this.getComponent(_i5);\n\n if (callback(_component, _i5)) {\n return _component;\n }\n }\n\n return null;\n }\n }, {\n key: \"findIndex\",\n value: function findIndex(callback) {\n for (var _i6 = 0; _i6 < this.getCount(); _i6++) {\n var _component2 = this.getComponent(_i6);\n\n if (callback(_component2, _i6)) {\n return _i6;\n }\n }\n\n return -1;\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n for (var _i7 = 0, _Object$keys2 = Object.keys(this.lookup); _i7 < _Object$keys2.length; _i7++) {\n var _entity2 = _Object$keys2[_i7];\n var entityInNum = Number(_entity2);\n var componentIndex = this.lookup[entityInNum];\n callback(entityInNum, this.getComponent(componentIndex));\n }\n }\n }, {\n key: \"forEachAsync\",\n value: function () {\n var _forEachAsync = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(callback) {\n var _i8, _Object$keys3, _entity3, entityInNum, componentIndex;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _i8 = 0, _Object$keys3 = Object.keys(this.lookup);\n\n case 1:\n if (!(_i8 < _Object$keys3.length)) {\n _context.next = 10;\n break;\n }\n\n _entity3 = _Object$keys3[_i8];\n entityInNum = Number(_entity3);\n componentIndex = this.lookup[entityInNum];\n _context.next = 7;\n return callback(entityInNum, this.getComponent(componentIndex));\n\n case 7:\n _i8++;\n _context.next = 1;\n break;\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function forEachAsync(_x) {\n return _forEachAsync.apply(this, arguments);\n }\n\n return forEachAsync;\n }()\n }, {\n key: \"map\",\n value: function map(callback) {\n var result = [];\n\n for (var _i9 = 0, _Object$keys4 = Object.keys(this.lookup); _i9 < _Object$keys4.length; _i9++) {\n var _entity4 = _Object$keys4[_i9];\n var entityInNum = Number(_entity4);\n var componentIndex = this.lookup[entityInNum];\n result.push(callback(entityInNum, this.getComponent(componentIndex)));\n }\n\n return result;\n }\n }]);\n\n return ComponentManager;\n}();\n//# sourceMappingURL=ComponentManager.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9Db21wb25lbnRNYW5hZ2VyLmpzPzFlMGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDVjtBQUNNO0FBQ25DO0FBQzFCLDBDQUEwQzs7QUFFakQsRUFBRSw0RUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLDZCQUE2QjtBQUN4RTtBQUNBLFdBQVc7OztBQUdYLDRDQUE0Qyw0QkFBNEI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQSw4QkFBOEIsbUJBQW1CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFLDJCQUEyQjtBQUMzRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsNkNBQUs7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qix1QkFBdUI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLHVCQUF1QjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpRUFBaUUsNEJBQTRCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMEJBQTBCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUM3RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLGlFQUFpRSw0QkFBNEI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL0NvbXBvbmVudE1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJy4vRW50aXR5JztcbmV4cG9ydCB2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24gQ29tcG9uZW50KGRhdGEpIHsvL1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnQpO1xufTtcbi8qKlxuICog566h55CG5p+Q5LiA57G7IENvbXBvbmVudO+8jOWwveWPr+iDveWBmuWIsCBBb1Mg6ICM6Z2eIFNvQVxuICogQHNlZSBodHRwczovL3dpY2tlZGVuZ2luZS5uZXQvMjAxOS8wOS8yOS9lbnRpdHktY29tcG9uZW50LXN5c3RlbS9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtY2xhc3Nlcy1wZXItZmlsZVxuXG5leHBvcnQgdmFyIENvbXBvbmVudE1hbmFnZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog5LiN5ZyoIEVudGl0eSDkuK3nu7TmiqTmi6XmnInnmoQgQ29tcG9uZW50IOWIl+ihqO+8jOWPjeS5i+S6pueEtlxuICAgKi9cbiAgZnVuY3Rpb24gQ29tcG9uZW50TWFuYWdlcihjbGF6eikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnRNYW5hZ2VyKTtcblxuICAgIHRoaXMuY2xhenogPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgdGhpcy5lbnRpdGllcyA9IFtdO1xuICAgIHRoaXMubG9va3VwID0ge307XG4gICAgdGhpcy5jbGF6eiA9IGNsYXp6O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbXBvbmVudE1hbmFnZXIsIFt7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgICB0aGlzLmVudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxvb2t1cCA9IHt9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb250YWluc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWlucyhlbnRpdHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvb2t1cFtlbnRpdHldID4gLTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGUoZW50aXR5LCBkYXRhKSB7XG4gICAgICB0aGlzLmxvb2t1cFtlbnRpdHldID0gdGhpcy5jb21wb25lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBjb21wb25lbnQgPSBuZXcgdGhpcy5jbGF6eihkYXRhIHx8IHt9KTtcbiAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnB1c2goZW50aXR5KTtcbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoZW50aXR5KSB7XG4gICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHldO1xuXG4gICAgICBpZiAoY29tcG9uZW50SW5kZXggPiAtMSkge1xuICAgICAgICBpZiAoY29tcG9uZW50SW5kZXggPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIOWwhuW+heWIoOmZpOWFg+e0oOWSjOacgOWQjuS4gOS4quWFg+e0oOS6pOaNolxuICAgICAgICAgIC8vIEMrKyDkuK3mnIkgc3RkOjptb3ZlIOi/meagt+eahOaTjeS9nO+8jOmBv+WFjeaVsOaNrueahOaLt+i0nVxuICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oI0wxNjlcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbY29tcG9uZW50SW5kZXhdID0gdGhpcy5jb21wb25lbnRzW3RoaXMuY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XSA9IHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XV0gPSBjb21wb25lbnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSAvLyDlvoXliKDpmaTlhYPntKDlt7Lnu4/np7vliqjliLDkuobmnIDlkI7kuIDkuKpcblxuXG4gICAgICB0aGlzLmNvbXBvbmVudHMucG9wKCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgZGVsZXRlIHRoaXMubG9va3VwW2VudGl0eV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUtlZXBTb3J0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eV07XG5cbiAgICAgIGlmIChjb21wb25lbnRJbmRleCA+IC0xKSB7XG4gICAgICAgIHZhciBlbnRpdHkyID0gdGhpcy5lbnRpdGllc1tjb21wb25lbnRJbmRleF07XG5cbiAgICAgICAgaWYgKGNvbXBvbmVudEluZGV4IDwgdGhpcy5jb21wb25lbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAvLyBNb3ZlIGV2ZXJ5IGNvbXBvbmVudCBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudDpcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IGNvbXBvbmVudEluZGV4ICsgMTsgX2kgPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoOyArK19pKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kgLSAxXSA9IHRoaXMuY29tcG9uZW50c1tfaV07XG4gICAgICAgICAgfSAvLyBNb3ZlIGV2ZXJ5IGVudGl0eSBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudCBhbmQgdXBkYXRlIGx1dDpcblxuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gY29tcG9uZW50SW5kZXggKyAxOyBfaTIgPCB0aGlzLmVudGl0aWVzLmxlbmd0aDsgKytfaTIpIHtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNbX2kyIC0gMV0gPSB0aGlzLmVudGl0aWVzW19pMl07XG4gICAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW19pMiAtIDFdXSA9IF9pMiAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRzLnBvcCgpO1xuICAgICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgICBkZWxldGUgdGhpcy5sb29rdXBbZW50aXR5Ml07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm1vdmVJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vdmVJdGVtKHNyY0luZGV4LCBkZXN0SW5kZXgpIHtcbiAgICAgIGlmIChzcmNJbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU2F2ZSB0aGUgbW92ZWQgY29tcG9uZW50IGFuZCBlbnRpdHk6XG5cblxuICAgICAgdmFyIHNyY0NvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50c1tzcmNJbmRleF07XG4gICAgICB2YXIgc3JjRW50aXR5ID0gdGhpcy5lbnRpdGllc1tzcmNJbmRleF07IC8vIEV2ZXJ5IG90aGVyIGVudGl0eS1jb21wb25lbnQgdGhhdCdzIGluIHRoZSB3YXkgZ2V0cyBtb3ZlZCBieSBvbmUgYW5kIGx1dCBpcyBrZXB0IHVwZGF0ZWQ6XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBzcmNJbmRleCA8IGRlc3RJbmRleCA/IDEgOiAtMTtcblxuICAgICAgZm9yICh2YXIgX2kzID0gc3JjSW5kZXg7IF9pMyAhPT0gZGVzdEluZGV4OyBfaTMgKz0gZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBuZXh0ID0gX2kzICsgZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kzXSA9IHRoaXMuY29tcG9uZW50c1tuZXh0XTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1tfaTNdID0gdGhpcy5lbnRpdGllc1tuZXh0XTtcbiAgICAgICAgdGhpcy5sb29rdXBbdGhpcy5lbnRpdGllc1tfaTNdXSA9IF9pMztcbiAgICAgIH0gLy8gU2F2ZWQgZW50aXR5LWNvbXBvbmVudCBtb3ZlZCB0byB0aGUgcmVxdWlyZWQgcG9zaXRpb246XG5cblxuICAgICAgdGhpcy5jb21wb25lbnRzW2Rlc3RJbmRleF0gPSBzcmNDb21wb25lbnQ7XG4gICAgICB0aGlzLmVudGl0aWVzW2Rlc3RJbmRleF0gPSBzcmNFbnRpdHk7XG4gICAgICB0aGlzLmxvb2t1cFtzcmNFbnRpdHldID0gZGVzdEluZGV4O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KGluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdGllc1tpbmRleF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOeUseS6jue8uuWwkeexu+S8vCBDKysg55qE6YeN6L295pON5L2c56ym77yM5rKh5rOV6YCa6L+HIFvkuIvmoIddIOebtOaOpeiuv+mXruOAguWboOatpOWPquiDveWinuWKoOivpeaWueazleeUqOS6jumBjeWOhuOAglxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudChpbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tpbmRleF07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudEJ5RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSkge1xuICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5XTtcblxuICAgICAgaWYgKGNvbXBvbmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tjb21wb25lbnRJbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb3VudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlCeUNvbXBvbmVudEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0eUJ5Q29tcG9uZW50SW5kZXgoY29tcG9uZW50SWR4KSB7XG4gICAgICBmb3IgKHZhciBfaTQgPSAwLCBfT2JqZWN0JGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmxvb2t1cCk7IF9pNCA8IF9PYmplY3Qka2V5cy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5ID0gX09iamVjdCRrZXlzW19pNF07XG4gICAgICAgIHZhciBlbnRpdHlJbk51bSA9IE51bWJlcihfZW50aXR5KTtcblxuICAgICAgICBpZiAodGhpcy5sb29rdXBbZW50aXR5SW5OdW1dID09PSBjb21wb25lbnRJZHgpIHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5SW5OdW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IHRoaXMuZ2V0Q291bnQoKTsgX2k1KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudChfaTUpO1xuXG4gICAgICAgIGlmIChjYWxsYmFjayhfY29tcG9uZW50LCBfaTUpKSB7XG4gICAgICAgICAgcmV0dXJuIF9jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbmRJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHRoaXMuZ2V0Q291bnQoKTsgX2k2KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQyID0gdGhpcy5nZXRDb21wb25lbnQoX2k2KTtcblxuICAgICAgICBpZiAoY2FsbGJhY2soX2NvbXBvbmVudDIsIF9pNikpIHtcbiAgICAgICAgICByZXR1cm4gX2k2O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrKSB7XG4gICAgICBmb3IgKHZhciBfaTcgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApOyBfaTcgPCBfT2JqZWN0JGtleXMyLmxlbmd0aDsgX2k3KyspIHtcbiAgICAgICAgdmFyIF9lbnRpdHkyID0gX09iamVjdCRrZXlzMltfaTddO1xuICAgICAgICB2YXIgZW50aXR5SW5OdW0gPSBOdW1iZXIoX2VudGl0eTIpO1xuICAgICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHlJbk51bV07XG4gICAgICAgIGNhbGxiYWNrKGVudGl0eUluTnVtLCB0aGlzLmdldENvbXBvbmVudChjb21wb25lbnRJbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JFYWNoQXN5bmNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9mb3JFYWNoQXN5bmMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfaTgsIF9PYmplY3Qka2V5czMsIF9lbnRpdHkzLCBlbnRpdHlJbk51bSwgY29tcG9uZW50SW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaTggPSAwLCBfT2JqZWN0JGtleXMzID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBpZiAoIShfaTggPCBfT2JqZWN0JGtleXMzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9lbnRpdHkzID0gX09iamVjdCRrZXlzM1tfaThdO1xuICAgICAgICAgICAgICAgIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHkzKTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eUluTnVtXTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZW50aXR5SW5OdW0sIHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudEluZGV4KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIF9pOCsrO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGZvckVhY2hBc3luYyhfeCkge1xuICAgICAgICByZXR1cm4gX2ZvckVhY2hBc3luYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yRWFjaEFzeW5jO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcIm1hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2spIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2k5ID0gMCwgX09iamVjdCRrZXlzNCA9IE9iamVjdC5rZXlzKHRoaXMubG9va3VwKTsgX2k5IDwgX09iamVjdCRrZXlzNC5sZW5ndGg7IF9pOSsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5NCA9IF9PYmplY3Qka2V5czRbX2k5XTtcbiAgICAgICAgdmFyIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHk0KTtcbiAgICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5SW5OdW1dO1xuICAgICAgICByZXN1bHQucHVzaChjYWxsYmFjayhlbnRpdHlJbk51bSwgdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50SW5kZXgpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbXBvbmVudE1hbmFnZXI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db21wb25lbnRNYW5hZ2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js ***! \**********************************************************************************/ /*! exports provided: EMPTY, createEntity */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY\", function() { return EMPTY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return createEntity; });\nvar EMPTY = -1;\nvar entitySequence = 1;\n/**\n * 类似关系型数据库的主键\n * TODO: 自动生成,考虑序列化\n */\n\nfunction createEntity() {\n return entitySequence++;\n}\n//# sourceMappingURL=Entity.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanM/YjMyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEVNUFRZID0gLTE7XG52YXIgZW50aXR5U2VxdWVuY2UgPSAxO1xuLyoqXG4gKiDnsbvkvLzlhbPns7vlnovmlbDmja7lupPnmoTkuLvplK5cbiAqIFRPRE86IOiHquWKqOeUn+aIkO+8jOiAg+iZkeW6j+WIl+WMllxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnRpdHkoKSB7XG4gIHJldHVybiBlbnRpdHlTZXF1ZW5jZSsrO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW50aXR5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js": /*!******************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js ***! \******************************************************************************************************************/ /*! exports provided: FrameGraphHandle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphHandle\", function() { return FrameGraphHandle; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar FrameGraphHandle = function FrameGraphHandle() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphHandle);\n\n this.index = void 0;\n};\n//# sourceMappingURL=FrameGraphHandle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaEhhbmRsZS5qcz80Yzc2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQzdEO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL0ZyYW1lR3JhcGhIYW5kbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5leHBvcnQgdmFyIEZyYW1lR3JhcGhIYW5kbGUgPSBmdW5jdGlvbiBGcmFtZUdyYXBoSGFuZGxlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRnJhbWVHcmFwaEhhbmRsZSk7XG5cbiAgdGhpcy5pbmRleCA9IHZvaWQgMDtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcmFtZUdyYXBoSGFuZGxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js": /*!****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js ***! \****************************************************************************************************************/ /*! exports provided: FrameGraphPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphPass\", function() { return FrameGraphPass; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar FrameGraphPass = function FrameGraphPass() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphPass);\n\n this.name = void 0;\n this.data = void 0;\n this.execute = void 0;\n this.tearDown = void 0;\n};\n//# sourceMappingURL=FrameGraphPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaFBhc3MuanM/ODAwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUM3RDtBQUNQLEVBQUUsNEVBQWU7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZnJhbWVncmFwaC9GcmFtZUdyYXBoUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFBhc3MgPSBmdW5jdGlvbiBGcmFtZUdyYXBoUGFzcygpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZyYW1lR3JhcGhQYXNzKTtcblxuICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gIHRoaXMuZGF0YSA9IHZvaWQgMDtcbiAgdGhpcy5leGVjdXRlID0gdm9pZCAwO1xuICB0aGlzLnRlYXJEb3duID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZyYW1lR3JhcGhQYXNzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js": /*!**********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js ***! \**********************************************************************************************************/ /*! exports provided: PassNode */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassNode\", function() { return PassNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar PassNode = /*#__PURE__*/function () {\n function PassNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PassNode);\n\n this.name = void 0;\n this.refCount = 0;\n this.hasSideEffect = false;\n this.devirtualize = [];\n this.destroy = [];\n this.reads = [];\n this.writes = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(PassNode, [{\n key: \"read\",\n value: function read(handle) {\n if (!this.reads.find(function (h) {\n return h.index === handle.index;\n })) {\n this.reads.push(handle);\n }\n\n return handle;\n }\n }, {\n key: \"sample\",\n value: function sample(handle) {\n this.read(handle); // TODO: 记录在 this.samples 中\n\n return handle;\n }\n }, {\n key: \"write\",\n value: function write(fg, handle) {\n var existed = this.writes.find(function (h) {\n return h.index === handle.index;\n });\n\n if (existed) {\n return handle;\n }\n\n var node = fg.getResourceNode(handle);\n node.resource.version++;\n\n if (node.resource.imported) {\n this.hasSideEffect = true;\n }\n\n var r = fg.createResourceNode(node.resource);\n var newNode = fg.getResourceNode(r);\n newNode.writer = this;\n this.writes.push(r);\n return r;\n }\n }]);\n\n return PassNode;\n}();\n//# sourceMappingURL=PassNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUGFzc05vZGUuanM/ODdmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUN2RDtBQUNQO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Bhc3NOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuZXhwb3J0IHZhciBQYXNzTm9kZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhc3NOb2RlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXNzTm9kZSk7XG5cbiAgICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5yZWZDb3VudCA9IDA7XG4gICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gZmFsc2U7XG4gICAgdGhpcy5kZXZpcnR1YWxpemUgPSBbXTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBbXTtcbiAgICB0aGlzLnJlYWRzID0gW107XG4gICAgdGhpcy53cml0ZXMgPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYXNzTm9kZSwgW3tcbiAgICBrZXk6IFwicmVhZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkKGhhbmRsZSkge1xuICAgICAgaWYgKCF0aGlzLnJlYWRzLmZpbmQoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIGguaW5kZXggPT09IGhhbmRsZS5pbmRleDtcbiAgICAgIH0pKSB7XG4gICAgICAgIHRoaXMucmVhZHMucHVzaChoYW5kbGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzYW1wbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2FtcGxlKGhhbmRsZSkge1xuICAgICAgdGhpcy5yZWFkKGhhbmRsZSk7IC8vIFRPRE86IOiusOW9leWcqCB0aGlzLnNhbXBsZXMg5LitXG5cbiAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGZnLCBoYW5kbGUpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy53cml0ZXMuZmluZChmdW5jdGlvbiAoaCkge1xuICAgICAgICByZXR1cm4gaC5pbmRleCA9PT0gaGFuZGxlLmluZGV4O1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChleGlzdGVkKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKGhhbmRsZSk7XG4gICAgICBub2RlLnJlc291cmNlLnZlcnNpb24rKztcblxuICAgICAgaWYgKG5vZGUucmVzb3VyY2UuaW1wb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBmZy5jcmVhdGVSZXNvdXJjZU5vZGUobm9kZS5yZXNvdXJjZSk7XG4gICAgICB2YXIgbmV3Tm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShyKTtcbiAgICAgIG5ld05vZGUud3JpdGVyID0gdGhpcztcbiAgICAgIHRoaXMud3JpdGVzLnB1c2gocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGFzc05vZGU7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXNzTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js": /*!***************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js ***! \***************************************************************************************************************/ /*! exports provided: ResourceEntry */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceEntry\", function() { return ResourceEntry; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _VirtualResource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VirtualResource */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar ResourceEntry = /*#__PURE__*/function (_VirtualResource) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(ResourceEntry, _VirtualResource);\n\n var _super = _createSuper(ResourceEntry);\n\n function ResourceEntry() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.version = 0;\n _this.refs = 0;\n _this.name = void 0;\n _this.imported = void 0;\n _this.priority = void 0;\n _this.discardStart = true;\n _this.discardEnd = false;\n _this.descriptor = void 0;\n _this.resource = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ResourceEntry, [{\n key: \"preExecuteDestroy\",\n\n /**\n * Lifecycles in FG's execute\n */\n value: function preExecuteDestroy() {\n this.discardEnd = true;\n }\n }, {\n key: \"postExecuteDestroy\",\n value: function postExecuteDestroy() {\n if (!this.imported) {// TODO: 不需要每一帧结束后都销毁资源,可以增加临时资源标志\n // this.resource.destroy();\n }\n }\n }, {\n key: \"postExecuteDevirtualize\",\n value: function postExecuteDevirtualize() {\n this.discardStart = false;\n }\n }, {\n key: \"preExecuteDevirtualize\",\n value: function preExecuteDevirtualize() {\n if (!this.imported) {//\n }\n }\n }]);\n\n return ResourceEntry;\n}(_VirtualResource__WEBPACK_IMPORTED_MODULE_5__[\"VirtualResource\"]);\n//# sourceMappingURL=ResourceEntry.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VFbnRyeS5qcz83OTNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFOVE7QUFDN0M7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLGdFQUFlO0FBQ2pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlRW50cnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IFZpcnR1YWxSZXNvdXJjZSB9IGZyb20gJy4vVmlydHVhbFJlc291cmNlJztcbmV4cG9ydCB2YXIgUmVzb3VyY2VFbnRyeSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1ZpcnR1YWxSZXNvdXJjZSkge1xuICBfaW5oZXJpdHMoUmVzb3VyY2VFbnRyeSwgX1ZpcnR1YWxSZXNvdXJjZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihSZXNvdXJjZUVudHJ5KTtcblxuICBmdW5jdGlvbiBSZXNvdXJjZUVudHJ5KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZUVudHJ5KTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX3RoaXMudmVyc2lvbiA9IDA7XG4gICAgX3RoaXMucmVmcyA9IDA7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbXBvcnRlZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5wcmlvcml0eSA9IHZvaWQgMDtcbiAgICBfdGhpcy5kaXNjYXJkU3RhcnQgPSB0cnVlO1xuICAgIF90aGlzLmRpc2NhcmRFbmQgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXNjcmlwdG9yID0gdm9pZCAwO1xuICAgIF90aGlzLnJlc291cmNlID0gdm9pZCAwO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZXNvdXJjZUVudHJ5LCBbe1xuICAgIGtleTogXCJwcmVFeGVjdXRlRGVzdHJveVwiLFxuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlcyBpbiBGRydzIGV4ZWN1dGVcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURlc3Ryb3koKSB7XG4gICAgICB0aGlzLmRpc2NhcmRFbmQgPSB0cnVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcG9zdEV4ZWN1dGVEZXN0cm95KCkge1xuICAgICAgaWYgKCF0aGlzLmltcG9ydGVkKSB7Ly8gVE9ETzog5LiN6ZyA6KaB5q+P5LiA5bin57uT5p2f5ZCO6YO96ZSA5q+B6LWE5rqQ77yM5Y+v5Lul5aKe5Yqg5Li05pe26LWE5rqQ5qCH5b+XXG4gICAgICAgIC8vIHRoaXMucmVzb3VyY2UuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURldmlydHVhbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0RXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIHRoaXMuZGlzY2FyZFN0YXJ0ID0gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByZUV4ZWN1dGVEZXZpcnR1YWxpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIGlmICghdGhpcy5pbXBvcnRlZCkgey8vXG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlRW50cnk7XG59KFZpcnR1YWxSZXNvdXJjZSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZXNvdXJjZUVudHJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js ***! \**************************************************************************************************************/ /*! exports provided: ResourceNode */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceNode\", function() { return ResourceNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\nvar ResourceNode = function ResourceNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceNode);\n\n this.resource = void 0;\n this.writer = void 0;\n this.readerCount = 0;\n this.version = void 0;\n};\n//# sourceMappingURL=ResourceNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzPzBjN2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDN0Q7QUFDUCxFQUFFLDRFQUFlOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuZXhwb3J0IHZhciBSZXNvdXJjZU5vZGUgPSBmdW5jdGlvbiBSZXNvdXJjZU5vZGUoKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZU5vZGUpO1xuXG4gIHRoaXMucmVzb3VyY2UgPSB2b2lkIDA7XG4gIHRoaXMud3JpdGVyID0gdm9pZCAwO1xuICB0aGlzLnJlYWRlckNvdW50ID0gMDtcbiAgdGhpcy52ZXJzaW9uID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlc291cmNlTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js ***! \**************************************************************************************************************/ /*! exports provided: ResourcePool */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourcePool\", function() { return ResourcePool; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\n\n\n\nvar ResourcePool = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_6__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function ResourcePool() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ResourcePool);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"engine\", _descriptor, this);\n\n this.resourcePool = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ResourcePool, [{\n key: \"getOrCreateResource\",\n\n /**\n * 负责实例化虚拟资源,通过引擎服务\n * @param resource 虚拟资源\n */\n value: function getOrCreateResource(resource) {\n if (!this.resourcePool[resource.name]) {\n var _resource$descriptor = resource.descriptor,\n width = _resource$descriptor.width,\n height = _resource$descriptor.height,\n usage = _resource$descriptor.usage;\n this.resourcePool[resource.name] = this.engine.createFramebuffer({\n color: this.engine.createTexture2D({\n width: width,\n height: height,\n wrapS: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n wrapT: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n usage: usage\n })\n });\n }\n\n return this.resourcePool[resource.name];\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.resourcePool = {};\n }\n }]);\n\n return ResourcePool;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=ResourcePool.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VQb29sLmpzPzQzZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFK0M7QUFDRDtBQUNWO0FBQzdCLDJCQUEyQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVU7QUFDekU7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwrQ0FBRTtBQUNyQixtQkFBbUIsK0NBQUU7QUFDckI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9yZW5kZXJlci9nbCc7XG5leHBvcnQgdmFyIFJlc291cmNlUG9vbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZXNvdXJjZVBvb2woKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc291cmNlUG9vbCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLnJlc291cmNlUG9vbCA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlc291cmNlUG9vbCwgW3tcbiAgICBrZXk6IFwiZ2V0T3JDcmVhdGVSZXNvdXJjZVwiLFxuXG4gICAgLyoqXG4gICAgICog6LSf6LSj5a6e5L6L5YyW6Jma5ouf6LWE5rqQ77yM6YCa6L+H5byV5pOO5pyN5YqhXG4gICAgICogQHBhcmFtIHJlc291cmNlIOiZmuaLn+i1hOa6kFxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlKSB7XG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdKSB7XG4gICAgICAgIHZhciBfcmVzb3VyY2UkZGVzY3JpcHRvciA9IHJlc291cmNlLmRlc2NyaXB0b3IsXG4gICAgICAgICAgICB3aWR0aCA9IF9yZXNvdXJjZSRkZXNjcmlwdG9yLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0ID0gX3Jlc291cmNlJGRlc2NyaXB0b3IuaGVpZ2h0LFxuICAgICAgICAgICAgdXNhZ2UgPSBfcmVzb3VyY2UkZGVzY3JpcHRvci51c2FnZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVBvb2xbcmVzb3VyY2UubmFtZV0gPSB0aGlzLmVuZ2luZS5jcmVhdGVGcmFtZWJ1ZmZlcih7XG4gICAgICAgICAgY29sb3I6IHRoaXMuZW5naW5lLmNyZWF0ZVRleHR1cmUyRCh7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgIHdyYXBTOiBnbC5DTEFNUF9UT19FREdFLFxuICAgICAgICAgICAgd3JhcFQ6IGdsLkNMQU1QX1RPX0VER0UsXG4gICAgICAgICAgICB1c2FnZTogdXNhZ2VcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbGVhblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhbigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sID0ge307XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlUG9vbDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVzb3VyY2VQb29sLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js": /*!********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js ***! \********************************************************************************************************/ /*! exports provided: FrameGraphSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return FrameGraphSystem; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./FrameGraphHandle */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\");\n/* harmony import */ var _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./FrameGraphPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\");\n/* harmony import */ var _PassNode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PassNode */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js\");\n/* harmony import */ var _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ResourceEntry */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\");\n/* harmony import */ var _ResourceNode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ResourceNode */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\n\n\n/**\n * ported from FrameGraph implemented by SakuraRender\n * @see https://zhuanlan.zhihu.com/p/98572442\n * @see https://github.com/SaeruHikari/Sakura/blob/RenderGraph/SakuraCore/Source/Framework/GraphicTypes/FrameGraph/SakuraFrameGraph.cpp\n */\n\nvar FrameGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function FrameGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, FrameGraphSystem);\n\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(FrameGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(views) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // this.engine.beginFrame();\n this.compile();\n _context.next = 3;\n return this.executePassNodes(views);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.frameGraphPasses.forEach(function (pass) {\n if (pass.tearDown) {\n pass.tearDown();\n }\n });\n this.reset();\n }\n }, {\n key: \"addPass\",\n value: function addPass(name, setup, execute, tearDown) {\n var frameGraphPass = new _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__[\"FrameGraphPass\"]();\n frameGraphPass.execute = execute;\n\n if (tearDown) {\n frameGraphPass.tearDown = tearDown;\n }\n\n frameGraphPass.name = name;\n var passNode = new _PassNode__WEBPACK_IMPORTED_MODULE_12__[\"PassNode\"]();\n passNode.name = name;\n this.passNodes.push(passNode);\n this.frameGraphPasses.push(frameGraphPass);\n setup(this, passNode, frameGraphPass);\n return frameGraphPass;\n }\n }, {\n key: \"getPass\",\n value: function getPass(name) {\n return this.frameGraphPasses.find(function (p) {\n return p.name === name;\n });\n }\n }, {\n key: \"compile\",\n value: function compile() {\n var _this = this;\n\n var _iterator = _createForOfIteratorHelper(this.passNodes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _pass = _step.value;\n _pass.refCount = _pass.writes.length + (_pass.hasSideEffect ? 1 : 0);\n\n _pass.reads.forEach(function (handle) {\n _this.resourceNodes[handle.index].readerCount++;\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var stack = [];\n\n var _iterator2 = _createForOfIteratorHelper(this.resourceNodes),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n\n if (node.readerCount === 0) {\n stack.push(node);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n while (stack.length) {\n var pNode = stack.pop();\n var writer = pNode && pNode.writer;\n\n if (writer) {\n if (--writer.refCount === 0) {\n // this pass is culled\n // assert(!writer->hasSideEffect);\n var _iterator3 = _createForOfIteratorHelper(writer.reads),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var resource = _step3.value;\n var r = this.resourceNodes[resource.index];\n\n if (--r.readerCount === 0) {\n stack.push(r);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } // update the final reference counts\n\n\n this.resourceNodes.forEach(function (node) {\n node.resource.refs += node.readerCount;\n });\n\n var _iterator4 = _createForOfIteratorHelper(this.passNodes),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _pass2 = _step4.value;\n\n if (!_pass2.refCount) {\n continue;\n }\n\n var _iterator6 = _createForOfIteratorHelper(_pass2.reads),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _resource2 = _step6.value;\n var pResource = this.resourceNodes[_resource2.index].resource;\n pResource.first = pResource.first ? pResource.first : _pass2;\n pResource.last = _pass2;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n var _iterator7 = _createForOfIteratorHelper(_pass2.writes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _resource3 = _step7.value;\n var _pResource = this.resourceNodes[_resource3.index].resource;\n _pResource.first = _pResource.first ? _pResource.first : _pass2;\n _pResource.last = _pass2;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n for (var priority = 0; priority < 2; priority++) {\n var _iterator5 = _createForOfIteratorHelper(this.resourceNodes),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var resoureNode = _step5.value;\n var _resource = resoureNode.resource;\n\n if (_resource.priority === priority && _resource.refs) {\n var pFirst = _resource.first;\n var pLast = _resource.last;\n\n if (pFirst && pLast) {\n pFirst.devirtualize.push(_resource);\n pLast.destroy.push(_resource);\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"executePassNodes\",\n value: function () {\n var _executePassNodes = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2(views) {\n var _iterator8, _step8, _step8$value, index, node, _iterator9, _step9, resource, _iterator10, _step10, _resource4, _iterator11, _step11, _resource5, _iterator12, _step12, _resource6;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _iterator8 = _createForOfIteratorHelper(this.passNodes.entries());\n _context2.prev = 1;\n\n _iterator8.s();\n\n case 3:\n if ((_step8 = _iterator8.n()).done) {\n _context2.next = 18;\n break;\n }\n\n _step8$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step8.value, 2), index = _step8$value[0], node = _step8$value[1];\n\n if (!node.refCount) {\n _context2.next = 16;\n break;\n }\n\n _iterator9 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n resource = _step9.value;\n resource.preExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n _iterator10 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _resource4 = _step10.value;\n\n _resource4.preExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n _context2.next = 12;\n return this.frameGraphPasses[index].execute(this, this.frameGraphPasses[index], views);\n\n case 12:\n _iterator11 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n _resource5 = _step11.value;\n\n _resource5.postExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n _iterator12 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n _resource6 = _step12.value;\n\n _resource6.postExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n case 16:\n _context2.next = 3;\n break;\n\n case 18:\n _context2.next = 23;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2[\"catch\"](1);\n\n _iterator8.e(_context2.t0);\n\n case 23:\n _context2.prev = 23;\n\n _iterator8.f();\n\n return _context2.finish(23);\n\n case 26:\n this.reset();\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 20, 23, 26]]);\n }));\n\n function executePassNodes(_x2) {\n return _executePassNodes.apply(this, arguments);\n }\n\n return executePassNodes;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n }\n }, {\n key: \"getResourceNode\",\n value: function getResourceNode(r) {\n return this.resourceNodes[r.index];\n }\n }, {\n key: \"createResourceNode\",\n value: function createResourceNode(resourceEntry) {\n var resourceNode = new _ResourceNode__WEBPACK_IMPORTED_MODULE_14__[\"ResourceNode\"]();\n resourceNode.resource = resourceEntry;\n resourceNode.version = resourceEntry.version;\n this.resourceNodes.push(resourceNode);\n var fgh = new _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__[\"FrameGraphHandle\"]();\n fgh.index = this.resourceNodes.length - 1;\n return fgh;\n }\n }, {\n key: \"createTexture\",\n value: function createTexture(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"createRenderTarget\",\n value: function createRenderTarget(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"present\",\n value: function present(input) {\n this.addPass('Present', function (fg, passNode) {\n passNode.read(input);\n passNode.hasSideEffect = true;\n }, /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n }]);\n\n return FrameGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzPzA2MDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNMO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRDtBQUNRO0FBQ0o7QUFDWjtBQUNVO0FBQ0Y7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVO0FBQzdFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCLCtEQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixtREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsK0JBQStCO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxpQ0FBaUM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyxpQ0FBaUM7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBOztBQUVBO0FBQ0EsOEJBQThCLGlDQUFpQztBQUMvRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDakY7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwyRUFBYzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQ0FBc0MsaUNBQWlDO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsbUNBQW1DO0FBQzFFOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2QkFBNkIsMkRBQVk7QUFDekM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1FQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5Qiw2REFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCLDZEQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGVBQWUsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoSGFuZGxlIH0gZnJvbSAnLi9GcmFtZUdyYXBoSGFuZGxlJztcbmltcG9ydCB7IEZyYW1lR3JhcGhQYXNzIH0gZnJvbSAnLi9GcmFtZUdyYXBoUGFzcyc7XG5pbXBvcnQgeyBQYXNzTm9kZSB9IGZyb20gJy4vUGFzc05vZGUnO1xuaW1wb3J0IHsgUmVzb3VyY2VFbnRyeSB9IGZyb20gJy4vUmVzb3VyY2VFbnRyeSc7XG5pbXBvcnQgeyBSZXNvdXJjZU5vZGUgfSBmcm9tICcuL1Jlc291cmNlTm9kZSc7XG4vKipcbiAqIHBvcnRlZCBmcm9tIEZyYW1lR3JhcGggaW1wbGVtZW50ZWQgYnkgU2FrdXJhUmVuZGVyXG4gKiBAc2VlIGh0dHBzOi8vemh1YW5sYW4uemhpaHUuY29tL3AvOTg1NzI0NDJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1NhZXJ1SGlrYXJpL1Nha3VyYS9ibG9iL1JlbmRlckdyYXBoL1Nha3VyYUNvcmUvU291cmNlL0ZyYW1ld29yay9HcmFwaGljVHlwZXMvRnJhbWVHcmFwaC9TYWt1cmFGcmFtZUdyYXBoLmNwcFxuICovXG5cbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcmFtZUdyYXBoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFtZUdyYXBoU3lzdGVtKTtcblxuICAgIHRoaXMucGFzc05vZGVzID0gW107XG4gICAgdGhpcy5yZXNvdXJjZU5vZGVzID0gW107XG4gICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRnJhbWVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZSgpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQYXNzTm9kZXModmlld3MpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZShfeCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmZyYW1lR3JhcGhQYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAocGFzcykge1xuICAgICAgICBpZiAocGFzcy50ZWFyRG93bikge1xuICAgICAgICAgIHBhc3MudGVhckRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUGFzcyhuYW1lLCBzZXR1cCwgZXhlY3V0ZSwgdGVhckRvd24pIHtcbiAgICAgIHZhciBmcmFtZUdyYXBoUGFzcyA9IG5ldyBGcmFtZUdyYXBoUGFzcygpO1xuICAgICAgZnJhbWVHcmFwaFBhc3MuZXhlY3V0ZSA9IGV4ZWN1dGU7XG5cbiAgICAgIGlmICh0ZWFyRG93bikge1xuICAgICAgICBmcmFtZUdyYXBoUGFzcy50ZWFyRG93biA9IHRlYXJEb3duO1xuICAgICAgfVxuXG4gICAgICBmcmFtZUdyYXBoUGFzcy5uYW1lID0gbmFtZTtcbiAgICAgIHZhciBwYXNzTm9kZSA9IG5ldyBQYXNzTm9kZSgpO1xuICAgICAgcGFzc05vZGUubmFtZSA9IG5hbWU7XG4gICAgICB0aGlzLnBhc3NOb2Rlcy5wdXNoKHBhc3NOb2RlKTtcbiAgICAgIHRoaXMuZnJhbWVHcmFwaFBhc3Nlcy5wdXNoKGZyYW1lR3JhcGhQYXNzKTtcbiAgICAgIHNldHVwKHRoaXMsIHBhc3NOb2RlLCBmcmFtZUdyYXBoUGFzcyk7XG4gICAgICByZXR1cm4gZnJhbWVHcmFwaFBhc3M7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGFzcyhuYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzLmZpbmQoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGUoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMpLFxuICAgICAgICAgIF9zdGVwO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBfcGFzcyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgIF9wYXNzLnJlZkNvdW50ID0gX3Bhc3Mud3JpdGVzLmxlbmd0aCArIChfcGFzcy5oYXNTaWRlRWZmZWN0ID8gMSA6IDApO1xuXG4gICAgICAgICAgX3Bhc3MucmVhZHMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZXNvdXJjZU5vZGVzW2hhbmRsZS5pbmRleF0ucmVhZGVyQ291bnQrKztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhY2sgPSBbXTtcblxuICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLnJlc291cmNlTm9kZXMpLFxuICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgIGlmIChub2RlLnJlYWRlckNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgX2l0ZXJhdG9yMi5mKCk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHBOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICAgIHZhciB3cml0ZXIgPSBwTm9kZSAmJiBwTm9kZS53cml0ZXI7XG5cbiAgICAgICAgaWYgKHdyaXRlcikge1xuICAgICAgICAgIGlmICgtLXdyaXRlci5yZWZDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gdGhpcyBwYXNzIGlzIGN1bGxlZFxuICAgICAgICAgICAgLy8gYXNzZXJ0KCF3cml0ZXItPmhhc1NpZGVFZmZlY3QpO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih3cml0ZXIucmVhZHMpLFxuICAgICAgICAgICAgICAgIF9zdGVwMztcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IzLnMoKTsgIShfc3RlcDMgPSBfaXRlcmF0b3IzLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnJlc291cmNlTm9kZXNbcmVzb3VyY2UuaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKC0tci5yZWFkZXJDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyB1cGRhdGUgdGhlIGZpbmFsIHJlZmVyZW5jZSBjb3VudHNcblxuXG4gICAgICB0aGlzLnJlc291cmNlTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnJlc291cmNlLnJlZnMgKz0gbm9kZS5yZWFkZXJDb3VudDtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yNCA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucGFzc05vZGVzKSxcbiAgICAgICAgICBfc3RlcDQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoX2l0ZXJhdG9yNC5zKCk7ICEoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgdmFyIF9wYXNzMiA9IF9zdGVwNC52YWx1ZTtcblxuICAgICAgICAgIGlmICghX3Bhc3MyLnJlZkNvdW50KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi5yZWFkcyksXG4gICAgICAgICAgICAgIF9zdGVwNjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjYucygpOyAhKF9zdGVwNiA9IF9pdGVyYXRvcjYubigpKS5kb25lOykge1xuICAgICAgICAgICAgICB2YXIgX3Jlc291cmNlMiA9IF9zdGVwNi52YWx1ZTtcbiAgICAgICAgICAgICAgdmFyIHBSZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VOb2Rlc1tfcmVzb3VyY2UyLmluZGV4XS5yZXNvdXJjZTtcbiAgICAgICAgICAgICAgcFJlc291cmNlLmZpcnN0ID0gcFJlc291cmNlLmZpcnN0ID8gcFJlc291cmNlLmZpcnN0IDogX3Bhc3MyO1xuICAgICAgICAgICAgICBwUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjYuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I2LmYoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi53cml0ZXMpLFxuICAgICAgICAgICAgICBfc3RlcDc7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChfaXRlcmF0b3I3LnMoKTsgIShfc3RlcDcgPSBfaXRlcmF0b3I3Lm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgdmFyIF9yZXNvdXJjZTMgPSBfc3RlcDcudmFsdWU7XG4gICAgICAgICAgICAgIHZhciBfcFJlc291cmNlID0gdGhpcy5yZXNvdXJjZU5vZGVzW19yZXNvdXJjZTMuaW5kZXhdLnJlc291cmNlO1xuICAgICAgICAgICAgICBfcFJlc291cmNlLmZpcnN0ID0gX3BSZXNvdXJjZS5maXJzdCA/IF9wUmVzb3VyY2UuZmlyc3QgOiBfcGFzczI7XG4gICAgICAgICAgICAgIF9wUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjcuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I3LmYoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3I0LmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjQuZigpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBwcmlvcml0eSA9IDA7IHByaW9yaXR5IDwgMjsgcHJpb3JpdHkrKykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yNSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucmVzb3VyY2VOb2RlcyksXG4gICAgICAgICAgICBfc3RlcDU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjUucygpOyAhKF9zdGVwNSA9IF9pdGVyYXRvcjUubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIHJlc291cmVOb2RlID0gX3N0ZXA1LnZhbHVlO1xuICAgICAgICAgICAgdmFyIF9yZXNvdXJjZSA9IHJlc291cmVOb2RlLnJlc291cmNlO1xuXG4gICAgICAgICAgICBpZiAoX3Jlc291cmNlLnByaW9yaXR5ID09PSBwcmlvcml0eSAmJiBfcmVzb3VyY2UucmVmcykge1xuICAgICAgICAgICAgICB2YXIgcEZpcnN0ID0gX3Jlc291cmNlLmZpcnN0O1xuICAgICAgICAgICAgICB2YXIgcExhc3QgPSBfcmVzb3VyY2UubGFzdDtcblxuICAgICAgICAgICAgICBpZiAocEZpcnN0ICYmIHBMYXN0KSB7XG4gICAgICAgICAgICAgICAgcEZpcnN0LmRldmlydHVhbGl6ZS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgcExhc3QuZGVzdHJveS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZShlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4ZWN1dGVQYXNzTm9kZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9leGVjdXRlUGFzc05vZGVzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjgsIF9zdGVwOCwgX3N0ZXA4JHZhbHVlLCBpbmRleCwgbm9kZSwgX2l0ZXJhdG9yOSwgX3N0ZXA5LCByZXNvdXJjZSwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIF9yZXNvdXJjZTQsIF9pdGVyYXRvcjExLCBfc3RlcDExLCBfcmVzb3VyY2U1LCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgX3Jlc291cmNlNjtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMuZW50cmllcygpKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4LnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgaWYgKChfc3RlcDggPSBfaXRlcmF0b3I4Lm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxODtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9zdGVwOCR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwOC52YWx1ZSwgMiksIGluZGV4ID0gX3N0ZXA4JHZhbHVlWzBdLCBub2RlID0gX3N0ZXA4JHZhbHVlWzFdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLnJlZkNvdW50KSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG5vZGUuZGV2aXJ0dWFsaXplKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjkucygpOyAhKF9zdGVwOSA9IF9pdGVyYXRvcjkubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IF9zdGVwOS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UucHJlRXhlY3V0ZURldmlydHVhbGl6ZSh0aGlzLmVuZ2luZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3I5LmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yOS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTAucygpOyAhKF9zdGVwMTAgPSBfaXRlcmF0b3IxMC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQgPSBfc3RlcDEwLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQucHJlRXhlY3V0ZURlc3Ryb3kodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMC5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzW2luZGV4XS5leGVjdXRlKHRoaXMsIHRoaXMuZnJhbWVHcmFwaFBhc3Nlc1tpbmRleF0sIHZpZXdzKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjExID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobm9kZS5kZXZpcnR1YWxpemUpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTEucygpOyAhKF9zdGVwMTEgPSBfaXRlcmF0b3IxMS5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUgPSBfc3RlcDExLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUucG9zdEV4ZWN1dGVEZXZpcnR1YWxpemUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTEuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTIucygpOyAhKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYgPSBfc3RlcDEyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYucG9zdEV4ZWN1dGVEZXN0cm95KHRoaXMuZW5naW5lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjEyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIwO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MltcImNhdGNoXCJdKDEpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5lKF9jb250ZXh0Mi50MCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIzO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgyMyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbMSwgMjAsIDIzLCAyNl1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZVBhc3NOb2RlcyhfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlUGFzc05vZGVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlUGFzc05vZGVzO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy5wYXNzTm9kZXMgPSBbXTtcbiAgICAgIHRoaXMucmVzb3VyY2VOb2RlcyA9IFtdO1xuICAgICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFJlc291cmNlTm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZXNvdXJjZU5vZGUocikge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VOb2Rlc1tyLmluZGV4XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVzb3VyY2VOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTm9kZShyZXNvdXJjZUVudHJ5KSB7XG4gICAgICB2YXIgcmVzb3VyY2VOb2RlID0gbmV3IFJlc291cmNlTm9kZSgpO1xuICAgICAgcmVzb3VyY2VOb2RlLnJlc291cmNlID0gcmVzb3VyY2VFbnRyeTtcbiAgICAgIHJlc291cmNlTm9kZS52ZXJzaW9uID0gcmVzb3VyY2VFbnRyeS52ZXJzaW9uO1xuICAgICAgdGhpcy5yZXNvdXJjZU5vZGVzLnB1c2gocmVzb3VyY2VOb2RlKTtcbiAgICAgIHZhciBmZ2ggPSBuZXcgRnJhbWVHcmFwaEhhbmRsZSgpO1xuICAgICAgZmdoLmluZGV4ID0gdGhpcy5yZXNvdXJjZU5vZGVzLmxlbmd0aCAtIDE7XG4gICAgICByZXR1cm4gZmdoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUocGFzc05vZGUsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZUVudHJ5KCk7XG4gICAgICByZXNvdXJjZS5uYW1lID0gbmFtZTtcbiAgICAgIHJlc291cmNlLmRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzb3VyY2VOb2RlKHJlc291cmNlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVuZGVyVGFyZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgbmFtZSwgZGVzY3JpcHRvcikge1xuICAgICAgdmFyIHJlc291cmNlID0gbmV3IFJlc291cmNlRW50cnkoKTtcbiAgICAgIHJlc291cmNlLm5hbWUgPSBuYW1lO1xuICAgICAgcmVzb3VyY2UuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXNvdXJjZU5vZGUocmVzb3VyY2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwcmVzZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByZXNlbnQoaW5wdXQpIHtcbiAgICAgIHRoaXMuYWRkUGFzcygnUHJlc2VudCcsIGZ1bmN0aW9uIChmZywgcGFzc05vZGUpIHtcbiAgICAgICAgcGFzc05vZGUucmVhZChpbnB1dCk7XG4gICAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgICAgfSwgLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMpO1xuICAgICAgfSkpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRnJhbWVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js": /*!*****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js ***! \*****************************************************************************************************************/ /*! exports provided: VirtualResource */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VirtualResource\", function() { return VirtualResource; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * ported from filament\n */\nvar VirtualResource = function VirtualResource() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, VirtualResource);\n\n this.first = void 0;\n this.last = void 0;\n};\n//# sourceMappingURL=VirtualResource.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzPzVlN2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuXG4vKipcbiAqIHBvcnRlZCBmcm9tIGZpbGFtZW50XG4gKi9cbmV4cG9ydCB2YXIgVmlydHVhbFJlc291cmNlID0gZnVuY3Rpb24gVmlydHVhbFJlc291cmNlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlydHVhbFJlc291cmNlKTtcblxuICB0aGlzLmZpcnN0ID0gdm9pZCAwO1xuICB0aGlzLmxhc3QgPSB2b2lkIDA7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmlydHVhbFJlc291cmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js": /*!*****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js ***! \*****************************************************************************************************************/ /*! exports provided: GeometryComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return GeometryComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar GeometryComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GeometryComponent, _Component);\n\n var _super = _createSuper(GeometryComponent);\n\n // instanced count\n function GeometryComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, GeometryComponent);\n\n _this = _super.call(this, data);\n _this.dirty = true;\n _this.attributes = [];\n _this.indices = void 0;\n _this.indicesBuffer = void 0;\n _this.vertexCount = 0;\n _this.maxInstancedCount = void 0;\n _this.aabb = void 0;\n _this.entity = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferAttribute\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(GeometryComponent, [{\n key: \"setAttribute\",\n value: function setAttribute(name, data, descriptor, bufferGetter) {\n var existed = this.attributes.find(function (a) {\n return a.name === name;\n });\n\n if (!existed) {\n this.attributes.push(_objectSpread(_objectSpread({\n dirty: true,\n name: name,\n data: data\n }, descriptor), {}, {\n bufferGetter: bufferGetter\n }));\n } else {\n existed.data = data;\n existed.dirty = true;\n }\n\n this.dirty = true;\n return this;\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(data) {\n this.indices = new Uint32Array( // @ts-ignore\n data.buffer ? data.buffer : data);\n this.dirty = true;\n return this;\n }\n /**\n * when merge all the geometries into one, we need to transform every vertex's position\n * and every face's normal\n */\n\n }, {\n key: \"applyMatrix\",\n value: function applyMatrix(matrix) {\n var positionAttribute = this.attributes.find(function (_ref) {\n var name = _ref.name;\n return name === 'position';\n });\n var normalAttribute = this.attributes.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'normal';\n });\n\n if (positionAttribute) {\n positionAttribute.dirty = true; // @ts-ignore\n\n if (positionAttribute.data && positionAttribute.data.length) {\n // @ts-ignore\n for (var i = 0; i < positionAttribute.data.length; i += 3) {\n var position = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].fromValues( // @ts-ignore\n positionAttribute.data[i], // @ts-ignore\n positionAttribute.data[i + 1], // @ts-ignore\n positionAttribute.data[i + 2], 1);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].transformMat4(position, position, matrix);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(positionAttribute.data)) {\n // @ts-ignore\n positionAttribute.data.set([position[0], position[1], position[2]], i);\n } else {\n // @ts-ignore\n positionAttribute.data[i] = position[0]; // @ts-ignore\n\n positionAttribute.data[i + 1] = position[1]; // @ts-ignore\n\n positionAttribute.data[i + 2] = position[2];\n }\n }\n }\n }\n\n if (normalAttribute) {\n var normalMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].normalFromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create(), matrix); // @ts-ignore\n\n if (normalAttribute.data && normalAttribute.data.length) {\n // @ts-ignore\n for (var _i = 0; _i < normalAttribute.data.length; _i += 3) {\n var normal = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues( // @ts-ignore\n normalAttribute.data[_i], // @ts-ignore\n normalAttribute.data[_i + 1], // @ts-ignore\n normalAttribute.data[_i + 2]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(normal, normal, normalMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].normalize(normal, normal);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(normalAttribute.data)) {\n // @ts-ignore\n normalAttribute.data.set([normal[0], normal[1], normal[2]], _i);\n } else {\n // @ts-ignore\n normalAttribute.data[_i] = normal[0]; // @ts-ignore\n\n normalAttribute.data[_i + 1] = normal[1]; // @ts-ignore\n\n normalAttribute.data[_i + 2] = normal[2];\n }\n }\n }\n }\n }\n }]);\n\n return GeometryComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=GeometryComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50LmpzPzNmYjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCOztBQUVwRSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQixnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVyUjtBQUNNO0FBQ007QUFDbEQ7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaUJBQWlCO0FBQzFCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBLHlCQUF5QixtQ0FBbUM7QUFDNUQsMkJBQTJCLDhDQUFJO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7O0FBRWhCLGdCQUFnQix5RUFBWTtBQUM1QjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0RBQXNEOztBQUV0RCwwREFBMEQ7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsOENBQUksZ0JBQWdCLDhDQUFJLG1CQUFtQjs7QUFFdEU7QUFDQTtBQUNBLDBCQUEwQixrQ0FBa0M7QUFDNUQseUJBQXlCLDhDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTs7QUFFaEIsZ0JBQWdCLHlFQUFZO0FBQzVCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxtREFBbUQ7O0FBRW5ELHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9nZW9tZXRyeS9HZW9tZXRyeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgbWF0MywgdmVjMywgdmVjNCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuZXhwb3J0IHZhciBHZW9tZXRyeUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoR2VvbWV0cnlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR2VvbWV0cnlDb21wb25lbnQpO1xuXG4gIC8vIGluc3RhbmNlZCBjb3VudFxuICBmdW5jdGlvbiBHZW9tZXRyeUNvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdlb21ldHJ5Q29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICBfdGhpcy5pbmRpY2VzID0gdm9pZCAwO1xuICAgIF90aGlzLmluZGljZXNCdWZmZXIgPSB2b2lkIDA7XG4gICAgX3RoaXMudmVydGV4Q291bnQgPSAwO1xuICAgIF90aGlzLm1heEluc3RhbmNlZENvdW50ID0gdm9pZCAwO1xuICAgIF90aGlzLmFhYmIgPSB2b2lkIDA7XG4gICAgX3RoaXMuZW50aXR5ID0gdm9pZCAwO1xuICAgIE9iamVjdC5hc3NpZ24oX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIGRhdGEpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICAvKipcbiAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0J1ZmZlckF0dHJpYnV0ZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhHZW9tZXRyeUNvbXBvbmVudCwgW3tcbiAgICBrZXk6IFwic2V0QXR0cmlidXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCBkYXRhLCBkZXNjcmlwdG9yLCBidWZmZXJHZXR0ZXIpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIGEubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWQpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSwgZGVzY3JpcHRvciksIHt9LCB7XG4gICAgICAgICAgYnVmZmVyR2V0dGVyOiBidWZmZXJHZXR0ZXJcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZC5kYXRhID0gZGF0YTtcbiAgICAgICAgZXhpc3RlZC5kaXJ0eSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEluZGV4KGRhdGEpIHtcbiAgICAgIHRoaXMuaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheSggLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YS5idWZmZXIgPyBkYXRhLmJ1ZmZlciA6IGRhdGEpO1xuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogd2hlbiBtZXJnZSBhbGwgdGhlIGdlb21ldHJpZXMgaW50byBvbmUsIHdlIG5lZWQgdG8gdHJhbnNmb3JtIGV2ZXJ5IHZlcnRleCdzIHBvc2l0aW9uXG4gICAgICogYW5kIGV2ZXJ5IGZhY2UncyBub3JtYWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFwcGx5TWF0cml4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5TWF0cml4KG1hdHJpeCkge1xuICAgICAgdmFyIHBvc2l0aW9uQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lID09PSAncG9zaXRpb24nO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9ybWFsQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdub3JtYWwnO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwb3NpdGlvbkF0dHJpYnV0ZSkge1xuICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kaXJ0eSA9IHRydWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICBpZiAocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSAmJiBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9uQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHZlYzQuZnJvbVZhbHVlcyggLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpXSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBvc2l0aW9uQXR0cmlidXRlLmRhdGFbaSArIDJdLCAxKTtcbiAgICAgICAgICAgIHZlYzQudHJhbnNmb3JtTWF0NChwb3NpdGlvbiwgcG9zaXRpb24sIG1hdHJpeCk7XG5cbiAgICAgICAgICAgIGlmIChpc1R5cGVkQXJyYXkocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLnNldChbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXV0sIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2ldID0gcG9zaXRpb25bMF07IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2kgKyAxXSA9IHBvc2l0aW9uWzFdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMl0gPSBwb3NpdGlvblsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZSkge1xuICAgICAgICB2YXIgbm9ybWFsTWF0cml4ID0gbWF0My5ub3JtYWxGcm9tTWF0NChtYXQzLmNyZWF0ZSgpLCBtYXRyaXgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZS5kYXRhICYmIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9ybWFsQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBfaSArPSAzKSB7XG4gICAgICAgICAgICB2YXIgbm9ybWFsID0gdmVjMy5mcm9tVmFsdWVzKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBub3JtYWxBdHRyaWJ1dGUuZGF0YVtfaV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0pO1xuICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKG5vcm1hbCwgbm9ybWFsLCBub3JtYWxNYXRyaXgpO1xuICAgICAgICAgICAgdmVjMy5ub3JtYWxpemUobm9ybWFsLCBub3JtYWwpO1xuXG4gICAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KG5vcm1hbEF0dHJpYnV0ZS5kYXRhKSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLnNldChbbm9ybWFsWzBdLCBub3JtYWxbMV0sIG5vcm1hbFsyXV0sIF9pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2ldID0gbm9ybWFsWzBdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2kgKyAxXSA9IG5vcm1hbFsxXTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0gPSBub3JtYWxbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R2VvbWV0cnlDb21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js ***! \******************************************************************************************************/ /*! exports provided: GeometrySystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return GeometrySystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../.. */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\n\n\n\n\nvar GeometrySystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function GeometrySystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, GeometrySystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor2, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(GeometrySystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.geometry.forEach(function (entity, component) {\n // build buffers for each geometry\n if (component.dirty) {\n component.attributes.forEach(function (attribute) {\n if (attribute.dirty && attribute.data) {\n if (!attribute.buffer) {\n attribute.buffer = _this.engine.createBuffer({\n data: attribute.data,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].FLOAT\n });\n } else {\n var _attribute$buffer;\n\n (_attribute$buffer = attribute.buffer) === null || _attribute$buffer === void 0 ? void 0 : _attribute$buffer.subData({\n data: attribute.data,\n // TODO: support offset in subdata\n offset: 0\n });\n }\n\n attribute.dirty = false;\n }\n }); // create index buffer if needed\n\n if (component.indices) {\n if (!component.indicesBuffer) {\n component.indicesBuffer = _this.engine.createElements({\n data: component.indices,\n count: component.indices.length,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].UNSIGNED_INT,\n usage: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].STATIC_DRAW\n });\n } else {\n component.indicesBuffer.subData({\n data: component.indices,\n offset: 0\n });\n }\n }\n\n component.dirty = false;\n }\n });\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.geometry.forEach(function (_, geometry) {\n if (geometry.indicesBuffer) {\n geometry.indicesBuffer.destroy();\n }\n\n geometry.attributes.forEach(function (attribute) {\n if (attribute.buffer) {\n attribute.buffer.destroy();\n }\n });\n });\n this.geometry.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferGeometry\n */\n\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n vertexCount: 3\n },\n vertexCount = _ref.vertexCount;\n\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n vertexCount: vertexCount\n });\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/InstancedBufferGeometry\n */\n\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(_ref2) {\n var maxInstancedCount = _ref2.maxInstancedCount,\n vertexCount = _ref2.vertexCount;\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n maxInstancedCount: maxInstancedCount,\n vertexCount: vertexCount\n });\n }\n }]);\n\n return GeometrySystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbS5qcz8yN2Y2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ1Y7QUFDUztBQUNWO0FBQzdCLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVU7QUFDaEk7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7QUFDOUI7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0RBQUU7QUFDcEMsMkJBQTJCO0FBQzNCLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLEVBQUU7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsZ0RBQUU7QUFDbEMsaUNBQWlDLGdEQUFFO0FBQ25DLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZ2VvbWV0cnkvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uL3JlbmRlcmVyL2dsJztcbmV4cG9ydCB2YXIgR2VvbWV0cnlTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5HZW9tZXRyeUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZW9tZXRyeVN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2VvbWV0cnlTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEdlb21ldHJ5U3lzdGVtLCBbe1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAvLyBidWlsZCBidWZmZXJzIGZvciBlYWNoIGdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuZGlydHkgJiYgYXR0cmlidXRlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLmJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyID0gX3RoaXMuZW5naW5lLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYXR0cmlidXRlLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuRkxPQVRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2F0dHJpYnV0ZSRidWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hdHRyaWJ1dGUkYnVmZmVyID0gYXR0cmlidXRlLmJ1ZmZlcikgPT09IG51bGwgfHwgX2F0dHJpYnV0ZSRidWZmZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hdHRyaWJ1dGUkYnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgb2Zmc2V0IGluIHN1YmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7IC8vIGNyZWF0ZSBpbmRleCBidWZmZXIgaWYgbmVlZGVkXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5pbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmluZGljZXNCdWZmZXIgPSBfdGhpcy5lbmdpbmUuY3JlYXRlRWxlbWVudHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjb21wb25lbnQuaW5kaWNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGNvbXBvbmVudC5pbmRpY2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfSU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogZ2wuU1RBVElDX0RSQVdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaW5kaWNlc0J1ZmZlci5zdWJEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY29tcG9uZW50LmluZGljZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKF8sIGdlb21ldHJ5KSB7XG4gICAgICAgIGlmIChnZW9tZXRyeS5pbmRpY2VzQnVmZmVyKSB7XG4gICAgICAgICAgZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlci5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBnZW9tZXRyeS5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUuYnVmZmVyKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmdlb21ldHJ5LmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vY29yZS9CdWZmZXJHZW9tZXRyeVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyR2VvbWV0cnkoKSB7XG4gICAgICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge1xuICAgICAgICB2ZXJ0ZXhDb3VudDogM1xuICAgICAgfSxcbiAgICAgICAgICB2ZXJ0ZXhDb3VudCA9IF9yZWYudmVydGV4Q291bnQ7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgdmVydGV4Q291bnQ6IHZlcnRleENvdW50XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeShfcmVmMikge1xuICAgICAgdmFyIG1heEluc3RhbmNlZENvdW50ID0gX3JlZjIubWF4SW5zdGFuY2VkQ291bnQsXG4gICAgICAgICAgdmVydGV4Q291bnQgPSBfcmVmMi52ZXJ0ZXhDb3VudDtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgbWF4SW5zdGFuY2VkQ291bnQ6IG1heEluc3RhbmNlZENvdW50LFxuICAgICAgICB2ZXJ0ZXhDb3VudDogdmVydGV4Q291bnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHZW9tZXRyeVN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImdlb21ldHJ5XCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js": /*!*****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js ***! \*****************************************************************************************************************/ /*! exports provided: MaterialComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return MaterialComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../.. */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MaterialComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(MaterialComponent, _Component);\n\n var _super = _createSuper(MaterialComponent);\n\n // control flow in shaders, eg. USE_UV, USE_MAP...\n function MaterialComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MaterialComponent);\n\n _this = _super.call(this, data);\n _this.vertexShaderGLSL = void 0;\n _this.fragmentShaderGLSL = void 0;\n _this.defines = {};\n _this.dirty = true;\n _this.uniforms = [];\n _this.cull = {\n enable: true,\n face: ___WEBPACK_IMPORTED_MODULE_7__[\"gl\"].BACK\n };\n _this.depth = {\n enable: true\n };\n _this.blend = void 0;\n _this.entity = void 0;\n _this.type = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MaterialComponent, [{\n key: \"setDefines\",\n value: function setDefines(defines) {\n this.defines = _objectSpread(_objectSpread({}, this.defines), defines);\n return this;\n }\n }, {\n key: \"setCull\",\n value: function setCull(cull) {\n this.cull = cull;\n return this;\n }\n }, {\n key: \"setDepth\",\n value: function setDepth(depth) {\n this.depth = depth;\n return this;\n }\n }, {\n key: \"setBlend\",\n value: function setBlend(blend) {\n this.blend = blend;\n return this;\n }\n }, {\n key: \"setUniform\",\n value: function setUniform(name, data) {\n var _this2 = this;\n\n if (typeof name !== 'string') {\n Object.keys(name).forEach(function (key) {\n return _this2.setUniform(key, name[key]);\n });\n return this;\n }\n\n var existedUniform = this.uniforms.find(function (u) {\n return u.name === name;\n });\n\n if (!existedUniform) {\n this.uniforms.push({\n name: name,\n dirty: true,\n data: data\n });\n } else {\n existedUniform.dirty = true;\n existedUniform.data = data;\n }\n\n this.dirty = true;\n return this;\n }\n }]);\n\n return MaterialComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=MaterialComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzPzNlNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ0E7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwaEIsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFdlM7QUFDd0I7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvQ0FBRTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBNYXRlcmlhbENvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTWF0ZXJpYWxDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gIC8vIGNvbnRyb2wgZmxvdyBpbiBzaGFkZXJzLCBlZy4gVVNFX1VWLCBVU0VfTUFQLi4uXG4gIGZ1bmN0aW9uIE1hdGVyaWFsQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy52ZXJ0ZXhTaGFkZXJHTFNMID0gdm9pZCAwO1xuICAgIF90aGlzLmZyYWdtZW50U2hhZGVyR0xTTCA9IHZvaWQgMDtcbiAgICBfdGhpcy5kZWZpbmVzID0ge307XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLnVuaWZvcm1zID0gW107XG4gICAgX3RoaXMuY3VsbCA9IHtcbiAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICB9O1xuICAgIF90aGlzLmRlcHRoID0ge1xuICAgICAgZW5hYmxlOiB0cnVlXG4gICAgfTtcbiAgICBfdGhpcy5ibGVuZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgX3RoaXMudHlwZSA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWF0ZXJpYWxDb21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldERlZmluZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGVmaW5lcyhkZWZpbmVzKSB7XG4gICAgICB0aGlzLmRlZmluZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuZGVmaW5lcyksIGRlZmluZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEN1bGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q3VsbChjdWxsKSB7XG4gICAgICB0aGlzLmN1bGwgPSBjdWxsO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERlcHRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERlcHRoKGRlcHRoKSB7XG4gICAgICB0aGlzLmRlcHRoID0gZGVwdGg7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QmxlbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QmxlbmQoYmxlbmQpIHtcbiAgICAgIHRoaXMuYmxlbmQgPSBibGVuZDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRVbmlmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFVuaWZvcm0obmFtZSwgZGF0YSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgT2JqZWN0LmtleXMobmFtZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi5zZXRVbmlmb3JtKGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgZXhpc3RlZFVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zLmZpbmQoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIHUubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWRVbmlmb3JtKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZFVuaWZvcm0uZGlydHkgPSB0cnVlO1xuICAgICAgICBleGlzdGVkVW5pZm9ybS5kYXRhID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWF0ZXJpYWxDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NYXRlcmlhbENvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js ***! \******************************************************************************************************/ /*! exports provided: MaterialSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return MaterialSystem; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../.. */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar MaterialSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].RenderEngine), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MaterialSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, MaterialSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"material\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"shaderModule\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(MaterialSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.material.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/materials/ShaderMaterial\n */\n\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var entity = Object(___WEBPACK_IMPORTED_MODULE_9__[\"createEntity\"])();\n var vertexShaderGLSL = params.vertexShader;\n var fragmentShaderGLSL = params.fragmentShader;\n var uniforms = [];\n\n if (!this.engine.supportWebGPU) {\n var moduleName = \"material-\".concat(entity);\n this.shaderModule.registerModule(moduleName, {\n vs: params.vertexShader,\n fs: params.fragmentShader\n });\n var materialModule = this.shaderModule.getModule(moduleName);\n vertexShaderGLSL = materialModule.vs;\n fragmentShaderGLSL = materialModule.fs;\n\n if (materialModule.uniforms) {\n // @ts-ignore\n uniforms = Object.keys(materialModule.uniforms).map(function (uniformName) {\n return {\n dirty: true,\n name: uniformName,\n // @ts-ignore\n data: materialModule.uniforms[uniformName]\n };\n });\n }\n }\n\n return this.material.create(entity, _objectSpread(_objectSpread({\n vertexShaderGLSL: vertexShaderGLSL,\n fragmentShaderGLSL: fragmentShaderGLSL\n }, params), {}, {\n uniforms: uniforms\n }));\n }\n }]);\n\n return MaterialSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"shaderModule\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcz9kMjhiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ1A7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcmU7QUFDVjtBQUNTO0FBQ3ZDLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsdURBQVUsb0NBQW9DLHdEQUFNLENBQUMsdURBQVUsd0JBQXdCLHdEQUFNLENBQUMsdURBQVU7QUFDeks7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sYUFBYTtBQUNwQjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZUVudGl0eSB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmV4cG9ydCB2YXIgTWF0ZXJpYWxTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXRlcmlhbFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJzaGFkZXJNb2R1bGVcIiwgX2Rlc2NyaXB0b3IzLCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYXRlcmlhbFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vbWF0ZXJpYWxzL1NoYWRlck1hdGVyaWFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTaGFkZXJNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpIHtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHZhciB2ZXJ0ZXhTaGFkZXJHTFNMID0gcGFyYW1zLnZlcnRleFNoYWRlcjtcbiAgICAgIHZhciBmcmFnbWVudFNoYWRlckdMU0wgPSBwYXJhbXMuZnJhZ21lbnRTaGFkZXI7XG4gICAgICB2YXIgdW5pZm9ybXMgPSBbXTtcblxuICAgICAgaWYgKCF0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVKSB7XG4gICAgICAgIHZhciBtb2R1bGVOYW1lID0gXCJtYXRlcmlhbC1cIi5jb25jYXQoZW50aXR5KTtcbiAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwge1xuICAgICAgICAgIHZzOiBwYXJhbXMudmVydGV4U2hhZGVyLFxuICAgICAgICAgIGZzOiBwYXJhbXMuZnJhZ21lbnRTaGFkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXRlcmlhbE1vZHVsZSA9IHRoaXMuc2hhZGVyTW9kdWxlLmdldE1vZHVsZShtb2R1bGVOYW1lKTtcbiAgICAgICAgdmVydGV4U2hhZGVyR0xTTCA9IG1hdGVyaWFsTW9kdWxlLnZzO1xuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0wgPSBtYXRlcmlhbE1vZHVsZS5mcztcblxuICAgICAgICBpZiAobWF0ZXJpYWxNb2R1bGUudW5pZm9ybXMpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdW5pZm9ybXMgPSBPYmplY3Qua2V5cyhtYXRlcmlhbE1vZHVsZS51bmlmb3JtcykubWFwKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm1OYW1lLFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGE6IG1hdGVyaWFsTW9kdWxlLnVuaWZvcm1zW3VuaWZvcm1OYW1lXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5tYXRlcmlhbC5jcmVhdGUoZW50aXR5LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXJHTFNMOiB2ZXJ0ZXhTaGFkZXJHTFNMLFxuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0w6IGZyYWdtZW50U2hhZGVyR0xTTFxuICAgICAgfSwgcGFyYW1zKSwge30sIHtcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1hdGVyaWFsU3lzdGVtO1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js": /*!*********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZS5qcz80ODkwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWF0ZXJpYWwvaW50ZXJmYWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcmZhY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js": /*!*************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js ***! \*************************************************************************************************************/ /*! exports provided: Strategy, CullableComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Strategy\", function() { return Strategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return CullableComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n/**\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n */\nvar Strategy;\n\n(function (Strategy) {\n Strategy[Strategy[\"Standard\"] = 0] = \"Standard\";\n})(Strategy || (Strategy = {}));\n\nvar CullableComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(CullableComponent, _Component);\n\n var _super = _createSuper(CullableComponent);\n\n function CullableComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, CullableComponent);\n\n _this = _super.call(this, data);\n _this.strategy = Strategy.Standard;\n _this.visibilityPlaneMask = 0;\n _this.visible = false;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return CullableComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=CullableComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanM/ZmZmMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ2M7QUFDMUI7QUFDa0M7QUFDdEI7O0FBRXBFLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRS9ROztBQUVuRDtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0EsQ0FBQyw0QkFBNEI7O0FBRXRCO0FBQ1AsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vQ29tcG9uZW50TWFuYWdlcic7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gKi9cbmV4cG9ydCB2YXIgU3RyYXRlZ3k7XG5cbihmdW5jdGlvbiAoU3RyYXRlZ3kpIHtcbiAgU3RyYXRlZ3lbU3RyYXRlZ3lbXCJTdGFuZGFyZFwiXSA9IDBdID0gXCJTdGFuZGFyZFwiO1xufSkoU3RyYXRlZ3kgfHwgKFN0cmF0ZWd5ID0ge30pKTtcblxuZXhwb3J0IHZhciBDdWxsYWJsZUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ3VsbGFibGVDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEN1bGxhYmxlQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5zdHJhdGVneSA9IFN0cmF0ZWd5LlN0YW5kYXJkO1xuICAgIF90aGlzLnZpc2liaWxpdHlQbGFuZU1hc2sgPSAwO1xuICAgIF90aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VsbGFibGVDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdWxsYWJsZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js": /*!*********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js ***! \*********************************************************************************************************/ /*! exports provided: MeshComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return MeshComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../shape/AABB */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MeshComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(MeshComponent, _Component);\n\n var _super = _createSuper(MeshComponent);\n\n /**\n * aabb 应该存在 Mesh 而非 Geometry 中,原因包括:\n * 1. 包围盒会受 transform 影响。例如每次 transform 之后应该重新计算包围盒(center 发生偏移)。\n * 2. 多个 Mesh 可以共享一个 Geometry,但可以各自拥有不同的 aabb\n */\n\n /**\n * transform 之后需要重新计算包围盒\n */\n\n /**\n * 实际渲染 Model\n */\n function MeshComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeshComponent);\n\n _this = _super.call(this, data);\n _this.material = void 0;\n _this.geometry = void 0;\n _this.aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n _this.aabbDirty = true;\n _this.model = void 0;\n _this.visible = true;\n _this.children = [];\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return MeshComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=MeshComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudC5qcz9lZWNiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDWDtBQUNqQztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0RBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuaW1wb3J0IHsgQUFCQiB9IGZyb20gJy4uLy4uL3NoYXBlL0FBQkInO1xuZXhwb3J0IHZhciBNZXNoQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhNZXNoQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lc2hDb21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBhYWJiIOW6lOivpeWtmOWcqCBNZXNoIOiAjOmdniBHZW9tZXRyeSDkuK3vvIzljp/lm6DljIXmi6zvvJpcbiAgICogMS4g5YyF5Zu055uS5Lya5Y+XIHRyYW5zZm9ybSDlvbHlk43jgILkvovlpoLmr4/mrKEgdHJhbnNmb3JtIOS5i+WQjuW6lOivpemHjeaWsOiuoeeul+WMheWbtOebku+8iGNlbnRlciDlj5HnlJ/lgY/np7vvvInjgIJcbiAgICogMi4g5aSa5LiqIE1lc2gg5Y+v5Lul5YWx5Lqr5LiA5LiqIEdlb21ldHJ577yM5L2G5Y+v5Lul5ZCE6Ieq5oul5pyJ5LiN5ZCM55qEIGFhYmJcbiAgICovXG5cbiAgLyoqXG4gICAqIHRyYW5zZm9ybSDkuYvlkI7pnIDopoHph43mlrDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cbiAgLyoqXG4gICAqIOWunumZhea4suafkyBNb2RlbFxuICAgKi9cbiAgZnVuY3Rpb24gTWVzaENvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1lc2hDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5tYXRlcmlhbCA9IHZvaWQgMDtcbiAgICBfdGhpcy5nZW9tZXRyeSA9IHZvaWQgMDtcbiAgICBfdGhpcy5hYWJiID0gbmV3IEFBQkIoKTtcbiAgICBfdGhpcy5hYWJiRGlydHkgPSB0cnVlO1xuICAgIF90aGlzLm1vZGVsID0gdm9pZCAwO1xuICAgIF90aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIF90aGlzLmNoaWxkcmVuID0gW107XG4gICAgT2JqZWN0LmFzc2lnbihfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgZGF0YSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1lc2hDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXNoQ29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js ***! \**************************************************************************************************/ /*! exports provided: MeshSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return MeshSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../shape/Frustum */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/math */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\nvar MeshSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MeshSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, MeshSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n this.planes = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(MeshSystem, [{\n key: \"setFrustumPlanes\",\n value: function setFrustumPlanes(planes) {\n this.planes = planes;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _iterator, _step, view, scene, camera, _iterator2, _step2, entity, component, hierarchyComponent, cullableComponent, geometryComponent, meshTransform, worldTransform, _geometryComponent$aa, center, halfExtents, transformedCenter, rotationScale, transformedHalfExtents, parentCullableComponent;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n view = _step.value;\n scene = view.getScene();\n camera = view.getCamera(); // get VP matrix from camera\n\n _iterator2 = _createForOfIteratorHelper(scene.getEntities());\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n entity = _step2.value;\n component = this.mesh.getComponentByEntity(entity);\n\n if (component) {\n hierarchyComponent = this.hierarchy.getComponentByEntity(entity);\n cullableComponent = this.cullable.getComponentByEntity(entity);\n geometryComponent = component.geometry;\n meshTransform = this.transform.getComponentByEntity(entity); // update mesh.aabb\n\n if (geometryComponent && geometryComponent.aabb && meshTransform && component.aabbDirty) {\n worldTransform = meshTransform.worldTransform; // apply transform to geometry.aabb\n\n _geometryComponent$aa = geometryComponent.aabb, center = _geometryComponent$aa.center, halfExtents = _geometryComponent$aa.halfExtents;\n transformedCenter = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), center, worldTransform);\n rotationScale = Object(_utils_math__WEBPACK_IMPORTED_MODULE_11__[\"getRotationScale\"])(worldTransform, gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create());\n transformedHalfExtents = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), halfExtents, rotationScale);\n component.aabb.update(transformedCenter, transformedHalfExtents);\n component.aabbDirty = false;\n } // culling\n\n\n if (cullableComponent && geometryComponent) {\n parentCullableComponent = this.cullable.getComponentByEntity((hierarchyComponent === null || hierarchyComponent === void 0 ? void 0 : hierarchyComponent.parentID) || -1);\n cullableComponent.visibilityPlaneMask = this.computeVisibilityWithPlaneMask(component.aabb, (parentCullableComponent === null || parentCullableComponent === void 0 ? void 0 : parentCullableComponent.visibilityPlaneMask) || _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INDETERMINATE, this.planes || camera.getFrustum().planes);\n cullableComponent.visible = cullableComponent.visibilityPlaneMask !== _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.cullable.clear();\n this.mesh.clear();\n }\n /**\n *\n * @see「Optimized View Frustum Culling Algorithms for Bounding Boxes」\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n *\n * * 基础相交测试 the basic intersection test\n * * 标记 masking @see https://cesium.com/blog/2015/08/04/fast-hierarchical-culling/\n * * TODO: 平面一致性测试 the plane-coherency test\n * * TODO: 支持 mesh 指定自身的剔除策略,参考 Babylon.js @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n *\n * @param aabb aabb\n * @param parentPlaneMask mask of parent\n * @param planes planes of frustum\n */\n\n }, {\n key: \"computeVisibilityWithPlaneMask\",\n value: function computeVisibilityWithPlaneMask(aabb, parentPlaneMask, planes) {\n if (parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE || parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE) {\n // 父节点完全位于视锥内或者外部,直接返回\n return parentPlaneMask;\n } // Start with MASK_INSIDE (all zeros) so that after the loop, the return value can be compared with MASK_INSIDE.\n // (Because if there are fewer than 31 planes, the upper bits wont be changed.)\n\n\n var mask = _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE;\n\n for (var k = 0, len = planes.length; k < len; ++k) {\n // For k greater than 31 (since 31 is the maximum number of INSIDE/INTERSECTING bits we can store), skip the optimization.\n var flag = k < 31 ? 1 << k : 0;\n\n if (k < 31 && (parentPlaneMask & flag) === 0) {\n // 父节点处于当前面内部,可以跳过\n continue;\n } // 使用 p-vertex 和 n-vertex 加速,避免进行平面和 aabb 全部顶点的相交检测\n\n\n var _planes$k = planes[k],\n normal = _planes$k.normal,\n distance = _planes$k.distance;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getNegativeFarPoint(planes[k])) + distance > 0) {\n return _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getPositiveFarPoint(planes[k])) + distance > 0) {\n // 和当前面相交,对应位置为1,继续检测下一个面\n mask |= flag;\n }\n }\n\n return mask;\n }\n }]);\n\n return MeshSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvU3lzdGVtLmpzPzAwYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLHdEQUF3RCxRQUFRLG1FQUFtRSx3SEFBd0gsZ0JBQWdCLFdBQVcseUJBQXlCLFNBQVMsd0JBQXdCLDRCQUE0QixjQUFjLFNBQVMsOEJBQThCLEVBQUUscUJBQXFCLFVBQVUsRUFBRSxTQUFTLEVBQUUsOEpBQThKLEVBQUUsa0RBQWtELFNBQVMsa0JBQWtCLDJCQUEyQixFQUFFLG1CQUFtQixzQkFBc0IsOEJBQThCLGFBQWEsRUFBRSxzQkFBc0IsZUFBZSxXQUFXLEVBQUUsbUJBQW1CLE1BQU0seURBQXlELEVBQUUsVUFBVSx1QkFBdUIsRUFBRSxFQUFFLEdBQUc7O0FBRTc5QixpREFBaUQsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRCxrSEFBa0g7O0FBRTlaLHNDQUFzQyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxrQkFBa0IsRUFBRSxhQUFhOztBQUU5STtBQUNRO0FBQ0Q7QUFDSDtBQUNTO0FBQzdDLHlCQUF5Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsZ0NBQWdDLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUscUNBQXFDLHdEQUFNLENBQUMsc0RBQVU7QUFDeFI7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLCtCQUErQjtBQUNwRTtBQUNBO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQTtBQUNBLDBDQUEwQyxpQ0FBaUM7QUFDM0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRjs7QUFFdEY7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0EsZ0RBQWdELDhDQUFJLGVBQWUsOENBQUk7QUFDdkUsNENBQTRDLHFFQUFnQixpQkFBaUIsOENBQUk7QUFDakYscURBQXFELDhDQUFJLGVBQWUsOENBQUk7QUFDNUU7QUFDQTtBQUNBLDJCQUEyQjs7O0FBRzNCO0FBQ0E7QUFDQSwyUEFBMlAsb0RBQUk7QUFDL1Asa0dBQWtHLG9EQUFJO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4QixvREFBSSxnQ0FBZ0Msb0RBQUk7QUFDdEU7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0EsaUJBQWlCLG9EQUFJOztBQUVyQiwwQ0FBMEMsU0FBUztBQUNuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCLGlCQUFpQixvREFBSTtBQUNyQjs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX2Rlc2NyaXB0b3I0LCBfZGVzY3JpcHRvcjUsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IG1hdDMsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IE1hc2sgfSBmcm9tICcuLi8uLi9zaGFwZS9GcnVzdHVtJztcbmltcG9ydCB7IGdldFJvdGF0aW9uU2NhbGUgfSBmcm9tICcuLi8uLi91dGlscy9tYXRoJztcbmV4cG9ydCB2YXIgTWVzaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5DdWxsYWJsZUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLkdlb21ldHJ5Q29tcG9uZW50TWFuYWdlciksIF9kZWM1ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNZXNoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXNoU3lzdGVtKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwibWVzaFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImN1bGxhYmxlXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImdlb21ldHJ5XCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIHRoaXMucGxhbmVzID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lc2hTeXN0ZW0sIFt7XG4gICAga2V5OiBcInNldEZydXN0dW1QbGFuZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RnJ1c3R1bVBsYW5lcyhwbGFuZXMpIHtcbiAgICAgIHRoaXMucGxhbmVzID0gcGxhbmVzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIHNjZW5lLCBjYW1lcmEsIF9pdGVyYXRvcjIsIF9zdGVwMiwgZW50aXR5LCBjb21wb25lbnQsIGhpZXJhcmNoeUNvbXBvbmVudCwgY3VsbGFibGVDb21wb25lbnQsIGdlb21ldHJ5Q29tcG9uZW50LCBtZXNoVHJhbnNmb3JtLCB3b3JsZFRyYW5zZm9ybSwgX2dlb21ldHJ5Q29tcG9uZW50JGFhLCBjZW50ZXIsIGhhbGZFeHRlbnRzLCB0cmFuc2Zvcm1lZENlbnRlciwgcm90YXRpb25TY2FsZSwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cywgcGFyZW50Q3VsbGFibGVDb21wb25lbnQ7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhID0gdmlldy5nZXRDYW1lcmEoKTsgLy8gZ2V0IFZQIG1hdHJpeCBmcm9tIGNhbWVyYVxuXG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihzY2VuZS5nZXRFbnRpdGllcygpKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMi5zKCk7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgPSBfc3RlcDIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjdWxsYWJsZUNvbXBvbmVudCA9IHRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDb21wb25lbnQgPSBjb21wb25lbnQuZ2VvbWV0cnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2hUcmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpOyAvLyB1cGRhdGUgbWVzaC5hYWJiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdlb21ldHJ5Q29tcG9uZW50ICYmIGdlb21ldHJ5Q29tcG9uZW50LmFhYmIgJiYgbWVzaFRyYW5zZm9ybSAmJiBjb21wb25lbnQuYWFiYkRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRUcmFuc2Zvcm0gPSBtZXNoVHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtOyAvLyBhcHBseSB0cmFuc2Zvcm0gdG8gZ2VvbWV0cnkuYWFiYlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2dlb21ldHJ5Q29tcG9uZW50JGFhID0gZ2VvbWV0cnlDb21wb25lbnQuYWFiYiwgY2VudGVyID0gX2dlb21ldHJ5Q29tcG9uZW50JGFhLmNlbnRlciwgaGFsZkV4dGVudHMgPSBfZ2VvbWV0cnlDb21wb25lbnQkYWEuaGFsZkV4dGVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRDZW50ZXIgPSB2ZWMzLnRyYW5zZm9ybU1hdDQodmVjMy5jcmVhdGUoKSwgY2VudGVyLCB3b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25TY2FsZSA9IGdldFJvdGF0aW9uU2NhbGUod29ybGRUcmFuc2Zvcm0sIG1hdDMuY3JlYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkSGFsZkV4dGVudHMgPSB2ZWMzLnRyYW5zZm9ybU1hdDModmVjMy5jcmVhdGUoKSwgaGFsZkV4dGVudHMsIHJvdGF0aW9uU2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hYWJiLnVwZGF0ZSh0cmFuc2Zvcm1lZENlbnRlciwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmFhYmJEaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGN1bGxpbmdcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdWxsYWJsZUNvbXBvbmVudCAmJiBnZW9tZXRyeUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEN1bGxhYmxlQ29tcG9uZW50ID0gdGhpcy5jdWxsYWJsZS5nZXRDb21wb25lbnRCeUVudGl0eSgoaGllcmFyY2h5Q29tcG9uZW50ID09PSBudWxsIHx8IGhpZXJhcmNoeUNvbXBvbmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGllcmFyY2h5Q29tcG9uZW50LnBhcmVudElEKSB8fCAtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VsbGFibGVDb21wb25lbnQudmlzaWJpbGl0eVBsYW5lTWFzayA9IHRoaXMuY29tcHV0ZVZpc2liaWxpdHlXaXRoUGxhbmVNYXNrKGNvbXBvbmVudC5hYWJiLCAocGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IG51bGwgfHwgcGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEN1bGxhYmxlQ29tcG9uZW50LnZpc2liaWxpdHlQbGFuZU1hc2spIHx8IE1hc2suSU5ERVRFUk1JTkFURSwgdGhpcy5wbGFuZXMgfHwgY2FtZXJhLmdldEZydXN0dW0oKS5wbGFuZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1bGxhYmxlQ29tcG9uZW50LnZpc2libGUgPSBjdWxsYWJsZUNvbXBvbmVudC52aXNpYmlsaXR5UGxhbmVNYXNrICE9PSBNYXNrLk9VVFNJREU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInRlYXJEb3duXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRlYXJEb3duKCkge1xuICAgICAgdGhpcy5jdWxsYWJsZS5jbGVhcigpO1xuICAgICAgdGhpcy5tZXNoLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHNlZeOAjE9wdGltaXplZCBWaWV3IEZydXN0dW0gQ3VsbGluZyBBbGdvcml0aG1zIGZvciBCb3VuZGluZyBCb3hlc+OAjVxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gICAgICpcbiAgICAgKiAqIOWfuuehgOebuOS6pOa1i+ivlSB0aGUgYmFzaWMgaW50ZXJzZWN0aW9uIHRlc3RcbiAgICAgKiAqIOagh+iusCBtYXNraW5nIEBzZWUgaHR0cHM6Ly9jZXNpdW0uY29tL2Jsb2cvMjAxNS8wOC8wNC9mYXN0LWhpZXJhcmNoaWNhbC1jdWxsaW5nL1xuICAgICAqICogVE9ETzog5bmz6Z2i5LiA6Ie05oCn5rWL6K+VIHRoZSBwbGFuZS1jb2hlcmVuY3kgdGVzdFxuICAgICAqICogVE9ETzog5pSv5oyBIG1lc2gg5oyH5a6a6Ieq6Lqr55qE5YmU6Zmk562W55Wl77yM5Y+C6ICDIEJhYnlsb24uanMgQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWFiYiBhYWJiXG4gICAgICogQHBhcmFtIHBhcmVudFBsYW5lTWFzayBtYXNrIG9mIHBhcmVudFxuICAgICAqIEBwYXJhbSBwbGFuZXMgcGxhbmVzIG9mIGZydXN0dW1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbXB1dGVWaXNpYmlsaXR5V2l0aFBsYW5lTWFza1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wdXRlVmlzaWJpbGl0eVdpdGhQbGFuZU1hc2soYWFiYiwgcGFyZW50UGxhbmVNYXNrLCBwbGFuZXMpIHtcbiAgICAgIGlmIChwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suT1VUU0lERSB8fCBwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suSU5TSURFKSB7XG4gICAgICAgIC8vIOeItuiKgueCueWujOWFqOS9jeS6juinhumUpeWGheaIluiAheWklumDqO+8jOebtOaOpei/lOWbnlxuICAgICAgICByZXR1cm4gcGFyZW50UGxhbmVNYXNrO1xuICAgICAgfSAvLyBTdGFydCB3aXRoIE1BU0tfSU5TSURFIChhbGwgemVyb3MpIHNvIHRoYXQgYWZ0ZXIgdGhlIGxvb3AsIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIGNvbXBhcmVkIHdpdGggTUFTS19JTlNJREUuXG4gICAgICAvLyAoQmVjYXVzZSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiAzMSBwbGFuZXMsIHRoZSB1cHBlciBiaXRzIHdvbnQgYmUgY2hhbmdlZC4pXG5cblxuICAgICAgdmFyIG1hc2sgPSBNYXNrLklOU0lERTtcblxuICAgICAgZm9yICh2YXIgayA9IDAsIGxlbiA9IHBsYW5lcy5sZW5ndGg7IGsgPCBsZW47ICsraykge1xuICAgICAgICAvLyBGb3IgayBncmVhdGVyIHRoYW4gMzEgKHNpbmNlIDMxIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBJTlNJREUvSU5URVJTRUNUSU5HIGJpdHMgd2UgY2FuIHN0b3JlKSwgc2tpcCB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICB2YXIgZmxhZyA9IGsgPCAzMSA/IDEgPDwgayA6IDA7XG5cbiAgICAgICAgaWYgKGsgPCAzMSAmJiAocGFyZW50UGxhbmVNYXNrICYgZmxhZykgPT09IDApIHtcbiAgICAgICAgICAvLyDniLboioLngrnlpITkuo7lvZPliY3pnaLlhoXpg6jvvIzlj6/ku6Xot7Pov4dcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyDkvb/nlKggcC12ZXJ0ZXgg5ZKMIG4tdmVydGV4IOWKoOmAn++8jOmBv+WFjei/m+ihjOW5s+mdouWSjCBhYWJiIOWFqOmDqOmhtueCueeahOebuOS6pOajgOa1i1xuXG5cbiAgICAgICAgdmFyIF9wbGFuZXMkayA9IHBsYW5lc1trXSxcbiAgICAgICAgICAgIG5vcm1hbCA9IF9wbGFuZXMkay5ub3JtYWwsXG4gICAgICAgICAgICBkaXN0YW5jZSA9IF9wbGFuZXMkay5kaXN0YW5jZTtcblxuICAgICAgICBpZiAodmVjMy5kb3Qobm9ybWFsLCBhYWJiLmdldE5lZ2F0aXZlRmFyUG9pbnQocGxhbmVzW2tdKSkgKyBkaXN0YW5jZSA+IDApIHtcbiAgICAgICAgICByZXR1cm4gTWFzay5PVVRTSURFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlYzMuZG90KG5vcm1hbCwgYWFiYi5nZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lc1trXSkpICsgZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgLy8g5ZKM5b2T5YmN6Z2i55u45Lqk77yM5a+55bqU5L2N572u5Li6Me+8jOe7p+e7reajgOa1i+S4i+S4gOS4qumdolxuICAgICAgICAgIG1hc2sgfD0gZmxhZztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFzaztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVzaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiaGllcmFyY2h5XCIsIFtfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjUgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInRyYW5zZm9ybVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js ***! \*****************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvaW50ZXJmYWNlLmpzPzAzMGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL2ludGVyZmFjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJmYWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js": /*!**********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js ***! \**********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanM/ZTdmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlBdHRyaWJ1dGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js": /*!*******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js ***! \*******************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanM/YmRkOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js": /*!*************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js ***! \*************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanM/ZmU5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js": /*!*********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lFbGVtZW50cy5qcz9iMjdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js": /*!************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js ***! \************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lGcmFtZWJ1ZmZlci5qcz9kNTk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUZyYW1lYnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js ***! \******************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNb2RlbC5qcz81NTFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js": /*!******************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js ***! \******************************************************************************************************************/ /*! exports provided: PassType */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return PassType; });\nvar PassType;\n/**\n * Pass 分两类:\n * 1. 渲染相关 eg. ClearPass、RenderPass、PickingPass、ShadowPass\n * 2. PostProcessing eg. CopyPass、BlurPass\n * 另外考虑到 Pass 之间严格的执行顺序,render 方法必须是异步的\n */\n\n(function (PassType) {\n PassType[\"Normal\"] = \"normal\";\n PassType[\"PostProcessing\"] = \"post-processing\";\n})(PassType || (PassType = {}));\n//# sourceMappingURL=IMultiPassRenderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNdWx0aVBhc3NSZW5kZXJlci5qcz9jZWU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRCQUE0QjtBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU11bHRpUGFzc1JlbmRlcmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXNzVHlwZTtcbi8qKlxuICogUGFzcyDliIbkuKTnsbvvvJpcbiAqIDEuIOa4suafk+ebuOWFsyBlZy4gQ2xlYXJQYXNz44CBUmVuZGVyUGFzc+OAgVBpY2tpbmdQYXNz44CBU2hhZG93UGFzc1xuICogMi4gUG9zdFByb2Nlc3NpbmcgZWcuIENvcHlQYXNz44CBQmx1clBhc3NcbiAqIOWPpuWkluiAg+iZkeWIsCBQYXNzIOS5i+mXtOS4peagvOeahOaJp+ihjOmhuuW6j++8jHJlbmRlciDmlrnms5Xlv4XpobvmmK/lvILmraXnmoRcbiAqL1xuXG4oZnVuY3Rpb24gKFBhc3NUeXBlKSB7XG4gIFBhc3NUeXBlW1wiTm9ybWFsXCJdID0gXCJub3JtYWxcIjtcbiAgUGFzc1R5cGVbXCJQb3N0UHJvY2Vzc2luZ1wiXSA9IFwicG9zdC1wcm9jZXNzaW5nXCI7XG59KShQYXNzVHlwZSB8fCAoUGFzc1R5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SU11bHRpUGFzc1JlbmRlcmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js": /*!*************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js ***! \*************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IRenderbuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanM/MjQ5OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js": /*!****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js ***! \****************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IRendererService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanM/NGQ5MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJlclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js": /*!**********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js ***! \**********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=ITexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanM/M2E5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlUZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js": /*!********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js ***! \********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("\n//# sourceMappingURL=IUniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lVbmlmb3JtLmpzPzliNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9JVW5pZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SVVuaWZvcm0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js ***! \******************************************************************************************************/ /*! exports provided: RendererSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return RendererSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./passes/CopyPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./passes/PixelPickingPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./passes/RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _temp;\n\n\n\n\n\n\nvar RendererSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].FrameGraphSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function RendererSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RendererSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor4, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RendererSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _this$renderPassFacto, setupRenderPass, executeRenderPass, renderPass, _this$renderPassFacto2, setupCopyPass, executeCopyPass, tearDownCopyPass, copyPass;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // const pixelPickingPass = this.renderPassFactory(\n // PixelPickingPass.IDENTIFIER,\n // );\n // const {\n // setup: setupPixelPickingPass,\n // execute: executePixelPickingPass,\n // tearDown: tearDownPickingPass,\n // } = pixelPickingPass;\n // this.frameGraphSystem.addPass(\n // PixelPickingPass.IDENTIFIER,\n // setupPixelPickingPass,\n // executePixelPickingPass,\n // tearDownPickingPass,\n // );\n _this$renderPassFacto = this.renderPassFactory(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER), setupRenderPass = _this$renderPassFacto.setup, executeRenderPass = _this$renderPassFacto.execute;\n renderPass = this.frameGraphSystem.addPass(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER, setupRenderPass, executeRenderPass);\n _this$renderPassFacto2 = this.renderPassFactory(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER), setupCopyPass = _this$renderPassFacto2.setup, executeCopyPass = _this$renderPassFacto2.execute, tearDownCopyPass = _this$renderPassFacto2.tearDown;\n copyPass = this.frameGraphSystem.addPass(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER, setupCopyPass, executeCopyPass, tearDownCopyPass);\n this.frameGraphSystem.present(copyPass.data.output); // this.frameGraphSystem.present(renderPass.data.output);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.resourcePool.clean();\n }\n }, {\n key: \"pick\",\n value: function pick(position, view) {\n var pickingPass = this.renderPassFactory(_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"].IDENTIFIER);\n return pickingPass.pick(position, view);\n }\n }]);\n\n return RendererSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL1N5c3RlbS5qcz9iNjhlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFc0Q7QUFDUjtBQUNEO0FBQ2dCO0FBQ1o7QUFDMUMsNkJBQTZCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSxtQkFBbUIsdURBQUssQ0FBQyxzREFBVSw0QkFBNEIsd0RBQU0sQ0FBQyxzREFBVSw2QkFBNkIsd0RBQU0sQ0FBQyxzREFBVSx5QkFBeUIsd0RBQU0sQ0FBQyxzREFBVTtBQUNuUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsOERBQVU7QUFDekUsMkRBQTJELDhEQUFVO0FBQ3JFLGdFQUFnRSx5REFBUTtBQUN4RSx5REFBeUQseURBQVE7QUFDakUsb0VBQW9FOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0NBQStDLDBFQUFnQjtBQUMvRDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUsIG5hbWVkIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IENvcHlQYXNzIH0gZnJvbSAnLi9wYXNzZXMvQ29weVBhc3MnO1xuaW1wb3J0IHsgUGl4ZWxQaWNraW5nUGFzcyB9IGZyb20gJy4vcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vcGFzc2VzL1JlbmRlclBhc3MnO1xuZXhwb3J0IHZhciBSZW5kZXJlclN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJlclN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyZXJTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY29uZmlnU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZXNvdXJjZVBvb2xcIiwgX2Rlc2NyaXB0b3I0LCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZW5kZXJlclN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHZhciBfdGhpcyRyZW5kZXJQYXNzRmFjdG8sIHNldHVwUmVuZGVyUGFzcywgZXhlY3V0ZVJlbmRlclBhc3MsIHJlbmRlclBhc3MsIF90aGlzJHJlbmRlclBhc3NGYWN0bzIsIHNldHVwQ29weVBhc3MsIGV4ZWN1dGVDb3B5UGFzcywgdGVhckRvd25Db3B5UGFzcywgY29weVBhc3M7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBwaXhlbFBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeTxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCB7XG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cDogc2V0dXBQaXhlbFBpY2tpbmdQYXNzLFxuICAgICAgICAgICAgICAgIC8vICAgZXhlY3V0ZTogZXhlY3V0ZVBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICB0ZWFyRG93bjogdGVhckRvd25QaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyB9ID0gcGl4ZWxQaWNraW5nUGFzcztcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzczxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cFBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICBleGVjdXRlUGl4ZWxQaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyAgIHRlYXJEb3duUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8gPSB0aGlzLnJlbmRlclBhc3NGYWN0b3J5KFJlbmRlclBhc3MuSURFTlRJRklFUiksIHNldHVwUmVuZGVyUGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0by5zZXR1cCwgZXhlY3V0ZVJlbmRlclBhc3MgPSBfdGhpcyRyZW5kZXJQYXNzRmFjdG8uZXhlY3V0ZTtcbiAgICAgICAgICAgICAgICByZW5kZXJQYXNzID0gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLmFkZFBhc3MoUmVuZGVyUGFzcy5JREVOVElGSUVSLCBzZXR1cFJlbmRlclBhc3MsIGV4ZWN1dGVSZW5kZXJQYXNzKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8yID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShDb3B5UGFzcy5JREVOVElGSUVSKSwgc2V0dXBDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuc2V0dXAsIGV4ZWN1dGVDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuZXhlY3V0ZSwgdGVhckRvd25Db3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIudGVhckRvd247XG4gICAgICAgICAgICAgICAgY29weVBhc3MgPSB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzcyhDb3B5UGFzcy5JREVOVElGSUVSLCBzZXR1cENvcHlQYXNzLCBleGVjdXRlQ29weVBhc3MsIHRlYXJEb3duQ29weVBhc3MpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWVHcmFwaFN5c3RlbS5wcmVzZW50KGNvcHlQYXNzLmRhdGEub3V0cHV0KTsgLy8gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLnByZXNlbnQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKF94KSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sLmNsZWFuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBpY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGljayhwb3NpdGlvbiwgdmlldykge1xuICAgICAgdmFyIHBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICAgICAgcmV0dXJuIHBpY2tpbmdQYXNzLnBpY2socG9zaXRpb24sIHZpZXcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZW5kZXJlclN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlbmRlclBhc3NGYWN0b3J5XCIsIFtfZGVjNF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVzb3VyY2VQb29sXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TeXN0ZW0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js ***! \**************************************************************************************************/ /*! exports provided: gl */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return gl; });\n/**\n * WebGL 枚举值\n * @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14\n * 使用 babel 插件对常量进行内联,以减少最终打包产物大小\n * @see https://github.com/uber/deck.gl/blob/7.1-release/dev-docs/roadmaps/dist-size-roadmap.md#inline-gl-constants\n * 为了支持 WebGPU,新增 TextureUsage\n * @see https://gpuweb.github.io/gpuweb/#gputextureusage\n */\nvar gl;\n\n(function (gl) {\n gl[gl[\"DEPTH_BUFFER_BIT\"] = 256] = \"DEPTH_BUFFER_BIT\";\n gl[gl[\"STENCIL_BUFFER_BIT\"] = 1024] = \"STENCIL_BUFFER_BIT\";\n gl[gl[\"COLOR_BUFFER_BIT\"] = 16384] = \"COLOR_BUFFER_BIT\";\n gl[gl[\"POINTS\"] = 0] = \"POINTS\";\n gl[gl[\"LINES\"] = 1] = \"LINES\";\n gl[gl[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n gl[gl[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n gl[gl[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n gl[gl[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n gl[gl[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n gl[gl[\"ZERO\"] = 0] = \"ZERO\";\n gl[gl[\"ONE\"] = 1] = \"ONE\";\n gl[gl[\"SRC_COLOR\"] = 768] = \"SRC_COLOR\";\n gl[gl[\"ONE_MINUS_SRC_COLOR\"] = 769] = \"ONE_MINUS_SRC_COLOR\";\n gl[gl[\"SRC_ALPHA\"] = 770] = \"SRC_ALPHA\";\n gl[gl[\"ONE_MINUS_SRC_ALPHA\"] = 771] = \"ONE_MINUS_SRC_ALPHA\";\n gl[gl[\"DST_ALPHA\"] = 772] = \"DST_ALPHA\";\n gl[gl[\"ONE_MINUS_DST_ALPHA\"] = 773] = \"ONE_MINUS_DST_ALPHA\";\n gl[gl[\"DST_COLOR\"] = 774] = \"DST_COLOR\";\n gl[gl[\"ONE_MINUS_DST_COLOR\"] = 775] = \"ONE_MINUS_DST_COLOR\";\n gl[gl[\"SRC_ALPHA_SATURATE\"] = 776] = \"SRC_ALPHA_SATURATE\";\n gl[gl[\"FUNC_ADD\"] = 32774] = \"FUNC_ADD\";\n gl[gl[\"BLEND_EQUATION\"] = 32777] = \"BLEND_EQUATION\";\n gl[gl[\"BLEND_EQUATION_RGB\"] = 32777] = \"BLEND_EQUATION_RGB\";\n gl[gl[\"BLEND_EQUATION_ALPHA\"] = 34877] = \"BLEND_EQUATION_ALPHA\";\n gl[gl[\"FUNC_SUBTRACT\"] = 32778] = \"FUNC_SUBTRACT\";\n gl[gl[\"FUNC_REVERSE_SUBTRACT\"] = 32779] = \"FUNC_REVERSE_SUBTRACT\";\n gl[gl[\"MAX_EXT\"] = 32776] = \"MAX_EXT\";\n gl[gl[\"MIN_EXT\"] = 32775] = \"MIN_EXT\";\n gl[gl[\"BLEND_DST_RGB\"] = 32968] = \"BLEND_DST_RGB\";\n gl[gl[\"BLEND_SRC_RGB\"] = 32969] = \"BLEND_SRC_RGB\";\n gl[gl[\"BLEND_DST_ALPHA\"] = 32970] = \"BLEND_DST_ALPHA\";\n gl[gl[\"BLEND_SRC_ALPHA\"] = 32971] = \"BLEND_SRC_ALPHA\";\n gl[gl[\"CONSTANT_COLOR\"] = 32769] = \"CONSTANT_COLOR\";\n gl[gl[\"ONE_MINUS_CONSTANT_COLOR\"] = 32770] = \"ONE_MINUS_CONSTANT_COLOR\";\n gl[gl[\"CONSTANT_ALPHA\"] = 32771] = \"CONSTANT_ALPHA\";\n gl[gl[\"ONE_MINUS_CONSTANT_ALPHA\"] = 32772] = \"ONE_MINUS_CONSTANT_ALPHA\";\n gl[gl[\"BLEND_COLOR\"] = 32773] = \"BLEND_COLOR\";\n gl[gl[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n gl[gl[\"ARRAY_BUFFER_BINDING\"] = 34964] = \"ARRAY_BUFFER_BINDING\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER_BINDING\"] = 34965] = \"ELEMENT_ARRAY_BUFFER_BINDING\";\n gl[gl[\"STREAM_DRAW\"] = 35040] = \"STREAM_DRAW\";\n gl[gl[\"STATIC_DRAW\"] = 35044] = \"STATIC_DRAW\";\n gl[gl[\"DYNAMIC_DRAW\"] = 35048] = \"DYNAMIC_DRAW\";\n gl[gl[\"BUFFER_SIZE\"] = 34660] = \"BUFFER_SIZE\";\n gl[gl[\"BUFFER_USAGE\"] = 34661] = \"BUFFER_USAGE\";\n gl[gl[\"CURRENT_VERTEX_ATTRIB\"] = 34342] = \"CURRENT_VERTEX_ATTRIB\";\n gl[gl[\"FRONT\"] = 1028] = \"FRONT\";\n gl[gl[\"BACK\"] = 1029] = \"BACK\";\n gl[gl[\"FRONT_AND_BACK\"] = 1032] = \"FRONT_AND_BACK\";\n gl[gl[\"CULL_FACE\"] = 2884] = \"CULL_FACE\";\n gl[gl[\"BLEND\"] = 3042] = \"BLEND\";\n gl[gl[\"DITHER\"] = 3024] = \"DITHER\";\n gl[gl[\"STENCIL_TEST\"] = 2960] = \"STENCIL_TEST\";\n gl[gl[\"DEPTH_TEST\"] = 2929] = \"DEPTH_TEST\";\n gl[gl[\"SCISSOR_TEST\"] = 3089] = \"SCISSOR_TEST\";\n gl[gl[\"POLYGON_OFFSET_FILL\"] = 32823] = \"POLYGON_OFFSET_FILL\";\n gl[gl[\"SAMPLE_ALPHA_TO_COVERAGE\"] = 32926] = \"SAMPLE_ALPHA_TO_COVERAGE\";\n gl[gl[\"SAMPLE_COVERAGE\"] = 32928] = \"SAMPLE_COVERAGE\";\n gl[gl[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n gl[gl[\"INVALID_ENUM\"] = 1280] = \"INVALID_ENUM\";\n gl[gl[\"INVALID_VALUE\"] = 1281] = \"INVALID_VALUE\";\n gl[gl[\"INVALID_OPERATION\"] = 1282] = \"INVALID_OPERATION\";\n gl[gl[\"OUT_OF_MEMORY\"] = 1285] = \"OUT_OF_MEMORY\";\n gl[gl[\"CW\"] = 2304] = \"CW\";\n gl[gl[\"CCW\"] = 2305] = \"CCW\";\n gl[gl[\"LINE_WIDTH\"] = 2849] = \"LINE_WIDTH\";\n gl[gl[\"ALIASED_POINT_SIZE_RANGE\"] = 33901] = \"ALIASED_POINT_SIZE_RANGE\";\n gl[gl[\"ALIASED_LINE_WIDTH_RANGE\"] = 33902] = \"ALIASED_LINE_WIDTH_RANGE\";\n gl[gl[\"CULL_FACE_MODE\"] = 2885] = \"CULL_FACE_MODE\";\n gl[gl[\"FRONT_FACE\"] = 2886] = \"FRONT_FACE\";\n gl[gl[\"DEPTH_RANGE\"] = 2928] = \"DEPTH_RANGE\";\n gl[gl[\"DEPTH_WRITEMASK\"] = 2930] = \"DEPTH_WRITEMASK\";\n gl[gl[\"DEPTH_CLEAR_VALUE\"] = 2931] = \"DEPTH_CLEAR_VALUE\";\n gl[gl[\"DEPTH_FUNC\"] = 2932] = \"DEPTH_FUNC\";\n gl[gl[\"STENCIL_CLEAR_VALUE\"] = 2961] = \"STENCIL_CLEAR_VALUE\";\n gl[gl[\"STENCIL_FUNC\"] = 2962] = \"STENCIL_FUNC\";\n gl[gl[\"STENCIL_FAIL\"] = 2964] = \"STENCIL_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_FAIL\"] = 2965] = \"STENCIL_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_PASS\"] = 2966] = \"STENCIL_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_REF\"] = 2967] = \"STENCIL_REF\";\n gl[gl[\"STENCIL_VALUE_MASK\"] = 2963] = \"STENCIL_VALUE_MASK\";\n gl[gl[\"STENCIL_WRITEMASK\"] = 2968] = \"STENCIL_WRITEMASK\";\n gl[gl[\"STENCIL_BACK_FUNC\"] = 34816] = \"STENCIL_BACK_FUNC\";\n gl[gl[\"STENCIL_BACK_FAIL\"] = 34817] = \"STENCIL_BACK_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_FAIL\"] = 34818] = \"STENCIL_BACK_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_PASS\"] = 34819] = \"STENCIL_BACK_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_BACK_REF\"] = 36003] = \"STENCIL_BACK_REF\";\n gl[gl[\"STENCIL_BACK_VALUE_MASK\"] = 36004] = \"STENCIL_BACK_VALUE_MASK\";\n gl[gl[\"STENCIL_BACK_WRITEMASK\"] = 36005] = \"STENCIL_BACK_WRITEMASK\";\n gl[gl[\"VIEWPORT\"] = 2978] = \"VIEWPORT\";\n gl[gl[\"SCISSOR_BOX\"] = 3088] = \"SCISSOR_BOX\";\n gl[gl[\"COLOR_CLEAR_VALUE\"] = 3106] = \"COLOR_CLEAR_VALUE\";\n gl[gl[\"COLOR_WRITEMASK\"] = 3107] = \"COLOR_WRITEMASK\";\n gl[gl[\"UNPACK_ALIGNMENT\"] = 3317] = \"UNPACK_ALIGNMENT\";\n gl[gl[\"PACK_ALIGNMENT\"] = 3333] = \"PACK_ALIGNMENT\";\n gl[gl[\"MAX_TEXTURE_SIZE\"] = 3379] = \"MAX_TEXTURE_SIZE\";\n gl[gl[\"MAX_VIEWPORT_DIMS\"] = 3386] = \"MAX_VIEWPORT_DIMS\";\n gl[gl[\"SUBPIXEL_BITS\"] = 3408] = \"SUBPIXEL_BITS\";\n gl[gl[\"RED_BITS\"] = 3410] = \"RED_BITS\";\n gl[gl[\"GREEN_BITS\"] = 3411] = \"GREEN_BITS\";\n gl[gl[\"BLUE_BITS\"] = 3412] = \"BLUE_BITS\";\n gl[gl[\"ALPHA_BITS\"] = 3413] = \"ALPHA_BITS\";\n gl[gl[\"DEPTH_BITS\"] = 3414] = \"DEPTH_BITS\";\n gl[gl[\"STENCIL_BITS\"] = 3415] = \"STENCIL_BITS\";\n gl[gl[\"POLYGON_OFFSET_UNITS\"] = 10752] = \"POLYGON_OFFSET_UNITS\";\n gl[gl[\"POLYGON_OFFSET_FACTOR\"] = 32824] = \"POLYGON_OFFSET_FACTOR\";\n gl[gl[\"TEXTURE_BINDING_2D\"] = 32873] = \"TEXTURE_BINDING_2D\";\n gl[gl[\"SAMPLE_BUFFERS\"] = 32936] = \"SAMPLE_BUFFERS\";\n gl[gl[\"SAMPLES\"] = 32937] = \"SAMPLES\";\n gl[gl[\"SAMPLE_COVERAGE_VALUE\"] = 32938] = \"SAMPLE_COVERAGE_VALUE\";\n gl[gl[\"SAMPLE_COVERAGE_INVERT\"] = 32939] = \"SAMPLE_COVERAGE_INVERT\";\n gl[gl[\"COMPRESSED_TEXTURE_FORMATS\"] = 34467] = \"COMPRESSED_TEXTURE_FORMATS\";\n gl[gl[\"DONT_CARE\"] = 4352] = \"DONT_CARE\";\n gl[gl[\"FASTEST\"] = 4353] = \"FASTEST\";\n gl[gl[\"NICEST\"] = 4354] = \"NICEST\";\n gl[gl[\"GENERATE_MIPMAP_HINT\"] = 33170] = \"GENERATE_MIPMAP_HINT\";\n gl[gl[\"BYTE\"] = 5120] = \"BYTE\";\n gl[gl[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n gl[gl[\"SHORT\"] = 5122] = \"SHORT\";\n gl[gl[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n gl[gl[\"INT\"] = 5124] = \"INT\";\n gl[gl[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n gl[gl[\"FLOAT\"] = 5126] = \"FLOAT\";\n gl[gl[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n gl[gl[\"ALPHA\"] = 6406] = \"ALPHA\";\n gl[gl[\"RGB\"] = 6407] = \"RGB\";\n gl[gl[\"RGBA\"] = 6408] = \"RGBA\";\n gl[gl[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n gl[gl[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n gl[gl[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n gl[gl[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n gl[gl[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n gl[gl[\"FRAGMENT_SHADER\"] = 35632] = \"FRAGMENT_SHADER\";\n gl[gl[\"VERTEX_SHADER\"] = 35633] = \"VERTEX_SHADER\";\n gl[gl[\"MAX_VERTEX_ATTRIBS\"] = 34921] = \"MAX_VERTEX_ATTRIBS\";\n gl[gl[\"MAX_VERTEX_UNIFORM_VECTORS\"] = 36347] = \"MAX_VERTEX_UNIFORM_VECTORS\";\n gl[gl[\"MAX_VARYING_VECTORS\"] = 36348] = \"MAX_VARYING_VECTORS\";\n gl[gl[\"MAX_COMBINED_TEXTURE_IMAGE_UNITS\"] = 35661] = \"MAX_COMBINED_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_VERTEX_TEXTURE_IMAGE_UNITS\"] = 35660] = \"MAX_VERTEX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_TEXTURE_IMAGE_UNITS\"] = 34930] = \"MAX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_FRAGMENT_UNIFORM_VECTORS\"] = 36349] = \"MAX_FRAGMENT_UNIFORM_VECTORS\";\n gl[gl[\"SHADER_TYPE\"] = 35663] = \"SHADER_TYPE\";\n gl[gl[\"DELETE_STATUS\"] = 35712] = \"DELETE_STATUS\";\n gl[gl[\"LINK_STATUS\"] = 35714] = \"LINK_STATUS\";\n gl[gl[\"VALIDATE_STATUS\"] = 35715] = \"VALIDATE_STATUS\";\n gl[gl[\"ATTACHED_SHADERS\"] = 35717] = \"ATTACHED_SHADERS\";\n gl[gl[\"ACTIVE_UNIFORMS\"] = 35718] = \"ACTIVE_UNIFORMS\";\n gl[gl[\"ACTIVE_ATTRIBUTES\"] = 35721] = \"ACTIVE_ATTRIBUTES\";\n gl[gl[\"SHADING_LANGUAGE_VERSION\"] = 35724] = \"SHADING_LANGUAGE_VERSION\";\n gl[gl[\"CURRENT_PROGRAM\"] = 35725] = \"CURRENT_PROGRAM\";\n gl[gl[\"NEVER\"] = 512] = \"NEVER\";\n gl[gl[\"LESS\"] = 513] = \"LESS\";\n gl[gl[\"EQUAL\"] = 514] = \"EQUAL\";\n gl[gl[\"LEQUAL\"] = 515] = \"LEQUAL\";\n gl[gl[\"GREATER\"] = 516] = \"GREATER\";\n gl[gl[\"NOTEQUAL\"] = 517] = \"NOTEQUAL\";\n gl[gl[\"GEQUAL\"] = 518] = \"GEQUAL\";\n gl[gl[\"ALWAYS\"] = 519] = \"ALWAYS\";\n gl[gl[\"KEEP\"] = 7680] = \"KEEP\";\n gl[gl[\"REPLACE\"] = 7681] = \"REPLACE\";\n gl[gl[\"INCR\"] = 7682] = \"INCR\";\n gl[gl[\"DECR\"] = 7683] = \"DECR\";\n gl[gl[\"INVERT\"] = 5386] = \"INVERT\";\n gl[gl[\"INCR_WRAP\"] = 34055] = \"INCR_WRAP\";\n gl[gl[\"DECR_WRAP\"] = 34056] = \"DECR_WRAP\";\n gl[gl[\"VENDOR\"] = 7936] = \"VENDOR\";\n gl[gl[\"RENDERER\"] = 7937] = \"RENDERER\";\n gl[gl[\"VERSION\"] = 7938] = \"VERSION\";\n gl[gl[\"NEAREST\"] = 9728] = \"NEAREST\";\n gl[gl[\"LINEAR\"] = 9729] = \"LINEAR\";\n gl[gl[\"NEAREST_MIPMAP_NEAREST\"] = 9984] = \"NEAREST_MIPMAP_NEAREST\";\n gl[gl[\"LINEAR_MIPMAP_NEAREST\"] = 9985] = \"LINEAR_MIPMAP_NEAREST\";\n gl[gl[\"NEAREST_MIPMAP_LINEAR\"] = 9986] = \"NEAREST_MIPMAP_LINEAR\";\n gl[gl[\"LINEAR_MIPMAP_LINEAR\"] = 9987] = \"LINEAR_MIPMAP_LINEAR\";\n gl[gl[\"TEXTURE_MAG_FILTER\"] = 10240] = \"TEXTURE_MAG_FILTER\";\n gl[gl[\"TEXTURE_MIN_FILTER\"] = 10241] = \"TEXTURE_MIN_FILTER\";\n gl[gl[\"TEXTURE_WRAP_S\"] = 10242] = \"TEXTURE_WRAP_S\";\n gl[gl[\"TEXTURE_WRAP_T\"] = 10243] = \"TEXTURE_WRAP_T\";\n gl[gl[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n gl[gl[\"TEXTURE\"] = 5890] = \"TEXTURE\";\n gl[gl[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n gl[gl[\"TEXTURE_BINDING_CUBE_MAP\"] = 34068] = \"TEXTURE_BINDING_CUBE_MAP\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n gl[gl[\"MAX_CUBE_MAP_TEXTURE_SIZE\"] = 34076] = \"MAX_CUBE_MAP_TEXTURE_SIZE\";\n gl[gl[\"TEXTURE0\"] = 33984] = \"TEXTURE0\";\n gl[gl[\"TEXTURE1\"] = 33985] = \"TEXTURE1\";\n gl[gl[\"TEXTURE2\"] = 33986] = \"TEXTURE2\";\n gl[gl[\"TEXTURE3\"] = 33987] = \"TEXTURE3\";\n gl[gl[\"TEXTURE4\"] = 33988] = \"TEXTURE4\";\n gl[gl[\"TEXTURE5\"] = 33989] = \"TEXTURE5\";\n gl[gl[\"TEXTURE6\"] = 33990] = \"TEXTURE6\";\n gl[gl[\"TEXTURE7\"] = 33991] = \"TEXTURE7\";\n gl[gl[\"TEXTURE8\"] = 33992] = \"TEXTURE8\";\n gl[gl[\"TEXTURE9\"] = 33993] = \"TEXTURE9\";\n gl[gl[\"TEXTURE10\"] = 33994] = \"TEXTURE10\";\n gl[gl[\"TEXTURE11\"] = 33995] = \"TEXTURE11\";\n gl[gl[\"TEXTURE12\"] = 33996] = \"TEXTURE12\";\n gl[gl[\"TEXTURE13\"] = 33997] = \"TEXTURE13\";\n gl[gl[\"TEXTURE14\"] = 33998] = \"TEXTURE14\";\n gl[gl[\"TEXTURE15\"] = 33999] = \"TEXTURE15\";\n gl[gl[\"TEXTURE16\"] = 34000] = \"TEXTURE16\";\n gl[gl[\"TEXTURE17\"] = 34001] = \"TEXTURE17\";\n gl[gl[\"TEXTURE18\"] = 34002] = \"TEXTURE18\";\n gl[gl[\"TEXTURE19\"] = 34003] = \"TEXTURE19\";\n gl[gl[\"TEXTURE20\"] = 34004] = \"TEXTURE20\";\n gl[gl[\"TEXTURE21\"] = 34005] = \"TEXTURE21\";\n gl[gl[\"TEXTURE22\"] = 34006] = \"TEXTURE22\";\n gl[gl[\"TEXTURE23\"] = 34007] = \"TEXTURE23\";\n gl[gl[\"TEXTURE24\"] = 34008] = \"TEXTURE24\";\n gl[gl[\"TEXTURE25\"] = 34009] = \"TEXTURE25\";\n gl[gl[\"TEXTURE26\"] = 34010] = \"TEXTURE26\";\n gl[gl[\"TEXTURE27\"] = 34011] = \"TEXTURE27\";\n gl[gl[\"TEXTURE28\"] = 34012] = \"TEXTURE28\";\n gl[gl[\"TEXTURE29\"] = 34013] = \"TEXTURE29\";\n gl[gl[\"TEXTURE30\"] = 34014] = \"TEXTURE30\";\n gl[gl[\"TEXTURE31\"] = 34015] = \"TEXTURE31\";\n gl[gl[\"ACTIVE_TEXTURE\"] = 34016] = \"ACTIVE_TEXTURE\";\n gl[gl[\"REPEAT\"] = 10497] = \"REPEAT\";\n gl[gl[\"CLAMP_TO_EDGE\"] = 33071] = \"CLAMP_TO_EDGE\";\n gl[gl[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n gl[gl[\"FLOAT_VEC2\"] = 35664] = \"FLOAT_VEC2\";\n gl[gl[\"FLOAT_VEC3\"] = 35665] = \"FLOAT_VEC3\";\n gl[gl[\"FLOAT_VEC4\"] = 35666] = \"FLOAT_VEC4\";\n gl[gl[\"INT_VEC2\"] = 35667] = \"INT_VEC2\";\n gl[gl[\"INT_VEC3\"] = 35668] = \"INT_VEC3\";\n gl[gl[\"INT_VEC4\"] = 35669] = \"INT_VEC4\";\n gl[gl[\"BOOL\"] = 35670] = \"BOOL\";\n gl[gl[\"BOOL_VEC2\"] = 35671] = \"BOOL_VEC2\";\n gl[gl[\"BOOL_VEC3\"] = 35672] = \"BOOL_VEC3\";\n gl[gl[\"BOOL_VEC4\"] = 35673] = \"BOOL_VEC4\";\n gl[gl[\"FLOAT_MAT2\"] = 35674] = \"FLOAT_MAT2\";\n gl[gl[\"FLOAT_MAT3\"] = 35675] = \"FLOAT_MAT3\";\n gl[gl[\"FLOAT_MAT4\"] = 35676] = \"FLOAT_MAT4\";\n gl[gl[\"SAMPLER_2D\"] = 35678] = \"SAMPLER_2D\";\n gl[gl[\"SAMPLER_CUBE\"] = 35680] = \"SAMPLER_CUBE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_ENABLED\"] = 34338] = \"VERTEX_ATTRIB_ARRAY_ENABLED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_SIZE\"] = 34339] = \"VERTEX_ATTRIB_ARRAY_SIZE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_STRIDE\"] = 34340] = \"VERTEX_ATTRIB_ARRAY_STRIDE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_TYPE\"] = 34341] = \"VERTEX_ATTRIB_ARRAY_TYPE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_NORMALIZED\"] = 34922] = \"VERTEX_ATTRIB_ARRAY_NORMALIZED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_POINTER\"] = 34373] = \"VERTEX_ATTRIB_ARRAY_POINTER\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\"] = 34975] = \"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\";\n gl[gl[\"COMPILE_STATUS\"] = 35713] = \"COMPILE_STATUS\";\n gl[gl[\"LOW_FLOAT\"] = 36336] = \"LOW_FLOAT\";\n gl[gl[\"MEDIUM_FLOAT\"] = 36337] = \"MEDIUM_FLOAT\";\n gl[gl[\"HIGH_FLOAT\"] = 36338] = \"HIGH_FLOAT\";\n gl[gl[\"LOW_INT\"] = 36339] = \"LOW_INT\";\n gl[gl[\"MEDIUM_INT\"] = 36340] = \"MEDIUM_INT\";\n gl[gl[\"HIGH_INT\"] = 36341] = \"HIGH_INT\";\n gl[gl[\"FRAMEBUFFER\"] = 36160] = \"FRAMEBUFFER\";\n gl[gl[\"RENDERBUFFER\"] = 36161] = \"RENDERBUFFER\";\n gl[gl[\"RGBA4\"] = 32854] = \"RGBA4\";\n gl[gl[\"RGB5_A1\"] = 32855] = \"RGB5_A1\";\n gl[gl[\"RGB565\"] = 36194] = \"RGB565\";\n gl[gl[\"DEPTH_COMPONENT16\"] = 33189] = \"DEPTH_COMPONENT16\";\n gl[gl[\"STENCIL_INDEX\"] = 6401] = \"STENCIL_INDEX\";\n gl[gl[\"STENCIL_INDEX8\"] = 36168] = \"STENCIL_INDEX8\";\n gl[gl[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n gl[gl[\"RENDERBUFFER_WIDTH\"] = 36162] = \"RENDERBUFFER_WIDTH\";\n gl[gl[\"RENDERBUFFER_HEIGHT\"] = 36163] = \"RENDERBUFFER_HEIGHT\";\n gl[gl[\"RENDERBUFFER_INTERNAL_FORMAT\"] = 36164] = \"RENDERBUFFER_INTERNAL_FORMAT\";\n gl[gl[\"RENDERBUFFER_RED_SIZE\"] = 36176] = \"RENDERBUFFER_RED_SIZE\";\n gl[gl[\"RENDERBUFFER_GREEN_SIZE\"] = 36177] = \"RENDERBUFFER_GREEN_SIZE\";\n gl[gl[\"RENDERBUFFER_BLUE_SIZE\"] = 36178] = \"RENDERBUFFER_BLUE_SIZE\";\n gl[gl[\"RENDERBUFFER_ALPHA_SIZE\"] = 36179] = \"RENDERBUFFER_ALPHA_SIZE\";\n gl[gl[\"RENDERBUFFER_DEPTH_SIZE\"] = 36180] = \"RENDERBUFFER_DEPTH_SIZE\";\n gl[gl[\"RENDERBUFFER_STENCIL_SIZE\"] = 36181] = \"RENDERBUFFER_STENCIL_SIZE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\"] = 36048] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\"] = 36049] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\"] = 36050] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\"] = 36051] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\";\n gl[gl[\"COLOR_ATTACHMENT0\"] = 36064] = \"COLOR_ATTACHMENT0\";\n gl[gl[\"DEPTH_ATTACHMENT\"] = 36096] = \"DEPTH_ATTACHMENT\";\n gl[gl[\"STENCIL_ATTACHMENT\"] = 36128] = \"STENCIL_ATTACHMENT\";\n gl[gl[\"DEPTH_STENCIL_ATTACHMENT\"] = 33306] = \"DEPTH_STENCIL_ATTACHMENT\";\n gl[gl[\"NONE\"] = 0] = \"NONE\";\n gl[gl[\"FRAMEBUFFER_COMPLETE\"] = 36053] = \"FRAMEBUFFER_COMPLETE\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\"] = 36054] = \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\"] = 36055] = \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\"] = 36057] = \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n gl[gl[\"FRAMEBUFFER_UNSUPPORTED\"] = 36061] = \"FRAMEBUFFER_UNSUPPORTED\";\n gl[gl[\"FRAMEBUFFER_BINDING\"] = 36006] = \"FRAMEBUFFER_BINDING\";\n gl[gl[\"RENDERBUFFER_BINDING\"] = 36007] = \"RENDERBUFFER_BINDING\";\n gl[gl[\"MAX_RENDERBUFFER_SIZE\"] = 34024] = \"MAX_RENDERBUFFER_SIZE\";\n gl[gl[\"INVALID_FRAMEBUFFER_OPERATION\"] = 1286] = \"INVALID_FRAMEBUFFER_OPERATION\";\n gl[gl[\"UNPACK_FLIP_Y_WEBGL\"] = 37440] = \"UNPACK_FLIP_Y_WEBGL\";\n gl[gl[\"UNPACK_PREMULTIPLY_ALPHA_WEBGL\"] = 37441] = \"UNPACK_PREMULTIPLY_ALPHA_WEBGL\";\n gl[gl[\"CONTEXT_LOST_WEBGL\"] = 37442] = \"CONTEXT_LOST_WEBGL\";\n gl[gl[\"UNPACK_COLORSPACE_CONVERSION_WEBGL\"] = 37443] = \"UNPACK_COLORSPACE_CONVERSION_WEBGL\";\n gl[gl[\"BROWSER_DEFAULT_WEBGL\"] = 37444] = \"BROWSER_DEFAULT_WEBGL\";\n gl[gl[\"COPY_SRC\"] = 1] = \"COPY_SRC\";\n gl[gl[\"COPY_DST\"] = 2] = \"COPY_DST\";\n gl[gl[\"SAMPLED\"] = 4] = \"SAMPLED\";\n gl[gl[\"STORAGE\"] = 8] = \"STORAGE\";\n gl[gl[\"RENDER_ATTACHMENT\"] = 16] = \"RENDER_ATTACHMENT\";\n})(gl || (gl = {}));\n//# sourceMappingURL=gl.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2dsLmpzPzY1NTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdCQUFnQjtBQUNqQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvZ2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkdMIOaemuS4vuWAvFxuICogQHNlZSBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8xLjAvIzUuMTRcbiAqIOS9v+eUqCBiYWJlbCDmj5Lku7blr7nluLjph4/ov5vooYzlhoXogZTvvIzku6Xlh4/lsJHmnIDnu4jmiZPljIXkuqfnianlpKflsI9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ViZXIvZGVjay5nbC9ibG9iLzcuMS1yZWxlYXNlL2Rldi1kb2NzL3JvYWRtYXBzL2Rpc3Qtc2l6ZS1yb2FkbWFwLm1kI2lubGluZS1nbC1jb25zdGFudHNcbiAqIOS4uuS6huaUr+aMgSBXZWJHUFXvvIzmlrDlop4gVGV4dHVyZVVzYWdlXG4gKiBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdXRleHR1cmV1c2FnZVxuICovXG5leHBvcnQgdmFyIGdsO1xuXG4oZnVuY3Rpb24gKGdsKSB7XG4gIGdsW2dsW1wiREVQVEhfQlVGRkVSX0JJVFwiXSA9IDI1Nl0gPSBcIkRFUFRIX0JVRkZFUl9CSVRcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JVRkZFUl9CSVRcIl0gPSAxMDI0XSA9IFwiU1RFTkNJTF9CVUZGRVJfQklUXCI7XG4gIGdsW2dsW1wiQ09MT1JfQlVGRkVSX0JJVFwiXSA9IDE2Mzg0XSA9IFwiQ09MT1JfQlVGRkVSX0JJVFwiO1xuICBnbFtnbFtcIlBPSU5UU1wiXSA9IDBdID0gXCJQT0lOVFNcIjtcbiAgZ2xbZ2xbXCJMSU5FU1wiXSA9IDFdID0gXCJMSU5FU1wiO1xuICBnbFtnbFtcIkxJTkVfTE9PUFwiXSA9IDJdID0gXCJMSU5FX0xPT1BcIjtcbiAgZ2xbZ2xbXCJMSU5FX1NUUklQXCJdID0gM10gPSBcIkxJTkVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRVNcIl0gPSA0XSA9IFwiVFJJQU5HTEVTXCI7XG4gIGdsW2dsW1wiVFJJQU5HTEVfU1RSSVBcIl0gPSA1XSA9IFwiVFJJQU5HTEVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRV9GQU5cIl0gPSA2XSA9IFwiVFJJQU5HTEVfRkFOXCI7XG4gIGdsW2dsW1wiWkVST1wiXSA9IDBdID0gXCJaRVJPXCI7XG4gIGdsW2dsW1wiT05FXCJdID0gMV0gPSBcIk9ORVwiO1xuICBnbFtnbFtcIlNSQ19DT0xPUlwiXSA9IDc2OF0gPSBcIlNSQ19DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19TUkNfQ09MT1JcIl0gPSA3NjldID0gXCJPTkVfTUlOVVNfU1JDX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBXCJdID0gNzcwXSA9IFwiU1JDX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX1NSQ19BTFBIQVwiXSA9IDc3MV0gPSBcIk9ORV9NSU5VU19TUkNfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJEU1RfQUxQSEFcIl0gPSA3NzJdID0gXCJEU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJPTkVfTUlOVVNfRFNUX0FMUEhBXCJdID0gNzczXSA9IFwiT05FX01JTlVTX0RTVF9BTFBIQVwiO1xuICBnbFtnbFtcIkRTVF9DT0xPUlwiXSA9IDc3NF0gPSBcIkRTVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19EU1RfQ09MT1JcIl0gPSA3NzVdID0gXCJPTkVfTUlOVVNfRFNUX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBX1NBVFVSQVRFXCJdID0gNzc2XSA9IFwiU1JDX0FMUEhBX1NBVFVSQVRFXCI7XG4gIGdsW2dsW1wiRlVOQ19BRERcIl0gPSAzMjc3NF0gPSBcIkZVTkNfQUREXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05cIl0gPSAzMjc3N10gPSBcIkJMRU5EX0VRVUFUSU9OXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05fUkdCXCJdID0gMzI3NzddID0gXCJCTEVORF9FUVVBVElPTl9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9FUVVBVElPTl9BTFBIQVwiXSA9IDM0ODc3XSA9IFwiQkxFTkRfRVFVQVRJT05fQUxQSEFcIjtcbiAgZ2xbZ2xbXCJGVU5DX1NVQlRSQUNUXCJdID0gMzI3NzhdID0gXCJGVU5DX1NVQlRSQUNUXCI7XG4gIGdsW2dsW1wiRlVOQ19SRVZFUlNFX1NVQlRSQUNUXCJdID0gMzI3NzldID0gXCJGVU5DX1JFVkVSU0VfU1VCVFJBQ1RcIjtcbiAgZ2xbZ2xbXCJNQVhfRVhUXCJdID0gMzI3NzZdID0gXCJNQVhfRVhUXCI7XG4gIGdsW2dsW1wiTUlOX0VYVFwiXSA9IDMyNzc1XSA9IFwiTUlOX0VYVFwiO1xuICBnbFtnbFtcIkJMRU5EX0RTVF9SR0JcIl0gPSAzMjk2OF0gPSBcIkJMRU5EX0RTVF9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfUkdCXCJdID0gMzI5NjldID0gXCJCTEVORF9TUkNfUkdCXCI7XG4gIGdsW2dsW1wiQkxFTkRfRFNUX0FMUEhBXCJdID0gMzI5NzBdID0gXCJCTEVORF9EU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfQUxQSEFcIl0gPSAzMjk3MV0gPSBcIkJMRU5EX1NSQ19BTFBIQVwiO1xuICBnbFtnbFtcIkNPTlNUQU5UX0NPTE9SXCJdID0gMzI3NjldID0gXCJDT05TVEFOVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUlwiXSA9IDMyNzcwXSA9IFwiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXCI7XG4gIGdsW2dsW1wiQ09OU1RBTlRfQUxQSEFcIl0gPSAzMjc3MV0gPSBcIkNPTlNUQU5UX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXCJdID0gMzI3NzJdID0gXCJPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9DT0xPUlwiXSA9IDMyNzczXSA9IFwiQkxFTkRfQ09MT1JcIjtcbiAgZ2xbZ2xbXCJBUlJBWV9CVUZGRVJcIl0gPSAzNDk2Ml0gPSBcIkFSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSXCJdID0gMzQ5NjNdID0gXCJFTEVNRU5UX0FSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkFSUkFZX0JVRkZFUl9CSU5ESU5HXCJdID0gMzQ5NjRdID0gXCJBUlJBWV9CVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk2NV0gPSBcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJTVFJFQU1fRFJBV1wiXSA9IDM1MDQwXSA9IFwiU1RSRUFNX0RSQVdcIjtcbiAgZ2xbZ2xbXCJTVEFUSUNfRFJBV1wiXSA9IDM1MDQ0XSA9IFwiU1RBVElDX0RSQVdcIjtcbiAgZ2xbZ2xbXCJEWU5BTUlDX0RSQVdcIl0gPSAzNTA0OF0gPSBcIkRZTkFNSUNfRFJBV1wiO1xuICBnbFtnbFtcIkJVRkZFUl9TSVpFXCJdID0gMzQ2NjBdID0gXCJCVUZGRVJfU0laRVwiO1xuICBnbFtnbFtcIkJVRkZFUl9VU0FHRVwiXSA9IDM0NjYxXSA9IFwiQlVGRkVSX1VTQUdFXCI7XG4gIGdsW2dsW1wiQ1VSUkVOVF9WRVJURVhfQVRUUklCXCJdID0gMzQzNDJdID0gXCJDVVJSRU5UX1ZFUlRFWF9BVFRSSUJcIjtcbiAgZ2xbZ2xbXCJGUk9OVFwiXSA9IDEwMjhdID0gXCJGUk9OVFwiO1xuICBnbFtnbFtcIkJBQ0tcIl0gPSAxMDI5XSA9IFwiQkFDS1wiO1xuICBnbFtnbFtcIkZST05UX0FORF9CQUNLXCJdID0gMTAzMl0gPSBcIkZST05UX0FORF9CQUNLXCI7XG4gIGdsW2dsW1wiQ1VMTF9GQUNFXCJdID0gMjg4NF0gPSBcIkNVTExfRkFDRVwiO1xuICBnbFtnbFtcIkJMRU5EXCJdID0gMzA0Ml0gPSBcIkJMRU5EXCI7XG4gIGdsW2dsW1wiRElUSEVSXCJdID0gMzAyNF0gPSBcIkRJVEhFUlwiO1xuICBnbFtnbFtcIlNURU5DSUxfVEVTVFwiXSA9IDI5NjBdID0gXCJTVEVOQ0lMX1RFU1RcIjtcbiAgZ2xbZ2xbXCJERVBUSF9URVNUXCJdID0gMjkyOV0gPSBcIkRFUFRIX1RFU1RcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX1RFU1RcIl0gPSAzMDg5XSA9IFwiU0NJU1NPUl9URVNUXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRklMTFwiXSA9IDMyODIzXSA9IFwiUE9MWUdPTl9PRkZTRVRfRklMTFwiO1xuICBnbFtnbFtcIlNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRVwiXSA9IDMyOTI2XSA9IFwiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXCI7XG4gIGdsW2dsW1wiU0FNUExFX0NPVkVSQUdFXCJdID0gMzI5MjhdID0gXCJTQU1QTEVfQ09WRVJBR0VcIjtcbiAgZ2xbZ2xbXCJOT19FUlJPUlwiXSA9IDBdID0gXCJOT19FUlJPUlwiO1xuICBnbFtnbFtcIklOVkFMSURfRU5VTVwiXSA9IDEyODBdID0gXCJJTlZBTElEX0VOVU1cIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX1ZBTFVFXCJdID0gMTI4MV0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX09QRVJBVElPTlwiXSA9IDEyODJdID0gXCJJTlZBTElEX09QRVJBVElPTlwiO1xuICBnbFtnbFtcIk9VVF9PRl9NRU1PUllcIl0gPSAxMjg1XSA9IFwiT1VUX09GX01FTU9SWVwiO1xuICBnbFtnbFtcIkNXXCJdID0gMjMwNF0gPSBcIkNXXCI7XG4gIGdsW2dsW1wiQ0NXXCJdID0gMjMwNV0gPSBcIkNDV1wiO1xuICBnbFtnbFtcIkxJTkVfV0lEVEhcIl0gPSAyODQ5XSA9IFwiTElORV9XSURUSFwiO1xuICBnbFtnbFtcIkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRVwiXSA9IDMzOTAxXSA9IFwiQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXCI7XG4gIGdsW2dsW1wiQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXCJdID0gMzM5MDJdID0gXCJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VcIjtcbiAgZ2xbZ2xbXCJDVUxMX0ZBQ0VfTU9ERVwiXSA9IDI4ODVdID0gXCJDVUxMX0ZBQ0VfTU9ERVwiO1xuICBnbFtnbFtcIkZST05UX0ZBQ0VcIl0gPSAyODg2XSA9IFwiRlJPTlRfRkFDRVwiO1xuICBnbFtnbFtcIkRFUFRIX1JBTkdFXCJdID0gMjkyOF0gPSBcIkRFUFRIX1JBTkdFXCI7XG4gIGdsW2dsW1wiREVQVEhfV1JJVEVNQVNLXCJdID0gMjkzMF0gPSBcIkRFUFRIX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIkRFUFRIX0NMRUFSX1ZBTFVFXCJdID0gMjkzMV0gPSBcIkRFUFRIX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiREVQVEhfRlVOQ1wiXSA9IDI5MzJdID0gXCJERVBUSF9GVU5DXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9DTEVBUl9WQUxVRVwiXSA9IDI5NjFdID0gXCJTVEVOQ0lMX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9GVU5DXCJdID0gMjk2Ml0gPSBcIlNURU5DSUxfRlVOQ1wiO1xuICBnbFtnbFtcIlNURU5DSUxfRkFJTFwiXSA9IDI5NjRdID0gXCJTVEVOQ0lMX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiXSA9IDI5NjVdID0gXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiO1xuICBnbFtnbFtcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCJdID0gMjk2Nl0gPSBcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9SRUZcIl0gPSAyOTY3XSA9IFwiU1RFTkNJTF9SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1ZBTFVFX01BU0tcIl0gPSAyOTYzXSA9IFwiU1RFTkNJTF9WQUxVRV9NQVNLXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9XUklURU1BU0tcIl0gPSAyOTY4XSA9IFwiU1RFTkNJTF9XUklURU1BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRlVOQ1wiXSA9IDM0ODE2XSA9IFwiU1RFTkNJTF9CQUNLX0ZVTkNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRkFJTFwiXSA9IDM0ODE3XSA9IFwiU1RFTkNJTF9CQUNLX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCJdID0gMzQ4MThdID0gXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiXSA9IDM0ODE5XSA9IFwiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiO1xuICBnbFtnbFtcIlNURU5DSUxfQkFDS19SRUZcIl0gPSAzNjAwM10gPSBcIlNURU5DSUxfQkFDS19SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS1wiXSA9IDM2MDA0XSA9IFwiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCJdID0gMzYwMDVdID0gXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCI7XG4gIGdsW2dsW1wiVklFV1BPUlRcIl0gPSAyOTc4XSA9IFwiVklFV1BPUlRcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX0JPWFwiXSA9IDMwODhdID0gXCJTQ0lTU09SX0JPWFwiO1xuICBnbFtnbFtcIkNPTE9SX0NMRUFSX1ZBTFVFXCJdID0gMzEwNl0gPSBcIkNPTE9SX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiQ09MT1JfV1JJVEVNQVNLXCJdID0gMzEwN10gPSBcIkNPTE9SX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIlVOUEFDS19BTElHTk1FTlRcIl0gPSAzMzE3XSA9IFwiVU5QQUNLX0FMSUdOTUVOVFwiO1xuICBnbFtnbFtcIlBBQ0tfQUxJR05NRU5UXCJdID0gMzMzM10gPSBcIlBBQ0tfQUxJR05NRU5UXCI7XG4gIGdsW2dsW1wiTUFYX1RFWFRVUkVfU0laRVwiXSA9IDMzNzldID0gXCJNQVhfVEVYVFVSRV9TSVpFXCI7XG4gIGdsW2dsW1wiTUFYX1ZJRVdQT1JUX0RJTVNcIl0gPSAzMzg2XSA9IFwiTUFYX1ZJRVdQT1JUX0RJTVNcIjtcbiAgZ2xbZ2xbXCJTVUJQSVhFTF9CSVRTXCJdID0gMzQwOF0gPSBcIlNVQlBJWEVMX0JJVFNcIjtcbiAgZ2xbZ2xbXCJSRURfQklUU1wiXSA9IDM0MTBdID0gXCJSRURfQklUU1wiO1xuICBnbFtnbFtcIkdSRUVOX0JJVFNcIl0gPSAzNDExXSA9IFwiR1JFRU5fQklUU1wiO1xuICBnbFtnbFtcIkJMVUVfQklUU1wiXSA9IDM0MTJdID0gXCJCTFVFX0JJVFNcIjtcbiAgZ2xbZ2xbXCJBTFBIQV9CSVRTXCJdID0gMzQxM10gPSBcIkFMUEhBX0JJVFNcIjtcbiAgZ2xbZ2xbXCJERVBUSF9CSVRTXCJdID0gMzQxNF0gPSBcIkRFUFRIX0JJVFNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JJVFNcIl0gPSAzNDE1XSA9IFwiU1RFTkNJTF9CSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfVU5JVFNcIl0gPSAxMDc1Ml0gPSBcIlBPTFlHT05fT0ZGU0VUX1VOSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRkFDVE9SXCJdID0gMzI4MjRdID0gXCJQT0xZR09OX09GRlNFVF9GQUNUT1JcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0JJTkRJTkdfMkRcIl0gPSAzMjg3M10gPSBcIlRFWFRVUkVfQklORElOR18yRFwiO1xuICBnbFtnbFtcIlNBTVBMRV9CVUZGRVJTXCJdID0gMzI5MzZdID0gXCJTQU1QTEVfQlVGRkVSU1wiO1xuICBnbFtnbFtcIlNBTVBMRVNcIl0gPSAzMjkzN10gPSBcIlNBTVBMRVNcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVfQ09WRVJBR0VfVkFMVUVcIl0gPSAzMjkzOF0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRVwiO1xuICBnbFtnbFtcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIl0gPSAzMjkzOV0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIjtcbiAgZ2xbZ2xbXCJDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU1wiXSA9IDM0NDY3XSA9IFwiQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNcIjtcbiAgZ2xbZ2xbXCJET05UX0NBUkVcIl0gPSA0MzUyXSA9IFwiRE9OVF9DQVJFXCI7XG4gIGdsW2dsW1wiRkFTVEVTVFwiXSA9IDQzNTNdID0gXCJGQVNURVNUXCI7XG4gIGdsW2dsW1wiTklDRVNUXCJdID0gNDM1NF0gPSBcIk5JQ0VTVFwiO1xuICBnbFtnbFtcIkdFTkVSQVRFX01JUE1BUF9ISU5UXCJdID0gMzMxNzBdID0gXCJHRU5FUkFURV9NSVBNQVBfSElOVFwiO1xuICBnbFtnbFtcIkJZVEVcIl0gPSA1MTIwXSA9IFwiQllURVwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX0JZVEVcIl0gPSA1MTIxXSA9IFwiVU5TSUdORURfQllURVwiO1xuICBnbFtnbFtcIlNIT1JUXCJdID0gNTEyMl0gPSBcIlNIT1JUXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRcIl0gPSA1MTIzXSA9IFwiVU5TSUdORURfU0hPUlRcIjtcbiAgZ2xbZ2xbXCJJTlRcIl0gPSA1MTI0XSA9IFwiSU5UXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfSU5UXCJdID0gNTEyNV0gPSBcIlVOU0lHTkVEX0lOVFwiO1xuICBnbFtnbFtcIkZMT0FUXCJdID0gNTEyNl0gPSBcIkZMT0FUXCI7XG4gIGdsW2dsW1wiREVQVEhfQ09NUE9ORU5UXCJdID0gNjQwMl0gPSBcIkRFUFRIX0NPTVBPTkVOVFwiO1xuICBnbFtnbFtcIkFMUEhBXCJdID0gNjQwNl0gPSBcIkFMUEhBXCI7XG4gIGdsW2dsW1wiUkdCXCJdID0gNjQwN10gPSBcIlJHQlwiO1xuICBnbFtnbFtcIlJHQkFcIl0gPSA2NDA4XSA9IFwiUkdCQVwiO1xuICBnbFtnbFtcIkxVTUlOQU5DRVwiXSA9IDY0MDldID0gXCJMVU1JTkFOQ0VcIjtcbiAgZ2xbZ2xbXCJMVU1JTkFOQ0VfQUxQSEFcIl0gPSA2NDEwXSA9IFwiTFVNSU5BTkNFX0FMUEhBXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiXSA9IDMyODE5XSA9IFwiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIl0gPSAzMjgyMF0gPSBcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIjtcbiAgZ2xbZ2xbXCJVTlNJR05FRF9TSE9SVF81XzZfNVwiXSA9IDMzNjM1XSA9IFwiVU5TSUdORURfU0hPUlRfNV82XzVcIjtcbiAgZ2xbZ2xbXCJGUkFHTUVOVF9TSEFERVJcIl0gPSAzNTYzMl0gPSBcIkZSQUdNRU5UX1NIQURFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9TSEFERVJcIl0gPSAzNTYzM10gPSBcIlZFUlRFWF9TSEFERVJcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX0FUVFJJQlNcIl0gPSAzNDkyMV0gPSBcIk1BWF9WRVJURVhfQVRUUklCU1wiO1xuICBnbFtnbFtcIk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXCJdID0gMzYzNDddID0gXCJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU1wiO1xuICBnbFtnbFtcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIl0gPSAzNjM0OF0gPSBcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU1wiXSA9IDM1NjYxXSA9IFwiTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNcIl0gPSAzNTY2MF0gPSBcIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9URVhUVVJFX0lNQUdFX1VOSVRTXCJdID0gMzQ5MzBdID0gXCJNQVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIl0gPSAzNjM0OV0gPSBcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJTSEFERVJfVFlQRVwiXSA9IDM1NjYzXSA9IFwiU0hBREVSX1RZUEVcIjtcbiAgZ2xbZ2xbXCJERUxFVEVfU1RBVFVTXCJdID0gMzU3MTJdID0gXCJERUxFVEVfU1RBVFVTXCI7XG4gIGdsW2dsW1wiTElOS19TVEFUVVNcIl0gPSAzNTcxNF0gPSBcIkxJTktfU1RBVFVTXCI7XG4gIGdsW2dsW1wiVkFMSURBVEVfU1RBVFVTXCJdID0gMzU3MTVdID0gXCJWQUxJREFURV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJBVFRBQ0hFRF9TSEFERVJTXCJdID0gMzU3MTddID0gXCJBVFRBQ0hFRF9TSEFERVJTXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1VOSUZPUk1TXCJdID0gMzU3MThdID0gXCJBQ1RJVkVfVU5JRk9STVNcIjtcbiAgZ2xbZ2xbXCJBQ1RJVkVfQVRUUklCVVRFU1wiXSA9IDM1NzIxXSA9IFwiQUNUSVZFX0FUVFJJQlVURVNcIjtcbiAgZ2xbZ2xbXCJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05cIl0gPSAzNTcyNF0gPSBcIlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTlwiO1xuICBnbFtnbFtcIkNVUlJFTlRfUFJPR1JBTVwiXSA9IDM1NzI1XSA9IFwiQ1VSUkVOVF9QUk9HUkFNXCI7XG4gIGdsW2dsW1wiTkVWRVJcIl0gPSA1MTJdID0gXCJORVZFUlwiO1xuICBnbFtnbFtcIkxFU1NcIl0gPSA1MTNdID0gXCJMRVNTXCI7XG4gIGdsW2dsW1wiRVFVQUxcIl0gPSA1MTRdID0gXCJFUVVBTFwiO1xuICBnbFtnbFtcIkxFUVVBTFwiXSA9IDUxNV0gPSBcIkxFUVVBTFwiO1xuICBnbFtnbFtcIkdSRUFURVJcIl0gPSA1MTZdID0gXCJHUkVBVEVSXCI7XG4gIGdsW2dsW1wiTk9URVFVQUxcIl0gPSA1MTddID0gXCJOT1RFUVVBTFwiO1xuICBnbFtnbFtcIkdFUVVBTFwiXSA9IDUxOF0gPSBcIkdFUVVBTFwiO1xuICBnbFtnbFtcIkFMV0FZU1wiXSA9IDUxOV0gPSBcIkFMV0FZU1wiO1xuICBnbFtnbFtcIktFRVBcIl0gPSA3NjgwXSA9IFwiS0VFUFwiO1xuICBnbFtnbFtcIlJFUExBQ0VcIl0gPSA3NjgxXSA9IFwiUkVQTEFDRVwiO1xuICBnbFtnbFtcIklOQ1JcIl0gPSA3NjgyXSA9IFwiSU5DUlwiO1xuICBnbFtnbFtcIkRFQ1JcIl0gPSA3NjgzXSA9IFwiREVDUlwiO1xuICBnbFtnbFtcIklOVkVSVFwiXSA9IDUzODZdID0gXCJJTlZFUlRcIjtcbiAgZ2xbZ2xbXCJJTkNSX1dSQVBcIl0gPSAzNDA1NV0gPSBcIklOQ1JfV1JBUFwiO1xuICBnbFtnbFtcIkRFQ1JfV1JBUFwiXSA9IDM0MDU2XSA9IFwiREVDUl9XUkFQXCI7XG4gIGdsW2dsW1wiVkVORE9SXCJdID0gNzkzNl0gPSBcIlZFTkRPUlwiO1xuICBnbFtnbFtcIlJFTkRFUkVSXCJdID0gNzkzN10gPSBcIlJFTkRFUkVSXCI7XG4gIGdsW2dsW1wiVkVSU0lPTlwiXSA9IDc5MzhdID0gXCJWRVJTSU9OXCI7XG4gIGdsW2dsW1wiTkVBUkVTVFwiXSA9IDk3MjhdID0gXCJORUFSRVNUXCI7XG4gIGdsW2dsW1wiTElORUFSXCJdID0gOTcyOV0gPSBcIkxJTkVBUlwiO1xuICBnbFtnbFtcIk5FQVJFU1RfTUlQTUFQX05FQVJFU1RcIl0gPSA5OTg0XSA9IFwiTkVBUkVTVF9NSVBNQVBfTkVBUkVTVFwiO1xuICBnbFtnbFtcIkxJTkVBUl9NSVBNQVBfTkVBUkVTVFwiXSA9IDk5ODVdID0gXCJMSU5FQVJfTUlQTUFQX05FQVJFU1RcIjtcbiAgZ2xbZ2xbXCJORUFSRVNUX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg2XSA9IFwiTkVBUkVTVF9NSVBNQVBfTElORUFSXCI7XG4gIGdsW2dsW1wiTElORUFSX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg3XSA9IFwiTElORUFSX01JUE1BUF9MSU5FQVJcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX01BR19GSUxURVJcIl0gPSAxMDI0MF0gPSBcIlRFWFRVUkVfTUFHX0ZJTFRFUlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfTUlOX0ZJTFRFUlwiXSA9IDEwMjQxXSA9IFwiVEVYVFVSRV9NSU5fRklMVEVSXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1NcIl0gPSAxMDI0Ml0gPSBcIlRFWFRVUkVfV1JBUF9TXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1RcIl0gPSAxMDI0M10gPSBcIlRFWFRVUkVfV1JBUF9UXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV8yRFwiXSA9IDM1NTNdID0gXCJURVhUVVJFXzJEXCI7XG4gIGdsW2dsW1wiVEVYVFVSRVwiXSA9IDU4OTBdID0gXCJURVhUVVJFXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUFwiXSA9IDM0MDY3XSA9IFwiVEVYVFVSRV9DVUJFX01BUFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQklORElOR19DVUJFX01BUFwiXSA9IDM0MDY4XSA9IFwiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXCJdID0gMzQwNjldID0gXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hcIl0gPSAzNDA3MF0gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWVwiXSA9IDM0MDcxXSA9IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXCJdID0gMzQwNzJdID0gXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pcIl0gPSAzNDA3M10gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWlwiXSA9IDM0MDc0XSA9IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXCI7XG4gIGdsW2dsW1wiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiXSA9IDM0MDc2XSA9IFwiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiO1xuICBnbFtnbFtcIlRFWFRVUkUwXCJdID0gMzM5ODRdID0gXCJURVhUVVJFMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxXCJdID0gMzM5ODVdID0gXCJURVhUVVJFMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyXCJdID0gMzM5ODZdID0gXCJURVhUVVJFMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUzXCJdID0gMzM5ODddID0gXCJURVhUVVJFM1wiO1xuICBnbFtnbFtcIlRFWFRVUkU0XCJdID0gMzM5ODhdID0gXCJURVhUVVJFNFwiO1xuICBnbFtnbFtcIlRFWFRVUkU1XCJdID0gMzM5ODldID0gXCJURVhUVVJFNVwiO1xuICBnbFtnbFtcIlRFWFRVUkU2XCJdID0gMzM5OTBdID0gXCJURVhUVVJFNlwiO1xuICBnbFtnbFtcIlRFWFRVUkU3XCJdID0gMzM5OTFdID0gXCJURVhUVVJFN1wiO1xuICBnbFtnbFtcIlRFWFRVUkU4XCJdID0gMzM5OTJdID0gXCJURVhUVVJFOFwiO1xuICBnbFtnbFtcIlRFWFRVUkU5XCJdID0gMzM5OTNdID0gXCJURVhUVVJFOVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxMFwiXSA9IDMzOTk0XSA9IFwiVEVYVFVSRTEwXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTExXCJdID0gMzM5OTVdID0gXCJURVhUVVJFMTFcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTJcIl0gPSAzMzk5Nl0gPSBcIlRFWFRVUkUxMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUxM1wiXSA9IDMzOTk3XSA9IFwiVEVYVFVSRTEzXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE0XCJdID0gMzM5OThdID0gXCJURVhUVVJFMTRcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTVcIl0gPSAzMzk5OV0gPSBcIlRFWFRVUkUxNVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxNlwiXSA9IDM0MDAwXSA9IFwiVEVYVFVSRTE2XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE3XCJdID0gMzQwMDFdID0gXCJURVhUVVJFMTdcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMThcIl0gPSAzNDAwMl0gPSBcIlRFWFRVUkUxOFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxOVwiXSA9IDM0MDAzXSA9IFwiVEVYVFVSRTE5XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIwXCJdID0gMzQwMDRdID0gXCJURVhUVVJFMjBcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjFcIl0gPSAzNDAwNV0gPSBcIlRFWFRVUkUyMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyMlwiXSA9IDM0MDA2XSA9IFwiVEVYVFVSRTIyXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIzXCJdID0gMzQwMDddID0gXCJURVhUVVJFMjNcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjRcIl0gPSAzNDAwOF0gPSBcIlRFWFRVUkUyNFwiO1xuICBnbFtnbFtcIlRFWFRVUkUyNVwiXSA9IDM0MDA5XSA9IFwiVEVYVFVSRTI1XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI2XCJdID0gMzQwMTBdID0gXCJURVhUVVJFMjZcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjdcIl0gPSAzNDAxMV0gPSBcIlRFWFRVUkUyN1wiO1xuICBnbFtnbFtcIlRFWFRVUkUyOFwiXSA9IDM0MDEyXSA9IFwiVEVYVFVSRTI4XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI5XCJdID0gMzQwMTNdID0gXCJURVhUVVJFMjlcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMzBcIl0gPSAzNDAxNF0gPSBcIlRFWFRVUkUzMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUzMVwiXSA9IDM0MDE1XSA9IFwiVEVYVFVSRTMxXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1RFWFRVUkVcIl0gPSAzNDAxNl0gPSBcIkFDVElWRV9URVhUVVJFXCI7XG4gIGdsW2dsW1wiUkVQRUFUXCJdID0gMTA0OTddID0gXCJSRVBFQVRcIjtcbiAgZ2xbZ2xbXCJDTEFNUF9UT19FREdFXCJdID0gMzMwNzFdID0gXCJDTEFNUF9UT19FREdFXCI7XG4gIGdsW2dsW1wiTUlSUk9SRURfUkVQRUFUXCJdID0gMzM2NDhdID0gXCJNSVJST1JFRF9SRVBFQVRcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9WRUMyXCJdID0gMzU2NjRdID0gXCJGTE9BVF9WRUMyXCI7XG4gIGdsW2dsW1wiRkxPQVRfVkVDM1wiXSA9IDM1NjY1XSA9IFwiRkxPQVRfVkVDM1wiO1xuICBnbFtnbFtcIkZMT0FUX1ZFQzRcIl0gPSAzNTY2Nl0gPSBcIkZMT0FUX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDMlwiXSA9IDM1NjY3XSA9IFwiSU5UX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDM1wiXSA9IDM1NjY4XSA9IFwiSU5UX1ZFQzNcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDNFwiXSA9IDM1NjY5XSA9IFwiSU5UX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJCT09MXCJdID0gMzU2NzBdID0gXCJCT09MXCI7XG4gIGdsW2dsW1wiQk9PTF9WRUMyXCJdID0gMzU2NzFdID0gXCJCT09MX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJCT09MX1ZFQzNcIl0gPSAzNTY3Ml0gPSBcIkJPT0xfVkVDM1wiO1xuICBnbFtnbFtcIkJPT0xfVkVDNFwiXSA9IDM1NjczXSA9IFwiQk9PTF9WRUM0XCI7XG4gIGdsW2dsW1wiRkxPQVRfTUFUMlwiXSA9IDM1Njc0XSA9IFwiRkxPQVRfTUFUMlwiO1xuICBnbFtnbFtcIkZMT0FUX01BVDNcIl0gPSAzNTY3NV0gPSBcIkZMT0FUX01BVDNcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9NQVQ0XCJdID0gMzU2NzZdID0gXCJGTE9BVF9NQVQ0XCI7XG4gIGdsW2dsW1wiU0FNUExFUl8yRFwiXSA9IDM1Njc4XSA9IFwiU0FNUExFUl8yRFwiO1xuICBnbFtnbFtcIlNBTVBMRVJfQ1VCRVwiXSA9IDM1NjgwXSA9IFwiU0FNUExFUl9DVUJFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXCJdID0gMzQzMzhdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkVcIl0gPSAzNDMzOV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXCJdID0gMzQzNDBdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRVwiXSA9IDM0MzQxXSA9IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXCJdID0gMzQ5MjJdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJcIl0gPSAzNDM3M10gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk3NV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJDT01QSUxFX1NUQVRVU1wiXSA9IDM1NzEzXSA9IFwiQ09NUElMRV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJMT1dfRkxPQVRcIl0gPSAzNjMzNl0gPSBcIkxPV19GTE9BVFwiO1xuICBnbFtnbFtcIk1FRElVTV9GTE9BVFwiXSA9IDM2MzM3XSA9IFwiTUVESVVNX0ZMT0FUXCI7XG4gIGdsW2dsW1wiSElHSF9GTE9BVFwiXSA9IDM2MzM4XSA9IFwiSElHSF9GTE9BVFwiO1xuICBnbFtnbFtcIkxPV19JTlRcIl0gPSAzNjMzOV0gPSBcIkxPV19JTlRcIjtcbiAgZ2xbZ2xbXCJNRURJVU1fSU5UXCJdID0gMzYzNDBdID0gXCJNRURJVU1fSU5UXCI7XG4gIGdsW2dsW1wiSElHSF9JTlRcIl0gPSAzNjM0MV0gPSBcIkhJR0hfSU5UXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJcIl0gPSAzNjE2MF0gPSBcIkZSQU1FQlVGRkVSXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSXCJdID0gMzYxNjFdID0gXCJSRU5ERVJCVUZGRVJcIjtcbiAgZ2xbZ2xbXCJSR0JBNFwiXSA9IDMyODU0XSA9IFwiUkdCQTRcIjtcbiAgZ2xbZ2xbXCJSR0I1X0ExXCJdID0gMzI4NTVdID0gXCJSR0I1X0ExXCI7XG4gIGdsW2dsW1wiUkdCNTY1XCJdID0gMzYxOTRdID0gXCJSR0I1NjVcIjtcbiAgZ2xbZ2xbXCJERVBUSF9DT01QT05FTlQxNlwiXSA9IDMzMTg5XSA9IFwiREVQVEhfQ09NUE9ORU5UMTZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYXCJdID0gNjQwMV0gPSBcIlNURU5DSUxfSU5ERVhcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYOFwiXSA9IDM2MTY4XSA9IFwiU1RFTkNJTF9JTkRFWDhcIjtcbiAgZ2xbZ2xbXCJERVBUSF9TVEVOQ0lMXCJdID0gMzQwNDFdID0gXCJERVBUSF9TVEVOQ0lMXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX1dJRFRIXCJdID0gMzYxNjJdID0gXCJSRU5ERVJCVUZGRVJfV0lEVEhcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCJdID0gMzYxNjNdID0gXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiXSA9IDM2MTY0XSA9IFwiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9SRURfU0laRVwiXSA9IDM2MTc2XSA9IFwiUkVOREVSQlVGRkVSX1JFRF9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVcIl0gPSAzNjE3N10gPSBcIlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiXSA9IDM2MTc4XSA9IFwiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXCJdID0gMzYxNzldID0gXCJSRU5ERVJCVUZGRVJfQUxQSEFfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXCJdID0gMzYxODBdID0gXCJSRU5ERVJCVUZGRVJfREVQVEhfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIl0gPSAzNjE4MV0gPSBcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCJdID0gMzYwNDhdID0gXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiXSA9IDM2MDQ5XSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTFwiXSA9IDM2MDUwXSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VcIl0gPSAzNjA1MV0gPSBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXCI7XG4gIGdsW2dsW1wiQ09MT1JfQVRUQUNITUVOVDBcIl0gPSAzNjA2NF0gPSBcIkNPTE9SX0FUVEFDSE1FTlQwXCI7XG4gIGdsW2dsW1wiREVQVEhfQVRUQUNITUVOVFwiXSA9IDM2MDk2XSA9IFwiREVQVEhfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIlNURU5DSUxfQVRUQUNITUVOVFwiXSA9IDM2MTI4XSA9IFwiU1RFTkNJTF9BVFRBQ0hNRU5UXCI7XG4gIGdsW2dsW1wiREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXCJdID0gMzMzMDZdID0gXCJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRcIjtcbiAgZ2xbZ2xbXCJOT05FXCJdID0gMF0gPSBcIk5PTkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9DT01QTEVURVwiXSA9IDM2MDUzXSA9IFwiRlJBTUVCVUZGRVJfQ09NUExFVEVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRcIl0gPSAzNjA1NF0gPSBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXCJdID0gMzYwNTVdID0gXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU1wiXSA9IDM2MDU3XSA9IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfVU5TVVBQT1JURURcIl0gPSAzNjA2MV0gPSBcIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQklORElOR1wiXSA9IDM2MDA2XSA9IFwiRlJBTUVCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9CSU5ESU5HXCJdID0gMzYwMDddID0gXCJSRU5ERVJCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIk1BWF9SRU5ERVJCVUZGRVJfU0laRVwiXSA9IDM0MDI0XSA9IFwiTUFYX1JFTkRFUkJVRkZFUl9TSVpFXCI7XG4gIGdsW2dsW1wiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIl0gPSAxMjg2XSA9IFwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIjtcbiAgZ2xbZ2xbXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCJdID0gMzc0NDBdID0gXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCI7XG4gIGdsW2dsW1wiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXCJdID0gMzc0NDFdID0gXCJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xcIjtcbiAgZ2xbZ2xbXCJDT05URVhUX0xPU1RfV0VCR0xcIl0gPSAzNzQ0Ml0gPSBcIkNPTlRFWFRfTE9TVF9XRUJHTFwiO1xuICBnbFtnbFtcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIl0gPSAzNzQ0M10gPSBcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIjtcbiAgZ2xbZ2xbXCJCUk9XU0VSX0RFRkFVTFRfV0VCR0xcIl0gPSAzNzQ0NF0gPSBcIkJST1dTRVJfREVGQVVMVF9XRUJHTFwiO1xuICBnbFtnbFtcIkNPUFlfU1JDXCJdID0gMV0gPSBcIkNPUFlfU1JDXCI7XG4gIGdsW2dsW1wiQ09QWV9EU1RcIl0gPSAyXSA9IFwiQ09QWV9EU1RcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVEXCJdID0gNF0gPSBcIlNBTVBMRURcIjtcbiAgZ2xbZ2xbXCJTVE9SQUdFXCJdID0gOF0gPSBcIlNUT1JBR0VcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJfQVRUQUNITUVOVFwiXSA9IDE2XSA9IFwiUkVOREVSX0FUVEFDSE1FTlRcIjtcbn0pKGdsIHx8IChnbCA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js ***! \*****************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return _gl__WEBPACK_IMPORTED_MODULE_0__[\"gl\"]; });\n\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IAttribute */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js\");\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_IAttribute__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IAttribute__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IAttribute__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IBuffer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js\");\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_IBuffer__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IBuffer__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IBuffer__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IComputeModel */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\");\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_IComputeModel__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IComputeModel__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IComputeModel__WEBPACK_IMPORTED_MODULE_3__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IElements */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js\");\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_IElements__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IElements__WEBPACK_IMPORTED_MODULE_4__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IElements__WEBPACK_IMPORTED_MODULE_4__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IFramebuffer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\");\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_IFramebuffer__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./IModel */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js\");\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_IModel__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IModel__WEBPACK_IMPORTED_MODULE_6__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IModel__WEBPACK_IMPORTED_MODULE_6__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./IMultiPassRenderer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__[\"PassType\"]; });\n\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./IRenderbuffer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\");\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./IRendererService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js\");\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_IRendererService__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRendererService__WEBPACK_IMPORTED_MODULE_9__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRendererService__WEBPACK_IMPORTED_MODULE_9__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ITexture2D */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\");\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_ITexture2D__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ITexture2D__WEBPACK_IMPORTED_MODULE_10__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ITexture2D__WEBPACK_IMPORTED_MODULE_10__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./IUniform */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js\");\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_IUniform__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IUniform__WEBPACK_IMPORTED_MODULE_11__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IUniform__WEBPACK_IMPORTED_MODULE_11__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2luZGV4LmpzPzNlNjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUI7QUFDUTtBQUNIO0FBQ007QUFDSjtBQUNHO0FBQ047QUFDWTtBQUNMO0FBQ0c7QUFDTjtBQUNGO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2wnO1xuZXhwb3J0ICogZnJvbSAnLi9JQXR0cmlidXRlJztcbmV4cG9ydCAqIGZyb20gJy4vSUJ1ZmZlcic7XG5leHBvcnQgKiBmcm9tICcuL0lDb21wdXRlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JRWxlbWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9JRnJhbWVidWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JTXVsdGlQYXNzUmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JUmVuZGVyYnVmZmVyJztcbmV4cG9ydCAqIGZyb20gJy4vSVJlbmRlcmVyU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL0lUZXh0dXJlMkQnO1xuZXhwb3J0ICogZnJvbSAnLi9JVW5pZm9ybSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js": /*!***************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js ***! \***************************************************************************************************************/ /*! exports provided: CopyPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CopyPass\", function() { return CopyPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _class3, _temp;\n\n\n\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.frag.glsl' */\nvar copyFrag = \"varying vec2 v_UV;\\n\\nuniform sampler2D u_Texture;\\n\\nvoid main() {\\n gl_FragColor = vec4(texture2D(u_Texture, v_UV));\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.vert.glsl' */\nvar copyVert = \"attribute vec2 a_Position;\\n\\nvarying vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.frag.glsl' */\nvar copyFragWebGPU = \"layout(set = 0, binding = 0) uniform sampler u_TextureSampler;\\nlayout(set = 0, binding = 1) uniform texture2D u_Texture;\\n\\nlayout(location = 0) in vec2 v_UV;\\nlayout(location = 0) out vec4 outColor;\\n\\nvoid main() {\\n outColor = texture(sampler2D(u_Texture, u_TextureSampler), v_UV);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.vert.glsl' */\nvar copyVertWebGPU = \"layout(location = 0) in vec2 a_Position;\\nlayout(location = 0) out vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n\nvar CopyPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = function CopyPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CopyPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n this.model = void 0;\n\n this.setup = function (fg, passNode, pass) {\n var renderPass = fg.getPass(_RenderPass__WEBPACK_IMPORTED_MODULE_9__[\"RenderPass\"].IDENTIFIER);\n\n if (renderPass) {\n var output = fg.createRenderTarget(passNode, 'render to screen', {\n width: 1,\n height: 1\n });\n pass.data = {\n input: passNode.read(renderPass.data.output),\n output: passNode.write(fg, output)\n };\n }\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass) {\n var _this$engine, createModel, createAttribute, createBuffer, model, resourceNode, framebuffer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$engine = _this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute, createBuffer = _this$engine.createBuffer;\n\n if (_this.model) {\n _context.next = 6;\n break;\n }\n\n _context.next = 4;\n return createModel({\n vs: _this.engine.supportWebGPU ? copyVertWebGPU : copyVert,\n fs: _this.engine.supportWebGPU ? copyFragWebGPU : copyFrag,\n attributes: {\n // rendering a fullscreen triangle instead of quad\n // @see https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/\n a_Position: createAttribute({\n buffer: createBuffer({\n data: [-4, -4, 4, -4, 0, 4],\n type: _gl__WEBPACK_IMPORTED_MODULE_8__[\"gl\"].FLOAT\n }),\n size: 2,\n arrayStride: 2 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n })\n },\n uniforms: {\n // @ts-ignore\n u_Texture: null\n },\n depth: {\n enable: false\n },\n count: 3,\n blend: {\n // copy pass 需要混合\n // enable: this.getName() === 'copy',\n enable: true\n }\n });\n\n case 4:\n model = _context.sent;\n _this.model = model;\n\n case 6:\n // 实例化资源\n resourceNode = fg.getResourceNode(pass.data.input);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource);\n\n _this.engine.useFramebuffer(null, function () {\n _this.engine.clear({\n framebuffer: null,\n color: [0, 0, 0, 0],\n depth: 1,\n stencil: 0\n });\n\n _this.model.draw({\n uniforms: {\n u_Texture: framebuffer // u_ViewportSize: [width, height],\n\n }\n });\n });\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.tearDown = function () {\n _this.model = undefined;\n };\n}, _class3.IDENTIFIER = 'Copy Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=CopyPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9Db3B5UGFzcy5qcz80NmQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ0U7O0FBRWpEO0FBQ0Esa0NBQWtDLGdDQUFnQyxpQkFBaUIsb0RBQW9ELEdBQUc7O0FBRTFJO0FBQ0EsMENBQTBDLHNCQUFzQixpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHOztBQUVuSztBQUNBLG9GQUFvRiwyREFBMkQsc0NBQXNDLHlDQUF5QyxpQkFBaUIscUVBQXFFLEdBQUc7O0FBRXZUO0FBQ0EsOERBQThELHFDQUFxQyxpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHO0FBQzNLO0FBQ2U7QUFDbkMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSx3QkFBd0Isd0RBQU0sQ0FBQyxzREFBVTtBQUM5Rzs7QUFFQSxFQUFFLDRFQUFlOztBQUVqQixFQUFFLHVGQUEwQjs7QUFFNUIsRUFBRSx1RkFBMEI7O0FBRTVCOztBQUVBO0FBQ0EsZ0NBQWdDLHNEQUFVOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNsRTs7QUFFQSxhQUFhLGlFQUFtQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzQ0FBRTtBQUM5QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQixlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLENBQUMsMkRBQTJELHNGQUF5QjtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWcgPSBcInZhcnlpbmcgdmVjMiB2X1VWO1xcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfVGV4dHVyZTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleHR1cmUyRCh1X1RleHR1cmUsIHZfVVYpKTtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS52ZXJ0Lmdsc2wnICovXG52YXIgY29weVZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIGFfUG9zaXRpb247XFxuXFxudmFyeWluZyB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4uLy4uLy4uL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvc2hhZGVycy93ZWJncHUuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWdXZWJHUFUgPSBcImxheW91dChzZXQgPSAwLCBiaW5kaW5nID0gMCkgdW5pZm9ybSBzYW1wbGVyIHVfVGV4dHVyZVNhbXBsZXI7XFxubGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKSB1bmlmb3JtIHRleHR1cmUyRCB1X1RleHR1cmU7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiB2X1VWO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG91dENvbG9yO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIG91dENvbG9yID0gdGV4dHVyZShzYW1wbGVyMkQodV9UZXh0dXJlLCB1X1RleHR1cmVTYW1wbGVyKSwgdl9VVik7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi4vLi4vLi4vc2VydmljZXMvc2hhZGVyLW1vZHVsZS9zaGFkZXJzL3dlYmdwdS5jb3B5LnZlcnQuZ2xzbCcgKi9cbnZhciBjb3B5VmVydFdlYkdQVSA9IFwibGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiBhX1Bvc2l0aW9uO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnLi4vZ2wnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vUmVuZGVyUGFzcyc7XG5leHBvcnQgdmFyIENvcHlQYXNzID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IGZ1bmN0aW9uIENvcHlQYXNzKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb3B5UGFzcyk7XG5cbiAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVzb3VyY2VQb29sXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgdGhpcy5tb2RlbCA9IHZvaWQgMDtcblxuICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgIHZhciByZW5kZXJQYXNzID0gZmcuZ2V0UGFzcyhSZW5kZXJQYXNzLklERU5USUZJRVIpO1xuXG4gICAgaWYgKHJlbmRlclBhc3MpIHtcbiAgICAgIHZhciBvdXRwdXQgPSBmZy5jcmVhdGVSZW5kZXJUYXJnZXQocGFzc05vZGUsICdyZW5kZXIgdG8gc2NyZWVuJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgaW5wdXQ6IHBhc3NOb2RlLnJlYWQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCksXG4gICAgICAgIG91dHB1dDogcGFzc05vZGUud3JpdGUoZmcsIG91dHB1dClcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIHRoaXMuZXhlY3V0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzKSB7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIsIG1vZGVsLCByZXNvdXJjZU5vZGUsIGZyYW1lYnVmZmVyO1xuXG4gICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSBfdGhpcy5lbmdpbmUsIGNyZWF0ZU1vZGVsID0gX3RoaXMkZW5naW5lLmNyZWF0ZU1vZGVsLCBjcmVhdGVBdHRyaWJ1dGUgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQnVmZmVyO1xuXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgdnM6IF90aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gY29weVZlcnRXZWJHUFUgOiBjb3B5VmVydCxcbiAgICAgICAgICAgICAgICBmczogX3RoaXMuZW5naW5lLnN1cHBvcnRXZWJHUFUgPyBjb3B5RnJhZ1dlYkdQVSA6IGNvcHlGcmFnLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIC8vIHJlbmRlcmluZyBhIGZ1bGxzY3JlZW4gdHJpYW5nbGUgaW5zdGVhZCBvZiBxdWFkXG4gICAgICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vd3d3LnNhc2NoYXdpbGxlbXMuZGUvYmxvZy8yMDE2LzA4LzEzL3Z1bGthbi10dXRvcmlhbC1vbi1yZW5kZXJpbmctYS1mdWxsc2NyZWVuLXF1YWQtd2l0aG91dC1idWZmZXJzL1xuICAgICAgICAgICAgICAgICAgYV9Qb3NpdGlvbjogY3JlYXRlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBjcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFstNCwgLTQsIDQsIC00LCAwLCA0XSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBnbC5GTE9BVFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMixcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IDIgKiA0LFxuICAgICAgICAgICAgICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdV9UZXh0dXJlOiBudWxsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY291bnQ6IDMsXG4gICAgICAgICAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvcHkgcGFzcyDpnIDopoHmt7flkIhcbiAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZTogdGhpcy5nZXROYW1lKCkgPT09ICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgbW9kZWwgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICBfdGhpcy5tb2RlbCA9IG1vZGVsO1xuXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIC8vIOWunuS+i+WMlui1hOa6kFxuICAgICAgICAgICAgICByZXNvdXJjZU5vZGUgPSBmZy5nZXRSZXNvdXJjZU5vZGUocGFzcy5kYXRhLmlucHV0KTtcbiAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBfdGhpcy5yZXNvdXJjZVBvb2wuZ2V0T3JDcmVhdGVSZXNvdXJjZShyZXNvdXJjZU5vZGUucmVzb3VyY2UpO1xuXG4gICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihudWxsLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgIGRlcHRoOiAxLFxuICAgICAgICAgICAgICAgICAgc3RlbmNpbDogMFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMubW9kZWwuZHJhdyh7XG4gICAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICB1X1RleHR1cmU6IGZyYW1lYnVmZmVyIC8vIHVfVmlld3BvcnRTaXplOiBbd2lkdGgsIGhlaWdodF0sXG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIF9jYWxsZWUpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94Mikge1xuICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KCk7XG5cbiAgdGhpcy50ZWFyRG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5tb2RlbCA9IHVuZGVmaW5lZDtcbiAgfTtcbn0sIF9jbGFzczMuSURFTlRJRklFUiA9ICdDb3B5IFBhc3MnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29weVBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js": /*!***********************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js ***! \***********************************************************************************************************************/ /*! exports provided: PixelPickingPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return PixelPickingPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../utils/math */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0\n};\n/**\n * color-based picking\n * @see https://threejsfundamentals.org/threejs/lessons/threejs-picking.html\n */\n\nvar PixelPickingPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function PixelPickingPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PixelPickingPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor4, this);\n\n this.pickingFBO = void 0;\n this.views = void 0;\n this.highlightEnabled = true;\n this.highlightColor = [255, 0, 0, 255];\n this.alreadyInRendering = false;\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'picking fbo', {\n width: 1,\n height: 1\n });\n pass.data = {\n output: passNode.write(fg, output)\n }; // 防止被 FrameGraph 剔除\n\n passNode.hasSideEffect = true;\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var _iterator, _step, _loop;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this.views = views;\n\n if (!_this.alreadyInRendering) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n _loop = function _loop() {\n var view = _step.value;\n\n var _view$getViewport = view.getViewport(),\n width = _view$getViewport.width,\n height = _view$getViewport.height; // throttled\n\n\n _this.alreadyInRendering = true; // 实例化资源\n\n var resourceNode = fg.getResourceNode(pass.data.output);\n _this.pickingFBO = _this.resourcePool.getOrCreateResource(resourceNode.resource); // TODO: only draw 1x1 quad, with offset camera\n\n _this.pickingFBO.resize({\n width: width,\n height: height\n });\n\n _this.engine.useFramebuffer(_this.pickingFBO, function () {\n _this.engine.clear({\n framebuffer: _this.pickingFBO,\n color: [0, 0, 0, 0],\n stencil: 0,\n depth: 1\n }); // 渲染\n\n\n var renderPass = _this.renderPassFactory(_RenderPass__WEBPACK_IMPORTED_MODULE_10__[\"RenderPass\"].IDENTIFIER); // 修改所有\n\n\n var meshes = [];\n var scene = view.getScene();\n\n var _iterator2 = _createForOfIteratorHelper(scene.getEntities()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var meshEntity = _step2.value;\n\n var mesh = _this.mesh.getComponentByEntity(meshEntity);\n\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.ENCODE);\n meshes.push(mesh);\n } // @ts-ignore\n\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n renderPass.renderView(view);\n meshes.forEach(function (mesh) {\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n });\n _this.alreadyInRendering = false;\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.pick = function (_ref2, view) {\n var x = _ref2.x,\n y = _ref2.y;\n var _this$engine = _this.engine,\n readPixels = _this$engine.readPixels,\n useFramebuffer = _this$engine.useFramebuffer;\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height;\n\n var xInDevicePixel = x * window.devicePixelRatio;\n var yInDevicePixel = y * window.devicePixelRatio; // const xInDevicePixel = x;\n // const yInDevicePixel = y;\n\n if (xInDevicePixel > width || xInDevicePixel < 0 || yInDevicePixel > height || yInDevicePixel < 0) {\n return;\n }\n\n var pickedColors;\n var pickedFeatureIdx;\n useFramebuffer(_this.pickingFBO, function () {\n // avoid realloc\n pickedColors = readPixels({\n x: Math.round(xInDevicePixel),\n // 视口坐标系原点在左上,而 WebGL 在左下,需要翻转 Y 轴\n y: Math.round(height - (y + 1) * window.devicePixelRatio),\n // y: Math.round(height - (y + 1)),\n width: 1,\n height: 1,\n data: new Uint8Array(1 * 1 * 4),\n framebuffer: _this.pickingFBO\n });\n\n if (pickedColors[0] !== 0 || pickedColors[1] !== 0 || pickedColors[2] !== 0) {\n pickedFeatureIdx = Object(_utils_math__WEBPACK_IMPORTED_MODULE_9__[\"decodePickingColor\"])(pickedColors);\n\n if (_this.highlightEnabled) {\n // 高亮\n _this.highlightPickedFeature(pickedColors, view);\n }\n }\n });\n return pickedFeatureIdx;\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PixelPickingPass, [{\n key: \"enableHighlight\",\n value: function enableHighlight(enabled) {\n this.highlightEnabled = enabled;\n }\n }, {\n key: \"setHighlightColor\",\n value: function setHighlightColor(color) {\n this.highlightColor = color;\n }\n }, {\n key: \"highlightPickedFeature\",\n\n /**\n * highlight 如果直接修改选中 feature 的 buffer,存在两个问题:\n * 1. 鼠标移走时无法恢复\n * 2. 无法实现高亮颜色与原始原色的 alpha 混合\n * 因此高亮还是放在 shader 中做比较好\n */\n value: function highlightPickedFeature(pickedColors, view) {\n if (pickedColors) {\n var _iterator3 = _createForOfIteratorHelper(view.getScene().getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n material.setUniform('u_PickingColor', [pickedColors[0], pickedColors[1], pickedColors[2]]);\n material.setUniform('u_HighlightColor', this.highlightColor);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n }]);\n\n return PixelPickingPass;\n}(), _class3.IDENTIFIER = 'PixelPicking Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=PixelPickingPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9QaXhlbFBpY2tpbmdQYXNzLmpzPzY5MmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRTtBQUNRO0FBQ2Y7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLCtCQUErQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsNkJBQTZCLHdEQUFNLENBQUMsc0RBQVU7QUFDN007QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMERBQTBEOzs7QUFHMUQsb0RBQW9EOztBQUVwRDtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsRUFBRTs7O0FBR3pCLCtEQUErRCx1REFBVSxhQUFhOzs7QUFHdEY7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLGlDQUFpQztBQUM3RTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCLHVCQUF1QjtBQUN2QjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBLHFDQUFxQywrQkFBK0I7QUFDcEU7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBLDZCQUE2QixzRUFBa0I7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixpQ0FBaUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxxRUFBcUUsc0ZBQXlCO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUGl4ZWxQaWNraW5nUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9jbGFzczMsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBkZWNvZGVQaWNraW5nQ29sb3IgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYXRoJztcbmltcG9ydCB7IFJlbmRlclBhc3MgfSBmcm9tICcuL1JlbmRlclBhc3MnO1xudmFyIFBpY2tpbmdTdGFnZSA9IHtcbiAgTk9ORTogMC4wLFxuICBFTkNPREU6IDEuMCxcbiAgSElHSExJR0hUOiAyLjBcbn07XG4vKipcbiAqIGNvbG9yLWJhc2VkIHBpY2tpbmdcbiAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzZnVuZGFtZW50YWxzLm9yZy90aHJlZWpzL2xlc3NvbnMvdGhyZWVqcy1waWNraW5nLmh0bWxcbiAqL1xuXG5leHBvcnQgdmFyIFBpeGVsUGlja2luZ1Bhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQaXhlbFBpY2tpbmdQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGl4ZWxQaWNraW5nUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZW5kZXJQYXNzRmFjdG9yeVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yNCwgdGhpcyk7XG5cbiAgICB0aGlzLnBpY2tpbmdGQk8gPSB2b2lkIDA7XG4gICAgdGhpcy52aWV3cyA9IHZvaWQgMDtcbiAgICB0aGlzLmhpZ2hsaWdodEVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdO1xuICAgIHRoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ3BpY2tpbmcgZmJvJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTsgLy8g6Ziy5q2i6KKrIEZyYW1lR3JhcGgg5YmU6ZmkXG5cbiAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgIH07XG5cbiAgICB0aGlzLmV4ZWN1dGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzLCB2aWV3cykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yLCBfc3RlcCwgX2xvb3A7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfdGhpcy52aWV3cyA9IHZpZXdzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodmlld3MpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0ID0gdmlldy5nZXRWaWV3cG9ydCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBfdmlldyRnZXRWaWV3cG9ydC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDsgLy8gdGhyb3R0bGVkXG5cblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcgPSB0cnVlOyAvLyDlrp7kvovljJbotYTmupBcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VOb2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKHBhc3MuZGF0YS5vdXRwdXQpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPID0gX3RoaXMucmVzb3VyY2VQb29sLmdldE9yQ3JlYXRlUmVzb3VyY2UocmVzb3VyY2VOb2RlLnJlc291cmNlKTsgLy8gVE9ETzogb25seSBkcmF3IDF4MSBxdWFkLCB3aXRoIG9mZnNldCBjYW1lcmFcblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihfdGhpcy5waWNraW5nRkJPLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBfdGhpcy5waWNraW5nRkJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5jaWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogMVxuICAgICAgICAgICAgICAgICAgICAgIH0pOyAvLyDmuLLmn5NcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbmRlclBhc3MgPSBfdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShSZW5kZXJQYXNzLklERU5USUZJRVIpOyAvLyDkv67mlLnmiYDmnIlcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc2hlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaEVudGl0eSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaCA9IF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nU3RhZ2UnLCBQaWNraW5nU3RhZ2UuRU5DT0RFKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaGVzLnB1c2gobWVzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3MucmVuZGVyVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgICBtZXNoZXMuZm9yRWFjaChmdW5jdGlvbiAobWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfUGlja2luZ1N0YWdlJywgUGlja2luZ1N0YWdlLkhJR0hMSUdIVCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvb3AoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyLCBfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5waWNrID0gZnVuY3Rpb24gKF9yZWYyLCB2aWV3KSB7XG4gICAgICB2YXIgeCA9IF9yZWYyLngsXG4gICAgICAgICAgeSA9IF9yZWYyLnk7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lID0gX3RoaXMuZW5naW5lLFxuICAgICAgICAgIHJlYWRQaXhlbHMgPSBfdGhpcyRlbmdpbmUucmVhZFBpeGVscyxcbiAgICAgICAgICB1c2VGcmFtZWJ1ZmZlciA9IF90aGlzJGVuZ2luZS51c2VGcmFtZWJ1ZmZlcjtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0O1xuXG4gICAgICB2YXIgeEluRGV2aWNlUGl4ZWwgPSB4ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICB2YXIgeUluRGV2aWNlUGl4ZWwgPSB5ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87IC8vIGNvbnN0IHhJbkRldmljZVBpeGVsID0geDtcbiAgICAgIC8vIGNvbnN0IHlJbkRldmljZVBpeGVsID0geTtcblxuICAgICAgaWYgKHhJbkRldmljZVBpeGVsID4gd2lkdGggfHwgeEluRGV2aWNlUGl4ZWwgPCAwIHx8IHlJbkRldmljZVBpeGVsID4gaGVpZ2h0IHx8IHlJbkRldmljZVBpeGVsIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwaWNrZWRDb2xvcnM7XG4gICAgICB2YXIgcGlja2VkRmVhdHVyZUlkeDtcbiAgICAgIHVzZUZyYW1lYnVmZmVyKF90aGlzLnBpY2tpbmdGQk8sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gYXZvaWQgcmVhbGxvY1xuICAgICAgICBwaWNrZWRDb2xvcnMgPSByZWFkUGl4ZWxzKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKHhJbkRldmljZVBpeGVsKSxcbiAgICAgICAgICAvLyDop4blj6PlnZDmoIfns7vljp/ngrnlnKjlt6bkuIrvvIzogIwgV2ViR0wg5Zyo5bem5LiL77yM6ZyA6KaB57+76L2sIFkg6L20XG4gICAgICAgICAgeTogTWF0aC5yb3VuZChoZWlnaHQgLSAoeSArIDEpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pLFxuICAgICAgICAgIC8vIHk6IE1hdGgucm91bmQoaGVpZ2h0IC0gKHkgKyAxKSksXG4gICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KDEgKiAxICogNCksXG4gICAgICAgICAgZnJhbWVidWZmZXI6IF90aGlzLnBpY2tpbmdGQk9cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpY2tlZENvbG9yc1swXSAhPT0gMCB8fCBwaWNrZWRDb2xvcnNbMV0gIT09IDAgfHwgcGlja2VkQ29sb3JzWzJdICE9PSAwKSB7XG4gICAgICAgICAgcGlja2VkRmVhdHVyZUlkeCA9IGRlY29kZVBpY2tpbmdDb2xvcihwaWNrZWRDb2xvcnMpO1xuXG4gICAgICAgICAgaWYgKF90aGlzLmhpZ2hsaWdodEVuYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIOmrmOS6rlxuICAgICAgICAgICAgX3RoaXMuaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGlja2VkRmVhdHVyZUlkeDtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBpeGVsUGlja2luZ1Bhc3MsIFt7XG4gICAga2V5OiBcImVuYWJsZUhpZ2hsaWdodFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGVIaWdobGlnaHQoZW5hYmxlZCkge1xuICAgICAgdGhpcy5oaWdobGlnaHRFbmFibGVkID0gZW5hYmxlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0SGlnaGxpZ2h0Q29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SGlnaGxpZ2h0Q29sb3IoY29sb3IpIHtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGlnaGxpZ2h0UGlja2VkRmVhdHVyZVwiLFxuXG4gICAgLyoqXG4gICAgICogaGlnaGxpZ2h0IOWmguaenOebtOaOpeS/ruaUuemAieS4rSBmZWF0dXJlIOeahCBidWZmZXLvvIzlrZjlnKjkuKTkuKrpl67popjvvJpcbiAgICAgKiAxLiDpvKDmoIfnp7votbDml7bml6Dms5XmgaLlpI1cbiAgICAgKiAyLiDml6Dms5Xlrp7njrDpq5jkuq7popzoibLkuI7ljp/lp4vljp/oibLnmoQgYWxwaGEg5re35ZCIXG4gICAgICog5Zug5q2k6auY5Lqu6L+Y5piv5pS+5ZyoIHNoYWRlciDkuK3lgZrmr5TovoPlpb1cbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpIHtcbiAgICAgIGlmIChwaWNrZWRDb2xvcnMpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3LmdldFNjZW5lKCkuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICBfc3RlcDM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIG1lc2hFbnRpdHkgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcbiAgICAgICAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKCd1X1BpY2tpbmdTdGFnZScsIFBpY2tpbmdTdGFnZS5ISUdITElHSFQpO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nQ29sb3InLCBbcGlja2VkQ29sb3JzWzBdLCBwaWNrZWRDb2xvcnNbMV0sIHBpY2tlZENvbG9yc1syXV0pO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9IaWdobGlnaHRDb2xvcicsIHRoaXMuaGlnaGxpZ2h0Q29sb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5lKGVycik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGl4ZWxQaWNraW5nUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1BpeGVsUGlja2luZyBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJyZXNvdXJjZVBvb2xcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzVdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGl4ZWxQaWNraW5nUGFzcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js": /*!*****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js ***! \*****************************************************************************************************************/ /*! exports provided: RenderPass */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderPass\", function() { return RenderPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar RenderPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec7 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec8 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec9 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].FrameGraphSystem), _dec10 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec11 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function RenderPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RenderPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"material\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor6, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor7, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor8, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor9, this);\n\n this.modelCache = {};\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'color buffer', {\n width: 1,\n height: 1,\n usage: _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].RENDER_ATTACHMENT | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].SAMPLED | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].COPY_SRC\n });\n pass.data = {\n output: passNode.write(fg, output)\n };\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var resourceNode, framebuffer, _iterator, _step, view, canvas;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n resourceNode = fg.getResourceNode(pass.data.output);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource); // initialize model of each mesh\n\n _iterator = _createForOfIteratorHelper(views);\n _context.prev = 3;\n\n _iterator.s();\n\n case 5:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n\n view = _step.value;\n _context.next = 9;\n return _this.initView(view);\n\n case 9:\n _context.next = 5;\n break;\n\n case 11:\n _context.next = 16;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](3);\n\n _iterator.e(_context.t0);\n\n case 16:\n _context.prev = 16;\n\n _iterator.f();\n\n return _context.finish(16);\n\n case 19:\n canvas = _this.engine.getCanvas();\n framebuffer.resize({\n width: canvas.width,\n height: canvas.height\n });\n\n _this.engine.setScissor({\n enable: false\n });\n\n _this.engine.clear({\n framebuffer: framebuffer,\n color: views[0].getClearColor(),\n // TODO: use clearColor defined in view\n depth: 1\n });\n\n _this.engine.useFramebuffer(framebuffer, function () {\n var _iterator2 = _createForOfIteratorHelper(views),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var view = _step2.value;\n\n // must do rendering in a sync way\n _this.renderView(view);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n\n case 24:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 13, 16, 19]]);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RenderPass, [{\n key: \"renderView\",\n value: function renderView(view) {\n var scene = view.getScene();\n var camera = view.getCamera(); // get VP matrix from camera\n\n var viewMatrix = camera.getViewTransform();\n var viewProjectionMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), camera.getPerspective(), viewMatrix); // TODO: use cached planes if camera was not changed\n\n camera.getFrustum().extractFromVPMatrix(viewProjectionMatrix);\n\n var _view$getViewport = view.getViewport(),\n x = _view$getViewport.x,\n y = _view$getViewport.y,\n width = _view$getViewport.width,\n height = _view$getViewport.height;\n\n this.engine.viewport({\n x: x,\n y: y,\n width: width,\n height: height\n }); // this.engine.setScissor({\n // enable: true,\n // box: { x, y, width, height },\n // });\n // this.engine.clear({\n // // framebuffer,\n // color: [1, 1, 1, 1], // TODO: use clearColor defined in view\n // depth: 1,\n // });\n\n var _iterator3 = _createForOfIteratorHelper(scene.getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n this.renderMesh(meshEntity, {\n camera: camera,\n view: view,\n viewMatrix: viewMatrix\n });\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"renderMesh\",\n value: function renderMesh(meshEntity, _ref2) {\n var camera = _ref2.camera,\n view = _ref2.view,\n viewMatrix = _ref2.viewMatrix;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (!mesh || !mesh.visible) {\n return;\n } // filter meshes with frustum culling\n // if (!this.cullable.getComponentByEntity(meshEntity)?.visible) {\n // return;\n // }\n\n\n var material = mesh.material;\n var geometry = mesh.geometry; // geometry 在自己的 System 中完成脏检查后的更新\n\n if (!geometry || geometry.dirty || !material) {\n return;\n } // get model matrix from mesh\n\n\n var transform = this.transform.getComponentByEntity(meshEntity);\n var modelViewMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), viewMatrix, transform.worldTransform);\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height; // set MVP matrix, other builtin uniforms @see https://threejs.org/docs/#api/en/renderers/webgl/WebGLProgram\n\n\n material.setUniform({\n projectionMatrix: camera.getPerspective(),\n modelViewMatrix: modelViewMatrix,\n modelMatrix: transform.worldTransform,\n viewMatrix: viewMatrix,\n cameraPosition: camera.getPosition(),\n u_viewport: [width, height]\n });\n\n if (mesh.model) {\n mesh.model.draw({\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {})\n });\n material.uniforms.forEach(function (u) {\n u.dirty = false;\n });\n material.dirty = false;\n }\n }\n }, {\n key: \"initMesh\",\n value: function () {\n var _initMesh = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(meshEntity, view) {\n var mesh, material, geometry, modelCacheKey, _this$engine, createModel, createAttribute, modelInitializationOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (mesh) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 3:\n material = mesh.material;\n geometry = mesh.geometry;\n\n if (!(!geometry || geometry.dirty || !material)) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 7:\n if (mesh.model) {\n _context2.next = 24;\n break;\n }\n\n modelCacheKey = \"m-\".concat(material.entity, \"-g-\").concat(geometry.entity);\n\n if (!this.modelCache[modelCacheKey]) {\n _context2.next = 12;\n break;\n }\n\n mesh.model = this.modelCache[modelCacheKey];\n return _context2.abrupt(\"return\");\n\n case 12:\n material.setUniform({\n projectionMatrix: 1,\n modelViewMatrix: 1,\n modelMatrix: 1,\n viewMatrix: 1,\n cameraPosition: 1,\n u_viewport: 1\n });\n _this$engine = this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute;\n modelInitializationOptions = {\n vs: material.vertexShaderGLSL,\n fs: material.fragmentShaderGLSL,\n defines: material.defines,\n attributes: geometry.attributes.reduce(function (cur, prev) {\n if (prev.data && prev.buffer) {\n cur[prev.name] = createAttribute({\n buffer: prev.buffer,\n attributes: prev.attributes,\n arrayStride: prev.arrayStride,\n stepMode: prev.stepMode,\n divisor: prev.stepMode === 'vertex' ? 0 : 1\n });\n }\n\n return cur;\n }, {}),\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {}),\n scissor: {\n enable: true,\n // @ts-ignore\n box: function box() {\n return view.getViewport();\n }\n }\n };\n\n if (material.cull) {\n modelInitializationOptions.cull = material.cull;\n }\n\n if (material.depth) {\n modelInitializationOptions.depth = material.depth;\n }\n\n if (material.blend) {\n modelInitializationOptions.blend = material.blend;\n }\n\n if (geometry.indicesBuffer) {\n modelInitializationOptions.elements = geometry.indicesBuffer;\n }\n\n if (geometry.maxInstancedCount) {\n modelInitializationOptions.instances = geometry.maxInstancedCount;\n modelInitializationOptions.count = geometry.vertexCount || 3;\n }\n\n _context2.next = 22;\n return createModel(modelInitializationOptions);\n\n case 22:\n mesh.model = _context2.sent;\n this.modelCache[modelCacheKey] = mesh.model;\n\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function initMesh(_x4, _x5) {\n return _initMesh.apply(this, arguments);\n }\n\n return initMesh;\n }()\n }, {\n key: \"initView\",\n value: function () {\n var _initView = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(view) {\n var scene, _iterator4, _step4, meshEntity;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n scene = view.getScene();\n _iterator4 = _createForOfIteratorHelper(scene.getEntities());\n _context3.prev = 2;\n\n _iterator4.s();\n\n case 4:\n if ((_step4 = _iterator4.n()).done) {\n _context3.next = 10;\n break;\n }\n\n meshEntity = _step4.value;\n _context3.next = 8;\n return this.initMesh(meshEntity, view);\n\n case 8:\n _context3.next = 4;\n break;\n\n case 10:\n _context3.next = 15;\n break;\n\n case 12:\n _context3.prev = 12;\n _context3.t0 = _context3[\"catch\"](2);\n\n _iterator4.e(_context3.t0);\n\n case 15:\n _context3.prev = 15;\n\n _iterator4.f();\n\n return _context3.finish(15);\n\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 12, 15, 18]]);\n }));\n\n function initView(_x6) {\n return _initView.apply(this, arguments);\n }\n\n return initView;\n }()\n }]);\n\n return RenderPass;\n}(), _class3.IDENTIFIER = 'Render Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"material\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor6 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec7], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor7 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec8, _dec9], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor8 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec10], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor9 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec11], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=RenderPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9SZW5kZXJQYXNzLmpzPzJiODYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFcEo7QUFDcUI7QUFDTDtBQUN0QjtBQUNwQix5QkFBeUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLGdDQUFnQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLG1CQUFtQix1REFBSyxDQUFDLHNEQUFVLDZCQUE2Qix3REFBTSxDQUFDLHNEQUFVLHlCQUF5Qix3REFBTSxDQUFDLHNEQUFVO0FBQzlmO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHVDQUFFLHFCQUFxQix1Q0FBRSxXQUFXLHVDQUFFO0FBQ3JELE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7O0FBRTVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MsaUNBQWlDO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsaUNBQWlDLDhDQUFJLFVBQVUsOENBQUksZ0RBQWdEOztBQUVuRzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkMsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLGlDQUFpQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSw0QkFBNEIsOENBQUksVUFBVSw4Q0FBSTs7QUFFOUM7QUFDQTtBQUNBLDZDQUE2Qzs7O0FBRzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJO0FBQ2YsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUMsK0RBQStELHNGQUF5QjtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1JlbmRlclBhc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9kZWM1LCBfZGVjNiwgX2RlYzcsIF9kZWM4LCBfZGVjOSwgX2RlYzEwLCBfZGVjMTEsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9kZXNjcmlwdG9yNSwgX2Rlc2NyaXB0b3I2LCBfZGVzY3JpcHRvcjcsIF9kZXNjcmlwdG9yOCwgX2Rlc2NyaXB0b3I5LCBfY2xhc3MzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobywgYWxsb3dBcnJheUxpa2UpIHsgdmFyIGl0OyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBvW1N5bWJvbC5pdGVyYXRvcl0gPT0gbnVsbCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBvW1N5bWJvbC5pdGVyYXRvcl0oKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHN0ZXAgPSBpdC5uZXh0KCk7IG5vcm1hbENvbXBsZXRpb24gPSBzdGVwLmRvbmU7IHJldHVybiBzdGVwOyB9LCBlOiBmdW5jdGlvbiBlKF9lMikgeyBkaWRFcnIgPSB0cnVlOyBlcnIgPSBfZTI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGlmICghbm9ybWFsQ29tcGxldGlvbiAmJiBpdC5yZXR1cm4gIT0gbnVsbCkgaXQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmIChkaWRFcnIpIHRocm93IGVycjsgfSB9IH07IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5pbXBvcnQgeyBtYXQ0IH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9nbCc7XG5leHBvcnQgdmFyIFJlbmRlclBhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkN1bGxhYmxlQ29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM3ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM4ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM5ID0gbmFtZWQoSURFTlRJRklFUi5GcmFtZUdyYXBoU3lzdGVtKSwgX2RlYzEwID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzExID0gaW5qZWN0KElERU5USUZJRVIuUmVzb3VyY2VQb29sKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc2hcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjdWxsYWJsZVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiaGllcmFyY2h5XCIsIF9kZXNjcmlwdG9yNiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgX2Rlc2NyaXB0b3I3LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZW5naW5lXCIsIF9kZXNjcmlwdG9yOCwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjksIHRoaXMpO1xuXG4gICAgdGhpcy5tb2RlbENhY2hlID0ge307XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ2NvbG9yIGJ1ZmZlcicsIHtcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgdXNhZ2U6IGdsLlJFTkRFUl9BVFRBQ0hNRU5UIHwgZ2wuU0FNUExFRCB8IGdsLkNPUFlfU1JDXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdGhpcy5leGVjdXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShmZywgcGFzcywgdmlld3MpIHtcbiAgICAgICAgdmFyIHJlc291cmNlTm9kZSwgZnJhbWVidWZmZXIsIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIGNhbnZhcztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJlc291cmNlTm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShwYXNzLmRhdGEub3V0cHV0KTtcbiAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IF90aGlzLnJlc291cmNlUG9vbC5nZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlTm9kZS5yZXNvdXJjZSk7IC8vIGluaXRpYWxpemUgbW9kZWwgb2YgZWFjaCBtZXNoXG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDM7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IucygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBpZiAoKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5pbml0Vmlldyh2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFtcImNhdGNoXCJdKDMpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoX2NvbnRleHQudDApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE2O1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTYpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgY2FudmFzID0gX3RoaXMuZW5naW5lLmdldENhbnZhcygpO1xuICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogY2FudmFzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAgICAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHZpZXdzWzBdLmdldENsZWFyQ29sb3IoKSxcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHVzZSBjbGVhckNvbG9yIGRlZmluZWQgaW4gdmlld1xuICAgICAgICAgICAgICAgICAgZGVwdGg6IDFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyksXG4gICAgICAgICAgICAgICAgICAgICAgX3N0ZXAyO1xuXG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gbXVzdCBkbyByZW5kZXJpbmcgaW4gYSBzeW5jIHdheVxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbmRlclZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1szLCAxMywgMTYsIDE5XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIsIF94Mykge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVuZGVyUGFzcywgW3tcbiAgICBrZXk6IFwicmVuZGVyVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJWaWV3KHZpZXcpIHtcbiAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgIHZhciBjYW1lcmEgPSB2aWV3LmdldENhbWVyYSgpOyAvLyBnZXQgVlAgbWF0cml4IGZyb20gY2FtZXJhXG5cbiAgICAgIHZhciB2aWV3TWF0cml4ID0gY2FtZXJhLmdldFZpZXdUcmFuc2Zvcm0oKTtcbiAgICAgIHZhciB2aWV3UHJvamVjdGlvbk1hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksIHZpZXdNYXRyaXgpOyAvLyBUT0RPOiB1c2UgY2FjaGVkIHBsYW5lcyBpZiBjYW1lcmEgd2FzIG5vdCBjaGFuZ2VkXG5cbiAgICAgIGNhbWVyYS5nZXRGcnVzdHVtKCkuZXh0cmFjdEZyb21WUE1hdHJpeCh2aWV3UHJvamVjdGlvbk1hdHJpeCk7XG5cbiAgICAgIHZhciBfdmlldyRnZXRWaWV3cG9ydCA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB4ID0gX3ZpZXckZ2V0Vmlld3BvcnQueCxcbiAgICAgICAgICB5ID0gX3ZpZXckZ2V0Vmlld3BvcnQueSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDtcblxuICAgICAgdGhpcy5lbmdpbmUudmlld3BvcnQoe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTsgLy8gdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAvLyAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIC8vICAgYm94OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgLy8gICAvLyBmcmFtZWJ1ZmZlcixcbiAgICAgIC8vICAgY29sb3I6IFsxLCAxLCAxLCAxXSwgLy8gVE9ETzogdXNlIGNsZWFyQ29sb3IgZGVmaW5lZCBpbiB2aWV3XG4gICAgICAvLyAgIGRlcHRoOiAxLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIHZhciBfaXRlcmF0b3IzID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgX3N0ZXAzO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBtZXNoRW50aXR5ID0gX3N0ZXAzLnZhbHVlO1xuICAgICAgICAgIHRoaXMucmVuZGVyTWVzaChtZXNoRW50aXR5LCB7XG4gICAgICAgICAgICBjYW1lcmE6IGNhbWVyYSxcbiAgICAgICAgICAgIHZpZXc6IHZpZXcsXG4gICAgICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJNZXNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlck1lc2gobWVzaEVudGl0eSwgX3JlZjIpIHtcbiAgICAgIHZhciBjYW1lcmEgPSBfcmVmMi5jYW1lcmEsXG4gICAgICAgICAgdmlldyA9IF9yZWYyLnZpZXcsXG4gICAgICAgICAgdmlld01hdHJpeCA9IF9yZWYyLnZpZXdNYXRyaXg7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcblxuICAgICAgaWYgKCFtZXNoIHx8ICFtZXNoLnZpc2libGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBmaWx0ZXIgbWVzaGVzIHdpdGggZnJ1c3R1bSBjdWxsaW5nXG4gICAgICAvLyBpZiAoIXRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk/LnZpc2libGUpIHtcbiAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgLy8gfVxuXG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5OyAvLyBnZW9tZXRyeSDlnKjoh6rlt7HnmoQgU3lzdGVtIOS4reWujOaIkOiEj+ajgOafpeWQjueahOabtOaWsFxuXG4gICAgICBpZiAoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGdldCBtb2RlbCBtYXRyaXggZnJvbSBtZXNoXG5cblxuICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuICAgICAgdmFyIG1vZGVsVmlld01hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgdmlld01hdHJpeCwgdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtKTtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0OyAvLyBzZXQgTVZQIG1hdHJpeCwgb3RoZXIgYnVpbHRpbiB1bmlmb3JtcyBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy93ZWJnbC9XZWJHTFByb2dyYW1cblxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgcHJvamVjdGlvbk1hdHJpeDogY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksXG4gICAgICAgIG1vZGVsVmlld01hdHJpeDogbW9kZWxWaWV3TWF0cml4LFxuICAgICAgICBtb2RlbE1hdHJpeDogdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtLFxuICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4LFxuICAgICAgICBjYW1lcmFQb3NpdGlvbjogY2FtZXJhLmdldFBvc2l0aW9uKCksXG4gICAgICAgIHVfdmlld3BvcnQ6IFt3aWR0aCwgaGVpZ2h0XVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNoLm1vZGVsKSB7XG4gICAgICAgIG1lc2gubW9kZWwuZHJhdyh7XG4gICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICBjdXJbcHJldi5uYW1lXSA9IHByZXYuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIH0pO1xuICAgICAgICBtYXRlcmlhbC51bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgdS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgbWF0ZXJpYWwuZGlydHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdE1lc2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0TWVzaCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG1lc2hFbnRpdHksIHZpZXcpIHtcbiAgICAgICAgdmFyIG1lc2gsIG1hdGVyaWFsLCBnZW9tZXRyeSwgbW9kZWxDYWNoZUtleSwgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBpZiAobWVzaC5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyNDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1vZGVsQ2FjaGVLZXkgPSBcIm0tXCIuY29uY2F0KG1hdGVyaWFsLmVudGl0eSwgXCItZy1cIikuY29uY2F0KGdlb21ldHJ5LmVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1lc2gubW9kZWwgPSB0aGlzLm1vZGVsQ2FjaGVbbW9kZWxDYWNoZUtleV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25NYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbFZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbE1hdHJpeDogMSxcbiAgICAgICAgICAgICAgICAgIHZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBjYW1lcmFQb3NpdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgIHVfdmlld3BvcnQ6IDFcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSB0aGlzLmVuZ2luZSwgY3JlYXRlTW9kZWwgPSBfdGhpcyRlbmdpbmUuY3JlYXRlTW9kZWwsIGNyZWF0ZUF0dHJpYnV0ZSA9IF90aGlzJGVuZ2luZS5jcmVhdGVBdHRyaWJ1dGU7XG4gICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICB2czogbWF0ZXJpYWwudmVydGV4U2hhZGVyR0xTTCxcbiAgICAgICAgICAgICAgICAgIGZzOiBtYXRlcmlhbC5mcmFnbWVudFNoYWRlckdMU0wsXG4gICAgICAgICAgICAgICAgICBkZWZpbmVzOiBtYXRlcmlhbC5kZWZpbmVzLFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogZ2VvbWV0cnkuYXR0cmlidXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGN1ciwgcHJldikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldi5kYXRhICYmIHByZXYuYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY3VyW3ByZXYubmFtZV0gPSBjcmVhdGVBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBwcmV2LmJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHByZXYuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5U3RyaWRlOiBwcmV2LmFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE1vZGU6IHByZXYuc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZpc29yOiBwcmV2LnN0ZXBNb2RlID09PSAndmVydGV4JyA/IDAgOiAxXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cltwcmV2Lm5hbWVdID0gcHJldi5kYXRhO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgc2Npc3Nvcjoge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgYm94OiBmdW5jdGlvbiBib3goKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXcuZ2V0Vmlld3BvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWwuY3VsbCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuY3VsbCA9IG1hdGVyaWFsLmN1bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsLmRlcHRoKSB7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5kZXB0aCA9IG1hdGVyaWFsLmRlcHRoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbC5ibGVuZCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuYmxlbmQgPSBtYXRlcmlhbC5ibGVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuZWxlbWVudHMgPSBnZW9tZXRyeS5pbmRpY2VzQnVmZmVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuaW5zdGFuY2VzID0gZ2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQ7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5jb3VudCA9IGdlb21ldHJ5LnZlcnRleENvdW50IHx8IDM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTW9kZWwobW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgbWVzaC5tb2RlbCA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSA9IG1lc2gubW9kZWw7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0TWVzaChfeDQsIF94NSkge1xuICAgICAgICByZXR1cm4gX2luaXRNZXNoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0TWVzaDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpbml0Vmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXRWaWV3ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTModmlldykge1xuICAgICAgICB2YXIgc2NlbmUsIF9pdGVyYXRvcjQsIF9zdGVwNCwgbWVzaEVudGl0eTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yNC5zKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBtZXNoRW50aXR5ID0gX3N0ZXA0LnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0TWVzaChtZXNoRW50aXR5LCB2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTI7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzW1wiY2F0Y2hcIl0oMik7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmUoX2NvbnRleHQzLnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTU7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuZmluaXNoKDE1KTtcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcywgW1syLCAxMiwgMTUsIDE4XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0VmlldyhfeDYpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0Vmlldy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdFZpZXc7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1JlbmRlciBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNSA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidHJhbnNmb3JtXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjYgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzddLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I3ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIFtfZGVjOCwgX2RlYzldLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I4ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMxMF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjkgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzExXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlclBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js": /*!********************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js ***! \********************************************************************************************************************/ /*! exports provided: HierarchyComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return HierarchyComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar HierarchyComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(HierarchyComponent, _Component);\n\n var _super = _createSuper(HierarchyComponent);\n\n function HierarchyComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, HierarchyComponent);\n\n _this = _super.call(this, data);\n _this.parentID = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return HierarchyComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=HierarchyComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50LmpzPzA5NDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBLGtCQUFrQixtRkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCB2YXIgSGllcmFyY2h5Q29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhIaWVyYXJjaHlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSGllcmFyY2h5Q29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBIaWVyYXJjaHlDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIaWVyYXJjaHlDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5wYXJlbnRJRCA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gSGllcmFyY2h5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGllcmFyY2h5Q29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js": /*!***************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js ***! \***************************************************************************************************************/ /*! exports provided: NameComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NameComponent\", function() { return NameComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar NameComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default()(NameComponent, _Component);\n\n var _super = _createSuper(NameComponent);\n\n function NameComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, NameComponent);\n\n _this = _super.call(this, data);\n _this.name = void 0;\n _this.name = data.name || '';\n return _this;\n }\n\n return NameComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_4__[\"Component\"]);\n//# sourceMappingURL=NameComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvTmFtZUNvbXBvbmVudC5qcz8zZGZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDWjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL05hbWVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBOYW1lQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhOYW1lQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE5hbWVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIE5hbWVDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOYW1lQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5uYW1lID0gZGF0YS5uYW1lIHx8ICcnO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBOYW1lQ29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmFtZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js": /*!********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js ***! \********************************************************************************************************/ /*! exports provided: SceneGraphSystem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return SceneGraphSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\n\n\n\nvar SceneGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function SceneGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, SceneGraphSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(SceneGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.runTransformUpdateSystem();\n this.runHierarchyUpdateSystem();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.hierarchy.clear();\n this.transform.clear();\n }\n }, {\n key: \"getHierarchyComponentManager\",\n value: function getHierarchyComponentManager() {\n return this.hierarchy;\n }\n }, {\n key: \"getTransformComponentManager\",\n value: function getTransformComponentManager() {\n return this.transform;\n }\n }, {\n key: \"runTransformUpdateSystem\",\n value: function runTransformUpdateSystem() {\n var _this = this;\n\n // 原版基于 JobSystem 实现\n this.transform.forEach(function (entity, transform) {\n if (transform.isDirty() || transform.isLocalDirty()) {\n _this.setMeshAABBDirty(_this.mesh.getComponentByEntity(entity));\n\n transform.updateTransform();\n }\n });\n }\n }, {\n key: \"runHierarchyUpdateSystem\",\n value: function runHierarchyUpdateSystem() {\n var _this2 = this;\n\n this.hierarchy.forEach(function (entity, parentComponent) {\n var transformChild = _this2.transform.getComponentByEntity(entity);\n\n var transformParent = _this2.transform.getComponentByEntity(parentComponent.parentID);\n\n if (transformChild !== null && transformParent !== null) {\n transformChild.updateTransformWithParent(transformParent);\n }\n });\n }\n }, {\n key: \"attach\",\n value: function attach(entity, parent, isChildAlreadyInLocalSpace) {\n if (this.hierarchy.contains(entity)) {\n this.detach(entity);\n }\n\n this.hierarchy.create(entity, {\n parentID: parent\n });\n var mesh = this.mesh.getComponentByEntity(parent); // inform parent mesh to update its aabb\n\n this.setMeshAABBDirty(mesh);\n\n if (mesh && mesh.children.indexOf(entity) === -1) {\n mesh.children.push(entity);\n }\n\n if (this.hierarchy.getCount() > 1) {\n for (var i = this.hierarchy.getCount() - 1; i > 0; --i) {\n var parentCandidateEntity = this.hierarchy.getEntity(i); // const parentCandidateComponent = this.hierarchy.getComponent(i);\n\n for (var j = 0; j < i; ++j) {\n var childCandidateEntity = this.hierarchy.getComponent(j);\n\n if (childCandidateEntity.parentID === parentCandidateEntity) {\n this.hierarchy.moveItem(i, j);\n ++i; // next outer iteration will check the same index again as parent candidate, however things were moved upwards, so it will be a different entity!\n\n break;\n }\n }\n }\n } // Re-query parent after potential MoveItem(), because it invalidates references:\n\n\n var parentcomponent = this.hierarchy.getComponentByEntity(entity);\n var transformParent = this.transform.getComponentByEntity(parent);\n\n if (transformParent === null) {\n transformParent = this.transform.create(parent);\n }\n\n var transformChild = this.transform.getComponentByEntity(entity);\n\n if (transformChild === null) {\n transformChild = this.transform.create(entity); // after transforms.Create(), transform_parent pointer could have become invalidated!\n\n transformParent = this.transform.getComponentByEntity(parent);\n }\n\n transformChild.parent = transformParent;\n\n if (!isChildAlreadyInLocalSpace && transformParent) {\n transformChild.matrixTransform(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), transformParent.worldTransform));\n transformChild.updateTransform();\n }\n\n if (transformParent) {\n transformChild.updateTransformWithParent(transformParent);\n }\n }\n }, {\n key: \"detach\",\n value: function detach(entity) {\n var self = this.hierarchy.getComponentByEntity(entity);\n\n if (self !== null) {\n var transform = this.transform.getComponentByEntity(entity);\n\n if (transform !== null) {\n transform.parent = null;\n transform.applyTransform();\n }\n\n this.hierarchy.removeKeepSorted(entity); // inform parent mesh to update its aabb\n\n var mesh = this.mesh.getComponentByEntity(self.parentID);\n\n if (mesh) {\n var index = mesh.children.indexOf(entity);\n mesh.children.splice(index, 1);\n }\n\n this.setMeshAABBDirty(mesh);\n }\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren(parent) {\n var mesh = this.mesh.getComponentByEntity(parent);\n\n if (mesh) {\n mesh.children = [];\n }\n\n for (var i = 0; i < this.hierarchy.getCount();) {\n var _this$hierarchy$getCo;\n\n if (((_this$hierarchy$getCo = this.hierarchy.getComponent(i)) === null || _this$hierarchy$getCo === void 0 ? void 0 : _this$hierarchy$getCo.parentID) === parent) {\n var entity = this.hierarchy.getEntity(i);\n this.detach(entity);\n } else {\n ++i;\n }\n }\n }\n }, {\n key: \"setMeshAABBDirty\",\n value: function setMeshAABBDirty(mesh) {\n if (mesh) {\n mesh.aabbDirty = true;\n }\n }\n }]);\n\n return SceneGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtLmpzPzU1ZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlDO0FBQ2M7QUFDRDtBQUN2QywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVO0FBQ3pMO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjtBQUM5Qjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHFCQUFxQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDeEUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asd0RBQXdEOztBQUV4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsT0FBTztBQUMxRCxrRUFBa0U7O0FBRWxFLHlCQUF5QixPQUFPO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsOENBQUksUUFBUSw4Q0FBSTtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdEQUFnRDs7QUFFaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtCQUErQjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuaW1wb3J0IHsgbWF0NCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuZXhwb3J0IHZhciBTY2VuZUdyYXBoU3lzdGVtID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NlbmVHcmFwaFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2NlbmVHcmFwaFN5c3RlbSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInRyYW5zZm9ybVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2NlbmVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMucnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW0oKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMuaGllcmFyY2h5LmNsZWFyKCk7XG4gICAgICB0aGlzLnRyYW5zZm9ybS5jbGVhcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWVyYXJjaHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudE1hbmFnZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1blRyYW5zZm9ybVVwZGF0ZVN5c3RlbSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIOWOn+eJiOWfuuS6jiBKb2JTeXN0ZW0g5a6e546wXG4gICAgICB0aGlzLnRyYW5zZm9ybS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHksIHRyYW5zZm9ybSkge1xuICAgICAgICBpZiAodHJhbnNmb3JtLmlzRGlydHkoKSB8fCB0cmFuc2Zvcm0uaXNMb2NhbERpcnR5KCkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRNZXNoQUFCQkRpcnR5KF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KSk7XG5cbiAgICAgICAgICB0cmFuc2Zvcm0udXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuSGllcmFyY2h5VXBkYXRlU3lzdGVtKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaGllcmFyY2h5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgcGFyZW50Q29tcG9uZW50KSB7XG4gICAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IF90aGlzMi50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICB2YXIgdHJhbnNmb3JtUGFyZW50ID0gX3RoaXMyLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShwYXJlbnRDb21wb25lbnQucGFyZW50SUQpO1xuXG4gICAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCAhPT0gbnVsbCAmJiB0cmFuc2Zvcm1QYXJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1DaGlsZC51cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50KHRyYW5zZm9ybVBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKGVudGl0eSwgcGFyZW50LCBpc0NoaWxkQWxyZWFkeUluTG9jYWxTcGFjZSkge1xuICAgICAgaWYgKHRoaXMuaGllcmFyY2h5LmNvbnRhaW5zKGVudGl0eSkpIHtcbiAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWVyYXJjaHkuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBwYXJlbnRJRDogcGFyZW50XG4gICAgICB9KTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7IC8vIGluZm9ybSBwYXJlbnQgbWVzaCB0byB1cGRhdGUgaXRzIGFhYmJcblxuICAgICAgdGhpcy5zZXRNZXNoQUFCQkRpcnR5KG1lc2gpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KSA9PT0gLTEpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbi5wdXNoKGVudGl0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhpZXJhcmNoeS5nZXRDb3VudCgpID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q291bnQoKSAtIDE7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgICB2YXIgcGFyZW50Q2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0RW50aXR5KGkpOyAvLyBjb25zdCBwYXJlbnRDYW5kaWRhdGVDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnQoaSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGk7ICsraikge1xuICAgICAgICAgICAgdmFyIGNoaWxkQ2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGopO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGRDYW5kaWRhdGVFbnRpdHkucGFyZW50SUQgPT09IHBhcmVudENhbmRpZGF0ZUVudGl0eSkge1xuICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeS5tb3ZlSXRlbShpLCBqKTtcbiAgICAgICAgICAgICAgKytpOyAvLyBuZXh0IG91dGVyIGl0ZXJhdGlvbiB3aWxsIGNoZWNrIHRoZSBzYW1lIGluZGV4IGFnYWluIGFzIHBhcmVudCBjYW5kaWRhdGUsIGhvd2V2ZXIgdGhpbmdzIHdlcmUgbW92ZWQgdXB3YXJkcywgc28gaXQgd2lsbCBiZSBhIGRpZmZlcmVudCBlbnRpdHkhXG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIFJlLXF1ZXJ5IHBhcmVudCBhZnRlciBwb3RlbnRpYWwgTW92ZUl0ZW0oKSwgYmVjYXVzZSBpdCBpbnZhbGlkYXRlcyByZWZlcmVuY2VzOlxuXG5cbiAgICAgIHZhciBwYXJlbnRjb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgdmFyIHRyYW5zZm9ybVBhcmVudCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1QYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uY3JlYXRlKHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCA9PT0gbnVsbCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpOyAvLyBhZnRlciB0cmFuc2Zvcm1zLkNyZWF0ZSgpLCB0cmFuc2Zvcm1fcGFyZW50IHBvaW50ZXIgY291bGQgaGF2ZSBiZWNvbWUgaW52YWxpZGF0ZWQhXG5cbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtQ2hpbGQucGFyZW50ID0gdHJhbnNmb3JtUGFyZW50O1xuXG4gICAgICBpZiAoIWlzQ2hpbGRBbHJlYWR5SW5Mb2NhbFNwYWNlICYmIHRyYW5zZm9ybVBhcmVudCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZC5tYXRyaXhUcmFuc2Zvcm0obWF0NC5pbnZlcnQobWF0NC5jcmVhdGUoKSwgdHJhbnNmb3JtUGFyZW50LndvcmxkVHJhbnNmb3JtKSk7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhbnNmb3JtUGFyZW50KSB7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQodHJhbnNmb3JtUGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaChlbnRpdHkpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgaWYgKHNlbGYgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybS5wYXJlbnQgPSBudWxsO1xuICAgICAgICAgIHRyYW5zZm9ybS5hcHBseVRyYW5zZm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaHkucmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpOyAvLyBpbmZvcm0gcGFyZW50IG1lc2ggdG8gdXBkYXRlIGl0cyBhYWJiXG5cbiAgICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoc2VsZi5wYXJlbnRJRCk7XG5cbiAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KTtcbiAgICAgICAgICBtZXNoLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc2hBQUJCRGlydHkobWVzaCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaENoaWxkcmVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaENoaWxkcmVuKHBhcmVudCkge1xuICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcblxuICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaGllcmFyY2h5LmdldENvdW50KCk7KSB7XG4gICAgICAgIHZhciBfdGhpcyRoaWVyYXJjaHkkZ2V0Q287XG5cbiAgICAgICAgaWYgKCgoX3RoaXMkaGllcmFyY2h5JGdldENvID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGkpKSA9PT0gbnVsbCB8fCBfdGhpcyRoaWVyYXJjaHkkZ2V0Q28gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGhpZXJhcmNoeSRnZXRDby5wYXJlbnRJRCkgPT09IHBhcmVudCkge1xuICAgICAgICAgIHZhciBlbnRpdHkgPSB0aGlzLmhpZXJhcmNoeS5nZXRFbnRpdHkoaSk7XG4gICAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICArK2k7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWVzaEFBQkJEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNZXNoQUFCQkRpcnR5KG1lc2gpIHtcbiAgICAgIGlmIChtZXNoKSB7XG4gICAgICAgIG1lc2guYWFiYkRpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2NlbmVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0cmFuc2Zvcm1cIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js": /*!********************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js ***! \********************************************************************************************************************/ /*! exports provided: TransformComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return TransformComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar TransformComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(TransformComponent, _Component);\n\n var _super = _createSuper(TransformComponent);\n\n /**\n * local space RTS\n */\n\n /**\n * XMFLOAT4X4._41\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmfloat4x4-xmfloat4x4(constfloat)#remarks\n */\n\n /**\n * world space RTS\n */\n // 高阶函数,利用闭包重复利用临时变量\n // @see playcanvas graph node\n\n /**\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmquaternionrotationrollpitchyaw\n */\n\n /**\n * @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n */\n\n /**\n * TODO: 支持以下两种:\n * * translate(x, y, z)\n * * translate(vec3(x, y, z))\n */\n\n /**\n * @see https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline\n */\n // public catmullRom = (() => {\n // const aS = vec3.create();\n // const aR = quat.create();\n // const aT = vec3.create();\n // const bS = vec3.create();\n // const bR = quat.create();\n // const bT = vec3.create();\n // const cS = vec3.create();\n // const cR = quat.create();\n // const cT = vec3.create();\n // const dS = vec3.create();\n // const dR = quat.create();\n // const dT = vec3.create();\n // const R = quat.create();\n // return (\n // a: TransformComponent,\n // b: TransformComponent,\n // c: TransformComponent,\n // d: TransformComponent,\n // t: number,\n // ) => {\n // this.setDirty();\n // mat4.getScaling(aS, a.worldTransform);\n // mat4.getTranslation(aT, a.worldTransform);\n // mat4.getRotation(aR, a.worldTransform);\n // mat4.getScaling(bS, b.worldTransform);\n // mat4.getTranslation(bT, b.worldTransform);\n // mat4.getRotation(bR, b.worldTransform);\n // mat4.getScaling(cS, c.worldTransform);\n // mat4.getTranslation(cT, c.worldTransform);\n // mat4.getRotation(cR, c.worldTransform);\n // mat4.getScaling(dS, d.worldTransform);\n // mat4.getTranslation(dT, d.worldTransform);\n // mat4.getRotation(dR, d.worldTransform);\n // vec3.catmullRom(this.localPosition, aT, bT, cT, dT, t);\n // vec3.catmullRom(R, aR, bR, cR, dR, t);\n // quat.normalize(this.localRotation, R);\n // vec3.catmullRom(this.localScale, aS, bS, cS, dS, t);\n // };\n // })();\n function TransformComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TransformComponent);\n\n _this = _super.call(this, data);\n _this.dirtyFlag = void 0;\n _this.localDirtyFlag = void 0;\n _this.parent = null;\n _this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.localTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n _this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.scaling = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.worldTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n\n _this.matrixTransform = function () {\n var transformed = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (mat) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(transformed, _this.getLocalTransform(), mat);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(_this.localScale, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(_this.localPosition, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(_this.localRotation, transformed);\n };\n }();\n\n _this.rotateRollPitchYaw = function () {\n var quatX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (x, y, z) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatX, x, 0, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatY, 0, y, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatZ, 0, 0, z);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatX, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quatY);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatZ, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n };\n }();\n\n _this.lerp = function () {\n var aS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var aR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var aT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var bT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (a, b, t) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(aS, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(aT, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(aR, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(bS, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(bT, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(bR, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localScale, aS, bS, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].slerp(_this.localRotation, aR, bR, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localPosition, aT, bT, t);\n };\n }();\n\n _this.translate = function () {\n var tr = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(tr, _this.getPosition(), translation);\n\n _this.setPosition(tr);\n\n _this.setDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.translateLocal = function () {\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformQuat(translation, translation, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(_this.localPosition, _this.localPosition, translation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setPosition = function () {\n var parentInvertMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (position) {\n _this.position = position;\n\n _this.setLocalDirty(true);\n\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(_this.localPosition, position);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(parentInvertMatrix, _this.parent.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(parentInvertMatrix, parentInvertMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(_this.localPosition, position, parentInvertMatrix);\n }\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotate = function () {\n var parentInvertRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (quaternion) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n } else {\n var rot = _this.getRotation();\n\n var parentRot = _this.parent.getRotation();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(parentInvertRotation, parentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(parentInvertRotation, parentInvertRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(parentInvertRotation, parentInvertRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quaternion, rot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n }\n\n _this.setLocalDirty();\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotateLocal = function () {\n return function (quaternion) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setRotation = function () {\n var invParentRot = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (rotation) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, rotation);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(invParentRot, _this.parent.getRotation());\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(invParentRot, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].mul(_this.localRotation, _this.localRotation, rotation);\n }\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TransformComponent, [{\n key: \"setLocalPosition\",\n value: function setLocalPosition(position) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localPosition, position);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalScale\",\n value: function setLocalScale(scale) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localScale, scale);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalRotation\",\n value: function setLocalRotation(rotation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(this.localRotation, rotation);\n this.setLocalDirty(true);\n return this;\n }\n }, {\n key: \"isDirty\",\n value: function isDirty() {\n return this.dirtyFlag;\n }\n }, {\n key: \"setDirty\",\n value: function setDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.dirtyFlag |= TransformComponent.DIRTY;\n } else {\n this.dirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"isLocalDirty\",\n value: function isLocalDirty() {\n return this.localDirtyFlag;\n }\n }, {\n key: \"setLocalDirty\",\n value: function setLocalDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.localDirtyFlag |= TransformComponent.DIRTY;\n this.setDirty(true);\n } else {\n this.localDirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"updateTransform\",\n value: function updateTransform() {\n if (this.isLocalDirty()) {\n this.getLocalTransform();\n }\n\n if (this.isDirty()) {\n if (this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(this.worldTransform, this.getLocalTransform());\n this.setDirty(false);\n }\n }\n }\n }, {\n key: \"updateTransformWithParent\",\n value: function updateTransformWithParent(parent) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.worldTransform, parent.worldTransform, this.getLocalTransform());\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform() {\n this.setDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.localScale, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.localPosition, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.localRotation, this.worldTransform);\n }\n }, {\n key: \"clearTransform\",\n value: function clearTransform() {\n this.setDirty();\n this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n }\n }, {\n key: \"scaleLocal\",\n value: function scaleLocal(scaling) {\n this.setLocalDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].multiply(this.localScale, this.localScale, scaling);\n return this;\n }\n }, {\n key: \"getLocalPosition\",\n value: function getLocalPosition() {\n return this.localPosition;\n }\n }, {\n key: \"getLocalRotation\",\n value: function getLocalRotation() {\n return this.localRotation;\n }\n }, {\n key: \"getLocalScale\",\n value: function getLocalScale() {\n return this.localScale;\n }\n }, {\n key: \"getLocalTransform\",\n value: function getLocalTransform() {\n if (this.localDirtyFlag) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromRotationTranslationScale(this.localTransform, this.localRotation, this.localPosition, this.localScale);\n this.setLocalDirty(false);\n }\n\n return this.localTransform;\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n if (!this.isLocalDirty() && !this.isDirty()) {\n return this.worldTransform;\n }\n\n if (this.parent) {\n this.parent.getWorldTransform();\n }\n\n this.updateTransform();\n return this.worldTransform;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.position, this.worldTransform);\n return this.position;\n }\n }, {\n key: \"getRotation\",\n value: function getRotation() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.rotation, this.worldTransform);\n return this.rotation;\n }\n }, {\n key: \"getScale\",\n value: function getScale() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.scaling, this.worldTransform);\n return this.scaling;\n }\n }]);\n\n return TransformComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_7__[\"Component\"]);\nTransformComponent.DIRTY = 1 << 0;\n//# sourceMappingURL=TransformComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50LmpzP2ZhYWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFclI7QUFDTTtBQUM1QztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhDQUFJO0FBQzlCLDBCQUEwQiw4Q0FBSTtBQUM5Qix1QkFBdUIsOENBQUk7QUFDM0IsMkJBQTJCLDhDQUFJO0FBQy9CLHFCQUFxQiw4Q0FBSTtBQUN6QixxQkFBcUIsOENBQUk7QUFDekIsb0JBQW9CLDhDQUFJO0FBQ3hCLDJCQUEyQiw4Q0FBSTs7QUFFL0I7QUFDQSx3QkFBd0IsOENBQUk7QUFDNUI7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0Esa0JBQWtCLDhDQUFJO0FBQ3RCLGtCQUFrQiw4Q0FBSTtBQUN0QixrQkFBa0IsOENBQUk7QUFDdEI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkIsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxlQUFlLDhDQUFJO0FBQ25CO0FBQ0EsUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQTs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJOztBQUVaOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLCtCQUErQiw4Q0FBSTtBQUNuQztBQUNBOztBQUVBOztBQUVBO0FBQ0EsVUFBVSw4Q0FBSTtBQUNkLFNBQVM7QUFDVCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZDs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQ0FBaUMsOENBQUk7QUFDckM7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsU0FBUztBQUNUOztBQUVBOztBQUVBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2Q7O0FBRUE7O0FBRUEsZUFBZSxtRkFBc0I7QUFDckM7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSx5QkFBeUIsOENBQUk7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxTQUFTO0FBQ1QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkOztBQUVBOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLDhDQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsOENBQUk7QUFDL0IsMkJBQTJCLDhDQUFJO0FBQy9CLHdCQUF3Qiw4Q0FBSTtBQUM1QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBtYXQ0LCBxdWF0LCB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBUcmFuc2Zvcm1Db21wb25lbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYW5zZm9ybUNvbXBvbmVudCwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUcmFuc2Zvcm1Db21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBsb2NhbCBzcGFjZSBSVFNcbiAgICovXG5cbiAgLyoqXG4gICAqIFhNRkxPQVQ0WDQuXzQxXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1mbG9hdDR4NC14bWZsb2F0NHg0KGNvbnN0ZmxvYXQpI3JlbWFya3NcbiAgICovXG5cbiAgLyoqXG4gICAqIHdvcmxkIHNwYWNlIFJUU1xuICAgKi9cbiAgLy8g6auY6Zi25Ye95pWw77yM5Yip55So6Zet5YyF6YeN5aSN5Yip55So5Li05pe25Y+Y6YePXG4gIC8vIEBzZWUgcGxheWNhbnZhcyBncmFwaCBub2RlXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1xdWF0ZXJuaW9ucm90YXRpb25yb2xscGl0Y2h5YXdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly94aWFvaXZlci5naXRodWIuaW8vY29kaW5nLzIwMTgvMTIvMjgvQ2FtZXJhLSVFOCVBRSVCRSVFOCVBRSVBMS0lRTQlQjglODAuaHRtbFxuICAgKi9cblxuICAvKipcbiAgICogVE9ETzog5pSv5oyB5Lul5LiL5Lik56eN77yaXG4gICAqICogdHJhbnNsYXRlKHgsIHksIHopXG4gICAqICogdHJhbnNsYXRlKHZlYzMoeCwgeSwgeikpXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NlbnRyaXBldGFsX0NhdG11bGwlRTIlODAlOTNSb21fc3BsaW5lXG4gICAqL1xuICAvLyBwdWJsaWMgY2F0bXVsbFJvbSA9ICgoKSA9PiB7XG4gIC8vICAgY29uc3QgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgY1MgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGNSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBjVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgZFMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGRSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBkVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgUiA9IHF1YXQuY3JlYXRlKCk7XG4gIC8vICAgcmV0dXJuIChcbiAgLy8gICAgIGE6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGI6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGM6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGQ6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIHQ6IG51bWJlcixcbiAgLy8gICApID0+IHtcbiAgLy8gICAgIHRoaXMuc2V0RGlydHkoKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhhUywgYS53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oYVIsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRTY2FsaW5nKGJTLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRSb3RhdGlvbihiUiwgYi53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFNjYWxpbmcoY1MsIGMud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRUcmFuc2xhdGlvbihjVCwgYy53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFJvdGF0aW9uKGNSLCBjLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhkUywgZC53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGRULCBkLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oZFIsIGQud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKHRoaXMubG9jYWxQb3NpdGlvbiwgYVQsIGJULCBjVCwgZFQsIHQpO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKFIsIGFSLCBiUiwgY1IsIGRSLCB0KTtcbiAgLy8gICAgIHF1YXQubm9ybWFsaXplKHRoaXMubG9jYWxSb3RhdGlvbiwgUik7XG4gIC8vICAgICB2ZWMzLmNhdG11bGxSb20odGhpcy5sb2NhbFNjYWxlLCBhUywgYlMsIGNTLCBkUywgdCk7XG4gIC8vICAgfTtcbiAgLy8gfSkoKTtcbiAgZnVuY3Rpb24gVHJhbnNmb3JtQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNmb3JtQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLmxvY2FsRGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLnBhcmVudCA9IG51bGw7XG4gICAgX3RoaXMubG9jYWxQb3NpdGlvbiA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAwKTtcbiAgICBfdGhpcy5sb2NhbFJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMubG9jYWxUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuICAgIF90aGlzLnBvc2l0aW9uID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApO1xuICAgIF90aGlzLnJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLnNjYWxpbmcgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMud29ybGRUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuXG4gICAgX3RoaXMubWF0cml4VHJhbnNmb3JtID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRyYW5zZm9ybWVkID0gbWF0NC5jcmVhdGUoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAobWF0KSB7XG4gICAgICAgIG1hdDQubXVsdGlwbHkodHJhbnNmb3JtZWQsIF90aGlzLmdldExvY2FsVHJhbnNmb3JtKCksIG1hdCk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhfdGhpcy5sb2NhbFNjYWxlLCB0cmFuc2Zvcm1lZCk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oX3RoaXMubG9jYWxQb3NpdGlvbiwgdHJhbnNmb3JtZWQpO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKF90aGlzLmxvY2FsUm90YXRpb24sIHRyYW5zZm9ybWVkKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlUm9sbFBpdGNoWWF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHF1YXRYID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBxdWF0WSA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICB2YXIgcXVhdFogPSBxdWF0LmNyZWF0ZSgpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIF90aGlzLnNldERpcnR5KCk7XG5cbiAgICAgICAgcXVhdC5mcm9tRXVsZXIocXVhdFgsIHgsIDAsIDApO1xuICAgICAgICBxdWF0LmZyb21FdWxlcihxdWF0WSwgMCwgeSwgMCk7XG4gICAgICAgIHF1YXQuZnJvbUV1bGVyKHF1YXRaLCAwLCAwLCB6KTtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0WCwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdFkpO1xuICAgICAgICBxdWF0Lm11bHRpcGx5KF90aGlzLmxvY2FsUm90YXRpb24sIHF1YXRaLCBfdGhpcy5sb2NhbFJvdGF0aW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLmxlcnAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICB2YXIgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIHQpIHtcbiAgICAgICAgX3RoaXMuc2V0RGlydHkoKTtcblxuICAgICAgICBtYXQ0LmdldFNjYWxpbmcoYVMsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgbWF0NC5nZXRSb3RhdGlvbihhUiwgYS53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhiUywgYi53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKGJSLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsU2NhbGUsIGFTLCBiUywgdCk7XG4gICAgICAgIHF1YXQuc2xlcnAoX3RoaXMubG9jYWxSb3RhdGlvbiwgYVIsIGJSLCB0KTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsUG9zaXRpb24sIGFULCBiVCwgdCk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0ciA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMuYWRkKHRyLCBfdGhpcy5nZXRQb3NpdGlvbigpLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0UG9zaXRpb24odHIpO1xuXG4gICAgICAgIF90aGlzLnNldERpcnR5KHRydWUpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMudHJhbnNsYXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMudHJhbnNmb3JtUXVhdCh0cmFuc2xhdGlvbiwgdHJhbnNsYXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB2ZWMzLmFkZChfdGhpcy5sb2NhbFBvc2l0aW9uLCBfdGhpcy5sb2NhbFBvc2l0aW9uLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcmVudEludmVydE1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBvc2l0aW9uKSB7XG4gICAgICAgIF90aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICBpZiAoX3RoaXMucGFyZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgdmVjMy5jb3B5KF90aGlzLmxvY2FsUG9zaXRpb24sIHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXQ0LmNvcHkocGFyZW50SW52ZXJ0TWF0cml4LCBfdGhpcy5wYXJlbnQud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICAgIG1hdDQuaW52ZXJ0KHBhcmVudEludmVydE1hdHJpeCwgcGFyZW50SW52ZXJ0TWF0cml4KTtcbiAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDQoX3RoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24sIHBhcmVudEludmVydE1hdHJpeCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnJvdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJlbnRJbnZlcnRSb3RhdGlvbiA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgaWYgKF90aGlzLnBhcmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHJvdCA9IF90aGlzLmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICB2YXIgcGFyZW50Um90ID0gX3RoaXMucGFyZW50LmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICBxdWF0LmNvcHkocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5pbnZlcnQocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudEludmVydFJvdGF0aW9uKTtcbiAgICAgICAgICBxdWF0Lm11bHRpcGx5KHBhcmVudEludmVydFJvdGF0aW9uLCBwYXJlbnRJbnZlcnRSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uLCByb3QpO1xuICAgICAgICAgIHF1YXQubm9ybWFsaXplKF90aGlzLmxvY2FsUm90YXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSgpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFJvdGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGludlBhcmVudFJvdCA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHJvdGF0aW9uKSB7XG4gICAgICAgIGlmIChfdGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBxdWF0LmNvcHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1YXQuY29weShpbnZQYXJlbnRSb3QsIF90aGlzLnBhcmVudC5nZXRSb3RhdGlvbigpKTtcbiAgICAgICAgICBxdWF0LmludmVydChpbnZQYXJlbnRSb3QsIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5jb3B5KF90aGlzLmxvY2FsUm90YXRpb24sIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5tdWwoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2Zvcm1Db21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TG9jYWxQb3NpdGlvbihwb3NpdGlvbikge1xuICAgICAgdmVjMy5jb3B5KHRoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24pO1xuICAgICAgdGhpcy5zZXRMb2NhbERpcnR5KHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMb2NhbFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExvY2FsU2NhbGUoc2NhbGUpIHtcbiAgICAgIHZlYzMuY29weSh0aGlzLmxvY2FsU2NhbGUsIHNjYWxlKTtcbiAgICAgIHRoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxSb3RhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbFJvdGF0aW9uKHJvdGF0aW9uKSB7XG4gICAgICBxdWF0LmNvcHkodGhpcy5sb2NhbFJvdGF0aW9uLCByb3RhdGlvbik7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkodHJ1ZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0RpcnR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlydHlGbGFnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXJ0eSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnIHw9IFRyYW5zZm9ybUNvbXBvbmVudC5ESVJUWTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzTG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvY2FsRGlydHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbERpcnR5RmxhZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbERpcnR5KCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0cnVlO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5sb2NhbERpcnR5RmxhZyB8PSBUcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICAgIHRoaXMuc2V0RGlydHkodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvY2FsRGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVRyYW5zZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAodGhpcy5pc0xvY2FsRGlydHkoKSkge1xuICAgICAgICB0aGlzLmdldExvY2FsVHJhbnNmb3JtKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzRGlydHkoKSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBtYXQ0LmNvcHkodGhpcy53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICAgICAgICB0aGlzLnNldERpcnR5KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQocGFyZW50KSB7XG4gICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMud29ybGRUcmFuc2Zvcm0sIHBhcmVudC53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYXBwbHlUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICBtYXQ0LmdldFNjYWxpbmcodGhpcy5sb2NhbFNjYWxlLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0Um90YXRpb24odGhpcy5sb2NhbFJvdGF0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXJUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICB0aGlzLmxvY2FsUG9zaXRpb24gPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgICB0aGlzLmxvY2FsUm90YXRpb24gPSBxdWF0LmZyb21WYWx1ZXMoMCwgMCwgMCwgMSk7XG4gICAgICB0aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNjYWxlTG9jYWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2NhbGVMb2NhbChzY2FsaW5nKSB7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkoKTtcbiAgICAgIHZlYzMubXVsdGlwbHkodGhpcy5sb2NhbFNjYWxlLCB0aGlzLmxvY2FsU2NhbGUsIHNjYWxpbmcpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUG9zaXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUm90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxSb3RhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsU2NhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxTY2FsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2NhbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsVHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvY2FsVHJhbnNmb3JtKCkge1xuICAgICAgaWYgKHRoaXMubG9jYWxEaXJ0eUZsYWcpIHtcbiAgICAgICAgbWF0NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlKHRoaXMubG9jYWxUcmFuc2Zvcm0sIHRoaXMubG9jYWxSb3RhdGlvbiwgdGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLmxvY2FsU2NhbGUpO1xuICAgICAgICB0aGlzLnNldExvY2FsRGlydHkoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbFRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0V29ybGRUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V29ybGRUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAoIXRoaXMuaXNMb2NhbERpcnR5KCkgJiYgIXRoaXMuaXNEaXJ0eSgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuZ2V0V29ybGRUcmFuc2Zvcm0oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5wb3NpdGlvbiwgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Um90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Um90YXRpb24oKSB7XG4gICAgICBtYXQ0LmdldFJvdGF0aW9uKHRoaXMucm90YXRpb24sIHRoaXMud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgcmV0dXJuIHRoaXMucm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjYWxlKCkge1xuICAgICAgbWF0NC5nZXRTY2FsaW5nKHRoaXMuc2NhbGluZywgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5zY2FsaW5nO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2Zvcm1Db21wb25lbnQ7XG59KENvbXBvbmVudCk7XG5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFkgPSAxIDw8IDA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmFuc2Zvcm1Db21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js ***! \**************************************************************************************/ /*! exports provided: IDENTIFIER */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return IDENTIFIER; });\nvar IDENTIFIER = {\n // SceneGraph\n HierarchyComponentManager: Symbol('HierarchyComponentManager'),\n TransformComponentManager: Symbol('TransformComponentManager'),\n NameComponentManager: Symbol('NameComponentManager'),\n SceneGraphSystem: Symbol('SceneGraphSystem'),\n // FrameGraph\n FrameGraphSystem: Symbol('FrameGraphSystem'),\n ResourcePool: Symbol('ResourcePool'),\n ResourceHandleComponentManager: Symbol('ResourceHandleComponentManager'),\n PassNodeComponentManager: Symbol('PassNodeComponentManager'),\n // Renderer\n RendererSystem: Symbol('RendererSystem'),\n RenderPass: Symbol('RenderPass'),\n RenderPassFactory: Symbol('Factory'),\n Renderable: Symbol('Factory'),\n // Mesh\n MeshSystem: Symbol('MeshSystem'),\n MeshComponentManager: Symbol('MeshComponentManager'),\n CullableComponentManager: Symbol('CullableComponentManager'),\n // Geometry\n Geometry: Symbol('Geometry'),\n GeometrySystem: Symbol('GeometrySystem'),\n GeometryComponentManager: Symbol('GeometryComponentManager'),\n // Material\n Material: Symbol('Material'),\n MaterialSystem: Symbol('MaterialSystem'),\n MaterialComponentManager: Symbol('MaterialComponentManager'),\n // RenderPath\n ForwardRenderPath: Symbol('ForwardRenderPath'),\n // ComputeSystem\n ComputeSystem: Symbol('ComputeSystem'),\n ComputeComponentManager: Symbol('ComputeComponentManager'),\n ComputeStrategy: Symbol('ComputeStrategy'),\n Systems: Symbol('Systems'),\n World: Symbol('World'),\n // RenderEngine\n RenderEngine: Symbol('RenderEngine'),\n WebGPUEngine: Symbol('WebGPUEngine'),\n WebGLEngine: Symbol('WebGLEngine'),\n // Shader Module\n ShaderModuleService: Symbol('ShaderModuleService'),\n ConfigService: Symbol('ConfigService'),\n InteractorService: Symbol('InteractorService'),\n IEventEmitter: Symbol('IEventEmitter'),\n // Light\n Light: Symbol('Light')\n};\n//# sourceMappingURL=identifier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pZGVudGlmaWVyLmpzPzVjZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvaWRlbnRpZmllci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgSURFTlRJRklFUiA9IHtcbiAgLy8gU2NlbmVHcmFwaFxuICBIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0hpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdUcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyJyksXG4gIE5hbWVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ05hbWVDb21wb25lbnRNYW5hZ2VyJyksXG4gIFNjZW5lR3JhcGhTeXN0ZW06IFN5bWJvbCgnU2NlbmVHcmFwaFN5c3RlbScpLFxuICAvLyBGcmFtZUdyYXBoXG4gIEZyYW1lR3JhcGhTeXN0ZW06IFN5bWJvbCgnRnJhbWVHcmFwaFN5c3RlbScpLFxuICBSZXNvdXJjZVBvb2w6IFN5bWJvbCgnUmVzb3VyY2VQb29sJyksXG4gIFJlc291cmNlSGFuZGxlQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdSZXNvdXJjZUhhbmRsZUNvbXBvbmVudE1hbmFnZXInKSxcbiAgUGFzc05vZGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ1Bhc3NOb2RlQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJlclxuICBSZW5kZXJlclN5c3RlbTogU3ltYm9sKCdSZW5kZXJlclN5c3RlbScpLFxuICBSZW5kZXJQYXNzOiBTeW1ib2woJ1JlbmRlclBhc3MnKSxcbiAgUmVuZGVyUGFzc0ZhY3Rvcnk6IFN5bWJvbCgnRmFjdG9yeTxJUmVuZGVyUGFzcz4nKSxcbiAgUmVuZGVyYWJsZTogU3ltYm9sKCdGYWN0b3J5PElSZW5kZXJQYXNzPicpLFxuICAvLyBNZXNoXG4gIE1lc2hTeXN0ZW06IFN5bWJvbCgnTWVzaFN5c3RlbScpLFxuICBNZXNoQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdNZXNoQ29tcG9uZW50TWFuYWdlcicpLFxuICBDdWxsYWJsZUNvbXBvbmVudE1hbmFnZXI6IFN5bWJvbCgnQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIC8vIEdlb21ldHJ5XG4gIEdlb21ldHJ5OiBTeW1ib2woJ0dlb21ldHJ5JyksXG4gIEdlb21ldHJ5U3lzdGVtOiBTeW1ib2woJ0dlb21ldHJ5U3lzdGVtJyksXG4gIEdlb21ldHJ5Q29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdHZW9tZXRyeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgLy8gTWF0ZXJpYWxcbiAgTWF0ZXJpYWw6IFN5bWJvbCgnTWF0ZXJpYWwnKSxcbiAgTWF0ZXJpYWxTeXN0ZW06IFN5bWJvbCgnTWF0ZXJpYWxTeXN0ZW0nKSxcbiAgTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ01hdGVyaWFsQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJQYXRoXG4gIEZvcndhcmRSZW5kZXJQYXRoOiBTeW1ib2woJ0ZvcndhcmRSZW5kZXJQYXRoJyksXG4gIC8vIENvbXB1dGVTeXN0ZW1cbiAgQ29tcHV0ZVN5c3RlbTogU3ltYm9sKCdDb21wdXRlU3lzdGVtJyksXG4gIENvbXB1dGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0NvbXB1dGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIENvbXB1dGVTdHJhdGVneTogU3ltYm9sKCdDb21wdXRlU3RyYXRlZ3knKSxcbiAgU3lzdGVtczogU3ltYm9sKCdTeXN0ZW1zJyksXG4gIFdvcmxkOiBTeW1ib2woJ1dvcmxkJyksXG4gIC8vIFJlbmRlckVuZ2luZVxuICBSZW5kZXJFbmdpbmU6IFN5bWJvbCgnUmVuZGVyRW5naW5lJyksXG4gIFdlYkdQVUVuZ2luZTogU3ltYm9sKCdXZWJHUFVFbmdpbmUnKSxcbiAgV2ViR0xFbmdpbmU6IFN5bWJvbCgnV2ViR0xFbmdpbmUnKSxcbiAgLy8gU2hhZGVyIE1vZHVsZVxuICBTaGFkZXJNb2R1bGVTZXJ2aWNlOiBTeW1ib2woJ1NoYWRlck1vZHVsZVNlcnZpY2UnKSxcbiAgQ29uZmlnU2VydmljZTogU3ltYm9sKCdDb25maWdTZXJ2aWNlJyksXG4gIEludGVyYWN0b3JTZXJ2aWNlOiBTeW1ib2woJ0ludGVyYWN0b3JTZXJ2aWNlJyksXG4gIElFdmVudEVtaXR0ZXI6IFN5bWJvbCgnSUV2ZW50RW1pdHRlcicpLFxuICAvLyBMaWdodFxuICBMaWdodDogU3ltYm9sKCdMaWdodCcpXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRlbnRpZmllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_TOKEN_TYPES\", function() { return AST_TOKEN_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_NODE_TYPES\", function() { return AST_NODE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STORAGE_CLASS\", function() { return STORAGE_CLASS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Target\", function() { return Target; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DefineValuePlaceholder\", function() { return DefineValuePlaceholder; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"ComponentManager\"]; });\n\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__[\"FrameGraphSystem\"]; });\n\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__[\"GeometryComponent\"]; });\n\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__[\"GeometrySystem\"]; });\n\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__[\"MaterialComponent\"]; });\n\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return _components_material_System__WEBPACK_IMPORTED_MODULE_6__[\"MaterialSystem\"]; });\n\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__[\"CullableComponent\"]; });\n\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__[\"MeshComponent\"]; });\n\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__[\"MeshSystem\"]; });\n\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"]; });\n\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__[\"RendererSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__[\"HierarchyComponent\"]; });\n\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__[\"SceneGraphSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__[\"TransformComponent\"]; });\n\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Entity */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return _Entity__WEBPACK_IMPORTED_MODULE_15__[\"createEntity\"]; });\n\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return _identifier__WEBPACK_IMPORTED_MODULE_16__[\"IDENTIFIER\"]; });\n\n/* harmony import */ var _inversify_config__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./inversify.config */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"container\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"createWorldContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyInject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyMultiInject\"]; });\n\n/* harmony import */ var _utils_aabb__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/aabb */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return _utils_aabb__WEBPACK_IMPORTED_MODULE_18__[\"generateAABBFromVertices\"]; });\n\n/* harmony import */ var _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/isSafari */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__[\"isSafari\"]; });\n\n/* empty/unused harmony star reexport *//* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./services */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"ConfigService\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"InteractorService\"]; });\n\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"AABB\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"BoundingSphere\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Frustum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Plane\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Ray\"]; });\n\n/* harmony import */ var _components_renderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/renderer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/material/interface */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js\");\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_components_material_interface__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_material_interface__WEBPACK_IMPORTED_MODULE_23__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_material_interface__WEBPACK_IMPORTED_MODULE_23__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/mesh/interface */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js\");\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n// tslint:disable-next-line:no-reference\n/// \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * inspired by Entitas' Systems\n * @see https://github.com/sschmid/Entitas-CSharp/wiki/Systems\n */\n\nvar AST_TOKEN_TYPES;\n\n(function (AST_TOKEN_TYPES) {\n AST_TOKEN_TYPES[\"Void\"] = \"Void\";\n AST_TOKEN_TYPES[\"Boolean\"] = \"Boolean\";\n AST_TOKEN_TYPES[\"Float\"] = \"Float\";\n AST_TOKEN_TYPES[\"Uint32\"] = \"Uint32\";\n AST_TOKEN_TYPES[\"Int32\"] = \"Int32\";\n AST_TOKEN_TYPES[\"Vector\"] = \"Vector\";\n AST_TOKEN_TYPES[\"Vector2Float\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Float\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Float\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Boolean\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Boolean\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Boolean\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Uint\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Uint\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Uint\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Int\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Int\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Int\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Matrix\"] = \"Matrix\";\n AST_TOKEN_TYPES[\"Matrix3x3Float\"] = \"mat3x3\";\n AST_TOKEN_TYPES[\"Matrix4x4Float\"] = \"mat4x4\";\n AST_TOKEN_TYPES[\"Struct\"] = \"Struct\";\n AST_TOKEN_TYPES[\"FloatArray\"] = \"Float[]\";\n AST_TOKEN_TYPES[\"Vector4FloatArray\"] = \"vec4[]\";\n})(AST_TOKEN_TYPES || (AST_TOKEN_TYPES = {}));\n\nvar AST_NODE_TYPES;\n\n(function (AST_NODE_TYPES) {\n AST_NODE_TYPES[\"Program\"] = \"Program\";\n AST_NODE_TYPES[\"Identifier\"] = \"Identifier\";\n AST_NODE_TYPES[\"VariableDeclaration\"] = \"VariableDeclaration\";\n AST_NODE_TYPES[\"BlockStatement\"] = \"BlockStatement\";\n AST_NODE_TYPES[\"ReturnStatement\"] = \"ReturnStatement\";\n AST_NODE_TYPES[\"FunctionDeclaration\"] = \"FunctionDeclaration\";\n AST_NODE_TYPES[\"VariableDeclarator\"] = \"VariableDeclarator\";\n AST_NODE_TYPES[\"AssignmentExpression\"] = \"AssignmentExpression\";\n AST_NODE_TYPES[\"LogicalExpression\"] = \"LogicalExpression\";\n AST_NODE_TYPES[\"BinaryExpression\"] = \"BinaryExpression\";\n AST_NODE_TYPES[\"ArrayExpression\"] = \"ArrayExpression\";\n AST_NODE_TYPES[\"UnaryExpression\"] = \"UnaryExpression\";\n AST_NODE_TYPES[\"UpdateExpression\"] = \"UpdateExpression\";\n AST_NODE_TYPES[\"FunctionExpression\"] = \"FunctionExpression\";\n AST_NODE_TYPES[\"MemberExpression\"] = \"MemberExpression\";\n AST_NODE_TYPES[\"ConditionalExpression\"] = \"ConditionalExpression\";\n AST_NODE_TYPES[\"ExpressionStatement\"] = \"ExpressionStatement\";\n AST_NODE_TYPES[\"CallExpression\"] = \"CallExpression\";\n AST_NODE_TYPES[\"NumThreadStatement\"] = \"NumThreadStatement\";\n AST_NODE_TYPES[\"StorageStatement\"] = \"StorageStatement\";\n AST_NODE_TYPES[\"DoWhileStatement\"] = \"DoWhileStatement\";\n AST_NODE_TYPES[\"WhileStatement\"] = \"WhileStatement\";\n AST_NODE_TYPES[\"ForStatement\"] = \"ForStatement\";\n AST_NODE_TYPES[\"BreakStatement\"] = \"BreakStatement\";\n AST_NODE_TYPES[\"ContinueStatement\"] = \"ContinueStatement\";\n AST_NODE_TYPES[\"IfStatement\"] = \"IfStatement\";\n AST_NODE_TYPES[\"ImportedFunctionStatement\"] = \"ImportedFunctionStatement\";\n})(AST_NODE_TYPES || (AST_NODE_TYPES = {}));\n\nvar STORAGE_CLASS;\n\n(function (STORAGE_CLASS) {\n STORAGE_CLASS[\"Input\"] = \"Input\";\n STORAGE_CLASS[\"Output\"] = \"Output\";\n STORAGE_CLASS[\"Uniform\"] = \"Uniform\";\n STORAGE_CLASS[\"Workgroup\"] = \"Workgroup\";\n STORAGE_CLASS[\"UniformConstant\"] = \"UniformConstant\";\n STORAGE_CLASS[\"Image\"] = \"Image\";\n STORAGE_CLASS[\"StorageBuffer\"] = \"StorageBuffer\";\n STORAGE_CLASS[\"Private\"] = \"Private\";\n STORAGE_CLASS[\"Function\"] = \"Function\";\n})(STORAGE_CLASS || (STORAGE_CLASS = {}));\n\n/**\n * 根据目标平台生成 Shader 代码\n * * WebGL GLSL 1.0\n * * WebGPU Chrome/Edge GLSL 4.5 & WGSL @see https://gpuweb.github.io/gpuweb/wgsl.html\n * * Safari WHLSL (maybe deprecated)\n */\nvar Target;\n\n(function (Target) {\n Target[\"GLSL100\"] = \"GLSL100\";\n Target[\"GLSL450\"] = \"GLSL450\";\n Target[\"WGSL\"] = \"WGSL\";\n})(Target || (Target = {}));\n\nvar DefineValuePlaceholder = '__DefineValuePlaceholder__';\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcz9kOGY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDMEI7QUFDdUM7QUFDQztBQUNVO0FBQ2Q7QUFDYztBQUNkO0FBQ1U7QUFDUjtBQUNWO0FBQzJCO0FBQ25CO0FBQ2tCO0FBQ2Q7QUFDYztBQUN4QztBQUNFO0FBQ3dEO0FBQzFDO0FBQ1o7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDBDQUEwQzs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdDQUF3Qzs7QUFFekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdCQUF3Qjs7QUFFekI7QUFDbUM7QUFDUjtBQUNIO0FBQ2M7QUFDVTtBQUNKO0FBQ047QUFFaVE7QUFDdlMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWZlcmVuY2Vcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2luZGV4LmQudHNcIiAvPlxuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vQ29tcG9uZW50TWFuYWdlcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7XG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9NYXRlcmlhbENvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbFN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ3VsbGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9DdWxsYWJsZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvU3lzdGVtJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyZXJTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtJztcbmltcG9ydCB7IEhpZXJhcmNoeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY2VuZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IFRyYW5zZm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudCc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuL0VudGl0eSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCB9IGZyb20gJy4vaW52ZXJzaWZ5LmNvbmZpZyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMgfSBmcm9tICcuL3V0aWxzL2FhYmInO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuL3V0aWxzL2lzU2FmYXJpJztcbi8qKlxuICogaW5zcGlyZWQgYnkgRW50aXRhcycgU3lzdGVtc1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vc3NjaG1pZC9FbnRpdGFzLUNTaGFycC93aWtpL1N5c3RlbXNcbiAqL1xuXG52YXIgQVNUX1RPS0VOX1RZUEVTO1xuXG4oZnVuY3Rpb24gKEFTVF9UT0tFTl9UWVBFUykge1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWb2lkXCJdID0gXCJWb2lkXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkJvb2xlYW5cIl0gPSBcIkJvb2xlYW5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiRmxvYXRcIl0gPSBcIkZsb2F0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlVpbnQzMlwiXSA9IFwiVWludDMyXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkludDMyXCJdID0gXCJJbnQzMlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3JcIl0gPSBcIlZlY3RvclwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyRmxvYXRcIl0gPSBcInZlYzI8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzRmxvYXRcIl0gPSBcInZlYzM8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0RmxvYXRcIl0gPSBcInZlYzQ8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyQm9vbGVhblwiXSA9IFwidmVjMjxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzQm9vbGVhblwiXSA9IFwidmVjMzxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0Qm9vbGVhblwiXSA9IFwidmVjNDxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyVWludFwiXSA9IFwidmVjMjx1MzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjNVaW50XCJdID0gXCJ2ZWMzPHUzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNFVpbnRcIl0gPSBcInZlYzQ8dTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IySW50XCJdID0gXCJ2ZWMyPGkzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yM0ludFwiXSA9IFwidmVjMzxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjRJbnRcIl0gPSBcInZlYzQ8aTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXhcIl0gPSBcIk1hdHJpeFwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXgzeDNGbG9hdFwiXSA9IFwibWF0M3gzPGYzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiTWF0cml4NHg0RmxvYXRcIl0gPSBcIm1hdDR4NDxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlN0cnVjdFwiXSA9IFwiU3RydWN0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkZsb2F0QXJyYXlcIl0gPSBcIkZsb2F0W11cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNEZsb2F0QXJyYXlcIl0gPSBcInZlYzQ8ZjMyPltdXCI7XG59KShBU1RfVE9LRU5fVFlQRVMgfHwgKEFTVF9UT0tFTl9UWVBFUyA9IHt9KSk7XG5cbnZhciBBU1RfTk9ERV9UWVBFUztcblxuKGZ1bmN0aW9uIChBU1RfTk9ERV9UWVBFUykge1xuICBBU1RfTk9ERV9UWVBFU1tcIlByb2dyYW1cIl0gPSBcIlByb2dyYW1cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJJZGVudGlmaWVyXCJdID0gXCJJZGVudGlmaWVyXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVmFyaWFibGVEZWNsYXJhdGlvblwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkJsb2NrU3RhdGVtZW50XCJdID0gXCJCbG9ja1N0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlJldHVyblN0YXRlbWVudFwiXSA9IFwiUmV0dXJuU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25EZWNsYXJhdGlvblwiXSA9IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlZhcmlhYmxlRGVjbGFyYXRvclwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdG9yXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQXNzaWdubWVudEV4cHJlc3Npb25cIl0gPSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTG9naWNhbEV4cHJlc3Npb25cIl0gPSBcIkxvZ2ljYWxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQmluYXJ5RXhwcmVzc2lvblwiXSA9IFwiQmluYXJ5RXhwcmVzc2lvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkFycmF5RXhwcmVzc2lvblwiXSA9IFwiQXJyYXlFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVW5hcnlFeHByZXNzaW9uXCJdID0gXCJVbmFyeUV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJVcGRhdGVFeHByZXNzaW9uXCJdID0gXCJVcGRhdGVFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25FeHByZXNzaW9uXCJdID0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJNZW1iZXJFeHByZXNzaW9uXCJdID0gXCJNZW1iZXJFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCJdID0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJFeHByZXNzaW9uU3RhdGVtZW50XCJdID0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ2FsbEV4cHJlc3Npb25cIl0gPSBcIkNhbGxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTnVtVGhyZWFkU3RhdGVtZW50XCJdID0gXCJOdW1UaHJlYWRTdGF0ZW1lbnRcIjtcbiAgQVNUX05PREVfVFlQRVNbXCJTdG9yYWdlU3RhdGVtZW50XCJdID0gXCJTdG9yYWdlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRG9XaGlsZVN0YXRlbWVudFwiXSA9IFwiRG9XaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIldoaWxlU3RhdGVtZW50XCJdID0gXCJXaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkZvclN0YXRlbWVudFwiXSA9IFwiRm9yU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQnJlYWtTdGF0ZW1lbnRcIl0gPSBcIkJyZWFrU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29udGludWVTdGF0ZW1lbnRcIl0gPSBcIkNvbnRpbnVlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSWZTdGF0ZW1lbnRcIl0gPSBcIklmU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiXSA9IFwiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiO1xufSkoQVNUX05PREVfVFlQRVMgfHwgKEFTVF9OT0RFX1RZUEVTID0ge30pKTtcblxudmFyIFNUT1JBR0VfQ0xBU1M7XG5cbihmdW5jdGlvbiAoU1RPUkFHRV9DTEFTUykge1xuICBTVE9SQUdFX0NMQVNTW1wiSW5wdXRcIl0gPSBcIklucHV0XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJPdXRwdXRcIl0gPSBcIk91dHB1dFwiO1xuICBTVE9SQUdFX0NMQVNTW1wiVW5pZm9ybVwiXSA9IFwiVW5pZm9ybVwiO1xuICBTVE9SQUdFX0NMQVNTW1wiV29ya2dyb3VwXCJdID0gXCJXb3JrZ3JvdXBcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlVuaWZvcm1Db25zdGFudFwiXSA9IFwiVW5pZm9ybUNvbnN0YW50XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJJbWFnZVwiXSA9IFwiSW1hZ2VcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlN0b3JhZ2VCdWZmZXJcIl0gPSBcIlN0b3JhZ2VCdWZmZXJcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlByaXZhdGVcIl0gPSBcIlByaXZhdGVcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIkZ1bmN0aW9uXCJdID0gXCJGdW5jdGlvblwiO1xufSkoU1RPUkFHRV9DTEFTUyB8fCAoU1RPUkFHRV9DTEFTUyA9IHt9KSk7XG5cbi8qKlxuICog5qC55o2u55uu5qCH5bmz5Y+w55Sf5oiQIFNoYWRlciDku6PnoIFcbiAqICogV2ViR0wgR0xTTCAxLjBcbiAqICogV2ViR1BVIENocm9tZS9FZGdlIEdMU0wgNC41ICYgV0dTTCBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvd2dzbC5odG1sXG4gKiAqIFNhZmFyaSBXSExTTCAobWF5YmUgZGVwcmVjYXRlZClcbiAqL1xudmFyIFRhcmdldDtcblxuKGZ1bmN0aW9uIChUYXJnZXQpIHtcbiAgVGFyZ2V0W1wiR0xTTDEwMFwiXSA9IFwiR0xTTDEwMFwiO1xuICBUYXJnZXRbXCJHTFNMNDUwXCJdID0gXCJHTFNMNDUwXCI7XG4gIFRhcmdldFtcIldHU0xcIl0gPSBcIldHU0xcIjtcbn0pKFRhcmdldCB8fCAoVGFyZ2V0ID0ge30pKTtcblxudmFyIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgPSAnX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX18nO1xuZXhwb3J0ICogZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3JlbmRlcmVyJztcbmV4cG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCwgY3JlYXRlRW50aXR5LCBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIElERU5USUZJRVIsIEZyYW1lR3JhcGhTeXN0ZW0sIEdlb21ldHJ5U3lzdGVtLCBSZW5kZXJlclN5c3RlbSAvLyBJbnRlcmFjdGlvblN5c3RlbSxcbiwgTWF0ZXJpYWxTeXN0ZW0sIE1lc2hTeXN0ZW0sIFNjZW5lR3JhcGhTeXN0ZW0sIEN1bGxhYmxlQ29tcG9uZW50LCBNZXNoQ29tcG9uZW50LCBUcmFuc2Zvcm1Db21wb25lbnQsIE1hdGVyaWFsQ29tcG9uZW50LCBHZW9tZXRyeUNvbXBvbmVudCwgSGllcmFyY2h5Q29tcG9uZW50LCBpc1NhZmFyaSwgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzLCBQaXhlbFBpY2tpbmdQYXNzLCBBU1RfVE9LRU5fVFlQRVMsIEFTVF9OT0RFX1RZUEVTLCBTVE9SQUdFX0NMQVNTLCBUYXJnZXQsIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js": /*!********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js ***! \********************************************************************************************/ /*! exports provided: container, lazyInject, lazyMultiInject, createWorldContainer */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return container; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return lazyInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return lazyMultiInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return createWorldContainer; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify-inject-decorators */ \"./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/index.js\");\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/framegraph/ResourcePool */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\");\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony import */ var _components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/renderer/passes/CopyPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/renderer/passes/RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony import */ var _components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/scenegraph/NameComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\");\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./services/config/ConfigService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony import */ var _services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./services/interactor/IteractorService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony import */ var _services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./services/shader-module/ShaderModuleService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/**\n * Root Container\n * @see /dev-docs/IoC 容器、依赖注入与服务说明.md\n */\n\n\n\n\n\n\n\n // import { InteractionSystem } from './components/interaction/System';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // @see https://github.com/inversify/InversifyJS/blob/master/wiki/container_api.md#defaultscope\n\nvar container = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"](); // @see https://github.com/inversify/InversifyJS/blob/master/wiki/inheritance.md#what-can-i-do-when-my-base-class-is-provided-by-a-third-party-module\n// decorate(injectable(), EventEmitter);\n// container.bind(IDENTIFIER.IEventEmitter).to(EventEmitter);\n// 支持使用 new 而非容器实例化的场景,同时禁止 lazyInject cache\n// @see https://github.com/inversify/inversify-inject-decorators#caching-vs-non-caching-behaviour\n\nvar DECORATORS = inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default()(container, false);\n// Add babel legacy decorators support\n// @see https://github.com/inversify/InversifyJS/issues/1050\n// @see https://github.com/inversify/InversifyJS/issues/1026#issuecomment-504936034\nvar lazyInject = function lazyInject(serviceIdentifier) {\n var original = DECORATORS.lazyInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key); // return link to proto, so own value wont be 'undefined' after component's creation\n\n if (descriptor) {\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\nvar lazyMultiInject = function lazyMultiInject(serviceIdentifier) {\n var original = DECORATORS.lazyMultiInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key);\n\n if (descriptor) {\n // return link to proto, so own value wont be 'undefined' after component's creation\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\n/** global services */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ShaderModuleService).to(_services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__[\"default\"]).inSingletonScope();\n/**\n * bind global component managers in root container\n */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].NameComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__[\"NameComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].HierarchyComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__[\"HierarchyComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].TransformComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__[\"TransformComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__[\"MeshComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].CullableComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__[\"CullableComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometryComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__[\"GeometryComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__[\"MaterialComponent\"])); // https://github.com/inversify/InversifyJS/blob/master/wiki/hierarchical_di.md#support-for-hierarchical-di-systems\n\nfunction createWorldContainer() {\n var worldContainer = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"]();\n worldContainer.parent = container;\n /**\n * bind systems\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__[\"SceneGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].SceneGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__[\"FrameGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].FrameGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_mesh_System__WEBPACK_IMPORTED_MODULE_12__[\"MeshSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_geometry_System__WEBPACK_IMPORTED_MODULE_7__[\"GeometrySystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometrySystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_material_System__WEBPACK_IMPORTED_MODULE_9__[\"MaterialSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_renderer_System__WEBPACK_IMPORTED_MODULE_16__[\"RendererSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RendererSystem); // 资源池\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ResourcePool).to(_components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__[\"ResourcePool\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ConfigService).to(_services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__[\"ConfigService\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].InteractorService).to(_services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__[\"InteractorService\"]).inSingletonScope();\n /**\n * bind render passes\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPassFactory).toFactory(function (context) {\n return function (name) {\n return context.container.getNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass, name);\n };\n });\n return worldContainer;\n}\n//# sourceMappingURL=inversify.config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzP2ZhMzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMEI7QUFDWTtBQUNrQjtBQUNGO0FBQ2M7QUFDRjtBQUNVO0FBQ2QsWUFBWSxvQkFBb0I7O0FBRWxCO0FBQ2Q7QUFDVTtBQUNSO0FBQ1Y7QUFDVztBQUNnQjtBQUNaO0FBQ1A7QUFDa0I7QUFDVjtBQUNKO0FBQ2M7QUFDdEM7QUFDc0I7QUFDVztBQUNJOztBQUV4RSxvQkFBb0IsbURBQVMsR0FBRztBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0VBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ087QUFDUCwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtEQUErRDtBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsdURBQVUseUJBQXlCLG9GQUFtQjtBQUNyRTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSx1REFBVSwyQ0FBMkMsa0VBQWdCLENBQUMsbUZBQWE7QUFDbEcsZUFBZSx1REFBVSxnREFBZ0Qsa0VBQWdCLENBQUMsNkZBQWtCO0FBQzVHLGVBQWUsdURBQVUsZ0RBQWdELGtFQUFnQixDQUFDLDZGQUFrQjtBQUM1RyxlQUFlLHVEQUFVLDJDQUEyQyxrRUFBZ0IsQ0FBQyw2RUFBYTtBQUNsRyxlQUFlLHVEQUFVLCtDQUErQyxrRUFBZ0IsQ0FBQyxxRkFBaUI7QUFDMUcsZUFBZSx1REFBVSwrQ0FBK0Msa0VBQWdCLENBQUMsd0ZBQWlCO0FBQzFHLGVBQWUsdURBQVUsK0NBQStDLGtFQUFnQixDQUFDLHdGQUFpQixHQUFHOztBQUV0RztBQUNQLDJCQUEyQixtREFBUztBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsYUFBYSwrRUFBZ0IscUNBQXFDLHVEQUFVO0FBQzVHLHNCQUFzQix1REFBVSxhQUFhLDhFQUFnQixxQ0FBcUMsdURBQVU7QUFDNUcsc0JBQXNCLHVEQUFVLGFBQWEsbUVBQVUscUNBQXFDLHVEQUFVO0FBQ3RHLHNCQUFzQix1REFBVSxhQUFhLDBFQUFjLHFDQUFxQyx1REFBVTtBQUMxRyxzQkFBc0IsdURBQVUsYUFBYSwwRUFBYyxxQ0FBcUMsdURBQVU7QUFDMUcsc0JBQXNCLHVEQUFVLGFBQWEsMkVBQWMscUNBQXFDLHVEQUFVLGlCQUFpQjs7QUFFM0gsc0JBQXNCLHVEQUFVLGtCQUFrQixnRkFBWTtBQUM5RCxzQkFBc0IsdURBQVUsbUJBQW1CLDZFQUFhO0FBQ2hFLHNCQUFzQix1REFBVSx1QkFBdUIsd0ZBQWlCO0FBQ3hFO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsZ0JBQWdCLGtGQUFVLHFDQUFxQyxrRkFBVTtBQUN6RyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhFQUFRLHFDQUFxQyw4RUFBUTtBQUNyRyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhGQUFnQixxQ0FBcUMsOEZBQWdCO0FBQ3JILHNCQUFzQix1REFBVTtBQUNoQztBQUNBLHdDQUF3Qyx1REFBVTtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSb290IENvbnRhaW5lclxuICogQHNlZSAvZGV2LWRvY3MvSW9DIOWuueWZqOOAgeS+nei1luazqOWFpeS4juacjeWKoeivtOaYji5tZFxuICovXG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCBnZXREZWNvcmF0b3JzIGZyb20gJ2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IFJlc291cmNlUG9vbCB9IGZyb20gJy4vY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbCc7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7IC8vIGltcG9ydCB7IEludGVyYWN0aW9uU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ludGVyYWN0aW9uL1N5c3RlbSc7XG5cbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbSc7XG5pbXBvcnQgeyBDdWxsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZXNoL0N1bGxhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ29weVBhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUmVuZGVyUGFzcyc7XG5pbXBvcnQgeyBSZW5kZXJlclN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9TeXN0ZW0nO1xuaW1wb3J0IHsgSGllcmFyY2h5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50JztcbmltcG9ydCB7IE5hbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9OYW1lQ29tcG9uZW50JztcbmltcG9ydCB7IFNjZW5lR3JhcGhTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0nO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnL0NvbmZpZ1NlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJhY3RvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZSc7XG5pbXBvcnQgU2hhZGVyTW9kdWxlU2VydmljZSBmcm9tICcuL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvU2hhZGVyTW9kdWxlU2VydmljZSc7IC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2NvbnRhaW5lcl9hcGkubWQjZGVmYXVsdHNjb3BlXG5cbmV4cG9ydCB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpOyAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvYmxvYi9tYXN0ZXIvd2lraS9pbmhlcml0YW5jZS5tZCN3aGF0LWNhbi1pLWRvLXdoZW4tbXktYmFzZS1jbGFzcy1pcy1wcm92aWRlZC1ieS1hLXRoaXJkLXBhcnR5LW1vZHVsZVxuLy8gZGVjb3JhdGUoaW5qZWN0YWJsZSgpLCBFdmVudEVtaXR0ZXIpO1xuLy8gY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5JRXZlbnRFbWl0dGVyKS50byhFdmVudEVtaXR0ZXIpO1xuLy8g5pSv5oyB5L2/55SoIG5ldyDogIzpnZ7lrrnlmajlrp7kvovljJbnmoTlnLrmma/vvIzlkIzml7bnpoHmraIgbGF6eUluamVjdCBjYWNoZVxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyNjYWNoaW5nLXZzLW5vbi1jYWNoaW5nLWJlaGF2aW91clxuXG52YXIgREVDT1JBVE9SUyA9IGdldERlY29yYXRvcnMoY29udGFpbmVyLCBmYWxzZSk7XG4vLyBBZGQgYmFiZWwgbGVnYWN5IGRlY29yYXRvcnMgc3VwcG9ydFxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L0ludmVyc2lmeUpTL2lzc3Vlcy8xMDUwXG4vLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvaXNzdWVzLzEwMjYjaXNzdWVjb21tZW50LTUwNDkzNjAzNFxuZXhwb3J0IHZhciBsYXp5SW5qZWN0ID0gZnVuY3Rpb24gbGF6eUluamVjdChzZXJ2aWNlSWRlbnRpZmllcikge1xuICB2YXIgb3JpZ2luYWwgPSBERUNPUkFUT1JTLmxhenlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7IC8vIHJldHVybiBsaW5rIHRvIHByb3RvLCBzbyBvd24gdmFsdWUgd29udCBiZSAndW5kZWZpbmVkJyBhZnRlciBjb21wb25lbnQncyBjcmVhdGlvblxuXG4gICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgIGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwcm90b1trZXldO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuZXhwb3J0IHZhciBsYXp5TXVsdGlJbmplY3QgPSBmdW5jdGlvbiBsYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgdmFyIG9yaWdpbmFsID0gREVDT1JBVE9SUy5sYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7XG5cbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgLy8gcmV0dXJuIGxpbmsgdG8gcHJvdG8sIHNvIG93biB2YWx1ZSB3b250IGJlICd1bmRlZmluZWQnIGFmdGVyIGNvbXBvbmVudCdzIGNyZWF0aW9uXG4gICAgICBkZXNjcmlwdG9yLmluaXRpYWxpemVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcHJvdG9ba2V5XTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKiBnbG9iYWwgc2VydmljZXMgKi9cblxuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKS50byhTaGFkZXJNb2R1bGVTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4vKipcbiAqIGJpbmQgZ2xvYmFsIGNvbXBvbmVudCBtYW5hZ2VycyBpbiByb290IGNvbnRhaW5lclxuICovXG5cbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTmFtZUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihOYW1lQ29tcG9uZW50KSk7XG5jb250YWluZXIuYmluZChJREVOVElGSUVSLkhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihIaWVyYXJjaHlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKFRyYW5zZm9ybUNvbXBvbmVudCkpO1xuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKE1lc2hDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoQ3VsbGFibGVDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoR2VvbWV0cnlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoTWF0ZXJpYWxDb21wb25lbnQpKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2hpZXJhcmNoaWNhbF9kaS5tZCNzdXBwb3J0LWZvci1oaWVyYXJjaGljYWwtZGktc3lzdGVtc1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGRDb250YWluZXIoKSB7XG4gIHZhciB3b3JsZENvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTtcbiAgd29ybGRDb250YWluZXIucGFyZW50ID0gY29udGFpbmVyO1xuICAvKipcbiAgICogYmluZCBzeXN0ZW1zXG4gICAqL1xuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhTY2VuZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuU2NlbmVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhGcmFtZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhNZXNoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWVzaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhHZW9tZXRyeVN5c3RlbSkuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlN5c3RlbXMpLnRvKE1hdGVyaWFsU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuU3lzdGVtcykudG8oUmVuZGVyZXJTeXN0ZW0pLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoSURFTlRJRklFUi5SZW5kZXJlclN5c3RlbSk7IC8vIOi1hOa6kOaxoFxuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLnRvKFJlc291cmNlUG9vbCkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ29uZmlnU2VydmljZSkudG8oQ29uZmlnU2VydmljZSkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuSW50ZXJhY3RvclNlcnZpY2UpLnRvKEludGVyYWN0b3JTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4gIC8qKlxuICAgKiBiaW5kIHJlbmRlciBwYXNzZXNcbiAgICovXG5cbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKFJlbmRlclBhc3MpLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoUmVuZGVyUGFzcy5JREVOVElGSUVSKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKENvcHlQYXNzKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKENvcHlQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzcykudG8oUGl4ZWxQaWNraW5nUGFzcykuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLnRvRmFjdG9yeShmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuUmVuZGVyUGFzcywgbmFtZSk7XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB3b3JsZENvbnRhaW5lcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludmVyc2lmeS5jb25maWcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js": /*!*********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js ***! \*********************************************************************************************************/ /*! exports provided: ConfigService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return ConfigService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar ConfigService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ConfigService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConfigService);\n\n this.config = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ConfigService, [{\n key: \"get\",\n value: function get() {\n return this.config;\n }\n }, {\n key: \"set\",\n value: function set(config) {\n this.config = config;\n }\n }]);\n\n return ConfigService;\n}(), _temp)) || _class);\n//# sourceMappingURL=ConfigService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvQ29uZmlnU2VydmljZS5qcz83ZThlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDLDRCQUE0Qiw0REFBVTtBQUM3QztBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9Db25maWdTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIENvbmZpZ1NlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDb25maWdTZXJ2aWNlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25maWdTZXJ2aWNlKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbmZpZ1NlcnZpY2UsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29uZmlnU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29uZmlnU2VydmljZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js": /*!*************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js ***! \*************************************************************************************************/ /*! exports provided: ConfigService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ConfigService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ConfigService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _ConfigService__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvaW5kZXguanM/YTAwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFnQztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ29uZmlnU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js ***! \******************************************************************************************/ /*! exports provided: ConfigService, IInteractorEvent, InteractorService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n/* harmony import */ var _interactor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interactor */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"InteractorService\"]; });\n\n/* harmony import */ var _shader_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shader-module */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbmRleC5qcz80YmQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsd0NBQXlCO0FBQ0k7QUFDRztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmFjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhZGVyLW1vZHVsZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js": /*!****************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js ***! \****************************************************************************************************************/ /*! exports provided: IInteractorEvent, InteractorService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return IInteractorEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return InteractorService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class;\n\n\nvar IInteractorEvent;\n\n(function (IInteractorEvent) {\n IInteractorEvent[\"PANSTART\"] = \"PANSTART\";\n IInteractorEvent[\"PANEND\"] = \"PANEND\";\n IInteractorEvent[\"PANMOVE\"] = \"PANMOVE\";\n IInteractorEvent[\"PINCH\"] = \"PINCH\";\n IInteractorEvent[\"KEYDOWN\"] = \"KEYDOWN\";\n IInteractorEvent[\"KEYUP\"] = \"KEYUP\";\n IInteractorEvent[\"HOVER\"] = \"HOVER\";\n})(IInteractorEvent || (IInteractorEvent = {}));\n\nvar InteractorService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function () {\n function InteractorService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, InteractorService);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(InteractorService, [{\n key: \"listen\",\n value: function listen(canvas) {}\n }, {\n key: \"on\",\n value: function on(event, args) {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n\n return InteractorService;\n}()) || _class);\n//# sourceMappingURL=IteractorService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL0l0ZXJhY3RvclNlcnZpY2UuanM/ZjE1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRDQUE0Qzs7QUFFdEMsZ0NBQWdDLDREQUFVO0FBQ2pEO0FBQ0EsSUFBSSw0RUFBZTtBQUNuQjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcztcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIElJbnRlcmFjdG9yRXZlbnQ7XG5cbihmdW5jdGlvbiAoSUludGVyYWN0b3JFdmVudCkge1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcIlBBTlNUQVJUXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJQQU5FTkRcIl0gPSBcIlBBTkVORFwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOTU9WRVwiXSA9IFwiUEFOTU9WRVwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUElOQ0hcIl0gPSBcIlBJTkNIXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlET1dOXCJdID0gXCJLRVlET1dOXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlVUFwiXSA9IFwiS0VZVVBcIjtcbiAgSUludGVyYWN0b3JFdmVudFtcIkhPVkVSXCJdID0gXCJIT1ZFUlwiO1xufSkoSUludGVyYWN0b3JFdmVudCB8fCAoSUludGVyYWN0b3JFdmVudCA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgSW50ZXJhY3RvclNlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJbnRlcmFjdG9yU2VydmljZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZXJhY3RvclNlcnZpY2UpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEludGVyYWN0b3JTZXJ2aWNlLCBbe1xuICAgIGtleTogXCJsaXN0ZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGlzdGVuKGNhbnZhcykge31cbiAgfSwge1xuICAgIGtleTogXCJvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbihldmVudCwgYXJncykge31cbiAgfSwge1xuICAgIGtleTogXCJjb25uZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbm5lY3QoKSB7fVxuICB9LCB7XG4gICAga2V5OiBcImRpc2Nvbm5lY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY29ubmVjdCgpIHt9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge31cbiAgfV0pO1xuXG4gIHJldHVybiBJbnRlcmFjdG9yU2VydmljZTtcbn0oKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUl0ZXJhY3RvclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js ***! \*****************************************************************************************************/ /*! exports provided: IInteractorEvent, InteractorService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IteractorService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IteractorService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"InteractorService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL2luZGV4LmpzP2MwZTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvaW50ZXJhY3Rvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vSXRlcmFjdG9yU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js": /*!**********************************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js ***! \**********************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ShaderModuleService; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_shader_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/shader-module */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js\");\n/* harmony import */ var _utils_uniq__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/uniq */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js\");\n\n\n\n\nvar _dec, _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.picking.frag.glsl' */\nvar pickingFrag = \"varying vec4 v_PickingResult;\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\n/*\\n * Returns highlight color if this item is selected.\\n */\\nvec4 filterHighlightColor(vec4 color) {\\n bool selected = bool(v_PickingResult.a);\\n\\n if (selected) {\\n vec4 highLightColor = u_HighlightColor * COLOR_SCALE;\\n\\n float highLightAlpha = highLightColor.a;\\n float highLightRatio = highLightAlpha / (highLightAlpha + color.a * (1.0 - highLightAlpha));\\n\\n vec3 resultRGB = mix(color.rgb, highLightColor.rgb, highLightRatio);\\n return vec4(resultRGB, color.a);\\n } else {\\n return color;\\n }\\n}\\n\\n/*\\n * Returns picking color if picking enabled else unmodified argument.\\n */\\nvec4 filterPickingColor(vec4 color) {\\n vec3 pickingColor = v_PickingResult.rgb;\\n if (u_PickingStage == PICKING_ENCODE && length(pickingColor) < 0.001) {\\n discard;\\n }\\n return u_PickingStage == PICKING_ENCODE ? vec4(pickingColor, step(0.001,color.a)): color;\\n}\\n\\n/*\\n * Returns picking color if picking is enabled if not\\n * highlight color if this item is selected, otherwise unmodified argument.\\n */\\nvec4 filterColor(vec4 color) {\\n return filterPickingColor(filterHighlightColor(color));\\n}\\n\";\n\n/* babel-plugin-inline-import './shaders/webgl.picking.vert.glsl' */\nvar pickingVert = \"attribute vec3 a_PickingColor;\\nvarying vec4 v_PickingResult;\\n\\nuniform vec3 u_PickingColor : [0, 0, 0];\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\nuniform float u_PickingThreshold : 1.0;\\nuniform float u_PickingBuffer: 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n return\\n abs(vertexColor.r - u_PickingColor.r) < u_PickingThreshold &&\\n abs(vertexColor.g - u_PickingColor.g) < u_PickingThreshold &&\\n abs(vertexColor.b - u_PickingColor.b) < u_PickingThreshold;\\n}\\n\\nvoid setPickingColor(vec3 pickingColor) {\\n // compares only in highlight stage\\n v_PickingResult.a = float((u_PickingStage == PICKING_HIGHLIGHT) && isVertexPicked(pickingColor));\\n\\n // Stores the picking color so that the fragment shader can render it during picking\\n v_PickingResult.rgb = pickingColor * COLOR_SCALE;\\n}\\n\\nfloat setPickingSize(float x) {\\n return u_PickingStage == PICKING_ENCODE ? x + u_PickingBuffer : x;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.sdf2d.frag.glsl' */\nvar sdf2dFrag = \"/**\\n * 2D signed distance field functions\\n * @see http://www.iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm\\n */\\n\\nfloat ndot(vec2 a, vec2 b ) { return a.x*b.x - a.y*b.y; }\\n\\nfloat sdCircle(vec2 p, float r) {\\n return length(p) - r;\\n}\\n\\nfloat sdEquilateralTriangle(vec2 p) {\\n float k = sqrt(3.0);\\n p.x = abs(p.x) - 1.0;\\n p.y = p.y + 1.0/k;\\n if( p.x + k*p.y > 0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0;\\n p.x -= clamp( p.x, -2.0, 0.0 );\\n return -length(p)*sign(p.y);\\n}\\n\\nfloat sdBox(vec2 p, vec2 b) {\\n vec2 d = abs(p)-b;\\n return length(max(d,vec2(0))) + min(max(d.x,d.y),0.0);\\n}\\n\\nfloat sdPentagon(vec2 p, float r) {\\n vec3 k = vec3(0.809016994,0.587785252,0.726542528);\\n p.x = abs(p.x);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= vec2(clamp(p.x,-r*k.z,r*k.z),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagon(vec2 p, float r) {\\n vec3 k = vec3(-0.866025404,0.5,0.577350269);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdOctogon(vec2 p, float r) {\\n vec3 k = vec3(-0.9238795325, 0.3826834323, 0.4142135623 );\\n p = abs(p);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagram(vec2 p, float r) {\\n vec4 k=vec4(-0.5,0.8660254038,0.5773502692,1.7320508076);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= 2.0*min(dot(k.yx,p),0.0)*k.yx;\\n p -= vec2(clamp(p.x,r*k.z,r*k.w),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdRhombus(vec2 p, vec2 b) {\\n vec2 q = abs(p);\\n float h = clamp((-2.0*ndot(q,b)+ndot(b,b))/dot(b,b),-1.0,1.0);\\n float d = length( q - 0.5*b*vec2(1.0-h,1.0+h) );\\n return d * sign( q.x*b.y + q.y*b.x - b.x*b.y );\\n}\\n\\nfloat sdVesica(vec2 p, float r, float d) {\\n p = abs(p);\\n float b = sqrt(r*r-d*d); // can delay this sqrt\\n return ((p.y-b)*d>p.x*b)\\n ? length(p-vec2(0.0,b))\\n : length(p-vec2(-d,0.0))-r;\\n}\";\nvar precisionRegExp = /precision\\s+(high|low|medium)p\\s+float/;\nvar globalDefaultprecision = '#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n #else\\n precision mediump float;\\n#endif\\n';\nvar includeRegExp = /#pragma include ([\"^+\"]?[\"\\ \"[a-zA-Z_0-9](.*)\"]*?)/g;\nvar ShaderModuleService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_3__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ShaderModuleService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ShaderModuleService);\n\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ShaderModuleService, [{\n key: \"registerBuiltinModules\",\n value: function registerBuiltinModules() {\n this.destroy();\n this.registerModule('picking', {\n vs: pickingVert,\n fs: pickingFrag\n });\n this.registerModule('sdf2d', {\n vs: '',\n fs: sdf2dFrag\n });\n }\n }, {\n key: \"registerModule\",\n value: function registerModule(moduleName, moduleParams) {\n // prevent registering the same module multiple times\n if (this.rawContentCache[moduleName]) {\n return;\n }\n\n var _moduleParams$vs = moduleParams.vs,\n vs = _moduleParams$vs === void 0 ? '' : _moduleParams$vs,\n _moduleParams$fs = moduleParams.fs,\n fs = _moduleParams$fs === void 0 ? '' : _moduleParams$fs,\n declaredUniforms = moduleParams.uniforms;\n\n var _extractUniforms = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(vs),\n extractedVS = _extractUniforms.content,\n vsUniforms = _extractUniforms.uniforms;\n\n var _extractUniforms2 = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(fs),\n extractedFS = _extractUniforms2.content,\n fsUniforms = _extractUniforms2.uniforms;\n\n this.rawContentCache[moduleName] = {\n fs: extractedFS,\n uniforms: _objectSpread(_objectSpread(_objectSpread({}, vsUniforms), fsUniforms), declaredUniforms),\n vs: extractedVS\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n }, {\n key: \"getModule\",\n value: function getModule(moduleName) {\n var _this = this;\n\n if (this.moduleCache[moduleName]) {\n return this.moduleCache[moduleName];\n }\n\n var rawVS = this.rawContentCache[moduleName].vs || '';\n var rawFS = this.rawContentCache[moduleName].fs || '';\n\n var _this$processModule = this.processModule(rawVS, [], 'vs'),\n vs = _this$processModule.content,\n vsIncludeList = _this$processModule.includeList;\n\n var _this$processModule2 = this.processModule(rawFS, [], 'fs'),\n fs = _this$processModule2.content,\n fsIncludeList = _this$processModule2.includeList;\n\n var compiledFs = fs; // TODO: extract uniforms and their default values from GLSL\n\n var uniforms = Object(_utils_uniq__WEBPACK_IMPORTED_MODULE_5__[\"uniq\"])(vsIncludeList.concat(fsIncludeList).concat(moduleName)).reduce(function (prev, cur) {\n return _objectSpread(_objectSpread({}, prev), _this.rawContentCache[cur].uniforms);\n }, {});\n /**\n * set default precision for fragment shader\n * https://stackoverflow.com/questions/28540290/why-it-is-necessary-to-set-precision-for-the-fragment-shader\n */\n\n if (!precisionRegExp.test(fs)) {\n compiledFs = globalDefaultprecision + fs;\n }\n\n this.moduleCache[moduleName] = {\n fs: compiledFs.trim(),\n uniforms: uniforms,\n vs: vs.trim()\n };\n return this.moduleCache[moduleName];\n }\n }, {\n key: \"processModule\",\n value: function processModule(rawContent, includeList, type) {\n var _this2 = this;\n\n var compiled = rawContent.replace(includeRegExp, function (_, strMatch) {\n var includeOpt = strMatch.split(' ');\n var includeName = includeOpt[0].replace(/\"/g, '');\n\n if (includeList.indexOf(includeName) > -1) {\n return '';\n }\n\n var txt = _this2.rawContentCache[includeName][type];\n includeList.push(includeName);\n\n var _this2$processModule = _this2.processModule(txt || '', includeList, type),\n content = _this2$processModule.content;\n\n return content;\n });\n return {\n content: compiled,\n includeList: includeList\n };\n }\n }]);\n\n return ShaderModuleService;\n}(), _temp)) || _class);\n\n//# sourceMappingURL=ShaderModuleService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL1NoYWRlck1vZHVsZVNlcnZpY2UuanM/NmU2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOOztBQUU5RDs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRTdlO0FBQ3FCO0FBQ3BCOztBQUV4QztBQUNBLGdEQUFnRCwrQ0FBK0MscUNBQXFDLHNNQUFzTSw0Q0FBNEMscUJBQXFCLDJEQUEyRCxnREFBZ0Qsa0dBQWtHLDRFQUE0RSxzQ0FBc0MsS0FBSyxPQUFPLG1CQUFtQixLQUFLLEdBQUcseUhBQXlILDRDQUE0QywyRUFBMkUsY0FBYyxLQUFLLDZGQUE2RixHQUFHLCtLQUErSywyREFBMkQsR0FBRzs7QUFFajBDO0FBQ0EsaURBQWlELCtCQUErQiw0Q0FBNEMsK0NBQStDLHFDQUFxQyx5Q0FBeUMscUNBQXFDLHVJQUF1SSxpTkFBaU4sR0FBRyw2Q0FBNkMsNElBQTRJLCtJQUErSSxHQUFHLG1DQUFtQyx1RUFBdUUsR0FBRzs7QUFFampDO0FBQ0EscUxBQXFMLDBCQUEwQixFQUFFLHFDQUFxQyx5QkFBeUIsR0FBRyx5Q0FBeUMsd0JBQXdCLHlCQUF5QixzQkFBc0IsK0RBQStELG1DQUFtQyxnQ0FBZ0MsR0FBRyxpQ0FBaUMsc0JBQXNCLDBEQUEwRCxHQUFHLHVDQUF1Qyx1REFBdUQsbUJBQW1CLDJEQUEyRCwyREFBMkQseUNBQXlDLCtCQUErQixHQUFHLHNDQUFzQyxnREFBZ0QsZUFBZSx1Q0FBdUMsNENBQTRDLCtCQUErQixHQUFHLHNDQUFzQyw4REFBOEQsZUFBZSwyREFBMkQsMkRBQTJELDRDQUE0QywrQkFBK0IsR0FBRyx1Q0FBdUMsNkRBQTZELGVBQWUsdUNBQXVDLHVDQUF1Qyx3Q0FBd0MsK0JBQStCLEdBQUcscUNBQXFDLG9CQUFvQixrRUFBa0Usb0RBQW9ELG1EQUFtRCxHQUFHLDhDQUE4QyxlQUFlLDRCQUE0Qiw2SEFBNkgsR0FBRztBQUN2b0U7QUFDQSx3RkFBd0YsbUNBQW1DO0FBQzNIO0FBQ0Esa0NBQWtDLDREQUFVO0FBQzVDO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUE2Qiw0RUFBZTtBQUM1QztBQUNBOztBQUVBLDhCQUE4Qiw0RUFBZTtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCOztBQUUxQixxQkFBcUIsd0RBQUk7QUFDekIsNkNBQTZDO0FBQzdDLE9BQU8sSUFBSTtBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ3lDO0FBQzFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvc2hhZGVyLW1vZHVsZS9TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgZXh0cmFjdFVuaWZvcm1zIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hhZGVyLW1vZHVsZSc7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvdW5pcSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy5mcmFnLmdsc2wnICovXG52YXIgcGlja2luZ0ZyYWcgPSBcInZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxudW5pZm9ybSB2ZWM0IHVfSGlnaGxpZ2h0Q29sb3IgOiBbMCwgMCwgMCwgMF07XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdTdGFnZSA6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG4vKlxcbiAqIFJldHVybnMgaGlnaGxpZ2h0IGNvbG9yIGlmIHRoaXMgaXRlbSBpcyBzZWxlY3RlZC5cXG4gKi9cXG52ZWM0IGZpbHRlckhpZ2hsaWdodENvbG9yKHZlYzQgY29sb3IpIHtcXG4gIGJvb2wgc2VsZWN0ZWQgPSBib29sKHZfUGlja2luZ1Jlc3VsdC5hKTtcXG5cXG4gIGlmIChzZWxlY3RlZCkge1xcbiAgICB2ZWM0IGhpZ2hMaWdodENvbG9yID0gdV9IaWdobGlnaHRDb2xvciAqIENPTE9SX1NDQUxFO1xcblxcbiAgICBmbG9hdCBoaWdoTGlnaHRBbHBoYSA9IGhpZ2hMaWdodENvbG9yLmE7XFxuICAgIGZsb2F0IGhpZ2hMaWdodFJhdGlvID0gaGlnaExpZ2h0QWxwaGEgLyAoaGlnaExpZ2h0QWxwaGEgKyBjb2xvci5hICogKDEuMCAtIGhpZ2hMaWdodEFscGhhKSk7XFxuXFxuICAgIHZlYzMgcmVzdWx0UkdCID0gbWl4KGNvbG9yLnJnYiwgaGlnaExpZ2h0Q29sb3IucmdiLCBoaWdoTGlnaHRSYXRpbyk7XFxuICAgIHJldHVybiB2ZWM0KHJlc3VsdFJHQiwgY29sb3IuYSk7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gY29sb3I7XFxuICB9XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgZW5hYmxlZCBlbHNlIHVubW9kaWZpZWQgYXJndW1lbnQuXFxuICovXFxudmVjNCBmaWx0ZXJQaWNraW5nQ29sb3IodmVjNCBjb2xvcikge1xcbiAgdmVjMyBwaWNraW5nQ29sb3IgPSB2X1BpY2tpbmdSZXN1bHQucmdiO1xcbiAgaWYgKHVfUGlja2luZ1N0YWdlID09IFBJQ0tJTkdfRU5DT0RFICYmIGxlbmd0aChwaWNraW5nQ29sb3IpIDwgMC4wMDEpIHtcXG4gICAgZGlzY2FyZDtcXG4gIH1cXG4gIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHZlYzQocGlja2luZ0NvbG9yLCBzdGVwKDAuMDAxLGNvbG9yLmEpKTogY29sb3I7XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgaXMgZW5hYmxlZCBpZiBub3RcXG4gKiBoaWdobGlnaHQgY29sb3IgaWYgdGhpcyBpdGVtIGlzIHNlbGVjdGVkLCBvdGhlcndpc2UgdW5tb2RpZmllZCBhcmd1bWVudC5cXG4gKi9cXG52ZWM0IGZpbHRlckNvbG9yKHZlYzQgY29sb3IpIHtcXG4gIHJldHVybiBmaWx0ZXJQaWNraW5nQ29sb3IoZmlsdGVySGlnaGxpZ2h0Q29sb3IoY29sb3IpKTtcXG59XFxuXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy52ZXJ0Lmdsc2wnICovXG52YXIgcGlja2luZ1ZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMzIGFfUGlja2luZ0NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxuXFxudW5pZm9ybSB2ZWMzIHVfUGlja2luZ0NvbG9yIDogWzAsIDAsIDBdO1xcbnVuaWZvcm0gdmVjNCB1X0hpZ2hsaWdodENvbG9yIDogWzAsIDAsIDAsIDBdO1xcbnVuaWZvcm0gZmxvYXQgdV9QaWNraW5nU3RhZ2UgOiAwLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdUaHJlc2hvbGQgOiAxLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdCdWZmZXI6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG5ib29sIGlzVmVydGV4UGlja2VkKHZlYzMgdmVydGV4Q29sb3IpIHtcXG4gIHJldHVyblxcbiAgICBhYnModmVydGV4Q29sb3IuciAtIHVfUGlja2luZ0NvbG9yLnIpIDwgdV9QaWNraW5nVGhyZXNob2xkICYmXFxuICAgIGFicyh2ZXJ0ZXhDb2xvci5nIC0gdV9QaWNraW5nQ29sb3IuZykgPCB1X1BpY2tpbmdUaHJlc2hvbGQgJiZcXG4gICAgYWJzKHZlcnRleENvbG9yLmIgLSB1X1BpY2tpbmdDb2xvci5iKSA8IHVfUGlja2luZ1RocmVzaG9sZDtcXG59XFxuXFxudm9pZCBzZXRQaWNraW5nQ29sb3IodmVjMyBwaWNraW5nQ29sb3IpIHtcXG4gIC8vIGNvbXBhcmVzIG9ubHkgaW4gaGlnaGxpZ2h0IHN0YWdlXFxuICB2X1BpY2tpbmdSZXN1bHQuYSA9IGZsb2F0KCh1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0hJR0hMSUdIVCkgJiYgaXNWZXJ0ZXhQaWNrZWQocGlja2luZ0NvbG9yKSk7XFxuXFxuICAvLyBTdG9yZXMgdGhlIHBpY2tpbmcgY29sb3Igc28gdGhhdCB0aGUgZnJhZ21lbnQgc2hhZGVyIGNhbiByZW5kZXIgaXQgZHVyaW5nIHBpY2tpbmdcXG4gIHZfUGlja2luZ1Jlc3VsdC5yZ2IgPSBwaWNraW5nQ29sb3IgKiBDT0xPUl9TQ0FMRTtcXG59XFxuXFxuZmxvYXQgc2V0UGlja2luZ1NpemUoZmxvYXQgeCkge1xcbiAgIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHggKyB1X1BpY2tpbmdCdWZmZXIgOiB4O1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5zZGYyZC5mcmFnLmdsc2wnICovXG52YXIgc2RmMmRGcmFnID0gXCIvKipcXG4gKiAyRCBzaWduZWQgZGlzdGFuY2UgZmllbGQgZnVuY3Rpb25zXFxuICogQHNlZSBodHRwOi8vd3d3LmlxdWlsZXpsZXMub3JnL3d3dy9hcnRpY2xlcy9kaXN0ZnVuY3Rpb25zMmQvZGlzdGZ1bmN0aW9uczJkLmh0bVxcbiAqL1xcblxcbmZsb2F0IG5kb3QodmVjMiBhLCB2ZWMyIGIgKSB7IHJldHVybiBhLngqYi54IC0gYS55KmIueTsgfVxcblxcbmZsb2F0IHNkQ2lyY2xlKHZlYzIgcCwgZmxvYXQgcikge1xcbiAgcmV0dXJuIGxlbmd0aChwKSAtIHI7XFxufVxcblxcbmZsb2F0IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSh2ZWMyIHApIHtcXG4gIGZsb2F0IGsgPSBzcXJ0KDMuMCk7XFxuICBwLnggPSBhYnMocC54KSAtIDEuMDtcXG4gIHAueSA9IHAueSArIDEuMC9rO1xcbiAgaWYoIHAueCArIGsqcC55ID4gMC4wICkgcCA9IHZlYzIocC54LWsqcC55LC1rKnAueC1wLnkpLzIuMDtcXG4gIHAueCAtPSBjbGFtcCggcC54LCAtMi4wLCAwLjAgKTtcXG4gIHJldHVybiAtbGVuZ3RoKHApKnNpZ24ocC55KTtcXG59XFxuXFxuZmxvYXQgc2RCb3godmVjMiBwLCB2ZWMyIGIpIHtcXG4gIHZlYzIgZCA9IGFicyhwKS1iO1xcbiAgcmV0dXJuIGxlbmd0aChtYXgoZCx2ZWMyKDApKSkgKyBtaW4obWF4KGQueCxkLnkpLDAuMCk7XFxufVxcblxcbmZsb2F0IHNkUGVudGFnb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKDAuODA5MDE2OTk0LDAuNTg3Nzg1MjUyLDAuNzI2NTQyNTI4KTtcXG4gIHAueCA9IGFicyhwLngpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwtciprLnosciprLnopLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdvbih2ZWMyIHAsIGZsb2F0IHIpIHtcXG4gIHZlYzMgayA9IHZlYzMoLTAuODY2MDI1NDA0LDAuNSwwLjU3NzM1MDI2OSk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnh5LHApLDAuMCkqay54eTtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsIC1rLnoqciwgay56KnIpLCByKTtcXG4gIHJldHVybiBsZW5ndGgocCkqc2lnbihwLnkpO1xcbn1cXG5cXG5mbG9hdCBzZE9jdG9nb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKC0wLjkyMzg3OTUzMjUsIDAuMzgyNjgzNDMyMywgMC40MTQyMTM1NjIzICk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwgLWsueipyLCBrLnoqciksIHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdyYW0odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWM0IGs9dmVjNCgtMC41LDAuODY2MDI1NDAzOCwwLjU3NzM1MDI2OTIsMS43MzIwNTA4MDc2KTtcXG4gIHAgPSBhYnMocCk7XFxuICBwIC09IDIuMCptaW4oZG90KGsueHkscCksMC4wKSprLnh5O1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnl4LHApLDAuMCkqay55eDtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsciprLnosciprLncpLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkUmhvbWJ1cyh2ZWMyIHAsIHZlYzIgYikge1xcbiAgdmVjMiBxID0gYWJzKHApO1xcbiAgZmxvYXQgaCA9IGNsYW1wKCgtMi4wKm5kb3QocSxiKStuZG90KGIsYikpL2RvdChiLGIpLC0xLjAsMS4wKTtcXG4gIGZsb2F0IGQgPSBsZW5ndGgoIHEgLSAwLjUqYip2ZWMyKDEuMC1oLDEuMCtoKSApO1xcbiAgcmV0dXJuIGQgKiBzaWduKCBxLngqYi55ICsgcS55KmIueCAtIGIueCpiLnkgKTtcXG59XFxuXFxuZmxvYXQgc2RWZXNpY2EodmVjMiBwLCBmbG9hdCByLCBmbG9hdCBkKSB7XFxuICBwID0gYWJzKHApO1xcbiAgZmxvYXQgYiA9IHNxcnQocipyLWQqZCk7IC8vIGNhbiBkZWxheSB0aGlzIHNxcnRcXG4gIHJldHVybiAoKHAueS1iKSpkPnAueCpiKVxcbiAgICAgICAgICA/IGxlbmd0aChwLXZlYzIoMC4wLGIpKVxcbiAgICAgICAgICA6IGxlbmd0aChwLXZlYzIoLWQsMC4wKSktcjtcXG59XCI7XG52YXIgcHJlY2lzaW9uUmVnRXhwID0gL3ByZWNpc2lvblxccysoaGlnaHxsb3d8bWVkaXVtKXBcXHMrZmxvYXQvO1xudmFyIGdsb2JhbERlZmF1bHRwcmVjaXNpb24gPSAnI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIXFxuIHByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4gI2Vsc2VcXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XFxuI2VuZGlmXFxuJztcbnZhciBpbmNsdWRlUmVnRXhwID0gLyNwcmFnbWEgaW5jbHVkZSAoW1wiXitcIl0/W1wiXFwgXCJbYS16QS1aXzAtOV0oLiopXCJdKj8pL2c7XG52YXIgU2hhZGVyTW9kdWxlU2VydmljZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNoYWRlck1vZHVsZVNlcnZpY2UoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNoYWRlck1vZHVsZVNlcnZpY2UpO1xuXG4gICAgdGhpcy5tb2R1bGVDYWNoZSA9IHt9O1xuICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2hhZGVyTW9kdWxlU2VydmljZSwgW3tcbiAgICBrZXk6IFwicmVnaXN0ZXJCdWlsdGluTW9kdWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWdpc3RlckJ1aWx0aW5Nb2R1bGVzKCkge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdwaWNraW5nJywge1xuICAgICAgICB2czogcGlja2luZ1ZlcnQsXG4gICAgICAgIGZzOiBwaWNraW5nRnJhZ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdzZGYyZCcsIHtcbiAgICAgICAgdnM6ICcnLFxuICAgICAgICBmczogc2RmMmRGcmFnXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVnaXN0ZXJNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwgbW9kdWxlUGFyYW1zKSB7XG4gICAgICAvLyBwcmV2ZW50IHJlZ2lzdGVyaW5nIHRoZSBzYW1lIG1vZHVsZSBtdWx0aXBsZSB0aW1lc1xuICAgICAgaWYgKHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9tb2R1bGVQYXJhbXMkdnMgPSBtb2R1bGVQYXJhbXMudnMsXG4gICAgICAgICAgdnMgPSBfbW9kdWxlUGFyYW1zJHZzID09PSB2b2lkIDAgPyAnJyA6IF9tb2R1bGVQYXJhbXMkdnMsXG4gICAgICAgICAgX21vZHVsZVBhcmFtcyRmcyA9IG1vZHVsZVBhcmFtcy5mcyxcbiAgICAgICAgICBmcyA9IF9tb2R1bGVQYXJhbXMkZnMgPT09IHZvaWQgMCA/ICcnIDogX21vZHVsZVBhcmFtcyRmcyxcbiAgICAgICAgICBkZWNsYXJlZFVuaWZvcm1zID0gbW9kdWxlUGFyYW1zLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgX2V4dHJhY3RVbmlmb3JtcyA9IGV4dHJhY3RVbmlmb3Jtcyh2cyksXG4gICAgICAgICAgZXh0cmFjdGVkVlMgPSBfZXh0cmFjdFVuaWZvcm1zLmNvbnRlbnQsXG4gICAgICAgICAgdnNVbmlmb3JtcyA9IF9leHRyYWN0VW5pZm9ybXMudW5pZm9ybXM7XG5cbiAgICAgIHZhciBfZXh0cmFjdFVuaWZvcm1zMiA9IGV4dHJhY3RVbmlmb3JtcyhmcyksXG4gICAgICAgICAgZXh0cmFjdGVkRlMgPSBfZXh0cmFjdFVuaWZvcm1zMi5jb250ZW50LFxuICAgICAgICAgIGZzVW5pZm9ybXMgPSBfZXh0cmFjdFVuaWZvcm1zMi51bmlmb3JtcztcblxuICAgICAgdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBleHRyYWN0ZWRGUyxcbiAgICAgICAgdW5pZm9ybXM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB2c1VuaWZvcm1zKSwgZnNVbmlmb3JtcyksIGRlY2xhcmVkVW5pZm9ybXMpLFxuICAgICAgICB2czogZXh0cmFjdGVkVlNcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMubW9kdWxlQ2FjaGUgPSB7fTtcbiAgICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1vZHVsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNb2R1bGUobW9kdWxlTmFtZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgICB9XG5cbiAgICAgIHZhciByYXdWUyA9IHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdLnZzIHx8ICcnO1xuICAgICAgdmFyIHJhd0ZTID0gdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0uZnMgfHwgJyc7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlID0gdGhpcy5wcm9jZXNzTW9kdWxlKHJhd1ZTLCBbXSwgJ3ZzJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRwcm9jZXNzTW9kdWxlLmNvbnRlbnQsXG4gICAgICAgICAgdnNJbmNsdWRlTGlzdCA9IF90aGlzJHByb2Nlc3NNb2R1bGUuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlMiA9IHRoaXMucHJvY2Vzc01vZHVsZShyYXdGUywgW10sICdmcycpLFxuICAgICAgICAgIGZzID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuY29udGVudCxcbiAgICAgICAgICBmc0luY2x1ZGVMaXN0ID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBjb21waWxlZEZzID0gZnM7IC8vIFRPRE86IGV4dHJhY3QgdW5pZm9ybXMgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWVzIGZyb20gR0xTTFxuXG4gICAgICB2YXIgdW5pZm9ybXMgPSB1bmlxKHZzSW5jbHVkZUxpc3QuY29uY2F0KGZzSW5jbHVkZUxpc3QpLmNvbmNhdChtb2R1bGVOYW1lKSkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJldiksIF90aGlzLnJhd0NvbnRlbnRDYWNoZVtjdXJdLnVuaWZvcm1zKTtcbiAgICAgIH0sIHt9KTtcbiAgICAgIC8qKlxuICAgICAgICogc2V0IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVudCBzaGFkZXJcbiAgICAgICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI4NTQwMjkwL3doeS1pdC1pcy1uZWNlc3NhcnktdG8tc2V0LXByZWNpc2lvbi1mb3ItdGhlLWZyYWdtZW50LXNoYWRlclxuICAgICAgICovXG5cbiAgICAgIGlmICghcHJlY2lzaW9uUmVnRXhwLnRlc3QoZnMpKSB7XG4gICAgICAgIGNvbXBpbGVkRnMgPSBnbG9iYWxEZWZhdWx0cHJlY2lzaW9uICsgZnM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBjb21waWxlZEZzLnRyaW0oKSxcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zLFxuICAgICAgICB2czogdnMudHJpbSgpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByb2Nlc3NNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvY2Vzc01vZHVsZShyYXdDb250ZW50LCBpbmNsdWRlTGlzdCwgdHlwZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjb21waWxlZCA9IHJhd0NvbnRlbnQucmVwbGFjZShpbmNsdWRlUmVnRXhwLCBmdW5jdGlvbiAoXywgc3RyTWF0Y2gpIHtcbiAgICAgICAgdmFyIGluY2x1ZGVPcHQgPSBzdHJNYXRjaC5zcGxpdCgnICcpO1xuICAgICAgICB2YXIgaW5jbHVkZU5hbWUgPSBpbmNsdWRlT3B0WzBdLnJlcGxhY2UoL1wiL2csICcnKTtcblxuICAgICAgICBpZiAoaW5jbHVkZUxpc3QuaW5kZXhPZihpbmNsdWRlTmFtZSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0eHQgPSBfdGhpczIucmF3Q29udGVudENhY2hlW2luY2x1ZGVOYW1lXVt0eXBlXTtcbiAgICAgICAgaW5jbHVkZUxpc3QucHVzaChpbmNsdWRlTmFtZSk7XG5cbiAgICAgICAgdmFyIF90aGlzMiRwcm9jZXNzTW9kdWxlID0gX3RoaXMyLnByb2Nlc3NNb2R1bGUodHh0IHx8ICcnLCBpbmNsdWRlTGlzdCwgdHlwZSksXG4gICAgICAgICAgICBjb250ZW50ID0gX3RoaXMyJHByb2Nlc3NNb2R1bGUuY29udGVudDtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogY29tcGlsZWQsXG4gICAgICAgIGluY2x1ZGVMaXN0OiBpbmNsdWRlTGlzdFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2hhZGVyTW9kdWxlU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuZXhwb3J0IHsgU2hhZGVyTW9kdWxlU2VydmljZSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js": /*!********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js ***! \********************************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ShaderModuleService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ShaderModuleService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/* empty/unused harmony star reexport */\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL2luZGV4LmpzP2QwYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLHdDQUFzQztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL1NoYWRlck1vZHVsZVNlcnZpY2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js ***! \**************************************************************************************/ /*! exports provided: AABB */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return AABB; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * Axis-Aligned Bounding Box\n * 为了便于后续 Frustum Culling,通过查找表定义 p-vertex 和 n-vertex\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n */\nvar AABB = /*#__PURE__*/function () {\n function AABB(center, halfExtents) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, AABB);\n\n this.center = void 0;\n this.halfExtents = void 0;\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.update(center, halfExtents);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(AABB, [{\n key: \"update\",\n value: function update(center, halfExtents) {\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.halfExtents = halfExtents || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0.5, 0.5, 0.5);\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.min, this.center, this.halfExtents);\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.max, this.center, this.halfExtents);\n }\n }, {\n key: \"setMinMax\",\n value: function setMinMax(min, max) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.center, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.center, this.center, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.halfExtents, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.halfExtents, this.halfExtents, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.min, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.max, max);\n }\n }, {\n key: \"getMin\",\n value: function getMin() {\n return this.min;\n }\n }, {\n key: \"getMax\",\n value: function getMax() {\n return this.max;\n }\n }, {\n key: \"add\",\n value: function add(aabb) {\n var tc = this.center;\n var tcx = tc[0];\n var tcy = tc[1];\n var tcz = tc[2];\n var th = this.halfExtents;\n var thx = th[0];\n var thy = th[1];\n var thz = th[2];\n var tminx = tcx - thx;\n var tmaxx = tcx + thx;\n var tminy = tcy - thy;\n var tmaxy = tcy + thy;\n var tminz = tcz - thz;\n var tmaxz = tcz + thz;\n var oc = aabb.center;\n var ocx = oc[0];\n var ocy = oc[1];\n var ocz = oc[2];\n var oh = aabb.halfExtents;\n var ohx = oh[0];\n var ohy = oh[1];\n var ohz = oh[2];\n var ominx = ocx - ohx;\n var omaxx = ocx + ohx;\n var ominy = ocy - ohy;\n var omaxy = ocy + ohy;\n var ominz = ocz - ohz;\n var omaxz = ocz + ohz;\n\n if (ominx < tminx) {\n tminx = ominx;\n }\n\n if (omaxx > tmaxx) {\n tmaxx = omaxx;\n }\n\n if (ominy < tminy) {\n tminy = ominy;\n }\n\n if (omaxy > tmaxy) {\n tmaxy = omaxy;\n }\n\n if (ominz < tminz) {\n tminz = ominz;\n }\n\n if (omaxz > tmaxz) {\n tmaxz = omaxz;\n }\n\n tc[0] = (tminx + tmaxx) * 0.5;\n tc[1] = (tminy + tmaxy) * 0.5;\n tc[2] = (tminz + tmaxz) * 0.5;\n th[0] = (tmaxx - tminx) * 0.5;\n th[1] = (tmaxy - tminy) * 0.5;\n th[2] = (tmaxz - tminz) * 0.5;\n this.min[0] = tminx;\n this.min[1] = tminy;\n this.min[2] = tminz;\n this.max[0] = tmaxx;\n this.max[1] = tmaxy;\n this.max[2] = tmaxz;\n }\n }, {\n key: \"intersects\",\n value: function intersects(aabb) {\n var aMax = this.getMax();\n var aMin = this.getMin();\n var bMax = aabb.getMax();\n var bMin = aabb.getMin();\n return aMin[0] <= bMax[0] && aMax[0] >= bMin[0] && aMin[1] <= bMax[1] && aMax[1] >= bMin[1] && aMin[2] <= bMax[2] && aMax[2] >= bMin[2];\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(point) {\n var min = this.getMin();\n var max = this.getMax();\n return !(point[0] < min[0] || point[0] > max[0] || point[1] < min[1] || point[1] > max[1] || point[2] < min[2] || point[2] > max[2]);\n }\n /**\n * get n-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getNegativeFarPoint\",\n value: function getNegativeFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.min);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.max[2]);\n }\n }\n /**\n * get p-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getPositiveFarPoint\",\n value: function getPositiveFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.max);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.min[2]);\n }\n }\n }]);\n\n return AABB;\n}();\n//# sourceMappingURL=AABB.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzP2EyYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUM3Qjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSw4QkFBOEIsOENBQUk7QUFDbEMsd0NBQXdDLDhDQUFJO0FBQzVDLGlCQUFpQiw4Q0FBSTtBQUNyQixpQkFBaUIsOENBQUk7QUFDckI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICogQXhpcy1BbGlnbmVkIEJvdW5kaW5nIEJveFxuICog5Li65LqG5L6/5LqO5ZCO57utIEZydXN0dW0gQ3VsbGluZ++8jOmAmui/h+afpeaJvuihqOWumuS5iSBwLXZlcnRleCDlkowgbi12ZXJ0ZXhcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gKi9cbmV4cG9ydCB2YXIgQUFCQiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEFBQkIoY2VudGVyLCBoYWxmRXh0ZW50cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBQUJCKTtcblxuICAgIHRoaXMuY2VudGVyID0gdm9pZCAwO1xuICAgIHRoaXMuaGFsZkV4dGVudHMgPSB2b2lkIDA7XG4gICAgdGhpcy5taW4gPSB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMubWF4ID0gdmVjMy5jcmVhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZShjZW50ZXIsIGhhbGZFeHRlbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBQUJCLCBbe1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKGNlbnRlciwgaGFsZkV4dGVudHMpIHtcbiAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyIHx8IHZlYzMuY3JlYXRlKCk7XG4gICAgICB0aGlzLmhhbGZFeHRlbnRzID0gaGFsZkV4dGVudHMgfHwgdmVjMy5mcm9tVmFsdWVzKDAuNSwgMC41LCAwLjUpO1xuICAgICAgdGhpcy5taW4gPSB2ZWMzLnN1Yih0aGlzLm1pbiwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgICAgdGhpcy5tYXggPSB2ZWMzLmFkZCh0aGlzLm1heCwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRNaW5NYXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWluTWF4KG1pbiwgbWF4KSB7XG4gICAgICB2ZWMzLmFkZCh0aGlzLmNlbnRlciwgbWF4LCBtaW4pO1xuICAgICAgdmVjMy5zY2FsZSh0aGlzLmNlbnRlciwgdGhpcy5jZW50ZXIsIDAuNSk7XG4gICAgICB2ZWMzLnN1Yih0aGlzLmhhbGZFeHRlbnRzLCBtYXgsIG1pbik7XG4gICAgICB2ZWMzLnNjYWxlKHRoaXMuaGFsZkV4dGVudHMsIHRoaXMuaGFsZkV4dGVudHMsIDAuNSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5taW4sIG1pbik7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5tYXgsIG1heCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNaW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1heFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNYXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWFiYikge1xuICAgICAgdmFyIHRjID0gdGhpcy5jZW50ZXI7XG4gICAgICB2YXIgdGN4ID0gdGNbMF07XG4gICAgICB2YXIgdGN5ID0gdGNbMV07XG4gICAgICB2YXIgdGN6ID0gdGNbMl07XG4gICAgICB2YXIgdGggPSB0aGlzLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIHRoeCA9IHRoWzBdO1xuICAgICAgdmFyIHRoeSA9IHRoWzFdO1xuICAgICAgdmFyIHRoeiA9IHRoWzJdO1xuICAgICAgdmFyIHRtaW54ID0gdGN4IC0gdGh4O1xuICAgICAgdmFyIHRtYXh4ID0gdGN4ICsgdGh4O1xuICAgICAgdmFyIHRtaW55ID0gdGN5IC0gdGh5O1xuICAgICAgdmFyIHRtYXh5ID0gdGN5ICsgdGh5O1xuICAgICAgdmFyIHRtaW56ID0gdGN6IC0gdGh6O1xuICAgICAgdmFyIHRtYXh6ID0gdGN6ICsgdGh6O1xuICAgICAgdmFyIG9jID0gYWFiYi5jZW50ZXI7XG4gICAgICB2YXIgb2N4ID0gb2NbMF07XG4gICAgICB2YXIgb2N5ID0gb2NbMV07XG4gICAgICB2YXIgb2N6ID0gb2NbMl07XG4gICAgICB2YXIgb2ggPSBhYWJiLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIG9oeCA9IG9oWzBdO1xuICAgICAgdmFyIG9oeSA9IG9oWzFdO1xuICAgICAgdmFyIG9oeiA9IG9oWzJdO1xuICAgICAgdmFyIG9taW54ID0gb2N4IC0gb2h4O1xuICAgICAgdmFyIG9tYXh4ID0gb2N4ICsgb2h4O1xuICAgICAgdmFyIG9taW55ID0gb2N5IC0gb2h5O1xuICAgICAgdmFyIG9tYXh5ID0gb2N5ICsgb2h5O1xuICAgICAgdmFyIG9taW56ID0gb2N6IC0gb2h6O1xuICAgICAgdmFyIG9tYXh6ID0gb2N6ICsgb2h6O1xuXG4gICAgICBpZiAob21pbnggPCB0bWlueCkge1xuICAgICAgICB0bWlueCA9IG9taW54O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHggPiB0bWF4eCkge1xuICAgICAgICB0bWF4eCA9IG9tYXh4O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnkgPCB0bWlueSkge1xuICAgICAgICB0bWlueSA9IG9taW55O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHkgPiB0bWF4eSkge1xuICAgICAgICB0bWF4eSA9IG9tYXh5O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnogPCB0bWlueikge1xuICAgICAgICB0bWlueiA9IG9taW56O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHogPiB0bWF4eikge1xuICAgICAgICB0bWF4eiA9IG9tYXh6O1xuICAgICAgfVxuXG4gICAgICB0Y1swXSA9ICh0bWlueCArIHRtYXh4KSAqIDAuNTtcbiAgICAgIHRjWzFdID0gKHRtaW55ICsgdG1heHkpICogMC41O1xuICAgICAgdGNbMl0gPSAodG1pbnogKyB0bWF4eikgKiAwLjU7XG4gICAgICB0aFswXSA9ICh0bWF4eCAtIHRtaW54KSAqIDAuNTtcbiAgICAgIHRoWzFdID0gKHRtYXh5IC0gdG1pbnkpICogMC41O1xuICAgICAgdGhbMl0gPSAodG1heHogLSB0bWlueikgKiAwLjU7XG4gICAgICB0aGlzLm1pblswXSA9IHRtaW54O1xuICAgICAgdGhpcy5taW5bMV0gPSB0bWlueTtcbiAgICAgIHRoaXMubWluWzJdID0gdG1pbno7XG4gICAgICB0aGlzLm1heFswXSA9IHRtYXh4O1xuICAgICAgdGhpcy5tYXhbMV0gPSB0bWF4eTtcbiAgICAgIHRoaXMubWF4WzJdID0gdG1heHo7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0cyhhYWJiKSB7XG4gICAgICB2YXIgYU1heCA9IHRoaXMuZ2V0TWF4KCk7XG4gICAgICB2YXIgYU1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgYk1heCA9IGFhYmIuZ2V0TWF4KCk7XG4gICAgICB2YXIgYk1pbiA9IGFhYmIuZ2V0TWluKCk7XG4gICAgICByZXR1cm4gYU1pblswXSA8PSBiTWF4WzBdICYmIGFNYXhbMF0gPj0gYk1pblswXSAmJiBhTWluWzFdIDw9IGJNYXhbMV0gJiYgYU1heFsxXSA+PSBiTWluWzFdICYmIGFNaW5bMl0gPD0gYk1heFsyXSAmJiBhTWF4WzJdID49IGJNaW5bMl07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbnRhaW5zUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udGFpbnNQb2ludChwb2ludCkge1xuICAgICAgdmFyIG1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgbWF4ID0gdGhpcy5nZXRNYXgoKTtcbiAgICAgIHJldHVybiAhKHBvaW50WzBdIDwgbWluWzBdIHx8IHBvaW50WzBdID4gbWF4WzBdIHx8IHBvaW50WzFdIDwgbWluWzFdIHx8IHBvaW50WzFdID4gbWF4WzFdIHx8IHBvaW50WzJdIDwgbWluWzJdIHx8IHBvaW50WzJdID4gbWF4WzJdKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogZ2V0IG4tdmVydGV4XG4gICAgICogQHBhcmFtIHBsYW5lIHBsYW5lIG9mIEN1bGxpbmdWb2x1bWVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldE5lZ2F0aXZlRmFyUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TmVnYXRpdmVGYXJQb2ludChwbGFuZSkge1xuICAgICAgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCB0aGlzLm1pbik7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDEwMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1pblsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBnZXQgcC12ZXJ0ZXhcbiAgICAgKiBAcGFyYW0gcGxhbmUgcGxhbmUgb2YgQ3VsbGluZ1ZvbHVtZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UG9zaXRpdmVGYXJQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lKSB7XG4gICAgICBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIHRoaXMubWF4KTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWluWzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMDApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDEwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMDEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWluWzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFBQkI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BQUJCLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js": /*!************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js ***! \************************************************************************************************/ /*! exports provided: BoundingSphere */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return BoundingSphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar BoundingSphere = /*#__PURE__*/function () {\n function BoundingSphere(center, radius) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, BoundingSphere);\n\n this.center = void 0;\n this.radius = void 0;\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.radius = radius || 0.5;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BoundingSphere, [{\n key: \"containsPoint\",\n value: function containsPoint(point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, point, this.center);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) < this.radius * this.radius;\n }\n }, {\n key: \"intersects\",\n value: function intersects(sphere) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, sphere.center, this.center);\n var totalRadius = sphere.radius + this.radius;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) <= totalRadius * totalRadius) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return BoundingSphere;\n}();\n//# sourceMappingURL=BoundingSphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9Cb3VuZGluZ1NwaGVyZS5qcz9jMzQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDakMsY0FBYyw4Q0FBSTtBQUNYO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsYUFBYSw4Q0FBSTtBQUNqQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWOztBQUVBLFVBQVUsOENBQUk7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvQm91bmRpbmdTcGhlcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbmV4cG9ydCB2YXIgQm91bmRpbmdTcGhlcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCb3VuZGluZ1NwaGVyZShjZW50ZXIsIHJhZGl1cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCb3VuZGluZ1NwaGVyZSk7XG5cbiAgICB0aGlzLmNlbnRlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJhZGl1cyA9IHZvaWQgMDtcbiAgICB0aGlzLmNlbnRlciA9IGNlbnRlciB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzIHx8IDAuNTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCb3VuZGluZ1NwaGVyZSwgW3tcbiAgICBrZXk6IFwiY29udGFpbnNQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWluc1BvaW50KHBvaW50KSB7XG4gICAgICB2ZWMzLnN1Yih0bXBWZWNBLCBwb2ludCwgdGhpcy5jZW50ZXIpO1xuICAgICAgcmV0dXJuIHZlYzMubGVuZ3RoKHRtcFZlY0EpIDwgdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzKHNwaGVyZSkge1xuICAgICAgdmVjMy5zdWIodG1wVmVjQSwgc3BoZXJlLmNlbnRlciwgdGhpcy5jZW50ZXIpO1xuICAgICAgdmFyIHRvdGFsUmFkaXVzID0gc3BoZXJlLnJhZGl1cyArIHRoaXMucmFkaXVzO1xuXG4gICAgICBpZiAodmVjMy5sZW5ndGgodG1wVmVjQSkgPD0gdG90YWxSYWRpdXMgKiB0b3RhbFJhZGl1cykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCb3VuZGluZ1NwaGVyZTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJvdW5kaW5nU3BoZXJlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js ***! \*****************************************************************************************/ /*! exports provided: Mask, Frustum */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return Mask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return Frustum; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Plane */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js\");\n\n\n\n\n\nvar Mask;\n\n(function (Mask) {\n Mask[Mask[\"OUTSIDE\"] = 4294967295] = \"OUTSIDE\";\n Mask[Mask[\"INSIDE\"] = 0] = \"INSIDE\";\n Mask[Mask[\"INDETERMINATE\"] = 2147483647] = \"INDETERMINATE\";\n})(Mask || (Mask = {}));\n\nvar Frustum = /*#__PURE__*/function () {\n function Frustum(planes) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Frustum);\n\n this.planes = [];\n\n if (planes) {\n this.planes = planes;\n } else {\n for (var i = 0; i < 6; i++) {\n this.planes.push(new _Plane__WEBPACK_IMPORTED_MODULE_4__[\"Plane\"]());\n }\n }\n }\n /**\n * extract 6 planes from vpMatrix\n * @see http://www8.cs.umu.se/kurser/5DV051/HT12/lab/plane_extraction.pdf\n * @param vpMatrix viewProjectionMatrix\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Frustum, [{\n key: \"extractFromVPMatrix\",\n value: function extractFromVPMatrix(vpMatrix) {\n var _vpMatrix = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(vpMatrix, 16),\n m0 = _vpMatrix[0],\n m1 = _vpMatrix[1],\n m2 = _vpMatrix[2],\n m3 = _vpMatrix[3],\n m4 = _vpMatrix[4],\n m5 = _vpMatrix[5],\n m6 = _vpMatrix[6],\n m7 = _vpMatrix[7],\n m8 = _vpMatrix[8],\n m9 = _vpMatrix[9],\n m10 = _vpMatrix[10],\n m11 = _vpMatrix[11],\n m12 = _vpMatrix[12],\n m13 = _vpMatrix[13],\n m14 = _vpMatrix[14],\n m15 = _vpMatrix[15]; // right\n\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[0].normal, m3 - m0, m7 - m4, m11 - m8);\n this.planes[0].distance = -(m15 - m12); // left\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[1].normal, m3 + m0, m7 + m4, m11 + m8);\n this.planes[1].distance = -(m15 + m12); // bottom\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[2].normal, m3 + m1, m7 + m5, m11 + m9);\n this.planes[2].distance = -(m15 + m13); // top\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[3].normal, m3 - m1, m7 - m5, m11 - m9);\n this.planes[3].distance = -(m15 - m13); // far\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[4].normal, m3 - m2, m7 - m6, m11 - m10);\n this.planes[4].distance = -(m15 - m14); // near\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[5].normal, m3 + m2, m7 + m6, m11 + m10);\n this.planes[5].distance = -(m15 + m14);\n this.planes.forEach(function (plane) {\n plane.normalize();\n plane.updatePNVertexFlag();\n });\n }\n }]);\n\n return Frustum;\n}();\n//# sourceMappingURL=Frustum.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9GcnVzdHVtLmpzPzczOTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNFO0FBQ047QUFDN0I7QUFDRDtBQUN6Qjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0JBQW9COztBQUVkO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixPQUFPO0FBQzVCLDZCQUE2Qiw0Q0FBSztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHNCQUFzQiwyRUFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7OztBQUc5QixNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvRnJ1c3R1bS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IFBsYW5lIH0gZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgdmFyIE1hc2s7XG5cbihmdW5jdGlvbiAoTWFzaykge1xuICBNYXNrW01hc2tbXCJPVVRTSURFXCJdID0gNDI5NDk2NzI5NV0gPSBcIk9VVFNJREVcIjtcbiAgTWFza1tNYXNrW1wiSU5TSURFXCJdID0gMF0gPSBcIklOU0lERVwiO1xuICBNYXNrW01hc2tbXCJJTkRFVEVSTUlOQVRFXCJdID0gMjE0NzQ4MzY0N10gPSBcIklOREVURVJNSU5BVEVcIjtcbn0pKE1hc2sgfHwgKE1hc2sgPSB7fSkpO1xuXG5leHBvcnQgdmFyIEZydXN0dW0gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcnVzdHVtKHBsYW5lcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcnVzdHVtKTtcblxuICAgIHRoaXMucGxhbmVzID0gW107XG5cbiAgICBpZiAocGxhbmVzKSB7XG4gICAgICB0aGlzLnBsYW5lcyA9IHBsYW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgdGhpcy5wbGFuZXMucHVzaChuZXcgUGxhbmUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBleHRyYWN0IDYgcGxhbmVzIGZyb20gdnBNYXRyaXhcbiAgICogQHNlZSBodHRwOi8vd3d3OC5jcy51bXUuc2Uva3Vyc2VyLzVEVjA1MS9IVDEyL2xhYi9wbGFuZV9leHRyYWN0aW9uLnBkZlxuICAgKiBAcGFyYW0gdnBNYXRyaXggdmlld1Byb2plY3Rpb25NYXRyaXhcbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoRnJ1c3R1bSwgW3tcbiAgICBrZXk6IFwiZXh0cmFjdEZyb21WUE1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleHRyYWN0RnJvbVZQTWF0cml4KHZwTWF0cml4KSB7XG4gICAgICB2YXIgX3ZwTWF0cml4ID0gX3NsaWNlZFRvQXJyYXkodnBNYXRyaXgsIDE2KSxcbiAgICAgICAgICBtMCA9IF92cE1hdHJpeFswXSxcbiAgICAgICAgICBtMSA9IF92cE1hdHJpeFsxXSxcbiAgICAgICAgICBtMiA9IF92cE1hdHJpeFsyXSxcbiAgICAgICAgICBtMyA9IF92cE1hdHJpeFszXSxcbiAgICAgICAgICBtNCA9IF92cE1hdHJpeFs0XSxcbiAgICAgICAgICBtNSA9IF92cE1hdHJpeFs1XSxcbiAgICAgICAgICBtNiA9IF92cE1hdHJpeFs2XSxcbiAgICAgICAgICBtNyA9IF92cE1hdHJpeFs3XSxcbiAgICAgICAgICBtOCA9IF92cE1hdHJpeFs4XSxcbiAgICAgICAgICBtOSA9IF92cE1hdHJpeFs5XSxcbiAgICAgICAgICBtMTAgPSBfdnBNYXRyaXhbMTBdLFxuICAgICAgICAgIG0xMSA9IF92cE1hdHJpeFsxMV0sXG4gICAgICAgICAgbTEyID0gX3ZwTWF0cml4WzEyXSxcbiAgICAgICAgICBtMTMgPSBfdnBNYXRyaXhbMTNdLFxuICAgICAgICAgIG0xNCA9IF92cE1hdHJpeFsxNF0sXG4gICAgICAgICAgbTE1ID0gX3ZwTWF0cml4WzE1XTsgLy8gcmlnaHRcblxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1swXS5ub3JtYWwsIG0zIC0gbTAsIG03IC0gbTQsIG0xMSAtIG04KTtcbiAgICAgIHRoaXMucGxhbmVzWzBdLmRpc3RhbmNlID0gLShtMTUgLSBtMTIpOyAvLyBsZWZ0XG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzFdLm5vcm1hbCwgbTMgKyBtMCwgbTcgKyBtNCwgbTExICsgbTgpO1xuICAgICAgdGhpcy5wbGFuZXNbMV0uZGlzdGFuY2UgPSAtKG0xNSArIG0xMik7IC8vIGJvdHRvbVxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1syXS5ub3JtYWwsIG0zICsgbTEsIG03ICsgbTUsIG0xMSArIG05KTtcbiAgICAgIHRoaXMucGxhbmVzWzJdLmRpc3RhbmNlID0gLShtMTUgKyBtMTMpOyAvLyB0b3BcblxuICAgICAgdmVjMy5zZXQodGhpcy5wbGFuZXNbM10ubm9ybWFsLCBtMyAtIG0xLCBtNyAtIG01LCBtMTEgLSBtOSk7XG4gICAgICB0aGlzLnBsYW5lc1szXS5kaXN0YW5jZSA9IC0obTE1IC0gbTEzKTsgLy8gZmFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzRdLm5vcm1hbCwgbTMgLSBtMiwgbTcgLSBtNiwgbTExIC0gbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzRdLmRpc3RhbmNlID0gLShtMTUgLSBtMTQpOyAvLyBuZWFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzVdLm5vcm1hbCwgbTMgKyBtMiwgbTcgKyBtNiwgbTExICsgbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzVdLmRpc3RhbmNlID0gLShtMTUgKyBtMTQpO1xuICAgICAgdGhpcy5wbGFuZXMuZm9yRWFjaChmdW5jdGlvbiAocGxhbmUpIHtcbiAgICAgICAgcGxhbmUubm9ybWFsaXplKCk7XG4gICAgICAgIHBsYW5lLnVwZGF0ZVBOVmVydGV4RmxhZygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZydXN0dW07XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcnVzdHVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js ***! \***************************************************************************************/ /*! exports provided: Plane */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\nvar Plane = /*#__PURE__*/function () {\n /**\n * lookup table for p-vertex & n-vertex when doing frustum culling\n */\n function Plane(distance, normal) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n this.distance = void 0;\n this.normal = void 0;\n this.pnVertexFlag = void 0;\n this.distance = distance || 0;\n this.normal = normal || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 1, 0);\n this.updatePNVertexFlag();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"updatePNVertexFlag\",\n value: function updatePNVertexFlag() {\n this.pnVertexFlag = (Number(this.normal[0] >= 0) << 8) + (Number(this.normal[1] >= 0) << 4) + Number(this.normal[2] >= 0);\n }\n }, {\n key: \"distanceToPoint\",\n value: function distanceToPoint(point) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(point, this.normal) - this.distance;\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n var invLen = 1 / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].len(this.normal);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.normal, this.normal, invLen);\n this.distance *= invLen;\n }\n }, {\n key: \"intersectsLine\",\n value: function intersectsLine(start, end, point) {\n var d0 = this.distanceToPoint(start);\n var d1 = this.distanceToPoint(end);\n var t = d0 / (d0 - d1);\n var intersects = t >= 0 && t <= 1;\n\n if (intersects && point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].lerp(point, start, end, t);\n }\n\n return intersects;\n }\n }]);\n\n return Plane;\n}();\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9QbGFuZS5qcz9jNGVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDhDQUFJO0FBQ2pCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsOENBQUk7QUFDM0IsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvUGxhbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmV4cG9ydCB2YXIgUGxhbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogbG9va3VwIHRhYmxlIGZvciBwLXZlcnRleCAmIG4tdmVydGV4IHdoZW4gZG9pbmcgZnJ1c3R1bSBjdWxsaW5nXG4gICAqL1xuICBmdW5jdGlvbiBQbGFuZShkaXN0YW5jZSwgbm9ybWFsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW5lKTtcblxuICAgIHRoaXMuZGlzdGFuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5ub3JtYWwgPSB2b2lkIDA7XG4gICAgdGhpcy5wblZlcnRleEZsYWcgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXN0YW5jZSA9IGRpc3RhbmNlIHx8IDA7XG4gICAgdGhpcy5ub3JtYWwgPSBub3JtYWwgfHwgdmVjMy5mcm9tVmFsdWVzKDAsIDEsIDApO1xuICAgIHRoaXMudXBkYXRlUE5WZXJ0ZXhGbGFnKCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGxhbmUsIFt7XG4gICAga2V5OiBcInVwZGF0ZVBOVmVydGV4RmxhZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVQTlZlcnRleEZsYWcoKSB7XG4gICAgICB0aGlzLnBuVmVydGV4RmxhZyA9IChOdW1iZXIodGhpcy5ub3JtYWxbMF0gPj0gMCkgPDwgOCkgKyAoTnVtYmVyKHRoaXMubm9ybWFsWzFdID49IDApIDw8IDQpICsgTnVtYmVyKHRoaXMubm9ybWFsWzJdID49IDApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXN0YW5jZVRvUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzdGFuY2VUb1BvaW50KHBvaW50KSB7XG4gICAgICByZXR1cm4gdmVjMy5kb3QocG9pbnQsIHRoaXMubm9ybWFsKSAtIHRoaXMuZGlzdGFuY2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm5vcm1hbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgICB2YXIgaW52TGVuID0gMSAvIHZlYzMubGVuKHRoaXMubm9ybWFsKTtcbiAgICAgIHZlYzMuc2NhbGUodGhpcy5ub3JtYWwsIHRoaXMubm9ybWFsLCBpbnZMZW4pO1xuICAgICAgdGhpcy5kaXN0YW5jZSAqPSBpbnZMZW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNMaW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNMaW5lKHN0YXJ0LCBlbmQsIHBvaW50KSB7XG4gICAgICB2YXIgZDAgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChzdGFydCk7XG4gICAgICB2YXIgZDEgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChlbmQpO1xuICAgICAgdmFyIHQgPSBkMCAvIChkMCAtIGQxKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gdCA+PSAwICYmIHQgPD0gMTtcblxuICAgICAgaWYgKGludGVyc2VjdHMgJiYgcG9pbnQpIHtcbiAgICAgICAgdmVjMy5sZXJwKHBvaW50LCBzdGFydCwgZW5kLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBsYW5lO1xufSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js ***! \*************************************************************************************/ /*! exports provided: Ray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return Ray; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecB = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecC = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecD = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecE = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n/**\n * 包含求交方法:\n * * intersectsShape(Shape, intersection) 返回交点和求交结果\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n * @see https://github.com/mrdoob/three.js/blob/dev/src/math/Ray.js\n */\n\nvar Ray = /*#__PURE__*/function () {\n function Ray(origin, direction) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Ray);\n\n this.origin = void 0;\n this.direction = void 0;\n this.origin = origin || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.direction = direction || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 0, -1);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Ray, [{\n key: \"intersectsAABB\",\n value: function intersectsAABB(aabb, intersection) {\n return intersection ? this.intersectAABBWithIntersection(aabb, intersection) : this.intersectsAABBWithoutIntersection(aabb);\n }\n }, {\n key: \"intersectsSphere\",\n value: function intersectsSphere(sphere, intersection) {\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, this.origin, sphere.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].normalize(tmpVecB, gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(tmpVecB, this.direction));\n var b = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, tmpVecB);\n var c = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, m) - sphere.radius * sphere.radius; // exit if ray's origin outside of sphere (c > 0) and ray pointing away from s (b > 0)\n\n if (c > 0 && b > 0) {\n return null;\n }\n\n var discr = b * b - c; // a negative discriminant corresponds to ray missing sphere\n\n if (discr < 0) {\n return false;\n } // ray intersects sphere, compute smallest t value of intersection\n\n\n var t = Math.abs(-b - Math.sqrt(discr)); // if t is negative, ray started inside sphere so clamp t to zero\n\n if (intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, t);\n }\n\n return true;\n }\n }, {\n key: \"intersectsPlane\",\n value: function intersectsPlane(plane, intersection) {\n var t = (plane.distance - gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.origin)) / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.direction);\n var intersects = t >= 0;\n\n if (intersects && intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, this.direction, t);\n }\n\n return intersects;\n }\n /**\n * faster than implements like Three.js\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n */\n\n }, {\n key: \"intersectsAABBWithoutIntersection\",\n value: function intersectsAABBWithoutIntersection(aabb) {\n var diff = tmpVecA;\n var cross = tmpVecB;\n var prod = tmpVecC;\n var absDiff = tmpVecD;\n var absDir = tmpVecE;\n var rayDir = this.direction;\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(diff, this.origin, aabb.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDiff, Math.abs(diff[0]), Math.abs(diff[1]), Math.abs(diff[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].mul(prod, diff, rayDir);\n\n if (absDiff[0] > aabb.halfExtents[0] && prod[0] >= 0 || absDiff[1] > aabb.halfExtents[1] && prod[1] >= 0 || absDiff[2] > aabb.halfExtents[2] && prod[2] >= 0) {\n return false;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDir, Math.abs(rayDir[0]), Math.abs(rayDir[1]), Math.abs(rayDir[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].cross(cross, rayDir, diff);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(cross, Math.abs(cross[0]), Math.abs(cross[1]), Math.abs(cross[2]));\n return !(cross[0] > aabb.halfExtents[1] * absDir[2] + aabb.halfExtents[2] * absDir[1] || cross[1] > aabb.halfExtents[0] * absDir[2] + aabb.halfExtents[2] * absDir[0] || cross[2] > aabb.halfExtents[0] * absDir[1] + aabb.halfExtents[1] * absDir[0]);\n }\n }, {\n key: \"intersectAABBWithIntersection\",\n value: function intersectAABBWithIntersection(aabb, intersection) {\n var tMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMin());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMin, tMin, this.origin);\n var tMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMax());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMax, tMax, this.origin);\n var dir = this.direction; // Ensure that we are not dividing it by zero\n\n if (dir[0] === 0) {\n tMin[0] = tMin[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[0] = tMax[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[0] /= dir[0];\n tMax[0] /= dir[0];\n }\n\n if (dir[1] === 0) {\n tMin[1] = tMin[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[1] = tMax[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[1] /= dir[1];\n tMax[1] /= dir[1];\n }\n\n if (dir[2] === 0) {\n tMin[2] = tMin[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[2] = tMax[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[2] /= dir[2];\n tMax[2] /= dir[2];\n }\n\n var realMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecC, Math.min(tMin[0], tMax[0]), Math.min(tMin[1], tMax[1]), Math.min(tMin[2], tMax[2]));\n var realMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecD, Math.max(tMin[0], tMax[0]), Math.max(tMin[1], tMax[1]), Math.max(tMin[2], tMax[2]));\n var minMax = Math.min(Math.min(realMax[0], realMax[1]), realMax[2]);\n var maxMin = Math.max(Math.max(realMin[0], realMin[1]), realMin[2]);\n var intersects = minMax >= maxMin && maxMin >= 0;\n\n if (intersects) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, maxMin);\n }\n\n return intersects;\n }\n }]);\n\n return Ray;\n}();\n//# sourceMappingURL=Ray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanM/NzJlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQzdCO0FBQ2pDLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQixjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSw0QkFBNEIsOENBQUk7QUFDaEMsa0NBQWtDLDhDQUFJO0FBQ3RDOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQixNQUFNLDhDQUFJLG9CQUFvQiw4Q0FBSTtBQUNsQyxjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUksMkNBQTJDOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsOENBQThDOztBQUU5QztBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLDhDQUFJLG1DQUFtQyw4Q0FBSTtBQUMzRTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7O0FBRVY7QUFDQTtBQUNBOztBQUVBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiw4Q0FBSSxNQUFNLDhDQUFJO0FBQy9CLE1BQU0sOENBQUk7QUFDVixpQkFBaUIsOENBQUksTUFBTSw4Q0FBSTtBQUMvQixNQUFNLDhDQUFJO0FBQ1YsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsOENBQUk7QUFDeEIsb0JBQW9CLDhDQUFJO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNCID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNDID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNEID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNFID0gdmVjMy5jcmVhdGUoKTtcbi8qKlxuICog5YyF5ZCr5rGC5Lqk5pa55rOV77yaXG4gKiAqIGludGVyc2VjdHNTaGFwZShTaGFwZSwgaW50ZXJzZWN0aW9uKSDov5Tlm57kuqTngrnlkozmsYLkuqTnu5PmnpxcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvZGV2L3NyYy9tYXRoL1JheS5qc1xuICovXG5cbmV4cG9ydCB2YXIgUmF5ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmF5KG9yaWdpbiwgZGlyZWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJheSk7XG5cbiAgICB0aGlzLm9yaWdpbiA9IHZvaWQgMDtcbiAgICB0aGlzLmRpcmVjdGlvbiA9IHZvaWQgMDtcbiAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbiB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAtMSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmF5LCBbe1xuICAgIGtleTogXCJpbnRlcnNlY3RzQUFCQlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzQUFCQihhYWJiLCBpbnRlcnNlY3Rpb24pIHtcbiAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24gPyB0aGlzLmludGVyc2VjdEFBQkJXaXRoSW50ZXJzZWN0aW9uKGFhYmIsIGludGVyc2VjdGlvbikgOiB0aGlzLmludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1NwaGVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzU3BoZXJlKHNwaGVyZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgbSA9IHZlYzMuc3ViKHRtcFZlY0EsIHRoaXMub3JpZ2luLCBzcGhlcmUuY2VudGVyKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRtcFZlY0IsIHZlYzMuY29weSh0bXBWZWNCLCB0aGlzLmRpcmVjdGlvbikpO1xuICAgICAgdmFyIGIgPSB2ZWMzLmRvdChtLCB0bXBWZWNCKTtcbiAgICAgIHZhciBjID0gdmVjMy5kb3QobSwgbSkgLSBzcGhlcmUucmFkaXVzICogc3BoZXJlLnJhZGl1czsgLy8gZXhpdCBpZiByYXkncyBvcmlnaW4gb3V0c2lkZSBvZiBzcGhlcmUgKGMgPiAwKSBhbmQgcmF5IHBvaW50aW5nIGF3YXkgZnJvbSBzIChiID4gMClcblxuICAgICAgaWYgKGMgPiAwICYmIGIgPiAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGlzY3IgPSBiICogYiAtIGM7IC8vIGEgbmVnYXRpdmUgZGlzY3JpbWluYW50IGNvcnJlc3BvbmRzIHRvIHJheSBtaXNzaW5nIHNwaGVyZVxuXG4gICAgICBpZiAoZGlzY3IgPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gcmF5IGludGVyc2VjdHMgc3BoZXJlLCBjb21wdXRlIHNtYWxsZXN0IHQgdmFsdWUgb2YgaW50ZXJzZWN0aW9uXG5cblxuICAgICAgdmFyIHQgPSBNYXRoLmFicygtYiAtIE1hdGguc3FydChkaXNjcikpOyAvLyBpZiB0IGlzIG5lZ2F0aXZlLCByYXkgc3RhcnRlZCBpbnNpZGUgc3BoZXJlIHNvIGNsYW1wIHQgdG8gemVyb1xuXG4gICAgICBpZiAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICAgIHZlYzMuY29weShpbnRlcnNlY3Rpb24sIHRoaXMuZGlyZWN0aW9uKTtcbiAgICAgICAgdmVjMy5zY2FsZUFuZEFkZChpbnRlcnNlY3Rpb24sIHRoaXMub3JpZ2luLCBpbnRlcnNlY3Rpb24sIHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1BsYW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNQbGFuZShwbGFuZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdCA9IChwbGFuZS5kaXN0YW5jZSAtIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5vcmlnaW4pKSAvIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgdmFyIGludGVyc2VjdHMgPSB0ID49IDA7XG5cbiAgICAgIGlmIChpbnRlcnNlY3RzICYmIGludGVyc2VjdGlvbikge1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIHRoaXMuZGlyZWN0aW9uLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGZhc3RlciB0aGFuIGltcGxlbWVudHMgbGlrZSBUaHJlZS5qc1xuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c0FBQkJXaXRob3V0SW50ZXJzZWN0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKSB7XG4gICAgICB2YXIgZGlmZiA9IHRtcFZlY0E7XG4gICAgICB2YXIgY3Jvc3MgPSB0bXBWZWNCO1xuICAgICAgdmFyIHByb2QgPSB0bXBWZWNDO1xuICAgICAgdmFyIGFic0RpZmYgPSB0bXBWZWNEO1xuICAgICAgdmFyIGFic0RpciA9IHRtcFZlY0U7XG4gICAgICB2YXIgcmF5RGlyID0gdGhpcy5kaXJlY3Rpb247XG4gICAgICB2ZWMzLnN1YihkaWZmLCB0aGlzLm9yaWdpbiwgYWFiYi5jZW50ZXIpO1xuICAgICAgdmVjMy5zZXQoYWJzRGlmZiwgTWF0aC5hYnMoZGlmZlswXSksIE1hdGguYWJzKGRpZmZbMV0pLCBNYXRoLmFicyhkaWZmWzJdKSk7XG4gICAgICB2ZWMzLm11bChwcm9kLCBkaWZmLCByYXlEaXIpO1xuXG4gICAgICBpZiAoYWJzRGlmZlswXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gJiYgcHJvZFswXSA+PSAwIHx8IGFic0RpZmZbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzFdICYmIHByb2RbMV0gPj0gMCB8fCBhYnNEaWZmWzJdID4gYWFiYi5oYWxmRXh0ZW50c1syXSAmJiBwcm9kWzJdID49IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2ZWMzLnNldChhYnNEaXIsIE1hdGguYWJzKHJheURpclswXSksIE1hdGguYWJzKHJheURpclsxXSksIE1hdGguYWJzKHJheURpclsyXSkpO1xuICAgICAgdmVjMy5jcm9zcyhjcm9zcywgcmF5RGlyLCBkaWZmKTtcbiAgICAgIHZlYzMuc2V0KGNyb3NzLCBNYXRoLmFicyhjcm9zc1swXSksIE1hdGguYWJzKGNyb3NzWzFdKSwgTWF0aC5hYnMoY3Jvc3NbMl0pKTtcbiAgICAgIHJldHVybiAhKGNyb3NzWzBdID4gYWFiYi5oYWxmRXh0ZW50c1sxXSAqIGFic0RpclsyXSArIGFhYmIuaGFsZkV4dGVudHNbMl0gKiBhYnNEaXJbMV0gfHwgY3Jvc3NbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzBdICogYWJzRGlyWzJdICsgYWFiYi5oYWxmRXh0ZW50c1syXSAqIGFic0RpclswXSB8fCBjcm9zc1syXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gKiBhYnNEaXJbMV0gKyBhYWJiLmhhbGZFeHRlbnRzWzFdICogYWJzRGlyWzBdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb24oYWFiYiwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdE1pbiA9IHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCBhYWJiLmdldE1pbigpKTtcbiAgICAgIHZlYzMuc3ViKHRNaW4sIHRNaW4sIHRoaXMub3JpZ2luKTtcbiAgICAgIHZhciB0TWF4ID0gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIGFhYmIuZ2V0TWF4KCkpO1xuICAgICAgdmVjMy5zdWIodE1heCwgdE1heCwgdGhpcy5vcmlnaW4pO1xuICAgICAgdmFyIGRpciA9IHRoaXMuZGlyZWN0aW9uOyAvLyBFbnN1cmUgdGhhdCB3ZSBhcmUgbm90IGRpdmlkaW5nIGl0IGJ5IHplcm9cblxuICAgICAgaWYgKGRpclswXSA9PT0gMCkge1xuICAgICAgICB0TWluWzBdID0gdE1pblswXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMF0gPSB0TWF4WzBdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMF0gLz0gZGlyWzBdO1xuICAgICAgICB0TWF4WzBdIC89IGRpclswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsxXSA9PT0gMCkge1xuICAgICAgICB0TWluWzFdID0gdE1pblsxXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMV0gPSB0TWF4WzFdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMV0gLz0gZGlyWzFdO1xuICAgICAgICB0TWF4WzFdIC89IGRpclsxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsyXSA9PT0gMCkge1xuICAgICAgICB0TWluWzJdID0gdE1pblsyXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMl0gPSB0TWF4WzJdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMl0gLz0gZGlyWzJdO1xuICAgICAgICB0TWF4WzJdIC89IGRpclsyXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlYWxNaW4gPSB2ZWMzLnNldCh0bXBWZWNDLCBNYXRoLm1pbih0TWluWzBdLCB0TWF4WzBdKSwgTWF0aC5taW4odE1pblsxXSwgdE1heFsxXSksIE1hdGgubWluKHRNaW5bMl0sIHRNYXhbMl0pKTtcbiAgICAgIHZhciByZWFsTWF4ID0gdmVjMy5zZXQodG1wVmVjRCwgTWF0aC5tYXgodE1pblswXSwgdE1heFswXSksIE1hdGgubWF4KHRNaW5bMV0sIHRNYXhbMV0pLCBNYXRoLm1heCh0TWluWzJdLCB0TWF4WzJdKSk7XG4gICAgICB2YXIgbWluTWF4ID0gTWF0aC5taW4oTWF0aC5taW4ocmVhbE1heFswXSwgcmVhbE1heFsxXSksIHJlYWxNYXhbMl0pO1xuICAgICAgdmFyIG1heE1pbiA9IE1hdGgubWF4KE1hdGgubWF4KHJlYWxNaW5bMF0sIHJlYWxNaW5bMV0pLCByZWFsTWluWzJdKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gbWluTWF4ID49IG1heE1pbiAmJiBtYXhNaW4gPj0gMDtcblxuICAgICAgaWYgKGludGVyc2VjdHMpIHtcbiAgICAgICAgdmVjMy5jb3B5KGludGVyc2VjdGlvbiwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIGludGVyc2VjdGlvbiwgbWF4TWluKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJheTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js ***! \***************************************************************************************/ /*! exports provided: AABB, BoundingSphere, Mask, Frustum, Plane, Ray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AABB__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AABB */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _AABB__WEBPACK_IMPORTED_MODULE_0__[\"AABB\"]; });\n\n/* harmony import */ var _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BoundingSphere */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__[\"BoundingSphere\"]; });\n\n/* harmony import */ var _Frustum__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Frustum */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Frustum\"]; });\n\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Plane */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _Plane__WEBPACK_IMPORTED_MODULE_3__[\"Plane\"]; });\n\n/* harmony import */ var _Ray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Ray */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _Ray__WEBPACK_IMPORTED_MODULE_4__[\"Ray\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9pbmRleC5qcz8zZmEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QjtBQUNVO0FBQ1A7QUFDRjtBQUNGO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0FBQkInO1xuZXhwb3J0ICogZnJvbSAnLi9Cb3VuZGluZ1NwaGVyZSc7XG5leHBvcnQgKiBmcm9tICcuL0ZydXN0dW0nO1xuZXhwb3J0ICogZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgKiBmcm9tICcuL1JheSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js ***! \**************************************************************************************/ /*! exports provided: generateAABBFromVertices */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return generateAABBFromVertices; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape/AABB */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n/**\n * generate AABB with positions\n * @param positions [x1,y1,z1, x2,y2,z2]\n */\n\nfunction generateAABBFromVertices(positions) {\n var aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_1__[\"AABB\"]();\n var min = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n var max = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n\n for (var i = 3; i < positions.length;) {\n var x = positions[i++];\n var y = positions[i++];\n var z = positions[i++];\n\n if (x < min[0]) {\n min[0] = x;\n }\n\n if (y < min[1]) {\n min[1] = y;\n }\n\n if (z < min[2]) {\n min[2] = z;\n }\n\n if (x > max[0]) {\n max[0] = x;\n }\n\n if (y > max[1]) {\n max[1] = y;\n }\n\n if (z > max[2]) {\n max[2] = z;\n }\n }\n\n aabb.setMinMax(min, max);\n return aabb;\n}\n//# sourceMappingURL=aabb.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzPzMxYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLGlCQUFpQixnREFBSTtBQUNyQixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7O0FBRWhCLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBBQUJCIH0gZnJvbSAnLi4vc2hhcGUvQUFCQic7XG4vKipcbiAqIGdlbmVyYXRlIEFBQkIgd2l0aCBwb3NpdGlvbnNcbiAqIEBwYXJhbSBwb3NpdGlvbnMgW3gxLHkxLHoxLCB4Mix5Mix6Ml1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzKHBvc2l0aW9ucykge1xuICB2YXIgYWFiYiA9IG5ldyBBQUJCKCk7XG4gIHZhciBtaW4gPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG4gIHZhciBtYXggPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG5cbiAgZm9yICh2YXIgaSA9IDM7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOykge1xuICAgIHZhciB4ID0gcG9zaXRpb25zW2krK107XG4gICAgdmFyIHkgPSBwb3NpdGlvbnNbaSsrXTtcbiAgICB2YXIgeiA9IHBvc2l0aW9uc1tpKytdO1xuXG4gICAgaWYgKHggPCBtaW5bMF0pIHtcbiAgICAgIG1pblswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPCBtaW5bMV0pIHtcbiAgICAgIG1pblsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPCBtaW5bMl0pIHtcbiAgICAgIG1pblsyXSA9IHo7XG4gICAgfVxuXG4gICAgaWYgKHggPiBtYXhbMF0pIHtcbiAgICAgIG1heFswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPiBtYXhbMV0pIHtcbiAgICAgIG1heFsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPiBtYXhbMl0pIHtcbiAgICAgIG1heFsyXSA9IHo7XG4gICAgfVxuICB9XG5cbiAgYWFiYi5zZXRNaW5NYXgobWluLCBtYXgpO1xuICByZXR1cm4gYWFiYjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFhYmIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js": /*!*******************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js ***! \*******************************************************************************************/ /*! exports provided: isNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanM/ZTViNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1udW1iZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js": /*!***********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js ***! \***********************************************************************************************/ /*! exports provided: isTypedArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzP2YzYzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLG9FQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG5cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG52YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nO1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcbnZhciBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXSc7XG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG52YXIgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXSc7XG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG52YXIgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xudmFyIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJztcbnZhciBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSc7XG52YXIgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nO1xudmFyIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nO1xudmFyIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nO1xudmFyIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nO1xudmFyIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSc7XG52YXIgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJztcbnZhciB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPSB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9IHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID0gdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cblxudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cblxudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW29iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpXTtcbn1cblxuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0Jztcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzVHlwZWRBcnJheSA9IGJhc2VJc1R5cGVkQXJyYXk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy10eXBlZGFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js ***! \******************************************************************************************/ /*! exports provided: isSafari */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return isSafari; });\nvar isSafari = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\n//# sourceMappingURL=isSafari.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pc1NhZmFyaS5qcz9jMTQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvaXNTYWZhcmkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGlzU2FmYXJpID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL1ZlcnNpb25cXC9bXFxkXFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzU2FmYXJpLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js ***! \**************************************************************************************/ /*! exports provided: getAngle, createVec3, getRotationScale, decodePickingColor, encodePickingColor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRotationScale\", function() { return getRotationScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodePickingColor\", function() { return decodePickingColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js\");\n\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\nfunction getRotationScale(matrix, result) {\n result[0] = matrix[0];\n result[1] = matrix[1];\n result[2] = matrix[2];\n result[3] = matrix[4];\n result[4] = matrix[5];\n result[5] = matrix[6];\n result[6] = matrix[8];\n result[7] = matrix[9];\n result[8] = matrix[10];\n return result;\n}\nfunction decodePickingColor(color) {\n var _color = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(color, 3),\n i1 = _color[0],\n i2 = _color[1],\n i3 = _color[2]; // 1 was added to seperate from no selection\n\n\n var index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n}\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzP2ViNGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0U7QUFDakM7QUFDTTtBQUNoQztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxNQUFNLDJEQUFRO0FBQ2QsV0FBVyw4Q0FBSTtBQUNmOztBQUVBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmLEdBQUc7OztBQUdILFNBQVMsOENBQUk7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyRUFBYztBQUM3QjtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYW5nbGUpIHtcbiAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChhbmdsZSA+IDM2MCB8fCBhbmdsZSA8IC0zNjApIHtcbiAgICByZXR1cm4gYW5nbGUgJSAzNjA7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmVjMyh4LCB5LCB6KSB7XG4gIGlmIChpc051bWJlcih4KSkge1xuICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXMoeCwgeSwgeik7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gdmVjMy5jbG9uZSh4KTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHhbMF0sIHhbMV0sIHhbMl0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdGF0aW9uU2NhbGUobWF0cml4LCByZXN1bHQpIHtcbiAgcmVzdWx0WzBdID0gbWF0cml4WzBdO1xuICByZXN1bHRbMV0gPSBtYXRyaXhbMV07XG4gIHJlc3VsdFsyXSA9IG1hdHJpeFsyXTtcbiAgcmVzdWx0WzNdID0gbWF0cml4WzRdO1xuICByZXN1bHRbNF0gPSBtYXRyaXhbNV07XG4gIHJlc3VsdFs1XSA9IG1hdHJpeFs2XTtcbiAgcmVzdWx0WzZdID0gbWF0cml4WzhdO1xuICByZXN1bHRbN10gPSBtYXRyaXhbOV07XG4gIHJlc3VsdFs4XSA9IG1hdHJpeFsxMF07XG4gIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUGlja2luZ0NvbG9yKGNvbG9yKSB7XG4gIHZhciBfY29sb3IgPSBfc2xpY2VkVG9BcnJheShjb2xvciwgMyksXG4gICAgICBpMSA9IF9jb2xvclswXSxcbiAgICAgIGkyID0gX2NvbG9yWzFdLFxuICAgICAgaTMgPSBfY29sb3JbMl07IC8vIDEgd2FzIGFkZGVkIHRvIHNlcGVyYXRlIGZyb20gbm8gc2VsZWN0aW9uXG5cblxuICB2YXIgaW5kZXggPSBpMSArIGkyICogMjU2ICsgaTMgKiA2NTUzNiAtIDE7XG4gIHJldHVybiBpbmRleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQaWNraW5nQ29sb3IoZmVhdHVyZUlkeCkge1xuICByZXR1cm4gW2ZlYXR1cmVJZHggKyAxICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ID4+IDggJiAyNTVdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js": /*!***********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js ***! \***********************************************************************************************/ /*! exports provided: getUniformLengthByType, extractUniforms */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getUniformLengthByType\", function() { return getUniformLengthByType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\nfunction getUniformLengthByType(type) {\n var arrayLength = 0;\n\n switch (type) {\n case 'vec2':\n case 'ivec2':\n arrayLength = 2;\n break;\n\n case 'vec3':\n case 'ivec3':\n arrayLength = 3;\n break;\n\n case 'vec4':\n case 'ivec4':\n case 'mat2':\n arrayLength = 4;\n break;\n\n case 'mat3':\n arrayLength = 9;\n break;\n\n case 'mat4':\n arrayLength = 16;\n break;\n\n default:\n }\n\n return arrayLength;\n}\nvar uniformRegExp = /uniform\\s+(bool|float|int|vec2|vec3|vec4|ivec2|ivec3|ivec4|mat2|mat3|mat4|sampler2D|samplerCube)\\s+([\\s\\S]*?);/g;\nfunction extractUniforms(content) {\n var uniforms = {};\n content = content.replace(uniformRegExp, function (_, type, c) {\n var defaultValues = c.split(':');\n var uniformName = defaultValues[0].trim();\n var defaultValue = '';\n\n if (defaultValues.length > 1) {\n defaultValue = defaultValues[1].trim();\n } // set default value for uniform according to its type\n // eg. vec2 u -> [0.0, 0.0]\n\n\n switch (type) {\n case 'bool':\n defaultValue = defaultValue === 'true';\n break;\n\n case 'float':\n case 'int':\n defaultValue = Number(defaultValue);\n break;\n\n case 'vec2':\n case 'vec3':\n case 'vec4':\n case 'ivec2':\n case 'ivec3':\n case 'ivec4':\n case 'mat2':\n case 'mat3':\n case 'mat4':\n if (defaultValue) {\n defaultValue = defaultValue.replace('[', '').replace(']', '').split(',').reduce(function (prev, cur) {\n prev.push(Number(cur.trim()));\n return prev;\n }, []);\n } else {\n defaultValue = new Array(getUniformLengthByType(type)).fill(0);\n }\n\n break;\n\n default:\n } // @ts-ignore\n\n\n uniforms[uniformName] = defaultValue;\n return \"uniform \".concat(type, \" \").concat(uniformName, \";\\n\");\n });\n return {\n content: content,\n uniforms: uniforms\n };\n}\n//# sourceMappingURL=shader-module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9zaGFkZXItbW9kdWxlLmpzPzE4MDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtSUFBbUk7QUFDNUg7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw4REFBOEQ7QUFDOUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL3NoYWRlci1tb2R1bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0VW5pZm9ybUxlbmd0aEJ5VHlwZSh0eXBlKSB7XG4gIHZhciBhcnJheUxlbmd0aCA9IDA7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAndmVjMic6XG4gICAgY2FzZSAnaXZlYzInOlxuICAgICAgYXJyYXlMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd2ZWMzJzpcbiAgICBjYXNlICdpdmVjMyc6XG4gICAgICBhcnJheUxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3ZlYzQnOlxuICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICBjYXNlICdtYXQyJzpcbiAgICAgIGFycmF5TGVuZ3RoID0gNDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWF0Myc6XG4gICAgICBhcnJheUxlbmd0aCA9IDk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ21hdDQnOlxuICAgICAgYXJyYXlMZW5ndGggPSAxNjtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBhcnJheUxlbmd0aDtcbn1cbnZhciB1bmlmb3JtUmVnRXhwID0gL3VuaWZvcm1cXHMrKGJvb2x8ZmxvYXR8aW50fHZlYzJ8dmVjM3x2ZWM0fGl2ZWMyfGl2ZWMzfGl2ZWM0fG1hdDJ8bWF0M3xtYXQ0fHNhbXBsZXIyRHxzYW1wbGVyQ3ViZSlcXHMrKFtcXHNcXFNdKj8pOy9nO1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVbmlmb3Jtcyhjb250ZW50KSB7XG4gIHZhciB1bmlmb3JtcyA9IHt9O1xuICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKHVuaWZvcm1SZWdFeHAsIGZ1bmN0aW9uIChfLCB0eXBlLCBjKSB7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBjLnNwbGl0KCc6Jyk7XG4gICAgdmFyIHVuaWZvcm1OYW1lID0gZGVmYXVsdFZhbHVlc1swXS50cmltKCk7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlc1sxXS50cmltKCk7XG4gICAgfSAvLyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgdW5pZm9ybSBhY2NvcmRpbmcgdG8gaXRzIHR5cGVcbiAgICAvLyBlZy4gdmVjMiB1IC0+IFswLjAsIDAuMF1cblxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdib29sJzpcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlID09PSAndHJ1ZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdmbG9hdCc6XG4gICAgICBjYXNlICdpbnQnOlxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBOdW1iZXIoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ZlYzInOlxuICAgICAgY2FzZSAndmVjMyc6XG4gICAgICBjYXNlICd2ZWM0JzpcbiAgICAgIGNhc2UgJ2l2ZWMyJzpcbiAgICAgIGNhc2UgJ2l2ZWMzJzpcbiAgICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICAgIGNhc2UgJ21hdDInOlxuICAgICAgY2FzZSAnbWF0Myc6XG4gICAgICBjYXNlICdtYXQ0JzpcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykuc3BsaXQoJywnKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICAgICAgcHJldi5wdXNoKE51bWJlcihjdXIudHJpbSgpKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IEFycmF5KGdldFVuaWZvcm1MZW5ndGhCeVR5cGUodHlwZSkpLmZpbGwoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdID0gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBcInVuaWZvcm0gXCIuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQodW5pZm9ybU5hbWUsIFwiO1xcblwiKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY29udGVudDogY29udGVudCxcbiAgICB1bmlmb3JtczogdW5pZm9ybXNcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYWRlci1tb2R1bGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js ***! \**************************************************************************************/ /*! exports provided: uniq */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return uniq; });\nfunction uniq(array) {\n return array.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}\n//# sourceMappingURL=uniq.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy91bmlxLmpzPzIxMDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvdW5pcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24gKHYsIGksIGEpIHtcbiAgICByZXR1cm4gYS5pbmRleE9mKHYpID09PSBpO1xuICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaXEuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js ***! \*************************************************************************************/ /*! exports provided: WebGLEngine, WebGPUEngine */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webgl */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return _webgl__WEBPACK_IMPORTED_MODULE_0__[\"WebGLEngine\"]; });\n\n/* harmony import */ var _webgpu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webgpu */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return _webgpu__WEBPACK_IMPORTED_MODULE_1__[\"WebGPUEngine\"]; });\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvaW5kZXguanM/YmE3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzQztBQUNFO0FBQ0g7QUFDckMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJHTEVuZ2luZSB9IGZyb20gJy4vd2ViZ2wnO1xuaW1wb3J0IHsgV2ViR1BVRW5naW5lIH0gZnJvbSAnLi93ZWJncHUnO1xuZXhwb3J0IHsgV2ViR0xFbmdpbmUsIFdlYkdQVUVuZ2luZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js ***! \*****************************************************************************************/ /*! exports provided: isWindowObjectExist, loadScript, loadScriptAsync */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWindowObjectExist\", function() { return isWindowObjectExist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScript\", function() { return loadScript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScriptAsync\", function() { return loadScriptAsync; });\nfunction isWindowObjectExist() {\n return typeof window !== 'undefined';\n}\nfunction loadScript(scriptUrl, onSuccess, onError, scriptId) {\n if (!isWindowObjectExist()) {\n return;\n }\n\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', scriptUrl);\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n script.onload = function () {\n if (onSuccess) {\n onSuccess();\n }\n };\n\n script.onerror = function (e) {\n if (onError) {\n onError(\"Unable to load script '\".concat(scriptUrl, \"'\"), e);\n }\n };\n\n head.appendChild(script);\n}\nfunction loadScriptAsync(scriptUrl, scriptId) {\n return new Promise(function (resolve, reject) {\n loadScript(scriptUrl, function () {\n resolve();\n }, function (message, exception) {\n reject(exception);\n });\n });\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvZG9tLmpzPzhiZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy91dGlscy9kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNXaW5kb3dPYmplY3RFeGlzdCgpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHQoc2NyaXB0VXJsLCBvblN1Y2Nlc3MsIG9uRXJyb3IsIHNjcmlwdElkKSB7XG4gIGlmICghaXNXaW5kb3dPYmplY3RFeGlzdCgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7XG4gIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHNjcmlwdFVybCk7XG5cbiAgaWYgKHNjcmlwdElkKSB7XG4gICAgc2NyaXB0LmlkID0gc2NyaXB0SWQ7XG4gIH1cblxuICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChvblN1Y2Nlc3MpIHtcbiAgICAgIG9uU3VjY2VzcygpO1xuICAgIH1cbiAgfTtcblxuICBzY3JpcHQub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIG9uRXJyb3IoXCJVbmFibGUgdG8gbG9hZCBzY3JpcHQgJ1wiLmNvbmNhdChzY3JpcHRVcmwsIFwiJ1wiKSwgZSk7XG4gICAgfVxuICB9O1xuXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2NyaXB0QXN5bmMoc2NyaXB0VXJsLCBzY3JpcHRJZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGxvYWRTY3JpcHQoc2NyaXB0VXJsLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgZnVuY3Rpb24gKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgcmVqZWN0KGV4Y2VwdGlvbik7XG4gICAgfSk7XG4gIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js": /*!***********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js ***! \***********************************************************************************************/ /*! exports provided: isNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzPzhhMzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLW51bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js": /*!***********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js ***! \***********************************************************************************************/ /*! exports provided: isObject */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction isObject(value) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value);\n\n return value != null && (type === 'object' || type === 'function');\n}\n//# sourceMappingURL=is-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtb2JqZWN0LmpzPzlmNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7QUFDN0M7QUFDUCxhQUFhLG9FQUFPOztBQUVwQjtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtb2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSBfdHlwZW9mKHZhbHVlKTtcblxuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1vYmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js": /*!***************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js ***! \***************************************************************************************************/ /*! exports provided: isTypedArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcz9lNmI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixvRUFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblxudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbnZhciBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XSc7XG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJztcbnZhciBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nO1xudmFyIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcbnZhciBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcbnZhciB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG52YXIgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nO1xudmFyIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJztcbnZhciBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XSc7XG52YXIgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XSc7XG52YXIgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XSc7XG52YXIgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XSc7XG52YXIgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJztcbnZhciB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nO1xudmFyIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG5cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID0gdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID0gdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cblxuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cblxuXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xuXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cblxuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSldO1xufVxuXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgaXNUeXBlZEFycmF5ID0gYmFzZUlzVHlwZWRBcnJheTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGVkYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js": /*!*********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js ***! \*********************************************************************************************/ /*! exports provided: extractUniforms */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js\");\n/* harmony import */ var _is_typedarray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-typedarray */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n/**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n\nfunction extractUniforms(uniforms) {\n var extractedUniforms = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n extractUniformsRecursively(uniformName, uniforms[uniformName], extractedUniforms, '');\n });\n return extractedUniforms;\n}\n\nfunction extractUniformsRecursively(uniformName, uniformValue, uniforms, prefix) {\n if (uniformValue === null || typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n Array.isArray(uniformValue) && typeof uniformValue[0] === 'number' || // u_A: [1, 2, 3]\n Object(_is_typedarray__WEBPACK_IMPORTED_MODULE_1__[\"isTypedArray\"])(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' || // @ts-ignore\n uniformValue.resize !== undefined) {\n uniforms[\"\".concat(prefix && prefix + '.').concat(uniformName)] = uniformValue;\n return;\n } // u_Struct.a.b.c\n\n\n if (Object(_is_object__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(uniformValue)) {\n Object.keys(uniformValue).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n uniformValue[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName));\n });\n } // u_Struct[0].a\n\n\n if (Array.isArray(uniformValue)) {\n // @ts-ignore\n uniformValue.forEach(function (child, idx) {\n Object.keys(child).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n child[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName, \"[\").concat(idx, \"]\"));\n });\n });\n }\n}\n//# sourceMappingURL=uniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvdW5pZm9ybS5qcz80Mzg1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXVDO0FBQ1E7QUFDL0M7QUFDQTtBQUNBLE9BQU8sT0FBTztBQUNkLFNBQVMsT0FBTztBQUNoQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxtRUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSCxNQUFNLDJEQUFRO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL3VuaWZvcm0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0JztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4vaXMtdHlwZWRhcnJheSc7XG4vKipcbiAqIOiAg+iZkee7k+aehOS9k+WRveWQjSwgZWc6XG4gKiBhOiB7IGI6IDEgfSAgLT4gICdhLmInXG4gKiBhOiBbIHsgYjogMSB9IF0gLT4gJ2FbMF0uYidcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gIHZhciBleHRyYWN0ZWRVbmlmb3JtcyA9IHt9O1xuICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICBleHRyYWN0VW5pZm9ybXNSZWN1cnNpdmVseSh1bmlmb3JtTmFtZSwgdW5pZm9ybXNbdW5pZm9ybU5hbWVdLCBleHRyYWN0ZWRVbmlmb3JtcywgJycpO1xuICB9KTtcbiAgcmV0dXJuIGV4dHJhY3RlZFVuaWZvcm1zO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VW5pZm9ybXNSZWN1cnNpdmVseSh1bmlmb3JtTmFtZSwgdW5pZm9ybVZhbHVlLCB1bmlmb3JtcywgcHJlZml4KSB7XG4gIGlmICh1bmlmb3JtVmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHVuaWZvcm1WYWx1ZSA9PT0gJ251bWJlcicgfHwgLy8gdV9BOiAxXG4gIHR5cGVvZiB1bmlmb3JtVmFsdWUgPT09ICdib29sZWFuJyB8fCAvLyB1X0E6IGZhbHNlXG4gIEFycmF5LmlzQXJyYXkodW5pZm9ybVZhbHVlKSAmJiB0eXBlb2YgdW5pZm9ybVZhbHVlWzBdID09PSAnbnVtYmVyJyB8fCAvLyB1X0E6IFsxLCAyLCAzXVxuICBpc1R5cGVkQXJyYXkodW5pZm9ybVZhbHVlKSB8fCAvLyB1X0E6IEZsb2F0MzJBcnJheVxuICAvLyBAdHMtaWdub3JlXG4gIHVuaWZvcm1WYWx1ZSA9PT0gJycgfHwgLy8gQHRzLWlnbm9yZVxuICB1bmlmb3JtVmFsdWUucmVzaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICB1bmlmb3Jtc1tcIlwiLmNvbmNhdChwcmVmaXggJiYgcHJlZml4ICsgJy4nKS5jb25jYXQodW5pZm9ybU5hbWUpXSA9IHVuaWZvcm1WYWx1ZTtcbiAgICByZXR1cm47XG4gIH0gLy8gdV9TdHJ1Y3QuYS5iLmNcblxuXG4gIGlmIChpc09iamVjdCh1bmlmb3JtVmFsdWUpKSB7XG4gICAgT2JqZWN0LmtleXModW5pZm9ybVZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZE5hbWUpIHtcbiAgICAgIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KGNoaWxkTmFtZSwgLy8gQHRzLWlnbm9yZVxuICAgICAgdW5pZm9ybVZhbHVlW2NoaWxkTmFtZV0sIHVuaWZvcm1zLCBcIlwiLmNvbmNhdChwcmVmaXggJiYgcHJlZml4ICsgJy4nKS5jb25jYXQodW5pZm9ybU5hbWUpKTtcbiAgICB9KTtcbiAgfSAvLyB1X1N0cnVjdFswXS5hXG5cblxuICBpZiAoQXJyYXkuaXNBcnJheSh1bmlmb3JtVmFsdWUpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHVuaWZvcm1WYWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaWR4KSB7XG4gICAgICBPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGROYW1lKSB7XG4gICAgICAgIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KGNoaWxkTmFtZSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjaGlsZFtjaGlsZE5hbWVdLCB1bmlmb3JtcywgXCJcIi5jb25jYXQocHJlZml4ICYmIHByZWZpeCArICcuJykuY29uY2F0KHVuaWZvcm1OYW1lLCBcIltcIikuY29uY2F0KGlkeCwgXCJdXCIpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlmb3JtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js": /*!***************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js ***! \***************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#attributes\n */\nvar ReglAttribute = /*#__PURE__*/function () {\n function ReglAttribute(gl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglAttribute);\n\n this.attribute = void 0;\n this.buffer = void 0;\n var buffer = options.buffer,\n offset = options.offset,\n stride = options.stride,\n normalized = options.normalized,\n size = options.size,\n divisor = options.divisor;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return ReglAttribute;\n}();\n\n\n//# sourceMappingURL=ReglAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEF0dHJpYnV0ZS5qcz84NmJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRW1DO0FBQ3BDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xBdHRyaWJ1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYXR0cmlidXRlc1xuICovXG52YXIgUmVnbEF0dHJpYnV0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZ2xBdHRyaWJ1dGUoZ2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEF0dHJpYnV0ZSk7XG5cbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgYnVmZmVyID0gb3B0aW9ucy5idWZmZXIsXG4gICAgICAgIG9mZnNldCA9IG9wdGlvbnMub2Zmc2V0LFxuICAgICAgICBzdHJpZGUgPSBvcHRpb25zLnN0cmlkZSxcbiAgICAgICAgbm9ybWFsaXplZCA9IG9wdGlvbnMubm9ybWFsaXplZCxcbiAgICAgICAgc2l6ZSA9IG9wdGlvbnMuc2l6ZSxcbiAgICAgICAgZGl2aXNvciA9IG9wdGlvbnMuZGl2aXNvcjtcbiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHtcbiAgICAgIGJ1ZmZlcjogYnVmZmVyLmdldCgpLFxuICAgICAgb2Zmc2V0OiBvZmZzZXQgfHwgMCxcbiAgICAgIHN0cmlkZTogc3RyaWRlIHx8IDAsXG4gICAgICBub3JtYWxpemVkOiBub3JtYWxpemVkIHx8IGZhbHNlLFxuICAgICAgZGl2aXNvcjogZGl2aXNvciB8fCAwXG4gICAgfTtcblxuICAgIGlmIChzaXplKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZS5zaXplID0gc2l6ZTtcbiAgICB9XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEF0dHJpYnV0ZSwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihvcHRpb25zKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5zdWJEYXRhKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xBdHRyaWJ1dGU7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xBdHRyaWJ1dGUgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbEF0dHJpYnV0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js": /*!************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js ***! \************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglBuffer = /*#__PURE__*/function () {\n function ReglBuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglBuffer);\n\n this.buffer = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type; // @ts-ignore\n\n this.buffer = reGl.buffer({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE] // length: 0,\n\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n // @ts-ignore\n this.buffer.subdata(data, offset);\n }\n }]);\n\n return ReglBuffer;\n}();\n\n\n//# sourceMappingURL=ReglBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEJ1ZmZlci5qcz81MDQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNyQjtBQUNXO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSxhQUFhLG1EQUFRLFVBQVUsc0RBQUU7QUFDakMsWUFBWSxzREFBVyxTQUFTLHNEQUFFOztBQUVsQyxLQUFLO0FBQ0w7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWdDO0FBQ2pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgZGF0YVR5cGVNYXAsIHVzYWdlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBhZGFwdG9yIGZvciByZWdsLkJ1ZmZlclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYnVmZmVyc1xuICovXG5cbnZhciBSZWdsQnVmZmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEJ1ZmZlcihyZUdsLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZ2xCdWZmZXIpO1xuXG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gb3B0aW9ucy51c2FnZSxcbiAgICAgICAgdHlwZSA9IG9wdGlvbnMudHlwZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgdGhpcy5idWZmZXIgPSByZUdsLmJ1ZmZlcih7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgdXNhZ2U6IHVzYWdlTWFwW3VzYWdlIHx8IGdsLlNUQVRJQ19EUkFXXSxcbiAgICAgIHR5cGU6IGRhdGFUeXBlTWFwW3R5cGUgfHwgZ2wuVU5TSUdORURfQllURV0gLy8gbGVuZ3RoOiAwLFxuXG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkgey8vIHRoaXMuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3ViRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJEYXRhKF9yZWYpIHtcbiAgICAgIHZhciBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICAgIG9mZnNldCA9IF9yZWYub2Zmc2V0O1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5idWZmZXIuc3ViZGF0YShkYXRhLCBvZmZzZXQpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsQnVmZmVyO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsQnVmZmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js ***! \******************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglComputeModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n/* babel-plugin-inline-import './shaders/quad.vert.glsl' */\nvar quadVert = \"attribute vec3 a_Position;\\nattribute vec2 a_TexCoord;\\n\\nvarying vec2 v_TexCoord;\\n\\nvoid main() {\\n gl_Position = vec4(a_Position, 1.0);\\n v_TexCoord = a_TexCoord;\\n}\";\nvar textureId = 0;\nvar debug = false;\n/**\n * adaptor for regl.DrawCommand\n */\n\nvar ReglComputeModel = /*#__PURE__*/function () {\n function ReglComputeModel(reGl, context) {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, ReglComputeModel);\n\n this.reGl = reGl;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"createEntity\"])();\n this.texFBO = void 0;\n this.computeCommand = void 0;\n this.textureCache = {};\n this.outputTextureName = void 0;\n this.swapOutputTextureName = void 0;\n this.compiledPingpong = void 0;\n this.dynamicPingpong = void 0;\n var uniforms = {};\n this.context.uniforms.forEach(function (uniform) {\n var name = uniform.name,\n type = uniform.type,\n data = uniform.data,\n isReferer = uniform.isReferer,\n storageClass = uniform.storageClass; // store data with a 2D texture\n\n if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].StorageBuffer) {\n if (!isReferer) {\n _this.textureCache[name] = _this.calcDataTexture(name, type, data);\n var _this$textureCache$na = _this.textureCache[name],\n width = _this$textureCache$na.textureWidth,\n isOutput = _this$textureCache$na.isOutput;\n uniforms[\"\".concat(name, \"Size\")] = [width, width];\n\n if (isOutput) {\n _this.outputTextureName = name;\n\n if (_this.context.needPingpong) {\n _this.outputTextureName = \"\".concat(name, \"Output\");\n _this.textureCache[_this.outputTextureName] = _this.calcDataTexture(name, type, data);\n }\n }\n } else {\n // @ts-ignore\n _this.textureCache[name] = {\n data: undefined\n }; // refer to another kernel's output,\n // the referred kernel may not have been initialized, so we use dynamic way here\n\n uniforms[\"\".concat(name, \"Size\")] = function () {\n return (// @ts-ignore\n data.compiledBundle.context.output.textureSize\n );\n };\n }\n\n uniforms[name] = function () {\n if (debug) {\n console.log(\"[\".concat(_this.entity, \"]: \").concat(name, \" \").concat(_this.textureCache[name].id));\n }\n\n return _this.textureCache[name].texture;\n };\n } else if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].Uniform) {\n if (data && (Array.isArray(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data)) && data.length > 16) {\n // up to mat4 which includes 16 elements\n throw new Error(\"invalid data type \".concat(type));\n } // get uniform dynamically\n\n\n uniforms[name] = function () {\n return uniform.data;\n };\n }\n });\n\n var _this$getOuputDataTex = this.getOuputDataTexture(),\n textureWidth = _this$getOuputDataTex.textureWidth,\n texelCount = _this$getOuputDataTex.texelCount; // 传入 output 纹理尺寸和数据长度,便于多余的 texel 提前退出\n\n\n uniforms.u_OutputTextureSize = [textureWidth, textureWidth];\n uniforms.u_OutputTexelCount = texelCount; // 保存在 Kernel 的上下文中,供其他 Kernel 引用\n\n this.context.output.textureSize = [textureWidth, textureWidth];\n var drawParams = {\n attributes: {\n a_Position: [[-1, 1, 0], [-1, -1, 0], [1, 1, 0], [1, -1, 0]],\n a_TexCoord: [[0, 1], [0, 0], [1, 1], [1, 0]]\n },\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(this.context.shader),\n uniforms: uniforms,\n vert: quadVert,\n // TODO: use a fullscreen triangle instead.\n primitive: 'triangle strip',\n count: 4\n };\n this.computeCommand = this.reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(ReglComputeModel, [{\n key: \"run\",\n value: function run() {\n var _this2 = this;\n\n if (this.context.maxIteration > 1 && this.context.needPingpong) {\n this.compiledPingpong = true;\n } // need pingpong when (@in@out and execute(10)) or use `setBinding('out', self)`\n // this.needPingpong =\n // !!(this.context.maxIteration > 1 && this.context.needPingpong);\n // if (this.relativeOutputTextureNames.length) {\n // const { id, texture } = this.getOuputDataTexture();\n // this.relativeOutputTextureNames.forEach((name) => {\n // this.textureCache[name].id = id;\n // this.textureCache[name].texture = texture;\n // });\n // this.swap();\n // }\n\n\n if (this.compiledPingpong || this.dynamicPingpong) {\n this.swap();\n }\n\n this.texFBO = this.reGl.framebuffer({\n color: this.getOuputDataTexture().texture\n });\n this.texFBO.use(function () {\n _this2.computeCommand();\n });\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this3 = this;\n\n var pixels, _this$getOuputDataTex2, originalDataLength, elementsPerTexel, _this$getOuputDataTex3, typedArrayConstructor, formattedPixels, i;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.reGl({\n framebuffer: this.texFBO\n })(function () {\n pixels = _this3.reGl.read();\n }); // @ts-ignore\n\n if (!pixels) {\n _context.next = 6;\n break;\n }\n\n _this$getOuputDataTex2 = this.getOuputDataTexture(), originalDataLength = _this$getOuputDataTex2.originalDataLength, elementsPerTexel = _this$getOuputDataTex2.elementsPerTexel, _this$getOuputDataTex3 = _this$getOuputDataTex2.typedArrayConstructor, typedArrayConstructor = _this$getOuputDataTex3 === void 0 ? Float32Array : _this$getOuputDataTex3;\n formattedPixels = [];\n\n if (elementsPerTexel !== 4) {\n for (i = 0; i < pixels.length; i += 4) {\n if (elementsPerTexel === 1) {\n formattedPixels.push(pixels[i]);\n } else if (elementsPerTexel === 2) {\n formattedPixels.push(pixels[i], pixels[i + 1]);\n } else {\n formattedPixels.push(pixels[i], pixels[i + 1], pixels[i + 2]);\n }\n }\n } else {\n // @ts-ignore\n formattedPixels = pixels;\n } // 截取多余的部分\n // @ts-ignore\n\n\n return _context.abrupt(\"return\", new typedArrayConstructor(formattedPixels.slice(0, originalDataLength)));\n\n case 6:\n return _context.abrupt(\"return\", new Float32Array());\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n var inputModel; // refer to self, same as pingpong\n\n if (this.entity === model.entity) {\n this.dynamicPingpong = true;\n inputModel = this;\n } else {\n inputModel = model;\n }\n\n this.textureCache[inputName].id = inputModel.getOuputDataTexture().id;\n this.textureCache[inputName].texture = inputModel.getOuputDataTexture().texture;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: confirm input \").concat(inputName, \" from model \").concat(inputModel.entity, \", \").concat(inputModel.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform() {// already get uniform's data dynamically when created, do nothing here\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // regenerate data texture\n var buffer = this.context.uniforms.find(function (_ref) {\n var name = _ref.name;\n return name === bufferName;\n });\n\n if (buffer) {\n var _this$calcDataTexture = this.calcDataTexture(bufferName, buffer.type, data),\n texture = _this$calcDataTexture.texture,\n paddingData = _this$calcDataTexture.data; // TODO: destroy outdated texture\n\n\n this.textureCache[bufferName].data = paddingData;\n this.textureCache[bufferName].texture = texture;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// regl will destroy all resources\n }\n }, {\n key: \"swap\",\n value: function swap() {\n if (!this.swapOutputTextureName) {\n this.createSwapOutputDataTexture();\n }\n\n if (this.compiledPingpong) {\n var outputTextureUniformName = this.context.output.name;\n this.textureCache[outputTextureUniformName].id = this.getOuputDataTexture().id;\n this.textureCache[outputTextureUniformName].texture = this.getOuputDataTexture().texture;\n }\n\n var tmp = this.outputTextureName;\n this.outputTextureName = this.swapOutputTextureName;\n this.swapOutputTextureName = tmp;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: after swap, output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"getOuputDataTexture\",\n value: function getOuputDataTexture() {\n return this.textureCache[this.outputTextureName];\n }\n }, {\n key: \"createSwapOutputDataTexture\",\n value: function createSwapOutputDataTexture() {\n var texture = this.cloneDataTexture(this.getOuputDataTexture());\n this.swapOutputTextureName = \"\".concat(this.entity, \"-swap\");\n this.textureCache[this.swapOutputTextureName] = texture;\n }\n }, {\n key: \"cloneDataTexture\",\n value: function cloneDataTexture(texture) {\n var data = texture.data,\n textureWidth = texture.textureWidth;\n return _objectSpread(_objectSpread({}, texture), {}, {\n id: textureId++,\n // @ts-ignore\n texture: this.reGl.texture({\n width: textureWidth,\n height: textureWidth,\n data: data,\n type: 'float'\n })\n });\n }\n }, {\n key: \"calcDataTexture\",\n value: function calcDataTexture(name, type, data) {\n var elementsPerTexel = 1;\n\n if (type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n elementsPerTexel = 4;\n } // 用 0 补全不足 vec4 的部分\n\n\n var paddingData = [];\n\n for (var i = 0; i < data.length; i += elementsPerTexel) {\n if (elementsPerTexel === 1) {\n paddingData.push(data[i], 0, 0, 0);\n } else if (elementsPerTexel === 2) {\n paddingData.push(data[i], data[i + 1], 0, 0);\n } else if (elementsPerTexel === 3) {\n paddingData.push(data[i], data[i + 1], data[i + 2], 0);\n } else if (elementsPerTexel === 4) {\n paddingData.push(data[i], data[i + 1], data[i + 2], data[i + 3]);\n }\n } // 使用纹理存储,例如 Array(8) 使用 3 * 3 纹理,末尾空白使用 0 填充\n\n\n var originalDataLength = data.length;\n var texelCount = Math.ceil(originalDataLength / elementsPerTexel);\n var width = Math.ceil(Math.sqrt(texelCount));\n var paddingTexelCount = width * width;\n\n if (texelCount < paddingTexelCount) {\n paddingData.push.apply(paddingData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(new Array((paddingTexelCount - texelCount) * 4).fill(0)));\n }\n\n var texture = this.reGl.texture({\n width: width,\n height: width,\n data: paddingData,\n type: 'float'\n });\n return {\n id: textureId++,\n data: paddingData,\n originalDataLength: originalDataLength,\n typedArrayConstructor: Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data) ? data.constructor : undefined,\n textureWidth: width,\n texture: texture,\n texelCount: texelCount,\n elementsPerTexel: elementsPerTexel,\n isOutput: name === this.context.output.name\n };\n }\n }]);\n\n return ReglComputeModel;\n}();\n\n\n//# sourceMappingURL=ReglComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbENvbXB1dGVNb2RlbC5qcz9iZTAxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ047QUFDUDtBQUNXO0FBQ0o7QUFDTjs7QUFFOUQsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVqYztBQUM3Qjs7QUFFdEQ7QUFDQSwwQ0FBMEMsNEJBQTRCLDRCQUE0QixpQkFBaUIsd0NBQXdDLDRCQUE0QixHQUFHO0FBQzFMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSxrQkFBa0Isd0VBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDLDJCQUEyQixpRUFBYTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU8sMkJBQTJCLGlFQUFhO0FBQy9DLDRDQUE0Qyx5RUFBWTtBQUN4RDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxzREFBc0Q7OztBQUd0RDtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCx3RUFBd0UsbUNBQW1DO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0JBQXNCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN6RTs7QUFFQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCLEVBQUU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsbUJBQW1CO0FBQ2hEO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7OztBQUdBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHFDQUFxQztBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EscURBQXFEOzs7QUFHckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsY0FBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixtRUFBZTtBQUNsQztBQUNBLE9BQU87OztBQUdQOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsK0VBQWtCO0FBQzlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IseUVBQVk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFc0M7QUFDdkMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbENvbXB1dGVNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IEFTVF9UT0tFTl9UWVBFUywgY3JlYXRlRW50aXR5LCBTVE9SQUdFX0NMQVNTIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpc1R5cGVkQXJyYXkgfSBmcm9tICcuLi91dGlscy9pcy10eXBlZGFycmF5JztcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy9xdWFkLnZlcnQuZ2xzbCcgKi9cbnZhciBxdWFkVmVydCA9IFwiYXR0cmlidXRlIHZlYzMgYV9Qb3NpdGlvbjtcXG5hdHRyaWJ1dGUgdmVjMiBhX1RleENvb3JkO1xcblxcbnZhcnlpbmcgdmVjMiB2X1RleENvb3JkO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAxLjApO1xcbiAgdl9UZXhDb29yZCA9IGFfVGV4Q29vcmQ7XFxufVwiO1xudmFyIHRleHR1cmVJZCA9IDA7XG52YXIgZGVidWcgPSBmYWxzZTtcbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5EcmF3Q29tbWFuZFxuICovXG5cbnZhciBSZWdsQ29tcHV0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbENvbXB1dGVNb2RlbChyZUdsLCBjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsQ29tcHV0ZU1vZGVsKTtcblxuICAgIHRoaXMucmVHbCA9IHJlR2w7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLmVudGl0eSA9IGNyZWF0ZUVudGl0eSgpO1xuICAgIHRoaXMudGV4RkJPID0gdm9pZCAwO1xuICAgIHRoaXMuY29tcHV0ZUNvbW1hbmQgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0dXJlQ2FjaGUgPSB7fTtcbiAgICB0aGlzLm91dHB1dFRleHR1cmVOYW1lID0gdm9pZCAwO1xuICAgIHRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lID0gdm9pZCAwO1xuICAgIHRoaXMuY29tcGlsZWRQaW5ncG9uZyA9IHZvaWQgMDtcbiAgICB0aGlzLmR5bmFtaWNQaW5ncG9uZyA9IHZvaWQgMDtcbiAgICB2YXIgdW5pZm9ybXMgPSB7fTtcbiAgICB0aGlzLmNvbnRleHQudW5pZm9ybXMuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybSkge1xuICAgICAgdmFyIG5hbWUgPSB1bmlmb3JtLm5hbWUsXG4gICAgICAgICAgdHlwZSA9IHVuaWZvcm0udHlwZSxcbiAgICAgICAgICBkYXRhID0gdW5pZm9ybS5kYXRhLFxuICAgICAgICAgIGlzUmVmZXJlciA9IHVuaWZvcm0uaXNSZWZlcmVyLFxuICAgICAgICAgIHN0b3JhZ2VDbGFzcyA9IHVuaWZvcm0uc3RvcmFnZUNsYXNzOyAvLyBzdG9yZSBkYXRhIHdpdGggYSAyRCB0ZXh0dXJlXG5cbiAgICAgIGlmIChzdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuU3RvcmFnZUJ1ZmZlcikge1xuICAgICAgICBpZiAoIWlzUmVmZXJlcikge1xuICAgICAgICAgIF90aGlzLnRleHR1cmVDYWNoZVtuYW1lXSA9IF90aGlzLmNhbGNEYXRhVGV4dHVyZShuYW1lLCB0eXBlLCBkYXRhKTtcbiAgICAgICAgICB2YXIgX3RoaXMkdGV4dHVyZUNhY2hlJG5hID0gX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdLFxuICAgICAgICAgICAgICB3aWR0aCA9IF90aGlzJHRleHR1cmVDYWNoZSRuYS50ZXh0dXJlV2lkdGgsXG4gICAgICAgICAgICAgIGlzT3V0cHV0ID0gX3RoaXMkdGV4dHVyZUNhY2hlJG5hLmlzT3V0cHV0O1xuICAgICAgICAgIHVuaWZvcm1zW1wiXCIuY29uY2F0KG5hbWUsIFwiU2l6ZVwiKV0gPSBbd2lkdGgsIHdpZHRoXTtcblxuICAgICAgICAgIGlmIChpc091dHB1dCkge1xuICAgICAgICAgICAgX3RoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSBuYW1lO1xuXG4gICAgICAgICAgICBpZiAoX3RoaXMuY29udGV4dC5uZWVkUGluZ3BvbmcpIHtcbiAgICAgICAgICAgICAgX3RoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSBcIlwiLmNvbmNhdChuYW1lLCBcIk91dHB1dFwiKTtcbiAgICAgICAgICAgICAgX3RoaXMudGV4dHVyZUNhY2hlW190aGlzLm91dHB1dFRleHR1cmVOYW1lXSA9IF90aGlzLmNhbGNEYXRhVGV4dHVyZShuYW1lLCB0eXBlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIF90aGlzLnRleHR1cmVDYWNoZVtuYW1lXSA9IHtcbiAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZFxuICAgICAgICAgIH07IC8vIHJlZmVyIHRvIGFub3RoZXIga2VybmVsJ3Mgb3V0cHV0LFxuICAgICAgICAgIC8vIHRoZSByZWZlcnJlZCBrZXJuZWwgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQsIHNvIHdlIHVzZSBkeW5hbWljIHdheSBoZXJlXG5cbiAgICAgICAgICB1bmlmb3Jtc1tcIlwiLmNvbmNhdChuYW1lLCBcIlNpemVcIildID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICgvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGEuY29tcGlsZWRCdW5kbGUuY29udGV4dC5vdXRwdXQudGV4dHVyZVNpemVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVuaWZvcm1zW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbXCIuY29uY2F0KF90aGlzLmVudGl0eSwgXCJdOiBcIikuY29uY2F0KG5hbWUsIFwiIFwiKS5jb25jYXQoX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdLmlkKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIF90aGlzLnRleHR1cmVDYWNoZVtuYW1lXS50ZXh0dXJlO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChzdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuVW5pZm9ybSkge1xuICAgICAgICBpZiAoZGF0YSAmJiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1R5cGVkQXJyYXkoZGF0YSkpICYmIGRhdGEubGVuZ3RoID4gMTYpIHtcbiAgICAgICAgICAvLyB1cCB0byBtYXQ0IHdoaWNoIGluY2x1ZGVzIDE2IGVsZW1lbnRzXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBkYXRhIHR5cGUgXCIuY29uY2F0KHR5cGUpKTtcbiAgICAgICAgfSAvLyBnZXQgdW5pZm9ybSBkeW5hbWljYWxseVxuXG5cbiAgICAgICAgdW5pZm9ybXNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHVuaWZvcm0uZGF0YTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciBfdGhpcyRnZXRPdXB1dERhdGFUZXggPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKSxcbiAgICAgICAgdGV4dHVyZVdpZHRoID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4LnRleHR1cmVXaWR0aCxcbiAgICAgICAgdGV4ZWxDb3VudCA9IF90aGlzJGdldE91cHV0RGF0YVRleC50ZXhlbENvdW50OyAvLyDkvKDlhaUgb3V0cHV0IOe6ueeQhuWwuuWvuOWSjOaVsOaNrumVv+W6pu+8jOS+v+S6juWkmuS9meeahCB0ZXhlbCDmj5DliY3pgIDlh7pcblxuXG4gICAgdW5pZm9ybXMudV9PdXRwdXRUZXh0dXJlU2l6ZSA9IFt0ZXh0dXJlV2lkdGgsIHRleHR1cmVXaWR0aF07XG4gICAgdW5pZm9ybXMudV9PdXRwdXRUZXhlbENvdW50ID0gdGV4ZWxDb3VudDsgLy8g5L+d5a2Y5ZyoIEtlcm5lbCDnmoTkuIrkuIvmlofkuK3vvIzkvpvlhbbku5YgS2VybmVsIOW8leeUqFxuXG4gICAgdGhpcy5jb250ZXh0Lm91dHB1dC50ZXh0dXJlU2l6ZSA9IFt0ZXh0dXJlV2lkdGgsIHRleHR1cmVXaWR0aF07XG4gICAgdmFyIGRyYXdQYXJhbXMgPSB7XG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGFfUG9zaXRpb246IFtbLTEsIDEsIDBdLCBbLTEsIC0xLCAwXSwgWzEsIDEsIDBdLCBbMSwgLTEsIDBdXSxcbiAgICAgICAgYV9UZXhDb29yZDogW1swLCAxXSwgWzAsIDBdLCBbMSwgMV0sIFsxLCAwXV1cbiAgICAgIH0sXG4gICAgICBmcmFnOiBcIiNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSFxcbiAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbHNlXFxuICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cIi5jb25jYXQodGhpcy5jb250ZXh0LnNoYWRlciksXG4gICAgICB1bmlmb3JtczogdW5pZm9ybXMsXG4gICAgICB2ZXJ0OiBxdWFkVmVydCxcbiAgICAgIC8vIFRPRE86IHVzZSBhIGZ1bGxzY3JlZW4gdHJpYW5nbGUgaW5zdGVhZC5cbiAgICAgIHByaW1pdGl2ZTogJ3RyaWFuZ2xlIHN0cmlwJyxcbiAgICAgIGNvdW50OiA0XG4gICAgfTtcbiAgICB0aGlzLmNvbXB1dGVDb21tYW5kID0gdGhpcy5yZUdsKGRyYXdQYXJhbXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlZ2xDb21wdXRlTW9kZWwsIFt7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuY29udGV4dC5tYXhJdGVyYXRpb24gPiAxICYmIHRoaXMuY29udGV4dC5uZWVkUGluZ3BvbmcpIHtcbiAgICAgICAgdGhpcy5jb21waWxlZFBpbmdwb25nID0gdHJ1ZTtcbiAgICAgIH0gLy8gbmVlZCBwaW5ncG9uZyB3aGVuIChAaW5Ab3V0IGFuZCBleGVjdXRlKDEwKSkgb3IgdXNlIGBzZXRCaW5kaW5nKCdvdXQnLCBzZWxmKWBcbiAgICAgIC8vIHRoaXMubmVlZFBpbmdwb25nID1cbiAgICAgIC8vICAgISEodGhpcy5jb250ZXh0Lm1heEl0ZXJhdGlvbiA+IDEgJiYgdGhpcy5jb250ZXh0Lm5lZWRQaW5ncG9uZyk7XG4gICAgICAvLyBpZiAodGhpcy5yZWxhdGl2ZU91dHB1dFRleHR1cmVOYW1lcy5sZW5ndGgpIHtcbiAgICAgIC8vICAgY29uc3QgeyBpZCwgdGV4dHVyZSB9ID0gdGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCk7XG4gICAgICAvLyAgIHRoaXMucmVsYXRpdmVPdXRwdXRUZXh0dXJlTmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgLy8gICAgIHRoaXMudGV4dHVyZUNhY2hlW25hbWVdLmlkID0gaWQ7XG4gICAgICAvLyAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0udGV4dHVyZSA9IHRleHR1cmU7XG4gICAgICAvLyAgIH0pO1xuICAgICAgLy8gICB0aGlzLnN3YXAoKTtcbiAgICAgIC8vIH1cblxuXG4gICAgICBpZiAodGhpcy5jb21waWxlZFBpbmdwb25nIHx8IHRoaXMuZHluYW1pY1Bpbmdwb25nKSB7XG4gICAgICAgIHRoaXMuc3dhcCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRleEZCTyA9IHRoaXMucmVHbC5mcmFtZWJ1ZmZlcih7XG4gICAgICAgIGNvbG9yOiB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS50ZXh0dXJlXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGV4RkJPLnVzZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5jb21wdXRlQ29tbWFuZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIltcIi5jb25jYXQodGhpcy5lbnRpdHksIFwiXTogb3V0cHV0IFwiKS5jb25jYXQodGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCkuaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZERhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWFkRGF0YSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAgIHZhciBwaXhlbHMsIF90aGlzJGdldE91cHV0RGF0YVRleDIsIG9yaWdpbmFsRGF0YUxlbmd0aCwgZWxlbWVudHNQZXJUZXhlbCwgX3RoaXMkZ2V0T3VwdXREYXRhVGV4MywgdHlwZWRBcnJheUNvbnN0cnVjdG9yLCBmb3JtYXR0ZWRQaXhlbHMsIGk7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLnJlR2woe1xuICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXI6IHRoaXMudGV4RkJPXG4gICAgICAgICAgICAgICAgfSkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgcGl4ZWxzID0gX3RoaXMzLnJlR2wucmVhZCgpO1xuICAgICAgICAgICAgICAgIH0pOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgICBpZiAoIXBpeGVscykge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfdGhpcyRnZXRPdXB1dERhdGFUZXgyID0gdGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCksIG9yaWdpbmFsRGF0YUxlbmd0aCA9IF90aGlzJGdldE91cHV0RGF0YVRleDIub3JpZ2luYWxEYXRhTGVuZ3RoLCBlbGVtZW50c1BlclRleGVsID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4Mi5lbGVtZW50c1BlclRleGVsLCBfdGhpcyRnZXRPdXB1dERhdGFUZXgzID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4Mi50eXBlZEFycmF5Q29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IF90aGlzJGdldE91cHV0RGF0YVRleDMgPT09IHZvaWQgMCA/IEZsb2F0MzJBcnJheSA6IF90aGlzJGdldE91cHV0RGF0YVRleDM7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNQZXJUZXhlbCAhPT0gNCkge1xuICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpeGVscy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFBpeGVscy5wdXNoKHBpeGVsc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFBpeGVscy5wdXNoKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzLnB1c2gocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDFdLCBwaXhlbHNbaSArIDJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRQaXhlbHMgPSBwaXhlbHM7XG4gICAgICAgICAgICAgICAgfSAvLyDmiKrlj5blpJrkvZnnmoTpg6jliIZcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3Rvcihmb3JtYXR0ZWRQaXhlbHMuc2xpY2UoMCwgb3JpZ2luYWxEYXRhTGVuZ3RoKSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIG5ldyBGbG9hdDMyQXJyYXkoKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiByZWFkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIF9yZWFkRGF0YS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVhZERhdGE7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiY29uZmlybUlucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbmZpcm1JbnB1dChtb2RlbCwgaW5wdXROYW1lKSB7XG4gICAgICB2YXIgaW5wdXRNb2RlbDsgLy8gcmVmZXIgdG8gc2VsZiwgc2FtZSBhcyBwaW5ncG9uZ1xuXG4gICAgICBpZiAodGhpcy5lbnRpdHkgPT09IG1vZGVsLmVudGl0eSkge1xuICAgICAgICB0aGlzLmR5bmFtaWNQaW5ncG9uZyA9IHRydWU7XG4gICAgICAgIGlucHV0TW9kZWwgPSB0aGlzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5wdXRNb2RlbCA9IG1vZGVsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRleHR1cmVDYWNoZVtpbnB1dE5hbWVdLmlkID0gaW5wdXRNb2RlbC5nZXRPdXB1dERhdGFUZXh0dXJlKCkuaWQ7XG4gICAgICB0aGlzLnRleHR1cmVDYWNoZVtpbnB1dE5hbWVdLnRleHR1cmUgPSBpbnB1dE1vZGVsLmdldE91cHV0RGF0YVRleHR1cmUoKS50ZXh0dXJlO1xuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbXCIuY29uY2F0KHRoaXMuZW50aXR5LCBcIl06IGNvbmZpcm0gaW5wdXQgXCIpLmNvbmNhdChpbnB1dE5hbWUsIFwiIGZyb20gbW9kZWwgXCIpLmNvbmNhdChpbnB1dE1vZGVsLmVudGl0eSwgXCIsIFwiKS5jb25jYXQoaW5wdXRNb2RlbC5nZXRPdXB1dERhdGFUZXh0dXJlKCkuaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlVW5pZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVVbmlmb3JtKCkgey8vIGFscmVhZHkgZ2V0IHVuaWZvcm0ncyBkYXRhIGR5bmFtaWNhbGx5IHdoZW4gY3JlYXRlZCwgZG8gbm90aGluZyBoZXJlXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUJ1ZmZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCdWZmZXIoYnVmZmVyTmFtZSwgZGF0YSkge1xuICAgICAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMDtcbiAgICAgIC8vIHJlZ2VuZXJhdGUgZGF0YSB0ZXh0dXJlXG4gICAgICB2YXIgYnVmZmVyID0gdGhpcy5jb250ZXh0LnVuaWZvcm1zLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lID09PSBidWZmZXJOYW1lO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChidWZmZXIpIHtcbiAgICAgICAgdmFyIF90aGlzJGNhbGNEYXRhVGV4dHVyZSA9IHRoaXMuY2FsY0RhdGFUZXh0dXJlKGJ1ZmZlck5hbWUsIGJ1ZmZlci50eXBlLCBkYXRhKSxcbiAgICAgICAgICAgIHRleHR1cmUgPSBfdGhpcyRjYWxjRGF0YVRleHR1cmUudGV4dHVyZSxcbiAgICAgICAgICAgIHBhZGRpbmdEYXRhID0gX3RoaXMkY2FsY0RhdGFUZXh0dXJlLmRhdGE7IC8vIFRPRE86IGRlc3Ryb3kgb3V0ZGF0ZWQgdGV4dHVyZVxuXG5cbiAgICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbYnVmZmVyTmFtZV0uZGF0YSA9IHBhZGRpbmdEYXRhO1xuICAgICAgICB0aGlzLnRleHR1cmVDYWNoZVtidWZmZXJOYW1lXS50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkgey8vIHJlZ2wgd2lsbCBkZXN0cm95IGFsbCByZXNvdXJjZXNcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3dhcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzd2FwKCkge1xuICAgICAgaWYgKCF0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVN3YXBPdXRwdXREYXRhVGV4dHVyZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb21waWxlZFBpbmdwb25nKSB7XG4gICAgICAgIHZhciBvdXRwdXRUZXh0dXJlVW5pZm9ybU5hbWUgPSB0aGlzLmNvbnRleHQub3V0cHV0Lm5hbWU7XG4gICAgICAgIHRoaXMudGV4dHVyZUNhY2hlW291dHB1dFRleHR1cmVVbmlmb3JtTmFtZV0uaWQgPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZDtcbiAgICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbb3V0cHV0VGV4dHVyZVVuaWZvcm1OYW1lXS50ZXh0dXJlID0gdGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCkudGV4dHVyZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRtcCA9IHRoaXMub3V0cHV0VGV4dHVyZU5hbWU7XG4gICAgICB0aGlzLm91dHB1dFRleHR1cmVOYW1lID0gdGhpcy5zd2FwT3V0cHV0VGV4dHVyZU5hbWU7XG4gICAgICB0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZSA9IHRtcDtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1wiLmNvbmNhdCh0aGlzLmVudGl0eSwgXCJdOiBhZnRlciBzd2FwLCBvdXRwdXQgXCIpLmNvbmNhdCh0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRPdXB1dERhdGFUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE91cHV0RGF0YVRleHR1cmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0dXJlQ2FjaGVbdGhpcy5vdXRwdXRUZXh0dXJlTmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVN3YXBPdXRwdXREYXRhVGV4dHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTd2FwT3V0cHV0RGF0YVRleHR1cmUoKSB7XG4gICAgICB2YXIgdGV4dHVyZSA9IHRoaXMuY2xvbmVEYXRhVGV4dHVyZSh0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKSk7XG4gICAgICB0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZSA9IFwiXCIuY29uY2F0KHRoaXMuZW50aXR5LCBcIi1zd2FwXCIpO1xuICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbdGhpcy5zd2FwT3V0cHV0VGV4dHVyZU5hbWVdID0gdGV4dHVyZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xvbmVEYXRhVGV4dHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9uZURhdGFUZXh0dXJlKHRleHR1cmUpIHtcbiAgICAgIHZhciBkYXRhID0gdGV4dHVyZS5kYXRhLFxuICAgICAgICAgIHRleHR1cmVXaWR0aCA9IHRleHR1cmUudGV4dHVyZVdpZHRoO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGV4dHVyZSksIHt9LCB7XG4gICAgICAgIGlkOiB0ZXh0dXJlSWQrKyxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0ZXh0dXJlOiB0aGlzLnJlR2wudGV4dHVyZSh7XG4gICAgICAgICAgd2lkdGg6IHRleHR1cmVXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHRleHR1cmVXaWR0aCxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHR5cGU6ICdmbG9hdCdcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjYWxjRGF0YVRleHR1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2FsY0RhdGFUZXh0dXJlKG5hbWUsIHR5cGUsIGRhdGEpIHtcbiAgICAgIHZhciBlbGVtZW50c1BlclRleGVsID0gMTtcblxuICAgICAgaWYgKHR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5WZWN0b3I0RmxvYXRBcnJheSkge1xuICAgICAgICBlbGVtZW50c1BlclRleGVsID0gNDtcbiAgICAgIH0gLy8g55SoIDAg6KGl5YWo5LiN6LazIHZlYzQg55qE6YOo5YiGXG5cblxuICAgICAgdmFyIHBhZGRpbmdEYXRhID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gZWxlbWVudHNQZXJUZXhlbCkge1xuICAgICAgICBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMSkge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgMCwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMikge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgZGF0YVtpICsgMV0sIDAsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzUGVyVGV4ZWwgPT09IDMpIHtcbiAgICAgICAgICBwYWRkaW5nRGF0YS5wdXNoKGRhdGFbaV0sIGRhdGFbaSArIDFdLCBkYXRhW2kgKyAyXSwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gNCkge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgZGF0YVtpICsgMV0sIGRhdGFbaSArIDJdLCBkYXRhW2kgKyAzXSk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8g5L2/55So57q555CG5a2Y5YKo77yM5L6L5aaCIEFycmF5KDgpIOS9v+eUqCAzICogMyDnurnnkIbvvIzmnKvlsL7nqbrnmb3kvb/nlKggMCDloavlhYVcblxuXG4gICAgICB2YXIgb3JpZ2luYWxEYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICB2YXIgdGV4ZWxDb3VudCA9IE1hdGguY2VpbChvcmlnaW5hbERhdGFMZW5ndGggLyBlbGVtZW50c1BlclRleGVsKTtcbiAgICAgIHZhciB3aWR0aCA9IE1hdGguY2VpbChNYXRoLnNxcnQodGV4ZWxDb3VudCkpO1xuICAgICAgdmFyIHBhZGRpbmdUZXhlbENvdW50ID0gd2lkdGggKiB3aWR0aDtcblxuICAgICAgaWYgKHRleGVsQ291bnQgPCBwYWRkaW5nVGV4ZWxDb3VudCkge1xuICAgICAgICBwYWRkaW5nRGF0YS5wdXNoLmFwcGx5KHBhZGRpbmdEYXRhLCBfdG9Db25zdW1hYmxlQXJyYXkobmV3IEFycmF5KChwYWRkaW5nVGV4ZWxDb3VudCAtIHRleGVsQ291bnQpICogNCkuZmlsbCgwKSkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGV4dHVyZSA9IHRoaXMucmVHbC50ZXh0dXJlKHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHdpZHRoLFxuICAgICAgICBkYXRhOiBwYWRkaW5nRGF0YSxcbiAgICAgICAgdHlwZTogJ2Zsb2F0J1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdGV4dHVyZUlkKyssXG4gICAgICAgIGRhdGE6IHBhZGRpbmdEYXRhLFxuICAgICAgICBvcmlnaW5hbERhdGFMZW5ndGg6IG9yaWdpbmFsRGF0YUxlbmd0aCxcbiAgICAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yOiBpc1R5cGVkQXJyYXkoZGF0YSkgPyBkYXRhLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICB0ZXh0dXJlV2lkdGg6IHdpZHRoLFxuICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlLFxuICAgICAgICB0ZXhlbENvdW50OiB0ZXhlbENvdW50LFxuICAgICAgICBlbGVtZW50c1BlclRleGVsOiBlbGVtZW50c1BlclRleGVsLFxuICAgICAgICBpc091dHB1dDogbmFtZSA9PT0gdGhpcy5jb250ZXh0Lm91dHB1dC5uYW1lXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsQ29tcHV0ZU1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsQ29tcHV0ZU1vZGVsIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js ***! \**************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#elements\n */\n\nvar ReglElements = /*#__PURE__*/function () {\n function ReglElements(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglElements);\n\n this.elements = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type,\n count = options.count;\n this.elements = reGl.elements({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE],\n count: count\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglElements, [{\n key: \"get\",\n value: function get() {\n return this.elements;\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data;\n this.elements.subdata(data);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.elements.destroy();\n }\n }]);\n\n return ReglElements;\n}();\n\n\n//# sourceMappingURL=ReglElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEVsZW1lbnRzLmpzP2I3MmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ3JCO0FBQ1c7QUFDcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQVEsVUFBVSxzREFBRTtBQUNqQyxZQUFZLHNEQUFXLFNBQVMsc0RBQUU7QUFDbEM7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFa0M7QUFDbkMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGRhdGFUeXBlTWFwLCB1c2FnZU1hcCB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjZWxlbWVudHNcbiAqL1xuXG52YXIgUmVnbEVsZW1lbnRzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEVsZW1lbnRzKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEVsZW1lbnRzKTtcblxuICAgIHRoaXMuZWxlbWVudHMgPSB2b2lkIDA7XG4gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gb3B0aW9ucy51c2FnZSxcbiAgICAgICAgdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgICAgY291bnQgPSBvcHRpb25zLmNvdW50O1xuICAgIHRoaXMuZWxlbWVudHMgPSByZUdsLmVsZW1lbnRzKHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICB1c2FnZTogdXNhZ2VNYXBbdXNhZ2UgfHwgZ2wuU1RBVElDX0RSQVddLFxuICAgICAgdHlwZTogZGF0YVR5cGVNYXBbdHlwZSB8fCBnbC5VTlNJR05FRF9CWVRFXSxcbiAgICAgIGNvdW50OiBjb3VudFxuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlZ2xFbGVtZW50cywgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEoX3JlZikge1xuICAgICAgdmFyIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB0aGlzLmVsZW1lbnRzLnN1YmRhdGEoZGF0YSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuZWxlbWVudHMuZGVzdHJveSgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsRWxlbWVudHM7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xFbGVtZW50cyBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js ***! \*****************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * adaptor for regl.Framebuffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#framebuffers\n */\nvar ReglFramebuffer = /*#__PURE__*/function () {\n function ReglFramebuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglFramebuffer);\n\n this.framebuffer = void 0;\n var width = options.width,\n height = options.height,\n color = options.color,\n colors = options.colors,\n depth = options.depth,\n stencil = options.stencil;\n var framebufferOptions = {\n width: width,\n height: height\n };\n\n if (Array.isArray(colors)) {\n framebufferOptions.colors = colors.map(function (c) {\n return c.get();\n });\n }\n\n if (color && typeof color !== 'boolean') {\n framebufferOptions.color = color.get();\n } // TODO: depth & stencil\n\n\n this.framebuffer = reGl.framebuffer(framebufferOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglFramebuffer, [{\n key: \"get\",\n value: function get() {\n return this.framebuffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.framebuffer.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.framebuffer.resize(width, height);\n }\n }]);\n\n return ReglFramebuffer;\n}();\n\n\n//# sourceMappingURL=ReglFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEZyYW1lYnVmZmVyLmpzPzVmN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFcUM7QUFDdEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEZyYW1lYnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuRnJhbWVidWZmZXJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2ZyYW1lYnVmZmVyc1xuICovXG52YXIgUmVnbEZyYW1lYnVmZmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEZyYW1lYnVmZmVyKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEZyYW1lYnVmZmVyKTtcblxuICAgIHRoaXMuZnJhbWVidWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQsXG4gICAgICAgIGNvbG9yID0gb3B0aW9ucy5jb2xvcixcbiAgICAgICAgY29sb3JzID0gb3B0aW9ucy5jb2xvcnMsXG4gICAgICAgIGRlcHRoID0gb3B0aW9ucy5kZXB0aCxcbiAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbDtcbiAgICB2YXIgZnJhbWVidWZmZXJPcHRpb25zID0ge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3JzKSkge1xuICAgICAgZnJhbWVidWZmZXJPcHRpb25zLmNvbG9ycyA9IGNvbG9ycy5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgcmV0dXJuIGMuZ2V0KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29sb3IgJiYgdHlwZW9mIGNvbG9yICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGZyYW1lYnVmZmVyT3B0aW9ucy5jb2xvciA9IGNvbG9yLmdldCgpO1xuICAgIH0gLy8gVE9ETzogZGVwdGggJiBzdGVuY2lsXG5cblxuICAgIHRoaXMuZnJhbWVidWZmZXIgPSByZUdsLmZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyT3B0aW9ucyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEZyYW1lYnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZnJhbWVidWZmZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuZnJhbWVidWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB0aGlzLmZyYW1lYnVmZmVyLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbEZyYW1lYnVmZmVyO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsRnJhbWVidWZmZXIgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbEZyYW1lYnVmZmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js": /*!***********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js ***! \***********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglModel; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/**\n * adaptor for regl.DrawCommand\n */\nvar ReglModel = /*#__PURE__*/function () {\n function ReglModel(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, ReglModel);\n\n this.reGl = void 0;\n this.drawCommand = void 0;\n this.uniforms = {};\n this.reGl = reGl;\n var vs = options.vs,\n fs = options.fs,\n defines = options.defines,\n attributes = options.attributes,\n uniforms = options.uniforms,\n primitive = options.primitive,\n count = options.count,\n elements = options.elements,\n depth = options.depth,\n blend = options.blend,\n stencil = options.stencil,\n cull = options.cull,\n instances = options.instances,\n scissor = options.scissor,\n viewport = options.viewport;\n var reglUniforms = {};\n\n if (uniforms) {\n this.uniforms = Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms);\n Object.keys(uniforms).forEach(function (uniformName) {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n var reglAttributes = {};\n Object.keys(attributes).forEach(function (name) {\n reglAttributes[name] = attributes[name].get();\n });\n var defineStmts = defines && this.generateDefines(defines) || '';\n var drawParams = {\n attributes: reglAttributes,\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(defineStmts, \"\\n\").concat(fs),\n uniforms: reglUniforms,\n vert: \"\\n\".concat(defineStmts, \"\\n\").concat(vs),\n primitive: _constants__WEBPACK_IMPORTED_MODULE_6__[\"primitiveMap\"][primitive === undefined ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].TRIANGLES : primitive]\n };\n\n if (instances) {\n drawParams.instances = instances;\n } // elements 中可能包含 count,此时不应传入\n\n\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = elements.get();\n }\n\n if (scissor) {\n drawParams.scissor = scissor;\n }\n\n if (viewport) {\n drawParams.viewport = viewport;\n }\n\n this.initDepthDrawParams({\n depth: depth\n }, drawParams);\n this.initBlendDrawParams({\n blend: blend\n }, drawParams);\n this.initStencilDrawParams({\n stencil: stencil\n }, drawParams);\n this.initCullDrawParams({\n cull: cull\n }, drawParams);\n this.drawCommand = reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(ReglModel, [{\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(options.uniforms || {}));\n\n var reglDrawProps = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n reglDrawProps[uniformName] = uniforms[uniformName];\n } else if (type === 'string') {// TODO: image url\n } else {\n reglDrawProps[uniformName] = uniforms[uniformName].get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// don't need do anything since we will call `rendererService.cleanup()`\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n\n }, {\n key: \"initDepthDrawParams\",\n value: function initDepthDrawParams(_ref, drawParams) {\n var depth = _ref.depth;\n\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: _constants__WEBPACK_IMPORTED_MODULE_6__[\"depthFuncMap\"][depth.func || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].LESS],\n range: depth.range || [0, 1]\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n\n }, {\n key: \"initBlendDrawParams\",\n value: function initBlendDrawParams(_ref2, drawParams) {\n var blend = _ref2.blend;\n\n if (blend) {\n var enable = blend.enable,\n func = blend.func,\n equation = blend.equation,\n _blend$color = blend.color,\n color = _blend$color === void 0 ? [0, 0, 0, 0] : _blend$color; // @ts-ignore\n\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n srcAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n dstRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA],\n dstAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA]\n },\n equation: {\n rgb: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD],\n alpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD]\n },\n color: color\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n\n }, {\n key: \"initStencilDrawParams\",\n value: function initStencilDrawParams(_ref3, drawParams) {\n var stencil = _ref3.stencil;\n\n if (stencil) {\n var enable = stencil.enable,\n _stencil$mask = stencil.mask,\n mask = _stencil$mask === void 0 ? -1 : _stencil$mask,\n _stencil$func = stencil.func,\n func = _stencil$func === void 0 ? {\n cmp: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ALWAYS,\n ref: 0,\n mask: -1\n } : _stencil$func,\n _stencil$opFront = stencil.opFront,\n opFront = _stencil$opFront === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opFront,\n _stencil$opBack = stencil.opBack,\n opBack = _stencil$opBack === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opBack;\n drawParams.stencil = {\n enable: !!enable,\n mask: mask,\n func: _objectSpread(_objectSpread({}, func), {}, {\n cmp: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilFuncMap\"][func.cmp]\n }),\n opFront: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zpass]\n },\n opBack: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zpass]\n }\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n\n }, {\n key: \"initCullDrawParams\",\n value: function initCullDrawParams(_ref4, drawParams) {\n var cull = _ref4.cull;\n\n if (cull) {\n var enable = cull.enable,\n _cull$face = cull.face,\n face = _cull$face === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].BACK : _cull$face;\n drawParams.cull = {\n enable: !!enable,\n face: _constants__WEBPACK_IMPORTED_MODULE_6__[\"cullFaceMap\"][face]\n };\n }\n }\n }, {\n key: \"generateDefines\",\n value: function generateDefines(defines) {\n return Object.keys(defines).map(function (name) {\n return \"#define \".concat(name, \" \").concat(Number(defines[name]));\n }).join('\\n');\n }\n }]);\n\n return ReglModel;\n}();\n\n\n//# sourceMappingURL=ReglModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbE1vZGVsLmpzP2IzMWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7QUFDZ0I7QUFDQTtBQUNOOztBQUU5RCwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRTNlO0FBQ1U7QUFDaUY7O0FBRXBJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLHNFQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsbUNBQW1DO0FBQzNHO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVksMkJBQTJCLHNEQUFFO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixzRUFBZTtBQUNyRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELGtCQUFrQixzRUFBZSx1QkFBdUI7O0FBRTNHO0FBQ0E7QUFDQSxtQkFBbUIsb0VBQU87O0FBRTFCO0FBQ0E7QUFDQTtBQUNBLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix1REFBWSxlQUFlLHNEQUFFO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTs7QUFFMUU7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVEQUFZLHdCQUF3QixzREFBRTtBQUMxRCxzQkFBc0IsdURBQVksMEJBQTBCLHNEQUFFO0FBQzlELG9CQUFvQix1REFBWSx3QkFBd0Isc0RBQUU7QUFDMUQsc0JBQXNCLHVEQUFZLDBCQUEwQixzREFBRTtBQUM5RCxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsMkRBQWdCLDZCQUE2QixzREFBRTtBQUNoRSxtQkFBbUIsMkRBQWdCLCtCQUErQixzREFBRTtBQUNwRSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFFO0FBQ2pCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixzREFBRTtBQUNsQixpQkFBaUIsc0RBQUU7QUFDbkIsaUJBQWlCLHNEQUFFO0FBQ25CLFNBQVM7QUFDVDtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFFO0FBQ2xCLGlCQUFpQixzREFBRTtBQUNuQixpQkFBaUIsc0RBQUU7QUFDbkIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxXQUFXO0FBQ3pELGlCQUFpQix5REFBYztBQUMvQixXQUFXO0FBQ1g7QUFDQSxrQkFBa0IsdURBQVk7QUFDOUIsbUJBQW1CLHVEQUFZO0FBQy9CLG1CQUFtQix1REFBWTtBQUMvQixXQUFXO0FBQ1g7QUFDQSxrQkFBa0IsdURBQVk7QUFDOUIsbUJBQW1CLHVEQUFZO0FBQy9CLG1CQUFtQix1REFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxzREFBRTtBQUM3QztBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUUrQjtBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBleHRyYWN0VW5pZm9ybXMgfSBmcm9tICcuLi91dGlscy91bmlmb3JtJztcbmltcG9ydCB7IGJsZW5kRXF1YXRpb25NYXAsIGJsZW5kRnVuY01hcCwgY3VsbEZhY2VNYXAsIGRlcHRoRnVuY01hcCwgcHJpbWl0aXZlTWFwLCBzdGVuY2lsRnVuY01hcCwgc3RlbmNpbE9wTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuRHJhd0NvbW1hbmRcbiAqL1xudmFyIFJlZ2xNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZ2xNb2RlbChyZUdsLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZ2xNb2RlbCk7XG5cbiAgICB0aGlzLnJlR2wgPSB2b2lkIDA7XG4gICAgdGhpcy5kcmF3Q29tbWFuZCA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1zID0ge307XG4gICAgdGhpcy5yZUdsID0gcmVHbDtcbiAgICB2YXIgdnMgPSBvcHRpb25zLnZzLFxuICAgICAgICBmcyA9IG9wdGlvbnMuZnMsXG4gICAgICAgIGRlZmluZXMgPSBvcHRpb25zLmRlZmluZXMsXG4gICAgICAgIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMsXG4gICAgICAgIHVuaWZvcm1zID0gb3B0aW9ucy51bmlmb3JtcyxcbiAgICAgICAgcHJpbWl0aXZlID0gb3B0aW9ucy5wcmltaXRpdmUsXG4gICAgICAgIGNvdW50ID0gb3B0aW9ucy5jb3VudCxcbiAgICAgICAgZWxlbWVudHMgPSBvcHRpb25zLmVsZW1lbnRzLFxuICAgICAgICBkZXB0aCA9IG9wdGlvbnMuZGVwdGgsXG4gICAgICAgIGJsZW5kID0gb3B0aW9ucy5ibGVuZCxcbiAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbCxcbiAgICAgICAgY3VsbCA9IG9wdGlvbnMuY3VsbCxcbiAgICAgICAgaW5zdGFuY2VzID0gb3B0aW9ucy5pbnN0YW5jZXMsXG4gICAgICAgIHNjaXNzb3IgPSBvcHRpb25zLnNjaXNzb3IsXG4gICAgICAgIHZpZXdwb3J0ID0gb3B0aW9ucy52aWV3cG9ydDtcbiAgICB2YXIgcmVnbFVuaWZvcm1zID0ge307XG5cbiAgICBpZiAodW5pZm9ybXMpIHtcbiAgICAgIHRoaXMudW5pZm9ybXMgPSBleHRyYWN0VW5pZm9ybXModW5pZm9ybXMpO1xuICAgICAgT2JqZWN0LmtleXModW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIC8vIHVzZSByZWdsIHByb3AgQVBJXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVnbFVuaWZvcm1zW3VuaWZvcm1OYW1lXSA9IHJlR2wucHJvcCh1bmlmb3JtTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVnbEF0dHJpYnV0ZXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICByZWdsQXR0cmlidXRlc1tuYW1lXSA9IGF0dHJpYnV0ZXNbbmFtZV0uZ2V0KCk7XG4gICAgfSk7XG4gICAgdmFyIGRlZmluZVN0bXRzID0gZGVmaW5lcyAmJiB0aGlzLmdlbmVyYXRlRGVmaW5lcyhkZWZpbmVzKSB8fCAnJztcbiAgICB2YXIgZHJhd1BhcmFtcyA9IHtcbiAgICAgIGF0dHJpYnV0ZXM6IHJlZ2xBdHRyaWJ1dGVzLFxuICAgICAgZnJhZzogXCIjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0hcXG4gIHByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4jZWxzZVxcbiAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XFxuI2VuZGlmXFxuXCIuY29uY2F0KGRlZmluZVN0bXRzLCBcIlxcblwiKS5jb25jYXQoZnMpLFxuICAgICAgdW5pZm9ybXM6IHJlZ2xVbmlmb3JtcyxcbiAgICAgIHZlcnQ6IFwiXFxuXCIuY29uY2F0KGRlZmluZVN0bXRzLCBcIlxcblwiKS5jb25jYXQodnMpLFxuICAgICAgcHJpbWl0aXZlOiBwcmltaXRpdmVNYXBbcHJpbWl0aXZlID09PSB1bmRlZmluZWQgPyBnbC5UUklBTkdMRVMgOiBwcmltaXRpdmVdXG4gICAgfTtcblxuICAgIGlmIChpbnN0YW5jZXMpIHtcbiAgICAgIGRyYXdQYXJhbXMuaW5zdGFuY2VzID0gaW5zdGFuY2VzO1xuICAgIH0gLy8gZWxlbWVudHMg5Lit5Y+v6IO95YyF5ZCrIGNvdW5077yM5q2k5pe25LiN5bqU5Lyg5YWlXG5cblxuICAgIGlmIChjb3VudCkge1xuICAgICAgZHJhd1BhcmFtcy5jb3VudCA9IGNvdW50O1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cykge1xuICAgICAgZHJhd1BhcmFtcy5lbGVtZW50cyA9IGVsZW1lbnRzLmdldCgpO1xuICAgIH1cblxuICAgIGlmIChzY2lzc29yKSB7XG4gICAgICBkcmF3UGFyYW1zLnNjaXNzb3IgPSBzY2lzc29yO1xuICAgIH1cblxuICAgIGlmICh2aWV3cG9ydCkge1xuICAgICAgZHJhd1BhcmFtcy52aWV3cG9ydCA9IHZpZXdwb3J0O1xuICAgIH1cblxuICAgIHRoaXMuaW5pdERlcHRoRHJhd1BhcmFtcyh7XG4gICAgICBkZXB0aDogZGVwdGhcbiAgICB9LCBkcmF3UGFyYW1zKTtcbiAgICB0aGlzLmluaXRCbGVuZERyYXdQYXJhbXMoe1xuICAgICAgYmxlbmQ6IGJsZW5kXG4gICAgfSwgZHJhd1BhcmFtcyk7XG4gICAgdGhpcy5pbml0U3RlbmNpbERyYXdQYXJhbXMoe1xuICAgICAgc3RlbmNpbDogc3RlbmNpbFxuICAgIH0sIGRyYXdQYXJhbXMpO1xuICAgIHRoaXMuaW5pdEN1bGxEcmF3UGFyYW1zKHtcbiAgICAgIGN1bGw6IGN1bGxcbiAgICB9LCBkcmF3UGFyYW1zKTtcbiAgICB0aGlzLmRyYXdDb21tYW5kID0gcmVHbChkcmF3UGFyYW1zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsTW9kZWwsIFt7XG4gICAga2V5OiBcImFkZFVuaWZvcm1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZFVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gICAgICB0aGlzLnVuaWZvcm1zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnVuaWZvcm1zKSwgZXh0cmFjdFVuaWZvcm1zKHVuaWZvcm1zKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRyYXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZHJhdyhvcHRpb25zKSB7XG4gICAgICB2YXIgdW5pZm9ybXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMudW5pZm9ybXMpLCBleHRyYWN0VW5pZm9ybXMob3B0aW9ucy51bmlmb3JtcyB8fCB7fSkpO1xuXG4gICAgICB2YXIgcmVnbERyYXdQcm9wcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXModW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIHZhciB0eXBlID0gX3R5cGVvZih1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwgQXJyYXkuaXNBcnJheSh1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pIHx8IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdLkJZVEVTX1BFUl9FTEVNRU5UKSB7XG4gICAgICAgICAgcmVnbERyYXdQcm9wc1t1bmlmb3JtTmFtZV0gPSB1bmlmb3Jtc1t1bmlmb3JtTmFtZV07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHsvLyBUT0RPOiBpbWFnZSB1cmxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWdsRHJhd1Byb3BzW3VuaWZvcm1OYW1lXSA9IHVuaWZvcm1zW3VuaWZvcm1OYW1lXS5nZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmRyYXdDb21tYW5kKHJlZ2xEcmF3UHJvcHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7Ly8gZG9uJ3QgbmVlZCBkbyBhbnl0aGluZyBzaW5jZSB3ZSB3aWxsIGNhbGwgYHJlbmRlcmVyU2VydmljZS5jbGVhbnVwKClgXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2RlcHRoLWJ1ZmZlclxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdERlcHRoRHJhd1BhcmFtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0RGVwdGhEcmF3UGFyYW1zKF9yZWYsIGRyYXdQYXJhbXMpIHtcbiAgICAgIHZhciBkZXB0aCA9IF9yZWYuZGVwdGg7XG5cbiAgICAgIGlmIChkZXB0aCkge1xuICAgICAgICBkcmF3UGFyYW1zLmRlcHRoID0ge1xuICAgICAgICAgIGVuYWJsZTogZGVwdGguZW5hYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogISFkZXB0aC5lbmFibGUsXG4gICAgICAgICAgbWFzazogZGVwdGgubWFzayA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhZGVwdGgubWFzayxcbiAgICAgICAgICBmdW5jOiBkZXB0aEZ1bmNNYXBbZGVwdGguZnVuYyB8fCBnbC5MRVNTXSxcbiAgICAgICAgICByYW5nZTogZGVwdGgucmFuZ2UgfHwgWzAsIDFdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2JsZW5kaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0QmxlbmREcmF3UGFyYW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRCbGVuZERyYXdQYXJhbXMoX3JlZjIsIGRyYXdQYXJhbXMpIHtcbiAgICAgIHZhciBibGVuZCA9IF9yZWYyLmJsZW5kO1xuXG4gICAgICBpZiAoYmxlbmQpIHtcbiAgICAgICAgdmFyIGVuYWJsZSA9IGJsZW5kLmVuYWJsZSxcbiAgICAgICAgICAgIGZ1bmMgPSBibGVuZC5mdW5jLFxuICAgICAgICAgICAgZXF1YXRpb24gPSBibGVuZC5lcXVhdGlvbixcbiAgICAgICAgICAgIF9ibGVuZCRjb2xvciA9IGJsZW5kLmNvbG9yLFxuICAgICAgICAgICAgY29sb3IgPSBfYmxlbmQkY29sb3IgPT09IHZvaWQgMCA/IFswLCAwLCAwLCAwXSA6IF9ibGVuZCRjb2xvcjsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgIGRyYXdQYXJhbXMuYmxlbmQgPSB7XG4gICAgICAgICAgZW5hYmxlOiAhIWVuYWJsZSxcbiAgICAgICAgICBmdW5jOiB7XG4gICAgICAgICAgICBzcmNSR0I6IGJsZW5kRnVuY01hcFtmdW5jICYmIGZ1bmMuc3JjUkdCIHx8IGdsLlNSQ19BTFBIQV0sXG4gICAgICAgICAgICBzcmNBbHBoYTogYmxlbmRGdW5jTWFwW2Z1bmMgJiYgZnVuYy5zcmNBbHBoYSB8fCBnbC5TUkNfQUxQSEFdLFxuICAgICAgICAgICAgZHN0UkdCOiBibGVuZEZ1bmNNYXBbZnVuYyAmJiBmdW5jLmRzdFJHQiB8fCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBXSxcbiAgICAgICAgICAgIGRzdEFscGhhOiBibGVuZEZ1bmNNYXBbZnVuYyAmJiBmdW5jLmRzdEFscGhhIHx8IGdsLk9ORV9NSU5VU19TUkNfQUxQSEFdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcXVhdGlvbjoge1xuICAgICAgICAgICAgcmdiOiBibGVuZEVxdWF0aW9uTWFwW2VxdWF0aW9uICYmIGVxdWF0aW9uLnJnYiB8fCBnbC5GVU5DX0FERF0sXG4gICAgICAgICAgICBhbHBoYTogYmxlbmRFcXVhdGlvbk1hcFtlcXVhdGlvbiAmJiBlcXVhdGlvbi5hbHBoYSB8fCBnbC5GVU5DX0FERF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbG9yOiBjb2xvclxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNzdGVuY2lsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0U3RlbmNpbERyYXdQYXJhbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdFN0ZW5jaWxEcmF3UGFyYW1zKF9yZWYzLCBkcmF3UGFyYW1zKSB7XG4gICAgICB2YXIgc3RlbmNpbCA9IF9yZWYzLnN0ZW5jaWw7XG5cbiAgICAgIGlmIChzdGVuY2lsKSB7XG4gICAgICAgIHZhciBlbmFibGUgPSBzdGVuY2lsLmVuYWJsZSxcbiAgICAgICAgICAgIF9zdGVuY2lsJG1hc2sgPSBzdGVuY2lsLm1hc2ssXG4gICAgICAgICAgICBtYXNrID0gX3N0ZW5jaWwkbWFzayA9PT0gdm9pZCAwID8gLTEgOiBfc3RlbmNpbCRtYXNrLFxuICAgICAgICAgICAgX3N0ZW5jaWwkZnVuYyA9IHN0ZW5jaWwuZnVuYyxcbiAgICAgICAgICAgIGZ1bmMgPSBfc3RlbmNpbCRmdW5jID09PSB2b2lkIDAgPyB7XG4gICAgICAgICAgY21wOiBnbC5BTFdBWVMsXG4gICAgICAgICAgcmVmOiAwLFxuICAgICAgICAgIG1hc2s6IC0xXG4gICAgICAgIH0gOiBfc3RlbmNpbCRmdW5jLFxuICAgICAgICAgICAgX3N0ZW5jaWwkb3BGcm9udCA9IHN0ZW5jaWwub3BGcm9udCxcbiAgICAgICAgICAgIG9wRnJvbnQgPSBfc3RlbmNpbCRvcEZyb250ID09PSB2b2lkIDAgPyB7XG4gICAgICAgICAgZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6ZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6cGFzczogZ2wuS0VFUFxuICAgICAgICB9IDogX3N0ZW5jaWwkb3BGcm9udCxcbiAgICAgICAgICAgIF9zdGVuY2lsJG9wQmFjayA9IHN0ZW5jaWwub3BCYWNrLFxuICAgICAgICAgICAgb3BCYWNrID0gX3N0ZW5jaWwkb3BCYWNrID09PSB2b2lkIDAgPyB7XG4gICAgICAgICAgZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6ZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6cGFzczogZ2wuS0VFUFxuICAgICAgICB9IDogX3N0ZW5jaWwkb3BCYWNrO1xuICAgICAgICBkcmF3UGFyYW1zLnN0ZW5jaWwgPSB7XG4gICAgICAgICAgZW5hYmxlOiAhIWVuYWJsZSxcbiAgICAgICAgICBtYXNrOiBtYXNrLFxuICAgICAgICAgIGZ1bmM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZnVuYyksIHt9LCB7XG4gICAgICAgICAgICBjbXA6IHN0ZW5jaWxGdW5jTWFwW2Z1bmMuY21wXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9wRnJvbnQ6IHtcbiAgICAgICAgICAgIGZhaWw6IHN0ZW5jaWxPcE1hcFtvcEZyb250LmZhaWxdLFxuICAgICAgICAgICAgemZhaWw6IHN0ZW5jaWxPcE1hcFtvcEZyb250LnpmYWlsXSxcbiAgICAgICAgICAgIHpwYXNzOiBzdGVuY2lsT3BNYXBbb3BGcm9udC56cGFzc11cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wQmFjazoge1xuICAgICAgICAgICAgZmFpbDogc3RlbmNpbE9wTWFwW29wQmFjay5mYWlsXSxcbiAgICAgICAgICAgIHpmYWlsOiBzdGVuY2lsT3BNYXBbb3BCYWNrLnpmYWlsXSxcbiAgICAgICAgICAgIHpwYXNzOiBzdGVuY2lsT3BNYXBbb3BCYWNrLnpwYXNzXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjY3VsbGluZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdEN1bGxEcmF3UGFyYW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRDdWxsRHJhd1BhcmFtcyhfcmVmNCwgZHJhd1BhcmFtcykge1xuICAgICAgdmFyIGN1bGwgPSBfcmVmNC5jdWxsO1xuXG4gICAgICBpZiAoY3VsbCkge1xuICAgICAgICB2YXIgZW5hYmxlID0gY3VsbC5lbmFibGUsXG4gICAgICAgICAgICBfY3VsbCRmYWNlID0gY3VsbC5mYWNlLFxuICAgICAgICAgICAgZmFjZSA9IF9jdWxsJGZhY2UgPT09IHZvaWQgMCA/IGdsLkJBQ0sgOiBfY3VsbCRmYWNlO1xuICAgICAgICBkcmF3UGFyYW1zLmN1bGwgPSB7XG4gICAgICAgICAgZW5hYmxlOiAhIWVuYWJsZSxcbiAgICAgICAgICBmYWNlOiBjdWxsRmFjZU1hcFtmYWNlXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZW5lcmF0ZURlZmluZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2VuZXJhdGVEZWZpbmVzKGRlZmluZXMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhkZWZpbmVzKS5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIFwiI2RlZmluZSBcIi5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChOdW1iZXIoZGVmaW5lc1tuYW1lXSkpO1xuICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xNb2RlbDtcbn0oKTtcblxuZXhwb3J0IHsgUmVnbE1vZGVsIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xNb2RlbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js": /*!***************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js ***! \***************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReglTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglTexture2D = /*#__PURE__*/function () {\n function ReglTexture2D(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglTexture2D);\n\n this.texture = void 0;\n this.width = void 0;\n this.height = void 0;\n var data = options.data,\n _options$type = options.type,\n type = _options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _options$type,\n width = options.width,\n height = options.height,\n _options$flipY = options.flipY,\n flipY = _options$flipY === void 0 ? false : _options$flipY,\n _options$format = options.format,\n format = _options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _options$format,\n _options$mipmap = options.mipmap,\n mipmap = _options$mipmap === void 0 ? false : _options$mipmap,\n _options$wrapS = options.wrapS,\n wrapS = _options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapS,\n _options$wrapT = options.wrapT,\n wrapT = _options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapT,\n _options$aniso = options.aniso,\n aniso = _options$aniso === void 0 ? 0 : _options$aniso,\n _options$alignment = options.alignment,\n alignment = _options$alignment === void 0 ? 1 : _options$alignment,\n _options$premultiplyA = options.premultiplyAlpha,\n premultiplyAlpha = _options$premultiplyA === void 0 ? false : _options$premultiplyA,\n _options$mag = options.mag,\n mag = _options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$mag,\n _options$min = options.min,\n min = _options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$min,\n _options$colorSpace = options.colorSpace,\n colorSpace = _options$colorSpace === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _options$colorSpace;\n this.width = width;\n this.height = height;\n var textureOptions = {\n width: width,\n height: height,\n // @ts-ignore\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type],\n format: _constants__WEBPACK_IMPORTED_MODULE_3__[\"formatMap\"][format],\n wrapS: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapS],\n wrapT: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapT],\n // @ts-ignore\n mag: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][mag],\n min: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][min],\n alignment: alignment,\n flipY: flipY,\n colorSpace: _constants__WEBPACK_IMPORTED_MODULE_3__[\"colorSpaceMap\"][colorSpace],\n premultiplyAlpha: premultiplyAlpha,\n aniso: aniso\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = _constants__WEBPACK_IMPORTED_MODULE_3__[\"mipmapMap\"][mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglTexture2D, [{\n key: \"get\",\n value: function get() {\n return this.texture;\n }\n }, {\n key: \"update\",\n value: function update() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.texture.destroy();\n }\n }]);\n\n return ReglTexture2D;\n}();\n\n\n//# sourceMappingURL=ReglTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbFRleHR1cmUyRC5qcz85NjM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNyQjtBQUM4RDtBQUN2RztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxzREFBRTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNEQUFFO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxzREFBRTtBQUM5QztBQUNBLDRDQUE0QyxzREFBRTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxzREFBRTtBQUMxQztBQUNBLHdDQUF3QyxzREFBRTtBQUMxQztBQUNBLHNEQUFzRCxzREFBRTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFXO0FBQ3ZCLGNBQWMsb0RBQVM7QUFDdkIsYUFBYSxzREFBVztBQUN4QixhQUFhLHNEQUFXO0FBQ3hCO0FBQ0EsV0FBVyxvREFBUztBQUNwQixXQUFXLG9EQUFTO0FBQ3BCO0FBQ0E7QUFDQSxrQkFBa0Isd0RBQWE7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixvREFBUztBQUN2QyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFbUM7QUFDcEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbFRleHR1cmUyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBjb2xvclNwYWNlTWFwLCBkYXRhVHlwZU1hcCwgZmlsdGVyTWFwLCBmb3JtYXRNYXAsIG1pcG1hcE1hcCwgd3JhcE1vZGVNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuQnVmZmVyXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNidWZmZXJzXG4gKi9cblxudmFyIFJlZ2xUZXh0dXJlMkQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsVGV4dHVyZTJEKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbFRleHR1cmUyRCk7XG5cbiAgICB0aGlzLnRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgICAgX29wdGlvbnMkdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgICAgdHlwZSA9IF9vcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/IGdsLlVOU0lHTkVEX0JZVEUgOiBfb3B0aW9ucyR0eXBlLFxuICAgICAgICB3aWR0aCA9IG9wdGlvbnMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0LFxuICAgICAgICBfb3B0aW9ucyRmbGlwWSA9IG9wdGlvbnMuZmxpcFksXG4gICAgICAgIGZsaXBZID0gX29wdGlvbnMkZmxpcFkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkZmxpcFksXG4gICAgICAgIF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICBmb3JtYXQgPSBfb3B0aW9ucyRmb3JtYXQgPT09IHZvaWQgMCA/IGdsLlJHQkEgOiBfb3B0aW9ucyRmb3JtYXQsXG4gICAgICAgIF9vcHRpb25zJG1pcG1hcCA9IG9wdGlvbnMubWlwbWFwLFxuICAgICAgICBtaXBtYXAgPSBfb3B0aW9ucyRtaXBtYXAgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkbWlwbWFwLFxuICAgICAgICBfb3B0aW9ucyR3cmFwUyA9IG9wdGlvbnMud3JhcFMsXG4gICAgICAgIHdyYXBTID0gX29wdGlvbnMkd3JhcFMgPT09IHZvaWQgMCA/IGdsLkNMQU1QX1RPX0VER0UgOiBfb3B0aW9ucyR3cmFwUyxcbiAgICAgICAgX29wdGlvbnMkd3JhcFQgPSBvcHRpb25zLndyYXBULFxuICAgICAgICB3cmFwVCA9IF9vcHRpb25zJHdyYXBUID09PSB2b2lkIDAgPyBnbC5DTEFNUF9UT19FREdFIDogX29wdGlvbnMkd3JhcFQsXG4gICAgICAgIF9vcHRpb25zJGFuaXNvID0gb3B0aW9ucy5hbmlzbyxcbiAgICAgICAgYW5pc28gPSBfb3B0aW9ucyRhbmlzbyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGFuaXNvLFxuICAgICAgICBfb3B0aW9ucyRhbGlnbm1lbnQgPSBvcHRpb25zLmFsaWdubWVudCxcbiAgICAgICAgYWxpZ25tZW50ID0gX29wdGlvbnMkYWxpZ25tZW50ID09PSB2b2lkIDAgPyAxIDogX29wdGlvbnMkYWxpZ25tZW50LFxuICAgICAgICBfb3B0aW9ucyRwcmVtdWx0aXBseUEgPSBvcHRpb25zLnByZW11bHRpcGx5QWxwaGEsXG4gICAgICAgIHByZW11bHRpcGx5QWxwaGEgPSBfb3B0aW9ucyRwcmVtdWx0aXBseUEgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkcHJlbXVsdGlwbHlBLFxuICAgICAgICBfb3B0aW9ucyRtYWcgPSBvcHRpb25zLm1hZyxcbiAgICAgICAgbWFnID0gX29wdGlvbnMkbWFnID09PSB2b2lkIDAgPyBnbC5ORUFSRVNUIDogX29wdGlvbnMkbWFnLFxuICAgICAgICBfb3B0aW9ucyRtaW4gPSBvcHRpb25zLm1pbixcbiAgICAgICAgbWluID0gX29wdGlvbnMkbWluID09PSB2b2lkIDAgPyBnbC5ORUFSRVNUIDogX29wdGlvbnMkbWluLFxuICAgICAgICBfb3B0aW9ucyRjb2xvclNwYWNlID0gb3B0aW9ucy5jb2xvclNwYWNlLFxuICAgICAgICBjb2xvclNwYWNlID0gX29wdGlvbnMkY29sb3JTcGFjZSA9PT0gdm9pZCAwID8gZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMIDogX29wdGlvbnMkY29sb3JTcGFjZTtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdmFyIHRleHR1cmVPcHRpb25zID0ge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0eXBlOiBkYXRhVHlwZU1hcFt0eXBlXSxcbiAgICAgIGZvcm1hdDogZm9ybWF0TWFwW2Zvcm1hdF0sXG4gICAgICB3cmFwUzogd3JhcE1vZGVNYXBbd3JhcFNdLFxuICAgICAgd3JhcFQ6IHdyYXBNb2RlTWFwW3dyYXBUXSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hZzogZmlsdGVyTWFwW21hZ10sXG4gICAgICBtaW46IGZpbHRlck1hcFttaW5dLFxuICAgICAgYWxpZ25tZW50OiBhbGlnbm1lbnQsXG4gICAgICBmbGlwWTogZmxpcFksXG4gICAgICBjb2xvclNwYWNlOiBjb2xvclNwYWNlTWFwW2NvbG9yU3BhY2VdLFxuICAgICAgcHJlbXVsdGlwbHlBbHBoYTogcHJlbXVsdGlwbHlBbHBoYSxcbiAgICAgIGFuaXNvOiBhbmlzb1xuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGV4dHVyZU9wdGlvbnMuZGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaXBtYXAgPT09ICdudW1iZXInKSB7XG4gICAgICB0ZXh0dXJlT3B0aW9ucy5taXBtYXAgPSBtaXBtYXBNYXBbbWlwbWFwXTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtaXBtYXAgPT09ICdib29sZWFuJykge1xuICAgICAgdGV4dHVyZU9wdGlvbnMubWlwbWFwID0gbWlwbWFwO1xuICAgIH1cblxuICAgIHRoaXMudGV4dHVyZSA9IHJlR2wudGV4dHVyZSh0ZXh0dXJlT3B0aW9ucyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbFRleHR1cmUyRCwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHR1cmU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLnRleHR1cmUuX3RleHR1cmUuYmluZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB0aGlzLnRleHR1cmUucmVzaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMudGV4dHVyZS5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xUZXh0dXJlMkQ7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xUZXh0dXJlMkQgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbFRleHR1cmUyRC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js": /*!***********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js ***! \***********************************************************************************************/ /*! exports provided: primitiveMap, usageMap, dataTypeMap, formatMap, mipmapMap, filterMap, wrapModeMap, colorSpaceMap, depthFuncMap, blendEquationMap, blendFuncMap, stencilFuncMap, stencilOpMap, cullFaceMap */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"usageMap\", function() { return usageMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataTypeMap\", function() { return dataTypeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mipmapMap\", function() { return mipmapMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorSpaceMap\", function() { return colorSpaceMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilFuncMap\", function() { return stencilFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilOpMap\", function() { return stencilOpMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cullFaceMap\", function() { return cullFaceMap; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n\n\nvar _primitiveMap, _usageMap, _dataTypeMap, _formatMap, _mipmapMap, _filterMap, _wrapModeMap, _colorSpaceMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _stencilFuncMap, _stencilOpMap, _cullFaceMap;\n\n/**\n * @desc 由于 regl 使用大量字符串而非 WebGL 常量,因此需要映射\n */\n\n// @see https://github.com/regl-project/regl/blob/gh-pages/lib/constants/primitives.json\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, 'points'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, 'lines'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, 'line loop'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, 'line strip'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, 'triangles'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, 'triangle fan'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, 'triangle strip'), _primitiveMap);\nvar usageMap = (_usageMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STATIC_DRAW, 'static'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DYNAMIC_DRAW, 'dynamic'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STREAM_DRAW, 'stream'), _usageMap);\nvar dataTypeMap = (_dataTypeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BYTE, 'int8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'int16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INT, 'int32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_BYTE, 'uint8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_SHORT, 'uint16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'uint32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FLOAT, 'float'), _dataTypeMap);\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE, 'luminance'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE_ALPHA, 'luminance alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB, 'rgb'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA4, 'rgba4'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB5_A1, 'rgb5 a1'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB565, 'rgb565'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth stencil'), _formatMap);\nvar mipmapMap = (_mipmapMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DONT_CARE, 'dont care'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NICEST, 'nice'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FASTEST, 'fast'), _mipmapMap);\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_LINEAR, 'mipmap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_LINEAR, 'nearest mipmap linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_NEAREST, 'linear mipmap nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_NEAREST, 'nearest mipmap nearest'), _filterMap);\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror'), _wrapModeMap);\nvar colorSpaceMap = (_colorSpaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NONE, 'none'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BROWSER_DEFAULT_WEBGL, 'browser'), _colorSpaceMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, 'add'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, 'min'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, 'max'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, 'subtract'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, 'reverse subtract'), _blendEquationMap);\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, 'one'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, 'src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, 'one minus src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, 'src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, 'one minus src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, 'dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, 'one minus dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, 'dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, 'one minus dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, 'constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, 'one minus constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_ALPHA, 'constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_ALPHA, 'one minus constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, 'src alpha saturate'), _blendFuncMap);\nvar stencilFuncMap = (_stencilFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _stencilFuncMap);\nvar stencilOpMap = (_stencilOpMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].KEEP, 'keep'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPLACE, 'replace'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INVERT, 'invert'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR, 'increment'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR, 'decrement'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR_WRAP, 'increment wrap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR_WRAP, 'decrement wrap'), _stencilOpMap);\nvar cullFaceMap = (_cullFaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT, 'front'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BACK, 'back'), _cullFaceMap);\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvY29uc3RhbnRzLmpzPzk1MWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FOztBQUVwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDeUM7QUFDekM7QUFDTyxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxrQkFBa0IsNEVBQWUsZ0JBQWdCLHNEQUFFLDBCQUEwQiw0RUFBZSxnQkFBZ0Isc0RBQUUsNEJBQTRCLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLGdDQUFnQyw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDcmEsOEJBQThCLEVBQUUsNEVBQWUsWUFBWSxzREFBRSx5QkFBeUIsNEVBQWUsWUFBWSxzREFBRSwyQkFBMkIsNEVBQWUsWUFBWSxzREFBRTtBQUMzSyxvQ0FBb0MsRUFBRSw0RUFBZSxlQUFlLHNEQUFFLGdCQUFnQiw0RUFBZSxlQUFlLHNEQUFFLHlCQUF5Qiw0RUFBZSxlQUFlLHNEQUFFLGdCQUFnQiw0RUFBZSxlQUFlLHNEQUFFLDBCQUEwQiw0RUFBZSxlQUFlLHNEQUFFLDRCQUE0Qiw0RUFBZSxlQUFlLHNEQUFFLDBCQUEwQiw0RUFBZSxlQUFlLHNEQUFFO0FBQy9ZLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsa0JBQWtCLDRFQUFlLGFBQWEsc0RBQUUsMEJBQTBCLDRFQUFlLGFBQWEsc0RBQUUsc0NBQXNDLDRFQUFlLGFBQWEsc0RBQUUsY0FBYyw0RUFBZSxhQUFhLHNEQUFFLGdCQUFnQiw0RUFBZSxhQUFhLHNEQUFFLGtCQUFrQiw0RUFBZSxhQUFhLHNEQUFFLHNCQUFzQiw0RUFBZSxhQUFhLHNEQUFFLG9CQUFvQiw0RUFBZSxhQUFhLHNEQUFFLDRCQUE0Qiw0RUFBZSxhQUFhLHNEQUFFO0FBQ3RoQixnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLDBCQUEwQiw0RUFBZSxhQUFhLHNEQUFFLGtCQUFrQiw0RUFBZSxhQUFhLHNEQUFFO0FBQ3hLLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsc0JBQXNCLDRFQUFlLGFBQWEsc0RBQUUsb0JBQW9CLDRFQUFlLGFBQWEsc0RBQUUsa0NBQWtDLDRFQUFlLGFBQWEsc0RBQUUsa0RBQWtELDRFQUFlLGFBQWEsc0RBQUUsa0RBQWtELDRFQUFlLGFBQWEsc0RBQUU7QUFDdFksb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxvQkFBb0IsNEVBQWUsZUFBZSxzREFBRSwwQkFBMEIsNEVBQWUsZUFBZSxzREFBRTtBQUNwTCx3Q0FBd0MsRUFBRSw0RUFBZSxpQkFBaUIsc0RBQUUsZ0JBQWdCLDRFQUFlLGlCQUFpQixzREFBRTtBQUM5SCxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsa0JBQWtCLDRFQUFlLGdCQUFnQixzREFBRSxvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0IsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsa0JBQWtCLDRFQUFlLGdCQUFnQixzREFBRTtBQUN0Yiw4Q0FBOEMsRUFBRSw0RUFBZSxvQkFBb0Isc0RBQUUsbUJBQW1CLDRFQUFlLG9CQUFvQixzREFBRSxrQkFBa0IsNEVBQWUsb0JBQW9CLHNEQUFFLGtCQUFrQiw0RUFBZSxvQkFBb0Isc0RBQUUsNkJBQTZCLDRFQUFlLG9CQUFvQixzREFBRTtBQUM3VCxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsZ0JBQWdCLDRFQUFlLGdCQUFnQixzREFBRSxjQUFjLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDhDQUE4Qyw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSw4Q0FBOEMsNEVBQWUsZ0JBQWdCLHNEQUFFLDBCQUEwQiw0RUFBZSxnQkFBZ0Isc0RBQUUsOENBQThDLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDhDQUE4Qyw0RUFBZSxnQkFBZ0Isc0RBQUUsb0NBQW9DLDRFQUFlLGdCQUFnQixzREFBRSx3REFBd0QsNEVBQWUsZ0JBQWdCLHNEQUFFLG9DQUFvQyw0RUFBZSxnQkFBZ0Isc0RBQUUsd0RBQXdELDRFQUFlLGdCQUFnQixzREFBRTtBQUM3Z0MsMENBQTBDLEVBQUUsNEVBQWUsa0JBQWtCLHNEQUFFLGtCQUFrQiw0RUFBZSxrQkFBa0Isc0RBQUUsb0JBQW9CLDRFQUFlLGtCQUFrQixzREFBRSxnQkFBZ0IsNEVBQWUsa0JBQWtCLHNEQUFFLG9CQUFvQiw0RUFBZSxrQkFBa0Isc0RBQUUsc0JBQXNCLDRFQUFlLGtCQUFrQixzREFBRSxvQkFBb0IsNEVBQWUsa0JBQWtCLHNEQUFFLGtCQUFrQiw0RUFBZSxrQkFBa0Isc0RBQUU7QUFDMWMsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsZ0JBQWdCLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0IsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUscUJBQXFCLDRFQUFlLGdCQUFnQixzREFBRSxxQkFBcUIsNEVBQWUsZ0JBQWdCLHNEQUFFLCtCQUErQiw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDbmMsb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxrQkFBa0IsNEVBQWUsZUFBZSxzREFBRTtBQUMvSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9jb25zdGFudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbnZhciBfcHJpbWl0aXZlTWFwLCBfdXNhZ2VNYXAsIF9kYXRhVHlwZU1hcCwgX2Zvcm1hdE1hcCwgX21pcG1hcE1hcCwgX2ZpbHRlck1hcCwgX3dyYXBNb2RlTWFwLCBfY29sb3JTcGFjZU1hcCwgX2RlcHRoRnVuY01hcCwgX2JsZW5kRXF1YXRpb25NYXAsIF9ibGVuZEZ1bmNNYXAsIF9zdGVuY2lsRnVuY01hcCwgX3N0ZW5jaWxPcE1hcCwgX2N1bGxGYWNlTWFwO1xuXG4vKipcbiAqIEBkZXNjIOeUseS6jiByZWdsIOS9v+eUqOWkp+mHj+Wtl+espuS4suiAjOmdniBXZWJHTCDluLjph4/vvIzlm6DmraTpnIDopoHmmKDlsIRcbiAqL1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbi8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvbGliL2NvbnN0YW50cy9wcmltaXRpdmVzLmpzb25cbmV4cG9ydCB2YXIgcHJpbWl0aXZlTWFwID0gKF9wcmltaXRpdmVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlBPSU5UUywgJ3BvaW50cycpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORVMsICdsaW5lcycpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORV9MT09QLCAnbGluZSBsb29wJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FX1NUUklQLCAnbGluZSBzdHJpcCcpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVTLCAndHJpYW5nbGVzJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRV9GQU4sICd0cmlhbmdsZSBmYW4nKSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX1NUUklQLCAndHJpYW5nbGUgc3RyaXAnKSwgX3ByaW1pdGl2ZU1hcCk7XG5leHBvcnQgdmFyIHVzYWdlTWFwID0gKF91c2FnZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3VzYWdlTWFwLCBnbC5TVEFUSUNfRFJBVywgJ3N0YXRpYycpLCBfZGVmaW5lUHJvcGVydHkoX3VzYWdlTWFwLCBnbC5EWU5BTUlDX0RSQVcsICdkeW5hbWljJyksIF9kZWZpbmVQcm9wZXJ0eShfdXNhZ2VNYXAsIGdsLlNUUkVBTV9EUkFXLCAnc3RyZWFtJyksIF91c2FnZU1hcCk7XG5leHBvcnQgdmFyIGRhdGFUeXBlTWFwID0gKF9kYXRhVHlwZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5CWVRFLCAnaW50OCcpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9JTlQsICdpbnQxNicpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5JTlQsICdpbnQzMicpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9CWVRFLCAndWludDgnKSwgX2RlZmluZVByb3BlcnR5KF9kYXRhVHlwZU1hcCwgZ2wuVU5TSUdORURfU0hPUlQsICd1aW50MTYnKSwgX2RlZmluZVByb3BlcnR5KF9kYXRhVHlwZU1hcCwgZ2wuVU5TSUdORURfSU5ULCAndWludDMyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLkZMT0FULCAnZmxvYXQnKSwgX2RhdGFUeXBlTWFwKTtcbmV4cG9ydCB2YXIgZm9ybWF0TWFwID0gKF9mb3JtYXRNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkFMUEhBLCAnYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkxVTUlOQU5DRSwgJ2x1bWluYW5jZScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuTFVNSU5BTkNFX0FMUEhBLCAnbHVtaW5hbmNlIGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0IsICdyZ2InKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQkEsICdyZ2JhJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0JBNCwgJ3JnYmE0JyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0I1X0ExLCAncmdiNSBhMScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuUkdCNTY1LCAncmdiNTY1JyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5ERVBUSF9DT01QT05FTlQsICdkZXB0aCcpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuREVQVEhfU1RFTkNJTCwgJ2RlcHRoIHN0ZW5jaWwnKSwgX2Zvcm1hdE1hcCk7XG5leHBvcnQgdmFyIG1pcG1hcE1hcCA9IChfbWlwbWFwTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfbWlwbWFwTWFwLCBnbC5ET05UX0NBUkUsICdkb250IGNhcmUnKSwgX2RlZmluZVByb3BlcnR5KF9taXBtYXBNYXAsIGdsLk5JQ0VTVCwgJ25pY2UnKSwgX2RlZmluZVByb3BlcnR5KF9taXBtYXBNYXAsIGdsLkZBU1RFU1QsICdmYXN0JyksIF9taXBtYXBNYXApO1xuZXhwb3J0IHZhciBmaWx0ZXJNYXAgPSAoX2ZpbHRlck1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTkVBUkVTVCwgJ25lYXJlc3QnKSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLkxJTkVBUiwgJ2xpbmVhcicpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSX01JUE1BUF9MSU5FQVIsICdtaXBtYXAnKSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLk5FQVJFU1RfTUlQTUFQX0xJTkVBUiwgJ25lYXJlc3QgbWlwbWFwIGxpbmVhcicpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSX01JUE1BUF9ORUFSRVNULCAnbGluZWFyIG1pcG1hcCBuZWFyZXN0JyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCAnbmVhcmVzdCBtaXBtYXAgbmVhcmVzdCcpLCBfZmlsdGVyTWFwKTtcbmV4cG9ydCB2YXIgd3JhcE1vZGVNYXAgPSAoX3dyYXBNb2RlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLlJFUEVBVCwgJ3JlcGVhdCcpLCBfZGVmaW5lUHJvcGVydHkoX3dyYXBNb2RlTWFwLCBnbC5DTEFNUF9UT19FREdFLCAnY2xhbXAnKSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuTUlSUk9SRURfUkVQRUFULCAnbWlycm9yJyksIF93cmFwTW9kZU1hcCk7XG5leHBvcnQgdmFyIGNvbG9yU3BhY2VNYXAgPSAoX2NvbG9yU3BhY2VNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jb2xvclNwYWNlTWFwLCBnbC5OT05FLCAnbm9uZScpLCBfZGVmaW5lUHJvcGVydHkoX2NvbG9yU3BhY2VNYXAsIGdsLkJST1dTRVJfREVGQVVMVF9XRUJHTCwgJ2Jyb3dzZXInKSwgX2NvbG9yU3BhY2VNYXApO1xuZXhwb3J0IHZhciBkZXB0aEZ1bmNNYXAgPSAoX2RlcHRoRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTkVWRVIsICduZXZlcicpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuQUxXQVlTLCAnYWx3YXlzJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5MRVNTLCAnbGVzcycpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTEVRVUFMLCAnbGVxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5HUkVBVEVSLCAnZ3JlYXRlcicpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuR0VRVUFMLCAnZ2VxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5FUVVBTCwgJ2VxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5OT1RFUVVBTCwgJ25vdGVxdWFsJyksIF9kZXB0aEZ1bmNNYXApO1xuZXhwb3J0IHZhciBibGVuZEVxdWF0aW9uTWFwID0gKF9ibGVuZEVxdWF0aW9uTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19BREQsICdhZGQnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NSU5fRVhULCAnbWluJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuTUFYX0VYVCwgJ21heCcpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfU1VCVFJBQ1QsICdzdWJ0cmFjdCcpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfUkVWRVJTRV9TVUJUUkFDVCwgJ3JldmVyc2Ugc3VidHJhY3QnKSwgX2JsZW5kRXF1YXRpb25NYXApO1xuZXhwb3J0IHZhciBibGVuZEZ1bmNNYXAgPSAoX2JsZW5kRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuWkVSTywgJ3plcm8nKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORSwgJ29uZScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0NPTE9SLCAnc3JjIGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SLCAnb25lIG1pbnVzIHNyYyBjb2xvcicpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0FMUEhBLCAnc3JjIGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBLCAnb25lIG1pbnVzIHNyYyBhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuRFNUX0NPTE9SLCAnZHN0IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0NPTE9SLCAnb25lIG1pbnVzIGRzdCBjb2xvcicpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuRFNUX0FMUEhBLCAnZHN0IGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0FMUEhBLCAnb25lIG1pbnVzIGRzdCBhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuQ09OU1RBTlRfQ09MT1IsICdjb25zdGFudCBjb2xvcicpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCAnb25lIG1pbnVzIGNvbnN0YW50IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5DT05TVEFOVF9BTFBIQSwgJ2NvbnN0YW50IGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsICdvbmUgbWludXMgY29uc3RhbnQgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19BTFBIQV9TQVRVUkFURSwgJ3NyYyBhbHBoYSBzYXR1cmF0ZScpLCBfYmxlbmRGdW5jTWFwKTtcbmV4cG9ydCB2YXIgc3RlbmNpbEZ1bmNNYXAgPSAoX3N0ZW5jaWxGdW5jTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLk5FVkVSLCAnbmV2ZXInKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuQUxXQVlTLCAnYWx3YXlzJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkxFU1MsICdsZXNzJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkxFUVVBTCwgJ2xlcXVhbCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5HUkVBVEVSLCAnZ3JlYXRlcicpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5HRVFVQUwsICdnZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuRVFVQUwsICdlcXVhbCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5OT1RFUVVBTCwgJ25vdGVxdWFsJyksIF9zdGVuY2lsRnVuY01hcCk7XG5leHBvcnQgdmFyIHN0ZW5jaWxPcE1hcCA9IChfc3RlbmNpbE9wTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5aRVJPLCAnemVybycpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuS0VFUCwgJ2tlZXAnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLlJFUExBQ0UsICdyZXBsYWNlJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5JTlZFUlQsICdpbnZlcnQnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLklOQ1IsICdpbmNyZW1lbnQnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLkRFQ1IsICdkZWNyZW1lbnQnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLklOQ1JfV1JBUCwgJ2luY3JlbWVudCB3cmFwJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5ERUNSX1dSQVAsICdkZWNyZW1lbnQgd3JhcCcpLCBfc3RlbmNpbE9wTWFwKTtcbmV4cG9ydCB2YXIgY3VsbEZhY2VNYXAgPSAoX2N1bGxGYWNlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3VsbEZhY2VNYXAsIGdsLkZST05ULCAnZnJvbnQnKSwgX2RlZmluZVByb3BlcnR5KF9jdWxsRmFjZU1hcCwgZ2wuQkFDSywgJ2JhY2snKSwgX2N1bGxGYWNlTWFwKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js": /*!*******************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js ***! \*******************************************************************************************/ /*! exports provided: WebGLEngine */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return WebGLEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! regl */ \"./node_modules/_regl@1.7.0@regl/dist/regl.js\");\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(regl__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ReglAttribute */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\");\n/* harmony import */ var _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ReglBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\");\n/* harmony import */ var _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ReglComputeModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\");\n/* harmony import */ var _ReglElements__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ReglElements */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js\");\n/* harmony import */ var _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ReglFramebuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\");\n/* harmony import */ var _ReglModel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ReglModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js\");\n/* harmony import */ var _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ReglTexture2D */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * regl renderer\n */\n\nvar WebGLEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGLEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGLEngine);\n\n this.supportWebGPU = false;\n this.useWGSL = false;\n this.$canvas = void 0;\n this.gl = void 0;\n this.inited = void 0;\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(options) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!options.uniforms) {\n _context2.next = 3;\n break;\n }\n\n _context2.next = 3;\n return Promise.all(Object.keys(options.uniforms).map( /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(name) {\n var texture;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(options.uniforms[name] && options.uniforms[name].load !== undefined)) {\n _context.next = 5;\n break;\n }\n\n _context.next = 3;\n return options.uniforms[name].load();\n\n case 3:\n texture = _context.sent;\n // @ts-ignore\n options.uniforms[name] = texture;\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }()));\n\n case 3:\n return _context2.abrupt(\"return\", new _ReglModel__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this.gl, options));\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this.gl, options);\n };\n\n this.createBuffer = function (options) {\n return new _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.gl, options);\n };\n\n this.createElements = function (options) {\n return new _ReglElements__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this.gl, options);\n };\n\n this.createTexture2D = function (options) {\n return new _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this.gl, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this.gl, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n _this.gl({\n framebuffer: framebuffer ? framebuffer.get() : null\n })(drawCommands);\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(context) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", new _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this.gl, context));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.clear = function (options) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n var color = options.color,\n depth = options.depth,\n stencil = options.stencil,\n _options$framebuffer = options.framebuffer,\n framebuffer = _options$framebuffer === void 0 ? null : _options$framebuffer;\n var reglClearOptions = {\n color: color,\n depth: depth,\n stencil: stencil\n };\n reglClearOptions.framebuffer = framebuffer === null ? framebuffer : framebuffer.get();\n\n _this.gl.clear(reglClearOptions);\n };\n\n this.setScissor = function (scissor) {\n if (_this.gl && _this.gl._gl) {\n // https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/scissor\n if (scissor.enable && scissor.box) {\n // console.log(scissor.box);\n _this.gl._gl.enable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n\n _this.gl._gl.scissor(scissor.box.x, scissor.box.y, scissor.box.width, scissor.box.height);\n } else {\n _this.gl._gl.disable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n }\n\n _this.gl._refresh();\n }\n };\n\n this.viewport = function (_ref4) {\n var x = _ref4.x,\n y = _ref4.y,\n width = _ref4.width,\n height = _ref4.height;\n\n if (_this.gl && _this.gl._gl) {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n _this.gl._gl.viewport(x, y, width, height);\n\n _this.gl._refresh();\n }\n };\n\n this.readPixels = function (options) {\n var framebuffer = options.framebuffer,\n x = options.x,\n y = options.y,\n width = options.width,\n height = options.height;\n var readPixelsOptions = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n if (framebuffer) {\n readPixelsOptions.framebuffer = framebuffer.get();\n }\n\n return _this.gl.read(readPixelsOptions);\n };\n\n this.getCanvas = function () {\n return _this.$canvas;\n };\n\n this.getGLContext = function () {\n return _this.gl._gl;\n };\n\n this.destroy = function () {\n if (_this.gl) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n _this.gl.destroy();\n\n _this.inited = false;\n }\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGLEngine, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(cfg) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this.inited) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt(\"return\");\n\n case 2:\n this.$canvas = cfg.canvas; // tslint:disable-next-line:typedef\n\n _context4.next = 5;\n return new Promise(function (resolve, reject) {\n regl__WEBPACK_IMPORTED_MODULE_6___default()({\n canvas: cfg.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true // preserveDrawingBuffer: false,\n\n },\n pixelRatio: 1,\n // TODO: use extensions\n extensions: ['OES_element_index_uint', 'OES_texture_float', 'OES_standard_derivatives', // wireframe\n 'angle_instanced_arrays' // VSM shadow map\n ],\n optionalExtensions: ['EXT_texture_filter_anisotropic', 'EXT_blend_minmax', 'WEBGL_depth_texture'],\n profile: true,\n onDone: function onDone(err, r) {\n if (err || !r) {\n reject(err);\n } // @ts-ignore\n\n\n resolve(r);\n }\n });\n });\n\n case 5:\n this.gl = _context4.sent;\n this.inited = true;\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function init(_x4) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n // @see https://github.com/antvis/GWebGPUEngine/issues/26\n // @ts-ignore\n return this.gl.limits.readFloat;\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {//\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {//\n }\n }]);\n\n return WebGLEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvaW5kZXguanM/OWMxMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ0o7QUFDTjs7QUFFOUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDRjtBQUNmO0FBQ29CO0FBQ047QUFDWTtBQUNSO0FBQ007QUFDWjtBQUNRO0FBQzVDO0FBQ0E7QUFDQTs7QUFFTywwQkFBMEIsNERBQVU7QUFDM0M7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNqRjtBQUNBLDJCQUEyQixpRUFBbUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBLHNEQUFzRCxtREFBUzs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQkFBaUIsc0RBQWE7QUFDOUI7O0FBRUE7QUFDQSxpQkFBaUIsbURBQVU7QUFDM0I7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQVk7QUFDN0I7O0FBRUE7QUFDQSxpQkFBaUIsdURBQWE7QUFDOUI7O0FBRUE7QUFDQSxpQkFBaUIseURBQWU7QUFDaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSxzREFBc0QseURBQWdCOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsc0RBQUU7O0FBRWhDO0FBQ0EsU0FBUztBQUNULCtCQUErQixzREFBRTtBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0Esa0JBQWtCLDJDQUFJO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7O0FBR3ZCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcywgX3RlbXA7XG5cbi8qKlxuICogcmVuZGVyIHcvIHJlZ2xcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kXG4gKi9cbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCByZWdsIGZyb20gJ3JlZ2wnO1xuaW1wb3J0IFJlZ2xBdHRyaWJ1dGUgZnJvbSAnLi9SZWdsQXR0cmlidXRlJztcbmltcG9ydCBSZWdsQnVmZmVyIGZyb20gJy4vUmVnbEJ1ZmZlcic7XG5pbXBvcnQgUmVnbENvbXB1dGVNb2RlbCBmcm9tICcuL1JlZ2xDb21wdXRlTW9kZWwnO1xuaW1wb3J0IFJlZ2xFbGVtZW50cyBmcm9tICcuL1JlZ2xFbGVtZW50cyc7XG5pbXBvcnQgUmVnbEZyYW1lYnVmZmVyIGZyb20gJy4vUmVnbEZyYW1lYnVmZmVyJztcbmltcG9ydCBSZWdsTW9kZWwgZnJvbSAnLi9SZWdsTW9kZWwnO1xuaW1wb3J0IFJlZ2xUZXh0dXJlMkQgZnJvbSAnLi9SZWdsVGV4dHVyZTJEJztcbi8qKlxuICogcmVnbCByZW5kZXJlclxuICovXG5cbmV4cG9ydCB2YXIgV2ViR0xFbmdpbmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHTEVuZ2luZSgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdMRW5naW5lKTtcblxuICAgIHRoaXMuc3VwcG9ydFdlYkdQVSA9IGZhbHNlO1xuICAgIHRoaXMudXNlV0dTTCA9IGZhbHNlO1xuICAgIHRoaXMuJGNhbnZhcyA9IHZvaWQgMDtcbiAgICB0aGlzLmdsID0gdm9pZCAwO1xuICAgIHRoaXMuaW5pdGVkID0gdm9pZCAwO1xuXG4gICAgdGhpcy5jcmVhdGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLnVuaWZvcm1zKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKG9wdGlvbnMudW5pZm9ybXMpLm1hcCggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShvcHRpb25zLnVuaWZvcm1zW25hbWVdICYmIG9wdGlvbnMudW5pZm9ybXNbbmFtZV0ubG9hZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy51bmlmb3Jtc1tuYW1lXS5sb2FkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVuaWZvcm1zW25hbWVdID0gdGV4dHVyZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgX2NhbGxlZSk7XG4gICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KCkpKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IFJlZ2xNb2RlbChfdGhpcy5nbCwgb3B0aW9ucykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHRoaXMuY3JlYXRlQXR0cmlidXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbEF0dHJpYnV0ZShfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbEJ1ZmZlcihfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRWxlbWVudHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsRWxlbWVudHMoX3RoaXMuZ2wsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZVRleHR1cmUyRCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ2xUZXh0dXJlMkQoX3RoaXMuZ2wsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbEZyYW1lYnVmZmVyKF90aGlzLmdsLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy51c2VGcmFtZWJ1ZmZlciA9IGZ1bmN0aW9uIChmcmFtZWJ1ZmZlciwgZHJhd0NvbW1hbmRzKSB7XG4gICAgICBfdGhpcy5nbCh7XG4gICAgICAgIGZyYW1lYnVmZmVyOiBmcmFtZWJ1ZmZlciA/IGZyYW1lYnVmZmVyLmdldCgpIDogbnVsbFxuICAgICAgfSkoZHJhd0NvbW1hbmRzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVDb21wdXRlTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoY29udGV4dCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmFicnVwdChcInJldHVyblwiLCBuZXcgUmVnbENvbXB1dGVNb2RlbChfdGhpcy5nbCwgY29udGV4dCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94Mykge1xuICAgICAgICByZXR1cm4gX3JlZjMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5jbGVhciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNjbGVhci10aGUtZHJhdy1idWZmZXJcbiAgICAgIHZhciBjb2xvciA9IG9wdGlvbnMuY29sb3IsXG4gICAgICAgICAgZGVwdGggPSBvcHRpb25zLmRlcHRoLFxuICAgICAgICAgIHN0ZW5jaWwgPSBvcHRpb25zLnN0ZW5jaWwsXG4gICAgICAgICAgX29wdGlvbnMkZnJhbWVidWZmZXIgPSBvcHRpb25zLmZyYW1lYnVmZmVyLFxuICAgICAgICAgIGZyYW1lYnVmZmVyID0gX29wdGlvbnMkZnJhbWVidWZmZXIgPT09IHZvaWQgMCA/IG51bGwgOiBfb3B0aW9ucyRmcmFtZWJ1ZmZlcjtcbiAgICAgIHZhciByZWdsQ2xlYXJPcHRpb25zID0ge1xuICAgICAgICBjb2xvcjogY29sb3IsXG4gICAgICAgIGRlcHRoOiBkZXB0aCxcbiAgICAgICAgc3RlbmNpbDogc3RlbmNpbFxuICAgICAgfTtcbiAgICAgIHJlZ2xDbGVhck9wdGlvbnMuZnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlciA9PT0gbnVsbCA/IGZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIuZ2V0KCk7XG5cbiAgICAgIF90aGlzLmdsLmNsZWFyKHJlZ2xDbGVhck9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLnNldFNjaXNzb3IgPSBmdW5jdGlvbiAoc2Npc3Nvcikge1xuICAgICAgaWYgKF90aGlzLmdsICYmIF90aGlzLmdsLl9nbCkge1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9BUEkvV2ViR0xSZW5kZXJpbmdDb250ZXh0L3NjaXNzb3JcbiAgICAgICAgaWYgKHNjaXNzb3IuZW5hYmxlICYmIHNjaXNzb3IuYm94KSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coc2Npc3Nvci5ib3gpO1xuICAgICAgICAgIF90aGlzLmdsLl9nbC5lbmFibGUoZ2wuU0NJU1NPUl9URVNUKTtcblxuICAgICAgICAgIF90aGlzLmdsLl9nbC5zY2lzc29yKHNjaXNzb3IuYm94LngsIHNjaXNzb3IuYm94LnksIHNjaXNzb3IuYm94LndpZHRoLCBzY2lzc29yLmJveC5oZWlnaHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLmdsLl9nbC5kaXNhYmxlKGdsLlNDSVNTT1JfVEVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5nbC5fcmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnZpZXdwb3J0ID0gZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICB2YXIgeCA9IF9yZWY0LngsXG4gICAgICAgICAgeSA9IF9yZWY0LnksXG4gICAgICAgICAgd2lkdGggPSBfcmVmNC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmNC5oZWlnaHQ7XG5cbiAgICAgIGlmIChfdGhpcy5nbCAmJiBfdGhpcy5nbC5fZ2wpIHtcbiAgICAgICAgLy8gdXNlIFdlYkdMIGNvbnRleHQgZGlyZWN0bHlcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjdW5zYWZlLWVzY2FwZS1oYXRjaFxuICAgICAgICBfdGhpcy5nbC5fZ2wudmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICAgICAgX3RoaXMuZ2wuX3JlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5yZWFkUGl4ZWxzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBmcmFtZWJ1ZmZlciA9IG9wdGlvbnMuZnJhbWVidWZmZXIsXG4gICAgICAgICAgeCA9IG9wdGlvbnMueCxcbiAgICAgICAgICB5ID0gb3B0aW9ucy55LFxuICAgICAgICAgIHdpZHRoID0gb3B0aW9ucy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBvcHRpb25zLmhlaWdodDtcbiAgICAgIHZhciByZWFkUGl4ZWxzT3B0aW9ucyA9IHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcblxuICAgICAgaWYgKGZyYW1lYnVmZmVyKSB7XG4gICAgICAgIHJlYWRQaXhlbHNPcHRpb25zLmZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXIuZ2V0KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfdGhpcy5nbC5yZWFkKHJlYWRQaXhlbHNPcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuJGNhbnZhcztcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRHTENvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuZ2wuX2dsO1xuICAgIH07XG5cbiAgICB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuZ2wpIHtcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjY2xlYW4tdXBcbiAgICAgICAgX3RoaXMuZ2wuZGVzdHJveSgpO1xuXG4gICAgICAgIF90aGlzLmluaXRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR0xFbmdpbmUsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoY2ZnKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICB0aGlzLiRjYW52YXMgPSBjZmcuY2FudmFzOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHlwZWRlZlxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICByZWdsKHtcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzOiBjZmcuY2FudmFzLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWxwaGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIFRBQSBpbnN0ZWFkIG9mIE1TQUFcbiAgICAgICAgICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzLzEuMC8jNS4yLjFcbiAgICAgICAgICAgICAgICAgICAgICBhbnRpYWxpYXM6IGNmZy5hbnRpYWxpYXMsXG4gICAgICAgICAgICAgICAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiB0cnVlIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogZmFsc2UsXG5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGl4ZWxSYXRpbzogMSxcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogdXNlIGV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogWydPRVNfZWxlbWVudF9pbmRleF91aW50JywgJ09FU190ZXh0dXJlX2Zsb2F0JywgJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycsIC8vIHdpcmVmcmFtZVxuICAgICAgICAgICAgICAgICAgICAnYW5nbGVfaW5zdGFuY2VkX2FycmF5cycgLy8gVlNNIHNoYWRvdyBtYXBcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxFeHRlbnNpb25zOiBbJ0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYycsICdFWFRfYmxlbmRfbWlubWF4JywgJ1dFQkdMX2RlcHRoX3RleHR1cmUnXSxcbiAgICAgICAgICAgICAgICAgICAgcHJvZmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb25Eb25lOiBmdW5jdGlvbiBvbkRvbmUoZXJyLCByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciB8fCAhcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgfSAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0aGlzLmdsID0gX2NvbnRleHQ0LnNlbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTQsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0KF94NCkge1xuICAgICAgICByZXR1cm4gX2luaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluaXQ7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiaXNGbG9hdFN1cHBvcnRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0Zsb2F0U3VwcG9ydGVkKCkge1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL0dXZWJHUFVFbmdpbmUvaXNzdWVzLzI2XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gdGhpcy5nbC5saW1pdHMucmVhZEZsb2F0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJiZWdpbkZyYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luRnJhbWUoKSB7Ly9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZW5kRnJhbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kRnJhbWUoKSB7Ly9cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR0xFbmdpbmU7XG59KCksIF90ZW1wKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js ***! \******************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGPUAttribute = /*#__PURE__*/function () {\n function WebGPUAttribute(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUAttribute);\n\n this.engine = engine;\n this.options = options;\n this.attribute = void 0;\n this.buffer = void 0;\n var _options = options,\n buffer = _options.buffer,\n offset = _options.offset,\n stride = _options.stride,\n normalized = _options.normalized,\n size = _options.size,\n divisor = _options.divisor,\n arrayStride = _options.arrayStride,\n attributes = _options.attributes,\n stepMode = _options.stepMode;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0,\n arrayStride: arrayStride || 0,\n // @ts-ignore\n attributes: attributes,\n stepMode: stepMode || 'vertex'\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUAttribute;\n}();\n\n\n//# sourceMappingURL=WebGPUAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUF0dHJpYnV0ZS5qcz8zZTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFcUM7QUFDdEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUF0dHJpYnV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIFdlYkdQVUF0dHJpYnV0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUF0dHJpYnV0ZShlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVQXR0cmlidXRlKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5hdHRyaWJ1dGUgPSB2b2lkIDA7XG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgICAgYnVmZmVyID0gX29wdGlvbnMuYnVmZmVyLFxuICAgICAgICBvZmZzZXQgPSBfb3B0aW9ucy5vZmZzZXQsXG4gICAgICAgIHN0cmlkZSA9IF9vcHRpb25zLnN0cmlkZSxcbiAgICAgICAgbm9ybWFsaXplZCA9IF9vcHRpb25zLm5vcm1hbGl6ZWQsXG4gICAgICAgIHNpemUgPSBfb3B0aW9ucy5zaXplLFxuICAgICAgICBkaXZpc29yID0gX29wdGlvbnMuZGl2aXNvcixcbiAgICAgICAgYXJyYXlTdHJpZGUgPSBfb3B0aW9ucy5hcnJheVN0cmlkZSxcbiAgICAgICAgYXR0cmlidXRlcyA9IF9vcHRpb25zLmF0dHJpYnV0ZXMsXG4gICAgICAgIHN0ZXBNb2RlID0gX29wdGlvbnMuc3RlcE1vZGU7XG4gICAgdGhpcy5idWZmZXIgPSBidWZmZXI7XG4gICAgdGhpcy5hdHRyaWJ1dGUgPSB7XG4gICAgICBidWZmZXI6IGJ1ZmZlci5nZXQoKSxcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzdHJpZGU6IHN0cmlkZSB8fCAwLFxuICAgICAgbm9ybWFsaXplZDogbm9ybWFsaXplZCB8fCBmYWxzZSxcbiAgICAgIGRpdmlzb3I6IGRpdmlzb3IgfHwgMCxcbiAgICAgIGFycmF5U3RyaWRlOiBhcnJheVN0cmlkZSB8fCAwLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICAgIHN0ZXBNb2RlOiBzdGVwTW9kZSB8fCAndmVydGV4J1xuICAgIH07XG5cbiAgICBpZiAoc2l6ZSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUuc2l6ZSA9IHNpemU7XG4gICAgfVxuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUF0dHJpYnV0ZSwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihvcHRpb25zKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5zdWJEYXRhKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUF0dHJpYnV0ZTtcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVQXR0cmlidXRlIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVUF0dHJpYnV0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js": /*!***************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js ***! \***************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nvar WebGPUBuffer = /*#__PURE__*/function () {\n function WebGPUBuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUBuffer);\n\n this.engine = engine;\n this.options = options;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type;\n this.buffer = this.createBuffer(data instanceof Array ? new Float32Array(data) : data, // TODO: WebGL 和 WebGPU buffer usage 映射关系\n usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].Vertex | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].CopyDst);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n this.setSubData(this.buffer, offset, data instanceof Array ? new Float32Array(data) : data);\n }\n }, {\n key: \"createBuffer\",\n value: function createBuffer(view, flags) {\n // @ts-ignore\n var padding = view.byteLength % 4;\n var verticesBufferDescriptor = {\n // @ts-ignore\n size: view.byteLength + padding,\n usage: flags\n };\n var buffer = this.engine.device.createBuffer(verticesBufferDescriptor);\n this.setSubData(buffer, 0, view);\n return buffer;\n }\n /**\n * 不同于 Babylon.js 的版本,使用最新的 GPUQueue.writeBuffer 方法\n * @see https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writebuffer\n * 已废弃创建一个临时的 mapped buffer 用于拷贝数据 @see https://gpuweb.github.io/gpuweb/#GPUDevice-createBufferMapped\n * @see https://github.com/gpuweb/gpuweb/blob/master/design/BufferOperations.md#updating-data-to-an-existing-buffer-like-webgls-buffersubdata\n */\n\n }, {\n key: \"setSubData\",\n value: function setSubData(destBuffer, destOffset, srcArrayBuffer) {\n // deprecated API setSubData\n // destBuffer.setSubData(0, srcArrayBuffer);\n // deprecated API createBufferMapped\n // use createBuffer & getMappedRange instead\n // const [srcBuffer, arrayBuffer] = this.engine.device.createBufferMapped({\n // size: byteCount,\n // usage: WebGPUConstants.BufferUsage.CopySrc,\n // });\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue; // @ts-ignore\n\n queue.writeBuffer(destBuffer, destOffset, srcArrayBuffer);\n }\n }]);\n\n return WebGPUBuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5qcz9iNGI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ2Y7QUFDaUI7O0FBRWhFO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3RUFBMkIsVUFBVSx3RUFBMkI7QUFDN0U7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLGtCQUFrQiw0REFBUTtBQUMxQixzRUFBc0U7O0FBRXRFO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFa0M7QUFDbkMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5cbnZhciBXZWJHUFVCdWZmZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVCdWZmZXIoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVUJ1ZmZlcik7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuYnVmZmVyID0gdm9pZCAwO1xuICAgIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICAgIGRhdGEgPSBfb3B0aW9ucy5kYXRhLFxuICAgICAgICB1c2FnZSA9IF9vcHRpb25zLnVzYWdlLFxuICAgICAgICB0eXBlID0gX29wdGlvbnMudHlwZTtcbiAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuY3JlYXRlQnVmZmVyKGRhdGEgaW5zdGFuY2VvZiBBcnJheSA/IG5ldyBGbG9hdDMyQXJyYXkoZGF0YSkgOiBkYXRhLCAvLyBUT0RPOiBXZWJHTCDlkowgV2ViR1BVIGJ1ZmZlciB1c2FnZSDmmKDlsITlhbPns7tcbiAgICB1c2FnZSB8fCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuVmVydGV4IHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3QpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5idWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEoX3JlZikge1xuICAgICAgdmFyIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgICAgb2Zmc2V0ID0gX3JlZi5vZmZzZXQ7XG4gICAgICB0aGlzLnNldFN1YkRhdGEodGhpcy5idWZmZXIsIG9mZnNldCwgZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gbmV3IEZsb2F0MzJBcnJheShkYXRhKSA6IGRhdGEpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyKHZpZXcsIGZsYWdzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2YXIgcGFkZGluZyA9IHZpZXcuYnl0ZUxlbmd0aCAlIDQ7XG4gICAgICB2YXIgdmVydGljZXNCdWZmZXJEZXNjcmlwdG9yID0ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNpemU6IHZpZXcuYnl0ZUxlbmd0aCArIHBhZGRpbmcsXG4gICAgICAgIHVzYWdlOiBmbGFnc1xuICAgICAgfTtcbiAgICAgIHZhciBidWZmZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRpY2VzQnVmZmVyRGVzY3JpcHRvcik7XG4gICAgICB0aGlzLnNldFN1YkRhdGEoYnVmZmVyLCAwLCB2aWV3KTtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOS4jeWQjOS6jiBCYWJ5bG9uLmpzIOeahOeJiOacrO+8jOS9v+eUqOacgOaWsOeahCBHUFVRdWV1ZS53cml0ZUJ1ZmZlciDmlrnms5VcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVxdWV1ZS13cml0ZWJ1ZmZlclxuICAgICAqIOW3suW6n+W8g+WIm+W7uuS4gOS4quS4tOaXtueahCBtYXBwZWQgYnVmZmVyIOeUqOS6juaLt+i0neaVsOaNriBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI0dQVURldmljZS1jcmVhdGVCdWZmZXJNYXBwZWRcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9CdWZmZXJPcGVyYXRpb25zLm1kI3VwZGF0aW5nLWRhdGEtdG8tYW4tZXhpc3RpbmctYnVmZmVyLWxpa2Utd2ViZ2xzLWJ1ZmZlcnN1YmRhdGFcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0U3ViRGF0YShkZXN0QnVmZmVyLCBkZXN0T2Zmc2V0LCBzcmNBcnJheUJ1ZmZlcikge1xuICAgICAgLy8gZGVwcmVjYXRlZCBBUEkgc2V0U3ViRGF0YVxuICAgICAgLy8gZGVzdEJ1ZmZlci5zZXRTdWJEYXRhKDAsIHNyY0FycmF5QnVmZmVyKTtcbiAgICAgIC8vIGRlcHJlY2F0ZWQgQVBJIGNyZWF0ZUJ1ZmZlck1hcHBlZFxuICAgICAgLy8gdXNlIGNyZWF0ZUJ1ZmZlciAmIGdldE1hcHBlZFJhbmdlIGluc3RlYWRcbiAgICAgIC8vIGNvbnN0IFtzcmNCdWZmZXIsIGFycmF5QnVmZmVyXSA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoe1xuICAgICAgLy8gICBzaXplOiBieXRlQ291bnQsXG4gICAgICAvLyAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weVNyYyxcbiAgICAgIC8vIH0pO1xuICAgICAgdmFyIHF1ZXVlID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmVuZ2luZS5kZXZpY2UuZ2V0UXVldWUoKSA6IHRoaXMuZW5naW5lLmRldmljZS5kZWZhdWx0UXVldWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgcXVldWUud3JpdGVCdWZmZXIoZGVzdEJ1ZmZlciwgZGVzdE9mZnNldCwgc3JjQXJyYXlCdWZmZXIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVCdWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVUJ1ZmZlciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js": /*!*********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js ***! \*********************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUComputeModel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\n\n\nvar WebGPUComputeModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n function WebGPUComputeModel(engine, context) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, WebGPUComputeModel);\n\n this.engine = engine;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"createEntity\"])();\n this.uniformGPUBufferLayout = [];\n this.uniformBuffer = void 0;\n this.vertexBuffers = {};\n this.outputBuffer = void 0;\n this.bindGroupEntries = void 0;\n this.bindGroup = void 0;\n this.computePipeline = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(WebGPUComputeModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n var _yield$this$compileCo, computeStage, buffers, uniforms, bufferBindingIndex, offset, mergedUniformData;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.compileComputePipelineStageDescriptor(this.context.shader);\n\n case 2:\n _yield$this$compileCo = _context.sent;\n computeStage = _yield$this$compileCo.computeStage;\n buffers = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].StorageBuffer;\n });\n uniforms = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].Uniform;\n });\n bufferBindingIndex = uniforms.length ? 1 : 0;\n this.bindGroupEntries = [];\n\n if (bufferBindingIndex) {\n offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n // we use std140 layout @see https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)\n\n mergedUniformData = [];\n uniforms.forEach(function (uniform) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_7__[\"isNumber\"])(uniform.data)) {\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n\n offset += 4; // @ts-ignore\n\n mergedUniformData.push(uniform.data);\n } else {\n var _uniform$data;\n\n // @ts-ignore\n var originDataLength = ((_uniform$data = uniform.data) === null || _uniform$data === void 0 ? void 0 : _uniform$data.length) || 1;\n\n if (originDataLength === 3) {\n // vec3 -> vec4\n // @see http://ptgmedia.pearsoncmg.com/images/9780321552624/downloads/0321552628_AppL.pdf\n originDataLength = 4; // @ts-ignore\n\n uniform.data.push(0);\n } // 4 elements per block/line\n\n\n var padding = offset / 4 % 4;\n\n if (padding > 0) {\n var space = 4 - padding;\n\n if (originDataLength > 1 && originDataLength <= space) {\n if (originDataLength === 2) {\n if (space === 3) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n } else {\n for (var i = 0; i < space; i++) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n }\n\n offset += 4 * originDataLength;\n }\n });\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst\n });\n this.bindGroupEntries.push({\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get()\n }\n });\n } // create GPUBuffers for storeage buffers\n\n\n buffers.forEach(function (buffer) {\n if (buffer.data !== null) {\n if (buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].Vector4FloatArray || buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].FloatArray) {\n var gpuBuffer;\n\n if (buffer.name === _this.context.output.name) {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n _this.outputBuffer = gpuBuffer;\n _this.context.output = {\n name: buffer.name,\n // @ts-ignore\n length: isFinite(Number(buffer.data)) ? 1 : buffer.data.length,\n typedArrayConstructor: Float32Array,\n gpuBuffer: gpuBuffer.get()\n };\n } else {\n if (buffer.isReferer) {\n // @ts-ignore\n if (buffer.data.model && buffer.data.model.outputBuffer) {\n // @ts-ignore\n gpuBuffer = buffer.data.model.outputBuffer;\n } else {// referred kernel haven't been executed\n }\n } else {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n }\n } // @ts-ignore\n\n\n _this.vertexBuffers[buffer.name] = gpuBuffer;\n\n _this.bindGroupEntries.push({\n binding: bufferBindingIndex,\n resource: {\n name: buffer.name,\n refer: gpuBuffer ? undefined : buffer.data,\n // @ts-ignore\n buffer: gpuBuffer ? gpuBuffer.get() : undefined\n }\n });\n\n bufferBindingIndex++;\n }\n }\n }); // create compute pipeline layout\n\n this.computePipeline = this.engine.device.createComputePipeline({\n computeStage: computeStage\n });\n console.log(this.bindGroupEntries);\n this.bindGroup = this.engine.device.createBindGroup({\n layout: this.computePipeline.getBindGroupLayout(0),\n entries: this.bindGroupEntries\n });\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n if (this.uniformBuffer) {\n this.uniformBuffer.destroy();\n }\n\n Object.keys(this.vertexBuffers).forEach(function (bufferName) {\n return _this2.vertexBuffers[bufferName].destroy();\n });\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var output, length, typedArrayConstructor, gpuBuffer, byteCount, gpuReadBuffer, encoder, queue, arraybuffer, typedArray;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n output = this.context.output;\n\n if (!output) {\n _context2.next = 16;\n break;\n }\n\n length = output.length, typedArrayConstructor = output.typedArrayConstructor, gpuBuffer = output.gpuBuffer;\n\n if (!gpuBuffer) {\n _context2.next = 16;\n break;\n }\n\n // await gpuBuffer.mapAsync(WebGPUConstants.MapMode.Read);\n // const arraybuffer = gpuBuffer.getMappedRange();\n // let arraybuffer;\n // if (isSafari) {\n // arraybuffer = await gpuBuffer.mapReadAsync();\n // } else {\n byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT; // @see https://developers.google.com/web/updates/2019/08/get-started-with-gpu-compute-on-the-web\n\n gpuReadBuffer = this.engine.device.createBuffer({\n size: byteCount,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n });\n encoder = this.engine.device.createCommandEncoder();\n encoder.copyBufferToBuffer(gpuBuffer, 0, gpuReadBuffer, 0, byteCount);\n queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n _context2.next = 12;\n return gpuReadBuffer.mapAsync(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"MapMode\"].Read);\n\n case 12:\n arraybuffer = gpuReadBuffer.getMappedRange();\n typedArray = new typedArrayConstructor(arraybuffer.slice(0));\n gpuReadBuffer.unmap();\n return _context2.abrupt(\"return\", typedArray);\n\n case 16:\n return _context2.abrupt(\"return\", new Float32Array());\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"run\",\n value: function run() {\n if (this.engine.currentComputePass) {\n var _this$engine$currentC;\n\n this.engine.currentComputePass.setPipeline(this.computePipeline); // this.bindGroupEntries.forEach((entry) => {\n // if (!entry.resource.buffer) {\n // // get referred kernel's output\n // const gpuBuffer = (entry.resource.refer.model as WebGPUComputeModel)\n // .outputBuffer;\n // this.vertexBuffers[entry.resource.name] = gpuBuffer;\n // entry.resource.buffer = gpuBuffer.get();\n // }\n // });\n // const bindGroup = this.engine.device.createBindGroup({\n // layout: this.computePipeline.getBindGroupLayout(0),\n // entries: this.bindGroupEntries,\n // });\n\n this.engine.currentComputePass.setBindGroup(0, this.bindGroup);\n\n (_this$engine$currentC = this.engine.currentComputePass).dispatch.apply(_this$engine$currentC, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.context.dispatch));\n }\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var buffer = this.vertexBuffers[bufferName];\n\n if (buffer) {\n buffer.subData({\n data: data,\n offset: offset\n });\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform(uniformName, data) {\n var layout = this.uniformGPUBufferLayout.find(function (l) {\n return l.name === uniformName;\n });\n\n if (layout) {\n this.uniformBuffer.subData({\n data: Number.isFinite(data) ? new Float32Array([data]) : new Float32Array(data),\n offset: layout.offset\n });\n }\n }\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n // copy output GPUBuffer of kernel\n var inputBuffer = this.vertexBuffers[inputName];\n var outputBuffer = model.outputBuffer;\n\n if (inputBuffer && outputBuffer && inputBuffer !== outputBuffer) {\n var encoder = this.engine.device.createCommandEncoder();\n var _context$output = model.context.output,\n length = _context$output.length,\n typedArrayConstructor = _context$output.typedArrayConstructor;\n var byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT;\n encoder.copyBufferToBuffer(outputBuffer.get(), 0, inputBuffer.get(), 0, byteCount);\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n }\n }\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"compileComputePipelineStageDescriptor\",\n value: function () {\n var _compileComputePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(computeCode) {\n var computeShader, shaderVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n computeShader = computeCode;\n shaderVersion = '#version 450\\n';\n\n if (this.engine.options.useWGSL) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 5;\n return this.compileShaderToSpirV(computeCode, 'compute', shaderVersion);\n\n case 5:\n computeShader = _context3.sent;\n\n case 6:\n return _context3.abrupt(\"return\", {\n computeStage: {\n module: this.engine.device.createShaderModule({\n code: computeShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n });\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compileComputePipelineStageDescriptor(_x) {\n return _compileComputePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compileComputePipelineStageDescriptor;\n }()\n }]);\n\n return WebGPUComputeModel;\n}();\n\n\n//# sourceMappingURL=WebGPUComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVNb2RlbC5qcz8wOWE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDYTtBQUNGO0FBQ0o7QUFDTjtBQUMrQjtBQUM3QjtBQUNsQjtBQUNKOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBLGtCQUFrQix3RUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRTs7QUFFQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGlFQUFhO0FBQy9ELGlCQUFpQjtBQUNqQjtBQUNBLGtEQUFrRCxpRUFBYTtBQUMvRCxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBLDZCQUE2QjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLGlFQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkIsa0NBQWtDOztBQUVsQztBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSx1QkFBdUI7OztBQUd2Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7OztBQUc3Qiw0RUFBNEUsK0VBQWtCOztBQUU5RjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSx5QkFBeUI7QUFDekIseUNBQXlDLFdBQVc7QUFDcEQ7QUFDQTtBQUNBLDJCQUEyQjs7O0FBRzNCLDBFQUEwRSwrRUFBa0I7O0FBRTVGO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsMkNBQTJDLHFEQUFZO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHdFQUEyQixXQUFXLHdFQUEyQjtBQUM1RixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQixpQkFBaUI7OztBQUdqQjtBQUNBO0FBQ0Esd0NBQXdDLG1FQUFlLHNDQUFzQyxtRUFBZTtBQUM1Rzs7QUFFQTtBQUNBLHdDQUF3QyxxREFBWTtBQUNwRDtBQUNBO0FBQ0EsaUNBQWlDLHdFQUEyQixXQUFXLHdFQUEyQixXQUFXLHdFQUEyQjtBQUN4SSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLE9BQU87QUFDbEM7QUFDQSx5QkFBeUI7QUFDekIsMENBQTBDLHFEQUFZO0FBQ3REO0FBQ0E7QUFDQSxtQ0FBbUMsd0VBQTJCLFdBQVcsd0VBQTJCLFdBQVcsd0VBQTJCO0FBQzFJLDJCQUEyQjtBQUMzQjtBQUNBLHVCQUF1Qjs7O0FBR3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixFQUFFOztBQUVuQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDekU7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLDZFQUE2RTs7QUFFN0U7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0IsNERBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsOENBQThDLG9FQUF1Qjs7QUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaOztBQUVBLHVHQUF1RywrRUFBa0I7QUFDekg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNERBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDdEc7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsNERBQVE7QUFDdkMscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXdDO0FBQ3pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVDb21wdXRlTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBBU1RfVE9LRU5fVFlQRVMsIGNyZWF0ZUVudGl0eSwgaXNTYWZhcmksIFNUT1JBR0VfQ0xBU1MgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbHMvaXMtbnVtYmVyJztcbmltcG9ydCBXZWJHUFVCdWZmZXIgZnJvbSAnLi9XZWJHUFVCdWZmZXInO1xuXG52YXIgV2ViR1BVQ29tcHV0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIOeUqOS6juWQjue7rea4suafk+aXtuWKqOaAgeabtOaWsFxuICAgKi9cbiAgZnVuY3Rpb24gV2ViR1BVQ29tcHV0ZU1vZGVsKGVuZ2luZSwgY29udGV4dCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVDb21wdXRlTW9kZWwpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLmVudGl0eSA9IGNyZWF0ZUVudGl0eSgpO1xuICAgIHRoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dCA9IFtdO1xuICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLnZlcnRleEJ1ZmZlcnMgPSB7fTtcbiAgICB0aGlzLm91dHB1dEJ1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLmJpbmRHcm91cEVudHJpZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5iaW5kR3JvdXAgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wdXRlUGlwZWxpbmUgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVQ29tcHV0ZU1vZGVsLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIF95aWVsZCR0aGlzJGNvbXBpbGVDbywgY29tcHV0ZVN0YWdlLCBidWZmZXJzLCB1bmlmb3JtcywgYnVmZmVyQmluZGluZ0luZGV4LCBvZmZzZXQsIG1lcmdlZFVuaWZvcm1EYXRhO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih0aGlzLmNvbnRleHQuc2hhZGVyKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgX3lpZWxkJHRoaXMkY29tcGlsZUNvID0gX2NvbnRleHQuc2VudDtcbiAgICAgICAgICAgICAgICBjb21wdXRlU3RhZ2UgPSBfeWllbGQkdGhpcyRjb21waWxlQ28uY29tcHV0ZVN0YWdlO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMgPSB0aGlzLmNvbnRleHQudW5pZm9ybXMuZmlsdGVyKGZ1bmN0aW9uICh1bmlmb3JtKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdW5pZm9ybS5zdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuU3RvcmFnZUJ1ZmZlcjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB1bmlmb3JtcyA9IHRoaXMuY29udGV4dC51bmlmb3Jtcy5maWx0ZXIoZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1bmlmb3JtLnN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5Vbmlmb3JtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJ1ZmZlckJpbmRpbmdJbmRleCA9IHVuaWZvcm1zLmxlbmd0aCA/IDEgOiAwO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdyb3VwRW50cmllcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlckJpbmRpbmdJbmRleCkge1xuICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gMDsgLy8gRklYTUU6IOaJgOaciSB1bmlmb3JtIOWQiOW5tuaIkOS4gOS4qiBidWZmZXLvvIzlm7rlrprkvb/nlKggRmxvYXQzMkFycmF5IOWtmOWCqO+8jOehruWunuS8mumAoOaIkOS4gOS6m+WGheWtmOeahOa1qui0uVxuICAgICAgICAgICAgICAgICAgLy8gd2UgdXNlIHN0ZDE0MCBsYXlvdXQgQHNlZSBodHRwczovL3d3dy5raHJvbm9zLm9yZy9vcGVuZ2wvd2lraS9JbnRlcmZhY2VfQmxvY2tfKEdMU0wpXG5cbiAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhID0gW107XG4gICAgICAgICAgICAgICAgICB1bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcih1bmlmb3JtLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaCh1bmlmb3JtLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBfdW5pZm9ybSRkYXRhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgIHZhciBvcmlnaW5EYXRhTGVuZ3RoID0gKChfdW5pZm9ybSRkYXRhID0gdW5pZm9ybS5kYXRhKSA9PT0gbnVsbCB8fCBfdW5pZm9ybSRkYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdW5pZm9ybSRkYXRhLmxlbmd0aCkgfHwgMTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhTGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2ZWMzIC0+IHZlYzRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3B0Z21lZGlhLnBlYXJzb25jbWcuY29tL2ltYWdlcy85NzgwMzIxNTUyNjI0L2Rvd25sb2Fkcy8wMzIxNTUyNjI4X0FwcEwucGRmXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5EYXRhTGVuZ3RoID0gNDsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtLmRhdGEucHVzaCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IC8vIDQgZWxlbWVudHMgcGVyIGJsb2NrL2xpbmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSBvZmZzZXQgLyA0ICUgNDtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWRkaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwYWNlID0gNCAtIHBhZGRpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhTGVuZ3RoID4gMSAmJiBvcmlnaW5EYXRhTGVuZ3RoIDw9IHNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhTGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYWNlID09PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2guYXBwbHkobWVyZ2VkVW5pZm9ybURhdGEsIF90b0NvbnN1bWFibGVBcnJheSh1bmlmb3JtLmRhdGEpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1bmlmb3JtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwYWNlOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRVbmlmb3JtRGF0YS5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2guYXBwbHkobWVyZ2VkVW5pZm9ybURhdGEsIF90b0NvbnN1bWFibGVBcnJheSh1bmlmb3JtLmRhdGEpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNCAqIG9yaWdpbkRhdGFMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtQnVmZmVyID0gbmV3IFdlYkdQVUJ1ZmZlcih0aGlzLmVuZ2luZSwge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiDlpITnkIYgU3RydWN0IOWSjCBib29sZWFuXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogbWVyZ2VkVW5pZm9ybURhdGEgaW5zdGFuY2VvZiBBcnJheSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2F0MzJBcnJheShtZXJnZWRVbmlmb3JtRGF0YSkgOiBtZXJnZWRVbmlmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Vbmlmb3JtIHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3RcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kR3JvdXBFbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBiaW5kaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogdGhpcy51bmlmb3JtQnVmZmVyLmdldCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gLy8gY3JlYXRlIEdQVUJ1ZmZlcnMgZm9yIHN0b3JlYWdlIGJ1ZmZlcnNcblxuXG4gICAgICAgICAgICAgICAgYnVmZmVycy5mb3JFYWNoKGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLnR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5WZWN0b3I0RmxvYXRBcnJheSB8fCBidWZmZXIudHlwZSA9PT0gQVNUX1RPS0VOX1RZUEVTLkZsb2F0QXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3B1QnVmZmVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5uYW1lID09PSBfdGhpcy5jb250ZXh0Lm91dHB1dC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncHVCdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKF90aGlzLmVuZ2luZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGlzRmluaXRlKE51bWJlcihidWZmZXIuZGF0YSkpID8gW2J1ZmZlci5kYXRhXSA6IGJ1ZmZlci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlN0b3JhZ2UgfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdCB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5U3JjXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLm91dHB1dEJ1ZmZlciA9IGdwdUJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmNvbnRleHQub3V0cHV0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBidWZmZXIubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IGlzRmluaXRlKE51bWJlcihidWZmZXIuZGF0YSkpID8gMSA6IGJ1ZmZlci5kYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yOiBGbG9hdDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdwdUJ1ZmZlcjogZ3B1QnVmZmVyLmdldCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLmlzUmVmZXJlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuZGF0YS5tb2RlbCAmJiBidWZmZXIuZGF0YS5tb2RlbC5vdXRwdXRCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QnVmZmVyID0gYnVmZmVyLmRhdGEubW9kZWwub3V0cHV0QnVmZmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugey8vIHJlZmVycmVkIGtlcm5lbCBoYXZlbid0IGJlZW4gZXhlY3V0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QnVmZmVyID0gbmV3IFdlYkdQVUJ1ZmZlcihfdGhpcy5lbmdpbmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogaXNGaW5pdGUoTnVtYmVyKGJ1ZmZlci5kYXRhKSkgPyBbYnVmZmVyLmRhdGFdIDogYnVmZmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5TdG9yYWdlIHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3QgfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weVNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMudmVydGV4QnVmZmVyc1tidWZmZXIubmFtZV0gPSBncHVCdWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5iaW5kR3JvdXBFbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZzogYnVmZmVyQmluZGluZ0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYnVmZmVyLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyOiBncHVCdWZmZXIgPyB1bmRlZmluZWQgOiBidWZmZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI6IGdwdUJ1ZmZlciA/IGdwdUJ1ZmZlci5nZXQoKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgYnVmZmVyQmluZGluZ0luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTsgLy8gY3JlYXRlIGNvbXB1dGUgcGlwZWxpbmUgbGF5b3V0XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVQaXBlbGluZSA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgICAgY29tcHV0ZVN0YWdlOiBjb21wdXRlU3RhZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmJpbmRHcm91cEVudHJpZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdyb3VwID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgICAgICAgICAgICBsYXlvdXQ6IHRoaXMuY29tcHV0ZVBpcGVsaW5lLmdldEJpbmRHcm91cExheW91dCgwKSxcbiAgICAgICAgICAgICAgICAgIGVudHJpZXM6IHRoaXMuYmluZEdyb3VwRW50cmllc1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMudW5pZm9ybUJ1ZmZlcikge1xuICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnZlcnRleEJ1ZmZlcnMpLmZvckVhY2goZnVuY3Rpb24gKGJ1ZmZlck5hbWUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi52ZXJ0ZXhCdWZmZXJzW2J1ZmZlck5hbWVdLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlYWREYXRhID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7XG4gICAgICAgIHZhciBvdXRwdXQsIGxlbmd0aCwgdHlwZWRBcnJheUNvbnN0cnVjdG9yLCBncHVCdWZmZXIsIGJ5dGVDb3VudCwgZ3B1UmVhZEJ1ZmZlciwgZW5jb2RlciwgcXVldWUsIGFycmF5YnVmZmVyLCB0eXBlZEFycmF5O1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmNvbnRleHQub3V0cHV0O1xuXG4gICAgICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZW5ndGggPSBvdXRwdXQubGVuZ3RoLCB0eXBlZEFycmF5Q29uc3RydWN0b3IgPSBvdXRwdXQudHlwZWRBcnJheUNvbnN0cnVjdG9yLCBncHVCdWZmZXIgPSBvdXRwdXQuZ3B1QnVmZmVyO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFncHVCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhd2FpdCBncHVCdWZmZXIubWFwQXN5bmMoV2ViR1BVQ29uc3RhbnRzLk1hcE1vZGUuUmVhZCk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgYXJyYXlidWZmZXIgPSBncHVCdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICAvLyBsZXQgYXJyYXlidWZmZXI7XG4gICAgICAgICAgICAgICAgLy8gaWYgKGlzU2FmYXJpKSB7XG4gICAgICAgICAgICAgICAgLy8gICBhcnJheWJ1ZmZlciA9IGF3YWl0IGdwdUJ1ZmZlci5tYXBSZWFkQXN5bmMoKTtcbiAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ5dGVDb3VudCA9IGxlbmd0aCAqIHR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5CWVRFU19QRVJfRUxFTUVOVDsgLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWIvdXBkYXRlcy8yMDE5LzA4L2dldC1zdGFydGVkLXdpdGgtZ3B1LWNvbXB1dGUtb24tdGhlLXdlYlxuXG4gICAgICAgICAgICAgICAgZ3B1UmVhZEJ1ZmZlciA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgc2l6ZTogYnl0ZUNvdW50LFxuICAgICAgICAgICAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQURcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlbmNvZGVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7XG4gICAgICAgICAgICAgICAgZW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoZ3B1QnVmZmVyLCAwLCBncHVSZWFkQnVmZmVyLCAwLCBieXRlQ291bnQpO1xuICAgICAgICAgICAgICAgIHF1ZXVlID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuZGV2aWNlLmdldFF1ZXVlKCkgOiB0aGlzLmVuZ2luZS5kZXZpY2UuZGVmYXVsdFF1ZXVlO1xuICAgICAgICAgICAgICAgIHF1ZXVlLnN1Ym1pdChbZW5jb2Rlci5maW5pc2goKV0pO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdwdVJlYWRCdWZmZXIubWFwQXN5bmMoV2ViR1BVQ29uc3RhbnRzLk1hcE1vZGUuUmVhZCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICBhcnJheWJ1ZmZlciA9IGdwdVJlYWRCdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0eXBlZEFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcihhcnJheWJ1ZmZlci5zbGljZSgwKSk7XG4gICAgICAgICAgICAgICAgZ3B1UmVhZEJ1ZmZlci51bm1hcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHR5cGVkQXJyYXkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IEZsb2F0MzJBcnJheSgpKTtcblxuICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlYWREYXRhKCkge1xuICAgICAgICByZXR1cm4gX3JlYWREYXRhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0YTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJydW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKCkge1xuICAgICAgaWYgKHRoaXMuZW5naW5lLmN1cnJlbnRDb21wdXRlUGFzcykge1xuICAgICAgICB2YXIgX3RoaXMkZW5naW5lJGN1cnJlbnRDO1xuXG4gICAgICAgIHRoaXMuZW5naW5lLmN1cnJlbnRDb21wdXRlUGFzcy5zZXRQaXBlbGluZSh0aGlzLmNvbXB1dGVQaXBlbGluZSk7IC8vIHRoaXMuYmluZEdyb3VwRW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAvLyAgIGlmICghZW50cnkucmVzb3VyY2UuYnVmZmVyKSB7XG4gICAgICAgIC8vICAgICAvLyBnZXQgcmVmZXJyZWQga2VybmVsJ3Mgb3V0cHV0XG4gICAgICAgIC8vICAgICBjb25zdCBncHVCdWZmZXIgPSAoZW50cnkucmVzb3VyY2UucmVmZXIubW9kZWwgYXMgV2ViR1BVQ29tcHV0ZU1vZGVsKVxuICAgICAgICAvLyAgICAgICAub3V0cHV0QnVmZmVyO1xuICAgICAgICAvLyAgICAgdGhpcy52ZXJ0ZXhCdWZmZXJzW2VudHJ5LnJlc291cmNlLm5hbWVdID0gZ3B1QnVmZmVyO1xuICAgICAgICAvLyAgICAgZW50cnkucmVzb3VyY2UuYnVmZmVyID0gZ3B1QnVmZmVyLmdldCgpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfSk7XG4gICAgICAgIC8vIGNvbnN0IGJpbmRHcm91cCA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCaW5kR3JvdXAoe1xuICAgICAgICAvLyAgIGxheW91dDogdGhpcy5jb21wdXRlUGlwZWxpbmUuZ2V0QmluZEdyb3VwTGF5b3V0KDApLFxuICAgICAgICAvLyAgIGVudHJpZXM6IHRoaXMuYmluZEdyb3VwRW50cmllcyxcbiAgICAgICAgLy8gfSk7XG5cbiAgICAgICAgdGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzLnNldEJpbmRHcm91cCgwLCB0aGlzLmJpbmRHcm91cCk7XG5cbiAgICAgICAgKF90aGlzJGVuZ2luZSRjdXJyZW50QyA9IHRoaXMuZW5naW5lLmN1cnJlbnRDb21wdXRlUGFzcykuZGlzcGF0Y2guYXBwbHkoX3RoaXMkZW5naW5lJGN1cnJlbnRDLCBfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5jb250ZXh0LmRpc3BhdGNoKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUJ1ZmZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCdWZmZXIoYnVmZmVyTmFtZSwgZGF0YSkge1xuICAgICAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMDtcbiAgICAgIHZhciBidWZmZXIgPSB0aGlzLnZlcnRleEJ1ZmZlcnNbYnVmZmVyTmFtZV07XG5cbiAgICAgIGlmIChidWZmZXIpIHtcbiAgICAgICAgYnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVVuaWZvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlVW5pZm9ybSh1bmlmb3JtTmFtZSwgZGF0YSkge1xuICAgICAgdmFyIGxheW91dCA9IHRoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5maW5kKGZ1bmN0aW9uIChsKSB7XG4gICAgICAgIHJldHVybiBsLm5hbWUgPT09IHVuaWZvcm1OYW1lO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChsYXlvdXQpIHtcbiAgICAgICAgdGhpcy51bmlmb3JtQnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgIGRhdGE6IE51bWJlci5pc0Zpbml0ZShkYXRhKSA/IG5ldyBGbG9hdDMyQXJyYXkoW2RhdGFdKSA6IG5ldyBGbG9hdDMyQXJyYXkoZGF0YSksXG4gICAgICAgICAgb2Zmc2V0OiBsYXlvdXQub2Zmc2V0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb25maXJtSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uZmlybUlucHV0KG1vZGVsLCBpbnB1dE5hbWUpIHtcbiAgICAgIC8vIGNvcHkgb3V0cHV0IEdQVUJ1ZmZlciBvZiBrZXJuZWxcbiAgICAgIHZhciBpbnB1dEJ1ZmZlciA9IHRoaXMudmVydGV4QnVmZmVyc1tpbnB1dE5hbWVdO1xuICAgICAgdmFyIG91dHB1dEJ1ZmZlciA9IG1vZGVsLm91dHB1dEJ1ZmZlcjtcblxuICAgICAgaWYgKGlucHV0QnVmZmVyICYmIG91dHB1dEJ1ZmZlciAmJiBpbnB1dEJ1ZmZlciAhPT0gb3V0cHV0QnVmZmVyKSB7XG4gICAgICAgIHZhciBlbmNvZGVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7XG4gICAgICAgIHZhciBfY29udGV4dCRvdXRwdXQgPSBtb2RlbC5jb250ZXh0Lm91dHB1dCxcbiAgICAgICAgICAgIGxlbmd0aCA9IF9jb250ZXh0JG91dHB1dC5sZW5ndGgsXG4gICAgICAgICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3IgPSBfY29udGV4dCRvdXRwdXQudHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuICAgICAgICB2YXIgYnl0ZUNvdW50ID0gbGVuZ3RoICogdHlwZWRBcnJheUNvbnN0cnVjdG9yLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICBlbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihvdXRwdXRCdWZmZXIuZ2V0KCksIDAsIGlucHV0QnVmZmVyLmdldCgpLCAwLCBieXRlQ291bnQpO1xuICAgICAgICB2YXIgcXVldWUgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5lbmdpbmUuZGV2aWNlLmdldFF1ZXVlKCkgOiB0aGlzLmVuZ2luZS5kZXZpY2UuZGVmYXVsdFF1ZXVlO1xuICAgICAgICBxdWV1ZS5zdWJtaXQoW2VuY29kZXIuZmluaXNoKCldKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVNoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVNoYWRlclRvU3BpclYoc291cmNlLCB0eXBlLCBzaGFkZXJWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21waWxlUmF3U2hhZGVyVG9TcGlyVihzaGFkZXJWZXJzaW9uICsgc291cmNlLCB0eXBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVJhd1NoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVJhd1NoYWRlclRvU3BpclYoc291cmNlLCB0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmdpbmUuZ2xzbGFuZy5jb21waWxlR0xTTChzb3VyY2UsIHR5cGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKGNvbXB1dGVDb2RlKSB7XG4gICAgICAgIHZhciBjb21wdXRlU2hhZGVyLCBzaGFkZXJWZXJzaW9uO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjb21wdXRlU2hhZGVyID0gY29tcHV0ZUNvZGU7XG4gICAgICAgICAgICAgICAgc2hhZGVyVmVyc2lvbiA9ICcjdmVyc2lvbiA0NTBcXG4nO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZW5naW5lLm9wdGlvbnMudXNlV0dTTCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVTaGFkZXJUb1NwaXJWKGNvbXB1dGVDb2RlLCAnY29tcHV0ZScsIHNoYWRlclZlcnNpb24pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBjb21wdXRlU2hhZGVyID0gX2NvbnRleHQzLnNlbnQ7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KFwicmV0dXJuXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNvbXB1dGVTdGFnZToge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGU6IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe1xuICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvbXB1dGVTaGFkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgIGlzV0hMU0w6IGlzU2FmYXJpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbidcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcihfeCkge1xuICAgICAgICByZXR1cm4gX2NvbXBpbGVDb21wdXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbXBpbGVDb21wdXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVQ29tcHV0ZU1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVDb21wdXRlTW9kZWwgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVQ29tcHV0ZU1vZGVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js": /*!*****************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js ***! \*****************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\nvar WebGPUElements = /*#__PURE__*/function () {\n function WebGPUElements(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUElements);\n\n this.engine = engine;\n this.options = options;\n this.indexCount = void 0;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type,\n count = _options.count;\n this.indexCount = count || 0;\n this.buffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](engine, {\n // @ts-ignore\n data: data instanceof Array ? new Uint16Array(data) : data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].Index | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].CopyDst\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUElements, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"subData\",\n value: function subData(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUElements;\n}();\n\n\n//# sourceMappingURL=WebGPUElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUVsZW1lbnRzLmpzP2ZhZDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDRTtBQUN0Qjs7QUFFMUM7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFEQUFZO0FBQ2xDO0FBQ0E7QUFDQSxhQUFhLHdFQUEyQixTQUFTLHdFQUEyQjtBQUM1RSxLQUFLO0FBQ0w7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRW9DO0FBQ3JDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVFbGVtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCBXZWJHUFVCdWZmZXIgZnJvbSAnLi9XZWJHUFVCdWZmZXInO1xuXG52YXIgV2ViR1BVRWxlbWVudHMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVFbGVtZW50cyhlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVRWxlbWVudHMpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmluZGV4Q291bnQgPSB2b2lkIDA7XG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgICAgZGF0YSA9IF9vcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gX29wdGlvbnMudXNhZ2UsXG4gICAgICAgIHR5cGUgPSBfb3B0aW9ucy50eXBlLFxuICAgICAgICBjb3VudCA9IF9vcHRpb25zLmNvdW50O1xuICAgIHRoaXMuaW5kZXhDb3VudCA9IGNvdW50IHx8IDA7XG4gICAgdGhpcy5idWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKGVuZ2luZSwge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YTogZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gbmV3IFVpbnQxNkFycmF5KGRhdGEpIDogZGF0YSxcbiAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuSW5kZXggfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdFxuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUVsZW1lbnRzLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEob3B0aW9ucykge1xuICAgICAgdGhpcy5idWZmZXIuc3ViRGF0YShvcHRpb25zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5idWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVFbGVtZW50cztcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVRWxlbWVudHMgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js": /*!********************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js ***! \********************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar WebGPUFramebuffer = /*#__PURE__*/function () {\n function WebGPUFramebuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUFramebuffer);\n\n this.engine = engine;\n this.options = options;\n this.colorTexture = void 0;\n this.depthTexture = void 0;\n this.width = 0;\n this.height = 0;\n var _options = options,\n width = _options.width,\n height = _options.height,\n color = _options.color,\n colors = _options.colors,\n depth = _options.depth,\n stencil = _options.stencil;\n\n if (color) {\n this.colorTexture = color;\n }\n\n if (depth) {\n this.depthTexture = depth;\n } // TODO: depth & stencil\n\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUFramebuffer, [{\n key: \"get\",\n value: function get() {\n var _this$colorTexture, _this$depthTexture;\n\n return {\n color: (_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 ? void 0 : _this$colorTexture.get(),\n depth: (_this$depthTexture = this.depthTexture) === null || _this$depthTexture === void 0 ? void 0 : _this$depthTexture.get()\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this$colorTexture2, _this$depthTexture2;\n\n (_this$colorTexture2 = this.colorTexture) === null || _this$colorTexture2 === void 0 ? void 0 : _this$colorTexture2.destroy();\n (_this$depthTexture2 = this.depthTexture) === null || _this$depthTexture2 === void 0 ? void 0 : _this$depthTexture2.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n if (width !== this.width || height !== this.height) {\n var _this$colorTexture3, _this$depthTexture3;\n\n (_this$colorTexture3 = this.colorTexture) === null || _this$colorTexture3 === void 0 ? void 0 : _this$colorTexture3.resize({\n width: width,\n height: height\n });\n (_this$depthTexture3 = this.depthTexture) === null || _this$depthTexture3 === void 0 ? void 0 : _this$depthTexture3.resize({\n width: width,\n height: height\n });\n }\n\n this.width = width;\n this.height = height;\n }\n }]);\n\n return WebGPUFramebuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUZyYW1lYnVmZmVyLmpzPzQzYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUV1QztBQUN4QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvV2ViR1BVRnJhbWVidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbnZhciBXZWJHUFVGcmFtZWJ1ZmZlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUZyYW1lYnVmZmVyKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVGcmFtZWJ1ZmZlcik7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY29sb3JUZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gMDtcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICB3aWR0aCA9IF9vcHRpb25zLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfb3B0aW9ucy5oZWlnaHQsXG4gICAgICAgIGNvbG9yID0gX29wdGlvbnMuY29sb3IsXG4gICAgICAgIGNvbG9ycyA9IF9vcHRpb25zLmNvbG9ycyxcbiAgICAgICAgZGVwdGggPSBfb3B0aW9ucy5kZXB0aCxcbiAgICAgICAgc3RlbmNpbCA9IF9vcHRpb25zLnN0ZW5jaWw7XG5cbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIHRoaXMuY29sb3JUZXh0dXJlID0gY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKGRlcHRoKSB7XG4gICAgICB0aGlzLmRlcHRoVGV4dHVyZSA9IGRlcHRoO1xuICAgIH0gLy8gVE9ETzogZGVwdGggJiBzdGVuY2lsXG5cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVGcmFtZWJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb2xvclRleHR1cmUsIF90aGlzJGRlcHRoVGV4dHVyZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IChfdGhpcyRjb2xvclRleHR1cmUgPSB0aGlzLmNvbG9yVGV4dHVyZSkgPT09IG51bGwgfHwgX3RoaXMkY29sb3JUZXh0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjb2xvclRleHR1cmUuZ2V0KCksXG4gICAgICAgIGRlcHRoOiAoX3RoaXMkZGVwdGhUZXh0dXJlID0gdGhpcy5kZXB0aFRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGRlcHRoVGV4dHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkZGVwdGhUZXh0dXJlLmdldCgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB2YXIgX3RoaXMkY29sb3JUZXh0dXJlMiwgX3RoaXMkZGVwdGhUZXh0dXJlMjtcblxuICAgICAgKF90aGlzJGNvbG9yVGV4dHVyZTIgPSB0aGlzLmNvbG9yVGV4dHVyZSkgPT09IG51bGwgfHwgX3RoaXMkY29sb3JUZXh0dXJlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkY29sb3JUZXh0dXJlMi5kZXN0cm95KCk7XG4gICAgICAoX3RoaXMkZGVwdGhUZXh0dXJlMiA9IHRoaXMuZGVwdGhUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRkZXB0aFRleHR1cmUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkZXB0aFRleHR1cmUyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2l6ZShfcmVmKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF9yZWYuaGVpZ2h0O1xuXG4gICAgICBpZiAod2lkdGggIT09IHRoaXMud2lkdGggfHwgaGVpZ2h0ICE9PSB0aGlzLmhlaWdodCkge1xuICAgICAgICB2YXIgX3RoaXMkY29sb3JUZXh0dXJlMywgX3RoaXMkZGVwdGhUZXh0dXJlMztcblxuICAgICAgICAoX3RoaXMkY29sb3JUZXh0dXJlMyA9IHRoaXMuY29sb3JUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRjb2xvclRleHR1cmUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjb2xvclRleHR1cmUzLnJlc2l6ZSh7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgICAoX3RoaXMkZGVwdGhUZXh0dXJlMyA9IHRoaXMuZGVwdGhUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRkZXB0aFRleHR1cmUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkZXB0aFRleHR1cmUzLnJlc2l6ZSh7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVRnJhbWVidWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVUZyYW1lYnVmZmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVUZyYW1lYnVmZmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js ***! \**************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n\n\n// @ts-ignore\nfunction concatenate(resultConstructor) {\n var totalLength = 0;\n\n for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n for (var _i = 0, _arrays = arrays; _i < _arrays.length; _i++) {\n var arr = _arrays[_i];\n totalLength += arr.length;\n }\n\n var result = new resultConstructor(totalLength);\n var offset = 0;\n\n for (var _i2 = 0, _arrays2 = arrays; _i2 < _arrays2.length; _i2++) {\n var _arr = _arrays2[_i2];\n result.set(_arr, offset);\n offset += _arr.length;\n }\n\n return result;\n}\n\nvar WebGPUModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n\n /**\n * vertex\n */\n\n /**\n * indices's buffer\n */\n function WebGPUModel(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default()(this, WebGPUModel);\n\n this.engine = engine;\n this.options = options;\n this.pipelineLayout = void 0;\n this.renderPipeline = void 0;\n this.uniformsBindGroupLayout = void 0;\n this.uniformBindGroup = void 0;\n this.uniformBuffer = void 0;\n this.uniforms = {};\n this.uniformGPUBufferLayout = [];\n this.attributeCache = {};\n this.indexBuffer = void 0;\n this.indexCount = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default()(WebGPUModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this = this;\n\n var _this$options, vs, fs, attributes, uniforms, primitive, count, elements, depth, blend, stencil, cull, instances, _yield$this$compilePi, vertexStage, fragmentStage, vertexState, descriptor;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$options = this.options, vs = _this$options.vs, fs = _this$options.fs, attributes = _this$options.attributes, uniforms = _this$options.uniforms, primitive = _this$options.primitive, count = _this$options.count, elements = _this$options.elements, depth = _this$options.depth, blend = _this$options.blend, stencil = _this$options.stencil, cull = _this$options.cull, instances = _this$options.instances; // build shaders first\n\n _context.next = 3;\n return this.compilePipelineStageDescriptor(vs, fs, null);\n\n case 3:\n _yield$this$compilePi = _context.sent;\n vertexStage = _yield$this$compilePi.vertexStage;\n fragmentStage = _yield$this$compilePi.fragmentStage;\n\n if (uniforms) {\n // create uniform bind groups & layout\n this.buildUniformBindGroup(uniforms);\n }\n\n if (elements) {\n this.indexBuffer = elements.get();\n this.indexCount = elements.indexCount;\n } // TODO: instanced array\n\n\n vertexState = {\n vertexBuffers: Object.keys(attributes).map(function (attributeName, i) {\n var attribute = attributes[attributeName];\n\n var _attribute$get = attribute.get(),\n arrayStride = _attribute$get.arrayStride,\n stepMode = _attribute$get.stepMode,\n ats = _attribute$get.attributes;\n\n _this.attributeCache[attributeName] = attribute;\n return {\n arrayStride: arrayStride,\n stepMode: stepMode,\n attributes: ats\n };\n })\n };\n descriptor = {\n sampleCount: this.engine.mainPassSampleCount,\n primitiveTopology: _constants__WEBPACK_IMPORTED_MODULE_10__[\"primitiveMap\"][primitive || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].TRIANGLES],\n rasterizationState: _objectSpread(_objectSpread({}, this.getDefaultRasterizationStateDescriptor()), {}, {\n // TODO: support frontface\n cullMode: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getCullMode\"])({\n cull: cull\n })\n }),\n depthStencilState: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getDepthStencilStateDescriptor\"])({\n depth: depth,\n stencil: stencil\n }),\n colorStates: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getColorStateDescriptors\"])({\n blend: blend\n }, this.engine.options.swapChainFormat),\n layout: this.pipelineLayout,\n vertexStage: vertexStage,\n fragmentStage: fragmentStage,\n vertexState: vertexState\n }; // create pipeline\n\n this.renderPipeline = this.engine.device.createRenderPipeline(descriptor);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var _this2 = this;\n\n var renderPass = this.engine.getCurrentRenderPass();\n\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(options.uniforms || {}));\n\n var bindGroupBindings = []; // TODO: uniform 发生修改\n\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n var _this2$uniformGPUBuff;\n\n var offset = (_this2$uniformGPUBuff = _this2.uniformGPUBufferLayout.find(function (_ref) {\n var name = _ref.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff === void 0 ? void 0 : _this2$uniformGPUBuff.offset;\n\n if (offset !== null) {\n _this2.uniformBuffer.subData({\n // @ts-ignore\n data: uniforms[uniformName],\n // @ts-ignore\n offset: offset\n });\n }\n } else {\n var _this2$uniformGPUBuff2;\n\n var _offset = (_this2$uniformGPUBuff2 = _this2.uniformGPUBufferLayout.find(function (_ref2) {\n var name = _ref2.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff2 === void 0 ? void 0 : _this2$uniformGPUBuff2.offset;\n\n if (_offset !== null) {\n var textureOrFramebuffer = uniforms[uniformName].get();\n\n var _ref3 = // @ts-ignore\n textureOrFramebuffer.color || textureOrFramebuffer,\n texture = _ref3.texture,\n sampler = _ref3.sampler;\n\n if (sampler) {\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: sampler\n }); // @ts-ignore\n\n _offset++;\n }\n\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: texture.createView()\n });\n }\n }\n });\n\n if (this.uniformBuffer) {\n bindGroupBindings[0] = {\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get() // 返回 GPUBuffer 原生对象\n\n }\n };\n }\n\n this.uniformBindGroup = this.engine.device.createBindGroup({\n layout: this.uniformsBindGroupLayout,\n entries: bindGroupBindings\n });\n\n if (this.renderPipeline) {\n renderPass.setPipeline(this.renderPipeline);\n }\n\n renderPass.setBindGroup(0, this.uniformBindGroup);\n\n if (this.indexBuffer) {\n renderPass.setIndexBuffer(this.indexBuffer.get(), _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"IndexFormat\"].Uint32, 0);\n }\n\n Object.keys(this.attributeCache).forEach(function (attributeName, i) {\n renderPass.setVertexBuffer(0 + i, _this2.attributeCache[attributeName].get().buffer, 0);\n }); // renderPass.draw(verticesCount, instancesCount, verticesStart, 0);\n\n if (this.indexBuffer) {\n renderPass.drawIndexed(this.indexCount, this.options.instances || 1, 0, 0, 0);\n } else {\n renderPass.draw(this.options.count || 0, this.options.instances || 0, 0, 0);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"compilePipelineStageDescriptor\",\n value: function () {\n var _compilePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(vertexCode, fragmentCode, defines) {\n var shaderVersion, vertexShader, fragmentShader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n shaderVersion = '#version 450\\n';\n vertexShader = vertexCode;\n fragmentShader = fragmentCode;\n\n if (this.engine.options.useWGSL) {\n _context2.next = 10;\n break;\n }\n\n _context2.next = 6;\n return this.compileShaderToSpirV(vertexCode, 'vertex', shaderVersion);\n\n case 6:\n vertexShader = _context2.sent;\n _context2.next = 9;\n return this.compileShaderToSpirV(fragmentCode, 'fragment', shaderVersion);\n\n case 9:\n fragmentShader = _context2.sent;\n\n case 10:\n return _context2.abrupt(\"return\", this.createPipelineStageDescriptor(vertexShader, fragmentShader));\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function compilePipelineStageDescriptor(_x, _x2, _x3) {\n return _compilePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compilePipelineStageDescriptor;\n }()\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"createPipelineStageDescriptor\",\n value: function createPipelineStageDescriptor(vertexShader, fragmentShader) {\n return {\n vertexStage: {\n module: this.engine.device.createShaderModule({\n code: vertexShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n },\n fragmentStage: {\n module: this.engine.device.createShaderModule({\n code: fragmentShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n };\n }\n /**\n * @see https://gpuweb.github.io/gpuweb/#rasterization-state\n */\n\n }, {\n key: \"getDefaultRasterizationStateDescriptor\",\n value: function getDefaultRasterizationStateDescriptor() {\n return {\n frontFace: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"FrontFace\"].CCW,\n cullMode: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"CullMode\"].None,\n depthBias: 0,\n depthBiasSlopeScale: 0,\n depthBiasClamp: 0\n };\n }\n }, {\n key: \"buildUniformBindGroup\",\n value: function buildUniformBindGroup(uniforms) {\n var _this3 = this;\n\n var offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n\n var mergedUniformData = concatenate.apply(void 0, [Float32Array].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object.keys(uniforms).map(function (uniformName) {\n if (uniforms[uniformName]) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: offset\n }); // @ts-ignore\n\n\n offset += (uniforms[uniformName].length || 1) * 4;\n return uniforms[uniformName];\n } else {\n // texture & framebuffer\n return [];\n }\n }))));\n var entries = [];\n var hasUniform = false;\n\n if (mergedUniformData.length) {\n hasUniform = true; // TODO: 所有 uniform 绑定到 slot 0,通过解析 Shader 代码判定可见性\n\n entries.push({\n // TODO: 暂时都绑定到 slot 0\n binding: 0,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Vertex,\n // TODO: 暂时 VS 和 FS 都可见\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].UniformBuffer\n });\n } // 声明 texture & sampler\n\n\n Object.keys(uniforms).filter(function (uniformName) {\n return uniforms[uniformName] === null;\n }).forEach(function (uniformName, i) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: i * 2 + (hasUniform ? 1 : 0)\n });\n\n entries.push({\n // Sampler\n binding: i * 2 + (hasUniform ? 1 : 0),\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].Sampler\n }, {\n // Texture view\n binding: i * 2 + (hasUniform ? 1 : 0) + 1,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].SampledTexture\n });\n });\n this.uniformsBindGroupLayout = this.engine.device.createBindGroupLayout({\n // 最新 API 0.0.22 版本使用 entries。Chrome Canary 84.0.4110.0 已实现。\n // 使用 bindings 会报 Warning: GPUBindGroupLayoutDescriptor.bindings is deprecated: renamed to entries\n // @see https://github.com/antvis/GWebGPUEngine/issues/5\n entries: entries\n });\n this.pipelineLayout = this.engine.device.createPipelineLayout({\n bindGroupLayouts: [this.uniformsBindGroupLayout]\n });\n\n if (hasUniform) {\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].CopyDst\n });\n }\n }\n }]);\n\n return WebGPUModel;\n}();\n\n\n//# sourceMappingURL=WebGPUModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVU1vZGVsLmpzP2E0NTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEU7QUFDdEI7QUFDUztBQUNPO0FBQ0k7QUFDSjtBQUNOOztBQUU5RCwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRWplO0FBQ2E7QUFDYjtBQUMrRDtBQUN4RTs7QUFFMUM7QUFDQTtBQUNBOztBQUVBLDBGQUEwRixhQUFhO0FBQ3ZHO0FBQ0E7O0FBRUEsb0NBQW9DLHFCQUFxQjtBQUN6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQ0FBc0MsdUJBQXVCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFOztBQUVBOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLHFhQUFxYTs7QUFFcmE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7OztBQUdqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx3REFBWSxjQUFjLHNEQUFFO0FBQ2pFLG9FQUFvRSxvREFBb0Q7QUFDeEg7QUFDQSw4QkFBOEIsK0RBQVc7QUFDekM7QUFDQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLHFDQUFxQyxrRkFBOEI7QUFDbkU7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQiwrQkFBK0IsNEVBQXdCO0FBQ3ZEO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixzRUFBZTtBQUNyRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsbURBQW1ELGtCQUFrQixzRUFBZSx1QkFBdUI7O0FBRTNHLGlDQUFpQzs7QUFFakM7QUFDQSxtQkFBbUIsb0VBQU87O0FBRTFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsRUFBRTs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDBEQUEwRCx3RUFBMkI7QUFDckY7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDLDhFQUFpQixlQUFlLGlFQUFtQjtBQUMvRjtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0REFBUTtBQUM3QixXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVE7QUFDN0IsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0VBQXlCO0FBQzVDLGtCQUFrQixxRUFBd0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQiw4RUFBOEUsK0VBQWtCO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFOzs7QUFHYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQTJCLFlBQVksd0VBQTJCO0FBQ3hGO0FBQ0EsZ0JBQWdCLHdFQUEyQjtBQUMzQyxTQUFTO0FBQ1QsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3RUFBMkI7QUFDakQsZ0JBQWdCLHdFQUEyQjtBQUMzQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHNCQUFzQix3RUFBMkI7QUFDakQsZ0JBQWdCLHdFQUEyQjtBQUMzQyxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSxpQ0FBaUMsc0RBQVk7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0VBQTJCLFdBQVcsd0VBQTJCO0FBQ2xGLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWlDO0FBQ2xDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgZ2wsIGlzU2FmYXJpIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0VW5pZm9ybXMgfSBmcm9tICcuLi91dGlscy91bmlmb3JtJztcbmltcG9ydCB7IGdldENvbG9yU3RhdGVEZXNjcmlwdG9ycywgZ2V0Q3VsbE1vZGUsIGdldERlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciwgcHJpbWl0aXZlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IFdlYkdQVUJ1ZmZlciBmcm9tICcuL1dlYkdQVUJ1ZmZlcic7XG5cbi8vIEB0cy1pZ25vcmVcbmZ1bmN0aW9uIGNvbmNhdGVuYXRlKHJlc3VsdENvbnN0cnVjdG9yKSB7XG4gIHZhciB0b3RhbExlbmd0aCA9IDA7XG5cbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFycmF5cyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJyYXlzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgX2FycmF5cyA9IGFycmF5czsgX2kgPCBfYXJyYXlzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBhcnIgPSBfYXJyYXlzW19pXTtcbiAgICB0b3RhbExlbmd0aCArPSBhcnIubGVuZ3RoO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyByZXN1bHRDb25zdHJ1Y3Rvcih0b3RhbExlbmd0aCk7XG4gIHZhciBvZmZzZXQgPSAwO1xuXG4gIGZvciAodmFyIF9pMiA9IDAsIF9hcnJheXMyID0gYXJyYXlzOyBfaTIgPCBfYXJyYXlzMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9hcnIgPSBfYXJyYXlzMltfaTJdO1xuICAgIHJlc3VsdC5zZXQoX2Fyciwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gX2Fyci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgV2ViR1BVTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog55So5LqO5ZCO57ut5riy5p+T5pe25Yqo5oCB5pu05pawXG4gICAqL1xuXG4gIC8qKlxuICAgKiB2ZXJ0ZXhcbiAgICovXG5cbiAgLyoqXG4gICAqIGluZGljZXMncyBidWZmZXJcbiAgICovXG4gIGZ1bmN0aW9uIFdlYkdQVU1vZGVsKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVNb2RlbCk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMucGlwZWxpbmVMYXlvdXQgPSB2b2lkIDA7XG4gICAgdGhpcy5yZW5kZXJQaXBlbGluZSA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1zQmluZEdyb3VwTGF5b3V0ID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybUJpbmRHcm91cCA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1CdWZmZXIgPSB2b2lkIDA7XG4gICAgdGhpcy51bmlmb3JtcyA9IHt9O1xuICAgIHRoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dCA9IFtdO1xuICAgIHRoaXMuYXR0cmlidXRlQ2FjaGUgPSB7fTtcbiAgICB0aGlzLmluZGV4QnVmZmVyID0gdm9pZCAwO1xuICAgIHRoaXMuaW5kZXhDb3VudCA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVNb2RlbCwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHZhciBfdGhpcyRvcHRpb25zLCB2cywgZnMsIGF0dHJpYnV0ZXMsIHVuaWZvcm1zLCBwcmltaXRpdmUsIGNvdW50LCBlbGVtZW50cywgZGVwdGgsIGJsZW5kLCBzdGVuY2lsLCBjdWxsLCBpbnN0YW5jZXMsIF95aWVsZCR0aGlzJGNvbXBpbGVQaSwgdmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHZlcnRleFN0YXRlLCBkZXNjcmlwdG9yO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX3RoaXMkb3B0aW9ucyA9IHRoaXMub3B0aW9ucywgdnMgPSBfdGhpcyRvcHRpb25zLnZzLCBmcyA9IF90aGlzJG9wdGlvbnMuZnMsIGF0dHJpYnV0ZXMgPSBfdGhpcyRvcHRpb25zLmF0dHJpYnV0ZXMsIHVuaWZvcm1zID0gX3RoaXMkb3B0aW9ucy51bmlmb3JtcywgcHJpbWl0aXZlID0gX3RoaXMkb3B0aW9ucy5wcmltaXRpdmUsIGNvdW50ID0gX3RoaXMkb3B0aW9ucy5jb3VudCwgZWxlbWVudHMgPSBfdGhpcyRvcHRpb25zLmVsZW1lbnRzLCBkZXB0aCA9IF90aGlzJG9wdGlvbnMuZGVwdGgsIGJsZW5kID0gX3RoaXMkb3B0aW9ucy5ibGVuZCwgc3RlbmNpbCA9IF90aGlzJG9wdGlvbnMuc3RlbmNpbCwgY3VsbCA9IF90aGlzJG9wdGlvbnMuY3VsbCwgaW5zdGFuY2VzID0gX3RoaXMkb3B0aW9ucy5pbnN0YW5jZXM7IC8vIGJ1aWxkIHNoYWRlcnMgZmlyc3RcblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih2cywgZnMsIG51bGwpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBfeWllbGQkdGhpcyRjb21waWxlUGkgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgIHZlcnRleFN0YWdlID0gX3lpZWxkJHRoaXMkY29tcGlsZVBpLnZlcnRleFN0YWdlO1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U3RhZ2UgPSBfeWllbGQkdGhpcyRjb21waWxlUGkuZnJhZ21lbnRTdGFnZTtcblxuICAgICAgICAgICAgICAgIGlmICh1bmlmb3Jtcykge1xuICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIHVuaWZvcm0gYmluZCBncm91cHMgJiBsYXlvdXRcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRVbmlmb3JtQmluZEdyb3VwKHVuaWZvcm1zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhCdWZmZXIgPSBlbGVtZW50cy5nZXQoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhDb3VudCA9IGVsZW1lbnRzLmluZGV4Q291bnQ7XG4gICAgICAgICAgICAgICAgfSAvLyBUT0RPOiBpbnN0YW5jZWQgYXJyYXlcblxuXG4gICAgICAgICAgICAgICAgdmVydGV4U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5tYXAoZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hdHRyaWJ1dGUkZ2V0ID0gYXR0cmlidXRlLmdldCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGUgPSBfYXR0cmlidXRlJGdldC5hcnJheVN0cmlkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBNb2RlID0gX2F0dHJpYnV0ZSRnZXQuc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHMgPSBfYXR0cmlidXRlJGdldC5hdHRyaWJ1dGVzO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmF0dHJpYnV0ZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gYXR0cmlidXRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIGFycmF5U3RyaWRlOiBhcnJheVN0cmlkZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGVwTW9kZTogc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogYXRzXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IHtcbiAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50OiB0aGlzLmVuZ2luZS5tYWluUGFzc1NhbXBsZUNvdW50LFxuICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6IHByaW1pdGl2ZU1hcFtwcmltaXRpdmUgfHwgZ2wuVFJJQU5HTEVTXSxcbiAgICAgICAgICAgICAgICAgIHJhc3Rlcml6YXRpb25TdGF0ZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmdldERlZmF1bHRSYXN0ZXJpemF0aW9uU3RhdGVEZXNjcmlwdG9yKCkpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IGZyb250ZmFjZVxuICAgICAgICAgICAgICAgICAgICBjdWxsTW9kZTogZ2V0Q3VsbE1vZGUoe1xuICAgICAgICAgICAgICAgICAgICAgIGN1bGw6IGN1bGxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGU6IGdldERlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcih7XG4gICAgICAgICAgICAgICAgICAgIGRlcHRoOiBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgc3RlbmNpbDogc3RlbmNpbFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBjb2xvclN0YXRlczogZ2V0Q29sb3JTdGF0ZURlc2NyaXB0b3JzKHtcbiAgICAgICAgICAgICAgICAgICAgYmxlbmQ6IGJsZW5kXG4gICAgICAgICAgICAgICAgICB9LCB0aGlzLmVuZ2luZS5vcHRpb25zLnN3YXBDaGFpbkZvcm1hdCksXG4gICAgICAgICAgICAgICAgICBsYXlvdXQ6IHRoaXMucGlwZWxpbmVMYXlvdXQsXG4gICAgICAgICAgICAgICAgICB2ZXJ0ZXhTdGFnZTogdmVydGV4U3RhZ2UsXG4gICAgICAgICAgICAgICAgICBmcmFnbWVudFN0YWdlOiBmcmFnbWVudFN0YWdlLFxuICAgICAgICAgICAgICAgICAgdmVydGV4U3RhdGU6IHZlcnRleFN0YXRlXG4gICAgICAgICAgICAgICAgfTsgLy8gY3JlYXRlIHBpcGVsaW5lXG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclBpcGVsaW5lID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJhZGRVbmlmb3Jtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRVbmlmb3Jtcyh1bmlmb3Jtcykge1xuICAgICAgdGhpcy51bmlmb3JtcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy51bmlmb3JtcyksIGV4dHJhY3RVbmlmb3Jtcyh1bmlmb3JtcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkcmF3XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRyYXcob3B0aW9ucykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciByZW5kZXJQYXNzID0gdGhpcy5lbmdpbmUuZ2V0Q3VycmVudFJlbmRlclBhc3MoKTtcblxuICAgICAgdmFyIHVuaWZvcm1zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnVuaWZvcm1zKSwgZXh0cmFjdFVuaWZvcm1zKG9wdGlvbnMudW5pZm9ybXMgfHwge30pKTtcblxuICAgICAgdmFyIGJpbmRHcm91cEJpbmRpbmdzID0gW107IC8vIFRPRE86IHVuaWZvcm0g5Y+R55Sf5L+u5pS5XG5cbiAgICAgIE9iamVjdC5rZXlzKHVuaWZvcm1zKS5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICB2YXIgdHlwZSA9IF90eXBlb2YodW5pZm9ybXNbdW5pZm9ybU5hbWVdKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGUgPT09ICdudW1iZXInIHx8IEFycmF5LmlzQXJyYXkodW5pZm9ybXNbdW5pZm9ybU5hbWVdKSB8fCAvLyBAdHMtaWdub3JlXG4gICAgICAgIHVuaWZvcm1zW3VuaWZvcm1OYW1lXS5CWVRFU19QRVJfRUxFTUVOVCkge1xuICAgICAgICAgIHZhciBfdGhpczIkdW5pZm9ybUdQVUJ1ZmY7XG5cbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gKF90aGlzMiR1bmlmb3JtR1BVQnVmZiA9IF90aGlzMi51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IHVuaWZvcm1OYW1lO1xuICAgICAgICAgIH0pKSA9PT0gbnVsbCB8fCBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiR1bmlmb3JtR1BVQnVmZi5vZmZzZXQ7XG5cbiAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBfdGhpczIudW5pZm9ybUJ1ZmZlci5zdWJEYXRhKHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBkYXRhOiB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0sXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3RoaXMyJHVuaWZvcm1HUFVCdWZmMjtcblxuICAgICAgICAgIHZhciBfb2Zmc2V0ID0gKF90aGlzMiR1bmlmb3JtR1BVQnVmZjIgPSBfdGhpczIudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmMi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IHVuaWZvcm1OYW1lO1xuICAgICAgICAgIH0pKSA9PT0gbnVsbCB8fCBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYyLm9mZnNldDtcblxuICAgICAgICAgIGlmIChfb2Zmc2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgdGV4dHVyZU9yRnJhbWVidWZmZXIgPSB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0uZ2V0KCk7XG5cbiAgICAgICAgICAgIHZhciBfcmVmMyA9IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRleHR1cmVPckZyYW1lYnVmZmVyLmNvbG9yIHx8IHRleHR1cmVPckZyYW1lYnVmZmVyLFxuICAgICAgICAgICAgICAgIHRleHR1cmUgPSBfcmVmMy50ZXh0dXJlLFxuICAgICAgICAgICAgICAgIHNhbXBsZXIgPSBfcmVmMy5zYW1wbGVyO1xuXG4gICAgICAgICAgICBpZiAoc2FtcGxlcikge1xuICAgICAgICAgICAgICBiaW5kR3JvdXBCaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgYmluZGluZzogX29mZnNldCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZTogc2FtcGxlclxuICAgICAgICAgICAgICB9KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgIF9vZmZzZXQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmluZEdyb3VwQmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgYmluZGluZzogX29mZnNldCxcbiAgICAgICAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlVmlldygpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy51bmlmb3JtQnVmZmVyKSB7XG4gICAgICAgIGJpbmRHcm91cEJpbmRpbmdzWzBdID0ge1xuICAgICAgICAgIGJpbmRpbmc6IDAsXG4gICAgICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgICAgIGJ1ZmZlcjogdGhpcy51bmlmb3JtQnVmZmVyLmdldCgpIC8vIOi/lOWbniBHUFVCdWZmZXIg5Y6f55Sf5a+56LGhXG5cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMudW5pZm9ybUJpbmRHcm91cCA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCaW5kR3JvdXAoe1xuICAgICAgICBsYXlvdXQ6IHRoaXMudW5pZm9ybXNCaW5kR3JvdXBMYXlvdXQsXG4gICAgICAgIGVudHJpZXM6IGJpbmRHcm91cEJpbmRpbmdzXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMucmVuZGVyUGlwZWxpbmUpIHtcbiAgICAgICAgcmVuZGVyUGFzcy5zZXRQaXBlbGluZSh0aGlzLnJlbmRlclBpcGVsaW5lKTtcbiAgICAgIH1cblxuICAgICAgcmVuZGVyUGFzcy5zZXRCaW5kR3JvdXAoMCwgdGhpcy51bmlmb3JtQmluZEdyb3VwKTtcblxuICAgICAgaWYgKHRoaXMuaW5kZXhCdWZmZXIpIHtcbiAgICAgICAgcmVuZGVyUGFzcy5zZXRJbmRleEJ1ZmZlcih0aGlzLmluZGV4QnVmZmVyLmdldCgpLCBXZWJHUFVDb25zdGFudHMuSW5kZXhGb3JtYXQuVWludDMyLCAwKTtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVDYWNoZSkuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSwgaSkge1xuICAgICAgICByZW5kZXJQYXNzLnNldFZlcnRleEJ1ZmZlcigwICsgaSwgX3RoaXMyLmF0dHJpYnV0ZUNhY2hlW2F0dHJpYnV0ZU5hbWVdLmdldCgpLmJ1ZmZlciwgMCk7XG4gICAgICB9KTsgLy8gcmVuZGVyUGFzcy5kcmF3KHZlcnRpY2VzQ291bnQsIGluc3RhbmNlc0NvdW50LCB2ZXJ0aWNlc1N0YXJ0LCAwKTtcblxuICAgICAgaWYgKHRoaXMuaW5kZXhCdWZmZXIpIHtcbiAgICAgICAgcmVuZGVyUGFzcy5kcmF3SW5kZXhlZCh0aGlzLmluZGV4Q291bnQsIHRoaXMub3B0aW9ucy5pbnN0YW5jZXMgfHwgMSwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW5kZXJQYXNzLmRyYXcodGhpcy5vcHRpb25zLmNvdW50IHx8IDAsIHRoaXMub3B0aW9ucy5pbnN0YW5jZXMgfHwgMCwgMCwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmVydGV4Q29kZSwgZnJhZ21lbnRDb2RlLCBkZWZpbmVzKSB7XG4gICAgICAgIHZhciBzaGFkZXJWZXJzaW9uLCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzaGFkZXJWZXJzaW9uID0gJyN2ZXJzaW9uIDQ1MFxcbic7XG4gICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyID0gdmVydGV4Q29kZTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGZyYWdtZW50Q29kZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuZ2luZS5vcHRpb25zLnVzZVdHU0wpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVNoYWRlclRvU3BpclYodmVydGV4Q29kZSwgJ3ZlcnRleCcsIHNoYWRlclZlcnNpb24pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSBfY29udGV4dDIuc2VudDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVNoYWRlclRvU3BpclYoZnJhZ21lbnRDb2RlLCAnZnJhZ21lbnQnLCBzaGFkZXJWZXJzaW9uKTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBfY29udGV4dDIuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMuY3JlYXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IodmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKF94LCBfeDIsIF94Mykge1xuICAgICAgICByZXR1cm4gX2NvbXBpbGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBpbGVTaGFkZXJUb1NwaXJWXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGVTaGFkZXJUb1NwaXJWKHNvdXJjZSwgdHlwZSwgc2hhZGVyVmVyc2lvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVJhd1NoYWRlclRvU3BpclYoc2hhZGVyVmVyc2lvbiArIHNvdXJjZSwgdHlwZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBpbGVSYXdTaGFkZXJUb1NwaXJWXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGVSYXdTaGFkZXJUb1NwaXJWKHNvdXJjZSwgdHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLmdsc2xhbmcuY29tcGlsZUdMU0woc291cmNlLCB0eXBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IodmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmVydGV4U3RhZ2U6IHtcbiAgICAgICAgICBtb2R1bGU6IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe1xuICAgICAgICAgICAgY29kZTogdmVydGV4U2hhZGVyLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaXNXSExTTDogaXNTYWZhcmlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbidcbiAgICAgICAgfSxcbiAgICAgICAgZnJhZ21lbnRTdGFnZToge1xuICAgICAgICAgIG1vZHVsZTogdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICBjb2RlOiBmcmFnbWVudFNoYWRlcixcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlzV0hMU0w6IGlzU2FmYXJpXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZW50cnlQb2ludDogJ21haW4nXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jcmFzdGVyaXphdGlvbi1zdGF0ZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RGVmYXVsdFJhc3Rlcml6YXRpb25TdGF0ZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVmYXVsdFJhc3Rlcml6YXRpb25TdGF0ZURlc2NyaXB0b3IoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9udEZhY2U6IFdlYkdQVUNvbnN0YW50cy5Gcm9udEZhY2UuQ0NXLFxuICAgICAgICBjdWxsTW9kZTogV2ViR1BVQ29uc3RhbnRzLkN1bGxNb2RlLk5vbmUsXG4gICAgICAgIGRlcHRoQmlhczogMCxcbiAgICAgICAgZGVwdGhCaWFzU2xvcGVTY2FsZTogMCxcbiAgICAgICAgZGVwdGhCaWFzQ2xhbXA6IDBcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJ1aWxkVW5pZm9ybUJpbmRHcm91cFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWlsZFVuaWZvcm1CaW5kR3JvdXAodW5pZm9ybXMpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgb2Zmc2V0ID0gMDsgLy8gRklYTUU6IOaJgOaciSB1bmlmb3JtIOWQiOW5tuaIkOS4gOS4qiBidWZmZXLvvIzlm7rlrprkvb/nlKggRmxvYXQzMkFycmF5IOWtmOWCqO+8jOehruWunuS8mumAoOaIkOS4gOS6m+WGheWtmOeahOa1qui0uVxuXG4gICAgICB2YXIgbWVyZ2VkVW5pZm9ybURhdGEgPSBjb25jYXRlbmF0ZS5hcHBseSh2b2lkIDAsIFtGbG9hdDMyQXJyYXldLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoT2JqZWN0LmtleXModW5pZm9ybXMpLm1hcChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICAgICAgaWYgKHVuaWZvcm1zW3VuaWZvcm1OYW1lXSkge1xuICAgICAgICAgIF90aGlzMy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogdW5pZm9ybU5hbWUsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgIH0pOyAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgIG9mZnNldCArPSAodW5pZm9ybXNbdW5pZm9ybU5hbWVdLmxlbmd0aCB8fCAxKSAqIDQ7XG4gICAgICAgICAgcmV0dXJuIHVuaWZvcm1zW3VuaWZvcm1OYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0ZXh0dXJlICYgZnJhbWVidWZmZXJcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0pKSkpO1xuICAgICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICAgIHZhciBoYXNVbmlmb3JtID0gZmFsc2U7XG5cbiAgICAgIGlmIChtZXJnZWRVbmlmb3JtRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgaGFzVW5pZm9ybSA9IHRydWU7IC8vIFRPRE86IOaJgOaciSB1bmlmb3JtIOe7keWumuWIsCBzbG90IDDvvIzpgJrov4fop6PmnpAgU2hhZGVyIOS7o+eggeWIpOWumuWPr+ingeaAp1xuXG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgLy8gVE9ETzog5pqC5pe26YO957uR5a6a5YiwIHNsb3QgMFxuICAgICAgICAgIGJpbmRpbmc6IDAsXG4gICAgICAgICAgdmlzaWJpbGl0eTogV2ViR1BVQ29uc3RhbnRzLlNoYWRlclN0YWdlLkZyYWdtZW50IHwgV2ViR1BVQ29uc3RhbnRzLlNoYWRlclN0YWdlLlZlcnRleCxcbiAgICAgICAgICAvLyBUT0RPOiDmmoLml7YgVlMg5ZKMIEZTIOmDveWPr+ingVxuICAgICAgICAgIHR5cGU6IFdlYkdQVUNvbnN0YW50cy5CaW5kaW5nVHlwZS5Vbmlmb3JtQnVmZmVyXG4gICAgICAgIH0pO1xuICAgICAgfSAvLyDlo7DmmI4gdGV4dHVyZSAmIHNhbXBsZXJcblxuXG4gICAgICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZmlsdGVyKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICByZXR1cm4gdW5pZm9ybXNbdW5pZm9ybU5hbWVdID09PSBudWxsO1xuICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUsIGkpIHtcbiAgICAgICAgX3RoaXMzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgbmFtZTogdW5pZm9ybU5hbWUsXG4gICAgICAgICAgb2Zmc2V0OiBpICogMiArIChoYXNVbmlmb3JtID8gMSA6IDApXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgLy8gU2FtcGxlclxuICAgICAgICAgIGJpbmRpbmc6IGkgKiAyICsgKGhhc1VuaWZvcm0gPyAxIDogMCksXG4gICAgICAgICAgdmlzaWJpbGl0eTogV2ViR1BVQ29uc3RhbnRzLlNoYWRlclN0YWdlLkZyYWdtZW50LFxuICAgICAgICAgIHR5cGU6IFdlYkdQVUNvbnN0YW50cy5CaW5kaW5nVHlwZS5TYW1wbGVyXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAvLyBUZXh0dXJlIHZpZXdcbiAgICAgICAgICBiaW5kaW5nOiBpICogMiArIChoYXNVbmlmb3JtID8gMSA6IDApICsgMSxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuRnJhZ21lbnQsXG4gICAgICAgICAgdHlwZTogV2ViR1BVQ29uc3RhbnRzLkJpbmRpbmdUeXBlLlNhbXBsZWRUZXh0dXJlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnVuaWZvcm1zQmluZEdyb3VwTGF5b3V0ID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7XG4gICAgICAgIC8vIOacgOaWsCBBUEkgMC4wLjIyIOeJiOacrOS9v+eUqCBlbnRyaWVz44CCQ2hyb21lIENhbmFyeSA4NC4wLjQxMTAuMCDlt7Llrp7njrDjgIJcbiAgICAgICAgLy8g5L2/55SoIGJpbmRpbmdzIOS8muaKpSBXYXJuaW5nOiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzIGlzIGRlcHJlY2F0ZWQ6IHJlbmFtZWQgdG8gZW50cmllc1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvR1dlYkdQVUVuZ2luZS9pc3N1ZXMvNVxuICAgICAgICBlbnRyaWVzOiBlbnRyaWVzXG4gICAgICB9KTtcbiAgICAgIHRoaXMucGlwZWxpbmVMYXlvdXQgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoe1xuICAgICAgICBiaW5kR3JvdXBMYXlvdXRzOiBbdGhpcy51bmlmb3Jtc0JpbmRHcm91cExheW91dF1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaGFzVW5pZm9ybSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKHRoaXMuZW5naW5lLCB7XG4gICAgICAgICAgLy8gVE9ETzog5aSE55CGIFN0cnVjdCDlkowgYm9vbGVhblxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkYXRhOiBtZXJnZWRVbmlmb3JtRGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkobWVyZ2VkVW5pZm9ybURhdGEpIDogbWVyZ2VkVW5pZm9ybURhdGEsXG4gICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Vbmlmb3JtIHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3RcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVU1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVNb2RlbCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVNb2RlbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js": /*!******************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js ***! \******************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebGPUTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js\");\n\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar WebGPUTexture2D = /*#__PURE__*/function () {\n function WebGPUTexture2D(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUTexture2D);\n\n this.engine = engine;\n this.options = options;\n this.texture = void 0;\n this.sampler = void 0;\n this.width = void 0;\n this.height = void 0;\n this.createTexture();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUTexture2D, [{\n key: \"get\",\n value: function get() {\n return {\n texture: this.texture,\n sampler: this.sampler\n };\n }\n }, {\n key: \"update\",\n value: function update() {// TODO\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n // TODO: it seems that Texture doesn't support `resize`\n if (width !== this.width || height !== this.height) {\n this.destroy();\n this.createTexture();\n }\n\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.texture) {\n this.texture.destroy();\n }\n }\n }, {\n key: \"createTexture\",\n value: function createTexture() {\n var _this$options = this.options,\n data = _this$options.data,\n _this$options$type = _this$options.type,\n type = _this$options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _this$options$type,\n width = _this$options.width,\n height = _this$options.height,\n _this$options$flipY = _this$options.flipY,\n flipY = _this$options$flipY === void 0 ? false : _this$options$flipY,\n _this$options$format = _this$options.format,\n format = _this$options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _this$options$format,\n _this$options$mipmap = _this$options.mipmap,\n mipmap = _this$options$mipmap === void 0 ? false : _this$options$mipmap,\n _this$options$wrapS = _this$options.wrapS,\n wrapS = _this$options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapS,\n _this$options$wrapT = _this$options.wrapT,\n wrapT = _this$options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapT,\n _this$options$aniso = _this$options.aniso,\n aniso = _this$options$aniso === void 0 ? 0 : _this$options$aniso,\n _this$options$alignme = _this$options.alignment,\n alignment = _this$options$alignme === void 0 ? 1 : _this$options$alignme,\n _this$options$premult = _this$options.premultiplyAlpha,\n premultiplyAlpha = _this$options$premult === void 0 ? false : _this$options$premult,\n _this$options$mag = _this$options.mag,\n mag = _this$options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$mag,\n _this$options$min = _this$options.min,\n min = _this$options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$min,\n _this$options$colorSp = _this$options.colorSpace,\n colorSpace = _this$options$colorSp === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _this$options$colorSp,\n usage = _this$options.usage;\n this.width = width;\n this.height = height;\n this.texture = this.engine.device.createTexture({\n size: [width, height, 1],\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n // TODO: https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount\n sampleCount: 1,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureDimension\"].E2d,\n format: _constants__WEBPACK_IMPORTED_MODULE_4__[\"formatMap\"][format],\n // could throw texture binding usage mismatch\n usage: usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].CopyDst\n });\n\n if (!usage || usage & _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled) {\n this.sampler = this.engine.device.createSampler({\n addressModeU: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n addressModeV: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapT],\n addressModeW: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n // TODO: same as addressModeU\n magFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][mag],\n minFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][min],\n maxAnisotropy: aniso // @see https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy\n\n });\n }\n }\n }]);\n\n return WebGPUTexture2D;\n}();\n\n\n//# sourceMappingURL=WebGPUTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUyRC5qcz85NmY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDckI7QUFDdUI7QUFDQTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsc0RBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxzREFBRTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsc0RBQUU7QUFDckQ7QUFDQSxtREFBbUQsc0RBQUU7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0Msc0RBQUU7QUFDakQ7QUFDQSwrQ0FBK0Msc0RBQUU7QUFDakQ7QUFDQSwwREFBMEQsc0RBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkVBQWdDO0FBQ25ELGdCQUFnQixvREFBUztBQUN6QjtBQUNBLHdCQUF3Qix5RUFBNEIsV0FBVyx5RUFBNEI7QUFDM0YsT0FBTzs7QUFFUCw0QkFBNEIseUVBQTRCO0FBQ3hEO0FBQ0Esd0JBQXdCLHNEQUFXO0FBQ25DLHdCQUF3QixzREFBVztBQUNuQyx3QkFBd0Isc0RBQVc7QUFDbkM7QUFDQSxxQkFBcUIsb0RBQVM7QUFDOUIscUJBQXFCLG9EQUFTO0FBQzlCOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXFDO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVUZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgZmlsdGVyTWFwLCBmb3JtYXRNYXAsIHdyYXBNb2RlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBhZGFwdG9yIGZvciByZWdsLkJ1ZmZlclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYnVmZmVyc1xuICovXG5cbnZhciBXZWJHUFVUZXh0dXJlMkQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVUZXh0dXJlMkQoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVVRleHR1cmUyRCk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMudGV4dHVyZSA9IHZvaWQgMDtcbiAgICB0aGlzLnNhbXBsZXIgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmNyZWF0ZVRleHR1cmUoKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVUZXh0dXJlMkQsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0dXJlOiB0aGlzLnRleHR1cmUsXG4gICAgICAgIHNhbXBsZXI6IHRoaXMuc2FtcGxlclxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHsvLyBUT0RPXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcblxuICAgICAgLy8gVE9ETzogaXQgc2VlbXMgdGhhdCBUZXh0dXJlIGRvZXNuJ3Qgc3VwcG9ydCBgcmVzaXplYFxuICAgICAgaWYgKHdpZHRoICE9PSB0aGlzLndpZHRoIHx8IGhlaWdodCAhPT0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGV4dHVyZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgaWYgKHRoaXMudGV4dHVyZSkge1xuICAgICAgICB0aGlzLnRleHR1cmUuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUoKSB7XG4gICAgICB2YXIgX3RoaXMkb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgICBkYXRhID0gX3RoaXMkb3B0aW9ucy5kYXRhLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkdHlwZSA9IF90aGlzJG9wdGlvbnMudHlwZSxcbiAgICAgICAgICB0eXBlID0gX3RoaXMkb3B0aW9ucyR0eXBlID09PSB2b2lkIDAgPyBnbC5VTlNJR05FRF9CWVRFIDogX3RoaXMkb3B0aW9ucyR0eXBlLFxuICAgICAgICAgIHdpZHRoID0gX3RoaXMkb3B0aW9ucy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRvcHRpb25zLmhlaWdodCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGZsaXBZID0gX3RoaXMkb3B0aW9ucy5mbGlwWSxcbiAgICAgICAgICBmbGlwWSA9IF90aGlzJG9wdGlvbnMkZmxpcFkgPT09IHZvaWQgMCA/IGZhbHNlIDogX3RoaXMkb3B0aW9ucyRmbGlwWSxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGZvcm1hdCA9IF90aGlzJG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGZvcm1hdCA9IF90aGlzJG9wdGlvbnMkZm9ybWF0ID09PSB2b2lkIDAgPyBnbC5SR0JBIDogX3RoaXMkb3B0aW9ucyRmb3JtYXQsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRtaXBtYXAgPSBfdGhpcyRvcHRpb25zLm1pcG1hcCxcbiAgICAgICAgICBtaXBtYXAgPSBfdGhpcyRvcHRpb25zJG1pcG1hcCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdGhpcyRvcHRpb25zJG1pcG1hcCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJHdyYXBTID0gX3RoaXMkb3B0aW9ucy53cmFwUyxcbiAgICAgICAgICB3cmFwUyA9IF90aGlzJG9wdGlvbnMkd3JhcFMgPT09IHZvaWQgMCA/IGdsLkNMQU1QX1RPX0VER0UgOiBfdGhpcyRvcHRpb25zJHdyYXBTLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkd3JhcFQgPSBfdGhpcyRvcHRpb25zLndyYXBULFxuICAgICAgICAgIHdyYXBUID0gX3RoaXMkb3B0aW9ucyR3cmFwVCA9PT0gdm9pZCAwID8gZ2wuQ0xBTVBfVE9fRURHRSA6IF90aGlzJG9wdGlvbnMkd3JhcFQsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRhbmlzbyA9IF90aGlzJG9wdGlvbnMuYW5pc28sXG4gICAgICAgICAgYW5pc28gPSBfdGhpcyRvcHRpb25zJGFuaXNvID09PSB2b2lkIDAgPyAwIDogX3RoaXMkb3B0aW9ucyRhbmlzbyxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGFsaWdubWUgPSBfdGhpcyRvcHRpb25zLmFsaWdubWVudCxcbiAgICAgICAgICBhbGlnbm1lbnQgPSBfdGhpcyRvcHRpb25zJGFsaWdubWUgPT09IHZvaWQgMCA/IDEgOiBfdGhpcyRvcHRpb25zJGFsaWdubWUsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRwcmVtdWx0ID0gX3RoaXMkb3B0aW9ucy5wcmVtdWx0aXBseUFscGhhLFxuICAgICAgICAgIHByZW11bHRpcGx5QWxwaGEgPSBfdGhpcyRvcHRpb25zJHByZW11bHQgPT09IHZvaWQgMCA/IGZhbHNlIDogX3RoaXMkb3B0aW9ucyRwcmVtdWx0LFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkbWFnID0gX3RoaXMkb3B0aW9ucy5tYWcsXG4gICAgICAgICAgbWFnID0gX3RoaXMkb3B0aW9ucyRtYWcgPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfdGhpcyRvcHRpb25zJG1hZyxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJG1pbiA9IF90aGlzJG9wdGlvbnMubWluLFxuICAgICAgICAgIG1pbiA9IF90aGlzJG9wdGlvbnMkbWluID09PSB2b2lkIDAgPyBnbC5ORUFSRVNUIDogX3RoaXMkb3B0aW9ucyRtaW4sXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRjb2xvclNwID0gX3RoaXMkb3B0aW9ucy5jb2xvclNwYWNlLFxuICAgICAgICAgIGNvbG9yU3BhY2UgPSBfdGhpcyRvcHRpb25zJGNvbG9yU3AgPT09IHZvaWQgMCA/IGdsLkJST1dTRVJfREVGQVVMVF9XRUJHTCA6IF90aGlzJG9wdGlvbnMkY29sb3JTcCxcbiAgICAgICAgICB1c2FnZSA9IF90aGlzJG9wdGlvbnMudXNhZ2U7XG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgIHRoaXMudGV4dHVyZSA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVUZXh0dXJlKHtcbiAgICAgICAgc2l6ZTogW3dpZHRoLCBoZWlnaHQsIDFdLFxuICAgICAgICAvLyBUT0RPOiBhcnJheUxheWVyQ291bnQgaXMgZGVwcmVjYXRlZDogdXNlIHNpemUuZGVwdGhcbiAgICAgICAgLy8gYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICBtaXBMZXZlbENvdW50OiAxLFxuICAgICAgICAvLyBUT0RPOiBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1dGV4dHVyZXZpZXdkZXNjcmlwdG9yLW1pcGxldmVsY291bnRcbiAgICAgICAgc2FtcGxlQ291bnQ6IDEsXG4gICAgICAgIGRpbWVuc2lvbjogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVEaW1lbnNpb24uRTJkLFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdE1hcFtmb3JtYXRdLFxuICAgICAgICAvLyBjb3VsZCB0aHJvdyB0ZXh0dXJlIGJpbmRpbmcgdXNhZ2UgbWlzbWF0Y2hcbiAgICAgICAgdXNhZ2U6IHVzYWdlIHx8IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuU2FtcGxlZCB8IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuQ29weURzdFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghdXNhZ2UgfHwgdXNhZ2UgJiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLlNhbXBsZWQpIHtcbiAgICAgICAgdGhpcy5zYW1wbGVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNhbXBsZXIoe1xuICAgICAgICAgIGFkZHJlc3NNb2RlVTogd3JhcE1vZGVNYXBbd3JhcFNdLFxuICAgICAgICAgIGFkZHJlc3NNb2RlVjogd3JhcE1vZGVNYXBbd3JhcFRdLFxuICAgICAgICAgIGFkZHJlc3NNb2RlVzogd3JhcE1vZGVNYXBbd3JhcFNdLFxuICAgICAgICAgIC8vIFRPRE86IHNhbWUgYXMgYWRkcmVzc01vZGVVXG4gICAgICAgICAgbWFnRmlsdGVyOiBmaWx0ZXJNYXBbbWFnXSxcbiAgICAgICAgICBtaW5GaWx0ZXI6IGZpbHRlck1hcFttaW5dLFxuICAgICAgICAgIG1heEFuaXNvdHJvcHk6IGFuaXNvIC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXNhbXBsZXJkZXNjcmlwdG9yLW1heGFuaXNvdHJvcHlcblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVVGV4dHVyZTJEO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVUZXh0dXJlMkQgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVVGV4dHVyZTJELmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js": /*!************************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js ***! \************************************************************************************************/ /*! exports provided: primitiveMap, depthFuncMap, blendEquationMap, blendFuncMap, formatMap, filterMap, wrapModeMap, getCullMode, getDepthStencilStateDescriptor, getColorStateDescriptors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCullMode\", function() { return getCullMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDepthStencilStateDescriptor\", function() { return getDepthStencilStateDescriptor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorStateDescriptors\", function() { return getColorStateDescriptors; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n\n\nvar _primitiveMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _formatMap, _filterMap, _wrapModeMap;\n\n\n // WebGPU 不支持 LINE_LOOP & TRIANGLE_FAN\n\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].PointList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineStrip), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleStrip), _primitiveMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Never), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Less), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].LessEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Greater), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].GreaterEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Equal), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].NotEqual), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Add), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Min), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Max), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Subtract), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].ReverseSubtract), _blendEquationMap); // @see https://gpuweb.github.io/gpuweb/#blend-state\n// 不支持 'constant alpha' 和 'one minus constant alpha'\n\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].Zero), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].One), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].BlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusBlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlphaSaturated), _blendFuncMap); // @see https://gpuweb.github.io/gpuweb/#texture-formats\n\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'r8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth32float'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth24plus-stencil8'), _formatMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpufiltermode\n\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _filterMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpuaddressmode\n\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp-to-edge'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror-repeat'), _wrapModeMap);\nfunction getCullMode(_ref) {\n var cull = _ref.cull;\n\n if (!cull || !cull.enable) {\n return _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].None;\n }\n\n if (cull.face) {\n return cull.face === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT ? _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Front : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Back;\n }\n}\nfunction getDepthStencilStateDescriptor(_ref2) {\n var depth = _ref2.depth,\n stencil = _ref2.stencil;\n // TODO: stencil\n var stencilFrontBack = {\n compare: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always,\n depthFailOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n failOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n passOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep\n };\n return {\n depthWriteEnabled: depth && depth.enable,\n depthCompare: depthFuncMap[(depth === null || depth === void 0 ? void 0 : depth.func) || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS],\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"TextureFormat\"].Depth24PlusStencil8,\n stencilFront: stencilFrontBack,\n stencilBack: stencilFrontBack,\n stencilReadMask: 0xffffffff,\n stencilWriteMask: 0xffffffff\n };\n}\n/**\n * @see https://gpuweb.github.io/gpuweb/#color-state\n */\n\nfunction getColorStateDescriptors(_ref3, swapChainFormat) {\n var blend = _ref3.blend;\n return [{\n format: swapChainFormat,\n // https://gpuweb.github.io/gpuweb/#blend-state\n alphaBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n colorBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n writeMask: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"ColorWrite\"].All\n }];\n}\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2NvbnN0YW50cy5qcz9iZjY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FOztBQUVwRTs7QUFFeUM7QUFDdUI7O0FBRXpELHNDQUFzQyxFQUFFLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDhFQUFpQyxhQUFhLDRFQUFlLGdCQUFnQixzREFBRSxRQUFRLDhFQUFpQyxZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLDhFQUFpQyxZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxhQUFhLDhFQUFpQyxhQUFhLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLDhFQUFpQyxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGVBQWUsOEVBQWlDLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsaUJBQWlCLDhFQUFpQztBQUM5cEIsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLFFBQVEsNEVBQStCLFNBQVMsNEVBQWUsZ0JBQWdCLHNEQUFFLFNBQVMsNEVBQStCLFVBQVUsNEVBQWUsZ0JBQWdCLHNEQUFFLE9BQU8sNEVBQStCLFFBQVEsNEVBQWUsZ0JBQWdCLHNEQUFFLFNBQVMsNEVBQStCLGFBQWEsNEVBQWUsZ0JBQWdCLHNEQUFFLFVBQVUsNEVBQStCLFdBQVcsNEVBQWUsZ0JBQWdCLHNEQUFFLFNBQVMsNEVBQStCLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsUUFBUSw0RUFBK0IsU0FBUyw0RUFBZSxnQkFBZ0Isc0RBQUUsV0FBVyw0RUFBK0I7QUFDM3JCLDhDQUE4QyxFQUFFLDRFQUFlLG9CQUFvQixzREFBRSxXQUFXLDJFQUE4QixPQUFPLDRFQUFlLG9CQUFvQixzREFBRSxVQUFVLDJFQUE4QixPQUFPLDRFQUFlLG9CQUFvQixzREFBRSxVQUFVLDJFQUE4QixPQUFPLDRFQUFlLG9CQUFvQixzREFBRSxnQkFBZ0IsMkVBQThCLFlBQVksNEVBQWUsb0JBQW9CLHNEQUFFLHdCQUF3QiwyRUFBOEIsc0NBQXNDO0FBQ3BoQjs7QUFFTyxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsT0FBTyx3RUFBMkIsUUFBUSw0RUFBZSxnQkFBZ0Isc0RBQUUsTUFBTSx3RUFBMkIsT0FBTyw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSx3RUFBMkIsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLHdFQUEyQixvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLFlBQVksd0VBQTJCLFlBQVksNEVBQWUsZ0JBQWdCLHNEQUFFLHNCQUFzQix3RUFBMkIsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLHdFQUEyQixZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0Isd0VBQTJCLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSx3RUFBMkIsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLHdFQUEyQixvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGlCQUFpQix3RUFBMkIsY0FBYyw0RUFBZSxnQkFBZ0Isc0RBQUUsMkJBQTJCLHdFQUEyQixzQkFBc0IsNEVBQWUsZ0JBQWdCLHNEQUFFLHFCQUFxQix3RUFBMkIsb0NBQW9DOztBQUVqdUMsZ0NBQWdDLEVBQUUsNEVBQWUsYUFBYSxzREFBRSxvQkFBb0IsNEVBQWUsYUFBYSxzREFBRSxzQkFBc0IsNEVBQWUsYUFBYSxzREFBRSxtQ0FBbUMsNEVBQWUsYUFBYSxzREFBRSxxREFBcUQ7O0FBRTVSLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsc0JBQXNCLDRFQUFlLGFBQWEsc0RBQUUsZ0NBQWdDOztBQUVwSixvQ0FBb0MsRUFBRSw0RUFBZSxlQUFlLHNEQUFFLG9CQUFvQiw0RUFBZSxlQUFlLHNEQUFFLGtDQUFrQyw0RUFBZSxlQUFlLHNEQUFFO0FBQzVMO0FBQ1A7O0FBRUE7QUFDQSxXQUFXLHFFQUF3QjtBQUNuQzs7QUFFQTtBQUNBLHlCQUF5QixzREFBRSxTQUFTLHFFQUF3QixTQUFTLHFFQUF3QjtBQUM3RjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNEVBQStCO0FBQzVDLGlCQUFpQiw2RUFBZ0M7QUFDakQsWUFBWSw2RUFBZ0M7QUFDNUMsWUFBWSw2RUFBZ0M7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsNkZBQTZGLHNEQUFFO0FBQy9GLFlBQVksMEVBQTZCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsc0RBQUU7QUFDOUUsNEVBQTRFLHNEQUFFO0FBQzlFLHFGQUFxRixzREFBRTtBQUN2RixLQUFLO0FBQ0w7QUFDQSwwRUFBMEUsc0RBQUU7QUFDNUUsMEVBQTBFLHNEQUFFO0FBQzVFLG1GQUFtRixzREFBRTtBQUNyRixLQUFLO0FBQ0wsZUFBZSx1RUFBMEI7QUFDekMsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxudmFyIF9wcmltaXRpdmVNYXAsIF9kZXB0aEZ1bmNNYXAsIF9ibGVuZEVxdWF0aW9uTWFwLCBfYmxlbmRGdW5jTWFwLCBfZm9ybWF0TWFwLCBfZmlsdGVyTWFwLCBfd3JhcE1vZGVNYXA7XG5cbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7IC8vIFdlYkdQVSDkuI3mlK/mjIEgTElORV9MT09QICYgVFJJQU5HTEVfRkFOXG5cbmV4cG9ydCB2YXIgcHJpbWl0aXZlTWFwID0gKF9wcmltaXRpdmVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlBPSU5UUywgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LlBvaW50TGlzdCksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FUywgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LkxpbmVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVfTE9PUCwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LkxpbmVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVfU1RSSVAsIFdlYkdQVUNvbnN0YW50cy5QcmltaXRpdmVUb3BvbG9neS5MaW5lU3RyaXApLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVTLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuVHJpYW5nbGVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX0ZBTiwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LlRyaWFuZ2xlTGlzdCksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRV9TVFJJUCwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LlRyaWFuZ2xlU3RyaXApLCBfcHJpbWl0aXZlTWFwKTtcbmV4cG9ydCB2YXIgZGVwdGhGdW5jTWFwID0gKF9kZXB0aEZ1bmNNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLk5FVkVSLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLk5ldmVyKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkFMV0FZUywgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5BbHdheXMpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTEVTUywgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5MZXNzKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkxFUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5MZXNzRXF1YWwpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuR1JFQVRFUiwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5HcmVhdGVyKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkdFUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5HcmVhdGVyRXF1YWwpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuRVFVQUwsIFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uRXF1YWwpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTk9URVFVQUwsIFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uTm90RXF1YWwpLCBfZGVwdGhGdW5jTWFwKTtcbmV4cG9ydCB2YXIgYmxlbmRFcXVhdGlvbk1hcCA9IChfYmxlbmRFcXVhdGlvbk1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfQURELCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uQWRkKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NSU5fRVhULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uTWluKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NQVhfRVhULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uTWF4KSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5GVU5DX1NVQlRSQUNULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uU3VidHJhY3QpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfUkVWRVJTRV9TVUJUUkFDVCwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kT3BlcmF0aW9uLlJldmVyc2VTdWJ0cmFjdCksIF9ibGVuZEVxdWF0aW9uTWFwKTsgLy8gQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNibGVuZC1zdGF0ZVxuLy8g5LiN5pSv5oyBICdjb25zdGFudCBhbHBoYScg5ZKMICdvbmUgbWludXMgY29uc3RhbnQgYWxwaGEnXG5cbmV4cG9ydCB2YXIgYmxlbmRGdW5jTWFwID0gKF9ibGVuZEZ1bmNNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlpFUk8sIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5aZXJvKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLk9uZSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5TcmNDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNTcmNDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5TcmNBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNTcmNBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5Ec3RDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNEc3RDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5Ec3RBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0FMUEhBLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNEc3RBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5DT05TVEFOVF9DT0xPUiwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLkJsZW5kQ29sb3IpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNCbGVuZENvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19BTFBIQV9TQVRVUkFURSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlNyY0FscGhhU2F0dXJhdGVkKSwgX2JsZW5kRnVuY01hcCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jdGV4dHVyZS1mb3JtYXRzXG5cbmV4cG9ydCB2YXIgZm9ybWF0TWFwID0gKF9mb3JtYXRNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkFMUEhBLCAncjh1bm9ybScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuUkdCQSwgJ3JnYmE4dW5vcm0nKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgJ2RlcHRoMzJmbG9hdCcpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuREVQVEhfU1RFTkNJTCwgJ2RlcHRoMjRwbHVzLXN0ZW5jaWw4JyksIF9mb3JtYXRNYXApOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2VudW1kZWYtZ3B1ZmlsdGVybW9kZVxuXG5leHBvcnQgdmFyIGZpbHRlck1hcCA9IChfZmlsdGVyTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5ORUFSRVNULCAnbmVhcmVzdCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSLCAnbGluZWFyJyksIF9maWx0ZXJNYXApOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2VudW1kZWYtZ3B1YWRkcmVzc21vZGVcblxuZXhwb3J0IHZhciB3cmFwTW9kZU1hcCA9IChfd3JhcE1vZGVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuUkVQRUFULCAncmVwZWF0JyksIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLkNMQU1QX1RPX0VER0UsICdjbGFtcC10by1lZGdlJyksIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLk1JUlJPUkVEX1JFUEVBVCwgJ21pcnJvci1yZXBlYXQnKSwgX3dyYXBNb2RlTWFwKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdWxsTW9kZShfcmVmKSB7XG4gIHZhciBjdWxsID0gX3JlZi5jdWxsO1xuXG4gIGlmICghY3VsbCB8fCAhY3VsbC5lbmFibGUpIHtcbiAgICByZXR1cm4gV2ViR1BVQ29uc3RhbnRzLkN1bGxNb2RlLk5vbmU7XG4gIH1cblxuICBpZiAoY3VsbC5mYWNlKSB7XG4gICAgcmV0dXJuIGN1bGwuZmFjZSA9PT0gZ2wuRlJPTlQgPyBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuRnJvbnQgOiBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuQmFjaztcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcihfcmVmMikge1xuICB2YXIgZGVwdGggPSBfcmVmMi5kZXB0aCxcbiAgICAgIHN0ZW5jaWwgPSBfcmVmMi5zdGVuY2lsO1xuICAvLyBUT0RPOiBzdGVuY2lsXG4gIHZhciBzdGVuY2lsRnJvbnRCYWNrID0ge1xuICAgIGNvbXBhcmU6IFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uQWx3YXlzLFxuICAgIGRlcHRoRmFpbE9wOiBXZWJHUFVDb25zdGFudHMuU3RlbmNpbE9wZXJhdGlvbi5LZWVwLFxuICAgIGZhaWxPcDogV2ViR1BVQ29uc3RhbnRzLlN0ZW5jaWxPcGVyYXRpb24uS2VlcCxcbiAgICBwYXNzT3A6IFdlYkdQVUNvbnN0YW50cy5TdGVuY2lsT3BlcmF0aW9uLktlZXBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBkZXB0aFdyaXRlRW5hYmxlZDogZGVwdGggJiYgZGVwdGguZW5hYmxlLFxuICAgIGRlcHRoQ29tcGFyZTogZGVwdGhGdW5jTWFwWyhkZXB0aCA9PT0gbnVsbCB8fCBkZXB0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVwdGguZnVuYykgfHwgZ2wuQUxXQVlTXSxcbiAgICBmb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkRlcHRoMjRQbHVzU3RlbmNpbDgsXG4gICAgc3RlbmNpbEZyb250OiBzdGVuY2lsRnJvbnRCYWNrLFxuICAgIHN0ZW5jaWxCYWNrOiBzdGVuY2lsRnJvbnRCYWNrLFxuICAgIHN0ZW5jaWxSZWFkTWFzazogMHhmZmZmZmZmZixcbiAgICBzdGVuY2lsV3JpdGVNYXNrOiAweGZmZmZmZmZmXG4gIH07XG59XG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jY29sb3Itc3RhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JTdGF0ZURlc2NyaXB0b3JzKF9yZWYzLCBzd2FwQ2hhaW5Gb3JtYXQpIHtcbiAgdmFyIGJsZW5kID0gX3JlZjMuYmxlbmQ7XG4gIHJldHVybiBbe1xuICAgIGZvcm1hdDogc3dhcENoYWluRm9ybWF0LFxuICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2JsZW5kLXN0YXRlXG4gICAgYWxwaGFCbGVuZDoge1xuICAgICAgc3JjRmFjdG9yOiBibGVuZEZ1bmNNYXBbYmxlbmQgJiYgYmxlbmQuZnVuYyAmJiBibGVuZC5mdW5jLnNyY0FscGhhIHx8IGdsLk9ORV0sXG4gICAgICBkc3RGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuZHN0QWxwaGEgfHwgZ2wuWkVST10sXG4gICAgICBvcGVyYXRpb246IGJsZW5kRXF1YXRpb25NYXBbYmxlbmQgJiYgYmxlbmQuZXF1YXRpb24gJiYgYmxlbmQuZXF1YXRpb24uYWxwaGEgfHwgZ2wuRlVOQ19BRERdXG4gICAgfSxcbiAgICBjb2xvckJsZW5kOiB7XG4gICAgICBzcmNGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuc3JjUkdCIHx8IGdsLk9ORV0sXG4gICAgICBkc3RGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuZHN0UkdCIHx8IGdsLlpFUk9dLFxuICAgICAgb3BlcmF0aW9uOiBibGVuZEVxdWF0aW9uTWFwW2JsZW5kICYmIGJsZW5kLmVxdWF0aW9uICYmIGJsZW5kLmVxdWF0aW9uLnJnYiB8fCBnbC5GVU5DX0FERF1cbiAgICB9LFxuICAgIHdyaXRlTWFzazogV2ViR1BVQ29uc3RhbnRzLkNvbG9yV3JpdGUuQWxsXG4gIH1dO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js": /*!**********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js ***! \**********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/dom */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js\");\n\n\n\nvar glslang;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return _ref.apply(this, arguments);\n});\n\nfunction _ref() {\n _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!glslang) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", glslang);\n\n case 2:\n _context.next = 4;\n return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__[\"loadScriptAsync\"])('https://preview.babylonjs.com/glslang/glslang.js');\n\n case 4:\n glslang = window.glslang('https://preview.babylonjs.com/glslang/glslang.wasm');\n return _context.abrupt(\"return\", glslang);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _ref.apply(this, arguments);\n}\n//# sourceMappingURL=glslang.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2dsc2xhbmcuanM/ZTc2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUN6QjtBQUMvQztBQUNlO0FBQ2Y7QUFDQSxDQUFDOztBQUVEO0FBQ0EsU0FBUyw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDNUQsV0FBVyxpRUFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixrRUFBZTs7QUFFbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvZ2xzbGFuZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCB7IGxvYWRTY3JpcHRBc3luYyB9IGZyb20gJy4uL3V0aWxzL2RvbSc7XG52YXIgZ2xzbGFuZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX3JlZigpIHtcbiAgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGlmICghZ2xzbGFuZykge1xuICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgZ2xzbGFuZyk7XG5cbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDtcbiAgICAgICAgICAgIHJldHVybiBsb2FkU2NyaXB0QXN5bmMoJ2h0dHBzOi8vcHJldmlldy5iYWJ5bG9uanMuY29tL2dsc2xhbmcvZ2xzbGFuZy5qcycpO1xuXG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgZ2xzbGFuZyA9IHdpbmRvdy5nbHNsYW5nKCdodHRwczovL3ByZXZpZXcuYmFieWxvbmpzLmNvbS9nbHNsYW5nL2dsc2xhbmcud2FzbScpO1xuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBnbHNsYW5nKTtcblxuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZSk7XG4gIH0pKTtcbiAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdsc2xhbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js": /*!********************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js ***! \********************************************************************************************/ /*! exports provided: WebGPUEngine */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return WebGPUEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _glslang__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./glslang */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js\");\n/* harmony import */ var _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUAttribute */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n/* harmony import */ var _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./WebGPUComputeModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\");\n/* harmony import */ var _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUElements */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\");\n/* harmony import */ var _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./WebGPUFramebuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\");\n/* harmony import */ var _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./WebGPUModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\");\n/* harmony import */ var _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./WebGPUTexture2D */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * implements renderService with WebGPU API\n * @see https://webgpu.io/\n * @see https://github.com/BabylonJS/Babylon.js/blob/WebGPU/src/Engines/webgpuEngine.ts\n */\n // import { Glslang } from '@webgpu/glslang/dist/web-devel/glslang.onefile';\n\n\n\n\n\n\n\n\n\n\n\nvar WebGPUEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGPUEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGPUEngine);\n\n this.supportWebGPU = true;\n this.useWGSL = false;\n this.options = void 0;\n this.canvas = void 0;\n this.context = void 0;\n this.glslang = void 0;\n this.adapter = void 0;\n this.device = void 0;\n this.swapChain = void 0;\n this.mainPassSampleCount = void 0;\n this.mainTexture = void 0;\n this.depthTexture = void 0;\n this.mainColorAttachments = void 0;\n this.mainTextureExtends = void 0;\n this.mainDepthAttachment = void 0;\n this.uploadEncoder = void 0;\n this.renderEncoder = void 0;\n this.computeEncoder = void 0;\n this.renderTargetEncoder = void 0;\n this.commandBuffers = new Array(4).fill(undefined);\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n this.currentRenderTargetViewDescriptor = void 0;\n this.currentComputePass = null;\n this.bundleEncoder = void 0;\n this.tempBuffers = [];\n this.currentRenderTarget = null;\n this.uploadEncoderDescriptor = {\n label: 'upload'\n };\n this.renderEncoderDescriptor = {\n label: 'render'\n };\n this.renderTargetEncoderDescriptor = {\n label: 'renderTarget'\n };\n this.computeEncoderDescriptor = {\n label: 'compute'\n };\n this.pipelines = {};\n this.computePipelines = {};\n this.defaultSampleCount = 4;\n this.clearDepthValue = 1;\n this.clearStencilValue = 0;\n this.transientViewport = {\n x: Infinity,\n y: 0,\n width: 0,\n height: 0\n };\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n\n this.clear = function (options) {\n var framebuffer = options.framebuffer,\n color = options.color,\n depth = options.depth,\n stencil = options.stencil;\n\n if (_this.options.supportCompute) {\n _this.startComputePass();\n } // We need to recreate the render pass so that the new parameters for clear color / depth / stencil are taken into account\n\n\n if (_this.currentRenderTarget) {\n if (_this.currentRenderPass) {\n _this.endRenderTargetRenderPass();\n }\n\n _this.startRenderTargetRenderPass(_this.currentRenderTarget, color ? color : null, !!depth, !!stencil);\n } else {\n // if (this.useReverseDepthBuffer) {\n // this._depthCullingState.depthFunc = Constants.GREATER;\n // }\n _this.mainColorAttachments[0].loadValue = color ? color : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.depthLoadValue = depth ? depth : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.stencilLoadValue = stencil ? _this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n\n if (_this.mainRenderPass) {\n _this.endMainRenderPass();\n }\n\n _this.startMainRenderPass();\n }\n };\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(options) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n model = new _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this, options);\n _context.next = 3;\n return model.init();\n\n case 3:\n return _context.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this, options);\n };\n\n this.createBuffer = function (options) {\n return new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this, options);\n };\n\n this.createElements = function (options) {\n return new _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this, options);\n };\n\n this.createTexture2D = function (options) {\n return new _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n // bind\n if (_this.currentRenderTarget) {\n _this.unbindFramebuffer(_this.currentRenderTarget);\n }\n\n _this.currentRenderTarget = framebuffer; // TODO: use mipmap options in framebuffer\n\n _this.currentRenderTargetViewDescriptor = {\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureViewDimension\"].E2d,\n // mipLevelCount: bindWithMipMaps ? WebGPUTextureHelper.computeNumMipmapLevels(texture.width, texture.height) - lodLevel : 1,\n // baseArrayLayer: faceIndex,\n // baseMipLevel: lodLevel,\n arrayLayerCount: 1,\n aspect: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureAspect\"].All\n };\n _this.currentRenderPass = null;\n drawCommands();\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(context) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n model = new _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this, context);\n _context2.next = 3;\n return model.init();\n\n case 3:\n return _context2.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.getCanvas = function () {\n return _this.canvas;\n };\n\n this.getGLContext = function () {\n throw new Error('Method not implemented.');\n };\n\n this.viewport = function (_ref3) {\n var x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n if (!_this.currentRenderPass) {\n // call viewport() before current render pass created\n _this.transientViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n } else if (_this.transientViewport.x !== Infinity) {\n var renderPass = _this.getCurrentRenderPass(); // @see https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setviewport\n\n\n renderPass.setViewport(_this.transientViewport.x, _this.transientViewport.y, _this.transientViewport.width, _this.transientViewport.height, 0, 1);\n } else if (x !== _this.cachedViewport.x || y !== _this.cachedViewport.y || width !== _this.cachedViewport.width || height !== _this.cachedViewport.height) {\n _this.cachedViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n var _renderPass = _this.getCurrentRenderPass();\n\n _renderPass.setViewport(x, y, width, height, 0, 1);\n }\n };\n\n this.readPixels = function (options) {\n throw new Error('Method not implemented.');\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGPUEngine, [{\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n return true;\n }\n }, {\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(config) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.canvas = config.canvas;\n this.options = config;\n this.useWGSL = !!config.useWGSL;\n this.mainPassSampleCount = config.antialiasing ? this.defaultSampleCount : 1;\n _context3.next = 6;\n return this.initGlslang();\n\n case 6:\n this.initContextAndSwapChain();\n this.initMainAttachments();\n\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function init(_x3) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"setScissor\",\n value: function setScissor(scissor) {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.tempBuffers.forEach(function (buffer) {\n return buffer.destroy();\n });\n this.tempBuffers = [];\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {\n this.uploadEncoder = this.device.createCommandEncoder(this.uploadEncoderDescriptor);\n this.renderEncoder = this.device.createCommandEncoder(this.renderEncoderDescriptor);\n this.renderTargetEncoder = this.device.createCommandEncoder(this.renderTargetEncoderDescriptor);\n\n if (this.options.supportCompute) {\n this.computeEncoder = this.device.createCommandEncoder(this.computeEncoderDescriptor);\n }\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {\n if (this.options.supportCompute) {\n this.endComputePass();\n }\n\n this.endMainRenderPass();\n this.commandBuffers[0] = this.uploadEncoder.finish();\n this.commandBuffers[1] = this.renderEncoder.finish();\n\n if (this.options.supportCompute) {\n this.commandBuffers[2] = this.computeEncoder.finish();\n }\n\n this.commandBuffers[3] = this.renderTargetEncoder.finish();\n\n if (_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"]) {\n this.device // @ts-ignore\n .getQueue().submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n } else {\n this.device.defaultQueue.submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n }\n }\n }, {\n key: \"getCurrentRenderPass\",\n value: function getCurrentRenderPass() {\n if (this.currentRenderTarget && !this.currentRenderPass) {\n this.startRenderTargetRenderPass(this.currentRenderTarget, null, false, false);\n } else if (!this.currentRenderPass) {\n this.startMainRenderPass();\n }\n\n return this.currentRenderPass;\n }\n }, {\n key: \"initGlslang\",\n value: function () {\n var _initGlslang = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var _navigator, _navigator$gpu;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(_glslang__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n\n case 2:\n this.glslang = _context4.sent;\n _context4.next = 5;\n return (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$gpu = _navigator.gpu) === null || _navigator$gpu === void 0 ? void 0 : _navigator$gpu.requestAdapter();\n\n case 5:\n this.adapter = _context4.sent;\n _context4.next = 8;\n return this.adapter.requestDevice();\n\n case 8:\n this.device = _context4.sent;\n\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function initGlslang() {\n return _initGlslang.apply(this, arguments);\n }\n\n return initGlslang;\n }()\n }, {\n key: \"initContextAndSwapChain\",\n value: function initContextAndSwapChain() {\n this.context = this.canvas.getContext(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'gpu' : 'gpupresent');\n this.swapChain = this.context.configureSwapChain({\n device: this.device,\n format: this.options.swapChainFormat,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].CopySrc\n });\n }\n }, {\n key: \"initMainAttachments\",\n value: function initMainAttachments() {\n this.mainTextureExtends = {\n width: this.canvas.width,\n height: this.canvas.height,\n depth: 1\n };\n\n if (this.options.antialiasing) {\n var mainTextureDescriptor = {\n size: this.mainTextureExtends,\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].BGRA8Unorm,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n this.mainTexture = this.device.createTexture(mainTextureDescriptor);\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.mainTexture.createDefaultView() : this.mainTexture.createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n } else {\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n }\n\n var depthTextureDescriptor = {\n size: this.mainTextureExtends,\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'depth32float-stencil8' : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].Depth24PlusStencil8,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.depthTexture = this.device.createTexture( // @ts-ignore\n depthTextureDescriptor);\n this.mainDepthAttachment = {\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.depthTexture.createDefaultView() : this.depthTexture.createView(),\n depthLoadValue: this.clearDepthValue,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: this.clearStencilValue,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n };\n }\n }, {\n key: \"startComputePass\",\n value: function startComputePass() {\n if (this.currentComputePass) {\n this.endComputePass();\n }\n\n this.currentComputePass = this.computeEncoder.beginComputePass();\n }\n }, {\n key: \"startMainRenderPass\",\n value: function startMainRenderPass() {\n if (this.currentRenderPass && !this.currentRenderTarget) {\n this.endMainRenderPass();\n } // Resolve in case of MSAA\n\n\n if (this.options.antialiasing) {\n this.mainColorAttachments[0].resolveTarget = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n } else {\n this.mainColorAttachments[0].attachment = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n }\n\n this.currentRenderPass = this.renderEncoder.beginRenderPass({\n colorAttachments: this.mainColorAttachments,\n depthStencilAttachment: this.mainDepthAttachment // TODO: use framebuffer's depth & stencil\n\n });\n this.mainRenderPass = this.currentRenderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n }\n }\n }, {\n key: \"startRenderTargetRenderPass\",\n value: function startRenderTargetRenderPass(renderTarget, clearColor, clearDepth) {\n var _renderTarget$get$col, _renderTarget$get$dep;\n\n var clearStencil = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var gpuTexture = (_renderTarget$get$col = renderTarget.get().color) === null || _renderTarget$get$col === void 0 ? void 0 : _renderTarget$get$col.texture;\n var colorTextureView;\n\n if (gpuTexture) {\n colorTextureView = gpuTexture.createView(this.currentRenderTargetViewDescriptor);\n }\n\n var depthStencilTexture = (_renderTarget$get$dep = renderTarget.get().depth) === null || _renderTarget$get$dep === void 0 ? void 0 : _renderTarget$get$dep.texture;\n var depthStencilTextureView;\n\n if (depthStencilTexture) {\n depthStencilTextureView = depthStencilTexture.createView();\n }\n\n var renderPass = this.renderTargetEncoder.beginRenderPass({\n colorAttachments: [{\n attachment: colorTextureView,\n loadValue: clearColor !== null ? clearColor : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }],\n depthStencilAttachment: depthStencilTexture && depthStencilTextureView ? {\n attachment: depthStencilTextureView,\n depthLoadValue: clearDepth ? this.clearDepthValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: clearStencil ? this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n } : undefined\n });\n this.currentRenderPass = renderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n } // TODO WEBGPU set the scissor rect and the stencil reference value\n\n }\n }, {\n key: \"endMainRenderPass\",\n value: function endMainRenderPass() {\n if (this.currentRenderPass === this.mainRenderPass && this.currentRenderPass !== null) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n }\n }\n }, {\n key: \"endComputePass\",\n value: function endComputePass() {\n if (this.currentComputePass) {\n this.currentComputePass.endPass();\n this.currentComputePass = null;\n }\n }\n }, {\n key: \"endRenderTargetRenderPass\",\n value: function endRenderTargetRenderPass() {\n if (this.currentRenderPass) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n }\n }\n }, {\n key: \"resetCachedViewport\",\n value: function resetCachedViewport() {\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"unbindFramebuffer\",\n value: function unbindFramebuffer(framebuffer) {\n // unbind\n if (this.currentRenderPass && this.currentRenderPass !== this.mainRenderPass) {\n this.endRenderTargetRenderPass();\n }\n\n this.transientViewport.x = Infinity;\n this.currentRenderTarget = null; // if (texture.generateMipMaps && !disableGenerateMipMaps && !texture.isCube) {\n // this._generateMipmaps(texture);\n // }\n\n this.currentRenderPass = this.mainRenderPass;\n }\n }]);\n\n return WebGPUEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2luZGV4LmpzPzlhYTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ0o7QUFDTjs7QUFFOUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMrQyxZQUFZLFVBQVU7O0FBRUw7QUFDekI7QUFDUDtBQUNnQjtBQUNOO0FBQ1k7QUFDUjtBQUNNO0FBQ1o7QUFDUTtBQUtoRCwyQkFBMkIsNERBQVU7QUFDckM7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSxtRUFBc0I7QUFDeEYsbUVBQW1FLG1FQUFzQjtBQUN6Rix5RkFBeUYsbUVBQXNCOztBQUUvRztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxREFBVztBQUN2QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQkFBaUIsd0RBQWU7QUFDaEM7O0FBRUE7QUFDQSxpQkFBaUIscURBQVk7QUFDN0I7O0FBRUE7QUFDQSxpQkFBaUIsd0RBQWM7QUFDL0I7O0FBRUE7QUFDQSxpQkFBaUIseURBQWU7QUFDaEM7O0FBRUE7QUFDQSxpQkFBaUIsMkRBQWlCO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOENBQThDOztBQUU5QztBQUNBLG1CQUFtQixpRkFBb0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMEVBQTZCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw0REFBa0I7QUFDOUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNEQUFzRDs7O0FBR3REO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFVBQVUsNERBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5QkFBeUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzVFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHdEQUFPOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSw0Q0FBNEMsNERBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5RUFBNEIsb0JBQW9CLHlFQUE0QjtBQUMzRixPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkVBQWdDO0FBQ3JELGtCQUFrQiwwRUFBNkI7QUFDL0MsaUJBQWlCLHlFQUE0QjtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQiw0REFBUTtBQUM5QjtBQUNBO0FBQ0EsbUJBQW1CLG9FQUF1QjtBQUMxQyxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0Esc0JBQXNCLDREQUFRO0FBQzlCO0FBQ0E7QUFDQSxtQkFBbUIsb0VBQXVCO0FBQzFDLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZFQUFnQztBQUNuRCxnQkFBZ0IsNERBQVEsNkJBQTZCLDBFQUE2QjtBQUNsRixlQUFlLHlFQUE0QjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDREQUFRO0FBQzVCO0FBQ0E7QUFDQSxzQkFBc0Isb0VBQXVCO0FBQzdDO0FBQ0Esd0JBQXdCLG9FQUF1QjtBQUMvQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EscURBQXFELDREQUFRO0FBQzdEO0FBQ0EsT0FBTztBQUNQLGtEQUFrRCw0REFBUTtBQUMxRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELG1FQUFzQjtBQUM5RSxtQkFBbUIsb0VBQXVCO0FBQzFDLFNBQVM7QUFDVDtBQUNBO0FBQ0EsOERBQThELG1FQUFzQjtBQUNwRix3QkFBd0Isb0VBQXVCO0FBQy9DLG9FQUFvRSxtRUFBc0I7QUFDMUYsMEJBQTBCLG9FQUF1QjtBQUNqRCxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuLyoqXG4gKiBpbXBsZW1lbnRzIHJlbmRlclNlcnZpY2Ugd2l0aCBXZWJHUFUgQVBJXG4gKiBAc2VlIGh0dHBzOi8vd2ViZ3B1LmlvL1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vQmFieWxvbkpTL0JhYnlsb24uanMvYmxvYi9XZWJHUFUvc3JjL0VuZ2luZXMvd2ViZ3B1RW5naW5lLnRzXG4gKi9cbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7IC8vIGltcG9ydCB7IEdsc2xhbmcgfSBmcm9tICdAd2ViZ3B1L2dsc2xhbmcvZGlzdC93ZWItZGV2ZWwvZ2xzbGFuZy5vbmVmaWxlJztcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgZ2xzbGFuZyBmcm9tICcuL2dsc2xhbmcnO1xuaW1wb3J0IFdlYkdQVUF0dHJpYnV0ZSBmcm9tICcuL1dlYkdQVUF0dHJpYnV0ZSc7XG5pbXBvcnQgV2ViR1BVQnVmZmVyIGZyb20gJy4vV2ViR1BVQnVmZmVyJztcbmltcG9ydCBXZWJHUFVDb21wdXRlTW9kZWwgZnJvbSAnLi9XZWJHUFVDb21wdXRlTW9kZWwnO1xuaW1wb3J0IFdlYkdQVUVsZW1lbnRzIGZyb20gJy4vV2ViR1BVRWxlbWVudHMnO1xuaW1wb3J0IFdlYkdQVUZyYW1lYnVmZmVyIGZyb20gJy4vV2ViR1BVRnJhbWVidWZmZXInO1xuaW1wb3J0IFdlYkdQVU1vZGVsIGZyb20gJy4vV2ViR1BVTW9kZWwnO1xuaW1wb3J0IFdlYkdQVVRleHR1cmUyRCBmcm9tICcuL1dlYkdQVVRleHR1cmUyRCc7XG5leHBvcnRcbi8qKlxuICogcmVnbCByZW5kZXJlclxuICovXG52YXIgV2ViR1BVRW5naW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gV2ViR1BVRW5naW5lKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVRW5naW5lKTtcblxuICAgIHRoaXMuc3VwcG9ydFdlYkdQVSA9IHRydWU7XG4gICAgdGhpcy51c2VXR1NMID0gZmFsc2U7XG4gICAgdGhpcy5vcHRpb25zID0gdm9pZCAwO1xuICAgIHRoaXMuY2FudmFzID0gdm9pZCAwO1xuICAgIHRoaXMuY29udGV4dCA9IHZvaWQgMDtcbiAgICB0aGlzLmdsc2xhbmcgPSB2b2lkIDA7XG4gICAgdGhpcy5hZGFwdGVyID0gdm9pZCAwO1xuICAgIHRoaXMuZGV2aWNlID0gdm9pZCAwO1xuICAgIHRoaXMuc3dhcENoYWluID0gdm9pZCAwO1xuICAgIHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLm1haW5UZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluVGV4dHVyZUV4dGVuZHMgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluRGVwdGhBdHRhY2htZW50ID0gdm9pZCAwO1xuICAgIHRoaXMudXBsb2FkRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbmRlckVuY29kZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wdXRlRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbmRlclRhcmdldEVuY29kZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21tYW5kQnVmZmVycyA9IG5ldyBBcnJheSg0KS5maWxsKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyA9IG51bGw7XG4gICAgdGhpcy5tYWluUmVuZGVyUGFzcyA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0Vmlld0Rlc2NyaXB0b3IgPSB2b2lkIDA7XG4gICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MgPSBudWxsO1xuICAgIHRoaXMuYnVuZGxlRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLnRlbXBCdWZmZXJzID0gW107XG4gICAgdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnVwbG9hZEVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICd1cGxvYWQnXG4gICAgfTtcbiAgICB0aGlzLnJlbmRlckVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICdyZW5kZXInXG4gICAgfTtcbiAgICB0aGlzLnJlbmRlclRhcmdldEVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICdyZW5kZXJUYXJnZXQnXG4gICAgfTtcbiAgICB0aGlzLmNvbXB1dGVFbmNvZGVyRGVzY3JpcHRvciA9IHtcbiAgICAgIGxhYmVsOiAnY29tcHV0ZSdcbiAgICB9O1xuICAgIHRoaXMucGlwZWxpbmVzID0ge307XG4gICAgdGhpcy5jb21wdXRlUGlwZWxpbmVzID0ge307XG4gICAgdGhpcy5kZWZhdWx0U2FtcGxlQ291bnQgPSA0O1xuICAgIHRoaXMuY2xlYXJEZXB0aFZhbHVlID0gMTtcbiAgICB0aGlzLmNsZWFyU3RlbmNpbFZhbHVlID0gMDtcbiAgICB0aGlzLnRyYW5zaWVudFZpZXdwb3J0ID0ge1xuICAgICAgeDogSW5maW5pdHksXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICAgIHRoaXMuY2FjaGVkVmlld3BvcnQgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcblxuICAgIHRoaXMuY2xlYXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIGZyYW1lYnVmZmVyID0gb3B0aW9ucy5mcmFtZWJ1ZmZlcixcbiAgICAgICAgICBjb2xvciA9IG9wdGlvbnMuY29sb3IsXG4gICAgICAgICAgZGVwdGggPSBvcHRpb25zLmRlcHRoLFxuICAgICAgICAgIHN0ZW5jaWwgPSBvcHRpb25zLnN0ZW5jaWw7XG5cbiAgICAgIGlmIChfdGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIF90aGlzLnN0YXJ0Q29tcHV0ZVBhc3MoKTtcbiAgICAgIH0gLy8gV2UgbmVlZCB0byByZWNyZWF0ZSB0aGUgcmVuZGVyIHBhc3Mgc28gdGhhdCB0aGUgbmV3IHBhcmFtZXRlcnMgZm9yIGNsZWFyIGNvbG9yIC8gZGVwdGggLyBzdGVuY2lsIGFyZSB0YWtlbiBpbnRvIGFjY291bnRcblxuXG4gICAgICBpZiAoX3RoaXMuY3VycmVudFJlbmRlclRhcmdldCkge1xuICAgICAgICBpZiAoX3RoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgICBfdGhpcy5lbmRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5zdGFydFJlbmRlclRhcmdldFJlbmRlclBhc3MoX3RoaXMuY3VycmVudFJlbmRlclRhcmdldCwgY29sb3IgPyBjb2xvciA6IG51bGwsICEhZGVwdGgsICEhc3RlbmNpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiAodGhpcy51c2VSZXZlcnNlRGVwdGhCdWZmZXIpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX2RlcHRoQ3VsbGluZ1N0YXRlLmRlcHRoRnVuYyA9IENvbnN0YW50cy5HUkVBVEVSO1xuICAgICAgICAvLyB9XG4gICAgICAgIF90aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzWzBdLmxvYWRWYWx1ZSA9IGNvbG9yID8gY29sb3IgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQ7XG4gICAgICAgIF90aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQuZGVwdGhMb2FkVmFsdWUgPSBkZXB0aCA/IGRlcHRoIDogV2ViR1BVQ29uc3RhbnRzLkxvYWRPcC5Mb2FkO1xuICAgICAgICBfdGhpcy5tYWluRGVwdGhBdHRhY2htZW50LnN0ZW5jaWxMb2FkVmFsdWUgPSBzdGVuY2lsID8gX3RoaXMuY2xlYXJTdGVuY2lsVmFsdWUgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQ7XG5cbiAgICAgICAgaWYgKF90aGlzLm1haW5SZW5kZXJQYXNzKSB7XG4gICAgICAgICAgX3RoaXMuZW5kTWFpblJlbmRlclBhc3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnN0YXJ0TWFpblJlbmRlclBhc3MoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUob3B0aW9ucykge1xuICAgICAgICB2YXIgbW9kZWw7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBuZXcgV2ViR1BVTW9kZWwoX3RoaXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlbC5pbml0KCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbW9kZWwpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCkge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB0aGlzLmNyZWF0ZUF0dHJpYnV0ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFdlYkdQVUF0dHJpYnV0ZShfdGhpcywgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVQnVmZmVyKF90aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFdlYkdQVUVsZW1lbnRzKF90aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVUZXh0dXJlMkQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBXZWJHUFVUZXh0dXJlMkQoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVRnJhbWVidWZmZXIoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLnVzZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKGZyYW1lYnVmZmVyLCBkcmF3Q29tbWFuZHMpIHtcbiAgICAgIC8vIGJpbmRcbiAgICAgIGlmIChfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIF90aGlzLnVuYmluZEZyYW1lYnVmZmVyKF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXI7IC8vIFRPRE86IHVzZSBtaXBtYXAgb3B0aW9ucyBpbiBmcmFtZWJ1ZmZlclxuXG4gICAgICBfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0Vmlld0Rlc2NyaXB0b3IgPSB7XG4gICAgICAgIGRpbWVuc2lvbjogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVWaWV3RGltZW5zaW9uLkUyZCxcbiAgICAgICAgLy8gbWlwTGV2ZWxDb3VudDogYmluZFdpdGhNaXBNYXBzID8gV2ViR1BVVGV4dHVyZUhlbHBlci5jb21wdXRlTnVtTWlwbWFwTGV2ZWxzKHRleHR1cmUud2lkdGgsIHRleHR1cmUuaGVpZ2h0KSAtIGxvZExldmVsIDogMSxcbiAgICAgICAgLy8gYmFzZUFycmF5TGF5ZXI6IGZhY2VJbmRleCxcbiAgICAgICAgLy8gYmFzZU1pcExldmVsOiBsb2RMZXZlbCxcbiAgICAgICAgYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICBhc3BlY3Q6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlQXNwZWN0LkFsbFxuICAgICAgfTtcbiAgICAgIF90aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gbnVsbDtcbiAgICAgIGRyYXdDb21tYW5kcygpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUNvbXB1dGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMihjb250ZXh0KSB7XG4gICAgICAgIHZhciBtb2RlbDtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBuZXcgV2ViR1BVQ29tcHV0ZU1vZGVsKF90aGlzLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLmluaXQoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgbW9kZWwpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94Mikge1xuICAgICAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuY2FudmFzO1xuICAgIH07XG5cbiAgICB0aGlzLmdldEdMQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9O1xuXG4gICAgdGhpcy52aWV3cG9ydCA9IGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIHggPSBfcmVmMy54LFxuICAgICAgICAgIHkgPSBfcmVmMy55LFxuICAgICAgICAgIHdpZHRoID0gX3JlZjMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZjMuaGVpZ2h0O1xuXG4gICAgICBpZiAoIV90aGlzLmN1cnJlbnRSZW5kZXJQYXNzKSB7XG4gICAgICAgIC8vIGNhbGwgdmlld3BvcnQoKSBiZWZvcmUgY3VycmVudCByZW5kZXIgcGFzcyBjcmVhdGVkXG4gICAgICAgIF90aGlzLnRyYW5zaWVudFZpZXdwb3J0ID0ge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoX3RoaXMudHJhbnNpZW50Vmlld3BvcnQueCAhPT0gSW5maW5pdHkpIHtcbiAgICAgICAgdmFyIHJlbmRlclBhc3MgPSBfdGhpcy5nZXRDdXJyZW50UmVuZGVyUGFzcygpOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVyZW5kZXJwYXNzZW5jb2Rlci1zZXR2aWV3cG9ydFxuXG5cbiAgICAgICAgcmVuZGVyUGFzcy5zZXRWaWV3cG9ydChfdGhpcy50cmFuc2llbnRWaWV3cG9ydC54LCBfdGhpcy50cmFuc2llbnRWaWV3cG9ydC55LCBfdGhpcy50cmFuc2llbnRWaWV3cG9ydC53aWR0aCwgX3RoaXMudHJhbnNpZW50Vmlld3BvcnQuaGVpZ2h0LCAwLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoeCAhPT0gX3RoaXMuY2FjaGVkVmlld3BvcnQueCB8fCB5ICE9PSBfdGhpcy5jYWNoZWRWaWV3cG9ydC55IHx8IHdpZHRoICE9PSBfdGhpcy5jYWNoZWRWaWV3cG9ydC53aWR0aCB8fCBoZWlnaHQgIT09IF90aGlzLmNhY2hlZFZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICBfdGhpcy5jYWNoZWRWaWV3cG9ydCA9IHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9yZW5kZXJQYXNzID0gX3RoaXMuZ2V0Q3VycmVudFJlbmRlclBhc3MoKTtcblxuICAgICAgICBfcmVuZGVyUGFzcy5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCAwLCAxKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5yZWFkUGl4ZWxzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUVuZ2luZSwgW3tcbiAgICBrZXk6IFwiaXNGbG9hdFN1cHBvcnRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0Zsb2F0U3VwcG9ydGVkKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzID0gY29uZmlnLmNhbnZhcztcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBjb25maWc7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VXR1NMID0gISFjb25maWcudXNlV0dTTDtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5QYXNzU2FtcGxlQ291bnQgPSBjb25maWcuYW50aWFsaWFzaW5nID8gdGhpcy5kZWZhdWx0U2FtcGxlQ291bnQgOiAxO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0R2xzbGFuZygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRDb250ZXh0QW5kU3dhcENoYWluKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TWFpbkF0dGFjaG1lbnRzKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoX3gzKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJzZXRTY2lzc29yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNjaXNzb3Ioc2Npc3Nvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy5tYWluVGV4dHVyZSkge1xuICAgICAgICB0aGlzLm1haW5UZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGVwdGhUZXh0dXJlKSB7XG4gICAgICAgIHRoaXMuZGVwdGhUZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZW1wQnVmZmVycy5mb3JFYWNoKGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGVtcEJ1ZmZlcnMgPSBbXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmVnaW5GcmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiZWdpbkZyYW1lKCkge1xuICAgICAgdGhpcy51cGxvYWRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIodGhpcy51cGxvYWRFbmNvZGVyRGVzY3JpcHRvcik7XG4gICAgICB0aGlzLnJlbmRlckVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih0aGlzLnJlbmRlckVuY29kZXJEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlckRlc2NyaXB0b3IpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIHRoaXMuY29tcHV0ZUVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih0aGlzLmNvbXB1dGVFbmNvZGVyRGVzY3JpcHRvcik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZEZyYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZEZyYW1lKCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdXBwb3J0Q29tcHV0ZSkge1xuICAgICAgICB0aGlzLmVuZENvbXB1dGVQYXNzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW5kTWFpblJlbmRlclBhc3MoKTtcbiAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbMF0gPSB0aGlzLnVwbG9hZEVuY29kZXIuZmluaXNoKCk7XG4gICAgICB0aGlzLmNvbW1hbmRCdWZmZXJzWzFdID0gdGhpcy5yZW5kZXJFbmNvZGVyLmZpbmlzaCgpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbMl0gPSB0aGlzLmNvbXB1dGVFbmNvZGVyLmZpbmlzaCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbW1hbmRCdWZmZXJzWzNdID0gdGhpcy5yZW5kZXJUYXJnZXRFbmNvZGVyLmZpbmlzaCgpO1xuXG4gICAgICBpZiAoaXNTYWZhcmkpIHtcbiAgICAgICAgdGhpcy5kZXZpY2UgLy8gQHRzLWlnbm9yZVxuICAgICAgICAuZ2V0UXVldWUoKS5zdWJtaXQodGhpcy5jb21tYW5kQnVmZmVycy5maWx0ZXIoZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGV2aWNlLmRlZmF1bHRRdWV1ZS5zdWJtaXQodGhpcy5jb21tYW5kQnVmZmVycy5maWx0ZXIoZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFJlbmRlclBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFJlbmRlclBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ICYmICF0aGlzLmN1cnJlbnRSZW5kZXJQYXNzKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKHRoaXMuY3VycmVudFJlbmRlclRhcmdldCwgbnVsbCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgdGhpcy5zdGFydE1haW5SZW5kZXJQYXNzKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbml0R2xzbGFuZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXRHbHNsYW5nID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7XG4gICAgICAgIHZhciBfbmF2aWdhdG9yLCBfbmF2aWdhdG9yJGdwdTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsc2xhbmcoKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgdGhpcy5nbHNsYW5nID0gX2NvbnRleHQ0LnNlbnQ7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiAoX25hdmlnYXRvciA9IG5hdmlnYXRvcikgPT09IG51bGwgfHwgX25hdmlnYXRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9uYXZpZ2F0b3IkZ3B1ID0gX25hdmlnYXRvci5ncHUpID09PSBudWxsIHx8IF9uYXZpZ2F0b3IkZ3B1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbmF2aWdhdG9yJGdwdS5yZXF1ZXN0QWRhcHRlcigpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIgPSBfY29udGV4dDQuc2VudDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gX2NvbnRleHQ0LnNlbnQ7XG5cbiAgICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXRHbHNsYW5nKCkge1xuICAgICAgICByZXR1cm4gX2luaXRHbHNsYW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0R2xzbGFuZztcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpbml0Q29udGV4dEFuZFN3YXBDaGFpblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0Q29udGV4dEFuZFN3YXBDaGFpbigpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoaXNTYWZhcmkgPyAnZ3B1JyA6ICdncHVwcmVzZW50Jyk7XG4gICAgICB0aGlzLnN3YXBDaGFpbiA9IHRoaXMuY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oe1xuICAgICAgICBkZXZpY2U6IHRoaXMuZGV2aWNlLFxuICAgICAgICBmb3JtYXQ6IHRoaXMub3B0aW9ucy5zd2FwQ2hhaW5Gb3JtYXQsXG4gICAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLk91dHB1dEF0dGFjaG1lbnQgfCBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLkNvcHlTcmNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbml0TWFpbkF0dGFjaG1lbnRzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRNYWluQXR0YWNobWVudHMoKSB7XG4gICAgICB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyA9IHtcbiAgICAgICAgd2lkdGg6IHRoaXMuY2FudmFzLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRoaXMuY2FudmFzLmhlaWdodCxcbiAgICAgICAgZGVwdGg6IDFcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYW50aWFsaWFzaW5nKSB7XG4gICAgICAgIHZhciBtYWluVGV4dHVyZURlc2NyaXB0b3IgPSB7XG4gICAgICAgICAgc2l6ZTogdGhpcy5tYWluVGV4dHVyZUV4dGVuZHMsXG4gICAgICAgICAgLy8gVE9ETzogYXJyYXlMYXllckNvdW50IGlzIGRlcHJlY2F0ZWQ6IHVzZSBzaXplLmRlcHRoXG4gICAgICAgICAgLy8gYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICAgIG1pcExldmVsQ291bnQ6IDEsXG4gICAgICAgICAgc2FtcGxlQ291bnQ6IHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCxcbiAgICAgICAgICBkaW1lbnNpb246IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRGltZW5zaW9uLkUyZCxcbiAgICAgICAgICBmb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkJHUkE4VW5vcm0sXG4gICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuT3V0cHV0QXR0YWNobWVudFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLm1haW5UZXh0dXJlKSB7XG4gICAgICAgICAgdGhpcy5tYWluVGV4dHVyZS5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1haW5UZXh0dXJlID0gdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZShtYWluVGV4dHVyZURlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzID0gW3tcbiAgICAgICAgICBhdHRhY2htZW50OiBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aGlzLm1haW5UZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkgOiB0aGlzLm1haW5UZXh0dXJlLmNyZWF0ZVZpZXcoKSxcbiAgICAgICAgICBsb2FkVmFsdWU6IFswLCAwLCAwLCAxXSxcbiAgICAgICAgICBzdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZVxuICAgICAgICB9XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMgPSBbe1xuICAgICAgICAgIGF0dGFjaG1lbnQ6IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlVmlldygpLFxuICAgICAgICAgIGxvYWRWYWx1ZTogWzAsIDAsIDAsIDFdLFxuICAgICAgICAgIHN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICAgIH1dO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGVwdGhUZXh0dXJlRGVzY3JpcHRvciA9IHtcbiAgICAgICAgc2l6ZTogdGhpcy5tYWluVGV4dHVyZUV4dGVuZHMsXG4gICAgICAgIC8vIGFycmF5TGF5ZXJDb3VudDogMSxcbiAgICAgICAgbWlwTGV2ZWxDb3VudDogMSxcbiAgICAgICAgc2FtcGxlQ291bnQ6IHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCxcbiAgICAgICAgZGltZW5zaW9uOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZURpbWVuc2lvbi5FMmQsXG4gICAgICAgIGZvcm1hdDogaXNTYWZhcmkgPyAnZGVwdGgzMmZsb2F0LXN0ZW5jaWw4JyA6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkRlcHRoMjRQbHVzU3RlbmNpbDgsXG4gICAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLk91dHB1dEF0dGFjaG1lbnRcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmRlcHRoVGV4dHVyZSkge1xuICAgICAgICB0aGlzLmRlcHRoVGV4dHVyZS5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZSggLy8gQHRzLWlnbm9yZVxuICAgICAgZGVwdGhUZXh0dXJlRGVzY3JpcHRvcik7XG4gICAgICB0aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQgPSB7XG4gICAgICAgIGF0dGFjaG1lbnQ6IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmRlcHRoVGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5kZXB0aFRleHR1cmUuY3JlYXRlVmlldygpLFxuICAgICAgICBkZXB0aExvYWRWYWx1ZTogdGhpcy5jbGVhckRlcHRoVmFsdWUsXG4gICAgICAgIGRlcHRoU3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmUsXG4gICAgICAgIHN0ZW5jaWxMb2FkVmFsdWU6IHRoaXMuY2xlYXJTdGVuY2lsVmFsdWUsXG4gICAgICAgIHN0ZW5jaWxTdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZVxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRDb21wdXRlUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydENvbXB1dGVQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudENvbXB1dGVQYXNzKSB7XG4gICAgICAgIHRoaXMuZW5kQ29tcHV0ZVBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MgPSB0aGlzLmNvbXB1dGVFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRNYWluUmVuZGVyUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydE1haW5SZW5kZXJQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFJlbmRlclBhc3MgJiYgIXRoaXMuY3VycmVudFJlbmRlclRhcmdldCkge1xuICAgICAgICB0aGlzLmVuZE1haW5SZW5kZXJQYXNzKCk7XG4gICAgICB9IC8vIFJlc29sdmUgaW4gY2FzZSBvZiBNU0FBXG5cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbnRpYWxpYXNpbmcpIHtcbiAgICAgICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50c1swXS5yZXNvbHZlVGFyZ2V0ID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlVmlldygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50c1swXS5hdHRhY2htZW50ID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlVmlldygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gdGhpcy5yZW5kZXJFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7XG4gICAgICAgIGNvbG9yQXR0YWNobWVudHM6IHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMsXG4gICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ6IHRoaXMubWFpbkRlcHRoQXR0YWNobWVudCAvLyBUT0RPOiB1c2UgZnJhbWVidWZmZXIncyBkZXB0aCAmIHN0ZW5jaWxcblxuICAgICAgfSk7XG4gICAgICB0aGlzLm1haW5SZW5kZXJQYXNzID0gdGhpcy5jdXJyZW50UmVuZGVyUGFzcztcblxuICAgICAgaWYgKHRoaXMuY2FjaGVkVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy52aWV3cG9ydCh0aGlzLmNhY2hlZFZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0UmVuZGVyVGFyZ2V0UmVuZGVyUGFzcyhyZW5kZXJUYXJnZXQsIGNsZWFyQ29sb3IsIGNsZWFyRGVwdGgpIHtcbiAgICAgIHZhciBfcmVuZGVyVGFyZ2V0JGdldCRjb2wsIF9yZW5kZXJUYXJnZXQkZ2V0JGRlcDtcblxuICAgICAgdmFyIGNsZWFyU3RlbmNpbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogZmFsc2U7XG4gICAgICB2YXIgZ3B1VGV4dHVyZSA9IChfcmVuZGVyVGFyZ2V0JGdldCRjb2wgPSByZW5kZXJUYXJnZXQuZ2V0KCkuY29sb3IpID09PSBudWxsIHx8IF9yZW5kZXJUYXJnZXQkZ2V0JGNvbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3JlbmRlclRhcmdldCRnZXQkY29sLnRleHR1cmU7XG4gICAgICB2YXIgY29sb3JUZXh0dXJlVmlldztcblxuICAgICAgaWYgKGdwdVRleHR1cmUpIHtcbiAgICAgICAgY29sb3JUZXh0dXJlVmlldyA9IGdwdVRleHR1cmUuY3JlYXRlVmlldyh0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXRWaWV3RGVzY3JpcHRvcik7XG4gICAgICB9XG5cbiAgICAgIHZhciBkZXB0aFN0ZW5jaWxUZXh0dXJlID0gKF9yZW5kZXJUYXJnZXQkZ2V0JGRlcCA9IHJlbmRlclRhcmdldC5nZXQoKS5kZXB0aCkgPT09IG51bGwgfHwgX3JlbmRlclRhcmdldCRnZXQkZGVwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcmVuZGVyVGFyZ2V0JGdldCRkZXAudGV4dHVyZTtcbiAgICAgIHZhciBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldztcblxuICAgICAgaWYgKGRlcHRoU3RlbmNpbFRleHR1cmUpIHtcbiAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZVZpZXcgPSBkZXB0aFN0ZW5jaWxUZXh0dXJlLmNyZWF0ZVZpZXcoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlbmRlclBhc3MgPSB0aGlzLnJlbmRlclRhcmdldEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHtcbiAgICAgICAgY29sb3JBdHRhY2htZW50czogW3tcbiAgICAgICAgICBhdHRhY2htZW50OiBjb2xvclRleHR1cmVWaWV3LFxuICAgICAgICAgIGxvYWRWYWx1ZTogY2xlYXJDb2xvciAhPT0gbnVsbCA/IGNsZWFyQ29sb3IgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQsXG4gICAgICAgICAgc3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmVcbiAgICAgICAgfV0sXG4gICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ6IGRlcHRoU3RlbmNpbFRleHR1cmUgJiYgZGVwdGhTdGVuY2lsVGV4dHVyZVZpZXcgPyB7XG4gICAgICAgICAgYXR0YWNobWVudDogZGVwdGhTdGVuY2lsVGV4dHVyZVZpZXcsXG4gICAgICAgICAgZGVwdGhMb2FkVmFsdWU6IGNsZWFyRGVwdGggPyB0aGlzLmNsZWFyRGVwdGhWYWx1ZSA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZCxcbiAgICAgICAgICBkZXB0aFN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlLFxuICAgICAgICAgIHN0ZW5jaWxMb2FkVmFsdWU6IGNsZWFyU3RlbmNpbCA/IHRoaXMuY2xlYXJTdGVuY2lsVmFsdWUgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQsXG4gICAgICAgICAgc3RlbmNpbFN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyA9IHJlbmRlclBhc3M7XG5cbiAgICAgIGlmICh0aGlzLmNhY2hlZFZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMudmlld3BvcnQodGhpcy5jYWNoZWRWaWV3cG9ydCk7XG4gICAgICB9IC8vIFRPRE8gV0VCR1BVIHNldCB0aGUgc2Npc3NvciByZWN0IGFuZCB0aGUgc3RlbmNpbCByZWZlcmVuY2UgdmFsdWVcblxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmRNYWluUmVuZGVyUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmRNYWluUmVuZGVyUGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID09PSB0aGlzLm1haW5SZW5kZXJQYXNzICYmIHRoaXMuY3VycmVudFJlbmRlclBhc3MgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcy5lbmRQYXNzKCk7XG4gICAgICAgIHRoaXMucmVzZXRDYWNoZWRWaWV3cG9ydCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gbnVsbDtcbiAgICAgICAgdGhpcy5tYWluUmVuZGVyUGFzcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZENvbXB1dGVQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZENvbXB1dGVQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudENvbXB1dGVQYXNzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENvbXB1dGVQYXNzLmVuZFBhc3MoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZFJlbmRlclRhcmdldFJlbmRlclBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVuZGVyUGFzcykge1xuICAgICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzLmVuZFBhc3MoKTtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlZFZpZXdwb3J0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0Q2FjaGVkVmlld3BvcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXRDYWNoZWRWaWV3cG9ydCgpIHtcbiAgICAgIHRoaXMuY2FjaGVkVmlld3BvcnQgPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDBcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVuYmluZEZyYW1lYnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuYmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSB7XG4gICAgICAvLyB1bmJpbmRcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJQYXNzICYmIHRoaXMuY3VycmVudFJlbmRlclBhc3MgIT09IHRoaXMubWFpblJlbmRlclBhc3MpIHtcbiAgICAgICAgdGhpcy5lbmRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJhbnNpZW50Vmlld3BvcnQueCA9IEluZmluaXR5O1xuICAgICAgdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ID0gbnVsbDsgLy8gaWYgKHRleHR1cmUuZ2VuZXJhdGVNaXBNYXBzICYmICFkaXNhYmxlR2VuZXJhdGVNaXBNYXBzICYmICF0ZXh0dXJlLmlzQ3ViZSkge1xuICAgICAgLy8gICB0aGlzLl9nZW5lcmF0ZU1pcG1hcHModGV4dHVyZSk7XG4gICAgICAvLyB9XG5cbiAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MgPSB0aGlzLm1haW5SZW5kZXJQYXNzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVFbmdpbmU7XG59KCksIF90ZW1wKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js ***! \************************************************************************/ /*! exports provided: Kernel */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return Kernel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _utils_is_array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/is-array */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/is-number */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\nvar Kernel = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Kernel() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Kernel);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor2, this);\n\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n this.model = void 0;\n this.dirty = true;\n this.compiledBundle = void 0;\n this.initPromise = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Kernel, [{\n key: \"init\",\n value: function init() {\n var _this$configService$g = this.configService.get(),\n canvas = _this$configService$g.canvas,\n engineOptions = _this$configService$g.engineOptions;\n\n this.initPromise = this.engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_11__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n }\n }, {\n key: \"setBundle\",\n value: function setBundle(bundle) {\n // deep clone\n this.compiledBundle = JSON.parse(JSON.stringify(bundle));\n }\n }, {\n key: \"setDispatch\",\n value: function setDispatch(dispatch) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.dispatch = dispatch;\n }\n\n return this;\n }\n }, {\n key: \"setMaxIteration\",\n value: function setMaxIteration(maxIteration) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.maxIteration = maxIteration;\n }\n\n return this;\n }\n }, {\n key: \"setBinding\",\n value: function setBinding(name, data) {\n var _this = this;\n\n if (typeof name === 'string') {\n var isNumberLikeData = Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_13__[\"isNumber\"])(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__[\"isTypedArray\"])(data) || Object(_utils_is_array__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(data);\n\n if (this.compiledBundle && this.compiledBundle.context) {\n // set define, eg. setBinding('MAX_LENGTH', 10)\n var existedDefine = this.compiledBundle.context.defines.find(function (b) {\n return b.name === name;\n });\n\n if (existedDefine) {\n existedDefine.value = data;\n return this;\n } // set uniform\n\n\n var existedBinding = this.compiledBundle.context.uniforms.find(function (b) {\n return b.name === name;\n });\n\n if (existedBinding) {\n // update uniform or buffer\n if (isNumberLikeData) {\n // @ts-ignore\n existedBinding.data = data;\n existedBinding.isReferer = false;\n\n if (existedBinding.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].Uniform) {\n if (this.model) {\n // @ts-ignore\n this.model.updateUniform(name, data);\n }\n } else {\n if (this.model) {\n // @ts-ignore\n this.model.updateBuffer(name, data);\n }\n }\n } else {\n // update with another kernel\n existedBinding.isReferer = true; // @ts-ignore\n\n existedBinding.data = data;\n }\n }\n }\n } else {\n Object.keys(name).forEach(function (key) {\n _this.setBinding(key, name[key]);\n });\n }\n\n return this;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this2 = this;\n\n var iteration,\n i,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n iteration = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;\n\n if (!this.dirty) {\n _context.next = 6;\n break;\n }\n\n if (this.compiledBundle.context) {\n if (iteration > 1) {\n this.compiledBundle.context.maxIteration = iteration;\n } else {\n this.compiledBundle.context.maxIteration++;\n }\n }\n\n _context.next = 5;\n return this.compile();\n\n case 5:\n this.dirty = false;\n\n case 6:\n this.engine.beginFrame(); // 首先开启当前 frame 的 compute pass\n\n this.engine.clear({});\n\n if (this.compiledBundle.context) {\n this.compiledBundle.context.uniforms.filter(function (_ref) {\n var isReferer = _ref.isReferer;\n return isReferer;\n }).forEach(function (_ref2) {\n var data = _ref2.data,\n name = _ref2.name;\n\n // @ts-ignore\n _this2.model.confirmInput(data.model, name);\n });\n }\n\n for (i = 0; i < iteration; i++) {\n this.model.run();\n }\n\n this.engine.endFrame();\n return _context.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n /**\n * read output from GPUBuffer\n */\n\n }, {\n key: \"getOutput\",\n value: function () {\n var _getOutput = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.model.readData());\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getOutput() {\n return _getOutput.apply(this, arguments);\n }\n\n return getOutput;\n }()\n }, {\n key: \"compile\",\n value: function () {\n var _compile = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var context, target, shader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.initPromise;\n\n case 2:\n context = _objectSpread({}, this.compiledBundle.context);\n target = this.engine.supportWebGPU ? this.engine.useWGSL ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].WGSL : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL450 : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL100;\n shader = this.compiledBundle.shaders[target]; // this.bindings?.forEach(({ name, data }) => {\n // if (name === name.toUpperCase()) {\n // const define = context.defines.find((d) => d.name === name);\n // if (define) {\n // // @ts-ignore\n // define.value = data;\n // }\n // }\n // });\n // 生成运行时 define\n\n context.defines.filter(function (define) {\n return define.runtime;\n }).forEach(function (define) {\n var valuePlaceHolder = \"\".concat(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"DefineValuePlaceholder\"]).concat(define.name);\n shader = shader.replace(valuePlaceHolder, \"\".concat(define.value));\n });\n context.shader = shader; // 添加 uniform 绑定的数据\n\n context.uniforms.forEach(function (uniform) {\n // const binding = this.bindings.find((b) => b.name === uniform.name);\n // if (binding) {\n // // @ts-ignore\n // uniform.data = binding.referer || binding.data;\n // // @ts-ignore\n // uniform.isReferer = !!binding.referer;\n // }\n // 未指定数据,尝试根据 uniform 类型初始化\n if (!uniform.data) {\n if (uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].StorageBuffer) {\n var sizePerElement = 1;\n\n if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].FloatArray) {\n sizePerElement = 1;\n } else if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n sizePerElement = 4;\n }\n\n uniform.data = new Float32Array(context.output.length * sizePerElement).fill(0);\n }\n }\n }); // } else if (uniform.type === 'image2D') {\n // // @ts-ignore\n // buffer.data = new Uint8ClampedArray(context.output.length!).fill(0);\n // }\n\n this.compiledBundle.context = context;\n _context3.next = 11;\n return this.engine.createComputeModel(this.compiledBundle.context);\n\n case 11:\n this.model = _context3.sent;\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compile() {\n return _compile.apply(this, arguments);\n }\n\n return compile;\n }()\n }]);\n\n return Kernel;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Kernel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL0tlcm5lbC5qcz8wMzMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ0o7QUFDc0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXJaOztBQUUvRDtBQUNqQjtBQUNEO0FBQ1A7QUFDTTtBQUNRO0FBQzlDLHFCQUFxQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVUsd0JBQXdCLHlEQUFNLENBQUMsOERBQVU7QUFDNUc7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLGtCQUFrQix3RUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLG1FQUFZO0FBQ3RDLHlCQUF5QiwwRUFBNkI7QUFDdEQ7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixrRUFBUSxVQUFVLDBFQUFZLFVBQVUsZ0VBQU87O0FBRTlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELGlFQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHlDQUF5Qzs7QUFFekMsb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUEsMkJBQTJCLGVBQWU7QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUMxRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEM7QUFDMUMsMkVBQTJFLDBEQUFNLFFBQVEsMERBQU0sV0FBVywwREFBTTtBQUNoSCw2REFBNkQsNkJBQTZCLGFBQWE7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixtREFBbUQsMEVBQXNCO0FBQ3pFO0FBQ0EsaUJBQWlCO0FBQ2pCLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsaUVBQWE7QUFDOUQ7O0FBRUEsMkNBQTJDLG1FQUFlO0FBQzFEO0FBQ0EsdUJBQXVCLDJCQUEyQixtRUFBZTtBQUNqRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixFQUFFLEtBQUs7QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvS2VybmVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBBU1RfVE9LRU5fVFlQRVMsIGNyZWF0ZUVudGl0eSwgRGVmaW5lVmFsdWVQbGFjZWhvbGRlciwgSURFTlRJRklFUiwgU1RPUkFHRV9DTEFTUywgVGFyZ2V0IH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7IC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zdWJtb2R1bGUtaW1wb3J0c1xuXG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgY3JlYXRlQ2FudmFzIH0gZnJvbSAnLi91dGlscy9jYW52YXMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi91dGlscy9pcy1hcnJheSc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vdXRpbHMvaXMtbnVtYmVyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4vdXRpbHMvaXMtdHlwZWRhcnJheSc7XG5leHBvcnQgdmFyIEtlcm5lbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuQ29uZmlnU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBLZXJuZWwoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEtlcm5lbCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImNvbmZpZ1NlcnZpY2VcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIHRoaXMuZW50aXR5ID0gY3JlYXRlRW50aXR5KCk7XG4gICAgdGhpcy5tb2RlbCA9IHZvaWQgMDtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICB0aGlzLmNvbXBpbGVkQnVuZGxlID0gdm9pZCAwO1xuICAgIHRoaXMuaW5pdFByb21pc2UgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoS2VybmVsLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnU2VydmljZSRnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldCgpLFxuICAgICAgICAgIGNhbnZhcyA9IF90aGlzJGNvbmZpZ1NlcnZpY2UkZy5jYW52YXMsXG4gICAgICAgICAgZW5naW5lT3B0aW9ucyA9IF90aGlzJGNvbmZpZ1NlcnZpY2UkZy5lbmdpbmVPcHRpb25zO1xuXG4gICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5lbmdpbmUuaW5pdChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY2FudmFzOiBjYW52YXMgfHwgY3JlYXRlQ2FudmFzKCksXG4gICAgICAgIHN3YXBDaGFpbkZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgYW50aWFsaWFzaW5nOiBmYWxzZVxuICAgICAgfSwgZW5naW5lT3B0aW9ucykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRCdW5kbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QnVuZGxlKGJ1bmRsZSkge1xuICAgICAgLy8gZGVlcCBjbG9uZVxuICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYnVuZGxlKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERpc3BhdGNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERpc3BhdGNoKGRpc3BhdGNoKSB7XG4gICAgICBpZiAodGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KSB7XG4gICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWF4SXRlcmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE1heEl0ZXJhdGlvbihtYXhJdGVyYXRpb24pIHtcbiAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0Lm1heEl0ZXJhdGlvbiA9IG1heEl0ZXJhdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEJpbmRpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QmluZGluZyhuYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciBpc051bWJlckxpa2VEYXRhID0gaXNOdW1iZXIoZGF0YSkgfHwgaXNUeXBlZEFycmF5KGRhdGEpIHx8IGlzQXJyYXkoZGF0YSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUgJiYgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KSB7XG4gICAgICAgICAgLy8gc2V0IGRlZmluZSwgZWcuIHNldEJpbmRpbmcoJ01BWF9MRU5HVEgnLCAxMClcbiAgICAgICAgICB2YXIgZXhpc3RlZERlZmluZSA9IHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5kZWZpbmVzLmZpbmQoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLm5hbWUgPT09IG5hbWU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RlZERlZmluZSkge1xuICAgICAgICAgICAgZXhpc3RlZERlZmluZS52YWx1ZSA9IGRhdGE7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9IC8vIHNldCB1bmlmb3JtXG5cblxuICAgICAgICAgIHZhciBleGlzdGVkQmluZGluZyA9IHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC51bmlmb3Jtcy5maW5kKGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5uYW1lID09PSBuYW1lO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGV4aXN0ZWRCaW5kaW5nKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgdW5pZm9ybSBvciBidWZmZXJcbiAgICAgICAgICAgIGlmIChpc051bWJlckxpa2VEYXRhKSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZXhpc3RlZEJpbmRpbmcuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgIGV4aXN0ZWRCaW5kaW5nLmlzUmVmZXJlciA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIGlmIChleGlzdGVkQmluZGluZy5zdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuVW5pZm9ybSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVwZGF0ZVVuaWZvcm0obmFtZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVwZGF0ZUJ1ZmZlcihuYW1lLCBkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIHVwZGF0ZSB3aXRoIGFub3RoZXIga2VybmVsXG4gICAgICAgICAgICAgIGV4aXN0ZWRCaW5kaW5nLmlzUmVmZXJlciA9IHRydWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICBleGlzdGVkQmluZGluZy5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG5hbWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIF90aGlzLnNldEJpbmRpbmcoa2V5LCBuYW1lW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4ZWN1dGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9leGVjdXRlID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGl0ZXJhdGlvbixcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBfYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpdGVyYXRpb24gPSBfYXJncy5sZW5ndGggPiAwICYmIF9hcmdzWzBdICE9PSB1bmRlZmluZWQgPyBfYXJnc1swXSA6IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0Lm1heEl0ZXJhdGlvbiA9IGl0ZXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5tYXhJdGVyYXRpb24rKztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpOyAvLyDpppblhYjlvIDlkK/lvZPliY0gZnJhbWUg55qEIGNvbXB1dGUgcGFzc1xuXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuY2xlYXIoe30pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0LnVuaWZvcm1zLmZpbHRlcihmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXNSZWZlcmVyID0gX3JlZi5pc1JlZmVyZXI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1JlZmVyZXI7XG4gICAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWYyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gX3JlZjIubmFtZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIF90aGlzMi5tb2RlbC5jb25maXJtSW5wdXQoZGF0YS5tb2RlbCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaXRlcmF0aW9uOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwucnVuKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuZW5kRnJhbWUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgICAvKipcbiAgICAgKiByZWFkIG91dHB1dCBmcm9tIEdQVUJ1ZmZlclxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0T3V0cHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZ2V0T3V0cHV0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMubW9kZWwucmVhZERhdGEoKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE91dHB1dCgpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRPdXRwdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldE91dHB1dDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29tcGlsZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICB2YXIgY29udGV4dCwgdGFyZ2V0LCBzaGFkZXI7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0UHJvbWlzZTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgY29udGV4dCA9IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5lbmdpbmUuc3VwcG9ydFdlYkdQVSA/IHRoaXMuZW5naW5lLnVzZVdHU0wgPyBUYXJnZXQuV0dTTCA6IFRhcmdldC5HTFNMNDUwIDogVGFyZ2V0LkdMU0wxMDA7XG4gICAgICAgICAgICAgICAgc2hhZGVyID0gdGhpcy5jb21waWxlZEJ1bmRsZS5zaGFkZXJzW3RhcmdldF07IC8vIHRoaXMuYmluZGluZ3M/LmZvckVhY2goKHsgbmFtZSwgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gICBpZiAobmFtZSA9PT0gbmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGNvbnN0IGRlZmluZSA9IGNvbnRleHQuZGVmaW5lcy5maW5kKChkKSA9PiBkLm5hbWUgPT09IG5hbWUpO1xuICAgICAgICAgICAgICAgIC8vICAgICBpZiAoZGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC8vICAgICAgIGRlZmluZS52YWx1ZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDov5DooYzml7YgZGVmaW5lXG5cbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmluZXMuZmlsdGVyKGZ1bmN0aW9uIChkZWZpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmUucnVudGltZTtcbiAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChkZWZpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZVBsYWNlSG9sZGVyID0gXCJcIi5jb25jYXQoRGVmaW5lVmFsdWVQbGFjZWhvbGRlcikuY29uY2F0KGRlZmluZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgIHNoYWRlciA9IHNoYWRlci5yZXBsYWNlKHZhbHVlUGxhY2VIb2xkZXIsIFwiXCIuY29uY2F0KGRlZmluZS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuc2hhZGVyID0gc2hhZGVyOyAvLyDmt7vliqAgdW5pZm9ybSDnu5HlrprnmoTmlbDmja5cblxuICAgICAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybXMuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybSkge1xuICAgICAgICAgICAgICAgICAgLy8gY29uc3QgYmluZGluZyA9IHRoaXMuYmluZGluZ3MuZmluZCgoYikgPT4gYi5uYW1lID09PSB1bmlmb3JtLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgLy8gaWYgKGJpbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgIC8vICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgLy8gICB1bmlmb3JtLmRhdGEgPSBiaW5kaW5nLnJlZmVyZXIgfHwgYmluZGluZy5kYXRhO1xuICAgICAgICAgICAgICAgICAgLy8gICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAvLyAgIHVuaWZvcm0uaXNSZWZlcmVyID0gISFiaW5kaW5nLnJlZmVyZXI7XG4gICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAvLyDmnKrmjIflrprmlbDmja7vvIzlsJ3or5XmoLnmja4gdW5pZm9ybSDnsbvlnovliJ3lp4vljJZcbiAgICAgICAgICAgICAgICAgIGlmICghdW5pZm9ybS5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtLnN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5TdG9yYWdlQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHNpemVQZXJFbGVtZW50ID0gMTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtLnR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5GbG9hdEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplUGVyRWxlbWVudCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1bmlmb3JtLnR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5WZWN0b3I0RmxvYXRBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVBlckVsZW1lbnQgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm0uZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoY29udGV4dC5vdXRwdXQubGVuZ3RoICogc2l6ZVBlckVsZW1lbnQpLmZpbGwoMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTsgLy8gfSBlbHNlIGlmICh1bmlmb3JtLnR5cGUgPT09ICdpbWFnZTJEJykge1xuICAgICAgICAgICAgICAgIC8vICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC8vICAgYnVmZmVyLmRhdGEgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoY29udGV4dC5vdXRwdXQubGVuZ3RoISkuZmlsbCgwKTtcbiAgICAgICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLmNyZWF0ZUNvbXB1dGVNb2RlbCh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IF9jb250ZXh0My5zZW50O1xuXG4gICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY29tcGlsZSgpIHtcbiAgICAgICAgcmV0dXJuIF9jb21waWxlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21waWxlO1xuICAgIH0oKVxuICB9XSk7XG5cbiAgcmV0dXJuIEtlcm5lbDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJjb25maWdTZXJ2aWNlXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1LZXJuZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js ***! \**************************************************************************/ /*! exports provided: Renderer */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n/* babel-plugin-inline-import './material/shaders/map.frag.declaration.glsl' */\nvar mapFragDeclaration = \"#ifdef USE_MAP\\n uniform sampler2D map;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/map.frag.main.glsl' */\nvar mapFragMain = \"#ifdef USE_MAP\\n vec4 texelColor = texture2D(map, vUv);\\n // texelColor = mapTexelToLinear(texelColor);\\n diffuseColor *= texelColor;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.frag.declaration.glsl' */\nvar uvFragDeclaration = \"#if (defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ))\\n varying vec2 vUv;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.declaration.glsl' */\nvar uvVertDeclaration = \"#ifdef USE_UV\\n attribute vec2 uv;\\n\\t#ifdef UVS_VERTEX_ONLY\\n vec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.main.glsl' */\nvar uvVertMain = \"#ifdef USE_UV\\n vUv = (uvTransform * vec3(uv, 1)).xy;\\n#endif\";\nvar Renderer = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ShaderModuleService), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Renderer() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Renderer);\n\n this.container = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"shaderModule\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n this.inited = false;\n this.rendering = false;\n this.pendings = [];\n this.views = [];\n this.size = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Renderer, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var systems, config, _iterator, _step, system;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // 模块化处理\n this.shaderModule.registerBuiltinModules();\n this.shaderModule.registerModule('uv.vert.declaration', {\n vs: uvVertDeclaration\n });\n this.shaderModule.registerModule('uv.vert.main', {\n vs: uvVertMain\n });\n this.shaderModule.registerModule('uv.frag.declaration', {\n fs: uvFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.declaration', {\n fs: mapFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.main', {\n fs: mapFragMain\n });\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n config = this.configService.get();\n\n if (!config.canvas) {\n _context.next = 30;\n break;\n }\n\n _context.next = 11;\n return this.engine.init({\n canvas: config.canvas,\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n });\n\n case 11:\n _iterator = _createForOfIteratorHelper(systems);\n _context.prev = 12;\n\n _iterator.s();\n\n case 14:\n if ((_step = _iterator.n()).done) {\n _context.next = 21;\n break;\n }\n\n system = _step.value;\n\n if (!system.initialize) {\n _context.next = 19;\n break;\n }\n\n _context.next = 19;\n return system.initialize();\n\n case 19:\n _context.next = 14;\n break;\n\n case 21:\n _context.next = 26;\n break;\n\n case 23:\n _context.prev = 23;\n _context.t0 = _context[\"catch\"](12);\n\n _iterator.e(_context.t0);\n\n case 26:\n _context.prev = 26;\n\n _iterator.f();\n\n return _context.finish(26);\n\n case 29:\n this.inited = true;\n\n case 30:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[12, 23, 26, 29]]);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"render\",\n value: function () {\n var _render = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var systems,\n _len,\n views,\n _key,\n _iterator2,\n _step2,\n system,\n _args2 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!this.inited || this.rendering)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n if (this.pendings.length) {\n this.pendings.forEach(function (pending) {\n pending();\n });\n }\n\n this.rendering = true;\n this.engine.beginFrame();\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n\n for (_len = _args2.length, views = new Array(_len), _key = 0; _key < _len; _key++) {\n views[_key] = _args2[_key];\n }\n\n _iterator2 = _createForOfIteratorHelper(systems);\n _context2.prev = 8;\n\n _iterator2.s();\n\n case 10:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 17;\n break;\n }\n\n system = _step2.value;\n\n if (!system.execute) {\n _context2.next = 15;\n break;\n }\n\n _context2.next = 15;\n return system.execute(views);\n\n case 15:\n _context2.next = 10;\n break;\n\n case 17:\n _context2.next = 22;\n break;\n\n case 19:\n _context2.prev = 19;\n _context2.t0 = _context2[\"catch\"](8);\n\n _iterator2.e(_context2.t0);\n\n case 22:\n _context2.prev = 22;\n\n _iterator2.f();\n\n return _context2.finish(22);\n\n case 25:\n // 录制一遍绘制命令,后续直接播放\n // if (this.useRenderBundle) {\n // if (!this.renderBundleRecorded) {\n // this.engine.startRecordBundle();\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // this.renderBundle = this.engine.stopRecordBundle();\n // this.renderBundleRecorded = true;\n // }\n // this.engine.executeBundles([this.renderBundle]);\n // } else {\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // }\n this.engine.endFrame();\n this.rendering = false;\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 19, 22, 25]]);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"clear\",\n value: function clear(options) {\n var _this = this;\n\n if (this.inited) {\n this.engine.clear(options);\n } else {\n this.pendings.unshift(function () {\n _this.engine.clear(options);\n\n _this.pendings.shift();\n });\n }\n\n return this;\n } // public setScissor(\n // scissor: Partial<{\n // enable: boolean;\n // box: {\n // x: number;\n // y: number;\n // width: number;\n // height: number;\n // };\n // }>,\n // ) {\n // this.engine.setScissor(scissor);\n // return this;\n // }\n\n }, {\n key: \"setSize\",\n value: function setSize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n var canvas = this.engine.getCanvas();\n this.size = {\n width: width,\n height: height\n };\n canvas.width = width;\n canvas.height = height;\n return this;\n }\n }, {\n key: \"getSize\",\n value: function getSize() {\n return this.size;\n }\n }]);\n\n return Renderer;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"shaderModule\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1JlbmRlcmVyLmpzPzZmM2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFcEk7O0FBRWU7QUFDakI7O0FBRS9DO0FBQ0Esa0VBQWtFOztBQUVsRTtBQUNBLDJFQUEyRSxpREFBaUQsK0JBQStCOztBQUUzSjtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQSw0REFBNEQseUNBQXlDLGdDQUFnQyx1Q0FBdUM7O0FBRTVLO0FBQ0Esd0VBQXdFO0FBQ2pFLHVCQUF1Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsOERBQVUsd0JBQXdCLHdEQUFNLENBQUMsOERBQVUsK0JBQStCLHdEQUFNLENBQUMsOERBQVU7QUFDOUo7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjs7QUFFQSxJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsZ0RBQWdELDhEQUFVO0FBQzFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywwRUFBNkI7QUFDaEU7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBLGdEQUFnRCw4REFBVTs7QUFFMUQsNkVBQTZFLGFBQWE7QUFDMUY7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1JlbmRlcmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdDsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgb1tTeW1ib2wuaXRlcmF0b3JdID09IG51bGwpIHsgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgeyBpZiAoaXQpIG8gPSBpdDsgdmFyIGkgPSAwOyB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7IGRvbmU6IHRydWUgfTsgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBvW2krK10gfTsgfSwgZTogZnVuY3Rpb24gZShfZSkgeyB0aHJvdyBfZTsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfSB2YXIgbm9ybWFsQ29tcGxldGlvbiA9IHRydWUsIGRpZEVyciA9IGZhbHNlLCBlcnI7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IGl0ID0gb1tTeW1ib2wuaXRlcmF0b3JdKCk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXQucmV0dXJuICE9IG51bGwpIGl0LnJldHVybigpOyB9IGZpbmFsbHkgeyBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7IH0gfSB9OyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc3VibW9kdWxlLWltcG9ydHNcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vbWF0ZXJpYWwvc2hhZGVycy9tYXAuZnJhZy5kZWNsYXJhdGlvbi5nbHNsJyAqL1xudmFyIG1hcEZyYWdEZWNsYXJhdGlvbiA9IFwiI2lmZGVmIFVTRV9NQVBcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcXG4jZW5kaWZcIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vbWF0ZXJpYWwvc2hhZGVycy9tYXAuZnJhZy5tYWluLmdsc2wnICovXG52YXIgbWFwRnJhZ01haW4gPSBcIiNpZmRlZiBVU0VfTUFQXFxuICB2ZWM0IHRleGVsQ29sb3IgPSB0ZXh0dXJlMkQobWFwLCB2VXYpO1xcbiAgLy8gdGV4ZWxDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIodGV4ZWxDb2xvcik7XFxuICBkaWZmdXNlQ29sb3IgKj0gdGV4ZWxDb2xvcjtcXG4jZW5kaWZcIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vbWF0ZXJpYWwvc2hhZGVycy91di5mcmFnLmRlY2xhcmF0aW9uLmdsc2wnICovXG52YXIgdXZGcmFnRGVjbGFyYXRpb24gPSBcIiNpZiAoZGVmaW5lZCggVVNFX1VWICkgJiYgISBkZWZpbmVkKCBVVlNfVkVSVEVYX09OTFkgKSlcXG4gIHZhcnlpbmcgdmVjMiB2VXY7XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvdXYudmVydC5kZWNsYXJhdGlvbi5nbHNsJyAqL1xudmFyIHV2VmVydERlY2xhcmF0aW9uID0gXCIjaWZkZWYgVVNFX1VWXFxuICBhdHRyaWJ1dGUgdmVjMiB1djtcXG5cXHQjaWZkZWYgVVZTX1ZFUlRFWF9PTkxZXFxuICAgIHZlYzIgdlV2O1xcblxcdCNlbHNlXFxuXFx0XFx0dmFyeWluZyB2ZWMyIHZVdjtcXG5cXHQjZW5kaWZcXG5cXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvdXYudmVydC5tYWluLmdsc2wnICovXG52YXIgdXZWZXJ0TWFpbiA9IFwiI2lmZGVmIFVTRV9VVlxcbiAgdlV2ID0gKHV2VHJhbnNmb3JtICogdmVjMyh1diwgMSkpLnh5O1xcbiNlbmRpZlwiO1xuZXhwb3J0IHZhciBSZW5kZXJlciA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuQ29uZmlnU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyZXIpO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSB2b2lkIDA7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNoYWRlck1vZHVsZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjb25maWdTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICB0aGlzLmluaXRlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVuZGVyaW5nID0gZmFsc2U7XG4gICAgdGhpcy5wZW5kaW5ncyA9IFtdO1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICB0aGlzLnNpemUgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVuZGVyZXIsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIHN5c3RlbXMsIGNvbmZpZywgX2l0ZXJhdG9yLCBfc3RlcCwgc3lzdGVtO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8g5qih5Z2X5YyW5aSE55CGXG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJCdWlsdGluTW9kdWxlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCd1di52ZXJ0LmRlY2xhcmF0aW9uJywge1xuICAgICAgICAgICAgICAgICAgdnM6IHV2VmVydERlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ3V2LnZlcnQubWFpbicsIHtcbiAgICAgICAgICAgICAgICAgIHZzOiB1dlZlcnRNYWluXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ3V2LmZyYWcuZGVjbGFyYXRpb24nLCB7XG4gICAgICAgICAgICAgICAgICBmczogdXZGcmFnRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYWRlck1vZHVsZS5yZWdpc3Rlck1vZHVsZSgnbWFwLmZyYWcuZGVjbGFyYXRpb24nLCB7XG4gICAgICAgICAgICAgICAgICBmczogbWFwRnJhZ0RlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ21hcC5mcmFnLm1haW4nLCB7XG4gICAgICAgICAgICAgICAgICBmczogbWFwRnJhZ01haW5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzeXN0ZW1zID0gdGhpcy5jb250YWluZXIuZ2V0QWxsKElERU5USUZJRVIuU3lzdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFjb25maWcuY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMzA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLmluaXQoe1xuICAgICAgICAgICAgICAgICAgY2FudmFzOiBjb25maWcuY2FudmFzLFxuICAgICAgICAgICAgICAgICAgc3dhcENoYWluRm9ybWF0OiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZUZvcm1hdC5CR1JBOFVub3JtLFxuICAgICAgICAgICAgICAgICAgYW50aWFsaWFzaW5nOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc3lzdGVtcyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDEyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjE7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzeXN0ZW0gPSBfc3RlcC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghc3lzdGVtLmluaXRpYWxpemUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxOTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxOTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3lzdGVtLmluaXRpYWxpemUoKTtcblxuICAgICAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNDtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNjtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyMztcbiAgICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0W1wiY2F0Y2hcIl0oMTIpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoX2NvbnRleHQudDApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDI2O1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMjYpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcywgW1sxMiwgMjMsIDI2LCAyOV1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlbmRlciA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkge1xuICAgICAgICB2YXIgc3lzdGVtcyxcbiAgICAgICAgICAgIF9sZW4sXG4gICAgICAgICAgICB2aWV3cyxcbiAgICAgICAgICAgIF9rZXksXG4gICAgICAgICAgICBfaXRlcmF0b3IyLFxuICAgICAgICAgICAgX3N0ZXAyLFxuICAgICAgICAgICAgc3lzdGVtLFxuICAgICAgICAgICAgX2FyZ3MyID0gYXJndW1lbnRzO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghKCF0aGlzLmluaXRlZCB8fCB0aGlzLnJlbmRlcmluZykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wZW5kaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ3MuZm9yRWFjaChmdW5jdGlvbiAocGVuZGluZykge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHN5c3RlbXMgPSB0aGlzLmNvbnRhaW5lci5nZXRBbGwoSURFTlRJRklFUi5TeXN0ZW1zKTtcblxuICAgICAgICAgICAgICAgIGZvciAoX2xlbiA9IF9hcmdzMi5sZW5ndGgsIHZpZXdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgICAgICAgICAgdmlld3NbX2tleV0gPSBfYXJnczJbX2tleV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHN5c3RlbXMpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gODtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIucygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgaWYgKChfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN5c3RlbSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghc3lzdGVtLmV4ZWN1dGUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTU7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1O1xuICAgICAgICAgICAgICAgIHJldHVybiBzeXN0ZW0uZXhlY3V0ZSh2aWV3cyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMjtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyW1wiY2F0Y2hcIl0oOCk7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoX2NvbnRleHQyLnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMjI7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDIyKTtcblxuICAgICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgIC8vIOW9leWItuS4gOmBjee7mOWItuWRveS7pO+8jOWQjue7reebtOaOpeaSreaUvlxuICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnVzZVJlbmRlckJ1bmRsZSkge1xuICAgICAgICAgICAgICAgIC8vICAgaWYgKCF0aGlzLnJlbmRlckJ1bmRsZVJlY29yZGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZW5naW5lLnN0YXJ0UmVjb3JkQnVuZGxlKCk7XG4gICAgICAgICAgICAgICAgLy8gICAgIGlmICh0aGlzLm9uVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgYXdhaXQgdGhpcy5vblVwZGF0ZSh0aGlzLmVuZ2luZSk7XG4gICAgICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yZW5kZXJCdW5kbGUgPSB0aGlzLmVuZ2luZS5zdG9wUmVjb3JkQnVuZGxlKCk7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucmVuZGVyQnVuZGxlUmVjb3JkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5lbmdpbmUuZXhlY3V0ZUJ1bmRsZXMoW3RoaXMucmVuZGVyQnVuZGxlXSk7XG4gICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAgIGlmICh0aGlzLm9uVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGF3YWl0IHRoaXMub25VcGRhdGUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZS5lbmRGcmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbOCwgMTksIDIyLCAyNV1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gX3JlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVuZGVyO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKG9wdGlvbnMpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmluaXRlZCkge1xuICAgICAgICB0aGlzLmVuZ2luZS5jbGVhcihvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVuZGluZ3MudW5zaGlmdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKG9wdGlvbnMpO1xuXG4gICAgICAgICAgX3RoaXMucGVuZGluZ3Muc2hpZnQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8gcHVibGljIHNldFNjaXNzb3IoXG4gICAgLy8gICBzY2lzc29yOiBQYXJ0aWFsPHtcbiAgICAvLyAgICAgZW5hYmxlOiBib29sZWFuO1xuICAgIC8vICAgICBib3g6IHtcbiAgICAvLyAgICAgICB4OiBudW1iZXI7XG4gICAgLy8gICAgICAgeTogbnVtYmVyO1xuICAgIC8vICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgLy8gICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgLy8gICAgIH07XG4gICAgLy8gICB9PixcbiAgICAvLyApIHtcbiAgICAvLyAgIHRoaXMuZW5naW5lLnNldFNjaXNzb3Ioc2Npc3Nvcik7XG4gICAgLy8gICByZXR1cm4gdGhpcztcbiAgICAvLyB9XG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRTaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcbiAgICAgIHZhciBjYW52YXMgPSB0aGlzLmVuZ2luZS5nZXRDYW52YXMoKTtcbiAgICAgIHRoaXMuc2l6ZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRTaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZW5kZXJlcjtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJzaGFkZXJNb2R1bGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY29uZmlnU2VydmljZVwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVuZGVyZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js ***! \***********************************************************************/ /*! exports provided: Scene */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scene\", function() { return Scene; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar Scene = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function Scene() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Scene);\n\n this.entities = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Scene, [{\n key: \"getEntities\",\n value: function getEntities() {\n return this.entities;\n }\n }, {\n key: \"addRenderable\",\n value: function addRenderable(renderable) {\n this.addEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"removeRenderable\",\n value: function removeRenderable(renderable) {\n this.removeEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"addLight\",\n value: function addLight() {}\n }, {\n key: \"addEntity\",\n value: function addEntity(entity) {\n if (this.entities.indexOf(entity) === -1) {\n this.entities.push(entity);\n }\n\n return this;\n }\n }, {\n key: \"removeEntity\",\n value: function removeEntity(entity) {\n var index = this.entities.indexOf(entity);\n this.entities.splice(index, 1);\n return this;\n }\n }]);\n\n return Scene;\n}(), _temp)) || _class);\n//# sourceMappingURL=Scene.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1NjZW5lLmpzPzQ5ZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDs7QUFFdUM7QUFDaEMsb0JBQW9CLDREQUFVO0FBQ3JDO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1NjZW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFNjZW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NlbmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNjZW5lKTtcblxuICAgIHRoaXMuZW50aXRpZXMgPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTY2VuZSwgW3tcbiAgICBrZXk6IFwiZ2V0RW50aXRpZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXRpZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdGllcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkUmVuZGVyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRSZW5kZXJhYmxlKHJlbmRlcmFibGUpIHtcbiAgICAgIHRoaXMuYWRkRW50aXR5KHJlbmRlcmFibGUuZ2V0RW50aXR5KCkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVJlbmRlcmFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlUmVuZGVyYWJsZShyZW5kZXJhYmxlKSB7XG4gICAgICB0aGlzLnJlbW92ZUVudGl0eShyZW5kZXJhYmxlLmdldEVudGl0eSgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRMaWdodFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRMaWdodCgpIHt9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkRW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZEVudGl0eShlbnRpdHkpIHtcbiAgICAgIGlmICh0aGlzLmVudGl0aWVzLmluZGV4T2YoZW50aXR5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKGVudGl0eSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW1vdmVFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlRW50aXR5KGVudGl0eSkge1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5lbnRpdGllcy5pbmRleE9mKGVudGl0eSk7XG4gICAgICB0aGlzLmVudGl0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2NlbmU7XG59KCksIF90ZW1wKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjZW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js ***! \**********************************************************************/ /*! exports provided: View */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return View; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _temp;\n\n\n\nvar View = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].RendererSystem), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function View() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, View);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"rendererSystem\", _descriptor, this);\n\n this.camera = void 0;\n this.scene = void 0;\n this.viewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.clearColor = [1, 1, 1, 1];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(View, [{\n key: \"getCamera\",\n value: function getCamera() {\n return this.camera;\n }\n }, {\n key: \"getScene\",\n value: function getScene() {\n return this.scene;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n return this.viewport;\n }\n }, {\n key: \"getClearColor\",\n value: function getClearColor() {\n return this.clearColor;\n }\n }, {\n key: \"setCamera\",\n value: function setCamera(camera) {\n this.camera = camera;\n return this;\n }\n }, {\n key: \"setScene\",\n value: function setScene(scene) {\n this.scene = scene;\n return this;\n }\n }, {\n key: \"setViewport\",\n value: function setViewport(viewport) {\n this.viewport = viewport;\n return this;\n }\n }, {\n key: \"setClearColor\",\n value: function setClearColor(clearColor) {\n this.clearColor = clearColor;\n return this;\n }\n }, {\n key: \"pick\",\n value: function pick(position) {\n return this.rendererSystem.pick(position, this);\n }\n }]);\n\n return View;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"rendererSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=View.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1ZpZXcuanM/NGM1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFaUQ7QUFDSztBQUMvQyxtQkFBbUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVLG1CQUFtQix1REFBSyxDQUFDLDhEQUFVO0FBQ3BHO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvVmlldy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFZpZXcgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzMgPSBuYW1lZChJREVOVElGSUVSLlJlbmRlcmVyU3lzdGVtKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpZXcoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZpZXcpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZW5kZXJlclN5c3RlbVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLmNhbWVyYSA9IHZvaWQgMDtcbiAgICB0aGlzLnNjZW5lID0gdm9pZCAwO1xuICAgIHRoaXMudmlld3BvcnQgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB0aGlzLmNsZWFyQ29sb3IgPSBbMSwgMSwgMSwgMV07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlldywgW3tcbiAgICBrZXk6IFwiZ2V0Q2FtZXJhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhbWVyYSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbWVyYTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2NlbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2NlbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zY2VuZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Vmlld3BvcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Vmlld3BvcnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3cG9ydDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q2xlYXJDb2xvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDbGVhckNvbG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2xlYXJDb2xvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q2FtZXJhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENhbWVyYShjYW1lcmEpIHtcbiAgICAgIHRoaXMuY2FtZXJhID0gY2FtZXJhO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFNjZW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNjZW5lKHNjZW5lKSB7XG4gICAgICB0aGlzLnNjZW5lID0gc2NlbmU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vmlld3BvcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vmlld3BvcnQodmlld3BvcnQpIHtcbiAgICAgIHRoaXMudmlld3BvcnQgPSB2aWV3cG9ydDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDbGVhckNvbG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENsZWFyQ29sb3IoY2xlYXJDb2xvcikge1xuICAgICAgdGhpcy5jbGVhckNvbG9yID0gY2xlYXJDb2xvcjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwaWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBpY2socG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyU3lzdGVtLnBpY2socG9zaXRpb24sIHRoaXMpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBWaWV3O1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVuZGVyZXJTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1WaWV3LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js ***! \***********************************************************************/ /*! exports provided: World */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return World; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-engine */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./geometry */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _geometry_Box__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./geometry/Box */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js\");\n/* harmony import */ var _geometry_Merged__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./geometry/Merged */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js\");\n/* harmony import */ var _geometry_Plane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./geometry/Plane */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js\");\n/* harmony import */ var _geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./geometry/Sphere */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js\");\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js\");\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./material */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\");\n/* harmony import */ var _material_basic__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./material/basic */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js\");\n/* harmony import */ var _renderable_grid__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./renderable/grid */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js\");\n/* harmony import */ var _renderable_line__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./renderable/line */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js\");\n/* harmony import */ var _renderable_point__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./renderable/point */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js\");\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony import */ var _Renderer__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./Renderer */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Scene */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js\");\n/* harmony import */ var _texture_Cache__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./texture/Cache */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js\");\n/* harmony import */ var _texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./texture/Texture2D */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js\");\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _View__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./View */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n// tslint:disable-next-line:no-reference\n/// \n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar World = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function World() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, World);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor, this);\n\n this.container = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(World, [{\n key: \"getEngine\",\n value: function () {\n var _getEngine = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var engine, _this$configService$g, canvas, engineOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n _this$configService$g = this.configService.get(), canvas = _this$configService$g.canvas, engineOptions = _this$configService$g.engineOptions;\n _context.next = 4;\n return engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_29__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n\n case 4:\n return _context.abrupt(\"return\", engine);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getEngine() {\n return _getEngine.apply(this, arguments);\n }\n\n return getEngine;\n }()\n /**\n * get transform component\n * @param entity\n */\n\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].TransformComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.configService.set(config);\n }\n }, {\n key: \"setContainer\",\n value: function setContainer(container) {\n this.container = container;\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n return this.container;\n }\n }, {\n key: \"createEntity\",\n value: function createEntity() {\n return Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n }\n }, {\n key: \"createScene\",\n value: function createScene() {\n return this.container.get(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]);\n }\n }, {\n key: \"createCamera\",\n value: function createCamera() {\n return this.container.get(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]);\n }\n }, {\n key: \"createView\",\n value: function createView() {\n return this.container.get(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]);\n } // public createLight(type: string,) {\n // return this.container.getNamed(IDENTIFIER.Light, type)\n // }\n\n }, {\n key: \"createRenderable\",\n value: function createRenderable(type, config) {\n var renderable = type ? this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable, type) : this.container.get(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n renderable.setConfig(config || {});\n renderable.setEntity(entity);\n return renderable;\n }\n }, {\n key: \"createGeometry\",\n value: function createGeometry(type, config) {\n var geometry = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n geometry.setConfig(config || {});\n geometry.setEntity(entity);\n return geometry.getComponent();\n }\n }, {\n key: \"createMaterial\",\n value: function createMaterial(type, config) {\n var material = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n material.setConfig(config || {});\n material.setEntity(entity, type);\n return material.getComponent();\n }\n }, {\n key: \"createTexture2D\",\n value: function createTexture2D(config) {\n var texture = this.container.get(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]);\n texture.setConfig(config);\n return texture;\n }\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createBufferGeometry(params);\n }\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createInstancedBufferGeometry(params);\n }\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var materialSystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MaterialSystem);\n return materialSystem.createShaderMaterial(params);\n }\n }, {\n key: \"createKernel\",\n value: function createKernel(precompiledBundle) {\n var kernel = this.container.get(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]);\n\n if (typeof precompiledBundle === 'string') {\n kernel.setBundle(JSON.parse(precompiledBundle));\n } else {\n kernel.setBundle(precompiledBundle);\n }\n\n kernel.init();\n return kernel;\n }\n }, {\n key: \"createRenderer\",\n value: function createRenderer() {\n var renderer = this.container.get(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]);\n renderer.container = this.container;\n renderer.init();\n return renderer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems);\n systems.forEach(function (system) {\n if (system.tearDown) {\n system.tearDown();\n }\n });\n var engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n engine.destroy();\n var interactor = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].InteractorService);\n interactor.destroy();\n }\n }], [{\n key: \"create\",\n value: function create() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var worldContainer = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createWorldContainer\"])(); // bind render engine, fallback to WebGL\n\n var engineClazz = !navigator.gpu ? _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGLEngine\"] : _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGPUEngine\"];\n\n if (!worldContainer.isBound(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine)) {\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine) // @ts-ignore\n .to(engineClazz).inSingletonScope();\n }\n\n worldContainer.bind(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]).toSelf();\n worldContainer.bind(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]).toSelf();\n worldContainer.bind(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]).toSelf();\n worldContainer.bind(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]).toSelf();\n worldContainer.bind(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]).toSelf();\n worldContainer.bind(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]).toSelf();\n worldContainer.bind(World).toSelf();\n worldContainer.bind(_texture_Cache__WEBPACK_IMPORTED_MODULE_27__[\"TextureCache\"]).toSelf();\n worldContainer.bind(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]).toSelf(); // bind geometries\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Box__WEBPACK_IMPORTED_MODULE_14__[\"Box\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].BOX);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__[\"Sphere\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].SPHERE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Plane__WEBPACK_IMPORTED_MODULE_16__[\"Plane\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].PLANE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Merged__WEBPACK_IMPORTED_MODULE_15__[\"Merged\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].MERGED); // bind materials\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material).to(_material_basic__WEBPACK_IMPORTED_MODULE_20__[\"Basic\"]).whenTargetNamed(_material__WEBPACK_IMPORTED_MODULE_19__[\"Material\"].BASIC); // bind renderables\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_point__WEBPACK_IMPORTED_MODULE_23__[\"Point\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].POINT);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_line__WEBPACK_IMPORTED_MODULE_22__[\"Line\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].LINE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_grid__WEBPACK_IMPORTED_MODULE_21__[\"Grid\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].GRID);\n var world = worldContainer.get(World);\n world.setContainer(worldContainer);\n world.setConfig(config);\n return world;\n }\n }]);\n\n return World;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=World.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1dvcmxkLmpzPzQ0YTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDTztBQUNJO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwaEI7QUFDQTtBQUNzRztBQUNwQzs7QUFFRjtBQUNqQjtBQUNOO0FBQ0g7QUFDRDtBQUNNO0FBQ0Y7QUFDRTtBQUNUO0FBQ0k7QUFDRztBQUNBO0FBQ0E7QUFDRTtBQUNVO0FBQ2Y7QUFDTjtBQUNlO0FBQ0M7QUFDRjtBQUNoQjtBQUN2QixvQkFBb0IsNkRBQVUsWUFBWSx5REFBTSxDQUFDLDhEQUFVO0FBQ2xFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSx1QkFBdUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzFFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qyw4REFBVTtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsbUVBQVk7QUFDaEQsbUNBQW1DLDJFQUE2QjtBQUNoRTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLDhEQUFVO0FBQ2pEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVDQUF1Qyw4REFBVTtBQUNqRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLHdFQUFhO0FBQzFCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxnQ0FBZ0MsNkNBQUs7QUFDckM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdDQUFnQyxzREFBTTtBQUN0QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLDJDQUFJO0FBQ3BDLEtBQUs7QUFDTDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0RBQXNELDhEQUFVLHdDQUF3QyxrRUFBVTs7QUFFbEgsbUJBQW1CLHdFQUFhOztBQUVoQyx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2Q0FBNkMsOERBQVU7O0FBRXZELG1CQUFtQix3RUFBYTs7QUFFaEMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNkNBQTZDLDhEQUFVOztBQUV2RCxtQkFBbUIsd0VBQWE7O0FBRWhDLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVDQUF1Qyw2REFBUztBQUNoRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4REFBVSxVQUFVLDhEQUFVO0FBQ2pGO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4REFBVSxVQUFVLDhEQUFVO0FBQ2pGO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4REFBVSxVQUFVLDhEQUFVO0FBQ2pGO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNDQUFzQywrQ0FBTTs7QUFFNUM7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esd0NBQXdDLG1EQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSwwQ0FBMEMsOERBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0NBQXNDLDhEQUFVO0FBQ2hEO0FBQ0EsMENBQTBDLDhEQUFVO0FBQ3BEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGdGQUFvQixHQUFHOztBQUVsRCx5Q0FBeUMsaUVBQVcsR0FBRyxrRUFBWTs7QUFFbkUsa0NBQWtDLDhEQUFVO0FBQzVDLDRCQUE0Qiw4REFBVTtBQUN0QztBQUNBOztBQUVBLDBCQUEwQixtREFBUTtBQUNsQywwQkFBMEIsK0NBQU07QUFDaEMsMEJBQTBCLGtFQUFVO0FBQ3BDLDBCQUEwQiwyQ0FBSTtBQUM5QiwwQkFBMEIsc0RBQU07QUFDaEMsMEJBQTBCLDZDQUFLO0FBQy9CO0FBQ0EsMEJBQTBCLDREQUFZO0FBQ3RDLDBCQUEwQiw2REFBUyxXQUFXOztBQUU5QywwQkFBMEIsOERBQVUsY0FBYyxrREFBRyxrQkFBa0IsbURBQVE7QUFDL0UsMEJBQTBCLDhEQUFVLGNBQWMsd0RBQU0sa0JBQWtCLG1EQUFRO0FBQ2xGLDBCQUEwQiw4REFBVSxjQUFjLHNEQUFLLGtCQUFrQixtREFBUTtBQUNqRiwwQkFBMEIsOERBQVUsY0FBYyx3REFBTSxrQkFBa0IsbURBQVEsU0FBUzs7QUFFM0YsMEJBQTBCLDhEQUFVLGNBQWMsc0RBQUssa0JBQWtCLG1EQUFRLFFBQVE7O0FBRXpGLDBCQUEwQiw4REFBVSxnQkFBZ0Isd0RBQUssa0JBQWtCLGtFQUFVO0FBQ3JGLDBCQUEwQiw4REFBVSxnQkFBZ0Isc0RBQUksa0JBQWtCLGtFQUFVO0FBQ3BGLDBCQUEwQiw4REFBVSxnQkFBZ0Isc0RBQUksa0JBQWtCLGtFQUFVO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9Xb3JsZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXJlZmVyZW5jZVxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2ViZ3B1L3R5cGVzL2Rpc3QvaW5kZXguZC50c1wiIC8+XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgYXMgX2NyZWF0ZUVudGl0eSwgY3JlYXRlV29ybGRDb250YWluZXIsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IFdlYkdMRW5naW5lLCBXZWJHUFVFbmdpbmUgfSBmcm9tICdAYW50di9nLXdlYmdwdS1lbmdpbmUnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc3VibW9kdWxlLWltcG9ydHNcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IENhbWVyYSB9IGZyb20gJy4vY2FtZXJhL0NhbWVyYSc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgQm94IH0gZnJvbSAnLi9nZW9tZXRyeS9Cb3gnO1xuaW1wb3J0IHsgTWVyZ2VkIH0gZnJvbSAnLi9nZW9tZXRyeS9NZXJnZWQnO1xuaW1wb3J0IHsgUGxhbmUgfSBmcm9tICcuL2dlb21ldHJ5L1BsYW5lJztcbmltcG9ydCB7IFNwaGVyZSB9IGZyb20gJy4vZ2VvbWV0cnkvU3BoZXJlJztcbmltcG9ydCB7IEtlcm5lbCB9IGZyb20gJy4vS2VybmVsJztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi9tYXRlcmlhbCc7XG5pbXBvcnQgeyBCYXNpYyB9IGZyb20gJy4vbWF0ZXJpYWwvYmFzaWMnO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gJy4vcmVuZGVyYWJsZS9ncmlkJztcbmltcG9ydCB7IExpbmUgfSBmcm9tICcuL3JlbmRlcmFibGUvbGluZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcmVuZGVyYWJsZS9wb2ludCc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi9yZW5kZXJhYmxlL1JlbmRlcmFibGUnO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuL1JlbmRlcmVyJztcbmltcG9ydCB7IFNjZW5lIH0gZnJvbSAnLi9TY2VuZSc7XG5pbXBvcnQgeyBUZXh0dXJlQ2FjaGUgfSBmcm9tICcuL3RleHR1cmUvQ2FjaGUnO1xuaW1wb3J0IHsgVGV4dHVyZTJEIH0gZnJvbSAnLi90ZXh0dXJlL1RleHR1cmUyRCc7XG5pbXBvcnQgeyBjcmVhdGVDYW52YXMgfSBmcm9tICcuL3V0aWxzL2NhbnZhcyc7XG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAnLi9WaWV3JztcbmV4cG9ydCB2YXIgV29ybGQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5Db25maWdTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdvcmxkKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXb3JsZCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImNvbmZpZ1NlcnZpY2VcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV29ybGQsIFt7XG4gICAga2V5OiBcImdldEVuZ2luZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2dldEVuZ2luZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBlbmdpbmUsIF90aGlzJGNvbmZpZ1NlcnZpY2UkZywgY2FudmFzLCBlbmdpbmVPcHRpb25zO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgZW5naW5lID0gdGhpcy5jb250YWluZXIuZ2V0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRjb25maWdTZXJ2aWNlJGcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCksIGNhbnZhcyA9IF90aGlzJGNvbmZpZ1NlcnZpY2UkZy5jYW52YXMsIGVuZ2luZU9wdGlvbnMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuZW5naW5lT3B0aW9ucztcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5naW5lLmluaXQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICAgICAgICBjYW52YXM6IGNhbnZhcyB8fCBjcmVhdGVDYW52YXMoKSxcbiAgICAgICAgICAgICAgICAgIHN3YXBDaGFpbkZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgICAgICAgICAgIGFudGlhbGlhc2luZzogZmFsc2VcbiAgICAgICAgICAgICAgICB9LCBlbmdpbmVPcHRpb25zKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgZW5naW5lKTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGdldEVuZ2luZSgpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRFbmdpbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldEVuZ2luZTtcbiAgICB9KClcbiAgICAvKipcbiAgICAgKiBnZXQgdHJhbnNmb3JtIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBlbnRpdHlcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1Db21wb25lbnQoZW50aXR5KSB7XG4gICAgICB2YXIgbWFuYWdlciA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLlRyYW5zZm9ybUNvbXBvbmVudE1hbmFnZXIpO1xuICAgICAgcmV0dXJuIG1hbmFnZXIuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0TWVzaENvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNZXNoQ29tcG9uZW50KGVudGl0eSkge1xuICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzLmNvbnRhaW5lci5nZXQoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlcik7XG4gICAgICByZXR1cm4gbWFuYWdlci5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnNldChjb25maWcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb250YWluZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29udGFpbmVyKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbnRhaW5lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb250YWluZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gX2NyZWF0ZUVudGl0eSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTY2VuZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTY2VuZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXQoU2NlbmUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVDYW1lcmFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQ2FtZXJhKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldChDYW1lcmEpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVWaWV3XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVZpZXcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0KFZpZXcpO1xuICAgIH0gLy8gcHVibGljIGNyZWF0ZUxpZ2h0KHR5cGU6IHN0cmluZywpIHtcbiAgICAvLyAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLkxpZ2h0LCB0eXBlKVxuICAgIC8vIH1cblxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVJlbmRlcmFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUmVuZGVyYWJsZSh0eXBlLCBjb25maWcpIHtcbiAgICAgIHZhciByZW5kZXJhYmxlID0gdHlwZSA/IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuUmVuZGVyYWJsZSwgdHlwZSkgOiB0aGlzLmNvbnRhaW5lci5nZXQoUmVuZGVyYWJsZSk7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBfY3JlYXRlRW50aXR5KCk7XG5cbiAgICAgIHJlbmRlcmFibGUuc2V0Q29uZmlnKGNvbmZpZyB8fCB7fSk7XG4gICAgICByZW5kZXJhYmxlLnNldEVudGl0eShlbnRpdHkpO1xuICAgICAgcmV0dXJuIHJlbmRlcmFibGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUdlb21ldHJ5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUdlb21ldHJ5KHR5cGUsIGNvbmZpZykge1xuICAgICAgdmFyIGdlb21ldHJ5ID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5HZW9tZXRyeSwgdHlwZSk7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBfY3JlYXRlRW50aXR5KCk7XG5cbiAgICAgIGdlb21ldHJ5LnNldENvbmZpZyhjb25maWcgfHwge30pO1xuICAgICAgZ2VvbWV0cnkuc2V0RW50aXR5KGVudGl0eSk7XG4gICAgICByZXR1cm4gZ2VvbWV0cnkuZ2V0Q29tcG9uZW50KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZU1hdGVyaWFsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZU1hdGVyaWFsKHR5cGUsIGNvbmZpZykge1xuICAgICAgdmFyIG1hdGVyaWFsID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5NYXRlcmlhbCwgdHlwZSk7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBfY3JlYXRlRW50aXR5KCk7XG5cbiAgICAgIG1hdGVyaWFsLnNldENvbmZpZyhjb25maWcgfHwge30pO1xuICAgICAgbWF0ZXJpYWwuc2V0RW50aXR5KGVudGl0eSwgdHlwZSk7XG4gICAgICByZXR1cm4gbWF0ZXJpYWwuZ2V0Q29tcG9uZW50KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVRleHR1cmUyRFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVUZXh0dXJlMkQoY29uZmlnKSB7XG4gICAgICB2YXIgdGV4dHVyZSA9IHRoaXMuY29udGFpbmVyLmdldChUZXh0dXJlMkQpO1xuICAgICAgdGV4dHVyZS5zZXRDb25maWcoY29uZmlnKTtcbiAgICAgIHJldHVybiB0ZXh0dXJlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVCdWZmZXJHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVCdWZmZXJHZW9tZXRyeShwYXJhbXMpIHtcbiAgICAgIHZhciBnZW9tZXRyeVN5c3RlbSA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuU3lzdGVtcywgSURFTlRJRklFUi5HZW9tZXRyeVN5c3RlbSk7XG4gICAgICByZXR1cm4gZ2VvbWV0cnlTeXN0ZW0uY3JlYXRlQnVmZmVyR2VvbWV0cnkocGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkocGFyYW1zKSB7XG4gICAgICB2YXIgZ2VvbWV0cnlTeXN0ZW0gPSB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLlN5c3RlbXMsIElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pO1xuICAgICAgcmV0dXJuIGdlb21ldHJ5U3lzdGVtLmNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KHBhcmFtcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVNoYWRlck1hdGVyaWFsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVNoYWRlck1hdGVyaWFsKHBhcmFtcykge1xuICAgICAgdmFyIG1hdGVyaWFsU3lzdGVtID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5TeXN0ZW1zLCBJREVOVElGSUVSLk1hdGVyaWFsU3lzdGVtKTtcbiAgICAgIHJldHVybiBtYXRlcmlhbFN5c3RlbS5jcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVLZXJuZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlS2VybmVsKHByZWNvbXBpbGVkQnVuZGxlKSB7XG4gICAgICB2YXIga2VybmVsID0gdGhpcy5jb250YWluZXIuZ2V0KEtlcm5lbCk7XG5cbiAgICAgIGlmICh0eXBlb2YgcHJlY29tcGlsZWRCdW5kbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtlcm5lbC5zZXRCdW5kbGUoSlNPTi5wYXJzZShwcmVjb21waWxlZEJ1bmRsZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2VybmVsLnNldEJ1bmRsZShwcmVjb21waWxlZEJ1bmRsZSk7XG4gICAgICB9XG5cbiAgICAgIGtlcm5lbC5pbml0KCk7XG4gICAgICByZXR1cm4ga2VybmVsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVSZW5kZXJlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlcigpIHtcbiAgICAgIHZhciByZW5kZXJlciA9IHRoaXMuY29udGFpbmVyLmdldChSZW5kZXJlcik7XG4gICAgICByZW5kZXJlci5jb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgICAgIHJlbmRlcmVyLmluaXQoKTtcbiAgICAgIHJldHVybiByZW5kZXJlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdmFyIHN5c3RlbXMgPSB0aGlzLmNvbnRhaW5lci5nZXRBbGwoSURFTlRJRklFUi5TeXN0ZW1zKTtcbiAgICAgIHN5c3RlbXMuZm9yRWFjaChmdW5jdGlvbiAoc3lzdGVtKSB7XG4gICAgICAgIGlmIChzeXN0ZW0udGVhckRvd24pIHtcbiAgICAgICAgICBzeXN0ZW0udGVhckRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZW5naW5lID0gdGhpcy5jb250YWluZXIuZ2V0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKTtcbiAgICAgIGVuZ2luZS5kZXN0cm95KCk7XG4gICAgICB2YXIgaW50ZXJhY3RvciA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLkludGVyYWN0b3JTZXJ2aWNlKTtcbiAgICAgIGludGVyYWN0b3IuZGVzdHJveSgpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImNyZWF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgIHZhciB3b3JsZENvbnRhaW5lciA9IGNyZWF0ZVdvcmxkQ29udGFpbmVyKCk7IC8vIGJpbmQgcmVuZGVyIGVuZ2luZSwgZmFsbGJhY2sgdG8gV2ViR0xcblxuICAgICAgdmFyIGVuZ2luZUNsYXp6ID0gIW5hdmlnYXRvci5ncHUgPyBXZWJHTEVuZ2luZSA6IFdlYkdQVUVuZ2luZTtcblxuICAgICAgaWYgKCF3b3JsZENvbnRhaW5lci5pc0JvdW5kKElERU5USUZJRVIuUmVuZGVyRW5naW5lKSkge1xuICAgICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyRW5naW5lKSAvLyBAdHMtaWdub3JlXG4gICAgICAgIC50byhlbmdpbmVDbGF6eikuaW5TaW5nbGV0b25TY29wZSgpO1xuICAgICAgfVxuXG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFJlbmRlcmVyKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoS2VybmVsKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoUmVuZGVyYWJsZSkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFZpZXcpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChDYW1lcmEpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChTY2VuZSkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFdvcmxkKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoVGV4dHVyZUNhY2hlKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoVGV4dHVyZTJEKS50b1NlbGYoKTsgLy8gYmluZCBnZW9tZXRyaWVzXG5cbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5HZW9tZXRyeSkudG8oQm94KS53aGVuVGFyZ2V0TmFtZWQoR2VvbWV0cnkuQk9YKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5HZW9tZXRyeSkudG8oU3BoZXJlKS53aGVuVGFyZ2V0TmFtZWQoR2VvbWV0cnkuU1BIRVJFKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5HZW9tZXRyeSkudG8oUGxhbmUpLndoZW5UYXJnZXROYW1lZChHZW9tZXRyeS5QTEFORSk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKE1lcmdlZCkud2hlblRhcmdldE5hbWVkKEdlb21ldHJ5Lk1FUkdFRCk7IC8vIGJpbmQgbWF0ZXJpYWxzXG5cbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5NYXRlcmlhbCkudG8oQmFzaWMpLndoZW5UYXJnZXROYW1lZChNYXRlcmlhbC5CQVNJQyk7IC8vIGJpbmQgcmVuZGVyYWJsZXNcblxuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlcmFibGUpLnRvKFBvaW50KS53aGVuVGFyZ2V0TmFtZWQoUmVuZGVyYWJsZS5QT0lOVCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyYWJsZSkudG8oTGluZSkud2hlblRhcmdldE5hbWVkKFJlbmRlcmFibGUuTElORSk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyYWJsZSkudG8oR3JpZCkud2hlblRhcmdldE5hbWVkKFJlbmRlcmFibGUuR1JJRCk7XG4gICAgICB2YXIgd29ybGQgPSB3b3JsZENvbnRhaW5lci5nZXQoV29ybGQpO1xuICAgICAgd29ybGQuc2V0Q29udGFpbmVyKHdvcmxkQ29udGFpbmVyKTtcbiAgICAgIHdvcmxkLnNldENvbmZpZyhjb25maWcpO1xuICAgICAgcmV0dXJuIHdvcmxkO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXb3JsZDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdvcmxkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js ***! \*******************************************************************************/ /*! exports provided: CAMERA_TYPE, CAMERA_TRACKING_MODE, CAMERA_PROJECTION_MODE, Camera */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TYPE\", function() { return CAMERA_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TRACKING_MODE\", function() { return CAMERA_TRACKING_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_PROJECTION_MODE\", function() { return CAMERA_PROJECTION_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return Camera; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/math */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js\");\n/* harmony import */ var _Landmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Landmark */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\n\n\n\nvar CAMERA_TYPE;\n\n(function (CAMERA_TYPE) {\n CAMERA_TYPE[\"ORBITING\"] = \"ORBITING\";\n CAMERA_TYPE[\"EXPLORING\"] = \"EXPLORING\";\n CAMERA_TYPE[\"TRACKING\"] = \"TRACKING\";\n})(CAMERA_TYPE || (CAMERA_TYPE = {}));\n\nvar CAMERA_TRACKING_MODE;\n\n(function (CAMERA_TRACKING_MODE) {\n CAMERA_TRACKING_MODE[\"DEFAULT\"] = \"DEFAULT\";\n CAMERA_TRACKING_MODE[\"ROTATIONAL\"] = \"ROTATIONAL\";\n CAMERA_TRACKING_MODE[\"TRANSLATIONAL\"] = \"TRANSLATIONAL\";\n CAMERA_TRACKING_MODE[\"CINEMATIC\"] = \"CINEMATIC\";\n})(CAMERA_TRACKING_MODE || (CAMERA_TRACKING_MODE = {}));\n\nvar CAMERA_PROJECTION_MODE;\n\n(function (CAMERA_PROJECTION_MODE) {\n CAMERA_PROJECTION_MODE[\"ORTHOGRAPHIC\"] = \"ORTHOGRAPHIC\";\n CAMERA_PROJECTION_MODE[\"PERSPECTIVE\"] = \"PERSPECTIVE\";\n})(CAMERA_PROJECTION_MODE || (CAMERA_PROJECTION_MODE = {}));\n\nvar DEG_2_RAD = Math.PI / 180;\nvar RAD_2_DEG = 180 / Math.PI;\n/**\n * 参考「WebGL Insights - 23.Designing Cameras for WebGL Applications」,基于 Responsible Camera 思路设计\n * 保存相机参数,定义相机动作:\n * 1. dolly 沿 n 轴移动\n * 2. pan 沿 u v 轴移动\n * 3. rotate 以方位角旋转\n * 4. 移动到 Landmark,具有平滑的动画效果,其间禁止其他用户交互\n */\n\nvar Camera = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].InteractorService), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Camera() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Camera);\n\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 0, 0);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distance = 1;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.dollyingStep = 0;\n this.maxDistance = Infinity;\n this.minDistance = -Infinity;\n this.rotateWorld = false;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"interactor\", _descriptor, this);\n\n this.fov = 30;\n this.near = 0.1;\n this.far = 10000;\n this.aspect = 1;\n this.left = void 0;\n this.rright = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.zoom = 1;\n this.perspective = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.view = void 0;\n this.following = undefined;\n this.type = CAMERA_TYPE.EXPLORING;\n this.trackingMode = CAMERA_TRACKING_MODE.DEFAULT;\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.frustum = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"Frustum\"]();\n this.landmarks = [];\n this.landmarkAnimationID = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Camera, [{\n key: \"clone\",\n value: function clone() {\n var camera = new Camera();\n camera.setType(this.type, undefined);\n camera.interactor = this.interactor;\n return camera;\n }\n }, {\n key: \"getProjectionMode\",\n value: function getProjectionMode() {\n return this.projectionMode;\n }\n }, {\n key: \"getPerspective\",\n value: function getPerspective() {\n return this.perspective;\n }\n }, {\n key: \"getFrustum\",\n value: function getFrustum() {\n return this.frustum;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"setType\",\n value: function setType(type, trackingMode) {\n this.type = type;\n\n if (this.type === CAMERA_TYPE.EXPLORING) {\n this.setWorldRotation(true);\n } else {\n this.setWorldRotation(false);\n }\n\n this._getAngles();\n\n if (this.type === CAMERA_TYPE.TRACKING && trackingMode !== undefined) {\n this.setTrackingMode(trackingMode);\n }\n\n return this;\n }\n }, {\n key: \"setProjectionMode\",\n value: function setProjectionMode(projectionMode) {\n this.projectionMode = projectionMode;\n return this;\n }\n }, {\n key: \"setTrackingMode\",\n value: function setTrackingMode(trackingMode) {\n if (this.type !== CAMERA_TYPE.TRACKING) {\n throw new Error('Impossible to set a tracking mode if the camera is not of tracking type');\n }\n\n this.trackingMode = trackingMode;\n return this;\n }\n /**\n * If flag is true, it reverses the azimuth and elevation angles.\n * Subsequent calls to rotate, setAzimuth, setElevation,\n * changeAzimuth or changeElevation will cause the inverted effect.\n * setRoll or changeRoll is not affected by this method.\n *\n * This inversion is useful when one wants to simulate that the world\n * is moving, instead of the camera.\n *\n * By default the camera angles are not reversed.\n * @param {Boolean} flag the boolean flag to reverse the angles.\n */\n\n }, {\n key: \"setWorldRotation\",\n value: function setWorldRotation(flag) {\n this.rotateWorld = flag;\n\n this._getAngles();\n }\n /**\n * 计算 MV 矩阵,为相机矩阵的逆矩阵\n */\n\n }, {\n key: \"getViewTransform\",\n value: function getViewTransform() {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.matrix);\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n return this.matrix;\n }\n /**\n * 设置相机矩阵\n */\n\n }, {\n key: \"setMatrix\",\n value: function setMatrix(matrix) {\n this.matrix = matrix;\n\n this._update();\n\n return this;\n }\n }, {\n key: \"setAspect\",\n value: function setAspect(aspect) {\n this.setPerspective(this.near, this.far, this.fov, aspect);\n return this;\n }\n /**\n * Sets an offset in a larger frustum, used in PixelPicking\n */\n\n }, {\n key: \"setViewOffset\",\n value: function setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n\n if (this.view === undefined) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"clearViewOffset\",\n value: function clearViewOffset() {\n if (this.view !== undefined) {\n this.view.enabled = false;\n }\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"setPerspective\",\n value: function setPerspective(near, far, fov, aspect) {\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.fov = fov;\n this.near = near;\n this.far = far;\n this.aspect = aspect;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].perspective(this.perspective, this.fov * DEG_2_RAD, this.aspect, this.near, this.far);\n return this;\n }\n }, {\n key: \"setOrthographic\",\n value: function setOrthographic(l, r, t, b, near, far) {\n this.projectionMode = CAMERA_PROJECTION_MODE.ORTHOGRAPHIC;\n this.rright = r;\n this.left = l;\n this.top = t;\n this.bottom = b;\n this.near = near;\n this.far = far;\n var dx = (this.rright - this.left) / (2 * this.zoom);\n var dy = (this.top - this.bottom) / (2 * this.zoom);\n var cx = (this.rright + this.left) / 2;\n var cy = (this.top + this.bottom) / 2;\n var left = cx - dx;\n var right = cx + dx;\n var top = cy + dy;\n var bottom = cy - dy;\n\n if (this.view !== undefined && this.view.enabled) {\n var scaleW = (this.rright - this.left) / this.view.fullWidth / this.zoom;\n var scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].ortho(this.perspective, left, right, top, bottom, near, far);\n return this;\n }\n /**\n * 设置相机位置\n */\n\n }, {\n key: \"setPosition\",\n value: function setPosition(x, y, z) {\n this._setPosition(x, y, z);\n\n this.setFocalPoint(this.focalPoint);\n return this;\n }\n /**\n * 设置视点位置\n */\n\n }, {\n key: \"setFocalPoint\",\n value: function setFocalPoint(x, y, z) {\n var up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.focalPoint = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n\n if (this.trackingMode === CAMERA_TRACKING_MODE.CINEMATIC) {\n var d = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n x = d[0];\n y = d[1];\n z = d[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(d);\n var el = Math.asin(y / r) * RAD_2_DEG;\n var az = 90 + Math.atan2(z, x) * RAD_2_DEG;\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateY(m, m, az * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateX(m, m, el * DEG_2_RAD);\n up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), [0, 1, 0], m);\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(this.matrix, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].lookAt(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.position, this.focalPoint, up));\n\n this._getAxes();\n\n this._getDistance();\n\n this._getAngles();\n\n return this;\n }\n /**\n * 固定当前视点,按指定距离放置相机\n */\n\n }, {\n key: \"setDistance\",\n value: function setDistance(d) {\n if (this.distance === d || d < 0) {\n return;\n }\n\n this.distance = d;\n\n if (this.distance < 0.0002) {\n this.distance = 0.0002;\n }\n\n this.dollyingStep = this.distance / 100;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n d = this.distance;\n var n = this.forward;\n var f = this.focalPoint;\n pos[0] = d * n[0] + f[0];\n pos[1] = d * n[1] + f[1];\n pos[2] = d * n[2] + f[2];\n\n this._setPosition(pos);\n\n return this;\n }\n }, {\n key: \"setMaxDistance\",\n value: function setMaxDistance(d) {\n this.maxDistance = d;\n return this;\n }\n }, {\n key: \"setMinDistance\",\n value: function setMinDistance(d) {\n this.minDistance = d;\n return this;\n }\n /**\n * Changes the initial azimuth of the camera\n */\n\n }, {\n key: \"changeAzimuth\",\n value: function changeAzimuth(az) {\n this.setAzimuth(this.azimuth + az);\n return this;\n }\n /**\n * Changes the initial elevation of the camera\n */\n\n }, {\n key: \"changeElevation\",\n value: function changeElevation(el) {\n this.setElevation(this.elevation + el);\n return this;\n }\n /**\n * Changes the initial roll of the camera\n */\n\n }, {\n key: \"changeRoll\",\n value: function changeRoll(rl) {\n this.setRoll(this.roll + rl);\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the azimuth in degrees\n */\n\n }, {\n key: \"setAzimuth\",\n value: function setAzimuth(az) {\n this.azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(az);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n }, {\n key: \"getAzimuth\",\n value: function getAzimuth() {\n return this.azimuth;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the elevation in degrees\n */\n\n }, {\n key: \"setElevation\",\n value: function setElevation(el) {\n this.elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(el);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} angle the roll angle\n */\n\n }, {\n key: \"setRoll\",\n value: function setRoll(angle) {\n this.roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(angle);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * Changes the azimuth and elevation with respect to the current camera axes\n * @param {Number} azimuth the relative azimuth\n * @param {Number} elevation the relative elevation\n * @param {Number} roll the relative roll\n */\n\n }, {\n key: \"rotate\",\n value: function rotate(azimuth, elevation, roll) {\n if (this.type === CAMERA_TYPE.EXPLORING) {\n azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n var rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld ? 1 : -1) * elevation * DEG_2_RAD);\n var rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld ? 1 : -1) * azimuth * DEG_2_RAD);\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], roll * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, -this.distance]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else {\n if (Math.abs(this.elevation + elevation) > 90) {\n return;\n }\n\n this.relElevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n this.relAzimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n this.relRoll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n this.elevation += this.relElevation;\n this.azimuth += this.relAzimuth;\n this.roll += this.relRoll;\n this.computeMatrix();\n }\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n this._update();\n\n return this;\n }\n /**\n * 沿水平(right) & 垂直(up)平移相机\n */\n\n }, {\n key: \"pan\",\n value: function pan(tx, ty) {\n var coords = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(tx, ty, 0);\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.right, coords[0]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.up, coords[1]));\n\n this._setPosition(pos);\n\n return this;\n }\n /**\n * 沿 n 轴移动,当距离视点远时移动速度较快,离视点越近速度越慢\n */\n\n }, {\n key: \"dolly\",\n value: function dolly(value) {\n var n = this.forward;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n var step = value * this.dollyingStep;\n var updatedDistance = this.distance + value * this.dollyingStep; // 限制视点距离范围\n\n step = Math.max(Math.min(updatedDistance, this.maxDistance), this.minDistance) - this.distance;\n pos[0] += step * n[0];\n pos[1] += step * n[1];\n pos[2] += step * n[2];\n\n this._setPosition(pos);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n // 重新计算视点距离\n this._getDistance();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n // 保持视距,移动视点位置\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, pos, this.distanceVector);\n }\n\n return this;\n }\n }, {\n key: \"createLandmark\",\n value: function createLandmark(name, params) {\n var camera = this.clone();\n camera.setPosition(params.position);\n camera.setFocalPoint(params.focalPoint);\n\n if (params.roll !== undefined) {\n camera.setRoll(params.roll);\n }\n\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, camera);\n this.landmarks.push(landmark);\n return landmark;\n }\n }, {\n key: \"setLandmark\",\n value: function setLandmark(name) {\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, this);\n this.landmarks.push(landmark);\n return this;\n }\n }, {\n key: \"gotoLandmark\",\n value: function gotoLandmark(name) {\n var _this = this;\n\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var landmark = this.landmarks.find(function (l) {\n return l.name === name;\n });\n\n if (landmark) {\n if (duration === 0) {\n landmark.retrieve(this);\n return;\n }\n\n if (this.landmarkAnimationID !== undefined) {\n window.cancelAnimationFrame(this.landmarkAnimationID);\n } // TODO: do not process events during animation\n\n\n this.interactor.disconnect();\n var destPosition = landmark.getPosition();\n var destFocalPoint = landmark.getFocalPoint();\n var destRoll = landmark.getRoll();\n var timeStart;\n\n var animate = function animate(timestamp) {\n if (timeStart === undefined) {\n timeStart = timestamp;\n }\n\n var elapsed = timestamp - timeStart; // TODO: use better ease function\n\n var t = (1 - Math.cos(elapsed / duration * Math.PI)) / 2;\n var interFocalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interRoll = 0;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interFocalPoint, _this.focalPoint, destFocalPoint, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interPosition, _this.position, destPosition, t);\n interRoll = _this.roll * (1 - t) + destRoll * t;\n\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n var dist = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interFocalPoint, destFocalPoint) + gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interPosition, destPosition);\n\n if (dist > 0.01) {//\n } else {\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n _this.interactor.connect();\n\n return;\n }\n\n if (elapsed < duration) {\n _this.landmarkAnimationID = window.requestAnimationFrame(animate);\n }\n };\n\n window.requestAnimationFrame(animate);\n }\n }\n /**\n * 根据相机矩阵重新计算各种相机参数\n */\n\n }, {\n key: \"_update\",\n value: function _update() {\n this._getAxes();\n\n this._getPosition();\n\n this._getDistance();\n\n this._getAngles();\n }\n /**\n * 计算相机矩阵\n */\n\n }, {\n key: \"computeMatrix\",\n value: function computeMatrix() {\n var rotX;\n var rotY; // 使用四元数描述 3D 旋转\n // @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], this.roll * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].identity(this.matrix); // only consider HCS for EXPLORING and ORBITING cameras\n\n rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.elevation * DEG_2_RAD);\n rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.azimuth * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.focalPoint);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n }\n }\n /**\n * Sets the camera position in the camera matrix\n */\n\n }, {\n key: \"_setPosition\",\n value: function _setPosition(x, y, z) {\n this.position = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n var m = this.matrix;\n m[12] = this.position[0];\n m[13] = this.position[1];\n m[14] = this.position[2];\n m[15] = 1;\n }\n /**\n * Recalculates axes based on the current matrix\n */\n\n }, {\n key: \"_getAxes\",\n value: function _getAxes() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.right, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [1, 0, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.up, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 1, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.forward, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 1, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.right, this.right);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.up, this.up);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.forward, this.forward);\n }\n /**\n * Recalculates euler angles based on the current state\n */\n\n }, {\n key: \"_getAngles\",\n value: function _getAngles() {\n // Recalculates angles\n var x = this.distanceVector[0];\n var y = this.distanceVector[1];\n var z = this.distanceVector[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector); // FAST FAIL: If there is no distance we cannot compute angles\n\n if (r === 0) {\n this.elevation = 0;\n this.azimuth = 0;\n return;\n }\n\n if (this.type === CAMERA_TYPE.TRACKING) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n if (this.rotateWorld) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n this.elevation = -Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = -Math.atan2(-x, -z) * RAD_2_DEG;\n }\n }\n }\n /**\n * 重新计算相机位置,只有 ORBITING 模式相机位置才会发生变化\n */\n\n }, {\n key: \"_getPosition\",\n value: function _getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.position, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 0, 1], this.matrix))); // 相机位置变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视点,只有 TRACKING 模式视点才会发生变化\n */\n\n }, {\n key: \"_getFocalPoint\",\n value: function _getFocalPoint() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat3(this.distanceVector, [0, 0, -this.distance], gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].fromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].create(), this.matrix));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, this.position, this.distanceVector); // 视点变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视距\n */\n\n }, {\n key: \"_getDistance\",\n value: function _getDistance() {\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n this.distance = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector);\n this.dollyingStep = this.distance / 100;\n }\n }]);\n\n return Camera;\n}(), _class3.ProjectionMode = {\n ORTHOGRAPHIC: 'ORTHOGRAPHIC',\n PERSPECTIVE: 'PERSPECTIVE'\n}, _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"interactor\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Camera.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2NhbWVyYS9DYW1lcmEuanM/NDJiMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFMEQ7QUFDRDtBQUNWO0FBQ007QUFDbkI7QUFDM0I7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtDQUFrQzs7QUFFNUI7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0RBQW9EOztBQUU5Qzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdEQUF3RDs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8scUJBQXFCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVTtBQUNuRTtBQUNBLElBQUksNEVBQWU7O0FBRW5CLGtCQUFrQiw4Q0FBSTtBQUN0QixpQkFBaUIsOENBQUk7QUFDckIsY0FBYyw4Q0FBSTtBQUNsQixtQkFBbUIsOENBQUk7QUFDdkIsb0JBQW9CLDhDQUFJO0FBQ3hCLHNCQUFzQiw4Q0FBSTtBQUMxQiwwQkFBMEIsOENBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDhDQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQU87QUFDOUI7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDhDQUFJLFFBQVEsOENBQUk7QUFDN0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxlQUFlLDhDQUFJO0FBQ25CLHdCQUF3Qiw4REFBVTs7QUFFbEM7QUFDQSxnQkFBZ0IsOENBQUksVUFBVSw4Q0FBSTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBSTtBQUNwQixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLGFBQWEsOENBQUksZUFBZSw4Q0FBSTtBQUNwQzs7QUFFQSxNQUFNLDhDQUFJLHFCQUFxQiw4Q0FBSSxRQUFRLDhDQUFJOztBQUUvQzs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQiw4Q0FBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDREQUFRO0FBQzdCOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qiw0REFBUTtBQUMvQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQkFBa0IsNERBQVE7QUFDMUI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw0REFBUTtBQUMxQixvQkFBb0IsNERBQVE7QUFDNUIsZUFBZSw0REFBUTtBQUN2QixtQkFBbUIsOENBQUksY0FBYyw4Q0FBSTtBQUN6QyxtQkFBbUIsOENBQUksY0FBYyw4Q0FBSTtBQUN6QyxtQkFBbUIsOENBQUksY0FBYyw4Q0FBSTtBQUN6QyxtQkFBbUIsOENBQUksVUFBVSw4Q0FBSTtBQUNyQyxlQUFlLDhDQUFJLFVBQVUsOENBQUk7QUFDakMsd0JBQXdCLDhDQUFJLFVBQVUsOENBQUk7QUFDMUMsUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIsNERBQVE7QUFDcEMsMEJBQTBCLDREQUFRO0FBQ2xDLHVCQUF1Qiw0REFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDhEQUFVO0FBQzdCLGdCQUFnQiw4Q0FBSTtBQUNwQixNQUFNLDhDQUFJLGVBQWUsOENBQUksT0FBTyw4Q0FBSTtBQUN4QyxNQUFNLDhDQUFJLGVBQWUsOENBQUksT0FBTyw4Q0FBSTs7QUFFeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCO0FBQ0Esc0VBQXNFOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsaURBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5QkFBeUIsaURBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOENBQThDOztBQUU5QztBQUNBLGdDQUFnQyw4Q0FBSTtBQUNwQyw4QkFBOEIsOENBQUk7QUFDbEM7QUFDQSxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLHFCQUFxQiw4Q0FBSSx5Q0FBeUMsOENBQUk7O0FBRXRFLDRCQUE0QjtBQUM1QixXQUFXO0FBQ1g7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7O0FBRUEsaUJBQWlCLDhDQUFJLGNBQWMsOENBQUk7QUFDdkMsTUFBTSw4Q0FBSSx1QkFBdUI7O0FBRWpDLGFBQWEsOENBQUksY0FBYyw4Q0FBSTtBQUNuQyxhQUFhLDhDQUFJLGNBQWMsOENBQUk7QUFDbkMsaUJBQWlCLDhDQUFJLFVBQVUsOENBQUk7QUFDbkMsYUFBYSw4Q0FBSSxVQUFVLDhDQUFJO0FBQy9CLHNCQUFzQiw4Q0FBSSxVQUFVLDhDQUFJOztBQUV4QztBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLE9BQU87QUFDUCxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOERBQVU7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSSxrQkFBa0IsOERBQVUsQ0FBQyw4Q0FBSSxlQUFlLDhDQUFJO0FBQzlELE1BQU0sOENBQUksZUFBZSw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUk7QUFDM0QsTUFBTSw4Q0FBSSxvQkFBb0IsOERBQVUsQ0FBQyw4Q0FBSSxlQUFlLDhDQUFJO0FBQ2hFLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDhDQUFJLDZCQUE2Qjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJLHFCQUFxQiw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUksd0NBQXdDOztBQUV6RztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSSw0REFBNEQsOENBQUksVUFBVSw4Q0FBSTtBQUN4RixNQUFNLDhDQUFJLDBEQUEwRDs7QUFFcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDRCQUE0Qiw4Q0FBSSxVQUFVLDhDQUFJO0FBQzlDLHNCQUFzQiw4Q0FBSTtBQUMxQjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQyx5QkFBeUIsc0ZBQXlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9jYW1lcmEvQ2FtZXJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IEZydXN0dW0sIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IG1hdDMsIG1hdDQsIHF1YXQsIHZlYzMsIHZlYzQgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZVZlYzMsIGdldEFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMvbWF0aCc7XG5pbXBvcnQgTGFuZG1hcmsgZnJvbSAnLi9MYW5kbWFyayc7XG5leHBvcnQgdmFyIENBTUVSQV9UWVBFO1xuXG4oZnVuY3Rpb24gKENBTUVSQV9UWVBFKSB7XG4gIENBTUVSQV9UWVBFW1wiT1JCSVRJTkdcIl0gPSBcIk9SQklUSU5HXCI7XG4gIENBTUVSQV9UWVBFW1wiRVhQTE9SSU5HXCJdID0gXCJFWFBMT1JJTkdcIjtcbiAgQ0FNRVJBX1RZUEVbXCJUUkFDS0lOR1wiXSA9IFwiVFJBQ0tJTkdcIjtcbn0pKENBTUVSQV9UWVBFIHx8IChDQU1FUkFfVFlQRSA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgQ0FNRVJBX1RSQUNLSU5HX01PREU7XG5cbihmdW5jdGlvbiAoQ0FNRVJBX1RSQUNLSU5HX01PREUpIHtcbiAgQ0FNRVJBX1RSQUNLSU5HX01PREVbXCJERUZBVUxUXCJdID0gXCJERUZBVUxUXCI7XG4gIENBTUVSQV9UUkFDS0lOR19NT0RFW1wiUk9UQVRJT05BTFwiXSA9IFwiUk9UQVRJT05BTFwiO1xuICBDQU1FUkFfVFJBQ0tJTkdfTU9ERVtcIlRSQU5TTEFUSU9OQUxcIl0gPSBcIlRSQU5TTEFUSU9OQUxcIjtcbiAgQ0FNRVJBX1RSQUNLSU5HX01PREVbXCJDSU5FTUFUSUNcIl0gPSBcIkNJTkVNQVRJQ1wiO1xufSkoQ0FNRVJBX1RSQUNLSU5HX01PREUgfHwgKENBTUVSQV9UUkFDS0lOR19NT0RFID0ge30pKTtcblxuZXhwb3J0IHZhciBDQU1FUkFfUFJPSkVDVElPTl9NT0RFO1xuXG4oZnVuY3Rpb24gKENBTUVSQV9QUk9KRUNUSU9OX01PREUpIHtcbiAgQ0FNRVJBX1BST0pFQ1RJT05fTU9ERVtcIk9SVEhPR1JBUEhJQ1wiXSA9IFwiT1JUSE9HUkFQSElDXCI7XG4gIENBTUVSQV9QUk9KRUNUSU9OX01PREVbXCJQRVJTUEVDVElWRVwiXSA9IFwiUEVSU1BFQ1RJVkVcIjtcbn0pKENBTUVSQV9QUk9KRUNUSU9OX01PREUgfHwgKENBTUVSQV9QUk9KRUNUSU9OX01PREUgPSB7fSkpO1xuXG52YXIgREVHXzJfUkFEID0gTWF0aC5QSSAvIDE4MDtcbnZhciBSQURfMl9ERUcgPSAxODAgLyBNYXRoLlBJO1xuLyoqXG4gKiDlj4LogIPjgIxXZWJHTCBJbnNpZ2h0cyAtIDIzLkRlc2lnbmluZyBDYW1lcmFzIGZvciBXZWJHTCBBcHBsaWNhdGlvbnPjgI3vvIzln7rkuo4gUmVzcG9uc2libGUgQ2FtZXJhIOaAnei3r+iuvuiuoVxuICog5L+d5a2Y55u45py65Y+C5pWw77yM5a6a5LmJ55u45py65Yqo5L2c77yaXG4gKiAxLiBkb2xseSDmsr8gbiDovbTnp7vliqhcbiAqIDIuIHBhbiDmsr8gdSB2IOi9tOenu+WKqFxuICogMy4gcm90YXRlIOS7peaWueS9jeinkuaXi+i9rFxuICogNC4g56e75Yqo5YiwIExhbmRtYXJr77yM5YW35pyJ5bmz5ruR55qE5Yqo55S75pWI5p6c77yM5YW26Ze056aB5q2i5YW25LuW55So5oi35Lqk5LqSXG4gKi9cblxuZXhwb3J0IHZhciBDYW1lcmEgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5JbnRlcmFjdG9yU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSBfY2xhc3MzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ2FtZXJhKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYW1lcmEpO1xuXG4gICAgdGhpcy5tYXRyaXggPSBtYXQ0LmNyZWF0ZSgpO1xuICAgIHRoaXMucmlnaHQgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMCwgMCk7XG4gICAgdGhpcy51cCA9IHZlYzMuZnJvbVZhbHVlcygwLCAxLCAwKTtcbiAgICB0aGlzLmZvcndhcmQgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMSk7XG4gICAgdGhpcy5wb3NpdGlvbiA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAxKTtcbiAgICB0aGlzLmZvY2FsUG9pbnQgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgdGhpcy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAwKTtcbiAgICB0aGlzLmRpc3RhbmNlID0gMTtcbiAgICB0aGlzLmF6aW11dGggPSAwO1xuICAgIHRoaXMuZWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJvbGwgPSAwO1xuICAgIHRoaXMucmVsQXppbXV0aCA9IDA7XG4gICAgdGhpcy5yZWxFbGV2YXRpb24gPSAwO1xuICAgIHRoaXMucmVsUm9sbCA9IDA7XG4gICAgdGhpcy5kb2xseWluZ1N0ZXAgPSAwO1xuICAgIHRoaXMubWF4RGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICB0aGlzLm1pbkRpc3RhbmNlID0gLUluZmluaXR5O1xuICAgIHRoaXMucm90YXRlV29ybGQgPSBmYWxzZTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiaW50ZXJhY3RvclwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLmZvdiA9IDMwO1xuICAgIHRoaXMubmVhciA9IDAuMTtcbiAgICB0aGlzLmZhciA9IDEwMDAwO1xuICAgIHRoaXMuYXNwZWN0ID0gMTtcbiAgICB0aGlzLmxlZnQgPSB2b2lkIDA7XG4gICAgdGhpcy5ycmlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy50b3AgPSB2b2lkIDA7XG4gICAgdGhpcy5ib3R0b20gPSB2b2lkIDA7XG4gICAgdGhpcy56b29tID0gMTtcbiAgICB0aGlzLnBlcnNwZWN0aXZlID0gbWF0NC5jcmVhdGUoKTtcbiAgICB0aGlzLnZpZXcgPSB2b2lkIDA7XG4gICAgdGhpcy5mb2xsb3dpbmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlID0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HO1xuICAgIHRoaXMudHJhY2tpbmdNb2RlID0gQ0FNRVJBX1RSQUNLSU5HX01PREUuREVGQVVMVDtcbiAgICB0aGlzLnByb2plY3Rpb25Nb2RlID0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5QRVJTUEVDVElWRTtcbiAgICB0aGlzLmZydXN0dW0gPSBuZXcgRnJ1c3R1bSgpO1xuICAgIHRoaXMubGFuZG1hcmtzID0gW107XG4gICAgdGhpcy5sYW5kbWFya0FuaW1hdGlvbklEID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENhbWVyYSwgW3tcbiAgICBrZXk6IFwiY2xvbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvbmUoKSB7XG4gICAgICB2YXIgY2FtZXJhID0gbmV3IENhbWVyYSgpO1xuICAgICAgY2FtZXJhLnNldFR5cGUodGhpcy50eXBlLCB1bmRlZmluZWQpO1xuICAgICAgY2FtZXJhLmludGVyYWN0b3IgPSB0aGlzLmludGVyYWN0b3I7XG4gICAgICByZXR1cm4gY2FtZXJhO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQcm9qZWN0aW9uTW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQcm9qZWN0aW9uTW9kZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2plY3Rpb25Nb2RlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQZXJzcGVjdGl2ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQZXJzcGVjdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBlcnNwZWN0aXZlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGcnVzdHVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZydXN0dW0oKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcnVzdHVtO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRUeXBlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFR5cGUodHlwZSwgdHJhY2tpbmdNb2RlKSB7XG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5zZXRXb3JsZFJvdGF0aW9uKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRXb3JsZFJvdGF0aW9uKGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HICYmIHRyYWNraW5nTW9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0VHJhY2tpbmdNb2RlKHRyYWNraW5nTW9kZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRQcm9qZWN0aW9uTW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQcm9qZWN0aW9uTW9kZShwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IHByb2plY3Rpb25Nb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFRyYWNraW5nTW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUcmFja2luZ01vZGUodHJhY2tpbmdNb2RlKSB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcG9zc2libGUgdG8gc2V0IGEgdHJhY2tpbmcgbW9kZSBpZiB0aGUgY2FtZXJhIGlzIG5vdCBvZiB0cmFja2luZyB0eXBlJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJhY2tpbmdNb2RlID0gdHJhY2tpbmdNb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGZsYWcgaXMgdHJ1ZSwgaXQgcmV2ZXJzZXMgdGhlIGF6aW11dGggYW5kIGVsZXZhdGlvbiBhbmdsZXMuXG4gICAgICogU3Vic2VxdWVudCBjYWxscyB0byByb3RhdGUsIHNldEF6aW11dGgsIHNldEVsZXZhdGlvbixcbiAgICAgKiBjaGFuZ2VBemltdXRoIG9yIGNoYW5nZUVsZXZhdGlvbiB3aWxsIGNhdXNlIHRoZSBpbnZlcnRlZCBlZmZlY3QuXG4gICAgICogc2V0Um9sbCBvciBjaGFuZ2VSb2xsIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIFRoaXMgaW52ZXJzaW9uIGlzIHVzZWZ1bCB3aGVuIG9uZSB3YW50cyB0byBzaW11bGF0ZSB0aGF0IHRoZSB3b3JsZFxuICAgICAqIGlzIG1vdmluZywgaW5zdGVhZCBvZiB0aGUgY2FtZXJhLlxuICAgICAqXG4gICAgICogQnkgZGVmYXVsdCB0aGUgY2FtZXJhIGFuZ2xlcyBhcmUgbm90IHJldmVyc2VkLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZmxhZyB0aGUgYm9vbGVhbiBmbGFnIHRvIHJldmVyc2UgdGhlIGFuZ2xlcy5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFdvcmxkUm90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0V29ybGRSb3RhdGlvbihmbGFnKSB7XG4gICAgICB0aGlzLnJvdGF0ZVdvcmxkID0gZmxhZztcblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuoeeulyBNViDnn6npmLXvvIzkuLrnm7jmnLrnn6npmLXnmoTpgIbnn6npmLVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZXdUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Vmlld1RyYW5zZm9ybSgpIHtcbiAgICAgIHJldHVybiBtYXQ0LmludmVydChtYXQ0LmNyZWF0ZSgpLCB0aGlzLm1hdHJpeCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFdvcmxkVHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFdvcmxkVHJhbnNmb3JtKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWF0cml4O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrnn6npmLVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldE1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNYXRyaXgobWF0cml4KSB7XG4gICAgICB0aGlzLm1hdHJpeCA9IG1hdHJpeDtcblxuICAgICAgdGhpcy5fdXBkYXRlKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRBc3BlY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXNwZWN0KGFzcGVjdCkge1xuICAgICAgdGhpcy5zZXRQZXJzcGVjdGl2ZSh0aGlzLm5lYXIsIHRoaXMuZmFyLCB0aGlzLmZvdiwgYXNwZWN0KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGFuIG9mZnNldCBpbiBhIGxhcmdlciBmcnVzdHVtLCB1c2VkIGluIFBpeGVsUGlja2luZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vmlld09mZnNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWaWV3T2Zmc2V0KGZ1bGxXaWR0aCwgZnVsbEhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5hc3BlY3QgPSBmdWxsV2lkdGggLyBmdWxsSGVpZ2h0O1xuXG4gICAgICBpZiAodGhpcy52aWV3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52aWV3ID0ge1xuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgZnVsbFdpZHRoOiAxLFxuICAgICAgICAgIGZ1bGxIZWlnaHQ6IDEsXG4gICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgIGhlaWdodDogMVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZpZXcuZW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZpZXcuZnVsbFdpZHRoID0gZnVsbFdpZHRoO1xuICAgICAgdGhpcy52aWV3LmZ1bGxIZWlnaHQgPSBmdWxsSGVpZ2h0O1xuICAgICAgdGhpcy52aWV3Lm9mZnNldFggPSB4O1xuICAgICAgdGhpcy52aWV3Lm9mZnNldFkgPSB5O1xuICAgICAgdGhpcy52aWV3LndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLnZpZXcuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSA9PT0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5QRVJTUEVDVElWRSkge1xuICAgICAgICB0aGlzLnNldFBlcnNwZWN0aXZlKHRoaXMubmVhciwgdGhpcy5mYXIsIHRoaXMuZm92LCB0aGlzLmFzcGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldE9ydGhvZ3JhcGhpYyh0aGlzLmxlZnQsIHRoaXMucnJpZ2h0LCB0aGlzLnRvcCwgdGhpcy5ib3R0b20sIHRoaXMubmVhciwgdGhpcy5mYXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJWaWV3T2Zmc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyVmlld09mZnNldCgpIHtcbiAgICAgIGlmICh0aGlzLnZpZXcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnZpZXcuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSA9PT0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5QRVJTUEVDVElWRSkge1xuICAgICAgICB0aGlzLnNldFBlcnNwZWN0aXZlKHRoaXMubmVhciwgdGhpcy5mYXIsIHRoaXMuZm92LCB0aGlzLmFzcGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldE9ydGhvZ3JhcGhpYyh0aGlzLmxlZnQsIHRoaXMucnJpZ2h0LCB0aGlzLnRvcCwgdGhpcy5ib3R0b20sIHRoaXMubmVhciwgdGhpcy5mYXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UGVyc3BlY3RpdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UGVyc3BlY3RpdmUobmVhciwgZmFyLCBmb3YsIGFzcGVjdCkge1xuICAgICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkU7XG4gICAgICB0aGlzLmZvdiA9IGZvdjtcbiAgICAgIHRoaXMubmVhciA9IG5lYXI7XG4gICAgICB0aGlzLmZhciA9IGZhcjtcbiAgICAgIHRoaXMuYXNwZWN0ID0gYXNwZWN0O1xuICAgICAgbWF0NC5wZXJzcGVjdGl2ZSh0aGlzLnBlcnNwZWN0aXZlLCB0aGlzLmZvdiAqIERFR18yX1JBRCwgdGhpcy5hc3BlY3QsIHRoaXMubmVhciwgdGhpcy5mYXIpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE9ydGhvZ3JhcGhpY1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRPcnRob2dyYXBoaWMobCwgciwgdCwgYiwgbmVhciwgZmFyKSB7XG4gICAgICB0aGlzLnByb2plY3Rpb25Nb2RlID0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5PUlRIT0dSQVBISUM7XG4gICAgICB0aGlzLnJyaWdodCA9IHI7XG4gICAgICB0aGlzLmxlZnQgPSBsO1xuICAgICAgdGhpcy50b3AgPSB0O1xuICAgICAgdGhpcy5ib3R0b20gPSBiO1xuICAgICAgdGhpcy5uZWFyID0gbmVhcjtcbiAgICAgIHRoaXMuZmFyID0gZmFyO1xuICAgICAgdmFyIGR4ID0gKHRoaXMucnJpZ2h0IC0gdGhpcy5sZWZ0KSAvICgyICogdGhpcy56b29tKTtcbiAgICAgIHZhciBkeSA9ICh0aGlzLnRvcCAtIHRoaXMuYm90dG9tKSAvICgyICogdGhpcy56b29tKTtcbiAgICAgIHZhciBjeCA9ICh0aGlzLnJyaWdodCArIHRoaXMubGVmdCkgLyAyO1xuICAgICAgdmFyIGN5ID0gKHRoaXMudG9wICsgdGhpcy5ib3R0b20pIC8gMjtcbiAgICAgIHZhciBsZWZ0ID0gY3ggLSBkeDtcbiAgICAgIHZhciByaWdodCA9IGN4ICsgZHg7XG4gICAgICB2YXIgdG9wID0gY3kgKyBkeTtcbiAgICAgIHZhciBib3R0b20gPSBjeSAtIGR5O1xuXG4gICAgICBpZiAodGhpcy52aWV3ICE9PSB1bmRlZmluZWQgJiYgdGhpcy52aWV3LmVuYWJsZWQpIHtcbiAgICAgICAgdmFyIHNjYWxlVyA9ICh0aGlzLnJyaWdodCAtIHRoaXMubGVmdCkgLyB0aGlzLnZpZXcuZnVsbFdpZHRoIC8gdGhpcy56b29tO1xuICAgICAgICB2YXIgc2NhbGVIID0gKHRoaXMudG9wIC0gdGhpcy5ib3R0b20pIC8gdGhpcy52aWV3LmZ1bGxIZWlnaHQgLyB0aGlzLnpvb207XG4gICAgICAgIGxlZnQgKz0gc2NhbGVXICogdGhpcy52aWV3Lm9mZnNldFg7XG4gICAgICAgIHJpZ2h0ID0gbGVmdCArIHNjYWxlVyAqIHRoaXMudmlldy53aWR0aDtcbiAgICAgICAgdG9wIC09IHNjYWxlSCAqIHRoaXMudmlldy5vZmZzZXRZO1xuICAgICAgICBib3R0b20gPSB0b3AgLSBzY2FsZUggKiB0aGlzLnZpZXcuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBtYXQ0Lm9ydGhvKHRoaXMucGVyc3BlY3RpdmUsIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrkvY3nva5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBvc2l0aW9uKHgsIHksIHopIHtcbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKHgsIHksIHopO1xuXG4gICAgICB0aGlzLnNldEZvY2FsUG9pbnQodGhpcy5mb2NhbFBvaW50KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7op4bngrnkvY3nva5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldEZvY2FsUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Rm9jYWxQb2ludCh4LCB5LCB6KSB7XG4gICAgICB2YXIgdXAgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMSwgMCk7XG4gICAgICB0aGlzLmZvY2FsUG9pbnQgPSBjcmVhdGVWZWMzKHgsIHksIHopO1xuXG4gICAgICBpZiAodGhpcy50cmFja2luZ01vZGUgPT09IENBTUVSQV9UUkFDS0lOR19NT0RFLkNJTkVNQVRJQykge1xuICAgICAgICB2YXIgZCA9IHZlYzMuc3VidHJhY3QodmVjMy5jcmVhdGUoKSwgdGhpcy5mb2NhbFBvaW50LCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgICAgeCA9IGRbMF07XG4gICAgICAgIHkgPSBkWzFdO1xuICAgICAgICB6ID0gZFsyXTtcbiAgICAgICAgdmFyIHIgPSB2ZWMzLmxlbmd0aChkKTtcbiAgICAgICAgdmFyIGVsID0gTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgdmFyIGF6ID0gOTAgKyBNYXRoLmF0YW4yKHosIHgpICogUkFEXzJfREVHO1xuICAgICAgICB2YXIgbSA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICAgIG1hdDQucm90YXRlWShtLCBtLCBheiAqIERFR18yX1JBRCk7XG4gICAgICAgIG1hdDQucm90YXRlWChtLCBtLCBlbCAqIERFR18yX1JBRCk7XG4gICAgICAgIHVwID0gdmVjMy50cmFuc2Zvcm1NYXQ0KHZlYzMuY3JlYXRlKCksIFswLCAxLCAwXSwgbSk7XG4gICAgICB9XG5cbiAgICAgIG1hdDQuaW52ZXJ0KHRoaXMubWF0cml4LCBtYXQ0Lmxvb2tBdChtYXQ0LmNyZWF0ZSgpLCB0aGlzLnBvc2l0aW9uLCB0aGlzLmZvY2FsUG9pbnQsIHVwKSk7XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgdGhpcy5fZ2V0RGlzdGFuY2UoKTtcblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlm7rlrprlvZPliY3op4bngrnvvIzmjInmjIflrprot53nprvmlL7nva7nm7jmnLpcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldERpc3RhbmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERpc3RhbmNlKGQpIHtcbiAgICAgIGlmICh0aGlzLmRpc3RhbmNlID09PSBkIHx8IGQgPCAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXN0YW5jZSA9IGQ7XG5cbiAgICAgIGlmICh0aGlzLmRpc3RhbmNlIDwgMC4wMDAyKSB7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSAwLjAwMDI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZG9sbHlpbmdTdGVwID0gdGhpcy5kaXN0YW5jZSAvIDEwMDtcbiAgICAgIHZhciBwb3MgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgZCA9IHRoaXMuZGlzdGFuY2U7XG4gICAgICB2YXIgbiA9IHRoaXMuZm9yd2FyZDtcbiAgICAgIHZhciBmID0gdGhpcy5mb2NhbFBvaW50O1xuICAgICAgcG9zWzBdID0gZCAqIG5bMF0gKyBmWzBdO1xuICAgICAgcG9zWzFdID0gZCAqIG5bMV0gKyBmWzFdO1xuICAgICAgcG9zWzJdID0gZCAqIG5bMl0gKyBmWzJdO1xuXG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbihwb3MpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWF4RGlzdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWF4RGlzdGFuY2UoZCkge1xuICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IGQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWluRGlzdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWluRGlzdGFuY2UoZCkge1xuICAgICAgdGhpcy5taW5EaXN0YW5jZSA9IGQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgaW5pdGlhbCBhemltdXRoIG9mIHRoZSBjYW1lcmFcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNoYW5nZUF6aW11dGhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlQXppbXV0aChheikge1xuICAgICAgdGhpcy5zZXRBemltdXRoKHRoaXMuYXppbXV0aCArIGF6KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBpbml0aWFsIGVsZXZhdGlvbiBvZiB0aGUgY2FtZXJhXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjaGFuZ2VFbGV2YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlRWxldmF0aW9uKGVsKSB7XG4gICAgICB0aGlzLnNldEVsZXZhdGlvbih0aGlzLmVsZXZhdGlvbiArIGVsKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBpbml0aWFsIHJvbGwgb2YgdGhlIGNhbWVyYVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY2hhbmdlUm9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjaGFuZ2VSb2xsKHJsKSB7XG4gICAgICB0aGlzLnNldFJvbGwodGhpcy5yb2xsICsgcmwpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruebuOacuuaWueS9jeinku+8jOS4jeWQjOebuOacuuaooeW8j+S4i+mcgOimgemHjeaWsOiuoeeul+ebuOacuuS9jee9ruaIluiAheaYr+inhueCueS9jee9rlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBlbCB0aGUgYXppbXV0aCBpbiBkZWdyZWVzXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRBemltdXRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF6aW11dGgoYXopIHtcbiAgICAgIHRoaXMuYXppbXV0aCA9IGdldEFuZ2xlKGF6KTtcbiAgICAgIHRoaXMuY29tcHV0ZU1hdHJpeCgpO1xuXG4gICAgICB0aGlzLl9nZXRBeGVzKCk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLk9SQklUSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldFBvc2l0aW9uKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0Rm9jYWxQb2ludCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QXppbXV0aFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBemltdXRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXppbXV0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u55u45py65pa55L2N6KeS77yM5LiN5ZCM55u45py65qih5byP5LiL6ZyA6KaB6YeN5paw6K6h566X55u45py65L2N572u5oiW6ICF5piv6KeG54K55L2N572uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGVsIHRoZSBlbGV2YXRpb24gaW4gZGVncmVlc1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RWxldmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVsZXZhdGlvbihlbCkge1xuICAgICAgdGhpcy5lbGV2YXRpb24gPSBnZXRBbmdsZShlbCk7XG4gICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruebuOacuuaWueS9jeinku+8jOS4jeWQjOebuOacuuaooeW8j+S4i+mcgOimgemHjeaWsOiuoeeul+ebuOacuuS9jee9ruaIluiAheaYr+inhueCueS9jee9rlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZSB0aGUgcm9sbCBhbmdsZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Um9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRSb2xsKGFuZ2xlKSB7XG4gICAgICB0aGlzLnJvbGwgPSBnZXRBbmdsZShhbmdsZSk7XG4gICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGF6aW11dGggYW5kIGVsZXZhdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgY2FtZXJhIGF4ZXNcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gYXppbXV0aCB0aGUgcmVsYXRpdmUgYXppbXV0aFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBlbGV2YXRpb24gdGhlIHJlbGF0aXZlIGVsZXZhdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSByb2xsIHRoZSByZWxhdGl2ZSByb2xsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyb3RhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcm90YXRlKGF6aW11dGgsIGVsZXZhdGlvbiwgcm9sbCkge1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIGF6aW11dGggPSBnZXRBbmdsZShhemltdXRoKTtcbiAgICAgICAgZWxldmF0aW9uID0gZ2V0QW5nbGUoZWxldmF0aW9uKTtcbiAgICAgICAgcm9sbCA9IGdldEFuZ2xlKHJvbGwpO1xuICAgICAgICB2YXIgcm90WCA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFsxLCAwLCAwXSwgKHRoaXMucm90YXRlV29ybGQgPyAxIDogLTEpICogZWxldmF0aW9uICogREVHXzJfUkFEKTtcbiAgICAgICAgdmFyIHJvdFkgPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMCwgMSwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkID8gMSA6IC0xKSAqIGF6aW11dGggKiBERUdfMl9SQUQpO1xuICAgICAgICB2YXIgcm90WiA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFswLCAwLCAxXSwgcm9sbCAqIERFR18yX1JBRCk7XG4gICAgICAgIHZhciByb3RRID0gcXVhdC5tdWx0aXBseShxdWF0LmNyZWF0ZSgpLCByb3RZLCByb3RYKTtcbiAgICAgICAgcm90USA9IHF1YXQubXVsdGlwbHkocXVhdC5jcmVhdGUoKSwgcm90USwgcm90Wik7XG4gICAgICAgIHZhciByb3RNYXRyaXggPSBtYXQ0LmZyb21RdWF0KG1hdDQuY3JlYXRlKCksIHJvdFEpO1xuICAgICAgICBtYXQ0LnRyYW5zbGF0ZSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIFswLCAwLCAtdGhpcy5kaXN0YW5jZV0pO1xuICAgICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgcm90TWF0cml4KTtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCBbMCwgMCwgdGhpcy5kaXN0YW5jZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuZWxldmF0aW9uICsgZWxldmF0aW9uKSA+IDkwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWxFbGV2YXRpb24gPSBnZXRBbmdsZShlbGV2YXRpb24pO1xuICAgICAgICB0aGlzLnJlbEF6aW11dGggPSBnZXRBbmdsZShhemltdXRoKTtcbiAgICAgICAgdGhpcy5yZWxSb2xsID0gZ2V0QW5nbGUocm9sbCk7XG4gICAgICAgIHRoaXMuZWxldmF0aW9uICs9IHRoaXMucmVsRWxldmF0aW9uO1xuICAgICAgICB0aGlzLmF6aW11dGggKz0gdGhpcy5yZWxBemltdXRoO1xuICAgICAgICB0aGlzLnJvbGwgKz0gdGhpcy5yZWxSb2xsO1xuICAgICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdXBkYXRlKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmsr/msLTlubMocmlnaHQpICYg5Z6C55u0KHVwKeW5s+enu+ebuOaculxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicGFuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhbih0eCwgdHkpIHtcbiAgICAgIHZhciBjb29yZHMgPSBjcmVhdGVWZWMzKHR4LCB0eSwgMCk7XG4gICAgICB2YXIgcG9zID0gdmVjMy5jbG9uZSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHZlYzMuYWRkKHBvcywgcG9zLCB2ZWMzLnNjYWxlKHZlYzMuY3JlYXRlKCksIHRoaXMucmlnaHQsIGNvb3Jkc1swXSkpO1xuICAgICAgdmVjMy5hZGQocG9zLCBwb3MsIHZlYzMuc2NhbGUodmVjMy5jcmVhdGUoKSwgdGhpcy51cCwgY29vcmRzWzFdKSk7XG5cbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKHBvcyk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmsr8gbiDovbTnp7vliqjvvIzlvZPot53nprvop4bngrnov5zml7bnp7vliqjpgJ/luqbovoPlv6vvvIznprvop4bngrnotorov5HpgJ/luqbotormhaJcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImRvbGx5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRvbGx5KHZhbHVlKSB7XG4gICAgICB2YXIgbiA9IHRoaXMuZm9yd2FyZDtcbiAgICAgIHZhciBwb3MgPSB2ZWMzLmNsb25lKHRoaXMucG9zaXRpb24pO1xuICAgICAgdmFyIHN0ZXAgPSB2YWx1ZSAqIHRoaXMuZG9sbHlpbmdTdGVwO1xuICAgICAgdmFyIHVwZGF0ZWREaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2UgKyB2YWx1ZSAqIHRoaXMuZG9sbHlpbmdTdGVwOyAvLyDpmZDliLbop4bngrnot53nprvojIPlm7RcblxuICAgICAgc3RlcCA9IE1hdGgubWF4KE1hdGgubWluKHVwZGF0ZWREaXN0YW5jZSwgdGhpcy5tYXhEaXN0YW5jZSksIHRoaXMubWluRGlzdGFuY2UpIC0gdGhpcy5kaXN0YW5jZTtcbiAgICAgIHBvc1swXSArPSBzdGVwICogblswXTtcbiAgICAgIHBvc1sxXSArPSBzdGVwICogblsxXTtcbiAgICAgIHBvc1syXSArPSBzdGVwICogblsyXTtcblxuICAgICAgdGhpcy5fc2V0UG9zaXRpb24ocG9zKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgLy8g6YeN5paw6K6h566X6KeG54K56Led56a7XG4gICAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgLy8g5L+d5oyB6KeG6Led77yM56e75Yqo6KeG54K55L2N572uXG4gICAgICAgIHZlYzMuYWRkKHRoaXMuZm9jYWxQb2ludCwgcG9zLCB0aGlzLmRpc3RhbmNlVmVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUxhbmRtYXJrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUxhbmRtYXJrKG5hbWUsIHBhcmFtcykge1xuICAgICAgdmFyIGNhbWVyYSA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGNhbWVyYS5zZXRQb3NpdGlvbihwYXJhbXMucG9zaXRpb24pO1xuICAgICAgY2FtZXJhLnNldEZvY2FsUG9pbnQocGFyYW1zLmZvY2FsUG9pbnQpO1xuXG4gICAgICBpZiAocGFyYW1zLnJvbGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYW1lcmEuc2V0Um9sbChwYXJhbXMucm9sbCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBsYW5kbWFyayA9IG5ldyBMYW5kbWFyayhuYW1lLCBjYW1lcmEpO1xuICAgICAgdGhpcy5sYW5kbWFya3MucHVzaChsYW5kbWFyayk7XG4gICAgICByZXR1cm4gbGFuZG1hcms7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldExhbmRtYXJrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExhbmRtYXJrKG5hbWUpIHtcbiAgICAgIHZhciBsYW5kbWFyayA9IG5ldyBMYW5kbWFyayhuYW1lLCB0aGlzKTtcbiAgICAgIHRoaXMubGFuZG1hcmtzLnB1c2gobGFuZG1hcmspO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdvdG9MYW5kbWFya1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnb3RvTGFuZG1hcmsobmFtZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIGR1cmF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxMDAwO1xuICAgICAgdmFyIGxhbmRtYXJrID0gdGhpcy5sYW5kbWFya3MuZmluZChmdW5jdGlvbiAobCkge1xuICAgICAgICByZXR1cm4gbC5uYW1lID09PSBuYW1lO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChsYW5kbWFyaykge1xuICAgICAgICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgICAgICBsYW5kbWFyay5yZXRyaWV2ZSh0aGlzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYW5kbWFya0FuaW1hdGlvbklEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5sYW5kbWFya0FuaW1hdGlvbklEKTtcbiAgICAgICAgfSAvLyBUT0RPOiBkbyBub3QgcHJvY2VzcyBldmVudHMgZHVyaW5nIGFuaW1hdGlvblxuXG5cbiAgICAgICAgdGhpcy5pbnRlcmFjdG9yLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdmFyIGRlc3RQb3NpdGlvbiA9IGxhbmRtYXJrLmdldFBvc2l0aW9uKCk7XG4gICAgICAgIHZhciBkZXN0Rm9jYWxQb2ludCA9IGxhbmRtYXJrLmdldEZvY2FsUG9pbnQoKTtcbiAgICAgICAgdmFyIGRlc3RSb2xsID0gbGFuZG1hcmsuZ2V0Um9sbCgpO1xuICAgICAgICB2YXIgdGltZVN0YXJ0O1xuXG4gICAgICAgIHZhciBhbmltYXRlID0gZnVuY3Rpb24gYW5pbWF0ZSh0aW1lc3RhbXApIHtcbiAgICAgICAgICBpZiAodGltZVN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRpbWVTdGFydCA9IHRpbWVzdGFtcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHRpbWVTdGFydDsgLy8gVE9ETzogdXNlIGJldHRlciBlYXNlIGZ1bmN0aW9uXG5cbiAgICAgICAgICB2YXIgdCA9ICgxIC0gTWF0aC5jb3MoZWxhcHNlZCAvIGR1cmF0aW9uICogTWF0aC5QSSkpIC8gMjtcbiAgICAgICAgICB2YXIgaW50ZXJGb2NhbFBvaW50ID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgICAgICB2YXIgaW50ZXJQb3NpdGlvbiA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgdmFyIGludGVyUm9sbCA9IDA7XG4gICAgICAgICAgdmVjMy5sZXJwKGludGVyRm9jYWxQb2ludCwgX3RoaXMuZm9jYWxQb2ludCwgZGVzdEZvY2FsUG9pbnQsIHQpO1xuICAgICAgICAgIHZlYzMubGVycChpbnRlclBvc2l0aW9uLCBfdGhpcy5wb3NpdGlvbiwgZGVzdFBvc2l0aW9uLCB0KTtcbiAgICAgICAgICBpbnRlclJvbGwgPSBfdGhpcy5yb2xsICogKDEgLSB0KSArIGRlc3RSb2xsICogdDtcblxuICAgICAgICAgIF90aGlzLnNldEZvY2FsUG9pbnQoaW50ZXJGb2NhbFBvaW50KTtcblxuICAgICAgICAgIF90aGlzLnNldFBvc2l0aW9uKGludGVyUG9zaXRpb24pO1xuXG4gICAgICAgICAgX3RoaXMuc2V0Um9sbChpbnRlclJvbGwpO1xuXG4gICAgICAgICAgX3RoaXMuY29tcHV0ZU1hdHJpeCgpO1xuXG4gICAgICAgICAgdmFyIGRpc3QgPSB2ZWMzLmRpc3QoaW50ZXJGb2NhbFBvaW50LCBkZXN0Rm9jYWxQb2ludCkgKyB2ZWMzLmRpc3QoaW50ZXJQb3NpdGlvbiwgZGVzdFBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmIChkaXN0ID4gMC4wMSkgey8vXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLnNldEZvY2FsUG9pbnQoaW50ZXJGb2NhbFBvaW50KTtcblxuICAgICAgICAgICAgX3RoaXMuc2V0UG9zaXRpb24oaW50ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgICAgIF90aGlzLnNldFJvbGwoaW50ZXJSb2xsKTtcblxuICAgICAgICAgICAgX3RoaXMuY29tcHV0ZU1hdHJpeCgpO1xuXG4gICAgICAgICAgICBfdGhpcy5pbnRlcmFjdG9yLmNvbm5lY3QoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgICAgICAgIF90aGlzLmxhbmRtYXJrQW5pbWF0aW9uSUQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmoLnmja7nm7jmnLrnn6npmLXph43mlrDorqHnrpflkITnp43nm7jmnLrlj4LmlbBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl91cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3VwZGF0ZSgpIHtcbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcblxuICAgICAgdGhpcy5fZ2V0RGlzdGFuY2UoKTtcblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuoeeul+ebuOacuuefqemYtVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcHV0ZU1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wdXRlTWF0cml4KCkge1xuICAgICAgdmFyIHJvdFg7XG4gICAgICB2YXIgcm90WTsgLy8g5L2/55So5Zub5YWD5pWw5o+P6L+wIDNEIOaXi+i9rFxuICAgICAgLy8gQHNlZSBodHRwczovL3hpYW9pdmVyLmdpdGh1Yi5pby9jb2RpbmcvMjAxOC8xMi8yOC9DYW1lcmEtJUU4JUFFJUJFJUU4JUFFJUExLSVFNCVCOCU4MC5odG1sXG5cbiAgICAgIHZhciByb3RaID0gcXVhdC5zZXRBeGlzQW5nbGUocXVhdC5jcmVhdGUoKSwgWzAsIDAsIDFdLCB0aGlzLnJvbGwgKiBERUdfMl9SQUQpO1xuICAgICAgbWF0NC5pZGVudGl0eSh0aGlzLm1hdHJpeCk7IC8vIG9ubHkgY29uc2lkZXIgSENTIGZvciBFWFBMT1JJTkcgYW5kIE9SQklUSU5HIGNhbWVyYXNcblxuICAgICAgcm90WCA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFsxLCAwLCAwXSwgKHRoaXMucm90YXRlV29ybGQgJiYgdGhpcy50eXBlICE9PSBDQU1FUkFfVFlQRS5UUkFDS0lORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HID8gMSA6IC0xKSAqIHRoaXMuZWxldmF0aW9uICogREVHXzJfUkFEKTtcbiAgICAgIHJvdFkgPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMCwgMSwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkICYmIHRoaXMudHlwZSAhPT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORyA/IDEgOiAtMSkgKiB0aGlzLmF6aW11dGggKiBERUdfMl9SQUQpO1xuICAgICAgdmFyIHJvdFEgPSBxdWF0Lm11bHRpcGx5KHF1YXQuY3JlYXRlKCksIHJvdFksIHJvdFgpO1xuICAgICAgcm90USA9IHF1YXQubXVsdGlwbHkocXVhdC5jcmVhdGUoKSwgcm90USwgcm90Wik7XG4gICAgICB2YXIgcm90TWF0cml4ID0gbWF0NC5mcm9tUXVhdChtYXQ0LmNyZWF0ZSgpLCByb3RRKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCB0aGlzLmZvY2FsUG9pbnQpO1xuICAgICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgcm90TWF0cml4KTtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCBbMCwgMCwgdGhpcy5kaXN0YW5jZV0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgdGhpcy5wb3NpdGlvbik7XG4gICAgICAgIG1hdDQubXVsdGlwbHkodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCByb3RNYXRyaXgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjYW1lcmEgcG9zaXRpb24gaW4gdGhlIGNhbWVyYSBtYXRyaXhcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9zZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0UG9zaXRpb24oeCwgeSwgeikge1xuICAgICAgdGhpcy5wb3NpdGlvbiA9IGNyZWF0ZVZlYzMoeCwgeSwgeik7XG4gICAgICB2YXIgbSA9IHRoaXMubWF0cml4O1xuICAgICAgbVsxMl0gPSB0aGlzLnBvc2l0aW9uWzBdO1xuICAgICAgbVsxM10gPSB0aGlzLnBvc2l0aW9uWzFdO1xuICAgICAgbVsxNF0gPSB0aGlzLnBvc2l0aW9uWzJdO1xuICAgICAgbVsxNV0gPSAxO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWNhbGN1bGF0ZXMgYXhlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBtYXRyaXhcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRBeGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRBeGVzKCkge1xuICAgICAgdmVjMy5jb3B5KHRoaXMucmlnaHQsIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFsxLCAwLCAwLCAwXSwgdGhpcy5tYXRyaXgpKSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy51cCwgY3JlYXRlVmVjMyh2ZWM0LnRyYW5zZm9ybU1hdDQodmVjNC5jcmVhdGUoKSwgWzAsIDEsIDAsIDBdLCB0aGlzLm1hdHJpeCkpKTtcbiAgICAgIHZlYzMuY29weSh0aGlzLmZvcndhcmQsIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFswLCAwLCAxLCAwXSwgdGhpcy5tYXRyaXgpKSk7XG4gICAgICB2ZWMzLm5vcm1hbGl6ZSh0aGlzLnJpZ2h0LCB0aGlzLnJpZ2h0KTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRoaXMudXAsIHRoaXMudXApO1xuICAgICAgdmVjMy5ub3JtYWxpemUodGhpcy5mb3J3YXJkLCB0aGlzLmZvcndhcmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWNhbGN1bGF0ZXMgZXVsZXIgYW5nbGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QW5nbGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRBbmdsZXMoKSB7XG4gICAgICAvLyBSZWNhbGN1bGF0ZXMgYW5nbGVzXG4gICAgICB2YXIgeCA9IHRoaXMuZGlzdGFuY2VWZWN0b3JbMF07XG4gICAgICB2YXIgeSA9IHRoaXMuZGlzdGFuY2VWZWN0b3JbMV07XG4gICAgICB2YXIgeiA9IHRoaXMuZGlzdGFuY2VWZWN0b3JbMl07XG4gICAgICB2YXIgciA9IHZlYzMubGVuZ3RoKHRoaXMuZGlzdGFuY2VWZWN0b3IpOyAvLyBGQVNUIEZBSUw6IElmIHRoZXJlIGlzIG5vIGRpc3RhbmNlIHdlIGNhbm5vdCBjb21wdXRlIGFuZ2xlc1xuXG4gICAgICBpZiAociA9PT0gMCkge1xuICAgICAgICB0aGlzLmVsZXZhdGlvbiA9IDA7XG4gICAgICAgIHRoaXMuYXppbXV0aCA9IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgdGhpcy5lbGV2YXRpb24gPSBNYXRoLmFzaW4oeSAvIHIpICogUkFEXzJfREVHO1xuICAgICAgICB0aGlzLmF6aW11dGggPSBNYXRoLmF0YW4yKC14LCAteikgKiBSQURfMl9ERUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5yb3RhdGVXb3JsZCkge1xuICAgICAgICAgIHRoaXMuZWxldmF0aW9uID0gTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgICB0aGlzLmF6aW11dGggPSBNYXRoLmF0YW4yKC14LCAteikgKiBSQURfMl9ERUc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbGV2YXRpb24gPSAtTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgICB0aGlzLmF6aW11dGggPSAtTWF0aC5hdGFuMigteCwgLXopICogUkFEXzJfREVHO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmHjeaWsOiuoeeul+ebuOacuuS9jee9ru+8jOWPquaciSBPUkJJVElORyDmqKHlvI/nm7jmnLrkvY3nva7miY3kvJrlj5HnlJ/lj5jljJZcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0UG9zaXRpb24oKSB7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5wb3NpdGlvbiwgY3JlYXRlVmVjMyh2ZWM0LnRyYW5zZm9ybU1hdDQodmVjNC5jcmVhdGUoKSwgWzAsIDAsIDAsIDFdLCB0aGlzLm1hdHJpeCkpKTsgLy8g55u45py65L2N572u5Y+Y5YyW77yM6ZyA6KaB6YeN5paw6K6h566X6KeG6LedXG5cbiAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmHjeaWsOiuoeeul+inhueCue+8jOWPquaciSBUUkFDS0lORyDmqKHlvI/op4bngrnmiY3kvJrlj5HnlJ/lj5jljJZcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRGb2NhbFBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRGb2NhbFBvaW50KCkge1xuICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKHRoaXMuZGlzdGFuY2VWZWN0b3IsIFswLCAwLCAtdGhpcy5kaXN0YW5jZV0sIG1hdDMuZnJvbU1hdDQobWF0My5jcmVhdGUoKSwgdGhpcy5tYXRyaXgpKTtcbiAgICAgIHZlYzMuYWRkKHRoaXMuZm9jYWxQb2ludCwgdGhpcy5wb3NpdGlvbiwgdGhpcy5kaXN0YW5jZVZlY3Rvcik7IC8vIOinhueCueWPmOWMlu+8jOmcgOimgemHjeaWsOiuoeeul+inhui3nVxuXG4gICAgICB0aGlzLl9nZXREaXN0YW5jZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDph43mlrDorqHnrpfop4bot51cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXREaXN0YW5jZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0RGlzdGFuY2UoKSB7XG4gICAgICB0aGlzLmRpc3RhbmNlVmVjdG9yID0gdmVjMy5zdWJ0cmFjdCh2ZWMzLmNyZWF0ZSgpLCB0aGlzLmZvY2FsUG9pbnQsIHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5kaXN0YW5jZSA9IHZlYzMubGVuZ3RoKHRoaXMuZGlzdGFuY2VWZWN0b3IpO1xuICAgICAgdGhpcy5kb2xseWluZ1N0ZXAgPSB0aGlzLmRpc3RhbmNlIC8gMTAwO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDYW1lcmE7XG59KCksIF9jbGFzczMuUHJvamVjdGlvbk1vZGUgPSB7XG4gIE9SVEhPR1JBUEhJQzogJ09SVEhPR1JBUEhJQycsXG4gIFBFUlNQRUNUSVZFOiAnUEVSU1BFQ1RJVkUnXG59LCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiaW50ZXJhY3RvclwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FtZXJhLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Landmark; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * 保存相机状态,便于后续在多个 Landmark 间移动\n */\nvar Landmark = /*#__PURE__*/function () {\n function Landmark(name, c) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Landmark);\n\n this.name = void 0;\n this.matrix = void 0;\n this.right = void 0;\n this.up = void 0;\n this.forward = void 0;\n this.position = void 0;\n this.focalPoint = void 0;\n this.distanceVector = void 0;\n this.distance = void 0;\n this.dollyingStep = void 0;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.name = name;\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].clone(c.matrix);\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.right);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.up);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.forward);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.position);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.focalPoint);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.distanceVector);\n this.azimuth = c.azimuth;\n this.elevation = c.elevation;\n this.roll = c.roll;\n this.relAzimuth = c.relAzimuth;\n this.relElevation = c.relElevation;\n this.relRoll = c.relRoll;\n this.dollyingStep = c.dollyingStep;\n this.distance = c.distance;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Landmark, [{\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"getFocalPoint\",\n value: function getFocalPoint() {\n return this.focalPoint;\n }\n }, {\n key: \"getRoll\",\n value: function getRoll() {\n return this.roll;\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(c) {\n c.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].copy(c.matrix, this.matrix);\n c.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.right, this.right);\n c.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.up, this.up);\n c.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.forward, this.forward);\n c.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.position, this.position);\n c.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.focalPoint, this.focalPoint);\n c.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.distanceVector, this.distanceVector);\n c.azimuth = this.azimuth;\n c.elevation = this.elevation;\n c.roll = this.roll;\n c.relAzimuth = this.relAzimuth;\n c.relElevation = this.relElevation;\n c.relRoll = this.relRoll;\n c.dollyingStep = this.dollyingStep;\n c.distance = this.distance;\n }\n }]);\n\n return Landmark;\n}();\n\n\n//# sourceMappingURL=Landmark.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2NhbWVyYS9MYW5kbWFyay5qcz8wMDkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDdkI7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDhDQUFJO0FBQ3RCLGlCQUFpQiw4Q0FBSTtBQUNyQixjQUFjLDhDQUFJO0FBQ2xCLG1CQUFtQiw4Q0FBSTtBQUN2QixvQkFBb0IsOENBQUk7QUFDeEIsc0JBQXNCLDhDQUFJO0FBQzFCLDBCQUEwQiw4Q0FBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQkFBaUIsOENBQUk7QUFDckIsZ0JBQWdCLDhDQUFJO0FBQ3BCLGFBQWEsOENBQUk7QUFDakIsa0JBQWtCLDhDQUFJO0FBQ3RCLG1CQUFtQiw4Q0FBSTtBQUN2QixxQkFBcUIsOENBQUk7QUFDekIseUJBQXlCLDhDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUU4QjtBQUMvQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0xhbmRtYXJrLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgbWF0NCwgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICog5L+d5a2Y55u45py654q25oCB77yM5L6/5LqO5ZCO57ut5Zyo5aSa5LiqIExhbmRtYXJrIOmXtOenu+WKqFxuICovXG52YXIgTGFuZG1hcmsgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYW5kbWFyayhuYW1lLCBjKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExhbmRtYXJrKTtcblxuICAgIHRoaXMubmFtZSA9IHZvaWQgMDtcbiAgICB0aGlzLm1hdHJpeCA9IHZvaWQgMDtcbiAgICB0aGlzLnJpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMudXAgPSB2b2lkIDA7XG4gICAgdGhpcy5mb3J3YXJkID0gdm9pZCAwO1xuICAgIHRoaXMucG9zaXRpb24gPSB2b2lkIDA7XG4gICAgdGhpcy5mb2NhbFBvaW50ID0gdm9pZCAwO1xuICAgIHRoaXMuZGlzdGFuY2VWZWN0b3IgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXN0YW5jZSA9IHZvaWQgMDtcbiAgICB0aGlzLmRvbGx5aW5nU3RlcCA9IHZvaWQgMDtcbiAgICB0aGlzLmF6aW11dGggPSAwO1xuICAgIHRoaXMuZWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJvbGwgPSAwO1xuICAgIHRoaXMucmVsQXppbXV0aCA9IDA7XG4gICAgdGhpcy5yZWxFbGV2YXRpb24gPSAwO1xuICAgIHRoaXMucmVsUm9sbCA9IDA7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1hdHJpeCA9IG1hdDQuY2xvbmUoYy5tYXRyaXgpO1xuICAgIHRoaXMucmlnaHQgPSB2ZWMzLmNsb25lKGMucmlnaHQpO1xuICAgIHRoaXMudXAgPSB2ZWMzLmNsb25lKGMudXApO1xuICAgIHRoaXMuZm9yd2FyZCA9IHZlYzMuY2xvbmUoYy5mb3J3YXJkKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gdmVjMy5jbG9uZShjLnBvc2l0aW9uKTtcbiAgICB0aGlzLmZvY2FsUG9pbnQgPSB2ZWMzLmNsb25lKGMuZm9jYWxQb2ludCk7XG4gICAgdGhpcy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuY2xvbmUoYy5kaXN0YW5jZVZlY3Rvcik7XG4gICAgdGhpcy5hemltdXRoID0gYy5hemltdXRoO1xuICAgIHRoaXMuZWxldmF0aW9uID0gYy5lbGV2YXRpb247XG4gICAgdGhpcy5yb2xsID0gYy5yb2xsO1xuICAgIHRoaXMucmVsQXppbXV0aCA9IGMucmVsQXppbXV0aDtcbiAgICB0aGlzLnJlbEVsZXZhdGlvbiA9IGMucmVsRWxldmF0aW9uO1xuICAgIHRoaXMucmVsUm9sbCA9IGMucmVsUm9sbDtcbiAgICB0aGlzLmRvbGx5aW5nU3RlcCA9IGMuZG9sbHlpbmdTdGVwO1xuICAgIHRoaXMuZGlzdGFuY2UgPSBjLmRpc3RhbmNlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExhbmRtYXJrLCBbe1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGb2NhbFBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZvY2FsUG9pbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb2NhbFBvaW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRSb2xsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFJvbGwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb2xsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXRyaWV2ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXRyaWV2ZShjKSB7XG4gICAgICBjLm1hdHJpeCA9IG1hdDQuY29weShjLm1hdHJpeCwgdGhpcy5tYXRyaXgpO1xuICAgICAgYy5yaWdodCA9IHZlYzMuY29weShjLnJpZ2h0LCB0aGlzLnJpZ2h0KTtcbiAgICAgIGMudXAgPSB2ZWMzLmNvcHkoYy51cCwgdGhpcy51cCk7XG4gICAgICBjLmZvcndhcmQgPSB2ZWMzLmNvcHkoYy5mb3J3YXJkLCB0aGlzLmZvcndhcmQpO1xuICAgICAgYy5wb3NpdGlvbiA9IHZlYzMuY29weShjLnBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGMuZm9jYWxQb2ludCA9IHZlYzMuY29weShjLmZvY2FsUG9pbnQsIHRoaXMuZm9jYWxQb2ludCk7XG4gICAgICBjLmRpc3RhbmNlVmVjdG9yID0gdmVjMy5jb3B5KGMuZGlzdGFuY2VWZWN0b3IsIHRoaXMuZGlzdGFuY2VWZWN0b3IpO1xuICAgICAgYy5hemltdXRoID0gdGhpcy5hemltdXRoO1xuICAgICAgYy5lbGV2YXRpb24gPSB0aGlzLmVsZXZhdGlvbjtcbiAgICAgIGMucm9sbCA9IHRoaXMucm9sbDtcbiAgICAgIGMucmVsQXppbXV0aCA9IHRoaXMucmVsQXppbXV0aDtcbiAgICAgIGMucmVsRWxldmF0aW9uID0gdGhpcy5yZWxFbGV2YXRpb247XG4gICAgICBjLnJlbFJvbGwgPSB0aGlzLnJlbFJvbGw7XG4gICAgICBjLmRvbGx5aW5nU3RlcCA9IHRoaXMuZG9sbHlpbmdTdGVwO1xuICAgICAgYy5kaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2U7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIExhbmRtYXJrO1xufSgpO1xuXG5leHBvcnQgeyBMYW5kbWFyayBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MYW5kbWFyay5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js ***! \******************************************************************************/ /*! exports provided: Box */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Box\", function() { return Box; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\nvar primitiveUv1Padding = 4.0 / 64;\nvar primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nvar\n/**\n * borrow from playcanvas:\n * Creates a procedural box-shaped mesh\n */\nBox = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Box, _Geometry);\n\n var _super = _createSuper(Box);\n\n function Box() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Box);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Box, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 1 : _this$config$widthSeg,\n _this$config$heightSe = _this$config.heightSegments,\n heightSegments = _this$config$heightSe === void 0 ? 1 : _this$config$heightSe,\n _this$config$depthSeg = _this$config.depthSegments,\n depthSegments = _this$config$depthSeg === void 0 ? 1 : _this$config$depthSeg,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(0.5, 0.5, 0.5) : _this$config$halfExte;\n var ws = widthSegments;\n var hs = heightSegments;\n var ds = depthSegments;\n\n var _halfExtents = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(halfExtents, 3),\n hex = _halfExtents[0],\n hey = _halfExtents[1],\n hez = _halfExtents[2];\n\n var corners = [gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, -hez)];\n var faceAxes = [[0, 1, 3], // FRONT\n [4, 5, 7], // BACK\n [3, 2, 6], // TOP\n [1, 0, 4], // BOTTOM\n [1, 4, 2], // RIGHT\n [5, 0, 6] // LEFT\n ];\n var faceNormals = [[0, 0, 1], // FRONT\n [0, 0, -1], // BACK\n [0, 1, 0], // TOP\n [0, -1, 0], // BOTTOM\n [1, 0, 0], // RIGHT\n [-1, 0, 0] // LEFT\n ];\n var sides = {\n FRONT: 0,\n BACK: 1,\n TOP: 2,\n BOTTOM: 3,\n RIGHT: 4,\n LEFT: 5\n };\n var positions = [];\n var normals = [];\n var uvs = [];\n var uvs1 = [];\n var indices = [];\n var vcounter = 0;\n\n var generateFace = function generateFace(side, uSegments, vSegments) {\n var u;\n var v;\n var i;\n var j;\n\n for (i = 0; i <= uSegments; i++) {\n for (j = 0; j <= vSegments; j++) {\n var temp1 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp2 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp3 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp1, corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp2, corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].sub(temp3, temp2, corners[faceAxes[side][0]]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].add(r, temp1, temp3);\n u = i / uSegments;\n v = j / vSegments;\n positions.push(r[0], r[1], r[2]);\n normals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n uvs.push(u, v); // pack as 3x2\n // 1/3 will be empty, but it's either that or stretched pixels\n // TODO: generate non-rectangular lightMaps, so we could use space without stretching\n\n u /= 3;\n v /= 3;\n u = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n v = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n u += side % 3 / 3;\n v += Math.floor(side / 3) / 3;\n uvs1.push(u, v);\n\n if (i < uSegments && j < vSegments) {\n indices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n }\n };\n\n generateFace(sides.FRONT, ws, hs);\n generateFace(sides.BACK, ws, hs);\n generateFace(sides.TOP, ws, ds);\n generateFace(sides.BOTTOM, ws, ds);\n generateFace(sides.RIGHT, ds, hs);\n generateFace(sides.LEFT, ds, hs); // generate AABB\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Box;\n}(___WEBPACK_IMPORTED_MODULE_9__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Box.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L0JveC5qcz84OTJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtFO0FBQ0U7QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVuUTtBQUM5QjtBQUNNO0FBQ1Y7QUFDN0I7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFVO0FBQ3hCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCw4Q0FBSTtBQUMvRDtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLDJFQUFjO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsOENBQUksOEJBQThCLDhDQUFJLDZCQUE2Qiw4Q0FBSSw0QkFBNEIsOENBQUksNkJBQTZCLDhDQUFJLDhCQUE4Qiw4Q0FBSSwrQkFBK0IsOENBQUksOEJBQThCLDhDQUFJO0FBQ3BRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQyxxQkFBcUIsZ0JBQWdCO0FBQ3JDLHdCQUF3Qiw4Q0FBSTtBQUM1Qix3QkFBd0IsOENBQUk7QUFDNUIsd0JBQXdCLDhDQUFJO0FBQzVCLG9CQUFvQiw4Q0FBSTtBQUN4QixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTtBQUNoQixZQUFZLDhDQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkMsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7QUFDVDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMENBQVE7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvQm94LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuJztcbnZhciBwcmltaXRpdmVVdjFQYWRkaW5nID0gNC4wIC8gNjQ7XG52YXIgcHJpbWl0aXZlVXYxUGFkZGluZ1NjYWxlID0gMS4wIC0gcHJpbWl0aXZlVXYxUGFkZGluZyAqIDI7XG5leHBvcnQgdmFyXG4vKipcbiAqIGJvcnJvdyBmcm9tIHBsYXljYW52YXM6XG4gKiBDcmVhdGVzIGEgcHJvY2VkdXJhbCBib3gtc2hhcGVkIG1lc2hcbiAqL1xuQm94ID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKEJveCwgX0dlb21ldHJ5KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEJveCk7XG5cbiAgZnVuY3Rpb24gQm94KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCb3gpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEJveCwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckd2lkdGhTZWcgPSBfdGhpcyRjb25maWcud2lkdGhTZWdtZW50cyxcbiAgICAgICAgICB3aWR0aFNlZ21lbnRzID0gX3RoaXMkY29uZmlnJHdpZHRoU2VnID09PSB2b2lkIDAgPyAxIDogX3RoaXMkY29uZmlnJHdpZHRoU2VnLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRoZWlnaHRTZSA9IF90aGlzJGNvbmZpZy5oZWlnaHRTZWdtZW50cyxcbiAgICAgICAgICBoZWlnaHRTZWdtZW50cyA9IF90aGlzJGNvbmZpZyRoZWlnaHRTZSA9PT0gdm9pZCAwID8gMSA6IF90aGlzJGNvbmZpZyRoZWlnaHRTZSxcbiAgICAgICAgICBfdGhpcyRjb25maWckZGVwdGhTZWcgPSBfdGhpcyRjb25maWcuZGVwdGhTZWdtZW50cyxcbiAgICAgICAgICBkZXB0aFNlZ21lbnRzID0gX3RoaXMkY29uZmlnJGRlcHRoU2VnID09PSB2b2lkIDAgPyAxIDogX3RoaXMkY29uZmlnJGRlcHRoU2VnLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRoYWxmRXh0ZSA9IF90aGlzJGNvbmZpZy5oYWxmRXh0ZW50cyxcbiAgICAgICAgICBoYWxmRXh0ZW50cyA9IF90aGlzJGNvbmZpZyRoYWxmRXh0ZSA9PT0gdm9pZCAwID8gdmVjMy5mcm9tVmFsdWVzKDAuNSwgMC41LCAwLjUpIDogX3RoaXMkY29uZmlnJGhhbGZFeHRlO1xuICAgICAgdmFyIHdzID0gd2lkdGhTZWdtZW50cztcbiAgICAgIHZhciBocyA9IGhlaWdodFNlZ21lbnRzO1xuICAgICAgdmFyIGRzID0gZGVwdGhTZWdtZW50cztcblxuICAgICAgdmFyIF9oYWxmRXh0ZW50cyA9IF9zbGljZWRUb0FycmF5KGhhbGZFeHRlbnRzLCAzKSxcbiAgICAgICAgICBoZXggPSBfaGFsZkV4dGVudHNbMF0sXG4gICAgICAgICAgaGV5ID0gX2hhbGZFeHRlbnRzWzFdLFxuICAgICAgICAgIGhleiA9IF9oYWxmRXh0ZW50c1syXTtcblxuICAgICAgdmFyIGNvcm5lcnMgPSBbdmVjMy5mcm9tVmFsdWVzKC1oZXgsIC1oZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIC1oZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIGhleSwgaGV6KSwgdmVjMy5mcm9tVmFsdWVzKC1oZXgsIGhleSwgaGV6KSwgdmVjMy5mcm9tVmFsdWVzKGhleCwgLWhleSwgLWhleiksIHZlYzMuZnJvbVZhbHVlcygtaGV4LCAtaGV5LCAtaGV6KSwgdmVjMy5mcm9tVmFsdWVzKC1oZXgsIGhleSwgLWhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIGhleSwgLWhleildO1xuICAgICAgdmFyIGZhY2VBeGVzID0gW1swLCAxLCAzXSwgLy8gRlJPTlRcbiAgICAgIFs0LCA1LCA3XSwgLy8gQkFDS1xuICAgICAgWzMsIDIsIDZdLCAvLyBUT1BcbiAgICAgIFsxLCAwLCA0XSwgLy8gQk9UVE9NXG4gICAgICBbMSwgNCwgMl0sIC8vIFJJR0hUXG4gICAgICBbNSwgMCwgNl0gLy8gTEVGVFxuICAgICAgXTtcbiAgICAgIHZhciBmYWNlTm9ybWFscyA9IFtbMCwgMCwgMV0sIC8vIEZST05UXG4gICAgICBbMCwgMCwgLTFdLCAvLyBCQUNLXG4gICAgICBbMCwgMSwgMF0sIC8vIFRPUFxuICAgICAgWzAsIC0xLCAwXSwgLy8gQk9UVE9NXG4gICAgICBbMSwgMCwgMF0sIC8vIFJJR0hUXG4gICAgICBbLTEsIDAsIDBdIC8vIExFRlRcbiAgICAgIF07XG4gICAgICB2YXIgc2lkZXMgPSB7XG4gICAgICAgIEZST05UOiAwLFxuICAgICAgICBCQUNLOiAxLFxuICAgICAgICBUT1A6IDIsXG4gICAgICAgIEJPVFRPTTogMyxcbiAgICAgICAgUklHSFQ6IDQsXG4gICAgICAgIExFRlQ6IDVcbiAgICAgIH07XG4gICAgICB2YXIgcG9zaXRpb25zID0gW107XG4gICAgICB2YXIgbm9ybWFscyA9IFtdO1xuICAgICAgdmFyIHV2cyA9IFtdO1xuICAgICAgdmFyIHV2czEgPSBbXTtcbiAgICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgICB2YXIgdmNvdW50ZXIgPSAwO1xuXG4gICAgICB2YXIgZ2VuZXJhdGVGYWNlID0gZnVuY3Rpb24gZ2VuZXJhdGVGYWNlKHNpZGUsIHVTZWdtZW50cywgdlNlZ21lbnRzKSB7XG4gICAgICAgIHZhciB1O1xuICAgICAgICB2YXIgdjtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBqO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPD0gdVNlZ21lbnRzOyBpKyspIHtcbiAgICAgICAgICBmb3IgKGogPSAwOyBqIDw9IHZTZWdtZW50czsgaisrKSB7XG4gICAgICAgICAgICB2YXIgdGVtcDEgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmFyIHRlbXAyID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgICAgICAgIHZhciB0ZW1wMyA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgciA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgICB2ZWMzLmxlcnAodGVtcDEsIGNvcm5lcnNbZmFjZUF4ZXNbc2lkZV1bMF1dLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzFdXSwgaSAvIHVTZWdtZW50cyk7XG4gICAgICAgICAgICB2ZWMzLmxlcnAodGVtcDIsIGNvcm5lcnNbZmFjZUF4ZXNbc2lkZV1bMF1dLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzJdXSwgaiAvIHZTZWdtZW50cyk7XG4gICAgICAgICAgICB2ZWMzLnN1Yih0ZW1wMywgdGVtcDIsIGNvcm5lcnNbZmFjZUF4ZXNbc2lkZV1bMF1dKTtcbiAgICAgICAgICAgIHZlYzMuYWRkKHIsIHRlbXAxLCB0ZW1wMyk7XG4gICAgICAgICAgICB1ID0gaSAvIHVTZWdtZW50cztcbiAgICAgICAgICAgIHYgPSBqIC8gdlNlZ21lbnRzO1xuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2goclswXSwgclsxXSwgclsyXSk7XG4gICAgICAgICAgICBub3JtYWxzLnB1c2goZmFjZU5vcm1hbHNbc2lkZV1bMF0sIGZhY2VOb3JtYWxzW3NpZGVdWzFdLCBmYWNlTm9ybWFsc1tzaWRlXVsyXSk7XG4gICAgICAgICAgICB1dnMucHVzaCh1LCB2KTsgLy8gcGFjayBhcyAzeDJcbiAgICAgICAgICAgIC8vIDEvMyB3aWxsIGJlIGVtcHR5LCBidXQgaXQncyBlaXRoZXIgdGhhdCBvciBzdHJldGNoZWQgcGl4ZWxzXG4gICAgICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSBub24tcmVjdGFuZ3VsYXIgbGlnaHRNYXBzLCBzbyB3ZSBjb3VsZCB1c2Ugc3BhY2Ugd2l0aG91dCBzdHJldGNoaW5nXG5cbiAgICAgICAgICAgIHUgLz0gMztcbiAgICAgICAgICAgIHYgLz0gMztcbiAgICAgICAgICAgIHUgPSB1ICogcHJpbWl0aXZlVXYxUGFkZGluZ1NjYWxlICsgcHJpbWl0aXZlVXYxUGFkZGluZztcbiAgICAgICAgICAgIHYgPSB2ICogcHJpbWl0aXZlVXYxUGFkZGluZ1NjYWxlICsgcHJpbWl0aXZlVXYxUGFkZGluZztcbiAgICAgICAgICAgIHUgKz0gc2lkZSAlIDMgLyAzO1xuICAgICAgICAgICAgdiArPSBNYXRoLmZsb29yKHNpZGUgLyAzKSAvIDM7XG4gICAgICAgICAgICB1dnMxLnB1c2godSwgdik7XG5cbiAgICAgICAgICAgIGlmIChpIDwgdVNlZ21lbnRzICYmIGogPCB2U2VnbWVudHMpIHtcbiAgICAgICAgICAgICAgaW5kaWNlcy5wdXNoKHZjb3VudGVyICsgdlNlZ21lbnRzICsgMSwgdmNvdW50ZXIgKyAxLCB2Y291bnRlcik7XG4gICAgICAgICAgICAgIGluZGljZXMucHVzaCh2Y291bnRlciArIHZTZWdtZW50cyArIDEsIHZjb3VudGVyICsgdlNlZ21lbnRzICsgMiwgdmNvdW50ZXIgKyAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmNvdW50ZXIrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5GUk9OVCwgd3MsIGhzKTtcbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5CQUNLLCB3cywgaHMpO1xuICAgICAgZ2VuZXJhdGVGYWNlKHNpZGVzLlRPUCwgd3MsIGRzKTtcbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5CT1RUT00sIHdzLCBkcyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuUklHSFQsIGRzLCBocyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuTEVGVCwgZHMsIGhzKTsgLy8gZ2VuZXJhdGUgQUFCQlxuXG4gICAgICB2YXIgYWFiYiA9IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyhwb3NpdGlvbnMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBjb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20oaW5kaWNlcyk7XG4gICAgICBjb21wb25lbnQuYWFiYiA9IGFhYmI7XG4gICAgICBjb21wb25lbnQudmVydGV4Q291bnQgPSB2Y291bnRlcjtcbiAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzID0gW3tcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKHBvc2l0aW9ucyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAnbm9ybWFsJyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20obm9ybWFscyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAndXYnLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbSh1dnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfV07IC8vIFRPRE86IGJhcnljZW50cmljICYgdGFuZ2VudFxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCb3g7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJveC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js ***! \*********************************************************************************/ /*! exports provided: Merged */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Merged\", function() { return Merged; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js\");\n/* harmony import */ var _utils_typedarray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/typedarray */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar\n/**\n * merge many geometries into one, use a batch of draw calls\n */\nMerged = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Merged, _Geometry);\n\n var _super = _createSuper(Merged);\n\n function Merged() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Merged);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Merged, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config$geometri = this.config.geometries,\n geometries = _this$config$geometri === void 0 ? [] : _this$config$geometri;\n var mergedComponent = this.getComponent();\n mergedComponent.aabb = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n var mergedAttributes = [];\n var mergedIndices = [];\n var indexOffset = 0;\n geometries.forEach(function (geometry) {\n var aabb = geometry.aabb,\n indices = geometry.indices,\n vertexCount = geometry.vertexCount,\n attributes = geometry.attributes; // merge aabb\n\n mergedComponent.aabb.add(aabb);\n mergedComponent.vertexCount += vertexCount; // merge indices\n\n if (indices) {\n mergedIndices.push.apply(mergedIndices, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(indices.map(function (index) {\n return index + indexOffset;\n })));\n }\n\n indexOffset += vertexCount; // merge attributes\n\n attributes.forEach(function (attribute, i) {\n if (!mergedAttributes[i]) {\n mergedAttributes[i] = attribute;\n mergedAttributes[i].dirty = true;\n } else {\n if (attribute.data) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_9__[\"isNumber\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].push(attribute.data);\n } else if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__[\"isTypedArray\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].data = Object(_utils_typedarray__WEBPACK_IMPORTED_MODULE_11__[\"merge\"])( // @ts-ignore\n mergedAttributes[i].data, attribute.data);\n } else {\n // @ts-ignore\n mergedAttributes[i].data = mergedAttributes[i].data.concat(attribute.data);\n }\n }\n }\n });\n });\n mergedComponent.attributes = mergedAttributes;\n mergedComponent.indices = Uint32Array.from(mergedIndices);\n mergedComponent.dirty = true;\n }\n }]);\n\n return Merged;\n}(___WEBPACK_IMPORTED_MODULE_8__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Merged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L01lcmdlZC5qcz9jMGVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRTtBQUNOO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEU7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFdlI7QUFDSjtBQUNWO0FBQ2lCO0FBQ1E7QUFDVjtBQUNyQztBQUNQO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw0REFBVTtBQUMzQixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyx3REFBSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSxtREFBbUQ7O0FBRW5EO0FBQ0Esa0RBQWtELCtFQUFrQjtBQUNwRTtBQUNBLFdBQVc7QUFDWDs7QUFFQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0Esa0JBQWtCLGlFQUFRO0FBQzFCO0FBQ0E7QUFDQSxlQUFlLFVBQVUsMEVBQVk7QUFDckM7QUFDQSwyQ0FBMkMsZ0VBQUs7QUFDaEQ7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDBDQUFRO0FBQ1YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L01lcmdlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgQUFCQiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJy4nO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlscy9pcy1udW1iZXInO1xuaW1wb3J0IHsgaXNUeXBlZEFycmF5IH0gZnJvbSAnLi4vdXRpbHMvaXMtdHlwZWRhcnJheSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJy4uL3V0aWxzL3R5cGVkYXJyYXknO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBtZXJnZSBtYW55IGdlb21ldHJpZXMgaW50byBvbmUsIHVzZSBhIGJhdGNoIG9mIGRyYXcgY2FsbHNcbiAqL1xuTWVyZ2VkID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKE1lcmdlZCwgX0dlb21ldHJ5KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lcmdlZCk7XG5cbiAgZnVuY3Rpb24gTWVyZ2VkKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXJnZWQpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lcmdlZCwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWckZ2VvbWV0cmkgPSB0aGlzLmNvbmZpZy5nZW9tZXRyaWVzLFxuICAgICAgICAgIGdlb21ldHJpZXMgPSBfdGhpcyRjb25maWckZ2VvbWV0cmkgPT09IHZvaWQgMCA/IFtdIDogX3RoaXMkY29uZmlnJGdlb21ldHJpO1xuICAgICAgdmFyIG1lcmdlZENvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBtZXJnZWRDb21wb25lbnQuYWFiYiA9IG5ldyBBQUJCKCk7XG4gICAgICB2YXIgbWVyZ2VkQXR0cmlidXRlcyA9IFtdO1xuICAgICAgdmFyIG1lcmdlZEluZGljZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleE9mZnNldCA9IDA7XG4gICAgICBnZW9tZXRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGdlb21ldHJ5KSB7XG4gICAgICAgIHZhciBhYWJiID0gZ2VvbWV0cnkuYWFiYixcbiAgICAgICAgICAgIGluZGljZXMgPSBnZW9tZXRyeS5pbmRpY2VzLFxuICAgICAgICAgICAgdmVydGV4Q291bnQgPSBnZW9tZXRyeS52ZXJ0ZXhDb3VudCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBnZW9tZXRyeS5hdHRyaWJ1dGVzOyAvLyBtZXJnZSBhYWJiXG5cbiAgICAgICAgbWVyZ2VkQ29tcG9uZW50LmFhYmIuYWRkKGFhYmIpO1xuICAgICAgICBtZXJnZWRDb21wb25lbnQudmVydGV4Q291bnQgKz0gdmVydGV4Q291bnQ7IC8vIG1lcmdlIGluZGljZXNcblxuICAgICAgICBpZiAoaW5kaWNlcykge1xuICAgICAgICAgIG1lcmdlZEluZGljZXMucHVzaC5hcHBseShtZXJnZWRJbmRpY2VzLCBfdG9Db25zdW1hYmxlQXJyYXkoaW5kaWNlcy5tYXAoZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5kZXggKyBpbmRleE9mZnNldDtcbiAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXhPZmZzZXQgKz0gdmVydGV4Q291bnQ7IC8vIG1lcmdlIGF0dHJpYnV0ZXNcblxuICAgICAgICBhdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSwgaSkge1xuICAgICAgICAgIGlmICghbWVyZ2VkQXR0cmlidXRlc1tpXSkge1xuICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXSA9IGF0dHJpYnV0ZTtcbiAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGlydHkgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlLmRhdGEpIHtcbiAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGF0dHJpYnV0ZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2ldLnB1c2goYXR0cmlidXRlLmRhdGEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVHlwZWRBcnJheShhdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhID0gbWVyZ2UoIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2ldLmRhdGEsIGF0dHJpYnV0ZS5kYXRhKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhID0gbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhLmNvbmNhdChhdHRyaWJ1dGUuZGF0YSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBtZXJnZWRDb21wb25lbnQuYXR0cmlidXRlcyA9IG1lcmdlZEF0dHJpYnV0ZXM7XG4gICAgICBtZXJnZWRDb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20obWVyZ2VkSW5kaWNlcyk7XG4gICAgICBtZXJnZWRDb21wb25lbnQuZGlydHkgPSB0cnVlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBNZXJnZWQ7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lcmdlZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js ***! \********************************************************************************/ /*! exports provided: Plane */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nPlane = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Plane, _Geometry);\n\n var _super = _createSuper(Plane);\n\n function Plane() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? [0.5, 0.5] : _this$config$halfExte,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 5 : _this$config$widthSeg,\n _this$config$lengthSe = _this$config.lengthSegments,\n lengthSegments = _this$config$lengthSe === void 0 ? 5 : _this$config$lengthSe;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n var vcounter = 0;\n\n for (var i = 0; i <= widthSegments; i++) {\n for (var j = 0; j <= lengthSegments; j++) {\n var x = -halfExtents[0] + 2.0 * halfExtents[0] * i / widthSegments;\n var y = 0.0;\n var z = -(-halfExtents[1] + 2.0 * halfExtents[1] * j / lengthSegments);\n var u = i / widthSegments;\n var v = j / lengthSegments;\n positions.push(x, y, z);\n normals.push(0.0, 1.0, 0.0);\n uvs.push(u, v);\n\n if (i < widthSegments && j < lengthSegments) {\n indices.push(vcounter + lengthSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + lengthSegments + 1, vcounter + lengthSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Plane;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L1BsYW5lLmpzP2FlODYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVuUTtBQUN4QjtBQUNWO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDREQUFVO0FBQzFCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixvQkFBb0I7QUFDekMsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxpQkFBaUIsb0ZBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTtBQUNUO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywwQ0FBUTtBQUNWIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9nZW9tZXRyeS9QbGFuZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLic7XG5leHBvcnQgdmFyXG4vKipcbiAqIGJvcnJvdyBmcm9tIHBsYXljYW52YXNcbiAqL1xuUGxhbmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9HZW9tZXRyeSkge1xuICBfaW5oZXJpdHMoUGxhbmUsIF9HZW9tZXRyeSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihQbGFuZSk7XG5cbiAgZnVuY3Rpb24gUGxhbmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW5lKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQbGFuZSwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckaGFsZkV4dGUgPSBfdGhpcyRjb25maWcuaGFsZkV4dGVudHMsXG4gICAgICAgICAgaGFsZkV4dGVudHMgPSBfdGhpcyRjb25maWckaGFsZkV4dGUgPT09IHZvaWQgMCA/IFswLjUsIDAuNV0gOiBfdGhpcyRjb25maWckaGFsZkV4dGUsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJHdpZHRoU2VnID0gX3RoaXMkY29uZmlnLndpZHRoU2VnbWVudHMsXG4gICAgICAgICAgd2lkdGhTZWdtZW50cyA9IF90aGlzJGNvbmZpZyR3aWR0aFNlZyA9PT0gdm9pZCAwID8gNSA6IF90aGlzJGNvbmZpZyR3aWR0aFNlZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckbGVuZ3RoU2UgPSBfdGhpcyRjb25maWcubGVuZ3RoU2VnbWVudHMsXG4gICAgICAgICAgbGVuZ3RoU2VnbWVudHMgPSBfdGhpcyRjb25maWckbGVuZ3RoU2UgPT09IHZvaWQgMCA/IDUgOiBfdGhpcyRjb25maWckbGVuZ3RoU2U7XG4gICAgICB2YXIgcG9zaXRpb25zID0gW107XG4gICAgICB2YXIgbm9ybWFscyA9IFtdO1xuICAgICAgdmFyIHV2cyA9IFtdO1xuICAgICAgdmFyIGluZGljZXMgPSBbXTtcbiAgICAgIHZhciB2Y291bnRlciA9IDA7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHdpZHRoU2VnbWVudHM7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8PSBsZW5ndGhTZWdtZW50czsgaisrKSB7XG4gICAgICAgICAgdmFyIHggPSAtaGFsZkV4dGVudHNbMF0gKyAyLjAgKiBoYWxmRXh0ZW50c1swXSAqIGkgLyB3aWR0aFNlZ21lbnRzO1xuICAgICAgICAgIHZhciB5ID0gMC4wO1xuICAgICAgICAgIHZhciB6ID0gLSgtaGFsZkV4dGVudHNbMV0gKyAyLjAgKiBoYWxmRXh0ZW50c1sxXSAqIGogLyBsZW5ndGhTZWdtZW50cyk7XG4gICAgICAgICAgdmFyIHUgPSBpIC8gd2lkdGhTZWdtZW50cztcbiAgICAgICAgICB2YXIgdiA9IGogLyBsZW5ndGhTZWdtZW50cztcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaCh4LCB5LCB6KTtcbiAgICAgICAgICBub3JtYWxzLnB1c2goMC4wLCAxLjAsIDAuMCk7XG4gICAgICAgICAgdXZzLnB1c2godSwgdik7XG5cbiAgICAgICAgICBpZiAoaSA8IHdpZHRoU2VnbWVudHMgJiYgaiA8IGxlbmd0aFNlZ21lbnRzKSB7XG4gICAgICAgICAgICBpbmRpY2VzLnB1c2godmNvdW50ZXIgKyBsZW5ndGhTZWdtZW50cyArIDEsIHZjb3VudGVyICsgMSwgdmNvdW50ZXIpO1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKHZjb3VudGVyICsgbGVuZ3RoU2VnbWVudHMgKyAxLCB2Y291bnRlciArIGxlbmd0aFNlZ21lbnRzICsgMiwgdmNvdW50ZXIgKyAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2Y291bnRlcisrO1xuICAgICAgICB9XG4gICAgICB9IC8vIGdlbmVyYXRlIEFBQkJcblxuXG4gICAgICB2YXIgYWFiYiA9IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyhwb3NpdGlvbnMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBjb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20oaW5kaWNlcyk7XG4gICAgICBjb21wb25lbnQuYWFiYiA9IGFhYmI7XG4gICAgICBjb21wb25lbnQudmVydGV4Q291bnQgPSB2Y291bnRlcjtcbiAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzID0gW3tcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKHBvc2l0aW9ucyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAnbm9ybWFsJyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20obm9ybWFscyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAndXYnLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbSh1dnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfV07IC8vIFRPRE86IGJhcnljZW50cmljICYgdGFuZ2VudFxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQbGFuZTtcbn0oR2VvbWV0cnkpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js ***! \*********************************************************************************/ /*! exports provided: Sphere */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sphere\", function() { return Sphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nSphere = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Sphere, _Geometry);\n\n var _super = _createSuper(Sphere);\n\n function Sphere() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Sphere);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Sphere, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$radius = _this$config.radius,\n radius = _this$config$radius === void 0 ? 0.5 : _this$config$radius,\n _this$config$latitude = _this$config.latitudeBands,\n latitudeBands = _this$config$latitude === void 0 ? 16 : _this$config$latitude,\n _this$config$longitud = _this$config.longitudeBands,\n longitudeBands = _this$config$longitud === void 0 ? 16 : _this$config$longitud;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n\n for (var lat = 0; lat <= latitudeBands; lat++) {\n var theta = lat * Math.PI / latitudeBands;\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n\n for (var lon = 0; lon <= longitudeBands; lon++) {\n // Sweep the sphere from the positive Z axis to match a 3DS Max sphere\n var phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2.0;\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var x = cosPhi * sinTheta;\n var y = cosTheta;\n var z = sinPhi * sinTheta;\n var u = 1.0 - lon / longitudeBands;\n var v = 1.0 - lat / latitudeBands;\n positions.push(x * radius, y * radius, z * radius);\n normals.push(x, y, z);\n uvs.push(u, v);\n }\n }\n\n for (var _lat = 0; _lat < latitudeBands; ++_lat) {\n for (var _lon = 0; _lon < longitudeBands; ++_lon) {\n var first = _lat * (longitudeBands + 1) + _lon;\n var second = first + longitudeBands + 1;\n indices.push(first + 1, second, first);\n indices.push(first + 1, second + 1, second);\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = positions.length / 3;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Sphere;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Sphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L1NwaGVyZS5qcz9kZjlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEU7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFblE7QUFDeEI7QUFDVjtBQUN0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw0REFBVTtBQUMzQixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLHVCQUF1QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixzQkFBc0I7QUFDOUMsMEJBQTBCLHVCQUF1QjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7QUFDVDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMENBQVE7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvU3BoZXJlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxudmFyIF9kZWMsIF9jbGFzcztcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuJztcbmV4cG9ydCB2YXJcbi8qKlxuICogYm9ycm93IGZyb20gcGxheWNhbnZhc1xuICovXG5TcGhlcmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9HZW9tZXRyeSkge1xuICBfaW5oZXJpdHMoU3BoZXJlLCBfR2VvbWV0cnkpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3BoZXJlKTtcblxuICBmdW5jdGlvbiBTcGhlcmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNwaGVyZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU3BoZXJlLCBbe1xuICAgIGtleTogXCJvbkVudGl0eUNyZWF0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FbnRpdHlDcmVhdGVkKCkge1xuICAgICAgdmFyIF90aGlzJGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRyYWRpdXMgPSBfdGhpcyRjb25maWcucmFkaXVzLFxuICAgICAgICAgIHJhZGl1cyA9IF90aGlzJGNvbmZpZyRyYWRpdXMgPT09IHZvaWQgMCA/IDAuNSA6IF90aGlzJGNvbmZpZyRyYWRpdXMsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGxhdGl0dWRlID0gX3RoaXMkY29uZmlnLmxhdGl0dWRlQmFuZHMsXG4gICAgICAgICAgbGF0aXR1ZGVCYW5kcyA9IF90aGlzJGNvbmZpZyRsYXRpdHVkZSA9PT0gdm9pZCAwID8gMTYgOiBfdGhpcyRjb25maWckbGF0aXR1ZGUsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGxvbmdpdHVkID0gX3RoaXMkY29uZmlnLmxvbmdpdHVkZUJhbmRzLFxuICAgICAgICAgIGxvbmdpdHVkZUJhbmRzID0gX3RoaXMkY29uZmlnJGxvbmdpdHVkID09PSB2b2lkIDAgPyAxNiA6IF90aGlzJGNvbmZpZyRsb25naXR1ZDtcbiAgICAgIHZhciBwb3NpdGlvbnMgPSBbXTtcbiAgICAgIHZhciBub3JtYWxzID0gW107XG4gICAgICB2YXIgdXZzID0gW107XG4gICAgICB2YXIgaW5kaWNlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBsYXQgPSAwOyBsYXQgPD0gbGF0aXR1ZGVCYW5kczsgbGF0KyspIHtcbiAgICAgICAgdmFyIHRoZXRhID0gbGF0ICogTWF0aC5QSSAvIGxhdGl0dWRlQmFuZHM7XG4gICAgICAgIHZhciBzaW5UaGV0YSA9IE1hdGguc2luKHRoZXRhKTtcbiAgICAgICAgdmFyIGNvc1RoZXRhID0gTWF0aC5jb3ModGhldGEpO1xuXG4gICAgICAgIGZvciAodmFyIGxvbiA9IDA7IGxvbiA8PSBsb25naXR1ZGVCYW5kczsgbG9uKyspIHtcbiAgICAgICAgICAvLyBTd2VlcCB0aGUgc3BoZXJlIGZyb20gdGhlIHBvc2l0aXZlIFogYXhpcyB0byBtYXRjaCBhIDNEUyBNYXggc3BoZXJlXG4gICAgICAgICAgdmFyIHBoaSA9IGxvbiAqIDIgKiBNYXRoLlBJIC8gbG9uZ2l0dWRlQmFuZHMgLSBNYXRoLlBJIC8gMi4wO1xuICAgICAgICAgIHZhciBzaW5QaGkgPSBNYXRoLnNpbihwaGkpO1xuICAgICAgICAgIHZhciBjb3NQaGkgPSBNYXRoLmNvcyhwaGkpO1xuICAgICAgICAgIHZhciB4ID0gY29zUGhpICogc2luVGhldGE7XG4gICAgICAgICAgdmFyIHkgPSBjb3NUaGV0YTtcbiAgICAgICAgICB2YXIgeiA9IHNpblBoaSAqIHNpblRoZXRhO1xuICAgICAgICAgIHZhciB1ID0gMS4wIC0gbG9uIC8gbG9uZ2l0dWRlQmFuZHM7XG4gICAgICAgICAgdmFyIHYgPSAxLjAgLSBsYXQgLyBsYXRpdHVkZUJhbmRzO1xuICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHggKiByYWRpdXMsIHkgKiByYWRpdXMsIHogKiByYWRpdXMpO1xuICAgICAgICAgIG5vcm1hbHMucHVzaCh4LCB5LCB6KTtcbiAgICAgICAgICB1dnMucHVzaCh1LCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfbGF0ID0gMDsgX2xhdCA8IGxhdGl0dWRlQmFuZHM7ICsrX2xhdCkge1xuICAgICAgICBmb3IgKHZhciBfbG9uID0gMDsgX2xvbiA8IGxvbmdpdHVkZUJhbmRzOyArK19sb24pIHtcbiAgICAgICAgICB2YXIgZmlyc3QgPSBfbGF0ICogKGxvbmdpdHVkZUJhbmRzICsgMSkgKyBfbG9uO1xuICAgICAgICAgIHZhciBzZWNvbmQgPSBmaXJzdCArIGxvbmdpdHVkZUJhbmRzICsgMTtcbiAgICAgICAgICBpbmRpY2VzLnB1c2goZmlyc3QgKyAxLCBzZWNvbmQsIGZpcnN0KTtcbiAgICAgICAgICBpbmRpY2VzLnB1c2goZmlyc3QgKyAxLCBzZWNvbmQgKyAxLCBzZWNvbmQpO1xuICAgICAgICB9XG4gICAgICB9IC8vIGdlbmVyYXRlIEFBQkJcblxuXG4gICAgICB2YXIgYWFiYiA9IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyhwb3NpdGlvbnMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBjb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20oaW5kaWNlcyk7XG4gICAgICBjb21wb25lbnQuYWFiYiA9IGFhYmI7XG4gICAgICBjb21wb25lbnQudmVydGV4Q291bnQgPSBwb3NpdGlvbnMubGVuZ3RoIC8gMztcbiAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzID0gW3tcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKHBvc2l0aW9ucyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAnbm9ybWFsJyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20obm9ybWFscyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAndXYnLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbSh1dnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfV07IC8vIFRPRE86IGJhcnljZW50cmljICYgdGFuZ2VudFxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTcGhlcmU7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwaGVyZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js ***! \********************************************************************************/ /*! exports provided: Geometry */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return Geometry; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Geometry = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].GeometryComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Geometry() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Geometry);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"geometry\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Geometry, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.component = this.geometry.create(entity);\n this.component.entity = entity;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Geometry;\n}(), _class3.BOX = 'box', _class3.SPHERE = 'sphere', _class3.PLANE = 'plane', _class3.MERGED = 'merged', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L2luZGV4LmpzPzRkYjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlEO0FBQ0Y7QUFDeEMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVTtBQUNyRTtBQUNBLElBQUksNEVBQWU7O0FBRW5COztBQUVBLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsK0hBQStILHNGQUF5QjtBQUN6SjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfY2xhc3MzLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmV4cG9ydCB2YXIgR2VvbWV0cnkgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5HZW9tZXRyeUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdlb21ldHJ5KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHZW9tZXRyeSk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHZvaWQgMDtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZ2VvbWV0cnlcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnQgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoR2VvbWV0cnksIFt7XG4gICAga2V5OiBcImdldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVudGl0eShlbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jb21wb25lbnQgPSB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHkpO1xuICAgICAgdGhpcy5jb21wb25lbnQuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5vbkVudGl0eUNyZWF0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHsvL1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHZW9tZXRyeTtcbn0oKSwgX2NsYXNzMy5CT1ggPSAnYm94JywgX2NsYXNzMy5TUEhFUkUgPSAnc3BoZXJlJywgX2NsYXNzMy5QTEFORSA9ICdwbGFuZScsIF9jbGFzczMuTUVSR0VEID0gJ21lcmdlZCcsIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js ***! \***********************************************************************/ /*! exports provided: World, Kernel, Camera, Renderable, Geometry, Material */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return _camera_Camera__WEBPACK_IMPORTED_MODULE_0__[\"Camera\"]; });\n\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return _geometry__WEBPACK_IMPORTED_MODULE_1__[\"Geometry\"]; });\n\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return _Kernel__WEBPACK_IMPORTED_MODULE_2__[\"Kernel\"]; });\n\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./material */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return _material__WEBPACK_IMPORTED_MODULE_3__[\"Material\"]; });\n\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__[\"Renderable\"]; });\n\n/* harmony import */ var _World__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./World */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return _World__WEBPACK_IMPORTED_MODULE_5__[\"World\"]; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2luZGV4LmpzP2JiMTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDSDtBQUNKO0FBQ0k7QUFDZTtBQUNyQjtBQUNpQztBQUNqRSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYW1lcmEgfSBmcm9tICcuL2NhbWVyYS9DYW1lcmEnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IEtlcm5lbCB9IGZyb20gJy4vS2VybmVsJztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi9tYXRlcmlhbCc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi9yZW5kZXJhYmxlL1JlbmRlcmFibGUnO1xuaW1wb3J0IHsgV29ybGQgfSBmcm9tICcuL1dvcmxkJztcbmV4cG9ydCB7IFdvcmxkLCBLZXJuZWwsIENhbWVyYSwgUmVuZGVyYWJsZSwgR2VvbWV0cnksIE1hdGVyaWFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js ***! \**************************************************************************************/ /*! exports provided: Basic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basic\", function() { return Basic; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! .. */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.basic.frag.glsl' */\nvar webglFragmentShaderGLSL = \"varying vec4 fragColor;\\n\\n#pragma include \\\"uv.frag.declaration\\\"\\n#pragma include \\\"map.frag.declaration\\\"\\n\\nvoid main() {\\n vec4 diffuseColor = fragColor;\\n\\n #pragma include \\\"map.frag.main\\\"\\n\\n gl_FragColor = diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.basic.vert.glsl' */\nvar webglVertexShaderGLSL = \"attribute vec3 position;\\nattribute vec3 normal;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform vec4 color;\\n\\nvarying vec4 fragColor;\\n\\n#pragma include \\\"uv.vert.declaration\\\"\\n\\nvoid main() {\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n fragColor = color;\\n\\n #pragma include \\\"uv.vert.main\\\"\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.frag.glsl' */\nvar webgpuFragmentShaderGLSL = \"// layout(set = 0, binding = 1) uniform WireframeUniforms {\\n// float lineWidth;\\n// vec4 lineColor;\\n// } wireframe;\\n\\nlayout(location = 0) in vec4 fragColor;\\n// layout(location = 1) in vec3 v_Barycentric;\\n\\nlayout(location = 0) out vec4 outColor;\\n\\n// wireframe\\n// float edgeFactor() {\\n// vec3 d = fwidth(v_Barycentric);\\n// vec3 a3 = smoothstep(vec3(0.0), d * wireframe.lineWidth, v_Barycentric);\\n// return min(min(a3.x, a3.y), a3.z);\\n// }\\n\\nvoid main() {\\n // outColor = mix(fragColor, wireframe.lineColor, (1.0 - edgeFactor()));\\n outColor = fragColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.vert.glsl' */\nvar webgpuVertexShaderGLSL = \"layout(set = 0, binding = 0) uniform Uniforms {\\n vec4 color;\\n mat4 projectionMatrix;\\n mat4 modelViewMatrix;\\n} uniforms;\\n\\nlayout(location = 0) in vec3 position;\\n// layout(location = 1) in vec3 barycentric;\\n\\nlayout(location = 0) out vec4 fragColor;\\n// layout(location = 1) out vec3 v_Barycentric;\\n\\nvoid main() {\\n gl_Position = uniforms.projectionMatrix * uniforms.modelViewMatrix * vec4(position, 1.0);\\n fragColor = uniforms.color;\\n // v_Barycentric = barycentric;\\n}\";\nvar\n/**\n * This material is not affected by lights.\n * @see https://threejs.org/docs/#api/en/materials/MeshBasicMaterial\n */\nBasic = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Material) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Basic, _Material);\n\n var _super = _createSuper(Basic);\n\n function Basic() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Basic);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"engine\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Basic, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var component = this.getComponent();\n var vertexShaderGLSL = this.engine.supportWebGPU ? webgpuVertexShaderGLSL : webglVertexShaderGLSL;\n var fragmentShaderGLSL = this.engine.supportWebGPU ? webgpuFragmentShaderGLSL : webglFragmentShaderGLSL;\n this.shaderModuleService.registerModule('material-basic', {\n vs: vertexShaderGLSL,\n fs: fragmentShaderGLSL\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('material-basic'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n component.vertexShaderGLSL = vs;\n component.fragmentShaderGLSL = fs; // @ts-ignore\n\n component.setUniform(extractedUniforms);\n\n if (this.config.map) {\n component.setDefines({\n USE_UV: 1,\n USE_MAP: 1\n });\n component.setUniform({\n // @ts-ignore\n map: this.config.map,\n uvTransform: gl_matrix__WEBPACK_IMPORTED_MODULE_10__[\"mat3\"].create()\n });\n }\n }\n }]);\n\n return Basic;\n}(___WEBPACK_IMPORTED_MODULE_12__[\"Material\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL21hdGVyaWFsL2Jhc2ljL2luZGV4LmpzPzYzMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0QjtBQUNvQjtBQUNBOztBQUV4Rjs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVqUjtBQUNoQjtBQUNjO0FBQ2pCOztBQUU5QjtBQUNBLHNEQUFzRCxzR0FBc0csa0NBQWtDLHlFQUF5RSxHQUFHOztBQUUxUTtBQUNBLHFEQUFxRCx3QkFBd0Isa0NBQWtDLCtCQUErQixxQkFBcUIsMkJBQTJCLDREQUE0RCwyRUFBMkUsc0JBQXNCLHlDQUF5Qzs7QUFFcFk7QUFDQSwyRkFBMkYsdUJBQXVCLHNCQUFzQixNQUFNLFdBQVcsMkNBQTJDLGdEQUFnRCwyQ0FBMkMseUNBQXlDLHNDQUFzQywrRUFBK0UseUNBQXlDLE1BQU0saUJBQWlCLDRFQUE0RSx5QkFBeUIsR0FBRzs7QUFFcm1CO0FBQ0EsNkVBQTZFLGVBQWUsMEJBQTBCLHlCQUF5QixHQUFHLFVBQVUsMENBQTBDLDhDQUE4Qyw0Q0FBNEMsaURBQWlELGlCQUFpQiw2RkFBNkYsK0JBQStCLG1DQUFtQyxHQUFHO0FBQzdmO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNkRBQVUsWUFBWSx5REFBTSxDQUFDLDhEQUFVLHdCQUF3Qix5REFBTSxDQUFDLDhEQUFVO0FBQ2hHLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQix1RUFBdUUsYUFBYTtBQUNwRjtBQUNBOztBQUVBOztBQUVBLElBQUksdUZBQTBCLCtCQUErQixtRkFBc0I7O0FBRW5GLElBQUksdUZBQTBCLDZDQUE2QyxtRkFBc0I7O0FBRWpHO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDOztBQUV4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsK0NBQUk7QUFDM0IsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDJDQUFRLDBCQUEwQixzRkFBeUI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL21hdGVyaWFsL2Jhc2ljL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgbWF0MyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgTWF0ZXJpYWwgfSBmcm9tICcuLic7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuYmFzaWMuZnJhZy5nbHNsJyAqL1xudmFyIHdlYmdsRnJhZ21lbnRTaGFkZXJHTFNMID0gXCJ2YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xcblxcbiNwcmFnbWEgaW5jbHVkZSBcXFwidXYuZnJhZy5kZWNsYXJhdGlvblxcXCJcXG4jcHJhZ21hIGluY2x1ZGUgXFxcIm1hcC5mcmFnLmRlY2xhcmF0aW9uXFxcIlxcblxcbnZvaWQgbWFpbigpIHtcXG4gIHZlYzQgZGlmZnVzZUNvbG9yID0gZnJhZ0NvbG9yO1xcblxcbiAgI3ByYWdtYSBpbmNsdWRlIFxcXCJtYXAuZnJhZy5tYWluXFxcIlxcblxcbiAgZ2xfRnJhZ0NvbG9yID0gZGlmZnVzZUNvbG9yO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5iYXNpYy52ZXJ0Lmdsc2wnICovXG52YXIgd2ViZ2xWZXJ0ZXhTaGFkZXJHTFNMID0gXCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcXG5hdHRyaWJ1dGUgdmVjMyBub3JtYWw7XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG51bmlmb3JtIHZlYzQgY29sb3I7XFxuXFxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInV2LnZlcnQuZGVjbGFyYXRpb25cXFwiXFxuXFxudm9pZCBtYWluKCkge1xcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcXG4gIGZyYWdDb2xvciA9IGNvbG9yO1xcblxcbiAgI3ByYWdtYSBpbmNsdWRlIFxcXCJ1di52ZXJ0Lm1haW5cXFwiXFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdwdS5iYXNpYy5mcmFnLmdsc2wnICovXG52YXIgd2ViZ3B1RnJhZ21lbnRTaGFkZXJHTFNMID0gXCIvLyBsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDEpIHVuaWZvcm0gV2lyZWZyYW1lVW5pZm9ybXMge1xcbi8vICAgZmxvYXQgbGluZVdpZHRoO1xcbi8vICAgdmVjNCBsaW5lQ29sb3I7XFxuLy8gfSB3aXJlZnJhbWU7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjNCBmcmFnQ29sb3I7XFxuLy8gbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gdmVjMyB2X0JhcnljZW50cmljO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG91dENvbG9yO1xcblxcbi8vIHdpcmVmcmFtZVxcbi8vIGZsb2F0IGVkZ2VGYWN0b3IoKSB7XFxuLy8gICB2ZWMzIGQgPSBmd2lkdGgodl9CYXJ5Y2VudHJpYyk7XFxuLy8gICB2ZWMzIGEzID0gc21vb3Roc3RlcCh2ZWMzKDAuMCksIGQgKiB3aXJlZnJhbWUubGluZVdpZHRoLCB2X0JhcnljZW50cmljKTtcXG4vLyAgIHJldHVybiBtaW4obWluKGEzLngsIGEzLnkpLCBhMy56KTtcXG4vLyB9XFxuXFxudm9pZCBtYWluKCkge1xcbiAgLy8gb3V0Q29sb3IgPSBtaXgoZnJhZ0NvbG9yLCB3aXJlZnJhbWUubGluZUNvbG9yLCAoMS4wIC0gZWRnZUZhY3RvcigpKSk7XFxuICBvdXRDb2xvciA9IGZyYWdDb2xvcjtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ3B1LmJhc2ljLnZlcnQuZ2xzbCcgKi9cbnZhciB3ZWJncHVWZXJ0ZXhTaGFkZXJHTFNMID0gXCJsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDApIHVuaWZvcm0gVW5pZm9ybXMge1xcbiAgdmVjNCBjb2xvcjtcXG4gIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcXG4gIG1hdDQgbW9kZWxWaWV3TWF0cml4O1xcbn0gdW5pZm9ybXM7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBwb3NpdGlvbjtcXG4vLyBsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB2ZWMzIGJhcnljZW50cmljO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IGZyYWdDb2xvcjtcXG4vLyBsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgdmVjMyB2X0JhcnljZW50cmljO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIGdsX1Bvc2l0aW9uID0gdW5pZm9ybXMucHJvamVjdGlvbk1hdHJpeCAqIHVuaWZvcm1zLm1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XFxuICBmcmFnQ29sb3IgPSB1bmlmb3Jtcy5jb2xvcjtcXG4gIC8vIHZfQmFyeWNlbnRyaWMgPSBiYXJ5Y2VudHJpYztcXG59XCI7XG5leHBvcnQgdmFyXG4vKipcbiAqIFRoaXMgbWF0ZXJpYWwgaXMgbm90IGFmZmVjdGVkIGJ5IGxpZ2h0cy5cbiAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vbWF0ZXJpYWxzL01lc2hCYXNpY01hdGVyaWFsXG4gKi9cbkJhc2ljID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX01hdGVyaWFsKSB7XG4gIF9pbmhlcml0cyhCYXNpYywgX01hdGVyaWFsKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEJhc2ljKTtcblxuICBmdW5jdGlvbiBCYXNpYygpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQmFzaWMpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBfZGVzY3JpcHRvcjIsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCYXNpYywgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgdmFyIHZlcnRleFNoYWRlckdMU0wgPSB0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gd2ViZ3B1VmVydGV4U2hhZGVyR0xTTCA6IHdlYmdsVmVydGV4U2hhZGVyR0xTTDtcbiAgICAgIHZhciBmcmFnbWVudFNoYWRlckdMU0wgPSB0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gd2ViZ3B1RnJhZ21lbnRTaGFkZXJHTFNMIDogd2ViZ2xGcmFnbWVudFNoYWRlckdMU0w7XG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ21hdGVyaWFsLWJhc2ljJywge1xuICAgICAgICB2czogdmVydGV4U2hhZGVyR0xTTCxcbiAgICAgICAgZnM6IGZyYWdtZW50U2hhZGVyR0xTTFxuICAgICAgfSk7XG5cbiAgICAgIHZhciBfdGhpcyRzaGFkZXJNb2R1bGVTZXIgPSB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UuZ2V0TW9kdWxlKCdtYXRlcmlhbC1iYXNpYycpLFxuICAgICAgICAgIHZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnZzLFxuICAgICAgICAgIGZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLmZzLFxuICAgICAgICAgIGV4dHJhY3RlZFVuaWZvcm1zID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnVuaWZvcm1zO1xuXG4gICAgICBjb21wb25lbnQudmVydGV4U2hhZGVyR0xTTCA9IHZzO1xuICAgICAgY29tcG9uZW50LmZyYWdtZW50U2hhZGVyR0xTTCA9IGZzOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgIGNvbXBvbmVudC5zZXRVbmlmb3JtKGV4dHJhY3RlZFVuaWZvcm1zKTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnLm1hcCkge1xuICAgICAgICBjb21wb25lbnQuc2V0RGVmaW5lcyh7XG4gICAgICAgICAgVVNFX1VWOiAxLFxuICAgICAgICAgIFVTRV9NQVA6IDFcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudC5zZXRVbmlmb3JtKHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFwOiB0aGlzLmNvbmZpZy5tYXAsXG4gICAgICAgICAgdXZUcmFuc2Zvcm06IG1hdDMuY3JlYXRlKClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJhc2ljO1xufShNYXRlcmlhbCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js ***! \********************************************************************************/ /*! exports provided: Material */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return Material; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Material = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MaterialComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Material() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Material);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"material\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Material, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity, type) {\n this.entity = entity;\n this.component = this.material.create(entity);\n this.component.entity = entity;\n this.component.type = type;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Material;\n}(), _class3.BASIC = 'basic', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL21hdGVyaWFsL2luZGV4LmpzP2Y5ZWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlEO0FBQ0Y7QUFDeEMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVTtBQUNyRTtBQUNBLElBQUksNEVBQWU7O0FBRW5COztBQUVBLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxvREFBb0Qsc0ZBQXlCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9tYXRlcmlhbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9jbGFzczMsIF90ZW1wO1xuXG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBNYXRlcmlhbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLk1hdGVyaWFsQ29tcG9uZW50TWFuYWdlciksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSBfY2xhc3MzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTWF0ZXJpYWwoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1hdGVyaWFsKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLmVudGl0eSA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbXBvbmVudCA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYXRlcmlhbCwgW3tcbiAgICBrZXk6IFwiZ2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0eSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVudGl0eTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZyhjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RW50aXR5KGVudGl0eSwgdHlwZSkge1xuICAgICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICB0aGlzLmNvbXBvbmVudCA9IHRoaXMubWF0ZXJpYWwuY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLmNvbXBvbmVudC5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICB0aGlzLmNvbXBvbmVudC50eXBlID0gdHlwZTtcbiAgICAgIHRoaXMub25FbnRpdHlDcmVhdGVkKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7Ly9cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWF0ZXJpYWw7XG59KCksIF9jbGFzczMuQkFTSUMgPSAnYmFzaWMnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js ***! \***************************************************************************************/ /*! exports provided: Renderable */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return Renderable; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\n\n\nvar Renderable = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].TransformComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].SceneGraphSystem), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Renderable() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Renderable);\n\n this.attributes = {};\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"transform\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"sceneGraphSystem\", _descriptor4, this);\n\n this.meshComponent = void 0;\n this.transformComponent = void 0;\n this.entity = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Renderable, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent() {\n return this.transformComponent;\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent() {\n return this.meshComponent;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.cullable.create(entity);\n this.meshComponent = this.mesh.create(entity);\n this.transformComponent = this.transform.create(entity);\n this.onEntityCreated();\n }\n }, {\n key: \"setMaterial\",\n value: function setMaterial(material) {\n this.meshComponent.material = material;\n return this;\n }\n }, {\n key: \"setGeometry\",\n value: function setGeometry(geometry) {\n this.meshComponent.geometry = geometry;\n return this;\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n var _this = this;\n\n Object.keys(attributes).forEach(function (name) {\n if (attributes[name] !== undefined && attributes[name] !== _this.attributes[name]) {\n _this.onAttributeChanged({\n name: name,\n data: attributes[name]\n });\n\n _this.attributes[name] = attributes[name];\n }\n });\n }\n }, {\n key: \"setVisible\",\n value: function setVisible(visible) {\n var _this2 = this;\n\n this.meshComponent.visible = visible;\n this.meshComponent.children.forEach(function (childEntity) {\n var child = _this2.mesh.getComponentByEntity(childEntity);\n\n if (child) {\n child.visible = visible;\n }\n });\n return this;\n }\n }, {\n key: \"isVisible\",\n value: function isVisible() {\n return this.meshComponent.visible;\n }\n }, {\n key: \"attach\",\n value: function attach(parentRenderable) {\n this.sceneGraphSystem.attach(this.entity, parentRenderable.entity);\n return this;\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.sceneGraphSystem.detach(this.entity);\n return this;\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren() {\n this.sceneGraphSystem.detachChildren(this.entity);\n return this;\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }, {\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n\n if (this.meshComponent && this.meshComponent.material) {\n this.meshComponent.material.setUniform(this.convertAttributeName2UniformName(name), data);\n }\n }\n }, {\n key: \"convertAttributeName2UniformName\",\n value: function convertAttributeName2UniformName(attributeName) {\n return attributeName;\n }\n }]);\n\n return Renderable;\n}(), _class3.POINT = 'point', _class3.LINE = 'line', _class3.GRID = 'grid', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"transform\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"sceneGraphSystem\", [_dec5, _dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvUmVuZGVyYWJsZS5qcz82NWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVpRDtBQUNLO0FBQy9DLHlCQUF5Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsOERBQVUsZ0NBQWdDLHdEQUFNLENBQUMsOERBQVUsb0NBQW9DLHdEQUFNLENBQUMsOERBQVUscUNBQXFDLHdEQUFNLENBQUMsOERBQVUsbUJBQW1CLHVEQUFLLENBQUMsOERBQVU7QUFDdFE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHVDQUF1QztBQUN2QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLGtHQUFrRyxzRkFBeUI7QUFDNUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvUmVuZGVyYWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX2Rlc2NyaXB0b3I0LCBfY2xhc3MzLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFJlbmRlcmFibGUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5UcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyKSwgX2RlYzUgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzYgPSBuYW1lZChJREVOVElGSUVSLlNjZW5lR3JhcGhTeXN0ZW0pLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlbmRlcmFibGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlbmRlcmFibGUpO1xuXG4gICAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gICAgdGhpcy5jb25maWcgPSB2b2lkIDA7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc2hcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjdWxsYWJsZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3IzLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwic2NlbmVHcmFwaFN5c3RlbVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgdGhpcy5tZXNoQ29tcG9uZW50ID0gdm9pZCAwO1xuICAgIHRoaXMudHJhbnNmb3JtQ29tcG9uZW50ID0gdm9pZCAwO1xuICAgIHRoaXMuZW50aXR5ID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlbmRlcmFibGUsIFt7XG4gICAga2V5OiBcImdldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1Db21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Db21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1lc2hDb21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TWVzaENvbXBvbmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lc2hDb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVudGl0eShlbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jdWxsYWJsZS5jcmVhdGUoZW50aXR5KTtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudCA9IHRoaXMubWVzaC5jcmVhdGUoZW50aXR5KTtcbiAgICAgIHRoaXMudHJhbnNmb3JtQ29tcG9uZW50ID0gdGhpcy50cmFuc2Zvcm0uY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLm9uRW50aXR5Q3JlYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNYXRlcmlhbChtYXRlcmlhbCkge1xuICAgICAgdGhpcy5tZXNoQ29tcG9uZW50Lm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0R2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0R2VvbWV0cnkoZ2VvbWV0cnkpIHtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC5nZW9tZXRyeSA9IGdlb21ldHJ5O1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEF0dHJpYnV0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzW25hbWVdICE9PSB1bmRlZmluZWQgJiYgYXR0cmlidXRlc1tuYW1lXSAhPT0gX3RoaXMuYXR0cmlidXRlc1tuYW1lXSkge1xuICAgICAgICAgIF90aGlzLm9uQXR0cmlidXRlQ2hhbmdlZCh7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgZGF0YTogYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMuYXR0cmlidXRlc1tuYW1lXSA9IGF0dHJpYnV0ZXNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWaXNpYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZpc2libGUodmlzaWJsZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC52aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZEVudGl0eSkge1xuICAgICAgICB2YXIgY2hpbGQgPSBfdGhpczIubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShjaGlsZEVudGl0eSk7XG5cbiAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgY2hpbGQudmlzaWJsZSA9IHZpc2libGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzVmlzaWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1Zpc2libGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNoQ29tcG9uZW50LnZpc2libGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImF0dGFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhdHRhY2gocGFyZW50UmVuZGVyYWJsZSkge1xuICAgICAgdGhpcy5zY2VuZUdyYXBoU3lzdGVtLmF0dGFjaCh0aGlzLmVudGl0eSwgcGFyZW50UmVuZGVyYWJsZS5lbnRpdHkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXRhY2goKSB7XG4gICAgICB0aGlzLnNjZW5lR3JhcGhTeXN0ZW0uZGV0YWNoKHRoaXMuZW50aXR5KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXRhY2hDaGlsZHJlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXRhY2hDaGlsZHJlbigpIHtcbiAgICAgIHRoaXMuc2NlbmVHcmFwaFN5c3RlbS5kZXRhY2hDaGlsZHJlbih0aGlzLmVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHsvL1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG5cbiAgICAgIGlmICh0aGlzLm1lc2hDb21wb25lbnQgJiYgdGhpcy5tZXNoQ29tcG9uZW50Lm1hdGVyaWFsKSB7XG4gICAgICAgIHRoaXMubWVzaENvbXBvbmVudC5tYXRlcmlhbC5zZXRVbmlmb3JtKHRoaXMuY29udmVydEF0dHJpYnV0ZU5hbWUyVW5pZm9ybU5hbWUobmFtZSksIGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb252ZXJ0QXR0cmlidXRlTmFtZTJVbmlmb3JtTmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb252ZXJ0QXR0cmlidXRlTmFtZTJVbmlmb3JtTmFtZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRlTmFtZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyYWJsZTtcbn0oKSwgX2NsYXNzMy5QT0lOVCA9ICdwb2ludCcsIF9jbGFzczMuTElORSA9ICdsaW5lJywgX2NsYXNzMy5HUklEID0gJ2dyaWQnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJjdWxsYWJsZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IzID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0cmFuc2Zvcm1cIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2NlbmVHcmFwaFN5c3RlbVwiLCBbX2RlYzUsIF9kZWM2XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlcmFibGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js ***! \***************************************************************************************/ /*! exports provided: Grid */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return Grid; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.grid.frag.glsl' */\nvar gridFrag = \"// generate grid, borrow from clay.gl viewer\\n// @see https://github.com/pissang/clay-viewer/blob/master/src/graphic/ground.glsl\\n#extension GL_OES_standard_derivatives : enable\\n\\nvarying vec3 v_Position;\\n// varying vec3 v_Normal;\\n\\nuniform float u_GridSize : 5;\\nuniform float u_GridSize2 : .5;\\nuniform vec4 u_GridColor : [0, 0, 0, 1];\\nuniform vec4 u_GridColor2 : [0.3, 0.3, 0.3, 1];\\nuniform bool u_GridEnabled : true;\\n\\n// uniform vec3 u_LightDirection;\\n// uniform vec3 u_LightColor;\\n// uniform vec3 u_Camera;\\n\\nvoid main() {\\n // vec3 n = v_Normal;\\n // vec3 l = normalize(u_LightDirection);\\n // float NdotL = clamp(dot(n, l), 0.001, 1.0);\\n\\n gl_FragColor = vec4(1.);\\n\\n if (u_GridEnabled) {\\n float wx = v_Position.x;\\n float wz = v_Position.z;\\n // float x0 = abs(fract(wx / u_GridSize - 0.5) - 0.5) / fwidth(wx) * u_GridSize / 2.0;\\n // float z0 = abs(fract(wz / u_GridSize - 0.5) - 0.5) / fwidth(wz) * u_GridSize / 2.0;\\n\\n float x1 = abs(fract(wx / u_GridSize2 - 0.5) - 0.5) / fwidth(wx) * u_GridSize2;\\n float z1 = abs(fract(wz / u_GridSize2 - 0.5) - 0.5) / fwidth(wz) * u_GridSize2;\\n\\n // float v0 = 1.0 - clamp(min(x0, z0), 0.0, 1.0);\\n float v1 = 1.0 - clamp(min(x1, z1), 0.0, 1.0);\\n // if (v0 > 0.1) {\\n // gl_FragColor = mix(gl_FragColor, u_GridColor, v0);\\n // }\\n // else {\\n gl_FragColor = mix(gl_FragColor, u_GridColor2, v1);\\n // }\\n }\\n\\n // float shadowFactor = calcShadow(u_ShadowMap, v_PositionFromLight, l, n);\\n // vec3 diffuseColor = u_LightColor * NdotL * shadowFactor;\\n\\n // gl_FragColor.rgb *= diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.grid.vert.glsl' */\nvar gridVert = \"attribute vec3 a_Position;\\n\\nvarying vec3 v_Position;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nvoid main() {\\n v_Position = a_Position;\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_Position, 1.);\\n}\";\nvar Grid = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Grid, _Renderable);\n\n var _super = _createSuper(Grid);\n\n function Grid() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Grid);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Grid, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'gridColor') {\n mesh.material.setUniform('u_GridColor', data);\n mesh.material.setUniform('u_GridColor2', data);\n } else if (name === 'gridSize') {\n mesh.material.setUniform('u_GridSize', data);\n mesh.material.setUniform('u_GridSize2', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: gridVert,\n fs: gridFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n this.setMaterial(material);\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: 4\n });\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].BACK\n }).setDepth({\n enable: true,\n func: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].LESS\n }); // @ts-ignore\n\n material.setUniform(extractedUniforms);\n this.setAttributes({\n gridColor: this.config.gridColor,\n gridSize: this.config.gridSize\n });\n geometry.setIndex([0, 3, 2, 2, 1, 0]);\n geometry.setAttribute('a_Position', Float32Array.from([-4, -1, -4, 4, -1, -4, 4, -1, 4, -4, -1, 4]), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n }\n }]);\n\n return Grid;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_11__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvZ3JpZC9pbmRleC5qcz9hZjFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRTdRO0FBQ0M7QUFDWDs7QUFFM0M7QUFDQSw2TkFBNk4sMkJBQTJCLGlDQUFpQyxpQ0FBaUMsMENBQTBDLGlEQUFpRCxvQ0FBb0MscUNBQXFDLCtCQUErQiwyQkFBMkIsaUJBQWlCLHlCQUF5Qiw0Q0FBNEMsa0RBQWtELDhCQUE4QiwwQkFBMEIsOEJBQThCLDhCQUE4Qiw0RkFBNEYsNEZBQTRGLHVGQUF1RixxRkFBcUYseURBQXlELG9EQUFvRCx3QkFBd0IsK0RBQStELFVBQVUsZUFBZSw2REFBNkQsVUFBVSxLQUFLLGlGQUFpRiwrREFBK0QsMENBQTBDLEdBQUc7O0FBRTlsRDtBQUNBLDBDQUEwQyw0QkFBNEIsa0NBQWtDLCtCQUErQixpQkFBaUIsNEJBQTRCLDRFQUE0RSxHQUFHO0FBQzVQLG1CQUFtQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVUsbUJBQW1CLHdEQUFLLENBQUMsOERBQVUsMEJBQTBCLHlEQUFNLENBQUMsOERBQVUsbUJBQW1CLHdEQUFLLENBQUMsOERBQVUsMEJBQTBCLHlEQUFNLENBQUMsOERBQVU7QUFDN04sRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CLHVFQUF1RSxhQUFhO0FBQ3BGO0FBQ0E7O0FBRUE7O0FBRUEsSUFBSSx1RkFBMEIsdUNBQXVDLG1GQUFzQjs7QUFFM0YsSUFBSSx1RkFBMEIsd0NBQXdDLG1GQUFzQjs7QUFFNUYsSUFBSSx1RkFBMEIsNkNBQTZDLG1GQUFzQjs7QUFFakc7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsY0FBYyxzREFBRTtBQUNoQixPQUFPO0FBQ1A7QUFDQSxjQUFjLHNEQUFFO0FBQ2hCLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsdURBQVUsMEJBQTBCLHNGQUF5QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9ncmlkL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCwgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi4vUmVuZGVyYWJsZSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuZ3JpZC5mcmFnLmdsc2wnICovXG52YXIgZ3JpZEZyYWcgPSBcIi8vIGdlbmVyYXRlIGdyaWQsIGJvcnJvdyBmcm9tIGNsYXkuZ2wgdmlld2VyXFxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGlzc2FuZy9jbGF5LXZpZXdlci9ibG9iL21hc3Rlci9zcmMvZ3JhcGhpYy9ncm91bmQuZ2xzbFxcbiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlXFxuXFxudmFyeWluZyB2ZWMzIHZfUG9zaXRpb247XFxuLy8gdmFyeWluZyB2ZWMzIHZfTm9ybWFsO1xcblxcbnVuaWZvcm0gZmxvYXQgdV9HcmlkU2l6ZSA6IDU7XFxudW5pZm9ybSBmbG9hdCB1X0dyaWRTaXplMiA6IC41O1xcbnVuaWZvcm0gdmVjNCB1X0dyaWRDb2xvciA6IFswLCAwLCAwLCAxXTtcXG51bmlmb3JtIHZlYzQgdV9HcmlkQ29sb3IyIDogWzAuMywgMC4zLCAwLjMsIDFdO1xcbnVuaWZvcm0gYm9vbCB1X0dyaWRFbmFibGVkIDogdHJ1ZTtcXG5cXG4vLyB1bmlmb3JtIHZlYzMgdV9MaWdodERpcmVjdGlvbjtcXG4vLyB1bmlmb3JtIHZlYzMgdV9MaWdodENvbG9yO1xcbi8vIHVuaWZvcm0gdmVjMyB1X0NhbWVyYTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICAvLyB2ZWMzIG4gPSB2X05vcm1hbDtcXG4gIC8vIHZlYzMgbCA9IG5vcm1hbGl6ZSh1X0xpZ2h0RGlyZWN0aW9uKTtcXG4gIC8vIGZsb2F0IE5kb3RMID0gY2xhbXAoZG90KG4sIGwpLCAwLjAwMSwgMS4wKTtcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4pO1xcblxcbiAgaWYgKHVfR3JpZEVuYWJsZWQpIHtcXG4gICAgZmxvYXQgd3ggPSB2X1Bvc2l0aW9uLng7XFxuICAgIGZsb2F0IHd6ID0gdl9Qb3NpdGlvbi56O1xcbiAgICAvLyBmbG9hdCB4MCA9IGFicyhmcmFjdCh3eCAvIHVfR3JpZFNpemUgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aCh3eCkgKiB1X0dyaWRTaXplIC8gMi4wO1xcbiAgICAvLyBmbG9hdCB6MCA9IGFicyhmcmFjdCh3eiAvIHVfR3JpZFNpemUgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aCh3eikgKiB1X0dyaWRTaXplIC8gMi4wO1xcblxcbiAgICBmbG9hdCB4MSA9IGFicyhmcmFjdCh3eCAvIHVfR3JpZFNpemUyIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3gpICogdV9HcmlkU2l6ZTI7XFxuICAgIGZsb2F0IHoxID0gYWJzKGZyYWN0KHd6IC8gdV9HcmlkU2l6ZTIgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aCh3eikgKiB1X0dyaWRTaXplMjtcXG5cXG4gICAgLy8gZmxvYXQgdjAgPSAxLjAgLSBjbGFtcChtaW4oeDAsIHowKSwgMC4wLCAxLjApO1xcbiAgICBmbG9hdCB2MSA9IDEuMCAtIGNsYW1wKG1pbih4MSwgejEpLCAwLjAsIDEuMCk7XFxuICAgIC8vIGlmICh2MCA+IDAuMSkge1xcbiAgICAgICAgLy8gZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgdV9HcmlkQ29sb3IsIHYwKTtcXG4gICAgLy8gfVxcbiAgICAvLyBlbHNlIHtcXG4gICAgICAgIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIHVfR3JpZENvbG9yMiwgdjEpO1xcbiAgICAvLyB9XFxuICB9XFxuXFxuICAvLyBmbG9hdCBzaGFkb3dGYWN0b3IgPSBjYWxjU2hhZG93KHVfU2hhZG93TWFwLCB2X1Bvc2l0aW9uRnJvbUxpZ2h0LCBsLCBuKTtcXG4gIC8vIHZlYzMgZGlmZnVzZUNvbG9yID0gdV9MaWdodENvbG9yICogTmRvdEwgKiBzaGFkb3dGYWN0b3I7XFxuXFxuICAvLyBnbF9GcmFnQ29sb3IucmdiICo9IGRpZmZ1c2VDb2xvcjtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuZ3JpZC52ZXJ0Lmdsc2wnICovXG52YXIgZ3JpZFZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMzIGFfUG9zaXRpb247XFxuXFxudmFyeWluZyB2ZWMzIHZfUG9zaXRpb247XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2X1Bvc2l0aW9uID0gYV9Qb3NpdGlvbjtcXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoYV9Qb3NpdGlvbiwgMS4pO1xcbn1cIjtcbmV4cG9ydCB2YXIgR3JpZCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjNSA9IG5hbWVkKElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVuZGVyYWJsZSkge1xuICBfaW5oZXJpdHMoR3JpZCwgX1JlbmRlcmFibGUpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR3JpZCk7XG5cbiAgZnVuY3Rpb24gR3JpZCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR3JpZCk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwibWF0ZXJpYWxTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcImdlb21ldHJ5U3lzdGVtXCIsIF9kZXNjcmlwdG9yMiwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhHcmlkLCBbe1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMuZ2V0TWVzaENvbXBvbmVudCgpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLm1hdGVyaWFsKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnZ3JpZENvbG9yJykge1xuICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9HcmlkQ29sb3InLCBkYXRhKTtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZENvbG9yMicsIGRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdncmlkU2l6ZScpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZFNpemUnLCBkYXRhKTtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZFNpemUyJywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5yZWdpc3Rlck1vZHVsZSgnZ3JpZCcsIHtcbiAgICAgICAgdnM6IGdyaWRWZXJ0LFxuICAgICAgICBmczogZ3JpZEZyYWdcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3RoaXMkc2hhZGVyTW9kdWxlU2VyID0gdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLmdldE1vZHVsZSgnZ3JpZCcpLFxuICAgICAgICAgIHZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnZzLFxuICAgICAgICAgIGZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLmZzLFxuICAgICAgICAgIGV4dHJhY3RlZFVuaWZvcm1zID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsU3lzdGVtLmNyZWF0ZVNoYWRlck1hdGVyaWFsKHtcbiAgICAgICAgdmVydGV4U2hhZGVyOiB2cyxcbiAgICAgICAgZnJhZ21lbnRTaGFkZXI6IGZzXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgdmFyIGdlb21ldHJ5ID0gdGhpcy5nZW9tZXRyeVN5c3RlbS5jcmVhdGVCdWZmZXJHZW9tZXRyeSh7XG4gICAgICAgIHZlcnRleENvdW50OiA0XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0R2VvbWV0cnkoZ2VvbWV0cnkpO1xuICAgICAgbWF0ZXJpYWwuc2V0Q3VsbCh7XG4gICAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICAgIH0pLnNldERlcHRoKHtcbiAgICAgICAgZW5hYmxlOiB0cnVlLFxuICAgICAgICBmdW5jOiBnbC5MRVNTXG4gICAgICB9KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKGV4dHJhY3RlZFVuaWZvcm1zKTtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgIGdyaWRDb2xvcjogdGhpcy5jb25maWcuZ3JpZENvbG9yLFxuICAgICAgICBncmlkU2l6ZTogdGhpcy5jb25maWcuZ3JpZFNpemVcbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0SW5kZXgoWzAsIDMsIDIsIDIsIDEsIDBdKTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9Qb3NpdGlvbicsIEZsb2F0MzJBcnJheS5mcm9tKFstNCwgLTEsIC00LCA0LCAtMSwgLTQsIDQsIC0xLCA0LCAtNCwgLTEsIDRdKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyaWQ7XG59KFJlbmRlcmFibGUpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImdlb21ldHJ5U3lzdGVtXCIsIFtfZGVjNCwgX2RlYzVdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IzID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJzaGFkZXJNb2R1bGVTZXJ2aWNlXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js ***! \***************************************************************************************/ /*! exports provided: Line */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/polyline-normals */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.line.frag.glsl' */\nvar lineFrag = \"uniform float u_dash_array : 0.02;\\nuniform float u_dash_offset : 0;\\nuniform float u_dash_ratio : 0;\\nuniform float u_thickness : 0.02;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n float blur = 1. - smoothstep(0.98, 1., length(v_normal));\\n\\n gl_FragColor = v_color;\\n gl_FragColor.a *= blur * ceil(mod(v_counters + u_dash_offset, u_dash_array) - (u_dash_array * u_dash_ratio));\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.line.vert.glsl' */\nvar lineVert = \"attribute vec2 a_pos;\\nattribute vec4 a_color;\\nattribute float a_line_miter;\\nattribute vec2 a_line_normal;\\nattribute float a_counters;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform float u_thickness : 0.02;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n v_color = a_color;\\n v_counters = a_counters;\\n\\n vec3 normal = normalize(vec3(a_line_normal, 0.0));\\n\\n vec4 offset = vec4(normal * u_thickness / 2.0 * a_line_miter, 0.0);\\n\\n v_normal = vec2(normal * sign(a_line_miter));\\n\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_pos, 0.0, 1.0) + offset;\\n}\\n\";\nvar Line = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Line, _Renderable);\n\n var _super = _createSuper(Line);\n\n function Line() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _this.vertexCount = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Line, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n switch (name) {\n case 'dashArray':\n mesh.material.setUniform('u_dash_array', data);\n break;\n\n case 'dashOffset':\n mesh.material.setUniform('u_dash_offset', data);\n break;\n\n case 'dashRatio':\n mesh.material.setUniform('u_dash_ratio', data);\n break;\n\n case 'thickness':\n mesh.material.setUniform('u_thickness', data);\n break;\n\n case 'color':\n var colors = new Array(this.vertexCount).fill(undefined).map(function () {\n return data;\n }).reduce(function (prev, cur) {\n // @ts-ignore\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []); // @ts-ignore\n\n mesh.geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n break;\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this2 = this;\n\n this.shaderModuleService.registerModule('line', {\n vs: lineVert,\n fs: lineFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('line'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n\n var _getNormals = Object(_utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this.config.points, false),\n normals = _getNormals.normals,\n attrIndex = _getNormals.attrIndex,\n attrPos = _getNormals.attrPos,\n attrCounters = _getNormals.attrCounters;\n\n var vertexCount = attrPos.length;\n this.vertexCount = vertexCount;\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: vertexCount\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].BACK\n }) // @ts-ignore\n .setUniform(extractedUniforms);\n this.setAttributes({\n dashArray: this.config.dashArray,\n dashOffset: this.config.dashOffset,\n dashRatio: this.config.dashRatio,\n thickness: this.config.thickness\n });\n var attrNormal = [];\n var attrMiter = [];\n normals.forEach(function (n) {\n var norm = n[0];\n var miter = n[1];\n attrNormal.push([norm[0], norm[1]]); // @ts-ignore\n\n attrMiter.push(miter);\n }); // [[0,1,2], [2,1,3]]\n\n geometry.setIndex(attrIndex.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []));\n geometry.setAttribute('a_pos', Float32Array.from(attrPos.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n var colors = new Array(vertexCount).fill(undefined).map(function () {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(_this2.config.color);\n }).reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []);\n geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('a_line_miter', Float32Array.from(attrMiter), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_line_normal', Float32Array.from(attrNormal.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('a_counters', Float32Array.from(attrCounters), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n }\n }]);\n\n return Line;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_13__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvbGluZS9pbmRleC5qcz8wYWNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRTtBQUNnQjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRTdRO0FBQ0M7QUFDQTtBQUNYOztBQUUzQztBQUNBLGtEQUFrRCxrQ0FBa0MsaUNBQWlDLG1DQUFtQyx5QkFBeUIsd0JBQXdCLDJCQUEyQixpQkFBaUIsK0RBQStELCtCQUErQixtSEFBbUgsR0FBRzs7QUFFemM7QUFDQSxxQ0FBcUMseUJBQXlCLCtCQUErQiwrQkFBK0IsNkJBQTZCLGtDQUFrQywrQkFBK0IsbUNBQW1DLDBCQUEwQix5QkFBeUIsd0JBQXdCLDJCQUEyQixpQkFBaUIsc0JBQXNCLDRCQUE0Qix3REFBd0QseUVBQXlFLG1EQUFtRCx3RkFBd0YsR0FBRztBQUM5cUIsbUJBQW1CLDZEQUFVLFlBQVkseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVTtBQUM3TixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHVGQUEwQix1Q0FBdUMsbUZBQXNCOztBQUUzRixJQUFJLHVGQUEwQix3Q0FBd0MsbUZBQXNCOztBQUU1RixJQUFJLHVGQUEwQiw2Q0FBNkMsbUZBQXNCOztBQUVqRztBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSwrQkFBK0IsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQzNFLGFBQWEsTUFBTTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVAsd0JBQXdCLHdFQUFVO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx1REFBRTtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0EseUJBQXlCLCtFQUFrQixRQUFRLCtFQUFrQjtBQUNyRSxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQ3JFLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsZUFBZSwrRUFBa0I7QUFDakMsT0FBTztBQUNQLHlCQUF5QiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDckUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQ3JFLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsdURBQVUsMEJBQTBCLHNGQUF5QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9saW5lL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCwgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgZ2V0Tm9ybWFscyBmcm9tICcuLi8uLi91dGlscy9wb2x5bGluZS1ub3JtYWxzJztcbmltcG9ydCB7IFJlbmRlcmFibGUgfSBmcm9tICcuLi9SZW5kZXJhYmxlJztcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5saW5lLmZyYWcuZ2xzbCcgKi9cbnZhciBsaW5lRnJhZyA9IFwidW5pZm9ybSBmbG9hdCB1X2Rhc2hfYXJyYXkgOiAwLjAyO1xcbnVuaWZvcm0gZmxvYXQgdV9kYXNoX29mZnNldCA6IDA7XFxudW5pZm9ybSBmbG9hdCB1X2Rhc2hfcmF0aW8gOiAwO1xcbnVuaWZvcm0gZmxvYXQgdV90aGlja25lc3MgOiAwLjAyO1xcblxcbnZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbnZhcnlpbmcgdmVjMiB2X25vcm1hbDtcXG52YXJ5aW5nIGZsb2F0IHZfY291bnRlcnM7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICBmbG9hdCBibHVyID0gMS4gLSBzbW9vdGhzdGVwKDAuOTgsIDEuLCBsZW5ndGgodl9ub3JtYWwpKTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjtcXG4gICAgZ2xfRnJhZ0NvbG9yLmEgKj0gYmx1ciAqIGNlaWwobW9kKHZfY291bnRlcnMgKyB1X2Rhc2hfb2Zmc2V0LCB1X2Rhc2hfYXJyYXkpIC0gKHVfZGFzaF9hcnJheSAqIHVfZGFzaF9yYXRpbykpO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5saW5lLnZlcnQuZ2xzbCcgKi9cbnZhciBsaW5lVmVydCA9IFwiYXR0cmlidXRlIHZlYzIgYV9wb3M7XFxuYXR0cmlidXRlIHZlYzQgYV9jb2xvcjtcXG5hdHRyaWJ1dGUgZmxvYXQgYV9saW5lX21pdGVyO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfbGluZV9ub3JtYWw7XFxuYXR0cmlidXRlIGZsb2F0IGFfY291bnRlcnM7XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG51bmlmb3JtIGZsb2F0IHVfdGhpY2tuZXNzIDogMC4wMjtcXG51bmlmb3JtIHZlYzIgdV92aWV3cG9ydDtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzIgdl9ub3JtYWw7XFxudmFyeWluZyBmbG9hdCB2X2NvdW50ZXJzO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIHZfY29sb3IgPSBhX2NvbG9yO1xcbiAgdl9jb3VudGVycyA9IGFfY291bnRlcnM7XFxuXFxuICB2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSh2ZWMzKGFfbGluZV9ub3JtYWwsIDAuMCkpO1xcblxcbiAgdmVjNCBvZmZzZXQgPSB2ZWM0KG5vcm1hbCAqIHVfdGhpY2tuZXNzIC8gMi4wICogYV9saW5lX21pdGVyLCAwLjApO1xcblxcbiAgdl9ub3JtYWwgPSB2ZWMyKG5vcm1hbCAqIHNpZ24oYV9saW5lX21pdGVyKSk7XFxuXFxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KGFfcG9zLCAwLjAsIDEuMCkgKyBvZmZzZXQ7XFxufVxcblwiO1xuZXhwb3J0IHZhciBMaW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWMzID0gbmFtZWQoSURFTlRJRklFUi5NYXRlcmlhbFN5c3RlbSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM1ID0gbmFtZWQoSURFTlRJRklFUi5HZW9tZXRyeVN5c3RlbSksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZW5kZXJhYmxlKSB7XG4gIF9pbmhlcml0cyhMaW5lLCBfUmVuZGVyYWJsZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMaW5lKTtcblxuICBmdW5jdGlvbiBMaW5lKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMaW5lKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJtYXRlcmlhbFN5c3RlbVwiLCBfZGVzY3JpcHRvciwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IyLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzaGFkZXJNb2R1bGVTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMywgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX3RoaXMudmVydGV4Q291bnQgPSB2b2lkIDA7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExpbmUsIFt7XG4gICAga2V5OiBcIm9uQXR0cmlidXRlQ2hhbmdlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkF0dHJpYnV0ZUNoYW5nZWQoX3JlZikge1xuICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgZGF0YSA9IF9yZWYuZGF0YTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5nZXRNZXNoQ29tcG9uZW50KCk7XG5cbiAgICAgIGlmIChtZXNoICYmIG1lc2gubWF0ZXJpYWwpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgY2FzZSAnZGFzaEFycmF5JzpcbiAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9kYXNoX2FycmF5JywgZGF0YSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Rhc2hPZmZzZXQnOlxuICAgICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X2Rhc2hfb2Zmc2V0JywgZGF0YSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Rhc2hSYXRpbyc6XG4gICAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfZGFzaF9yYXRpbycsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0aGlja25lc3MnOlxuICAgICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X3RoaWNrbmVzcycsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgICAgICB2YXIgY29sb3JzID0gbmV3IEFycmF5KHRoaXMudmVydGV4Q291bnQpLmZpbGwodW5kZWZpbmVkKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgICAgICAgIH0sIFtdKTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICBtZXNoLmdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9jb2xvcicsIEZsb2F0MzJBcnJheS5mcm9tKGNvbG9ycyksIHtcbiAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiA0LFxuICAgICAgICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDEsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0NCdcbiAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ2xpbmUnLCB7XG4gICAgICAgIHZzOiBsaW5lVmVydCxcbiAgICAgICAgZnM6IGxpbmVGcmFnXG4gICAgICB9KTtcblxuICAgICAgdmFyIF90aGlzJHNoYWRlck1vZHVsZVNlciA9IHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5nZXRNb2R1bGUoJ2xpbmUnKSxcbiAgICAgICAgICB2cyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci52cyxcbiAgICAgICAgICBmcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci5mcyxcbiAgICAgICAgICBleHRyYWN0ZWRVbmlmb3JtcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci51bmlmb3JtcztcblxuICAgICAgdmFyIG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFN5c3RlbS5jcmVhdGVTaGFkZXJNYXRlcmlhbCh7XG4gICAgICAgIHZlcnRleFNoYWRlcjogdnMsXG4gICAgICAgIGZyYWdtZW50U2hhZGVyOiBmc1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBfZ2V0Tm9ybWFscyA9IGdldE5vcm1hbHModGhpcy5jb25maWcucG9pbnRzLCBmYWxzZSksXG4gICAgICAgICAgbm9ybWFscyA9IF9nZXROb3JtYWxzLm5vcm1hbHMsXG4gICAgICAgICAgYXR0ckluZGV4ID0gX2dldE5vcm1hbHMuYXR0ckluZGV4LFxuICAgICAgICAgIGF0dHJQb3MgPSBfZ2V0Tm9ybWFscy5hdHRyUG9zLFxuICAgICAgICAgIGF0dHJDb3VudGVycyA9IF9nZXROb3JtYWxzLmF0dHJDb3VudGVycztcblxuICAgICAgdmFyIHZlcnRleENvdW50ID0gYXR0clBvcy5sZW5ndGg7XG4gICAgICB0aGlzLnZlcnRleENvdW50ID0gdmVydGV4Q291bnQ7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSB0aGlzLmdlb21ldHJ5U3lzdGVtLmNyZWF0ZUJ1ZmZlckdlb21ldHJ5KHtcbiAgICAgICAgdmVydGV4Q291bnQ6IHZlcnRleENvdW50XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgdGhpcy5zZXRHZW9tZXRyeShnZW9tZXRyeSk7XG4gICAgICBtYXRlcmlhbC5zZXRDdWxsKHtcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgICAgZmFjZTogZ2wuQkFDS1xuICAgICAgfSkgLy8gQHRzLWlnbm9yZVxuICAgICAgLnNldFVuaWZvcm0oZXh0cmFjdGVkVW5pZm9ybXMpO1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgZGFzaEFycmF5OiB0aGlzLmNvbmZpZy5kYXNoQXJyYXksXG4gICAgICAgIGRhc2hPZmZzZXQ6IHRoaXMuY29uZmlnLmRhc2hPZmZzZXQsXG4gICAgICAgIGRhc2hSYXRpbzogdGhpcy5jb25maWcuZGFzaFJhdGlvLFxuICAgICAgICB0aGlja25lc3M6IHRoaXMuY29uZmlnLnRoaWNrbmVzc1xuICAgICAgfSk7XG4gICAgICB2YXIgYXR0ck5vcm1hbCA9IFtdO1xuICAgICAgdmFyIGF0dHJNaXRlciA9IFtdO1xuICAgICAgbm9ybWFscy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciBub3JtID0gblswXTtcbiAgICAgICAgdmFyIG1pdGVyID0gblsxXTtcbiAgICAgICAgYXR0ck5vcm1hbC5wdXNoKFtub3JtWzBdLCBub3JtWzFdXSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICBhdHRyTWl0ZXIucHVzaChtaXRlcik7XG4gICAgICB9KTsgLy8gW1swLDEsMl0sIFsyLDEsM11dXG5cbiAgICAgIGdlb21ldHJ5LnNldEluZGV4KGF0dHJJbmRleC5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmV2KSwgX3RvQ29uc3VtYWJsZUFycmF5KGN1cikpO1xuICAgICAgfSwgW10pKTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9wb3MnLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyUG9zLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoY3VyKSk7XG4gICAgICB9LCBbXSkpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMixcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDInXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIHZhciBjb2xvcnMgPSBuZXcgQXJyYXkodmVydGV4Q291bnQpLmZpbGwodW5kZWZpbmVkKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RvQ29uc3VtYWJsZUFycmF5KF90aGlzMi5jb25maWcuY29sb3IpO1xuICAgICAgfSkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9jb2xvcicsIEZsb2F0MzJBcnJheS5mcm9tKGNvbG9ycyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiA0LFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDEsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0NCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdhX2xpbmVfbWl0ZXInLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyTWl0ZXIpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMSxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAyLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdhX2xpbmVfbm9ybWFsJywgRmxvYXQzMkFycmF5LmZyb20oYXR0ck5vcm1hbC5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmV2KSwgX3RvQ29uc3VtYWJsZUFycmF5KGN1cikpO1xuICAgICAgfSwgW10pKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMyxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfY291bnRlcnMnLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyQ291bnRlcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMSxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiA0LFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMaW5lO1xufShSZW5kZXJhYmxlKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVN5c3RlbVwiLCBbX2RlYzQsIF9kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js ***! \****************************************************************************************/ /*! exports provided: Point */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _utils_picking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/picking */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.point.frag.glsl' */\nvar pointFrag = \"uniform float u_blur : 0.05;\\nuniform float u_opacity : 0.7;\\nuniform float u_stroke_width : 0.01;\\nuniform vec4 u_stroke_color : [0, 0, 0, 0];\\nuniform float u_stroke_opacity : 1;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"sdf2d\\\"\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n int shape = int(floor(v_data.w + 0.5));\\n\\n float antialiasblur = v_data.z;\\n float antialiased_blur = -max(u_blur, antialiasblur);\\n float r = v_radius / (v_radius + u_stroke_width);\\n\\n float outer_df;\\n float inner_df;\\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\\n // if (shape == 0) {\\n outer_df = sdCircle(v_data.xy, 1.0);\\n inner_df = sdCircle(v_data.xy, r);\\n // } else if (shape == 1) {\\n // outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\\n // inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\\n // } else if (shape == 2) {\\n // outer_df = sdBox(v_data.xy, vec2(1.));\\n // inner_df = sdBox(v_data.xy, vec2(r));\\n // } else if (shape == 3) {\\n // outer_df = sdPentagon(v_data.xy, 0.8);\\n // inner_df = sdPentagon(v_data.xy, r * 0.8);\\n // } else if (shape == 4) {\\n // outer_df = sdHexagon(v_data.xy, 0.8);\\n // inner_df = sdHexagon(v_data.xy, r * 0.8);\\n // } else if (shape == 5) {\\n // outer_df = sdOctogon(v_data.xy, 1.0);\\n // inner_df = sdOctogon(v_data.xy, r);\\n // } else if (shape == 6) {\\n // outer_df = sdHexagram(v_data.xy, 0.52);\\n // inner_df = sdHexagram(v_data.xy, r * 0.52);\\n // } else if (shape == 7) {\\n // outer_df = sdRhombus(v_data.xy, vec2(1.0));\\n // inner_df = sdRhombus(v_data.xy, vec2(r));\\n // } else if (shape == 8) {\\n // outer_df = sdVesica(v_data.xy, 1.1, 0.8);\\n // inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\\n // }\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, outer_df);\\n\\n float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n inner_df\\n );\\n vec4 strokeColor = u_stroke_color == vec4(0) ? v_color : u_stroke_color;\\n\\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), strokeColor * u_stroke_opacity, color_t);\\n gl_FragColor.a = gl_FragColor.a * opacity_t;\\n\\n gl_FragColor = filterColor(gl_FragColor);\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.point.vert.glsl' */\nvar pointVert = \"attribute vec2 position;\\nattribute vec4 color;\\nattribute float shape;\\nattribute vec2 offset;\\nattribute float size;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nuniform float u_stroke_width : 0.01;\\nuniform float u_device_pixel_ratio;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n v_color = color;\\n v_radius = size;\\n\\n lowp float antialiasblur = 1.0 / u_device_pixel_ratio * (size + u_stroke_width);\\n\\n // construct point coords\\n v_data = vec4(position, antialiasblur, shape);\\n\\n gl_Position = projectionMatrix * modelViewMatrix\\n * vec4(position * size + offset, 0.0, 1.0);\\n\\n setPickingColor(a_PickingColor);\\n}\";\nvar pointShapes = ['circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'];\nvar Point = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Point, _Renderable);\n\n var _super = _createSuper(Point);\n\n function Point() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Point);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Point, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'strokeWidth') {\n mesh.material.setUniform('u_stroke_width', data);\n } else if (name === 'strokeColor') {\n mesh.material.setUniform('u_stroke_color', data);\n } else if (name === 'strokeOpacity') {\n mesh.material.setUniform('u_stroke_opacity', data);\n } else if (name === 'opacity') {\n mesh.material.setUniform('u_opacity', data);\n } else if (name === 'blur') {\n mesh.material.setUniform('u_blur', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: pointVert,\n fs: pointFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs,\n cull: {\n enable: false\n },\n depth: {\n enable: false\n },\n blend: {\n enable: true,\n func: {\n srcRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].SRC_ALPHA,\n dstRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].ONE_MINUS_SRC_ALPHA,\n srcAlpha: 1,\n dstAlpha: 1\n }\n }\n }); // TODO: support define stroke-relative props per point\n\n material.setUniform(_objectSpread({\n u_device_pixel_ratio: window.devicePixelRatio\n }, extractedUniforms));\n var attributes = this.buildAttributes();\n var geometry = this.geometrySystem.createInstancedBufferGeometry({\n maxInstancedCount: attributes.instancedOffsets.length / 2,\n vertexCount: 6\n });\n geometry.setIndex([0, 2, 1, 0, 3, 2]);\n geometry.setAttribute('position', Float32Array.from(attributes.positions), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('offset', Float32Array.from(attributes.instancedOffsets), {\n arrayStride: 4 * 2,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('color', Float32Array.from(attributes.instancedColors), {\n arrayStride: 4 * 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('size', Float32Array.from(attributes.instancedSizes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('shape', Float32Array.from(attributes.instancedShapes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_PickingColor', Float32Array.from(attributes.instancedPickingColors), {\n arrayStride: 4 * 3,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 6,\n offset: 0,\n format: 'float3'\n }]\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n }\n }, {\n key: \"buildAttribute\",\n value: function buildAttribute(config, attributes, index) {\n var _attributes$instanced, _attributes$instanced2, _attributes$instanced3, _attributes$instanced4;\n\n (_attributes$instanced = attributes.instancedPickingColors).push.apply(_attributes$instanced, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object(_utils_picking__WEBPACK_IMPORTED_MODULE_13__[\"encodePickingColor\"])(config.id || index)));\n\n attributes.instancedShapes.push(pointShapes.indexOf(config.shape || 'circle'));\n\n (_attributes$instanced2 = attributes.instancedColors).push.apply(_attributes$instanced2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.color || [1, 0, 0, 1]));\n\n (_attributes$instanced3 = attributes.instancedOffsets).push.apply(_attributes$instanced3, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.position || [0, 0]));\n\n (_attributes$instanced4 = attributes.instancedSizes).push.apply(_attributes$instanced4, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.size || [0.2, 0.2]));\n }\n }, {\n key: \"buildAttributes\",\n value: function buildAttributes() {\n var _this2 = this;\n\n var attributes = {\n positions: [1, 1, 1, -1, -1, -1, -1, 1],\n instancedOffsets: [],\n instancedColors: [],\n instancedSizes: [],\n instancedShapes: [],\n instancedPickingColors: []\n };\n\n if (Array.isArray(this.config)) {\n this.config.forEach(function (config, i) {\n _this2.buildAttribute(config, attributes, i);\n });\n } else {\n this.buildAttribute(this.config, attributes, 0);\n }\n\n return attributes;\n }\n }]);\n\n return Point;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_14__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvcG9pbnQvaW5kZXguanM/Y2M5MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ047QUFDc0I7QUFDdEI7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0QjtBQUNvQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQixnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUU3UTtBQUNDO0FBQ0c7QUFDZDs7QUFFM0M7QUFDQSw2Q0FBNkMsZ0NBQWdDLHNDQUFzQyw2Q0FBNkMscUNBQXFDLHlCQUF5QixzQkFBc0IseUJBQXlCLDJFQUEyRSwyQ0FBMkMscUNBQXFDLHlEQUF5RCxxREFBcUQscUJBQXFCLG1CQUFtQixnSUFBZ0ksMENBQTBDLHdDQUF3QyxRQUFRLHVCQUF1QiwyREFBMkQsK0RBQStELFFBQVEsdUJBQXVCLCtDQUErQyw4Q0FBOEMsUUFBUSx1QkFBdUIsK0NBQStDLG1EQUFtRCxRQUFRLHVCQUF1Qiw4Q0FBOEMsa0RBQWtELFFBQVEsdUJBQXVCLDhDQUE4Qyw0Q0FBNEMsUUFBUSx1QkFBdUIsZ0RBQWdELG9EQUFvRCxRQUFRLHVCQUF1QixvREFBb0Qsa0RBQWtELFFBQVEsdUJBQXVCLGtEQUFrRCwwREFBMEQsUUFBUSxvRUFBb0Usb0hBQW9ILDRFQUE0RSw0R0FBNEcsZ0RBQWdELCtDQUErQyxHQUFHOztBQUUzd0U7QUFDQSx5Q0FBeUMsdUJBQXVCLHdCQUF3Qix3QkFBd0IsdUJBQXVCLGtDQUFrQywrQkFBK0Isd0NBQXdDLHFDQUFxQywwQkFBMEIseUJBQXlCLHNCQUFzQix5QkFBeUIsZ0RBQWdELG9CQUFvQixvQkFBb0Isc0ZBQXNGLGlGQUFpRix1R0FBdUcsc0NBQXNDLEdBQUc7QUFDdHdCO0FBS0Esb0JBQW9CLDZEQUFVLFlBQVkseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVTtBQUN2TixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHVGQUEwQix1Q0FBdUMsbUZBQXNCOztBQUUzRixJQUFJLHVGQUEwQix3Q0FBd0MsbUZBQXNCOztBQUU1RixJQUFJLHVGQUEwQiw2Q0FBNkMsbUZBQXNCOztBQUVqRztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVEQUFFO0FBQ3RCLG9CQUFvQix1REFBRTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxvR0FBb0csK0VBQWtCLENBQUMsMEVBQWtCOztBQUV6STs7QUFFQSwrRkFBK0YsK0VBQWtCOztBQUVqSCxnR0FBZ0csK0VBQWtCOztBQUVsSCw4RkFBOEYsK0VBQWtCO0FBQ2hIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQyx1REFBVSwwQkFBMEIsc0ZBQXlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9yZW5kZXJhYmxlL3BvaW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2wsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgZW5jb2RlUGlja2luZ0NvbG9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGlja2luZyc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi4vUmVuZGVyYWJsZSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucG9pbnQuZnJhZy5nbHNsJyAqL1xudmFyIHBvaW50RnJhZyA9IFwidW5pZm9ybSBmbG9hdCB1X2JsdXIgOiAwLjA1O1xcbnVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5IDogMC43O1xcbnVuaWZvcm0gZmxvYXQgdV9zdHJva2Vfd2lkdGggOiAwLjAxO1xcbnVuaWZvcm0gdmVjNCB1X3N0cm9rZV9jb2xvciA6IFswLCAwLCAwLCAwXTtcXG51bmlmb3JtIGZsb2F0IHVfc3Ryb2tlX29wYWNpdHkgOiAxO1xcblxcbnZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X2RhdGE7XFxudmFyeWluZyBmbG9hdCB2X3JhZGl1cztcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInNkZjJkXFxcIlxcbiNwcmFnbWEgaW5jbHVkZSBcXFwicGlja2luZ1xcXCJcXG5cXG52b2lkIG1haW4oKSB7XFxuICBpbnQgc2hhcGUgPSBpbnQoZmxvb3Iodl9kYXRhLncgKyAwLjUpKTtcXG5cXG4gIGZsb2F0IGFudGlhbGlhc2JsdXIgPSB2X2RhdGEuejtcXG4gIGZsb2F0IGFudGlhbGlhc2VkX2JsdXIgPSAtbWF4KHVfYmx1ciwgYW50aWFsaWFzYmx1cik7XFxuICBmbG9hdCByID0gdl9yYWRpdXMgLyAodl9yYWRpdXMgKyB1X3N0cm9rZV93aWR0aCk7XFxuXFxuICBmbG9hdCBvdXRlcl9kZjtcXG4gIGZsb2F0IGlubmVyX2RmO1xcbiAgLy8gJ2NpcmNsZScsICd0cmlhbmdsZScsICdzcXVhcmUnLCAncGVudGFnb24nLCAnaGV4YWdvbicsICdvY3RvZ29uJywgJ2hleGFncmFtJywgJ3Job21idXMnLCAndmVzaWNhJ1xcbiAgLy8gaWYgKHNoYXBlID09IDApIHtcXG4gICAgb3V0ZXJfZGYgPSBzZENpcmNsZSh2X2RhdGEueHksIDEuMCk7XFxuICAgIGlubmVyX2RmID0gc2RDaXJjbGUodl9kYXRhLnh5LCByKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gMSkge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSgxLjEgKiB2X2RhdGEueHkpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSgxLjEgLyByICogdl9kYXRhLnh5KTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gMikge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkQm94KHZfZGF0YS54eSwgdmVjMigxLikpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkQm94KHZfZGF0YS54eSwgdmVjMihyKSk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDMpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZFBlbnRhZ29uKHZfZGF0YS54eSwgMC44KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZFBlbnRhZ29uKHZfZGF0YS54eSwgciAqIDAuOCk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDQpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEhleGFnb24odl9kYXRhLnh5LCAwLjgpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkSGV4YWdvbih2X2RhdGEueHksIHIgKiAwLjgpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSA1KSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RPY3RvZ29uKHZfZGF0YS54eSwgMS4wKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZE9jdG9nb24odl9kYXRhLnh5LCByKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gNikge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkSGV4YWdyYW0odl9kYXRhLnh5LCAwLjUyKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEhleGFncmFtKHZfZGF0YS54eSwgciAqIDAuNTIpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSA3KSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RSaG9tYnVzKHZfZGF0YS54eSwgdmVjMigxLjApKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZFJob21idXModl9kYXRhLnh5LCB2ZWMyKHIpKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gOCkge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkVmVzaWNhKHZfZGF0YS54eSwgMS4xLCAwLjgpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkVmVzaWNhKHZfZGF0YS54eSwgciAqIDEuMSwgciAqIDAuOCk7XFxuICAvLyB9XFxuXFxuICBmbG9hdCBvcGFjaXR5X3QgPSBzbW9vdGhzdGVwKDAuMCwgYW50aWFsaWFzZWRfYmx1ciwgb3V0ZXJfZGYpO1xcblxcbiAgZmxvYXQgY29sb3JfdCA9IHVfc3Ryb2tlX3dpZHRoIDwgMC4wMSA/IDAuMCA6IHNtb290aHN0ZXAoXFxuICAgIGFudGlhbGlhc2VkX2JsdXIsXFxuICAgIDAuMCxcXG4gICAgaW5uZXJfZGZcXG4gICk7XFxuICB2ZWM0IHN0cm9rZUNvbG9yID0gdV9zdHJva2VfY29sb3IgPT0gdmVjNCgwKSA/IHZfY29sb3IgOiB1X3N0cm9rZV9jb2xvcjtcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IG1peCh2ZWM0KHZfY29sb3IucmdiLCB2X2NvbG9yLmEgKiB1X29wYWNpdHkpLCBzdHJva2VDb2xvciAqIHVfc3Ryb2tlX29wYWNpdHksIGNvbG9yX3QpO1xcbiAgZ2xfRnJhZ0NvbG9yLmEgPSBnbF9GcmFnQ29sb3IuYSAqIG9wYWNpdHlfdDtcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IGZpbHRlckNvbG9yKGdsX0ZyYWdDb2xvcik7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLnBvaW50LnZlcnQuZ2xzbCcgKi9cbnZhciBwb2ludFZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xcbmF0dHJpYnV0ZSBmbG9hdCBzaGFwZTtcXG5hdHRyaWJ1dGUgdmVjMiBvZmZzZXQ7XFxuYXR0cmlidXRlIGZsb2F0IHNpemU7XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG5cXG51bmlmb3JtIGZsb2F0IHVfc3Ryb2tlX3dpZHRoIDogMC4wMTtcXG51bmlmb3JtIGZsb2F0IHVfZGV2aWNlX3BpeGVsX3JhdGlvO1xcbnVuaWZvcm0gdmVjMiB1X3ZpZXdwb3J0O1xcblxcbnZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X2RhdGE7XFxudmFyeWluZyBmbG9hdCB2X3JhZGl1cztcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInBpY2tpbmdcXFwiXFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9jb2xvciA9IGNvbG9yO1xcbiAgdl9yYWRpdXMgPSBzaXplO1xcblxcbiAgbG93cCBmbG9hdCBhbnRpYWxpYXNibHVyID0gMS4wIC8gdV9kZXZpY2VfcGl4ZWxfcmF0aW8gKiAoc2l6ZSArIHVfc3Ryb2tlX3dpZHRoKTtcXG5cXG4gIC8vIGNvbnN0cnVjdCBwb2ludCBjb29yZHNcXG4gIHZfZGF0YSA9IHZlYzQocG9zaXRpb24sIGFudGlhbGlhc2JsdXIsIHNoYXBlKTtcXG5cXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeFxcbiAgICAqIHZlYzQocG9zaXRpb24gKiBzaXplICsgb2Zmc2V0LCAwLjAsIDEuMCk7XFxuXFxuICBzZXRQaWNraW5nQ29sb3IoYV9QaWNraW5nQ29sb3IpO1xcbn1cIjtcbnZhciBwb2ludFNoYXBlcyA9IFsnY2lyY2xlJywgJ3RyaWFuZ2xlJywgJ3NxdWFyZScsICdwZW50YWdvbicsICdoZXhhZ29uJywgJ29jdG9nb24nLCAnaGV4YWdyYW0nLCAncmhvbWJ1cycsICd2ZXNpY2EnXTtcbmV4cG9ydFxuLyoqXG4gKiBVc2UgU0RGIHRvIGRyYXcgMkQgcG9pbnQgd2l0aCBzdHJva2UuXG4gKi9cbnZhciBQb2ludCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjNSA9IG5hbWVkKElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVuZGVyYWJsZSkge1xuICBfaW5oZXJpdHMoUG9pbnQsIF9SZW5kZXJhYmxlKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFBvaW50KTtcblxuICBmdW5jdGlvbiBQb2ludCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9pbnQpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcIm1hdGVyaWFsU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJnZW9tZXRyeVN5c3RlbVwiLCBfZGVzY3JpcHRvcjIsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgX2Rlc2NyaXB0b3IzLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUG9pbnQsIFt7XG4gICAga2V5OiBcIm9uQXR0cmlidXRlQ2hhbmdlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkF0dHJpYnV0ZUNoYW5nZWQoX3JlZikge1xuICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgZGF0YSA9IF9yZWYuZGF0YTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5nZXRNZXNoQ29tcG9uZW50KCk7XG5cbiAgICAgIGlmIChtZXNoICYmIG1lc2gubWF0ZXJpYWwpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzdHJva2VXaWR0aCcpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfc3Ryb2tlX3dpZHRoJywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3N0cm9rZUNvbG9yJykge1xuICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9zdHJva2VfY29sb3InLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnc3Ryb2tlT3BhY2l0eScpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfc3Ryb2tlX29wYWNpdHknLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnb3BhY2l0eScpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfb3BhY2l0eScsIGRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdibHVyJykge1xuICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9ibHVyJywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5yZWdpc3Rlck1vZHVsZSgnZ3JpZCcsIHtcbiAgICAgICAgdnM6IHBvaW50VmVydCxcbiAgICAgICAgZnM6IHBvaW50RnJhZ1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBfdGhpcyRzaGFkZXJNb2R1bGVTZXIgPSB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UuZ2V0TW9kdWxlKCdncmlkJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudnMsXG4gICAgICAgICAgZnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIuZnMsXG4gICAgICAgICAgZXh0cmFjdGVkVW5pZm9ybXMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudW5pZm9ybXM7XG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxTeXN0ZW0uY3JlYXRlU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXI6IHZzLFxuICAgICAgICBmcmFnbWVudFNoYWRlcjogZnMsXG4gICAgICAgIGN1bGw6IHtcbiAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIGRlcHRoOiB7XG4gICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBibGVuZDoge1xuICAgICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgICBmdW5jOiB7XG4gICAgICAgICAgICBzcmNSR0I6IGdsLlNSQ19BTFBIQSxcbiAgICAgICAgICAgIGRzdFJHQjogZ2wuT05FX01JTlVTX1NSQ19BTFBIQSxcbiAgICAgICAgICAgIHNyY0FscGhhOiAxLFxuICAgICAgICAgICAgZHN0QWxwaGE6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBUT0RPOiBzdXBwb3J0IGRlZmluZSBzdHJva2UtcmVsYXRpdmUgcHJvcHMgcGVyIHBvaW50XG5cbiAgICAgIG1hdGVyaWFsLnNldFVuaWZvcm0oX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHVfZGV2aWNlX3BpeGVsX3JhdGlvOiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb1xuICAgICAgfSwgZXh0cmFjdGVkVW5pZm9ybXMpKTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5idWlsZEF0dHJpYnV0ZXMoKTtcbiAgICAgIHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnlTeXN0ZW0uY3JlYXRlSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkoe1xuICAgICAgICBtYXhJbnN0YW5jZWRDb3VudDogYXR0cmlidXRlcy5pbnN0YW5jZWRPZmZzZXRzLmxlbmd0aCAvIDIsXG4gICAgICAgIHZlcnRleENvdW50OiA2XG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEluZGV4KFswLCAyLCAxLCAwLCAzLCAyXSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5wb3NpdGlvbnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMixcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDInXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnb2Zmc2V0JywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRPZmZzZXRzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAnaW5zdGFuY2UnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDInXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnY29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyaWJ1dGVzLmluc3RhbmNlZENvbG9ycyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiA0LFxuICAgICAgICBzdGVwTW9kZTogJ2luc3RhbmNlJyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQ0J1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3NpemUnLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyaWJ1dGVzLmluc3RhbmNlZFNpemVzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDMsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0J1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3NoYXBlJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRTaGFwZXMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0LFxuICAgICAgICBzdGVwTW9kZTogJ2luc3RhbmNlJyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogNCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9QaWNraW5nQ29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyaWJ1dGVzLmluc3RhbmNlZFBpY2tpbmdDb2xvcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDYsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MydcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZXRNYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICB0aGlzLnNldEdlb21ldHJ5KGdlb21ldHJ5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYnVpbGRBdHRyaWJ1dGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGUoY29uZmlnLCBhdHRyaWJ1dGVzLCBpbmRleCkge1xuICAgICAgdmFyIF9hdHRyaWJ1dGVzJGluc3RhbmNlZCwgX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMiwgX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMywgX2F0dHJpYnV0ZXMkaW5zdGFuY2VkNDtcblxuICAgICAgKF9hdHRyaWJ1dGVzJGluc3RhbmNlZCA9IGF0dHJpYnV0ZXMuaW5zdGFuY2VkUGlja2luZ0NvbG9ycykucHVzaC5hcHBseShfYXR0cmlidXRlcyRpbnN0YW5jZWQsIF90b0NvbnN1bWFibGVBcnJheShlbmNvZGVQaWNraW5nQ29sb3IoY29uZmlnLmlkIHx8IGluZGV4KSkpO1xuXG4gICAgICBhdHRyaWJ1dGVzLmluc3RhbmNlZFNoYXBlcy5wdXNoKHBvaW50U2hhcGVzLmluZGV4T2YoY29uZmlnLnNoYXBlIHx8ICdjaXJjbGUnKSk7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQyID0gYXR0cmlidXRlcy5pbnN0YW5jZWRDb2xvcnMpLnB1c2guYXBwbHkoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMiwgX3RvQ29uc3VtYWJsZUFycmF5KGNvbmZpZy5jb2xvciB8fCBbMSwgMCwgMCwgMV0pKTtcblxuICAgICAgKF9hdHRyaWJ1dGVzJGluc3RhbmNlZDMgPSBhdHRyaWJ1dGVzLmluc3RhbmNlZE9mZnNldHMpLnB1c2guYXBwbHkoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMywgX3RvQ29uc3VtYWJsZUFycmF5KGNvbmZpZy5wb3NpdGlvbiB8fCBbMCwgMF0pKTtcblxuICAgICAgKF9hdHRyaWJ1dGVzJGluc3RhbmNlZDQgPSBhdHRyaWJ1dGVzLmluc3RhbmNlZFNpemVzKS5wdXNoLmFwcGx5KF9hdHRyaWJ1dGVzJGluc3RhbmNlZDQsIF90b0NvbnN1bWFibGVBcnJheShjb25maWcuc2l6ZSB8fCBbMC4yLCAwLjJdKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJ1aWxkQXR0cmlidXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWlsZEF0dHJpYnV0ZXMoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIHBvc2l0aW9uczogWzEsIDEsIDEsIC0xLCAtMSwgLTEsIC0xLCAxXSxcbiAgICAgICAgaW5zdGFuY2VkT2Zmc2V0czogW10sXG4gICAgICAgIGluc3RhbmNlZENvbG9yczogW10sXG4gICAgICAgIGluc3RhbmNlZFNpemVzOiBbXSxcbiAgICAgICAgaW5zdGFuY2VkU2hhcGVzOiBbXSxcbiAgICAgICAgaW5zdGFuY2VkUGlja2luZ0NvbG9yczogW11cbiAgICAgIH07XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29uZmlnKSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uIChjb25maWcsIGkpIHtcbiAgICAgICAgICBfdGhpczIuYnVpbGRBdHRyaWJ1dGUoY29uZmlnLCBhdHRyaWJ1dGVzLCBpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1aWxkQXR0cmlidXRlKHRoaXMuY29uZmlnLCBhdHRyaWJ1dGVzLCAwKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBvaW50O1xufShSZW5kZXJhYmxlKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVN5c3RlbVwiLCBbX2RlYzQsIF9kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js ***! \*******************************************************************************/ /*! exports provided: TextureCache */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextureCache\", function() { return TextureCache; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar TextureCache = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function TextureCache() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TextureCache);\n\n this.cache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TextureCache, [{\n key: \"get\",\n value: function get(name) {\n return this.cache[name];\n }\n }, {\n key: \"set\",\n value: function set(name, texture) {\n this.cache[name] = texture;\n }\n }]);\n\n return TextureCache;\n}(), _temp)) || _class);\n//# sourceMappingURL=Cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3RleHR1cmUvQ2FjaGUuanM/Nzc4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEOztBQUV1QztBQUNoQywyQkFBMkIsNERBQVU7QUFDNUM7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3RleHR1cmUvQ2FjaGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbnZhciBfZGVjLCBfY2xhc3MsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmV4cG9ydCB2YXIgVGV4dHVyZUNhY2hlID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGV4dHVyZUNhY2hlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUZXh0dXJlQ2FjaGUpO1xuXG4gICAgdGhpcy5jYWNoZSA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRleHR1cmVDYWNoZSwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChuYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVtuYW1lXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChuYW1lLCB0ZXh0dXJlKSB7XG4gICAgICB0aGlzLmNhY2hlW25hbWVdID0gdGV4dHVyZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGV4dHVyZUNhY2hlO1xufSgpLCBfdGVtcCkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DYWNoZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js ***! \***********************************************************************************/ /*! exports provided: Texture2D */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Texture2D\", function() { return Texture2D; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Cache */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar Texture2D = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_Cache__WEBPACK_IMPORTED_MODULE_10__[\"TextureCache\"]), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Texture2D() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Texture2D);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"textureCache\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n this.config = void 0;\n this.loaded = false;\n this.texture = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Texture2D, [{\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return this.loaded;\n } // public update(config: ITexture2DInitializationOptions) {\n // if (this.loaded && this.texture) {\n // const t = this.texture.get();\n // }\n // }\n\n }, {\n key: \"load\",\n value: function () {\n var _load = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.config.url) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n var existed = _this.textureCache.get(_this.config.url);\n\n if (existed) {\n resolve(existed);\n } else {\n var image = new Image();\n image.crossOrigin = 'Anonymous';\n image.src = _this.config.url;\n\n image.onload = function () {\n var texture = _this.engine.createTexture2D(_objectSpread(_objectSpread({}, _this.config), {}, {\n data: image,\n width: image.width,\n height: image.height,\n flipY: true\n }));\n\n _this.textureCache.set(_this.config.url, texture);\n\n _this.texture = texture;\n _this.loaded = true;\n resolve(texture);\n };\n\n image.onerror = function () {\n reject();\n };\n }\n }));\n\n case 4:\n this.loaded = true;\n this.texture = this.engine.createTexture2D(this.config);\n return _context.abrupt(\"return\", this.texture);\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function load() {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return Texture2D;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"textureCache\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Texture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3RleHR1cmUvVGV4dHVyZTJELmpzPzNlZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDTztBQUNJO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVuZTtBQUNGO0FBQ1I7QUFDaEMsd0JBQXdCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxvREFBWSxXQUFXLHdEQUFNLENBQUMsOERBQVU7QUFDcEc7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrRkFBK0YsbUJBQW1CO0FBQ2xIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy90ZXh0dXJlL1RleHR1cmUyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IFRleHR1cmVDYWNoZSB9IGZyb20gJy4vQ2FjaGUnO1xuZXhwb3J0IHZhciBUZXh0dXJlMkQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoVGV4dHVyZUNhY2hlKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGV4dHVyZTJEKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUZXh0dXJlMkQpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0ZXh0dXJlQ2FjaGVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0dXJlID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRleHR1cmUyRCwgW3tcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZyhjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvYWRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvYWRlZDtcbiAgICB9IC8vIHB1YmxpYyB1cGRhdGUoY29uZmlnOiBJVGV4dHVyZTJESW5pdGlhbGl6YXRpb25PcHRpb25zKSB7XG4gICAgLy8gICBpZiAodGhpcy5sb2FkZWQgJiYgdGhpcy50ZXh0dXJlKSB7XG4gICAgLy8gICAgIGNvbnN0IHQgPSB0aGlzLnRleHR1cmUuZ2V0KCk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2xvYWQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy51cmwpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICB2YXIgZXhpc3RlZCA9IF90aGlzLnRleHR1cmVDYWNoZS5nZXQoX3RoaXMuY29uZmlnLnVybCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChleGlzdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXhpc3RlZCk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gX3RoaXMuY29uZmlnLnVybDtcblxuICAgICAgICAgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHRleHR1cmUgPSBfdGhpcy5lbmdpbmUuY3JlYXRlVGV4dHVyZTJEKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMuY29uZmlnKSwge30sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGltYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGlwWTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnRleHR1cmVDYWNoZS5zZXQoX3RoaXMuY29uZmlnLnVybCwgdGV4dHVyZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGV4dHVyZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmUgPSB0aGlzLmVuZ2luZS5jcmVhdGVUZXh0dXJlMkQodGhpcy5jb25maWcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgdGhpcy50ZXh0dXJlKTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgIHJldHVybiBfbG9hZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbG9hZDtcbiAgICB9KClcbiAgfV0pO1xuXG4gIHJldHVybiBUZXh0dXJlMkQ7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0ZXh0dXJlQ2FjaGVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js ***! \******************************************************************************/ /*! exports provided: createCanvas */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCanvas\", function() { return createCanvas; });\nfunction createCanvas() {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n throw new Error('Cannot create a canvas in this context');\n }\n}\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2NhbnZhcy5qcz8zNjIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2NhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYW52YXMoKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBhIGNhbnZhcyBpbiB0aGlzIGNvbnRleHQnKTtcbiAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FudmFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Array.isArray ? Array.isArray(value) : Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLWFycmF5LmpzP2U4YmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUErQjtBQUNmO0FBQ2hCLGdEQUFnRCx3REFBTTtBQUN0RCxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5ID8gQXJyYXkuaXNBcnJheSh2YWx1ZSkgOiBpc1R5cGUodmFsdWUsICdBcnJheScpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1hcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js ***! \*********************************************************************************/ /*! exports provided: isNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLW51bWJlci5qcz8yNGQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbnVtYmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\n\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isType);\n//# sourceMappingURL=is-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLXR5cGUuanM/ZDQzNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLXR5cGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIGlzVHlwZSA9IGZ1bmN0aW9uIGlzVHlwZSh2YWx1ZSwgdHlwZSkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0ICcgKyB0eXBlICsgJ10nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdHlwZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js ***! \*************************************************************************************/ /*! exports provided: isTypedArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanM/MDRmOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRDs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isb0VBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xudmFyIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJztcbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xudmFyIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXSc7XG52YXIgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nO1xudmFyIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nO1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xudmFyIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcbnZhciBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XSc7XG52YXIgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nO1xudmFyIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJztcbnZhciBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJztcbnZhciBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJztcbnZhciB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJztcbnZhciB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nO1xudmFyIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XSc7XG52YXIgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cblxudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID0gdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPSB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID0gdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPSB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXG5cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG5cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKV07XG59XG5cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCc7XG59XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5cblxuZXhwb3J0IHZhciBpc1R5cGVkQXJyYXkgPSBiYXNlSXNUeXBlZEFycmF5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdHlwZWRhcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js ***! \****************************************************************************/ /*! exports provided: getAngle, createVec3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\");\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL21hdGguanM/NTlkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ007QUFDaEM7QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsTUFBTSwyREFBUTtBQUNkLFdBQVcsOENBQUk7QUFDZjs7QUFFQTtBQUNBLFdBQVcsOENBQUk7QUFDZixHQUFHOzs7QUFHSCxTQUFTLDhDQUFJO0FBQ2I7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvbWF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYW5nbGUpIHtcbiAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChhbmdsZSA+IDM2MCB8fCBhbmdsZSA8IC0zNjApIHtcbiAgICByZXR1cm4gYW5nbGUgJSAzNjA7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmVjMyh4LCB5LCB6KSB7XG4gIGlmIChpc051bWJlcih4KSkge1xuICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXMoeCwgeSwgeik7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gdmVjMy5jbG9uZSh4KTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHhbMF0sIHhbMV0sIHhbMl0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js ***! \*******************************************************************************/ /*! exports provided: encodePickingColor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=picking.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3BpY2tpbmcuanM/OWQyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3BpY2tpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZW5jb2RlUGlja2luZ0NvbG9yKGZlYXR1cmVJZHgpIHtcbiAgcmV0dXJuIFtmZWF0dXJlSWR4ICsgMSAmIDI1NSwgZmVhdHVyZUlkeCArIDEgPj4gOCAmIDI1NSwgZmVhdHVyZUlkeCArIDEgPj4gOCA+PiA4ICYgMjU1XTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBpY2tpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js ***! \****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-vec2 */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/index.js\");\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(gl_vec2__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! polyline-miter-util */ \"./node_modules/_polyline-miter-util@1.0.1@polyline-miter-util/index.js\");\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__);\n// @ts-ignore\n // @ts-ignore\n\n\n\nfunction extrusions(positions, out, point, normal, scale) {\n addNext(out, normal, -scale);\n addNext(out, normal, scale);\n positions.push(point);\n positions.push(point);\n}\n\nfunction addNext(out, normal, length) {\n out.push([[normal[0], normal[1]], length]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (points, closed, indexOffset) {\n var lineA = [0, 0];\n var lineB = [0, 0];\n var tangent = [0, 0];\n var miter = [0, 0];\n\n var _lastFlip = -1;\n\n var _started = false;\n var _normal = null;\n var tmp = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"create\"])();\n var count = indexOffset || 0;\n var miterLimit = 3;\n var out = [];\n var attrPos = [];\n var attrIndex = [];\n var attrCounters = [0, 0];\n\n if (closed) {\n points = points.slice();\n points.push(points[0]);\n }\n\n var total = points.length;\n\n for (var i = 1; i < total; i++) {\n var index = count;\n var last = points[i - 1];\n var cur = points[i];\n var next = i < points.length - 1 ? points[i + 1] : null;\n attrCounters.push(i / total, i / total);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineA, cur, last);\n\n if (!_normal) {\n _normal = [0, 0];\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA);\n }\n\n if (!_started) {\n _started = true;\n extrusions(attrPos, out, last, _normal, 1);\n }\n\n attrIndex.push([index + 0, index + 1, index + 2]);\n\n if (!next) {\n // no miter, simple segment\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n } else {\n // miter with last\n // get unit dir of next line\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineB, next, cur); // stores tangent & miter\n\n var miterLen = Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"computeMiter\"])(tangent, miter, lineA, lineB, 1); // get orientation\n\n var flip = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"dot\"])(tangent, _normal) < 0 ? -1 : 1;\n var bevel = miterLen > miterLimit; // 处理相邻线段重叠的情况\n\n if (!isFinite(miterLen)) {\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n _lastFlip = flip;\n continue;\n }\n\n if (bevel) {\n miterLen = miterLimit;\n attrCounters.push(i / total); // next two points in our first segment\n\n addNext(out, _normal, -flip);\n attrPos.push(cur);\n addNext(out, miter, miterLen * flip);\n attrPos.push(cur);\n attrIndex.push(_lastFlip !== -flip ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]); // now add the bevel triangle\n\n attrIndex.push([index + 2, index + 3, index + 4]);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(tmp, lineB);\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, tmp); // store normal for next round\n\n addNext(out, _normal, -flip);\n attrPos.push(cur); // the miter is now the normal for our next join\n\n count += 3;\n } else {\n // miter\n // next two points for our miter join\n extrusions(attrPos, out, cur, miter, miterLen);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n flip = -1; // the miter is now the normal for our next join\n\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, miter);\n count += 2;\n }\n\n _lastFlip = flip;\n }\n }\n\n return {\n normals: out,\n attrIndex: attrIndex,\n attrPos: attrPos,\n attrCounters: attrCounters\n };\n});\n//# sourceMappingURL=polyline-normals.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3BvbHlsaW5lLW5vcm1hbHMuanM/MGY4MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDNEM7O0FBRTBCOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFlBQVksc0RBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGlCQUFpQixXQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFFQUFTOztBQUViO0FBQ0E7QUFDQSxNQUFNLGtFQUFNO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU0sa0VBQU0saUJBQWlCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU0scUVBQVMsbUJBQW1COztBQUVsQyxxQkFBcUIsd0VBQVksa0NBQWtDOztBQUVuRSxpQkFBaUIsbURBQUc7QUFDcEIsd0NBQXdDOztBQUV4QztBQUNBLFFBQVEsa0VBQU0saUJBQWlCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnSEFBZ0g7O0FBRWhIO0FBQ0EsUUFBUSxrRUFBTTtBQUNkLFFBQVEsb0RBQUksZUFBZTs7QUFFM0I7QUFDQSwwQkFBMEI7O0FBRTFCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQixRQUFRLG9EQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy91dGlscy9wb2x5bGluZS1ub3JtYWxzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgY29weSwgY3JlYXRlLCBkb3QgfSBmcm9tICdnbC12ZWMyJzsgLy8gQHRzLWlnbm9yZVxuXG5pbXBvcnQgeyBjb21wdXRlTWl0ZXIsIGRpcmVjdGlvbiwgbm9ybWFsIH0gZnJvbSAncG9seWxpbmUtbWl0ZXItdXRpbCc7XG5cbmZ1bmN0aW9uIGV4dHJ1c2lvbnMocG9zaXRpb25zLCBvdXQsIHBvaW50LCBub3JtYWwsIHNjYWxlKSB7XG4gIGFkZE5leHQob3V0LCBub3JtYWwsIC1zY2FsZSk7XG4gIGFkZE5leHQob3V0LCBub3JtYWwsIHNjYWxlKTtcbiAgcG9zaXRpb25zLnB1c2gocG9pbnQpO1xuICBwb3NpdGlvbnMucHVzaChwb2ludCk7XG59XG5cbmZ1bmN0aW9uIGFkZE5leHQob3V0LCBub3JtYWwsIGxlbmd0aCkge1xuICBvdXQucHVzaChbW25vcm1hbFswXSwgbm9ybWFsWzFdXSwgbGVuZ3RoXSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChwb2ludHMsIGNsb3NlZCwgaW5kZXhPZmZzZXQpIHtcbiAgdmFyIGxpbmVBID0gWzAsIDBdO1xuICB2YXIgbGluZUIgPSBbMCwgMF07XG4gIHZhciB0YW5nZW50ID0gWzAsIDBdO1xuICB2YXIgbWl0ZXIgPSBbMCwgMF07XG5cbiAgdmFyIF9sYXN0RmxpcCA9IC0xO1xuXG4gIHZhciBfc3RhcnRlZCA9IGZhbHNlO1xuICB2YXIgX25vcm1hbCA9IG51bGw7XG4gIHZhciB0bXAgPSBjcmVhdGUoKTtcbiAgdmFyIGNvdW50ID0gaW5kZXhPZmZzZXQgfHwgMDtcbiAgdmFyIG1pdGVyTGltaXQgPSAzO1xuICB2YXIgb3V0ID0gW107XG4gIHZhciBhdHRyUG9zID0gW107XG4gIHZhciBhdHRySW5kZXggPSBbXTtcbiAgdmFyIGF0dHJDb3VudGVycyA9IFswLCAwXTtcblxuICBpZiAoY2xvc2VkKSB7XG4gICAgcG9pbnRzID0gcG9pbnRzLnNsaWNlKCk7XG4gICAgcG9pbnRzLnB1c2gocG9pbnRzWzBdKTtcbiAgfVxuXG4gIHZhciB0b3RhbCA9IHBvaW50cy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgdmFyIGluZGV4ID0gY291bnQ7XG4gICAgdmFyIGxhc3QgPSBwb2ludHNbaSAtIDFdO1xuICAgIHZhciBjdXIgPSBwb2ludHNbaV07XG4gICAgdmFyIG5leHQgPSBpIDwgcG9pbnRzLmxlbmd0aCAtIDEgPyBwb2ludHNbaSArIDFdIDogbnVsbDtcbiAgICBhdHRyQ291bnRlcnMucHVzaChpIC8gdG90YWwsIGkgLyB0b3RhbCk7XG4gICAgZGlyZWN0aW9uKGxpbmVBLCBjdXIsIGxhc3QpO1xuXG4gICAgaWYgKCFfbm9ybWFsKSB7XG4gICAgICBfbm9ybWFsID0gWzAsIDBdO1xuICAgICAgbm9ybWFsKF9ub3JtYWwsIGxpbmVBKTtcbiAgICB9XG5cbiAgICBpZiAoIV9zdGFydGVkKSB7XG4gICAgICBfc3RhcnRlZCA9IHRydWU7XG4gICAgICBleHRydXNpb25zKGF0dHJQb3MsIG91dCwgbGFzdCwgX25vcm1hbCwgMSk7XG4gICAgfVxuXG4gICAgYXR0ckluZGV4LnB1c2goW2luZGV4ICsgMCwgaW5kZXggKyAxLCBpbmRleCArIDJdKTtcblxuICAgIGlmICghbmV4dCkge1xuICAgICAgLy8gbm8gbWl0ZXIsIHNpbXBsZSBzZWdtZW50XG4gICAgICBub3JtYWwoX25vcm1hbCwgbGluZUEpOyAvLyByZXNldCBub3JtYWxcblxuICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGN1ciwgX25vcm1hbCwgMSk7XG4gICAgICBhdHRySW5kZXgucHVzaChfbGFzdEZsaXAgPT09IDEgPyBbaW5kZXgsIGluZGV4ICsgMiwgaW5kZXggKyAzXSA6IFtpbmRleCArIDIsIGluZGV4ICsgMSwgaW5kZXggKyAzXSk7XG4gICAgICBjb3VudCArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtaXRlciB3aXRoIGxhc3RcbiAgICAgIC8vIGdldCB1bml0IGRpciBvZiBuZXh0IGxpbmVcbiAgICAgIGRpcmVjdGlvbihsaW5lQiwgbmV4dCwgY3VyKTsgLy8gc3RvcmVzIHRhbmdlbnQgJiBtaXRlclxuXG4gICAgICB2YXIgbWl0ZXJMZW4gPSBjb21wdXRlTWl0ZXIodGFuZ2VudCwgbWl0ZXIsIGxpbmVBLCBsaW5lQiwgMSk7IC8vIGdldCBvcmllbnRhdGlvblxuXG4gICAgICB2YXIgZmxpcCA9IGRvdCh0YW5nZW50LCBfbm9ybWFsKSA8IDAgPyAtMSA6IDE7XG4gICAgICB2YXIgYmV2ZWwgPSBtaXRlckxlbiA+IG1pdGVyTGltaXQ7IC8vIOWkhOeQhuebuOmCu+e6v+autemHjeWPoOeahOaDheWGtVxuXG4gICAgICBpZiAoIWlzRmluaXRlKG1pdGVyTGVuKSkge1xuICAgICAgICBub3JtYWwoX25vcm1hbCwgbGluZUEpOyAvLyByZXNldCBub3JtYWxcblxuICAgICAgICBleHRydXNpb25zKGF0dHJQb3MsIG91dCwgY3VyLCBfbm9ybWFsLCAxKTtcbiAgICAgICAgYXR0ckluZGV4LnB1c2goX2xhc3RGbGlwID09PSAxID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pO1xuICAgICAgICBjb3VudCArPSAyO1xuICAgICAgICBfbGFzdEZsaXAgPSBmbGlwO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJldmVsKSB7XG4gICAgICAgIG1pdGVyTGVuID0gbWl0ZXJMaW1pdDtcbiAgICAgICAgYXR0ckNvdW50ZXJzLnB1c2goaSAvIHRvdGFsKTsgLy8gbmV4dCB0d28gcG9pbnRzIGluIG91ciBmaXJzdCBzZWdtZW50XG5cbiAgICAgICAgYWRkTmV4dChvdXQsIF9ub3JtYWwsIC1mbGlwKTtcbiAgICAgICAgYXR0clBvcy5wdXNoKGN1cik7XG4gICAgICAgIGFkZE5leHQob3V0LCBtaXRlciwgbWl0ZXJMZW4gKiBmbGlwKTtcbiAgICAgICAgYXR0clBvcy5wdXNoKGN1cik7XG4gICAgICAgIGF0dHJJbmRleC5wdXNoKF9sYXN0RmxpcCAhPT0gLWZsaXAgPyBbaW5kZXgsIGluZGV4ICsgMiwgaW5kZXggKyAzXSA6IFtpbmRleCArIDIsIGluZGV4ICsgMSwgaW5kZXggKyAzXSk7IC8vIG5vdyBhZGQgdGhlIGJldmVsIHRyaWFuZ2xlXG5cbiAgICAgICAgYXR0ckluZGV4LnB1c2goW2luZGV4ICsgMiwgaW5kZXggKyAzLCBpbmRleCArIDRdKTtcbiAgICAgICAgbm9ybWFsKHRtcCwgbGluZUIpO1xuICAgICAgICBjb3B5KF9ub3JtYWwsIHRtcCk7IC8vIHN0b3JlIG5vcm1hbCBmb3IgbmV4dCByb3VuZFxuXG4gICAgICAgIGFkZE5leHQob3V0LCBfbm9ybWFsLCAtZmxpcCk7XG4gICAgICAgIGF0dHJQb3MucHVzaChjdXIpOyAvLyB0aGUgbWl0ZXIgaXMgbm93IHRoZSBub3JtYWwgZm9yIG91ciBuZXh0IGpvaW5cblxuICAgICAgICBjb3VudCArPSAzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbWl0ZXJcbiAgICAgICAgLy8gbmV4dCB0d28gcG9pbnRzIGZvciBvdXIgbWl0ZXIgam9pblxuICAgICAgICBleHRydXNpb25zKGF0dHJQb3MsIG91dCwgY3VyLCBtaXRlciwgbWl0ZXJMZW4pO1xuICAgICAgICBhdHRySW5kZXgucHVzaChfbGFzdEZsaXAgPT09IDEgPyBbaW5kZXgsIGluZGV4ICsgMiwgaW5kZXggKyAzXSA6IFtpbmRleCArIDIsIGluZGV4ICsgMSwgaW5kZXggKyAzXSk7XG4gICAgICAgIGZsaXAgPSAtMTsgLy8gdGhlIG1pdGVyIGlzIG5vdyB0aGUgbm9ybWFsIGZvciBvdXIgbmV4dCBqb2luXG5cbiAgICAgICAgY29weShfbm9ybWFsLCBtaXRlcik7XG4gICAgICAgIGNvdW50ICs9IDI7XG4gICAgICB9XG5cbiAgICAgIF9sYXN0RmxpcCA9IGZsaXA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub3JtYWxzOiBvdXQsXG4gICAgYXR0ckluZGV4OiBhdHRySW5kZXgsXG4gICAgYXR0clBvczogYXR0clBvcyxcbiAgICBhdHRyQ291bnRlcnM6IGF0dHJDb3VudGVyc1xuICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUtbm9ybWFscy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js\n"); /***/ }), /***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js ***! \**********************************************************************************/ /*! exports provided: merge */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\nfunction merge(a, b) {\n // Checks for truthy values on both arrays\n if (!a && !b) {\n throw new Error('Please specify valid arguments for parameters a and b.');\n } // Checks for truthy values or empty arrays on each argument\n // to avoid the unnecessary construction of a new array and\n // the type comparison\n\n\n if (!b || b.length === 0) {\n return a;\n }\n\n if (!a || a.length === 0) {\n return b;\n } // Make sure that both typed arrays are of the same type\n\n\n if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {\n throw new Error('The types of the two arguments passed for parameters a and b do not match.');\n } // @ts-ignore\n\n\n var c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n//# sourceMappingURL=typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3R5cGVkYXJyYXkuanM/MTdmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy91dGlscy90eXBlZGFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKGEsIGIpIHtcbiAgLy8gQ2hlY2tzIGZvciB0cnV0aHkgdmFsdWVzIG9uIGJvdGggYXJyYXlzXG4gIGlmICghYSAmJiAhYikge1xuICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHNwZWNpZnkgdmFsaWQgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXJzIGEgYW5kIGIuJyk7XG4gIH0gLy8gQ2hlY2tzIGZvciB0cnV0aHkgdmFsdWVzIG9yIGVtcHR5IGFycmF5cyBvbiBlYWNoIGFyZ3VtZW50XG4gIC8vIHRvIGF2b2lkIHRoZSB1bm5lY2Vzc2FyeSBjb25zdHJ1Y3Rpb24gb2YgYSBuZXcgYXJyYXkgYW5kXG4gIC8vIHRoZSB0eXBlIGNvbXBhcmlzb25cblxuXG4gIGlmICghYiB8fCBiLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBhO1xuICB9XG5cbiAgaWYgKCFhIHx8IGEubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGI7XG4gIH0gLy8gTWFrZSBzdXJlIHRoYXQgYm90aCB0eXBlZCBhcnJheXMgYXJlIG9mIHRoZSBzYW1lIHR5cGVcblxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIHR5cGVzIG9mIHRoZSB0d28gYXJndW1lbnRzIHBhc3NlZCBmb3IgcGFyYW1ldGVycyBhIGFuZCBiIGRvIG5vdCBtYXRjaC4nKTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICB2YXIgYyA9IG5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoICsgYi5sZW5ndGgpO1xuICBjLnNldChhKTtcbiAgYy5zZXQoYiwgYS5sZW5ndGgpO1xuICByZXR1cm4gYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVkYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _behaviorOption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behaviorOption */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js\");\n\n\n\nvar Behavior =\n/** @class */\nfunction () {\n function Behavior() {}\n /**\n * 自定义 Behavior\n * @param type Behavior 名称\n * @param behavior Behavior 定义的方法集合\n */\n\n\n Behavior.registerBehavior = function (type, behavior) {\n if (!behavior) {\n throw new Error(\"please specify handler for this behavior: \" + type);\n }\n\n var prototype = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(_behaviorOption__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n Object.assign(prototype, behavior); // eslint-disable-next-line func-names\n\n var base = function base(cfg) {\n var _this = this;\n\n Object.assign(this, this.getDefaultCfg(), cfg);\n var events = this.getEvents();\n this.events = null;\n var eventsToBind = {};\n\n if (events) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handle, event) {\n eventsToBind[event] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"wrapBehavior\"])(_this, handle);\n });\n this.events = eventsToBind;\n }\n };\n\n base.prototype = prototype;\n Behavior.types[type] = base;\n };\n\n Behavior.hasBehavior = function (type) {\n return !!Behavior.types[type];\n };\n\n Behavior.getBehavior = function (type) {\n return Behavior.types[type];\n }; // 所有自定义的 Behavior 的实例\n\n\n Behavior.types = {};\n return Behavior;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Behavior);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvci5qcz83ZjFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF1RDtBQUNUOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix3REFBSyxDQUFDLHVEQUFjO0FBQ3hDLHVDQUF1Qzs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQ0FBZ0MsK0RBQVk7QUFDNUMsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsQ0FBQzs7QUFFYyx1RUFBUSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUsIGVhY2gsIHdyYXBCZWhhdmlvciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGJlaGF2aW9yT3B0aW9uIGZyb20gJy4vYmVoYXZpb3JPcHRpb24nO1xuXG52YXIgQmVoYXZpb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCZWhhdmlvcigpIHt9XG4gIC8qKlxuICAgKiDoh6rlrprkuYkgQmVoYXZpb3JcbiAgICogQHBhcmFtIHR5cGUgQmVoYXZpb3Ig5ZCN56ewXG4gICAqIEBwYXJhbSBiZWhhdmlvciBCZWhhdmlvciDlrprkuYnnmoTmlrnms5Xpm4blkIhcbiAgICovXG5cblxuICBCZWhhdmlvci5yZWdpc3RlckJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUsIGJlaGF2aW9yKSB7XG4gICAgaWYgKCFiZWhhdmlvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGxlYXNlIHNwZWNpZnkgaGFuZGxlciBmb3IgdGhpcyBiZWhhdmlvcjogXCIgKyB0eXBlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlID0gY2xvbmUoYmVoYXZpb3JPcHRpb24pO1xuICAgIE9iamVjdC5hc3NpZ24ocHJvdG90eXBlLCBiZWhhdmlvcik7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cbiAgICB2YXIgYmFzZSA9IGZ1bmN0aW9uIGJhc2UoY2ZnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRoaXMuZ2V0RGVmYXVsdENmZygpLCBjZmcpO1xuICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICB0aGlzLmV2ZW50cyA9IG51bGw7XG4gICAgICB2YXIgZXZlbnRzVG9CaW5kID0ge307XG5cbiAgICAgIGlmIChldmVudHMpIHtcbiAgICAgICAgZWFjaChldmVudHMsIGZ1bmN0aW9uIChoYW5kbGUsIGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnRzVG9CaW5kW2V2ZW50XSA9IHdyYXBCZWhhdmlvcihfdGhpcywgaGFuZGxlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzVG9CaW5kO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBiYXNlLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICBCZWhhdmlvci50eXBlc1t0eXBlXSA9IGJhc2U7XG4gIH07XG5cbiAgQmVoYXZpb3IuaGFzQmVoYXZpb3IgPSBmdW5jdGlvbiAodHlwZSkge1xuICAgIHJldHVybiAhIUJlaGF2aW9yLnR5cGVzW3R5cGVdO1xuICB9O1xuXG4gIEJlaGF2aW9yLmdldEJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gQmVoYXZpb3IudHlwZXNbdHlwZV07XG4gIH07IC8vIOaJgOacieiHquWumuS5ieeahCBCZWhhdmlvciDnmoTlrp7kvotcblxuXG4gIEJlaGF2aW9yLnR5cGVzID0ge307XG4gIHJldHVybiBCZWhhdmlvcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgQmVoYXZpb3I7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n // 自定义 Behavior 时候共有的方法\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {};\n },\n\n /**\n * register event handler, behavior will auto bind events\n * for example:\n * return {\n * click: 'onClick'\n * }\n */\n getEvents: function getEvents() {\n return {};\n },\n updateCfg: function updateCfg(cfg) {\n Object.assign(this, cfg);\n return true;\n },\n shouldBegin: function shouldBegin() {\n return true;\n },\n shouldUpdate: function shouldUpdate() {\n return true;\n },\n shouldEnd: function shouldEnd() {\n return true;\n },\n\n /**\n * auto bind events when register behavior\n * @param graph Graph instance\n */\n bind: function bind(graph) {\n var _this = this;\n\n var events = this.events;\n this.graph = graph;\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', true);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.on(event, handler);\n }); // To avoid the tabs switching makes the keydown related behaviors disable\n\n document.addEventListener('visibilitychange', function () {\n _this.keydown = false;\n });\n },\n unbind: function unbind(graph) {\n var events = this.events;\n var draggable = graph.get('canvas').get('draggable');\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', false);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.off(event, handler);\n });\n graph.get('canvas').set('draggable', draggable);\n },\n get: function get(val) {\n return this[val];\n },\n set: function set(key, val) {\n this[key] = val;\n return this;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvck9wdGlvbi5qcz83NmZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7O0FBRW5CO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yT3B0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoh6rlrprkuYkgQmVoYXZpb3Ig5pe25YCZ5YWx5pyJ55qE5pa55rOVXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG5cbiAgLyoqXG4gICAqIHJlZ2lzdGVyIGV2ZW50IGhhbmRsZXIsIGJlaGF2aW9yIHdpbGwgYXV0byBiaW5kIGV2ZW50c1xuICAgKiBmb3IgZXhhbXBsZTpcbiAgICogcmV0dXJuIHtcbiAgICogIGNsaWNrOiAnb25DbGljaydcbiAgICogfVxuICAgKi9cbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICB1cGRhdGVDZmc6IGZ1bmN0aW9uIHVwZGF0ZUNmZyhjZmcpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNmZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEJlZ2luOiBmdW5jdGlvbiBzaG91bGRCZWdpbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgc2hvdWxkVXBkYXRlOiBmdW5jdGlvbiBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEVuZDogZnVuY3Rpb24gc2hvdWxkRW5kKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBhdXRvIGJpbmQgZXZlbnRzIHdoZW4gcmVnaXN0ZXIgYmVoYXZpb3JcbiAgICogQHBhcmFtIGdyYXBoIEdyYXBoIGluc3RhbmNlXG4gICAqL1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGdyYXBoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIHRydWUpO1xuICAgIH1cblxuICAgIGVhY2goZXZlbnRzLCBmdW5jdGlvbiAoaGFuZGxlciwgZXZlbnQpIHtcbiAgICAgIGdyYXBoLm9uKGV2ZW50LCBoYW5kbGVyKTtcbiAgICB9KTsgLy8gVG8gYXZvaWQgdGhlIHRhYnMgc3dpdGNoaW5nIG1ha2VzIHRoZSBrZXlkb3duIHJlbGF0ZWQgYmVoYXZpb3JzIGRpc2FibGVcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gICAgfSk7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGdyYXBoKSB7XG4gICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzO1xuICAgIHZhciBkcmFnZ2FibGUgPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldCgnZHJhZ2dhYmxlJyk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKGhhbmRsZXIsIGV2ZW50KSB7XG4gICAgICBncmFwaC5vZmYoZXZlbnQsIGhhbmRsZXIpO1xuICAgIH0pO1xuICAgIGdyYXBoLmdldCgnY2FudmFzJykuc2V0KCdkcmFnZ2FibGUnLCBkcmFnZ2FibGUpO1xuICB9LFxuICBnZXQ6IGZ1bmN0aW9uIGdldCh2YWwpIHtcbiAgICByZXR1cm4gdGhpc1t2YWxdO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgIHRoaXNba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcz9mYjlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7QUFDbkIsZ0hBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCZWhhdmlvciBmcm9tICcuL2JlaGF2aW9yJztcbmV4cG9ydCBkZWZhdWx0IEJlaGF2aW9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n triangle: function triangle(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",0 L \" + (begin + length) + \",-\" + width / 2 + \" L \" + (begin + length) + \",\" + width / 2 + \" Z\";\n return path;\n },\n vee: function vee(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 20;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",0 L \" + (begin + length) + \",-\" + width / 2 + \"\\n L \" + (begin + 2 * length / 3) + \",0 L \" + (begin + length) + \",\" + width / 2 + \" Z\";\n return path;\n },\n circle: function circle(r, d) {\n if (r === void 0) {\n r = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \", 0\\n a \" + r + \",\" + r + \" 0 1,0 \" + r * 2 + \",0\\n a \" + r + \",\" + r + \" 0 1,0 \" + -r * 2 + \",0\";\n return path;\n },\n rect: function rect(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 10;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",\" + -width / 2 + \" \\n L \" + (begin + length) + \",\" + -width / 2 + \" \\n L \" + (begin + length) + \",\" + width / 2 + \" \\n L \" + begin + \",\" + width / 2 + \" Z\";\n return path;\n },\n diamond: function diamond(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",0 \\n L \" + (begin + length / 2) + \",\" + -width / 2 + \" \\n L \" + (begin + length) + \",0 \\n L \" + (begin + length / 2) + \",\" + width / 2 + \" Z\";\n return path;\n },\n triangleRect: function triangleRect(tWidth, tLength, rWidth, rLength, gap, d) {\n if (tWidth === void 0) {\n tWidth = 15;\n }\n\n if (tLength === void 0) {\n tLength = 15;\n }\n\n if (rWidth === void 0) {\n rWidth = 15;\n }\n\n if (rLength === void 0) {\n rLength = 3;\n }\n\n if (gap === void 0) {\n gap = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var rectBegin = begin + tLength + gap;\n var path = \"M \" + begin + \",0 L \" + (begin + tLength) + \",-\" + tWidth / 2 + \" L \" + (begin + tLength) + \",\" + tWidth / 2 + \" Z\\n M \" + rectBegin + \", -\" + rWidth / 2 + \"\\n L \" + (rectBegin + rLength) + \" -\" + rWidth / 2 + \"\\n L \" + (rectBegin + rLength) + \" \" + rWidth / 2 + \"\\n L \" + rectBegin + \" \" + rWidth / 2 + \"\\n Z\";\n return path;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2Fycm93LmpzP2MyN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIHRyaWFuZ2xlOiBmdW5jdGlvbiB0cmlhbmdsZSh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTA7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsMCBMIFwiICsgKGJlZ2luICsgbGVuZ3RoKSArIFwiLC1cIiArIHdpZHRoIC8gMiArIFwiIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsXCIgKyB3aWR0aCAvIDIgKyBcIiBaXCI7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIHZlZTogZnVuY3Rpb24gdmVlKHdpZHRoLCBsZW5ndGgsIGQpIHtcbiAgICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIGxlbmd0aCA9IDIwO1xuICAgIH1cblxuICAgIGlmIChkID09PSB2b2lkIDApIHtcbiAgICAgIGQgPSAwO1xuICAgIH1cblxuICAgIHZhciBiZWdpbiA9IGQgKiAyO1xuICAgIHZhciBwYXRoID0gXCJNIFwiICsgYmVnaW4gKyBcIiwwIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsLVwiICsgd2lkdGggLyAyICsgXCJcXG4gICAgICAgIEwgXCIgKyAoYmVnaW4gKyAyICogbGVuZ3RoIC8gMykgKyBcIiwwIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsXCIgKyB3aWR0aCAvIDIgKyBcIiBaXCI7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIGNpcmNsZTogZnVuY3Rpb24gY2lyY2xlKHIsIGQpIHtcbiAgICBpZiAociA9PT0gdm9pZCAwKSB7XG4gICAgICByID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsIDBcXG4gICAgICAgICAgICBhIFwiICsgciArIFwiLFwiICsgciArIFwiIDAgMSwwIFwiICsgciAqIDIgKyBcIiwwXFxuICAgICAgICAgICAgYSBcIiArIHIgKyBcIixcIiArIHIgKyBcIiAwIDEsMCBcIiArIC1yICogMiArIFwiLDBcIjtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgcmVjdDogZnVuY3Rpb24gcmVjdCh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTA7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxMDtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsXCIgKyAtd2lkdGggLyAyICsgXCIgXFxuICAgICAgICBMIFwiICsgKGJlZ2luICsgbGVuZ3RoKSArIFwiLFwiICsgLXdpZHRoIC8gMiArIFwiIFxcbiAgICAgICAgTCBcIiArIChiZWdpbiArIGxlbmd0aCkgKyBcIixcIiArIHdpZHRoIC8gMiArIFwiIFxcbiAgICAgICAgTCBcIiArIGJlZ2luICsgXCIsXCIgKyB3aWR0aCAvIDIgKyBcIiBaXCI7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIGRpYW1vbmQ6IGZ1bmN0aW9uIGRpYW1vbmQod2lkdGgsIGxlbmd0aCwgZCkge1xuICAgIGlmICh3aWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgICB3aWR0aCA9IDE1O1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPT09IHZvaWQgMCkge1xuICAgICAgbGVuZ3RoID0gMTU7XG4gICAgfVxuXG4gICAgaWYgKGQgPT09IHZvaWQgMCkge1xuICAgICAgZCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGJlZ2luID0gZCAqIDI7XG4gICAgdmFyIHBhdGggPSBcIk0gXCIgKyBiZWdpbiArIFwiLDAgXFxuICAgICAgICBMIFwiICsgKGJlZ2luICsgbGVuZ3RoIC8gMikgKyBcIixcIiArIC13aWR0aCAvIDIgKyBcIiBcXG4gICAgICAgIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsMCBcXG4gICAgICAgIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGggLyAyKSArIFwiLFwiICsgd2lkdGggLyAyICsgXCIgWlwiO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICB0cmlhbmdsZVJlY3Q6IGZ1bmN0aW9uIHRyaWFuZ2xlUmVjdCh0V2lkdGgsIHRMZW5ndGgsIHJXaWR0aCwgckxlbmd0aCwgZ2FwLCBkKSB7XG4gICAgaWYgKHRXaWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgICB0V2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAodExlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICB0TGVuZ3RoID0gMTU7XG4gICAgfVxuXG4gICAgaWYgKHJXaWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgICByV2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAockxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICByTGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZ2FwID09PSB2b2lkIDApIHtcbiAgICAgIGdhcCA9IDU7XG4gICAgfVxuXG4gICAgaWYgKGQgPT09IHZvaWQgMCkge1xuICAgICAgZCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGJlZ2luID0gZCAqIDI7XG4gICAgdmFyIHJlY3RCZWdpbiA9IGJlZ2luICsgdExlbmd0aCArIGdhcDtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsMCBMIFwiICsgKGJlZ2luICsgdExlbmd0aCkgKyBcIiwtXCIgKyB0V2lkdGggLyAyICsgXCIgTCBcIiArIChiZWdpbiArIHRMZW5ndGgpICsgXCIsXCIgKyB0V2lkdGggLyAyICsgXCIgWlxcbiAgICAgICAgICAgIE0gXCIgKyByZWN0QmVnaW4gKyBcIiwgLVwiICsgcldpZHRoIC8gMiArIFwiXFxuICAgICAgICAgICAgTCBcIiArIChyZWN0QmVnaW4gKyByTGVuZ3RoKSArIFwiIC1cIiArIHJXaWR0aCAvIDIgKyBcIlxcbiAgICAgICAgICAgIEwgXCIgKyAocmVjdEJlZ2luICsgckxlbmd0aCkgKyBcIiBcIiArIHJXaWR0aCAvIDIgKyBcIlxcbiAgICAgICAgICAgIEwgXCIgKyByZWN0QmVnaW4gKyBcIiBcIiArIHJXaWR0aCAvIDIgKyBcIlxcbiAgICAgICAgICAgIFpcIjtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js ***! \*****************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\nvar singleCombo = {\n itemType: 'combo',\n // 单个图形的类型\n shapeType: 'single-combo',\n\n /**\n * Combo 标题文本相对图形的位置,默认为 top\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'top',\n\n /**\n * 标题文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n refX: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refX,\n refY: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refY,\n options: {\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n\n /**\n * 获取 Combo 宽高\n * @internal 返回 Combo 的大小,以 [width, height] 的方式维护\n * @param {Object} cfg Combo 的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var size = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.size || this.options.size || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size); // size 是数组,若长度为 1,则补长度为 2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(padding)) padding = padding[0];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refX\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n var dis = r + padding;\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -dis - refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: dis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: -dis + refX,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: dis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'combo-shape'\n });\n return shape;\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item); // special for some types of nodes\n }\n};\n\nvar singleComboDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_4__[\"shapeBase\"]), singleCombo);\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('single-combo', singleComboDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvLmpzPzI4YjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2tCO0FBQ3BCO0FBQ0g7QUFDWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUSwrQ0FBTTtBQUNkLFFBQVEsK0NBQU07QUFDZDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0EsZUFBZSx3REFBSyxrQ0FBa0MsK0NBQU0sb0JBQW9COztBQUVoRixRQUFRLDBEQUFPO0FBQ2Y7QUFDQSxLQUFLOzs7QUFHTCxTQUFTLDBEQUFPO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsb0JBQW9CLHNEQUFRLEdBQUc7QUFDL0I7O0FBRUEsZ0NBQWdDO0FBQ2hDO0FBQ0E7O0FBRUEscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLG9EQUFTOztBQUVwRCw4Q0FBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOaWwsIGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBzaGFwZUJhc2UgfSBmcm9tICcuL3NoYXBlQmFzZSc7XG52YXIgc2luZ2xlQ29tYm8gPSB7XG4gIGl0ZW1UeXBlOiAnY29tYm8nLFxuICAvLyDljZXkuKrlm77lvaLnmoTnsbvlnotcbiAgc2hhcGVUeXBlOiAnc2luZ2xlLWNvbWJvJyxcblxuICAvKipcbiAgICogQ29tYm8g5qCH6aKY5paH5pys55u45a+55Zu+5b2i55qE5L2N572u77yM6buY6K6k5Li6IHRvcFxuICAgKiDkvY3nva7ljIXmi6zvvJogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCBjZW50ZXJcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIGxhYmVsUG9zaXRpb246ICd0b3AnLFxuXG4gIC8qKlxuICAgKiDmoIfpopjmlofmnKznm7jlr7nlgY/np7vvvIzlvZMgbGFiZWxQb3NpdGlvbiDkuI3kuLogY2VudGVyIOaXtuacieaViFxuICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgKi9cbiAgcmVmWDogR2xvYmFsLmNvbWJvTGFiZWwucmVmWCxcbiAgcmVmWTogR2xvYmFsLmNvbWJvTGFiZWwucmVmWSxcbiAgb3B0aW9uczoge1xuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPliBDb21ibyDlrr3pq5hcbiAgICogQGludGVybmFsIOi/lOWbniBDb21ibyDnmoTlpKflsI/vvIzku6UgW3dpZHRoLCBoZWlnaHRdIOeahOaWueW8j+e7tOaKpFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyBDb21ibyDnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl9IOWuvemrmFxuICAgKi9cbiAgZ2V0U2l6ZTogZnVuY3Rpb24gZ2V0U2l6ZShjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IGNsb25lKGNmZy5zaXplIHx8IHRoaXMub3B0aW9ucy5zaXplIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc2l6ZSk7IC8vIHNpemUg5piv5pWw57uE77yM6Iul6ZW/5bqm5Li6IDHvvIzliJnooaXplb/luqbkuLogMlxuXG4gICAgaWYgKGlzQXJyYXkoc2l6ZSkgJiYgc2l6ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNpemUgPSBbc2l6ZVswXSwgc2l6ZVswXV07XG4gICAgfSAvLyBzaXplIOS4uuaVsOWtl++8jOWImei9rOaNouS4uuaVsOe7hFxuXG5cbiAgICBpZiAoIWlzQXJyYXkoc2l6ZSkpIHtcbiAgICAgIHNpemUgPSBbc2l6ZSwgc2l6ZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpemU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWFxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgdmFyIGRpcyA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBzdHlsZTtcblxuICAgIHN3aXRjaCAobGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtZGlzIC0gcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogZGlzICsgcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAtZGlzICsgcmVmWCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGRpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3R5bGUudGV4dCA9IGNmZy5sYWJlbDtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc2hhcGVUeXBlID0gdGhpcy5zaGFwZVR5cGU7IC8vIHx8IHRoaXMudHlwZe+8jOmDveW3sue7j+WKoOS6hiBzaGFwZVR5cGVcblxuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgbmFtZTogJ2NvbWJvLXNoYXBlJ1xuICAgIH0pO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pOyAvLyBzcGVjaWFsIGZvciBzb21lIHR5cGVzIG9mIG5vZGVzXG4gIH1cbn07XG5cbnZhciBzaW5nbGVDb21ib0RlZiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUJhc2UpLCBzaW5nbGVDb21ibyk7XG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ3NpbmdsZS1jb21ibycsIHNpbmdsZUNvbWJvRGVmKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js ***! \*************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n // 圆形 Combo\n\n_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo('circle', {\n // 自定义节点时的配置\n options: {\n size: [_global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0], _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0]],\n padding: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.padding[0],\n animate: true,\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fontSize\n },\n refX: 0,\n refY: 0\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n delete style.height;\n delete style.width;\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: 'circle-combo',\n name: 'circle-combo',\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取 Combo 的样式,供基于该 Combo 自定义时使用\n * @param {Object} cfg Combo 数据模型\n * @return {Object} Combo 的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n var size = this.getSize(cfg);\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(style.r) || isNaN(style.r)) r = size[0] / 2 || _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.r;else r = Math.max(style.r, size[0] / 2) || size[0] / 2;\n }\n\n style.r = r + padding;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0\n }, style);\n\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n }\n\n cfgStyle.r = r + padding;\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.r = cfgStyle.r;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n this.updateShape(cfg, item, style, true);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9jaXJjbGUuanM/M2EyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0M7QUFDTDtBQUM4Qjs7QUFFM0QsOENBQUs7QUFDTDtBQUNBO0FBQ0EsV0FBVywrQ0FBTSx1QkFBdUIsK0NBQU07QUFDOUMsYUFBYSwrQ0FBTTtBQUNuQjtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUE7QUFDQSxVQUFVLDJEQUFRO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLFdBQVcsMkRBQVEsZ0RBQWdELCtDQUFNLHNCQUFzQjtBQUMvRjs7QUFFQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLEtBQUs7O0FBRUwsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmLG1CQUFtQix3REFBSztBQUN4Qjs7QUFFQTtBQUNBLFVBQVUsMkRBQVE7QUFDbEIsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGNsb25lLCBtaXgsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJzsgLy8g5ZyG5b2iIENvbWJvXG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ2NpcmNsZScsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzBdLCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF1dLFxuICAgIHBhZGRpbmc6IEdsb2JhbC5kZWZhdWx0Q29tYm8ucGFkZGluZ1swXSxcbiAgICBhbmltYXRlOiB0cnVlLFxuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZVxuICAgICAgfSxcbiAgICAgIHJlZlg6IDAsXG4gICAgICByZWZZOiAwXG4gICAgfSxcbiAgICBzdGF0ZVN0eWxlczogX19hc3NpZ24oe30sIEdsb2JhbC5jb21ib1N0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdjaXJjbGUnLFxuICAvLyDmlofmnKzkvY3nva5cbiAgbGFiZWxQb3NpdGlvbjogJ3RvcCcsXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAnY2lyY2xlLWNvbWJvJyxcbiAgICAgIG5hbWU6ICdjaXJjbGUtY29tYm8nLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g55qE5qC35byP77yM5L6b5Z+65LqO6K+lIENvbWJvIOiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIENvbWJvIOaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IENvbWJvIOeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBwYWRkaW5nID0gY2ZnLnBhZGRpbmcgfHwgdGhpcy5vcHRpb25zLnBhZGRpbmc7XG4gICAgaWYgKGlzQXJyYXkocGFkZGluZykpIHBhZGRpbmcgPSBwYWRkaW5nWzBdO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLnIpIHx8IGlzTmFOKHN0eWxlLnIpKSByID0gc2l6ZVswXSAvIDIgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5yO2Vsc2UgciA9IE1hdGgubWF4KHN0eWxlLnIsIHNpemVbMF0gLyAyKSB8fCBzaXplWzBdIC8gMjtcbiAgICB9XG5cbiAgICBzdHlsZS5yID0gciArIHBhZGRpbmc7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LCBzdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSBjZmcuc3R5bGUuciA9IHI7ZWxzZSB7XG4gICAgICBjZmcuc3R5bGUgPSB7XG4gICAgICAgIHI6IHJcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgfVxuXG4gICAgY2ZnU3R5bGUuciA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBpdGVtQ2FjaGVTaXplID0gaXRlbS5nZXQoJ3NpemVDYWNoZScpO1xuXG4gICAgaWYgKGl0ZW1DYWNoZVNpemUpIHtcbiAgICAgIGl0ZW1DYWNoZVNpemUuciA9IGNmZ1N0eWxlLnI7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSwgY2ZnU3R5bGUpO1xuICAgIGlmIChjZmcuc3R5bGUpIGNmZy5zdHlsZS5yID0gcjtlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgcjogclxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlKTtcbiAgfVxufSwgJ3NpbmdsZS1jb21ibycpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js ***! \************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9pbmRleC5qcz9kZTU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2NpcmNsZSc7XG5pbXBvcnQgJy4vcmVjdCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js ***! \***********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('rect', {\n // 自定义 Combo 时的配置\n options: {\n size: [40, 5],\n padding: [25, 20, 15, 20],\n animate: true,\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: 'rect-combo',\n name: 'rect-combo',\n draggable: true\n });\n return keyShape;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refY\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var leftDis = cfgStyle.width / 2 + padding[3];\n var topDis = cfgStyle.height / 2 + padding[0];\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0 - leftDis + refX,\n y: 0 - topDis + refY,\n textBaseline: 'top',\n textAlign: 'left'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: topDis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: 0 - leftDis + refY,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: leftDis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = this.getSize(cfg);\n var width;\n var height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.width) || isNaN(style.width)) width = size[0] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.width;else width = Math.max(style.width, size[0]) || size[0];\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.height) || isNaN(style.height)) height = size[1] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.height;else height = Math.max(style.height, size[1]) || size[1];\n }\n\n var x = -width / 2 - padding[3];\n var y = -height / 2 - padding[0];\n style.width = width + padding[1] + padding[3];\n style.height = height + padding[0] + padding[2];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y\n }, style);\n\n if (!cfg.style) {\n cfg.style = {\n width: width,\n height: height\n };\n } else {\n cfg.style.width = width;\n cfg.style.height = height;\n }\n\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.style);\n var width, height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n width = Math.max(cfgStyle.width, size[0]) || size[0];\n height = Math.max(cfgStyle.height, size[1]) || size[1];\n }\n\n cfgStyle.width = width + padding[1] + padding[3];\n cfgStyle.height = height + padding[0] + padding[2];\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.width = cfgStyle.width;\n itemCacheSize.height = cfgStyle.height;\n }\n\n cfgStyle.x = -width / 2 - padding[3];\n cfgStyle.y = -height / 2 - padding[0]; // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n\n if (cfg.style) {\n cfg.style.width = width;\n cfg.style.height = height;\n } else {\n cfg.style = {\n width: width,\n height: height\n };\n }\n\n this.updateShape(cfg, item, style, false);\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9yZWN0LmpzPzEyMWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN3QjtBQUN2QjtBQUNMO0FBQzdCLDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXLDJEQUFRLHdEQUF3RCwrQ0FBTSwwQkFBMEI7QUFDM0csV0FBVywyREFBUSwyREFBMkQsK0NBQU0sMkJBQTJCO0FBQy9HOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLG1CQUFtQix3REFBSztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHOztBQUV0QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLG9CQUFvQixzREFBUSxHQUFHO0FBQy9COztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9jb21ib3MvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBtaXgsIGlzTnVtYmVyLCBjbG9uZSwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5TaGFwZS5yZWdpc3RlckNvbWJvKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYkgQ29tYm8g5pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbNDAsIDVdLFxuICAgIHBhZGRpbmc6IFsyNSwgMjAsIDE1LCAyMF0sXG4gICAgYW5pbWF0ZTogdHJ1ZSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLmNvbWJvTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG4gIHNoYXBlVHlwZTogJ3JlY3QnLFxuICBsYWJlbFBvc2l0aW9uOiAndG9wJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBuYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWVxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGlzID0gY2ZnU3R5bGUud2lkdGggLyAyICsgcGFkZGluZ1szXTtcbiAgICB2YXIgdG9wRGlzID0gY2ZnU3R5bGUuaGVpZ2h0IC8gMiArIHBhZGRpbmdbMF07XG4gICAgdmFyIHN0eWxlO1xuXG4gICAgc3dpdGNoIChsYWJlbFBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwIC0gbGVmdERpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCAtIHRvcERpcyArIHJlZlksXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiB0b3BEaXMgKyByZWZZLFxuICAgICAgICAgIHRleHRCYXNlbGluZTogJ2JvdHRvbScsXG4gICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAgLSBsZWZ0RGlzICsgcmVmWSxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGxlZnREaXMgKyByZWZYLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMub3B0aW9ucy5zdHlsZTtcbiAgICB2YXIgcGFkZGluZyA9IGNmZy5wYWRkaW5nIHx8IHRoaXMub3B0aW9ucy5wYWRkaW5nO1xuICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkgcGFkZGluZyA9IFtwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nXTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGg7XG4gICAgdmFyIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLndpZHRoKSB8fCBpc05hTihzdHlsZS53aWR0aCkpIHdpZHRoID0gc2l6ZVswXSB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLndpZHRoO2Vsc2Ugd2lkdGggPSBNYXRoLm1heChzdHlsZS53aWR0aCwgc2l6ZVswXSkgfHwgc2l6ZVswXTtcbiAgICAgIGlmICghaXNOdW1iZXIoc3R5bGUuaGVpZ2h0KSB8fCBpc05hTihzdHlsZS5oZWlnaHQpKSBoZWlnaHQgPSBzaXplWzFdIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuaGVpZ2h0O2Vsc2UgaGVpZ2h0ID0gTWF0aC5tYXgoc3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIHZhciB4ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgdmFyIHkgPSAtaGVpZ2h0IC8gMiAtIHBhZGRpbmdbMF07XG4gICAgc3R5bGUud2lkdGggPSB3aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHN0eWxlLmhlaWdodCA9IGhlaWdodCArIHBhZGRpbmdbMF0gKyBwYWRkaW5nWzJdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgaWYgKCFjZmcuc3R5bGUpIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2ZnLnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICBjZmcuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgd2lkdGgsIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KGNmZ1N0eWxlLndpZHRoLCBzaXplWzBdKSB8fCBzaXplWzBdO1xuICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoY2ZnU3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIGNmZ1N0eWxlLndpZHRoID0gd2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICBjZmdTdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICB2YXIgaXRlbUNhY2hlU2l6ZSA9IGl0ZW0uZ2V0KCdzaXplQ2FjaGUnKTtcblxuICAgIGlmIChpdGVtQ2FjaGVTaXplKSB7XG4gICAgICBpdGVtQ2FjaGVTaXplLndpZHRoID0gY2ZnU3R5bGUud2lkdGg7XG4gICAgICBpdGVtQ2FjaGVTaXplLmhlaWdodCA9IGNmZ1N0eWxlLmhlaWdodDtcbiAgICB9XG5cbiAgICBjZmdTdHlsZS54ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgY2ZnU3R5bGUueSA9IC1oZWlnaHQgLyAyIC0gcGFkZGluZ1swXTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmdTdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSB7XG4gICAgICBjZmcuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgIGNmZy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlKTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pO1xuICB9XG59LCAnc2luZ2xlLWNvbWJvJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js ***! \****************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\");\n/**\n * @fileOverview 自定义边\n * @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。\n */\n\n\n\n\n\n\n\n\nvar CLS_SHAPE = 'edge-shape'; // start,end 倒置,center 不变\n\nfunction revertAlign(labelPosition) {\n var textAlign = labelPosition;\n\n if (labelPosition === 'start') {\n textAlign = 'end';\n } else if (labelPosition === 'end') {\n textAlign = 'start';\n }\n\n return textAlign;\n}\n\nvar singleEdge = {\n itemType: 'edge',\n\n /**\n * 文本的位置\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本的 x 偏移\n * @type {Number}\n */\n refX: 0,\n\n /**\n * 文本的 y 偏移\n * @type {Number}\n */\n refY: 0,\n\n /**\n * 文本是否跟着线自动旋转,默认 false\n * @type {Boolean}\n */\n labelAutoRotate: false,\n // 自定义边时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.stroke,\n lineAppendWidth: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.lineAppendWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeStateStyles)\n },\n\n /**\n * 获取边的 path\n * @internal 供扩展的边覆盖\n * @param {Array} points 构成边的点的集合\n * @return {Array} 构成 path 的数组\n */\n getPath: function getPath(points) {\n var path = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = cfg.size || _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var path = this.getPath(points);\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style, {\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.color,\n lineWidth: size,\n path: path\n }, style);\n return styles;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer(); // const strokeStyle: ShapeStyle = {\n // stroke: cfg.color,\n // };\n\n var shape = ((_a = item.getKeyShape) === null || _a === void 0 ? void 0 : _a.call(item)) || group['shapeMap']['edge-shape']; // group.find((element) => element.get('className') === 'edge-shape');\n\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr(); // const previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);\n\n var previousStyle = cfg.style || {};\n\n if (previousStyle.stroke === undefined) {\n previousStyle.stroke = cfg.color;\n }\n\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var routeCfg = {\n radius: previousStyle.radius\n };\n\n if (!controlPoints) {\n routeCfg = {\n source: source,\n target: target,\n offset: previousStyle.offset,\n radius: previousStyle.radius\n };\n }\n\n var path = this.getPath(points, routeCfg);\n var style = {};\n\n if (updateType === 'move') {\n style = {\n path: path\n };\n } else {\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n if (style.lineWidth === undefined) style.lineWdith = (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(size) ? size : size === null || size === void 0 ? void 0 : size[0]) || currentAttr.lineWidth;\n if (style.path === undefined) style.path = path;\n if (style.stroke === undefined) style.stroke = currentAttr.stroke || cfg.color;\n }\n\n if (shape) {\n shape.attr(style);\n }\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n var labelPosition = labelCfg.position || this.labelPosition; // 文本的位置用户可以传入\n\n var style = {};\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n\n var pointPercent;\n\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n } // 偏移量\n\n\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY; // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX;\n style.y = cfg.startPoint.y + offsetY;\n style.text = cfg.label;\n return style;\n }\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var offsetStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLabelPosition\"])(pathShape, pointPercent, offsetX, offsetY, autoRotate);\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n style.rotate = offsetStyle.rotate;\n style.textAlign = this._getTextAlign(labelPosition, offsetStyle.angle);\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, cfg, labelCfg, group) {\n if (!label) {\n return {};\n }\n\n var bbox = label.getBBox();\n var backgroundStyle = labelCfg.style && labelCfg.style.background;\n\n if (!backgroundStyle) {\n return {};\n }\n\n var padding = backgroundStyle.padding;\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n var labelPosition = labelCfg.position || this.labelPosition;\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight,\n x: bbox.minX - padding[2],\n y: bbox.minY - padding[0],\n rotate: 0\n });\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n\n var pointPercent;\n\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n } // 偏移量\n\n\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY; // // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX - backgroundWidth / 2;\n style.y = cfg.startPoint.y + offsetY - backgroundHeight / 2;\n return style;\n }\n\n var bgOffsetX = offsetX - backgroundWidth / 2;\n\n if (labelCfg.position === 'start') {\n bgOffsetX = offsetX - padding[2];\n } else if (labelCfg.position === 'end') {\n bgOffsetX = offsetX - backgroundWidth;\n }\n\n var offsetStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLabelPosition\"])(pathShape, pointPercent, bgOffsetX, offsetY + backgroundHeight / 2, autoRotate);\n\n if (autoRotate) {\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n }\n\n style.rotate = offsetStyle.rotate;\n return style;\n },\n // 获取文本对齐方式\n _getTextAlign: function _getTextAlign(labelPosition, angle) {\n var textAlign = 'center';\n\n if (!angle) {\n return labelPosition;\n }\n\n angle = angle % (Math.PI * 2); // 取模\n\n if (labelPosition !== 'center') {\n if (angle >= 0 && angle <= Math.PI / 2 || angle >= 3 / 2 * Math.PI && angle < 2 * Math.PI) {\n textAlign = labelPosition;\n } else {\n textAlign = revertAlign(labelPosition);\n }\n }\n\n return textAlign;\n },\n\n /**\n * @internal 获取边的控制点\n * @param {Object} cfg 边的配置项\n * @return {Array} 控制点的数组\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * @internal 处理需要重计算点和边的情况\n * @param {Object} cfg 边的配置项\n * @return {Object} 边的配置项\n */\n getPathPoints: function getPathPoints(cfg) {\n return cfg;\n },\n\n /**\n * 绘制边\n * @override\n * @param {Object} cfg 边的配置项\n * @param {G.Group} group 边的容器\n * @return {IShape} 图形\n */\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n var shape = group.addShape('path', {\n className: CLS_SHAPE,\n name: CLS_SHAPE,\n attrs: shapeStyle\n });\n group['shapeMap'][CLS_SHAPE] = shape;\n return shape;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n name: 'text-shape'\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n label.rotateAtStart(rotate);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label, labelStyle, rotate);\n var labelBgClassname = this.itemType + _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"CLS_LABEL_BG_SUFFIX\"];\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label, labelStyle, rotate) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);\n delete style.rotate;\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style\n });\n group['shapeMap']['text-bg-shape'] = rect;\n if (!isNaN(rotate)) rect.rotateAtStart(rotate);\n return rect;\n }\n};\n\nvar singleEdgeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"shapeBase\"]), singleEdge);\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('single-edge', singleEdgeDef); // 直线, 不支持控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('line', {\n // 控制点不生效\n getControlPoints: function getControlPoints() {\n return undefined;\n }\n}, 'single-edge'); // 直线\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('spline', {\n getPath: function getPath(points) {\n var path = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getSpline\"])(points);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('arc', {\n curveOffset: 20,\n clockwise: 1,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var midPoint = {\n x: (startPoint.x + endPoint.x) / 2,\n y: (startPoint.y + endPoint.y) / 2\n };\n var center;\n var arcPoint; // 根据给定点计算圆弧\n\n if (cfg.controlPoints !== undefined) {\n arcPoint = cfg.controlPoints[0];\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint); // 根据控制点和直线关系决定 clockwise值\n\n if (startPoint.x <= endPoint.x && startPoint.y > endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 0 : 1;\n } else if (startPoint.x <= endPoint.x && startPoint.y < endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 1 : 0;\n } else if (startPoint.x > endPoint.x && startPoint.y <= endPoint.y) {\n this.clockwise = center.y < arcPoint.y ? 0 : 1;\n } else {\n this.clockwise = center.y < arcPoint.y ? 1 : 0;\n } // 若给定点和两端点共线,无法生成圆弧,绘制直线\n\n\n if ((arcPoint.x - startPoint.x) / (arcPoint.y - startPoint.y) === (endPoint.x - startPoint.x) / (endPoint.y - startPoint.y)) {\n return [];\n }\n } else {\n // 根据直线连线中点的的偏移计算圆弧\n // 若用户给定偏移量则根据其计算,否则按照默认偏移值计算\n if (cfg.curveOffset === undefined) {\n cfg.curveOffset = this.curveOffset;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(cfg.curveOffset)) {\n cfg.curveOffset = cfg.curveOffset[0];\n }\n\n if (cfg.curveOffset < 0) {\n this.clockwise = 0;\n } else {\n this.clockwise = 1;\n }\n\n var vec = {\n x: endPoint.x - startPoint.x,\n y: endPoint.y - startPoint.y\n };\n var edgeAngle = Math.atan2(vec.y, vec.x);\n arcPoint = {\n x: cfg.curveOffset * Math.cos(-Math.PI / 2 + edgeAngle) + midPoint.x,\n y: cfg.curveOffset * Math.sin(-Math.PI / 2 + edgeAngle) + midPoint.y\n };\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint);\n }\n\n var radius = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"distance\"])(startPoint, center);\n var controlPoints = [{\n x: radius,\n y: radius\n }];\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]); // 控制点与端点共线\n\n if (points.length === 2) {\n path.push(['L', points[1].x, points[1].y]);\n } else {\n path.push(['A', points[1].x, points[1].y, 0, 0, this.clockwise, points[2].x, points[2].y]);\n }\n\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('quadratic', {\n curvePosition: 0.5,\n curveOffset: -20,\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定controlPoints\n\n if (!controlPoints || !controlPoints.length) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0];\n var innerPoint = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition, cfg.curveOffset);\n controlPoints = [innerPoint];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['Q', points[1].x, points[1].y, points[2].x, points[2].y]);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic', {\n curvePosition: [1 / 2, 1 / 2],\n curveOffset: [-20, 20],\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定 controlPoints\n\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n\n if (!controlPoints || !controlPoints.length || controlPoints.length < 2) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var innerPoint1 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[0], cfg.curveOffset[0]);\n var innerPoint2 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[1], cfg.curveOffset[1]);\n controlPoints = [innerPoint1, innerPoint2];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n return path;\n }\n}, 'single-edge'); // 垂直方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-vertical', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var yDist = endPoint.y - startPoint.y;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(yDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x,\n y: startPoint.y + yDist * this.curvePosition[0] + curveOffset[0]\n };\n var innerPoint2 = {\n x: endPoint.x,\n y: endPoint.y - yDist * this.curvePosition[1] + curveOffset[1]\n };\n return [innerPoint1, innerPoint2];\n }\n}, 'cubic'); // 水平方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-horizontal', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var xDist = endPoint.x - startPoint.x;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(xDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x + xDist * this.curvePosition[0] + curveOffset[0],\n y: startPoint.y\n };\n var innerPoint2 = {\n x: endPoint.x - xDist * this.curvePosition[1] + curveOffset[1],\n y: endPoint.y\n };\n var controlPoints = [innerPoint1, innerPoint2];\n return controlPoints;\n }\n}, 'cubic');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('loop', {\n getPathPoints: function getPathPoints(cfg) {\n return Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLoopCfgs\"])(cfg);\n },\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n afterDraw: function afterDraw(cfg) {\n cfg.controlPoints = undefined;\n },\n afterUpdate: function afterUpdate(cfg) {\n cfg.controlPoints = undefined;\n }\n}, 'cubic');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2VkZ2UuanM/YWM5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNpQztBQUN5QztBQUNWO0FBQ0M7QUFDUDtBQUMzQjtBQUNIO0FBQ2lDO0FBQzdELDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsdUJBQXVCLCtDQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixrQkFBa0IsK0NBQU07QUFDeEIsb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLDJCQUEyQiwrQ0FBTTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLGlCQUFpQixzREFBRyxHQUFHLEVBQUUsK0NBQU07QUFDL0IsY0FBYywrQ0FBTTtBQUNwQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUEsZ0lBQWdJOztBQUVoSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLG1DQUFtQyxnQ0FBZ0M7O0FBRW5FOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYyxzREFBUSxHQUFHO0FBQ3pCLDREQUE0RCwyREFBUTtBQUNwRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLCtGQUErRjtBQUMvRjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsd0RBQUsseURBQXlEO0FBQ3RFLHNCQUFzQixzRUFBZ0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxRQUFRLHdEQUFLLHlEQUF5RDtBQUN0RSwrRkFBK0Y7QUFDL0Y7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxzQkFBc0Isc0VBQWdCOztBQUV0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFPLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDLDhEQUFtQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFPLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxvREFBUzs7QUFFbkQsOENBQUssNENBQTRDOztBQUVqRCw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxpQkFBaUI7O0FBRWxCLDhDQUFLO0FBQ0w7QUFDQSxlQUFlLDREQUFTO0FBQ3hCO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBLGVBQWUsMEVBQXVCLGlDQUFpQzs7QUFFdkU7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsMERBQU87QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwRUFBdUI7QUFDdEM7O0FBRUEsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0NBQStDOztBQUUvQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRCw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMERBQU87QUFDakIsVUFBVSwwREFBTztBQUNqQix1QkFBdUIsa0VBQWU7QUFDdEM7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrRUFBZTtBQUN2Qyx3QkFBd0Isa0VBQWU7QUFDdkM7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlCQUFpQjs7QUFFbEIsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7QUFDaEIsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsV0FBVzs7QUFFWiw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEIsUUFBUSwyREFBUTtBQUNoQixRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBLFdBQVcsaUVBQVc7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IOiHquWumuS5iei+uVxuICogQGRlc2NyaXB0aW9uIOiHquWumuS5iei+ueS4reacieWkp+mHj+mAu+i+keWQjOiHquWumuS5ieiKgueCuemHjeWkje+8jOiZveeEtuWPr+S7peaPkOWPluaIkOS4uiBtaXhpbiDvvIzkvYbmmK/ogIPomZHliLDku6PnoIHnmoTlj6/or7vmgKfvvIzov5jmmK/ljZXni6zlrp7njrDjgIJcbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIG1peCwgZWFjaCwgaXNOaWwsIGlzTnVtYmVyLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXRMYWJlbFBvc2l0aW9uLCBnZXRMb29wQ2ZncyB9IGZyb20gJy4uL3V0aWwvZ3JhcGhpYyc7XG5pbXBvcnQgeyBkaXN0YW5jZSwgZ2V0Q2lyY2xlQ2VudGVyQnlQb2ludHMgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHsgZ2V0Q29udHJvbFBvaW50LCBnZXRTcGxpbmUgfSBmcm9tICcuLi91dGlsL3BhdGgnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IHsgc2hhcGVCYXNlLCBDTFNfTEFCRUxfQkdfU1VGRklYIH0gZnJvbSAnLi9zaGFwZUJhc2UnO1xudmFyIENMU19TSEFQRSA9ICdlZGdlLXNoYXBlJzsgLy8gc3RhcnQsZW5kIOWAkue9ru+8jGNlbnRlciDkuI3lj5hcblxuZnVuY3Rpb24gcmV2ZXJ0QWxpZ24obGFiZWxQb3NpdGlvbikge1xuICB2YXIgdGV4dEFsaWduID0gbGFiZWxQb3NpdGlvbjtcblxuICBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ3N0YXJ0Jykge1xuICAgIHRleHRBbGlnbiA9ICdlbmQnO1xuICB9IGVsc2UgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgdGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgfVxuXG4gIHJldHVybiB0ZXh0QWxpZ247XG59XG5cbnZhciBzaW5nbGVFZGdlID0ge1xuICBpdGVtVHlwZTogJ2VkZ2UnLFxuXG4gIC8qKlxuICAgKiDmlofmnKznmoTkvY3nva5cbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuXG4gIC8qKlxuICAgKiDmlofmnKznmoQgeCDlgY/np7tcbiAgICogQHR5cGUge051bWJlcn1cbiAgICovXG4gIHJlZlg6IDAsXG5cbiAgLyoqXG4gICAqIOaWh+acrOeahCB5IOWBj+enu1xuICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgKi9cbiAgcmVmWTogMCxcblxuICAvKipcbiAgICog5paH5pys5piv5ZCm6Lef552A57q/6Ieq5Yqo5peL6L2s77yM6buY6K6kIGZhbHNlXG4gICAqIEB0eXBlIHtCb29sZWFufVxuICAgKi9cbiAgbGFiZWxBdXRvUm90YXRlOiBmYWxzZSxcbiAgLy8g6Ieq5a6a5LmJ6L655pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBHbG9iYWwuZGVmYXVsdEVkZ2Uuc2l6ZSxcbiAgICBzdHlsZToge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0RWRnZS5zdHlsZS5zdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IEdsb2JhbC5kZWZhdWx0RWRnZS5zdHlsZS5saW5lQXBwZW5kV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwuZWRnZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuZWRnZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwuZWRnZVN0YXRlU3R5bGVzKVxuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bovrnnmoQgcGF0aFxuICAgKiBAaW50ZXJuYWwg5L6b5omp5bGV55qE6L656KaG55uWXG4gICAqIEBwYXJhbSAge0FycmF5fSBwb2ludHMg5p6E5oiQ6L6555qE54K555qE6ZuG5ZCIXG4gICAqIEByZXR1cm4ge0FycmF5fSDmnoTmiJAgcGF0aCDnmoTmlbDnu4RcbiAgICovXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHBvaW50LCBpbmRleCkge1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHBhdGgucHVzaChbJ00nLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoLnB1c2goWydMJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLm9wdGlvbnMuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHZhciBzaXplID0gY2ZnLnNpemUgfHwgR2xvYmFsLmRlZmF1bHRFZGdlLnNpemU7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aChwb2ludHMpO1xuICAgIHZhciBzdHlsZXMgPSBtaXgoe30sIEdsb2JhbC5kZWZhdWx0RWRnZS5zdHlsZSwge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdEVkZ2UuY29sb3IsXG4gICAgICBsaW5lV2lkdGg6IHNpemUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSwgc3R5bGUpO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8gY29uc3Qgc3Ryb2tlU3R5bGU6IFNoYXBlU3R5bGUgPSB7XG4gICAgLy8gICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAvLyB9O1xuXG4gICAgdmFyIHNoYXBlID0gKChfYSA9IGl0ZW0uZ2V0S2V5U2hhcGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGl0ZW0pKSB8fCBncm91cFsnc2hhcGVNYXAnXVsnZWRnZS1zaGFwZSddOyAvLyBncm91cC5maW5kKChlbGVtZW50KSA9PiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdlZGdlLXNoYXBlJyk7XG5cbiAgICB2YXIgc2l6ZSA9IGNmZy5zaXplO1xuICAgIGNmZyA9IHRoaXMuZ2V0UGF0aFBvaW50cyhjZmcpO1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gdGhpcy5nZXRDb250cm9sUG9pbnRzKGNmZyk7IC8vIHx8IGNmZy5jb250cm9sUG9pbnRzO1xuXG4gICAgdmFyIHBvaW50cyA9IFtzdGFydFBvaW50XTsgLy8g5re75Yqg6LW35aeL54K5XG4gICAgLy8g5re75Yqg5o6n5Yi254K5XG5cbiAgICBpZiAoY29udHJvbFBvaW50cykge1xuICAgICAgcG9pbnRzID0gcG9pbnRzLmNvbmNhdChjb250cm9sUG9pbnRzKTtcbiAgICB9IC8vIOa3u+WKoOe7k+adn+eCuVxuXG5cbiAgICBwb2ludHMucHVzaChlbmRQb2ludCk7XG4gICAgdmFyIGN1cnJlbnRBdHRyID0gc2hhcGUuYXR0cigpOyAvLyBjb25zdCBwcmV2aW91c1N0eWxlID0gbWl4KHt9LCBzdHJva2VTdHlsZSwgY3VycmVudEF0dHIsIGNmZy5zdHlsZSk7XG5cbiAgICB2YXIgcHJldmlvdXNTdHlsZSA9IGNmZy5zdHlsZSB8fCB7fTtcblxuICAgIGlmIChwcmV2aW91c1N0eWxlLnN0cm9rZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmV2aW91c1N0eWxlLnN0cm9rZSA9IGNmZy5jb2xvcjtcbiAgICB9XG5cbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByb3V0ZUNmZyA9IHtcbiAgICAgIHJhZGl1czogcHJldmlvdXNTdHlsZS5yYWRpdXNcbiAgICB9O1xuXG4gICAgaWYgKCFjb250cm9sUG9pbnRzKSB7XG4gICAgICByb3V0ZUNmZyA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICBvZmZzZXQ6IHByZXZpb3VzU3R5bGUub2Zmc2V0LFxuICAgICAgICByYWRpdXM6IHByZXZpb3VzU3R5bGUucmFkaXVzXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKHBvaW50cywgcm91dGVDZmcpO1xuICAgIHZhciBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdtb3ZlJykge1xuICAgICAgc3R5bGUgPSB7XG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyZW50QXR0ci5lbmRBcnJvdyAmJiBwcmV2aW91c1N0eWxlLmVuZEFycm93ID09PSBmYWxzZSkge1xuICAgICAgICBjZmcuc3R5bGUuZW5kQXJyb3cgPSB7XG4gICAgICAgICAgcGF0aDogJydcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRBdHRyLnN0YXJ0QXJyb3cgJiYgcHJldmlvdXNTdHlsZS5zdGFydEFycm93ID09PSBmYWxzZSkge1xuICAgICAgICBjZmcuc3R5bGUuc3RhcnRBcnJvdyA9IHtcbiAgICAgICAgICBwYXRoOiAnJ1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzdHlsZSA9IF9fYXNzaWduKHt9LCBjZmcuc3R5bGUpO1xuICAgICAgaWYgKHN0eWxlLmxpbmVXaWR0aCA9PT0gdW5kZWZpbmVkKSBzdHlsZS5saW5lV2RpdGggPSAoaXNOdW1iZXIoc2l6ZSkgPyBzaXplIDogc2l6ZSA9PT0gbnVsbCB8fCBzaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaXplWzBdKSB8fCBjdXJyZW50QXR0ci5saW5lV2lkdGg7XG4gICAgICBpZiAoc3R5bGUucGF0aCA9PT0gdW5kZWZpbmVkKSBzdHlsZS5wYXRoID0gcGF0aDtcbiAgICAgIGlmIChzdHlsZS5zdHJva2UgPT09IHVuZGVmaW5lZCkgc3R5bGUuc3Ryb2tlID0gY3VycmVudEF0dHIuc3Ryb2tlIHx8IGNmZy5jb2xvcjtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGUpIHtcbiAgICAgIHNoYXBlLmF0dHIoc3R5bGUpO1xuICAgIH1cbiAgfSxcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKSB7XG4gICAgdmFyIGxhYmVsUG9zaXRpb24gPSBsYWJlbENmZy5wb3NpdGlvbiB8fCB0aGlzLmxhYmVsUG9zaXRpb247IC8vIOaWh+acrOeahOS9jee9rueUqOaIt+WPr+S7peS8oOWFpVxuXG4gICAgdmFyIHN0eWxlID0ge307XG4gICAgdmFyIHBhdGhTaGFwZSA9IGdyb3VwID09PSBudWxsIHx8IGdyb3VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBncm91cFsnc2hhcGVNYXAnXVtDTFNfU0hBUEVdOyAvLyBncm91cD8uZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSBDTFNfU0hBUEUpO1xuICAgIC8vIOS4jeWvuSBwYXRoU2hhcGUg6L+b6KGM5Yik56m677yM5aaC5p6c57q/5LiN5a2Y5Zyo77yM6K+05piO5pyJ6Zeu6aKY5LqGXG5cbiAgICB2YXIgcG9pbnRQZXJjZW50O1xuXG4gICAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChsYWJlbFBvc2l0aW9uID09PSAnZW5kJykge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMC41O1xuICAgIH0gLy8g5YGP56e76YePXG5cblxuICAgIHZhciBvZmZzZXRYID0gbGFiZWxDZmcucmVmWCB8fCB0aGlzLnJlZlg7XG4gICAgdmFyIG9mZnNldFkgPSBsYWJlbENmZy5yZWZZIHx8IHRoaXMucmVmWTsgLy8g5aaC5p6c5Lik5Liq6IqC54K56YeN5Y+g77yM57q/5bCx5Y+Y5oiQ5LqG5LiA5Liq54K577yM6L+Z5pe25YCZbGFiZWznmoTkvY3nva7vvIzlsLHmmK/ov5nkuKrngrkgKyDnu53lr7nlgY/np7tcblxuICAgIGlmIChjZmcuc3RhcnRQb2ludC54ID09PSBjZmcuZW5kUG9pbnQueCAmJiBjZmcuc3RhcnRQb2ludC55ID09PSBjZmcuZW5kUG9pbnQueSkge1xuICAgICAgc3R5bGUueCA9IGNmZy5zdGFydFBvaW50LnggKyBvZmZzZXRYO1xuICAgICAgc3R5bGUueSA9IGNmZy5zdGFydFBvaW50LnkgKyBvZmZzZXRZO1xuICAgICAgc3R5bGUudGV4dCA9IGNmZy5sYWJlbDtcbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9XG5cbiAgICB2YXIgYXV0b1JvdGF0ZTtcbiAgICBpZiAoaXNOaWwobGFiZWxDZmcuYXV0b1JvdGF0ZSkpIGF1dG9Sb3RhdGUgPSB0aGlzLmxhYmVsQXV0b1JvdGF0ZTtlbHNlIGF1dG9Sb3RhdGUgPSBsYWJlbENmZy5hdXRvUm90YXRlO1xuICAgIHZhciBvZmZzZXRTdHlsZSA9IGdldExhYmVsUG9zaXRpb24ocGF0aFNoYXBlLCBwb2ludFBlcmNlbnQsIG9mZnNldFgsIG9mZnNldFksIGF1dG9Sb3RhdGUpO1xuICAgIHN0eWxlLnggPSBvZmZzZXRTdHlsZS54O1xuICAgIHN0eWxlLnkgPSBvZmZzZXRTdHlsZS55O1xuICAgIHN0eWxlLnJvdGF0ZSA9IG9mZnNldFN0eWxlLnJvdGF0ZTtcbiAgICBzdHlsZS50ZXh0QWxpZ24gPSB0aGlzLl9nZXRUZXh0QWxpZ24obGFiZWxQb3NpdGlvbiwgb2Zmc2V0U3R5bGUuYW5nbGUpO1xuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuICBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uKGxhYmVsLCBjZmcsIGxhYmVsQ2ZnLCBncm91cCkge1xuICAgIGlmICghbGFiZWwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICB2YXIgYmJveCA9IGxhYmVsLmdldEJCb3goKTtcbiAgICB2YXIgYmFja2dyb3VuZFN0eWxlID0gbGFiZWxDZmcuc3R5bGUgJiYgbGFiZWxDZmcuc3R5bGUuYmFja2dyb3VuZDtcblxuICAgIGlmICghYmFja2dyb3VuZFN0eWxlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgdmFyIHBhZGRpbmcgPSBiYWNrZ3JvdW5kU3R5bGUucGFkZGluZztcbiAgICB2YXIgYmFja2dyb3VuZFdpZHRoID0gYmJveC53aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHZhciBiYWNrZ3JvdW5kSGVpZ2h0ID0gYmJveC5oZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcblxuICAgIHZhciBzdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBiYWNrZ3JvdW5kU3R5bGUpLCB7XG4gICAgICB3aWR0aDogYmFja2dyb3VuZFdpZHRoLFxuICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSGVpZ2h0LFxuICAgICAgeDogYmJveC5taW5YIC0gcGFkZGluZ1syXSxcbiAgICAgIHk6IGJib3gubWluWSAtIHBhZGRpbmdbMF0sXG4gICAgICByb3RhdGU6IDBcbiAgICB9KTtcblxuICAgIHZhciBhdXRvUm90YXRlO1xuICAgIGlmIChpc05pbChsYWJlbENmZy5hdXRvUm90YXRlKSkgYXV0b1JvdGF0ZSA9IHRoaXMubGFiZWxBdXRvUm90YXRlO2Vsc2UgYXV0b1JvdGF0ZSA9IGxhYmVsQ2ZnLmF1dG9Sb3RhdGU7XG4gICAgdmFyIHBhdGhTaGFwZSA9IGdyb3VwID09PSBudWxsIHx8IGdyb3VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBncm91cFsnc2hhcGVNYXAnXVtDTFNfU0hBUEVdOyAvLyBncm91cD8uZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSBDTFNfU0hBUEUpO1xuICAgIC8vIOS4jeWvuSBwYXRoU2hhcGUg6L+b6KGM5Yik56m677yM5aaC5p6c57q/5LiN5a2Y5Zyo77yM6K+05piO5pyJ6Zeu6aKY5LqGXG5cbiAgICB2YXIgcG9pbnRQZXJjZW50O1xuXG4gICAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChsYWJlbFBvc2l0aW9uID09PSAnZW5kJykge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMC41O1xuICAgIH0gLy8g5YGP56e76YePXG5cblxuICAgIHZhciBvZmZzZXRYID0gbGFiZWxDZmcucmVmWCB8fCB0aGlzLnJlZlg7XG4gICAgdmFyIG9mZnNldFkgPSBsYWJlbENmZy5yZWZZIHx8IHRoaXMucmVmWTsgLy8gLy8g5aaC5p6c5Lik5Liq6IqC54K56YeN5Y+g77yM57q/5bCx5Y+Y5oiQ5LqG5LiA5Liq54K577yM6L+Z5pe25YCZbGFiZWznmoTkvY3nva7vvIzlsLHmmK/ov5nkuKrngrkgKyDnu53lr7nlgY/np7tcblxuICAgIGlmIChjZmcuc3RhcnRQb2ludC54ID09PSBjZmcuZW5kUG9pbnQueCAmJiBjZmcuc3RhcnRQb2ludC55ID09PSBjZmcuZW5kUG9pbnQueSkge1xuICAgICAgc3R5bGUueCA9IGNmZy5zdGFydFBvaW50LnggKyBvZmZzZXRYIC0gYmFja2dyb3VuZFdpZHRoIC8gMjtcbiAgICAgIHN0eWxlLnkgPSBjZmcuc3RhcnRQb2ludC55ICsgb2Zmc2V0WSAtIGJhY2tncm91bmRIZWlnaHQgLyAyO1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cblxuICAgIHZhciBiZ09mZnNldFggPSBvZmZzZXRYIC0gYmFja2dyb3VuZFdpZHRoIC8gMjtcblxuICAgIGlmIChsYWJlbENmZy5wb3NpdGlvbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgYmdPZmZzZXRYID0gb2Zmc2V0WCAtIHBhZGRpbmdbMl07XG4gICAgfSBlbHNlIGlmIChsYWJlbENmZy5wb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIGJnT2Zmc2V0WCA9IG9mZnNldFggLSBiYWNrZ3JvdW5kV2lkdGg7XG4gICAgfVxuXG4gICAgdmFyIG9mZnNldFN0eWxlID0gZ2V0TGFiZWxQb3NpdGlvbihwYXRoU2hhcGUsIHBvaW50UGVyY2VudCwgYmdPZmZzZXRYLCBvZmZzZXRZICsgYmFja2dyb3VuZEhlaWdodCAvIDIsIGF1dG9Sb3RhdGUpO1xuXG4gICAgaWYgKGF1dG9Sb3RhdGUpIHtcbiAgICAgIHN0eWxlLnggPSBvZmZzZXRTdHlsZS54O1xuICAgICAgc3R5bGUueSA9IG9mZnNldFN0eWxlLnk7XG4gICAgfVxuXG4gICAgc3R5bGUucm90YXRlID0gb2Zmc2V0U3R5bGUucm90YXRlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgLy8g6I635Y+W5paH5pys5a+56b2Q5pa55byPXG4gIF9nZXRUZXh0QWxpZ246IGZ1bmN0aW9uIF9nZXRUZXh0QWxpZ24obGFiZWxQb3NpdGlvbiwgYW5nbGUpIHtcbiAgICB2YXIgdGV4dEFsaWduID0gJ2NlbnRlcic7XG5cbiAgICBpZiAoIWFuZ2xlKSB7XG4gICAgICByZXR1cm4gbGFiZWxQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBhbmdsZSA9IGFuZ2xlICUgKE1hdGguUEkgKiAyKTsgLy8g5Y+W5qihXG5cbiAgICBpZiAobGFiZWxQb3NpdGlvbiAhPT0gJ2NlbnRlcicpIHtcbiAgICAgIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDw9IE1hdGguUEkgLyAyIHx8IGFuZ2xlID49IDMgLyAyICogTWF0aC5QSSAmJiBhbmdsZSA8IDIgKiBNYXRoLlBJKSB7XG4gICAgICAgIHRleHRBbGlnbiA9IGxhYmVsUG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0QWxpZ24gPSByZXZlcnRBbGlnbihsYWJlbFBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dEFsaWduO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwg6I635Y+W6L6555qE5o6n5Yi254K5XG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheX0g5o6n5Yi254K555qE5pWw57uEXG4gICAqL1xuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHJldHVybiBjZmcuY29udHJvbFBvaW50cztcbiAgfSxcblxuICAvKipcbiAgICogQGludGVybmFsIOWkhOeQhumcgOimgemHjeiuoeeul+eCueWSjOi+ueeahOaDheWGtVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOi+ueeahOmFjee9rumhuVxuICAgKi9cbiAgZ2V0UGF0aFBvaW50czogZnVuY3Rpb24gZ2V0UGF0aFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbovrlcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAg6L6555qE6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0cuR3JvdXB9IGdyb3VwIOi+ueeahOWuueWZqFxuICAgKiBAcmV0dXJuIHtJU2hhcGV9IOWbvuW9olxuICAgKi9cbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIHNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6IENMU19TSEFQRSxcbiAgICAgIG5hbWU6IENMU19TSEFQRSxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bQ0xTX1NIQVBFXSA9IHNoYXBlO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBsYWJlbFN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlO1xuICAgIHZhciBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IGxhYmVsU3R5bGUsXG4gICAgICBuYW1lOiAndGV4dC1zaGFwZSdcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1zaGFwZSddID0gbGFiZWw7XG5cbiAgICBpZiAoIWlzTmFOKHJvdGF0ZSkgJiYgcm90YXRlICE9PSAnJykge1xuICAgICAgbGFiZWwucm90YXRlQXRTdGFydChyb3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChsYWJlbFN0eWxlLmJhY2tncm91bmQpIHtcbiAgICAgIHZhciByZWN0ID0gdGhpcy5kcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCwgbGFiZWxTdHlsZSwgcm90YXRlKTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lID0gdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9CR19TVUZGSVg7XG4gICAgICByZWN0LnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZSk7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXSA9IHJlY3Q7XG4gICAgICBsYWJlbC50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9LFxuICBkcmF3TGFiZWxCZzogZnVuY3Rpb24gZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwsIGxhYmVsU3R5bGUsIHJvdGF0ZSkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApO1xuICAgIGRlbGV0ZSBzdHlsZS5yb3RhdGU7XG4gICAgdmFyIHJlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJnLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzdHlsZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LWJnLXNoYXBlJ10gPSByZWN0O1xuICAgIGlmICghaXNOYU4ocm90YXRlKSkgcmVjdC5yb3RhdGVBdFN0YXJ0KHJvdGF0ZSk7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbn07XG5cbnZhciBzaW5nbGVFZGdlRGVmID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNoYXBlQmFzZSksIHNpbmdsZUVkZ2UpO1xuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ3NpbmdsZS1lZGdlJywgc2luZ2xlRWRnZURlZik7IC8vIOebtOe6vywg5LiN5pSv5oyB5o6n5Yi254K5XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnbGluZScsIHtcbiAgLy8g5o6n5Yi254K55LiN55Sf5pWIXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufSwgJ3NpbmdsZS1lZGdlJyk7IC8vIOebtOe6v1xuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ3NwbGluZScsIHtcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChwb2ludHMpIHtcbiAgICB2YXIgcGF0aCA9IGdldFNwbGluZShwb2ludHMpO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgnYXJjJywge1xuICBjdXJ2ZU9mZnNldDogMjAsXG4gIGNsb2Nrd2lzZTogMSxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICB2YXIgbWlkUG9pbnQgPSB7XG4gICAgICB4OiAoc3RhcnRQb2ludC54ICsgZW5kUG9pbnQueCkgLyAyLFxuICAgICAgeTogKHN0YXJ0UG9pbnQueSArIGVuZFBvaW50LnkpIC8gMlxuICAgIH07XG4gICAgdmFyIGNlbnRlcjtcbiAgICB2YXIgYXJjUG9pbnQ7IC8vIOagueaNrue7meWumueCueiuoeeul+WchuW8p1xuXG4gICAgaWYgKGNmZy5jb250cm9sUG9pbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyY1BvaW50ID0gY2ZnLmNvbnRyb2xQb2ludHNbMF07XG4gICAgICBjZW50ZXIgPSBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyhzdGFydFBvaW50LCBhcmNQb2ludCwgZW5kUG9pbnQpOyAvLyDmoLnmja7mjqfliLbngrnlkoznm7Tnur/lhbPns7vlhrPlrpogY2xvY2t3aXNl5YC8XG5cbiAgICAgIGlmIChzdGFydFBvaW50LnggPD0gZW5kUG9pbnQueCAmJiBzdGFydFBvaW50LnkgPiBlbmRQb2ludC55KSB7XG4gICAgICAgIHRoaXMuY2xvY2t3aXNlID0gY2VudGVyLnggPiBhcmNQb2ludC54ID8gMCA6IDE7XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0UG9pbnQueCA8PSBlbmRQb2ludC54ICYmIHN0YXJ0UG9pbnQueSA8IGVuZFBvaW50LnkpIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSBjZW50ZXIueCA+IGFyY1BvaW50LnggPyAxIDogMDtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnRQb2ludC54ID4gZW5kUG9pbnQueCAmJiBzdGFydFBvaW50LnkgPD0gZW5kUG9pbnQueSkge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IGNlbnRlci55IDwgYXJjUG9pbnQueSA/IDAgOiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSBjZW50ZXIueSA8IGFyY1BvaW50LnkgPyAxIDogMDtcbiAgICAgIH0gLy8g6Iul57uZ5a6a54K55ZKM5Lik56uv54K55YWx57q/77yM5peg5rOV55Sf5oiQ5ZyG5byn77yM57uY5Yi255u057q/XG5cblxuICAgICAgaWYgKChhcmNQb2ludC54IC0gc3RhcnRQb2ludC54KSAvIChhcmNQb2ludC55IC0gc3RhcnRQb2ludC55KSA9PT0gKGVuZFBvaW50LnggLSBzdGFydFBvaW50LngpIC8gKGVuZFBvaW50LnkgLSBzdGFydFBvaW50LnkpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5qC55o2u55u057q/6L+e57q/5Lit54K555qE55qE5YGP56e76K6h566X5ZyG5bynXG4gICAgICAvLyDoi6XnlKjmiLfnu5nlrprlgY/np7vph4/liJnmoLnmja7lhbborqHnrpfvvIzlkKbliJnmjInnhafpu5jorqTlgY/np7vlgLzorqHnrpdcbiAgICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjZmcuY3VydmVPZmZzZXQgPSB0aGlzLmN1cnZlT2Zmc2V0O1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNBcnJheShjZmcuY3VydmVPZmZzZXQpKSB7XG4gICAgICAgIGNmZy5jdXJ2ZU9mZnNldCA9IGNmZy5jdXJ2ZU9mZnNldFswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCA8IDApIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmVjID0ge1xuICAgICAgICB4OiBlbmRQb2ludC54IC0gc3RhcnRQb2ludC54LFxuICAgICAgICB5OiBlbmRQb2ludC55IC0gc3RhcnRQb2ludC55XG4gICAgICB9O1xuICAgICAgdmFyIGVkZ2VBbmdsZSA9IE1hdGguYXRhbjIodmVjLnksIHZlYy54KTtcbiAgICAgIGFyY1BvaW50ID0ge1xuICAgICAgICB4OiBjZmcuY3VydmVPZmZzZXQgKiBNYXRoLmNvcygtTWF0aC5QSSAvIDIgKyBlZGdlQW5nbGUpICsgbWlkUG9pbnQueCxcbiAgICAgICAgeTogY2ZnLmN1cnZlT2Zmc2V0ICogTWF0aC5zaW4oLU1hdGguUEkgLyAyICsgZWRnZUFuZ2xlKSArIG1pZFBvaW50LnlcbiAgICAgIH07XG4gICAgICBjZW50ZXIgPSBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyhzdGFydFBvaW50LCBhcmNQb2ludCwgZW5kUG9pbnQpO1xuICAgIH1cblxuICAgIHZhciByYWRpdXMgPSBkaXN0YW5jZShzdGFydFBvaW50LCBjZW50ZXIpO1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gW3tcbiAgICAgIHg6IHJhZGl1cyxcbiAgICAgIHk6IHJhZGl1c1xuICAgIH1dO1xuICAgIHJldHVybiBjb250cm9sUG9pbnRzO1xuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gW107XG4gICAgcGF0aC5wdXNoKFsnTScsIHBvaW50c1swXS54LCBwb2ludHNbMF0ueV0pOyAvLyDmjqfliLbngrnkuI7nq6/ngrnlhbHnur9cblxuICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBwYXRoLnB1c2goWydMJywgcG9pbnRzWzFdLngsIHBvaW50c1sxXS55XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGgucHVzaChbJ0EnLCBwb2ludHNbMV0ueCwgcG9pbnRzWzFdLnksIDAsIDAsIHRoaXMuY2xvY2t3aXNlLCBwb2ludHNbMl0ueCwgcG9pbnRzWzJdLnldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufSwgJ3NpbmdsZS1lZGdlJyk7XG5TaGFwZS5yZWdpc3RlckVkZ2UoJ3F1YWRyYXRpYycsIHtcbiAgY3VydmVQb3NpdGlvbjogMC41LFxuICBjdXJ2ZU9mZnNldDogLTIwLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gY2ZnLmNvbnRyb2xQb2ludHM7IC8vIOaMh+WummNvbnRyb2xQb2ludHNcblxuICAgIGlmICghY29udHJvbFBvaW50cyB8fCAhY29udHJvbFBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgICBpZiAoY2ZnLmN1cnZlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlUG9zaXRpb24gPSB0aGlzLmN1cnZlUG9zaXRpb247XG4gICAgICBpZiAoaXNBcnJheSh0aGlzLmN1cnZlT2Zmc2V0KSkgY2ZnLmN1cnZlT2Zmc2V0ID0gY2ZnLmN1cnZlT2Zmc2V0WzBdO1xuICAgICAgaWYgKGlzQXJyYXkodGhpcy5jdXJ2ZVBvc2l0aW9uKSkgY2ZnLmN1cnZlUG9zaXRpb24gPSBjZmcuY3VydmVPZmZzZXRbMF07XG4gICAgICB2YXIgaW5uZXJQb2ludCA9IGdldENvbnRyb2xQb2ludChzdGFydFBvaW50LCBlbmRQb2ludCwgY2ZnLmN1cnZlUG9zaXRpb24sIGNmZy5jdXJ2ZU9mZnNldCk7XG4gICAgICBjb250cm9sUG9pbnRzID0gW2lubmVyUG9pbnRdO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sUG9pbnRzO1xuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gW107XG4gICAgcGF0aC5wdXNoKFsnTScsIHBvaW50c1swXS54LCBwb2ludHNbMF0ueV0pO1xuICAgIHBhdGgucHVzaChbJ1EnLCBwb2ludHNbMV0ueCwgcG9pbnRzWzFdLnksIHBvaW50c1syXS54LCBwb2ludHNbMl0ueV0pO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgnY3ViaWMnLCB7XG4gIGN1cnZlUG9zaXRpb246IFsxIC8gMiwgMSAvIDJdLFxuICBjdXJ2ZU9mZnNldDogWy0yMCwgMjBdLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gY2ZnLmNvbnRyb2xQb2ludHM7IC8vIOaMh+WumiBjb250cm9sUG9pbnRzXG5cbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgaWYgKGNmZy5jdXJ2ZVBvc2l0aW9uID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gdGhpcy5jdXJ2ZVBvc2l0aW9uO1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBbY2ZnLmN1cnZlT2Zmc2V0LCAtY2ZnLmN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLmN1cnZlUG9zaXRpb24pKSBjZmcuY3VydmVQb3NpdGlvbiA9IFtjZmcuY3VydmVQb3NpdGlvbiwgMSAtIGNmZy5jdXJ2ZVBvc2l0aW9uXTtcblxuICAgIGlmICghY29udHJvbFBvaW50cyB8fCAhY29udHJvbFBvaW50cy5sZW5ndGggfHwgY29udHJvbFBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgICAgdmFyIGlubmVyUG9pbnQxID0gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBjZmcuY3VydmVQb3NpdGlvblswXSwgY2ZnLmN1cnZlT2Zmc2V0WzBdKTtcbiAgICAgIHZhciBpbm5lclBvaW50MiA9IGdldENvbnRyb2xQb2ludChzdGFydFBvaW50LCBlbmRQb2ludCwgY2ZnLmN1cnZlUG9zaXRpb25bMV0sIGNmZy5jdXJ2ZU9mZnNldFsxXSk7XG4gICAgICBjb250cm9sUG9pbnRzID0gW2lubmVyUG9pbnQxLCBpbm5lclBvaW50Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBwYXRoLnB1c2goWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gICAgcGF0aC5wdXNoKFsnQycsIHBvaW50c1sxXS54LCBwb2ludHNbMV0ueSwgcG9pbnRzWzJdLngsIHBvaW50c1syXS55LCBwb2ludHNbM10ueCwgcG9pbnRzWzNdLnldKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufSwgJ3NpbmdsZS1lZGdlJyk7IC8vIOWeguebtOaWueWQkeeahOS4iemYtui0neWhnuWwlOabsue6v++8jOS4jeWGjeiAg+iZkeeUqOaIt+WklumDqOS8oOWFpeeahOaOp+WItueCuVxuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ2N1YmljLXZlcnRpY2FsJywge1xuICBjdXJ2ZVBvc2l0aW9uOiBbMSAvIDIsIDEgLyAyXSxcbiAgbWluQ3VydmVPZmZzZXQ6IFswLCAwXSxcbiAgY3VydmVPZmZzZXQ6IHVuZGVmaW5lZCxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICBpZiAoY2ZnLmN1cnZlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlUG9zaXRpb24gPSB0aGlzLmN1cnZlUG9zaXRpb247XG4gICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVPZmZzZXQgPSB0aGlzLmN1cnZlT2Zmc2V0O1xuICAgIGlmIChjZmcubWluQ3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLm1pbkN1cnZlT2Zmc2V0ID0gdGhpcy5taW5DdXJ2ZU9mZnNldDtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLmN1cnZlT2Zmc2V0KSkgY2ZnLmN1cnZlT2Zmc2V0ID0gW2NmZy5jdXJ2ZU9mZnNldCwgLWNmZy5jdXJ2ZU9mZnNldF07XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5taW5DdXJ2ZU9mZnNldCkpIGNmZy5taW5DdXJ2ZU9mZnNldCA9IFtjZmcubWluQ3VydmVPZmZzZXQsIC1jZmcubWluQ3VydmVPZmZzZXRdO1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVQb3NpdGlvbikpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gW2NmZy5jdXJ2ZVBvc2l0aW9uLCAxIC0gY2ZnLmN1cnZlUG9zaXRpb25dO1xuICAgIHZhciB5RGlzdCA9IGVuZFBvaW50LnkgLSBzdGFydFBvaW50Lnk7XG4gICAgdmFyIGN1cnZlT2Zmc2V0ID0gWzAsIDBdO1xuXG4gICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCkge1xuICAgICAgY3VydmVPZmZzZXQgPSBjZmcuY3VydmVPZmZzZXQ7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyh5RGlzdCkgPCBNYXRoLmFicyhjZmcubWluQ3VydmVPZmZzZXRbMF0pKSB7XG4gICAgICBjdXJ2ZU9mZnNldCA9IGNmZy5taW5DdXJ2ZU9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgaW5uZXJQb2ludDEgPSB7XG4gICAgICB4OiBzdGFydFBvaW50LngsXG4gICAgICB5OiBzdGFydFBvaW50LnkgKyB5RGlzdCAqIHRoaXMuY3VydmVQb3NpdGlvblswXSArIGN1cnZlT2Zmc2V0WzBdXG4gICAgfTtcbiAgICB2YXIgaW5uZXJQb2ludDIgPSB7XG4gICAgICB4OiBlbmRQb2ludC54LFxuICAgICAgeTogZW5kUG9pbnQueSAtIHlEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzFdICsgY3VydmVPZmZzZXRbMV1cbiAgICB9O1xuICAgIHJldHVybiBbaW5uZXJQb2ludDEsIGlubmVyUG9pbnQyXTtcbiAgfVxufSwgJ2N1YmljJyk7IC8vIOawtOW5s+aWueWQkeeahOS4iemYtui0neWhnuWwlOabsue6v++8jOS4jeWGjeiAg+iZkeeUqOaIt+WklumDqOS8oOWFpeeahOaOp+WItueCuVxuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ2N1YmljLWhvcml6b250YWwnLCB7XG4gIGN1cnZlUG9zaXRpb246IFsxIC8gMiwgMSAvIDJdLFxuICBtaW5DdXJ2ZU9mZnNldDogWzAsIDBdLFxuICBjdXJ2ZU9mZnNldDogdW5kZWZpbmVkLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIGlmIChjZmcuY3VydmVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVQb3NpdGlvbiA9IHRoaXMuY3VydmVQb3NpdGlvbjtcbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgaWYgKGNmZy5taW5DdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSBjZmcubWluQ3VydmVPZmZzZXQgPSB0aGlzLm1pbkN1cnZlT2Zmc2V0O1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBbY2ZnLmN1cnZlT2Zmc2V0LCAtY2ZnLmN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLm1pbkN1cnZlT2Zmc2V0KSkgY2ZnLm1pbkN1cnZlT2Zmc2V0ID0gW2NmZy5taW5DdXJ2ZU9mZnNldCwgLWNmZy5taW5DdXJ2ZU9mZnNldF07XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZVBvc2l0aW9uKSkgY2ZnLmN1cnZlUG9zaXRpb24gPSBbY2ZnLmN1cnZlUG9zaXRpb24sIDEgLSBjZmcuY3VydmVQb3NpdGlvbl07XG4gICAgdmFyIHhEaXN0ID0gZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueDtcbiAgICB2YXIgY3VydmVPZmZzZXQgPSBbMCwgMF07XG5cbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0KSB7XG4gICAgICBjdXJ2ZU9mZnNldCA9IGNmZy5jdXJ2ZU9mZnNldDtcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKHhEaXN0KSA8IE1hdGguYWJzKGNmZy5taW5DdXJ2ZU9mZnNldFswXSkpIHtcbiAgICAgIGN1cnZlT2Zmc2V0ID0gY2ZnLm1pbkN1cnZlT2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBpbm5lclBvaW50MSA9IHtcbiAgICAgIHg6IHN0YXJ0UG9pbnQueCArIHhEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzBdICsgY3VydmVPZmZzZXRbMF0sXG4gICAgICB5OiBzdGFydFBvaW50LnlcbiAgICB9O1xuICAgIHZhciBpbm5lclBvaW50MiA9IHtcbiAgICAgIHg6IGVuZFBvaW50LnggLSB4RGlzdCAqIHRoaXMuY3VydmVQb3NpdGlvblsxXSArIGN1cnZlT2Zmc2V0WzFdLFxuICAgICAgeTogZW5kUG9pbnQueVxuICAgIH07XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBbaW5uZXJQb2ludDEsIGlubmVyUG9pbnQyXTtcbiAgICByZXR1cm4gY29udHJvbFBvaW50cztcbiAgfVxufSwgJ2N1YmljJyk7XG5TaGFwZS5yZWdpc3RlckVkZ2UoJ2xvb3AnLCB7XG4gIGdldFBhdGhQb2ludHM6IGZ1bmN0aW9uIGdldFBhdGhQb2ludHMoY2ZnKSB7XG4gICAgcmV0dXJuIGdldExvb3BDZmdzKGNmZyk7XG4gIH0sXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgcmV0dXJuIGNmZy5jb250cm9sUG9pbnRzO1xuICB9LFxuICBhZnRlckRyYXc6IGZ1bmN0aW9uIGFmdGVyRHJhdyhjZmcpIHtcbiAgICBjZmcuY29udHJvbFBvaW50cyA9IHVuZGVmaW5lZDtcbiAgfSxcbiAgYWZ0ZXJVcGRhdGU6IGZ1bmN0aW9uIGFmdGVyVXBkYXRlKGNmZykge1xuICAgIGNmZy5jb250cm9sUG9pbnRzID0gdW5kZWZpbmVkO1xuICB9XG59LCAnY3ViaWMnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js ***! \**************************************************************************************/ /*! exports provided: genBubbleSet */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genBubbleSet\", function() { return genBubbleSet; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n\nvar defaultOps = {\n maxRoutingIterations: 100,\n maxMarchingIterations: 100,\n pixelGroupSize: 2,\n edgeR0: 10,\n edgeR1: 10,\n nodeR0: 5,\n nodeR1: 10,\n morphBuffer: 5,\n threshold: 0.001,\n skip: 16,\n nodeInfluenceFactor: 1,\n edgeInfluenceFactor: 1,\n negativeNodeInfluenceFactor: -0.5\n};\n/**\n * Marching square algorithm for traching the contour of a pixel group\n * https://www.emanueleferonato.com/2013/03/01/using-marching-squares-algorithm-to-trace-the-contour-of-an-image/\n * @param potentialArea\n * @param threshold\n */\n\nfunction MarchingSquares(contour, potentialArea, threshold) {\n var marched = false;\n\n var getVal = function getVal(x, y) {\n return potentialArea.cells[x + y * potentialArea.width];\n };\n\n var getState = function getState(x, y) {\n var squareVal = 0;\n\n if (getVal(x - 1, y - 1) >= threshold) {\n squareVal += 1;\n }\n\n if (getVal(x, y - 1) > threshold) {\n squareVal += 2;\n }\n\n if (getVal(x - 1, y) > threshold) {\n squareVal += 4;\n }\n\n if (getVal(x, y) > threshold) {\n squareVal += 8;\n }\n\n return squareVal;\n };\n\n var doMarch = function doMarch(xPos, yPos) {\n var x = xPos;\n var y = yPos;\n var prevX;\n var prevY;\n\n for (var i = 0; i < potentialArea.width * potentialArea.height; i++) {\n prevX = x;\n prevY = y;\n\n if (contour.findIndex(function (item) {\n return item.x === x && item.y === y;\n }) > -1) {\n if (contour[0].x !== x || contour[0].y !== y) {// encountered a loop but haven't returned to start: change direction using conditionals and continue back to start\n } else {\n return true;\n }\n } else {\n contour.push({\n x: x,\n y: y\n });\n }\n\n var state = getState(x, y); // assign the move direction according to state of the square\n\n switch (state) {\n case -1:\n console.warn('Marched out of bounds');\n return true;\n\n case 0:\n case 3:\n case 2:\n case 7:\n x++; // go right\n\n break;\n\n case 12:\n case 14:\n case 4:\n x--; // go left\n\n break;\n\n case 6:\n // go left if come from up else go right\n if (prevX === 0) {\n if (prevY === -1) {\n x -= 1;\n } else {\n x += 1;\n }\n }\n\n break;\n\n case 1:\n case 13:\n case 5:\n y--; // go up\n\n break;\n\n case 9:\n // go up if come from right else go down\n if (prevX === 1) {\n if (prevY === 0) {\n y -= 1;\n } else {\n y += 1;\n }\n }\n\n break;\n\n case 10:\n case 8:\n case 11:\n y++; // go down\n\n break;\n\n default:\n console.warn(\"Marching squares invalid state: \" + state);\n return true;\n }\n }\n };\n\n this.march = function () {\n for (var x = 0; x < potentialArea.width && !marched; x += 1) {\n for (var y = 0; y < potentialArea.height && !marched; y += 1) {\n if (getVal(x, y) > threshold && getState(x, y) !== 15) {\n marched = doMarch(x, y);\n }\n }\n }\n\n return marched;\n };\n}\n/**\n * Space partition & assign value to each cell\n * @param points\n */\n\n\nvar initGridCells = function initGridCells(width, height, pixelGroupSize) {\n var scaleWidth = Math.ceil(width / pixelGroupSize);\n var scaleHeight = Math.ceil(height / pixelGroupSize);\n var gridCells = new Float32Array(Math.max(0, scaleWidth * scaleHeight)).fill(0);\n return {\n cells: gridCells,\n width: scaleWidth,\n height: scaleHeight\n };\n};\n/**\n * Find the optimal already visited member to item;\n Optimal: minimize cost(j) = distance(i,j) ∗ countObstacles(i,j)\n * @param item\n * @param visited\n */\n\n\nvar pickBestNeighbor = function pickBestNeighbor(item, visited, nonMembers) {\n var closestNeighbour = null;\n var minCost = Number.POSITIVE_INFINITY;\n visited.forEach(function (neighbourItem) {\n var itemP = {\n x: item.getModel().x,\n y: item.getModel().y\n };\n var neighbourItemP = {\n x: neighbourItem.getModel().x,\n y: neighbourItem.getModel().y\n };\n var dist = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])(itemP, neighbourItemP);\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](itemP.x, itemP.y, neighbourItemP.x, neighbourItemP.y);\n var numberObstacles = nonMembers.reduce(function (count, _item) {\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(_item, directLine) > 0) {\n return count + 1;\n }\n\n return count;\n }, 0);\n\n if (dist * Math.pow(numberObstacles + 1, 2) < minCost) {\n closestNeighbour = neighbourItem;\n minCost = dist * Math.pow(numberObstacles + 1, 2);\n }\n });\n return closestNeighbour;\n};\n/**\n * 返回和线相交的item中,离边的起点最近的item\n * @param items\n * @param line\n */\n\n\nvar getIntersectItem = function getIntersectItem(items, line) {\n var minDistance = Number.POSITIVE_INFINITY;\n var closestItem = null;\n items.forEach(function (item) {\n var distance = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(item, line); // find closest intersection\n\n if (distance >= 0 && distance < minDistance) {\n closestItem = item;\n minDistance = distance;\n }\n });\n return closestItem;\n};\n/**\n * Modify the directLine and Route virtual edges around obstacles\n */\n\n\nvar computeRoute = function computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer) {\n var checkedLines = [];\n var linesToCheck = [];\n linesToCheck.push(directLine);\n var hasIntersection = true;\n var iterations = 0;\n\n var pointExists = function pointExists(point, lines) {\n var flag = false;\n lines.forEach(function (line) {\n if (flag) return;\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x1,\n y: line.y1\n }) || Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x2,\n y: line.y2\n })) {\n flag = true;\n }\n });\n return flag;\n };\n\n var isPointInNonMembers = function isPointInNonMembers(point, _nonMembers) {\n for (var _i = 0, _nonMembers_1 = _nonMembers; _i < _nonMembers_1.length; _i++) {\n var item = _nonMembers_1[_i];\n var bbox = item.getBBox();\n var itemContour = [[bbox.x, bbox.y], [bbox.x + bbox.width, bbox.y], [bbox.x, bbox.y + bbox.height], [bbox.x + bbox.width, bbox.y + bbox.height]];\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(itemContour, point.x, point.y)) {\n return true;\n }\n }\n\n return false;\n }; // outer loop end when no more intersections or out of iterations\n\n\n while (hasIntersection && iterations < maxRoutingIterations) {\n hasIntersection = false;\n\n var _loop_1 = function _loop_1() {\n var line = linesToCheck.pop();\n var closestItem = getIntersectItem(nonMembers, line);\n\n if (closestItem) {\n var _a = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"itemIntersectByLine\"])(closestItem, line),\n intersections_1 = _a[0],\n countIntersections = _a[1]; // if line passes through item\n\n\n if (countIntersections === 2) {\n var testReroute = function testReroute(isFirst) {\n var tempMorphBuffer = morphBuffer;\n var virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst); // test the virtualNode already exists\n\n var exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n var pointInside = isPointInNonMembers(virtualNode, nonMembers);\n\n while (!exist && pointInside && tempMorphBuffer >= 1) {\n // try a smaller buffer\n tempMorphBuffer /= 1.5;\n virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst);\n exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n pointInside = isPointInNonMembers(virtualNode, nonMembers);\n } // 第二次route时不要求pointInside\n\n\n if (virtualNode && !exist && (!isFirst || !pointInside)) {\n // add 2 rerouted lines to check\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line.x1, line.y1, virtualNode.x, virtualNode.y));\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](virtualNode.x, virtualNode.y, line.x2, line.y2));\n hasIntersection = true;\n }\n };\n\n testReroute(true);\n\n if (!hasIntersection) {\n // if we didn't find a valid point around the first corner, try the second\n testReroute(false);\n }\n }\n } // no intersection found, mark this line as completed\n\n\n if (!hasIntersection) {\n checkedLines.push(line);\n }\n\n iterations += 1;\n }; // inner loop end when out of lines or found an intersection\n\n\n while (!hasIntersection && linesToCheck.length) {\n _loop_1();\n }\n } // 加入剩余的线\n\n\n while (linesToCheck.length) {\n checkedLines.push(linesToCheck.pop());\n }\n\n return checkedLines;\n};\n/**\n * Connect item with visited members using direct line or virtual edges\n */\n\n\nfunction getRoute(item, nonMembers, visited, maxRoutingIterations, morphBuffer) {\n var optimalNeighbor = pickBestNeighbor(item, visited, nonMembers);\n\n if (optimalNeighbor === null) {\n return [];\n } // merge the consecutive lines\n\n\n var mergeLines = function mergeLines(checkedLines) {\n var finalRoute = [];\n\n while (checkedLines.length > 0) {\n var line1 = checkedLines.pop();\n\n if (checkedLines.length === 0) {\n finalRoute.push(line1);\n break;\n }\n\n var line2 = checkedLines.pop();\n var mergeLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line1.x1, line1.y1, line2.x2, line2.y2);\n var closestItem = getIntersectItem(nonMembers, mergeLine); // merge most recent line and previous line\n\n if (!closestItem) {\n checkedLines.push(mergeLine);\n } else {\n finalRoute.push(line1);\n checkedLines.push(line2);\n }\n }\n\n return finalRoute;\n };\n\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](item.getModel().x, item.getModel().y, optimalNeighbor.getModel().x, optimalNeighbor.getModel().y);\n var checkedLines = computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer);\n var finalRoute = mergeLines(checkedLines);\n return finalRoute;\n}\n/**\n * Calculate the countor that includes the selected items and exclues the non-selected items\n * @param graph\n * @param members\n * @param nonMembers\n * @param options\n */\n\n\nvar genBubbleSet = function genBubbleSet(members, nonMembers, ops) {\n // eslint-disable-next-line no-redeclare\n var options = Object.assign(defaultOps, ops);\n var centroid = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"getPointsCenter\"])(members.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n })); // 按照到中心距离远近排序\n\n members = members.sort(function (a, b) {\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: a.getModel().x,\n y: a.getModel().y\n }, centroid) - Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: b.getModel().x,\n y: b.getModel().y\n }, centroid);\n });\n var visited = [];\n var virtualEdges = [];\n members.forEach(function (item) {\n var lines = getRoute(item, nonMembers, visited, options.maxRoutingIterations, options.morphBuffer);\n lines.forEach(function (l) {\n virtualEdges.push(l);\n });\n visited.push(item);\n }); // 由于edge也可以作为member和nonMember传入,暂时不考虑把edges作为参数传入genBubbleSet\n // edges && edges.forEach(e => {\n // virtualEdges.push(new Line(e.getSource().getModel().x, e.getSource().getModel().y, e.getTarget().getModel().x, e.getTarget().getModel().y));\n // });\n\n var activeRegion = getActiveRregion(members, virtualEdges, options.nodeR0);\n var potentialArea = initGridCells(activeRegion.width, activeRegion.height, options.pixelGroupSize); // Use march squares to generate contour\n\n var contour = [];\n var hull = [];\n\n for (var iterations = 0; iterations < options.maxMarchingIterations; iterations++) {\n fillPotentialArea(members, nonMembers, virtualEdges, activeRegion, potentialArea, options);\n contour = [];\n hull = [];\n if (!new MarchingSquares(contour, potentialArea, options.threshold).march()) continue;\n var marchedPath = contour.map(function (point) {\n return {\n x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX),\n y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY)\n };\n }); // const marchedPath = marchingSquares(potentialArea, options.threshold).map(point => ({ x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX), y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY) }))\n\n if (marchedPath) {\n var size = marchedPath.length;\n\n if (options.skip > 1) {\n size = Math.floor(marchedPath.length / options.skip); // if we reduced too much (fewer than three points in reduced surface) reduce skip and try again\n\n while (size < 3 && options.skip > 1) {\n options.skip -= 1;\n size = Math.floor(marchedPath.length / options.skip);\n }\n } // copy hull values\n\n\n for (var i = 0, j = 0; j < size; j += 1, i += options.skip) {\n hull.push({\n x: marchedPath[i].x,\n y: marchedPath[i].y\n });\n }\n }\n\n var isContourValid = function isContourValid() {\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var item = members_1[_i];\n var hullPoints = hull.map(function (point) {\n return [point.x, point.y];\n });\n if (!Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(hullPoints, item.getBBox().centerX, item.getBBox().centerY)) return false;\n } // 不强制要求所有nonMembers都没有包含在内\n // for (const item of nonMembers) {\n // if (isPointInPolygon({ x: item.getBBox().centerX, y: item.getBBox().centerY }, contour)) return false\n // }\n\n\n return true;\n };\n\n if (hull && isContourValid()) {\n return hull;\n } // update parameters for next iteraction\n\n\n options.threshold *= 0.9;\n\n if (iterations <= options.maxMarchingIterations * 0.5) {\n options.memberInfluenceFactor *= 1.2;\n options.edgeInfluenceFactor *= 1.2;\n } else if (options.nonMemberInfluenceFactor !== 0 && nonMembers.length > 0) {\n // after half the iterations, start increasing positive energy and lowering the threshold\n options.nonMemberInfluenceFactor *= 0.8;\n } else {\n break;\n }\n }\n\n return hull;\n};\n/**\n * unionboundingbox\n * @param members\n * @param edges\n */\n\nfunction getActiveRregion(members, edges, offset) {\n var activeRegion = {\n minX: Number.POSITIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY,\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n var bboxes = [];\n members.forEach(function (item) {\n bboxes.push(item.getBBox());\n });\n edges.forEach(function (l) {\n bboxes.push(l.getBBox());\n });\n\n for (var _i = 0, bboxes_1 = bboxes; _i < bboxes_1.length; _i++) {\n var bbox = bboxes_1[_i];\n activeRegion.minX = (bbox.minX < activeRegion.minX ? bbox.minX : activeRegion.minX) - offset;\n activeRegion.minY = (bbox.minY < activeRegion.minY ? bbox.minY : activeRegion.minY) - offset;\n activeRegion.maxX = (bbox.maxX > activeRegion.maxX ? bbox.maxX : activeRegion.maxX) + offset;\n activeRegion.maxY = (bbox.maxY > activeRegion.maxY ? bbox.maxY : activeRegion.maxY) + offset;\n }\n\n activeRegion.width = activeRegion.maxX - activeRegion.minX;\n activeRegion.height = activeRegion.maxY - activeRegion.minY;\n activeRegion.x = activeRegion.minX;\n activeRegion.y = activeRegion.minY;\n return activeRegion;\n}\n\nfunction fillPotentialArea(members, nonMembers, edges, activeRegion, potentialArea, options) {\n function pos2GridIx(x, offset) {\n var gridIx = Math.floor((x - offset) / options.pixelGroupSize);\n return gridIx < 0 ? 0 : gridIx;\n }\n\n function gridIx2Pos(x, offset) {\n return x * options.pixelGroupSize + offset;\n } // using inverse a for numerical stability\n\n\n var nodeInfA = (options.nodeR0 - options.nodeR1) * (options.nodeR0 - options.nodeR1);\n var edgeInfA = (options.edgeR0 - options.edgeR1) * (options.edgeR0 - options.edgeR1);\n\n var getAffectedRegion = function getAffectedRegion(bbox, thresholdR) {\n var startX = Math.min(pos2GridIx(bbox.minX, thresholdR + activeRegion.minX), potentialArea.width);\n var startY = Math.min(pos2GridIx(bbox.minY, thresholdR + activeRegion.minY), potentialArea.height);\n var endX = Math.min(pos2GridIx(bbox.maxX, -thresholdR + activeRegion.minX), potentialArea.width);\n var endY = Math.min(pos2GridIx(bbox.maxY, -thresholdR + activeRegion.minY), potentialArea.height);\n return [startX, startY, endX, endY];\n };\n\n var addItemInfluence = function addItemInfluence(item, influenceFactor) {\n var bbox = item.getBBox();\n\n var _a = getAffectedRegion(bbox, options.nodeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // calculate item influence for each cell\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var distanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointRectSquareDist\"])({\n x: tempX,\n y: tempY\n }, {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n });\n\n if (distanceSq < Math.pow(options.nodeR1, 2)) {\n var dr = Math.sqrt(distanceSq) - options.nodeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * dr * dr;\n }\n }\n }\n };\n\n var addEdgeInfluence = function addEdgeInfluence(line, influenceFactor) {\n var bbox = line.getBBox();\n\n var _a = getAffectedRegion(bbox, options.edgeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // for every point in active part of potentialArea, calculate distance to nearest point on line and add influence\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea.cells[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var minDistanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointLineSquareDist\"])({\n x: tempX,\n y: tempY\n }, line); // only influence if less than r1\n\n if (minDistanceSq < Math.pow(options.edgeR1, 2)) {\n var mdr = Math.sqrt(minDistanceSq) - options.edgeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * mdr * mdr;\n }\n }\n }\n };\n\n if (options.nodeInfluenceFactor) {\n members.forEach(function (item) {\n addItemInfluence(item, options.nodeInfluenceFactor / nodeInfA);\n });\n }\n\n if (options.edgeInfluenceFactor) {\n edges.forEach(function (edge) {\n addEdgeInfluence(edge, options.edgeInfluenceFactor / edgeInfA);\n });\n }\n\n if (options.negativeNodeInfluenceFactor) {\n nonMembers.forEach(function (item) {\n addItemInfluence(item, options.negativeNodeInfluenceFactor / nodeInfA);\n });\n }\n}\n\nfunction rerouteLine(item, buffer, intersections, wrapNormal) {\n var bbox = item.getBBox();\n var topIntersect = intersections[0],\n leftIntersect = intersections[1],\n bottomIntersect = intersections[2],\n rightIntersect = intersections[3];\n var cornerPos = {\n topLeft: {\n x: bbox.minX - buffer,\n y: bbox.minY - buffer\n },\n topRight: {\n x: bbox.maxX + buffer,\n y: bbox.minY - buffer\n },\n bottomLeft: {\n x: bbox.minX - buffer,\n y: bbox.maxY + buffer\n },\n bottomRight: {\n x: bbox.maxX + buffer,\n y: bbox.maxY + buffer\n }\n };\n var totalArea = bbox.height * bbox.width;\n\n function calcHalfArea(intersect1, intersect2) {\n return bbox.width * ((intersect1.y - bbox.minY + (intersect2.y - bbox.minY)) * 0.5);\n } // 根据线和boundingbox相交的情况,确定control point的位置\n\n\n if (leftIntersect) {\n // 相交区域有三角形\n if (topIntersect) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight; // 相交区域分成上下两个梯形,比较面积\n\n var topArea = calcHalfArea(leftIntersect, rightIntersect);\n\n if (topArea < totalArea * 0.5) {\n if (leftIntersect.y > rightIntersect.y) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n }\n\n if (leftIntersect.y < rightIntersect.y) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n }\n\n if (rightIntersect) {\n if (topIntersect) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n } // 相交区域分成左右两个梯形\n\n\n var leftArea = calcHalfArea(topIntersect, bottomIntersect);\n\n if (leftArea < totalArea * 0.5) {\n if (topIntersect.x > bottomIntersect.x) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n }\n\n if (topIntersect.x < bottomIntersect.x) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvYnViYmxlc2V0LmpzPzU4NjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXNMO0FBQ3RMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdEQUFnRDtBQUNuRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsdURBQXVEO0FBQ3ZELFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjOztBQUVkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIscUNBQXFDO0FBQ3hELHFCQUFxQixzQ0FBc0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQVU7QUFDekIseUJBQXlCLCtDQUFJO0FBQzdCO0FBQ0EsVUFBVSxpRUFBYztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQWMsYUFBYTs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsa0VBQWU7QUFDekI7QUFDQTtBQUNBLE9BQU8sS0FBSyxrRUFBZTtBQUMzQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRCwyQkFBMkI7QUFDNUU7QUFDQTtBQUNBOztBQUVBLFVBQVUsbUVBQWdCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNFQUFtQjtBQUNwQztBQUNBLHVDQUF1Qzs7O0FBR3ZDO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRzs7QUFFbEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOzs7QUFHYjtBQUNBO0FBQ0Esb0NBQW9DLCtDQUFJO0FBQ3hDLG9DQUFvQywrQ0FBSTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsK0NBQUk7QUFDOUIsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUJBQXVCLCtDQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixrRUFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBLFdBQVcsNkRBQVU7QUFDckI7QUFDQTtBQUNBLEtBQUssY0FBYyw2REFBVTtBQUM3QjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTs7QUFFQSwwQkFBMEIsNENBQTRDO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRSx5RkFBeUYsMklBQTJJOztBQUUzTztBQUNBOztBQUVBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLDRCQUE0QixVQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLHVCQUF1QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsYUFBYSxtRUFBZ0I7QUFDN0IsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLHVEQUF1RDtBQUN4Rjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUgscUNBQXFDLHNCQUFzQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7O0FBR3JCLHdCQUF3QixVQUFVO0FBQ2xDLDBCQUEwQixVQUFVO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNFQUFtQjtBQUM1QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckIsd0JBQXdCLFVBQVU7QUFDbEMsMEJBQTBCLFVBQVU7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEIsc0VBQW1CO0FBQy9DO0FBQ0E7QUFDQSxTQUFTLFFBQVE7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvaHVsbC9idWJibGVzZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXVhcmVEaXN0LCBwb2ludExpbmVTcXVhcmVEaXN0LCBpdGVtSW50ZXJzZWN0QnlMaW5lLCBnZXRQb2ludHNDZW50ZXIsIGZyYWN0aW9uVG9MaW5lLCBpc1BvaW50c092ZXJsYXAsIHBvaW50UmVjdFNxdWFyZURpc3QsIExpbmUsIGlzUG9pbnRJblBvbHlnb24gfSBmcm9tICcuLi8uLi91dGlsL21hdGgnO1xudmFyIGRlZmF1bHRPcHMgPSB7XG4gIG1heFJvdXRpbmdJdGVyYXRpb25zOiAxMDAsXG4gIG1heE1hcmNoaW5nSXRlcmF0aW9uczogMTAwLFxuICBwaXhlbEdyb3VwU2l6ZTogMixcbiAgZWRnZVIwOiAxMCxcbiAgZWRnZVIxOiAxMCxcbiAgbm9kZVIwOiA1LFxuICBub2RlUjE6IDEwLFxuICBtb3JwaEJ1ZmZlcjogNSxcbiAgdGhyZXNob2xkOiAwLjAwMSxcbiAgc2tpcDogMTYsXG4gIG5vZGVJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIGVkZ2VJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIG5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvcjogLTAuNVxufTtcbi8qKlxuICogTWFyY2hpbmcgc3F1YXJlIGFsZ29yaXRobSBmb3IgdHJhY2hpbmcgdGhlIGNvbnRvdXIgb2YgYSBwaXhlbCBncm91cFxuICogaHR0cHM6Ly93d3cuZW1hbnVlbGVmZXJvbmF0by5jb20vMjAxMy8wMy8wMS91c2luZy1tYXJjaGluZy1zcXVhcmVzLWFsZ29yaXRobS10by10cmFjZS10aGUtY29udG91ci1vZi1hbi1pbWFnZS9cbiAqIEBwYXJhbSBwb3RlbnRpYWxBcmVhXG4gKiBAcGFyYW0gdGhyZXNob2xkXG4gKi9cblxuZnVuY3Rpb24gTWFyY2hpbmdTcXVhcmVzKGNvbnRvdXIsIHBvdGVudGlhbEFyZWEsIHRocmVzaG9sZCkge1xuICB2YXIgbWFyY2hlZCA9IGZhbHNlO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwoeCwgeSkge1xuICAgIHJldHVybiBwb3RlbnRpYWxBcmVhLmNlbGxzW3ggKyB5ICogcG90ZW50aWFsQXJlYS53aWR0aF07XG4gIH07XG5cbiAgdmFyIGdldFN0YXRlID0gZnVuY3Rpb24gZ2V0U3RhdGUoeCwgeSkge1xuICAgIHZhciBzcXVhcmVWYWwgPSAwO1xuXG4gICAgaWYgKGdldFZhbCh4IC0gMSwgeSAtIDEpID49IHRocmVzaG9sZCkge1xuICAgICAgc3F1YXJlVmFsICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKGdldFZhbCh4LCB5IC0gMSkgPiB0aHJlc2hvbGQpIHtcbiAgICAgIHNxdWFyZVZhbCArPSAyO1xuICAgIH1cblxuICAgIGlmIChnZXRWYWwoeCAtIDEsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gNDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gODtcbiAgICB9XG5cbiAgICByZXR1cm4gc3F1YXJlVmFsO1xuICB9O1xuXG4gIHZhciBkb01hcmNoID0gZnVuY3Rpb24gZG9NYXJjaCh4UG9zLCB5UG9zKSB7XG4gICAgdmFyIHggPSB4UG9zO1xuICAgIHZhciB5ID0geVBvcztcbiAgICB2YXIgcHJldlg7XG4gICAgdmFyIHByZXZZO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3RlbnRpYWxBcmVhLndpZHRoICogcG90ZW50aWFsQXJlYS5oZWlnaHQ7IGkrKykge1xuICAgICAgcHJldlggPSB4O1xuICAgICAgcHJldlkgPSB5O1xuXG4gICAgICBpZiAoY29udG91ci5maW5kSW5kZXgoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ueCA9PT0geCAmJiBpdGVtLnkgPT09IHk7XG4gICAgICB9KSA+IC0xKSB7XG4gICAgICAgIGlmIChjb250b3VyWzBdLnggIT09IHggfHwgY29udG91clswXS55ICE9PSB5KSB7Ly8gZW5jb3VudGVyZWQgYSBsb29wIGJ1dCBoYXZlbid0IHJldHVybmVkIHRvIHN0YXJ0OiBjaGFuZ2UgZGlyZWN0aW9uIHVzaW5nIGNvbmRpdGlvbmFscyBhbmQgY29udGludWUgYmFjayB0byBzdGFydFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250b3VyLnB1c2goe1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoeCwgeSk7IC8vIGFzc2lnbiB0aGUgbW92ZSBkaXJlY3Rpb24gYWNjb3JkaW5nIHRvIHN0YXRlIG9mIHRoZSBzcXVhcmVcblxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlIC0xOlxuICAgICAgICAgIGNvbnNvbGUud2FybignTWFyY2hlZCBvdXQgb2YgYm91bmRzJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHgrKzsgLy8gZ28gcmlnaHRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTI6XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB4LS07IC8vIGdvIGxlZnRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAvLyBnbyBsZWZ0IGlmIGNvbWUgZnJvbSB1cCBlbHNlIGdvIHJpZ2h0XG4gICAgICAgICAgaWYgKHByZXZYID09PSAwKSB7XG4gICAgICAgICAgICBpZiAocHJldlkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHggLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHggKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5LS07IC8vIGdvIHVwXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgLy8gZ28gdXAgaWYgY29tZSBmcm9tIHJpZ2h0IGVsc2UgZ28gZG93blxuICAgICAgICAgIGlmIChwcmV2WCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHByZXZZID09PSAwKSB7XG4gICAgICAgICAgICAgIHkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeSsrOyAvLyBnbyBkb3duXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihcIk1hcmNoaW5nIHNxdWFyZXMgaW52YWxpZCBzdGF0ZTogXCIgKyBzdGF0ZSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHRoaXMubWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCBwb3RlbnRpYWxBcmVhLndpZHRoICYmICFtYXJjaGVkOyB4ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgcG90ZW50aWFsQXJlYS5oZWlnaHQgJiYgIW1hcmNoZWQ7IHkgKz0gMSkge1xuICAgICAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkICYmIGdldFN0YXRlKHgsIHkpICE9PSAxNSkge1xuICAgICAgICAgIG1hcmNoZWQgPSBkb01hcmNoKHgsIHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmNoZWQ7XG4gIH07XG59XG4vKipcbiAqIFNwYWNlIHBhcnRpdGlvbiAmIGFzc2lnbiB2YWx1ZSB0byBlYWNoIGNlbGxcbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5cbnZhciBpbml0R3JpZENlbGxzID0gZnVuY3Rpb24gaW5pdEdyaWRDZWxscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbEdyb3VwU2l6ZSkge1xuICB2YXIgc2NhbGVXaWR0aCA9IE1hdGguY2VpbCh3aWR0aCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIHNjYWxlSGVpZ2h0ID0gTWF0aC5jZWlsKGhlaWdodCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIGdyaWRDZWxscyA9IG5ldyBGbG9hdDMyQXJyYXkoTWF0aC5tYXgoMCwgc2NhbGVXaWR0aCAqIHNjYWxlSGVpZ2h0KSkuZmlsbCgwKTtcbiAgcmV0dXJuIHtcbiAgICBjZWxsczogZ3JpZENlbGxzLFxuICAgIHdpZHRoOiBzY2FsZVdpZHRoLFxuICAgIGhlaWdodDogc2NhbGVIZWlnaHRcbiAgfTtcbn07XG4vKipcbiAqIEZpbmQgdGhlIG9wdGltYWwgYWxyZWFkeSB2aXNpdGVkIG1lbWJlciB0byBpdGVtO1xuICAgT3B0aW1hbDogbWluaW1pemUgY29zdChqKSA9IGRpc3RhbmNlKGksaikg4oiXIGNvdW50T2JzdGFjbGVzKGksailcbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gdmlzaXRlZFxuICovXG5cblxudmFyIHBpY2tCZXN0TmVpZ2hib3IgPSBmdW5jdGlvbiBwaWNrQmVzdE5laWdoYm9yKGl0ZW0sIHZpc2l0ZWQsIG5vbk1lbWJlcnMpIHtcbiAgdmFyIGNsb3Nlc3ROZWlnaGJvdXIgPSBudWxsO1xuICB2YXIgbWluQ29zdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmlzaXRlZC5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvdXJJdGVtKSB7XG4gICAgdmFyIGl0ZW1QID0ge1xuICAgICAgeDogaXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBpdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIG5laWdoYm91ckl0ZW1QID0ge1xuICAgICAgeDogbmVpZ2hib3VySXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBuZWlnaGJvdXJJdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIGRpc3QgPSBzcXVhcmVEaXN0KGl0ZW1QLCBuZWlnaGJvdXJJdGVtUCk7XG4gICAgdmFyIGRpcmVjdExpbmUgPSBuZXcgTGluZShpdGVtUC54LCBpdGVtUC55LCBuZWlnaGJvdXJJdGVtUC54LCBuZWlnaGJvdXJJdGVtUC55KTtcbiAgICB2YXIgbnVtYmVyT2JzdGFjbGVzID0gbm9uTWVtYmVycy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBfaXRlbSkge1xuICAgICAgaWYgKGZyYWN0aW9uVG9MaW5lKF9pdGVtLCBkaXJlY3RMaW5lKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIGNvdW50ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sIDApO1xuXG4gICAgaWYgKGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKSA8IG1pbkNvc3QpIHtcbiAgICAgIGNsb3Nlc3ROZWlnaGJvdXIgPSBuZWlnaGJvdXJJdGVtO1xuICAgICAgbWluQ29zdCA9IGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvc2VzdE5laWdoYm91cjtcbn07XG4vKipcbiAqIOi/lOWbnuWSjOe6v+ebuOS6pOeahGl0ZW3kuK3vvIznprvovrnnmoTotbfngrnmnIDov5HnmoRpdGVtXG4gKiBAcGFyYW0gaXRlbXNcbiAqIEBwYXJhbSBsaW5lXG4gKi9cblxuXG52YXIgZ2V0SW50ZXJzZWN0SXRlbSA9IGZ1bmN0aW9uIGdldEludGVyc2VjdEl0ZW0oaXRlbXMsIGxpbmUpIHtcbiAgdmFyIG1pbkRpc3RhbmNlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICB2YXIgY2xvc2VzdEl0ZW0gPSBudWxsO1xuICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGRpc3RhbmNlID0gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSk7IC8vIGZpbmQgY2xvc2VzdCBpbnRlcnNlY3Rpb25cblxuICAgIGlmIChkaXN0YW5jZSA+PSAwICYmIGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIGNsb3Nlc3RJdGVtID0gaXRlbTtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsb3Nlc3RJdGVtO1xufTtcbi8qKlxuICogTW9kaWZ5IHRoZSBkaXJlY3RMaW5lIGFuZCBSb3V0ZSB2aXJ0dWFsIGVkZ2VzIGFyb3VuZCBvYnN0YWNsZXNcbiAqL1xuXG5cbnZhciBjb21wdXRlUm91dGUgPSBmdW5jdGlvbiBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKSB7XG4gIHZhciBjaGVja2VkTGluZXMgPSBbXTtcbiAgdmFyIGxpbmVzVG9DaGVjayA9IFtdO1xuICBsaW5lc1RvQ2hlY2sucHVzaChkaXJlY3RMaW5lKTtcbiAgdmFyIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gIHZhciBpdGVyYXRpb25zID0gMDtcblxuICB2YXIgcG9pbnRFeGlzdHMgPSBmdW5jdGlvbiBwb2ludEV4aXN0cyhwb2ludCwgbGluZXMpIHtcbiAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChmbGFnKSByZXR1cm47XG5cbiAgICAgIGlmIChpc1BvaW50c092ZXJsYXAocG9pbnQsIHtcbiAgICAgICAgeDogbGluZS54MSxcbiAgICAgICAgeTogbGluZS55MVxuICAgICAgfSkgfHwgaXNQb2ludHNPdmVybGFwKHBvaW50LCB7XG4gICAgICAgIHg6IGxpbmUueDIsXG4gICAgICAgIHk6IGxpbmUueTJcbiAgICAgIH0pKSB7XG4gICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGFnO1xuICB9O1xuXG4gIHZhciBpc1BvaW50SW5Ob25NZW1iZXJzID0gZnVuY3Rpb24gaXNQb2ludEluTm9uTWVtYmVycyhwb2ludCwgX25vbk1lbWJlcnMpIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9ub25NZW1iZXJzXzEgPSBfbm9uTWVtYmVyczsgX2kgPCBfbm9uTWVtYmVyc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBfbm9uTWVtYmVyc18xW19pXTtcbiAgICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gICAgICB2YXIgaXRlbUNvbnRvdXIgPSBbW2Jib3gueCwgYmJveC55XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueV0sIFtiYm94LngsIGJib3gueSArIGJib3guaGVpZ2h0XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueSArIGJib3guaGVpZ2h0XV07XG5cbiAgICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKGl0ZW1Db250b3VyLCBwb2ludC54LCBwb2ludC55KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07IC8vIG91dGVyIGxvb3AgZW5kIHdoZW4gbm8gbW9yZSBpbnRlcnNlY3Rpb25zIG9yIG91dCBvZiBpdGVyYXRpb25zXG5cblxuICB3aGlsZSAoaGFzSW50ZXJzZWN0aW9uICYmIGl0ZXJhdGlvbnMgPCBtYXhSb3V0aW5nSXRlcmF0aW9ucykge1xuICAgIGhhc0ludGVyc2VjdGlvbiA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgICAgdmFyIGxpbmUgPSBsaW5lc1RvQ2hlY2sucG9wKCk7XG4gICAgICB2YXIgY2xvc2VzdEl0ZW0gPSBnZXRJbnRlcnNlY3RJdGVtKG5vbk1lbWJlcnMsIGxpbmUpO1xuXG4gICAgICBpZiAoY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgdmFyIF9hID0gaXRlbUludGVyc2VjdEJ5TGluZShjbG9zZXN0SXRlbSwgbGluZSksXG4gICAgICAgICAgICBpbnRlcnNlY3Rpb25zXzEgPSBfYVswXSxcbiAgICAgICAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyA9IF9hWzFdOyAvLyBpZiBsaW5lIHBhc3NlcyB0aHJvdWdoIGl0ZW1cblxuXG4gICAgICAgIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDIpIHtcbiAgICAgICAgICB2YXIgdGVzdFJlcm91dGUgPSBmdW5jdGlvbiB0ZXN0UmVyb3V0ZShpc0ZpcnN0KSB7XG4gICAgICAgICAgICB2YXIgdGVtcE1vcnBoQnVmZmVyID0gbW9ycGhCdWZmZXI7XG4gICAgICAgICAgICB2YXIgdmlydHVhbE5vZGUgPSByZXJvdXRlTGluZShjbG9zZXN0SXRlbSwgdGVtcE1vcnBoQnVmZmVyLCBpbnRlcnNlY3Rpb25zXzEsIGlzRmlyc3QpOyAvLyB0ZXN0IHRoZSB2aXJ0dWFsTm9kZSBhbHJlYWR5IGV4aXN0c1xuXG4gICAgICAgICAgICB2YXIgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgIHZhciBwb2ludEluc2lkZSA9IGlzUG9pbnRJbk5vbk1lbWJlcnModmlydHVhbE5vZGUsIG5vbk1lbWJlcnMpO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWV4aXN0ICYmIHBvaW50SW5zaWRlICYmIHRlbXBNb3JwaEJ1ZmZlciA+PSAxKSB7XG4gICAgICAgICAgICAgIC8vIHRyeSBhIHNtYWxsZXIgYnVmZmVyXG4gICAgICAgICAgICAgIHRlbXBNb3JwaEJ1ZmZlciAvPSAxLjU7XG4gICAgICAgICAgICAgIHZpcnR1YWxOb2RlID0gcmVyb3V0ZUxpbmUoY2xvc2VzdEl0ZW0sIHRlbXBNb3JwaEJ1ZmZlciwgaW50ZXJzZWN0aW9uc18xLCBpc0ZpcnN0KTtcbiAgICAgICAgICAgICAgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgICAgcG9pbnRJbnNpZGUgPSBpc1BvaW50SW5Ob25NZW1iZXJzKHZpcnR1YWxOb2RlLCBub25NZW1iZXJzKTtcbiAgICAgICAgICAgIH0gLy8g56ys5LqM5qyhcm91dGXml7bkuI3opoHmsYJwb2ludEluc2lkZVxuXG5cbiAgICAgICAgICAgIGlmICh2aXJ0dWFsTm9kZSAmJiAhZXhpc3QgJiYgKCFpc0ZpcnN0IHx8ICFwb2ludEluc2lkZSkpIHtcbiAgICAgICAgICAgICAgLy8gYWRkIDIgcmVyb3V0ZWQgbGluZXMgdG8gY2hlY2tcbiAgICAgICAgICAgICAgbGluZXNUb0NoZWNrLnB1c2gobmV3IExpbmUobGluZS54MSwgbGluZS55MSwgdmlydHVhbE5vZGUueCwgdmlydHVhbE5vZGUueSkpO1xuICAgICAgICAgICAgICBsaW5lc1RvQ2hlY2sucHVzaChuZXcgTGluZSh2aXJ0dWFsTm9kZS54LCB2aXJ0dWFsTm9kZS55LCBsaW5lLngyLCBsaW5lLnkyKSk7XG4gICAgICAgICAgICAgIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRlc3RSZXJvdXRlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgdmFsaWQgcG9pbnQgYXJvdW5kIHRoZSBmaXJzdCBjb3JuZXIsIHRyeSB0aGUgc2Vjb25kXG4gICAgICAgICAgICB0ZXN0UmVyb3V0ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIG5vIGludGVyc2VjdGlvbiBmb3VuZCwgbWFyayB0aGlzIGxpbmUgYXMgY29tcGxldGVkXG5cblxuICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobGluZSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdGlvbnMgKz0gMTtcbiAgICB9OyAvLyBpbm5lciBsb29wIGVuZCB3aGVuIG91dCBvZiBsaW5lcyBvciBmb3VuZCBhbiBpbnRlcnNlY3Rpb25cblxuXG4gICAgd2hpbGUgKCFoYXNJbnRlcnNlY3Rpb24gJiYgbGluZXNUb0NoZWNrLmxlbmd0aCkge1xuICAgICAgX2xvb3BfMSgpO1xuICAgIH1cbiAgfSAvLyDliqDlhaXliankvZnnmoTnur9cblxuXG4gIHdoaWxlIChsaW5lc1RvQ2hlY2subGVuZ3RoKSB7XG4gICAgY2hlY2tlZExpbmVzLnB1c2gobGluZXNUb0NoZWNrLnBvcCgpKTtcbiAgfVxuXG4gIHJldHVybiBjaGVja2VkTGluZXM7XG59O1xuLyoqXG4gKiAgQ29ubmVjdCBpdGVtIHdpdGggdmlzaXRlZCBtZW1iZXJzIHVzaW5nIGRpcmVjdCBsaW5lIG9yIHZpcnR1YWwgZWRnZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFJvdXRlKGl0ZW0sIG5vbk1lbWJlcnMsIHZpc2l0ZWQsIG1heFJvdXRpbmdJdGVyYXRpb25zLCBtb3JwaEJ1ZmZlcikge1xuICB2YXIgb3B0aW1hbE5laWdoYm9yID0gcGlja0Jlc3ROZWlnaGJvcihpdGVtLCB2aXNpdGVkLCBub25NZW1iZXJzKTtcblxuICBpZiAob3B0aW1hbE5laWdoYm9yID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICBtZXJnZSB0aGUgY29uc2VjdXRpdmUgbGluZXNcblxuXG4gIHZhciBtZXJnZUxpbmVzID0gZnVuY3Rpb24gbWVyZ2VMaW5lcyhjaGVja2VkTGluZXMpIHtcbiAgICB2YXIgZmluYWxSb3V0ZSA9IFtdO1xuXG4gICAgd2hpbGUgKGNoZWNrZWRMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbGluZTEgPSBjaGVja2VkTGluZXMucG9wKCk7XG5cbiAgICAgIGlmIChjaGVja2VkTGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGluZTIgPSBjaGVja2VkTGluZXMucG9wKCk7XG4gICAgICB2YXIgbWVyZ2VMaW5lID0gbmV3IExpbmUobGluZTEueDEsIGxpbmUxLnkxLCBsaW5lMi54MiwgbGluZTIueTIpO1xuICAgICAgdmFyIGNsb3Nlc3RJdGVtID0gZ2V0SW50ZXJzZWN0SXRlbShub25NZW1iZXJzLCBtZXJnZUxpbmUpOyAvLyBtZXJnZSBtb3N0IHJlY2VudCBsaW5lIGFuZCBwcmV2aW91cyBsaW5lXG5cbiAgICAgIGlmICghY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobWVyZ2VMaW5lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGNoZWNrZWRMaW5lcy5wdXNoKGxpbmUyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxSb3V0ZTtcbiAgfTtcblxuICB2YXIgZGlyZWN0TGluZSA9IG5ldyBMaW5lKGl0ZW0uZ2V0TW9kZWwoKS54LCBpdGVtLmdldE1vZGVsKCkueSwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueCwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueSk7XG4gIHZhciBjaGVja2VkTGluZXMgPSBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKTtcbiAgdmFyIGZpbmFsUm91dGUgPSBtZXJnZUxpbmVzKGNoZWNrZWRMaW5lcyk7XG4gIHJldHVybiBmaW5hbFJvdXRlO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvdW50b3IgdGhhdCBpbmNsdWRlcyB0aGUgIHNlbGVjdGVkIGl0ZW1zIGFuZCBleGNsdWVzIHRoZSBub24tc2VsZWN0ZWQgaXRlbXNcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG1lbWJlcnNcbiAqIEBwYXJhbSBub25NZW1iZXJzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5cblxuZXhwb3J0IHZhciBnZW5CdWJibGVTZXQgPSBmdW5jdGlvbiBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgb3BzKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbiAgdmFyIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHMsIG9wcyk7XG4gIHZhciBjZW50cm9pZCA9IGdldFBvaW50c0NlbnRlcihtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSkpOyAvLyDmjInnhafliLDkuK3lv4Pot53nprvov5zov5HmjpLluo9cblxuICBtZW1iZXJzID0gbWVtYmVycy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBhLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKSAtIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYi5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBiLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKTtcbiAgfSk7XG4gIHZhciB2aXNpdGVkID0gW107XG4gIHZhciB2aXJ0dWFsRWRnZXMgPSBbXTtcbiAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGxpbmVzID0gZ2V0Um91dGUoaXRlbSwgbm9uTWVtYmVycywgdmlzaXRlZCwgb3B0aW9ucy5tYXhSb3V0aW5nSXRlcmF0aW9ucywgb3B0aW9ucy5tb3JwaEJ1ZmZlcik7XG4gICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbiAobCkge1xuICAgICAgdmlydHVhbEVkZ2VzLnB1c2gobCk7XG4gICAgfSk7XG4gICAgdmlzaXRlZC5wdXNoKGl0ZW0pO1xuICB9KTsgLy8g55Sx5LqOZWRnZeS5n+WPr+S7peS9nOS4um1lbWJlcuWSjG5vbk1lbWJlcuS8oOWFpe+8jOaaguaXtuS4jeiAg+iZkeaKimVkZ2Vz5L2c5Li65Y+C5pWw5Lyg5YWlZ2VuQnViYmxlU2V0XG4gIC8vIGVkZ2VzICYmIGVkZ2VzLmZvckVhY2goZSA9PiB7XG4gIC8vICAgdmlydHVhbEVkZ2VzLnB1c2gobmV3IExpbmUoZS5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpLngsIGUuZ2V0U291cmNlKCkuZ2V0TW9kZWwoKS55LCBlLmdldFRhcmdldCgpLmdldE1vZGVsKCkueCwgZS5nZXRUYXJnZXQoKS5nZXRNb2RlbCgpLnkpKTtcbiAgLy8gfSk7XG5cbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IGdldEFjdGl2ZVJyZWdpb24obWVtYmVycywgdmlydHVhbEVkZ2VzLCBvcHRpb25zLm5vZGVSMCk7XG4gIHZhciBwb3RlbnRpYWxBcmVhID0gaW5pdEdyaWRDZWxscyhhY3RpdmVSZWdpb24ud2lkdGgsIGFjdGl2ZVJlZ2lvbi5oZWlnaHQsIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpOyAvLyBVc2UgbWFyY2ggc3F1YXJlcyB0byBnZW5lcmF0ZSBjb250b3VyXG5cbiAgdmFyIGNvbnRvdXIgPSBbXTtcbiAgdmFyIGh1bGwgPSBbXTtcblxuICBmb3IgKHZhciBpdGVyYXRpb25zID0gMDsgaXRlcmF0aW9ucyA8IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zOyBpdGVyYXRpb25zKyspIHtcbiAgICBmaWxsUG90ZW50aWFsQXJlYShtZW1iZXJzLCBub25NZW1iZXJzLCB2aXJ0dWFsRWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucyk7XG4gICAgY29udG91ciA9IFtdO1xuICAgIGh1bGwgPSBbXTtcbiAgICBpZiAoIW5ldyBNYXJjaGluZ1NxdWFyZXMoY29udG91ciwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcmNoKCkpIGNvbnRpbnVlO1xuICAgIHZhciBtYXJjaGVkUGF0aCA9IGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogTWF0aC5yb3VuZChwb2ludC54ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5YKSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChwb2ludC55ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5ZKVxuICAgICAgfTtcbiAgICB9KTsgLy8gY29uc3QgbWFyY2hlZFBhdGggPSBtYXJjaGluZ1NxdWFyZXMocG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcChwb2ludCA9PiAoeyB4OiBNYXRoLnJvdW5kKHBvaW50LnggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblgpLCB5OiBNYXRoLnJvdW5kKHBvaW50LnkgKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblkpIH0pKVxuXG4gICAgaWYgKG1hcmNoZWRQYXRoKSB7XG4gICAgICB2YXIgc2l6ZSA9IG1hcmNoZWRQYXRoLmxlbmd0aDtcblxuICAgICAgaWYgKG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgc2l6ZSA9IE1hdGguZmxvb3IobWFyY2hlZFBhdGgubGVuZ3RoIC8gb3B0aW9ucy5za2lwKTsgLy8gaWYgd2UgcmVkdWNlZCB0b28gbXVjaCAoZmV3ZXIgdGhhbiB0aHJlZSBwb2ludHMgaW4gcmVkdWNlZCBzdXJmYWNlKSByZWR1Y2Ugc2tpcCBhbmQgdHJ5IGFnYWluXG5cbiAgICAgICAgd2hpbGUgKHNpemUgPCAzICYmIG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgICBvcHRpb25zLnNraXAgLT0gMTtcbiAgICAgICAgICBzaXplID0gTWF0aC5mbG9vcihtYXJjaGVkUGF0aC5sZW5ndGggLyBvcHRpb25zLnNraXApO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNvcHkgaHVsbCB2YWx1ZXNcblxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGogPCBzaXplOyBqICs9IDEsIGkgKz0gb3B0aW9ucy5za2lwKSB7XG4gICAgICAgIGh1bGwucHVzaCh7XG4gICAgICAgICAgeDogbWFyY2hlZFBhdGhbaV0ueCxcbiAgICAgICAgICB5OiBtYXJjaGVkUGF0aFtpXS55XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpc0NvbnRvdXJWYWxpZCA9IGZ1bmN0aW9uIGlzQ29udG91clZhbGlkKCkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwLCBtZW1iZXJzXzEgPSBtZW1iZXJzOyBfaSA8IG1lbWJlcnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBtZW1iZXJzXzFbX2ldO1xuICAgICAgICB2YXIgaHVsbFBvaW50cyA9IGh1bGwubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgICAgIHJldHVybiBbcG9pbnQueCwgcG9pbnQueV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oaHVsbFBvaW50cywgaXRlbS5nZXRCQm94KCkuY2VudGVyWCwgaXRlbS5nZXRCQm94KCkuY2VudGVyWSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LiN5by65Yi26KaB5rGC5omA5pyJbm9uTWVtYmVyc+mDveayoeacieWMheWQq+WcqOWGhVxuICAgICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIG5vbk1lbWJlcnMpIHtcbiAgICAgIC8vICAgaWYgKGlzUG9pbnRJblBvbHlnb24oeyB4OiBpdGVtLmdldEJCb3goKS5jZW50ZXJYLCB5OiBpdGVtLmdldEJCb3goKS5jZW50ZXJZIH0sIGNvbnRvdXIpKSByZXR1cm4gZmFsc2VcbiAgICAgIC8vIH1cblxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgaWYgKGh1bGwgJiYgaXNDb250b3VyVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIGh1bGw7XG4gICAgfSAvLyB1cGRhdGUgcGFyYW1ldGVycyBmb3IgbmV4dCBpdGVyYWN0aW9uXG5cblxuICAgIG9wdGlvbnMudGhyZXNob2xkICo9IDAuOTtcblxuICAgIGlmIChpdGVyYXRpb25zIDw9IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zICogMC41KSB7XG4gICAgICBvcHRpb25zLm1lbWJlckluZmx1ZW5jZUZhY3RvciAqPSAxLjI7XG4gICAgICBvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IgKj0gMS4yO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgIT09IDAgJiYgbm9uTWVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBhZnRlciBoYWxmIHRoZSBpdGVyYXRpb25zLCBzdGFydCBpbmNyZWFzaW5nIHBvc2l0aXZlIGVuZXJneSBhbmQgbG93ZXJpbmcgdGhlIHRocmVzaG9sZFxuICAgICAgb3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgKj0gMC44O1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaHVsbDtcbn07XG4vKipcbiAqIHVuaW9uYm91bmRpbmdib3hcbiAqIEBwYXJhbSBtZW1iZXJzXG4gKiBAcGFyYW0gZWRnZXNcbiAqL1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVScmVnaW9uKG1lbWJlcnMsIGVkZ2VzLCBvZmZzZXQpIHtcbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IHtcbiAgICBtaW5YOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgbWluWTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIG1heFg6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxcbiAgICBtYXhZOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICB2YXIgYmJveGVzID0gW107XG4gIG1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGJib3hlcy5wdXNoKGl0ZW0uZ2V0QkJveCgpKTtcbiAgfSk7XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICBiYm94ZXMucHVzaChsLmdldEJCb3goKSk7XG4gIH0pO1xuXG4gIGZvciAodmFyIF9pID0gMCwgYmJveGVzXzEgPSBiYm94ZXM7IF9pIDwgYmJveGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGJib3ggPSBiYm94ZXNfMVtfaV07XG4gICAgYWN0aXZlUmVnaW9uLm1pblggPSAoYmJveC5taW5YIDwgYWN0aXZlUmVnaW9uLm1pblggPyBiYm94Lm1pblggOiBhY3RpdmVSZWdpb24ubWluWCkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1pblkgPSAoYmJveC5taW5ZIDwgYWN0aXZlUmVnaW9uLm1pblkgPyBiYm94Lm1pblkgOiBhY3RpdmVSZWdpb24ubWluWSkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFggPSAoYmJveC5tYXhYID4gYWN0aXZlUmVnaW9uLm1heFggPyBiYm94Lm1heFggOiBhY3RpdmVSZWdpb24ubWF4WCkgKyBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFkgPSAoYmJveC5tYXhZID4gYWN0aXZlUmVnaW9uLm1heFkgPyBiYm94Lm1heFkgOiBhY3RpdmVSZWdpb24ubWF4WSkgKyBvZmZzZXQ7XG4gIH1cblxuICBhY3RpdmVSZWdpb24ud2lkdGggPSBhY3RpdmVSZWdpb24ubWF4WCAtIGFjdGl2ZVJlZ2lvbi5taW5YO1xuICBhY3RpdmVSZWdpb24uaGVpZ2h0ID0gYWN0aXZlUmVnaW9uLm1heFkgLSBhY3RpdmVSZWdpb24ubWluWTtcbiAgYWN0aXZlUmVnaW9uLnggPSBhY3RpdmVSZWdpb24ubWluWDtcbiAgYWN0aXZlUmVnaW9uLnkgPSBhY3RpdmVSZWdpb24ubWluWTtcbiAgcmV0dXJuIGFjdGl2ZVJlZ2lvbjtcbn1cblxuZnVuY3Rpb24gZmlsbFBvdGVudGlhbEFyZWEobWVtYmVycywgbm9uTWVtYmVycywgZWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucykge1xuICBmdW5jdGlvbiBwb3MyR3JpZEl4KHgsIG9mZnNldCkge1xuICAgIHZhciBncmlkSXggPSBNYXRoLmZsb29yKCh4IC0gb2Zmc2V0KSAvIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpO1xuICAgIHJldHVybiBncmlkSXggPCAwID8gMCA6IGdyaWRJeDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdyaWRJeDJQb3MoeCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIHggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgb2Zmc2V0O1xuICB9IC8vIHVzaW5nIGludmVyc2UgYSBmb3IgbnVtZXJpY2FsIHN0YWJpbGl0eVxuXG5cbiAgdmFyIG5vZGVJbmZBID0gKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpICogKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpO1xuICB2YXIgZWRnZUluZkEgPSAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSkgKiAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSk7XG5cbiAgdmFyIGdldEFmZmVjdGVkUmVnaW9uID0gZnVuY3Rpb24gZ2V0QWZmZWN0ZWRSZWdpb24oYmJveCwgdGhyZXNob2xkUikge1xuICAgIHZhciBzdGFydFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWluWCwgdGhyZXNob2xkUiArIGFjdGl2ZVJlZ2lvbi5taW5YKSwgcG90ZW50aWFsQXJlYS53aWR0aCk7XG4gICAgdmFyIHN0YXJ0WSA9IE1hdGgubWluKHBvczJHcmlkSXgoYmJveC5taW5ZLCB0aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgdmFyIGVuZFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWF4WCwgLXRocmVzaG9sZFIgKyBhY3RpdmVSZWdpb24ubWluWCksIHBvdGVudGlhbEFyZWEud2lkdGgpO1xuICAgIHZhciBlbmRZID0gTWF0aC5taW4ocG9zMkdyaWRJeChiYm94Lm1heFksIC10aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgcmV0dXJuIFtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWV07XG4gIH07XG5cbiAgdmFyIGFkZEl0ZW1JbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLm5vZGVSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGNhbGN1bGF0ZSBpdGVtIGluZmx1ZW5jZSBmb3IgZWFjaCBjZWxsXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYVt4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlU3EgPSBwb2ludFJlY3RTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgICB3aWR0aDogYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGJib3guaGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkaXN0YW5jZVNxIDwgTWF0aC5wb3cob3B0aW9ucy5ub2RlUjEsIDIpKSB7XG4gICAgICAgICAgdmFyIGRyID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3EpIC0gb3B0aW9ucy5ub2RlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIGRyICogZHI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkZEVkZ2VJbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRFZGdlSW5mbHVlbmNlKGxpbmUsIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gbGluZS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLmVkZ2VSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGZvciBldmVyeSBwb2ludCBpbiBhY3RpdmUgcGFydCBvZiBwb3RlbnRpYWxBcmVhLCBjYWxjdWxhdGUgZGlzdGFuY2UgdG8gbmVhcmVzdCBwb2ludCBvbiBsaW5lIGFuZCBhZGQgaW5mbHVlbmNlXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIG1pbkRpc3RhbmNlU3EgPSBwb2ludExpbmVTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCBsaW5lKTsgLy8gb25seSBpbmZsdWVuY2UgaWYgbGVzcyB0aGFuIHIxXG5cbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlU3EgPCBNYXRoLnBvdyhvcHRpb25zLmVkZ2VSMSwgMikpIHtcbiAgICAgICAgICB2YXIgbWRyID0gTWF0aC5zcXJ0KG1pbkRpc3RhbmNlU3EpIC0gb3B0aW9ucy5lZGdlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIG1kciAqIG1kcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBpZiAob3B0aW9ucy5ub2RlSW5mbHVlbmNlRmFjdG9yKSB7XG4gICAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIG9wdGlvbnMubm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IpIHtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBhZGRFZGdlSW5mbHVlbmNlKGVkZ2UsIG9wdGlvbnMuZWRnZUluZmx1ZW5jZUZhY3RvciAvIGVkZ2VJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3Rvcikge1xuICAgIG5vbk1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgYWRkSXRlbUluZmx1ZW5jZShpdGVtLCBvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXJvdXRlTGluZShpdGVtLCBidWZmZXIsIGludGVyc2VjdGlvbnMsIHdyYXBOb3JtYWwpIHtcbiAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgdmFyIHRvcEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMF0sXG4gICAgICBsZWZ0SW50ZXJzZWN0ID0gaW50ZXJzZWN0aW9uc1sxXSxcbiAgICAgIGJvdHRvbUludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMl0sXG4gICAgICByaWdodEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbM107XG4gIHZhciBjb3JuZXJQb3MgPSB7XG4gICAgdG9wTGVmdDoge1xuICAgICAgeDogYmJveC5taW5YIC0gYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICB0b3BSaWdodDoge1xuICAgICAgeDogYmJveC5tYXhYICsgYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICBib3R0b21MZWZ0OiB7XG4gICAgICB4OiBiYm94Lm1pblggLSBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9LFxuICAgIGJvdHRvbVJpZ2h0OiB7XG4gICAgICB4OiBiYm94Lm1heFggKyBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9XG4gIH07XG4gIHZhciB0b3RhbEFyZWEgPSBiYm94LmhlaWdodCAqIGJib3gud2lkdGg7XG5cbiAgZnVuY3Rpb24gY2FsY0hhbGZBcmVhKGludGVyc2VjdDEsIGludGVyc2VjdDIpIHtcbiAgICByZXR1cm4gYmJveC53aWR0aCAqICgoaW50ZXJzZWN0MS55IC0gYmJveC5taW5ZICsgKGludGVyc2VjdDIueSAtIGJib3gubWluWSkpICogMC41KTtcbiAgfSAvLyDmoLnmja7nur/lkoxib3VuZGluZ2JveOebuOS6pOeahOaDheWGte+8jOehruWummNvbnRyb2wgcG9pbnTnmoTkvY3nva5cblxuXG4gIGlmIChsZWZ0SW50ZXJzZWN0KSB7XG4gICAgLy8g55u45Lqk5Yy65Z+f5pyJ5LiJ6KeS5b2iXG4gICAgaWYgKHRvcEludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICBpZiAoYm90dG9tSW50ZXJzZWN0KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21MZWZ0IDogY29ybmVyUG9zLnRvcFJpZ2h0OyAvLyDnm7jkuqTljLrln5/liIbmiJDkuIrkuIvkuKTkuKrmoq/lvaLvvIzmr5TovoPpnaLnp69cblxuICAgIHZhciB0b3BBcmVhID0gY2FsY0hhbGZBcmVhKGxlZnRJbnRlcnNlY3QsIHJpZ2h0SW50ZXJzZWN0KTtcblxuICAgIGlmICh0b3BBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgICBpZiAobGVmdEludGVyc2VjdC55ID4gcmlnaHRJbnRlcnNlY3QueSkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICAgIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRJbnRlcnNlY3QueSA8IHJpZ2h0SW50ZXJzZWN0LnkpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLmJvdHRvbUxlZnQgOiBjb3JuZXJQb3MudG9wUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfVxuXG4gIGlmIChyaWdodEludGVyc2VjdCkge1xuICAgIGlmICh0b3BJbnRlcnNlY3QpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgaWYgKGJvdHRvbUludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfSAvLyDnm7jkuqTljLrln5/liIbmiJDlt6blj7PkuKTkuKrmoq/lvaJcblxuXG4gIHZhciBsZWZ0QXJlYSA9IGNhbGNIYWxmQXJlYSh0b3BJbnRlcnNlY3QsIGJvdHRvbUludGVyc2VjdCk7XG5cbiAgaWYgKGxlZnRBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgaWYgKHRvcEludGVyc2VjdC54ID4gYm90dG9tSW50ZXJzZWN0LngpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcExlZnQgOiBjb3JuZXJQb3MuYm90dG9tUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tTGVmdCA6IGNvcm5lclBvcy50b3BSaWdodDtcbiAgfVxuXG4gIGlmICh0b3BJbnRlcnNlY3QueCA8IGJvdHRvbUludGVyc2VjdC54KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy50b3BSaWdodCA6IGNvcm5lclBvcy5ib3R0b21MZWZ0O1xuICByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21SaWdodCA6IGNvcm5lclBvcy50b3BMZWZ0O1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js ***! \***************************************************************************************/ /*! exports provided: cross, genConvexHull */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genConvexHull\", function() { return genConvexHull; });\n/**\n * Use cross product to judge the direction of the turn.\n * Returns a positive value, if OAB makes a clockwise turn,\n * negative for counter-clockwise turn, and zero if the points are collinear.\n */\nvar cross = function cross(a, b, o) {\n return (a.y - o.y) * (b.x - o.x) - (a.x - o.x) * (b.y - o.y);\n};\n/**\n * Generate a convex hull of given points. Andrew's monotone chain algorithm.\n * @param points An array of [x, y] representing the coordinates of points.\n * @return a list of vertices of the convex hull in counter-clockwise order,\n */\n\nvar genConvexHull = function genConvexHull(items) {\n var points = items.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n });\n points.sort(function (a, b) {\n return a.x === b.x ? a.y - b.y : a.x - b.x;\n });\n\n if (points.length === 1) {\n return points;\n } // build the lower hull\n\n\n var lower = [];\n\n for (var i = 0; i < points.length; i++) {\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n lower.pop();\n }\n\n lower.push(points[i]);\n } // build the upper hull\n\n\n var upper = [];\n\n for (var i = points.length - 1; i >= 0; i--) {\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {\n upper.pop();\n }\n\n upper.push(points[i]);\n }\n\n upper.pop();\n lower.pop();\n var strictHull = lower.concat(upper);\n return strictHull;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvY29udmV4SHVsbC5qcz9jY2E1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUEsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9odWxsL2NvbnZleEh1bGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBjcm9zcyBwcm9kdWN0IHRvIGp1ZGdlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHR1cm4uXG4gKiBSZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUsIGlmIE9BQiBtYWtlcyBhIGNsb2Nrd2lzZSB0dXJuLFxuICogbmVnYXRpdmUgZm9yIGNvdW50ZXItY2xvY2t3aXNlIHR1cm4sIGFuZCB6ZXJvIGlmIHRoZSBwb2ludHMgYXJlIGNvbGxpbmVhci5cbiAqL1xuZXhwb3J0IHZhciBjcm9zcyA9IGZ1bmN0aW9uIGNyb3NzKGEsIGIsIG8pIHtcbiAgcmV0dXJuIChhLnkgLSBvLnkpICogKGIueCAtIG8ueCkgLSAoYS54IC0gby54KSAqIChiLnkgLSBvLnkpO1xufTtcbi8qKlxuICogR2VuZXJhdGUgYSBjb252ZXggaHVsbCBvZiBnaXZlbiBwb2ludHMuIEFuZHJldydzIG1vbm90b25lIGNoYWluIGFsZ29yaXRobS5cbiAqIEBwYXJhbSBwb2ludHMgQW4gYXJyYXkgb2YgW3gsIHldIHJlcHJlc2VudGluZyB0aGUgY29vcmRpbmF0ZXMgb2YgcG9pbnRzLlxuICogQHJldHVybiBhIGxpc3Qgb2YgdmVydGljZXMgb2YgdGhlIGNvbnZleCBodWxsIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLFxuICovXG5cbmV4cG9ydCB2YXIgZ2VuQ29udmV4SHVsbCA9IGZ1bmN0aW9uIGdlbkNvbnZleEh1bGwoaXRlbXMpIHtcbiAgdmFyIHBvaW50cyA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSk7XG4gIHBvaW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEueCA9PT0gYi54ID8gYS55IC0gYi55IDogYS54IC0gYi54O1xuICB9KTtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8gYnVpbGQgdGhlIGxvd2VyIGh1bGxcblxuXG4gIHZhciBsb3dlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgd2hpbGUgKGxvd2VyLmxlbmd0aCA+PSAyICYmIGNyb3NzKGxvd2VyW2xvd2VyLmxlbmd0aCAtIDJdLCBsb3dlcltsb3dlci5sZW5ndGggLSAxXSwgcG9pbnRzW2ldKSA8PSAwKSB7XG4gICAgICBsb3dlci5wb3AoKTtcbiAgICB9XG5cbiAgICBsb3dlci5wdXNoKHBvaW50c1tpXSk7XG4gIH0gLy8gYnVpbGQgdGhlIHVwcGVyIGh1bGxcblxuXG4gIHZhciB1cHBlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB3aGlsZSAodXBwZXIubGVuZ3RoID49IDIgJiYgY3Jvc3ModXBwZXJbdXBwZXIubGVuZ3RoIC0gMl0sIHVwcGVyW3VwcGVyLmxlbmd0aCAtIDFdLCBwb2ludHNbaV0pIDw9IDApIHtcbiAgICAgIHVwcGVyLnBvcCgpO1xuICAgIH1cblxuICAgIHVwcGVyLnB1c2gocG9pbnRzW2ldKTtcbiAgfVxuXG4gIHVwcGVyLnBvcCgpO1xuICBsb3dlci5wb3AoKTtcbiAgdmFyIHN0cmljdEh1bGwgPSBsb3dlci5jb25jYXQodXBwZXIpO1xuICByZXR1cm4gc3RyaWN0SHVsbDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js ***! \*****************************************************************************/ /*! exports provided: Arrow, Marker, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edge */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js\");\n/* harmony import */ var _combo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./combo */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js\");\n/* harmony import */ var _combos__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./combos */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nodes */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./arrow */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _arrow__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./marker */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_shape__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzP2I2NDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDWjtBQUNBO0FBQ0M7QUFDQztBQUNEO0FBQzBCO0FBQ0U7QUFDOUIsNkdBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0ICcuL25vZGUnO1xuaW1wb3J0ICcuL2VkZ2UnO1xuaW1wb3J0ICcuL2NvbWJvJztcbmltcG9ydCAnLi9jb21ib3MnO1xuaW1wb3J0ICcuL25vZGVzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXJyb3cgfSBmcm9tICcuL2Fycm93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n collapse: function collapse(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x + r - 4, y]];\n },\n expand: function expand(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x - r + 2 * r - 4, y], ['M', x - r + r, y - r + 4], ['L', x, y + r - 4]];\n },\n upTriangle: function upTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y + l2], ['L', x + l1, y + l2], ['L', x, y - r], ['Z']];\n },\n downTriangle: function downTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y - l2], ['L', x + l1, y - l2], ['L', x, y + r], ['Z']];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcz83NGFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgY29sbGFwc2U6IGZ1bmN0aW9uIGNvbGxhcHNlKHgsIHksIHIpIHtcbiAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydhJywgciwgciwgMCwgMSwgMCwgciAqIDIsIDBdLCBbJ2EnLCByLCByLCAwLCAxLCAwLCAtciAqIDIsIDBdLCBbJ00nLCB4IC0gciArIDQsIHldLCBbJ0wnLCB4ICsgciAtIDQsIHldXTtcbiAgfSxcbiAgZXhwYW5kOiBmdW5jdGlvbiBleHBhbmQoeCwgeSwgcikge1xuICAgIHJldHVybiBbWydNJywgeCAtIHIsIHldLCBbJ2EnLCByLCByLCAwLCAxLCAwLCByICogMiwgMF0sIFsnYScsIHIsIHIsIDAsIDEsIDAsIC1yICogMiwgMF0sIFsnTScsIHggLSByICsgNCwgeV0sIFsnTCcsIHggLSByICsgMiAqIHIgLSA0LCB5XSwgWydNJywgeCAtIHIgKyByLCB5IC0gciArIDRdLCBbJ0wnLCB4LCB5ICsgciAtIDRdXTtcbiAgfSxcbiAgdXBUcmlhbmdsZTogZnVuY3Rpb24gdXBUcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5ICsgbDJdLCBbJ0wnLCB4ICsgbDEsIHkgKyBsMl0sIFsnTCcsIHgsIHkgLSByXSwgWydaJ11dO1xuICB9LFxuICBkb3duVHJpYW5nbGU6IGZ1bmN0aW9uIGRvd25UcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5IC0gbDJdLCBbJ0wnLCB4ICsgbDEsIHkgLSBsMl0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js ***! \****************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\n\nvar singleNode = {\n itemType: 'node',\n // 单个图形的类型\n shapeType: 'single-node',\n\n /**\n * 文本相对图形的位置,默认以中心点\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n offset: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].nodeLabel.offset,\n\n /**\n * 获取节点宽高\n * @internal 返回节点的大小,以 [width, height] 的方式维护\n * @param {Object} cfg 节点的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var _a;\n\n var size = ((_a = this.mergeStyle) === null || _a === void 0 ? void 0 : _a.size) || cfg.size || this.getOptions({}).size || _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].defaultNode.size; // Global.defaultNode.size; // \n // size 是数组,但长度为1,则补长度为2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的节点复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition; // 默认的位置(最可能的情形),所以放在最上面\n\n if (labelPosition === 'center') {\n return {\n x: 0,\n y: 0,\n text: cfg.label\n };\n }\n\n var offset = labelCfg.offset;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(offset)) {\n // 考虑 offset = 0 的场景,不用用 labelCfg.offset || Global.nodeLabel.offset\n offset = this.offset; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -size[1] / 2 - offset,\n textBaseline: 'bottom' // 文本在图形的上面\n\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: size[1] / 2 + offset,\n textBaseline: 'top'\n };\n break;\n\n case 'left':\n style = {\n x: -size[0] / 2 - offset,\n y: 0,\n textAlign: 'right'\n };\n break;\n\n default:\n style = {\n x: size[0] / 2 + offset,\n y: 0,\n textAlign: 'left'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, cfg, labelCfg, group) {\n var _a;\n\n if (!label) return {};\n var backgroundStyle = (_a = labelCfg.style) === null || _a === void 0 ? void 0 : _a.background;\n if (!backgroundStyle) return {};\n var bbox = label.getBBox();\n var padding = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(backgroundStyle.padding);\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0]\n }, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight\n });\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'node-shape'\n });\n group['shapeMap']['node-shape'] = shape;\n return shape;\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints;\n\n if (markLeft) {\n currentLinkPoints = markLeft.attr();\n }\n\n if (markRight && !currentLinkPoints) {\n currentLinkPoints = markRight.attr();\n }\n\n if (markTop && !currentLinkPoints) {\n currentLinkPoints = markTop.attr();\n }\n\n if (markBottom && !currentLinkPoints) {\n currentLinkPoints = markBottom.attr();\n }\n\n if (!currentLinkPoints) currentLinkPoints = defaultLinkPoints;\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n bottom = _a.bottom;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }));\n }\n } else if (left) {\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n }\n\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }));\n } else if (right) {\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n }\n\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }));\n } else if (top) {\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }));\n }\n } else if (bottom) {\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) {\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n\n if (!undefined || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('label'))) {\n this.updateLabel(cfg, item, updateType);\n }\n\n if (hasIcon) {\n this.updateIcon(cfg, item);\n }\n },\n updateIcon: function updateIcon(cfg, item) {\n var _this = this;\n\n var group = item.getContainer();\n var icon = (this.mergeStyle || this.getOptions(cfg)).icon;\n var show = (cfg.icon ? cfg.icon : {\n show: undefined\n }).show;\n var iconShape = group['shapeMap'][this.type + \"-icon\"] || group.find(function (ele) {\n return ele.get('name') === _this.type + \"-icon\";\n });\n\n if (iconShape) {\n // 若原先存在 icon\n if (show || show === undefined) {\n // 若传入 show: true, 或没有设置,则更新原有的 icon 样式\n var iconConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, iconShape.attr(), icon);\n var _a = iconConfig.width,\n w = _a === void 0 ? 20 : _a,\n _b = iconConfig.height,\n h = _b === void 0 ? 20 : _b;\n iconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconConfig), {\n x: -w / 2,\n y: -h / 2\n }));\n } else {\n // 若传入了 show: false 则删除原先的 icon\n iconShape.remove();\n }\n } else if (show) {\n // 如果原先不存在 icon,但传入了 show: true,则新增 icon\n var w = icon.width,\n h = icon.height;\n var name_5 = this.type + \"-icon\";\n group['shapeMap'][name_5] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, icon), {\n x: -w / 2,\n y: -h / 2\n }),\n className: name_5,\n name: name_5\n }); // to ensure the label is on the top of all the shapes\n\n var labelShape = group['shapeMap']['node-label'] || group.find(function (ele) {\n return ele.get('name') === 'node-label';\n });\n\n if (labelShape) {\n labelShape.toFront();\n }\n }\n }\n};\n\nvar singleNodeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_5__[\"shapeBase\"]), singleNode);\n\n_shape__WEBPACK_IMPORTED_MODULE_4__[\"default\"].registerNode('single-node', singleNodeDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGUuanM/ODFkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNnQjtBQUNKO0FBQ2Q7QUFDSDtBQUNZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxVQUFVLCtDQUFNOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQSxzSEFBc0gsVUFBVSwrQ0FBTSxrQkFBa0IsNEJBQTRCO0FBQ3BMOztBQUVBLFFBQVEsMERBQU87QUFDZjtBQUNBLEtBQUs7OztBQUdMLFNBQVMsMERBQU87QUFDaEI7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLHdEQUFLO0FBQ2I7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnRUFBYTtBQUMvQjtBQUNBO0FBQ0EsV0FBVyxzREFBUSxDQUFDLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNCQUFzQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDMUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3pDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdkM7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHdCQUF3QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDNUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxHQUFHOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQUcsR0FBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxvREFBUzs7QUFFbkQsOENBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOaWwsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZm9ybWF0UGFkZGluZyB9IGZyb20gJy4uL3V0aWwvYmFzZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBzaGFwZUJhc2UgfSBmcm9tICcuL3NoYXBlQmFzZSc7XG52YXIgc2luZ2xlTm9kZSA9IHtcbiAgaXRlbVR5cGU6ICdub2RlJyxcbiAgLy8g5Y2V5Liq5Zu+5b2i55qE57G75Z6LXG4gIHNoYXBlVHlwZTogJ3NpbmdsZS1ub2RlJyxcblxuICAvKipcbiAgICog5paH5pys55u45a+55Zu+5b2i55qE5L2N572u77yM6buY6K6k5Lul5Lit5b+D54K5XG4gICAqIOS9jee9ruWMheaLrO+8miB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQsIGNlbnRlclxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgbGFiZWxQb3NpdGlvbjogJ2NlbnRlcicsXG5cbiAgLyoqXG4gICAqIOaWh+acrOebuOWvueWBj+enu++8jOW9kyBsYWJlbFBvc2l0aW9uIOS4jeS4uiBjZW50ZXIg5pe25pyJ5pWIXG4gICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAqL1xuICBvZmZzZXQ6IEdsb2JhbC5ub2RlTGFiZWwub2Zmc2V0LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnlrr3pq5hcbiAgICogQGludGVybmFsIOi/lOWbnuiKgueCueeahOWkp+Wwj++8jOS7pSBbd2lkdGgsIGhlaWdodF0g55qE5pa55byP57u05oqkXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheX0g5a696auYXG4gICAqL1xuICBnZXRTaXplOiBmdW5jdGlvbiBnZXRTaXplKGNmZykge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBzaXplID0gKChfYSA9IHRoaXMubWVyZ2VTdHlsZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNpemUpIHx8IGNmZy5zaXplIHx8IHRoaXMuZ2V0T3B0aW9ucyh7fSkuc2l6ZSB8fCBHbG9iYWwuZGVmYXVsdE5vZGUuc2l6ZTsgLy8gR2xvYmFsLmRlZmF1bHROb2RlLnNpemU7IC8vICBcbiAgICAvLyBzaXplIOaYr+aVsOe7hO+8jOS9humVv+W6puS4ujHvvIzliJnooaXplb/luqbkuLoyXG5cbiAgICBpZiAoaXNBcnJheShzaXplKSAmJiBzaXplLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2l6ZSA9IFtzaXplWzBdLCBzaXplWzBdXTtcbiAgICB9IC8vIHNpemUg5Li65pWw5a2X77yM5YiZ6L2s5o2i5Li65pWw57uEXG5cblxuICAgIGlmICghaXNBcnJheShzaXplKSkge1xuICAgICAgc2l6ZSA9IFtzaXplLCBzaXplXTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2l6ZTtcbiAgfSxcbiAgLy8g56eB5pyJ5pa55rOV77yM5LiN5biM5pyb5omp5bGV55qE6IqC54K55aSN5YaZ6L+Z5Liq5pa55rOVXG4gIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbFN0eWxlQnlQb3NpdGlvbihjZmcsIGxhYmVsQ2ZnKSB7XG4gICAgdmFyIGxhYmVsUG9zaXRpb24gPSBsYWJlbENmZy5wb3NpdGlvbiB8fCB0aGlzLmxhYmVsUG9zaXRpb247IC8vIOm7mOiupOeahOS9jee9ru+8iOacgOWPr+iDveeahOaDheW9ou+8ie+8jOaJgOS7peaUvuWcqOacgOS4iumdolxuXG4gICAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICB0ZXh0OiBjZmcubGFiZWxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIG9mZnNldCA9IGxhYmVsQ2ZnLm9mZnNldDtcblxuICAgIGlmIChpc05pbChvZmZzZXQpKSB7XG4gICAgICAvLyDogIPomZEgb2Zmc2V0ID0gMCDnmoTlnLrmma/vvIzkuI3nlKjnlKggbGFiZWxDZmcub2Zmc2V0IHx8IEdsb2JhbC5ub2RlTGFiZWwub2Zmc2V0XG4gICAgICBvZmZzZXQgPSB0aGlzLm9mZnNldDsgLy8g5LiN5bGF5Lit5pe255qE5YGP56e76YePXG4gICAgfVxuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgc3R5bGU7XG5cbiAgICBzd2l0Y2ggKGxhYmVsUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLXNpemVbMV0gLyAyIC0gb2Zmc2V0LFxuICAgICAgICAgIHRleHRCYXNlbGluZTogJ2JvdHRvbScgLy8g5paH5pys5Zyo5Zu+5b2i55qE5LiK6Z2iXG5cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogc2l6ZVsxXSAvIDIgKyBvZmZzZXQsXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IC1zaXplWzBdIC8gMiAtIG9mZnNldCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogc2l6ZVswXSAvIDIgKyBvZmZzZXQsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzdHlsZS50ZXh0ID0gY2ZnLmxhYmVsO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoIWxhYmVsKSByZXR1cm4ge307XG4gICAgdmFyIGJhY2tncm91bmRTdHlsZSA9IChfYSA9IGxhYmVsQ2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYmFja2dyb3VuZDtcbiAgICBpZiAoIWJhY2tncm91bmRTdHlsZSkgcmV0dXJuIHt9O1xuICAgIHZhciBiYm94ID0gbGFiZWwuZ2V0QkJveCgpO1xuICAgIHZhciBwYWRkaW5nID0gZm9ybWF0UGFkZGluZyhiYWNrZ3JvdW5kU3R5bGUucGFkZGluZyk7XG4gICAgdmFyIGJhY2tncm91bmRXaWR0aCA9IGJib3gud2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICB2YXIgYmFja2dyb3VuZEhlaWdodCA9IGJib3guaGVpZ2h0ICsgcGFkZGluZ1swXSArIHBhZGRpbmdbMl07XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHtcbiAgICAgIHg6IGJib3gubWluWCAtIHBhZGRpbmdbM10sXG4gICAgICB5OiBiYm94Lm1pblkgLSBwYWRkaW5nWzBdXG4gICAgfSwgYmFja2dyb3VuZFN0eWxlKSwge1xuICAgICAgd2lkdGg6IGJhY2tncm91bmRXaWR0aCxcbiAgICAgIGhlaWdodDogYmFja2dyb3VuZEhlaWdodFxuICAgIH0pO1xuICB9LFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlVHlwZSA9IHRoaXMuc2hhcGVUeXBlOyAvLyB8fCB0aGlzLnR5cGXvvIzpg73lt7Lnu4/liqDkuoYgc2hhcGVUeXBlXG5cbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgc2hhcGUgPSBncm91cC5hZGRTaGFwZShzaGFwZVR5cGUsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIG5hbWU6ICdub2RlLXNoYXBlJ1xuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWydub2RlLXNoYXBlJ10gPSBzaGFwZTtcbiAgICByZXR1cm4gc2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExpbmtQb2ludHMgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5saW5rUG9pbnRzO1xuICAgIHZhciBtYXJrTGVmdCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1JpZ2h0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtUb3AgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC10b3AnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrQm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHM7XG5cbiAgICBpZiAobWFya0xlZnQpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gbWFya0xlZnQuYXR0cigpO1xuICAgIH1cblxuICAgIGlmIChtYXJrUmlnaHQgJiYgIWN1cnJlbnRMaW5rUG9pbnRzKSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IG1hcmtSaWdodC5hdHRyKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtUb3AgJiYgIWN1cnJlbnRMaW5rUG9pbnRzKSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IG1hcmtUb3AuYXR0cigpO1xuICAgIH1cblxuICAgIGlmIChtYXJrQm90dG9tICYmICFjdXJyZW50TGlua1BvaW50cykge1xuICAgICAgY3VycmVudExpbmtQb2ludHMgPSBtYXJrQm90dG9tLmF0dHIoKTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRMaW5rUG9pbnRzKSBjdXJyZW50TGlua1BvaW50cyA9IGRlZmF1bHRMaW5rUG9pbnRzO1xuICAgIHZhciBsaW5rUG9pbnRzID0gbWl4KHt9LCBjdXJyZW50TGlua1BvaW50cywgY2ZnLmxpbmtQb2ludHMpO1xuICAgIHZhciBtYXJrRmlsbCA9IGxpbmtQb2ludHMuZmlsbCxcbiAgICAgICAgbWFya1N0cm9rZSA9IGxpbmtQb2ludHMuc3Ryb2tlLFxuICAgICAgICBib3JkZXJXaWR0aCA9IGxpbmtQb2ludHMubGluZVdpZHRoO1xuICAgIHZhciBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSAvIDI7XG4gICAgaWYgKCFtYXJrU2l6ZSkgbWFya1NpemUgPSBsaW5rUG9pbnRzLnI7XG5cbiAgICB2YXIgX2EgPSBjZmcubGlua1BvaW50cyA/IGNmZy5saW5rUG9pbnRzIDoge1xuICAgICAgbGVmdDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHRvcDogdW5kZWZpbmVkLFxuICAgICAgYm90dG9tOiB1bmRlZmluZWRcbiAgICB9LFxuICAgICAgICBsZWZ0ID0gX2EubGVmdCxcbiAgICAgICAgcmlnaHQgPSBfYS5yaWdodCxcbiAgICAgICAgdG9wID0gX2EudG9wLFxuICAgICAgICBib3R0b20gPSBfYS5ib3R0b207XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG4gICAgdmFyIHN0eWxlcyA9IHtcbiAgICAgIHI6IG1hcmtTaXplLFxuICAgICAgZmlsbDogbWFya0ZpbGwsXG4gICAgICBzdHJva2U6IG1hcmtTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IGJvcmRlcldpZHRoXG4gICAgfTtcblxuICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgaWYgKCFsZWZ0ICYmIGxlZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXJrTGVmdC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtMZWZ0LmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVmdCkge1xuICAgICAgdmFyIG5hbWVfMSA9ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV8xXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzEsXG4gICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtSaWdodCkge1xuICAgICAgaWYgKCFyaWdodCAmJiByaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J107XG4gICAgICB9XG5cbiAgICAgIG1hcmtSaWdodC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgeTogMFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgIHZhciBuYW1lXzIgPSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzJdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV8yLFxuICAgICAgICBuYW1lOiBuYW1lXzIsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXJrVG9wKSB7XG4gICAgICBpZiAoIXRvcCAmJiB0b3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXJrVG9wLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ107XG4gICAgICB9XG5cbiAgICAgIG1hcmtUb3AuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAodG9wKSB7XG4gICAgICB2YXIgbmFtZV8zID0gJ2xpbmstcG9pbnQtdG9wJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfM10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMyxcbiAgICAgICAgbmFtZTogbmFtZV8zLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobWFya0JvdHRvbSkge1xuICAgICAgaWYgKCFib3R0b20gJiYgYm90dG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0JvdHRvbS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya0JvdHRvbS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGJvdHRvbSkge1xuICAgICAgdmFyIG5hbWVfNCA9ICdsaW5rLXBvaW50LWJvdHRvbSc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzRdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfNCxcbiAgICAgICAgbmFtZTogbmFtZV80LFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZVNoYXBlOiBmdW5jdGlvbiB1cGRhdGVTaGFwZShjZmcsIGl0ZW0sIGtleVNoYXBlU3R5bGUsIGhhc0ljb24sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG5cbiAgICBpZiAoIXVuZGVmaW5lZCB8fCAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdsYWJlbCcpKSkge1xuICAgICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpO1xuICAgIH1cblxuICAgIGlmIChoYXNJY29uKSB7XG4gICAgICB0aGlzLnVwZGF0ZUljb24oY2ZnLCBpdGVtKTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZUljb246IGZ1bmN0aW9uIHVwZGF0ZUljb24oY2ZnLCBpdGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7XG4gICAgdmFyIGljb24gPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5pY29uO1xuICAgIHZhciBzaG93ID0gKGNmZy5pY29uID8gY2ZnLmljb24gOiB7XG4gICAgICBzaG93OiB1bmRlZmluZWRcbiAgICB9KS5zaG93O1xuICAgIHZhciBpY29uU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1pY29uXCJdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5nZXQoJ25hbWUnKSA9PT0gX3RoaXMudHlwZSArIFwiLWljb25cIjtcbiAgICB9KTtcblxuICAgIGlmIChpY29uU2hhcGUpIHtcbiAgICAgIC8vIOiLpeWOn+WFiOWtmOWcqCBpY29uXG4gICAgICBpZiAoc2hvdyB8fCBzaG93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8g6Iul5Lyg5YWlIHNob3c6IHRydWUsIOaIluayoeacieiuvue9ru+8jOWImeabtOaWsOWOn+acieeahCBpY29uIOagt+W8j1xuICAgICAgICB2YXIgaWNvbkNvbmZpZyA9IG1peCh7fSwgaWNvblNoYXBlLmF0dHIoKSwgaWNvbik7XG4gICAgICAgIHZhciBfYSA9IGljb25Db25maWcud2lkdGgsXG4gICAgICAgICAgICB3ID0gX2EgPT09IHZvaWQgMCA/IDIwIDogX2EsXG4gICAgICAgICAgICBfYiA9IGljb25Db25maWcuaGVpZ2h0LFxuICAgICAgICAgICAgaCA9IF9iID09PSB2b2lkIDAgPyAyMCA6IF9iO1xuICAgICAgICBpY29uU2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaWNvbkNvbmZpZyksIHtcbiAgICAgICAgICB4OiAtdyAvIDIsXG4gICAgICAgICAgeTogLWggLyAyXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOiLpeS8oOWFpeS6hiBzaG93OiBmYWxzZSDliJnliKDpmaTljp/lhYjnmoQgaWNvblxuICAgICAgICBpY29uU2hhcGUucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG93KSB7XG4gICAgICAvLyDlpoLmnpzljp/lhYjkuI3lrZjlnKggaWNvbu+8jOS9huS8oOWFpeS6hiBzaG93OiB0cnVl77yM5YiZ5paw5aKeIGljb25cbiAgICAgIHZhciB3ID0gaWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gaWNvbi5oZWlnaHQ7XG4gICAgICB2YXIgbmFtZV81ID0gdGhpcy50eXBlICsgXCItaWNvblwiO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV81XSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uKSwge1xuICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICB5OiAtaCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV81LFxuICAgICAgICBuYW1lOiBuYW1lXzVcbiAgICAgIH0pOyAvLyB0byBlbnN1cmUgdGhlIGxhYmVsIGlzIG9uIHRoZSB0b3Agb2YgYWxsIHRoZSBzaGFwZXNcblxuICAgICAgdmFyIGxhYmVsU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVsnbm9kZS1sYWJlbCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSAnbm9kZS1sYWJlbCc7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxhYmVsU2hhcGUpIHtcbiAgICAgICAgbGFiZWxTaGFwZS50b0Zyb250KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgc2luZ2xlTm9kZURlZiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUJhc2UpLCBzaW5nbGVOb2RlKTtcblxuU2hhcGUucmVnaXN0ZXJOb2RlKCdzaW5nbGUtbm9kZScsIHNpbmdsZU5vZGVEZWYpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js ***! \***********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n\n\n\n/**\n * 基本的图片,可以添加文本,默认文本在图片的下面\n */\n\n_shape__WEBPACK_IMPORTED_MODULE_1__[\"default\"].registerNode('image', {\n options: {\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*eD7nT6tmYgAAAAAAAAAAAABkARQnAQ',\n size: 200,\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n clipCfg: {\n show: false,\n type: 'circle',\n // circle\n r: 50,\n // ellipse\n rx: 50,\n ry: 35,\n // rect\n width: 50,\n height: 35,\n // polygon\n points: [[30, 12], [12, 30], [30, 48], [48, 30]],\n // path\n path: [['M', 25, 25], ['L', 50, 25], ['A', 12.5, 12.5, 0, 1, 1, 50, 50], ['A', 12.5, 12.5, 0, 1, 0, 50, 50], ['L', 25, 75], ['Z']],\n // 坐标\n x: 0,\n y: 0 // clip 的属性样式\n // style: {\n // lineWidth: 1\n // },\n\n }\n },\n shapeType: 'image',\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType;\n var style = this.getShapeStyle(cfg);\n delete style.fill;\n var shape = group.addShape(shapeType, {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n this.drawClip(cfg, shape);\n return shape;\n },\n drawClip: function drawClip(cfg, shape) {\n var clip = (this.mergeStyle || this.getOptions(cfg)).clipCfg;\n\n if (!clip.show) {\n return;\n } // 支持 circle、rect、ellipse、Polygon 及自定义 path clip\n\n\n var type = clip.type,\n x = clip.x,\n y = clip.y,\n style = clip.style;\n\n if (type === 'circle') {\n var r = clip.r;\n shape.setClip({\n type: 'circle',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n r: r,\n x: x,\n y: y\n }, style)\n });\n } else if (type === 'rect') {\n var width = clip.width,\n height = clip.height;\n var rectX = x - width / 2;\n var rectY = y - height / 2;\n shape.setClip({\n type: 'rect',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: rectX,\n y: rectY,\n width: width,\n height: height\n }, style)\n });\n } else if (type === 'ellipse') {\n var rx = clip.rx,\n ry = clip.ry;\n shape.setClip({\n type: 'ellipse',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y,\n rx: rx,\n ry: ry\n }, style)\n });\n } else if (type === 'polygon') {\n var points = clip.points;\n shape.setClip({\n type: 'polygon',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n points: points\n }, style)\n });\n } else if (type === 'path') {\n var path = clip.path;\n shape.setClip({\n type: 'path',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style)\n });\n }\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n defaultStyle = _a.style,\n img = _a.img;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (defaultStyle) {\n width = defaultStyle.width || size[0];\n height = defaultStyle.height || size[1];\n }\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height,\n img: img\n }, defaultStyle);\n\n return style;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n var shapeClassName = this.itemType + \"-shape\";\n var shape = group['shapeMap'][shapeClassName] || group.find(function (element) {\n return element.get('className') === shapeClassName;\n }) || item.getKeyShape();\n var shapeStyle = this.getShapeStyle(cfg);\n\n if (shape && !shape.destroyed) {\n shape.attr(shapeStyle);\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzP2Q3M2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNLO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG4vKipcbiAqIOWfuuacrOeahOWbvueJh++8jOWPr+S7pea3u+WKoOaWh+acrO+8jOm7mOiupOaWh+acrOWcqOWbvueJh+eahOS4i+mdolxuICovXG5cblNoYXBlLnJlZ2lzdGVyTm9kZSgnaW1hZ2UnLCB7XG4gIG9wdGlvbnM6IHtcbiAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL21kbi9ybXNfZjhjNmEwL2FmdHMvaW1nL0EqZUQ3blQ2dG1ZZ0FBQUFBQUFBQUFBQUJrQVJRbkFRJyxcbiAgICBzaXplOiAyMDAsXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGlwQ2ZnOiB7XG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIHR5cGU6ICdjaXJjbGUnLFxuICAgICAgLy8gY2lyY2xlXG4gICAgICByOiA1MCxcbiAgICAgIC8vIGVsbGlwc2VcbiAgICAgIHJ4OiA1MCxcbiAgICAgIHJ5OiAzNSxcbiAgICAgIC8vIHJlY3RcbiAgICAgIHdpZHRoOiA1MCxcbiAgICAgIGhlaWdodDogMzUsXG4gICAgICAvLyBwb2x5Z29uXG4gICAgICBwb2ludHM6IFtbMzAsIDEyXSwgWzEyLCAzMF0sIFszMCwgNDhdLCBbNDgsIDMwXV0sXG4gICAgICAvLyBwYXRoXG4gICAgICBwYXRoOiBbWydNJywgMjUsIDI1XSwgWydMJywgNTAsIDI1XSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMSwgNTAsIDUwXSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMCwgNTAsIDUwXSwgWydMJywgMjUsIDc1XSwgWydaJ11dLFxuICAgICAgLy8g5Z2Q5qCHXG4gICAgICB4OiAwLFxuICAgICAgeTogMCAvLyBjbGlwIOeahOWxnuaAp+agt+W8j1xuICAgICAgLy8gc3R5bGU6IHtcbiAgICAgIC8vICAgbGluZVdpZHRoOiAxXG4gICAgICAvLyB9LFxuXG4gICAgfVxuICB9LFxuICBzaGFwZVR5cGU6ICdpbWFnZScsXG4gIGxhYmVsUG9zaXRpb246ICdib3R0b20nLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlVHlwZSA9IHRoaXMuc2hhcGVUeXBlO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIGRlbGV0ZSBzdHlsZS5maWxsO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgbmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuZHJhd0NsaXAoY2ZnLCBzaGFwZSk7XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuICBkcmF3Q2xpcDogZnVuY3Rpb24gZHJhd0NsaXAoY2ZnLCBzaGFwZSkge1xuICAgIHZhciBjbGlwID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuY2xpcENmZztcblxuICAgIGlmICghY2xpcC5zaG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmlK/mjIEgY2lyY2xl44CBcmVjdOOAgWVsbGlwc2XjgIFQb2x5Z29uIOWPiuiHquWumuS5iSBwYXRoIGNsaXBcblxuXG4gICAgdmFyIHR5cGUgPSBjbGlwLnR5cGUsXG4gICAgICAgIHggPSBjbGlwLngsXG4gICAgICAgIHkgPSBjbGlwLnksXG4gICAgICAgIHN0eWxlID0gY2xpcC5zdHlsZTtcblxuICAgIGlmICh0eXBlID09PSAnY2lyY2xlJykge1xuICAgICAgdmFyIHIgPSBjbGlwLnI7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgcjogcixcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHlcbiAgICAgICAgfSwgc3R5bGUpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZWN0Jykge1xuICAgICAgdmFyIHdpZHRoID0gY2xpcC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBjbGlwLmhlaWdodDtcbiAgICAgIHZhciByZWN0WCA9IHggLSB3aWR0aCAvIDI7XG4gICAgICB2YXIgcmVjdFkgPSB5IC0gaGVpZ2h0IC8gMjtcbiAgICAgIHNoYXBlLnNldENsaXAoe1xuICAgICAgICB0eXBlOiAncmVjdCcsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogcmVjdFgsXG4gICAgICAgICAgeTogcmVjdFksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZWxsaXBzZScpIHtcbiAgICAgIHZhciByeCA9IGNsaXAucngsXG4gICAgICAgICAgcnkgPSBjbGlwLnJ5O1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdlbGxpcHNlJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgcng6IHJ4LFxuICAgICAgICAgIHJ5OiByeVxuICAgICAgICB9LCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BvbHlnb24nKSB7XG4gICAgICB2YXIgcG9pbnRzID0gY2xpcC5wb2ludHM7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncGF0aCcpIHtcbiAgICAgIHZhciBwYXRoID0gY2xpcC5wYXRoO1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdwYXRoJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICBwYXRoOiBwYXRoXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgZGVmYXVsdFN0eWxlID0gX2Euc3R5bGUsXG4gICAgICAgIGltZyA9IF9hLmltZztcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcblxuICAgIGlmIChkZWZhdWx0U3R5bGUpIHtcbiAgICAgIHdpZHRoID0gZGVmYXVsdFN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgICBoZWlnaHQgPSBkZWZhdWx0U3R5bGUuaGVpZ2h0IHx8IHNpemVbMV07XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBpbWc6IGltZ1xuICAgIH0sIGRlZmF1bHRTdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2hhcGVDbGFzc05hbWUgPSB0aGlzLml0ZW1UeXBlICsgXCItc2hhcGVcIjtcbiAgICB2YXIgc2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVtzaGFwZUNsYXNzTmFtZV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gc2hhcGVDbGFzc05hbWU7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG5cbiAgICBpZiAoc2hhcGUgJiYgIXNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgc2hhcGUuYXR0cihzaGFwZVN0eWxlKTtcbiAgICB9XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js ***! \***********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _simple_circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./simple-circle */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js\");\n/* harmony import */ var _simple_rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./simple-rect */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js\");\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./image */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2luZGV4LmpzPzIyMWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUI7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vc2ltcGxlLWNpcmNsZSc7XG5pbXBvcnQgJy4vc2ltcGxlLXJlY3QnO1xuaW1wb3J0ICcuL2ltYWdlJzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js": /*!*******************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js ***! \*******************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n\n\n\n // 带有图标的圆,可用于拓扑图中\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-circle', {\n // 自定义节点时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-circle',\n // 文本位置\n labelPosition: 'center',\n shapeMap: {},\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var name = this.type + \"-keyShape\";\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n r: size[0] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, keyShape.attr(), strokeStyle, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1jaXJjbGUuanM/NjUxYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0k7QUFDSDtBQUNMOztBQUU3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsWUFBWSwrQ0FBTTtBQUNsQixpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSwrQ0FBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQiwwREFBTyxHQUFHO0FBQzFCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9ub2Rlcy9zaW1wbGUtY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7IC8vIOW4puacieWbvuagh+eahOWchu+8jOWPr+eUqOS6juaLk+aJkeWbvuS4rVxuXG5TaGFwZS5yZWdpc3Rlck5vZGUoJ3NpbXBsZS1jaXJjbGUnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBzaGFwZU1hcDoge30sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCI7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3IsXG4gICAgICByOiBzaXplWzBdIC8gMlxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js ***! \*****************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzP2FmMzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNBO0FBQ0M7QUFDTDtBQUM3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTixnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi8uLi9nbG9iYWwnO1xuaW1wb3J0IFNoYXBlIGZyb20gJy4uL3NoYXBlJztcblNoYXBlLnJlZ2lzdGVyTm9kZSgnc2ltcGxlLXJlY3QnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzEwMCwgMzBdLFxuICAgIHN0eWxlOiB7XG4gICAgICByYWRpdXM6IDAsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5zdHJva2UsXG4gICAgICBmaWxsOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICAvLyBhbmNob3JQb2ludHM6IFt7IHg6IDAsIHk6IDAuNSB9LCB7IHg6IDEsIHk6IDAuNSB9XVxuICAgIGFuY2hvclBvaW50czogW1swLCAwLjVdLCBbMSwgMC41XV0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtcmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBuYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZS53aWR0aCB8fCBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzdHlsZS5oZWlnaHQgfHwgc2l6ZVsxXTtcblxuICAgIHZhciBzdHlsZXMgPSBfX2Fzc2lnbih7XG4gICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuXG4gICAgaWYgKCFjZmcuc2l6ZSkge1xuICAgICAgc2l6ZVswXSA9IGtleVNoYXBlLmF0dHIoJ3dpZHRoJykgfHwgZGVmYXVsdFN0eWxlLndpZHRoO1xuICAgICAgc2l6ZVsxXSA9IGtleVNoYXBlLmF0dHIoJ2hlaWdodCcpIHx8IGRlZmF1bHRTdHlsZS5oZWlnaHQ7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgeDogLXNpemVbMF0gLyAyLFxuICAgICAgeTogLXNpemVbMV0gLyAyLFxuICAgICAgd2lkdGg6IHNpemVbMF0sXG4gICAgICBoZWlnaHQ6IHNpemVbMV1cbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIGtleVNoYXBlLmF0dHIoKSwgc3Ryb2tlU3R5bGUpO1xuICAgIHN0eWxlID0gbWl4KHN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgZmFsc2UsIHVwZGF0ZVR5cGUpO1xuICB9XG59LCAnc2luZ2xlLW5vZGUnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js ***! \*****************************************************************************/ /*! exports provided: ShapeFactoryBase, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShapeFactoryBase\", function() { return ShapeFactoryBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./xml */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js\");\n\n\n\nvar cache = {}; // ucfirst 开销过大,进行缓存\n// 首字母大写\n\nfunction ucfirst(str) {\n if (!cache[str]) {\n cache[str] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(str);\n }\n\n return cache[str];\n}\n/**\n * 工厂方法的基类\n * @type Shape.FactoryBase\n */\n\n\nvar ShapeFactoryBase = {\n /**\n * 默认的形状,当没有指定/匹配 shapeType 时,使用默认的\n * @type {String}\n */\n defaultShapeType: 'defaultType',\n\n /**\n * 形状的 className,用于搜索\n * @type {String}\n */\n className: null,\n\n /**\n * 获取绘制 Shape 的工具类,无状态\n * @param {String} type 类型\n * @return {Shape} 工具类\n */\n getShape: function getShape(type) {\n var self = this;\n var shape = self[type] || self[self.defaultShapeType] || self['simple-circle'];\n return shape;\n },\n\n /**\n * 绘制图形\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G.Group} group 图形的分组\n * @return {IShape} 图形对象\n */\n draw: function draw(type, cfg, group) {\n var shape = this.getShape(type);\n group['shapeMap'] = {};\n var rst = shape.draw(cfg, group);\n\n if (shape.afterDraw) {\n shape.afterDraw(cfg, group, rst);\n }\n\n return rst;\n },\n\n /**\n * 更新\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G6.Item} item 节点、边、分组等\n */\n baseUpdate: function baseUpdate(type, cfg, item, updateType) {\n var _a, _b;\n\n var shape = this.getShape(type); // 防止没定义 update 函数\n\n if (shape.update) {\n // shape.mergeStyle = updateType === 'move' || updateType === 'bbox' ? {} : shape.getOptions?.(cfg);\n shape.mergeStyle = (_a = shape.getOptions) === null || _a === void 0 ? void 0 : _a.call(shape, cfg, updateType);\n (_b = shape.update) === null || _b === void 0 ? void 0 : _b.call(shape, cfg, item, updateType);\n }\n\n if (shape.afterUpdate) {\n shape.afterUpdate(cfg, item);\n }\n },\n\n /**\n * 设置状态\n * @param {String} type 类型\n * @param {String} name 状态名\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点、边、分组等\n */\n setState: function setState(type, name, value, item) {\n var shape = this.getShape(type); // 调用 shape/shapeBase.ts 中的 setState 方法\n\n shape.setState(name, value, item);\n },\n\n /**\n * 是否允许更新,不重新绘制图形\n * @param {String} type 类型\n * @return {Boolean} 是否允许使用更新\n */\n shouldUpdate: function shouldUpdate(type) {\n var shape = this.getShape(type);\n return !!shape.update;\n },\n getControlPoints: function getControlPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getControlPoints(cfg);\n },\n\n /**\n * 获取控制点\n * @param {String} type 节点、边类型\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getAnchorPoints(cfg);\n }\n};\n/**\n * 元素的框架\n */\n\nvar ShapeFramework = {\n // 默认样式及配置\n options: {},\n\n /**\n * 绘制\n */\n draw: function draw(cfg, group) {\n return this.drawShape(cfg, group);\n },\n\n /**\n * 绘制\n */\n drawShape: function drawShape() {},\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n */\n afterDraw: function afterDraw() {},\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate() {},\n\n /**\n * 设置节点、边状态\n */\n setState: function setState() {},\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var defaultAnchorPoints = this.options.anchorPoints;\n var anchorPoints = cfg.anchorPoints || defaultAnchorPoints;\n return anchorPoints;\n }\n /* 如果没定义 update 方法,每次都调用 draw 方法\n update(cfg, item) {\n }\n */\n\n};\n\nvar Shape =\n/** @class */\nfunction () {\n function Shape() {}\n\n Shape.registerFactory = function (factoryType, cfg) {\n var className = ucfirst(factoryType);\n var factoryBase = ShapeFactoryBase;\n\n var shapeFactory = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, factoryBase), cfg);\n\n Shape[className] = shapeFactory;\n shapeFactory.className = className;\n return shapeFactory;\n };\n\n Shape.getFactory = function (factoryType) {\n var className = ucfirst(factoryType);\n return Shape[className];\n };\n\n Shape.registerNode = function (shapeType, nodeDefinition, extendShapeType) {\n var shapeFactory = Shape.Node;\n var shapeObj;\n\n if (typeof nodeDefinition === 'string' || typeof nodeDefinition === 'function') {\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(nodeDefinition);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition);\n } else if (nodeDefinition.jsx) {\n var jsx = nodeDefinition.jsx;\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(jsx);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition), nodeDefinition);\n } else {\n shapeFactory.getShape(extendShapeType);\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), nodeDefinition);\n }\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'node';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerEdge = function (shapeType, edgeDefinition, extendShapeType) {\n var shapeFactory = Shape.Edge;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), edgeDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'edge';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerCombo = function (shapeType, comboDefinition, extendShapeType) {\n var shapeFactory = Shape.Combo;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), comboDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'combo';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n return Shape;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shape); // 注册 Node 的工厂方法\n\nShape.registerFactory('node', {\n defaultShapeType: 'circle'\n}); // 注册 Edge 的工厂方法\n\nShape.registerFactory('edge', {\n defaultShapeType: 'line'\n}); // 注册 Combo 的工厂方法\n\nShape.registerFactory('combo', {\n defaultShapeType: 'circle'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlLmpzP2FlZTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNPO0FBQ0U7QUFDMUMsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQVU7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsK0VBQStFO0FBQy9FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsaUJBQWlCO0FBQzlCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxXQUFXO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQiw4REFBaUI7QUFDaEQsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQyxLQUFLO0FBQ0w7QUFDQSwrQkFBK0IsOERBQWlCO0FBQ2hELGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM5QyxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNEQUFRLENBQUMsc0RBQVEsR0FBRzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNEQUFRLENBQUMsc0RBQVEsR0FBRzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUssRUFBQzs7QUFFckI7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSDtBQUNBO0FBQ0EsQ0FBQyxFQUFFOztBQUVIO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB1cHBlckZpcnN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVOb2RlRnJvbVhNTCB9IGZyb20gJy4veG1sJztcbnZhciBjYWNoZSA9IHt9OyAvLyB1Y2ZpcnN0IOW8gOmUgOi/h+Wkp++8jOi/m+ihjOe8k+WtmFxuLy8g6aaW5a2X5q+N5aSn5YaZXG5cbmZ1bmN0aW9uIHVjZmlyc3Qoc3RyKSB7XG4gIGlmICghY2FjaGVbc3RyXSkge1xuICAgIGNhY2hlW3N0cl0gPSB1cHBlckZpcnN0KHN0cik7XG4gIH1cblxuICByZXR1cm4gY2FjaGVbc3RyXTtcbn1cbi8qKlxuICog5bel5Y6C5pa55rOV55qE5Z+657G7XG4gKiBAdHlwZSBTaGFwZS5GYWN0b3J5QmFzZVxuICovXG5cblxuZXhwb3J0IHZhciBTaGFwZUZhY3RvcnlCYXNlID0ge1xuICAvKipcbiAgICog6buY6K6k55qE5b2i54q277yM5b2T5rKh5pyJ5oyH5a6aL+WMuemFjSBzaGFwZVR5cGUg5pe277yM5L2/55So6buY6K6k55qEXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBkZWZhdWx0U2hhcGVUeXBlOiAnZGVmYXVsdFR5cGUnLFxuXG4gIC8qKlxuICAgKiDlvaLnirbnmoQgY2xhc3NOYW1l77yM55So5LqO5pCc57SiXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBjbGFzc05hbWU6IG51bGwsXG5cbiAgLyoqXG4gICAqIOiOt+WPlue7mOWItiBTaGFwZSDnmoTlt6XlhbfnsbvvvIzml6DnirbmgIFcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0eXBlIOexu+Wei1xuICAgKiBAcmV0dXJuIHtTaGFwZX0g5bel5YW357G7XG4gICAqL1xuICBnZXRTaGFwZTogZnVuY3Rpb24gZ2V0U2hhcGUodHlwZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc2hhcGUgPSBzZWxmW3R5cGVdIHx8IHNlbGZbc2VsZi5kZWZhdWx0U2hhcGVUeXBlXSB8fCBzZWxmWydzaW1wbGUtY2lyY2xlJ107XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLblm77lvaJcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0eXBlICDnsbvlnotcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0cuR3JvdXB9IGdyb3VwIOWbvuW9oueahOWIhue7hFxuICAgKiBAcmV0dXJuIHtJU2hhcGV9IOWbvuW9ouWvueixoVxuICAgKi9cbiAgZHJhdzogZnVuY3Rpb24gZHJhdyh0eXBlLCBjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTtcbiAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgIHZhciByc3QgPSBzaGFwZS5kcmF3KGNmZywgZ3JvdXApO1xuXG4gICAgaWYgKHNoYXBlLmFmdGVyRHJhdykge1xuICAgICAgc2hhcGUuYWZ0ZXJEcmF3KGNmZywgZ3JvdXAsIHJzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJzdDtcbiAgfSxcblxuICAvKipcbiAgICog5pu05pawXG4gICAqIEBwYXJhbSAge1N0cmluZ30gdHlwZSAg57G75Z6LXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOmFjee9rumhuVxuICAgKiBAcGFyYW0gIHtHNi5JdGVtfSBpdGVtIOiKgueCueOAgei+ueOAgeWIhue7hOetiVxuICAgKi9cbiAgYmFzZVVwZGF0ZTogZnVuY3Rpb24gYmFzZVVwZGF0ZSh0eXBlLCBjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTsgLy8g6Ziy5q2i5rKh5a6a5LmJIHVwZGF0ZSDlh73mlbBcblxuICAgIGlmIChzaGFwZS51cGRhdGUpIHtcbiAgICAgIC8vIHNoYXBlLm1lcmdlU3R5bGUgPSB1cGRhdGVUeXBlID09PSAnbW92ZScgfHwgdXBkYXRlVHlwZSA9PT0gJ2Jib3gnID8ge30gOiBzaGFwZS5nZXRPcHRpb25zPy4oY2ZnKTtcbiAgICAgIHNoYXBlLm1lcmdlU3R5bGUgPSAoX2EgPSBzaGFwZS5nZXRPcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzaGFwZSwgY2ZnLCB1cGRhdGVUeXBlKTtcbiAgICAgIChfYiA9IHNoYXBlLnVwZGF0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoc2hhcGUsIGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlLmFmdGVyVXBkYXRlKSB7XG4gICAgICBzaGFwZS5hZnRlclVwZGF0ZShjZmcsIGl0ZW0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6K6+572u54q25oCBXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlICDnsbvlnotcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgIOeKtuaAgeWQjVxuICAgKiBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59IHZhbHVlIOeKtuaAgeWAvFxuICAgKiBAcGFyYW0ge0c2Lkl0ZW19IGl0ZW0gIOiKgueCueOAgei+ueOAgeWIhue7hOetiVxuICAgKi9cbiAgc2V0U3RhdGU6IGZ1bmN0aW9uIHNldFN0YXRlKHR5cGUsIG5hbWUsIHZhbHVlLCBpdGVtKSB7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTsgLy8g6LCD55SoIHNoYXBlL3NoYXBlQmFzZS50cyDkuK3nmoQgc2V0U3RhdGUg5pa55rOVXG5cbiAgICBzaGFwZS5zZXRTdGF0ZShuYW1lLCB2YWx1ZSwgaXRlbSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaYr+WQpuWFgeiuuOabtOaWsO+8jOS4jemHjeaWsOe7mOWItuWbvuW9olxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHR5cGUg57G75Z6LXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuWFgeiuuOS9v+eUqOabtOaWsFxuICAgKi9cbiAgc2hvdWxkVXBkYXRlOiBmdW5jdGlvbiBzaG91bGRVcGRhdGUodHlwZSkge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7XG4gICAgcmV0dXJuICEhc2hhcGUudXBkYXRlO1xuICB9LFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKHR5cGUsIGNmZykge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7XG4gICAgcmV0dXJuIHNoYXBlLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIOiKgueCueOAgei+ueexu+Wei1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g5o6n5Yi254K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ5o6n5Yi254K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyh0eXBlLCBjZmcpIHtcbiAgICB2YXIgc2hhcGUgPSB0aGlzLmdldFNoYXBlKHR5cGUpO1xuICAgIHJldHVybiBzaGFwZS5nZXRBbmNob3JQb2ludHMoY2ZnKTtcbiAgfVxufTtcbi8qKlxuICog5YWD57Sg55qE5qGG5p62XG4gKi9cblxudmFyIFNoYXBlRnJhbWV3b3JrID0ge1xuICAvLyDpu5jorqTmoLflvI/lj4rphY3nva5cbiAgb3B0aW9uczoge30sXG5cbiAgLyoqXG4gICAqIOe7mOWItlxuICAgKi9cbiAgZHJhdzogZnVuY3Rpb24gZHJhdyhjZmcsIGdyb3VwKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd1NoYXBlKGNmZywgZ3JvdXApO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLZcbiAgICovXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKCkge30sXG5cbiAgLyoqXG4gICAqIOe7mOWItuWujOaIkOWQjueahOaTjeS9nO+8jOS+v+S6jueUqOaIt+e7p+aJv+eOsOacieeahOiKgueCueOAgei+uVxuICAgKi9cbiAgYWZ0ZXJEcmF3OiBmdW5jdGlvbiBhZnRlckRyYXcoKSB7fSxcbiAgLy8gdXBkYXRlKGNmZywgaXRlbSkgLy8g6buY6K6k5LiN5a6a5LmJXG4gIGFmdGVyVXBkYXRlOiBmdW5jdGlvbiBhZnRlclVwZGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiDorr7nva7oioLngrnjgIHovrnnirbmgIFcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmjqfliLbngrlcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g5o6n5Yi254K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ5o6n5Yi254K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyhjZmcpIHtcbiAgICB2YXIgZGVmYXVsdEFuY2hvclBvaW50cyA9IHRoaXMub3B0aW9ucy5hbmNob3JQb2ludHM7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IGNmZy5hbmNob3JQb2ludHMgfHwgZGVmYXVsdEFuY2hvclBvaW50cztcbiAgICByZXR1cm4gYW5jaG9yUG9pbnRzO1xuICB9XG4gIC8qIOWmguaenOayoeWumuS5iSB1cGRhdGUg5pa55rOV77yM5q+P5qyh6YO96LCD55SoIGRyYXcg5pa55rOVXG4gIHVwZGF0ZShjZmcsIGl0ZW0pIHtcbiAgICAgfVxuICAqL1xuXG59O1xuXG52YXIgU2hhcGUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTaGFwZSgpIHt9XG5cbiAgU2hhcGUucmVnaXN0ZXJGYWN0b3J5ID0gZnVuY3Rpb24gKGZhY3RvcnlUeXBlLCBjZmcpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gdWNmaXJzdChmYWN0b3J5VHlwZSk7XG4gICAgdmFyIGZhY3RvcnlCYXNlID0gU2hhcGVGYWN0b3J5QmFzZTtcblxuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZmFjdG9yeUJhc2UpLCBjZmcpO1xuXG4gICAgU2hhcGVbY2xhc3NOYW1lXSA9IHNoYXBlRmFjdG9yeTtcbiAgICBzaGFwZUZhY3RvcnkuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgIHJldHVybiBzaGFwZUZhY3Rvcnk7XG4gIH07XG5cbiAgU2hhcGUuZ2V0RmFjdG9yeSA9IGZ1bmN0aW9uIChmYWN0b3J5VHlwZSkge1xuICAgIHZhciBjbGFzc05hbWUgPSB1Y2ZpcnN0KGZhY3RvcnlUeXBlKTtcbiAgICByZXR1cm4gU2hhcGVbY2xhc3NOYW1lXTtcbiAgfTtcblxuICBTaGFwZS5yZWdpc3Rlck5vZGUgPSBmdW5jdGlvbiAoc2hhcGVUeXBlLCBub2RlRGVmaW5pdGlvbiwgZXh0ZW5kU2hhcGVUeXBlKSB7XG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IFNoYXBlLk5vZGU7XG4gICAgdmFyIHNoYXBlT2JqO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGVEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YXIgYXV0b05vZGVEZWZpbml0aW9uID0gY3JlYXRlTm9kZUZyb21YTUwobm9kZURlZmluaXRpb24pO1xuICAgICAgc2hhcGVPYmogPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2hhcGVGYWN0b3J5LmdldFNoYXBlKCdzaW5nbGUtbm9kZScpKSwgYXV0b05vZGVEZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKG5vZGVEZWZpbml0aW9uLmpzeCkge1xuICAgICAgdmFyIGpzeCA9IG5vZGVEZWZpbml0aW9uLmpzeDtcbiAgICAgIHZhciBhdXRvTm9kZURlZmluaXRpb24gPSBjcmVhdGVOb2RlRnJvbVhNTChqc3gpO1xuICAgICAgc2hhcGVPYmogPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2hhcGVGYWN0b3J5LmdldFNoYXBlKCdzaW5nbGUtbm9kZScpKSwgYXV0b05vZGVEZWZpbml0aW9uKSwgbm9kZURlZmluaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoZXh0ZW5kU2hhcGVUeXBlKTtcbiAgICAgIHZhciBleHRlbmRTaGFwZSA9IGV4dGVuZFNoYXBlVHlwZSA/IHNoYXBlRmFjdG9yeS5nZXRTaGFwZShleHRlbmRTaGFwZVR5cGUpIDogU2hhcGVGcmFtZXdvcms7XG4gICAgICBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRlbmRTaGFwZSksIG5vZGVEZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICBzaGFwZU9iai50eXBlID0gc2hhcGVUeXBlO1xuICAgIHNoYXBlT2JqLml0ZW1UeXBlID0gJ25vZGUnO1xuICAgIHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdID0gc2hhcGVPYmo7XG4gICAgcmV0dXJuIHNoYXBlT2JqO1xuICB9O1xuXG4gIFNoYXBlLnJlZ2lzdGVyRWRnZSA9IGZ1bmN0aW9uIChzaGFwZVR5cGUsIGVkZ2VEZWZpbml0aW9uLCBleHRlbmRTaGFwZVR5cGUpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuRWRnZTtcbiAgICB2YXIgZXh0ZW5kU2hhcGUgPSBleHRlbmRTaGFwZVR5cGUgPyBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoZXh0ZW5kU2hhcGVUeXBlKSA6IFNoYXBlRnJhbWV3b3JrO1xuXG4gICAgdmFyIHNoYXBlT2JqID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dGVuZFNoYXBlKSwgZWRnZURlZmluaXRpb24pO1xuXG4gICAgc2hhcGVPYmoudHlwZSA9IHNoYXBlVHlwZTtcbiAgICBzaGFwZU9iai5pdGVtVHlwZSA9ICdlZGdlJztcbiAgICBzaGFwZUZhY3Rvcnlbc2hhcGVUeXBlXSA9IHNoYXBlT2JqO1xuICAgIHJldHVybiBzaGFwZU9iajtcbiAgfTtcblxuICBTaGFwZS5yZWdpc3RlckNvbWJvID0gZnVuY3Rpb24gKHNoYXBlVHlwZSwgY29tYm9EZWZpbml0aW9uLCBleHRlbmRTaGFwZVR5cGUpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuQ29tYm87XG4gICAgdmFyIGV4dGVuZFNoYXBlID0gZXh0ZW5kU2hhcGVUeXBlID8gc2hhcGVGYWN0b3J5LmdldFNoYXBlKGV4dGVuZFNoYXBlVHlwZSkgOiBTaGFwZUZyYW1ld29yaztcblxuICAgIHZhciBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRlbmRTaGFwZSksIGNvbWJvRGVmaW5pdGlvbik7XG5cbiAgICBzaGFwZU9iai50eXBlID0gc2hhcGVUeXBlO1xuICAgIHNoYXBlT2JqLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICBzaGFwZUZhY3Rvcnlbc2hhcGVUeXBlXSA9IHNoYXBlT2JqO1xuICAgIHJldHVybiBzaGFwZU9iajtcbiAgfTtcblxuICByZXR1cm4gU2hhcGU7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXBlOyAvLyDms6jlhowgTm9kZSDnmoTlt6XljoLmlrnms5VcblxuU2hhcGUucmVnaXN0ZXJGYWN0b3J5KCdub2RlJywge1xuICBkZWZhdWx0U2hhcGVUeXBlOiAnY2lyY2xlJ1xufSk7IC8vIOazqOWGjCBFZGdlIOeahOW3peWOguaWueazlVxuXG5TaGFwZS5yZWdpc3RlckZhY3RvcnkoJ2VkZ2UnLCB7XG4gIGRlZmF1bHRTaGFwZVR5cGU6ICdsaW5lJ1xufSk7IC8vIOazqOWGjCBDb21ibyDnmoTlt6XljoLmlrnms5VcblxuU2hhcGUucmVnaXN0ZXJGYWN0b3J5KCdjb21ibycsIHtcbiAgZGVmYXVsdFNoYXBlVHlwZTogJ2NpcmNsZSdcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js ***! \*********************************************************************************/ /*! exports provided: CLS_LABEL_BG_SUFFIX, shapeBase */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLS_LABEL_BG_SUFFIX\", function() { return CLS_LABEL_BG_SUFFIX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shapeBase\", function() { return shapeBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar CLS_SHAPE_SUFFIX = '-shape';\nvar CLS_LABEL_SUFFIX = '-label';\nvar ARROWS = ['startArrow', 'endArrow'];\nvar SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: undefined,\n fill: undefined,\n lineAppendWidth: 1,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n x: 0,\n y: 0,\n r: 10,\n width: 20,\n height: 20,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar PATH_SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: '#000',\n lineDash: undefined,\n startArrow: false,\n endArrow: false,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar SHAPES_DEFAULT_ATTRS = {\n edge: PATH_SHAPE_DEFAULT_ATTRS,\n node: SHAPE_DEFAULT_ATTRS,\n combo: SHAPE_DEFAULT_ATTRS\n};\nvar CLS_LABEL_BG_SUFFIX = '-label-bg'; // 单个 shape 带有一个 label,共用这段代码\n\nvar shapeBase = {\n // 默认样式及配置\n options: {\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n },\n descriptionCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n }\n },\n itemType: '',\n\n /**\n * 形状的类型,例如 circle,ellipse,polyline...\n */\n type: '',\n getCustomConfig: function getCustomConfig(cfg) {\n return {};\n },\n getOptions: function getOptions(cfg, updateType) {\n if (updateType === 'move' || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox'))) {\n return {};\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])({}, this.options, this.getCustomConfig(cfg) || {}, cfg);\n },\n\n /**\n * 绘制节点/边,包含文本\n * @override\n * @param {Object} cfg 节点的配置项\n * @param {G.Group} group 节点的容器\n * @return {IShape} 绘制的图形\n */\n draw: function draw(cfg, group) {\n group['shapeMap'] = {};\n this.mergeStyle = this.getOptions(cfg);\n var shape = this.drawShape(cfg, group);\n shape.set('className', this.itemType + CLS_SHAPE_SUFFIX);\n group['shapeMap'][this.itemType + CLS_SHAPE_SUFFIX] = shape;\n\n if (cfg.label) {\n var label = this.drawLabel(cfg, group);\n label.set('className', this.itemType + CLS_LABEL_SUFFIX);\n group['shapeMap'][this.itemType + CLS_LABEL_SUFFIX] = label;\n }\n\n return shape;\n },\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n * @param cfg\n * @param group\n * @param keyShape\n */\n afterDraw: function afterDraw(cfg, group, keyShape) {},\n drawShape: function drawShape(cfg, group) {\n return null;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = (this.mergeStyle || this.getOptions(cfg) || {}).labelCfg; // image的情况下有可能为null\n\n var labelCfg = defaultLabelCfg || {};\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n draggable: true,\n className: 'text-shape',\n name: 'text-shape'\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n var labelBBox = label.getBBox();\n var labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (labelStyle.rotateCenter) {\n switch (labelStyle.rotateCenter) {\n case 'center':\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n\n case 'lefttop':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n break;\n\n case 'leftcenter':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n break;\n\n default:\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n }\n } else {\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n }\n\n label.setMatrix(labelMatrix);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label);\n var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n return {\n text: cfg.label\n };\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, cfg, labelCfg, group) {\n return {};\n },\n\n /**\n * 获取文本的配置项\n * @param cfg 节点的配置项\n * @param labelCfg 文本的配置项\n * @param group 父容器,label 的定位可能与图形相关\n */\n getLabelStyle: function getLabelStyle(cfg, labelCfg, group) {\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group);\n var attrName = this.itemType + \"Label\"; // 取 nodeLabel,edgeLabel 的配置项\n\n var defaultStyle = _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName] ? _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName].style : null;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, defaultStyle), calculateStyle), labelCfg.style);\n },\n\n /**\n * 获取图形的配置项\n * @param cfg\n */\n getShapeStyle: function getShapeStyle(cfg) {\n return cfg.style;\n },\n\n /**\n * 更新节点,包含文本\n * @override\n * @param {Object} cfg 节点/边的配置项\n * @param {G6.Item} item 节点/边\n */\n update: function update(cfg, item, updateType) {\n this.updateShapeStyle(cfg, item, updateType);\n this.updateLabel(cfg, item, updateType);\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer();\n var shape = item.getKeyShape();\n var shapeStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, shape.attr(), cfg.style);\n\n var _loop_1 = function _loop_1(key) {\n var _b;\n\n var style = shapeStyle[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style)) {\n // 更新图元素样式,支持更新子元素\n var subShape = ((_a = group['shapeMap']) === null || _a === void 0 ? void 0 : _a[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n shape.attr((_b = {}, _b[key] = style, _b));\n }\n };\n\n for (var key in shapeStyle) {\n _loop_1(key);\n }\n },\n updateLabel: function updateLabel(cfg, item, updateType) {\n var _a, _b; // 防止 cfg.label = \"\" 的情况\n\n\n if (cfg.label || cfg.label === '') {\n var group = item.getContainer();\n var _c = (this.mergeStyle || this.getOptions({}, updateType) || {}).labelCfg,\n labelCfg = _c === void 0 ? {} : _c;\n var labelClassName_1 = this.itemType + CLS_LABEL_SUFFIX;\n var label = group['shapeMap'][labelClassName_1] || group.find(function (ele) {\n return ele.get('className') === labelClassName_1;\n });\n var labelBgClassname_1 = this.itemType + CLS_LABEL_BG_SUFFIX;\n var labelBg = group['shapeMap'][labelBgClassname_1] || group.find(function (ele) {\n return ele.get('className') === labelBgClassname_1;\n }); // 若传入的新配置中有 label,(用户没传入但原先有 label,label 也会有值)\n\n if (!label) {\n // 若原先不存在 label,则绘制一个新的 label\n var newLabel = this.drawLabel(cfg, group);\n newLabel.set('className', labelClassName_1);\n group['shapeMap'][labelClassName_1] = newLabel;\n } else {\n // 若原先存在 label,则更新样式。与 getLabelStyle 不同在于这里需要融合当前 label 的样式\n // 融合 style 以外的属性:position, offset, ...\n if (!updateType || updateType === 'bbox|label' || this.itemType === 'edge' && updateType !== 'style') {\n labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(labelCfg, cfg.labelCfg);\n } // 获取位置信息\n\n\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group); // 取 nodeLabel,edgeLabel 的配置项\n\n var cfgStyle = (_a = cfg.labelCfg) === null || _a === void 0 ? void 0 : _a.style; // const cfgBgStyle = labelCfg.style?.background;\n // 需要融合当前\b label 的样式 label.attr()。不再需要全局/默认样式,因为已经应用在当前的 label 上\n\n var labelStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, calculateStyle), cfgStyle);\n\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate; // 计算 label 的旋转矩阵\n\n if (!isNaN(rotate) && rotate !== '') {\n // if G 4.x define the rotateAtStart, use it directly instead of using the following codes\n var rotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n rotateMatrix = transform(rotateMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n labelStyle.matrix = rotateMatrix;\n label.attr(labelStyle);\n } else {\n if (((_b = label.getMatrix()) === null || _b === void 0 ? void 0 : _b[4]) !== 1) {\n label.resetMatrix();\n }\n\n label.attr(labelStyle);\n }\n\n if (!labelBg) {\n if (labelStyle.background) {\n labelBg = this.drawLabelBg(cfg, group, label);\n labelBg.set('classname', labelBgClassname_1);\n group['shapeMap'][labelBgClassname_1] = labelBg;\n label.toFront();\n }\n } else if (labelStyle.background) {\n var calculateBgStyle = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);\n var labelBgStyle = calculateBgStyle;\n\n if (!isNaN(rotate) && rotate !== '') {\n var bgRotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n bgRotateMatrix = transform(bgRotateMatrix, [['t', -labelBgStyle.x, -labelBgStyle.y], ['r', rotate], ['t', labelBgStyle.x, labelBgStyle.y]]);\n labelBgStyle.matrix = bgRotateMatrix;\n } else {\n labelBg.resetMatrix();\n }\n\n labelBg.attr(labelBgStyle);\n } else {\n group.removeChild(labelBg);\n }\n }\n }\n },\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate(cfg, item) {},\n\n /**\n * 设置节点的状态,主要是交互状态,业务状态请在 draw 方法中实现\n * 单图形的节点仅考虑 selected、active 状态,有其他状态需求的用户自己复写这个方法\n * @override\n * @param {String} name 状态名称\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点\n */\n setState: function setState(name, value, item) {\n var _a, _b;\n\n var _c;\n\n var shape = item.get('keyShape');\n if (!shape || shape.destroyed) return;\n var type = item.getType();\n var stateName = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isBoolean\"])(value) ? name : name + \":\" + value;\n var shapeStateStyle = this.getStateStyle(stateName, item);\n var itemStateStyle = item.getStateStyle(stateName); // const originStyle = item.getOriginStyle();\n // 不允许设置一个不存在的状态\n\n if (!itemStateStyle && !shapeStateStyle) {\n return;\n } // 要设置或取消的状态的样式\n // 当没有 state 状态时,默认使用 model.stateStyles 中的样式\n\n\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, itemStateStyle || shapeStateStyle);\n var group = item.getContainer(); // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值。使用对象检索更快\n\n var keptAttrs = {\n x: 1,\n y: 1,\n cx: 1,\n cy: 1\n };\n\n if (type === 'combo') {\n keptAttrs.r = 1;\n keptAttrs.width = 1;\n keptAttrs.height = 1;\n }\n\n if (value) {\n var _loop_2 = function _loop_2(key) {\n var _d;\n\n var style = styles[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(key)) {\n var subShape = ((_c = group['shapeMap']) === null || _c === void 0 ? void 0 : _c[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n // 非纯对象,则认为是设置到 keyShape 上面的\n shape.attr((_d = {}, _d[key] = style, _d));\n }\n }; // style 为要设置的状态的样式\n\n\n for (var key in styles) {\n _loop_2(key);\n }\n } else {\n // 所有生效的 state 的样式\n var enableStatesStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getCurrentStatesStyle());\n var model = item.getModel(); // 原始样式\n\n var originStyle_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, model.style, Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getOriginStyle()));\n var keyShapeName_1 = shape.get('name'); // cloning shape.attr(), keys.forEach to avoid cloning the img attr, which leads to maximum clone heap #2383\n // const keyShapeStyles = clone(shape.attr())\n\n var shapeAttrs_1 = shape.attr();\n var keyShapeStyles_1 = {};\n Object.keys(shapeAttrs_1).forEach(function (key) {\n if (key === 'img') return;\n var attr = shapeAttrs_1[key];\n\n if (attr && _typeof(attr) === 'object') {\n keyShapeStyles_1[key] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(attr);\n } else {\n keyShapeStyles_1[key] = attr;\n }\n }); // 已有样式 - 要取消的状态的样式\n\n var filtetDisableStatesStyle = {};\n\n var _loop_3 = function _loop_3(p) {\n var style = styles[p];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(p)) {\n var subShape_1 = group['shapeMap'][p] || group.find(function (ele) {\n return ele.get('name') === p;\n });\n\n if (subShape_1) {\n var subShapeStyles_1 = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(subShape_1.attr());\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(style, function (v, key) {\n if (p === keyShapeName_1 && keyShapeStyles_1[key] && !keptAttrs[key]) {\n delete keyShapeStyles_1[key];\n var value_1 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n shape.attr(key, value_1);\n } else if (subShapeStyles_1[key] || subShapeStyles_1[key] === 0) {\n delete subShapeStyles_1[key];\n var value_2 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n subShape_1.attr(key, value_2);\n }\n });\n filtetDisableStatesStyle[p] = subShapeStyles_1;\n }\n } else {\n if (keyShapeStyles_1[p] && !keptAttrs[p]) {\n delete keyShapeStyles_1[p];\n var value_3 = originStyle_1[p] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p] : undefined) || SHAPES_DEFAULT_ATTRS[type][p];\n shape.attr(p, value_3);\n }\n }\n }; // styles 为要取消的状态的样式\n\n\n for (var p in styles) {\n _loop_3(p);\n } // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值后,\n // 如果 keyShape 有 name 属性,则 filtetDisableStatesStyle 的格式为 { keyShapeName: {} }\n // 否则为普通对象\n\n\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(filtetDisableStatesStyle, keyShapeStyles_1);\n } else {\n filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1;\n }\n\n for (var key in enableStatesStyle) {\n if (keptAttrs[key]) continue;\n var enableStyle = enableStatesStyle[key];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(enableStyle) || ARROWS.includes(key)) {\n // 把样式属性merge到keyShape中\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1, (_a = {}, _a[key] = enableStyle, _a));\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b));\n delete originStyle_1[key];\n }\n\n delete enableStatesStyle[key];\n }\n }\n\n var originstyles = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle);\n var keyShapeSetted = false;\n\n var _loop_4 = function _loop_4(originKey) {\n var _e, _f;\n\n var style = originstyles[originKey];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(originKey)) {\n var subShape = group['shapeMap'][originKey] || group.find(function (ele) {\n return ele.get('name') === originKey;\n });\n\n if (subShape) {\n // The text's position and matrix is not allowed to be affected by states\n if (subShape.get('type') === 'text') {\n delete style.x;\n delete style.y;\n delete style.matrix;\n }\n\n if (originKey === keyShapeName_1) {\n if (type === 'combo') {\n delete style.r;\n delete style.width;\n delete style.height;\n }\n\n keyShapeSetted = true;\n }\n\n subShape.attr(style);\n }\n } else if (!keyShapeSetted) {\n var value_4 = style || SHAPES_DEFAULT_ATTRS[type][originKey]; // 当更新 combo 状态时,当不存在 keyShapeName 时候,则认为是设置到 keyShape 上面的\n\n if (type === 'combo') {\n if (!keyShapeName_1) {\n shape.attr((_e = {}, _e[originKey] = value_4, _e));\n }\n } else {\n shape.attr((_f = {}, _f[originKey] = value_4, _f));\n }\n }\n };\n\n for (var originKey in originstyles) {\n _loop_4(originKey);\n }\n }\n },\n\n /**\n * 获取不同状态下的样式\n *\n * @param {string} name 状态名称\n * @param {Item} item Node或Edge的实例\n * @return {object} 样式\n */\n getStateStyle: function getStateStyle(name, item) {\n var model = item.getModel();\n var type = item.getType();\n\n var _a = this.getOptions(model),\n stateStyles = _a.stateStyles,\n _b = _a.style,\n style = _b === void 0 ? {} : _b;\n\n var modelStateStyle = model.stateStyles ? model.stateStyles[name] : stateStyles && stateStyles[name];\n\n if (type === 'combo') {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(modelStateStyle);\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, style, modelStateStyle);\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 锚点的数组,如果为 null,则没有锚点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var _a, _b;\n\n var anchorPoints = (cfg === null || cfg === void 0 ? void 0 : cfg.anchorPoints) || ((_a = this.getCustomConfig(cfg)) === null || _a === void 0 ? void 0 : _a.anchorPoints) || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.anchorPoints);\n return anchorPoints;\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlQmFzZS5qcz8zYzY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBdUIsMkJBQTJCLDJFQUEyRSxrQ0FBa0MsbUJBQW1CLEdBQUcsRUFBRSxPQUFPLGtDQUFrQyw4SEFBOEgsR0FBRyxFQUFFLHFCQUFxQjs7QUFFdlY7QUFDRjtBQUNTO0FBQ3lDO0FBQy9CO0FBQ2xELGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHNDQUFzQzs7QUFFdEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsMERBQU8sR0FBRywrQ0FBK0M7QUFDcEUsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHdFQUF3RSxXQUFXOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQixzREFBRyxHQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0MsdUJBQXVCLCtDQUFNLGFBQWEsK0NBQU07QUFDaEQsV0FBVyxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN4QyxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUcsR0FBRzs7QUFFM0I7QUFDQTs7QUFFQTs7QUFFQSxVQUFVLGdFQUFhO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUCwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxlQUFlOzs7QUFHZjtBQUNBO0FBQ0EscURBQXFELG1CQUFtQjtBQUN4RSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwwREFBTztBQUM1QixTQUFTOzs7QUFHVCxnRkFBZ0Y7O0FBRWhGLHlGQUF5RjtBQUN6Rjs7QUFFQSx5QkFBeUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHOztBQUU3QztBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNERBQVM7QUFDN0I7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0EsaUJBQWlCLHNEQUFHLEdBQUc7QUFDdkIsb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsWUFBWSxnRUFBYTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsOEJBQThCLHFFQUFlO0FBQzdDLGtDQUFrQzs7QUFFbEMsMEJBQTBCLHNEQUFHLEdBQUcsZUFBZSxxRUFBZTtBQUM5RCw2Q0FBNkM7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyx3REFBSztBQUN2QyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDs7QUFFQTtBQUNBOztBQUVBLFlBQVksZ0VBQWE7QUFDekI7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQSxtQ0FBbUMscUVBQWU7QUFDbEQsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsZ0VBQWdFLGlCQUFpQjtBQUNqRjs7O0FBR0E7QUFDQSxRQUFRLHNEQUFHO0FBQ1gsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGFBQWEsZ0VBQWE7QUFDMUI7QUFDQTtBQUNBLFlBQVksc0RBQUcsd0JBQXdCO0FBQ3ZDLFdBQVc7QUFDWCxZQUFZLHNEQUFHLHdDQUF3QztBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0sMERBQU87QUFDYjs7QUFFQTtBQUNBOztBQUVBOztBQUVBLFlBQVksZ0VBQWE7QUFDekI7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVCx1RUFBdUU7O0FBRXZFO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSxXQUFXO0FBQ1gsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsS0FBSztBQUNsQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7O0FBRUEsV0FBVyxzREFBRyxHQUFHO0FBQ2pCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsV0FBVztBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlQmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCB7IGV4dCB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmltcG9ydCB7IGRlZXBNaXgsIGVhY2gsIG1peCwgaXNCb29sZWFuLCBpc1BsYWluT2JqZWN0LCBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY2xvbmVCZXNpZGVzSW1nIH0gZnJvbSAnLi4vdXRpbC9ncmFwaGljJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIENMU19TSEFQRV9TVUZGSVggPSAnLXNoYXBlJztcbnZhciBDTFNfTEFCRUxfU1VGRklYID0gJy1sYWJlbCc7XG52YXIgQVJST1dTID0gWydzdGFydEFycm93JywgJ2VuZEFycm93J107XG52YXIgU0hBUEVfREVGQVVMVF9BVFRSUyA9IHtcbiAgbGluZVdpZHRoOiAxLFxuICBzdHJva2U6IHVuZGVmaW5lZCxcbiAgZmlsbDogdW5kZWZpbmVkLFxuICBsaW5lQXBwZW5kV2lkdGg6IDEsXG4gIG9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgc3Ryb2tlT3BhY2l0eTogdW5kZWZpbmVkLFxuICBmaWxsT3BhY2l0eTogdW5kZWZpbmVkLFxuICB4OiAwLFxuICB5OiAwLFxuICByOiAxMCxcbiAgd2lkdGg6IDIwLFxuICBoZWlnaHQ6IDIwLFxuICBzaGFkb3dDb2xvcjogdW5kZWZpbmVkLFxuICBzaGFkb3dCbHVyOiAwLFxuICBzaGFkb3dPZmZzZXRYOiAwLFxuICBzaGFkb3dPZmZzZXRZOiAwXG59O1xudmFyIFBBVEhfU0hBUEVfREVGQVVMVF9BVFRSUyA9IHtcbiAgbGluZVdpZHRoOiAxLFxuICBzdHJva2U6ICcjMDAwJyxcbiAgbGluZURhc2g6IHVuZGVmaW5lZCxcbiAgc3RhcnRBcnJvdzogZmFsc2UsXG4gIGVuZEFycm93OiBmYWxzZSxcbiAgb3BhY2l0eTogdW5kZWZpbmVkLFxuICBzdHJva2VPcGFjaXR5OiB1bmRlZmluZWQsXG4gIGZpbGxPcGFjaXR5OiB1bmRlZmluZWQsXG4gIHNoYWRvd0NvbG9yOiB1bmRlZmluZWQsXG4gIHNoYWRvd0JsdXI6IDAsXG4gIHNoYWRvd09mZnNldFg6IDAsXG4gIHNoYWRvd09mZnNldFk6IDBcbn07XG52YXIgU0hBUEVTX0RFRkFVTFRfQVRUUlMgPSB7XG4gIGVkZ2U6IFBBVEhfU0hBUEVfREVGQVVMVF9BVFRSUyxcbiAgbm9kZTogU0hBUEVfREVGQVVMVF9BVFRSUyxcbiAgY29tYm86IFNIQVBFX0RFRkFVTFRfQVRUUlNcbn07XG5leHBvcnQgdmFyIENMU19MQUJFTF9CR19TVUZGSVggPSAnLWxhYmVsLWJnJzsgLy8g5Y2V5LiqIHNoYXBlIOW4puacieS4gOS4qiBsYWJlbO+8jOWFseeUqOi/meauteS7o+eggVxuXG5leHBvcnQgdmFyIHNoYXBlQmFzZSA9IHtcbiAgLy8g6buY6K6k5qC35byP5Y+K6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaXRlbVR5cGU6ICcnLFxuXG4gIC8qKlxuICAgKiDlvaLnirbnmoTnsbvlnovvvIzkvovlpoIgY2lyY2xl77yMZWxsaXBzZe+8jHBvbHlsaW5lLi4uXG4gICAqL1xuICB0eXBlOiAnJyxcbiAgZ2V0Q3VzdG9tQ29uZmlnOiBmdW5jdGlvbiBnZXRDdXN0b21Db25maWcoY2ZnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICBnZXRPcHRpb25zOiBmdW5jdGlvbiBnZXRPcHRpb25zKGNmZywgdXBkYXRlVHlwZSkge1xuICAgIGlmICh1cGRhdGVUeXBlID09PSAnbW92ZScgfHwgKHVwZGF0ZVR5cGUgPT09IG51bGwgfHwgdXBkYXRlVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBkYXRlVHlwZS5pbmNsdWRlcygnYmJveCcpKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiBkZWVwTWl4KHt9LCB0aGlzLm9wdGlvbnMsIHRoaXMuZ2V0Q3VzdG9tQ29uZmlnKGNmZykgfHwge30sIGNmZyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCuS/ovrnvvIzljIXlkKvmlofmnKxcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCueeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gIHtHLkdyb3VwfSBncm91cCDoioLngrnnmoTlrrnlmahcbiAgICogQHJldHVybiB7SVNoYXBlfSDnu5jliLbnmoTlm77lvaJcbiAgICovXG4gIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY2ZnLCBncm91cCkge1xuICAgIGdyb3VwWydzaGFwZU1hcCddID0ge307XG4gICAgdGhpcy5tZXJnZVN0eWxlID0gdGhpcy5nZXRPcHRpb25zKGNmZyk7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5kcmF3U2hhcGUoY2ZnLCBncm91cCk7XG4gICAgc2hhcGUuc2V0KCdjbGFzc05hbWUnLCB0aGlzLml0ZW1UeXBlICsgQ0xTX1NIQVBFX1NVRkZJWCk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy5pdGVtVHlwZSArIENMU19TSEFQRV9TVUZGSVhdID0gc2hhcGU7XG5cbiAgICBpZiAoY2ZnLmxhYmVsKSB7XG4gICAgICB2YXIgbGFiZWwgPSB0aGlzLmRyYXdMYWJlbChjZmcsIGdyb3VwKTtcbiAgICAgIGxhYmVsLnNldCgnY2xhc3NOYW1lJywgdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9TVUZGSVgpO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9TVUZGSVhdID0gbGFiZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLblrozmiJDlkI7nmoTmk43kvZzvvIzkvr/kuo7nlKjmiLfnu6fmib/njrDmnInnmoToioLngrnjgIHovrlcbiAgICogQHBhcmFtIGNmZ1xuICAgKiBAcGFyYW0gZ3JvdXBcbiAgICogQHBhcmFtIGtleVNoYXBlXG4gICAqL1xuICBhZnRlckRyYXc6IGZ1bmN0aW9uIGFmdGVyRHJhdyhjZmcsIGdyb3VwLCBrZXlTaGFwZSkge30sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpIHx8IHt9KS5sYWJlbENmZzsgLy8gaW1hZ2XnmoTmg4XlhrXkuIvmnInlj6/og73kuLpudWxsXG5cbiAgICB2YXIgbGFiZWxDZmcgPSBkZWZhdWx0TGFiZWxDZmcgfHwge307XG4gICAgdmFyIGxhYmVsU3R5bGUgPSB0aGlzLmdldExhYmVsU3R5bGUoY2ZnLCBsYWJlbENmZywgZ3JvdXApO1xuICAgIHZhciByb3RhdGUgPSBsYWJlbFN0eWxlLnJvdGF0ZTtcbiAgICBkZWxldGUgbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgdmFyIGxhYmVsID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICBhdHRyczogbGFiZWxTdHlsZSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIGNsYXNzTmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgbmFtZTogJ3RleHQtc2hhcGUnXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuXG4gICAgaWYgKCFpc05hTihyb3RhdGUpICYmIHJvdGF0ZSAhPT0gJycpIHtcbiAgICAgIHZhciBsYWJlbEJCb3ggPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgICB2YXIgbGFiZWxNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG5cbiAgICAgIGlmIChsYWJlbFN0eWxlLnJvdGF0ZUNlbnRlcikge1xuICAgICAgICBzd2l0Y2ggKGxhYmVsU3R5bGUucm90YXRlQ2VudGVyKSB7XG4gICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsQkJveC53aWR0aCAvIDIsIC1sYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsQkJveC53aWR0aCAvIDIsIGxhYmVsQkJveC5oZWlnaHQgLyAyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdsZWZ0dG9wJzpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueV0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55XV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdsZWZ0Y2VudGVyJzpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueSAtIGxhYmVsQkJveC5oZWlnaHQgLyAyXSwgWydyJywgcm90YXRlXSwgWyd0JywgbGFiZWxTdHlsZS54LCBsYWJlbFN0eWxlLnkgKyBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsQkJveC53aWR0aCAvIDIsIC1sYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsQkJveC53aWR0aCAvIDIsIGxhYmVsQkJveC5oZWlnaHQgLyAyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueSAtIGxhYmVsQkJveC5oZWlnaHQgLyAyXSwgWydyJywgcm90YXRlXSwgWyd0JywgbGFiZWxTdHlsZS54LCBsYWJlbFN0eWxlLnkgKyBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgIH1cblxuICAgICAgbGFiZWwuc2V0TWF0cml4KGxhYmVsTWF0cml4KTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxTdHlsZS5iYWNrZ3JvdW5kKSB7XG4gICAgICB2YXIgcmVjdCA9IHRoaXMuZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwpO1xuICAgICAgdmFyIGxhYmVsQmdDbGFzc25hbWUgPSB0aGlzLml0ZW1UeXBlICsgQ0xTX0xBQkVMX0JHX1NVRkZJWDtcbiAgICAgIHJlY3Quc2V0KCdjbGFzc25hbWUnLCBsYWJlbEJnQ2xhc3NuYW1lKTtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQmdDbGFzc25hbWVdID0gcmVjdDtcbiAgICAgIGxhYmVsLnRvRnJvbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0sXG4gIGRyYXdMYWJlbEJnOiBmdW5jdGlvbiBkcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gbWl4KHt9LCBkZWZhdWx0TGFiZWxDZmcsIGNmZy5sYWJlbENmZyk7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uKGxhYmVsLCBjZmcsIGxhYmVsQ2ZnLCBncm91cCk7XG4gICAgdmFyIHJlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJnLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzdHlsZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LWJnLXNoYXBlJ10gPSByZWN0O1xuICAgIHJldHVybiByZWN0O1xuICB9LFxuICBnZXRMYWJlbFN0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb24oY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgfTtcbiAgfSxcbiAgZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaWh+acrOeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gY2ZnIOiKgueCueeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gbGFiZWxDZmcg5paH5pys55qE6YWN572u6aG5XG4gICAqIEBwYXJhbSBncm91cCDniLblrrnlmajvvIxsYWJlbCDnmoTlrprkvY3lj6/og73kuI7lm77lvaLnm7jlhbNcbiAgICovXG4gIGdldExhYmVsU3R5bGU6IGZ1bmN0aW9uIGdldExhYmVsU3R5bGUoY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICB2YXIgY2FsY3VsYXRlU3R5bGUgPSB0aGlzLmdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgYXR0ck5hbWUgPSB0aGlzLml0ZW1UeXBlICsgXCJMYWJlbFwiOyAvLyDlj5Ygbm9kZUxhYmVs77yMZWRnZUxhYmVsIOeahOmFjee9rumhuVxuXG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IEdsb2JhbFthdHRyTmFtZV0gPyBHbG9iYWxbYXR0ck5hbWVdLnN0eWxlIDogbnVsbDtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIGRlZmF1bHRTdHlsZSksIGNhbGN1bGF0ZVN0eWxlKSwgbGFiZWxDZmcuc3R5bGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5blm77lvaLnmoTphY3nva7poblcbiAgICogQHBhcmFtIGNmZ1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICByZXR1cm4gY2ZnLnN0eWxlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmm7TmlrDoioLngrnvvIzljIXlkKvmlofmnKxcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCuS/ovrnnmoTphY3nva7poblcbiAgICogQHBhcmFtICB7RzYuSXRlbX0gaXRlbSDoioLngrkv6L65XG4gICAqL1xuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxhYmVsKGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG4gICAgdmFyIHNoYXBlU3R5bGUgPSBtaXgoe30sIHNoYXBlLmF0dHIoKSwgY2ZnLnN0eWxlKTtcblxuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShrZXkpIHtcbiAgICAgIHZhciBfYjtcblxuICAgICAgdmFyIHN0eWxlID0gc2hhcGVTdHlsZVtrZXldO1xuXG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChzdHlsZSkpIHtcbiAgICAgICAgLy8g5pu05paw5Zu+5YWD57Sg5qC35byP77yM5pSv5oyB5pu05paw5a2Q5YWD57SgXG4gICAgICAgIHZhciBzdWJTaGFwZSA9ICgoX2EgPSBncm91cFsnc2hhcGVNYXAnXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2tleV0pIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ25hbWUnKSA9PT0ga2V5O1xuICAgICAgICB9KTtcbiAgICAgICAgc3ViU2hhcGUgPT09IG51bGwgfHwgc3ViU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1YlNoYXBlLmF0dHIoc3R5bGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hhcGUuYXR0cigoX2IgPSB7fSwgX2Jba2V5XSA9IHN0eWxlLCBfYikpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVTdHlsZSkge1xuICAgICAgX2xvb3BfMShrZXkpO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlTGFiZWw6IGZ1bmN0aW9uIHVwZGF0ZUxhYmVsKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBfYSwgX2I7IC8vIOmYsuatoiBjZmcubGFiZWwgPSBcIlwiIOeahOaDheWGtVxuXG5cbiAgICBpZiAoY2ZnLmxhYmVsIHx8IGNmZy5sYWJlbCA9PT0gJycpIHtcbiAgICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7XG4gICAgICB2YXIgX2MgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyh7fSwgdXBkYXRlVHlwZSkgfHwge30pLmxhYmVsQ2ZnLFxuICAgICAgICAgIGxhYmVsQ2ZnID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2M7XG4gICAgICB2YXIgbGFiZWxDbGFzc05hbWVfMSA9IHRoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfU1VGRklYO1xuICAgICAgdmFyIGxhYmVsID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbGFiZWxDbGFzc05hbWVfMV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuZ2V0KCdjbGFzc05hbWUnKSA9PT0gbGFiZWxDbGFzc05hbWVfMTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGxhYmVsQmdDbGFzc25hbWVfMSA9IHRoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfQkdfU1VGRklYO1xuICAgICAgdmFyIGxhYmVsQmcgPSBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXzFdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmdldCgnY2xhc3NOYW1lJykgPT09IGxhYmVsQmdDbGFzc25hbWVfMTtcbiAgICAgIH0pOyAvLyDoi6XkvKDlhaXnmoTmlrDphY3nva7kuK3mnIkgbGFiZWzvvIzvvIjnlKjmiLfmsqHkvKDlhaXkvYbljp/lhYjmnIkgbGFiZWzvvIxsYWJlbCDkuZ/kvJrmnInlgLzvvIlcblxuICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICAvLyDoi6Xljp/lhYjkuI3lrZjlnKggbGFiZWzvvIzliJnnu5jliLbkuIDkuKrmlrDnmoQgbGFiZWxcbiAgICAgICAgdmFyIG5ld0xhYmVsID0gdGhpcy5kcmF3TGFiZWwoY2ZnLCBncm91cCk7XG4gICAgICAgIG5ld0xhYmVsLnNldCgnY2xhc3NOYW1lJywgbGFiZWxDbGFzc05hbWVfMSk7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQ2xhc3NOYW1lXzFdID0gbmV3TGFiZWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDoi6Xljp/lhYjlrZjlnKggbGFiZWzvvIzliJnmm7TmlrDmoLflvI/jgILkuI4gZ2V0TGFiZWxTdHlsZSDkuI3lkIzlnKjkuo7ov5nph4zpnIDopoHono3lkIjlvZPliY0gbGFiZWwg55qE5qC35byPXG4gICAgICAgIC8vIOiejeWQiCBzdHlsZSDku6XlpJbnmoTlsZ7mgKfvvJpwb3NpdGlvbiwgb2Zmc2V0LCAuLi5cbiAgICAgICAgaWYgKCF1cGRhdGVUeXBlIHx8IHVwZGF0ZVR5cGUgPT09ICdiYm94fGxhYmVsJyB8fCB0aGlzLml0ZW1UeXBlID09PSAnZWRnZScgJiYgdXBkYXRlVHlwZSAhPT0gJ3N0eWxlJykge1xuICAgICAgICAgIGxhYmVsQ2ZnID0gZGVlcE1peChsYWJlbENmZywgY2ZnLmxhYmVsQ2ZnKTtcbiAgICAgICAgfSAvLyDojrflj5bkvY3nva7kv6Hmga9cblxuXG4gICAgICAgIHZhciBjYWxjdWxhdGVTdHlsZSA9IHRoaXMuZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb24oY2ZnLCBsYWJlbENmZywgZ3JvdXApOyAvLyDlj5Ygbm9kZUxhYmVs77yMZWRnZUxhYmVsIOeahOmFjee9rumhuVxuXG4gICAgICAgIHZhciBjZmdTdHlsZSA9IChfYSA9IGNmZy5sYWJlbENmZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0eWxlOyAvLyBjb25zdCBjZmdCZ1N0eWxlID0gbGFiZWxDZmcuc3R5bGU/LmJhY2tncm91bmQ7XG4gICAgICAgIC8vIOmcgOimgeiejeWQiOW9k+WJjVxiIGxhYmVsIOeahOagt+W8jyBsYWJlbC5hdHRyKCnjgILkuI3lho3pnIDopoHlhajlsYAv6buY6K6k5qC35byP77yM5Zug5Li65bey57uP5bqU55So5Zyo5b2T5YmN55qEIGxhYmVsIOS4ilxuXG4gICAgICAgIHZhciBsYWJlbFN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGNhbGN1bGF0ZVN0eWxlKSwgY2ZnU3R5bGUpO1xuXG4gICAgICAgIHZhciByb3RhdGUgPSBsYWJlbFN0eWxlLnJvdGF0ZTtcbiAgICAgICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlOyAvLyDorqHnrpcgbGFiZWwg55qE5peL6L2s55+p6Zi1XG5cbiAgICAgICAgaWYgKCFpc05hTihyb3RhdGUpICYmIHJvdGF0ZSAhPT0gJycpIHtcbiAgICAgICAgICAvLyBpZiBHIDQueCBkZWZpbmUgdGhlIHJvdGF0ZUF0U3RhcnQsIHVzZSBpdCBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29kZXNcbiAgICAgICAgICB2YXIgcm90YXRlTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgICAgIHJvdGF0ZU1hdHJpeCA9IHRyYW5zZm9ybShyb3RhdGVNYXRyaXgsIFtbJ3QnLCAtbGFiZWxTdHlsZS54LCAtbGFiZWxTdHlsZS55XSwgWydyJywgcm90YXRlXSwgWyd0JywgbGFiZWxTdHlsZS54LCBsYWJlbFN0eWxlLnldXSk7XG4gICAgICAgICAgbGFiZWxTdHlsZS5tYXRyaXggPSByb3RhdGVNYXRyaXg7XG4gICAgICAgICAgbGFiZWwuYXR0cihsYWJlbFN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoKChfYiA9IGxhYmVsLmdldE1hdHJpeCgpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbNF0pICE9PSAxKSB7XG4gICAgICAgICAgICBsYWJlbC5yZXNldE1hdHJpeCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxhYmVsLmF0dHIobGFiZWxTdHlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxhYmVsQmcpIHtcbiAgICAgICAgICBpZiAobGFiZWxTdHlsZS5iYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgICBsYWJlbEJnID0gdGhpcy5kcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCk7XG4gICAgICAgICAgICBsYWJlbEJnLnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZV8xKTtcbiAgICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQmdDbGFzc25hbWVfMV0gPSBsYWJlbEJnO1xuICAgICAgICAgICAgbGFiZWwudG9Gcm9udCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChsYWJlbFN0eWxlLmJhY2tncm91bmQpIHtcbiAgICAgICAgICB2YXIgY2FsY3VsYXRlQmdTdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApO1xuICAgICAgICAgIHZhciBsYWJlbEJnU3R5bGUgPSBjYWxjdWxhdGVCZ1N0eWxlO1xuXG4gICAgICAgICAgaWYgKCFpc05hTihyb3RhdGUpICYmIHJvdGF0ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHZhciBiZ1JvdGF0ZU1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICAgIGJnUm90YXRlTWF0cml4ID0gdHJhbnNmb3JtKGJnUm90YXRlTWF0cml4LCBbWyd0JywgLWxhYmVsQmdTdHlsZS54LCAtbGFiZWxCZ1N0eWxlLnldLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbEJnU3R5bGUueCwgbGFiZWxCZ1N0eWxlLnldXSk7XG4gICAgICAgICAgICBsYWJlbEJnU3R5bGUubWF0cml4ID0gYmdSb3RhdGVNYXRyaXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhYmVsQmcucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsYWJlbEJnLmF0dHIobGFiZWxCZ1N0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cC5yZW1vdmVDaGlsZChsYWJlbEJnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLy8gdXBkYXRlKGNmZywgaXRlbSkgLy8g6buY6K6k5LiN5a6a5LmJXG4gIGFmdGVyVXBkYXRlOiBmdW5jdGlvbiBhZnRlclVwZGF0ZShjZmcsIGl0ZW0pIHt9LFxuXG4gIC8qKlxuICAgKiDorr7nva7oioLngrnnmoTnirbmgIHvvIzkuLvopoHmmK/kuqTkupLnirbmgIHvvIzkuJrliqHnirbmgIHor7flnKggZHJhdyDmlrnms5XkuK3lrp7njrBcbiAgICog5Y2V5Zu+5b2i55qE6IqC54K55LuF6ICD6JmRIHNlbGVjdGVk44CBYWN0aXZlIOeKtuaAge+8jOacieWFtuS7lueKtuaAgemcgOaxgueahOeUqOaIt+iHquW3seWkjeWGmei/meS4quaWueazlVxuICAgKiBAb3ZlcnJpZGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBuYW1lIOeKtuaAgeWQjeensFxuICAgKiBAcGFyYW0gIHtTdHJpbmcgfCBCb29sZWFufSB2YWx1ZSDnirbmgIHlgLxcbiAgICogQHBhcmFtICB7RzYuSXRlbX0gaXRlbSDoioLngrlcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZShuYW1lLCB2YWx1ZSwgaXRlbSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgX2M7XG5cbiAgICB2YXIgc2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICBpZiAoIXNoYXBlIHx8IHNoYXBlLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIHN0YXRlTmFtZSA9IGlzQm9vbGVhbih2YWx1ZSkgPyBuYW1lIDogbmFtZSArIFwiOlwiICsgdmFsdWU7XG4gICAgdmFyIHNoYXBlU3RhdGVTdHlsZSA9IHRoaXMuZ2V0U3RhdGVTdHlsZShzdGF0ZU5hbWUsIGl0ZW0pO1xuICAgIHZhciBpdGVtU3RhdGVTdHlsZSA9IGl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZU5hbWUpOyAvLyBjb25zdCBvcmlnaW5TdHlsZSA9IGl0ZW0uZ2V0T3JpZ2luU3R5bGUoKTtcbiAgICAvLyDkuI3lhYHorrjorr7nva7kuIDkuKrkuI3lrZjlnKjnmoTnirbmgIFcblxuICAgIGlmICghaXRlbVN0YXRlU3R5bGUgJiYgIXNoYXBlU3RhdGVTdHlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g6KaB6K6+572u5oiW5Y+W5raI55qE54q25oCB55qE5qC35byPXG4gICAgLy8g5b2T5rKh5pyJIHN0YXRlIOeKtuaAgeaXtu+8jOm7mOiupOS9v+eUqCBtb2RlbC5zdGF0ZVN0eWxlcyDkuK3nmoTmoLflvI9cblxuXG4gICAgdmFyIHN0eWxlcyA9IG1peCh7fSwgaXRlbVN0YXRlU3R5bGUgfHwgc2hhcGVTdGF0ZVN0eWxlKTtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpOyAvLyDku47lm77lhYPntKDnjrDmnInnmoTmoLflvI/kuK3liKDpmaTmnKzmrKHopoHlj5bmtojnmoQgc3RhdGVzIOS4reWtmOWcqOeahOWxnuaAp+WAvOOAguS9v+eUqOWvueixoeajgOe0ouabtOW/q1xuXG4gICAgdmFyIGtlcHRBdHRycyA9IHtcbiAgICAgIHg6IDEsXG4gICAgICB5OiAxLFxuICAgICAgY3g6IDEsXG4gICAgICBjeTogMVxuICAgIH07XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAga2VwdEF0dHJzLnIgPSAxO1xuICAgICAga2VwdEF0dHJzLndpZHRoID0gMTtcbiAgICAgIGtlcHRBdHRycy5oZWlnaHQgPSAxO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGtleSkge1xuICAgICAgICB2YXIgX2Q7XG5cbiAgICAgICAgdmFyIHN0eWxlID0gc3R5bGVzW2tleV07XG5cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpICYmICFBUlJPV1MuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHZhciBzdWJTaGFwZSA9ICgoX2MgPSBncm91cFsnc2hhcGVNYXAnXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jW2tleV0pIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgnbmFtZScpID09PSBrZXk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3ViU2hhcGUgPT09IG51bGwgfHwgc3ViU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1YlNoYXBlLmF0dHIoc3R5bGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIOmdnue6r+Wvueixoe+8jOWImeiupOS4uuaYr+iuvue9ruWIsCBrZXlTaGFwZSDkuIrpnaLnmoRcbiAgICAgICAgICBzaGFwZS5hdHRyKChfZCA9IHt9LCBfZFtrZXldID0gc3R5bGUsIF9kKSk7XG4gICAgICAgIH1cbiAgICAgIH07IC8vIHN0eWxlIOS4uuimgeiuvue9rueahOeKtuaAgeeahOagt+W8j1xuXG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzdHlsZXMpIHtcbiAgICAgICAgX2xvb3BfMihrZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDmiYDmnInnlJ/mlYjnmoQgc3RhdGUg55qE5qC35byPXG4gICAgICB2YXIgZW5hYmxlU3RhdGVzU3R5bGUgPSBjbG9uZUJlc2lkZXNJbWcoaXRlbS5nZXRDdXJyZW50U3RhdGVzU3R5bGUoKSk7XG4gICAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7IC8vIOWOn+Wni+agt+W8j1xuXG4gICAgICB2YXIgb3JpZ2luU3R5bGVfMSA9IG1peCh7fSwgbW9kZWwuc3R5bGUsIGNsb25lQmVzaWRlc0ltZyhpdGVtLmdldE9yaWdpblN0eWxlKCkpKTtcbiAgICAgIHZhciBrZXlTaGFwZU5hbWVfMSA9IHNoYXBlLmdldCgnbmFtZScpOyAvLyBjbG9uaW5nICBzaGFwZS5hdHRyKCksIGtleXMuZm9yRWFjaCB0byBhdm9pZCBjbG9uaW5nIHRoZSBpbWcgYXR0ciwgd2hpY2ggbGVhZHMgdG8gbWF4aW11bSBjbG9uZSBoZWFwICMyMzgzXG4gICAgICAvLyBjb25zdCBrZXlTaGFwZVN0eWxlcyA9IGNsb25lKHNoYXBlLmF0dHIoKSlcblxuICAgICAgdmFyIHNoYXBlQXR0cnNfMSA9IHNoYXBlLmF0dHIoKTtcbiAgICAgIHZhciBrZXlTaGFwZVN0eWxlc18xID0ge307XG4gICAgICBPYmplY3Qua2V5cyhzaGFwZUF0dHJzXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnaW1nJykgcmV0dXJuO1xuICAgICAgICB2YXIgYXR0ciA9IHNoYXBlQXR0cnNfMVtrZXldO1xuXG4gICAgICAgIGlmIChhdHRyICYmIF90eXBlb2YoYXR0cikgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAga2V5U2hhcGVTdHlsZXNfMVtrZXldID0gY2xvbmUoYXR0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5U2hhcGVTdHlsZXNfMVtrZXldID0gYXR0cjtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIOW3suacieagt+W8jyAtIOimgeWPlua2iOeahOeKtuaAgeeahOagt+W8j1xuXG4gICAgICB2YXIgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlID0ge307XG5cbiAgICAgIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gX2xvb3BfMyhwKSB7XG4gICAgICAgIHZhciBzdHlsZSA9IHN0eWxlc1twXTtcblxuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChzdHlsZSkgJiYgIUFSUk9XUy5pbmNsdWRlcyhwKSkge1xuICAgICAgICAgIHZhciBzdWJTaGFwZV8xID0gZ3JvdXBbJ3NoYXBlTWFwJ11bcF0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSBwO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHN1YlNoYXBlXzEpIHtcbiAgICAgICAgICAgIHZhciBzdWJTaGFwZVN0eWxlc18xID0gY2xvbmVCZXNpZGVzSW1nKHN1YlNoYXBlXzEuYXR0cigpKTtcbiAgICAgICAgICAgIGVhY2goc3R5bGUsIGZ1bmN0aW9uICh2LCBrZXkpIHtcbiAgICAgICAgICAgICAgaWYgKHAgPT09IGtleVNoYXBlTmFtZV8xICYmIGtleVNoYXBlU3R5bGVzXzFba2V5XSAmJiAha2VwdEF0dHJzW2tleV0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUga2V5U2hhcGVTdHlsZXNfMVtrZXldO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZV8xID0gb3JpZ2luU3R5bGVfMVtwXVtrZXldIHx8IFNIQVBFU19ERUZBVUxUX0FUVFJTW3R5cGVdW2tleV07XG4gICAgICAgICAgICAgICAgc2hhcGUuYXR0cihrZXksIHZhbHVlXzEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN1YlNoYXBlU3R5bGVzXzFba2V5XSB8fCBzdWJTaGFwZVN0eWxlc18xW2tleV0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViU2hhcGVTdHlsZXNfMVtrZXldO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZV8yID0gb3JpZ2luU3R5bGVfMVtwXVtrZXldIHx8IFNIQVBFU19ERUZBVUxUX0FUVFJTW3R5cGVdW2tleV07XG4gICAgICAgICAgICAgICAgc3ViU2hhcGVfMS5hdHRyKGtleSwgdmFsdWVfMik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlW3BdID0gc3ViU2hhcGVTdHlsZXNfMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGtleVNoYXBlU3R5bGVzXzFbcF0gJiYgIWtlcHRBdHRyc1twXSkge1xuICAgICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGVzXzFbcF07XG4gICAgICAgICAgICB2YXIgdmFsdWVfMyA9IG9yaWdpblN0eWxlXzFbcF0gfHwgKG9yaWdpblN0eWxlXzFba2V5U2hhcGVOYW1lXzFdID8gb3JpZ2luU3R5bGVfMVtrZXlTaGFwZU5hbWVfMV1bcF0gOiB1bmRlZmluZWQpIHx8IFNIQVBFU19ERUZBVUxUX0FUVFJTW3R5cGVdW3BdO1xuICAgICAgICAgICAgc2hhcGUuYXR0cihwLCB2YWx1ZV8zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07IC8vIHN0eWxlcyDkuLropoHlj5bmtojnmoTnirbmgIHnmoTmoLflvI9cblxuXG4gICAgICBmb3IgKHZhciBwIGluIHN0eWxlcykge1xuICAgICAgICBfbG9vcF8zKHApO1xuICAgICAgfSAvLyDku47lm77lhYPntKDnjrDmnInnmoTmoLflvI/kuK3liKDpmaTmnKzmrKHopoHlj5bmtojnmoQgc3RhdGVzIOS4reWtmOWcqOeahOWxnuaAp+WAvOWQju+8jFxuICAgICAgLy8g5aaC5p6cIGtleVNoYXBlIOaciSBuYW1lIOWxnuaAp++8jOWImSBmaWx0ZXREaXNhYmxlU3RhdGVzU3R5bGUg55qE5qC85byP5Li6IHsga2V5U2hhcGVOYW1lOiB7fSB9XG4gICAgICAvLyDlkKbliJnkuLrmma7pgJrlr7nosaFcblxuXG4gICAgICBpZiAoIWtleVNoYXBlTmFtZV8xKSB7XG4gICAgICAgIG1peChmaWx0ZXREaXNhYmxlU3RhdGVzU3R5bGUsIGtleVNoYXBlU3R5bGVzXzEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlW2tleVNoYXBlTmFtZV8xXSA9IGtleVNoYXBlU3R5bGVzXzE7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBlbmFibGVTdGF0ZXNTdHlsZSkge1xuICAgICAgICBpZiAoa2VwdEF0dHJzW2tleV0pIGNvbnRpbnVlO1xuICAgICAgICB2YXIgZW5hYmxlU3R5bGUgPSBlbmFibGVTdGF0ZXNTdHlsZVtrZXldO1xuXG4gICAgICAgIGlmICghaXNQbGFpbk9iamVjdChlbmFibGVTdHlsZSkgfHwgQVJST1dTLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAvLyDmiormoLflvI/lsZ7mgKdtZXJnZeWIsGtleVNoYXBl5LitXG4gICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgbWl4KG9yaWdpblN0eWxlXzEsIChfYSA9IHt9LCBfYVtrZXldID0gZW5hYmxlU3R5bGUsIF9hKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1peChvcmlnaW5TdHlsZV8xW2tleVNoYXBlTmFtZV8xXSwgKF9iID0ge30sIF9iW2tleV0gPSBlbmFibGVTdHlsZSwgX2IpKTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5TdHlsZV8xW2tleV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVsZXRlIGVuYWJsZVN0YXRlc1N0eWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIG9yaWdpbnN0eWxlcyA9IHt9O1xuICAgICAgZGVlcE1peChvcmlnaW5zdHlsZXMsIG9yaWdpblN0eWxlXzEsIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZSwgZW5hYmxlU3RhdGVzU3R5bGUpO1xuICAgICAgdmFyIGtleVNoYXBlU2V0dGVkID0gZmFsc2U7XG5cbiAgICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gX2xvb3BfNChvcmlnaW5LZXkpIHtcbiAgICAgICAgdmFyIF9lLCBfZjtcblxuICAgICAgICB2YXIgc3R5bGUgPSBvcmlnaW5zdHlsZXNbb3JpZ2luS2V5XTtcblxuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChzdHlsZSkgJiYgIUFSUk9XUy5pbmNsdWRlcyhvcmlnaW5LZXkpKSB7XG4gICAgICAgICAgdmFyIHN1YlNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bb3JpZ2luS2V5XSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGUuZ2V0KCduYW1lJykgPT09IG9yaWdpbktleTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChzdWJTaGFwZSkge1xuICAgICAgICAgICAgLy8gVGhlIHRleHQncyBwb3NpdGlvbiBhbmQgbWF0cml4IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFmZmVjdGVkIGJ5IHN0YXRlc1xuICAgICAgICAgICAgaWYgKHN1YlNoYXBlLmdldCgndHlwZScpID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlLng7XG4gICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS55O1xuICAgICAgICAgICAgICBkZWxldGUgc3R5bGUubWF0cml4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3JpZ2luS2V5ID09PSBrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS5yO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAga2V5U2hhcGVTZXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWtleVNoYXBlU2V0dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlXzQgPSBzdHlsZSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtvcmlnaW5LZXldOyAvLyDlvZPmm7TmlrAgY29tYm8g54q25oCB5pe277yM5b2T5LiN5a2Y5ZyoIGtleVNoYXBlTmFtZSDml7blgJnvvIzliJnorqTkuLrmmK/orr7nva7liLAga2V5U2hhcGUg5LiK6Z2i55qEXG5cbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBzaGFwZS5hdHRyKChfZSA9IHt9LCBfZVtvcmlnaW5LZXldID0gdmFsdWVfNCwgX2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUuYXR0cigoX2YgPSB7fSwgX2Zbb3JpZ2luS2V5XSA9IHZhbHVlXzQsIF9mKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBvcmlnaW5LZXkgaW4gb3JpZ2luc3R5bGVzKSB7XG4gICAgICAgIF9sb29wXzQob3JpZ2luS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluS4jeWQjOeKtuaAgeS4i+eahOagt+W8j1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIE5vZGXmiJZFZGdl55qE5a6e5L6LXG4gICAqIEByZXR1cm4ge29iamVjdH0g5qC35byPXG4gICAqL1xuICBnZXRTdGF0ZVN0eWxlOiBmdW5jdGlvbiBnZXRTdGF0ZVN0eWxlKG5hbWUsIGl0ZW0pIHtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHZhciBfYSA9IHRoaXMuZ2V0T3B0aW9ucyhtb2RlbCksXG4gICAgICAgIHN0YXRlU3R5bGVzID0gX2Euc3RhdGVTdHlsZXMsXG4gICAgICAgIF9iID0gX2Euc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG5cbiAgICB2YXIgbW9kZWxTdGF0ZVN0eWxlID0gbW9kZWwuc3RhdGVTdHlsZXMgPyBtb2RlbC5zdGF0ZVN0eWxlc1tuYW1lXSA6IHN0YXRlU3R5bGVzICYmIHN0YXRlU3R5bGVzW25hbWVdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBjbG9uZShtb2RlbFN0YXRlU3R5bGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtaXgoe30sIHN0eWxlLCBtb2RlbFN0YXRlU3R5bGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmjqfliLbngrlcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g6ZSa54K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ6ZSa54K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyhjZmcpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIGFuY2hvclBvaW50cyA9IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuYW5jaG9yUG9pbnRzKSB8fCAoKF9hID0gdGhpcy5nZXRDdXN0b21Db25maWcoY2ZnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFuY2hvclBvaW50cykgfHwgKChfYiA9IHRoaXMub3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFuY2hvclBvaW50cyk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50cztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js ***! \***************************************************************************/ /*! exports provided: xmlDataRenderer, parseXML, getBBox, generateTarget, compareTwoTarget, createNodeFromXML */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"xmlDataRenderer\", function() { return xmlDataRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseXML\", function() { return parseXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateTarget\", function() { return generateTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compareTwoTarget\", function() { return compareTwoTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNodeFromXML\", function() { return createNodeFromXML; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * @fileOverview 从xml建立自定义Node,包含update\n * @author xuzhi.mxz@antfin.com\n */\n\n\n\n/**\n * 一种更宽松的JSON 解析,如果遇到不符合规范的字段会直接转为字符串\n * @param text json 内容\n */\n\nfunction looseJSONParse(text) {\n if (typeof text !== 'string') {\n return text;\n }\n\n var safeParse = function safeParse(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n try {\n return JSON.parse(str.trim());\n } catch (e) {\n return str.trim();\n }\n };\n\n var firstAttempt = safeParse(text);\n\n if (typeof firstAttempt !== 'string') {\n return firstAttempt;\n }\n\n var tail = function tail(arr) {\n return arr[arr.length - 1];\n };\n\n var str = text.trim();\n var objectStack = [];\n var syntaxStack = [];\n\n var isLastPair = function isLastPair() {\n var syntaxes = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n syntaxes[_i] = arguments[_i];\n }\n\n return syntaxes.some(function (syntax) {\n return tail(syntaxStack) === syntax;\n });\n };\n\n var getValueStore = function getValueStore() {\n return tail(objectStack);\n };\n\n var rst = null;\n var i = 0;\n var temp = '';\n\n while (i < str.length) {\n var nowChar = str[i];\n var isInString = isLastPair('\"', \"'\");\n\n if (!isInString && !nowChar.trim()) {\n i += 1;\n continue;\n }\n\n var isLastTranslate = str[i - 1] === '\\\\';\n var isInObject = isLastPair('}');\n var isInArray = isLastPair(']');\n var isWaitingValue = isLastPair(',');\n var tempArr = getValueStore();\n\n if (isInString) {\n if (tail(syntaxStack) === nowChar && !isLastTranslate) {\n syntaxStack.pop();\n var value = safeParse(temp);\n tempArr.push(value);\n rst = value;\n temp = '';\n } else {\n temp += nowChar;\n }\n } else if (isInArray && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n } else if (isInObject && nowChar === ':') {\n syntaxStack.push(',');\n\n if (temp) {\n tempArr.push(temp);\n temp = '';\n }\n } else if (isWaitingValue && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n syntaxStack.pop();\n } else if (nowChar === '}' && (isInObject || isWaitingValue)) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n if (isWaitingValue) {\n syntaxStack.pop();\n }\n\n var obj = {};\n\n for (var c = 1; c < tempArr.length; c += 2) {\n obj[tempArr[c - 1]] = tempArr[c];\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(obj);\n }\n\n syntaxStack.pop();\n rst = obj;\n } else if (nowChar === ']' && isInArray) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(tempArr);\n }\n\n syntaxStack.pop();\n rst = tempArr;\n } else if (nowChar === '{') {\n objectStack.push([]);\n syntaxStack.push('}');\n } else if (nowChar === '[') {\n objectStack.push([]);\n syntaxStack.push(']');\n } else if (nowChar === '\"') {\n syntaxStack.push('\"');\n } else if (nowChar === \"'\") {\n syntaxStack.push(\"'\");\n } else {\n temp += nowChar;\n }\n\n i += 1;\n }\n\n return rst || temp;\n}\n\nvar keyConvert = function keyConvert(str) {\n return str.split('-').reduce(function (a, b) {\n return a + b.charAt(0).toUpperCase() + b.slice(1);\n });\n};\n/**\n * 简单的一个{{}}模板渲染,不包含任何复杂语法\n * @param xml\n */\n\n\nvar xmlDataRenderer = function xmlDataRenderer(xml) {\n return function (data) {\n var len = xml.length;\n var arr = [];\n var i = 0;\n var tmp = '';\n\n while (i < len) {\n if (xml[i] === '{' && xml[i + 1] === '{') {\n arr.push(tmp);\n tmp = '';\n i += 2;\n } else if (xml[i] === '}' && xml[i + 1] === '}') {\n if (arr.length) {\n var last = arr.pop();\n tmp = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(data, tmp, last.endsWith('=') ? \"\\\"{\" + tmp + \"}\\\"\" : tmp);\n arr.push(last + tmp);\n }\n\n i += 2;\n tmp = '';\n } else {\n tmp += xml[i];\n i += 1;\n }\n }\n\n arr.push(tmp);\n return arr.map(function (e, index) {\n return arr[index - 1] && arr[index - 1].endsWith('=') ? \"\\\"{\" + e + \"}\\\"\" : e;\n }).join('');\n };\n};\n/**\n * 解析XML,并转化为相应的JSON结构\n * @param xml xml解析后的节点\n */\n\nfunction parseXML(xml, cfg) {\n var attrs = {};\n var keys = xml.getAttributeNames && xml.getAttributeNames() || [];\n var children = xml.children && Array.from(xml.children).map(function (e) {\n return parseXML(e, cfg);\n });\n var rst = {};\n var tagName = xml.tagName ? xml.tagName.toLowerCase() : 'group';\n\n if (tagName === 'text') {\n attrs.text = xml.innerText;\n }\n\n rst.type = tagName;\n\n if (tagName === 'img') {\n rst.type = 'image';\n }\n\n Array.from(keys).forEach(function (k) {\n var key = keyConvert(k);\n var val = xml.getAttribute(k);\n\n try {\n if (key === 'style' || key === 'attrs') {\n var style = looseJSONParse(val);\n attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), style);\n } else {\n rst[key] = looseJSONParse(val);\n }\n } catch (e) {\n if (key === 'style') {\n throw e;\n }\n\n rst[key] = val;\n }\n });\n rst.attrs = attrs;\n\n if (cfg && cfg.style && rst.name && _typeof(cfg.style[rst.name]) === 'object') {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style[rst.name]);\n }\n\n if (cfg && cfg.style && rst.keyshape) {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style);\n }\n\n if (children.length) {\n rst.children = children;\n }\n\n return rst;\n}\n/**\n * 根据偏移量和内部节点最终的bounding box来得出该shape最终的bbox\n */\n\nfunction getBBox(node, offset, chilrenBBox) {\n var _a = node.attrs,\n attrs = _a === void 0 ? {} : _a;\n var bbox = {\n x: offset.x || 0,\n y: offset.y || 0,\n width: chilrenBBox.width || 0,\n height: chilrenBBox.height || 0\n };\n var shapeHeight, shapeWidth;\n\n switch (node.type) {\n case 'maker':\n case 'circle':\n if (attrs.r) {\n shapeWidth = 2 * attrs.r;\n shapeHeight = 2 * attrs.r;\n }\n\n break;\n\n case 'text':\n if (attrs.text) {\n shapeWidth = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getTextSize\"])(attrs.text, attrs.fontSize || 12)[0];\n shapeHeight = 16;\n bbox.y += shapeHeight;\n bbox.height = shapeHeight;\n bbox.width = shapeWidth;\n node.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n fontSize: 12,\n fill: '#000'\n }, attrs);\n }\n\n break;\n\n default:\n if (attrs.width) {\n shapeWidth = attrs.width;\n }\n\n if (attrs.height) {\n shapeHeight = attrs.height;\n }\n\n }\n\n if (shapeHeight >= 0) {\n bbox.height = shapeHeight;\n }\n\n if (shapeWidth >= 0) {\n bbox.width = shapeWidth;\n }\n\n if (attrs.marginTop) {\n bbox.y += attrs.marginTop;\n }\n\n if (attrs.marginLeft) {\n bbox.x += attrs.marginLeft;\n }\n\n return bbox;\n}\n/**\n * 把从xml计算出的结构填上位置信息,补全attrs\n * @param target\n * @param lastOffset\n */\n\nfunction generateTarget(target, lastOffset) {\n var _a;\n\n if (lastOffset === void 0) {\n lastOffset = {\n x: 0,\n y: 0\n };\n }\n\n var defaultBbox = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, lastOffset);\n\n if ((_a = target.children) === null || _a === void 0 ? void 0 : _a.length) {\n var _b = target.attrs,\n attrs = _b === void 0 ? {} : _b;\n var marginTop = attrs.marginTop;\n\n var offset = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, lastOffset);\n\n if (marginTop) {\n offset.y += marginTop;\n }\n\n for (var index = 0; index < target.children.length; index++) {\n target.children[index].attrs.key = (attrs.key || 'root') + \" -\" + index + \" \";\n var node = generateTarget(target.children[index], offset);\n\n if (node.bbox) {\n var bbox = node.bbox;\n\n if (node.attrs.next === 'inline') {\n offset.x += node.bbox.width;\n } else {\n offset.y += node.bbox.height;\n }\n\n if (bbox.width + bbox.x > defaultBbox.width) {\n defaultBbox.width = bbox.width + bbox.x;\n }\n\n if (bbox.height + bbox.y > defaultBbox.height) {\n defaultBbox.height = bbox.height + bbox.y;\n }\n }\n }\n }\n\n target.bbox = getBBox(target, lastOffset, defaultBbox);\n target.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, target.attrs), target.bbox);\n return target;\n}\n/**\n * 对比前后两个最终计算出来的node,并对比出最小改动,\n * 动作: 'add' 添加节点 | ’delete‘ 删除节点 | ’change‘ 改变节点attrs | 'restructure' 重构节点\n * @param nowTarget\n * @param formerTarget\n */\n\nfunction compareTwoTarget(nowTarget, formerTarget) {\n var _a, _b, _c, _d;\n\n var type = (nowTarget || {}).type;\n var key = ((formerTarget === null || formerTarget === void 0 ? void 0 : formerTarget.attrs) || {}).key;\n\n if (key && nowTarget) {\n nowTarget.attrs.key = key;\n }\n\n if (!nowTarget && formerTarget) {\n return {\n action: 'delete',\n val: formerTarget,\n type: type,\n key: key\n };\n }\n\n if (nowTarget && !formerTarget) {\n return {\n action: 'add',\n val: nowTarget,\n type: type\n };\n }\n\n if (!nowTarget && !formerTarget) {\n return {\n action: 'same',\n type: type\n };\n }\n\n var children = [];\n\n if (((_a = nowTarget.children) === null || _a === void 0 ? void 0 : _a.length) > 0 || ((_b = formerTarget.children) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n var length_1 = Math.max((_c = nowTarget.children) === null || _c === void 0 ? void 0 : _c.length, (_d = formerTarget.children) === null || _d === void 0 ? void 0 : _d.length);\n var formerChilren = formerTarget.children || [];\n var nowChilren = nowTarget.children || [];\n\n for (var index = 0; index < length_1; index += 1) {\n children.push(compareTwoTarget(nowChilren[index], formerChilren[index]));\n }\n }\n\n var formerKeys = Object.keys(formerTarget.attrs);\n var nowKeys = Object.keys(nowTarget.attrs);\n\n if (formerTarget.type !== nowTarget.type) {\n return {\n action: 'restructure',\n nowTarget: nowTarget,\n formerTarget: formerTarget,\n key: key,\n children: children\n };\n }\n\n if (formerKeys.filter(function (e) {\n return e !== 'children';\n }).some(function (e) {\n return nowTarget.attrs[e] !== formerTarget.attrs[e] || !nowKeys.includes(e);\n })) {\n return {\n action: 'change',\n val: nowTarget,\n children: children,\n type: type,\n key: key\n };\n }\n\n return {\n action: 'same',\n children: children,\n type: type,\n key: key\n };\n}\n/**\n * 根据xml或者返回xml的函数构建自定义节点的结构\n * @param gen\n */\n\nfunction createNodeFromXML(gen) {\n var structures = {};\n\n var compileXML = function compileXML(cfg) {\n var rawStr = typeof gen === 'function' ? gen(cfg) : gen;\n var target = xmlDataRenderer(rawStr)(cfg);\n var xmlParser = document.createElement('div');\n xmlParser.innerHTML = target;\n var xml = xmlParser.children[0];\n var result = generateTarget(parseXML(xml, cfg));\n xmlParser.remove();\n return result;\n };\n\n return {\n draw: function draw(cfg, group) {\n var resultTarget = compileXML(cfg);\n var keyshape = group;\n\n var renderTarget = function renderTarget(target) {\n var _a = target.attrs,\n attrs = _a === void 0 ? {} : _a,\n bbox = target.bbox,\n type = target.type,\n children = target.children,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(target, [\"attrs\", \"bbox\", \"type\", \"children\"]);\n\n if (target.type !== 'group') {\n var shape = group.addShape(target.type, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n attrs: attrs,\n origin: {\n bbox: bbox,\n type: type,\n children: children\n }\n }, rest));\n\n if (target.keyshape) {\n keyshape = shape;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return renderTarget(n);\n });\n }\n };\n\n renderTarget(resultTarget);\n structures[cfg.id] = [resultTarget];\n return keyshape;\n },\n update: function update(cfg, node) {\n if (!structures[cfg.id]) {\n structures[cfg.id] = [];\n }\n\n var container = node.getContainer();\n var children = container.get('children');\n var newTarget = compileXML(cfg);\n var lastTarget = structures[cfg.id].pop();\n var diffResult = compareTwoTarget(newTarget, lastTarget);\n\n var addShape = function addShape(shape) {\n var _a;\n\n if (shape.type !== 'group') {\n container.addShape(shape.type, {\n attrs: shape.attrs\n });\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return addShape(e);\n });\n }\n };\n\n var delShape = function delShape(shape) {\n var _a;\n\n var targetShape = children.find(function (e) {\n return e.attrs.key === shape.attrs.key;\n });\n\n if (targetShape) {\n container.removeChild(targetShape);\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return delShape(e);\n });\n }\n };\n\n var updateTarget = function updateTarget(target) {\n var key = target.key;\n\n if (target.type !== 'group') {\n var targetShape = children.find(function (e) {\n return e.attrs.key === key;\n });\n\n switch (target.action) {\n case 'change':\n if (targetShape) {\n var originAttr = target.val.keyshape ? node.getOriginStyle() : {};\n targetShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, originAttr), target.val.attrs));\n }\n\n break;\n\n case 'add':\n addShape(target.val);\n break;\n\n case 'delete':\n delShape(target.val);\n break;\n\n case 'restructure':\n delShape(target.formerTarget);\n addShape(target.nowTarget);\n break;\n\n default:\n break;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return updateTarget(n);\n });\n }\n };\n\n updateTarget(diffResult);\n structures[cfg.id].push(newTarget);\n },\n getAnchorPoints: function getAnchorPoints() {\n return [[0, 0.5], [1, 0.5], [0.5, 1], [0.5, 0]];\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3htbC5qcz9kZGIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQXVCLDJCQUEyQiwyRUFBMkUsa0NBQWtDLG1CQUFtQixHQUFHLEVBQUUsT0FBTyxrQ0FBa0MsOEhBQThILEdBQUcsRUFBRSxxQkFBcUI7O0FBRXhYO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ1I7QUFDYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyx3QkFBd0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssd0JBQXdCO0FBQzdCO0FBQ0EseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsT0FBTyx1QkFBdUIsc0JBQXNCO0FBQ3BEO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUcscUNBQXFDLFlBQVk7QUFDcEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrRUFBa0UsVUFBVTtBQUM1RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3BDLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsZ0JBQWdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNwQzs7QUFFQTtBQUNBLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLGlFQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0Isc0RBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7O0FBRUEsaUJBQWlCLHNEQUFRLEdBQUc7O0FBRTVCO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBLDZCQUE2QjtBQUM3QixtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9EQUFNOztBQUV6QjtBQUNBLGtEQUFrRCxzREFBUTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3htbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IOS7jnhtbOW7uueri+iHquWumuS5iU5vZGXvvIzljIXlkKt1cGRhdGVcbiAqIEBhdXRob3IgeHV6aGkubXh6QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXRUZXh0U2l6ZSB9IGZyb20gJy4uL3V0aWwvZ3JhcGhpYyc7XG4vKipcbiAqIOS4gOenjeabtOWuveadvueahEpTT04g6Kej5p6Q77yM5aaC5p6c6YGH5Yiw5LiN56ym5ZCI6KeE6IyD55qE5a2X5q615Lya55u05o6l6L2s5Li65a2X56ym5LiyXG4gKiBAcGFyYW0gdGV4dCBqc29uIOWGheWuuVxuICovXG5cbmZ1bmN0aW9uIGxvb3NlSlNPTlBhcnNlKHRleHQpIHtcbiAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdmFyIHNhZmVQYXJzZSA9IGZ1bmN0aW9uIHNhZmVQYXJzZShzdHIpIHtcbiAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0ci50cmltKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBzdHIudHJpbSgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZmlyc3RBdHRlbXB0ID0gc2FmZVBhcnNlKHRleHQpO1xuXG4gIGlmICh0eXBlb2YgZmlyc3RBdHRlbXB0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmaXJzdEF0dGVtcHQ7XG4gIH1cblxuICB2YXIgdGFpbCA9IGZ1bmN0aW9uIHRhaWwoYXJyKSB7XG4gICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XG4gIH07XG5cbiAgdmFyIHN0ciA9IHRleHQudHJpbSgpO1xuICB2YXIgb2JqZWN0U3RhY2sgPSBbXTtcbiAgdmFyIHN5bnRheFN0YWNrID0gW107XG5cbiAgdmFyIGlzTGFzdFBhaXIgPSBmdW5jdGlvbiBpc0xhc3RQYWlyKCkge1xuICAgIHZhciBzeW50YXhlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHN5bnRheGVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bnRheGVzLnNvbWUoZnVuY3Rpb24gKHN5bnRheCkge1xuICAgICAgcmV0dXJuIHRhaWwoc3ludGF4U3RhY2spID09PSBzeW50YXg7XG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIGdldFZhbHVlU3RvcmUgPSBmdW5jdGlvbiBnZXRWYWx1ZVN0b3JlKCkge1xuICAgIHJldHVybiB0YWlsKG9iamVjdFN0YWNrKTtcbiAgfTtcblxuICB2YXIgcnN0ID0gbnVsbDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgdGVtcCA9ICcnO1xuXG4gIHdoaWxlIChpIDwgc3RyLmxlbmd0aCkge1xuICAgIHZhciBub3dDaGFyID0gc3RyW2ldO1xuICAgIHZhciBpc0luU3RyaW5nID0gaXNMYXN0UGFpcignXCInLCBcIidcIik7XG5cbiAgICBpZiAoIWlzSW5TdHJpbmcgJiYgIW5vd0NoYXIudHJpbSgpKSB7XG4gICAgICBpICs9IDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgaXNMYXN0VHJhbnNsYXRlID0gc3RyW2kgLSAxXSA9PT0gJ1xcXFwnO1xuICAgIHZhciBpc0luT2JqZWN0ID0gaXNMYXN0UGFpcignfScpO1xuICAgIHZhciBpc0luQXJyYXkgPSBpc0xhc3RQYWlyKCddJyk7XG4gICAgdmFyIGlzV2FpdGluZ1ZhbHVlID0gaXNMYXN0UGFpcignLCcpO1xuICAgIHZhciB0ZW1wQXJyID0gZ2V0VmFsdWVTdG9yZSgpO1xuXG4gICAgaWYgKGlzSW5TdHJpbmcpIHtcbiAgICAgIGlmICh0YWlsKHN5bnRheFN0YWNrKSA9PT0gbm93Q2hhciAmJiAhaXNMYXN0VHJhbnNsYXRlKSB7XG4gICAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgICB2YXIgdmFsdWUgPSBzYWZlUGFyc2UodGVtcCk7XG4gICAgICAgIHRlbXBBcnIucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJzdCA9IHZhbHVlO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZW1wICs9IG5vd0NoYXI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0luQXJyYXkgJiYgbm93Q2hhciA9PT0gJywnKSB7XG4gICAgICBpZiAodGVtcCkge1xuICAgICAgICB0ZW1wQXJyLnB1c2goc2FmZVBhcnNlKHRlbXApKTtcbiAgICAgICAgdGVtcCA9ICcnO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNJbk9iamVjdCAmJiBub3dDaGFyID09PSAnOicpIHtcbiAgICAgIHN5bnRheFN0YWNrLnB1c2goJywnKTtcblxuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHRlbXApO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dhaXRpbmdWYWx1ZSAmJiBub3dDaGFyID09PSAnLCcpIHtcbiAgICAgIGlmICh0ZW1wKSB7XG4gICAgICAgIHRlbXBBcnIucHVzaChzYWZlUGFyc2UodGVtcCkpO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ30nICYmIChpc0luT2JqZWN0IHx8IGlzV2FpdGluZ1ZhbHVlKSkge1xuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHNhZmVQYXJzZSh0ZW1wKSk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzV2FpdGluZ1ZhbHVlKSB7XG4gICAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2JqID0ge307XG5cbiAgICAgIGZvciAodmFyIGMgPSAxOyBjIDwgdGVtcEFyci5sZW5ndGg7IGMgKz0gMikge1xuICAgICAgICBvYmpbdGVtcEFycltjIC0gMV1dID0gdGVtcEFycltjXTtcbiAgICAgIH1cblxuICAgICAgb2JqZWN0U3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChvYmplY3RTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdGFpbChvYmplY3RTdGFjaykucHVzaChvYmopO1xuICAgICAgfVxuXG4gICAgICBzeW50YXhTdGFjay5wb3AoKTtcbiAgICAgIHJzdCA9IG9iajtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09ICddJyAmJiBpc0luQXJyYXkpIHtcbiAgICAgIGlmICh0ZW1wKSB7XG4gICAgICAgIHRlbXBBcnIucHVzaChzYWZlUGFyc2UodGVtcCkpO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG5cbiAgICAgIG9iamVjdFN0YWNrLnBvcCgpO1xuXG4gICAgICBpZiAob2JqZWN0U3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHRhaWwob2JqZWN0U3RhY2spLnB1c2godGVtcEFycik7XG4gICAgICB9XG5cbiAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgcnN0ID0gdGVtcEFycjtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09ICd7Jykge1xuICAgICAgb2JqZWN0U3RhY2sucHVzaChbXSk7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKCd9Jyk7XG4gICAgfSBlbHNlIGlmIChub3dDaGFyID09PSAnWycpIHtcbiAgICAgIG9iamVjdFN0YWNrLnB1c2goW10pO1xuICAgICAgc3ludGF4U3RhY2sucHVzaCgnXScpO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ1wiJykge1xuICAgICAgc3ludGF4U3RhY2sucHVzaCgnXCInKTtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09IFwiJ1wiKSB7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKFwiJ1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVtcCArPSBub3dDaGFyO1xuICAgIH1cblxuICAgIGkgKz0gMTtcbiAgfVxuXG4gIHJldHVybiByc3QgfHwgdGVtcDtcbn1cblxudmFyIGtleUNvbnZlcnQgPSBmdW5jdGlvbiBrZXlDb252ZXJ0KHN0cikge1xuICByZXR1cm4gc3RyLnNwbGl0KCctJykucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEgKyBiLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgYi5zbGljZSgxKTtcbiAgfSk7XG59O1xuLyoqXG4gKiDnroDljZXnmoTkuIDkuKp7e3195qih5p2/5riy5p+T77yM5LiN5YyF5ZCr5Lu75L2V5aSN5p2C6K+t5rOVXG4gKiBAcGFyYW0geG1sXG4gKi9cblxuXG5leHBvcnQgdmFyIHhtbERhdGFSZW5kZXJlciA9IGZ1bmN0aW9uIHhtbERhdGFSZW5kZXJlcih4bWwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIGxlbiA9IHhtbC5sZW5ndGg7XG4gICAgdmFyIGFyciA9IFtdO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgdG1wID0gJyc7XG5cbiAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgaWYgKHhtbFtpXSA9PT0gJ3snICYmIHhtbFtpICsgMV0gPT09ICd7Jykge1xuICAgICAgICBhcnIucHVzaCh0bXApO1xuICAgICAgICB0bXAgPSAnJztcbiAgICAgICAgaSArPSAyO1xuICAgICAgfSBlbHNlIGlmICh4bWxbaV0gPT09ICd9JyAmJiB4bWxbaSArIDFdID09PSAnfScpIHtcbiAgICAgICAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IGFyci5wb3AoKTtcbiAgICAgICAgICB0bXAgPSBnZXQoZGF0YSwgdG1wLCBsYXN0LmVuZHNXaXRoKCc9JykgPyBcIlxcXCJ7XCIgKyB0bXAgKyBcIn1cXFwiXCIgOiB0bXApO1xuICAgICAgICAgIGFyci5wdXNoKGxhc3QgKyB0bXApO1xuICAgICAgICB9XG5cbiAgICAgICAgaSArPSAyO1xuICAgICAgICB0bXAgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRtcCArPSB4bWxbaV07XG4gICAgICAgIGkgKz0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcnIucHVzaCh0bXApO1xuICAgIHJldHVybiBhcnIubWFwKGZ1bmN0aW9uIChlLCBpbmRleCkge1xuICAgICAgcmV0dXJuIGFycltpbmRleCAtIDFdICYmIGFycltpbmRleCAtIDFdLmVuZHNXaXRoKCc9JykgPyBcIlxcXCJ7XCIgKyBlICsgXCJ9XFxcIlwiIDogZTtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTtcbn07XG4vKipcbiAqIOino+aekFhNTO+8jOW5tui9rOWMluS4uuebuOW6lOeahEpTT07nu5PmnoRcbiAqIEBwYXJhbSB4bWwgeG1s6Kej5p6Q5ZCO55qE6IqC54K5XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWE1MKHhtbCwgY2ZnKSB7XG4gIHZhciBhdHRycyA9IHt9O1xuICB2YXIga2V5cyA9IHhtbC5nZXRBdHRyaWJ1dGVOYW1lcyAmJiB4bWwuZ2V0QXR0cmlidXRlTmFtZXMoKSB8fCBbXTtcbiAgdmFyIGNoaWxkcmVuID0geG1sLmNoaWxkcmVuICYmIEFycmF5LmZyb20oeG1sLmNoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gcGFyc2VYTUwoZSwgY2ZnKTtcbiAgfSk7XG4gIHZhciByc3QgPSB7fTtcbiAgdmFyIHRhZ05hbWUgPSB4bWwudGFnTmFtZSA/IHhtbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiAnZ3JvdXAnO1xuXG4gIGlmICh0YWdOYW1lID09PSAndGV4dCcpIHtcbiAgICBhdHRycy50ZXh0ID0geG1sLmlubmVyVGV4dDtcbiAgfVxuXG4gIHJzdC50eXBlID0gdGFnTmFtZTtcblxuICBpZiAodGFnTmFtZSA9PT0gJ2ltZycpIHtcbiAgICByc3QudHlwZSA9ICdpbWFnZSc7XG4gIH1cblxuICBBcnJheS5mcm9tKGtleXMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICB2YXIga2V5ID0ga2V5Q29udmVydChrKTtcbiAgICB2YXIgdmFsID0geG1sLmdldEF0dHJpYnV0ZShrKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnIHx8IGtleSA9PT0gJ2F0dHJzJykge1xuICAgICAgICB2YXIgc3R5bGUgPSBsb29zZUpTT05QYXJzZSh2YWwpO1xuICAgICAgICBhdHRycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdFtrZXldID0gbG9vc2VKU09OUGFyc2UodmFsKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG5cbiAgICAgIHJzdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJzdC5hdHRycyA9IGF0dHJzO1xuXG4gIGlmIChjZmcgJiYgY2ZnLnN0eWxlICYmIHJzdC5uYW1lICYmIF90eXBlb2YoY2ZnLnN0eWxlW3JzdC5uYW1lXSkgPT09ICdvYmplY3QnKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZVtyc3QubmFtZV0pO1xuICB9XG5cbiAgaWYgKGNmZyAmJiBjZmcuc3R5bGUgJiYgcnN0LmtleXNoYXBlKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZSk7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgcnN0LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH1cblxuICByZXR1cm4gcnN0O1xufVxuLyoqXG4gKiDmoLnmja7lgY/np7vph4/lkozlhoXpg6joioLngrnmnIDnu4jnmoRib3VuZGluZyBib3jmnaXlvpflh7ror6VzaGFwZeacgOe7iOeahGJib3hcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QkJveChub2RlLCBvZmZzZXQsIGNoaWxyZW5CQm94KSB7XG4gIHZhciBfYSA9IG5vZGUuYXR0cnMsXG4gICAgICBhdHRycyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICB2YXIgYmJveCA9IHtcbiAgICB4OiBvZmZzZXQueCB8fCAwLFxuICAgIHk6IG9mZnNldC55IHx8IDAsXG4gICAgd2lkdGg6IGNoaWxyZW5CQm94LndpZHRoIHx8IDAsXG4gICAgaGVpZ2h0OiBjaGlscmVuQkJveC5oZWlnaHQgfHwgMFxuICB9O1xuICB2YXIgc2hhcGVIZWlnaHQsIHNoYXBlV2lkdGg7XG5cbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlICdtYWtlcic6XG4gICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIGlmIChhdHRycy5yKSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSAyICogYXR0cnMucjtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSAyICogYXR0cnMucjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGlmIChhdHRycy50ZXh0KSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSBnZXRUZXh0U2l6ZShhdHRycy50ZXh0LCBhdHRycy5mb250U2l6ZSB8fCAxMilbMF07XG4gICAgICAgIHNoYXBlSGVpZ2h0ID0gMTY7XG4gICAgICAgIGJib3gueSArPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC53aWR0aCA9IHNoYXBlV2lkdGg7XG4gICAgICAgIG5vZGUuYXR0cnMgPSBfX2Fzc2lnbih7XG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZpbGw6ICcjMDAwJ1xuICAgICAgICB9LCBhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChhdHRycy53aWR0aCkge1xuICAgICAgICBzaGFwZVdpZHRoID0gYXR0cnMud2lkdGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgICB9XG5cbiAgfVxuXG4gIGlmIChzaGFwZUhlaWdodCA+PSAwKSB7XG4gICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgfVxuXG4gIGlmIChzaGFwZVdpZHRoID49IDApIHtcbiAgICBiYm94LndpZHRoID0gc2hhcGVXaWR0aDtcbiAgfVxuXG4gIGlmIChhdHRycy5tYXJnaW5Ub3ApIHtcbiAgICBiYm94LnkgKz0gYXR0cnMubWFyZ2luVG9wO1xuICB9XG5cbiAgaWYgKGF0dHJzLm1hcmdpbkxlZnQpIHtcbiAgICBiYm94LnggKz0gYXR0cnMubWFyZ2luTGVmdDtcbiAgfVxuXG4gIHJldHVybiBiYm94O1xufVxuLyoqXG4gKiDmiorku454bWzorqHnrpflh7rnmoTnu5PmnoTloavkuIrkvY3nva7kv6Hmga/vvIzooaXlhahhdHRyc1xuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGxhc3RPZmZzZXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LCBsYXN0T2Zmc2V0KSB7XG4gIHZhciBfYTtcblxuICBpZiAobGFzdE9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgbGFzdE9mZnNldCA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBkZWZhdWx0QmJveCA9IF9fYXNzaWduKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0sIGxhc3RPZmZzZXQpO1xuXG4gIGlmICgoX2EgPSB0YXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICB2YXIgX2IgPSB0YXJnZXQuYXR0cnMsXG4gICAgICAgIGF0dHJzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gICAgdmFyIG1hcmdpblRvcCA9IGF0dHJzLm1hcmdpblRvcDtcblxuICAgIHZhciBvZmZzZXQgPSBfX2Fzc2lnbih7fSwgbGFzdE9mZnNldCk7XG5cbiAgICBpZiAobWFyZ2luVG9wKSB7XG4gICAgICBvZmZzZXQueSArPSBtYXJnaW5Ub3A7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRhcmdldC5jaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRhcmdldC5jaGlsZHJlbltpbmRleF0uYXR0cnMua2V5ID0gKGF0dHJzLmtleSB8fCAncm9vdCcpICsgXCIgLVwiICsgaW5kZXggKyBcIiBcIjtcbiAgICAgIHZhciBub2RlID0gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LmNoaWxkcmVuW2luZGV4XSwgb2Zmc2V0KTtcblxuICAgICAgaWYgKG5vZGUuYmJveCkge1xuICAgICAgICB2YXIgYmJveCA9IG5vZGUuYmJveDtcblxuICAgICAgICBpZiAobm9kZS5hdHRycy5uZXh0ID09PSAnaW5saW5lJykge1xuICAgICAgICAgIG9mZnNldC54ICs9IG5vZGUuYmJveC53aWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQueSArPSBub2RlLmJib3guaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJib3gud2lkdGggKyBiYm94LnggPiBkZWZhdWx0QmJveC53aWR0aCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LndpZHRoID0gYmJveC53aWR0aCArIGJib3gueDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiYm94LmhlaWdodCArIGJib3gueSA+IGRlZmF1bHRCYm94LmhlaWdodCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LmhlaWdodCA9IGJib3guaGVpZ2h0ICsgYmJveC55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LmJib3ggPSBnZXRCQm94KHRhcmdldCwgbGFzdE9mZnNldCwgZGVmYXVsdEJib3gpO1xuICB0YXJnZXQuYXR0cnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGFyZ2V0LmF0dHJzKSwgdGFyZ2V0LmJib3gpO1xuICByZXR1cm4gdGFyZ2V0O1xufVxuLyoqXG4gKiDlr7nmr5TliY3lkI7kuKTkuKrmnIDnu4jorqHnrpflh7rmnaXnmoRub2Rl77yM5bm25a+55q+U5Ye65pyA5bCP5pS55YqoLFxuICog5Yqo5L2c77yaICdhZGQnIOa3u+WKoOiKgueCuSDvvZwg4oCZZGVsZXRl4oCYIOWIoOmZpOiKgueCuSDvvZwg4oCZY2hhbmdl4oCYIOaUueWPmOiKgueCuWF0dHJzIO+9nCAncmVzdHJ1Y3R1cmUnIOmHjeaehOiKgueCuVxuICogQHBhcmFtIG5vd1RhcmdldFxuICogQHBhcmFtIGZvcm1lclRhcmdldFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHdvVGFyZ2V0KG5vd1RhcmdldCwgZm9ybWVyVGFyZ2V0KSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcblxuICB2YXIgdHlwZSA9IChub3dUYXJnZXQgfHwge30pLnR5cGU7XG4gIHZhciBrZXkgPSAoKGZvcm1lclRhcmdldCA9PT0gbnVsbCB8fCBmb3JtZXJUYXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvcm1lclRhcmdldC5hdHRycykgfHwge30pLmtleTtcblxuICBpZiAoa2V5ICYmIG5vd1RhcmdldCkge1xuICAgIG5vd1RhcmdldC5hdHRycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZiAoIW5vd1RhcmdldCAmJiBmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgIHZhbDogZm9ybWVyVGFyZ2V0LFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGtleToga2V5XG4gICAgfTtcbiAgfVxuXG4gIGlmIChub3dUYXJnZXQgJiYgIWZvcm1lclRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgdmFsOiBub3dUYXJnZXQsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIGlmICghbm93VGFyZ2V0ICYmICFmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnc2FtZScsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gIGlmICgoKF9hID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDAgfHwgKChfYiA9IGZvcm1lclRhcmdldC5jaGlsZHJlbikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPiAwKSB7XG4gICAgdmFyIGxlbmd0aF8xID0gTWF0aC5tYXgoKF9jID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoLCAoX2QgPSBmb3JtZXJUYXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5sZW5ndGgpO1xuICAgIHZhciBmb3JtZXJDaGlscmVuID0gZm9ybWVyVGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuICAgIHZhciBub3dDaGlscmVuID0gbm93VGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aF8xOyBpbmRleCArPSAxKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGNvbXBhcmVUd29UYXJnZXQobm93Q2hpbHJlbltpbmRleF0sIGZvcm1lckNoaWxyZW5baW5kZXhdKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGZvcm1lcktleXMgPSBPYmplY3Qua2V5cyhmb3JtZXJUYXJnZXQuYXR0cnMpO1xuICB2YXIgbm93S2V5cyA9IE9iamVjdC5rZXlzKG5vd1RhcmdldC5hdHRycyk7XG5cbiAgaWYgKGZvcm1lclRhcmdldC50eXBlICE9PSBub3dUYXJnZXQudHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdyZXN0cnVjdHVyZScsXG4gICAgICBub3dUYXJnZXQ6IG5vd1RhcmdldCxcbiAgICAgIGZvcm1lclRhcmdldDogZm9ybWVyVGFyZ2V0LFxuICAgICAga2V5OiBrZXksXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9O1xuICB9XG5cbiAgaWYgKGZvcm1lcktleXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgcmV0dXJuIGUgIT09ICdjaGlsZHJlbic7XG4gIH0pLnNvbWUoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gbm93VGFyZ2V0LmF0dHJzW2VdICE9PSBmb3JtZXJUYXJnZXQuYXR0cnNbZV0gfHwgIW5vd0tleXMuaW5jbHVkZXMoZSk7XG4gIH0pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2NoYW5nZScsXG4gICAgICB2YWw6IG5vd1RhcmdldCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBrZXk6IGtleVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbjogJ3NhbWUnLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5XG4gIH07XG59XG4vKipcbiAqIOagueaNrnhtbOaIluiAhei/lOWbnnhtbOeahOWHveaVsOaehOW7uuiHquWumuS5ieiKgueCueeahOe7k+aehFxuICogQHBhcmFtIGdlblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb2RlRnJvbVhNTChnZW4pIHtcbiAgdmFyIHN0cnVjdHVyZXMgPSB7fTtcblxuICB2YXIgY29tcGlsZVhNTCA9IGZ1bmN0aW9uIGNvbXBpbGVYTUwoY2ZnKSB7XG4gICAgdmFyIHJhd1N0ciA9IHR5cGVvZiBnZW4gPT09ICdmdW5jdGlvbicgPyBnZW4oY2ZnKSA6IGdlbjtcbiAgICB2YXIgdGFyZ2V0ID0geG1sRGF0YVJlbmRlcmVyKHJhd1N0cikoY2ZnKTtcbiAgICB2YXIgeG1sUGFyc2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgeG1sUGFyc2VyLmlubmVySFRNTCA9IHRhcmdldDtcbiAgICB2YXIgeG1sID0geG1sUGFyc2VyLmNoaWxkcmVuWzBdO1xuICAgIHZhciByZXN1bHQgPSBnZW5lcmF0ZVRhcmdldChwYXJzZVhNTCh4bWwsIGNmZykpO1xuICAgIHhtbFBhcnNlci5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjZmcsIGdyb3VwKSB7XG4gICAgICB2YXIgcmVzdWx0VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGtleXNoYXBlID0gZ3JvdXA7XG5cbiAgICAgIHZhciByZW5kZXJUYXJnZXQgPSBmdW5jdGlvbiByZW5kZXJUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHZhciBfYSA9IHRhcmdldC5hdHRycyxcbiAgICAgICAgICAgIGF0dHJzID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2EsXG4gICAgICAgICAgICBiYm94ID0gdGFyZ2V0LmJib3gsXG4gICAgICAgICAgICB0eXBlID0gdGFyZ2V0LnR5cGUsXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHRhcmdldC5jaGlsZHJlbixcbiAgICAgICAgICAgIHJlc3QgPSBfX3Jlc3QodGFyZ2V0LCBbXCJhdHRyc1wiLCBcImJib3hcIiwgXCJ0eXBlXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gICAgICAgIGlmICh0YXJnZXQudHlwZSAhPT0gJ2dyb3VwJykge1xuICAgICAgICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHRhcmdldC50eXBlLCBfX2Fzc2lnbih7XG4gICAgICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgICAgICBvcmlnaW46IHtcbiAgICAgICAgICAgICAgYmJveDogYmJveCxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzdCkpO1xuXG4gICAgICAgICAgaWYgKHRhcmdldC5rZXlzaGFwZSkge1xuICAgICAgICAgICAga2V5c2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUYXJnZXQobik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlbmRlclRhcmdldChyZXN1bHRUYXJnZXQpO1xuICAgICAgc3RydWN0dXJlc1tjZmcuaWRdID0gW3Jlc3VsdFRhcmdldF07XG4gICAgICByZXR1cm4ga2V5c2hhcGU7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIG5vZGUpIHtcbiAgICAgIGlmICghc3RydWN0dXJlc1tjZmcuaWRdKSB7XG4gICAgICAgIHN0cnVjdHVyZXNbY2ZnLmlkXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGFpbmVyID0gbm9kZS5nZXRDb250YWluZXIoKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICB2YXIgbmV3VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGxhc3RUYXJnZXQgPSBzdHJ1Y3R1cmVzW2NmZy5pZF0ucG9wKCk7XG4gICAgICB2YXIgZGlmZlJlc3VsdCA9IGNvbXBhcmVUd29UYXJnZXQobmV3VGFyZ2V0LCBsYXN0VGFyZ2V0KTtcblxuICAgICAgdmFyIGFkZFNoYXBlID0gZnVuY3Rpb24gYWRkU2hhcGUoc2hhcGUpIHtcbiAgICAgICAgdmFyIF9hO1xuXG4gICAgICAgIGlmIChzaGFwZS50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgY29udGFpbmVyLmFkZFNoYXBlKHNoYXBlLnR5cGUsIHtcbiAgICAgICAgICAgIGF0dHJzOiBzaGFwZS5hdHRyc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChfYSA9IHNoYXBlLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgc2hhcGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkU2hhcGUoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBkZWxTaGFwZSA9IGZ1bmN0aW9uIGRlbFNoYXBlKHNoYXBlKSB7XG4gICAgICAgIHZhciBfYTtcblxuICAgICAgICB2YXIgdGFyZ2V0U2hhcGUgPSBjaGlsZHJlbi5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBzaGFwZS5hdHRycy5rZXk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0YXJnZXRTaGFwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKF9hID0gc2hhcGUuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICAgICAgICBzaGFwZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxTaGFwZShlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmFyIHVwZGF0ZVRhcmdldCA9IGZ1bmN0aW9uIHVwZGF0ZVRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGtleSA9IHRhcmdldC5rZXk7XG5cbiAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgdmFyIHRhcmdldFNoYXBlID0gY2hpbGRyZW4uZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBrZXk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKHRhcmdldC5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2NoYW5nZSc6XG4gICAgICAgICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgICAgICAgIHZhciBvcmlnaW5BdHRyID0gdGFyZ2V0LnZhbC5rZXlzaGFwZSA/IG5vZGUuZ2V0T3JpZ2luU3R5bGUoKSA6IHt9O1xuICAgICAgICAgICAgICAgIHRhcmdldFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIG9yaWdpbkF0dHIpLCB0YXJnZXQudmFsLmF0dHJzKSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgYWRkU2hhcGUodGFyZ2V0LnZhbCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICBkZWxTaGFwZSh0YXJnZXQudmFsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Jlc3RydWN0dXJlJzpcbiAgICAgICAgICAgICAgZGVsU2hhcGUodGFyZ2V0LmZvcm1lclRhcmdldCk7XG4gICAgICAgICAgICAgIGFkZFNoYXBlKHRhcmdldC5ub3dUYXJnZXQpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldC5jaGlsZHJlbikge1xuICAgICAgICAgIHRhcmdldC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlVGFyZ2V0KG4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB1cGRhdGVUYXJnZXQoZGlmZlJlc3VsdCk7XG4gICAgICBzdHJ1Y3R1cmVzW2NmZy5pZF0ucHVzaChuZXdUYXJnZXQpO1xuICAgIH0sXG4gICAgZ2V0QW5jaG9yUG9pbnRzOiBmdW5jdGlvbiBnZXRBbmNob3JQb2ludHMoKSB7XG4gICAgICByZXR1cm4gW1swLCAwLjVdLCBbMSwgMC41XSwgWzAuNSwgMV0sIFswLjUsIDBdXTtcbiAgICB9XG4gIH07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar activeFill = 'rgb(247, 250, 255)';\nvar nodeMainFill = 'rgb(239, 244, 255)';\nvar comboFill = 'rgb(253, 253, 253)';\nvar disabledFill = 'rgb(250, 250, 250)';\nvar edgeMainStroke = 'rgb(224, 224, 224)';\nvar edgeInactiveStroke = 'rgb(234, 234, 234)';\nvar edgeDisablesStroke = 'rgb(245, 245, 245)';\nvar inactiveStroke = 'rgb(191, 213, 255)';\nvar highlightStroke = '#4572d9';\nvar highlightFill = 'rgb(223, 234, 255)';\nvar colorSet = {\n // for nodes\n mainStroke: subjectColor,\n mainFill: nodeMainFill,\n activeStroke: subjectColor,\n activeFill: activeFill,\n inactiveStroke: inactiveStroke,\n inactiveFill: activeFill,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: highlightStroke,\n highlightFill: highlightFill,\n disableStroke: edgeMainStroke,\n disableFill: disabledFill,\n // for edges\n edgeMainStroke: edgeMainStroke,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: edgeInactiveStroke,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: edgeDisablesStroke,\n // for combos\n comboMainStroke: edgeMainStroke,\n comboMainFill: comboFill,\n comboActiveStroke: subjectColor,\n comboActiveFill: activeFill,\n comboInactiveStroke: edgeMainStroke,\n comboInactiveFill: comboFill,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: comboFill,\n comboHighlightStroke: highlightStroke,\n comboHighlightFill: comboFill,\n comboDisableStroke: edgeInactiveStroke,\n comboDisableFill: disabledFill\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.0',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: nodeMainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n windowFontFamily: typeof window !== 'undefined' && window.getComputedStyle ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9nbG9iYWwuanM/MDcxNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ2xvYmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHN1YmplY3RDb2xvciA9ICdyZ2IoOTUsIDE0OSwgMjU1KSc7XG52YXIgYmFja0NvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7XG52YXIgdGV4dENvbG9yID0gJ3JnYigwLCAwLCAwKSc7XG52YXIgYWN0aXZlRmlsbCA9ICdyZ2IoMjQ3LCAyNTAsIDI1NSknO1xudmFyIG5vZGVNYWluRmlsbCA9ICdyZ2IoMjM5LCAyNDQsIDI1NSknO1xudmFyIGNvbWJvRmlsbCA9ICdyZ2IoMjUzLCAyNTMsIDI1MyknO1xudmFyIGRpc2FibGVkRmlsbCA9ICdyZ2IoMjUwLCAyNTAsIDI1MCknO1xudmFyIGVkZ2VNYWluU3Ryb2tlID0gJ3JnYigyMjQsIDIyNCwgMjI0KSc7XG52YXIgZWRnZUluYWN0aXZlU3Ryb2tlID0gJ3JnYigyMzQsIDIzNCwgMjM0KSc7XG52YXIgZWRnZURpc2FibGVzU3Ryb2tlID0gJ3JnYigyNDUsIDI0NSwgMjQ1KSc7XG52YXIgaW5hY3RpdmVTdHJva2UgPSAncmdiKDE5MSwgMjEzLCAyNTUpJztcbnZhciBoaWdobGlnaHRTdHJva2UgPSAnIzQ1NzJkOSc7XG52YXIgaGlnaGxpZ2h0RmlsbCA9ICdyZ2IoMjIzLCAyMzQsIDI1NSknO1xudmFyIGNvbG9yU2V0ID0ge1xuICAvLyBmb3Igbm9kZXNcbiAgbWFpblN0cm9rZTogc3ViamVjdENvbG9yLFxuICBtYWluRmlsbDogbm9kZU1haW5GaWxsLFxuICBhY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgYWN0aXZlRmlsbDogYWN0aXZlRmlsbCxcbiAgaW5hY3RpdmVTdHJva2U6IGluYWN0aXZlU3Ryb2tlLFxuICBpbmFjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIHNlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIHNlbGVjdGVkRmlsbDogYmFja0NvbG9yLFxuICBoaWdobGlnaHRTdHJva2U6IGhpZ2hsaWdodFN0cm9rZSxcbiAgaGlnaGxpZ2h0RmlsbDogaGlnaGxpZ2h0RmlsbCxcbiAgZGlzYWJsZVN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGRpc2FibGVGaWxsOiBkaXNhYmxlZEZpbGwsXG4gIC8vIGZvciBlZGdlc1xuICBlZGdlTWFpblN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGVkZ2VBY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgZWRnZUluYWN0aXZlU3Ryb2tlOiBlZGdlSW5hY3RpdmVTdHJva2UsXG4gIGVkZ2VTZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICBlZGdlSGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGVkZ2VEaXNhYmxlU3Ryb2tlOiBlZGdlRGlzYWJsZXNTdHJva2UsXG4gIC8vIGZvciBjb21ib3NcbiAgY29tYm9NYWluU3Ryb2tlOiBlZGdlTWFpblN0cm9rZSxcbiAgY29tYm9NYWluRmlsbDogY29tYm9GaWxsLFxuICBjb21ib0FjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICBjb21ib0FjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIGNvbWJvSW5hY3RpdmVTdHJva2U6IGVkZ2VNYWluU3Ryb2tlLFxuICBjb21ib0luYWN0aXZlRmlsbDogY29tYm9GaWxsLFxuICBjb21ib1NlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGNvbWJvU2VsZWN0ZWRGaWxsOiBjb21ib0ZpbGwsXG4gIGNvbWJvSGlnaGxpZ2h0U3Ryb2tlOiBoaWdobGlnaHRTdHJva2UsXG4gIGNvbWJvSGlnaGxpZ2h0RmlsbDogY29tYm9GaWxsLFxuICBjb21ib0Rpc2FibGVTdHJva2U6IGVkZ2VJbmFjdGl2ZVN0cm9rZSxcbiAgY29tYm9EaXNhYmxlRmlsbDogZGlzYWJsZWRGaWxsXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiAnMC41LjAnLFxuICByb290Q29udGFpbmVyQ2xhc3NOYW1lOiAncm9vdC1jb250YWluZXInLFxuICBub2RlQ29udGFpbmVyQ2xhc3NOYW1lOiAnbm9kZS1jb250YWluZXInLFxuICBlZGdlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZWRnZS1jb250YWluZXInLFxuICBjb21ib0NvbnRhaW5lckNsYXNzTmFtZTogJ2NvbWJvLWNvbnRhaW5lcicsXG4gIGRlbGVnYXRlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZGVsZWdhdGUtY29udGFpbmVyJyxcbiAgZGVmYXVsdExvb3BQb3NpdGlvbjogJ3RvcCcsXG4gIG5vZGVMYWJlbDoge1xuICAgIHN0eWxlOiB7XG4gICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICBmb250U2l6ZTogMTIsXG4gICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJ1xuICAgIH0sXG4gICAgb2Zmc2V0OiA0IC8vIOiKgueCueeahOm7mOiupOaWh+acrOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuXG4gIH0sXG4gIGRlZmF1bHROb2RlOiB7XG4gICAgdHlwZTogJ2NpcmNsZScsXG4gICAgc3R5bGU6IHtcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQubWFpblN0cm9rZSxcbiAgICAgIGZpbGw6IG5vZGVNYWluRmlsbFxuICAgIH0sXG4gICAgc2l6ZTogMjAsXG4gICAgY29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgbGlua1BvaW50czoge1xuICAgICAgc2l6ZTogOCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZVxuICAgIH1cbiAgfSxcbiAgLy8g6IqC54K55bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LnNlbGVjdGVkRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDQsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgZmlsbDogY29sb3JTZXQuaGlnaGxpZ2h0RmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmluYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaW5hY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIGRpc2FibGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmRpc2FibGVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5kaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBlZGdlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogdGV4dENvbG9yLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICBmb250U2l6ZTogMTJcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRFZGdlOiB7XG4gICAgdHlwZTogJ2xpbmUnLFxuICAgIHNpemU6IDEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZU1haW5TdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IDJcbiAgICB9LFxuICAgIGNvbG9yOiBjb2xvclNldC5lZGdlTWFpblN0cm9rZVxuICB9LFxuICAvLyDovrnlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgZWRnZVN0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VBY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VTZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VEaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBjb21ib0xhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfSxcbiAgICByZWZZOiAxMCxcbiAgICByZWZYOiAxMCAvLyBDb21ibyDnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Q29tYm86IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9NYWluRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9NYWluU3Ryb2tlLFxuICAgICAgcjogNSxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMTBcbiAgICB9LFxuICAgIHNpemU6IFsyMCwgNV0sXG4gICAgY29sb3I6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICBwYWRkaW5nOiBbMjUsIDIwLCAxNSwgMjBdXG4gIH0sXG4gIC8vIGNvbWJvIOW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBjb21ib1N0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9BY3RpdmVGaWxsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib1NlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9TZWxlY3RlZEZpbGwsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIHNoYWRvd0JsdXI6IDEwLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0OiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9IaWdobGlnaHRGaWxsLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9JbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZUZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9XG4gIH0sXG4gIGRlbGVnYXRlU3R5bGU6IHtcbiAgICBmaWxsOiAnI0YzRjlGRicsXG4gICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICBzdHJva2U6ICcjMTg5MEZGJyxcbiAgICBzdHJva2VPcGFjaXR5OiAwLjksXG4gICAgbGluZURhc2g6IFs1LCA1XVxuICB9LFxuICB3aW5kb3dGb250RmFtaWx5OiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5JykgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJyA6ICdBcmlhbCwgc2Fucy1zZXJpZidcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar EventController =\n/** @class */\nfunction () {\n function EventController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.initEvents();\n }\n\n return EventController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2V2ZW50LmpzPzFkYTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw4RUFBZSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRXZlbnRDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRXZlbnRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RXZlbnRzKCk7XG4gIH1cblxuICByZXR1cm4gRXZlbnRDb250cm9sbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js ***! \**************************************************************************************/ /*! exports provided: ModeController, ViewController, ItemController, StateController */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mode */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ModeController\", function() { return _mode__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ViewController\", function() { return _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ItemController\", function() { return _item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateController\", function() { return _state__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2luZGV4LmpzPzc2OGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kZUNvbnRyb2xsZXIgfSBmcm9tICcuL21vZGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4vdmlldyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEl0ZW1Db250cm9sbGVyIH0gZnJvbSAnLi9pdGVtJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3RhdGVDb250cm9sbGVyIH0gZnJvbSAnLi9zdGF0ZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../item/edge */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js\");\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../item/node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../item/combo */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n\n\n\n\n\n\nvar NODE = 'node';\nvar EDGE = 'edge';\nvar VEDGE = 'vedge';\nvar COMBO = 'combo';\nvar CFG_PREFIX = 'default';\nvar MAPPER_SUFFIX = 'Mapper';\nvar STATE_SUFFIX = 'stateStyles';\n\nvar ItemController =\n/** @class */\nfunction () {\n function ItemController(graph) {\n var _this = this;\n\n this.edgeToBeUpdateMap = {};\n /**\n * 更新边限流,同时可以防止相同的边频繁重复更新\n * */\n\n this.throttleRefresh = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"throttle\"])(function (_) {\n var _a;\n\n var graph = _this.graph;\n if (!graph || graph.get('destroyed')) return;\n var edgeToBeUpdateMap = _this.edgeToBeUpdateMap;\n if (!edgeToBeUpdateMap || !((_a = Object.keys(edgeToBeUpdateMap)) === null || _a === void 0 ? void 0 : _a.length)) return;\n Object.keys(edgeToBeUpdateMap).forEach(function (eid) {\n var edge = edgeToBeUpdateMap[eid].edge;\n if (!edge || edge.destroyed) return;\n edge.refresh(edgeToBeUpdateMap[eid].updateType);\n });\n _this.edgeToBeUpdateMap = {};\n }, 16, {\n trailing: true,\n leading: true\n });\n this.graph = graph;\n this.destroyed = false;\n }\n /**\n * 增加 Item 实例\n *\n * @param {ITEM_TYPE} type 实例类型,node 或 edge\n * @param {(NodeConfig & EdgeConfig)} model 数据模型\n * @returns {(Item)}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addItem = function (type, model) {\n var graph = this.graph;\n var vType = type === VEDGE ? EDGE : type;\n var parent = graph.get(vType + \"Group\") || graph.get('group');\n var upperType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(vType);\n var item = null; // 获取 this.get('styles') 中的值\n\n var styles = graph.get(vType + Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(STATE_SUFFIX)) || {};\n var defaultModel = graph.get(CFG_PREFIX + upperType);\n\n if (model[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = model[STATE_SUFFIX];\n }\n\n if (defaultModel) {\n // 很多布局会直接修改原数据模型,所以不能用 merge 的形式,逐个写入原 model 中\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(defaultModel, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, val, model[cfg]);\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = model[cfg] || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(defaultModel[cfg]);\n } else {\n model[cfg] = model[cfg] || defaultModel[cfg];\n }\n });\n }\n\n var mapper = graph.get(vType + MAPPER_SUFFIX);\n\n if (mapper) {\n var mappedModel_1 = mapper(model);\n\n if (mappedModel_1[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = mappedModel_1[STATE_SUFFIX];\n delete mappedModel_1[STATE_SUFFIX];\n } // 如果配置了 defaultEdge 或 defaultNode,则将默认配置的数据也合并进去\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(mappedModel_1, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model[cfg], val);\n } else {\n model[cfg] = mappedModel_1[cfg] || model[cfg];\n }\n });\n }\n\n graph.emit('beforeadditem', {\n type: type,\n model: model\n });\n\n if (type === EDGE || type === VEDGE) {\n var source = void 0;\n var target = void 0;\n source = model.source; // eslint-disable-line prefer-destructuring\n\n target = model.target; // eslint-disable-line prefer-destructuring\n\n if (source && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n if (target && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n if (!source || !target) {\n console.warn(\"The source or target node of edge \" + model.id + \" does not exist!\");\n return;\n }\n\n if (source.getType && source.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(source as ICombo);\n }\n\n if (target.getType && target.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(target as ICombo);\n }\n\n item = new _item_edge__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n model: model,\n source: source,\n target: target,\n styles: styles,\n linkCenter: graph.get('linkCenter'),\n group: parent.addGroup()\n });\n } else if (type === NODE) {\n item = new _item_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n model: model,\n styles: styles,\n group: parent.addGroup()\n });\n } else if (type === COMBO) {\n var children = model.children;\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph);\n if (!isNaN(comboBBox.x)) model.x = comboBBox.x;else if (isNaN(model.x)) model.x = Math.random() * 100;\n if (!isNaN(comboBBox.y)) model.y = comboBBox.y;else if (isNaN(model.y)) model.y = Math.random() * 100;\n var comboGroup = parent.addGroup();\n comboGroup.setZIndex(model.depth);\n item = new _item_combo__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n model: model,\n styles: styles,\n bbox: model.collapsed ? Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])([], graph) : comboBBox,\n group: comboGroup\n });\n var comboModel_1 = item.getModel();\n (children || []).forEach(function (child) {\n var childItem = graph.findById(child.id);\n item.addChild(childItem);\n child.depth = comboModel_1.depth + 2;\n }); // collapse the combo if the collapsed is true in the model\n\n if (model.collapsed) {\n setTimeout(function () {\n if (!item.destroyed) {\n graph.collapseCombo(item);\n }\n }, 0);\n }\n }\n\n if (item) {\n graph.get(type + \"s\").push(item);\n graph.get('itemMap')[item.get('id')] = item;\n graph.emit('afteradditem', {\n item: item,\n model: model\n }); // eslint-disable-next-line consistent-return\n\n return item;\n }\n };\n /**\n * 更新节点或边\n *\n * @param {Item} item ID 或 实例\n * @param {(EdgeConfig | Partial)} cfg 数据模型\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateItem = function (item, cfg) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n } // 更新的 item 的类型\n\n\n var type = '';\n if (item.getType) type = item.getType();\n var mapper = graph.get(type + MAPPER_SUFFIX);\n var model = item.getModel();\n var updateType = item.getUpdateType(cfg);\n\n if (mapper) {\n var result = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, cfg);\n var mappedModel = mapper(result); // 将 update 时候用户传入的参数与mapperModel做deepMix,以便复用之前设置的参数值\n\n var newModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, mappedModel, cfg);\n\n if (mappedModel[STATE_SUFFIX]) {\n item.set('styles', newModel[STATE_SUFFIX]);\n delete newModel[STATE_SUFFIX];\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(newModel, function (val, key) {\n cfg[key] = val;\n });\n } else {\n // merge update传进来的对象参数,model中没有的数据不做处理,对象和字符串值也不做处理,直接替换原来的\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(cfg, function (val, key) {\n if (model[key]) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n cfg[key] = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, model[key]), cfg[key]);\n }\n }\n });\n } // emit beforeupdateitem 事件\n\n\n graph.emit('beforeupdateitem', {\n item: item,\n cfg: cfg\n });\n\n if (type === EDGE) {\n // 若是边要更新source || target, 为了不影响示例内部model,并且重新计算startPoint和endPoint,手动设置\n if (cfg.source) {\n var source = cfg.source;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n item.setSource(source);\n }\n\n if (cfg.target) {\n var target = cfg.target;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n item.setTarget(target);\n }\n\n item.update(cfg);\n } // item.update(cfg);\n\n\n if (type === NODE || type === COMBO) {\n item.update(cfg, updateType);\n var edges_1 = item.getEdges();\n var refreshEdge = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox')) || updateType === 'move';\n\n if (type === NODE) {\n if (updateType === 'move') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n _this.edgeToBeUpdateMap[edge.getID()] = {\n edge: edge,\n updateType: updateType\n };\n\n _this.throttleRefresh();\n });\n } else if (refreshEdge) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh(updateType);\n });\n }\n } else if (refreshEdge && type === COMBO) {\n var shapeFactory = item.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined || cfg.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate || cfg.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!item || item.destroyed) return;\n var keyShape = item.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n if (edge && !edge.destroyed) edge.refresh();\n });\n }, 201);\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh();\n });\n }\n }\n }\n\n graph.emit('afterupdateitem', {\n item: item,\n cfg: cfg\n });\n };\n /**\n * 根据 combo 的子元素更新 combo 的位置及大小\n *\n * @param {ICombo} combo ID 或 实例\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateCombo = function (combo, children) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n if (!combo || combo.destroyed) {\n return;\n }\n\n var model = combo.getModel();\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(model.collapsed ? [] : children, graph);\n\n var _c = model.collapsed ? Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph) : comboBBox,\n comboX = _c.x,\n comboY = _c.y;\n\n combo.set('bbox', comboBBox);\n combo.update({\n x: comboX,\n y: comboY\n });\n var shapeFactory = combo.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!combo || combo.destroyed) return;\n var keyShape = combo.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n combo.getShapeCfg(model); // 更新 combo 缓存的 size\n\n _this.updateComboEdges(combo);\n }, 201);\n } else {\n this.updateComboEdges(combo);\n }\n };\n\n ItemController.prototype.updateComboEdges = function (combo) {\n var combEdges = combo.getEdges() || [];\n\n for (var i = 0; i < combEdges.length; i++) {\n var edge = combEdges[i];\n\n if (edge && !edge.destroyed) {\n var edgeSF = edge.get('shapeFactory');\n var edgeCfg = edge.getShapeCfg(edge.getModel());\n var edgeGroup = edge.getContainer();\n edgeGroup.clear();\n var keyShape = edgeSF.draw(edgeCfg.type, edgeCfg, edgeGroup);\n edge.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n edge.setOriginStyle();\n }\n }\n };\n /**\n * 收起 combo,隐藏相关元素\n */\n\n\n ItemController.prototype.collapseCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.hideItem(node);\n });\n children.combos.forEach(function (c) {\n graph.hideItem(c);\n });\n };\n /**\n * 展开 combo,相关元素出现\n * 若子 combo 原先是收起状态,则保持它的收起状态\n */\n\n\n ItemController.prototype.expandCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.showItem(node);\n });\n children.combos.forEach(function (c) {\n if (c.getModel().collapsed) {\n c.show();\n } else {\n graph.showItem(c);\n }\n });\n };\n /**\n * 删除指定的节点或边\n *\n * @param {Item} item item ID 或实例\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.removeItem = function (item) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n }\n\n var itemModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(item.getModel());\n graph.emit('beforeremoveitem', {\n item: itemModel\n });\n var type = '';\n if (item.getType) type = item.getType();\n var items = graph.get(type + \"s\");\n var index = items.indexOf(item);\n if (index > -1) items.splice(index, 1);\n\n if (type === EDGE) {\n var vitems = graph.get(\"v\" + type + \"s\");\n var vindex = vitems.indexOf(item);\n if (vindex > -1) vitems.splice(vindex, 1);\n }\n\n var itemId = item.get('id');\n var itemMap = graph.get('itemMap');\n delete itemMap[itemId];\n var comboTrees = graph.get('comboTrees');\n var id = item.get('id');\n\n if (type === NODE) {\n var comboId = item.getModel().comboId;\n\n if (comboTrees && comboId) {\n var brothers_1 = comboTrees;\n var found_1 = false; // the flag to terminate the forEach circulation\n // remove the node from the children array of its parent fromt he tree\n\n comboTrees.forEach(function (ctree) {\n if (found_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id && brothers_1) {\n var bidx = brothers_1.indexOf(combo);\n brothers_1.splice(bidx, 1);\n found_1 = true;\n return false; // terminate the traverse\n }\n\n brothers_1 = combo.children;\n return true;\n });\n });\n } // 若移除的是节点,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (comboId) graph.updateCombo(comboId);\n } else if (type === COMBO) {\n var parentId = item.getModel().parentId;\n var comboInTree_1; // find the subtree rooted at the item to be removed\n\n var found_2 = false; // the flag to terminate the forEach circulation\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_2) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id) {\n comboInTree_1 = combo;\n found_2 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n comboInTree_1.removed = true;\n\n if (comboInTree_1 && comboInTree_1.children) {\n comboInTree_1.children.forEach(function (child) {\n _this.removeItem(child.id);\n });\n } // 若移除的是 combo,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (parentId) graph.updateCombo(parentId);\n }\n\n item.destroy();\n graph.emit('afterremoveitem', {\n item: itemModel,\n type: type\n });\n };\n /**\n * 更新 item 状态\n *\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {boolean} value 是否启用状态或状态值\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.setItemState = function (item, state, value) {\n var graph = this.graph;\n var stateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = state + \":\" + value;\n } // 已经存在要设置的 state,或不存在 state 的样式为 undefined\n\n\n if (item.hasState(stateName) === value && value || // 当该状态已经存在且现在需要设置为 true 时,不需要继续。当该状态不存在,且设置为 false 时,需要继续\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value) && item.hasState(stateName)) {\n // 当该状态 value 是字符串,且已经存在该状态,不需要继续\n return;\n }\n\n graph.emit('beforeitemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n item.setState(state, value);\n graph.autoPaint();\n graph.emit('afteritemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n ItemController.prototype.priorityState = function (item, state) {\n var graph = this.graph;\n var currentItem = item;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n currentItem = graph.findById(item);\n } // 先取消已有的 state\n\n\n this.setItemState(currentItem, state, false); // 再设置state,则此时该优先级为最高\n\n this.setItemState(currentItem, state, true);\n };\n /**\n * 清除所有指定的状态\n *\n * @param {Item} item Item 实例\n * @param {string[]} states 状态名称集合\n * @memberof ItemController\n */\n\n\n ItemController.prototype.clearItemStates = function (item, states) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemstatesclear', {\n item: item,\n states: states\n });\n item.clearStates(states);\n graph.emit('afteritemstatesclear', {\n item: item,\n states: states\n });\n };\n /**\n * 刷新指定的 Item\n *\n * @param {Item} item Item ID 或 实例\n * @memberof ItemController\n */\n\n\n ItemController.prototype.refreshItem = function (item) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemrefresh', {\n item: item\n }); // 调用 Item 的 refresh 方法,实现刷新功能\n\n item.refresh();\n graph.emit('afteritemrefresh', {\n item: item\n });\n };\n /**\n * 根据 graph 上用 combos 数据生成的 comboTree 来增加所有 combos\n *\n * @param {ComboTree[]} comboTrees graph 上用 combos 数据生成的 comboTree\n * @param {ComboConfig[]} comboModels combos 数据\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addCombos = function (comboTrees, comboModels) {\n var _this = this;\n\n var graph = this.graph;\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTreeUp\"])(ctree, function (child) {\n var comboModel;\n comboModels.forEach(function (model) {\n if (model.id === child.id) {\n model.children = child.children;\n model.depth = child.depth;\n comboModel = model;\n }\n });\n\n if (comboModel) {\n _this.addItem('combo', comboModel);\n }\n\n return true;\n });\n });\n var comboGroup = graph.get('comboGroup');\n if (comboGroup) comboGroup.sort();\n };\n /**\n * 改变Item的显示状态\n *\n * @param {Item} item Item ID 或 实例\n * @param {boolean} visible 是否显示\n * @memberof ItemController\n */\n\n\n ItemController.prototype.changeItemVisibility = function (item, visible) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item) {\n console.warn('The item to be shown or hidden does not exist!');\n return;\n }\n\n graph.emit('beforeitemvisibilitychange', {\n item: item,\n visible: visible\n });\n item.changeVisibility(visible);\n\n if (item.getType && item.getType() === NODE) {\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏节点,则将与之关联的边也隐藏\n // 若显示节点,则将与之关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n } else if (item.getType && item.getType() === COMBO) {\n var comboTrees = graph.get('comboTrees');\n var id_1 = item.get('id');\n var children_1 = [];\n var found_3 = false; // flag the terminate the forEach\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_3) return;\n if (!ctree.children || ctree.children.length === 0) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id_1) {\n children_1 = combo.children;\n found_3 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n\n if (children_1 && (!visible || visible && !item.getModel().collapsed)) {\n children_1.forEach(function (child) {\n var childItem = graph.findById(child.id);\n\n _this.changeItemVisibility(childItem, visible);\n });\n }\n\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏 combo,则将与 combo 本身关联的边也隐藏\n // 若显示 combo,则将与 combo 本身关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n }\n\n graph.emit('afteritemvisibilitychange', {\n item: item,\n visible: visible\n });\n return item;\n };\n\n ItemController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = true;\n };\n\n return ItemController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanM/ZWM2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNvRTtBQUNsRTtBQUNBO0FBQ0U7QUFDMkM7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsMkRBQVE7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDBCQUEwQjtBQUN2QyxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkRBQVU7QUFDOUIsb0JBQW9COztBQUVwQixtQ0FBbUMsNkRBQVU7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRLFVBQVUsMERBQU87QUFDckMsdUJBQXVCLDBEQUFPLEdBQUc7QUFDakMsU0FBUyxVQUFVLDBEQUFPO0FBQzFCLHFDQUFxQyx3REFBSztBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsTUFBTSx1REFBSTtBQUNWLFlBQVksMkRBQVEsVUFBVSwwREFBTztBQUNyQyx1QkFBdUIsMERBQU8sR0FBRztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUIsNEJBQTRCOztBQUU1QixvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQSxvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQSxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixrRUFBWTtBQUNsQyxxREFBcUQ7QUFDckQscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxpQkFBaUIsbURBQUs7QUFDdEI7QUFDQTtBQUNBLGdDQUFnQyxrRUFBWTtBQUM1QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsbUNBQW1DO0FBQ2hEO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsMERBQU8sR0FBRztBQUM3Qix1Q0FBdUM7O0FBRXZDLHFCQUFxQiwwREFBTyxHQUFHOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsY0FBYywyREFBUSxVQUFVLDBEQUFPO0FBQ3ZDLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsWUFBWSwyREFBUTtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isa0VBQVk7O0FBRWhDLCtCQUErQixrRUFBWTtBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGVBQWU7QUFDZjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHdEQUFLO0FBQ3pCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQSxVQUFVLGtFQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87OztBQUdQOztBQUVBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3QkFBd0I7O0FBRXhCLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBLFFBQVEsa0VBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7O0FBR1A7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSxJQUFJLDJEQUFRO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLGNBQWM7QUFDM0I7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxrRUFBWTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzQXJyYXksIGlzT2JqZWN0LCBpc1N0cmluZywgdXBwZXJGaXJzdCwgdGhyb3R0bGUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBFZGdlIGZyb20gJy4uLy4uL2l0ZW0vZWRnZSc7XG5pbXBvcnQgTm9kZSBmcm9tICcuLi8uLi9pdGVtL25vZGUnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4uLy4uL2l0ZW0vY29tYm8nO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlVXAsIHRyYXZlcnNlVHJlZSwgZ2V0Q29tYm9CQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9ncmFwaGljJztcbnZhciBOT0RFID0gJ25vZGUnO1xudmFyIEVER0UgPSAnZWRnZSc7XG52YXIgVkVER0UgPSAndmVkZ2UnO1xudmFyIENPTUJPID0gJ2NvbWJvJztcbnZhciBDRkdfUFJFRklYID0gJ2RlZmF1bHQnO1xudmFyIE1BUFBFUl9TVUZGSVggPSAnTWFwcGVyJztcbnZhciBTVEFURV9TVUZGSVggPSAnc3RhdGVTdHlsZXMnO1xuXG52YXIgSXRlbUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJdGVtQ29udHJvbGxlcihncmFwaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmVkZ2VUb0JlVXBkYXRlTWFwID0ge307XG4gICAgLyoqXG4gICAgICog5pu05paw6L656ZmQ5rWB77yM5ZCM5pe25Y+v5Lul6Ziy5q2i55u45ZCM55qE6L656aKR57mB6YeN5aSN5pu05pawXG4gICAgICogKi9cblxuICAgIHRoaXMudGhyb3R0bGVSZWZyZXNoID0gdGhyb3R0bGUoZnVuY3Rpb24gKF8pIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGg7XG4gICAgICBpZiAoIWdyYXBoIHx8IGdyYXBoLmdldCgnZGVzdHJveWVkJykpIHJldHVybjtcbiAgICAgIHZhciBlZGdlVG9CZVVwZGF0ZU1hcCA9IF90aGlzLmVkZ2VUb0JlVXBkYXRlTWFwO1xuICAgICAgaWYgKCFlZGdlVG9CZVVwZGF0ZU1hcCB8fCAhKChfYSA9IE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHJldHVybjtcbiAgICAgIE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChlaWQpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlVG9CZVVwZGF0ZU1hcFtlaWRdLmVkZ2U7XG4gICAgICAgIGlmICghZWRnZSB8fCBlZGdlLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBlZGdlLnJlZnJlc2goZWRnZVRvQmVVcGRhdGVNYXBbZWlkXS51cGRhdGVUeXBlKTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZWRnZVRvQmVVcGRhdGVNYXAgPSB7fTtcbiAgICB9LCAxNiwge1xuICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICBsZWFkaW5nOiB0cnVlXG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOWinuWKoCBJdGVtIOWunuS+i1xuICAgKlxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlrp7kvovnsbvlnovvvIxub2RlIOaIliBlZGdlXG4gICAqIEBwYXJhbSB7KE5vZGVDb25maWcgJiBFZGdlQ29uZmlnKX0gbW9kZWwg5pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm5zIHsoSXRlbSl9XG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVsKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgdlR5cGUgPSB0eXBlID09PSBWRURHRSA/IEVER0UgOiB0eXBlO1xuICAgIHZhciBwYXJlbnQgPSBncmFwaC5nZXQodlR5cGUgKyBcIkdyb3VwXCIpIHx8IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgdXBwZXJUeXBlID0gdXBwZXJGaXJzdCh2VHlwZSk7XG4gICAgdmFyIGl0ZW0gPSBudWxsOyAvLyDojrflj5YgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuXG4gICAgdmFyIHN0eWxlcyA9IGdyYXBoLmdldCh2VHlwZSArIHVwcGVyRmlyc3QoU1RBVEVfU1VGRklYKSkgfHwge307XG4gICAgdmFyIGRlZmF1bHRNb2RlbCA9IGdyYXBoLmdldChDRkdfUFJFRklYICsgdXBwZXJUeXBlKTtcblxuICAgIGlmIChtb2RlbFtTVEFURV9TVUZGSVhdKSB7XG4gICAgICAvLyDorr7nva4gdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgc3R5bGVzID0gbW9kZWxbU1RBVEVfU1VGRklYXTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdE1vZGVsKSB7XG4gICAgICAvLyDlvojlpJrluIPlsYDkvJrnm7TmjqXkv67mlLnljp/mlbDmja7mqKHlnovvvIzmiYDku6XkuI3og73nlKggbWVyZ2Ug55qE5b2i5byP77yM6YCQ5Liq5YaZ5YWl5Y6fIG1vZGVsIOS4rVxuICAgICAgZWFjaChkZWZhdWx0TW9kZWwsIGZ1bmN0aW9uICh2YWwsIGNmZykge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IGRlZXBNaXgoe30sIHZhbCwgbW9kZWxbY2ZnXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IG1vZGVsW2NmZ10gfHwgY2xvbmUoZGVmYXVsdE1vZGVsW2NmZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtb2RlbFtjZmddIHx8IGRlZmF1bHRNb2RlbFtjZmddO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGVyID0gZ3JhcGguZ2V0KHZUeXBlICsgTUFQUEVSX1NVRkZJWCk7XG5cbiAgICBpZiAobWFwcGVyKSB7XG4gICAgICB2YXIgbWFwcGVkTW9kZWxfMSA9IG1hcHBlcihtb2RlbCk7XG5cbiAgICAgIGlmIChtYXBwZWRNb2RlbF8xW1NUQVRFX1NVRkZJWF0pIHtcbiAgICAgICAgLy8g6K6+572uIHRoaXMuZ2V0KCdzdHlsZXMnKSDkuK3nmoTlgLxcbiAgICAgICAgc3R5bGVzID0gbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgICBkZWxldGUgbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgfSAvLyDlpoLmnpzphY3nva7kuoYgZGVmYXVsdEVkZ2Ug5oiWIGRlZmF1bHROb2Rl77yM5YiZ5bCG6buY6K6k6YWN572u55qE5pWw5o2u5Lmf5ZCI5bm26L+b5Y67XG5cblxuICAgICAgZWFjaChtYXBwZWRNb2RlbF8xLCBmdW5jdGlvbiAodmFsLCBjZmcpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSkge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBkZWVwTWl4KHt9LCBtb2RlbFtjZmddLCB2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtYXBwZWRNb2RlbF8xW2NmZ10gfHwgbW9kZWxbY2ZnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlYWRkaXRlbScsIHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBtb2RlbDogbW9kZWxcbiAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBFREdFIHx8IHR5cGUgPT09IFZFREdFKSB7XG4gICAgICB2YXIgc291cmNlID0gdm9pZCAwO1xuICAgICAgdmFyIHRhcmdldCA9IHZvaWQgMDtcbiAgICAgIHNvdXJjZSA9IG1vZGVsLnNvdXJjZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuXG4gICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcblxuICAgICAgaWYgKHNvdXJjZSAmJiBpc1N0cmluZyhzb3VyY2UpKSB7XG4gICAgICAgIHNvdXJjZSA9IGdyYXBoLmZpbmRCeUlkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXQgPSBncmFwaC5maW5kQnlJZCh0YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlRoZSBzb3VyY2Ugb3IgdGFyZ2V0IG5vZGUgb2YgZWRnZSBcIiArIG1vZGVsLmlkICsgXCIgZG9lcyBub3QgZXhpc3QhXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3VyY2UuZ2V0VHlwZSAmJiBzb3VyY2UuZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgIG1vZGVsLmlzQ29tYm9FZGdlID0gdHJ1ZTsgLy8gZ3JhcGgudXBkYXRlQ29tYm8oc291cmNlIGFzIElDb21ibyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQuZ2V0VHlwZSAmJiB0YXJnZXQuZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgIG1vZGVsLmlzQ29tYm9FZGdlID0gdHJ1ZTsgLy8gZ3JhcGgudXBkYXRlQ29tYm8odGFyZ2V0IGFzIElDb21ibyk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0gPSBuZXcgRWRnZSh7XG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgbGlua0NlbnRlcjogZ3JhcGguZ2V0KCdsaW5rQ2VudGVyJyksXG4gICAgICAgIGdyb3VwOiBwYXJlbnQuYWRkR3JvdXAoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBOT0RFKSB7XG4gICAgICBpdGVtID0gbmV3IE5vZGUoe1xuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICBncm91cDogcGFyZW50LmFkZEdyb3VwKClcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG1vZGVsLmNoaWxkcmVuO1xuICAgICAgdmFyIGNvbWJvQkJveCA9IGdldENvbWJvQkJveChjaGlsZHJlbiwgZ3JhcGgpO1xuICAgICAgaWYgKCFpc05hTihjb21ib0JCb3gueCkpIG1vZGVsLnggPSBjb21ib0JCb3gueDtlbHNlIGlmIChpc05hTihtb2RlbC54KSkgbW9kZWwueCA9IE1hdGgucmFuZG9tKCkgKiAxMDA7XG4gICAgICBpZiAoIWlzTmFOKGNvbWJvQkJveC55KSkgbW9kZWwueSA9IGNvbWJvQkJveC55O2Vsc2UgaWYgKGlzTmFOKG1vZGVsLnkpKSBtb2RlbC55ID0gTWF0aC5yYW5kb20oKSAqIDEwMDtcbiAgICAgIHZhciBjb21ib0dyb3VwID0gcGFyZW50LmFkZEdyb3VwKCk7XG4gICAgICBjb21ib0dyb3VwLnNldFpJbmRleChtb2RlbC5kZXB0aCk7XG4gICAgICBpdGVtID0gbmV3IENvbWJvKHtcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgYmJveDogbW9kZWwuY29sbGFwc2VkID8gZ2V0Q29tYm9CQm94KFtdLCBncmFwaCkgOiBjb21ib0JCb3gsXG4gICAgICAgIGdyb3VwOiBjb21ib0dyb3VwXG4gICAgICB9KTtcbiAgICAgIHZhciBjb21ib01vZGVsXzEgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgICAoY2hpbGRyZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHZhciBjaGlsZEl0ZW0gPSBncmFwaC5maW5kQnlJZChjaGlsZC5pZCk7XG4gICAgICAgIGl0ZW0uYWRkQ2hpbGQoY2hpbGRJdGVtKTtcbiAgICAgICAgY2hpbGQuZGVwdGggPSBjb21ib01vZGVsXzEuZGVwdGggKyAyO1xuICAgICAgfSk7IC8vIGNvbGxhcHNlIHRoZSBjb21ibyBpZiB0aGUgY29sbGFwc2VkIGlzIHRydWUgaW4gdGhlIG1vZGVsXG5cbiAgICAgIGlmIChtb2RlbC5jb2xsYXBzZWQpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCFpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgZ3JhcGguY29sbGFwc2VDb21ibyhpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpdGVtKSB7XG4gICAgICBncmFwaC5nZXQodHlwZSArIFwic1wiKS5wdXNoKGl0ZW0pO1xuICAgICAgZ3JhcGguZ2V0KCdpdGVtTWFwJylbaXRlbS5nZXQoJ2lkJyldID0gaXRlbTtcbiAgICAgIGdyYXBoLmVtaXQoJ2FmdGVyYWRkaXRlbScsIHtcbiAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICB9KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOiKgueCueaIlui+uVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gSUQg5oiWIOWunuS+i1xuICAgKiBAcGFyYW0geyhFZGdlQ29uZmlnIHwgUGFydGlhbDxOb2RlQ29uZmlnPil9IGNmZyDmlbDmja7mqKHlnotcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgY2ZnKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmm7TmlrDnmoQgaXRlbSDnmoTnsbvlnotcblxuXG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIG1hcHBlciA9IGdyYXBoLmdldCh0eXBlICsgTUFQUEVSX1NVRkZJWCk7XG4gICAgdmFyIG1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuICAgIHZhciB1cGRhdGVUeXBlID0gaXRlbS5nZXRVcGRhdGVUeXBlKGNmZyk7XG5cbiAgICBpZiAobWFwcGVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZGVlcE1peCh7fSwgbW9kZWwsIGNmZyk7XG4gICAgICB2YXIgbWFwcGVkTW9kZWwgPSBtYXBwZXIocmVzdWx0KTsgLy8g5bCGIHVwZGF0ZSDml7blgJnnlKjmiLfkvKDlhaXnmoTlj4LmlbDkuI5tYXBwZXJNb2RlbOWBmmRlZXBNaXjvvIzku6Xkvr/lpI3nlKjkuYvliY3orr7nva7nmoTlj4LmlbDlgLxcblxuICAgICAgdmFyIG5ld01vZGVsID0gZGVlcE1peCh7fSwgbW9kZWwsIG1hcHBlZE1vZGVsLCBjZmcpO1xuXG4gICAgICBpZiAobWFwcGVkTW9kZWxbU1RBVEVfU1VGRklYXSkge1xuICAgICAgICBpdGVtLnNldCgnc3R5bGVzJywgbmV3TW9kZWxbU1RBVEVfU1VGRklYXSk7XG4gICAgICAgIGRlbGV0ZSBuZXdNb2RlbFtTVEFURV9TVUZGSVhdO1xuICAgICAgfVxuXG4gICAgICBlYWNoKG5ld01vZGVsLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgICAgY2ZnW2tleV0gPSB2YWw7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWVyZ2UgdXBkYXRl5Lyg6L+b5p2l55qE5a+56LGh5Y+C5pWw77yMbW9kZWzkuK3msqHmnInnmoTmlbDmja7kuI3lgZrlpITnkIbvvIzlr7nosaHlkozlrZfnrKbkuLLlgLzkuZ/kuI3lgZrlpITnkIbvvIznm7TmjqXmm7/mjaLljp/mnaXnmoRcbiAgICAgIGVhY2goY2ZnLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKG1vZGVsW2tleV0pIHtcbiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICBjZmdba2V5XSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtb2RlbFtrZXldKSwgY2ZnW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyBlbWl0IGJlZm9yZXVwZGF0ZWl0ZW0g5LqL5Lu2XG5cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZXVwZGF0ZWl0ZW0nLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgY2ZnOiBjZmdcbiAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBFREdFKSB7XG4gICAgICAvLyDoi6XmmK/ovrnopoHmm7TmlrBzb3VyY2UgfHwgdGFyZ2V0LCDkuLrkuobkuI3lvbHlk43npLrkvovlhoXpg6htb2RlbO+8jOW5tuS4lOmHjeaWsOiuoeeul3N0YXJ0UG9pbnTlkoxlbmRQb2ludO+8jOaJi+WKqOiuvue9rlxuICAgICAgaWYgKGNmZy5zb3VyY2UpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGNmZy5zb3VyY2U7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKHNvdXJjZSkpIHtcbiAgICAgICAgICBzb3VyY2UgPSBncmFwaC5maW5kQnlJZChzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5zZXRTb3VyY2Uoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNmZy50YXJnZXQpIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXQ7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKHRhcmdldCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBncmFwaC5maW5kQnlJZCh0YXJnZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5zZXRUYXJnZXQodGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgaXRlbS51cGRhdGUoY2ZnKTtcbiAgICB9IC8vIGl0ZW0udXBkYXRlKGNmZyk7XG5cblxuICAgIGlmICh0eXBlID09PSBOT0RFIHx8IHR5cGUgPT09IENPTUJPKSB7XG4gICAgICBpdGVtLnVwZGF0ZShjZmcsIHVwZGF0ZVR5cGUpO1xuICAgICAgdmFyIGVkZ2VzXzEgPSBpdGVtLmdldEVkZ2VzKCk7XG4gICAgICB2YXIgcmVmcmVzaEVkZ2UgPSAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdiYm94JykpIHx8IHVwZGF0ZVR5cGUgPT09ICdtb3ZlJztcblxuICAgICAgaWYgKHR5cGUgPT09IE5PREUpIHtcbiAgICAgICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdtb3ZlJykge1xuICAgICAgICAgIGVhY2goZWRnZXNfMSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIF90aGlzLmVkZ2VUb0JlVXBkYXRlTWFwW2VkZ2UuZ2V0SUQoKV0gPSB7XG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHVwZGF0ZVR5cGU6IHVwZGF0ZVR5cGVcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF90aGlzLnRocm90dGxlUmVmcmVzaCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHJlZnJlc2hFZGdlKSB7XG4gICAgICAgICAgZWFjaChlZGdlc18xLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgZWRnZS5yZWZyZXNoKHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2hFZGdlICYmIHR5cGUgPT09IENPTUJPKSB7XG4gICAgICAgIHZhciBzaGFwZUZhY3RvcnkgPSBpdGVtLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgICAgIHZhciBzaGFwZVR5cGUgPSBtb2RlbC50eXBlIHx8ICdjaXJjbGUnO1xuICAgICAgICB2YXIgY29tYm9BbmltYXRlID0gbW9kZWwuYW5pbWF0ZSA9PT0gdW5kZWZpbmVkIHx8IGNmZy5hbmltYXRlID09PSB1bmRlZmluZWQgPyAoX2IgPSAoX2EgPSBzaGFwZUZhY3Rvcnlbc2hhcGVUeXBlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9wdGlvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5hbmltYXRlIDogbW9kZWwuYW5pbWF0ZSB8fCBjZmcuYW5pbWF0ZTtcblxuICAgICAgICBpZiAoY29tYm9BbmltYXRlKSB7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgICAgIGlmICgha2V5U2hhcGUgfHwga2V5U2hhcGUuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgICAgICBlYWNoKGVkZ2VzXzEsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIGlmIChlZGdlICYmICFlZGdlLmRlc3Ryb3llZCkgZWRnZS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCAyMDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVhY2goZWRnZXNfMSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIGVkZ2UucmVmcmVzaCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJ1cGRhdGVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIGNmZzogY2ZnXG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gY29tYm8g55qE5a2Q5YWD57Sg5pu05pawIGNvbWJvIOeahOS9jee9ruWPiuWkp+Wwj1xuICAgKlxuICAgKiBAcGFyYW0ge0lDb21ib30gY29tYm8gSUQg5oiWIOWunuS+i1xuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8sIGNoaWxkcmVuKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSBncmFwaC5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ibyB8fCBjb21iby5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuICAgIHZhciBjb21ib0JCb3ggPSBnZXRDb21ib0JCb3gobW9kZWwuY29sbGFwc2VkID8gW10gOiBjaGlsZHJlbiwgZ3JhcGgpO1xuXG4gICAgdmFyIF9jID0gbW9kZWwuY29sbGFwc2VkID8gZ2V0Q29tYm9CQm94KGNoaWxkcmVuLCBncmFwaCkgOiBjb21ib0JCb3gsXG4gICAgICAgIGNvbWJvWCA9IF9jLngsXG4gICAgICAgIGNvbWJvWSA9IF9jLnk7XG5cbiAgICBjb21iby5zZXQoJ2Jib3gnLCBjb21ib0JCb3gpO1xuICAgIGNvbWJvLnVwZGF0ZSh7XG4gICAgICB4OiBjb21ib1gsXG4gICAgICB5OiBjb21ib1lcbiAgICB9KTtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gY29tYm8uZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICB2YXIgc2hhcGVUeXBlID0gbW9kZWwudHlwZSB8fCAnY2lyY2xlJztcbiAgICB2YXIgY29tYm9BbmltYXRlID0gbW9kZWwuYW5pbWF0ZSA9PT0gdW5kZWZpbmVkID8gKF9iID0gKF9hID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYW5pbWF0ZSA6IG1vZGVsLmFuaW1hdGU7XG5cbiAgICBpZiAoY29tYm9BbmltYXRlKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFjb21ibyB8fCBjb21iby5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgdmFyIGtleVNoYXBlID0gY29tYm8uZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgaWYgKCFrZXlTaGFwZSB8fCBrZXlTaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgY29tYm8uZ2V0U2hhcGVDZmcobW9kZWwpOyAvLyDmm7TmlrAgY29tYm8g57yT5a2Y55qEIHNpemVcblxuICAgICAgICBfdGhpcy51cGRhdGVDb21ib0VkZ2VzKGNvbWJvKTtcbiAgICAgIH0sIDIwMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9FZGdlcyhjb21ibyk7XG4gICAgfVxuICB9O1xuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb21ib0VkZ2VzID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGNvbWJFZGdlcyA9IGNvbWJvLmdldEVkZ2VzKCkgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBjb21iRWRnZXNbaV07XG5cbiAgICAgIGlmIChlZGdlICYmICFlZGdlLmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgZWRnZVNGID0gZWRnZS5nZXQoJ3NoYXBlRmFjdG9yeScpO1xuICAgICAgICB2YXIgZWRnZUNmZyA9IGVkZ2UuZ2V0U2hhcGVDZmcoZWRnZS5nZXRNb2RlbCgpKTtcbiAgICAgICAgdmFyIGVkZ2VHcm91cCA9IGVkZ2UuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgIGVkZ2VHcm91cC5jbGVhcigpO1xuICAgICAgICB2YXIga2V5U2hhcGUgPSBlZGdlU0YuZHJhdyhlZGdlQ2ZnLnR5cGUsIGVkZ2VDZmcsIGVkZ2VHcm91cCk7XG4gICAgICAgIGVkZ2Uuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgICAga2V5U2hhcGUuc2V0KCdpc0tleVNoYXBlJywgdHJ1ZSk7XG4gICAgICAgIGtleVNoYXBlLnNldCgnZHJhZ2dhYmxlJywgdHJ1ZSk7XG4gICAgICAgIGVkZ2Uuc2V0T3JpZ2luU3R5bGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmlLbotbcgY29tYm/vvIzpmpDol4/nm7jlhbPlhYPntKBcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY29sbGFwc2VDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBjb21iby5nZXRDaGlsZHJlbigpO1xuICAgIGNoaWxkcmVuLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGdyYXBoLmhpZGVJdGVtKG5vZGUpO1xuICAgIH0pO1xuICAgIGNoaWxkcmVuLmNvbWJvcy5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBncmFwaC5oaWRlSXRlbShjKTtcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWxleW8gCBjb21ib++8jOebuOWFs+WFg+e0oOWHuueOsFxuICAgKiDoi6XlrZAgY29tYm8g5Y6f5YWI5piv5pS26LW354q25oCB77yM5YiZ5L+d5oyB5a6D55qE5pS26LW354q25oCBXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmV4cGFuZENvbWJvID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IGNvbWJvLmdldENoaWxkcmVuKCk7XG4gICAgY2hpbGRyZW4ubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgZ3JhcGguc2hvd0l0ZW0obm9kZSk7XG4gICAgfSk7XG4gICAgY2hpbGRyZW4uY29tYm9zLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgIGlmIChjLmdldE1vZGVsKCkuY29sbGFwc2VkKSB7XG4gICAgICAgIGMuc2hvdygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGguc2hvd0l0ZW0oYyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprnmoToioLngrnmiJbovrlcbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIGl0ZW0gSUQg5oiW5a6e5L6LXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbU1vZGVsID0gY2xvbmUoaXRlbS5nZXRNb2RlbCgpKTtcbiAgICBncmFwaC5lbWl0KCdiZWZvcmVyZW1vdmVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbU1vZGVsXG4gICAgfSk7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIGl0ZW1zID0gZ3JhcGguZ2V0KHR5cGUgKyBcInNcIik7XG4gICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmICh0eXBlID09PSBFREdFKSB7XG4gICAgICB2YXIgdml0ZW1zID0gZ3JhcGguZ2V0KFwidlwiICsgdHlwZSArIFwic1wiKTtcbiAgICAgIHZhciB2aW5kZXggPSB2aXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgIGlmICh2aW5kZXggPiAtMSkgdml0ZW1zLnNwbGljZSh2aW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHZhciBpdGVtSWQgPSBpdGVtLmdldCgnaWQnKTtcbiAgICB2YXIgaXRlbU1hcCA9IGdyYXBoLmdldCgnaXRlbU1hcCcpO1xuICAgIGRlbGV0ZSBpdGVtTWFwW2l0ZW1JZF07XG4gICAgdmFyIGNvbWJvVHJlZXMgPSBncmFwaC5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaWQgPSBpdGVtLmdldCgnaWQnKTtcblxuICAgIGlmICh0eXBlID09PSBOT0RFKSB7XG4gICAgICB2YXIgY29tYm9JZCA9IGl0ZW0uZ2V0TW9kZWwoKS5jb21ib0lkO1xuXG4gICAgICBpZiAoY29tYm9UcmVlcyAmJiBjb21ib0lkKSB7XG4gICAgICAgIHZhciBicm90aGVyc18xID0gY29tYm9UcmVlcztcbiAgICAgICAgdmFyIGZvdW5kXzEgPSBmYWxzZTsgLy8gdGhlIGZsYWcgdG8gdGVybWluYXRlIHRoZSBmb3JFYWNoIGNpcmN1bGF0aW9uXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgbm9kZSBmcm9tIHRoZSBjaGlsZHJlbiBhcnJheSBvZiBpdHMgcGFyZW50IGZyb210IGhlIHRyZWVcblxuICAgICAgICBjb21ib1RyZWVzLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICAgICAgaWYgKGZvdW5kXzEpIHJldHVybjtcbiAgICAgICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgICAgaWYgKGNvbWJvLmlkID09PSBpZCAmJiBicm90aGVyc18xKSB7XG4gICAgICAgICAgICAgIHZhciBiaWR4ID0gYnJvdGhlcnNfMS5pbmRleE9mKGNvbWJvKTtcbiAgICAgICAgICAgICAgYnJvdGhlcnNfMS5zcGxpY2UoYmlkeCwgMSk7XG4gICAgICAgICAgICAgIGZvdW5kXzEgPSB0cnVlO1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJvdGhlcnNfMSA9IGNvbWJvLmNoaWxkcmVuO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyDoi6Xnp7vpmaTnmoTmmK/oioLngrnvvIzpnIDopoHlsIbkuI7kuYvnm7jov57nmoTovrnkuIDlkIzliKDpmaRcblxuXG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSBlZGdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBncmFwaC5yZW1vdmVJdGVtKGVkZ2VzW2ldLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21ib0lkKSBncmFwaC51cGRhdGVDb21ibyhjb21ib0lkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IENPTUJPKSB7XG4gICAgICB2YXIgcGFyZW50SWQgPSBpdGVtLmdldE1vZGVsKCkucGFyZW50SWQ7XG4gICAgICB2YXIgY29tYm9JblRyZWVfMTsgLy8gZmluZCB0aGUgc3VidHJlZSByb290ZWQgYXQgdGhlIGl0ZW0gdG8gYmUgcmVtb3ZlZFxuXG4gICAgICB2YXIgZm91bmRfMiA9IGZhbHNlOyAvLyB0aGUgZmxhZyB0byB0ZXJtaW5hdGUgdGhlIGZvckVhY2ggY2lyY3VsYXRpb25cblxuICAgICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICAgIGlmIChmb3VuZF8yKSByZXR1cm47XG4gICAgICAgIHRyYXZlcnNlVHJlZShjdHJlZSwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgaWYgKGNvbWJvLmlkID09PSBpZCkge1xuICAgICAgICAgICAgY29tYm9JblRyZWVfMSA9IGNvbWJvO1xuICAgICAgICAgICAgZm91bmRfMiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbWJvSW5UcmVlXzEucmVtb3ZlZCA9IHRydWU7XG5cbiAgICAgIGlmIChjb21ib0luVHJlZV8xICYmIGNvbWJvSW5UcmVlXzEuY2hpbGRyZW4pIHtcbiAgICAgICAgY29tYm9JblRyZWVfMS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oY2hpbGQuaWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8g6Iul56e76Zmk55qE5pivIGNvbWJv77yM6ZyA6KaB5bCG5LiO5LmL55u46L+e55qE6L655LiA5ZCM5Yig6ZmkXG5cblxuICAgICAgdmFyIGVkZ2VzID0gaXRlbS5nZXRFZGdlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gZWRnZXMubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgICAgICBncmFwaC5yZW1vdmVJdGVtKGVkZ2VzW2ldLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnRJZCkgZ3JhcGgudXBkYXRlQ29tYm8ocGFyZW50SWQpO1xuICAgIH1cblxuICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgIGdyYXBoLmVtaXQoJ2FmdGVycmVtb3ZlaXRlbScsIHtcbiAgICAgIGl0ZW06IGl0ZW1Nb2RlbCxcbiAgICAgIHR5cGU6IHR5cGVcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsCBpdGVtIOeKtuaAgVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gSXRlbSDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIOeKtuaAgeWQjeensFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIOaYr+WQpuWQr+eUqOeKtuaAgeaIlueKtuaAgeWAvFxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnNldEl0ZW1TdGF0ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSwgdmFsdWUpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBzdGF0ZU5hbWUgPSBzdGF0ZTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlTmFtZSA9IHN0YXRlICsgXCI6XCIgKyB2YWx1ZTtcbiAgICB9IC8vIOW3sue7j+WtmOWcqOimgeiuvue9rueahCBzdGF0Ze+8jOaIluS4jeWtmOWcqCBzdGF0ZSDnmoTmoLflvI/kuLogdW5kZWZpbmVkXG5cblxuICAgIGlmIChpdGVtLmhhc1N0YXRlKHN0YXRlTmFtZSkgPT09IHZhbHVlICYmIHZhbHVlIHx8IC8vIOW9k+ivpeeKtuaAgeW3sue7j+WtmOWcqOS4lOeOsOWcqOmcgOimgeiuvue9ruS4uiB0cnVlIOaXtu+8jOS4jemcgOimgee7p+e7reOAguW9k+ivpeeKtuaAgeS4jeWtmOWcqO+8jOS4lOiuvue9ruS4uiBmYWxzZSDml7bvvIzpnIDopoHnu6fnu61cbiAgICBpc1N0cmluZyh2YWx1ZSkgJiYgaXRlbS5oYXNTdGF0ZShzdGF0ZU5hbWUpKSB7XG4gICAgICAvLyDlvZPor6XnirbmgIEgdmFsdWUg5piv5a2X56ym5Liy77yM5LiU5bey57uP5a2Y5Zyo6K+l54q25oCB77yM5LiN6ZyA6KaB57un57utXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlaXRlbXN0YXRlY2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHN0YXRlOiBzdGF0ZU5hbWUsXG4gICAgICBlbmFibGVkOiB2YWx1ZVxuICAgIH0pO1xuICAgIGl0ZW0uc2V0U3RhdGUoc3RhdGUsIHZhbHVlKTtcbiAgICBncmFwaC5hdXRvUGFpbnQoKTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW1zdGF0ZWNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBzdGF0ZTogc3RhdGVOYW1lLFxuICAgICAgZW5hYmxlZDogdmFsdWVcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumueKtuaAgeeahOS8mOWFiOe6p+aPkOWNh+S4uuacgOmrmOS8mOWFiOe6p1xuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHN0YXRlIOeKtuaAgeWQjeensFxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5wcmlvcml0eVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgY3VycmVudEl0ZW0gPSBpdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjdXJyZW50SXRlbSA9IGdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH0gLy8g5YWI5Y+W5raI5bey5pyJ55qEIHN0YXRlXG5cblxuICAgIHRoaXMuc2V0SXRlbVN0YXRlKGN1cnJlbnRJdGVtLCBzdGF0ZSwgZmFsc2UpOyAvLyDlho3orr7nva5zdGF0Ze+8jOWImeatpOaXtuivpeS8mOWFiOe6p+S4uuacgOmrmFxuXG4gICAgdGhpcy5zZXRJdGVtU3RhdGUoY3VycmVudEl0ZW0sIHN0YXRlLCB0cnVlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4hemZpOaJgOacieaMh+WumueahOeKtuaAgVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gSXRlbSDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gc3RhdGVzIOeKtuaAgeWQjeensOmbhuWQiFxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJJdGVtU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtc3RhdGVzY2xlYXInLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgICBpdGVtLmNsZWFyU3RhdGVzKHN0YXRlcyk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJpdGVtc3RhdGVzY2xlYXInLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIt+aWsOaMh+WumueahCBJdGVtXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIElEIOaIliDlrp7kvotcbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnJlZnJlc2hJdGVtID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlaXRlbXJlZnJlc2gnLCB7XG4gICAgICBpdGVtOiBpdGVtXG4gICAgfSk7IC8vIOiwg+eUqCBJdGVtIOeahCByZWZyZXNoIOaWueazle+8jOWunueOsOWIt+aWsOWKn+iDvVxuXG4gICAgaXRlbS5yZWZyZXNoKCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJpdGVtcmVmcmVzaCcsIHtcbiAgICAgIGl0ZW06IGl0ZW1cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBncmFwaCDkuIrnlKggY29tYm9zIOaVsOaNrueUn+aIkOeahCBjb21ib1RyZWUg5p2l5aKe5Yqg5omA5pyJIGNvbWJvc1xuICAgKlxuICAgKiBAcGFyYW0ge0NvbWJvVHJlZVtdfSBjb21ib1RyZWVzIGdyYXBoIOS4iueUqCBjb21ib3Mg5pWw5o2u55Sf5oiQ55qEIGNvbWJvVHJlZVxuICAgKiBAcGFyYW0ge0NvbWJvQ29uZmlnW119IGNvbWJvTW9kZWxzIGNvbWJvcyDmlbDmja5cbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmFkZENvbWJvcyA9IGZ1bmN0aW9uIChjb21ib1RyZWVzLCBjb21ib01vZGVscykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICB2YXIgY29tYm9Nb2RlbDtcbiAgICAgICAgY29tYm9Nb2RlbHMuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICBpZiAobW9kZWwuaWQgPT09IGNoaWxkLmlkKSB7XG4gICAgICAgICAgICBtb2RlbC5jaGlsZHJlbiA9IGNoaWxkLmNoaWxkcmVuO1xuICAgICAgICAgICAgbW9kZWwuZGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgICAgIGNvbWJvTW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjb21ib01vZGVsKSB7XG4gICAgICAgICAgX3RoaXMuYWRkSXRlbSgnY29tYm8nLCBjb21ib01vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGNvbWJvR3JvdXAgPSBncmFwaC5nZXQoJ2NvbWJvR3JvdXAnKTtcbiAgICBpZiAoY29tYm9Hcm91cCkgY29tYm9Hcm91cC5zb3J0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDmlLnlj5hJdGVt55qE5pi+56S654q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIElEIOaIliDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSB2aXNpYmxlIOaYr+WQpuaYvuekulxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY2hhbmdlSXRlbVZpc2liaWxpdHkgPSBmdW5jdGlvbiAoaXRlbSwgdmlzaWJsZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtIHRvIGJlIHNob3duIG9yIGhpZGRlbiBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtdmlzaWJpbGl0eWNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICB2aXNpYmxlOiB2aXNpYmxlXG4gICAgfSk7XG4gICAgaXRlbS5jaGFuZ2VWaXNpYmlsaXR5KHZpc2libGUpO1xuXG4gICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gTk9ERSkge1xuICAgICAgdmFyIGVkZ2VzID0gaXRlbS5nZXRFZGdlcygpO1xuICAgICAgZWFjaChlZGdlcywgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgLy8g6Iul6ZqQ6JeP6IqC54K577yM5YiZ5bCG5LiO5LmL5YWz6IGU55qE6L655Lmf6ZqQ6JePXG4gICAgICAgIC8vIOiLpeaYvuekuuiKgueCue+8jOWImeWwhuS4juS5i+WFs+iBlOeahOi+ueS5n+aYvuekuu+8jOS9huaYr+mcgOimgeWIpOaWrei+ueS4pOerr+eahOiKgueCuemDveaYr+WPr+ingeeahFxuICAgICAgICBpZiAodmlzaWJsZSAmJiAhKGVkZ2UuZ2V0KCdzb3VyY2UnKS5pc1Zpc2libGUoKSAmJiBlZGdlLmdldCgndGFyZ2V0JykuaXNWaXNpYmxlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuY2hhbmdlSXRlbVZpc2liaWxpdHkoZWRnZSwgdmlzaWJsZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gQ09NQk8pIHtcbiAgICAgIHZhciBjb21ib1RyZWVzID0gZ3JhcGguZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgICB2YXIgaWRfMSA9IGl0ZW0uZ2V0KCdpZCcpO1xuICAgICAgdmFyIGNoaWxkcmVuXzEgPSBbXTtcbiAgICAgIHZhciBmb3VuZF8zID0gZmFsc2U7IC8vIGZsYWcgdGhlIHRlcm1pbmF0ZSB0aGUgZm9yRWFjaFxuXG4gICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kXzMpIHJldHVybjtcbiAgICAgICAgaWYgKCFjdHJlZS5jaGlsZHJlbiB8fCBjdHJlZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICBpZiAoY29tYm8uaWQgPT09IGlkXzEpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuXzEgPSBjb21iby5jaGlsZHJlbjtcbiAgICAgICAgICAgIGZvdW5kXzMgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0ZXJtaW5hdGUgdGhlIHRyYXZlcnNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChjaGlsZHJlbl8xICYmICghdmlzaWJsZSB8fCB2aXNpYmxlICYmICFpdGVtLmdldE1vZGVsKCkuY29sbGFwc2VkKSkge1xuICAgICAgICBjaGlsZHJlbl8xLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGdyYXBoLmZpbmRCeUlkKGNoaWxkLmlkKTtcblxuICAgICAgICAgIF90aGlzLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGNoaWxkSXRlbSwgdmlzaWJsZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG4gICAgICBlYWNoKGVkZ2VzLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAvLyDoi6XpmpDol48gY29tYm/vvIzliJnlsIbkuI4gY29tYm8g5pys6Lqr5YWz6IGU55qE6L655Lmf6ZqQ6JePXG4gICAgICAgIC8vIOiLpeaYvuekuiBjb21ib++8jOWImeWwhuS4jiBjb21ibyDmnKzouqvlhbPogZTnmoTovrnkuZ/mmL7npLrvvIzkvYbmmK/pnIDopoHliKTmlq3ovrnkuKTnq6/nmoToioLngrnpg73mmK/lj6/op4HnmoRcbiAgICAgICAgaWYgKHZpc2libGUgJiYgIShlZGdlLmdldCgnc291cmNlJykuaXNWaXNpYmxlKCkgJiYgZWRnZS5nZXQoJ3RhcmdldCcpLmlzVmlzaWJsZSgpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGVkZ2UsIHZpc2libGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJpdGVtdmlzaWJpbGl0eWNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICB2aXNpYmxlOiB2aXNpYmxlXG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBJdGVtQ29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgSXRlbUNvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n\n\n\n\nvar LayoutController =\n/** @class */\nfunction () {\n function LayoutController(graph) {\n this.graph = graph;\n this.layoutCfg = graph.get('layout') || {};\n this.layoutType = this.getLayoutType();\n this.layoutMethods = [];\n this.initLayout();\n } // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.initLayout = function () {// no data before rendering\n };\n\n LayoutController.prototype.getLayoutType = function () {\n return this.getLayoutCfgType(this.layoutCfg);\n };\n\n LayoutController.prototype.getLayoutCfgType = function (layoutCfg) {\n var type = layoutCfg.type; // type should be top priority\n\n if (type) {\n return type;\n }\n\n var pipes = layoutCfg.pipes;\n\n if (Array.isArray(pipes)) {\n return pipes.map(function (pipe) {\n return (pipe === null || pipe === void 0 ? void 0 : pipe.type) || '';\n });\n }\n\n return null;\n };\n\n LayoutController.prototype.isLayoutTypeSame = function (cfg) {\n var current = this.getLayoutCfgType(cfg); // already has pipes\n\n if (Array.isArray(this.layoutType)) {\n return this.layoutType.every(function (type, index) {\n return type === current[index];\n });\n }\n\n return (cfg === null || cfg === void 0 ? void 0 : cfg.type) === this.layoutType;\n }; // 绘制\n\n\n LayoutController.prototype.refreshLayout = function () {\n var graph = this.graph;\n if (!graph) return;\n\n if (graph.get('animate')) {\n graph.positionsAnimate();\n } else {\n graph.refreshPositions();\n }\n }; // 更换布局\n\n\n LayoutController.prototype.changeLayout = function (cfg) {\n this.layoutCfg = cfg;\n this.destoryLayoutMethods();\n this.layout();\n }; // 更换数据\n\n\n LayoutController.prototype.changeData = function () {\n this.destoryLayoutMethods();\n this.layout();\n };\n\n LayoutController.prototype.destoryLayoutMethods = function () {\n var layoutMethods = this.layoutMethods;\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod) {\n layoutMethod.destroy();\n });\n this.layoutMethods = [];\n }; // 销毁布局,不能使用 this.destroy,因为 controller 还需要被使用,只是把布局算法销毁\n\n\n LayoutController.prototype.destroyLayout = function () {\n var graph = this.graph;\n this.destoryLayoutMethods();\n graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n }; // 从 this.graph 获取数据\n\n\n LayoutController.prototype.setDataFromGraph = function () {\n var nodes = [];\n var hiddenNodes = [];\n var edges = [];\n var hiddenEdges = [];\n var comboEdges = [];\n var combos = [];\n var hiddenCombos = [];\n var nodeItems = this.graph.getNodes();\n var edgeItems = this.graph.getEdges();\n var comboItems = this.graph.getCombos();\n var nodeLength = nodeItems.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var nodeItem = nodeItems[i];\n if (!nodeItem || nodeItem.destroyed) continue;\n var model = nodeItem.getModel();\n\n if (!nodeItem.isVisible()) {\n hiddenNodes.push(model);\n continue;\n }\n\n nodes.push(model);\n }\n\n var edgeLength = edgeItems.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edgeItem = edgeItems[i];\n if (!edgeItem || edgeItem.destroyed) continue;\n var model = edgeItem.getModel();\n\n if (!edgeItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n if (!model.isComboEdge) edges.push(model);else comboEdges.push(model);\n }\n\n var comboLength = comboItems.length;\n\n for (var i = 0; i < comboLength; i++) {\n var comboItem = comboItems[i];\n if (comboItem.destroyed) continue;\n var model = comboItem.getModel();\n\n if (!comboItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n combos.push(model);\n }\n\n return {\n nodes: nodes,\n hiddenNodes: hiddenNodes,\n edges: edges,\n hiddenEdges: hiddenEdges,\n combos: combos,\n hiddenCombos: hiddenCombos,\n comboEdges: comboEdges\n };\n };\n\n LayoutController.prototype.reLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n var graph = _this.graph;\n var layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n\n layoutMethod.init(_this.data);\n\n if (layoutType === 'force') {\n layoutMethod.ticking = false;\n layoutMethod.forceSimulation.stop();\n }\n\n graph.emit('beforesublayout', {\n type: layoutType\n });\n layoutMethod.execute();\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n });\n }; // 重新布局\n\n\n LayoutController.prototype.relayout = function (reloadData) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods,\n layoutCfg = _a.layoutCfg;\n\n if (reloadData) {\n this.data = this.setDataFromGraph();\n var nodes = this.data.nodes;\n\n if (!nodes) {\n return false;\n }\n\n this.initPositions(layoutCfg.center, nodes);\n }\n\n graph.emit('beforelayout');\n var start = Promise.resolve();\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg[index];\n start = start.then(function () {\n return _this.reLayoutMethod(layoutMethod, currentCfg);\n });\n });\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('relayout failed', error);\n });\n }; // 筛选参与布局的nodes和edges\n\n\n LayoutController.prototype.filterLayoutData = function (data, cfg) {\n var nodes = data.nodes,\n edges = data.edges,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(data, [\"nodes\", \"edges\"]);\n\n if (!nodes) {\n return data;\n }\n\n var nodesFilter;\n var edegsFilter;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) {\n nodesFilter = cfg.nodesFilter;\n } else {\n nodesFilter = function nodesFilter() {\n return true;\n };\n }\n\n var fNodes = nodes.filter(nodesFilter);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) {\n edegsFilter = cfg.edgesFilter;\n } else {\n var nodesMap_1 = fNodes.reduce(function (acc, cur) {\n acc[cur.id] = true;\n return acc;\n }, {});\n\n edegsFilter = function edegsFilter(edge) {\n return nodesMap_1[edge.source] && nodesMap_1[edge.target];\n };\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n nodes: fNodes,\n edges: edges.filter(edegsFilter)\n }, rest);\n };\n\n LayoutController.prototype.getLayoutBBox = function (nodes) {\n var graph = this.graph;\n var graphGroupNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(graph.getNodes(), function (n) {\n return n.getModel().layoutOrder;\n });\n var layoutNodes = Object.values(graphGroupNodes).map(function (value) {\n var bbox = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"calculationItemsBBox\"])(value);\n bbox.size = [bbox.width, bbox.height];\n return bbox;\n });\n var groupNodes = Object.values(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(nodes, 'layoutOrder'));\n return {\n groupNodes: groupNodes,\n layoutNodes: layoutNodes\n };\n }; // 控制布局动画\n // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.layoutAnimate = function () {}; // 将当前节点的平均中心移动到原点\n\n\n LayoutController.prototype.moveToZero = function () {\n var graph = this.graph;\n var data = graph.get('data');\n var nodes = data.nodes;\n\n if (nodes[0].x === undefined || nodes[0].x === null || Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(nodes[0].x)) {\n return;\n }\n\n var meanCenter = [0, 0];\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n meanCenter[0] += node.x;\n meanCenter[1] += node.y;\n }\n\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x -= meanCenter[0];\n node.y -= meanCenter[1];\n }\n }; // 初始化节点到 center 附近\n\n\n LayoutController.prototype.initPositions = function (center, nodes) {\n var graph = this.graph;\n\n if (!nodes) {\n return false;\n }\n\n var nodeLength = nodes ? nodes.length : 0;\n if (!nodeLength) return;\n var width = graph.get('width') * 0.85;\n var height = graph.get('height') * 0.85;\n var horiNum = Math.ceil(Math.sqrt(nodeLength) * (width / height));\n var vertiNum = Math.ceil(nodeLength / horiNum);\n var horiGap = width / (horiNum - 1);\n var vertiGap = height / (vertiNum - 1);\n if (!isFinite(horiGap) || !horiGap) horiGap = 0;\n if (!isFinite(vertiGap) || !horiGap) vertiGap = 0;\n var beginX = center[0] - width / 2;\n var beginY = center[1] - height / 2;\n var allHavePos = true;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.x)) {\n allHavePos = false;\n node.x = i % horiNum * horiGap + beginX;\n }\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.y)) {\n allHavePos = false;\n node.y = Math.floor(i / horiNum) * vertiGap + beginY;\n }\n }\n\n return allHavePos;\n };\n\n LayoutController.prototype.destroy = function () {\n this.graph = null;\n this.destoryLayoutMethods();\n this.destroyed = true;\n };\n\n return LayoutController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LayoutController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2xheW91dC5qcz8yNjhiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1E7QUFDYTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsdURBQXVEO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdEO0FBQ2hEOztBQUVBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEZBQTRGOztBQUU1RjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0RBQU07O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsNkRBQVU7QUFDbEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw2REFBVTtBQUNsQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQUk7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMERBQU87QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxpQkFBaUIsdUVBQW9CO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUNBQW1DLDBEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQSw0REFBNEQ7OztBQUc1RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyREFBMkQsd0RBQUs7QUFDaEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQSxVQUFVLHdEQUFLO0FBQ2Y7QUFDQTtBQUNBOztBQUVBLFVBQVUsd0RBQUs7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLCtFQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgZ3JvdXBCeSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgaXNOYU4sIGNhbGN1bGF0aW9uSXRlbXNCQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9iYXNlJztcblxudmFyIExheW91dENvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYXlvdXRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gZ3JhcGguZ2V0KCdsYXlvdXQnKSB8fCB7fTtcbiAgICB0aGlzLmxheW91dFR5cGUgPSB0aGlzLmdldExheW91dFR5cGUoKTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdExheW91dCA9IGZ1bmN0aW9uICgpIHsvLyBubyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5nZXRMYXlvdXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldExheW91dENmZ1R5cGUodGhpcy5sYXlvdXRDZmcpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dENmZ1R5cGUgPSBmdW5jdGlvbiAobGF5b3V0Q2ZnKSB7XG4gICAgdmFyIHR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gdHlwZSBzaG91bGQgYmUgdG9wIHByaW9yaXR5XG5cbiAgICBpZiAodHlwZSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgdmFyIHBpcGVzID0gbGF5b3V0Q2ZnLnBpcGVzO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGlwZXMpKSB7XG4gICAgICByZXR1cm4gcGlwZXMubWFwKGZ1bmN0aW9uIChwaXBlKSB7XG4gICAgICAgIHJldHVybiAocGlwZSA9PT0gbnVsbCB8fCBwaXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwaXBlLnR5cGUpIHx8ICcnO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaXNMYXlvdXRUeXBlU2FtZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0TGF5b3V0Q2ZnVHlwZShjZmcpOyAvLyBhbHJlYWR5IGhhcyBwaXBlc1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5sYXlvdXRUeXBlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VHlwZS5ldmVyeShmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09IGN1cnJlbnRbaW5kZXhdO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcudHlwZSkgPT09IHRoaXMubGF5b3V0VHlwZTtcbiAgfTsgLy8g57uY5Yi2XG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWZyZXNoTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgaWYgKCFncmFwaCkgcmV0dXJuO1xuXG4gICAgaWYgKGdyYXBoLmdldCgnYW5pbWF0ZScpKSB7XG4gICAgICBncmFwaC5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYXBoLnJlZnJlc2hQb3NpdGlvbnMoKTtcbiAgICB9XG4gIH07IC8vIOabtOaNouW4g+WxgFxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuY2hhbmdlTGF5b3V0ID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gY2ZnO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmxheW91dCgpO1xuICB9OyAvLyDmm7TmjaLmlbDmja5cblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kZXN0b3J5TGF5b3V0TWV0aG9kcygpO1xuICAgIHRoaXMubGF5b3V0KCk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdG9yeUxheW91dE1ldGhvZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxheW91dE1ldGhvZHMgPSB0aGlzLmxheW91dE1ldGhvZHM7XG4gICAgbGF5b3V0TWV0aG9kcyA9PT0gbnVsbCB8fCBsYXlvdXRNZXRob2RzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRNZXRob2RzLmZvckVhY2goZnVuY3Rpb24gKGxheW91dE1ldGhvZCkge1xuICAgICAgbGF5b3V0TWV0aG9kLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgfTsgLy8g6ZSA5q+B5biD5bGA77yM5LiN6IO95L2/55SoIHRoaXMuZGVzdHJvee+8jOWboOS4uiBjb250cm9sbGVyIOi/mOmcgOimgeiiq+S9v+eUqO+8jOWPquaYr+aKiuW4g+WxgOeul+azlemUgOavgVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveUxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICBncmFwaC5zZXQoJ2xheW91dCcsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sYXlvdXRDZmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXlvdXRUeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGF5b3V0TWV0aG9kcyA9IHVuZGVmaW5lZDtcbiAgfTsgLy8g5LuOIHRoaXMuZ3JhcGgg6I635Y+W5pWw5o2uXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5zZXREYXRhRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Ob2RlcyA9IFtdO1xuICAgIHZhciBlZGdlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5FZGdlcyA9IFtdO1xuICAgIHZhciBjb21ib0VkZ2VzID0gW107XG4gICAgdmFyIGNvbWJvcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Db21ib3MgPSBbXTtcbiAgICB2YXIgbm9kZUl0ZW1zID0gdGhpcy5ncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBlZGdlSXRlbXMgPSB0aGlzLmdyYXBoLmdldEVkZ2VzKCk7XG4gICAgdmFyIGNvbWJvSXRlbXMgPSB0aGlzLmdyYXBoLmdldENvbWJvcygpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZUl0ZW1zLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZUl0ZW0gPSBub2RlSXRlbXNbaV07XG4gICAgICBpZiAoIW5vZGVJdGVtIHx8IG5vZGVJdGVtLmRlc3Ryb3llZCkgY29udGludWU7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlSXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAoIW5vZGVJdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlSXRlbXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlSXRlbSA9IGVkZ2VJdGVtc1tpXTtcbiAgICAgIGlmICghZWRnZUl0ZW0gfHwgZWRnZUl0ZW0uZGVzdHJveWVkKSBjb250aW51ZTtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2VJdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghZWRnZUl0ZW0uaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgaGlkZGVuRWRnZXMucHVzaChtb2RlbCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW1vZGVsLmlzQ29tYm9FZGdlKSBlZGdlcy5wdXNoKG1vZGVsKTtlbHNlIGNvbWJvRWRnZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9JdGVtcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJvTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21ib0l0ZW0gPSBjb21ib0l0ZW1zW2ldO1xuICAgICAgaWYgKGNvbWJvSXRlbS5kZXN0cm95ZWQpIGNvbnRpbnVlO1xuICAgICAgdmFyIG1vZGVsID0gY29tYm9JdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghY29tYm9JdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbkVkZ2VzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29tYm9zLnB1c2gobW9kZWwpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBub2Rlczogbm9kZXMsXG4gICAgICBoaWRkZW5Ob2RlczogaGlkZGVuTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMsXG4gICAgICBoaWRkZW5FZGdlczogaGlkZGVuRWRnZXMsXG4gICAgICBjb21ib3M6IGNvbWJvcyxcbiAgICAgIGhpZGRlbkNvbWJvczogaGlkZGVuQ29tYm9zLFxuICAgICAgY29tYm9FZGdlczogY29tYm9FZGdlc1xuICAgIH07XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUucmVMYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAobGF5b3V0TWV0aG9kLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHZhciBncmFwaCA9IF90aGlzLmdyYXBoO1xuICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcgPT09IG51bGwgfHwgbGF5b3V0Q2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRDZmcudHlwZTsgLy8g5q+P5Liq5biD5bGA5pa55rOV6YO96ZyA6KaB5rOo5YaMXG5cbiAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgdHlwZTogbGF5b3V0VHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgfTtcblxuICAgICAgbGF5b3V0TWV0aG9kLmluaXQoX3RoaXMuZGF0YSk7XG5cbiAgICAgIGlmIChsYXlvdXRUeXBlID09PSAnZm9yY2UnKSB7XG4gICAgICAgIGxheW91dE1ldGhvZC50aWNraW5nID0gZmFsc2U7XG4gICAgICAgIGxheW91dE1ldGhvZC5mb3JjZVNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5lbWl0KCdiZWZvcmVzdWJsYXlvdXQnLCB7XG4gICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0TWV0aG9kLmV4ZWN1dGUoKTtcbiAgICAgIGlmIChsYXlvdXRNZXRob2QuaXNDdXN0b21MYXlvdXQgJiYgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKSBsYXlvdXRDZmcub25MYXlvdXRFbmQoKTtcbiAgICB9KTtcbiAgfTsgLy8g6YeN5paw5biD5bGAXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWxheW91dCA9IGZ1bmN0aW9uIChyZWxvYWREYXRhKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGxheW91dE1ldGhvZHMgPSBfYS5sYXlvdXRNZXRob2RzLFxuICAgICAgICBsYXlvdXRDZmcgPSBfYS5sYXlvdXRDZmc7XG5cbiAgICBpZiAocmVsb2FkRGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZXREYXRhRnJvbUdyYXBoKCk7XG4gICAgICB2YXIgbm9kZXMgPSB0aGlzLmRhdGEubm9kZXM7XG5cbiAgICAgIGlmICghbm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluaXRQb3NpdGlvbnMobGF5b3V0Q2ZnLmNlbnRlciwgbm9kZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHZhciBzdGFydCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGxheW91dE1ldGhvZHMgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0TWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChsYXlvdXRNZXRob2QsIGluZGV4KSB7XG4gICAgICB2YXIgY3VycmVudENmZyA9IGxheW91dENmZ1tpbmRleF07XG4gICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMucmVMYXlvdXRNZXRob2QobGF5b3V0TWV0aG9kLCBjdXJyZW50Q2ZnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vbkFsbExheW91dEVuZCkgbGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ3JlbGF5b3V0IGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfTsgLy8g562b6YCJ5Y+C5LiO5biD5bGA55qEbm9kZXPlkoxlZGdlc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZmlsdGVyTGF5b3V0RGF0YSA9IGZ1bmN0aW9uIChkYXRhLCBjZmcpIHtcbiAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IGRhdGEuZWRnZXMsXG4gICAgICAgIHJlc3QgPSBfX3Jlc3QoZGF0YSwgW1wibm9kZXNcIiwgXCJlZGdlc1wiXSk7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZXNGaWx0ZXI7XG4gICAgdmFyIGVkZWdzRmlsdGVyO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLm5vZGVzRmlsdGVyKSkge1xuICAgICAgbm9kZXNGaWx0ZXIgPSBjZmcubm9kZXNGaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzRmlsdGVyID0gZnVuY3Rpb24gbm9kZXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZk5vZGVzID0gbm9kZXMuZmlsdGVyKG5vZGVzRmlsdGVyKTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5lZGdlc0ZpbHRlcikpIHtcbiAgICAgIGVkZWdzRmlsdGVyID0gY2ZnLmVkZ2VzRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZXNNYXBfMSA9IGZOb2Rlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgICAgIGFjY1tjdXIuaWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgZWRlZ3NGaWx0ZXIgPSBmdW5jdGlvbiBlZGVnc0ZpbHRlcihlZGdlKSB7XG4gICAgICAgIHJldHVybiBub2Rlc01hcF8xW2VkZ2Uuc291cmNlXSAmJiBub2Rlc01hcF8xW2VkZ2UudGFyZ2V0XTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fYXNzaWduKHtcbiAgICAgIG5vZGVzOiBmTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMuZmlsdGVyKGVkZWdzRmlsdGVyKVxuICAgIH0sIHJlc3QpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dEJCb3ggPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBncmFwaEdyb3VwTm9kZXMgPSBncm91cEJ5KGdyYXBoLmdldE5vZGVzKCksIGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbi5nZXRNb2RlbCgpLmxheW91dE9yZGVyO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXROb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JhcGhHcm91cE5vZGVzKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgYmJveCA9IGNhbGN1bGF0aW9uSXRlbXNCQm94KHZhbHVlKTtcbiAgICAgIGJib3guc2l6ZSA9IFtiYm94LndpZHRoLCBiYm94LmhlaWdodF07XG4gICAgICByZXR1cm4gYmJveDtcbiAgICB9KTtcbiAgICB2YXIgZ3JvdXBOb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBCeShub2RlcywgJ2xheW91dE9yZGVyJykpO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cE5vZGVzOiBncm91cE5vZGVzLFxuICAgICAgbGF5b3V0Tm9kZXM6IGxheW91dE5vZGVzXG4gICAgfTtcbiAgfTsgLy8g5o6n5Yi25biD5bGA5Yqo55S7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5sYXlvdXRBbmltYXRlID0gZnVuY3Rpb24gKCkge307IC8vIOWwhuW9k+WJjeiKgueCueeahOW5s+Wdh+S4reW/g+enu+WKqOWIsOWOn+eCuVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUubW92ZVRvWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBkYXRhID0gZ3JhcGguZ2V0KCdkYXRhJyk7XG4gICAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcblxuICAgIGlmIChub2Rlc1swXS54ID09PSB1bmRlZmluZWQgfHwgbm9kZXNbMF0ueCA9PT0gbnVsbCB8fCBpc05hTihub2Rlc1swXS54KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBtZWFuQ2VudGVyID0gWzAsIDBdO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBtZWFuQ2VudGVyWzBdICs9IG5vZGUueDtcbiAgICAgIG1lYW5DZW50ZXJbMV0gKz0gbm9kZS55O1xuICAgIH1cblxuICAgIG1lYW5DZW50ZXJbMF0gLz0gbm9kZXMubGVuZ3RoO1xuICAgIG1lYW5DZW50ZXJbMV0gLz0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBub2RlLnggLT0gbWVhbkNlbnRlclswXTtcbiAgICAgIG5vZGUueSAtPSBtZWFuQ2VudGVyWzFdO1xuICAgIH1cbiAgfTsgLy8g5Yid5aeL5YyW6IqC54K55YiwIGNlbnRlciDpmYTov5FcblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmluaXRQb3NpdGlvbnMgPSBmdW5jdGlvbiAoY2VudGVyLCBub2Rlcykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2RlcyA/IG5vZGVzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFub2RlTGVuZ3RoKSByZXR1cm47XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpICogMC44NTtcbiAgICB2YXIgaGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKSAqIDAuODU7XG4gICAgdmFyIGhvcmlOdW0gPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KG5vZGVMZW5ndGgpICogKHdpZHRoIC8gaGVpZ2h0KSk7XG4gICAgdmFyIHZlcnRpTnVtID0gTWF0aC5jZWlsKG5vZGVMZW5ndGggLyBob3JpTnVtKTtcbiAgICB2YXIgaG9yaUdhcCA9IHdpZHRoIC8gKGhvcmlOdW0gLSAxKTtcbiAgICB2YXIgdmVydGlHYXAgPSBoZWlnaHQgLyAodmVydGlOdW0gLSAxKTtcbiAgICBpZiAoIWlzRmluaXRlKGhvcmlHYXApIHx8ICFob3JpR2FwKSBob3JpR2FwID0gMDtcbiAgICBpZiAoIWlzRmluaXRlKHZlcnRpR2FwKSB8fCAhaG9yaUdhcCkgdmVydGlHYXAgPSAwO1xuICAgIHZhciBiZWdpblggPSBjZW50ZXJbMF0gLSB3aWR0aCAvIDI7XG4gICAgdmFyIGJlZ2luWSA9IGNlbnRlclsxXSAtIGhlaWdodCAvIDI7XG4gICAgdmFyIGFsbEhhdmVQb3MgPSB0cnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG5cbiAgICAgIGlmIChpc05hTigrbm9kZS54KSkge1xuICAgICAgICBhbGxIYXZlUG9zID0gZmFsc2U7XG4gICAgICAgIG5vZGUueCA9IGkgJSBob3JpTnVtICogaG9yaUdhcCArIGJlZ2luWDtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmFOKCtub2RlLnkpKSB7XG4gICAgICAgIGFsbEhhdmVQb3MgPSBmYWxzZTtcbiAgICAgICAgbm9kZS55ID0gTWF0aC5mbG9vcihpIC8gaG9yaU51bSkgKiB2ZXJ0aUdhcCArIGJlZ2luWTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsSGF2ZVBvcztcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIExheW91dENvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../behavior/behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js\");\n\n\n\nvar ModeController =\n/** @class */\nfunction () {\n function ModeController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.modes = graph.get('modes') || {\n default: []\n };\n this.formatModes();\n this.mode = graph.get('defaultMode') || 'default';\n this.currentBehaves = [];\n this.setMode(this.mode);\n }\n\n ModeController.prototype.formatModes = function () {\n var modes = this.modes;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(mode, function (behavior, i) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n mode[i] = {\n type: behavior\n };\n }\n });\n });\n };\n\n ModeController.prototype.setBehaviors = function (mode) {\n var graph = this.graph;\n var behaviors = this.modes[mode];\n var behaves = [];\n var behave;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors || [], function (behavior) {\n var BehaviorInstance = _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getBehavior(behavior.type || behavior);\n\n if (!BehaviorInstance) {\n return;\n }\n\n behave = new BehaviorInstance(behavior);\n\n if (behave) {\n behave.bind(graph);\n behaves.push(behave);\n }\n });\n this.currentBehaves = behaves;\n };\n\n ModeController.mergeBehaviors = function (modeBehaviors, behaviors) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior) {\n if (modeBehaviors.indexOf(behavior) < 0) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n modeBehaviors.push(behavior);\n }\n });\n return modeBehaviors;\n };\n\n ModeController.filterBehaviors = function (modeBehaviors, behaviors) {\n var result = [];\n modeBehaviors.forEach(function (behavior) {\n var type = '';\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n type = behavior;\n } else {\n // eslint-disable-next-line prefer-destructuring\n type = behavior.type;\n }\n\n if (behaviors.indexOf(type) < 0) {\n result.push(behavior);\n }\n });\n return result;\n };\n\n ModeController.prototype.setMode = function (mode) {\n var _a = this,\n modes = _a.modes,\n graph = _a.graph;\n\n var current = mode;\n var behaviors = modes[current];\n\n if (!behaviors) {\n return;\n }\n\n graph.emit('beforemodechange', {\n mode: mode\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(this.currentBehaves, function (behave) {\n if (behave.delegate) behave.delegate.remove();\n behave.unbind(graph);\n });\n this.setBehaviors(current);\n graph.emit('aftermodechange', {\n mode: mode\n });\n this.mode = mode;\n };\n\n ModeController.prototype.getMode = function () {\n return this.mode;\n };\n /**\n * 动态增加或删除 Behavior\n *\n * @param {ModeType[]} behaviors\n * @param {(ModeType[] | ModeType)} modes\n * @param {boolean} isAdd\n * @returns {Mode}\n * @memberof Mode\n */\n\n\n ModeController.prototype.manipulateBehaviors = function (behaviors, modes, isAdd) {\n var _this = this;\n\n var behaves;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(behaviors)) {\n behaves = [behaviors];\n } else {\n behaves = behaviors;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(modes)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n if (!_this.modes[mode]) {\n if (isAdd) {\n _this.modes[mode] = behaves;\n }\n } else if (isAdd) {\n _this.modes[mode] = ModeController.mergeBehaviors(_this.modes[mode] || [], behaves);\n } else {\n _this.modes[mode] = ModeController.filterBehaviors(_this.modes[mode] || [], behaves);\n }\n });\n return this;\n }\n\n var currentMode = modes;\n\n if (!modes) {\n currentMode = this.mode; // isString(this.mode) ? this.mode : this.mode.type\n }\n\n if (!this.modes[currentMode]) {\n if (isAdd) {\n this.modes[currentMode] = behaves;\n }\n }\n\n if (isAdd) {\n this.modes[currentMode] = ModeController.mergeBehaviors(this.modes[currentMode] || [], behaves);\n } else {\n this.modes[currentMode] = ModeController.filterBehaviors(this.modes[currentMode] || [], behaves);\n }\n\n this.formatModes();\n this.setMode(this.mode);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n ModeController.prototype.updateBehavior = function (behavior, newCfg, mode) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n var behaviorSet = [];\n\n if (!mode || mode === this.mode || mode === 'default') {\n behaviorSet = this.currentBehaves;\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_1 = behaviorSet.length;\n\n for (var i = 0; i < length_1; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type) {\n behave.updateCfg(newCfg);\n return this;\n }\n\n if (i === length_1 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n } else {\n behaviorSet = this.modes[mode];\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_2 = behaviorSet.length;\n\n for (var i = 0; i < length_2; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type || behave === behavior.type) {\n if (behave === behavior.type) behave = {\n type: behave\n };\n Object.assign(behave, newCfg);\n behaviorSet[i] = behave;\n return this;\n }\n\n if (i === length_2 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n }\n\n return this;\n };\n\n ModeController.prototype.destroy = function () {\n this.graph = null;\n this.modes = null;\n this.currentBehaves = null;\n this.destroyed = true;\n };\n\n return ModeController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ModeController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanM/MGJiNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDTjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLDZCQUE2QiwwREFBUTs7QUFFckM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsV0FBVztBQUN4QixhQUFhLHdCQUF3QjtBQUNyQyxhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUywwREFBTztBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLFFBQVEsMERBQU87QUFDZixNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsK0JBQStCO0FBQzVDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLGNBQWM7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxxQkFBcUIsY0FBYztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJlaGF2aW9yIGZyb20gJy4uLy4uL2JlaGF2aW9yL2JlaGF2aW9yJztcblxudmFyIE1vZGVDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTW9kZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm1vZGVzID0gZ3JhcGguZ2V0KCdtb2RlcycpIHx8IHtcbiAgICAgIGRlZmF1bHQ6IFtdXG4gICAgfTtcbiAgICB0aGlzLmZvcm1hdE1vZGVzKCk7XG4gICAgdGhpcy5tb2RlID0gZ3JhcGguZ2V0KCdkZWZhdWx0TW9kZScpIHx8ICdkZWZhdWx0JztcbiAgICB0aGlzLmN1cnJlbnRCZWhhdmVzID0gW107XG4gICAgdGhpcy5zZXRNb2RlKHRoaXMubW9kZSk7XG4gIH1cblxuICBNb2RlQ29udHJvbGxlci5wcm90b3R5cGUuZm9ybWF0TW9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGVzID0gdGhpcy5tb2RlcztcbiAgICBlYWNoKG1vZGVzLCBmdW5jdGlvbiAobW9kZSkge1xuICAgICAgZWFjaChtb2RlLCBmdW5jdGlvbiAoYmVoYXZpb3IsIGkpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICAgIG1vZGVbaV0gPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5zZXRCZWhhdmlvcnMgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGJlaGF2aW9ycyA9IHRoaXMubW9kZXNbbW9kZV07XG4gICAgdmFyIGJlaGF2ZXMgPSBbXTtcbiAgICB2YXIgYmVoYXZlO1xuICAgIGVhY2goYmVoYXZpb3JzIHx8IFtdLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIHZhciBCZWhhdmlvckluc3RhbmNlID0gQmVoYXZpb3IuZ2V0QmVoYXZpb3IoYmVoYXZpb3IudHlwZSB8fCBiZWhhdmlvcik7XG5cbiAgICAgIGlmICghQmVoYXZpb3JJbnN0YW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGJlaGF2ZSA9IG5ldyBCZWhhdmlvckluc3RhbmNlKGJlaGF2aW9yKTtcblxuICAgICAgaWYgKGJlaGF2ZSkge1xuICAgICAgICBiZWhhdmUuYmluZChncmFwaCk7XG4gICAgICAgIGJlaGF2ZXMucHVzaChiZWhhdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBiZWhhdmVzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzID0gZnVuY3Rpb24gKG1vZGVCZWhhdmlvcnMsIGJlaGF2aW9ycykge1xuICAgIGVhY2goYmVoYXZpb3JzLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIGlmIChtb2RlQmVoYXZpb3JzLmluZGV4T2YoYmVoYXZpb3IpIDwgMCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICAgICAgYmVoYXZpb3IgPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBtb2RlQmVoYXZpb3JzLnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtb2RlQmVoYXZpb3JzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyA9IGZ1bmN0aW9uIChtb2RlQmVoYXZpb3JzLCBiZWhhdmlvcnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgbW9kZUJlaGF2aW9ycy5mb3JFYWNoKGZ1bmN0aW9uIChiZWhhdmlvcikge1xuICAgICAgdmFyIHR5cGUgPSAnJztcblxuICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICB0eXBlID0gYmVoYXZpb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdHlwZSA9IGJlaGF2aW9yLnR5cGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZWhhdmlvcnMuaW5kZXhPZih0eXBlKSA8IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vZGUgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIG1vZGVzID0gX2EubW9kZXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICB2YXIgY3VycmVudCA9IG1vZGU7XG4gICAgdmFyIGJlaGF2aW9ycyA9IG1vZGVzW2N1cnJlbnRdO1xuXG4gICAgaWYgKCFiZWhhdmlvcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIGVhY2godGhpcy5jdXJyZW50QmVoYXZlcywgZnVuY3Rpb24gKGJlaGF2ZSkge1xuICAgICAgaWYgKGJlaGF2ZS5kZWxlZ2F0ZSkgYmVoYXZlLmRlbGVnYXRlLnJlbW92ZSgpO1xuICAgICAgYmVoYXZlLnVuYmluZChncmFwaCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRCZWhhdmlvcnMoY3VycmVudCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLmdldE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWKqOaAgeWinuWKoOaIluWIoOmZpCBCZWhhdmlvclxuICAgKlxuICAgKiBAcGFyYW0ge01vZGVUeXBlW119IGJlaGF2aW9yc1xuICAgKiBAcGFyYW0geyhNb2RlVHlwZVtdIHwgTW9kZVR5cGUpfSBtb2Rlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWRkXG4gICAqIEByZXR1cm5zIHtNb2RlfVxuICAgKiBAbWVtYmVyb2YgTW9kZVxuICAgKi9cblxuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5tYW5pcHVsYXRlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMsIGlzQWRkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBiZWhhdmVzO1xuXG4gICAgaWYgKCFpc0FycmF5KGJlaGF2aW9ycykpIHtcbiAgICAgIGJlaGF2ZXMgPSBbYmVoYXZpb3JzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZlcyA9IGJlaGF2aW9ycztcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheShtb2RlcykpIHtcbiAgICAgIGVhY2gobW9kZXMsIGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgICAgIGlmICghX3RoaXMubW9kZXNbbW9kZV0pIHtcbiAgICAgICAgICBpZiAoaXNBZGQpIHtcbiAgICAgICAgICAgIF90aGlzLm1vZGVzW21vZGVdID0gYmVoYXZlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBZGQpIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzKF90aGlzLm1vZGVzW21vZGVdIHx8IFtdLCBiZWhhdmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyhfdGhpcy5tb2Rlc1ttb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRNb2RlID0gbW9kZXM7XG5cbiAgICBpZiAoIW1vZGVzKSB7XG4gICAgICBjdXJyZW50TW9kZSA9IHRoaXMubW9kZTsgLy8gaXNTdHJpbmcodGhpcy5tb2RlKSA/IHRoaXMubW9kZSA6IHRoaXMubW9kZS50eXBlXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSkge1xuICAgICAgaWYgKGlzQWRkKSB7XG4gICAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gYmVoYXZlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNBZGQpIHtcbiAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gTW9kZUNvbnRyb2xsZXIubWVyZ2VCZWhhdmlvcnModGhpcy5tb2Rlc1tjdXJyZW50TW9kZV0gfHwgW10sIGJlaGF2ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyh0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXRNb2RlcygpO1xuICAgIHRoaXMuc2V0TW9kZSh0aGlzLm1vZGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5pu05paw6KGM5Li65Y+C5pWwXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgTW9kZU9wdGlvbiB8IE1vZGVUeXBlfSBiZWhhdmlvciDpnIDopoHmm7TmlrDnmoTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gbW9kZXMg5oyH5a6a55qE5qih5byP5Lit55qE6KGM5Li677yM5LiN5oyH5a6a5YiZ5Li6IGRlZmF1bHRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICBiZWhhdmlvciA9IHtcbiAgICAgICAgdHlwZTogYmVoYXZpb3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGJlaGF2aW9yU2V0ID0gW107XG5cbiAgICBpZiAoIW1vZGUgfHwgbW9kZSA9PT0gdGhpcy5tb2RlIHx8IG1vZGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLmN1cnJlbnRCZWhhdmVzO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMSA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMTsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUpIHtcbiAgICAgICAgICBiZWhhdmUudXBkYXRlQ2ZnKG5ld0NmZyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA9PT0gbGVuZ3RoXzEgLSAxKSBjb25zb2xlLndhcm4oJ1VwZGF0ZSBiZWhhdmlvciBmYWlsZWQhIFRoZXJlIGlzIG5vIHN1Y2ggYmVoYXZpb3IgaW4gdGhlIG1vZGUnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLm1vZGVzW21vZGVdO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMiA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMjsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUgfHwgYmVoYXZlID09PSBiZWhhdmlvci50eXBlKSB7XG4gICAgICAgICAgaWYgKGJlaGF2ZSA9PT0gYmVoYXZpb3IudHlwZSkgYmVoYXZlID0ge1xuICAgICAgICAgICAgdHlwZTogYmVoYXZlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGJlaGF2ZSwgbmV3Q2ZnKTtcbiAgICAgICAgICBiZWhhdmlvclNldFtpXSA9IGJlaGF2ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID09PSBsZW5ndGhfMiAtIDEpIGNvbnNvbGUud2FybignVXBkYXRlIGJlaGF2aW9yIGZhaWxlZCEgVGhlcmUgaXMgbm8gc3VjaCBiZWhhdmlvciBpbiB0aGUgbW9kZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMubW9kZXMgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4gTW9kZUNvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar timer = null;\n\nvar StateController =\n/** @class */\nfunction () {\n function StateController(graph) {\n this.graph = graph;\n /**\n * this.cachedStates = {\n * enabled: {\n * hover: [Node]\n * },\n * disabled: {}\n * }\n */\n\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n this.destroyed = false;\n }\n /**\n * 检查 cache 的可用性\n *\n * @private\n * @param {Item} item\n * @param {string} state\n * @param {object} cache\n * @returns\n * @memberof State\n */\n\n\n StateController.checkCache = function (item, state, cache) {\n if (!cache[state]) {\n return;\n }\n\n var index = cache[state].indexOf(item);\n\n if (index >= 0) {\n cache[state].splice(index, 1);\n }\n };\n /**\n * 缓存 state\n *\n * @private\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {object} states\n * @memberof State\n */\n\n\n StateController.cacheState = function (item, state, states) {\n if (!states[state]) {\n states[state] = [];\n }\n\n states[state].push(item);\n };\n /**\n * 更新 Item 的状态\n *\n * @param {Item} item Item实例\n * @param {string} state 状态名称\n * @param {boolean} enabled 状态是否可用\n * @memberof State\n */\n\n\n StateController.prototype.updateState = function (item, state, enabled) {\n var _this = this;\n\n var checkCache = StateController.checkCache,\n cacheState = StateController.cacheState;\n\n if (item.destroyed) {\n return;\n }\n\n var cachedStates = this.cachedStates;\n var enabledStates = cachedStates.enabled;\n var disabledStates = cachedStates.disabled;\n\n if (enabled) {\n checkCache(item, state, disabledStates);\n cacheState(item, state, enabledStates);\n } else {\n checkCache(item, state, enabledStates);\n cacheState(item, state, disabledStates);\n }\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(function () {\n timer = null;\n\n _this.updateGraphStates();\n }, 16);\n };\n /**\n * 批量更新 states,兼容 updateState,支持更新一个 state\n *\n * @param {Item} item\n * @param {(string | string[])} states\n * @param {boolean} enabled\n * @memberof State\n */\n\n\n StateController.prototype.updateStates = function (item, states, enabled) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(states)) {\n this.updateState(item, states, enabled);\n } else {\n states.forEach(function (state) {\n _this.updateState(item, state, enabled);\n });\n }\n };\n /**\n * 更新 states\n *\n * @memberof State\n */\n\n\n StateController.prototype.updateGraphStates = function () {\n var states = this.graph.get('states');\n var cachedStates = this.cachedStates;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.disabled, function (val, key) {\n if (states[key]) {\n states[key] = states[key].filter(function (item) {\n return val.indexOf(item) < 0 && !val.destroyed;\n });\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.enabled, function (val, key) {\n if (!states[key]) {\n states[key] = val;\n } else {\n var map_1 = {};\n states[key].forEach(function (item) {\n if (!item.destroyed) {\n map_1[item.get('id')] = true;\n }\n });\n val.forEach(function (item) {\n if (!item.destroyed) {\n var id = item.get('id');\n\n if (!map_1[id]) {\n map_1[id] = true;\n states[key].push(item);\n }\n }\n });\n }\n });\n this.graph.emit('graphstatechange', {\n states: states\n });\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n };\n\n StateController.prototype.destroy = function () {\n this.graph = null;\n this.cachedStates = null;\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = null;\n this.destroyed = true;\n };\n\n return StateController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (StateController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzPzZkYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLG9CQUFvQjtBQUNqQyxhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsOEVBQWUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0aW1lciA9IG51bGw7XG5cbnZhciBTdGF0ZUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdGF0ZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgLyoqXG4gICAgICogdGhpcy5jYWNoZWRTdGF0ZXMgPSB7XG4gICAgICogICAgZW5hYmxlZDoge1xuICAgICAqICAgICAgICBob3ZlcjogW05vZGVdXG4gICAgICogICAgfSxcbiAgICAgKiAgICAgZGlzYWJsZWQ6IHt9XG4gICAgICogIH1cbiAgICAgKi9cblxuICAgIHRoaXMuY2FjaGVkU3RhdGVzID0ge1xuICAgICAgZW5hYmxlZDoge30sXG4gICAgICBkaXNhYmxlZDoge31cbiAgICB9O1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOajgOafpSBjYWNoZSDnmoTlj6/nlKjmgKdcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY2FjaGVcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIFN0YXRlXG4gICAqL1xuXG5cbiAgU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUsIGNhY2hlKSB7XG4gICAgaWYgKCFjYWNoZVtzdGF0ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBjYWNoZVtzdGF0ZV0uaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjYWNoZVtzdGF0ZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDnvJPlrZggc3RhdGVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0g5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlc1xuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSwgc3RhdGVzKSB7XG4gICAgaWYgKCFzdGF0ZXNbc3RhdGVdKSB7XG4gICAgICBzdGF0ZXNbc3RhdGVdID0gW107XG4gICAgfVxuXG4gICAgc3RhdGVzW3N0YXRlXS5wdXNoKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIEl0ZW0g55qE54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVt5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIOeKtuaAgeaYr+WQpuWPr+eUqFxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCBlbmFibGVkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjaGVja0NhY2hlID0gU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUsXG4gICAgICAgIGNhY2hlU3RhdGUgPSBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZTtcblxuICAgIGlmIChpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYWNoZWRTdGF0ZXMgPSB0aGlzLmNhY2hlZFN0YXRlcztcbiAgICB2YXIgZW5hYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5lbmFibGVkO1xuICAgIHZhciBkaXNhYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5kaXNhYmxlZDtcblxuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBjaGVja0NhY2hlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBlbmFibGVkU3RhdGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tDYWNoZShpdGVtLCBzdGF0ZSwgZW5hYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aW1lciA9IG51bGw7XG5cbiAgICAgIF90aGlzLnVwZGF0ZUdyYXBoU3RhdGVzKCk7XG4gICAgfSwgMTYpO1xuICB9O1xuICAvKipcbiAgICog5om56YeP5pu05pawIHN0YXRlc++8jOWFvOWuuSB1cGRhdGVTdGF0Ze+8jOaUr+aMgeabtOaWsOS4gOS4qiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW1cbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBzdGF0ZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkXG4gICAqIEBtZW1iZXJvZiBTdGF0ZVxuICAgKi9cblxuXG4gIFN0YXRlQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcywgZW5hYmxlZCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoc3RhdGVzKSkge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShpdGVtLCBzdGF0ZXMsIGVuYWJsZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgX3RoaXMudXBkYXRlU3RhdGUoaXRlbSwgc3RhdGUsIGVuYWJsZWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05pawIHN0YXRlc1xuICAgKlxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUdyYXBoU3RhdGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdyYXBoLmdldCgnc3RhdGVzJyk7XG4gICAgdmFyIGNhY2hlZFN0YXRlcyA9IHRoaXMuY2FjaGVkU3RhdGVzO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmRpc2FibGVkLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgIGlmIChzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHN0YXRlc1trZXldLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiB2YWwuaW5kZXhPZihpdGVtKSA8IDAgJiYgIXZhbC5kZXN0cm95ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmVuYWJsZWQsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgaWYgKCFzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtYXBfMSA9IHt9O1xuICAgICAgICBzdGF0ZXNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKCFpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgbWFwXzFbaXRlbS5nZXQoJ2lkJyldID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmICghaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgICAgICAgICBpZiAoIW1hcF8xW2lkXSkge1xuICAgICAgICAgICAgICBtYXBfMVtpZF0gPSB0cnVlO1xuICAgICAgICAgICAgICBzdGF0ZXNba2V5XS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCdncmFwaHN0YXRlY2hhbmdlJywge1xuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFN0YXRlcyA9IHtcbiAgICAgIGVuYWJsZWQ6IHt9LFxuICAgICAgZGlzYWJsZWQ6IHt9XG4gICAgfTtcbiAgfTtcblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gICAgdGhpcy5jYWNoZWRTdGF0ZXMgPSBudWxsO1xuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFN0YXRlQ29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n\n\n\n\n\nvar ViewController =\n/** @class */\nfunction () {\n function ViewController(graph) {\n this.destroyed = false;\n this.graph = graph;\n this.destroyed = false;\n } // get view center coordinate\n\n\n ViewController.prototype.getViewCenter = function () {\n var padding = this.getFormatPadding();\n var graph = this.graph;\n var width = this.graph.get('width');\n var height = graph.get('height');\n return {\n x: (width - padding[1] - padding[3]) / 2 + padding[3],\n y: (height - padding[0] - padding[2]) / 2 + padding[0]\n };\n };\n\n ViewController.prototype.fitCenter = function () {\n var graph = this.graph;\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n }; // fit view graph\n\n\n ViewController.prototype.fitView = function () {\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var w = (width - padding[1] - padding[3]) / bbox.width;\n var h = (height - padding[0] - padding[2]) / bbox.height;\n var ratio = w;\n\n if (w > h) {\n ratio = h;\n }\n\n if (!graph.zoom(ratio, viewCenter)) {\n console.warn('zoom failed, ratio out of range, ratio: %f', ratio);\n }\n }; // fit view graph by rule\n\n\n ViewController.prototype.fitViewByRules = function (rules) {\n var _a = rules.onlyOutOfViewPort,\n onlyOutOfViewPort = _a === void 0 ? false : _a,\n _b = rules.direction,\n direction = _b === void 0 ? 'both' : _b,\n _c = rules.ratioRule,\n ratioRule = _c === void 0 ? 'min' : _c;\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var wRatio = (width - padding[1] - padding[3]) / bbox.width;\n var hRatio = (height - padding[0] - padding[2]) / bbox.height;\n var ratio;\n\n if (direction === 'x') {\n ratio = wRatio;\n } else if (direction === 'y') {\n ratio = hRatio;\n } else {\n // ratioRule\n ratio = ratioRule === 'max' ? Math.max(wRatio, hRatio) : Math.min(wRatio, hRatio);\n } // 如果设置了仅对超出视口宽高的场景进行fitview,则没超出的场景zoom取1\n\n\n if (onlyOutOfViewPort) {\n ratio = ratio < 1 ? ratio : 1;\n }\n\n var initZoomRatio = graph.getZoom();\n var endZoom = initZoomRatio * ratio;\n var minZoom = graph.get('minZoom'); // 如果zoom小于最小zoom, 则以最小zoom为准\n\n if (endZoom < minZoom) {\n endZoom = minZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph minzoom has been used instead');\n }\n\n graph.zoomTo(endZoom, viewCenter);\n };\n\n ViewController.prototype.getFormatPadding = function () {\n var padding = this.graph.get('fitViewPadding');\n return Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(padding);\n };\n\n ViewController.prototype.focusPoint = function (point, animate, animateCfg) {\n var _this = this;\n\n var viewCenter = this.getViewCenter();\n var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y);\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (animate) {\n var dx_1 = (modelCenter.x - point.x) * viewportMatrix[0];\n var dy_1 = (modelCenter.y - point.y) * viewportMatrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0; // 动画每次平移一点,直到目标位置\n\n this.graph.get('canvas').animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n\n _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1);\n\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, animateCfg));\n } else {\n this.graph.translate((modelCenter.x - point.x) * viewportMatrix[0], (modelCenter.y - point.y) * viewportMatrix[4]);\n }\n };\n /**\n * 将 Canvas 坐标转成视口坐标\n * @param canvasX canvas x 坐标\n * @param canvasY canvas y 坐标\n */\n\n\n ViewController.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var point = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"invertMatrix\"])({\n x: canvasX,\n y: canvasY\n }, viewportMatrix);\n return point;\n };\n /**\n * 将页面坐标转成视口坐标\n * @param clientX 页面 x 坐标\n * @param clientY 页面 y 坐标\n */\n\n\n ViewController.prototype.getPointByClient = function (clientX, clientY) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = canvas.getPointByClient(clientX, clientY);\n return this.getPointByCanvas(canvasPoint.x, canvasPoint.y);\n };\n /**\n * 将视口坐标转成页面坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getClientByPoint = function (x, y) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = this.getCanvasByPoint(x, y);\n var point = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y);\n return {\n x: point.x,\n y: point.y\n };\n };\n /**\n * 将视口坐标转成 Canvas 坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getCanvasByPoint = function (x, y) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])({\n x: x,\n y: y\n }, viewportMatrix);\n };\n /**\n * 将元素移动到画布中心\n * @param item Item 实例或 id\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n ViewController.prototype.focus = function (item, animate, animateCfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = this.graph.findById(item);\n }\n\n if (item) {\n var x = 0,\n y = 0;\n\n if (item.getType && item.getType() === 'edge') {\n var sourceMatrix = item.getSource().get('group').getMatrix();\n var targetMatrix = item.getTarget().get('group').getMatrix();\n\n if (sourceMatrix && targetMatrix) {\n x = (sourceMatrix[6] + targetMatrix[6]) / 2;\n y = (sourceMatrix[7] + targetMatrix[7]) / 2;\n } else if (sourceMatrix || targetMatrix) {\n x = sourceMatrix ? sourceMatrix[6] : targetMatrix[6];\n y = sourceMatrix ? sourceMatrix[7] : targetMatrix[7];\n }\n } else {\n var group = item.get('group');\n var matrix = group.getMatrix();\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n x = matrix[6];\n y = matrix[7];\n } // 用实际位置而不是model中的x,y,防止由于拖拽等的交互导致model的x,y并不是当前的x,y\n\n\n this.focusPoint({\n x: x,\n y: y\n }, animate, animateCfg);\n }\n };\n /**\n * 改变 canvas 画布的宽度和高度\n * @param width canvas 宽度\n * @param height canvas 高度\n */\n\n\n ViewController.prototype.changeSize = function (width, height) {\n var graph = this.graph;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(width) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(height)) {\n throw Error('invalid canvas width & height, please make sure width & height type is number');\n }\n\n graph.set({\n width: width,\n height: height\n });\n var canvas = graph.get('canvas');\n canvas.changeSize(width, height); // change the size of grid plugin if it exists on graph\n\n var plugins = graph.get('plugins');\n plugins.forEach(function (plugin) {\n if (plugin.get('gridContainer')) {\n // 网格定位信息初始化\n plugin.positionInit();\n }\n });\n };\n\n ViewController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = false;\n };\n\n return ViewController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ViewController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3ZpZXcuanM/MGE1ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2U7QUFDQTtBQUNZOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGdFQUFhO0FBQ3hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRSxzREFBUSxHQUFHO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsK0RBQVk7QUFDNUI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFdBQVcsOERBQVc7QUFDdEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsU0FBUywyREFBUSxZQUFZLDJEQUFRO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDZFQUFjIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci92aWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZm9ybWF0UGFkZGluZyB9IGZyb20gJy4uLy4uL3V0aWwvYmFzZSc7XG5pbXBvcnQgeyBhcHBseU1hdHJpeCwgaW52ZXJ0TWF0cml4IH0gZnJvbSAnLi4vLi4vdXRpbC9tYXRoJztcblxudmFyIFZpZXdDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmlld0NvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuZ3JhcGggPSBncmFwaDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9IC8vIGdldCB2aWV3IGNlbnRlciBjb29yZGluYXRlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Vmlld0NlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFkZGluZyA9IHRoaXMuZ2V0Rm9ybWF0UGFkZGluZygpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHdpZHRoID0gdGhpcy5ncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIDIgKyBwYWRkaW5nWzNdLFxuICAgICAgeTogKGhlaWdodCAtIHBhZGRpbmdbMF0gLSBwYWRkaW5nWzJdKSAvIDIgKyBwYWRkaW5nWzBdXG4gICAgfTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Q2VudGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gIH07IC8vIGZpdCB2aWV3IGdyYXBoXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0VmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5nZXRGb3JtYXRQYWRkaW5nKCk7XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBncm91cCA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpO1xuICAgIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIGlmIChiYm94LndpZHRoID09PSAwIHx8IGJib3guaGVpZ2h0ID09PSAwKSByZXR1cm47XG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgZ3JvdXBDZW50ZXIgPSB7XG4gICAgICB4OiBiYm94LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IGJib3gueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgZ3JhcGgudHJhbnNsYXRlKHZpZXdDZW50ZXIueCAtIGdyb3VwQ2VudGVyLngsIHZpZXdDZW50ZXIueSAtIGdyb3VwQ2VudGVyLnkpO1xuICAgIHZhciB3ID0gKHdpZHRoIC0gcGFkZGluZ1sxXSAtIHBhZGRpbmdbM10pIC8gYmJveC53aWR0aDtcbiAgICB2YXIgaCA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW8gPSB3O1xuXG4gICAgaWYgKHcgPiBoKSB7XG4gICAgICByYXRpbyA9IGg7XG4gICAgfVxuXG4gICAgaWYgKCFncmFwaC56b29tKHJhdGlvLCB2aWV3Q2VudGVyKSkge1xuICAgICAgY29uc29sZS53YXJuKCd6b29tIGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbyk7XG4gICAgfVxuICB9OyAvLyBmaXQgdmlldyBncmFwaCBieSBydWxlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Vmlld0J5UnVsZXMgPSBmdW5jdGlvbiAocnVsZXMpIHtcbiAgICB2YXIgX2EgPSBydWxlcy5vbmx5T3V0T2ZWaWV3UG9ydCxcbiAgICAgICAgb25seU91dE9mVmlld1BvcnQgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSxcbiAgICAgICAgX2IgPSBydWxlcy5kaXJlY3Rpb24sXG4gICAgICAgIGRpcmVjdGlvbiA9IF9iID09PSB2b2lkIDAgPyAnYm90aCcgOiBfYixcbiAgICAgICAgX2MgPSBydWxlcy5yYXRpb1J1bGUsXG4gICAgICAgIHJhdGlvUnVsZSA9IF9jID09PSB2b2lkIDAgPyAnbWluJyA6IF9jO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHBhZGRpbmcgPSB0aGlzLmdldEZvcm1hdFBhZGRpbmcoKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gICAgdmFyIHdSYXRpbyA9ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIGJib3gud2lkdGg7XG4gICAgdmFyIGhSYXRpbyA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW87XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAneCcpIHtcbiAgICAgIHJhdGlvID0gd1JhdGlvO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAneScpIHtcbiAgICAgIHJhdGlvID0gaFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByYXRpb1J1bGVcbiAgICAgIHJhdGlvID0gcmF0aW9SdWxlID09PSAnbWF4JyA/IE1hdGgubWF4KHdSYXRpbywgaFJhdGlvKSA6IE1hdGgubWluKHdSYXRpbywgaFJhdGlvKTtcbiAgICB9IC8vIOWmguaenOiuvue9ruS6huS7heWvuei2heWHuuinhuWPo+WuvemrmOeahOWcuuaZr+i/m+ihjGZpdHZpZXfvvIzliJnmsqHotoXlh7rnmoTlnLrmma96b29t5Y+WMVxuXG5cbiAgICBpZiAob25seU91dE9mVmlld1BvcnQpIHtcbiAgICAgIHJhdGlvID0gcmF0aW8gPCAxID8gcmF0aW8gOiAxO1xuICAgIH1cblxuICAgIHZhciBpbml0Wm9vbVJhdGlvID0gZ3JhcGguZ2V0Wm9vbSgpO1xuICAgIHZhciBlbmRab29tID0gaW5pdFpvb21SYXRpbyAqIHJhdGlvO1xuICAgIHZhciBtaW5ab29tID0gZ3JhcGguZ2V0KCdtaW5ab29tJyk7IC8vIOWmguaenHpvb23lsI/kuo7mnIDlsI96b29tLCDliJnku6XmnIDlsI96b29t5Li65YeGXG5cbiAgICBpZiAoZW5kWm9vbSA8IG1pblpvb20pIHtcbiAgICAgIGVuZFpvb20gPSBtaW5ab29tO1xuICAgICAgY29uc29sZS53YXJuKCdmaXR2aWV3IGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbywgJ2dyYXBoIG1pbnpvb20gaGFzIGJlZW4gdXNlZCBpbnN0ZWFkJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguem9vbVRvKGVuZFpvb20sIHZpZXdDZW50ZXIpO1xuICB9O1xuXG4gIFZpZXdDb250cm9sbGVyLnByb3RvdHlwZS5nZXRGb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5ncmFwaC5nZXQoJ2ZpdFZpZXdQYWRkaW5nJyk7XG4gICAgcmV0dXJuIGZvcm1hdFBhZGRpbmcocGFkZGluZyk7XG4gIH07XG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmZvY3VzUG9pbnQgPSBmdW5jdGlvbiAocG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgbW9kZWxDZW50ZXIgPSB0aGlzLmdldFBvaW50QnlDYW52YXModmlld0NlbnRlci54LCB2aWV3Q2VudGVyLnkpO1xuICAgIHZhciB2aWV3cG9ydE1hdHJpeCA9IHRoaXMuZ3JhcGguZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuICAgIGlmICghdmlld3BvcnRNYXRyaXgpIHZpZXdwb3J0TWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIHZhciBkeF8xID0gKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdO1xuICAgICAgdmFyIGR5XzEgPSAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF07XG4gICAgICB2YXIgbGFzdFhfMSA9IDA7XG4gICAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgICB2YXIgbmV3WF8xID0gMDtcbiAgICAgIHZhciBuZXdZXzEgPSAwOyAvLyDliqjnlLvmr4/mrKHlubPnp7vkuIDngrnvvIznm7TliLDnm67moIfkvY3nva5cblxuICAgICAgdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmFuaW1hdGUoZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgICAgbmV3WV8xID0gZHlfMSAqIHJhdGlvO1xuXG4gICAgICAgIF90aGlzLmdyYXBoLnRyYW5zbGF0ZShuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xKTtcblxuICAgICAgICBsYXN0WF8xID0gbmV3WF8xO1xuICAgICAgICBsYXN0WV8xID0gbmV3WV8xO1xuICAgICAgfSwgX19hc3NpZ24oe30sIGFuaW1hdGVDZmcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmFwaC50cmFuc2xhdGUoKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdLCAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWwhiBDYW52YXMg5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjYW52YXNYIGNhbnZhcyB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2FudmFzWSBjYW52YXMgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnQgPSBpbnZlcnRNYXRyaXgoe1xuICAgICAgeDogY2FudmFzWCxcbiAgICAgIHk6IGNhbnZhc1lcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gICAgcmV0dXJuIHBvaW50O1xuICB9O1xuICAvKipcbiAgICog5bCG6aG16Z2i5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjbGllbnRYIOmhtemdoiB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2xpZW50WSDpobXpnaIgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNsaWVudCA9IGZ1bmN0aW9uIChjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChjbGllbnRYLCBjbGllbnRZKTtcbiAgICByZXR1cm4gdGhpcy5nZXRQb2ludEJ5Q2FudmFzKGNhbnZhc1BvaW50LngsIGNhbnZhc1BvaW50LnkpO1xuICB9O1xuICAvKipcbiAgICog5bCG6KeG5Y+j5Z2Q5qCH6L2s5oiQ6aG16Z2i5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2xpZW50QnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSB0aGlzLmdldENhbnZhc0J5UG9pbnQoeCwgeSk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldENsaWVudEJ5UG9pbnQoY2FudmFzUG9pbnQueCwgY2FudmFzUG9pbnQueSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuinhuWPo+WdkOagh+i9rOaIkCBDYW52YXMg5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2FudmFzQnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlNYXRyaXgoe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDnlLvluIPkuK3lv4NcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSDlrp7kvovmiJYgaWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhbmltYXRlIOaYr+WQpuW4puacieWKqOeUu+WcsOenu+WKqFxuICAgKiBAcGFyYW0ge0dyYXBoQW5pbWF0ZUNvbmZpZ30gYW5pbWF0ZUNmZyDoi6XluKbmnInliqjnlLvvvIzliqjnlLvnmoTphY3nva7poblcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoaXRlbSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZykge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB4ID0gMCxcbiAgICAgICAgICB5ID0gMDtcblxuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHZhciBzb3VyY2VNYXRyaXggPSBpdGVtLmdldFNvdXJjZSgpLmdldCgnZ3JvdXAnKS5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIHRhcmdldE1hdHJpeCA9IGl0ZW0uZ2V0VGFyZ2V0KCkuZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuXG4gICAgICAgIGlmIChzb3VyY2VNYXRyaXggJiYgdGFyZ2V0TWF0cml4KSB7XG4gICAgICAgICAgeCA9IChzb3VyY2VNYXRyaXhbNl0gKyB0YXJnZXRNYXRyaXhbNl0pIC8gMjtcbiAgICAgICAgICB5ID0gKHNvdXJjZU1hdHJpeFs3XSArIHRhcmdldE1hdHJpeFs3XSkgLyAyO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hdHJpeCB8fCB0YXJnZXRNYXRyaXgpIHtcbiAgICAgICAgICB4ID0gc291cmNlTWF0cml4ID8gc291cmNlTWF0cml4WzZdIDogdGFyZ2V0TWF0cml4WzZdO1xuICAgICAgICAgIHkgPSBzb3VyY2VNYXRyaXggPyBzb3VyY2VNYXRyaXhbN10gOiB0YXJnZXRNYXRyaXhbN107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICAgICAgICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG4gICAgICAgIGlmICghbWF0cml4KSBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgIHggPSBtYXRyaXhbNl07XG4gICAgICAgIHkgPSBtYXRyaXhbN107XG4gICAgICB9IC8vIOeUqOWunumZheS9jee9ruiAjOS4jeaYr21vZGVs5Lit55qEeCx5LOmYsuatoueUseS6juaLluaLveetieeahOS6pOS6kuWvvOiHtG1vZGVs55qEeCx55bm25LiN5piv5b2T5YmN55qEeCx5XG5cblxuICAgICAgdGhpcy5mb2N1c1BvaW50KHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pS55Y+YIGNhbnZhcyDnlLvluIPnmoTlrr3luqblkozpq5jluqZcbiAgICogQHBhcmFtIHdpZHRoIGNhbnZhcyDlrr3luqZcbiAgICogQHBhcmFtIGhlaWdodCBjYW52YXMg6auY5bqmXG4gICAqL1xuXG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgY2FudmFzIHdpZHRoICYgaGVpZ2h0LCBwbGVhc2UgbWFrZSBzdXJlIHdpZHRoICYgaGVpZ2h0IHR5cGUgaXMgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguc2V0KHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7IC8vIGNoYW5nZSB0aGUgc2l6ZSBvZiBncmlkIHBsdWdpbiBpZiBpdCBleGlzdHMgb24gZ3JhcGhcblxuICAgIHZhciBwbHVnaW5zID0gZ3JhcGguZ2V0KCdwbHVnaW5zJyk7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW4uZ2V0KCdncmlkQ29udGFpbmVyJykpIHtcbiAgICAgICAgLy8g572R5qC85a6a5L2N5L+h5oGv5Yid5aeL5YyWXG4gICAgICAgIHBsdWdpbi5wb3NpdGlvbkluaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9O1xuXG4gIHJldHVybiBWaWV3Q29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld0NvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/algorithm */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_validation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/validation */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../item/hull */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar NODE = 'node';\n\nvar AbstractGraph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGraph, _super);\n\n function AbstractGraph(cfg) {\n var _this = _super.call(this) || this;\n\n _this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(_this.getDefaultCfg(), cfg);\n\n _this.init();\n\n _this.animating = false;\n _this.destroyed = false; // 启用 stack 后,实例化 undoStack 和 redoStack\n\n if (_this.cfg.enabledStack) {\n // 实例化 undo 和 redo 栈\n _this.undoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n _this.redoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n }\n\n return _this;\n }\n\n AbstractGraph.prototype.init = function () {\n this.initCanvas(); // instance controller\n\n var viewController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ViewController\"](this);\n var modeController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ModeController\"](this);\n var itemController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ItemController\"](this);\n var stateController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"StateController\"](this);\n this.set({\n viewController: viewController,\n modeController: modeController,\n itemController: itemController,\n stateController: stateController\n }); // 初始化布局机制\n\n this.initLayoutController(); // 初始化事件机制\n\n this.initEventController();\n this.initGroups();\n /** 初始化插件 */\n\n this.initPlugins();\n }; // 初始化所有 Group\n\n\n AbstractGraph.prototype.initGroups = function () {\n var canvas = this.get('canvas');\n if (!canvas) return;\n var el = canvas.get('el');\n var _a = (el || {}).id,\n id = _a === void 0 ? 'g6' : _a;\n var group = canvas.addGroup({\n id: id + \"-root\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].rootContainerClassName\n });\n\n if (this.get('groupByTypes')) {\n var edgeGroup = group.addGroup({\n id: id + \"-edge\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].edgeContainerClassName\n });\n var nodeGroup = group.addGroup({\n id: id + \"-node\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].nodeContainerClassName\n });\n var comboGroup = group.addGroup({\n id: id + \"-combo\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].comboContainerClassName\n }); // 用于存储自定义的群组\n\n comboGroup.toBack();\n this.set({\n nodeGroup: nodeGroup,\n edgeGroup: edgeGroup,\n comboGroup: comboGroup\n });\n }\n\n var delegateGroup = group.addGroup({\n id: id + \"-delegate\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].delegateContainerClassName\n });\n this.set({\n delegateGroup: delegateGroup\n });\n this.set('group', group);\n }; // eslint-disable-next-line class-methods-use-this\n\n\n AbstractGraph.prototype.getDefaultCfg = function () {\n return {\n /**\n * Container could be dom object or dom id\n */\n container: undefined,\n\n /**\n * Canvas width\n * unit pixel if undefined force fit width\n */\n width: undefined,\n\n /**\n * Canvas height\n * unit pixel if undefined force fit height\n */\n height: undefined,\n\n /**\n * renderer canvas or svg\n * @type {string}\n */\n renderer: 'canvas',\n\n /**\n * control graph behaviors\n */\n modes: {},\n\n /**\n * 注册插件\n */\n plugins: [],\n\n /**\n * source data\n */\n data: {},\n\n /**\n * Fit view padding (client scale)\n */\n fitViewPadding: 10,\n\n /**\n * Minimum scale size\n */\n minZoom: 0.2,\n\n /**\n * Maxmum scale size\n */\n maxZoom: 10,\n\n /**\n * capture events\n */\n event: true,\n\n /**\n * group node & edges into different graphic groups\n */\n groupByTypes: true,\n\n /**\n * determine if it's a directed graph\n */\n directed: false,\n\n /**\n * when data or shape changed, should canvas draw automatically\n */\n autoPaint: true,\n\n /**\n * store all the node instances\n */\n nodes: [],\n\n /**\n * store all the edge instances\n */\n edges: [],\n\n /**\n * store all the combo instances\n */\n combos: [],\n\n /**\n * store all the edge instances which are virtual edges related to collapsed combo\n */\n vedges: [],\n\n /**\n * all the instances indexed by id\n */\n itemMap: {},\n\n /**\n * 边直接连接到节点的中心,不再考虑锚点\n */\n linkCenter: false,\n\n /**\n * 默认的节点配置,data 上定义的配置会覆盖这些配置。例如:\n * defaultNode: {\n * type: 'rect',\n * size: [60, 40],\n * style: {\n * //... 样式配置项\n * }\n * }\n * 若数据项为 { id: 'node', x: 100, y: 100 }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'rect', size: [60, 40] }\n * 若数据项为 { id: 'node', x: 100, y: 100, type: 'circle' }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'circle', size: [60, 40] }\n */\n defaultNode: {},\n\n /**\n * 默认边配置,data 上定义的配置会覆盖这些配置。用法同 defaultNode\n */\n defaultEdge: {},\n\n /**\n * 节点默认样式,也可以添加状态样式\n * 例如:\n * const graph = new G6.Graph({\n * nodeStateStyles: {\n * selected: { fill: '#ccc', stroke: '#666' },\n * active: { lineWidth: 2 }\n * },\n * ...\n * });\n *\n */\n nodeStateStyles: {},\n\n /**\n * 边默认样式,用法同nodeStateStyle\n */\n edgeStateStyles: {},\n\n /**\n * graph 状态\n */\n states: {},\n\n /**\n * 是否启用全局动画\n */\n animate: false,\n\n /**\n * 动画设置,仅在 animate 为 true 时有效\n */\n animateCfg: {\n /**\n * 帧回调函数,用于自定义节点运动路径,为空时线性运动\n */\n onFrame: undefined,\n\n /**\n * 动画时长(ms)\n */\n duration: 500,\n\n /**\n * 指定动画动效\n */\n easing: 'easeLinear'\n },\n callback: undefined,\n // 默认不启用 undo & redo 功能\n enabledStack: false,\n // 只有当 enabledStack 为 true 时才起作用\n maxStep: 10,\n // 存储图上的 tooltip dom,方便销毁\n tooltips: []\n };\n };\n /**\n * 将值设置到 this.cfg 变量上面\n * @param key 键 或 对象值\n * @param val 值\n */\n\n\n AbstractGraph.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(key)) {\n this.cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this.cfg), key);\n } else {\n this.cfg[key] = val;\n }\n\n return this;\n };\n /**\n * 获取 this.cfg 中的值\n * @param key 键\n */\n\n\n AbstractGraph.prototype.get = function (key) {\n var _a;\n\n return (_a = this.cfg) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 获取 graph 的根图形分组\n * @return 根 group\n */\n\n\n AbstractGraph.prototype.getGroup = function () {\n return this.get('group');\n };\n /**\n * 获取 graph 的 DOM 容器\n * @return DOM 容器\n */\n\n\n AbstractGraph.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 获取 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.getMinZoom = function () {\n return this.get('minZoom');\n };\n /**\n * 设置 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.setMinZoom = function (ratio) {\n return this.set('minZoom', ratio);\n };\n /**\n * 获取 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.getMaxZoom = function () {\n return this.get('maxZoom');\n };\n /**\n * 设置 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.setMaxZoom = function (ratio) {\n return this.set('maxZoom', ratio);\n };\n /**\n * 获取 graph 的宽度\n * @return width\n */\n\n\n AbstractGraph.prototype.getWidth = function () {\n return this.get('width');\n };\n /**\n * 获取 graph 的高度\n * @return width\n */\n\n\n AbstractGraph.prototype.getHeight = function () {\n return this.get('height');\n };\n /**\n * 清理元素多个状态\n * @param {string|Item} item 元素id或元素实例\n * @param {string[]} states 状态\n */\n\n\n AbstractGraph.prototype.clearItemStates = function (item, states) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n\n if (!states) {\n states = item.get('states');\n }\n\n itemController.clearItemStates(item, states);\n var stateController = this.get('stateController');\n stateController.updateStates(item, states, false);\n };\n /**\n * 设置各个节点样式,以及在各种状态下节点 keyShape 的样式。\n * 若是自定义节点切在各种状态下\n * graph.node(node => {\n * return {\n * type: 'rect',\n * label: node.id,\n * style: { fill: '#666' },\n * stateStyles: {\n * selected: { fill: 'blue' },\n * custom: { fill: 'green' }\n * }\n * }\n * });\n * @param {function} nodeFn 指定每个节点样式\n */\n\n\n AbstractGraph.prototype.node = function (nodeFn) {\n if (typeof nodeFn === 'function') {\n this.set('nodeMapper', nodeFn);\n }\n };\n /**\n * 设置各个边样式\n * @param {function} edgeFn 指定每个边的样式,用法同 node\n */\n\n\n AbstractGraph.prototype.edge = function (edgeFn) {\n if (typeof edgeFn === 'function') {\n this.set('edgeMapper', edgeFn);\n }\n };\n /**\n * 设置各个 combo 的配置\n * @param comboFn\n */\n\n\n AbstractGraph.prototype.combo = function (comboFn) {\n if (typeof comboFn === 'function') {\n this.set('comboMapper', comboFn);\n }\n };\n /**\n * 根据 ID 查询图元素实例\n * @param id 图元素 ID\n */\n\n\n AbstractGraph.prototype.findById = function (id) {\n return this.get('itemMap')[id];\n };\n /**\n * 根据对应规则查找单个元素\n * @param {ITEM_TYPE} type 元素类型(node | edge | group)\n * @param {(item: T, index: number) => T} fn 指定规则\n * @return {T} 元素实例\n */\n\n\n AbstractGraph.prototype.find = function (type, fn) {\n var result;\n var items = this.get(type + \"s\"); // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(items, function (item, i) {\n if (fn(item, i)) {\n result = item;\n return result;\n }\n });\n return result;\n };\n /**\n * 查找所有满足规则的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} fn 指定规则\n * @return {array} 元素实例\n */\n\n\n AbstractGraph.prototype.findAll = function (type, fn) {\n var result = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get(type + \"s\"), function (item, i) {\n if (fn(item, i)) {\n result.push(item);\n }\n });\n return result;\n };\n /**\n * 查找所有处于指定状态的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} state 状态\n * @return {object} 元素实例\n */\n\n\n AbstractGraph.prototype.findAllByState = function (type, state) {\n return this.findAll(type, function (item) {\n return item.hasState(state);\n });\n };\n /**\n * 平移画布\n * @param dx 水平方向位移\n * @param dy 垂直方向位移\n */\n\n\n AbstractGraph.prototype.translate = function (dx, dy) {\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n matrix = transform(matrix, [['t', dx, dy]]);\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'translate',\n matrix: group.getMatrix()\n });\n this.autoPaint();\n };\n /**\n * 平移画布到某点\n * @param {number} x 水平坐标\n * @param {number} y 垂直坐标\n */\n\n\n AbstractGraph.prototype.moveTo = function (x, y, animate, animateCfg) {\n var group = this.get('group');\n Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"move\"])(group, {\n x: x,\n y: y\n }, animate, animateCfg || {\n duration: 500,\n easing: 'easeCubic'\n });\n this.emit('viewportchange', {\n action: 'move',\n matrix: group.getMatrix()\n });\n };\n /**\n * 调整视口适应视图\n * @param {object} padding 四周围边距\n * @param {FitViewRules} rules fitView的规则\n */\n\n\n AbstractGraph.prototype.fitView = function (padding, rules) {\n if (padding) {\n this.set('fitViewPadding', padding);\n }\n\n var viewController = this.get('viewController');\n\n if (rules) {\n viewController.fitViewByRules(rules);\n } else {\n viewController.fitView();\n }\n\n this.autoPaint();\n };\n /**\n * 调整视口适应视图,不缩放,仅将图 bbox 中心对齐到画布中心\n */\n\n\n AbstractGraph.prototype.fitCenter = function () {\n var viewController = this.get('viewController');\n viewController.fitCenter();\n this.autoPaint();\n };\n /**\n * 新增行为\n * @param {string | ModeOption | ModeType[]} behaviors 添加的行为\n * @param {string | string[]} modes 添加到对应的模式\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.addBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, true);\n return this;\n };\n /**\n * 移除行为\n * @param {string | ModeOption | ModeType[]} behaviors 移除的行为\n * @param {string | string[]} modes 从指定的模式中移除\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.removeBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, false);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.updateBehavior = function (behavior, newCfg, mode) {\n var modeController = this.get('modeController');\n modeController.updateBehavior(behavior, newCfg, mode);\n return this;\n };\n /**\n * 伸缩窗口\n * @param ratio 伸缩比例\n * @param center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoom = function (ratio, center, animate, animateCfg) {\n var _this = this;\n\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n var minZoom = this.get('minZoom');\n var maxZoom = this.get('maxZoom');\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (center) {\n matrix = transform(matrix, [['t', -center.x, -center.y], ['s', ratio, ratio], ['t', center.x, center.y]]);\n } else {\n matrix = transform(matrix, [['s', ratio, ratio]]);\n }\n\n if (minZoom && matrix[0] < minZoom || maxZoom && matrix[0] > maxZoom) {\n return false;\n } // matrix = [2, 0, 0, 0, 2, 0, -125, -125, 1];\n\n\n if (animate) {\n // Clone the original matrix to perform the animation\n var aniMatrix_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!aniMatrix_1) {\n aniMatrix_1 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var initialRatio_1 = aniMatrix_1[0];\n var targetRatio_1 = initialRatio_1 * ratio;\n var animateConfig = void 0;\n\n if (!animateCfg) {\n animateConfig = {\n duration: 500,\n callback: function callback() {\n _this.emit('viewportchange', {\n action: 'zoom',\n matrix: aniMatrix_1\n });\n }\n };\n } else if (animateCfg.callback) {\n // This is to prevent modifying the original animateCfg.callback\n var callback_1 = animateCfg.callback;\n animateConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(animateCfg);\n\n animateConfig.callback = function () {\n _this.emit('viewportchange', {\n action: 'zoom',\n matrix: aniMatrix_1\n });\n\n callback_1();\n };\n } else {\n animateConfig = animateCfg;\n }\n\n group.animate(function (ratio) {\n if (ratio === 1) {\n // Reuse the first transformation\n aniMatrix_1 = matrix;\n } else {\n var scale = Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"lerp\"])(initialRatio_1, targetRatio_1, ratio) / aniMatrix_1[0];\n\n if (center) {\n aniMatrix_1 = transform(aniMatrix_1, [['t', -center.x, -center.y], ['s', scale, scale], ['t', center.x, center.y]]);\n } else {\n aniMatrix_1 = transform(aniMatrix_1, [['s', scale, scale]]);\n }\n }\n\n return {\n matrix: aniMatrix_1\n };\n }, animateConfig);\n } else {\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'zoom',\n matrix: matrix\n });\n this.autoPaint();\n }\n\n return true;\n };\n /**\n * 伸缩视口到一固定比例\n * @param {number} toRatio 伸缩比例\n * @param {Point} center 以center的x, y坐标为中心缩放\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoomTo = function (toRatio, center) {\n var ratio = toRatio / this.getZoom();\n return this.zoom(ratio, center);\n };\n /**\n * 将元素移动到视口中心\n * @param {Item} item 指定元素\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.focusItem = function (item, animate, animateCfg) {\n var viewController = this.get('viewController');\n var isAnimate = false;\n if (animate) isAnimate = true;else if (animate === undefined) isAnimate = this.get('animate');\n var curAniamteCfg = {};\n if (animateCfg) curAniamteCfg = animateCfg;else if (animateCfg === undefined) curAniamteCfg = this.get('animateCfg');\n viewController.focus(item, isAnimate, curAniamteCfg);\n this.autoPaint();\n };\n /**\n * 自动重绘\n * @internal 仅供内部更新机制调用,外部根据需求调用 render 或 paint 接口\n */\n\n\n AbstractGraph.prototype.autoPaint = function () {\n if (this.get('autoPaint')) {\n this.paint();\n }\n };\n /**\n * 仅画布重新绘制\n */\n\n\n AbstractGraph.prototype.paint = function () {\n this.emit('beforepaint');\n this.get('canvas').draw();\n this.emit('afterpaint');\n };\n /**\n * 将屏幕坐标转换为视口坐标\n * @param {number} clientX 屏幕x坐标\n * @param {number} clientY 屏幕y坐标\n * @return {Point} 视口坐标\n */\n\n\n AbstractGraph.prototype.getPointByClient = function (clientX, clientY) {\n var viewController = this.get('viewController');\n return viewController.getPointByClient(clientX, clientY);\n };\n /**\n * 将绘制坐标转换为屏幕坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {Point} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getClientByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getClientByPoint(x, y);\n };\n /**\n * 将画布坐标转换为绘制坐标\n * @param {number} canvasX 画布 x 坐标\n * @param {number} canvasY 画布 y 坐标\n * @return {object} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewController = this.get('viewController');\n return viewController.getPointByCanvas(canvasX, canvasY);\n };\n /**\n * 将绘制坐标转换为画布坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {object} 画布坐标\n */\n\n\n AbstractGraph.prototype.getCanvasByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getCanvasByPoint(x, y);\n };\n /**\n * 获取图内容的中心绘制坐标\n * @return {object} 中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getGraphCenterPoint = function () {\n var bbox = this.get('group').getCanvasBBox();\n return {\n x: (bbox.minX + bbox.maxX) / 2,\n y: (bbox.minY + bbox.maxY) / 2\n };\n };\n /**\n * 获取视口中心绘制坐标\n * @return {object} 视口中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getViewPortCenterPoint = function () {\n return this.getPointByCanvas(this.get('width') / 2, this.get('height') / 2);\n };\n /**\n * 显示元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.showItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, true);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.nodes = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.edges = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.combos = [{\n id: id,\n visible: true\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 隐藏元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.hideItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, false);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.nodes = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.edges = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.combos = [{\n id: id,\n visible: false\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 刷新元素\n * @param {string|object} item 元素id或元素实例\n */\n\n\n AbstractGraph.prototype.refreshItem = function (item) {\n var itemController = this.get('itemController');\n itemController.refreshItem(item);\n };\n /**\n * 设置是否在更新/刷新后自动重绘\n * @param {boolean} auto 自动重绘\n */\n\n\n AbstractGraph.prototype.setAutoPaint = function (auto) {\n var self = this;\n self.set('autoPaint', auto);\n var canvas = self.get('canvas');\n canvas.set('autoDraw', auto);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.remove = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.removeItem(item, stack);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.removeItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var nodeItem = item;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) nodeItem = this.findById(item);\n\n if (!nodeItem && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n console.warn('The item to be removed does not exist!');\n } else if (nodeItem) {\n var type = '';\n if (nodeItem.getType) type = nodeItem.getType(); // 将删除的元素入栈\n\n if (stack && this.get('enabledStack')) {\n var deletedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, nodeItem.getModel()), {\n itemType: type\n });\n\n var before = {};\n\n switch (type) {\n case 'node':\n {\n before.nodes = [deletedModel];\n before.edges = [];\n var edges = nodeItem.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n before.edges.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, edges[i].getModel()), {\n itemType: 'edge'\n }));\n }\n\n break;\n }\n\n case 'edge':\n before.edges = [deletedModel];\n break;\n\n case 'combo':\n before.combos = [deletedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('delete', {\n before: before,\n after: {}\n });\n }\n\n if (type === 'node') {\n var model = nodeItem.getModel(); // 如果删除的是节点,且该节点存在于某个 Combo 中,则需要先将 node 从 combo 中移除,否则删除节点后,操作 combo 会出错\n\n if (model.comboId) {\n this.updateComboTree(nodeItem, undefined, false);\n }\n }\n\n var itemController = this.get('itemController');\n itemController.removeItem(nodeItem);\n\n if (type === 'combo') {\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'));\n this.set('comboTrees', newComboTrees);\n }\n }\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @param {boolean} sortCombo 本次操作是否需要更新 combo 层级顺序,内部参数,用户在外部使用 addItem 时始终时需要更新\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.addItem = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n var currentComboSorted = this.get('comboSorted');\n this.set('comboSorted', currentComboSorted && !sortCombo);\n var itemController = this.get('itemController'); // 添加节点、边或combo之前,先验证数据是否符合规范\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"singleDataValidation\"])(type, model)) {\n return false;\n }\n\n if (model.id && this.findById(model.id)) {\n console.warn(\"This item exists already. Be sure the id %c\" + model.id + \"%c is unique.\", 'font-size: 20px; color: red;', '');\n return;\n }\n\n var item;\n var comboTrees = this.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n\n if (type === 'combo') {\n var itemMap_1 = this.get('itemMap');\n var foundParent_1 = false;\n comboTrees.forEach(function (ctree) {\n if (foundParent_1) return; // terminate the forEach after the tree containing the item is done\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n // find the parent\n if (model.parentId === child.id) {\n foundParent_1 = true;\n\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: child.depth + 2\n }, model);\n\n if (child.children) child.children.push(newCombo);else child.children = [newCombo];\n model.depth = newCombo.depth;\n item = itemController.addItem(type, model);\n }\n\n var childItem = itemMap_1[child.id]; // after the parent is found, update all the ancestors\n\n if (foundParent_1 && childItem && childItem.getType && childItem.getType() === 'combo') {\n itemController.updateCombo(childItem, child.children);\n }\n\n return true;\n });\n }); // if the parent is not found, add it to the root\n\n if (!foundParent_1) {\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: 0\n }, model);\n\n model.depth = newCombo.depth;\n comboTrees.push(newCombo);\n item = itemController.addItem(type, model);\n }\n\n this.set('comboTrees', comboTrees);\n } else if (type === 'node' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(model.comboId) && comboTrees) {\n var parentCombo = this.findById(model.comboId);\n\n if (parentCombo && parentCombo.getType && parentCombo.getType() !== 'combo') {\n console.warn(\"'\" + model.comboId + \"' is not a id of a combo in the graph, the node will be added without combo.\");\n }\n\n item = itemController.addItem(type, model);\n var itemMap_2 = this.get('itemMap');\n var foundParent_2 = false,\n foundNode_1 = false;\n (comboTrees || []).forEach(function (ctree) {\n if (foundNode_1 || foundParent_2) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === model.id) {\n // if the item exists in the tree already, terminate\n foundNode_1 = true;\n return false;\n }\n\n if (model.comboId === child.id && !foundNode_1) {\n // found the parent, add the item to the children of its parent in the tree\n foundParent_2 = true;\n var cloneNode = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(model);\n cloneNode.itemType = 'node';\n if (child.children) child.children.push(cloneNode);else child.children = [cloneNode];\n cloneNode.depth = child.depth + 1;\n } // update the size of all the ancestors\n\n\n if (foundParent_2 && itemMap_2[child.id].getType && itemMap_2[child.id].getType() === 'combo') {\n itemController.updateCombo(itemMap_2[child.id], child.children);\n }\n\n return true;\n });\n });\n } else {\n item = itemController.addItem(type, model);\n }\n\n if (type === 'node' && model.comboId || type === 'combo' && model.parentId) {\n // add the combo to the parent's children array\n var parentCombo = this.findById(model.comboId || model.parentId);\n if (parentCombo && parentCombo.getType && parentCombo.getType() === 'combo') parentCombo.addChild(item);\n }\n\n var combos = this.get('combos');\n\n if (combos && combos.length > 0) {\n this.sortCombos();\n }\n\n this.autoPaint();\n\n if (stack && this.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, item.getModel()), {\n itemType: type\n });\n\n var after = {};\n\n switch (type) {\n case 'node':\n after.nodes = [addedModel];\n break;\n\n case 'edge':\n after.edges = [addedModel];\n break;\n\n case 'combo':\n after.combos = [addedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n return item;\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.add = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n return this.addItem(type, model, stack, sortCombo);\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n */\n\n\n AbstractGraph.prototype.updateItem = function (item, cfg, stack) {\n var _this = this;\n\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var currentItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n currentItem = this.findById(item);\n } else {\n currentItem = item;\n }\n\n var UnupdateModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(currentItem.getModel());\n var type = '';\n if (currentItem.getType) type = currentItem.getType();\n\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], currentItem.getStates(), true);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, false);\n });\n }\n\n itemController.updateItem(currentItem, cfg);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, true);\n });\n }\n\n if (stack && this.get('enabledStack')) {\n var before = {\n nodes: [],\n edges: [],\n combos: []\n };\n var after = {\n nodes: [],\n edges: [],\n combos: []\n };\n\n var afterModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: UnupdateModel.id\n }, cfg);\n\n switch (type) {\n case 'node':\n before.nodes.push(UnupdateModel);\n after.nodes.push(afterModel);\n break;\n\n case 'edge':\n before.edges.push(UnupdateModel);\n after.edges.push(afterModel);\n break;\n\n case 'combo':\n before.combos.push(UnupdateModel);\n after.combos.push(afterModel);\n break;\n\n default:\n break;\n }\n\n if (type === 'node') {\n before.nodes.push(UnupdateModel);\n }\n\n this.pushStack('update', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.update = function (item, cfg, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.updateItem(item, cfg, stack);\n };\n /**\n * 设置元素状态\n * @param {Item} item 元素id或元素实例\n * @param {string} state 状态名称\n * @param {string | boolean} value 是否启用状态 或 状态值\n */\n\n\n AbstractGraph.prototype.setItemState = function (item, state, value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n itemController.setItemState(item, state, value);\n var stateController = this.get('stateController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(value)) {\n stateController.updateState(item, state + \":\" + value, true);\n } else {\n stateController.updateState(item, state, value);\n }\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n AbstractGraph.prototype.priorityState = function (item, state) {\n var itemController = this.get('itemController');\n itemController.priorityState(item, state);\n };\n /**\n * 设置视图初始化数据\n * @param {GraphData} data 初始化数据\n */\n\n\n AbstractGraph.prototype.data = function (data) {\n Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data);\n this.set('data', data);\n };\n /**\n * 根据data接口的数据渲染视图\n */\n\n\n AbstractGraph.prototype.render = function () {\n var self = this;\n this.set('comboSorted', false);\n var data = this.get('data');\n\n if (this.get('enabledStack')) {\n // render 之前清空 redo 和 undo 栈\n this.clearStack();\n }\n\n if (!data) {\n throw new Error('data must be defined first');\n }\n\n var _a = data.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = data.edges,\n edges = _b === void 0 ? [] : _b,\n _c = data.combos,\n combos = _c === void 0 ? [] : _c;\n this.clear(true);\n this.emit('beforerender');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n self.add('node', node, false, false);\n }); // process the data to tree structure\n\n if (combos && combos.length !== 0) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combos, nodes);\n this.set('comboTrees', comboTrees); // add combos\n\n self.addCombos(combos);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n self.add('edge', edge, false, false);\n });\n var animate = self.get('animate');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', false);\n } // layout\n\n\n var layoutController = self.get('layoutController');\n\n if (layoutController) {\n layoutController.layout(success);\n if (this.destroyed) return;\n } else {\n if (self.get('fitView')) {\n self.fitView();\n }\n\n if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.emit('afterrender');\n self.set('animate', animate);\n } // 将在 onLayoutEnd 中被调用\n\n\n function success() {\n // fitView 与 fitCenter 共存时,fitView 优先,fitCenter 不再执行\n if (self.get('fitView')) {\n self.fitView();\n } else if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.autoPaint();\n self.emit('afterrender');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', animate);\n }\n }\n\n if (!this.get('groupByTypes')) {\n if (combos && combos.length !== 0) {\n this.sortCombos();\n } else {\n // 为提升性能,选择数量少的进行操作\n if (data.nodes && data.edges && data.nodes.length < data.edges.length) {\n var nodesArr = this.getNodes(); // 遍历节点实例,将所有节点提前。\n\n nodesArr.forEach(function (node) {\n node.toFront();\n });\n } else {\n var edgesArr = this.getEdges(); // 遍历节点实例,将所有节点提前。\n\n edgesArr.forEach(function (edge) {\n edge.toBack();\n });\n }\n }\n }\n\n if (this.get('enabledStack')) {\n this.pushStack('render');\n }\n };\n /**\n * 接收数据进行渲染\n * @Param {Object} data 初始化数据\n */\n\n\n AbstractGraph.prototype.read = function (data) {\n this.data(data);\n this.render();\n }; // 比较item\n\n\n AbstractGraph.prototype.diffItems = function (type, items, models) {\n var self = this;\n var item;\n var itemMap = this.get('itemMap');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(models, function (model) {\n item = itemMap[model.id];\n\n if (item) {\n if (self.get('animate') && type === NODE) {\n var containerMatrix = item.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n item.set('originAttrs', {\n x: containerMatrix[6],\n y: containerMatrix[7]\n });\n }\n\n self.updateItem(item, model, false);\n } else {\n item = self.addItem(type, model, false);\n }\n\n if (item) items[type + \"s\"].push(item);\n });\n };\n /**\n * 更改源数据,根据新数据重新渲染视图\n * @param {GraphData | TreeGraphData} data 源数据\n * @param {boolean} 是否入栈,默认为true\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeData = function (data, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data)) {\n return this;\n }\n\n if (stack && this.get('enabledStack')) {\n this.pushStack('changedata', {\n before: self.save(),\n after: data\n });\n }\n\n this.set('comboSorted', false); // 删除 hulls\n\n this.removeHulls(); // 更改数据源后,取消所有状态\n\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n var canvas = this.get('canvas');\n var localRefresh = canvas.get('localRefresh');\n canvas.set('localRefresh', false);\n\n if (!self.get('data')) {\n self.data(data);\n self.render();\n }\n\n var itemMap = this.get('itemMap');\n var items = {\n nodes: [],\n edges: []\n };\n var combosData = data.combos;\n\n if (combosData) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combosData, data.nodes);\n this.set('comboTrees', comboTrees);\n } else {\n this.set('comboTrees', []);\n }\n\n this.diffItems('node', items, data.nodes);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n itemMap[id].getModel().depth = 0;\n if (item.getType && item.getType() === 'edge') return;\n\n if (item.getType && item.getType() === 'combo') {\n delete itemMap[id];\n item.destroy();\n } else if (items.nodes.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n }); // clear the destroyed combos here to avoid removing sub nodes before removing the parent combo\n\n var comboItems = this.getCombos();\n var combosLength = comboItems.length;\n\n for (var i = combosLength - 1; i >= 0; i--) {\n if (comboItems[i].destroyed) {\n comboItems.splice(i, 1);\n }\n } // process the data to tree structure\n\n\n if (combosData) {\n // add combos\n self.addCombos(combosData);\n\n if (!this.get('groupByTypes')) {\n this.sortCombos();\n }\n }\n\n this.diffItems('edge', items, data.edges);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n if (item.getType && (item.getType() === 'node' || item.getType() === 'combo')) return;\n\n if (items.edges.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n });\n this.set({\n nodes: items.nodes,\n edges: items.edges\n });\n var layoutController = this.get('layoutController');\n\n if (layoutController) {\n layoutController.changeData();\n\n if (self.get('animate') && !layoutController.getLayoutType()) {\n // 如果没有指定布局\n self.positionsAnimate();\n } else {\n self.autoPaint();\n }\n }\n\n setTimeout(function () {\n canvas.set('localRefresh', localRefresh);\n }, 16);\n return this;\n };\n /**\n * 私有方法,在 render 和 changeData 的时候批量添加数据中所有平铺的 combos\n * @param {ComboConfig[]} combos 平铺的 combos 数据\n */\n\n\n AbstractGraph.prototype.addCombos = function (combos) {\n var self = this;\n var comboTrees = self.get('comboTrees');\n var itemController = this.get('itemController');\n itemController.addCombos(comboTrees, combos);\n };\n /**\n * 根据已经存在的节点或 combo 创建新的 combo\n * @param combo combo ID 或 Combo 配置\n * @param children 添加到 Combo 中的元素,包括节点和 combo\n */\n\n\n AbstractGraph.prototype.createCombo = function (combo, children) {\n var _this = this;\n\n this.set('comboSorted', false); // step 1: 创建新的 Combo\n\n var comboId = '';\n var comboConfig;\n if (!combo) return;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboId = combo;\n comboConfig = {\n id: combo\n };\n } else {\n comboId = combo.id;\n\n if (!comboId) {\n console.warn('Create combo failed. Please assign a unique string id for the adding combo.');\n return;\n }\n\n comboConfig = combo;\n } // step2: 更新 children,根据类型添加 comboId 或 parentId\n\n\n var trees = children.map(function (elementId) {\n var item = _this.findById(elementId);\n\n var model = item.getModel();\n var type = '';\n if (item.getType) type = item.getType();\n var cItem = {\n id: item.getID(),\n itemType: type\n };\n\n if (type === 'combo') {\n cItem.parentId = comboId;\n model.parentId = comboId;\n } else if (type === 'node') {\n cItem.comboId = comboId;\n model.comboId = comboId;\n }\n\n return cItem;\n });\n comboConfig.children = trees; // step 3: 添加 Combo,addItem 时会将子将元素添加到 Combo 中\n\n this.addItem('combo', comboConfig, false);\n this.set('comboSorted', false); // step4: 更新 comboTrees 结构\n\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === comboId) {\n child.itemType = 'combo';\n child.children = trees;\n return false;\n }\n\n return true;\n });\n });\n\n if (comboTrees) {\n this.sortCombos();\n }\n };\n /**\n * 解散 combo\n * @param {String | INode | ICombo} combo 需要被解散的 Combo item 或 id\n */\n\n\n AbstractGraph.prototype.uncombo = function (combo) {\n var _this = this;\n\n var _a;\n\n var self = this;\n var comboItem = combo;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item is not a combo!');\n return;\n }\n\n var parentId = comboItem.getModel().parentId;\n var comboTrees = self.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n var itemMap = this.get('itemMap');\n var comboId = comboItem.get('id');\n var treeToBeUncombo;\n var brothers = [];\n var comboItems = this.get('combos');\n var parentItem = this.findById(parentId);\n comboTrees.forEach(function (ctree) {\n if (treeToBeUncombo) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (subtree) {\n var _a; // find the combo to be uncomboed, delete the combo from map and cache\n\n\n if (subtree.id === comboId) {\n treeToBeUncombo = subtree; // delete the related edges\n\n var edges = comboItem.getEdges();\n edges.forEach(function (edge) {\n _this.removeItem(edge, false);\n });\n var index = comboItems.indexOf(comboItem);\n comboItems.splice(index, 1);\n delete itemMap[comboId];\n comboItem.destroy();\n\n _this.emit('afterremoveitem', {\n item: comboItem,\n type: 'combo'\n });\n } // find the parent to remove the combo from the combo's brothers array and add the combo's children to the combo's brothers array in the tree\n\n\n if (parentId && treeToBeUncombo && subtree.id === parentId) {\n parentItem.removeCombo(comboItem);\n brothers = subtree.children; // the combo's brothers\n // remove the combo from its brothers array\n\n var index = brothers.indexOf(treeToBeUncombo);\n\n if (index !== -1) {\n brothers.splice(index, 1);\n } // append the combo's children to the combo's brothers array\n\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n var item = _this.findById(child.id);\n\n var childModel = item.getModel();\n\n if (item.getType && item.getType() === 'combo') {\n child.parentId = parentId;\n delete child.comboId;\n childModel.parentId = parentId; // update the parentId of the model\n\n delete childModel.comboId;\n } else if (item.getType && item.getType() === 'node') {\n child.comboId = parentId;\n childModel.comboId = parentId; // update the parentId of the model\n }\n\n parentItem.addChild(item);\n brothers.push(child);\n });\n return false;\n }\n\n return true;\n });\n }); // if the parentId is not found, remove the combo from the roots\n\n if (!parentId && treeToBeUncombo) {\n var index = comboTrees.indexOf(treeToBeUncombo);\n comboTrees.splice(index, 1); // modify the parentId of the children\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child.parentId = undefined;\n\n var childModel = _this.findById(child.id).getModel();\n\n delete childModel.parentId; // update the parentId of the model\n\n delete childModel.comboId; // update the comboId of the model\n\n if (child.itemType !== 'node') comboTrees.push(child);\n });\n }\n };\n /**\n * 根据节点的 bbox 更新所有 combos 的绘制,包括 combos 的位置和范围\n */\n\n\n AbstractGraph.prototype.updateCombos = function () {\n var _this = this;\n\n var self = this;\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true);\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, false);\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, true);\n });\n }\n\n return true;\n });\n });\n self.sortCombos();\n };\n /**\n * 根据节点的 bbox 更新 combo 及其祖先 combos 的绘制,包括 combos 的位置和范围\n * @param {String | ICombo} combo 需要被更新的 Combo 或 id,若指定,则该 Combo 及所有祖先 Combod 都会被更新\n */\n\n\n AbstractGraph.prototype.updateCombo = function (combo) {\n var _this = this;\n\n var self = this;\n var comboItem = combo;\n var comboId;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item to be updated is not a combo!');\n return;\n }\n\n comboId = comboItem.get('id');\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (comboId === child.id && childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true); // || !item.getStateStyle(stateName)\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, false);\n }\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, true);\n }\n });\n if (comboId) comboId = child.parentId;\n }\n\n return true;\n });\n });\n };\n /**\n * 更新树结构,例如移动子树等\n * @param {String | INode | ICombo} item 需要被更新的 Combo 或 节点 id\n * @param {string | undefined} parentId 新的父 combo id,undefined 代表没有父 combo\n */\n\n\n AbstractGraph.prototype.updateComboTree = function (item, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n this.set('comboSorted', false);\n var uItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n uItem = self.findById(item);\n } else {\n uItem = item;\n }\n\n var model = uItem.getModel();\n var oldParentId = model.comboId || model.parentId;\n var type = '';\n if (uItem.getType) type = uItem.getType(); // 若 item 是 Combo,且 parentId 是其子孙 combo 的 id,则警告并终止\n\n if (parentId && type === 'combo') {\n var comboTrees = this.get('comboTrees');\n var valid_1 = true;\n var itemSubTree_1;\n (comboTrees || []).forEach(function (ctree) {\n if (itemSubTree_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n if (itemSubTree_1) return; // 找到从 item 开始的子树\n\n if (subTree.id === uItem.getID()) {\n itemSubTree_1 = subTree;\n }\n\n return true;\n });\n }); // 在以 item 为根的子树中寻找与 parentId 相同的后继元素\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(itemSubTree_1, function (subTree) {\n if (subTree.id === parentId) {\n valid_1 = false;\n return false;\n }\n\n return true;\n }); // parentId 是 item 的一个后继元素,不能进行更新\n\n if (!valid_1) {\n console.warn('Failed to update the combo tree! The parentId points to a descendant of the combo!');\n return;\n }\n }\n\n if (stack && this.get('enabledStack')) {\n var beforeData = {},\n afterData = {};\n\n if (type === 'combo') {\n beforeData.combos = [{\n id: model.id,\n parentId: model.parentId\n }];\n afterData.combos = [{\n id: model.id,\n parentId: parentId\n }];\n } else if (type === 'node') {\n beforeData.nodes = [{\n id: model.id,\n parentId: model.comboId\n }];\n afterData.nodes = [{\n id: model.id,\n parentId: parentId\n }];\n }\n\n this.pushStack('updateComboTree', {\n before: beforeData,\n after: afterData\n });\n } // 当 combo 存在 parentId 或 comboId 时,才将其移除\n\n\n if (model.parentId || model.comboId) {\n var combo = this.findById(model.parentId || model.comboId);\n\n if (combo) {\n combo.removeChild(uItem);\n }\n }\n\n if (type === 'combo') {\n model.parentId = parentId;\n } else if (type === 'node') {\n model.comboId = parentId;\n } // 只有当移入到指定 combo 时才添加\n\n\n if (parentId) {\n var parentCombo = this.findById(parentId);\n\n if (parentCombo) {\n // 将元素添加到 parentCombo 中\n parentCombo.addChild(uItem);\n }\n } // 如果原先有父亲 combo,则从原父 combo 的子元素数组中删除\n\n\n if (oldParentId) {\n var parentCombo = this.findById(oldParentId);\n\n if (parentCombo) {\n // 将元素从 parentCombo 中移除\n parentCombo.removeChild(uItem);\n }\n }\n\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'), model.id, parentId);\n this.set('comboTrees', newComboTrees);\n this.updateCombos();\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n\n\n AbstractGraph.prototype.save = function () {\n var nodes = [];\n var edges = [];\n var combos = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('nodes'), function (node) {\n nodes.push(node.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('edges'), function (edge) {\n edges.push(edge.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('combos'), function (combo) {\n combos.push(combo.getModel());\n });\n return {\n nodes: nodes,\n edges: edges,\n combos: combos\n };\n };\n /**\n * 改变画布大小\n * @param {number} width 画布宽度\n * @param {number} height 画布高度\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeSize = function (width, height) {\n var viewController = this.get('viewController');\n viewController.changeSize(width, height);\n return this;\n };\n /**\n * 当源数据在外部发生变更时,根据新数据刷新视图。但是不刷新节点位置\n */\n\n\n AbstractGraph.prototype.refresh = function () {\n var self = this;\n self.emit('beforegraphrefresh');\n\n if (self.get('animate')) {\n self.positionsAnimate();\n } else {\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('edges');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n edge.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n }\n\n self.emit('aftergraphrefresh');\n self.autoPaint();\n };\n /**\n * 获取当前图中所有节点的item实例\n * @return {INode} item数组\n */\n\n\n AbstractGraph.prototype.getNodes = function () {\n return this.get('nodes');\n };\n /**\n * 获取当前图中所有边的item实例\n * @return {IEdge} item数组\n */\n\n\n AbstractGraph.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取图中所有的 combo 实例\n */\n\n\n AbstractGraph.prototype.getCombos = function () {\n return this.get('combos');\n };\n /**\n * 获取指定 Combo 中所有的节点\n * @param comboId combo ID\n */\n\n\n AbstractGraph.prototype.getComboChildren = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo does not exist!');\n return;\n }\n\n return combo.getChildren();\n };\n /**\n * 根据 graph 上的 animateCfg 进行视图中节点位置动画接口\n */\n\n\n AbstractGraph.prototype.positionsAnimate = function () {\n var self = this;\n self.emit('beforeanimate');\n var animateCfg = self.get('animateCfg');\n var onFrame = animateCfg.onFrame;\n var nodes = self.getNodes();\n var toNodes = nodes.map(function (node) {\n var model = node.getModel();\n return {\n id: model.id,\n x: model.x,\n y: model.y\n };\n });\n\n if (self.isAnimating()) {\n self.stopAnimate();\n }\n\n var canvas = self.get('canvas');\n canvas.animate(function (ratio) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(toNodes, function (data) {\n var node = self.findById(data.id);\n\n if (!node || node.destroyed) {\n return;\n }\n\n var originAttrs = node.get('originAttrs');\n var model = node.get('model');\n\n if (!originAttrs) {\n var containerMatrix = node.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n originAttrs = {\n x: containerMatrix[6],\n y: containerMatrix[7]\n };\n node.set('originAttrs', originAttrs);\n }\n\n if (onFrame) {\n var attrs = onFrame(node, ratio, data, originAttrs);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = originAttrs.x + (data.x - originAttrs.x) * ratio;\n model.y = originAttrs.y + (data.y - originAttrs.y) * ratio;\n }\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.easing,\n callback: function callback() {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.set('originAttrs', null);\n });\n\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n\n self.emit('afteranimate');\n self.animating = false;\n }\n });\n };\n /**\n * 当节点位置在外部发生改变时,刷新所有节点位置,重计算边\n */\n\n\n AbstractGraph.prototype.refreshPositions = function () {\n var self = this;\n self.emit('beforegraphrefreshposition');\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('vedges');\n var combos = self.get('combos');\n var model;\n var updatedNodes = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n model = node.getModel();\n var originAttrs = node.get('originAttrs');\n\n if (originAttrs && model.x === originAttrs.x && model.y === originAttrs.y) {\n return;\n }\n\n var changed = node.updatePosition({\n x: model.x,\n y: model.y\n });\n updatedNodes[model.id] = changed;\n if (model.comboId) updatedNodes[model.comboId] = updatedNodes[model.comboId] || changed;\n });\n\n if (combos && combos.length !== 0) {\n self.updateCombos();\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n var sourceModel = edge.getSource().getModel();\n var target = edge.getTarget(); // 避免 target 是纯对象的情况下调用 getModel 方法\n // 拖动生成边的时候 target 会是纯对象\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(target)) {\n var targetModel = target.getModel();\n\n if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge.getModel().isComboEdge) {\n edge.refresh();\n }\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n self.emit('aftergraphrefreshposition');\n self.autoPaint();\n };\n\n AbstractGraph.prototype.stopAnimate = function () {\n this.get('canvas').stopAnimate();\n };\n\n AbstractGraph.prototype.isAnimating = function () {\n return this.animating;\n };\n /**\n * 获取当前视口伸缩比例\n * @return {number} 比例\n */\n\n\n AbstractGraph.prototype.getZoom = function () {\n var matrix = this.get('group').getMatrix();\n return matrix ? matrix[0] : 1;\n };\n /**\n * 获取当前的行为模式\n * @return {string} 当前行为模式\n */\n\n\n AbstractGraph.prototype.getCurrentMode = function () {\n var modeController = this.get('modeController');\n return modeController.getMode();\n };\n /**\n * 切换行为模式\n * @param {string} mode 指定模式\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.setMode = function (mode) {\n var modeController = this.get('modeController');\n modeController.setMode(mode);\n return this;\n };\n /**\n * 清除画布元素\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.clear = function (avoidEmit) {\n var _a;\n\n if (avoidEmit === void 0) {\n avoidEmit = false;\n }\n\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.clear();\n this.initGroups(); // 清空画布时同时清除数据\n\n this.set({\n itemMap: {},\n nodes: [],\n edges: [],\n groups: [],\n combos: [],\n comboTrees: []\n });\n if (!avoidEmit) this.emit('afterrender');\n return this;\n };\n /**\n * 更换布局配置项\n * @param {object} cfg 新布局配置项\n * @param {'center' | 'begin'} align 对齐方式,可选中心(center)对齐到对齐点,或左上角(begin)对齐到对齐点\n * @param {IPoint} alignPoint 画布上的对齐点,为 Canvas 坐标系(Canvas DOM)\n * 若 cfg 含有 type 字段或为 String 类型,且与现有布局方法不同,则更换布局\n * 若 cfg 不包括 type ,则保持原有布局方法,仅更新布局配置项\n */\n\n\n AbstractGraph.prototype.updateLayout = function (cfg, align, alignPoint) {\n var _this = this;\n\n var layoutController = this.get('layoutController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(cfg)) {\n cfg = {\n type: cfg\n };\n } // align the graph after layout\n\n\n if (align) {\n var toPoint_1 = alignPoint;\n\n if (!toPoint_1) {\n if (align === 'begin') toPoint_1 = {\n x: 0,\n y: 0\n };else toPoint_1 = {\n x: this.getWidth() / 2,\n y: this.getHeight() / 2\n };\n } // translate to point coordinate system\n\n\n toPoint_1 = this.getPointByCanvas(toPoint_1.x, toPoint_1.y);\n var forceTypes = ['force', 'gForce', 'fruchterman']; // if it is force layout, only center takes effect, and assign center force\n\n if (forceTypes.includes(cfg.type) || !cfg.type && forceTypes.includes(layoutController === null || layoutController === void 0 ? void 0 : layoutController.layoutType)) {\n cfg.center = [toPoint_1.x, toPoint_1.y];\n } else {\n this.once('afterlayout', function (e) {\n var matrix = _this.getGroup().getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n toPoint_1.x = toPoint_1.x * matrix[0] + matrix[6];\n toPoint_1.y = toPoint_1.y * matrix[0] + matrix[7];\n\n var _a = _this.getGroup().getCanvasBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n\n var bboxPoint = {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2\n };\n\n if (align === 'begin') {\n bboxPoint.x = minX;\n bboxPoint.y = minY;\n }\n\n _this.translate(toPoint_1.x - bboxPoint.x, toPoint_1.y - bboxPoint.y);\n });\n }\n }\n\n var oriLayoutCfg = this.get('layout');\n var layoutCfg = {};\n Object.assign(layoutCfg, oriLayoutCfg, cfg);\n this.set('layout', layoutCfg);\n\n if (layoutController.isLayoutTypeSame(layoutCfg) && layoutCfg.gpuEnabled === oriLayoutCfg.gpuEnabled) {\n // no type or same type, or switch the gpu and cpu, update layout\n layoutController.updateLayoutCfg(layoutCfg);\n } else {\n // has different type, change layout\n layoutController.changeLayout(layoutCfg);\n }\n };\n /**\n * 销毁布局,changeData 时不会再使用原来的布局方法对新数据进行布局\n */\n\n\n AbstractGraph.prototype.destroyLayout = function () {\n var layoutController = this.get('layoutController');\n layoutController.destroyLayout();\n };\n /**\n * 重新以当前示例中配置的属性进行一次布局\n */\n\n\n AbstractGraph.prototype.layout = function () {\n var layoutController = this.get('layoutController');\n var layoutCfg = this.get('layout');\n if (!layoutCfg || !layoutController) return;\n\n if (layoutCfg.workerEnabled) {\n // 如果使用web worker布局\n layoutController.layout();\n return;\n }\n\n if (layoutController.layoutMethod) {\n layoutController.relayout(true);\n } else {\n layoutController.layout();\n }\n };\n /**\n * 收起指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.collapseCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo) {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.collapseCombo(combo);\n comboModel.collapsed = true; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false; // if the combo is found\n\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n // if the combo is found, concat the descendant nodes and combos\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = [];\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || source.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel();\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.parentId || targetModel.comboId);\n if (!target || !targetModel.parentId && !targetModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n targetModel = target.getModel();\n }\n\n var targetId = targetModel.id;\n\n if (edgeWeightMap[comboModel.id + \"-\" + targetId]) {\n edgeWeightMap[comboModel.id + \"-\" + targetId] += edgeModel.size || 1;\n return;\n } // the source is in the combo, the target is not\n\n\n var vedge = _this.addItem('vedge', {\n source: comboModel.id,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[comboModel.id + \"-\" + targetId] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || target.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel();\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.parentId || sourceModel.comboId);\n if (!source || !sourceModel.parentId && !sourceModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n sourceModel = source.getModel();\n }\n\n var sourceId = sourceModel.id;\n\n if (edgeWeightMap[sourceId + \"-\" + comboModel.id]) {\n edgeWeightMap[sourceId + \"-\" + comboModel.id] += edgeModel.size || 1;\n return;\n } // the target is in the combo, the source is not\n\n\n var vedge = _this.addItem('vedge', {\n target: comboModel.id,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[sourceId + \"-\" + comboModel.id] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n }\n }); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n addedVEdges.forEach(function (vedge) {\n var vedgeModel = vedge.getModel();\n\n _this.updateItem(vedge, {\n size: edgeWeightMap[vedgeModel.source + \"-\" + vedgeModel.target]\n }, false);\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'collapse',\n item: combo\n });\n };\n /**\n * 展开指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.expandCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.expandCombo(combo);\n comboModel.collapsed = false; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false;\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = {};\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n var sourceId = source.get('id');\n var targetId = target.get('id');\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || sourceId === comboModel.id) {\n // the source is in the combo, the target is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (sourceModel.comboId === comboModel.id || sourceModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n\n if (targetId) {\n var vedgeId = sourceId + \"-\" + targetId; // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n source: sourceId,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || targetId === comboModel.id) {\n // the target is in the combo, the source is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (targetModel.comboId === comboModel.id || targetModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n\n if (sourceId) {\n var vedgeId = sourceId + \"-\" + targetId; // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n target: targetId,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if ((cnodes.includes(source) || ccombos.includes(source)) && (cnodes.includes(target) || ccombos.includes(target))) {\n // both source and target are in the combo, if the target and source are both visible, show the edge\n if (source.isVisible() && target.isVisible()) {\n edge.show();\n }\n }\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n };\n\n AbstractGraph.prototype.collapseExpandCombo = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') return;\n var comboModel = combo.getModel(); // if one ancestor combo of the combo is collapsed, it should not be collapsed or expanded\n\n var parentItem = this.findById(comboModel.parentId);\n\n while (parentItem) {\n var parentModel = parentItem.getModel();\n\n if (parentModel.collapsed) {\n console.warn(\"Fail to expand the combo since it's ancestor combo is collapsed.\");\n parentItem = undefined;\n return;\n }\n\n parentItem = this.findById(parentModel.parentId);\n }\n\n var collapsed = comboModel.collapsed; // 该群组已经处于收起状态,需要展开\n\n if (collapsed) {\n this.expandCombo(combo);\n } else {\n this.collapseCombo(combo);\n }\n\n this.updateCombo(combo);\n };\n /**\n * 根据 comboTree 结构整理 Combo 相关的图形绘制层级,包括 Combo 本身、节点、边\n * @param {GraphData} data 数据\n */\n\n\n AbstractGraph.prototype.sortCombos = function () {\n var _this = this;\n\n var comboSorted = this.get('comboSorted');\n if (comboSorted) return;\n this.set('comboSorted', true);\n var depthMap = [];\n var dataDepthMap = {};\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (cTree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(cTree, function (child) {\n if (depthMap[child.depth]) depthMap[child.depth].push(child.id);else depthMap[child.depth] = [child.id];\n dataDepthMap[child.id] = child.depth;\n return true;\n });\n });\n var edges = this.getEdges().concat(this.get('vedges'));\n (edges || []).forEach(function (edgeItem) {\n var edge = edgeItem.getModel();\n var sourceDepth = dataDepthMap[edge.source] || 0;\n var targetDepth = dataDepthMap[edge.target] || 0;\n var depth = Math.max(sourceDepth, targetDepth);\n if (depthMap[depth]) depthMap[depth].push(edge.id);else depthMap[depth] = [edge.id];\n });\n depthMap.forEach(function (array) {\n if (!array || !array.length) return;\n\n for (var i = array.length - 1; i >= 0; i--) {\n var item = _this.findById(array[i]);\n\n if (item) item.toFront();\n }\n });\n };\n /**\n * 获取节点所有的邻居节点\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @returns {INode[]}\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNeighbors = function (node, type) {\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n return item.getNeighbors(type);\n };\n /**\n * 获取 node 的度数\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @param {('in' | 'out' | 'total' | 'all' | undefined)} 度数类型,in 入度,out 出度,total 总度数,all 返回三种类型度数的对象\n * @returns {Number | Object} 该节点的度数\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNodeDegree = function (node, type, refresh) {\n if (type === void 0) {\n type = undefined;\n }\n\n if (refresh === void 0) {\n refresh = false;\n }\n\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n var degrees = this.get('degrees');\n\n if (!degrees || refresh) {\n degrees = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getDegree\"])(this.save());\n this.set('degrees', degrees);\n }\n\n var nodeDegrees = degrees[item.getID()];\n var res = 0; // 如果是通过 addItem 后面新增加的节点,此时它的所有度数都为 0\n\n if (!nodeDegrees) {\n return 0;\n }\n\n switch (type) {\n case 'in':\n res = nodeDegrees.inDegree;\n break;\n\n case 'out':\n res = nodeDegrees.outDegree;\n break;\n\n case 'all':\n res = nodeDegrees;\n break;\n\n default:\n res = nodeDegrees.degree;\n break;\n }\n\n return res;\n };\n\n AbstractGraph.prototype.getUndoStack = function () {\n return this.undoStack;\n };\n\n AbstractGraph.prototype.getRedoStack = function () {\n return this.redoStack;\n };\n /**\n * 获取 undo 和 redo 栈的数据\n */\n\n\n AbstractGraph.prototype.getStackData = function () {\n if (!this.get('enabledStack')) {\n return null;\n }\n\n return {\n undoStack: this.undoStack.toArray(),\n redoStack: this.redoStack.toArray()\n };\n };\n /**\n * 清空 undo stack & redo stack\n */\n\n\n AbstractGraph.prototype.clearStack = function () {\n if (this.get('enabledStack')) {\n this.undoStack.clear();\n this.redoStack.clear();\n }\n };\n /**\n * 将操作类型和操作数据入栈\n * @param action 操作类型\n * @param data 入栈的数据\n * @param stackType 栈的类型\n */\n\n\n AbstractGraph.prototype.pushStack = function (action, data, stackType) {\n if (action === void 0) {\n action = 'update';\n }\n\n if (stackType === void 0) {\n stackType = 'undo';\n }\n\n if (!this.get('enabledStack')) {\n console.warn('请先启用 undo & redo 功能,在实例化 Graph 时候配置 enabledStack: true !');\n return;\n }\n\n var stackData = data ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(data) : {\n before: {},\n after: Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(this.save())\n };\n\n if (stackType === 'redo') {\n this.redoStack.push({\n action: action,\n data: stackData\n });\n } else {\n this.undoStack.push({\n action: action,\n data: stackData\n });\n }\n\n this.emit('stackchange', {\n undoStack: this.undoStack,\n redoStack: this.redoStack\n });\n };\n /**\n * 获取邻接矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 邻接矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getAdjMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n return currentAdjMatrix;\n };\n /**\n * 获取最短路径矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 最短路径矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getShortestPathMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n var currentShourtestPathMatrix = this.get('shortestPathMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n if (!currentShourtestPathMatrix || !cache) {\n currentShourtestPathMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"floydWarshall\"])(this.save(), directed);\n this.set('shortestPathMatrix', currentShourtestPathMatrix);\n }\n\n return currentShourtestPathMatrix;\n };\n /**\n * 重新定义监听函数,复写参数类型\n */\n\n\n AbstractGraph.prototype.on = function (eventName, callback, once) {\n return _super.prototype.on.call(this, eventName, callback, once);\n };\n /**\n * 销毁画布\n */\n\n\n AbstractGraph.prototype.destroy = function () {\n this.clear(); // 清空栈数据\n\n this.clearStack();\n this.get('itemController').destroy();\n this.get('modeController').destroy();\n this.get('viewController').destroy();\n this.get('stateController').destroy();\n this.get('canvas').destroy();\n this.cfg = null;\n this.destroyed = true;\n this.redoStack = null;\n this.undoStack = null;\n };\n /**\n * 创建凸包或凹包轮廓\n * @param cfg HullCfg 轮廓配置项\n */\n\n\n AbstractGraph.prototype.createHull = function (cfg) {\n if (!cfg.members || cfg.members.length < 1) {\n console.warn('Create hull failed! The members is empty.');\n return;\n }\n\n var parent = this.get('hullGroup');\n var hullMap = this.get('hullMap');\n\n if (!hullMap) {\n hullMap = {};\n this.set('hullMap', hullMap);\n }\n\n if (!parent || parent.get('destroyed')) {\n parent = this.get('group').addGroup({\n id: 'hullGroup'\n });\n parent.toBack();\n this.set('hullGroup', parent);\n }\n\n if (hullMap[cfg.id]) {\n console.warn('Existed hull id.');\n return hullMap[cfg.id];\n }\n\n var group = parent.addGroup({\n id: cfg.id + \"-container\"\n });\n var hull = new _item_hull__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), {\n group: group\n }));\n var hullId = hull.id;\n hullMap[hullId] = hull;\n return hull;\n };\n /**\n * 获取当前 graph 中存在的包裹轮廓\n * @return {[key: string]: Hull} Hull 的 map,hullId 对应的 hull 实例\n */\n\n\n AbstractGraph.prototype.getHulls = function () {\n return this.get('hullMap');\n };\n /**\n * 根据 hullId 获取对应的 hull\n * @return Hull\n */\n\n\n AbstractGraph.prototype.getHullById = function (hullId) {\n return this.get('hullMap')[hullId];\n };\n\n AbstractGraph.prototype.removeHull = function (hull) {\n var _a;\n\n var hullInstance;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(hull)) {\n hullInstance = this.getHullById(hull);\n } else {\n hullInstance = hull;\n }\n\n (_a = this.get('hullMap')) === null || _a === void 0 ? true : delete _a[hullInstance.id];\n hullInstance.destroy();\n };\n\n AbstractGraph.prototype.removeHulls = function () {\n var hulls = this.getHulls();\n if (!hulls || !Object.keys(hulls).length) return;\n Object.keys(hulls).forEach(function (key) {\n var hull = hulls[key];\n hull.destroy();\n });\n this.set('hullMap', {});\n };\n\n return AbstractGraph;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGraph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9ncmFwaC5qcz8yZDAwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRDtBQUNaO0FBQ1A7QUFDbUM7QUFDMEI7QUFDM0Q7QUFDZ0M7QUFDM0M7QUFDZ0U7QUFDSztBQUNwRTtBQUNoQyxnQkFBZ0IscURBQUc7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBLGdCQUFnQiwwREFBTzs7QUFFdkI7O0FBRUE7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSw0QkFBNEIscURBQUs7QUFDakMsNEJBQTRCLHFEQUFLO0FBQ2pDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCLDZCQUE2QiwwREFBYztBQUMzQyw2QkFBNkIsMERBQWM7QUFDM0MsNkJBQTZCLDBEQUFjO0FBQzNDLDhCQUE4QiwyREFBZTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIscUJBQXFCO0FBQ3JCLGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQkFBK0I7QUFDdEQscUJBQXFCO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsZ0VBQWE7QUFDckIsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQyxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLE1BQU07QUFDTixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDhCQUE4QjtBQUMzQyxjQUFjLEVBQUU7QUFDaEI7OztBQUdBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLOztBQUV0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxhQUFhO0FBQzFCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QyxhQUFhLGtCQUFrQjtBQUMvQixjQUFjLE1BQU07QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSxrQkFBa0I7QUFDL0IsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsK0JBQStCO0FBQzVDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsbUJBQW1CO0FBQ2hDLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSx3QkFBd0Isd0RBQUs7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0Esd0JBQXdCLHdEQUFLOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHNCQUFzQix1REFBSTs7QUFFMUI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQixjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFFBQVE7QUFDckIsYUFBYSxtQkFBbUI7QUFDaEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixjQUFjLE1BQU07QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsMkRBQVE7O0FBRWhCLHFCQUFxQiwyREFBUTtBQUM3QjtBQUNBLEtBQUs7QUFDTDtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQSwyQkFBMkIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQy9DO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNENBQTRDLFFBQVE7QUFDcEQsa0NBQWtDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN0RDtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QixxRUFBZTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkIsYUFBYSxZQUFZO0FBQ3pCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsY0FBYyxLQUFLO0FBQ25COzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9EQUFvRDs7QUFFcEQsU0FBUyw2RUFBb0I7QUFDN0I7QUFDQTs7QUFFQTtBQUNBLGdIQUFnSCxZQUFZO0FBQzVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxRQUFRLG9FQUFjO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsc0RBQVE7QUFDbkM7QUFDQTtBQUNBLGFBQWE7O0FBRWIsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7O0FBRVQ7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLDZCQUE2QiwyREFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsUUFBUSxvRUFBYztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix3REFBSztBQUNqQztBQUNBLCtEQUErRDtBQUMvRDtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzNDO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLFlBQVk7QUFDekIsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsS0FBSztBQUNuQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsaUNBQWlDO0FBQzlDOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSx3QkFBd0Isd0RBQUs7QUFDN0I7QUFDQTs7QUFFQSxpQkFBaUIsMkRBQWE7O0FBRTlCO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHNEQUFRO0FBQy9CO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsaUNBQWlDO0FBQzlDLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsaUJBQWlCO0FBQzlCOzs7QUFHQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2Qjs7O0FBR0E7QUFDQSxJQUFJLHVFQUFjO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0EsdUJBQXVCLHdFQUFrQjtBQUN6Qyx5Q0FBeUM7O0FBRXpDO0FBQ0E7O0FBRUEsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLDBCQUEwQjtBQUN2QyxhQUFhLFFBQVE7QUFDckIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTLHVFQUFjO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsbUNBQW1DOztBQUVuQyx1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHdFQUFrQjtBQUN6QztBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBLGtDQUFrQyxRQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksdURBQUk7QUFDUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0I7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxpQ0FBaUM7O0FBRWpDO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckM7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLE1BQU0sb0VBQWM7QUFDcEIsZUFBZTs7O0FBR2Y7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBLHNDQUFzQztBQUN0Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTs7QUFFQTs7QUFFQSxtQ0FBbUM7O0FBRW5DLGtDQUFrQzs7QUFFbEM7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QiwyREFBYTs7QUFFcEMsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVyxFQUFFOztBQUViLGdFQUFnRTs7QUFFaEUsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sb0VBQWM7QUFDcEI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQWEsa0NBQWtDOzs7QUFHdEUsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTs7QUFFYixnRUFBZ0U7O0FBRWhFLFVBQVUsdURBQUk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckMsYUFBYSxtQkFBbUI7QUFDaEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOENBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGtFQUFZO0FBQ3BCLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTs7QUFFVCxNQUFNLGtFQUFZO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixxRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUCxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsSUFBSSx1REFBSTtBQUNSO0FBQ0Esb0NBQW9DO0FBQ3BDOztBQUVBLFdBQVcsZ0VBQWE7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLG1CQUFtQjtBQUNoQyxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBLDBEQUEwRDs7QUFFMUQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGdCQUFnQjtBQUM3Qjs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEMsMkRBQTJEOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QixNQUFNLGtFQUFZO0FBQ2xCO0FBQ0EscUVBQXFFOztBQUVyRTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwrRUFBK0U7O0FBRS9FO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwrRUFBK0U7O0FBRS9FO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQywyREFBMkQ7O0FBRTNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLE1BQU0sa0VBQVk7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNENBQTRDOztBQUU1QztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtEQUFrRDtBQUNsRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDRDQUE0Qzs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0M7O0FBRXRDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrRUFBWTtBQUNsQix3RUFBd0U7QUFDeEU7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pELEtBQUs7QUFDTDtBQUNBOztBQUVBLG9DQUFvQyxRQUFRO0FBQzVDOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QixlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUJBQWlCO0FBQzlCLGFBQWEsNkNBQTZDO0FBQzFELGVBQWUsZ0JBQWdCO0FBQy9CO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQkFBZ0IsaUVBQVM7QUFDekI7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsd0RBQUs7QUFDaEMsZ0JBQWdCO0FBQ2hCLGFBQWEsd0RBQUs7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGVBQWUsT0FBTztBQUN0QjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLG9FQUFpQjtBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGVBQWUsT0FBTztBQUN0QjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsb0VBQWlCO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQSxtQ0FBbUMscUVBQWE7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUJBQW1CLG1EQUFJLE9BQU8sc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ2xEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsb0JBQW9CO0FBQ2xDOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFZOztBQUVDLDRFQUFhIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ0BhbnR2L2V2ZW50LWVtaXR0ZXInO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXREZWdyZWUsIGdldEFkak1hdHJpeCBhcyBnZXRBZGphY2VudE1hdHJpeCwgU3RhY2ssIGZsb3lkV2Fyc2hhbGwgfSBmcm9tICdAYW50di9hbGdvcml0aG0nO1xuaW1wb3J0IHsgbGVycCwgbW92ZSB9IGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgeyBkYXRhVmFsaWRhdGlvbiwgc2luZ2xlRGF0YVZhbGlkYXRpb24gfSBmcm9tICcuLi91dGlsL3ZhbGlkYXRpb24nO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgSXRlbUNvbnRyb2xsZXIsIE1vZGVDb250cm9sbGVyLCBTdGF0ZUNvbnRyb2xsZXIsIFZpZXdDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCB7IHBsYWluQ29tYm9zVG9UcmVlcywgdHJhdmVyc2VUcmVlLCByZWNvbnN0cnVjdFRyZWUsIHRyYXZlcnNlVHJlZVVwIH0gZnJvbSAnLi4vdXRpbC9ncmFwaGljJztcbmltcG9ydCBIdWxsIGZyb20gJy4uL2l0ZW0vaHVsbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBOT0RFID0gJ25vZGUnO1xuXG52YXIgQWJzdHJhY3RHcmFwaCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhBYnN0cmFjdEdyYXBoLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEFic3RyYWN0R3JhcGgoY2ZnKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcblxuICAgIF90aGlzLmNmZyA9IGRlZXBNaXgoX3RoaXMuZ2V0RGVmYXVsdENmZygpLCBjZmcpO1xuXG4gICAgX3RoaXMuaW5pdCgpO1xuXG4gICAgX3RoaXMuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgX3RoaXMuZGVzdHJveWVkID0gZmFsc2U7IC8vIOWQr+eUqCBzdGFjayDlkI7vvIzlrp7kvovljJYgdW5kb1N0YWNrIOWSjCByZWRvU3RhY2tcblxuICAgIGlmIChfdGhpcy5jZmcuZW5hYmxlZFN0YWNrKSB7XG4gICAgICAvLyDlrp7kvovljJYgdW5kbyDlkowgcmVkbyDmoIhcbiAgICAgIF90aGlzLnVuZG9TdGFjayA9IG5ldyBTdGFjayhfdGhpcy5jZmcubWF4U3RlcCk7XG4gICAgICBfdGhpcy5yZWRvU3RhY2sgPSBuZXcgU3RhY2soX3RoaXMuY2ZnLm1heFN0ZXApO1xuICAgIH1cblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0Q2FudmFzKCk7IC8vIGluc3RhbmNlIGNvbnRyb2xsZXJcblxuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IG5ldyBWaWV3Q29udHJvbGxlcih0aGlzKTtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSBuZXcgTW9kZUNvbnRyb2xsZXIodGhpcyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gbmV3IEl0ZW1Db250cm9sbGVyKHRoaXMpO1xuICAgIHZhciBzdGF0ZUNvbnRyb2xsZXIgPSBuZXcgU3RhdGVDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIHZpZXdDb250cm9sbGVyOiB2aWV3Q29udHJvbGxlcixcbiAgICAgIG1vZGVDb250cm9sbGVyOiBtb2RlQ29udHJvbGxlcixcbiAgICAgIGl0ZW1Db250cm9sbGVyOiBpdGVtQ29udHJvbGxlcixcbiAgICAgIHN0YXRlQ29udHJvbGxlcjogc3RhdGVDb250cm9sbGVyXG4gICAgfSk7IC8vIOWIneWni+WMluW4g+WxgOacuuWItlxuXG4gICAgdGhpcy5pbml0TGF5b3V0Q29udHJvbGxlcigpOyAvLyDliJ3lp4vljJbkuovku7bmnLrliLZcblxuICAgIHRoaXMuaW5pdEV2ZW50Q29udHJvbGxlcigpO1xuICAgIHRoaXMuaW5pdEdyb3VwcygpO1xuICAgIC8qKiDliJ3lp4vljJbmj5Lku7YgKi9cblxuICAgIHRoaXMuaW5pdFBsdWdpbnMoKTtcbiAgfTsgLy8g5Yid5aeL5YyW5omA5pyJIEdyb3VwXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5pbml0R3JvdXBzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgaWYgKCFjYW52YXMpIHJldHVybjtcbiAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgIHZhciBfYSA9IChlbCB8fCB7fSkuaWQsXG4gICAgICAgIGlkID0gX2EgPT09IHZvaWQgMCA/ICdnNicgOiBfYTtcbiAgICB2YXIgZ3JvdXAgPSBjYW52YXMuYWRkR3JvdXAoe1xuICAgICAgaWQ6IGlkICsgXCItcm9vdFwiLFxuICAgICAgY2xhc3NOYW1lOiBHbG9iYWwucm9vdENvbnRhaW5lckNsYXNzTmFtZVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZ2V0KCdncm91cEJ5VHlwZXMnKSkge1xuICAgICAgdmFyIGVkZ2VHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgaWQ6IGlkICsgXCItZWRnZVwiLFxuICAgICAgICBjbGFzc05hbWU6IEdsb2JhbC5lZGdlQ29udGFpbmVyQ2xhc3NOYW1lXG4gICAgICB9KTtcbiAgICAgIHZhciBub2RlR3JvdXAgPSBncm91cC5hZGRHcm91cCh7XG4gICAgICAgIGlkOiBpZCArIFwiLW5vZGVcIixcbiAgICAgICAgY2xhc3NOYW1lOiBHbG9iYWwubm9kZUNvbnRhaW5lckNsYXNzTmFtZVxuICAgICAgfSk7XG4gICAgICB2YXIgY29tYm9Hcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgaWQ6IGlkICsgXCItY29tYm9cIixcbiAgICAgICAgY2xhc3NOYW1lOiBHbG9iYWwuY29tYm9Db250YWluZXJDbGFzc05hbWVcbiAgICAgIH0pOyAvLyDnlKjkuo7lrZjlgqjoh6rlrprkuYnnmoTnvqTnu4RcblxuICAgICAgY29tYm9Hcm91cC50b0JhY2soKTtcbiAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgbm9kZUdyb3VwOiBub2RlR3JvdXAsXG4gICAgICAgIGVkZ2VHcm91cDogZWRnZUdyb3VwLFxuICAgICAgICBjb21ib0dyb3VwOiBjb21ib0dyb3VwXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgZGVsZWdhdGVHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIGlkOiBpZCArIFwiLWRlbGVnYXRlXCIsXG4gICAgICBjbGFzc05hbWU6IEdsb2JhbC5kZWxlZ2F0ZUNvbnRhaW5lckNsYXNzTmFtZVxuICAgIH0pO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIGRlbGVnYXRlR3JvdXA6IGRlbGVnYXRlR3JvdXBcbiAgICB9KTtcbiAgICB0aGlzLnNldCgnZ3JvdXAnLCBncm91cCk7XG4gIH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIENvbnRhaW5lciBjb3VsZCBiZSBkb20gb2JqZWN0IG9yIGRvbSBpZFxuICAgICAgICovXG4gICAgICBjb250YWluZXI6IHVuZGVmaW5lZCxcblxuICAgICAgLyoqXG4gICAgICAgKiBDYW52YXMgd2lkdGhcbiAgICAgICAqIHVuaXQgcGl4ZWwgaWYgdW5kZWZpbmVkIGZvcmNlIGZpdCB3aWR0aFxuICAgICAgICovXG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIENhbnZhcyBoZWlnaHRcbiAgICAgICAqIHVuaXQgcGl4ZWwgaWYgdW5kZWZpbmVkIGZvcmNlIGZpdCBoZWlnaHRcbiAgICAgICAqL1xuICAgICAgaGVpZ2h0OiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogcmVuZGVyZXIgY2FudmFzIG9yIHN2Z1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgcmVuZGVyZXI6ICdjYW52YXMnLFxuXG4gICAgICAvKipcbiAgICAgICAqIGNvbnRyb2wgZ3JhcGggYmVoYXZpb3JzXG4gICAgICAgKi9cbiAgICAgIG1vZGVzOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDms6jlhozmj5Lku7ZcbiAgICAgICAqL1xuICAgICAgcGx1Z2luczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc291cmNlIGRhdGFcbiAgICAgICAqL1xuICAgICAgZGF0YToge30sXG5cbiAgICAgIC8qKlxuICAgICAgICogRml0IHZpZXcgcGFkZGluZyAoY2xpZW50IHNjYWxlKVxuICAgICAgICovXG4gICAgICBmaXRWaWV3UGFkZGluZzogMTAsXG5cbiAgICAgIC8qKlxuICAgICAgICogTWluaW11bSBzY2FsZSBzaXplXG4gICAgICAgKi9cbiAgICAgIG1pblpvb206IDAuMixcblxuICAgICAgLyoqXG4gICAgICAgKiBNYXhtdW0gc2NhbGUgc2l6ZVxuICAgICAgICovXG4gICAgICBtYXhab29tOiAxMCxcblxuICAgICAgLyoqXG4gICAgICAgKiAgY2FwdHVyZSBldmVudHNcbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogZ3JvdXAgbm9kZSAmIGVkZ2VzIGludG8gZGlmZmVyZW50IGdyYXBoaWMgZ3JvdXBzXG4gICAgICAgKi9cbiAgICAgIGdyb3VwQnlUeXBlczogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBkZXRlcm1pbmUgaWYgaXQncyBhIGRpcmVjdGVkIGdyYXBoXG4gICAgICAgKi9cbiAgICAgIGRpcmVjdGVkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiB3aGVuIGRhdGEgb3Igc2hhcGUgY2hhbmdlZCwgc2hvdWxkIGNhbnZhcyBkcmF3IGF1dG9tYXRpY2FsbHlcbiAgICAgICAqL1xuICAgICAgYXV0b1BhaW50OiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHN0b3JlIGFsbCB0aGUgbm9kZSBpbnN0YW5jZXNcbiAgICAgICAqL1xuICAgICAgbm9kZXM6IFtdLFxuXG4gICAgICAvKipcbiAgICAgICAqIHN0b3JlIGFsbCB0aGUgZWRnZSBpbnN0YW5jZXNcbiAgICAgICAqL1xuICAgICAgZWRnZXM6IFtdLFxuXG4gICAgICAvKipcbiAgICAgICAqIHN0b3JlIGFsbCB0aGUgY29tYm8gaW5zdGFuY2VzXG4gICAgICAgKi9cbiAgICAgIGNvbWJvczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBlZGdlIGluc3RhbmNlcyB3aGljaCBhcmUgdmlydHVhbCBlZGdlcyByZWxhdGVkIHRvIGNvbGxhcHNlZCBjb21ib1xuICAgICAgICovXG4gICAgICB2ZWRnZXM6IFtdLFxuXG4gICAgICAvKipcbiAgICAgICAqIGFsbCB0aGUgaW5zdGFuY2VzIGluZGV4ZWQgYnkgaWRcbiAgICAgICAqL1xuICAgICAgaXRlbU1hcDoge30sXG5cbiAgICAgIC8qKlxuICAgICAgICog6L6555u05o6l6L+e5o6l5Yiw6IqC54K555qE5Lit5b+D77yM5LiN5YaN6ICD6JmR6ZSa54K5XG4gICAgICAgKi9cbiAgICAgIGxpbmtDZW50ZXI6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIOm7mOiupOeahOiKgueCuemFjee9ru+8jGRhdGEg5LiK5a6a5LmJ55qE6YWN572u5Lya6KaG55uW6L+Z5Lqb6YWN572u44CC5L6L5aaC77yaXG4gICAgICAgKiBkZWZhdWx0Tm9kZToge1xuICAgICAgICogIHR5cGU6ICdyZWN0JyxcbiAgICAgICAqICBzaXplOiBbNjAsIDQwXSxcbiAgICAgICAqICBzdHlsZToge1xuICAgICAgICogICAgLy8uLi4g5qC35byP6YWN572u6aG5XG4gICAgICAgKiAgfVxuICAgICAgICogfVxuICAgICAgICog6Iul5pWw5o2u6aG55Li6IHsgaWQ6ICdub2RlJywgeDogMTAwLCB5OiAxMDAgfVxuICAgICAgICog5a6e6ZmF5Yib5bu655qE6IqC54K55qih5Z6L5pivIHsgaWQ6ICdub2RlJywgeDogMTAwLCB5OiAxMDDvvIwgdHlwZTogJ3JlY3QnLCBzaXplOiBbNjAsIDQwXSB9XG4gICAgICAgKiDoi6XmlbDmja7pobnkuLogeyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMCwgdHlwZTogJ2NpcmNsZScgfVxuICAgICAgICog5a6e6ZmF5Yib5bu655qE6IqC54K55qih5Z6L5pivIHsgaWQ6ICdub2RlJywgeDogMTAwLCB5OiAxMDDvvIwgdHlwZTogJ2NpcmNsZScsIHNpemU6IFs2MCwgNDBdIH1cbiAgICAgICAqL1xuICAgICAgZGVmYXVsdE5vZGU6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOm7mOiupOi+uemFjee9ru+8jGRhdGEg5LiK5a6a5LmJ55qE6YWN572u5Lya6KaG55uW6L+Z5Lqb6YWN572u44CC55So5rOV5ZCMIGRlZmF1bHROb2RlXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRFZGdlOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDoioLngrnpu5jorqTmoLflvI/vvIzkuZ/lj6/ku6Xmt7vliqDnirbmgIHmoLflvI9cbiAgICAgICAqIOS+i+Wmgu+8mlxuICAgICAgICogY29uc3QgZ3JhcGggPSBuZXcgRzYuR3JhcGgoe1xuICAgICAgICogIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgICAgICogICAgc2VsZWN0ZWQ6IHsgZmlsbDogJyNjY2MnLCBzdHJva2U6ICcjNjY2JyB9LFxuICAgICAgICogICAgYWN0aXZlOiB7IGxpbmVXaWR0aDogMiB9XG4gICAgICAgKiAgfSxcbiAgICAgICAqICAuLi5cbiAgICAgICAqIH0pO1xuICAgICAgICpcbiAgICAgICAqL1xuICAgICAgbm9kZVN0YXRlU3R5bGVzOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDovrnpu5jorqTmoLflvI/vvIznlKjms5XlkIxub2RlU3RhdGVTdHlsZVxuICAgICAgICovXG4gICAgICBlZGdlU3RhdGVTdHlsZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIGdyYXBoIOeKtuaAgVxuICAgICAgICovXG4gICAgICBzdGF0ZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOaYr+WQpuWQr+eUqOWFqOWxgOWKqOeUu1xuICAgICAgICovXG4gICAgICBhbmltYXRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiDliqjnlLvorr7nva4s5LuF5ZyoIGFuaW1hdGUg5Li6IHRydWUg5pe25pyJ5pWIXG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGVDZmc6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOW4p+Wbnuiwg+WHveaVsO+8jOeUqOS6juiHquWumuS5ieiKgueCuei/kOWKqOi3r+W+hO+8jOS4uuepuuaXtue6v+aAp+i/kOWKqFxuICAgICAgICAgKi9cbiAgICAgICAgb25GcmFtZTogdW5kZWZpbmVkLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDliqjnlLvml7bplb8obXMpXG4gICAgICAgICAqL1xuICAgICAgICBkdXJhdGlvbjogNTAwLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmjIflrprliqjnlLvliqjmlYhcbiAgICAgICAgICovXG4gICAgICAgIGVhc2luZzogJ2Vhc2VMaW5lYXInXG4gICAgICB9LFxuICAgICAgY2FsbGJhY2s6IHVuZGVmaW5lZCxcbiAgICAgIC8vIOm7mOiupOS4jeWQr+eUqCB1bmRvICYgcmVkbyDlip/og71cbiAgICAgIGVuYWJsZWRTdGFjazogZmFsc2UsXG4gICAgICAvLyDlj6rmnInlvZMgZW5hYmxlZFN0YWNrIOS4uiB0cnVlIOaXtuaJjei1t+S9nOeUqFxuICAgICAgbWF4U3RlcDogMTAsXG4gICAgICAvLyDlrZjlgqjlm77kuIrnmoQgdG9vbHRpcCBkb23vvIzmlrnkvr/plIDmr4FcbiAgICAgIHRvb2x0aXBzOiBbXVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDlsIblgLzorr7nva7liLAgdGhpcy5jZmcg5Y+Y6YeP5LiK6Z2iXG4gICAqIEBwYXJhbSBrZXkg6ZSuIOaIliDlr7nosaHlgLxcbiAgICogQHBhcmFtIHZhbCDlgLxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWwpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChrZXkpKSB7XG4gICAgICB0aGlzLmNmZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLmNmZyksIGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2ZnW2tleV0gPSB2YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgdGhpcy5jZmcg5Lit55qE5YC8XG4gICAqIEBwYXJhbSBrZXkg6ZSuXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfYTtcblxuICAgIHJldHVybiAoX2EgPSB0aGlzLmNmZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2tleV07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qE5qC55Zu+5b2i5YiG57uEXG4gICAqIEByZXR1cm4g5qC5IGdyb3VwXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0R3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdncm91cCcpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahCBET00g5a655ZmoXG4gICAqIEByZXR1cm4gRE9NIOWuueWZqFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOacgOWwj+e8qeaUvuavlOS+i1xuICAgKiBAcmV0dXJuIG1pblpvb21cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRNaW5ab29tID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbWluWm9vbScpO1xuICB9O1xuICAvKipcbiAgICog6K6+572uIGdyYXBoIOeahOacgOWwj+e8qeaUvuavlOS+i1xuICAgKiBAcmV0dXJuIG1pblpvb21cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRNaW5ab29tID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KCdtaW5ab29tJywgcmF0aW8pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOacgOWkp+e8qeaUvuavlOS+i1xuICAgKiBAcGFyYW0gbWF4Wm9vbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE1heFpvb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdtYXhab29tJyk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva4gZ3JhcGgg55qE5pyA5aSn57yp5pS+5q+U5L6LXG4gICAqIEBwYXJhbSBtYXhab29tXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0TWF4Wm9vbSA9IGZ1bmN0aW9uIChyYXRpbykge1xuICAgIHJldHVybiB0aGlzLnNldCgnbWF4Wm9vbScsIHJhdGlvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBncmFwaCDnmoTlrr3luqZcbiAgICogQHJldHVybiB3aWR0aFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnd2lkdGgnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBncmFwaCDnmoTpq5jluqZcbiAgICogQHJldHVybiB3aWR0aFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2hlaWdodCcpO1xuICB9O1xuICAvKipcbiAgICog5riF55CG5YWD57Sg5aSa5Liq54q25oCBXG4gICAqIEBwYXJhbSB7c3RyaW5nfEl0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gc3RhdGVzIOeKtuaAgVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNsZWFySXRlbVN0YXRlcyA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZXMpIHtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSB0aGlzLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH1cblxuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuXG4gICAgaWYgKCFzdGF0ZXMpIHtcbiAgICAgIHN0YXRlcyA9IGl0ZW0uZ2V0KCdzdGF0ZXMnKTtcbiAgICB9XG5cbiAgICBpdGVtQ29udHJvbGxlci5jbGVhckl0ZW1TdGF0ZXMoaXRlbSwgc3RhdGVzKTtcbiAgICB2YXIgc3RhdGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpO1xuICAgIHN0YXRlQ29udHJvbGxlci51cGRhdGVTdGF0ZXMoaXRlbSwgc3RhdGVzLCBmYWxzZSk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7lkITkuKroioLngrnmoLflvI/vvIzku6Xlj4rlnKjlkITnp43nirbmgIHkuIvoioLngrkga2V5U2hhcGUg55qE5qC35byP44CCXG4gICAqIOiLpeaYr+iHquWumuS5ieiKgueCueWIh+WcqOWQhOenjeeKtuaAgeS4i1xuICAgKiBncmFwaC5ub2RlKG5vZGUgPT4ge1xuICAgKiAgcmV0dXJuIHtcbiAgICogICAgdHlwZTogJ3JlY3QnLFxuICAgKiAgICBsYWJlbDogbm9kZS5pZCxcbiAgICogICAgc3R5bGU6IHsgZmlsbDogJyM2NjYnIH0sXG4gICAqICAgIHN0YXRlU3R5bGVzOiB7XG4gICAqICAgICAgIHNlbGVjdGVkOiB7IGZpbGw6ICdibHVlJyB9LFxuICAgKiAgICAgICBjdXN0b206IHsgZmlsbDogJ2dyZWVuJyB9XG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbm9kZUZuIOaMh+Wumuavj+S4quiKgueCueagt+W8j1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbiAobm9kZUZuKSB7XG4gICAgaWYgKHR5cGVvZiBub2RlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuc2V0KCdub2RlTWFwcGVyJywgbm9kZUZuKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7lkITkuKrovrnmoLflvI9cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWRnZUZuIOaMh+Wumuavj+S4qui+ueeahOagt+W8jyznlKjms5XlkIwgbm9kZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmVkZ2UgPSBmdW5jdGlvbiAoZWRnZUZuKSB7XG4gICAgaWYgKHR5cGVvZiBlZGdlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuc2V0KCdlZGdlTWFwcGVyJywgZWRnZUZuKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7lkITkuKogY29tYm8g55qE6YWN572uXG4gICAqIEBwYXJhbSBjb21ib0ZuXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY29tYm8gPSBmdW5jdGlvbiAoY29tYm9Gbikge1xuICAgIGlmICh0eXBlb2YgY29tYm9GbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvTWFwcGVyJywgY29tYm9Gbik7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2uIElEIOafpeivouWbvuWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0gaWQg5Zu+5YWD57SgIElEXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZmluZEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2l0ZW1NYXAnKVtpZF07XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja7lr7nlupTop4TliJnmn6Xmib7ljZXkuKrlhYPntKBcbiAgICogQHBhcmFtIHtJVEVNX1RZUEV9IHR5cGUg5YWD57Sg57G75Z6LKG5vZGUgfCBlZGdlIHwgZ3JvdXApXG4gICAqIEBwYXJhbSB7KGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IFR9IGZuIOaMh+WumuinhOWImVxuICAgKiBAcmV0dXJuIHtUfSDlhYPntKDlrp7kvotcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHR5cGUsIGZuKSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICB2YXIgaXRlbXMgPSB0aGlzLmdldCh0eXBlICsgXCJzXCIpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblxuICAgIGVhY2goaXRlbXMsIGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICBpZiAoZm4oaXRlbSwgaSkpIHtcbiAgICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICAvKipcbiAgICog5p+l5om+5omA5pyJ5ruh6Laz6KeE5YiZ55qE5YWD57SgXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIOWFg+e0oOexu+Weiyhub2RlfGVkZ2UpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbiDmjIflrprop4TliJlcbiAgICogQHJldHVybiB7YXJyYXl9IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpbmRBbGwgPSBmdW5jdGlvbiAodHlwZSwgZm4pIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZWFjaCh0aGlzLmdldCh0eXBlICsgXCJzXCIpLCBmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgaWYgKGZuKGl0ZW0sIGkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7miYDmnInlpITkuo7mjIflrprnirbmgIHnmoTlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUg5YWD57Sg57G75Z6LKG5vZGV8ZWRnZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIOeKtuaAgVxuICAgKiBAcmV0dXJuIHtvYmplY3R9IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpbmRBbGxCeVN0YXRlID0gZnVuY3Rpb24gKHR5cGUsIHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFsbCh0eXBlLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uaGFzU3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5bmz56e755S75biDXG4gICAqIEBwYXJhbSBkeCDmsLTlubPmlrnlkJHkvY3np7tcbiAgICogQHBhcmFtIGR5IOWeguebtOaWueWQkeS9jeenu1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChkeCwgZHkpIHtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgbWF0cml4ID0gY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgZHgsIGR5XV0pO1xuICAgIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICAgIHRoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICBhY3Rpb246ICd0cmFuc2xhdGUnLFxuICAgICAgbWF0cml4OiBncm91cC5nZXRNYXRyaXgoKVxuICAgIH0pO1xuICAgIHRoaXMuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDlubPnp7vnlLvluIPliLDmn5DngrlcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg5rC05bmz5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOWeguebtOWdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm1vdmVUbyA9IGZ1bmN0aW9uICh4LCB5LCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgbW92ZShncm91cCwge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCBhbmltYXRlLCBhbmltYXRlQ2ZnIHx8IHtcbiAgICAgIGR1cmF0aW9uOiA1MDAsXG4gICAgICBlYXNpbmc6ICdlYXNlQ3ViaWMnXG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KCd2aWV3cG9ydGNoYW5nZScsIHtcbiAgICAgIGFjdGlvbjogJ21vdmUnLFxuICAgICAgbWF0cml4OiBncm91cC5nZXRNYXRyaXgoKVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6LCD5pW06KeG5Y+j6YCC5bqU6KeG5Zu+XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYWRkaW5nIOWbm+WRqOWbtOi+uei3nVxuICAgKiBAcGFyYW0ge0ZpdFZpZXdSdWxlc30gcnVsZXMgZml0Vmlld+eahOinhOWImVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpdFZpZXcgPSBmdW5jdGlvbiAocGFkZGluZywgcnVsZXMpIHtcbiAgICBpZiAocGFkZGluZykge1xuICAgICAgdGhpcy5zZXQoJ2ZpdFZpZXdQYWRkaW5nJywgcGFkZGluZyk7XG4gICAgfVxuXG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG5cbiAgICBpZiAocnVsZXMpIHtcbiAgICAgIHZpZXdDb250cm9sbGVyLmZpdFZpZXdCeVJ1bGVzKHJ1bGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlld0NvbnRyb2xsZXIuZml0VmlldygpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDosIPmlbTop4blj6PpgILlupTop4blm77vvIzkuI3nvKnmlL7vvIzku4XlsIblm74gYmJveCDkuK3lv4Plr7npvZDliLDnlLvluIPkuK3lv4NcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maXRDZW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmlld0NvbnRyb2xsZXIuZml0Q2VudGVyKCk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZVtdfSBiZWhhdmlvcnMg5re75Yqg55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOa3u+WKoOWIsOWvueW6lOeahOaooeW8j1xuICAgKiBAcmV0dXJuIHtHcmFwaH0gR3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5hZGRCZWhhdmlvcnMgPSBmdW5jdGlvbiAoYmVoYXZpb3JzLCBtb2Rlcykge1xuICAgIHZhciBtb2RlQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpO1xuICAgIG1vZGVDb250cm9sbGVyLm1hbmlwdWxhdGVCZWhhdmlvcnMoYmVoYXZpb3JzLCBtb2RlcywgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNb2RlT3B0aW9uIHwgTW9kZVR5cGVbXX0gYmVoYXZpb3JzIOenu+mZpOeahOihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBtb2RlcyDku47mjIflrprnmoTmqKHlvI/kuK3np7vpmaRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVtb3ZlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci5tYW5pcHVsYXRlQmVoYXZpb3JzKGJlaGF2aW9ycywgbW9kZXMsIGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOihjOS4uuWPguaVsFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZX0gYmVoYXZpb3Ig6ZyA6KaB5pu05paw55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOaMh+WumueahOaooeW8j+S4reeahOihjOS4uu+8jOS4jeaMh+WumuWImeS4uiBkZWZhdWx0XG4gICAqIEByZXR1cm4ge0dyYXBofSBHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci51cGRhdGVCZWhhdmlvcihiZWhhdmlvciwgbmV3Q2ZnLCBtb2RlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOS8uOe8qeeql+WPo1xuICAgKiBAcGFyYW0gcmF0aW8g5Ly457yp5q+U5L6LXG4gICAqIEBwYXJhbSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tID0gZnVuY3Rpb24gKHJhdGlvLCBjZW50ZXIsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1hdHJpeCA9IGNsb25lKGdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgLWNlbnRlci54LCAtY2VudGVyLnldLCBbJ3MnLCByYXRpbywgcmF0aW9dLCBbJ3QnLCBjZW50ZXIueCwgY2VudGVyLnldXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3MnLCByYXRpbywgcmF0aW9dXSk7XG4gICAgfVxuXG4gICAgaWYgKG1pblpvb20gJiYgbWF0cml4WzBdIDwgbWluWm9vbSB8fCBtYXhab29tICYmIG1hdHJpeFswXSA+IG1heFpvb20pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIG1hdHJpeCA9IFsyLCAwLCAwLCAwLCAyLCAwLCAtMTI1LCAtMTI1LCAxXTtcblxuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIC8vIENsb25lIHRoZSBvcmlnaW5hbCBtYXRyaXggdG8gcGVyZm9ybSB0aGUgYW5pbWF0aW9uXG4gICAgICB2YXIgYW5pTWF0cml4XzEgPSBjbG9uZShncm91cC5nZXRNYXRyaXgoKSk7XG5cbiAgICAgIGlmICghYW5pTWF0cml4XzEpIHtcbiAgICAgICAgYW5pTWF0cml4XzEgPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbml0aWFsUmF0aW9fMSA9IGFuaU1hdHJpeF8xWzBdO1xuICAgICAgdmFyIHRhcmdldFJhdGlvXzEgPSBpbml0aWFsUmF0aW9fMSAqIHJhdGlvO1xuICAgICAgdmFyIGFuaW1hdGVDb25maWcgPSB2b2lkIDA7XG5cbiAgICAgIGlmICghYW5pbWF0ZUNmZykge1xuICAgICAgICBhbmltYXRlQ29uZmlnID0ge1xuICAgICAgICAgIGR1cmF0aW9uOiA1MDAsXG4gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICAgICAgX3RoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgIGFjdGlvbjogJ3pvb20nLFxuICAgICAgICAgICAgICBtYXRyaXg6IGFuaU1hdHJpeF8xXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGFuaW1hdGVDZmcuY2FsbGJhY2spIHtcbiAgICAgICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwgYW5pbWF0ZUNmZy5jYWxsYmFja1xuICAgICAgICB2YXIgY2FsbGJhY2tfMSA9IGFuaW1hdGVDZmcuY2FsbGJhY2s7XG4gICAgICAgIGFuaW1hdGVDb25maWcgPSBjbG9uZShhbmltYXRlQ2ZnKTtcblxuICAgICAgICBhbmltYXRlQ29uZmlnLmNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmVtaXQoJ3ZpZXdwb3J0Y2hhbmdlJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnem9vbScsXG4gICAgICAgICAgICBtYXRyaXg6IGFuaU1hdHJpeF8xXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYWxsYmFja18xKCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRlQ29uZmlnID0gYW5pbWF0ZUNmZztcbiAgICAgIH1cblxuICAgICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgaWYgKHJhdGlvID09PSAxKSB7XG4gICAgICAgICAgLy8gUmV1c2UgdGhlIGZpcnN0IHRyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgYW5pTWF0cml4XzEgPSBtYXRyaXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNjYWxlID0gbGVycChpbml0aWFsUmF0aW9fMSwgdGFyZ2V0UmF0aW9fMSwgcmF0aW8pIC8gYW5pTWF0cml4XzFbMF07XG5cbiAgICAgICAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sndCcsIC1jZW50ZXIueCwgLWNlbnRlci55XSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgY2VudGVyLngsIGNlbnRlci55XV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sncycsIHNjYWxlLCBzY2FsZV1dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdHJpeDogYW5pTWF0cml4XzFcbiAgICAgICAgfTtcbiAgICAgIH0sIGFuaW1hdGVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgICAgIHRoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICAgIGFjdGlvbjogJ3pvb20nLFxuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1dG9QYWludCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5Ly457yp6KeG5Y+j5Yiw5LiA5Zu65a6a5q+U5L6LXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b1JhdGlvIOS8uOe8qeavlOS+i1xuICAgKiBAcGFyYW0ge1BvaW50fSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tVG8gPSBmdW5jdGlvbiAodG9SYXRpbywgY2VudGVyKSB7XG4gICAgdmFyIHJhdGlvID0gdG9SYXRpbyAvIHRoaXMuZ2V0Wm9vbSgpO1xuICAgIHJldHVybiB0aGlzLnpvb20ocmF0aW8sIGNlbnRlcik7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDop4blj6PkuK3lv4NcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOaMh+WumuWFg+e0oFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZvY3VzSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmFyIGlzQW5pbWF0ZSA9IGZhbHNlO1xuICAgIGlmIChhbmltYXRlKSBpc0FuaW1hdGUgPSB0cnVlO2Vsc2UgaWYgKGFuaW1hdGUgPT09IHVuZGVmaW5lZCkgaXNBbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICB2YXIgY3VyQW5pYW10ZUNmZyA9IHt9O1xuICAgIGlmIChhbmltYXRlQ2ZnKSBjdXJBbmlhbXRlQ2ZnID0gYW5pbWF0ZUNmZztlbHNlIGlmIChhbmltYXRlQ2ZnID09PSB1bmRlZmluZWQpIGN1ckFuaWFtdGVDZmcgPSB0aGlzLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIHZpZXdDb250cm9sbGVyLmZvY3VzKGl0ZW0sIGlzQW5pbWF0ZSwgY3VyQW5pYW10ZUNmZyk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiHquWKqOmHjee7mFxuICAgKiBAaW50ZXJuYWwg5LuF5L6b5YaF6YOo5pu05paw5py65Yi26LCD55So77yM5aSW6YOo5qC55o2u6ZyA5rGC6LCD55SoIHJlbmRlciDmiJYgcGFpbnQg5o6l5Y+jXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYXV0b1BhaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmdldCgnYXV0b1BhaW50JykpIHtcbiAgICAgIHRoaXMucGFpbnQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDku4XnlLvluIPph43mlrDnu5jliLZcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wYWludCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmVtaXQoJ2JlZm9yZXBhaW50Jyk7XG4gICAgdGhpcy5nZXQoJ2NhbnZhcycpLmRyYXcoKTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVycGFpbnQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWxj+W5leWdkOagh+i9rOaNouS4uuinhuWPo+WdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2xpZW50WCDlsY/luZV45Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjbGllbnRZIOWxj+W5lXnlnZDmoIdcbiAgICogQHJldHVybiB7UG9pbnR9IOinhuWPo+WdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFBvaW50QnlDbGllbnQgPSBmdW5jdGlvbiAoY2xpZW50WCwgY2xpZW50WSkge1xuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IHRoaXMuZ2V0KCd2aWV3Q29udHJvbGxlcicpO1xuICAgIHJldHVybiB2aWV3Q29udHJvbGxlci5nZXRQb2ludEJ5Q2xpZW50KGNsaWVudFgsIGNsaWVudFkpO1xuICB9O1xuICAvKipcbiAgICog5bCG57uY5Yi25Z2Q5qCH6L2s5o2i5Li65bGP5bmV5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IOe7mOWItuWdkOaghyB4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOe7mOWItuWdkOaghyB5XG4gICAqIEByZXR1cm4ge1BvaW50fSDnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDbGllbnRCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2xpZW50QnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhueUu+W4g+WdkOagh+i9rOaNouS4uue7mOWItuWdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2FudmFzWCDnlLvluIMgeCDlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhbnZhc1kg55S75biDIHkg5Z2Q5qCHXG4gICAqIEByZXR1cm4ge29iamVjdH0g57uY5Yi25Z2Q5qCHXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgcmV0dXJuIHZpZXdDb250cm9sbGVyLmdldFBvaW50QnlDYW52YXMoY2FudmFzWCwgY2FudmFzWSk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbnu5jliLblnZDmoIfovazmjaLkuLrnlLvluIPlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg57uY5Yi25Z2Q5qCHIHhcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkg57uY5Yi25Z2Q5qCHIHlcbiAgICogQHJldHVybiB7b2JqZWN0fSDnlLvluIPlnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDYW52YXNCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2FudmFzQnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWbvuWGheWuueeahOS4reW/g+e7mOWItuWdkOagh1xuICAgKiBAcmV0dXJuIHtvYmplY3R9IOS4reW/g+e7mOWItuWdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEdyYXBoQ2VudGVyUG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnZ3JvdXAnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMixcbiAgICAgIHk6IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMlxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICogQHJldHVybiB7b2JqZWN0fSDop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRWaWV3UG9ydENlbnRlclBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldFBvaW50QnlDYW52YXModGhpcy5nZXQoJ3dpZHRoJykgLyAyLCB0aGlzLmdldCgnaGVpZ2h0JykgLyAyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYvuekuuWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zaG93SXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIHRydWUpO1xuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGlkID0gb2JqZWN0LmdldElEKCk7XG4gICAgICB2YXIgdHlwZSA9IG9iamVjdC5nZXRUeXBlKCk7XG4gICAgICB2YXIgYmVmb3JlID0ge307XG4gICAgICB2YXIgYWZ0ZXIgPSB7fTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29tYm8nOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3Zpc2libGUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOmakOiXj+WFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5oaWRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIGZhbHNlKTtcblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBpZCA9IG9iamVjdC5nZXRJRCgpO1xuICAgICAgdmFyIHR5cGUgPSBvYmplY3QuZ2V0VHlwZSgpO1xuICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuICAgICAgdmFyIGFmdGVyID0ge307XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYmVmb3JlLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd2aXNpYmxlJywge1xuICAgICAgICBiZWZvcmU6IGJlZm9yZSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDliLfmlrDlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVmcmVzaEl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLnJlZnJlc2hJdGVtKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5piv5ZCm5Zyo5pu05pawL+WIt+aWsOWQjuiHquWKqOmHjee7mFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG8g6Ieq5Yqo6YeN57uYXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0QXV0b1BhaW50ID0gZnVuY3Rpb24gKGF1dG8pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5zZXQoJ2F1dG9QYWludCcsIGF1dG8pO1xuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLnNldCgnYXV0b0RyYXcnLCBhdXRvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0sIHN0YWNrKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBub2RlSXRlbSA9IGl0ZW07XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBub2RlSXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG5cbiAgICBpZiAoIW5vZGVJdGVtICYmIGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtIHRvIGJlIHJlbW92ZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgfSBlbHNlIGlmIChub2RlSXRlbSkge1xuICAgICAgdmFyIHR5cGUgPSAnJztcbiAgICAgIGlmIChub2RlSXRlbS5nZXRUeXBlKSB0eXBlID0gbm9kZUl0ZW0uZ2V0VHlwZSgpOyAvLyDlsIbliKDpmaTnmoTlhYPntKDlhaXmoIhcblxuICAgICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgICB2YXIgZGVsZXRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGVJdGVtLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgaXRlbVR5cGU6IHR5cGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbZGVsZXRlZE1vZGVsXTtcbiAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzID0gW107XG4gICAgICAgICAgICAgIHZhciBlZGdlcyA9IG5vZGVJdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGVkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzLnB1c2goX19hc3NpZ24oX19hc3NpZ24oe30sIGVkZ2VzW2ldLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogJ2VkZ2UnXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICAgIGJlZm9yZS5lZGdlcyA9IFtkZWxldGVkTW9kZWxdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgICAgICBiZWZvcmUuY29tYm9zID0gW2RlbGV0ZWRNb2RlbF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHVzaFN0YWNrKCdkZWxldGUnLCB7XG4gICAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgICAgYWZ0ZXI6IHt9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGVJdGVtLmdldE1vZGVsKCk7IC8vIOWmguaenOWIoOmZpOeahOaYr+iKgueCue+8jOS4lOivpeiKgueCueWtmOWcqOS6juafkOS4qiBDb21ibyDkuK3vvIzliJnpnIDopoHlhYjlsIYgbm9kZSDku44gY29tYm8g5Lit56e76Zmk77yM5ZCm5YiZ5Yig6Zmk6IqC54K55ZCO77yM5pON5L2cIGNvbWJvIOS8muWHuumUmVxuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb21ib1RyZWUobm9kZUl0ZW0sIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgICAgaXRlbUNvbnRyb2xsZXIucmVtb3ZlSXRlbShub2RlSXRlbSk7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICAgIHZhciBuZXdDb21ib1RyZWVzID0gcmVjb25zdHJ1Y3RUcmVlKHRoaXMuZ2V0KCdjb21ib1RyZWVzJykpO1xuICAgICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIG5ld0NvbWJvVHJlZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UpXG4gICAqIEBwYXJhbSB7TW9kZWxDb25maWd9IG1vZGVsIOWFg+e0oOaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc29ydENvbWJvIOacrOasoeaTjeS9nOaYr+WQpumcgOimgeabtOaWsCBjb21ibyDlsYLnuqfpobrluo/vvIzlhoXpg6jlj4LmlbDvvIznlKjmiLflnKjlpJbpg6jkvb/nlKggYWRkSXRlbSDml7blp4vnu4jml7bpnIDopoHmm7TmlrBcbiAgICogQHJldHVybiB7SXRlbX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNvcnRDb21ibyA9PT0gdm9pZCAwKSB7XG4gICAgICBzb3J0Q29tYm8gPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Q29tYm9Tb3J0ZWQgPSB0aGlzLmdldCgnY29tYm9Tb3J0ZWQnKTtcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBjdXJyZW50Q29tYm9Tb3J0ZWQgJiYgIXNvcnRDb21ibyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7IC8vIOa3u+WKoOiKgueCueOAgei+ueaIlmNvbWJv5LmL5YmN77yM5YWI6aqM6K+B5pWw5o2u5piv5ZCm56ym5ZCI6KeE6IyDXG5cbiAgICBpZiAoIXNpbmdsZURhdGFWYWxpZGF0aW9uKHR5cGUsIG1vZGVsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChtb2RlbC5pZCAmJiB0aGlzLmZpbmRCeUlkKG1vZGVsLmlkKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiVGhpcyBpdGVtIGV4aXN0cyBhbHJlYWR5LiBCZSBzdXJlIHRoZSBpZCAlY1wiICsgbW9kZWwuaWQgKyBcIiVjIGlzIHVuaXF1ZS5cIiwgJ2ZvbnQtc2l6ZTogMjBweDsgY29sb3I6IHJlZDsnLCAnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW07XG4gICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgIGlmICghY29tYm9UcmVlcykgY29tYm9UcmVlcyA9IFtdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIHZhciBpdGVtTWFwXzEgPSB0aGlzLmdldCgnaXRlbU1hcCcpO1xuICAgICAgdmFyIGZvdW5kUGFyZW50XzEgPSBmYWxzZTtcbiAgICAgIGNvbWJvVHJlZXMuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kUGFyZW50XzEpIHJldHVybjsgLy8gdGVybWluYXRlIHRoZSBmb3JFYWNoIGFmdGVyIHRoZSB0cmVlIGNvbnRhaW5pbmcgdGhlIGl0ZW0gaXMgZG9uZVxuXG4gICAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAvLyBmaW5kIHRoZSBwYXJlbnRcbiAgICAgICAgICBpZiAobW9kZWwucGFyZW50SWQgPT09IGNoaWxkLmlkKSB7XG4gICAgICAgICAgICBmb3VuZFBhcmVudF8xID0gdHJ1ZTtcblxuICAgICAgICAgICAgdmFyIG5ld0NvbWJvID0gX19hc3NpZ24oe1xuICAgICAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgICAgIGRlcHRoOiBjaGlsZC5kZXB0aCArIDJcbiAgICAgICAgICAgIH0sIG1vZGVsKTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSBjaGlsZC5jaGlsZHJlbi5wdXNoKG5ld0NvbWJvKTtlbHNlIGNoaWxkLmNoaWxkcmVuID0gW25ld0NvbWJvXTtcbiAgICAgICAgICAgIG1vZGVsLmRlcHRoID0gbmV3Q29tYm8uZGVwdGg7XG4gICAgICAgICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGl0ZW1NYXBfMVtjaGlsZC5pZF07IC8vIGFmdGVyIHRoZSBwYXJlbnQgaXMgZm91bmQsIHVwZGF0ZSBhbGwgdGhlIGFuY2VzdG9yc1xuXG4gICAgICAgICAgaWYgKGZvdW5kUGFyZW50XzEgJiYgY2hpbGRJdGVtICYmIGNoaWxkSXRlbS5nZXRUeXBlICYmIGNoaWxkSXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAgIGl0ZW1Db250cm9sbGVyLnVwZGF0ZUNvbWJvKGNoaWxkSXRlbSwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pOyAvLyBpZiB0aGUgcGFyZW50IGlzIG5vdCBmb3VuZCwgYWRkIGl0IHRvIHRoZSByb290XG5cbiAgICAgIGlmICghZm91bmRQYXJlbnRfMSkge1xuICAgICAgICB2YXIgbmV3Q29tYm8gPSBfX2Fzc2lnbih7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIGRlcHRoOiAwXG4gICAgICAgIH0sIG1vZGVsKTtcblxuICAgICAgICBtb2RlbC5kZXB0aCA9IG5ld0NvbWJvLmRlcHRoO1xuICAgICAgICBjb21ib1RyZWVzLnB1c2gobmV3Q29tYm8pO1xuICAgICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0KCdjb21ib1RyZWVzJywgY29tYm9UcmVlcyk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbm9kZScgJiYgaXNTdHJpbmcobW9kZWwuY29tYm9JZCkgJiYgY29tYm9UcmVlcykge1xuICAgICAgdmFyIHBhcmVudENvbWJvID0gdGhpcy5maW5kQnlJZChtb2RlbC5jb21ib0lkKTtcblxuICAgICAgaWYgKHBhcmVudENvbWJvICYmIHBhcmVudENvbWJvLmdldFR5cGUgJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSgpICE9PSAnY29tYm8nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIidcIiArIG1vZGVsLmNvbWJvSWQgKyBcIicgaXMgbm90IGEgaWQgb2YgYSBjb21ibyBpbiB0aGUgZ3JhcGgsIHRoZSBub2RlIHdpbGwgYmUgYWRkZWQgd2l0aG91dCBjb21iby5cIik7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICAgIHZhciBpdGVtTWFwXzIgPSB0aGlzLmdldCgnaXRlbU1hcCcpO1xuICAgICAgdmFyIGZvdW5kUGFyZW50XzIgPSBmYWxzZSxcbiAgICAgICAgICBmb3VuZE5vZGVfMSA9IGZhbHNlO1xuICAgICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICAgIGlmIChmb3VuZE5vZGVfMSB8fCBmb3VuZFBhcmVudF8yKSByZXR1cm47IC8vIHRlcm1pbmF0ZSB0aGUgZm9yRWFjaFxuXG4gICAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICBpZiAoY2hpbGQuaWQgPT09IG1vZGVsLmlkKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgaXRlbSBleGlzdHMgaW4gdGhlIHRyZWUgYWxyZWFkeSwgdGVybWluYXRlXG4gICAgICAgICAgICBmb3VuZE5vZGVfMSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1vZGVsLmNvbWJvSWQgPT09IGNoaWxkLmlkICYmICFmb3VuZE5vZGVfMSkge1xuICAgICAgICAgICAgLy8gZm91bmQgdGhlIHBhcmVudCwgYWRkIHRoZSBpdGVtIHRvIHRoZSBjaGlsZHJlbiBvZiBpdHMgcGFyZW50IGluIHRoZSB0cmVlXG4gICAgICAgICAgICBmb3VuZFBhcmVudF8yID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBjbG9uZU5vZGUgPSBjbG9uZShtb2RlbCk7XG4gICAgICAgICAgICBjbG9uZU5vZGUuaXRlbVR5cGUgPSAnbm9kZSc7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIGNoaWxkLmNoaWxkcmVuLnB1c2goY2xvbmVOb2RlKTtlbHNlIGNoaWxkLmNoaWxkcmVuID0gW2Nsb25lTm9kZV07XG4gICAgICAgICAgICBjbG9uZU5vZGUuZGVwdGggPSBjaGlsZC5kZXB0aCArIDE7XG4gICAgICAgICAgfSAvLyB1cGRhdGUgdGhlIHNpemUgb2YgYWxsIHRoZSBhbmNlc3RvcnNcblxuXG4gICAgICAgICAgaWYgKGZvdW5kUGFyZW50XzIgJiYgaXRlbU1hcF8yW2NoaWxkLmlkXS5nZXRUeXBlICYmIGl0ZW1NYXBfMltjaGlsZC5pZF0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgICBpdGVtQ29udHJvbGxlci51cGRhdGVDb21ibyhpdGVtTWFwXzJbY2hpbGQuaWRdLCBjaGlsZC5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ25vZGUnICYmIG1vZGVsLmNvbWJvSWQgfHwgdHlwZSA9PT0gJ2NvbWJvJyAmJiBtb2RlbC5wYXJlbnRJZCkge1xuICAgICAgLy8gYWRkIHRoZSBjb21ibyB0byB0aGUgcGFyZW50J3MgY2hpbGRyZW4gYXJyYXlcbiAgICAgIHZhciBwYXJlbnRDb21ibyA9IHRoaXMuZmluZEJ5SWQobW9kZWwuY29tYm9JZCB8fCBtb2RlbC5wYXJlbnRJZCk7XG4gICAgICBpZiAocGFyZW50Q29tYm8gJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSAmJiBwYXJlbnRDb21iby5nZXRUeXBlKCkgPT09ICdjb21ibycpIHBhcmVudENvbWJvLmFkZENoaWxkKGl0ZW0pO1xuICAgIH1cblxuICAgIHZhciBjb21ib3MgPSB0aGlzLmdldCgnY29tYm9zJyk7XG5cbiAgICBpZiAoY29tYm9zICYmIGNvbWJvcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9QYWludCgpO1xuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGFkZGVkTW9kZWwgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaXRlbS5nZXRNb2RlbCgpKSwge1xuICAgICAgICBpdGVtVHlwZTogdHlwZVxuICAgICAgfSk7XG5cbiAgICAgIHZhciBhZnRlciA9IHt9O1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgYWZ0ZXIubm9kZXMgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYWZ0ZXIuZWRnZXMgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29tYm8nOlxuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFthZGRlZE1vZGVsXTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnB1c2hTdGFjaygnYWRkJywge1xuICAgICAgICBiZWZvcmU6IHt9LFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9O1xuICAvKipcbiAgICog5paw5aKe5YWD57SgXG4gICAqIEBwYXJhbSB7SVRFTV9UWVBFfSB0eXBlIOWFg+e0oOexu+Weiyhub2RlIHwgZWRnZSlcbiAgICogQHBhcmFtIHtNb2RlbENvbmZpZ30gbW9kZWwg5YWD57Sg5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICogQHJldHVybiB7SXRlbX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVsLCBzdGFjaywgc29ydENvbWJvKSB7XG4gICAgaWYgKHN0YWNrID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc29ydENvbWJvID09PSB2b2lkIDApIHtcbiAgICAgIHNvcnRDb21ibyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkSXRlbSh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibyk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDlhYPntKBcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqIEBwYXJhbSB7UGFydGlhbDxOb2RlQ29uZmlnPiB8IEVkZ2VDb25maWd9IGNmZyDpnIDopoHmm7TmlrDnmoTmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVJdGVtID0gZnVuY3Rpb24gKGl0ZW0sIGNmZywgc3RhY2spIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKHN0YWNrID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICB2YXIgY3VycmVudEl0ZW07XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGN1cnJlbnRJdGVtID0gdGhpcy5maW5kQnlJZChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEl0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIHZhciBVbnVwZGF0ZU1vZGVsID0gY2xvbmUoY3VycmVudEl0ZW0uZ2V0TW9kZWwoKSk7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoY3VycmVudEl0ZW0uZ2V0VHlwZSkgdHlwZSA9IGN1cnJlbnRJdGVtLmdldFR5cGUoKTtcblxuICAgIHZhciBzdGF0ZXMgPSBfX3NwcmVhZEFycmF5KFtdLCBjdXJyZW50SXRlbS5nZXRTdGF0ZXMoKSwgdHJ1ZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc2V0SXRlbVN0YXRlKGN1cnJlbnRJdGVtLCBzdGF0ZSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlSXRlbShjdXJyZW50SXRlbSwgY2ZnKTtcblxuICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICBlYWNoKHN0YXRlcywgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5zZXRJdGVtU3RhdGUoY3VycmVudEl0ZW0sIHN0YXRlLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBiZWZvcmUgPSB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdLFxuICAgICAgICBjb21ib3M6IFtdXG4gICAgICB9O1xuICAgICAgdmFyIGFmdGVyID0ge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgY29tYm9zOiBbXVxuICAgICAgfTtcblxuICAgICAgdmFyIGFmdGVyTW9kZWwgPSBfX2Fzc2lnbih7XG4gICAgICAgIGlkOiBVbnVwZGF0ZU1vZGVsLmlkXG4gICAgICB9LCBjZmcpO1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgYmVmb3JlLm5vZGVzLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICAgICAgYWZ0ZXIubm9kZXMucHVzaChhZnRlck1vZGVsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICBiZWZvcmUuZWRnZXMucHVzaChVbnVwZGF0ZU1vZGVsKTtcbiAgICAgICAgICBhZnRlci5lZGdlcy5wdXNoKGFmdGVyTW9kZWwpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBiZWZvcmUuY29tYm9zLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICAgICAgYWZ0ZXIuY29tYm9zLnB1c2goYWZ0ZXJNb2RlbCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgICBiZWZvcmUubm9kZXMucHVzaChVbnVwZGF0ZU1vZGVsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3VwZGF0ZScsIHtcbiAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgIGFmdGVyOiBhZnRlclxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05paw5YWD57SgXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge1BhcnRpYWw8Tm9kZUNvbmZpZz4gfCBFZGdlQ29uZmlnfSBjZmcg6ZyA6KaB5pu05paw55qE5pWw5o2uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaXRlbSwgY2ZnLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVJdGVtKGl0ZW0sIGNmZywgc3RhY2spO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5YWD57Sg54q25oCBXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUg54q25oCB5ZCN56ewXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgYm9vbGVhbn0gdmFsdWUg5piv5ZCm5ZCv55So54q25oCBIOaIliDnirbmgIHlgLxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRJdGVtU3RhdGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gdGhpcy5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICBpdGVtQ29udHJvbGxlci5zZXRJdGVtU3RhdGUoaXRlbSwgc3RhdGUsIHZhbHVlKTtcbiAgICB2YXIgc3RhdGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpO1xuXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgc3RhdGVDb250cm9sbGVyLnVwZGF0ZVN0YXRlKGl0ZW0sIHN0YXRlICsgXCI6XCIgKyB2YWx1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlQ29udHJvbGxlci51cGRhdGVTdGF0ZShpdGVtLCBzdGF0ZSwgdmFsdWUpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumueKtuaAgeeahOS8mOWFiOe6p+aPkOWNh+S4uuacgOmrmOS8mOWFiOe6p1xuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHN0YXRlIOeKtuaAgeWQjeensFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnByaW9yaXR5U3RhdGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUpIHtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICBpdGVtQ29udHJvbGxlci5wcmlvcml0eVN0YXRlKGl0ZW0sIHN0YXRlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruinhuWbvuWIneWni+WMluaVsOaNrlxuICAgKiBAcGFyYW0ge0dyYXBoRGF0YX0gZGF0YSDliJ3lp4vljJbmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5kYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkYXRhVmFsaWRhdGlvbihkYXRhKTtcbiAgICB0aGlzLnNldCgnZGF0YScsIGRhdGEpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uZGF0YeaOpeWPo+eahOaVsOaNrua4suafk+inhuWbvlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpO1xuICAgIHZhciBkYXRhID0gdGhpcy5nZXQoJ2RhdGEnKTtcblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIC8vIHJlbmRlciDkuYvliY3muIXnqbogcmVkbyDlkowgdW5kbyDmoIhcbiAgICAgIHRoaXMuY2xlYXJTdGFjaygpO1xuICAgIH1cblxuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG11c3QgYmUgZGVmaW5lZCBmaXJzdCcpO1xuICAgIH1cblxuICAgIHZhciBfYSA9IGRhdGEubm9kZXMsXG4gICAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICAgIF9iID0gZGF0YS5lZGdlcyxcbiAgICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYixcbiAgICAgICAgX2MgPSBkYXRhLmNvbWJvcyxcbiAgICAgICAgY29tYm9zID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2M7XG4gICAgdGhpcy5jbGVhcih0cnVlKTtcbiAgICB0aGlzLmVtaXQoJ2JlZm9yZXJlbmRlcicpO1xuICAgIGVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBzZWxmLmFkZCgnbm9kZScsIG5vZGUsIGZhbHNlLCBmYWxzZSk7XG4gICAgfSk7IC8vIHByb2Nlc3MgdGhlIGRhdGEgdG8gdHJlZSBzdHJ1Y3R1cmVcblxuICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSBwbGFpbkNvbWJvc1RvVHJlZXMoY29tYm9zLCBub2Rlcyk7XG4gICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIGNvbWJvVHJlZXMpOyAvLyBhZGQgY29tYm9zXG5cbiAgICAgIHNlbGYuYWRkQ29tYm9zKGNvbWJvcyk7XG4gICAgfVxuXG4gICAgZWFjaChlZGdlcywgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHNlbGYuYWRkKCdlZGdlJywgZWRnZSwgZmFsc2UsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB2YXIgYW5pbWF0ZSA9IHNlbGYuZ2V0KCdhbmltYXRlJyk7XG5cbiAgICBpZiAoc2VsZi5nZXQoJ2ZpdFZpZXcnKSB8fCBzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgIHNlbGYuc2V0KCdhbmltYXRlJywgZmFsc2UpO1xuICAgIH0gLy8gbGF5b3V0XG5cblxuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gc2VsZi5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyKSB7XG4gICAgICBsYXlvdXRDb250cm9sbGVyLmxheW91dChzdWNjZXNzKTtcbiAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2VsZi5nZXQoJ2ZpdFZpZXcnKSkge1xuICAgICAgICBzZWxmLmZpdFZpZXcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRDZW50ZXInKSkge1xuICAgICAgICBzZWxmLmZpdENlbnRlcigpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmVtaXQoJ2FmdGVycmVuZGVyJyk7XG4gICAgICBzZWxmLnNldCgnYW5pbWF0ZScsIGFuaW1hdGUpO1xuICAgIH0gLy8g5bCG5ZyoIG9uTGF5b3V0RW5kIOS4reiiq+iwg+eUqFxuXG5cbiAgICBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgLy8gZml0VmlldyDkuI4gZml0Q2VudGVyIOWFseWtmOaXtu+8jGZpdFZpZXcg5LyY5YWI77yMZml0Q2VudGVyIOS4jeWGjeaJp+ihjFxuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykpIHtcbiAgICAgICAgc2VsZi5maXRWaWV3KCk7XG4gICAgICB9IGVsc2UgaWYgKHNlbGYuZ2V0KCdmaXRDZW50ZXInKSkge1xuICAgICAgICBzZWxmLmZpdENlbnRlcigpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmF1dG9QYWludCgpO1xuICAgICAgc2VsZi5lbWl0KCdhZnRlcnJlbmRlcicpO1xuXG4gICAgICBpZiAoc2VsZi5nZXQoJ2ZpdFZpZXcnKSB8fCBzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgICAgc2VsZi5zZXQoJ2FuaW1hdGUnLCBhbmltYXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZ2V0KCdncm91cEJ5VHlwZXMnKSkge1xuICAgICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHRoaXMuc29ydENvbWJvcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5Li65o+Q5Y2H5oCn6IO977yM6YCJ5oup5pWw6YeP5bCR55qE6L+b6KGM5pON5L2cXG4gICAgICAgIGlmIChkYXRhLm5vZGVzICYmIGRhdGEuZWRnZXMgJiYgZGF0YS5ub2Rlcy5sZW5ndGggPCBkYXRhLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBub2Rlc0FyciA9IHRoaXMuZ2V0Tm9kZXMoKTsgLy8g6YGN5Y6G6IqC54K55a6e5L6L77yM5bCG5omA5pyJ6IqC54K55o+Q5YmN44CCXG5cbiAgICAgICAgICBub2Rlc0Fyci5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICBub2RlLnRvRnJvbnQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZWRnZXNBcnIgPSB0aGlzLmdldEVkZ2VzKCk7IC8vIOmBjeWOhuiKgueCueWunuS+i++8jOWwhuaJgOacieiKgueCueaPkOWJjeOAglxuXG4gICAgICAgICAgZWRnZXNBcnIuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgZWRnZS50b0JhY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrKCdyZW5kZXInKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmjqXmlLbmlbDmja7ov5vooYzmuLLmn5NcbiAgICogQFBhcmFtIHtPYmplY3R9IGRhdGEg5Yid5aeL5YyW5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhpcy5kYXRhKGRhdGEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH07IC8vIOavlOi+g2l0ZW1cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmRpZmZJdGVtcyA9IGZ1bmN0aW9uICh0eXBlLCBpdGVtcywgbW9kZWxzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpdGVtO1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICBlYWNoKG1vZGVscywgZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICBpdGVtID0gaXRlbU1hcFttb2RlbC5pZF07XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGlmIChzZWxmLmdldCgnYW5pbWF0ZScpICYmIHR5cGUgPT09IE5PREUpIHtcbiAgICAgICAgICB2YXIgY29udGFpbmVyTWF0cml4ID0gaXRlbS5nZXRDb250YWluZXIoKS5nZXRNYXRyaXgoKTtcbiAgICAgICAgICBpZiAoIWNvbnRhaW5lck1hdHJpeCkgY29udGFpbmVyTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgICAgIGl0ZW0uc2V0KCdvcmlnaW5BdHRycycsIHtcbiAgICAgICAgICAgIHg6IGNvbnRhaW5lck1hdHJpeFs2XSxcbiAgICAgICAgICAgIHk6IGNvbnRhaW5lck1hdHJpeFs3XVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi51cGRhdGVJdGVtKGl0ZW0sIG1vZGVsLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2VsZi5hZGRJdGVtKHR5cGUsIG1vZGVsLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtKSBpdGVtc1t0eXBlICsgXCJzXCJdLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnmupDmlbDmja7vvIzmoLnmja7mlrDmlbDmja7ph43mlrDmuLLmn5Pop4blm75cbiAgICogQHBhcmFtIHtHcmFwaERhdGEgfCBUcmVlR3JhcGhEYXRhfSBkYXRhIOa6kOaVsOaNrlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IOaYr+WQpuWFpeagiO+8jOm7mOiupOS4unRydWVcbiAgICogQHJldHVybiB7b2JqZWN0fSB0aGlzXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2hhbmdlRGF0YSA9IGZ1bmN0aW9uIChkYXRhLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKCFkYXRhVmFsaWRhdGlvbihkYXRhKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdGhpcy5wdXNoU3RhY2soJ2NoYW5nZWRhdGEnLCB7XG4gICAgICAgIGJlZm9yZTogc2VsZi5zYXZlKCksXG4gICAgICAgIGFmdGVyOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7IC8vIOWIoOmZpCBodWxsc1xuXG4gICAgdGhpcy5yZW1vdmVIdWxscygpOyAvLyDmm7TmlLnmlbDmja7mupDlkI7vvIzlj5bmtojmiYDmnInnirbmgIFcblxuICAgIHRoaXMuZ2V0Tm9kZXMoKS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBzZWxmLmNsZWFySXRlbVN0YXRlcyhub2RlKTtcbiAgICB9KTtcbiAgICB0aGlzLmdldEVkZ2VzKCkubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gc2VsZi5jbGVhckl0ZW1TdGF0ZXMoZWRnZSk7XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgbG9jYWxSZWZyZXNoID0gY2FudmFzLmdldCgnbG9jYWxSZWZyZXNoJyk7XG4gICAgY2FudmFzLnNldCgnbG9jYWxSZWZyZXNoJywgZmFsc2UpO1xuXG4gICAgaWYgKCFzZWxmLmdldCgnZGF0YScpKSB7XG4gICAgICBzZWxmLmRhdGEoZGF0YSk7XG4gICAgICBzZWxmLnJlbmRlcigpO1xuICAgIH1cblxuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICB2YXIgaXRlbXMgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIHZhciBjb21ib3NEYXRhID0gZGF0YS5jb21ib3M7XG5cbiAgICBpZiAoY29tYm9zRGF0YSkge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSBwbGFpbkNvbWJvc1RvVHJlZXMoY29tYm9zRGF0YSwgZGF0YS5ub2Rlcyk7XG4gICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIGNvbWJvVHJlZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIFtdKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpZmZJdGVtcygnbm9kZScsIGl0ZW1zLCBkYXRhLm5vZGVzKTtcbiAgICBlYWNoKGl0ZW1NYXAsIGZ1bmN0aW9uIChpdGVtLCBpZCkge1xuICAgICAgaXRlbU1hcFtpZF0uZ2V0TW9kZWwoKS5kZXB0aCA9IDA7XG4gICAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnZWRnZScpIHJldHVybjtcblxuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICBkZWxldGUgaXRlbU1hcFtpZF07XG4gICAgICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIGlmIChpdGVtcy5ub2Rlcy5pbmRleE9mKGl0ZW0pIDwgMCkge1xuICAgICAgICBkZWxldGUgaXRlbU1hcFtpZF07XG4gICAgICAgIHNlbGYucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gY2xlYXIgdGhlIGRlc3Ryb3llZCBjb21ib3MgaGVyZSB0byBhdm9pZCByZW1vdmluZyBzdWIgbm9kZXMgYmVmb3JlIHJlbW92aW5nIHRoZSBwYXJlbnQgY29tYm9cblxuICAgIHZhciBjb21ib0l0ZW1zID0gdGhpcy5nZXRDb21ib3MoKTtcbiAgICB2YXIgY29tYm9zTGVuZ3RoID0gY29tYm9JdGVtcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gY29tYm9zTGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChjb21ib0l0ZW1zW2ldLmRlc3Ryb3llZCkge1xuICAgICAgICBjb21ib0l0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9IC8vIHByb2Nlc3MgdGhlIGRhdGEgdG8gdHJlZSBzdHJ1Y3R1cmVcblxuXG4gICAgaWYgKGNvbWJvc0RhdGEpIHtcbiAgICAgIC8vIGFkZCBjb21ib3NcbiAgICAgIHNlbGYuYWRkQ29tYm9zKGNvbWJvc0RhdGEpO1xuXG4gICAgICBpZiAoIXRoaXMuZ2V0KCdncm91cEJ5VHlwZXMnKSkge1xuICAgICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRpZmZJdGVtcygnZWRnZScsIGl0ZW1zLCBkYXRhLmVkZ2VzKTtcbiAgICBlYWNoKGl0ZW1NYXAsIGZ1bmN0aW9uIChpdGVtLCBpZCkge1xuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiAoaXRlbS5nZXRUeXBlKCkgPT09ICdub2RlJyB8fCBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykpIHJldHVybjtcblxuICAgICAgaWYgKGl0ZW1zLmVkZ2VzLmluZGV4T2YoaXRlbSkgPCAwKSB7XG4gICAgICAgIGRlbGV0ZSBpdGVtTWFwW2lkXTtcbiAgICAgICAgc2VsZi5yZW1vdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIG5vZGVzOiBpdGVtcy5ub2RlcyxcbiAgICAgIGVkZ2VzOiBpdGVtcy5lZGdlc1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyKSB7XG4gICAgICBsYXlvdXRDb250cm9sbGVyLmNoYW5nZURhdGEoKTtcblxuICAgICAgaWYgKHNlbGYuZ2V0KCdhbmltYXRlJykgJiYgIWxheW91dENvbnRyb2xsZXIuZ2V0TGF5b3V0VHlwZSgpKSB7XG4gICAgICAgIC8vIOWmguaenOayoeacieaMh+WumuW4g+WxgFxuICAgICAgICBzZWxmLnBvc2l0aW9uc0FuaW1hdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuYXV0b1BhaW50KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBjYW52YXMuc2V0KCdsb2NhbFJlZnJlc2gnLCBsb2NhbFJlZnJlc2gpO1xuICAgIH0sIDE2KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOengeacieaWueazle+8jOWcqCByZW5kZXIg5ZKMIGNoYW5nZURhdGEg55qE5pe25YCZ5om56YeP5re75Yqg5pWw5o2u5Lit5omA5pyJ5bmz6ZO655qEIGNvbWJvc1xuICAgKiBAcGFyYW0ge0NvbWJvQ29uZmlnW119IGNvbWJvcyDlubPpk7rnmoQgY29tYm9zIOaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmFkZENvbWJvcyA9IGZ1bmN0aW9uIChjb21ib3MpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvVHJlZXMgPSBzZWxmLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLmFkZENvbWJvcyhjb21ib1RyZWVzLCBjb21ib3MpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2u5bey57uP5a2Y5Zyo55qE6IqC54K55oiWIGNvbWJvIOWIm+W7uuaWsOeahCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gY29tYm8gSUQg5oiWIENvbWJvIOmFjee9rlxuICAgKiBAcGFyYW0gY2hpbGRyZW4g5re75Yqg5YiwIENvbWJvIOS4reeahOWFg+e0oO+8jOWMheaLrOiKgueCueWSjCBjb21ib1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNyZWF0ZUNvbWJvID0gZnVuY3Rpb24gKGNvbWJvLCBjaGlsZHJlbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7IC8vIHN0ZXAgMTog5Yib5bu65paw55qEIENvbWJvXG5cbiAgICB2YXIgY29tYm9JZCA9ICcnO1xuICAgIHZhciBjb21ib0NvbmZpZztcbiAgICBpZiAoIWNvbWJvKSByZXR1cm47XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ib0lkID0gY29tYm87XG4gICAgICBjb21ib0NvbmZpZyA9IHtcbiAgICAgICAgaWQ6IGNvbWJvXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21ib0lkID0gY29tYm8uaWQ7XG5cbiAgICAgIGlmICghY29tYm9JZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0NyZWF0ZSBjb21ibyBmYWlsZWQuIFBsZWFzZSBhc3NpZ24gYSB1bmlxdWUgc3RyaW5nIGlkIGZvciB0aGUgYWRkaW5nIGNvbWJvLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbWJvQ29uZmlnID0gY29tYm87XG4gICAgfSAvLyBzdGVwMjog5pu05pawIGNoaWxkcmVu77yM5qC55o2u57G75Z6L5re75YqgIGNvbWJvSWQg5oiWIHBhcmVudElkXG5cblxuICAgIHZhciB0cmVlcyA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbmRCeUlkKGVsZW1lbnRJZCk7XG5cbiAgICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIHZhciB0eXBlID0gJyc7XG4gICAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgICB2YXIgY0l0ZW0gPSB7XG4gICAgICAgIGlkOiBpdGVtLmdldElEKCksXG4gICAgICAgIGl0ZW1UeXBlOiB0eXBlXG4gICAgICB9O1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICBjSXRlbS5wYXJlbnRJZCA9IGNvbWJvSWQ7XG4gICAgICAgIG1vZGVsLnBhcmVudElkID0gY29tYm9JZDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIGNJdGVtLmNvbWJvSWQgPSBjb21ib0lkO1xuICAgICAgICBtb2RlbC5jb21ib0lkID0gY29tYm9JZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNJdGVtO1xuICAgIH0pO1xuICAgIGNvbWJvQ29uZmlnLmNoaWxkcmVuID0gdHJlZXM7IC8vIHN0ZXAgMzog5re75YqgIENvbWJv77yMYWRkSXRlbSDml7bkvJrlsIblrZDlsIblhYPntKDmt7vliqDliLAgQ29tYm8g5LitXG5cbiAgICB0aGlzLmFkZEl0ZW0oJ2NvbWJvJywgY29tYm9Db25maWcsIGZhbHNlKTtcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7IC8vIHN0ZXA0OiDmm7TmlrAgY29tYm9UcmVlcyDnu5PmnoRcblxuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKGNoaWxkLmlkID09PSBjb21ib0lkKSB7XG4gICAgICAgICAgY2hpbGQuaXRlbVR5cGUgPSAnY29tYm8nO1xuICAgICAgICAgIGNoaWxkLmNoaWxkcmVuID0gdHJlZXM7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChjb21ib1RyZWVzKSB7XG4gICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDop6PmlaMgY29tYm9cbiAgICogQHBhcmFtIHtTdHJpbmcgfCBJTm9kZSB8IElDb21ib30gY29tYm8g6ZyA6KaB6KKr6Kej5pWj55qEIENvbWJvIGl0ZW0g5oiWIGlkXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudW5jb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvSXRlbSA9IGNvbWJvO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm9JdGVtID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ib0l0ZW0gfHwgY29tYm9JdGVtLmdldFR5cGUgJiYgY29tYm9JdGVtLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykge1xuICAgICAgY29uc29sZS53YXJuKCdUaGUgaXRlbSBpcyBub3QgYSBjb21ibyEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50SWQgPSBjb21ib0l0ZW0uZ2V0TW9kZWwoKS5wYXJlbnRJZDtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHNlbGYuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgaWYgKCFjb21ib1RyZWVzKSBjb21ib1RyZWVzID0gW107XG4gICAgdmFyIGl0ZW1NYXAgPSB0aGlzLmdldCgnaXRlbU1hcCcpO1xuICAgIHZhciBjb21ib0lkID0gY29tYm9JdGVtLmdldCgnaWQnKTtcbiAgICB2YXIgdHJlZVRvQmVVbmNvbWJvO1xuICAgIHZhciBicm90aGVycyA9IFtdO1xuICAgIHZhciBjb21ib0l0ZW1zID0gdGhpcy5nZXQoJ2NvbWJvcycpO1xuICAgIHZhciBwYXJlbnRJdGVtID0gdGhpcy5maW5kQnlJZChwYXJlbnRJZCk7XG4gICAgY29tYm9UcmVlcy5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgaWYgKHRyZWVUb0JlVW5jb21ibykgcmV0dXJuOyAvLyB0ZXJtaW5hdGUgdGhlIGZvckVhY2hcblxuICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChzdWJ0cmVlKSB7XG4gICAgICAgIHZhciBfYTsgLy8gZmluZCB0aGUgY29tYm8gdG8gYmUgdW5jb21ib2VkLCBkZWxldGUgdGhlIGNvbWJvIGZyb20gbWFwIGFuZCBjYWNoZVxuXG5cbiAgICAgICAgaWYgKHN1YnRyZWUuaWQgPT09IGNvbWJvSWQpIHtcbiAgICAgICAgICB0cmVlVG9CZVVuY29tYm8gPSBzdWJ0cmVlOyAvLyBkZWxldGUgdGhlIHJlbGF0ZWQgZWRnZXNcblxuICAgICAgICAgIHZhciBlZGdlcyA9IGNvbWJvSXRlbS5nZXRFZGdlcygpO1xuICAgICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhciBpbmRleCA9IGNvbWJvSXRlbXMuaW5kZXhPZihjb21ib0l0ZW0pO1xuICAgICAgICAgIGNvbWJvSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICBkZWxldGUgaXRlbU1hcFtjb21ib0lkXTtcbiAgICAgICAgICBjb21ib0l0ZW0uZGVzdHJveSgpO1xuXG4gICAgICAgICAgX3RoaXMuZW1pdCgnYWZ0ZXJyZW1vdmVpdGVtJywge1xuICAgICAgICAgICAgaXRlbTogY29tYm9JdGVtLFxuICAgICAgICAgICAgdHlwZTogJ2NvbWJvJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IC8vIGZpbmQgdGhlIHBhcmVudCB0byByZW1vdmUgdGhlIGNvbWJvIGZyb20gdGhlIGNvbWJvJ3MgYnJvdGhlcnMgYXJyYXkgYW5kIGFkZCB0aGUgY29tYm8ncyBjaGlsZHJlbiB0byB0aGUgY29tYm8ncyBicm90aGVycyBhcnJheSBpbiB0aGUgdHJlZVxuXG5cbiAgICAgICAgaWYgKHBhcmVudElkICYmIHRyZWVUb0JlVW5jb21ibyAmJiBzdWJ0cmVlLmlkID09PSBwYXJlbnRJZCkge1xuICAgICAgICAgIHBhcmVudEl0ZW0ucmVtb3ZlQ29tYm8oY29tYm9JdGVtKTtcbiAgICAgICAgICBicm90aGVycyA9IHN1YnRyZWUuY2hpbGRyZW47IC8vIHRoZSBjb21ibydzIGJyb3RoZXJzXG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBjb21ibyBmcm9tIGl0cyBicm90aGVycyBhcnJheVxuXG4gICAgICAgICAgdmFyIGluZGV4ID0gYnJvdGhlcnMuaW5kZXhPZih0cmVlVG9CZVVuY29tYm8pO1xuXG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgYnJvdGhlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9IC8vIGFwcGVuZCB0aGUgY29tYm8ncyBjaGlsZHJlbiB0byB0aGUgY29tYm8ncyBicm90aGVycyBhcnJheVxuXG5cbiAgICAgICAgICAoX2EgPSB0cmVlVG9CZVVuY29tYm8uY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChjaGlsZC5pZCk7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgICAgIGNoaWxkLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZC5jb21ib0lkO1xuICAgICAgICAgICAgICBjaGlsZE1vZGVsLnBhcmVudElkID0gcGFyZW50SWQ7IC8vIHVwZGF0ZSB0aGUgcGFyZW50SWQgb2YgdGhlIG1vZGVsXG5cbiAgICAgICAgICAgICAgZGVsZXRlIGNoaWxkTW9kZWwuY29tYm9JZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZScpIHtcbiAgICAgICAgICAgICAgY2hpbGQuY29tYm9JZCA9IHBhcmVudElkO1xuICAgICAgICAgICAgICBjaGlsZE1vZGVsLmNvbWJvSWQgPSBwYXJlbnRJZDsgLy8gdXBkYXRlIHRoZSBwYXJlbnRJZCBvZiB0aGUgbW9kZWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50SXRlbS5hZGRDaGlsZChpdGVtKTtcbiAgICAgICAgICAgIGJyb3RoZXJzLnB1c2goY2hpbGQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIGlmIHRoZSBwYXJlbnRJZCBpcyBub3QgZm91bmQsIHJlbW92ZSB0aGUgY29tYm8gZnJvbSB0aGUgcm9vdHNcblxuICAgIGlmICghcGFyZW50SWQgJiYgdHJlZVRvQmVVbmNvbWJvKSB7XG4gICAgICB2YXIgaW5kZXggPSBjb21ib1RyZWVzLmluZGV4T2YodHJlZVRvQmVVbmNvbWJvKTtcbiAgICAgIGNvbWJvVHJlZXMuc3BsaWNlKGluZGV4LCAxKTsgLy8gbW9kaWZ5IHRoZSBwYXJlbnRJZCBvZiB0aGUgY2hpbGRyZW5cblxuICAgICAgKF9hID0gdHJlZVRvQmVVbmNvbWJvLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgY2hpbGQucGFyZW50SWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNoaWxkTW9kZWwgPSBfdGhpcy5maW5kQnlJZChjaGlsZC5pZCkuZ2V0TW9kZWwoKTtcblxuICAgICAgICBkZWxldGUgY2hpbGRNb2RlbC5wYXJlbnRJZDsgLy8gdXBkYXRlIHRoZSBwYXJlbnRJZCBvZiB0aGUgbW9kZWxcblxuICAgICAgICBkZWxldGUgY2hpbGRNb2RlbC5jb21ib0lkOyAvLyB1cGRhdGUgdGhlIGNvbWJvSWQgb2YgdGhlIG1vZGVsXG5cbiAgICAgICAgaWYgKGNoaWxkLml0ZW1UeXBlICE9PSAnbm9kZScpIGNvbWJvVHJlZXMucHVzaChjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja7oioLngrnnmoQgYmJveCDmm7TmlrDmiYDmnIkgY29tYm9zIOeahOe7mOWItu+8jOWMheaLrCBjb21ib3Mg55qE5L2N572u5ZKM6IyD5Zu0XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlQ29tYm9zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHNlbGYuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIHZhciBpdGVtTWFwID0gc2VsZi5nZXQoJ2l0ZW1NYXAnKTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGl0ZW1NYXBbY2hpbGQuaWRdO1xuXG4gICAgICAgIGlmIChjaGlsZEl0ZW0gJiYgY2hpbGRJdGVtLmdldFR5cGUgJiYgY2hpbGRJdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgIC8vIOabtOaWsOWFt+S9k+eahCBDb21ibyDkuYvliY3lhYjmuIXpmaTmiYDmnInnmoTlt7LmnInnirbmgIHvvIzku6XlhY3lsIYgc3RhdGUg5Lit55qE5qC35byP5pu05paw5Li6IENvbWJvIOeahOagt+W8j1xuICAgICAgICAgIHZhciBzdGF0ZXMgPSBfX3NwcmVhZEFycmF5KFtdLCBjaGlsZEl0ZW0uZ2V0U3RhdGVzKCksIHRydWUpO1xuXG4gICAgICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldEl0ZW1TdGF0ZShjaGlsZEl0ZW0sIHN0YXRlLCBmYWxzZSk7XG4gICAgICAgICAgfSk7IC8vIOabtOaWsOWFt+S9k+eahCBDb21ib1xuXG4gICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oY2hpbGRJdGVtLCBjaGlsZC5jaGlsZHJlbik7IC8vIOabtOaWsCBDb21ibyDlkI7vvIzov5jljp/lt7LmnInnmoTnirbmgIFcblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXRJdGVtU3RhdGUoY2hpbGRJdGVtLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHNlbGYuc29ydENvbWJvcygpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2u6IqC54K555qEIGJib3gg5pu05pawIGNvbWJvIOWPiuWFtuelluWFiCBjb21ib3Mg55qE57uY5Yi277yM5YyF5ousIGNvbWJvcyDnmoTkvY3nva7lkozojIPlm7RcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBJQ29tYm99IGNvbWJvIOmcgOimgeiiq+abtOaWsOeahCBDb21ibyDmiJYgaWTvvIzoi6XmjIflrprvvIzliJnor6UgQ29tYm8g5Y+K5omA5pyJ56WW5YWIIENvbWJvZCDpg73kvJrooqvmm7TmlrBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvSXRlbSA9IGNvbWJvO1xuICAgIHZhciBjb21ib0lkO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm9JdGVtID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ib0l0ZW0gfHwgY29tYm9JdGVtLmdldFR5cGUgJiYgY29tYm9JdGVtLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykge1xuICAgICAgY29uc29sZS53YXJuKCdUaGUgaXRlbSB0byBiZSB1cGRhdGVkIGlzIG5vdCBhIGNvbWJvIScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbWJvSWQgPSBjb21ib0l0ZW0uZ2V0KCdpZCcpO1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSBzZWxmLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICB2YXIgaXRlbU1hcCA9IHNlbGYuZ2V0KCdpdGVtTWFwJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGlsZEl0ZW0gPSBpdGVtTWFwW2NoaWxkLmlkXTtcblxuICAgICAgICBpZiAoY29tYm9JZCA9PT0gY2hpbGQuaWQgJiYgY2hpbGRJdGVtICYmIGNoaWxkSXRlbS5nZXRUeXBlICYmIGNoaWxkSXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAvLyDmm7TmlrDlhbfkvZPnmoQgQ29tYm8g5LmL5YmN5YWI5riF6Zmk5omA5pyJ55qE5bey5pyJ54q25oCB77yM5Lul5YWN5bCGIHN0YXRlIOS4reeahOagt+W8j+abtOaWsOS4uiBDb21ibyDnmoTmoLflvI9cbiAgICAgICAgICB2YXIgc3RhdGVzID0gX19zcHJlYWRBcnJheShbXSwgY2hpbGRJdGVtLmdldFN0YXRlcygpLCB0cnVlKTsgLy8gfHwgIWl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZU5hbWUpXG5cblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZEl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgX3RoaXMuc2V0SXRlbVN0YXRlKGNoaWxkSXRlbSwgc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTsgLy8g5pu05paw5YW35L2T55qEIENvbWJvXG5cbiAgICAgICAgICBpdGVtQ29udHJvbGxlci51cGRhdGVDb21ibyhjaGlsZEl0ZW0sIGNoaWxkLmNoaWxkcmVuKTsgLy8g5pu05pawIENvbWJvIOWQju+8jOi/mOWOn+W3suacieeahOeKtuaAgVxuXG4gICAgICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAgICAgaWYgKGNoaWxkSXRlbS5nZXRTdGF0ZVN0eWxlKHN0YXRlKSkge1xuICAgICAgICAgICAgICBfdGhpcy5zZXRJdGVtU3RhdGUoY2hpbGRJdGVtLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGNvbWJvSWQpIGNvbWJvSWQgPSBjaGlsZC5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDmoJHnu5PmnoTvvIzkvovlpoLnp7vliqjlrZDmoJHnrYlcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBJTm9kZSB8IElDb21ib30gaXRlbSDpnIDopoHooqvmm7TmlrDnmoQgQ29tYm8g5oiWIOiKgueCuSBpZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGFyZW50SWQg5paw55qE54i2IGNvbWJvIGlk77yMdW5kZWZpbmVkIOS7o+ihqOayoeacieeItiBjb21ib1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbWJvVHJlZSA9IGZ1bmN0aW9uIChpdGVtLCBwYXJlbnRJZCwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7XG4gICAgdmFyIHVJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICB1SXRlbSA9IHNlbGYuZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB1SXRlbS5nZXRNb2RlbCgpO1xuICAgIHZhciBvbGRQYXJlbnRJZCA9IG1vZGVsLmNvbWJvSWQgfHwgbW9kZWwucGFyZW50SWQ7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAodUl0ZW0uZ2V0VHlwZSkgdHlwZSA9IHVJdGVtLmdldFR5cGUoKTsgLy8g6IulIGl0ZW0g5pivIENvbWJv77yM5LiUIHBhcmVudElkIOaYr+WFtuWtkOWtmSBjb21ibyDnmoQgaWTvvIzliJnorablkYrlubbnu4jmraJcblxuICAgIGlmIChwYXJlbnRJZCAmJiB0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgICB2YXIgdmFsaWRfMSA9IHRydWU7XG4gICAgICB2YXIgaXRlbVN1YlRyZWVfMTtcbiAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoaXRlbVN1YlRyZWVfMSkgcmV0dXJuO1xuICAgICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChzdWJUcmVlKSB7XG4gICAgICAgICAgaWYgKGl0ZW1TdWJUcmVlXzEpIHJldHVybjsgLy8g5om+5Yiw5LuOIGl0ZW0g5byA5aeL55qE5a2Q5qCRXG5cbiAgICAgICAgICBpZiAoc3ViVHJlZS5pZCA9PT0gdUl0ZW0uZ2V0SUQoKSkge1xuICAgICAgICAgICAgaXRlbVN1YlRyZWVfMSA9IHN1YlRyZWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7IC8vIOWcqOS7pSBpdGVtIOS4uuagueeahOWtkOagkeS4reWvu+aJvuS4jiBwYXJlbnRJZCDnm7jlkIznmoTlkI7nu6flhYPntKBcblxuICAgICAgdHJhdmVyc2VUcmVlKGl0ZW1TdWJUcmVlXzEsIGZ1bmN0aW9uIChzdWJUcmVlKSB7XG4gICAgICAgIGlmIChzdWJUcmVlLmlkID09PSBwYXJlbnRJZCkge1xuICAgICAgICAgIHZhbGlkXzEgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pOyAvLyBwYXJlbnRJZCDmmK8gaXRlbSDnmoTkuIDkuKrlkI7nu6flhYPntKDvvIzkuI3og73ov5vooYzmm7TmlrBcblxuICAgICAgaWYgKCF2YWxpZF8xKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHVwZGF0ZSB0aGUgY29tYm8gdHJlZSEgVGhlIHBhcmVudElkIHBvaW50cyB0byBhIGRlc2NlbmRhbnQgb2YgdGhlIGNvbWJvIScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGJlZm9yZURhdGEgPSB7fSxcbiAgICAgICAgICBhZnRlckRhdGEgPSB7fTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgYmVmb3JlRGF0YS5jb21ib3MgPSBbe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICBwYXJlbnRJZDogbW9kZWwucGFyZW50SWRcbiAgICAgICAgfV07XG4gICAgICAgIGFmdGVyRGF0YS5jb21ib3MgPSBbe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWRcbiAgICAgICAgfV07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgICBiZWZvcmVEYXRhLm5vZGVzID0gW3tcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgcGFyZW50SWQ6IG1vZGVsLmNvbWJvSWRcbiAgICAgICAgfV07XG4gICAgICAgIGFmdGVyRGF0YS5ub2RlcyA9IFt7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZFxuICAgICAgICB9XTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3VwZGF0ZUNvbWJvVHJlZScsIHtcbiAgICAgICAgYmVmb3JlOiBiZWZvcmVEYXRhLFxuICAgICAgICBhZnRlcjogYWZ0ZXJEYXRhXG4gICAgICB9KTtcbiAgICB9IC8vIOW9kyBjb21ibyDlrZjlnKggcGFyZW50SWQg5oiWIGNvbWJvSWQg5pe277yM5omN5bCG5YW256e76ZmkXG5cblxuICAgIGlmIChtb2RlbC5wYXJlbnRJZCB8fCBtb2RlbC5jb21ib0lkKSB7XG4gICAgICB2YXIgY29tYm8gPSB0aGlzLmZpbmRCeUlkKG1vZGVsLnBhcmVudElkIHx8IG1vZGVsLmNvbWJvSWQpO1xuXG4gICAgICBpZiAoY29tYm8pIHtcbiAgICAgICAgY29tYm8ucmVtb3ZlQ2hpbGQodUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICBtb2RlbC5wYXJlbnRJZCA9IHBhcmVudElkO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICBtb2RlbC5jb21ib0lkID0gcGFyZW50SWQ7XG4gICAgfSAvLyDlj6rmnInlvZPnp7vlhaXliLDmjIflrpogY29tYm8g5pe25omN5re75YqgXG5cblxuICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgdmFyIHBhcmVudENvbWJvID0gdGhpcy5maW5kQnlJZChwYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnRDb21ibykge1xuICAgICAgICAvLyDlsIblhYPntKDmt7vliqDliLAgcGFyZW50Q29tYm8g5LitXG4gICAgICAgIHBhcmVudENvbWJvLmFkZENoaWxkKHVJdGVtKTtcbiAgICAgIH1cbiAgICB9IC8vIOWmguaenOWOn+WFiOacieeItuS6siBjb21ib++8jOWImeS7juWOn+eItiBjb21ibyDnmoTlrZDlhYPntKDmlbDnu4TkuK3liKDpmaRcblxuXG4gICAgaWYgKG9sZFBhcmVudElkKSB7XG4gICAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmZpbmRCeUlkKG9sZFBhcmVudElkKTtcblxuICAgICAgaWYgKHBhcmVudENvbWJvKSB7XG4gICAgICAgIC8vIOWwhuWFg+e0oOS7jiBwYXJlbnRDb21ibyDkuK3np7vpmaRcbiAgICAgICAgcGFyZW50Q29tYm8ucmVtb3ZlQ2hpbGQodUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBuZXdDb21ib1RyZWVzID0gcmVjb25zdHJ1Y3RUcmVlKHRoaXMuZ2V0KCdjb21ib1RyZWVzJyksIG1vZGVsLmlkLCBwYXJlbnRJZCk7XG4gICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBuZXdDb21ib1RyZWVzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvcygpO1xuICB9O1xuICAvKipcbiAgICog5a+85Ye65Zu+5pWw5o2uXG4gICAqIEByZXR1cm4ge29iamVjdH0gZGF0YVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5vZGVzID0gW107XG4gICAgdmFyIGVkZ2VzID0gW107XG4gICAgdmFyIGNvbWJvcyA9IFtdO1xuICAgIGVhY2godGhpcy5nZXQoJ25vZGVzJyksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBub2Rlcy5wdXNoKG5vZGUuZ2V0TW9kZWwoKSk7XG4gICAgfSk7XG4gICAgZWFjaCh0aGlzLmdldCgnZWRnZXMnKSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGVkZ2VzLnB1c2goZWRnZS5nZXRNb2RlbCgpKTtcbiAgICB9KTtcbiAgICBlYWNoKHRoaXMuZ2V0KCdjb21ib3MnKSwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICBjb21ib3MucHVzaChjb21iby5nZXRNb2RlbCgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbm9kZXM6IG5vZGVzLFxuICAgICAgZWRnZXM6IGVkZ2VzLFxuICAgICAgY29tYm9zOiBjb21ib3NcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog5pS55Y+Y55S75biD5aSn5bCPXG4gICAqIEBwYXJhbSAge251bWJlcn0gd2lkdGggIOeUu+W4g+WuveW6plxuICAgKiBAcGFyYW0gIHtudW1iZXJ9IGhlaWdodCDnlLvluIPpq5jluqZcbiAgICogQHJldHVybiB7b2JqZWN0fSB0aGlzXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2hhbmdlU2l6ZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmlld0NvbnRyb2xsZXIuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOW9k+a6kOaVsOaNruWcqOWklumDqOWPkeeUn+WPmOabtOaXtu+8jOagueaNruaWsOaVsOaNruWIt+aWsOinhuWbvuOAguS9huaYr+S4jeWIt+aWsOiKgueCueS9jee9rlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZW1pdCgnYmVmb3JlZ3JhcGhyZWZyZXNoJyk7XG5cbiAgICBpZiAoc2VsZi5nZXQoJ2FuaW1hdGUnKSkge1xuICAgICAgc2VsZi5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBub2RlcyA9IHNlbGYuZ2V0KCdub2RlcycpO1xuICAgICAgdmFyIGVkZ2VzID0gc2VsZi5nZXQoJ2VkZ2VzJyk7XG4gICAgICB2YXIgdmVkZ2VzID0gc2VsZi5nZXQoJ2VkZ2VzJyk7XG4gICAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgICAgZWFjaChlZGdlcywgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZS5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICAgIGVhY2godmVkZ2VzLCBmdW5jdGlvbiAodmVkZ2UpIHtcbiAgICAgICAgdmVkZ2UucmVmcmVzaCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdhZnRlcmdyYXBocmVmcmVzaCcpO1xuICAgIHNlbGYuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3lm77kuK3miYDmnInoioLngrnnmoRpdGVt5a6e5L6LXG4gICAqIEByZXR1cm4ge0lOb2RlfSBpdGVt5pWw57uEXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdub2RlcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN5Zu+5Lit5omA5pyJ6L6555qEaXRlbeWunuS+i1xuICAgKiBAcmV0dXJuIHtJRWRnZX0gaXRlbeaVsOe7hFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnZWRnZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWbvuS4reaJgOacieeahCBjb21ibyDlrp7kvotcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjb21ib3MnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluaMh+WumiBDb21ibyDkuK3miYDmnInnmoToioLngrlcbiAgICogQHBhcmFtIGNvbWJvSWQgY29tYm8gSURcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDb21ib0NoaWxkcmVuID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSB0aGlzLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvIHx8IGNvbWJvLmdldFR5cGUgJiYgY29tYm8uZ2V0VHlwZSgpICE9PSAnY29tYm8nKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBjb21ibyBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYm8uZ2V0Q2hpbGRyZW4oKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBncmFwaCDkuIrnmoQgYW5pbWF0ZUNmZyDov5vooYzop4blm77kuK3oioLngrnkvY3nva7liqjnlLvmjqXlj6NcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wb3NpdGlvbnNBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWFuaW1hdGUnKTtcbiAgICB2YXIgYW5pbWF0ZUNmZyA9IHNlbGYuZ2V0KCdhbmltYXRlQ2ZnJyk7XG4gICAgdmFyIG9uRnJhbWUgPSBhbmltYXRlQ2ZnLm9uRnJhbWU7XG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXROb2RlcygpO1xuICAgIHZhciB0b05vZGVzID0gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgIHg6IG1vZGVsLngsXG4gICAgICAgIHk6IG1vZGVsLnlcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZi5pc0FuaW1hdGluZygpKSB7XG4gICAgICBzZWxmLnN0b3BBbmltYXRlKCk7XG4gICAgfVxuXG4gICAgdmFyIGNhbnZhcyA9IHNlbGYuZ2V0KCdjYW52YXMnKTtcbiAgICBjYW52YXMuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIGVhY2godG9Ob2RlcywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBzZWxmLmZpbmRCeUlkKGRhdGEuaWQpO1xuXG4gICAgICAgIGlmICghbm9kZSB8fCBub2RlLmRlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvcmlnaW5BdHRycyA9IG5vZGUuZ2V0KCdvcmlnaW5BdHRycycpO1xuICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldCgnbW9kZWwnKTtcblxuICAgICAgICBpZiAoIW9yaWdpbkF0dHJzKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lck1hdHJpeCA9IG5vZGUuZ2V0Q29udGFpbmVyKCkuZ2V0TWF0cml4KCk7XG4gICAgICAgICAgaWYgKCFjb250YWluZXJNYXRyaXgpIGNvbnRhaW5lck1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICBvcmlnaW5BdHRycyA9IHtcbiAgICAgICAgICAgIHg6IGNvbnRhaW5lck1hdHJpeFs2XSxcbiAgICAgICAgICAgIHk6IGNvbnRhaW5lck1hdHJpeFs3XVxuICAgICAgICAgIH07XG4gICAgICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywgb3JpZ2luQXR0cnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9uRnJhbWUpIHtcbiAgICAgICAgICB2YXIgYXR0cnMgPSBvbkZyYW1lKG5vZGUsIHJhdGlvLCBkYXRhLCBvcmlnaW5BdHRycyk7XG4gICAgICAgICAgbm9kZS5zZXQoJ21vZGVsJywgT2JqZWN0LmFzc2lnbihtb2RlbCwgYXR0cnMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb2RlbC54ID0gb3JpZ2luQXR0cnMueCArIChkYXRhLnggLSBvcmlnaW5BdHRycy54KSAqIHJhdGlvO1xuICAgICAgICAgIG1vZGVsLnkgPSBvcmlnaW5BdHRycy55ICsgKGRhdGEueSAtIG9yaWdpbkF0dHJzLnkpICogcmF0aW87XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2VsZi5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgfSwge1xuICAgICAgZHVyYXRpb246IGFuaW1hdGVDZmcuZHVyYXRpb24sXG4gICAgICBlYXNpbmc6IGFuaW1hdGVDZmcuZWFzaW5nLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIG51bGwpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYW5pbWF0ZUNmZy5jYWxsYmFjaykge1xuICAgICAgICAgIGFuaW1hdGVDZmcuY2FsbGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuZW1pdCgnYWZ0ZXJhbmltYXRlJyk7XG4gICAgICAgIHNlbGYuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDlvZPoioLngrnkvY3nva7lnKjlpJbpg6jlj5HnlJ/mlLnlj5jml7bvvIzliLfmlrDmiYDmnInoioLngrnkvY3nva7vvIzph43orqHnrpfovrlcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5yZWZyZXNoUG9zaXRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWdyYXBocmVmcmVzaHBvc2l0aW9uJyk7XG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXQoJ25vZGVzJyk7XG4gICAgdmFyIGVkZ2VzID0gc2VsZi5nZXQoJ2VkZ2VzJyk7XG4gICAgdmFyIHZlZGdlcyA9IHNlbGYuZ2V0KCd2ZWRnZXMnKTtcbiAgICB2YXIgY29tYm9zID0gc2VsZi5nZXQoJ2NvbWJvcycpO1xuICAgIHZhciBtb2RlbDtcbiAgICB2YXIgdXBkYXRlZE5vZGVzID0ge307XG4gICAgZWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIG9yaWdpbkF0dHJzID0gbm9kZS5nZXQoJ29yaWdpbkF0dHJzJyk7XG5cbiAgICAgIGlmIChvcmlnaW5BdHRycyAmJiBtb2RlbC54ID09PSBvcmlnaW5BdHRycy54ICYmIG1vZGVsLnkgPT09IG9yaWdpbkF0dHJzLnkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hhbmdlZCA9IG5vZGUudXBkYXRlUG9zaXRpb24oe1xuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZWROb2Rlc1ttb2RlbC5pZF0gPSBjaGFuZ2VkO1xuICAgICAgaWYgKG1vZGVsLmNvbWJvSWQpIHVwZGF0ZWROb2Rlc1ttb2RlbC5jb21ib0lkXSA9IHVwZGF0ZWROb2Rlc1ttb2RlbC5jb21ib0lkXSB8fCBjaGFuZ2VkO1xuICAgIH0pO1xuXG4gICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICBzZWxmLnVwZGF0ZUNvbWJvcygpO1xuICAgIH1cblxuICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgc291cmNlTW9kZWwgPSBlZGdlLmdldFNvdXJjZSgpLmdldE1vZGVsKCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gZWRnZS5nZXRUYXJnZXQoKTsgLy8g6YG/5YWNIHRhcmdldCDmmK/nuq/lr7nosaHnmoTmg4XlhrXkuIvosIPnlKggZ2V0TW9kZWwg5pa55rOVXG4gICAgICAvLyDmi5bliqjnlJ/miJDovrnnmoTml7blgJkgdGFyZ2V0IOS8muaYr+e6r+WvueixoVxuXG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QodGFyZ2V0KSkge1xuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAodXBkYXRlZE5vZGVzW3NvdXJjZU1vZGVsLmlkXSB8fCB1cGRhdGVkTm9kZXNbdGFyZ2V0TW9kZWwuaWRdIHx8IGVkZ2UuZ2V0TW9kZWwoKS5pc0NvbWJvRWRnZSkge1xuICAgICAgICAgIGVkZ2UucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWFjaCh2ZWRnZXMsIGZ1bmN0aW9uICh2ZWRnZSkge1xuICAgICAgdmVkZ2UucmVmcmVzaCgpO1xuICAgIH0pO1xuICAgIHNlbGYuZW1pdCgnYWZ0ZXJncmFwaHJlZnJlc2hwb3NpdGlvbicpO1xuICAgIHNlbGYuYXV0b1BhaW50KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc3RvcEFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5nZXQoJ2NhbnZhcycpLnN0b3BBbmltYXRlKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuaXNBbmltYXRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0aW5nO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN6KeG5Y+j5Ly457yp5q+U5L6LXG4gICAqIEByZXR1cm4ge251bWJlcn0g5q+U5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Wm9vbSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG4gICAgcmV0dXJuIG1hdHJpeCA/IG1hdHJpeFswXSA6IDE7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3nmoTooYzkuLrmqKHlvI9cbiAgICogQHJldHVybiB7c3RyaW5nfSDlvZPliY3ooYzkuLrmqKHlvI9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDdXJyZW50TW9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gbW9kZUNvbnRyb2xsZXIuZ2V0TW9kZSgpO1xuICB9O1xuICAvKipcbiAgICog5YiH5o2i6KGM5Li65qih5byPXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIOaMh+WumuaooeW8j1xuICAgKiBAcmV0dXJuIHtvYmplY3R9IHRoaXNcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRNb2RlID0gZnVuY3Rpb24gKG1vZGUpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci5zZXRNb2RlKG1vZGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5riF6Zmk55S75biD5YWD57SgXG4gICAqIEByZXR1cm4ge29iamVjdH0gdGhpc1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKGF2b2lkRW1pdCkge1xuICAgIHZhciBfYTtcblxuICAgIGlmIChhdm9pZEVtaXQgPT09IHZvaWQgMCkge1xuICAgICAgYXZvaWRFbWl0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2NhbnZhcycpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xlYXIoKTtcbiAgICB0aGlzLmluaXRHcm91cHMoKTsgLy8g5riF56m655S75biD5pe25ZCM5pe25riF6Zmk5pWw5o2uXG5cbiAgICB0aGlzLnNldCh7XG4gICAgICBpdGVtTWFwOiB7fSxcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIGdyb3VwczogW10sXG4gICAgICBjb21ib3M6IFtdLFxuICAgICAgY29tYm9UcmVlczogW11cbiAgICB9KTtcbiAgICBpZiAoIWF2b2lkRW1pdCkgdGhpcy5lbWl0KCdhZnRlcnJlbmRlcicpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5pu05o2i5biD5bGA6YWN572u6aG5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmcg5paw5biD5bGA6YWN572u6aG5XG4gICAqIEBwYXJhbSB7J2NlbnRlcicgfCAnYmVnaW4nfSBhbGlnbiDlr7npvZDmlrnlvI/vvIzlj6/pgInkuK3lv4PvvIhjZW50ZXLvvInlr7npvZDliLDlr7npvZDngrnvvIzmiJblt6bkuIrop5LvvIhiZWdpbu+8ieWvuem9kOWIsOWvuem9kOeCuVxuICAgKiBAcGFyYW0ge0lQb2ludH0gYWxpZ25Qb2ludCDnlLvluIPkuIrnmoTlr7npvZDngrnvvIzkuLogQ2FudmFzIOWdkOagh+ezu++8iENhbnZhcyBET03vvIlcbiAgICog6IulIGNmZyDlkKvmnIkgdHlwZSDlrZfmrrXmiJbkuLogU3RyaW5nIOexu+Wei++8jOS4lOS4jueOsOacieW4g+WxgOaWueazleS4jeWQjO+8jOWImeabtOaNouW4g+WxgFxuICAgKiDoi6UgY2ZnIOS4jeWMheaLrCB0eXBlIO+8jOWImeS/neaMgeWOn+acieW4g+WxgOaWueazle+8jOS7heabtOaWsOW4g+WxgOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUxheW91dCA9IGZ1bmN0aW9uIChjZmcsIGFsaWduLCBhbGlnblBvaW50KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcblxuICAgIGlmIChpc1N0cmluZyhjZmcpKSB7XG4gICAgICBjZmcgPSB7XG4gICAgICAgIHR5cGU6IGNmZ1xuICAgICAgfTtcbiAgICB9IC8vIGFsaWduIHRoZSBncmFwaCBhZnRlciBsYXlvdXRcblxuXG4gICAgaWYgKGFsaWduKSB7XG4gICAgICB2YXIgdG9Qb2ludF8xID0gYWxpZ25Qb2ludDtcblxuICAgICAgaWYgKCF0b1BvaW50XzEpIHtcbiAgICAgICAgaWYgKGFsaWduID09PSAnYmVnaW4nKSB0b1BvaW50XzEgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH07ZWxzZSB0b1BvaW50XzEgPSB7XG4gICAgICAgICAgeDogdGhpcy5nZXRXaWR0aCgpIC8gMixcbiAgICAgICAgICB5OiB0aGlzLmdldEhlaWdodCgpIC8gMlxuICAgICAgICB9O1xuICAgICAgfSAvLyB0cmFuc2xhdGUgdG8gcG9pbnQgY29vcmRpbmF0ZSBzeXN0ZW1cblxuXG4gICAgICB0b1BvaW50XzEgPSB0aGlzLmdldFBvaW50QnlDYW52YXModG9Qb2ludF8xLngsIHRvUG9pbnRfMS55KTtcbiAgICAgIHZhciBmb3JjZVR5cGVzID0gWydmb3JjZScsICdnRm9yY2UnLCAnZnJ1Y2h0ZXJtYW4nXTsgLy8gaWYgaXQgaXMgZm9yY2UgbGF5b3V0LCBvbmx5IGNlbnRlciB0YWtlcyBlZmZlY3QsIGFuZCBhc3NpZ24gY2VudGVyIGZvcmNlXG5cbiAgICAgIGlmIChmb3JjZVR5cGVzLmluY2x1ZGVzKGNmZy50eXBlKSB8fCAhY2ZnLnR5cGUgJiYgZm9yY2VUeXBlcy5pbmNsdWRlcyhsYXlvdXRDb250cm9sbGVyID09PSBudWxsIHx8IGxheW91dENvbnRyb2xsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dENvbnRyb2xsZXIubGF5b3V0VHlwZSkpIHtcbiAgICAgICAgY2ZnLmNlbnRlciA9IFt0b1BvaW50XzEueCwgdG9Qb2ludF8xLnldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbmNlKCdhZnRlcmxheW91dCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgdmFyIG1hdHJpeCA9IF90aGlzLmdldEdyb3VwKCkuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgICAgIHRvUG9pbnRfMS54ID0gdG9Qb2ludF8xLnggKiBtYXRyaXhbMF0gKyBtYXRyaXhbNl07XG4gICAgICAgICAgdG9Qb2ludF8xLnkgPSB0b1BvaW50XzEueSAqIG1hdHJpeFswXSArIG1hdHJpeFs3XTtcblxuICAgICAgICAgIHZhciBfYSA9IF90aGlzLmdldEdyb3VwKCkuZ2V0Q2FudmFzQkJveCgpLFxuICAgICAgICAgICAgICBtaW5YID0gX2EubWluWCxcbiAgICAgICAgICAgICAgbWF4WCA9IF9hLm1heFgsXG4gICAgICAgICAgICAgIG1pblkgPSBfYS5taW5ZLFxuICAgICAgICAgICAgICBtYXhZID0gX2EubWF4WTtcblxuICAgICAgICAgIHZhciBiYm94UG9pbnQgPSB7XG4gICAgICAgICAgICB4OiAobWluWCArIG1heFgpIC8gMixcbiAgICAgICAgICAgIHk6IChtaW5ZICsgbWF4WSkgLyAyXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChhbGlnbiA9PT0gJ2JlZ2luJykge1xuICAgICAgICAgICAgYmJveFBvaW50LnggPSBtaW5YO1xuICAgICAgICAgICAgYmJveFBvaW50LnkgPSBtaW5ZO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzLnRyYW5zbGF0ZSh0b1BvaW50XzEueCAtIGJib3hQb2ludC54LCB0b1BvaW50XzEueSAtIGJib3hQb2ludC55KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG9yaUxheW91dENmZyA9IHRoaXMuZ2V0KCdsYXlvdXQnKTtcbiAgICB2YXIgbGF5b3V0Q2ZnID0ge307XG4gICAgT2JqZWN0LmFzc2lnbihsYXlvdXRDZmcsIG9yaUxheW91dENmZywgY2ZnKTtcbiAgICB0aGlzLnNldCgnbGF5b3V0JywgbGF5b3V0Q2ZnKTtcblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyLmlzTGF5b3V0VHlwZVNhbWUobGF5b3V0Q2ZnKSAmJiBsYXlvdXRDZmcuZ3B1RW5hYmxlZCA9PT0gb3JpTGF5b3V0Q2ZnLmdwdUVuYWJsZWQpIHtcbiAgICAgIC8vIG5vIHR5cGUgb3Igc2FtZSB0eXBlLCBvciBzd2l0Y2ggdGhlIGdwdSBhbmQgY3B1LCB1cGRhdGUgbGF5b3V0XG4gICAgICBsYXlvdXRDb250cm9sbGVyLnVwZGF0ZUxheW91dENmZyhsYXlvdXRDZmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBoYXMgZGlmZmVyZW50IHR5cGUsIGNoYW5nZSBsYXlvdXRcbiAgICAgIGxheW91dENvbnRyb2xsZXIuY2hhbmdlTGF5b3V0KGxheW91dENmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6ZSA5q+B5biD5bGA77yMY2hhbmdlRGF0YSDml7bkuI3kvJrlho3kvb/nlKjljp/mnaXnmoTluIPlsYDmlrnms5Xlr7nmlrDmlbDmja7ov5vooYzluIPlsYBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5kZXN0cm95TGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcbiAgICBsYXlvdXRDb250cm9sbGVyLmRlc3Ryb3lMYXlvdXQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmHjeaWsOS7peW9k+WJjeekuuS+i+S4remFjee9rueahOWxnuaAp+i/m+ihjOS4gOasoeW4g+WxgFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG4gICAgdmFyIGxheW91dENmZyA9IHRoaXMuZ2V0KCdsYXlvdXQnKTtcbiAgICBpZiAoIWxheW91dENmZyB8fCAhbGF5b3V0Q29udHJvbGxlcikgcmV0dXJuO1xuXG4gICAgaWYgKGxheW91dENmZy53b3JrZXJFbmFibGVkKSB7XG4gICAgICAvLyDlpoLmnpzkvb/nlKh3ZWIgd29ya2Vy5biD5bGAXG4gICAgICBsYXlvdXRDb250cm9sbGVyLmxheW91dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyLmxheW91dE1ldGhvZCkge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5yZWxheW91dCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5sYXlvdXQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmlLbotbfmjIflrprnmoQgY29tYm9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJQ29tYm99IGNvbWJvIGNvbWJvIElEIOaIliBjb21ibyBpdGVtXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY29sbGFwc2VDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm8pIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGNvbWJvIHRvIGJlIGNvbGxhcHNlZCBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2JlZm9yZWNvbGxhcHNlZXhwYW5kY29tYm8nLCB7XG4gICAgICBhY3Rpb246ICdleHBhbmQnLFxuICAgICAgaXRlbTogY29tYm9cbiAgICB9KTtcbiAgICB2YXIgY29tYm9Nb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIuY29sbGFwc2VDb21ibyhjb21ibyk7XG4gICAgY29tYm9Nb2RlbC5jb2xsYXBzZWQgPSB0cnVlOyAvLyBhZGQgdmlydHVhbCBlZGdlc1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXRFZGdlcygpLmNvbmNhdCh0aGlzLmdldCgndmVkZ2VzJykpOyAvLyBmaW5kIGFsbCB0aGUgZGVzY2VuZGFudCBub2RlcyBhbmQgY29tYm9zXG5cbiAgICB2YXIgY25vZGVzID0gW107XG4gICAgdmFyIGNjb21ib3MgPSBbXTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICBpZiAoZm91bmQpIHJldHVybjsgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kLCB0ZXJtaW5hdGUgdGhlIGZvckVhY2hcblxuICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQgYW5kIGl0IGlzIHRyYXZlcnNpbmcgdGhlIG90aGVyIGJyYW5jaGVzLCB0ZXJtaW5hdGVcbiAgICAgICAgaWYgKGZvdW5kICYmIHN1YlRyZWUuZGVwdGggPD0gY29tYm9Nb2RlbC5kZXB0aCkgcmV0dXJuIGZhbHNlOyAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmRcblxuICAgICAgICBpZiAoY29tYm9Nb2RlbC5pZCA9PT0gc3ViVHJlZS5pZCkgZm91bmQgPSB0cnVlO1xuXG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIC8vIGlmIHRoZSBjb21ibyBpcyBmb3VuZCwgY29uY2F0IHRoZSBkZXNjZW5kYW50IG5vZGVzIGFuZCBjb21ib3NcbiAgICAgICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbmRCeUlkKHN1YlRyZWUuaWQpO1xuXG4gICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgICBjbm9kZXMgPSBjbm9kZXMuY29uY2F0KGl0ZW0uZ2V0Tm9kZXMoKSk7XG4gICAgICAgICAgICBjY29tYm9zID0gY2NvbWJvcy5jb25jYXQoaXRlbS5nZXRDb21ib3MoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgZWRnZVdlaWdodE1hcCA9IHt9O1xuICAgIHZhciBhZGRlZFZFZGdlcyA9IFtdO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChlZGdlLmlzVmlzaWJsZSgpICYmICFlZGdlLmdldE1vZGVsKCkuaXNWRWRnZSkgcmV0dXJuO1xuICAgICAgdmFyIHNvdXJjZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gZWRnZS5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKChjbm9kZXMuaW5jbHVkZXMoc291cmNlKSB8fCBjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkpICYmICFjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSAmJiAhY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpIHx8IHNvdXJjZS5nZXRNb2RlbCgpLmlkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIHZhciBlZGdlTW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKGVkZ2VNb2RlbC5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcblxuICAgICAgICB3aGlsZSAoIXRhcmdldC5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHRhcmdldCA9IF90aGlzLmZpbmRCeUlkKHRhcmdldE1vZGVsLnBhcmVudElkIHx8IHRhcmdldE1vZGVsLmNvbWJvSWQpO1xuICAgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXRNb2RlbC5wYXJlbnRJZCAmJiAhdGFyZ2V0TW9kZWwuY29tYm9JZCkgcmV0dXJuOyAvLyBhbGwgdGhlIGFuY2VzdG9ycyBhcmUgaGlkZGVuLCB0aGVuIGlnbm9yZSB0aGUgZWRnZVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0YXJnZXRJZCA9IHRhcmdldE1vZGVsLmlkO1xuXG4gICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW2NvbWJvTW9kZWwuaWQgKyBcIi1cIiArIHRhcmdldElkXSkge1xuICAgICAgICAgIGVkZ2VXZWlnaHRNYXBbY29tYm9Nb2RlbC5pZCArIFwiLVwiICsgdGFyZ2V0SWRdICs9IGVkZ2VNb2RlbC5zaXplIHx8IDE7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIHRoZSBzb3VyY2UgaXMgaW4gdGhlIGNvbWJvLCB0aGUgdGFyZ2V0IGlzIG5vdFxuXG5cbiAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgc291cmNlOiBjb21ib01vZGVsLmlkLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0SWQsXG4gICAgICAgICAgaXNWRWRnZTogdHJ1ZVxuICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgZWRnZVdlaWdodE1hcFtjb21ib01vZGVsLmlkICsgXCItXCIgKyB0YXJnZXRJZF0gPSBlZGdlTW9kZWwuc2l6ZSB8fCAxO1xuICAgICAgICBhZGRlZFZFZGdlcy5wdXNoKHZlZGdlKTtcbiAgICAgIH0gZWxzZSBpZiAoIWNub2Rlcy5pbmNsdWRlcyhzb3VyY2UpICYmICFjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkgJiYgKGNub2Rlcy5pbmNsdWRlcyh0YXJnZXQpIHx8IGNjb21ib3MuaW5jbHVkZXModGFyZ2V0KSkgfHwgdGFyZ2V0LmdldE1vZGVsKCkuaWQgPT09IGNvbWJvTW9kZWwuaWQpIHtcbiAgICAgICAgdmFyIGVkZ2VNb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAoZWRnZU1vZGVsLmlzVkVkZ2UpIHtcbiAgICAgICAgICBfdGhpcy5yZW1vdmVJdGVtKGVkZ2UsIGZhbHNlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3VyY2VNb2RlbCA9IHNvdXJjZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIHdoaWxlICghc291cmNlLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgc291cmNlID0gX3RoaXMuZmluZEJ5SWQoc291cmNlTW9kZWwucGFyZW50SWQgfHwgc291cmNlTW9kZWwuY29tYm9JZCk7XG4gICAgICAgICAgaWYgKCFzb3VyY2UgfHwgIXNvdXJjZU1vZGVsLnBhcmVudElkICYmICFzb3VyY2VNb2RlbC5jb21ib0lkKSByZXR1cm47IC8vIGFsbCB0aGUgYW5jZXN0b3JzIGFyZSBoaWRkZW4sIHRoZW4gaWdub3JlIHRoZSBlZGdlXG5cbiAgICAgICAgICBzb3VyY2VNb2RlbCA9IHNvdXJjZS5nZXRNb2RlbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNvdXJjZUlkID0gc291cmNlTW9kZWwuaWQ7XG5cbiAgICAgICAgaWYgKGVkZ2VXZWlnaHRNYXBbc291cmNlSWQgKyBcIi1cIiArIGNvbWJvTW9kZWwuaWRdKSB7XG4gICAgICAgICAgZWRnZVdlaWdodE1hcFtzb3VyY2VJZCArIFwiLVwiICsgY29tYm9Nb2RlbC5pZF0gKz0gZWRnZU1vZGVsLnNpemUgfHwgMTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gdGhlIHRhcmdldCBpcyBpbiB0aGUgY29tYm8sIHRoZSBzb3VyY2UgaXMgbm90XG5cblxuICAgICAgICB2YXIgdmVkZ2UgPSBfdGhpcy5hZGRJdGVtKCd2ZWRnZScsIHtcbiAgICAgICAgICB0YXJnZXQ6IGNvbWJvTW9kZWwuaWQsXG4gICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICBpc1ZFZGdlOiB0cnVlXG4gICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICBlZGdlV2VpZ2h0TWFwW3NvdXJjZUlkICsgXCItXCIgKyBjb21ib01vZGVsLmlkXSA9IGVkZ2VNb2RlbC5zaXplIHx8IDE7XG4gICAgICAgIGFkZGVkVkVkZ2VzLnB1c2godmVkZ2UpO1xuICAgICAgfVxuICAgIH0pOyAvLyB1cGRhdGUgdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGVkZ2VzLCB3aGljaCBpcyB0aGUgc3VtIG9mIG1lcmdlZCBhY3R1YWwgZWRnZXNcbiAgICAvLyBiZSBhdHRlbnRpb24gdGhhdCB0aGUgYWN0dWFsIGVkZ2VzIHdpdGggc2FtZSBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCBkaXJlY3Rpb25zIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgdHdvIGRpZmZlcmVudCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICBhZGRlZFZFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWRnZSkge1xuICAgICAgdmFyIHZlZGdlTW9kZWwgPSB2ZWRnZS5nZXRNb2RlbCgpO1xuXG4gICAgICBfdGhpcy51cGRhdGVJdGVtKHZlZGdlLCB7XG4gICAgICAgIHNpemU6IGVkZ2VXZWlnaHRNYXBbdmVkZ2VNb2RlbC5zb3VyY2UgKyBcIi1cIiArIHZlZGdlTW9kZWwudGFyZ2V0XVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIHRoaXMuZW1pdCgnYWZ0ZXJjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnY29sbGFwc2UnLFxuICAgICAgaXRlbTogY29tYm9cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWxleW8gOaMh+WumueahCBjb21ib1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IElDb21ib30gY29tYm8gY29tYm8gSUQg5oiWIGNvbWJvIGl0ZW1cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5leHBhbmRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm8gfHwgY29tYm8uZ2V0VHlwZSAmJiBjb21iby5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGNvbWJvIHRvIGJlIGNvbGxhcHNlZCBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2JlZm9yZWNvbGxhcHNlZXhwYW5kY29tYm8nLCB7XG4gICAgICBhY3Rpb246ICdleHBhbmQnLFxuICAgICAgaXRlbTogY29tYm9cbiAgICB9KTtcbiAgICB2YXIgY29tYm9Nb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIuZXhwYW5kQ29tYm8oY29tYm8pO1xuICAgIGNvbWJvTW9kZWwuY29sbGFwc2VkID0gZmFsc2U7IC8vIGFkZCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICB2YXIgZWRnZXMgPSB0aGlzLmdldEVkZ2VzKCkuY29uY2F0KHRoaXMuZ2V0KCd2ZWRnZXMnKSk7IC8vIGZpbmQgYWxsIHRoZSBkZXNjZW5kYW50IG5vZGVzIGFuZCBjb21ib3NcblxuICAgIHZhciBjbm9kZXMgPSBbXTtcbiAgICB2YXIgY2NvbWJvcyA9IFtdO1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuOyAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQsIHRlcm1pbmF0ZVxuXG4gICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChzdWJUcmVlKSB7XG4gICAgICAgIC8vIGlmIHRoZSBjb21ibyBpcyBmb3VuZCBhbmQgaXQgaXMgdHJhdmVyc2luZyB0aGUgb3RoZXIgYnJhbmNoZXMsIHRlcm1pbmF0ZVxuICAgICAgICBpZiAoZm91bmQgJiYgc3ViVHJlZS5kZXB0aCA8PSBjb21ib01vZGVsLmRlcHRoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChjb21ib01vZGVsLmlkID09PSBzdWJUcmVlLmlkKSBmb3VuZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChzdWJUcmVlLmlkKTtcblxuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgY25vZGVzID0gY25vZGVzLmNvbmNhdChpdGVtLmdldE5vZGVzKCkpO1xuICAgICAgICAgICAgY2NvbWJvcyA9IGNjb21ib3MuY29uY2F0KGl0ZW0uZ2V0Q29tYm9zKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VXZWlnaHRNYXAgPSB7fTtcbiAgICB2YXIgYWRkZWRWRWRnZXMgPSB7fTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoZWRnZS5pc1Zpc2libGUoKSAmJiAhZWRnZS5nZXRNb2RlbCgpLmlzVkVkZ2UpIHJldHVybjtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgdmFyIHRhcmdldCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG4gICAgICB2YXIgc291cmNlSWQgPSBzb3VyY2UuZ2V0KCdpZCcpO1xuICAgICAgdmFyIHRhcmdldElkID0gdGFyZ2V0LmdldCgnaWQnKTtcblxuICAgICAgaWYgKChjbm9kZXMuaW5jbHVkZXMoc291cmNlKSB8fCBjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkpICYmICFjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSAmJiAhY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpIHx8IHNvdXJjZUlkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIC8vIHRoZSBzb3VyY2UgaXMgaW4gdGhlIGNvbWJvLCB0aGUgdGFyZ2V0IGlzIG5vdFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZpcnR1YWwgZWRnZXNcbiAgICAgICAgaWYgKGVkZ2UuZ2V0TW9kZWwoKS5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCF0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5maW5kQnlJZCh0YXJnZXRNb2RlbC5jb21ib0lkIHx8IHRhcmdldE1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXRNb2RlbC5wYXJlbnRJZCAmJiAhdGFyZ2V0TW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldElkID0gdGFyZ2V0TW9kZWwuaWQ7XG4gICAgICAgIHZhciBzb3VyY2VNb2RlbCA9IHNvdXJjZS5nZXRNb2RlbCgpOyAvLyBmaW5kIHRoZSBuZWFyZXN0IHZpc2libGUgYW5jZXN0b3JcblxuICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHNvdXJjZSA9IF90aGlzLmZpbmRCeUlkKHNvdXJjZU1vZGVsLmNvbWJvSWQgfHwgc291cmNlTW9kZWwucGFyZW50SWQpO1xuXG4gICAgICAgICAgaWYgKCFzb3VyY2UgfHwgIXNvdXJjZU1vZGVsLnBhcmVudElkICYmICFzb3VyY2VNb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIGlmIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvcHBzaXRlIGFyZSBhbGwgaGlkZGVuLCBpZ25vcmUgdGhlIGVkZ2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc291cmNlTW9kZWwuY29tYm9JZCA9PT0gY29tYm9Nb2RlbC5pZCB8fCBzb3VyY2VNb2RlbC5wYXJlbnRJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIGlmIHRoZSBuZXh0IGFuY2VzdG9yIGlzIHRoZSBjb21ibywgYnJlYWsgdGhlIHdoaWxlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvdXJjZUlkID0gc291cmNlTW9kZWwuaWQ7XG5cbiAgICAgICAgaWYgKHRhcmdldElkKSB7XG4gICAgICAgICAgdmFyIHZlZGdlSWQgPSBzb3VyY2VJZCArIFwiLVwiICsgdGFyZ2V0SWQ7IC8vIHVwZGF0ZSB0aGUgd2lkdGggb2YgdGhlIHZpcnR1YWwgZWRnZXMsIHdoaWNoIGlzIHRoZSBzdW0gb2YgbWVyZ2VkIGFjdHVhbCBlZGdlc1xuICAgICAgICAgIC8vIGJlIGF0dGVudGlvbiB0aGF0IHRoZSBhY3R1YWwgZWRnZXMgd2l0aCBzYW1lIGVuZHBvaW50cyBidXQgZGlmZmVyZW50IGRpcmVjdGlvbnMgd2lsbCBiZSByZXByZXNlbnRlZCBieSB0d28gZGlmZmVyZW50IHZpcnR1YWwgZWRnZXNcblxuICAgICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdKSB7XG4gICAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdICs9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG5cbiAgICAgICAgICAgIF90aGlzLnVwZGF0ZUl0ZW0oYWRkZWRWRWRnZXNbdmVkZ2VJZF0sIHtcbiAgICAgICAgICAgICAgc2l6ZTogZWRnZVdlaWdodE1hcFt2ZWRnZUlkXVxuICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZUlkLFxuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRJZCxcbiAgICAgICAgICAgIGlzVkVkZ2U6IHRydWVcbiAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdID0gZWRnZS5nZXRNb2RlbCgpLnNpemUgfHwgMTtcbiAgICAgICAgICBhZGRlZFZFZGdlc1t2ZWRnZUlkXSA9IHZlZGdlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFjbm9kZXMuaW5jbHVkZXMoc291cmNlKSAmJiAhY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpICYmIChjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSB8fCBjY29tYm9zLmluY2x1ZGVzKHRhcmdldCkpIHx8IHRhcmdldElkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIC8vIHRoZSB0YXJnZXQgaXMgaW4gdGhlIGNvbWJvLCB0aGUgc291cmNlIGlzIG5vdFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZpcnR1YWwgZWRnZXNcbiAgICAgICAgaWYgKGVkZ2UuZ2V0TW9kZWwoKS5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBzb3VyY2UgPSBfdGhpcy5maW5kQnlJZChzb3VyY2VNb2RlbC5jb21ib0lkIHx8IHNvdXJjZU1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2VNb2RlbC5wYXJlbnRJZCAmJiAhc291cmNlTW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvdXJjZUlkID0gc291cmNlTW9kZWwuaWQ7XG4gICAgICAgIHZhciB0YXJnZXRNb2RlbCA9IHRhcmdldC5nZXRNb2RlbCgpOyAvLyBmaW5kIHRoZSBuZWFyZXN0IHZpc2libGUgYW5jZXN0b3JcblxuICAgICAgICB3aGlsZSAoIXRhcmdldC5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHRhcmdldCA9IF90aGlzLmZpbmRCeUlkKHRhcmdldE1vZGVsLmNvbWJvSWQgfHwgdGFyZ2V0TW9kZWwucGFyZW50SWQpO1xuXG4gICAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldE1vZGVsLnBhcmVudElkICYmICF0YXJnZXRNb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIGlmIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvcHBzaXRlIGFyZSBhbGwgaGlkZGVuLCBpZ25vcmUgdGhlIGVkZ2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGFyZ2V0TW9kZWwuY29tYm9JZCA9PT0gY29tYm9Nb2RlbC5pZCB8fCB0YXJnZXRNb2RlbC5wYXJlbnRJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIGlmIHRoZSBuZXh0IGFuY2VzdG9yIGlzIHRoZSBjb21ibywgYnJlYWsgdGhlIHdoaWxlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldElkID0gdGFyZ2V0TW9kZWwuaWQ7XG5cbiAgICAgICAgaWYgKHNvdXJjZUlkKSB7XG4gICAgICAgICAgdmFyIHZlZGdlSWQgPSBzb3VyY2VJZCArIFwiLVwiICsgdGFyZ2V0SWQ7IC8vIHVwZGF0ZSB0aGUgd2lkdGggb2YgdGhlIHZpcnR1YWwgZWRnZXMsIHdoaWNoIGlzIHRoZSBzdW0gb2YgbWVyZ2VkIGFjdHVhbCBlZGdlc1xuICAgICAgICAgIC8vIGJlIGF0dGVudGlvbiB0aGF0IHRoZSBhY3R1YWwgZWRnZXMgd2l0aCBzYW1lIGVuZHBvaW50cyBidXQgZGlmZmVyZW50IGRpcmVjdGlvbnMgd2lsbCBiZSByZXByZXNlbnRlZCBieSB0d28gZGlmZmVyZW50IHZpcnR1YWwgZWRnZXNcblxuICAgICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdKSB7XG4gICAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdICs9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG5cbiAgICAgICAgICAgIF90aGlzLnVwZGF0ZUl0ZW0oYWRkZWRWRWRnZXNbdmVkZ2VJZF0sIHtcbiAgICAgICAgICAgICAgc2l6ZTogZWRnZVdlaWdodE1hcFt2ZWRnZUlkXVxuICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldElkLFxuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIGlzVkVkZ2U6IHRydWVcbiAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdID0gZWRnZS5nZXRNb2RlbCgpLnNpemUgfHwgMTtcbiAgICAgICAgICBhZGRlZFZFZGdlc1t2ZWRnZUlkXSA9IHZlZGdlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKChjbm9kZXMuaW5jbHVkZXMoc291cmNlKSB8fCBjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkpICYmIChjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSB8fCBjY29tYm9zLmluY2x1ZGVzKHRhcmdldCkpKSB7XG4gICAgICAgIC8vIGJvdGggc291cmNlIGFuZCB0YXJnZXQgYXJlIGluIHRoZSBjb21ibywgaWYgdGhlIHRhcmdldCBhbmQgc291cmNlIGFyZSBib3RoIHZpc2libGUsIHNob3cgdGhlIGVkZ2VcbiAgICAgICAgaWYgKHNvdXJjZS5pc1Zpc2libGUoKSAmJiB0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBlZGdlLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZW1pdCgnYWZ0ZXJjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY29sbGFwc2VFeHBhbmRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ibyB8fCBjb21iby5nZXRUeXBlICYmIGNvbWJvLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykgcmV0dXJuO1xuICAgIHZhciBjb21ib01vZGVsID0gY29tYm8uZ2V0TW9kZWwoKTsgLy8gaWYgb25lIGFuY2VzdG9yIGNvbWJvIG9mIHRoZSBjb21ibyBpcyBjb2xsYXBzZWQsIGl0IHNob3VsZCBub3QgYmUgY29sbGFwc2VkIG9yIGV4cGFuZGVkXG5cbiAgICB2YXIgcGFyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQoY29tYm9Nb2RlbC5wYXJlbnRJZCk7XG5cbiAgICB3aGlsZSAocGFyZW50SXRlbSkge1xuICAgICAgdmFyIHBhcmVudE1vZGVsID0gcGFyZW50SXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAocGFyZW50TW9kZWwuY29sbGFwc2VkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIkZhaWwgdG8gZXhwYW5kIHRoZSBjb21ibyBzaW5jZSBpdCdzIGFuY2VzdG9yIGNvbWJvIGlzIGNvbGxhcHNlZC5cIik7XG4gICAgICAgIHBhcmVudEl0ZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcGFyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQocGFyZW50TW9kZWwucGFyZW50SWQpO1xuICAgIH1cblxuICAgIHZhciBjb2xsYXBzZWQgPSBjb21ib01vZGVsLmNvbGxhcHNlZDsgLy8g6K+l576k57uE5bey57uP5aSE5LqO5pS26LW354q25oCB77yM6ZyA6KaB5bGV5byAXG5cbiAgICBpZiAoY29sbGFwc2VkKSB7XG4gICAgICB0aGlzLmV4cGFuZENvbWJvKGNvbWJvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2xsYXBzZUNvbWJvKGNvbWJvKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUNvbWJvKGNvbWJvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBjb21ib1RyZWUg57uT5p6E5pW055CGIENvbWJvIOebuOWFs+eahOWbvuW9oue7mOWItuWxgue6p++8jOWMheaLrCBDb21ibyDmnKzouqvjgIHoioLngrnjgIHovrlcbiAgICogQHBhcmFtIHtHcmFwaERhdGF9IGRhdGEg5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc29ydENvbWJvcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGNvbWJvU29ydGVkID0gdGhpcy5nZXQoJ2NvbWJvU29ydGVkJyk7XG4gICAgaWYgKGNvbWJvU29ydGVkKSByZXR1cm47XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgdHJ1ZSk7XG4gICAgdmFyIGRlcHRoTWFwID0gW107XG4gICAgdmFyIGRhdGFEZXB0aE1hcCA9IHt9O1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY1RyZWUpIHtcbiAgICAgIHRyYXZlcnNlVHJlZShjVHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmIChkZXB0aE1hcFtjaGlsZC5kZXB0aF0pIGRlcHRoTWFwW2NoaWxkLmRlcHRoXS5wdXNoKGNoaWxkLmlkKTtlbHNlIGRlcHRoTWFwW2NoaWxkLmRlcHRoXSA9IFtjaGlsZC5pZF07XG4gICAgICAgIGRhdGFEZXB0aE1hcFtjaGlsZC5pZF0gPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgZWRnZXMgPSB0aGlzLmdldEVkZ2VzKCkuY29uY2F0KHRoaXMuZ2V0KCd2ZWRnZXMnKSk7XG4gICAgKGVkZ2VzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlSXRlbSkge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlSXRlbS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIHNvdXJjZURlcHRoID0gZGF0YURlcHRoTWFwW2VkZ2Uuc291cmNlXSB8fCAwO1xuICAgICAgdmFyIHRhcmdldERlcHRoID0gZGF0YURlcHRoTWFwW2VkZ2UudGFyZ2V0XSB8fCAwO1xuICAgICAgdmFyIGRlcHRoID0gTWF0aC5tYXgoc291cmNlRGVwdGgsIHRhcmdldERlcHRoKTtcbiAgICAgIGlmIChkZXB0aE1hcFtkZXB0aF0pIGRlcHRoTWFwW2RlcHRoXS5wdXNoKGVkZ2UuaWQpO2Vsc2UgZGVwdGhNYXBbZGVwdGhdID0gW2VkZ2UuaWRdO1xuICAgIH0pO1xuICAgIGRlcHRoTWFwLmZvckVhY2goZnVuY3Rpb24gKGFycmF5KSB7XG4gICAgICBpZiAoIWFycmF5IHx8ICFhcnJheS5sZW5ndGgpIHJldHVybjtcblxuICAgICAgZm9yICh2YXIgaSA9IGFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBpdGVtID0gX3RoaXMuZmluZEJ5SWQoYXJyYXlbaV0pO1xuXG4gICAgICAgIGlmIChpdGVtKSBpdGVtLnRvRnJvbnQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueaJgOacieeahOmCu+WxheiKgueCuVxuICAgKlxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBJTm9kZSl9IG5vZGUg6IqC54K5IElEIOaIluWunuS+i1xuICAgKiBAcmV0dXJucyB7SU5vZGVbXX1cbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gKG5vZGUsIHR5cGUpIHtcbiAgICB2YXIgaXRlbSA9IG5vZGU7XG5cbiAgICBpZiAoaXNTdHJpbmcobm9kZSkpIHtcbiAgICAgIGl0ZW0gPSB0aGlzLmZpbmRCeUlkKG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtLmdldE5laWdoYm9ycyh0eXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBub2RlIOeahOW6puaVsFxuICAgKlxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBJTm9kZSl9IG5vZGUg6IqC54K5IElEIOaIluWunuS+i1xuICAgKiBAcGFyYW0geygnaW4nIHwgJ291dCcgfCAndG90YWwnIHwgJ2FsbCcgfCB1bmRlZmluZWQpfSDluqbmlbDnsbvlnovvvIxpbiDlhaXluqbvvIxvdXQg5Ye65bqm77yMdG90YWwg5oC75bqm5pWw77yMYWxsIOi/lOWbnuS4ieenjeexu+Wei+W6puaVsOeahOWvueixoVxuICAgKiBAcmV0dXJucyB7TnVtYmVyIHwgT2JqZWN0fSDor6XoioLngrnnmoTluqbmlbBcbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZURlZ3JlZSA9IGZ1bmN0aW9uIChub2RlLCB0eXBlLCByZWZyZXNoKSB7XG4gICAgaWYgKHR5cGUgPT09IHZvaWQgMCkge1xuICAgICAgdHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAocmVmcmVzaCA9PT0gdm9pZCAwKSB7XG4gICAgICByZWZyZXNoID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBub2RlO1xuXG4gICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XG4gICAgICBpdGVtID0gdGhpcy5maW5kQnlJZChub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgZGVncmVlcyA9IHRoaXMuZ2V0KCdkZWdyZWVzJyk7XG5cbiAgICBpZiAoIWRlZ3JlZXMgfHwgcmVmcmVzaCkge1xuICAgICAgZGVncmVlcyA9IGdldERlZ3JlZSh0aGlzLnNhdmUoKSk7XG4gICAgICB0aGlzLnNldCgnZGVncmVlcycsIGRlZ3JlZXMpO1xuICAgIH1cblxuICAgIHZhciBub2RlRGVncmVlcyA9IGRlZ3JlZXNbaXRlbS5nZXRJRCgpXTtcbiAgICB2YXIgcmVzID0gMDsgLy8g5aaC5p6c5piv6YCa6L+HIGFkZEl0ZW0g5ZCO6Z2i5paw5aKe5Yqg55qE6IqC54K577yM5q2k5pe25a6D55qE5omA5pyJ5bqm5pWw6YO95Li6IDBcblxuICAgIGlmICghbm9kZURlZ3JlZXMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnaW4nOlxuICAgICAgICByZXMgPSBub2RlRGVncmVlcy5pbkRlZ3JlZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ291dCc6XG4gICAgICAgIHJlcyA9IG5vZGVEZWdyZWVzLm91dERlZ3JlZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgIHJlcyA9IG5vZGVEZWdyZWVzO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzID0gbm9kZURlZ3JlZXMuZGVncmVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFVuZG9TdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51bmRvU3RhY2s7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0UmVkb1N0YWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnJlZG9TdGFjaztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliB1bmRvIOWSjCByZWRvIOagiOeahOaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFN0YWNrRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVuZG9TdGFjazogdGhpcy51bmRvU3RhY2sudG9BcnJheSgpLFxuICAgICAgcmVkb1N0YWNrOiB0aGlzLnJlZG9TdGFjay50b0FycmF5KClcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog5riF56m6IHVuZG8gc3RhY2sgJiByZWRvIHN0YWNrXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2xlYXJTdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICB0aGlzLnVuZG9TdGFjay5jbGVhcigpO1xuICAgICAgdGhpcy5yZWRvU3RhY2suY2xlYXIoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmk43kvZznsbvlnovlkozmk43kvZzmlbDmja7lhaXmoIhcbiAgICogQHBhcmFtIGFjdGlvbiDmk43kvZznsbvlnotcbiAgICogQHBhcmFtIGRhdGEg5YWl5qCI55qE5pWw5o2uXG4gICAqIEBwYXJhbSBzdGFja1R5cGUg5qCI55qE57G75Z6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucHVzaFN0YWNrID0gZnVuY3Rpb24gKGFjdGlvbiwgZGF0YSwgc3RhY2tUeXBlKSB7XG4gICAgaWYgKGFjdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBhY3Rpb24gPSAndXBkYXRlJztcbiAgICB9XG5cbiAgICBpZiAoc3RhY2tUeXBlID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrVHlwZSA9ICd1bmRvJztcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgY29uc29sZS53YXJuKCfor7flhYjlkK/nlKggdW5kbyAmIHJlZG8g5Yqf6IO977yM5Zyo5a6e5L6L5YyWIEdyYXBoIOaXtuWAmemFjee9riBlbmFibGVkU3RhY2s6IHRydWUgIScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzdGFja0RhdGEgPSBkYXRhID8gY2xvbmUoZGF0YSkgOiB7XG4gICAgICBiZWZvcmU6IHt9LFxuICAgICAgYWZ0ZXI6IGNsb25lKHRoaXMuc2F2ZSgpKVxuICAgIH07XG5cbiAgICBpZiAoc3RhY2tUeXBlID09PSAncmVkbycpIHtcbiAgICAgIHRoaXMucmVkb1N0YWNrLnB1c2goe1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgZGF0YTogc3RhY2tEYXRhXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bmRvU3RhY2sucHVzaCh7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBkYXRhOiBzdGFja0RhdGFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc3RhY2tjaGFuZ2UnLCB7XG4gICAgICB1bmRvU3RhY2s6IHRoaXMudW5kb1N0YWNrLFxuICAgICAgcmVkb1N0YWNrOiB0aGlzLnJlZG9TdGFja1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W6YK75o6l55+p6Zi1XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FjaGUg5piv5ZCm5L2/55So57yT5a2Y55qEXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlyZWN0ZWQg5piv5ZCm5piv5pyJ5ZCR5Zu+77yM6buY6K6k5Y+WIGdyYXBoLmRpcmVjdGVkXG4gICAqIEByZXR1cm5zIHtNYXRyaXh9IOmCu+aOpeefqemYtVxuICAgKiBAbWVtYmVyb2YgSUFic3RyYWN0R3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRBZGpNYXRyaXggPSBmdW5jdGlvbiAoY2FjaGUsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHtcbiAgICAgIGNhY2hlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHVuZGVmaW5lZCkgZGlyZWN0ZWQgPSB0aGlzLmdldCgnZGlyZWN0ZWQnKTtcbiAgICB2YXIgY3VycmVudEFkak1hdHJpeCA9IHRoaXMuZ2V0KCdhZGpNYXRyaXgnKTtcblxuICAgIGlmICghY3VycmVudEFkak1hdHJpeCB8fCAhY2FjaGUpIHtcbiAgICAgIGN1cnJlbnRBZGpNYXRyaXggPSBnZXRBZGphY2VudE1hdHJpeCh0aGlzLnNhdmUoKSwgZGlyZWN0ZWQpO1xuICAgICAgdGhpcy5zZXQoJ2Fkak1hdHJpeCcsIGN1cnJlbnRBZGpNYXRyaXgpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50QWRqTWF0cml4O1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5pyA55+t6Lev5b6E55+p6Zi1XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FjaGUg5piv5ZCm5L2/55So57yT5a2Y55qEXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlyZWN0ZWQg5piv5ZCm5piv5pyJ5ZCR5Zu+77yM6buY6K6k5Y+WIGdyYXBoLmRpcmVjdGVkXG4gICAqIEByZXR1cm5zIHtNYXRyaXh9IOacgOefrei3r+W+hOefqemYtVxuICAgKiBAbWVtYmVyb2YgSUFic3RyYWN0R3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRTaG9ydGVzdFBhdGhNYXRyaXggPSBmdW5jdGlvbiAoY2FjaGUsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHtcbiAgICAgIGNhY2hlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHVuZGVmaW5lZCkgZGlyZWN0ZWQgPSB0aGlzLmdldCgnZGlyZWN0ZWQnKTtcbiAgICB2YXIgY3VycmVudEFkak1hdHJpeCA9IHRoaXMuZ2V0KCdhZGpNYXRyaXgnKTtcbiAgICB2YXIgY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXggPSB0aGlzLmdldCgnc2hvcnRlc3RQYXRoTWF0cml4Jyk7XG5cbiAgICBpZiAoIWN1cnJlbnRBZGpNYXRyaXggfHwgIWNhY2hlKSB7XG4gICAgICBjdXJyZW50QWRqTWF0cml4ID0gZ2V0QWRqYWNlbnRNYXRyaXgodGhpcy5zYXZlKCksIGRpcmVjdGVkKTtcbiAgICAgIHRoaXMuc2V0KCdhZGpNYXRyaXgnLCBjdXJyZW50QWRqTWF0cml4KTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4IHx8ICFjYWNoZSkge1xuICAgICAgY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXggPSBmbG95ZFdhcnNoYWxsKHRoaXMuc2F2ZSgpLCBkaXJlY3RlZCk7XG4gICAgICB0aGlzLnNldCgnc2hvcnRlc3RQYXRoTWF0cml4JywgY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXgpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U2hvdXJ0ZXN0UGF0aE1hdHJpeDtcbiAgfTtcbiAgLyoqXG4gICAqIOmHjeaWsOWumuS5ieebkeWQrOWHveaVsO+8jOWkjeWGmeWPguaVsOexu+Wei1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9uY2UpIHtcbiAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9uY2UpO1xuICB9O1xuICAvKipcbiAgICog6ZSA5q+B55S75biDXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNsZWFyKCk7IC8vIOa4heepuuagiOaVsOaNrlxuXG4gICAgdGhpcy5jbGVhclN0YWNrKCk7XG4gICAgdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJykuZGVzdHJveSgpO1xuICAgIHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKS5kZXN0cm95KCk7XG4gICAgdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICB0aGlzLmdldCgnY2FudmFzJykuZGVzdHJveSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5yZWRvU3RhY2sgPSBudWxsO1xuICAgIHRoaXMudW5kb1N0YWNrID0gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIm+W7uuWHuOWMheaIluWHueWMhei9ruW7k1xuICAgKiBAcGFyYW0gY2ZnIEh1bGxDZmcg6L2u5buT6YWN572u6aG5XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY3JlYXRlSHVsbCA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICBpZiAoIWNmZy5tZW1iZXJzIHx8IGNmZy5tZW1iZXJzLmxlbmd0aCA8IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ3JlYXRlIGh1bGwgZmFpbGVkISBUaGUgbWVtYmVycyBpcyBlbXB0eS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXQoJ2h1bGxHcm91cCcpO1xuICAgIHZhciBodWxsTWFwID0gdGhpcy5nZXQoJ2h1bGxNYXAnKTtcblxuICAgIGlmICghaHVsbE1hcCkge1xuICAgICAgaHVsbE1hcCA9IHt9O1xuICAgICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCBodWxsTWFwKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXQoJ2dyb3VwJykuYWRkR3JvdXAoe1xuICAgICAgICBpZDogJ2h1bGxHcm91cCdcbiAgICAgIH0pO1xuICAgICAgcGFyZW50LnRvQmFjaygpO1xuICAgICAgdGhpcy5zZXQoJ2h1bGxHcm91cCcsIHBhcmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGh1bGxNYXBbY2ZnLmlkXSkge1xuICAgICAgY29uc29sZS53YXJuKCdFeGlzdGVkIGh1bGwgaWQuJyk7XG4gICAgICByZXR1cm4gaHVsbE1hcFtjZmcuaWRdO1xuICAgIH1cblxuICAgIHZhciBncm91cCA9IHBhcmVudC5hZGRHcm91cCh7XG4gICAgICBpZDogY2ZnLmlkICsgXCItY29udGFpbmVyXCJcbiAgICB9KTtcbiAgICB2YXIgaHVsbCA9IG5ldyBIdWxsKHRoaXMsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjZmcpLCB7XG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9KSk7XG4gICAgdmFyIGh1bGxJZCA9IGh1bGwuaWQ7XG4gICAgaHVsbE1hcFtodWxsSWRdID0gaHVsbDtcbiAgICByZXR1cm4gaHVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjSBncmFwaCDkuK3lrZjlnKjnmoTljIXoo7nova7lu5NcbiAgICogQHJldHVybiB7W2tleTogc3RyaW5nXTogSHVsbH0gSHVsbCDnmoQgbWFw77yMaHVsbElkIOWvueW6lOeahCBodWxsIOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaHVsbE1hcCcpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uIGh1bGxJZCDojrflj5blr7nlupTnmoQgaHVsbFxuICAgKiBAcmV0dXJuIEh1bGxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRIdWxsQnlJZCA9IGZ1bmN0aW9uIChodWxsSWQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2h1bGxNYXAnKVtodWxsSWRdO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGwgPSBmdW5jdGlvbiAoaHVsbCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBodWxsSW5zdGFuY2U7XG5cbiAgICBpZiAoaXNTdHJpbmcoaHVsbCkpIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IHRoaXMuZ2V0SHVsbEJ5SWQoaHVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IGh1bGw7XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2h1bGxNYXAnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHRydWUgOiBkZWxldGUgX2FbaHVsbEluc3RhbmNlLmlkXTtcbiAgICBodWxsSW5zdGFuY2UuZGVzdHJveSgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBodWxscyA9IHRoaXMuZ2V0SHVsbHMoKTtcbiAgICBpZiAoIWh1bGxzIHx8ICFPYmplY3Qua2V5cyhodWxscykubGVuZ3RoKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoaHVsbHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGh1bGwgPSBodWxsc1trZXldO1xuICAgICAgaHVsbC5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCB7fSk7XG4gIH07XG5cbiAgcmV0dXJuIEFic3RyYWN0R3JhcGg7XG59KEV2ZW50RW1pdHRlcik7XG5cbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0R3JhcGg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js ***! \*********************************************************************/ /*! exports provided: G6GraphEvent, G6Event, Arrow, Shape, Node, Edge, Combo, Hull, Marker, registerNode, registerCombo, AbstractGraph, Util, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return registerNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return registerCombo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return registerEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return registerBehavior; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return BaseGlobal; });\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js\");\n/* harmony import */ var _graph_graph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graph/graph */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"]; });\n\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graph/controller/layout */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./graph/controller/event */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./item/node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./item/edge */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./item/hull */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./item/combo */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./types */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6Event\"]; });\n\n\n\n\n\n // 用于 PC 和 Mobile 端分别实现 layout 和 updateLayoutCfg 方法\n\n\n\n\n\n\n\nvar registerNode = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode;\nvar registerEdge = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge;\nvar registerCombo = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo;\nvar registerBehavior = _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior;\nvar BaseGlobal = _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version,\n AbstractGraph: _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n BaseGlobal: BaseGlobal,\n Util: _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Shape: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Node: _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Edge: _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n Combo: _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Hull: _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n registerNode: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode,\n registerEdge: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge,\n registerCombo: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo,\n registerBehavior: _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior,\n Arrow: _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"],\n Marker: _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"],\n AbstractLayout: _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n AbstractEvent: _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbmRleC5qcz9kNjNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDUTtBQUNPO0FBQ25CO0FBQ0o7O0FBRTZCO0FBQ0Y7QUFDdEI7QUFDQTtBQUNBO0FBQ0U7QUFDakMsbUJBQW1CLGdEQUFLO0FBQ3hCLG1CQUFtQixnREFBSztBQUN4QixvQkFBb0IsZ0RBQUs7QUFDekIsdUJBQXVCLGlEQUFRO0FBQy9CLGlCQUFpQiwrQ0FBTTtBQUNDO0FBQzhKO0FBQ3ZLO0FBQ2YsV0FBVywrQ0FBTTtBQUNqQixpQkFBaUIsb0RBQWE7QUFDOUI7QUFDQSxRQUFRLDZDQUFJO0FBQ1osU0FBUyxnREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixRQUFRLGtEQUFJO0FBQ1osU0FBUyxvREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixnQkFBZ0IsZ0RBQUs7QUFDckIsZ0JBQWdCLGdEQUFLO0FBQ3JCLGlCQUFpQixnREFBSztBQUN0QixvQkFBb0IsaURBQVE7QUFDNUIsU0FBUyw4Q0FBSztBQUNkLFVBQVUsK0NBQU07QUFDaEIsa0JBQWtCLGdFQUFjO0FBQ2hDLGlCQUFpQiwrREFBYTtBQUM5QixDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVoYXZpb3IgZnJvbSAnLi9iZWhhdmlvcic7XG5pbXBvcnQgQWJzdHJhY3RHcmFwaCBmcm9tICcuL2dyYXBoL2dyYXBoJztcbmltcG9ydCBTaGFwZSwgeyBBcnJvdywgTWFya2VyIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi9nbG9iYWwnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJzsgLy8g55So5LqOIFBDIOWSjCBNb2JpbGUg56uv5YiG5Yir5a6e546wIGxheW91dCDlkowgdXBkYXRlTGF5b3V0Q2ZnIOaWueazlVxuXG5pbXBvcnQgQWJzdHJhY3RMYXlvdXQgZnJvbSAnLi9ncmFwaC9jb250cm9sbGVyL2xheW91dCc7XG5pbXBvcnQgQWJzdHJhY3RFdmVudCBmcm9tICcuL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQnO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9pdGVtL25vZGUnO1xuaW1wb3J0IEVkZ2UgZnJvbSAnLi9pdGVtL2VkZ2UnO1xuaW1wb3J0IEh1bGwgZnJvbSAnLi9pdGVtL2h1bGwnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4vaXRlbS9jb21ibyc7XG52YXIgcmVnaXN0ZXJOb2RlID0gU2hhcGUucmVnaXN0ZXJOb2RlO1xudmFyIHJlZ2lzdGVyRWRnZSA9IFNoYXBlLnJlZ2lzdGVyRWRnZTtcbnZhciByZWdpc3RlckNvbWJvID0gU2hhcGUucmVnaXN0ZXJDb21ibztcbnZhciByZWdpc3RlckJlaGF2aW9yID0gQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcjtcbnZhciBCYXNlR2xvYmFsID0gR2xvYmFsO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgeyBBcnJvdywgU2hhcGUsIE5vZGUsIEVkZ2UsIENvbWJvLCBIdWxsLCBNYXJrZXIsIHJlZ2lzdGVyTm9kZSwgcmVnaXN0ZXJDb21ibywgQWJzdHJhY3RHcmFwaCwgVXRpbCwgcmVnaXN0ZXJFZGdlLCByZWdpc3RlckJlaGF2aW9yLCBBYnN0cmFjdExheW91dCwgQWJzdHJhY3RFdmVudCwgQmFzZUdsb2JhbCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiBHbG9iYWwudmVyc2lvbixcbiAgQWJzdHJhY3RHcmFwaDogQWJzdHJhY3RHcmFwaCxcbiAgQmFzZUdsb2JhbDogQmFzZUdsb2JhbCxcbiAgVXRpbDogVXRpbCxcbiAgU2hhcGU6IFNoYXBlLFxuICBOb2RlOiBOb2RlLFxuICBFZGdlOiBFZGdlLFxuICBDb21ibzogQ29tYm8sXG4gIEh1bGw6IEh1bGwsXG4gIHJlZ2lzdGVyTm9kZTogU2hhcGUucmVnaXN0ZXJOb2RlLFxuICByZWdpc3RlckVkZ2U6IFNoYXBlLnJlZ2lzdGVyRWRnZSxcbiAgcmVnaXN0ZXJDb21ibzogU2hhcGUucmVnaXN0ZXJDb21ibyxcbiAgcmVnaXN0ZXJCZWhhdmlvcjogQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcixcbiAgQXJyb3c6IEFycm93LFxuICBNYXJrZXI6IE1hcmtlcixcbiAgQWJzdHJhY3RMYXlvdXQ6IEFic3RyYWN0TGF5b3V0LFxuICBBYnN0cmFjdEV2ZW50OiBBYnN0cmFjdEV2ZW50XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js ***! \**********************************************************************************/ /*! exports provided: G6GraphEvent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return G6GraphEvent; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n\n\n\nvar G6GraphEvent =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(G6GraphEvent, _super);\n\n function G6GraphEvent(type, event) {\n var _this = _super.call(this, type, event) || this;\n\n _this.item = event.item;\n _this.canvasX = event.canvasX;\n _this.canvasY = event.canvasY;\n _this.wheelDelta = event.wheelDelta;\n _this.detail = event.detail;\n return _this;\n }\n\n return G6GraphEvent;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"Event\"]);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvYmVoYXZpb3IuanM/ZTdkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNpQjs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLGtEQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBFdmVudCBhcyBHcmFwaEV2ZW50IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcblxudmFyIEc2R3JhcGhFdmVudCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhHNkdyYXBoRXZlbnQsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRzZHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZSwgZXZlbnQpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5pdGVtID0gZXZlbnQuaXRlbTtcbiAgICBfdGhpcy5jYW52YXNYID0gZXZlbnQuY2FudmFzWDtcbiAgICBfdGhpcy5jYW52YXNZID0gZXZlbnQuY2FudmFzWTtcbiAgICBfdGhpcy53aGVlbERlbHRhID0gZXZlbnQud2hlZWxEZWx0YTtcbiAgICBfdGhpcy5kZXRhaWwgPSBldmVudC5kZXRhaWw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEc2R3JhcGhFdmVudDtcbn0oR3JhcGhFdmVudCk7XG5cbmV4cG9ydCB7IEc2R3JhcGhFdmVudCB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js ***! \*******************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvZ3JhcGguanM/NjM4MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js ***! \*******************************************************************************/ /*! exports provided: G6GraphEvent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanM/YjBmZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUF3QjtBQUNHO0FBQ0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dyYXBoJztcbmV4cG9ydCAqIGZyb20gJy4vYmVoYXZpb3InO1xuZXhwb3J0ICogZnJvbSAnLi9pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcGUnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js ***! \******************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaXRlbS5qcz9kNWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js ***! \*******************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2Uvc2hhcGUuanM/NzZmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar CACHE_SIZE = 'sizeCache';\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\n\nvar Combo =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Combo, _super);\n\n function Combo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Combo.prototype.getDefaultCfg = function () {\n return {\n type: 'combo',\n nodes: [],\n edges: [],\n combos: []\n };\n };\n\n Combo.prototype.getShapeCfg = function (model) {\n var styles = this.get('styles');\n var bbox = this.get('bbox');\n\n if (styles && bbox) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n var size = {\n r: Math.hypot(bbox.height, bbox.width) / 2 || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0] / 2,\n width: bbox.width || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0],\n height: bbox.height || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[1]\n };\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style), size);\n var padding = model.padding || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.padding;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) {\n size.r += padding;\n size.width += padding * 2;\n size.height += padding * 2;\n } else {\n size.r += padding[0];\n size.width += padding[1] + padding[3] || padding[1] * 2;\n size.height += padding[0] + padding[2] || padding[0] * 2;\n }\n\n this.set(CACHE_SIZE, size);\n return newModel;\n }\n\n return model;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n Combo.prototype.calculateCanvasBBox = function () {\n if (this.destroyed) return;\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n var cacheSize = this.get(CACHE_SIZE);\n var cacheBBox = this.get(CACHE_BBOX) || {};\n var oriX = cacheBBox.x;\n var oriY = cacheBBox.x;\n\n if (cacheSize) {\n cacheSize.width = Math.max(cacheSize.width, bbox.width);\n cacheSize.height = Math.max(cacheSize.height, bbox.height);\n var type = keyShape.get('type');\n\n if (type === 'circle') {\n bbox.width = cacheSize.r * 2;\n bbox.height = cacheSize.r * 2;\n } else {\n bbox.width = cacheSize.width;\n bbox.height = cacheSize.height;\n }\n\n bbox.minX = bbox.centerX - bbox.width / 2;\n bbox.minY = bbox.centerY - bbox.height / 2;\n bbox.maxX = bbox.centerX + bbox.width / 2;\n bbox.maxY = bbox.centerY + bbox.height / 2;\n } else {\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n }\n\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n if (bbox.x !== oriX || bbox.y !== oriY) this.set(CACHE_ANCHOR_POINTS, null);\n return bbox;\n };\n /**\n * 获取 Combo 中所有的子元素,包括 Combo、Node 及 Edge\n */\n\n\n Combo.prototype.getChildren = function () {\n var self = this;\n return {\n nodes: self.getNodes(),\n combos: self.getCombos()\n };\n };\n /**\n * 获取 Combo 中所有子节点\n */\n\n\n Combo.prototype.getNodes = function () {\n var self = this;\n return self.get('nodes');\n };\n /**\n * 获取 Combo 中所有子 combo\n */\n\n\n Combo.prototype.getCombos = function () {\n var self = this;\n return self.get('combos');\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.addNode(item);\n break;\n\n case 'combo':\n self.addCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 向 Combo 中增加 combo\n * @param combo Combo 实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addCombo = function (combo) {\n var self = this;\n self.get('combos').push(combo);\n return true;\n };\n /**\n * 向 Combo 中添加节点\n * @param node 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addNode = function (node) {\n var self = this;\n self.get('nodes').push(node);\n return true;\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.removeNode(item);\n break;\n\n case 'combo':\n self.removeCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 从 Combo 中移除指定的 combo\n * @param combo Combo 实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeCombo = function (combo) {\n if (!combo) return;\n var combos = this.getCombos();\n var index = combos.indexOf(combo);\n\n if (index > -1) {\n combos.splice(index, 1);\n return true;\n }\n\n return false;\n };\n /**\n * 向 Combo 中移除指定的节点\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeNode = function (node) {\n if (!node) return;\n var nodes = this.getNodes();\n var index = nodes.indexOf(node);\n\n if (index > -1) {\n nodes.splice(index, 1);\n return true;\n }\n\n return false;\n };\n\n Combo.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n Combo.prototype.getBBox = function () {\n this.set(CACHE_CANVAS_BBOX, null);\n var bbox = this.calculateCanvasBBox();\n return bbox;\n };\n\n Combo.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_CANVAS_BBOX, null);\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n\n Combo.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n this.set(CACHE_SIZE, null);\n this.set('bbox', null);\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return Combo;\n}(_node__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Combo);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzPzcyMTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ2xCO0FBQ0s7QUFDVztBQUNKO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELCtDQUFNO0FBQzVELDZCQUE2QiwrQ0FBTTtBQUNuQywrQkFBK0IsK0NBQU07QUFDckM7QUFDQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEQscUNBQXFDLCtDQUFNOztBQUUzQyxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxlQUFlLDZEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBDQUNIRV9TSVpFID0gJ3NpemVDYWNoZSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG5cbnZhciBDb21ibyA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhDb21ibywgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDb21ibygpIHtcbiAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICBDb21iby5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2NvbWJvJyxcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIGNvbWJvczogW11cbiAgICB9O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRTaGFwZUNmZyA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnYmJveCcpO1xuXG4gICAgaWYgKHN0eWxlcyAmJiBiYm94KSB7XG4gICAgICAvLyBtZXJnZSBncmFwaOeahGl0ZW3moLflvI/kuI7mlbDmja7mqKHlnovkuK3nmoTmoLflvI9cbiAgICAgIHZhciBuZXdNb2RlbCA9IG1vZGVsO1xuICAgICAgdmFyIHNpemUgPSB7XG4gICAgICAgIHI6IE1hdGguaHlwb3QoYmJveC5oZWlnaHQsIGJib3gud2lkdGgpIC8gMiB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0gLyAyLFxuICAgICAgICB3aWR0aDogYmJveC53aWR0aCB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0sXG4gICAgICAgIGhlaWdodDogYmJveC5oZWlnaHQgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzFdXG4gICAgICB9O1xuICAgICAgbmV3TW9kZWwuc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwgbW9kZWwuc3R5bGUpLCBzaXplKTtcbiAgICAgIHZhciBwYWRkaW5nID0gbW9kZWwucGFkZGluZyB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnBhZGRpbmc7XG5cbiAgICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZztcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZyAqIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZ1swXTtcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nWzFdICsgcGFkZGluZ1szXSB8fCBwYWRkaW5nWzFdICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZ1swXSArIHBhZGRpbmdbMl0gfHwgcGFkZGluZ1swXSAqIDI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0KENBQ0hFX1NJWkUsIHNpemUpO1xuICAgICAgcmV0dXJuIG5ld01vZGVsO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuY2FsY3VsYXRlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC5jZW50ZXJYID0gKGJib3gubWluWCArIGJib3gubWF4WCkgLyAyO1xuICAgIGJib3guY2VudGVyWSA9IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMjtcbiAgICB2YXIgY2FjaGVTaXplID0gdGhpcy5nZXQoQ0FDSEVfU0laRSk7XG4gICAgdmFyIGNhY2hlQkJveCA9IHRoaXMuZ2V0KENBQ0hFX0JCT1gpIHx8IHt9O1xuICAgIHZhciBvcmlYID0gY2FjaGVCQm94Lng7XG4gICAgdmFyIG9yaVkgPSBjYWNoZUJCb3gueDtcblxuICAgIGlmIChjYWNoZVNpemUpIHtcbiAgICAgIGNhY2hlU2l6ZS53aWR0aCA9IE1hdGgubWF4KGNhY2hlU2l6ZS53aWR0aCwgYmJveC53aWR0aCk7XG4gICAgICBjYWNoZVNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoY2FjaGVTaXplLmhlaWdodCwgYmJveC5oZWlnaHQpO1xuICAgICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICAgIGJib3gud2lkdGggPSBjYWNoZVNpemUuciAqIDI7XG4gICAgICAgIGJib3guaGVpZ2h0ID0gY2FjaGVTaXplLnIgKiAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJveC53aWR0aCA9IGNhY2hlU2l6ZS53aWR0aDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBjYWNoZVNpemUuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBiYm94Lm1pblggPSBiYm94LmNlbnRlclggLSBiYm94LndpZHRoIC8gMjtcbiAgICAgIGJib3gubWluWSA9IGJib3guY2VudGVyWSAtIGJib3guaGVpZ2h0IC8gMjtcbiAgICAgIGJib3gubWF4WCA9IGJib3guY2VudGVyWCArIGJib3gud2lkdGggLyAyO1xuICAgICAgYmJveC5tYXhZID0gYmJveC5jZW50ZXJZICsgYmJveC5oZWlnaHQgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgICAgYmJveC5oZWlnaHQgPSBiYm94Lm1heFkgLSBiYm94Lm1pblk7XG4gICAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgfVxuXG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBpZiAoYmJveC54ICE9PSBvcmlYIHx8IGJib3gueSAhPT0gb3JpWSkgdGhpcy5zZXQoQ0FDSEVfQU5DSE9SX1BPSU5UUywgbnVsbCk7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g5Lit5omA5pyJ55qE5a2Q5YWD57Sg77yM5YyF5ousIENvbWJv44CBTm9kZSDlj4ogRWRnZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBzZWxmLmdldE5vZGVzKCksXG4gICAgICBjb21ib3M6IHNlbGYuZ2V0Q29tYm9zKClcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkOiKgueCuVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHNlbGYuZ2V0KCdub2RlcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkCBjb21ib1xuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBzZWxmLmdldCgnY29tYm9zJyk7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLmFkZE5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYuYWRkQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5ZCRIENvbWJvIOS4reWinuWKoCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5hZGRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmdldCgnY29tYm9zJykucHVzaChjb21ibyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5re75Yqg6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZ2V0KCdub2RlcycpLnB1c2gobm9kZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLnJlbW92ZU5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYucmVtb3ZlQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5LuOIENvbWJvIOS4reenu+mZpOaMh+WumueahCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDnp7vpmaTmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5yZW1vdmVDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmICghY29tYm8pIHJldHVybjtcbiAgICB2YXIgY29tYm9zID0gdGhpcy5nZXRDb21ib3MoKTtcbiAgICB2YXIgaW5kZXggPSBjb21ib3MuaW5kZXhPZihjb21ibyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29tYm9zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit56e76Zmk5oyH5a6a55qE6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICAgIHZhciBpbmRleCA9IG5vZGVzLmluZGV4T2Yobm9kZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgbm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBDb21iby5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGl0ZW0g55qE5YyF5Zu055uS77yM6L+Z5Liq5YyF5Zu055uS5piv55u45a+55LqOIGl0ZW0g6Ieq5bex77yM5LiN5Lya5bCGIG1hdHJpeCDorqHnrpflnKjlhoVcbiAgICogQHJldHVybiB7T2JqZWN0fSDljIXlkKsgeCx5LHdpZHRoLGhlaWdodCwgY2VudGVyWCwgY2VudGVyWVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgICB2YXIgYmJveCA9IHRoaXMuY2FsY3VsYXRlQ2FudmFzQkJveCgpO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpOyAvLyDmuIXnkIbnvJPlrZjnmoQgYmJveFxuXG4gICAgdGhpcy5zZXQoQ0FDSEVfQ0FOVkFTX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMsIG51bGwpO1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHZhciBhbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgICBncm91cC5zdG9wQW5pbWF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gICAgICB0aGlzLnNldChDQUNIRV9TSVpFLCBudWxsKTtcbiAgICAgIHRoaXMuc2V0KCdiYm94JywgbnVsbCk7XG4gICAgICBncm91cC5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX2NmZyA9IG51bGw7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBDb21ibztcbn0oTm9kZSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvbWJvOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js\");\n\n\n\nvar END_MAP = {\n source: 'start',\n target: 'end'\n};\nvar ITEM_NAME_SUFFIX = 'Node'; // 端点的后缀,如 sourceNode, targetNode\n\nvar POINT_NAME_SUFFIX = 'Point'; // 起点或者结束点的后缀,如 startPoint, endPoint\n\nvar ANCHOR_NAME_SUFFIX = 'Anchor';\n\nvar Edge =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Edge, _super);\n\n function Edge() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Edge.prototype.getDefaultCfg = function () {\n return {\n type: 'edge',\n sourceNode: null,\n targetNode: null,\n startPoint: null,\n endPoint: null,\n linkCenter: false\n };\n };\n\n Edge.prototype.setEnd = function (name, value) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var preItem = this.get(itemName);\n\n if (preItem && !preItem.destroyed) {\n // 如果之前存在节点,则移除掉边\n preItem.removeEdge(this);\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(value)) {\n // 如果设置成具体的点,则清理节点\n this.set(pointName, value);\n this.set(itemName, null);\n } else if (value) {\n value.addEdge(this);\n this.set(itemName, value);\n this.set(pointName, null);\n }\n };\n /**\n * 获取连接点的坐标\n * @param name source | target\n * @param model 边的数据模型\n * @param controlPoints 控制点\n */\n\n\n Edge.prototype.getLinkPoint = function (name, model, controlPoints) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var point = this.get(pointName);\n\n if (!point) {\n var item = this.get(itemName);\n var anchorName = name + ANCHOR_NAME_SUFFIX;\n var prePoint = this.getPrePoint(name, controlPoints);\n var anchorIndex = model[anchorName];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(anchorIndex)) {\n // 如果有锚点,则使用锚点索引获取连接点\n point = item.getLinkPointByAnchor(anchorIndex);\n } // 如果锚点没有对应的点或者没有锚点,则直接计算连接点\n\n\n point = point || item.getLinkPoint(prePoint);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(point.index)) {\n this.set(name + \"AnchorIndex\", point.index);\n }\n }\n\n return point;\n };\n /**\n * 获取同端点进行连接的点,计算交汇点\n * @param name\n * @param controlPoints\n */\n\n\n Edge.prototype.getPrePoint = function (name, controlPoints) {\n if (controlPoints && controlPoints.length) {\n var index = name === 'source' ? 0 : controlPoints.length - 1;\n return controlPoints[index];\n }\n\n var oppositeName = name === 'source' ? 'target' : 'source'; // 取另一个节点的位置\n\n return this.getEndPoint(oppositeName);\n };\n /**\n * 获取端点的位置\n * @param name\n */\n\n\n Edge.prototype.getEndPoint = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n return item.get('model');\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n /**\n * 通过端点的中心获取控制点\n * @param model\n */\n\n\n Edge.prototype.getControlPointsByCenter = function (model) {\n var sourcePoint = this.getEndPoint('source');\n var targetPoint = this.getEndPoint('target');\n var shapeFactory = this.get('shapeFactory');\n var type = model.type;\n return shapeFactory.getControlPoints(type, {\n startPoint: sourcePoint,\n endPoint: targetPoint\n });\n };\n\n Edge.prototype.getEndCenter = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n var bbox = item.getBBox();\n return {\n x: bbox.centerX,\n y: bbox.centerY\n };\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n\n Edge.prototype.init = function () {\n _super.prototype.init.call(this); // 初始化两个端点\n\n\n this.setSource(this.get('source'));\n this.setTarget(this.get('target'));\n };\n\n Edge.prototype.getShapeCfg = function (model, updateType) {\n var self = this;\n var linkCenter = self.get('linkCenter'); // 如果连接到中心,忽视锚点、忽视控制点\n\n var cfg = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('move')) ? model : _super.prototype.getShapeCfg.call(this, model);\n\n if (linkCenter) {\n cfg.startPoint = self.getEndCenter('source');\n cfg.endPoint = self.getEndCenter('target');\n } else {\n var controlPoints = cfg.controlPoints || self.getControlPointsByCenter(cfg);\n cfg.startPoint = self.getLinkPoint('source', model, controlPoints);\n cfg.endPoint = self.getLinkPoint('target', model, controlPoints);\n }\n\n cfg.sourceNode = self.get('sourceNode');\n cfg.targetNode = self.get('targetNode');\n return cfg;\n };\n /**\n * 获取边的数据模型\n */\n\n\n Edge.prototype.getModel = function () {\n var out = this.get('model');\n var sourceItem = this.get(\"source\" + ITEM_NAME_SUFFIX);\n var targetItem = this.get(\"target\" + ITEM_NAME_SUFFIX);\n\n if (sourceItem) {\n delete out[\"source\" + ITEM_NAME_SUFFIX];\n } else {\n out.source = this.get(\"start\" + POINT_NAME_SUFFIX);\n }\n\n if (targetItem) {\n delete out[\"target\" + ITEM_NAME_SUFFIX];\n } else {\n out.target = this.get(\"end\" + POINT_NAME_SUFFIX);\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.source) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.source)) {\n out.source = out.source.getID();\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.target) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.target)) {\n out.target = out.target.getID();\n }\n\n return out;\n };\n\n Edge.prototype.setSource = function (source) {\n this.setEnd('source', source);\n this.set('source', source);\n };\n\n Edge.prototype.setTarget = function (target) {\n this.setEnd('target', target);\n this.set('target', target);\n };\n\n Edge.prototype.getSource = function () {\n return this.get('source');\n };\n\n Edge.prototype.getTarget = function () {\n return this.get('target');\n };\n\n Edge.prototype.updatePosition = function () {\n return false;\n };\n /**\n * 边不需要重计算容器位置,直接重新计算 path 位置\n * @param {object} cfg 待更新数据\n */\n\n\n Edge.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model');\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n }\n\n Object.assign(model, cfg);\n this.updateShape(updateType);\n this.afterUpdate();\n this.clearCache();\n };\n\n Edge.prototype.destroy = function () {\n var sourceItem = this.get(\"source\" + ITEM_NAME_SUFFIX);\n var targetItem = this.get(\"target\" + ITEM_NAME_SUFFIX);\n\n if (sourceItem && !sourceItem.destroyed) {\n sourceItem.removeEdge(this);\n }\n\n if (targetItem && !targetItem.destroyed) {\n targetItem.removeEdge(this);\n }\n\n _super.prototype.destroy.call(this);\n };\n\n return Edge;\n}(_item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Edge);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2VkZ2UuanM/MTlhZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUMrQjtBQUN2QztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUIsZ0NBQWdDOztBQUVoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGdFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRDs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOzs7QUFHckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxTQUFTLDJEQUFRLGlCQUFpQixnRUFBYTtBQUMvQztBQUNBOztBQUVBLFNBQVMsMkRBQVEsaUJBQWlCLGdFQUFhO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzREFBRztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaXRlbS9lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNQbGFpbk9iamVjdCwgaXNOaWwsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEl0ZW0gZnJvbSAnLi9pdGVtJztcbnZhciBFTkRfTUFQID0ge1xuICBzb3VyY2U6ICdzdGFydCcsXG4gIHRhcmdldDogJ2VuZCdcbn07XG52YXIgSVRFTV9OQU1FX1NVRkZJWCA9ICdOb2RlJzsgLy8g56uv54K555qE5ZCO57yA77yM5aaCIHNvdXJjZU5vZGUsIHRhcmdldE5vZGVcblxudmFyIFBPSU5UX05BTUVfU1VGRklYID0gJ1BvaW50JzsgLy8g6LW354K55oiW6ICF57uT5p2f54K555qE5ZCO57yA77yM5aaCIHN0YXJ0UG9pbnQsIGVuZFBvaW50XG5cbnZhciBBTkNIT1JfTkFNRV9TVUZGSVggPSAnQW5jaG9yJztcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRWRnZSwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBFZGdlKCkge1xuICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIEVkZ2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlZGdlJyxcbiAgICAgIHNvdXJjZU5vZGU6IG51bGwsXG4gICAgICB0YXJnZXROb2RlOiBudWxsLFxuICAgICAgc3RhcnRQb2ludDogbnVsbCxcbiAgICAgIGVuZFBvaW50OiBudWxsLFxuICAgICAgbGlua0NlbnRlcjogZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldEVuZCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHByZUl0ZW0gPSB0aGlzLmdldChpdGVtTmFtZSk7XG5cbiAgICBpZiAocHJlSXRlbSAmJiAhcHJlSXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIOWmguaenOS5i+WJjeWtmOWcqOiKgueCue+8jOWImeenu+mZpOaOiei+uVxuICAgICAgcHJlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgLy8g5aaC5p6c6K6+572u5oiQ5YW35L2T55qE54K577yM5YiZ5riF55CG6IqC54K5XG4gICAgICB0aGlzLnNldChwb2ludE5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KGl0ZW1OYW1lLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZS5hZGRFZGdlKHRoaXMpO1xuICAgICAgdGhpcy5zZXQoaXRlbU5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KHBvaW50TmFtZSwgbnVsbCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6I635Y+W6L+e5o6l54K555qE5Z2Q5qCHXG4gICAqIEBwYXJhbSBuYW1lIHNvdXJjZSB8IHRhcmdldFxuICAgKiBAcGFyYW0gbW9kZWwg6L6555qE5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSBjb250cm9sUG9pbnRzIOaOp+WItueCuVxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldExpbmtQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBtb2RlbCwgY29udHJvbFBvaW50cykge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50ID0gdGhpcy5nZXQocG9pbnROYW1lKTtcblxuICAgIGlmICghcG9pbnQpIHtcbiAgICAgIHZhciBpdGVtID0gdGhpcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgdmFyIGFuY2hvck5hbWUgPSBuYW1lICsgQU5DSE9SX05BTUVfU1VGRklYO1xuICAgICAgdmFyIHByZVBvaW50ID0gdGhpcy5nZXRQcmVQb2ludChuYW1lLCBjb250cm9sUG9pbnRzKTtcbiAgICAgIHZhciBhbmNob3JJbmRleCA9IG1vZGVsW2FuY2hvck5hbWVdO1xuXG4gICAgICBpZiAoIWlzTmlsKGFuY2hvckluZGV4KSkge1xuICAgICAgICAvLyDlpoLmnpzmnInplJrngrnvvIzliJnkvb/nlKjplJrngrnntKLlvJXojrflj5bov57mjqXngrlcbiAgICAgICAgcG9pbnQgPSBpdGVtLmdldExpbmtQb2ludEJ5QW5jaG9yKGFuY2hvckluZGV4KTtcbiAgICAgIH0gLy8g5aaC5p6c6ZSa54K55rKh5pyJ5a+55bqU55qE54K55oiW6ICF5rKh5pyJ6ZSa54K577yM5YiZ55u05o6l6K6h566X6L+e5o6l54K5XG5cblxuICAgICAgcG9pbnQgPSBwb2ludCB8fCBpdGVtLmdldExpbmtQb2ludChwcmVQb2ludCk7XG5cbiAgICAgIGlmICghaXNOaWwocG9pbnQuaW5kZXgpKSB7XG4gICAgICAgIHRoaXMuc2V0KG5hbWUgKyBcIkFuY2hvckluZGV4XCIsIHBvaW50LmluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnQ7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blkIznq6/ngrnov5vooYzov57mjqXnmoTngrnvvIzorqHnrpfkuqTmsYfngrlcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIGNvbnRyb2xQb2ludHNcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRQcmVQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBjb250cm9sUG9pbnRzKSB7XG4gICAgaWYgKGNvbnRyb2xQb2ludHMgJiYgY29udHJvbFBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciBpbmRleCA9IG5hbWUgPT09ICdzb3VyY2UnID8gMCA6IGNvbnRyb2xQb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgIHJldHVybiBjb250cm9sUG9pbnRzW2luZGV4XTtcbiAgICB9XG5cbiAgICB2YXIgb3Bwb3NpdGVOYW1lID0gbmFtZSA9PT0gJ3NvdXJjZScgPyAndGFyZ2V0JyA6ICdzb3VyY2UnOyAvLyDlj5blj6bkuIDkuKroioLngrnnmoTkvY3nva5cblxuICAgIHJldHVybiB0aGlzLmdldEVuZFBvaW50KG9wcG9zaXRlTmFtZSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bnq6/ngrnnmoTkvY3nva5cbiAgICogQHBhcmFtIG5hbWVcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRFbmRQb2ludCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCdtb2RlbCcpO1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuICAvKipcbiAgICog6YCa6L+H56uv54K555qE5Lit5b+D6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldENvbnRyb2xQb2ludHNCeUNlbnRlciA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzb3VyY2VQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3NvdXJjZScpO1xuICAgIHZhciB0YXJnZXRQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3RhcmdldCcpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHR5cGUgPSBtb2RlbC50eXBlO1xuICAgIHJldHVybiBzaGFwZUZhY3RvcnkuZ2V0Q29udHJvbFBvaW50cyh0eXBlLCB7XG4gICAgICBzdGFydFBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgIGVuZFBvaW50OiB0YXJnZXRQb2ludFxuICAgIH0pO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmdldEVuZENlbnRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJib3guY2VudGVyWCxcbiAgICAgICAgeTogYmJveC5jZW50ZXJZXG4gICAgICB9O1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgX3N1cGVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyk7IC8vIOWIneWni+WMluS4pOS4querr+eCuVxuXG5cbiAgICB0aGlzLnNldFNvdXJjZSh0aGlzLmdldCgnc291cmNlJykpO1xuICAgIHRoaXMuc2V0VGFyZ2V0KHRoaXMuZ2V0KCd0YXJnZXQnKSk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U2hhcGVDZmcgPSBmdW5jdGlvbiAobW9kZWwsIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxpbmtDZW50ZXIgPSBzZWxmLmdldCgnbGlua0NlbnRlcicpOyAvLyDlpoLmnpzov57mjqXliLDkuK3lv4PvvIzlv73op4bplJrngrnjgIHlv73op4bmjqfliLbngrlcblxuICAgIHZhciBjZmcgPSAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdtb3ZlJykpID8gbW9kZWwgOiBfc3VwZXIucHJvdG90eXBlLmdldFNoYXBlQ2ZnLmNhbGwodGhpcywgbW9kZWwpO1xuXG4gICAgaWYgKGxpbmtDZW50ZXIpIHtcbiAgICAgIGNmZy5zdGFydFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3NvdXJjZScpO1xuICAgICAgY2ZnLmVuZFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3RhcmdldCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udHJvbFBvaW50cyA9IGNmZy5jb250cm9sUG9pbnRzIHx8IHNlbGYuZ2V0Q29udHJvbFBvaW50c0J5Q2VudGVyKGNmZyk7XG4gICAgICBjZmcuc3RhcnRQb2ludCA9IHNlbGYuZ2V0TGlua1BvaW50KCdzb3VyY2UnLCBtb2RlbCwgY29udHJvbFBvaW50cyk7XG4gICAgICBjZmcuZW5kUG9pbnQgPSBzZWxmLmdldExpbmtQb2ludCgndGFyZ2V0JywgbW9kZWwsIGNvbnRyb2xQb2ludHMpO1xuICAgIH1cblxuICAgIGNmZy5zb3VyY2VOb2RlID0gc2VsZi5nZXQoJ3NvdXJjZU5vZGUnKTtcbiAgICBjZmcudGFyZ2V0Tm9kZSA9IHNlbGYuZ2V0KCd0YXJnZXROb2RlJyk7XG4gICAgcmV0dXJuIGNmZztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlui+ueeahOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldE1vZGVsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvdXQgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIgKyBJVEVNX05BTUVfU1VGRklYKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIgKyBJVEVNX05BTUVfU1VGRklYKTtcblxuICAgIGlmIChzb3VyY2VJdGVtKSB7XG4gICAgICBkZWxldGUgb3V0W1wic291cmNlXCIgKyBJVEVNX05BTUVfU1VGRklYXTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0LnNvdXJjZSA9IHRoaXMuZ2V0KFwic3RhcnRcIiArIFBPSU5UX05BTUVfU1VGRklYKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0SXRlbSkge1xuICAgICAgZGVsZXRlIG91dFtcInRhcmdldFwiICsgSVRFTV9OQU1FX1NVRkZJWF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC50YXJnZXQgPSB0aGlzLmdldChcImVuZFwiICsgUE9JTlRfTkFNRV9TVUZGSVgpO1xuICAgIH1cblxuICAgIGlmICghaXNTdHJpbmcob3V0LnNvdXJjZSkgJiYgIWlzUGxhaW5PYmplY3Qob3V0LnNvdXJjZSkpIHtcbiAgICAgIG91dC5zb3VyY2UgPSBvdXQuc291cmNlLmdldElEKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1N0cmluZyhvdXQudGFyZ2V0KSAmJiAhaXNQbGFpbk9iamVjdChvdXQudGFyZ2V0KSkge1xuICAgICAgb3V0LnRhcmdldCA9IG91dC50YXJnZXQuZ2V0SUQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldFNvdXJjZSA9IGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICB0aGlzLnNldEVuZCgnc291cmNlJywgc291cmNlKTtcbiAgICB0aGlzLnNldCgnc291cmNlJywgc291cmNlKTtcbiAgfTtcblxuICBFZGdlLnByb3RvdHlwZS5zZXRUYXJnZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdGhpcy5zZXRFbmQoJ3RhcmdldCcsIHRhcmdldCk7XG4gICAgdGhpcy5zZXQoJ3RhcmdldCcsIHRhcmdldCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U291cmNlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnc291cmNlJyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgndGFyZ2V0Jyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuICAvKipcbiAgICog6L655LiN6ZyA6KaB6YeN6K6h566X5a655Zmo5L2N572u77yM55u05o6l6YeN5paw6K6h566XIHBhdGgg5L2N572uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmcg5b6F5pu05paw5pWw5o2uXG4gICAqL1xuXG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZywgdXBkYXRlVHlwZSkge1xuICAgIGlmICh1cGRhdGVUeXBlID09PSB2b2lkIDApIHtcbiAgICAgIHVwZGF0ZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIG9yaVZpc2libGUgPSBtb2RlbC52aXNpYmxlO1xuICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgaWYgKG9yaVZpc2libGUgIT09IGNmZ1Zpc2libGUgJiYgY2ZnVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLmNoYW5nZVZpc2liaWxpdHkoY2ZnVmlzaWJsZSk7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChjZmcuc3RhdGVTdHlsZXMpIHtcbiAgICAgIC8vIOabtOaWsCBpdGVtIOaXtuabtOaWsCB0aGlzLmdldCgnc3R5bGVzJykg5Lit55qE5YC8XG4gICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICBtaXgoc3R5bGVzLCBzdGF0ZVN0eWxlcyk7XG4gICAgICBkZWxldGUgY2ZnLnN0YXRlU3R5bGVzO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24obW9kZWwsIGNmZyk7XG4gICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIgKyBJVEVNX05BTUVfU1VGRklYKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIgKyBJVEVNX05BTUVfU1VGRklYKTtcblxuICAgIGlmIChzb3VyY2VJdGVtICYmICFzb3VyY2VJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgc291cmNlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRJdGVtICYmICF0YXJnZXRJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgdGFyZ2V0SXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBFZGdlO1xufShJdGVtKTtcblxuZXhwb3J0IGRlZmF1bHQgRWRnZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/hull/convexHull */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js\");\n/* harmony import */ var _element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/hull/bubbleset */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js\");\n\n\n\n\n\n\n\n/**\n * 用于包裹内部的成员的轮廓。\n * convex hull(凸包):http://geomalgorithms.com/a10-_hull-1.html#Monotone%20Chain\n * bubble: 使用 bubbleset算法,refer: http://vialab.science.uoit.ca/wp-content/papercite-data/pdf/col2009c.pdf\n * 通过配置 padding 可以调节包裹轮廓对节点的松紧程度\n */\n\nvar Hull =\n/** @class */\nfunction () {\n function Hull(graph, cfg) {\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.getDefaultCfg(), cfg);\n this.graph = graph;\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n }\n\n Hull.prototype.getDefaultCfg = function () {\n return {\n id: 'g6-hull',\n type: 'round-convex',\n members: [],\n nonMembers: [],\n style: {\n fill: 'lightblue',\n stroke: 'blue',\n opacity: 0.2\n },\n padding: 10\n };\n };\n\n Hull.prototype.setPadding = function () {\n var nodeSize = this.members.length && this.members[0].getKeyShape().getCanvasBBox().width / 2;\n this.padding = this.cfg.padding > 0 ? this.cfg.padding + nodeSize : 10 + nodeSize;\n this.cfg.bubbleCfg = {\n nodeR0: this.padding - nodeSize,\n nodeR1: this.padding - nodeSize,\n morphBuffer: this.padding - nodeSize\n };\n };\n\n Hull.prototype.setType = function () {\n this.type = this.cfg.type;\n\n if (this.members.length < 3) {\n this.type = 'round-convex';\n }\n\n if (this.type !== 'round-convex' && this.type !== 'smooth-convex' && this.type !== 'bubble') {\n console.warn('The hull type should be either round-convex, smooth-convex or bubble, round-convex is used by default.');\n this.type = 'round-convex';\n }\n };\n\n Hull.prototype.calcPath = function (members, nonMembers) {\n var contour, path, hull;\n\n switch (this.type) {\n case 'round-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n break;\n\n case 'smooth-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n\n if (contour.length === 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n } else if (contour.length > 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"paddedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(hull);\n }\n\n break;\n\n case 'bubble':\n contour = Object(_element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__[\"genBubbleSet\"])(members, nonMembers, this.cfg.bubbleCfg);\n path = contour.length >= 2 && Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(contour);\n break;\n\n default:\n }\n\n return path;\n };\n\n Hull.prototype.render = function () {\n this.group.addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: this.path\n }, this.cfg.style),\n id: this.id,\n name: this.cfg.id,\n capture: false\n });\n this.group.toBack();\n };\n /**\n * 增加hull的成员,同时如果该成员原先在nonMembers中,则从nonMembers中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.members.push(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 增加hull需要排除的节点,同时如果该成员原先在members中,则从members中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.nonMembers.push(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 移除hull中的成员\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n /**\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n\n Hull.prototype.updateData = function (members, nonMembers) {\n var _this = this;\n\n this.group.findById(this.id).remove();\n if (members) this.members = members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n if (nonMembers) this.nonMembers = nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n\n Hull.prototype.updateStyle = function (cfg) {\n var path = this.group.findById(this.id);\n path.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg));\n };\n /**\n * 更新 hull\n * @param cfg hull 配置项\n */\n\n\n Hull.prototype.updateCfg = function (cfg) {\n var _this = this;\n\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.cfg, cfg);\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n\n if (cfg.members) {\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n }\n\n if (cfg.nonMembers) {\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n } // TODO padding 设置太大,会影响到 contain 结果\n\n\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n /**\n * 判断是否在hull内部\n * @param item\n */\n\n\n Hull.prototype.contain = function (item) {\n var _this = this;\n\n var nodeItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n nodeItem = this.graph.findById(item);\n } else {\n nodeItem = item;\n }\n\n var shapePoints;\n var shape = nodeItem.getKeyShape();\n\n if (nodeItem.get('type') === 'path') {\n shapePoints = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n shapePoints = shapePoints.map(function (canvasPoint) {\n var point = _this.graph.getPointByCanvas(canvasPoint[0], canvasPoint[1]);\n\n return [point.x, point.y];\n });\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"isPolygonsIntersect\"])(shapePoints, Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(this.path));\n };\n\n Hull.prototype.destroy = function () {\n this.group.remove();\n this.cfg = null;\n };\n\n return Hull;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Hull);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2h1bGwuanM/MmZhMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2M7QUFDRztBQUNvQztBQUNuQztBQUNRO0FBQ0Y7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwREFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFhO0FBQy9CLGVBQWUsOERBQVc7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsZUFBZSx1RUFBZTtBQUM5Qjs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBYTs7QUFFL0I7QUFDQSxpQkFBaUIsOERBQVc7QUFDNUI7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLHVFQUFlO0FBQ2hDLFNBQVM7QUFDVCxpQkFBaUIsNkRBQVU7QUFDM0I7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLGtFQUFlO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0Esa0JBQWtCLDRFQUFZO0FBQzlCLHNDQUFzQyxrRUFBZTtBQUNyRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHNEQUFRLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxlQUFlLDBEQUFPO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsMkRBQVE7QUFDdkIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxlQUFlLDJEQUFRO0FBQ3ZCLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsK0RBQVk7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLFdBQVcsc0VBQW1CLGNBQWMsK0RBQVk7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaXRlbS9odWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBwYXJzZVBhdGhTdHJpbmcgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgcGF0aFRvUG9pbnRzLCBnZXRDbG9zZWRTcGxpbmUsIHJvdW5kZWRIdWxsLCBwYWRkZWRIdWxsIH0gZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCB7IGlzUG9seWdvbnNJbnRlcnNlY3QgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHsgZ2VuQ29udmV4SHVsbCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9jb252ZXhIdWxsJztcbmltcG9ydCB7IGdlbkJ1YmJsZVNldCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9idWJibGVzZXQnO1xuLyoqXG4gKiDnlKjkuo7ljIXoo7nlhoXpg6jnmoTmiJDlkZjnmoTova7lu5PjgIJcbiAqIGNvbnZleCBodWxsKOWHuOWMhSnvvJpodHRwOi8vZ2VvbWFsZ29yaXRobXMuY29tL2ExMC1faHVsbC0xLmh0bWwjTW9ub3RvbmUlMjBDaGFpblxuICogYnViYmxlOiDkvb/nlKggYnViYmxlc2V0566X5rOV77yMcmVmZXI6IGh0dHA6Ly92aWFsYWIuc2NpZW5jZS51b2l0LmNhL3dwLWNvbnRlbnQvcGFwZXJjaXRlLWRhdGEvcGRmL2NvbDIwMDljLnBkZlxuICog6YCa6L+H6YWN572uIHBhZGRpbmcg5Y+v5Lul6LCD6IqC5YyF6KO56L2u5buT5a+56IqC54K555qE5p2+57Sn56iL5bqmXG4gKi9cblxudmFyIEh1bGwgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBIdWxsKGdyYXBoLCBjZmcpIHtcbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuaWQgPSB0aGlzLmNmZy5pZDtcbiAgICB0aGlzLmdyb3VwID0gdGhpcy5jZmcuZ3JvdXA7XG4gICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpc1N0cmluZyhpdGVtKSA/IGdyYXBoLmZpbmRCeUlkKGl0ZW0pIDogaXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0UGFkZGluZygpO1xuICAgIHRoaXMuc2V0VHlwZSgpO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBIdWxsLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogJ2c2LWh1bGwnLFxuICAgICAgdHlwZTogJ3JvdW5kLWNvbnZleCcsXG4gICAgICBtZW1iZXJzOiBbXSxcbiAgICAgIG5vbk1lbWJlcnM6IFtdLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogJ2xpZ2h0Ymx1ZScsXG4gICAgICAgIHN0cm9rZTogJ2JsdWUnLFxuICAgICAgICBvcGFjaXR5OiAwLjJcbiAgICAgIH0sXG4gICAgICBwYWRkaW5nOiAxMFxuICAgIH07XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuc2V0UGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZVNpemUgPSB0aGlzLm1lbWJlcnMubGVuZ3RoICYmIHRoaXMubWVtYmVyc1swXS5nZXRLZXlTaGFwZSgpLmdldENhbnZhc0JCb3goKS53aWR0aCAvIDI7XG4gICAgdGhpcy5wYWRkaW5nID0gdGhpcy5jZmcucGFkZGluZyA+IDAgPyB0aGlzLmNmZy5wYWRkaW5nICsgbm9kZVNpemUgOiAxMCArIG5vZGVTaXplO1xuICAgIHRoaXMuY2ZnLmJ1YmJsZUNmZyA9IHtcbiAgICAgIG5vZGVSMDogdGhpcy5wYWRkaW5nIC0gbm9kZVNpemUsXG4gICAgICBub2RlUjE6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplLFxuICAgICAgbW9ycGhCdWZmZXI6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplXG4gICAgfTtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5zZXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMuY2ZnLnR5cGU7XG5cbiAgICBpZiAodGhpcy5tZW1iZXJzLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRoaXMudHlwZSA9ICdyb3VuZC1jb252ZXgnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdyb3VuZC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ3Ntb290aC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ2J1YmJsZScpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGh1bGwgdHlwZSBzaG91bGQgYmUgZWl0aGVyIHJvdW5kLWNvbnZleCwgc21vb3RoLWNvbnZleCBvciBidWJibGUsIHJvdW5kLWNvbnZleCBpcyB1c2VkIGJ5IGRlZmF1bHQuJyk7XG4gICAgICB0aGlzLnR5cGUgPSAncm91bmQtY29udmV4JztcbiAgICB9XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuY2FsY1BhdGggPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBjb250b3VyLCBwYXRoLCBodWxsO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3JvdW5kLWNvbnZleCc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5Db252ZXhIdWxsKG1lbWJlcnMpO1xuICAgICAgICBodWxsID0gcm91bmRlZEh1bGwoY29udG91ci5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgfSksIHRoaXMucGFkZGluZyk7XG4gICAgICAgIHBhdGggPSBwYXJzZVBhdGhTdHJpbmcoaHVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzbW9vdGgtY29udmV4JzpcbiAgICAgICAgY29udG91ciA9IGdlbkNvbnZleEh1bGwobWVtYmVycyk7XG5cbiAgICAgICAgaWYgKGNvbnRvdXIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaHVsbCA9IHJvdW5kZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gcGFyc2VQYXRoU3RyaW5nKGh1bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRvdXIubGVuZ3RoID4gMikge1xuICAgICAgICAgIGh1bGwgPSBwYWRkZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gZ2V0Q2xvc2VkU3BsaW5lKGh1bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2J1YmJsZSc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgdGhpcy5jZmcuYnViYmxlQ2ZnKTtcbiAgICAgICAgcGF0aCA9IGNvbnRvdXIubGVuZ3RoID49IDIgJiYgZ2V0Q2xvc2VkU3BsaW5lKGNvbnRvdXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgfSwgdGhpcy5jZmcuc3R5bGUpLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBuYW1lOiB0aGlzLmNmZy5pZCxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5ncm91cC50b0JhY2soKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWinuWKoGh1bGznmoTmiJDlkZjvvIzlkIzml7blpoLmnpzor6XmiJDlkZjljp/lhYjlnKhub25NZW1iZXJz5Lit77yM5YiZ5LuObm9uTWVtYmVyc+S4reWOu+aOiVxuICAgKiBAcGFyYW0gaXRlbSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOa3u+WKoOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUuYWRkTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHRoaXMubWVtYmVycy5wdXNoKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubm9uTWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubm9uTWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGF0YSh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlop7liqBodWxs6ZyA6KaB5o6S6Zmk55qE6IqC54K577yM5ZCM5pe25aaC5p6c6K+l5oiQ5ZGY5Y6f5YWI5ZyobWVtYmVyc+S4re+8jOWImeS7jm1lbWJlcnPkuK3ljrvmjolcbiAgICogQHBhcmFtIGl0ZW0g6IqC54K55a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIEh1bGwucHJvdG90eXBlLmFkZE5vbk1lbWJlciA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBpdGVtID0gdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB0aGlzLm5vbk1lbWJlcnMucHVzaChpdGVtKTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLm1lbWJlcnMuaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm1lbWJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog56e76ZmkaHVsbOS4reeahOaIkOWRmFxuICAgKiBAcGFyYW0gbm9kZSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOenu+mZpOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUucmVtb3ZlTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGRhdGVEYXRhKHRoaXMubWVtYmVycywgdGhpcy5ub25NZW1iZXJzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5yZW1vdmVOb25NZW1iZXIgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5ub25NZW1iZXJzLmluZGV4T2YoaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5ub25NZW1iZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIEh1bGwucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpLnJlbW92ZSgpO1xuICAgIGlmIChtZW1iZXJzKSB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIGlmIChub25NZW1iZXJzKSB0aGlzLm5vbk1lbWJlcnMgPSBub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlU3R5bGUgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpO1xuICAgIHBhdGguYXR0cihfX2Fzc2lnbih7fSwgY2ZnKSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgaHVsbFxuICAgKiBAcGFyYW0gY2ZnIGh1bGwg6YWN572u6aG5XG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlQ2ZnID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5jZmcsIGNmZyk7XG4gICAgdGhpcy5pZCA9IHRoaXMuY2ZnLmlkO1xuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmNmZy5ncm91cDtcblxuICAgIGlmIChjZmcubWVtYmVycykge1xuICAgICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNmZy5ub25NZW1iZXJzKSB7XG4gICAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoaXRlbSkgPyBfdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKSA6IGl0ZW07XG4gICAgICB9KTtcbiAgICB9IC8vIFRPRE8gcGFkZGluZyDorr7nva7lpKrlpKfvvIzkvJrlvbHlk43liLAgY29udGFpbiDnu5PmnpxcblxuXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XG4gICAgdGhpcy5zZXRUeXBlKCk7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5jYWxjUGF0aCh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreaYr+WQpuWcqGh1bGzlhoXpg6hcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5jb250YWluID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBub2RlSXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgc2hhcGVQb2ludHM7XG4gICAgdmFyIHNoYXBlID0gbm9kZUl0ZW0uZ2V0S2V5U2hhcGUoKTtcblxuICAgIGlmIChub2RlSXRlbS5nZXQoJ3R5cGUnKSA9PT0gJ3BhdGgnKSB7XG4gICAgICBzaGFwZVBvaW50cyA9IHBhdGhUb1BvaW50cyhzaGFwZS5hdHRyKCdwYXRoJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2hhcGVCQm94ID0gc2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgc2hhcGVQb2ludHMgPSBbW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWluWV0sIFtzaGFwZUJCb3gubWF4WCwgc2hhcGVCQm94Lm1pblldLCBbc2hhcGVCQm94Lm1heFgsIHNoYXBlQkJveC5tYXhZXSwgW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWF4WV1dO1xuICAgIH1cblxuICAgIHNoYXBlUG9pbnRzID0gc2hhcGVQb2ludHMubWFwKGZ1bmN0aW9uIChjYW52YXNQb2ludCkge1xuICAgICAgdmFyIHBvaW50ID0gX3RoaXMuZ3JhcGguZ2V0UG9pbnRCeUNhbnZhcyhjYW52YXNQb2ludFswXSwgY2FudmFzUG9pbnRbMV0pO1xuXG4gICAgICByZXR1cm4gW3BvaW50LngsIHBvaW50LnldO1xuICAgIH0pO1xuICAgIHJldHVybiBpc1BvbHlnb25zSW50ZXJzZWN0KHNoYXBlUG9pbnRzLCBwYXRoVG9Qb2ludHModGhpcy5wYXRoKSk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyb3VwLnJlbW92ZSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgfTtcblxuICByZXR1cm4gSHVsbDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgSHVsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _element_shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar ARROWS = ['startArrow', 'endArrow'];\n\nvar ItemBase =\n/** @class */\nfunction () {\n function ItemBase(cfg) {\n this._cfg = {};\n this.destroyed = false;\n var defaultCfg = {\n /**\n * id\n * @type {string}\n */\n id: undefined,\n\n /**\n * 类型\n * @type {string}\n */\n type: 'item',\n\n /**\n * data model\n * @type {object}\n */\n model: {},\n\n /**\n * g group\n * @type {G.Group}\n */\n group: undefined,\n\n /**\n * is open animate\n * @type {boolean}\n */\n animate: false,\n\n /**\n * visible - not group visible\n * @type {boolean}\n */\n visible: true,\n\n /**\n * locked - lock node\n * @type {boolean}\n */\n locked: false,\n\n /**\n * capture event\n * @type {boolean}\n */\n event: true,\n\n /**\n * key shape to calculate item's bbox\n * @type object\n */\n keyShape: undefined,\n\n /**\n * item's states, such as selected or active\n * @type Array\n */\n states: []\n };\n this._cfg = Object.assign(defaultCfg, this.getDefaultCfg(), cfg);\n var model = this.get('model');\n var id = model.id;\n var itemType = this.get('type');\n\n if (!id) {\n id = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])(itemType);\n this.get('model').id = id;\n }\n\n this.set('id', id);\n var group = cfg.group;\n\n if (group) {\n group.set('item', this);\n group.set('id', id);\n }\n\n this.init();\n this.draw();\n var shapeType = model.shape || model.type || (itemType === 'edge' ? 'line' : 'circle');\n var shapeFactory = this.get('shapeFactory');\n\n if (shapeFactory && shapeFactory[shapeType]) {\n var options = shapeFactory[shapeType].options; // merge the stateStyles from item and shape\n\n if (options && options.stateStyles) {\n var styles = this.get('styles') || model.stateStyles;\n styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, options.stateStyles, styles);\n this.set('styles', styles);\n }\n }\n }\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateCanvasBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.drawInner = function () {\n var self = this;\n var shapeFactory = self.get('shapeFactory');\n var group = self.get('group');\n var model = self.get('model');\n group.clear();\n var visible = model.visible;\n if (visible !== undefined && !visible) self.changeVisibility(visible);\n\n if (!shapeFactory) {\n return;\n }\n\n self.updatePosition(model);\n var cfg = self.getShapeCfg(model); // 可能会附加额外信息\n\n var shapeType = cfg.type;\n var keyShape = shapeFactory.draw(shapeType, cfg, group);\n\n if (keyShape) {\n self.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n }\n\n this.setOriginStyle(); // 防止由于用户外部修改 model 中的 shape 导致 shape 不更新\n\n this.set('currentShape', shapeType);\n this.restoreStates(shapeFactory, shapeType);\n };\n /**\n * 设置图元素原始样式\n * @param keyShape 图元素 keyShape\n * @param group Group 容器\n */\n\n\n ItemBase.prototype.setOriginStyle = function () {\n var group = this.get('group');\n var children = group.get('children');\n var keyShape = this.getKeyShape();\n var self = this;\n var keyShapeName = keyShape.get('name');\n\n if (!this.get('originStyle')) {\n // 第一次 set originStyle,直接拿首次渲染所有图形的 attrs\n var originStyles = {};\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var shapeType = child.get('type');\n var name_1 = child.get('name');\n\n if (name_1 && name_1 !== keyShapeName) {\n originStyles[name_1] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1); // The text's position and matrix is not allowed to be affected by states\n\n if (shapeType === 'text' && originStyles[name_1]) {\n delete originStyles[name_1].x;\n delete originStyles[name_1].y;\n delete originStyles[name_1].matrix;\n }\n } else {\n var keyShapeStyle = self.getShapeStyleByName(); // 可优化,需要去除 child.attr 中其他 shape 名的对象\n\n delete keyShapeStyle.path;\n delete keyShapeStyle.matrix;\n\n if (!keyShapeName) {\n Object.assign(originStyles, keyShapeStyle);\n } else {\n // 若 keyShape 有 name 且 !name,这个图形不是 keyShape,给这个图形一个 name\n if (!name_1) {\n var shapeName = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])('shape');\n child.set('name', shapeName);\n group['shapeMap'][shapeName] = child;\n originStyles[shapeName] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1);\n } else {\n originStyles[keyShapeName] = keyShapeStyle;\n }\n }\n }\n }\n\n self.set('originStyle', originStyles);\n } else {\n // 第二次 set originStyles,需要找到不是 stateStyles 的样式,更新到 originStyles 中\n // 上一次设置的 originStyle,是初始的 shape attrs\n var styles_1 = this.get('originStyle'); // let styles: ShapeStyle = {};\n\n if (keyShapeName && !styles_1[keyShapeName]) styles_1[keyShapeName] = {}; // 获取当前状态样式\n\n var currentStatesStyle_1 = this.getCurrentStatesStyle();\n\n var _loop_1 = function _loop_1(i) {\n var child = children[i];\n var name_2 = child.get('name');\n var shapeAttrs = child.attr();\n\n if (name_2 && name_2 !== keyShapeName) {\n // 有 name 的非 keyShape 图形\n var shapeStateStyle_1 = currentStatesStyle_1[name_2];\n if (!styles_1[name_2]) styles_1[name_2] = {};\n\n if (shapeStateStyle_1) {\n Object.keys(shapeAttrs).forEach(function (key) {\n var value = shapeAttrs[key];\n if (value !== shapeStateStyle_1[key]) styles_1[name_2][key] = value;\n });\n } else {\n styles_1[name_2] = child.get('type') !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(shapeAttrs) : self.getShapeStyleByName(name_2);\n }\n } else {\n var shapeAttrs_1 = child.attr();\n var keyShapeStateStyles_1 = {};\n Object.keys(currentStatesStyle_1).forEach(function (styleKey) {\n var subStyle = currentStatesStyle_1[styleKey];\n\n if (styleKey === keyShapeName || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(subStyle)) {\n keyShapeStateStyles_1[styleKey] = subStyle;\n }\n });\n Object.keys(shapeAttrs_1).forEach(function (key) {\n var value = shapeAttrs_1[key]; // 如果是对象且不是 arrow,则是其他 shape 的样式\n // if (isPlainObject(value) && ARROWS.indexOf(name) === -1) return;\n\n if (keyShapeStateStyles_1[key] !== value) {\n if (keyShapeName) styles_1[keyShapeName][key] = value;else styles_1[key] = value;\n }\n });\n }\n }; // 遍历当前所有图形的 attrs,找到不是 stateStyles 的样式更新到 originStyles 中\n\n\n for (var i = 0; i < children.length; i++) {\n _loop_1(i);\n }\n\n delete styles_1.path;\n delete styles_1.matrix;\n delete styles_1.x;\n delete styles_1.y;\n\n if (styles_1[keyShapeName]) {\n delete styles_1[keyShapeName].x;\n delete styles_1[keyShapeName].y;\n delete styles_1[keyShapeName].matrix;\n delete styles_1[keyShapeName].path;\n }\n\n self.set('originStyle', styles_1);\n }\n };\n /**\n * restore shape states\n * @param shapeFactory\n * @param shapeType\n */\n\n\n ItemBase.prototype.restoreStates = function (shapeFactory, shapeType) {\n var self = this;\n var states = self.get('states');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(states, function (state) {\n shapeFactory.setState(shapeType, state, true, self);\n });\n };\n\n ItemBase.prototype.init = function () {\n var shapeFactory = _element_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getFactory(this.get('type'));\n this.set('shapeFactory', shapeFactory);\n };\n /**\n * 获取属性\n * @internal 仅内部类使用\n * @param {String} key 属性名\n * @return {object | string | number} 属性值\n */\n\n\n ItemBase.prototype.get = function (key) {\n return this._cfg[key];\n };\n /**\n * 设置属性\n * @internal 仅内部类使用\n * @param {String|Object} key 属性名,也可以是对象\n * @param {object | string | number} val 属性值\n */\n\n\n ItemBase.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(key)) {\n this._cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this._cfg), key);\n } else {\n this._cfg[key] = val;\n }\n };\n\n ItemBase.prototype.getDefaultCfg = function () {\n return {};\n };\n /**\n * 更新/刷新等操作后,清除 cache\n */\n\n\n ItemBase.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null);\n this.set(CACHE_CANVAS_BBOX, null);\n };\n /**\n * 渲染前的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.beforeDraw = function () {};\n /**\n * 渲染后的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.afterDraw = function () {};\n /**\n * 更新后做一些工作\n */\n\n\n ItemBase.prototype.afterUpdate = function () {};\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.draw = function () {\n this.beforeDraw();\n this.drawInner();\n this.afterDraw();\n };\n\n ItemBase.prototype.getShapeStyleByName = function (name) {\n var group = this.get('group');\n var currentShape;\n\n if (name) {\n currentShape = group['shapeMap'][name]; // group.find((element) => element.get('name') === name) as IShapeBase;\n } else {\n currentShape = this.getKeyShape();\n }\n\n if (currentShape) {\n var styles_2 = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(currentShape.attr(), function (val, key) {\n // 修改 img 通过 updateItem 实现\n if (key !== 'img' || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(val)) {\n styles_2[key] = val;\n }\n });\n return styles_2;\n }\n\n return {};\n };\n\n ItemBase.prototype.getShapeCfg = function (model, updateType) {\n var styles = this.get('styles');\n\n if (styles) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style);\n return newModel;\n }\n\n return model;\n };\n /**\n * 获取指定状态的样式,去除了全局样式\n * @param state 状态名称\n */\n\n\n ItemBase.prototype.getStateStyle = function (state) {\n var styles = this.get('styles');\n var stateStyle = styles && styles[state];\n return stateStyle;\n };\n /**\n * get keyshape style\n */\n\n\n ItemBase.prototype.getOriginStyle = function () {\n return this.get('originStyle');\n };\n\n ItemBase.prototype.getCurrentStatesStyle = function () {\n var self = this;\n var styles = {};\n var states = self.getStates();\n\n if (!states || !states.length) {\n return this.get('originStyle');\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(self.getStates(), function (state) {\n styles = Object.assign(styles, self.getStateStyle(state));\n });\n return styles;\n };\n /**\n * 更改元素状态, visible 不属于这个范畴\n * @internal 仅提供内部类 graph 使用\n * @param {String} state 状态名\n * @param {Boolean} value 节点状态值\n */\n\n\n ItemBase.prototype.setState = function (state, value) {\n var states = this.get('states');\n var shapeFactory = this.get('shapeFactory');\n var stateName = state;\n var filterStateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = state + \":\" + value;\n filterStateName = state + \":\";\n }\n\n var newStates = states;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isBoolean\"])(value)) {\n var index = states.indexOf(filterStateName);\n\n if (value) {\n if (index > -1) {\n return;\n }\n\n states.push(stateName);\n } else if (index > -1) {\n states.splice(index, 1);\n }\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n // 过滤掉 states 中 filterStateName 相关的状态\n var filterStates = states.filter(function (name) {\n return name.includes(filterStateName);\n });\n\n if (filterStates.length > 0) {\n this.clearStates(filterStates);\n }\n\n newStates = newStates.filter(function (name) {\n return !name.includes(filterStateName);\n });\n newStates.push(stateName);\n this.set('states', newStates);\n }\n\n if (shapeFactory) {\n var model = this.get('model');\n var type = model.type; // 调用 shape/shape.ts 中的 setState\n\n shapeFactory.setState(type, state, value, this);\n }\n };\n /**\n * 清除指定的状态,如果参数为空,则不做任务处理\n * @param states 状态名称\n */\n\n\n ItemBase.prototype.clearStates = function (states) {\n var self = this;\n var originStates = self.getStates();\n var shapeFactory = self.get('shapeFactory');\n var model = self.get('model');\n var shape = model.type;\n\n if (!states) {\n states = originStates;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(states)) {\n states = [states];\n }\n\n var newStates = originStates.filter(function (state) {\n return states.indexOf(state) === -1;\n });\n self.set('states', newStates);\n states.forEach(function (state) {\n shapeFactory.setState(shape, state, false, self);\n });\n };\n /**\n * 节点的图形容器\n * @return {G.Group} 图形容器\n */\n\n\n ItemBase.prototype.getContainer = function () {\n return this.get('group');\n };\n /**\n * 节点的关键形状,用于计算节点大小,连线截距等\n * @return {IShapeBase} 关键形状\n */\n\n\n ItemBase.prototype.getKeyShape = function () {\n return this.get('keyShape');\n };\n /**\n * 节点数据模型\n * @return {Object} 数据模型\n */\n\n\n ItemBase.prototype.getModel = function () {\n return this.get('model');\n };\n /**\n * 节点类型\n * @return {string} 节点的类型\n */\n\n\n ItemBase.prototype.getType = function () {\n return this.get('type');\n };\n /**\n * 获取 Item 的ID\n */\n\n\n ItemBase.prototype.getID = function () {\n return this.get('id');\n };\n /**\n * 是否是 Item 对象,悬空边情况下进行判定\n */\n\n\n ItemBase.prototype.isItem = function () {\n return true;\n };\n /**\n * 获取当前元素的所有状态\n * @return {Array} 元素的所有状态\n */\n\n\n ItemBase.prototype.getStates = function () {\n return this.get('states');\n };\n /**\n * 当前元素是否处于某状态\n * @param {String} state 状态名\n * @return {Boolean} 是否处于某状态\n */\n\n\n ItemBase.prototype.hasState = function (state) {\n var states = this.getStates();\n return states.indexOf(state) >= 0;\n };\n /**\n * 刷新一般用于处理几种情况\n * 1. item model 在外部被改变\n * 2. 边的节点位置发生改变,需要重新计算边\n *\n * 因为数据从外部被修改无法判断一些属性是否被修改,直接走位置和 shape 的更新\n */\n\n\n ItemBase.prototype.refresh = function (updateType) {\n var model = this.get('model'); // 更新元素位置\n\n this.updatePosition(model); // 更新元素内容,样式\n\n this.updateShape(updateType); // 做一些更新之后的操作\n\n this.afterUpdate(); // 清除缓存\n\n this.clearCache();\n };\n\n ItemBase.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 将更新应用到 model 上,刷新属性\n * @internal 仅提供给 Graph 使用,外部直接调用 graph.update 接口\n * @param {Object} cfg 配置项,可以是增量信息\n */\n\n\n ItemBase.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model'); // 仅仅移动位置时,既不更新,也不重绘\n\n if (updateType === 'move') {\n this.updatePosition(cfg);\n } else {\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var originPosition = {\n x: model.x,\n y: model.y\n };\n cfg.x = isNaN(+cfg.x) ? model.x : +cfg.x;\n cfg.y = isNaN(+cfg.y) ? model.y : +cfg.y;\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n } // 直接将更新合到原数据模型上,可以保证用户在外部修改源数据然后刷新时的样式符合期待。\n\n\n Object.assign(model, cfg); // 如果 x,y 有变化,先重置位置\n\n if (originPosition.x !== cfg.x || originPosition.y !== cfg.y) {\n this.updatePosition(cfg);\n }\n\n this.updateShape(updateType);\n }\n\n this.afterUpdate();\n this.clearCache();\n };\n /**\n * 更新元素内容,样式\n */\n\n\n ItemBase.prototype.updateShape = function (updateType) {\n var shapeFactory = this.get('shapeFactory');\n var model = this.get('model');\n var shape = model.type; // 判定是否允许更新\n // 1. 注册的节点允许更新\n // 2. 更新后的 shape 等于原先的 shape\n\n if (shapeFactory.shouldUpdate(shape) && shape === this.get('currentShape')) {\n var updateCfg = this.getShapeCfg(model, updateType);\n shapeFactory.baseUpdate(shape, updateCfg, this, updateType); // 更新完以后重新设置原始样式\n\n if (updateType !== 'move') this.setOriginStyle();\n } else {\n // 如果不满足上面两种状态,重新绘制\n this.draw();\n } // 更新后重置节点状态\n\n\n this.restoreStates(shapeFactory, shape);\n };\n /**\n * 更新位置,避免整体重绘\n * @param {object} cfg 待更新数据\n */\n\n\n ItemBase.prototype.updatePosition = function (cfg) {\n var model = this.get('model');\n var x = isNaN(+cfg.x) ? +model.x : +cfg.x;\n var y = isNaN(+cfg.y) ? +model.y : +cfg.y;\n var group = this.get('group');\n\n if (isNaN(x) || isNaN(y)) {\n return false;\n }\n\n model.x = x;\n model.y = y;\n var matrix = group.getMatrix();\n if (matrix && matrix[6] === x && matrix[7] === y) return false;\n group.resetMatrix(); // G 4.0 element 中移除了矩阵相关方法,详见https://www.yuque.com/antv/blog/kxzk9g#4rMMV\n\n Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"translate\"])(group, {\n x: x,\n y: y\n });\n this.clearCache(); // 位置更新后需要清除缓存\n\n return true;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_BBOX);\n\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set(CACHE_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 获取 item 相对于画布的包围盒,会将从顶层到当前元素的 matrix 都计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getCanvasBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_CANVAS_BBOX);\n\n if (!bbox) {\n bbox = this.calculateCanvasBBox();\n this.set(CACHE_CANVAS_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 将元素放到最前面\n */\n\n\n ItemBase.prototype.toFront = function () {\n var group = this.get('group');\n group.toFront();\n };\n /**\n * 将元素放到最后面\n */\n\n\n ItemBase.prototype.toBack = function () {\n var group = this.get('group');\n group.toBack();\n };\n /**\n * 显示元素\n */\n\n\n ItemBase.prototype.show = function () {\n this.changeVisibility(true);\n };\n /**\n * 隐藏元素\n */\n\n\n ItemBase.prototype.hide = function () {\n this.changeVisibility(false);\n };\n /**\n * 更改是否显示\n * @param {Boolean} visible 是否显示\n */\n\n\n ItemBase.prototype.changeVisibility = function (visible) {\n var group = this.get('group');\n\n if (visible) {\n group.show();\n } else {\n group.hide();\n }\n\n this.set('visible', visible);\n };\n /**\n * 元素是否可见\n * @return {Boolean} 返回该元素是否可见\n */\n\n\n ItemBase.prototype.isVisible = function () {\n return this.get('visible');\n };\n /**\n * 是否拾取及出发该元素的交互事件\n * @param {Boolean} enable 标识位\n */\n\n\n ItemBase.prototype.enableCapture = function (enable) {\n var group = this.get('group');\n\n if (group) {\n group.set('capture', enable);\n }\n };\n\n ItemBase.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return ItemBase;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemBase);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2l0ZW0uanM/MTkyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUMwRDtBQUN0RDtBQUNLO0FBQ0Q7QUFDRDtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsMkRBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0RBQW9EOztBQUVwRDtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFPLEdBQUc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLGVBQWUsNkRBQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsZUFBZSw2REFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCx3REFBSyxrREFBa0Q7O0FBRWhIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseURBQXlEOztBQUV6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLDhCQUE4QiwyREFBUTtBQUN0QztBQUNBO0FBQ0EsZ0VBQWdFLHdEQUFLO0FBQ3JFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDLCtFQUErRTs7QUFFL0U7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLCtEQUErRCx3REFBSztBQUNwRTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEMsZ0VBQWE7QUFDM0Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBLFdBQVc7QUFDWDtBQUNBLFFBQVE7OztBQUdSLHFCQUFxQixxQkFBcUI7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyx5QkFBeUI7QUFDdkM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQixhQUFhLHlCQUF5QjtBQUN0Qzs7O0FBR0E7QUFDQSxRQUFRLGdFQUFhO0FBQ3JCLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw0REFBUztBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSyxVQUFVLDJEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxrQ0FBa0M7O0FBRWxDLCtCQUErQjs7QUFFL0IsaUNBQWlDOztBQUVqQyx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzREFBRztBQUNYO0FBQ0EsT0FBTzs7O0FBR1AsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrRUFBa0U7O0FBRWxFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLElBQUksNERBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaXRlbS9pdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nLCBpc0Jvb2xlYW4sIG1peCwgZGVlcE1peCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9lbGVtZW50L3NoYXBlJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnLi4vdXRpbC9iYXNlJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBBUlJPV1MgPSBbJ3N0YXJ0QXJyb3cnLCAnZW5kQXJyb3cnXTtcblxudmFyIEl0ZW1CYXNlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSXRlbUJhc2UoY2ZnKSB7XG4gICAgdGhpcy5fY2ZnID0ge307XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgZGVmYXVsdENmZyA9IHtcbiAgICAgIC8qKlxuICAgICAgICogaWRcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgIGlkOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICog57G75Z6LXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICB0eXBlOiAnaXRlbScsXG5cbiAgICAgIC8qKlxuICAgICAgICogZGF0YSBtb2RlbFxuICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgbW9kZWw6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIGcgZ3JvdXBcbiAgICAgICAqIEB0eXBlIHtHLkdyb3VwfVxuICAgICAgICovXG4gICAgICBncm91cDogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIGlzIG9wZW4gYW5pbWF0ZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHZpc2libGUgLSBub3QgZ3JvdXAgdmlzaWJsZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIHZpc2libGU6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogbG9ja2VkIC0gbG9jayBub2RlXG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgbG9ja2VkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBjYXB0dXJlIGV2ZW50XG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICoga2V5IHNoYXBlIHRvIGNhbGN1bGF0ZSBpdGVtJ3MgYmJveFxuICAgICAgICogQHR5cGUgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIGtleVNoYXBlOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogaXRlbSdzIHN0YXRlcywgc3VjaCBhcyBzZWxlY3RlZCBvciBhY3RpdmVcbiAgICAgICAqIEB0eXBlIEFycmF5XG4gICAgICAgKi9cbiAgICAgIHN0YXRlczogW11cbiAgICB9O1xuICAgIHRoaXMuX2NmZyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdENmZywgdGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIGlkID0gbW9kZWwuaWQ7XG4gICAgdmFyIGl0ZW1UeXBlID0gdGhpcy5nZXQoJ3R5cGUnKTtcblxuICAgIGlmICghaWQpIHtcbiAgICAgIGlkID0gdW5pcXVlSWQoaXRlbVR5cGUpO1xuICAgICAgdGhpcy5nZXQoJ21vZGVsJykuaWQgPSBpZDtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnaWQnLCBpZCk7XG4gICAgdmFyIGdyb3VwID0gY2ZnLmdyb3VwO1xuXG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBncm91cC5zZXQoJ2l0ZW0nLCB0aGlzKTtcbiAgICAgIGdyb3VwLnNldCgnaWQnLCBpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5kcmF3KCk7XG4gICAgdmFyIHNoYXBlVHlwZSA9IG1vZGVsLnNoYXBlIHx8IG1vZGVsLnR5cGUgfHwgKGl0ZW1UeXBlID09PSAnZWRnZScgPyAnbGluZScgOiAnY2lyY2xlJyk7XG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcblxuICAgIGlmIChzaGFwZUZhY3RvcnkgJiYgc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pIHtcbiAgICAgIHZhciBvcHRpb25zID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0ub3B0aW9uczsgLy8gbWVyZ2UgdGhlIHN0YXRlU3R5bGVzIGZyb20gaXRlbSBhbmQgc2hhcGVcblxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZVN0eWxlcykge1xuICAgICAgICB2YXIgc3R5bGVzID0gdGhpcy5nZXQoJ3N0eWxlcycpIHx8IG1vZGVsLnN0YXRlU3R5bGVzO1xuICAgICAgICBzdHlsZXMgPSBkZWVwTWl4KHt9LCBvcHRpb25zLnN0YXRlU3R5bGVzLCBzdHlsZXMpO1xuICAgICAgICB0aGlzLnNldCgnc3R5bGVzJywgc3R5bGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2FsY3VsYXRlQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgIGJib3guaGVpZ2h0ID0gYmJveC5tYXhZIC0gYmJveC5taW5ZO1xuICAgIGJib3guY2VudGVyWCA9IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMjtcbiAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4ga2V5c2hhcGUg6K6h566X5YyF5Zu055uSXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNhbGN1bGF0ZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7IC8vIOWboOS4uiBncm91cCDlj6/og73kvJrnp7vliqjvvIzmiYDku6Xlv4XpobvpgJrov4fniLblhYPntKDorqHnrpfmiY3og73orqHnrpflh7rmraPnoa7nmoTljIXlm7Tnm5JcblxuICAgIHZhciBiYm94ID0gZ2V0QkJveChrZXlTaGFwZSwgZ3JvdXApO1xuICAgIGJib3gueCA9IGJib3gubWluWDtcbiAgICBiYm94LnkgPSBiYm94Lm1pblk7XG4gICAgYmJveC53aWR0aCA9IGJib3gubWF4WCAtIGJib3gubWluWDtcbiAgICBiYm94LmhlaWdodCA9IGJib3gubWF4WSAtIGJib3gubWluWTtcbiAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgYmJveC5jZW50ZXJZID0gKGJib3gubWluWSArIGJib3gubWF4WSkgLyAyO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuICAvKipcbiAgICogZHJhdyBzaGFwZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5kcmF3SW5uZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIGdyb3VwID0gc2VsZi5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgZ3JvdXAuY2xlYXIoKTtcbiAgICB2YXIgdmlzaWJsZSA9IG1vZGVsLnZpc2libGU7XG4gICAgaWYgKHZpc2libGUgIT09IHVuZGVmaW5lZCAmJiAhdmlzaWJsZSkgc2VsZi5jaGFuZ2VWaXNpYmlsaXR5KHZpc2libGUpO1xuXG4gICAgaWYgKCFzaGFwZUZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTtcbiAgICB2YXIgY2ZnID0gc2VsZi5nZXRTaGFwZUNmZyhtb2RlbCk7IC8vIOWPr+iDveS8mumZhOWKoOmineWkluS/oeaBr1xuXG4gICAgdmFyIHNoYXBlVHlwZSA9IGNmZy50eXBlO1xuICAgIHZhciBrZXlTaGFwZSA9IHNoYXBlRmFjdG9yeS5kcmF3KHNoYXBlVHlwZSwgY2ZnLCBncm91cCk7XG5cbiAgICBpZiAoa2V5U2hhcGUpIHtcbiAgICAgIHNlbGYuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgIGtleVNoYXBlLnNldCgnaXNLZXlTaGFwZScsIHRydWUpO1xuICAgICAga2V5U2hhcGUuc2V0KCdkcmFnZ2FibGUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldE9yaWdpblN0eWxlKCk7IC8vIOmYsuatoueUseS6jueUqOaIt+WklumDqOS/ruaUuSBtb2RlbCDkuK3nmoQgc2hhcGUg5a+86Ie0IHNoYXBlIOS4jeabtOaWsFxuXG4gICAgdGhpcy5zZXQoJ2N1cnJlbnRTaGFwZScsIHNoYXBlVHlwZSk7XG4gICAgdGhpcy5yZXN0b3JlU3RhdGVzKHNoYXBlRmFjdG9yeSwgc2hhcGVUeXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWbvuWFg+e0oOWOn+Wni+agt+W8j1xuICAgKiBAcGFyYW0ga2V5U2hhcGUg5Zu+5YWD57SgIGtleVNoYXBlXG4gICAqIEBwYXJhbSBncm91cCBHcm91cCDlrrnlmahcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2V0T3JpZ2luU3R5bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIGNoaWxkcmVuID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuICAgIHZhciBrZXlTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGtleVNoYXBlTmFtZSA9IGtleVNoYXBlLmdldCgnbmFtZScpO1xuXG4gICAgaWYgKCF0aGlzLmdldCgnb3JpZ2luU3R5bGUnKSkge1xuICAgICAgLy8g56ys5LiA5qyhIHNldCBvcmlnaW5TdHlsZe+8jOebtOaOpeaLv+mmluasoea4suafk+aJgOacieWbvuW9oueahCBhdHRyc1xuICAgICAgdmFyIG9yaWdpblN0eWxlcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgc2hhcGVUeXBlID0gY2hpbGQuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciBuYW1lXzEgPSBjaGlsZC5nZXQoJ25hbWUnKTtcblxuICAgICAgICBpZiAobmFtZV8xICYmIG5hbWVfMSAhPT0ga2V5U2hhcGVOYW1lKSB7XG4gICAgICAgICAgb3JpZ2luU3R5bGVzW25hbWVfMV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7IC8vIFRoZSB0ZXh0J3MgcG9zaXRpb24gYW5kIG1hdHJpeCBpcyBub3QgYWxsb3dlZCB0byBiZSBhZmZlY3RlZCBieSBzdGF0ZXNcblxuICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0JyAmJiBvcmlnaW5TdHlsZXNbbmFtZV8xXSkge1xuICAgICAgICAgICAgZGVsZXRlIG9yaWdpblN0eWxlc1tuYW1lXzFdLng7XG4gICAgICAgICAgICBkZWxldGUgb3JpZ2luU3R5bGVzW25hbWVfMV0ueTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5TdHlsZXNbbmFtZV8xXS5tYXRyaXg7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0eWxlID0gc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKCk7IC8vIOWPr+S8mOWMlu+8jOmcgOimgeWOu+mZpCBjaGlsZC5hdHRyIOS4reWFtuS7liBzaGFwZSDlkI3nmoTlr7nosaFcblxuICAgICAgICAgIGRlbGV0ZSBrZXlTaGFwZVN0eWxlLnBhdGg7XG4gICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGUubWF0cml4O1xuXG4gICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JpZ2luU3R5bGVzLCBrZXlTaGFwZVN0eWxlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g6IulIGtleVNoYXBlIOaciSBuYW1lIOS4lCAhbmFtZe+8jOi/meS4quWbvuW9ouS4jeaYryBrZXlTaGFwZe+8jOe7mei/meS4quWbvuW9ouS4gOS4qiBuYW1lXG4gICAgICAgICAgICBpZiAoIW5hbWVfMSkge1xuICAgICAgICAgICAgICB2YXIgc2hhcGVOYW1lID0gdW5pcXVlSWQoJ3NoYXBlJyk7XG4gICAgICAgICAgICAgIGNoaWxkLnNldCgnbmFtZScsIHNoYXBlTmFtZSk7XG4gICAgICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3NoYXBlTmFtZV0gPSBjaGlsZDtcbiAgICAgICAgICAgICAgb3JpZ2luU3R5bGVzW3NoYXBlTmFtZV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvcmlnaW5TdHlsZXNba2V5U2hhcGVOYW1lXSA9IGtleVNoYXBlU3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIG9yaWdpblN0eWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOesrOS6jOasoSBzZXQgb3JpZ2luU3R5bGVz77yM6ZyA6KaB5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j++8jOabtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG4gICAgICAvLyDkuIrkuIDmrKHorr7nva7nmoQgb3JpZ2luU3R5bGXvvIzmmK/liJ3lp4vnmoQgc2hhcGUgYXR0cnNcbiAgICAgIHZhciBzdHlsZXNfMSA9IHRoaXMuZ2V0KCdvcmlnaW5TdHlsZScpOyAvLyBsZXQgc3R5bGVzOiBTaGFwZVN0eWxlID0ge307XG5cbiAgICAgIGlmIChrZXlTaGFwZU5hbWUgJiYgIXN0eWxlc18xW2tleVNoYXBlTmFtZV0pIHN0eWxlc18xW2tleVNoYXBlTmFtZV0gPSB7fTsgLy8g6I635Y+W5b2T5YmN54q25oCB5qC35byPXG5cbiAgICAgIHZhciBjdXJyZW50U3RhdGVzU3R5bGVfMSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlc1N0eWxlKCk7XG5cbiAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgbmFtZV8yID0gY2hpbGQuZ2V0KCduYW1lJyk7XG4gICAgICAgIHZhciBzaGFwZUF0dHJzID0gY2hpbGQuYXR0cigpO1xuXG4gICAgICAgIGlmIChuYW1lXzIgJiYgbmFtZV8yICE9PSBrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAvLyDmnIkgbmFtZSDnmoTpnZ4ga2V5U2hhcGUg5Zu+5b2iXG4gICAgICAgICAgdmFyIHNoYXBlU3RhdGVTdHlsZV8xID0gY3VycmVudFN0YXRlc1N0eWxlXzFbbmFtZV8yXTtcbiAgICAgICAgICBpZiAoIXN0eWxlc18xW25hbWVfMl0pIHN0eWxlc18xW25hbWVfMl0gPSB7fTtcblxuICAgICAgICAgIGlmIChzaGFwZVN0YXRlU3R5bGVfMSkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2hhcGVBdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHNoYXBlQXR0cnNba2V5XTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBzaGFwZVN0YXRlU3R5bGVfMVtrZXldKSBzdHlsZXNfMVtuYW1lXzJdW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZXNfMVtuYW1lXzJdID0gY2hpbGQuZ2V0KCd0eXBlJykgIT09ICdpbWFnZScgPyBjbG9uZShzaGFwZUF0dHJzKSA6IHNlbGYuZ2V0U2hhcGVTdHlsZUJ5TmFtZShuYW1lXzIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc2hhcGVBdHRyc18xID0gY2hpbGQuYXR0cigpO1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0YXRlU3R5bGVzXzEgPSB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50U3RhdGVzU3R5bGVfMSkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGVLZXkpIHtcbiAgICAgICAgICAgIHZhciBzdWJTdHlsZSA9IGN1cnJlbnRTdGF0ZXNTdHlsZV8xW3N0eWxlS2V5XTtcblxuICAgICAgICAgICAgaWYgKHN0eWxlS2V5ID09PSBrZXlTaGFwZU5hbWUgfHwgIWlzUGxhaW5PYmplY3Qoc3ViU3R5bGUpKSB7XG4gICAgICAgICAgICAgIGtleVNoYXBlU3RhdGVTdHlsZXNfMVtzdHlsZUtleV0gPSBzdWJTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzaGFwZUF0dHJzXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gc2hhcGVBdHRyc18xW2tleV07IC8vIOWmguaenOaYr+WvueixoeS4lOS4jeaYryBhcnJvd++8jOWImeaYr+WFtuS7liBzaGFwZSDnmoTmoLflvI9cbiAgICAgICAgICAgIC8vIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSAmJiBBUlJPV1MuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGtleVNoYXBlU3RhdGVTdHlsZXNfMVtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoa2V5U2hhcGVOYW1lKSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdW2tleV0gPSB2YWx1ZTtlbHNlIHN0eWxlc18xW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTsgLy8g6YGN5Y6G5b2T5YmN5omA5pyJ5Zu+5b2i55qEIGF0dHJz77yM5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j+abtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgc3R5bGVzXzEucGF0aDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS5tYXRyaXg7XG4gICAgICBkZWxldGUgc3R5bGVzXzEueDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS55O1xuXG4gICAgICBpZiAoc3R5bGVzXzFba2V5U2hhcGVOYW1lXSkge1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS54O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS55O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS5tYXRyaXg7XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdLnBhdGg7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIHN0eWxlc18xKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiByZXN0b3JlIHNoYXBlIHN0YXRlc1xuICAgKiBAcGFyYW0gc2hhcGVGYWN0b3J5XG4gICAqIEBwYXJhbSBzaGFwZVR5cGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUucmVzdG9yZVN0YXRlcyA9IGZ1bmN0aW9uIChzaGFwZUZhY3RvcnksIHNoYXBlVHlwZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc3RhdGVzID0gc2VsZi5nZXQoJ3N0YXRlcycpO1xuICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIHNoYXBlRmFjdG9yeS5zZXRTdGF0ZShzaGFwZVR5cGUsIHN0YXRlLCB0cnVlLCBzZWxmKTtcbiAgICB9KTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuZ2V0RmFjdG9yeSh0aGlzLmdldCgndHlwZScpKTtcbiAgICB0aGlzLnNldCgnc2hhcGVGYWN0b3J5Jywgc2hhcGVGYWN0b3J5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5YaF6YOo57G75L2/55SoXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5IOWxnuaAp+WQjVxuICAgKiBAcmV0dXJuIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXJ9IOWxnuaAp+WAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NmZ1trZXldO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5bGe5oCnXG4gICAqIEBpbnRlcm5hbCDku4XlhoXpg6jnsbvkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBrZXkg5bGe5oCn5ZCN77yM5Lmf5Y+v5Lul5piv5a+56LGhXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyfSB2YWwg5bGe5oCn5YC8XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGtleSkpIHtcbiAgICAgIHRoaXMuX2NmZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLl9jZmcpLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jZmdba2V5XSA9IHZhbDtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuICAvKipcbiAgICog5pu05pawL+WIt+aWsOetieaTjeS9nOWQju+8jOa4hemZpCBjYWNoZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4suafk+WJjeeahOmAu+i+ke+8jOaPkOS+m+e7meWtkOexu+WkjeWGmVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5iZWZvcmVEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmuLLmn5PlkI7nmoTpgLvovpHvvIzmj5Dkvpvnu5nlrZDnsbvlpI3lhplcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmm7TmlrDlkI7lgZrkuIDkupvlt6XkvZxcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJVcGRhdGUgPSBmdW5jdGlvbiAoKSB7fTtcbiAgLyoqXG4gICAqIGRyYXcgc2hhcGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmJlZm9yZURyYXcoKTtcbiAgICB0aGlzLmRyYXdJbm5lcigpO1xuICAgIHRoaXMuYWZ0ZXJEcmF3KCk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlU3R5bGVCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIHZhciBjdXJyZW50U2hhcGU7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgY3VycmVudFNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV07IC8vIGdyb3VwLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IG5hbWUpIGFzIElTaGFwZUJhc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFNoYXBlKSB7XG4gICAgICB2YXIgc3R5bGVzXzIgPSB7fTtcbiAgICAgIGVhY2goY3VycmVudFNoYXBlLmF0dHIoKSwgZnVuY3Rpb24gKHZhbCwga2V5KSB7XG4gICAgICAgIC8vIOS/ruaUuSBpbWcg6YCa6L+HIHVwZGF0ZUl0ZW0g5a6e546wXG4gICAgICAgIGlmIChrZXkgIT09ICdpbWcnIHx8IGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgICAgICBzdHlsZXNfMltrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdHlsZXNfMjtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlQ2ZnID0gZnVuY3Rpb24gKG1vZGVsLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIC8vIG1lcmdlIGdyYXBo55qEaXRlbeagt+W8j+S4juaVsOaNruaooeWei+S4reeahOagt+W8j1xuICAgICAgdmFyIG5ld01vZGVsID0gbW9kZWw7XG4gICAgICBuZXdNb2RlbC5zdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCBtb2RlbC5zdHlsZSk7XG4gICAgICByZXR1cm4gbmV3TW9kZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5oyH5a6a54q25oCB55qE5qC35byP77yM5Y676Zmk5LqG5YWo5bGA5qC35byPXG4gICAqIEBwYXJhbSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0U3RhdGVTdHlsZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIHN0YXRlU3R5bGUgPSBzdHlsZXMgJiYgc3R5bGVzW3N0YXRlXTtcbiAgICByZXR1cm4gc3RhdGVTdHlsZTtcbiAgfTtcbiAgLyoqXG4gICAqIGdldCBrZXlzaGFwZSBzdHlsZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRPcmlnaW5TdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ29yaWdpblN0eWxlJyk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEN1cnJlbnRTdGF0ZXNTdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHN0eWxlcyA9IHt9O1xuICAgIHZhciBzdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuXG4gICAgaWYgKCFzdGF0ZXMgfHwgIXN0YXRlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnb3JpZ2luU3R5bGUnKTtcbiAgICB9XG5cbiAgICBlYWNoKHNlbGYuZ2V0U3RhdGVzKCksIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgc3R5bGVzID0gT2JqZWN0LmFzc2lnbihzdHlsZXMsIHNlbGYuZ2V0U3RhdGVTdHlsZShzdGF0ZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnlhYPntKDnirbmgIHvvIwgdmlzaWJsZSDkuI3lsZ7kuo7ov5nkuKrojIPnlbRcbiAgICogQGludGVybmFsIOS7heaPkOS+m+WGhemDqOexuyBncmFwaCDkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0YXRlIOeKtuaAgeWQjVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHZhbHVlIOiKgueCueeKtuaAgeWAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGVzID0gdGhpcy5nZXQoJ3N0YXRlcycpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHN0YXRlTmFtZSA9IHN0YXRlO1xuICAgIHZhciBmaWx0ZXJTdGF0ZU5hbWUgPSBzdGF0ZTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlTmFtZSA9IHN0YXRlICsgXCI6XCIgKyB2YWx1ZTtcbiAgICAgIGZpbHRlclN0YXRlTmFtZSA9IHN0YXRlICsgXCI6XCI7XG4gICAgfVxuXG4gICAgdmFyIG5ld1N0YXRlcyA9IHN0YXRlcztcblxuICAgIGlmIChpc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB2YXIgaW5kZXggPSBzdGF0ZXMuaW5kZXhPZihmaWx0ZXJTdGF0ZU5hbWUpO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZXMucHVzaChzdGF0ZU5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHN0YXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAvLyDov4fmu6Tmjokgc3RhdGVzIOS4rSBmaWx0ZXJTdGF0ZU5hbWUg55u45YWz55qE54q25oCBXG4gICAgICB2YXIgZmlsdGVyU3RhdGVzID0gc3RhdGVzLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhmaWx0ZXJTdGF0ZU5hbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaWx0ZXJTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsZWFyU3RhdGVzKGZpbHRlclN0YXRlcyk7XG4gICAgICB9XG5cbiAgICAgIG5ld1N0YXRlcyA9IG5ld1N0YXRlcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICFuYW1lLmluY2x1ZGVzKGZpbHRlclN0YXRlTmFtZSk7XG4gICAgICB9KTtcbiAgICAgIG5ld1N0YXRlcy5wdXNoKHN0YXRlTmFtZSk7XG4gICAgICB0aGlzLnNldCgnc3RhdGVzJywgbmV3U3RhdGVzKTtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGVGYWN0b3J5KSB7XG4gICAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICAgIHZhciB0eXBlID0gbW9kZWwudHlwZTsgLy8g6LCD55SoIHNoYXBlL3NoYXBlLnRzIOS4reeahCBzZXRTdGF0ZVxuXG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUodHlwZSwgc3RhdGUsIHZhbHVlLCB0aGlzKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmuIXpmaTmjIflrprnmoTnirbmgIHvvIzlpoLmnpzlj4LmlbDkuLrnqbrvvIzliJnkuI3lgZrku7vliqHlpITnkIZcbiAgICogQHBhcmFtIHN0YXRlcyDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2xlYXJTdGF0ZXMgPSBmdW5jdGlvbiAoc3RhdGVzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvcmlnaW5TdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTtcblxuICAgIGlmICghc3RhdGVzKSB7XG4gICAgICBzdGF0ZXMgPSBvcmlnaW5TdGF0ZXM7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHN0YXRlcykpIHtcbiAgICAgIHN0YXRlcyA9IFtzdGF0ZXNdO1xuICAgIH1cblxuICAgIHZhciBuZXdTdGF0ZXMgPSBvcmlnaW5TdGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgcmV0dXJuIHN0YXRlcy5pbmRleE9mKHN0YXRlKSA9PT0gLTE7XG4gICAgfSk7XG4gICAgc2VsZi5zZXQoJ3N0YXRlcycsIG5ld1N0YXRlcyk7XG4gICAgc3RhdGVzLmZvckVhY2goZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUoc2hhcGUsIHN0YXRlLCBmYWxzZSwgc2VsZik7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlm77lvaLlrrnlmahcbiAgICogQHJldHVybiB7Ry5Hcm91cH0g5Zu+5b2i5a655ZmoXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlhbPplK7lvaLnirbvvIznlKjkuo7orqHnrpfoioLngrnlpKflsI/vvIzov57nur/miKrot53nrYlcbiAgICogQHJldHVybiB7SVNoYXBlQmFzZX0g5YWz6ZSu5b2i54q2XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEtleVNoYXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRNb2RlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21vZGVsJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnsbvlnotcbiAgICogQHJldHVybiB7c3RyaW5nfSDoioLngrnnmoTnsbvlnotcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3R5cGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBJdGVtIOeahElEXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldElEID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaWQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaYryBJdGVtIOWvueixoe+8jOaCrOepuui+ueaDheWGteS4i+i/m+ihjOWIpOWumlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5pc0l0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3lhYPntKDnmoTmiYDmnInnirbmgIFcbiAgICogQHJldHVybiB7QXJyYXl9IOWFg+e0oOeahOaJgOacieeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRTdGF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzdGF0ZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOW9k+WJjeWFg+e0oOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RhdGUg54q25oCB5ZCNXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5oYXNTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdldFN0YXRlcygpO1xuICAgIHJldHVybiBzdGF0ZXMuaW5kZXhPZihzdGF0ZSkgPj0gMDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIt+aWsOS4gOiIrOeUqOS6juWkhOeQhuWHoOenjeaDheWGtVxuICAgKiAxLiBpdGVtIG1vZGVsIOWcqOWklumDqOiiq+aUueWPmFxuICAgKiAyLiDovrnnmoToioLngrnkvY3nva7lj5HnlJ/mlLnlj5jvvIzpnIDopoHph43mlrDorqHnrpfovrlcbiAgICpcbiAgICog5Zug5Li65pWw5o2u5LuO5aSW6YOo6KKr5L+u5pS55peg5rOV5Yik5pat5LiA5Lqb5bGe5oCn5piv5ZCm6KKr5L+u5pS577yM55u05o6l6LWw5L2N572u5ZKMIHNoYXBlIOeahOabtOaWsFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5pu05paw5YWD57Sg5L2N572uXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTsgLy8g5pu05paw5YWD57Sg5YaF5a6577yM5qC35byPXG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKHVwZGF0ZVR5cGUpOyAvLyDlgZrkuIDkupvmm7TmlrDkuYvlkI7nmoTmk43kvZxcblxuICAgIHRoaXMuYWZ0ZXJVcGRhdGUoKTsgLy8g5riF6Zmk57yT5a2YXG5cbiAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog5bCG5pu05paw5bqU55So5YiwIG1vZGVsIOS4iu+8jOWIt+aWsOWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5o+Q5L6b57uZIEdyYXBoIOS9v+eUqO+8jOWklumDqOebtOaOpeiwg+eUqCBncmFwaC51cGRhdGUg5o6l5Y+jXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAgICAgIOmFjee9rumhue+8jOWPr+S7peaYr+WinumHj+S/oeaBr1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoY2ZnLCB1cGRhdGVUeXBlKSB7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09IHZvaWQgMCkge1xuICAgICAgdXBkYXRlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5LuF5LuF56e75Yqo5L2N572u5pe277yM5pei5LiN5pu05paw77yM5Lmf5LiN6YeN57uYXG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGNmZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvcmlWaXNpYmxlID0gbW9kZWwudmlzaWJsZTtcbiAgICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgICBpZiAob3JpVmlzaWJsZSAhPT0gY2ZnVmlzaWJsZSAmJiBjZmdWaXNpYmxlICE9PSB1bmRlZmluZWQpIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShjZmdWaXNpYmxlKTtcbiAgICAgIHZhciBvcmlnaW5Qb3NpdGlvbiA9IHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfTtcbiAgICAgIGNmZy54ID0gaXNOYU4oK2NmZy54KSA/IG1vZGVsLnggOiArY2ZnLng7XG4gICAgICBjZmcueSA9IGlzTmFOKCtjZmcueSkgPyBtb2RlbC55IDogK2NmZy55O1xuICAgICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgICAgaWYgKGNmZy5zdGF0ZVN0eWxlcykge1xuICAgICAgICAvLyDmm7TmlrAgaXRlbSDml7bmm7TmlrAgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICAgIG1peChzdHlsZXMsIHN0YXRlU3R5bGVzKTtcbiAgICAgICAgZGVsZXRlIGNmZy5zdGF0ZVN0eWxlcztcbiAgICAgIH0gLy8g55u05o6l5bCG5pu05paw5ZCI5Yiw5Y6f5pWw5o2u5qih5Z6L5LiK77yM5Y+v5Lul5L+d6K+B55So5oi35Zyo5aSW6YOo5L+u5pS55rqQ5pWw5o2u54S25ZCO5Yi35paw5pe255qE5qC35byP56ym5ZCI5pyf5b6F44CCXG5cblxuICAgICAgT2JqZWN0LmFzc2lnbihtb2RlbCwgY2ZnKTsgLy8g5aaC5p6cIHgseSDmnInlj5jljJbvvIzlhYjph43nva7kvY3nva5cblxuICAgICAgaWYgKG9yaWdpblBvc2l0aW9uLnggIT09IGNmZy54IHx8IG9yaWdpblBvc2l0aW9uLnkgIT09IGNmZy55KSB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oY2ZnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDlhYPntKDlhoXlrrnvvIzmoLflvI9cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUudXBkYXRlU2hhcGUgPSBmdW5jdGlvbiAodXBkYXRlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTsgLy8g5Yik5a6a5piv5ZCm5YWB6K645pu05pawXG4gICAgLy8gMS4g5rOo5YaM55qE6IqC54K55YWB6K645pu05pawXG4gICAgLy8gMi4g5pu05paw5ZCO55qEIHNoYXBlIOetieS6juWOn+WFiOeahCBzaGFwZVxuXG4gICAgaWYgKHNoYXBlRmFjdG9yeS5zaG91bGRVcGRhdGUoc2hhcGUpICYmIHNoYXBlID09PSB0aGlzLmdldCgnY3VycmVudFNoYXBlJykpIHtcbiAgICAgIHZhciB1cGRhdGVDZmcgPSB0aGlzLmdldFNoYXBlQ2ZnKG1vZGVsLCB1cGRhdGVUeXBlKTtcbiAgICAgIHNoYXBlRmFjdG9yeS5iYXNlVXBkYXRlKHNoYXBlLCB1cGRhdGVDZmcsIHRoaXMsIHVwZGF0ZVR5cGUpOyAvLyDmm7TmlrDlrozku6XlkI7ph43mlrDorr7nva7ljp/lp4vmoLflvI9cblxuICAgICAgaWYgKHVwZGF0ZVR5cGUgIT09ICdtb3ZlJykgdGhpcy5zZXRPcmlnaW5TdHlsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzkuI3mu6HotrPkuIrpnaLkuKTnp43nirbmgIHvvIzph43mlrDnu5jliLZcbiAgICAgIHRoaXMuZHJhdygpO1xuICAgIH0gLy8g5pu05paw5ZCO6YeN572u6IqC54K554q25oCBXG5cblxuICAgIHRoaXMucmVzdG9yZVN0YXRlcyhzaGFwZUZhY3RvcnksIHNoYXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOS9jee9ru+8jOmBv+WFjeaVtOS9k+mHjee7mFxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOW+heabtOaWsOaVsOaNrlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGVQb3NpdGlvbiA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgeCA9IGlzTmFOKCtjZmcueCkgPyArbW9kZWwueCA6ICtjZmcueDtcbiAgICB2YXIgeSA9IGlzTmFOKCtjZmcueSkgPyArbW9kZWwueSA6ICtjZmcueTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChpc05hTih4KSB8fCBpc05hTih5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG1vZGVsLnggPSB4O1xuICAgIG1vZGVsLnkgPSB5O1xuICAgIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcbiAgICBpZiAobWF0cml4ICYmIG1hdHJpeFs2XSA9PT0geCAmJiBtYXRyaXhbN10gPT09IHkpIHJldHVybiBmYWxzZTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpOyAvLyBHIDQuMCBlbGVtZW50IOS4reenu+mZpOS6huefqemYteebuOWFs+aWueazle+8jOivpuingWh0dHBzOi8vd3d3Lnl1cXVlLmNvbS9hbnR2L2Jsb2cva3h6azlnIzRyTU1WXG5cbiAgICB0cmFuc2xhdGUoZ3JvdXAsIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7IC8vIOS9jee9ruabtOaWsOWQjumcgOimgea4hemZpOe8k+WtmFxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnmoTljIXlm7Tnm5LvvIzov5nkuKrljIXlm7Tnm5LmmK/nm7jlr7nkuo4gaXRlbSDoh6rlt7HvvIzkuI3kvJrlsIYgbWF0cml4IOiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9CQk9YKTtcblxuICAgIGlmICghYmJveCkge1xuICAgICAgYmJveCA9IHRoaXMuY2FsY3VsYXRlQkJveCgpO1xuICAgICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgYmJveCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5LvvIzkvJrlsIbku47pobblsYLliLDlvZPliY3lhYPntKDnmoQgbWF0cml4IOmDveiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9DQU5WQVNfQkJPWCk7XG5cbiAgICBpZiAoIWJib3gpIHtcbiAgICAgIGJib3ggPSB0aGlzLmNhbGN1bGF0ZUNhbnZhc0JCb3goKTtcbiAgICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBiYm94KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmJveDtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWJjemdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0Zyb250ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnRvRnJvbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWQjumdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0JhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgZ3JvdXAudG9CYWNrKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmmL7npLrlhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH07XG4gIC8qKlxuICAgKiDpmpDol4/lhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9O1xuICAvKipcbiAgICog5pu05pS55piv5ZCm5pi+56S6XG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHZpc2libGUg5piv5ZCm5pi+56S6XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNoYW5nZVZpc2liaWxpdHkgPSBmdW5jdGlvbiAodmlzaWJsZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGdyb3VwLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXAuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgdmlzaWJsZSk7XG4gIH07XG4gIC8qKlxuICAgKiDlhYPntKDmmK/lkKblj6/op4FcbiAgICogQHJldHVybiB7Qm9vbGVhbn0g6L+U5Zue6K+l5YWD57Sg5piv5ZCm5Y+v6KeBXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmlzVmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3Zpc2libGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaLvuWPluWPiuWHuuWPkeivpeWFg+e0oOeahOS6pOS6kuS6i+S7tlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZSDmoIfor4bkvY1cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZW5hYmxlQ2FwdHVyZSA9IGZ1bmN0aW9uIChlbmFibGUpIHtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChncm91cCkge1xuICAgICAgZ3JvdXAuc2V0KCdjYXB0dXJlJywgZW5hYmxlKTtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgdmFyIGFuaW1hdGUgPSB0aGlzLmdldCgnYW5pbWF0ZScpO1xuICAgICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG5cbiAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgIGdyb3VwLnN0b3BBbmltYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddID0ge307XG4gICAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICAgIGdyb3VwLnJlbW92ZSgpO1xuICAgICAgdGhpcy5fY2ZnID0gbnVsbDtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEl0ZW1CYXNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBJdGVtQmFzZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js\");\n\n\n\n\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\nvar CACHE_BBOX = 'bboxCache';\n\nvar Node =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Node, _super);\n\n function Node() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Node.prototype.getNearestPoint = function (points, curPoint) {\n var index = 0;\n var nearestPoint = points[0];\n var minDistance = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(points[0], curPoint);\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var dis = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(point, curPoint);\n\n if (dis < minDistance) {\n nearestPoint = point;\n minDistance = dis;\n index = i;\n }\n }\n\n nearestPoint.anchorIndex = index;\n return nearestPoint;\n };\n\n Node.prototype.getDefaultCfg = function () {\n return {\n type: 'node',\n edges: []\n };\n };\n /**\n * 获取从节点关联的所有边\n */\n\n\n Node.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取所有的入边\n */\n\n\n Node.prototype.getInEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('target') === self;\n });\n };\n /**\n * 获取所有的出边\n */\n\n\n Node.prototype.getOutEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('source') === self;\n });\n };\n /**\n * 获取节点的邻居节点\n *\n * @returns {INode[]}\n * @memberof Node\n */\n\n\n Node.prototype.getNeighbors = function (type) {\n var _this = this;\n\n var edges = this.get('edges');\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.getSource() === _this;\n };\n\n return edges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.getTarget();\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.getTarget() === _this;\n };\n\n return edges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.getSource();\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.getSource() === _this ? edge.getTarget() : edge.getSource();\n };\n\n return edges.map(neighhborsConverter);\n };\n /**\n * 根据锚点的索引获取连接点\n * @param {Number} index 索引\n */\n\n\n Node.prototype.getLinkPointByAnchor = function (index) {\n var anchorPoints = this.getAnchorPoints();\n return anchorPoints[index];\n };\n /**\n * 获取连接点\n * @param point\n */\n\n\n Node.prototype.getLinkPoint = function (point) {\n var keyShape = this.get('keyShape');\n var type = keyShape.get('type');\n var itemType = this.get('type');\n var centerX;\n var centerY;\n var bbox = this.getBBox();\n\n if (itemType === 'combo') {\n centerX = bbox.centerX || (bbox.maxX + bbox.minX) / 2;\n centerY = bbox.centerY || (bbox.maxY + bbox.minY) / 2;\n } else {\n centerX = bbox.centerX;\n centerY = bbox.centerY;\n }\n\n var anchorPoints = this.getAnchorPoints();\n var intersectPoint;\n\n switch (type) {\n case 'circle':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getCircleIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n r: bbox.width / 2\n }, point);\n break;\n\n case 'ellipse':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getEllipseIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n rx: bbox.width / 2,\n ry: bbox.height / 2\n }, point);\n break;\n\n default:\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getRectIntersectByPoint\"])(bbox, point);\n }\n\n var linkPoint = intersectPoint; // 如果存在锚点,则使用交点计算最近的锚点\n\n if (anchorPoints.length) {\n if (!linkPoint) {\n // 如果计算不出交点\n linkPoint = point;\n }\n\n linkPoint = this.getNearestPoint(anchorPoints, linkPoint);\n }\n\n if (!linkPoint) {\n // 如果最终依然没法找到锚点和连接点,直接返回中心点\n linkPoint = {\n x: centerX,\n y: centerY\n };\n }\n\n return linkPoint;\n };\n /**\n * 获取锚点的定义\n * @return {array} anchorPoints\n */\n\n\n Node.prototype.getAnchorPoints = function () {\n var anchorPoints = this.get(CACHE_ANCHOR_POINTS);\n\n if (!anchorPoints) {\n anchorPoints = [];\n var shapeFactory = this.get('shapeFactory');\n var bbox_1 = this.getBBox();\n var model = this.get('model');\n var shapeCfg = this.getShapeCfg(model);\n var type = model.type;\n var points = shapeFactory.getAnchorPoints(type, shapeCfg) || [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (pointArr, index) {\n var point = {\n x: bbox_1.minX + pointArr[0] * bbox_1.width,\n y: bbox_1.minY + pointArr[1] * bbox_1.height,\n anchorIndex: index\n };\n anchorPoints.push(point);\n });\n this.set(CACHE_ANCHOR_POINTS, anchorPoints);\n }\n\n return anchorPoints;\n };\n /**\n * add edge\n * @param edge Edge instance\n */\n\n\n Node.prototype.addEdge = function (edge) {\n this.get('edges').push(edge);\n };\n /**\n * 锁定节点\n */\n\n\n Node.prototype.lock = function () {\n this.set('locked', true);\n };\n /**\n * 解锁锁定的节点\n */\n\n\n Node.prototype.unlock = function () {\n this.set('locked', false);\n };\n\n Node.prototype.hasLocked = function () {\n return this.get('locked');\n };\n /**\n * 移除边\n * @param {Edge} edge 边\n */\n\n\n Node.prototype.removeEdge = function (edge) {\n var edges = this.getEdges();\n var index = edges.indexOf(edge);\n if (index > -1) edges.splice(index, 1);\n };\n\n Node.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n /**\n * 判断更新的种类,move 表示仅移动,bbox 表示大小有变化,style 表示仅与大小无关的参数变化\n * @param cfg 节点数据模型\n */\n\n\n Node.prototype.getUpdateType = function (cfg) {\n var _a, _b, _c, _d, _e;\n\n if (!cfg) return undefined;\n var existX = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.x);\n var existY = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.y);\n var keys = Object.keys(cfg); // 仅有一个字段,包含 x 或者 包含 y\n // 两个字段,同时有 x,同时有 y\n\n if (keys.length === 1 && (existX || existY) || keys.length === 2 && existX && existY) return 'move';\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size || (cfg === null || cfg === void 0 ? void 0 : cfg.style) && (((_a = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _a === void 0 ? void 0 : _a.r) || ((_b = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _b === void 0 ? void 0 : _b.width) || ((_c = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _d === void 0 ? void 0 : _d.rx) || ((_e = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _e === void 0 ? void 0 : _e.ry))) return 'bbox|label';\n var updateLabel = keys.includes('label') || keys.includes('labelCfg');\n return updateLabel ? 'style|label' : 'style';\n };\n\n return Node;\n}(_item__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Node);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL25vZGUuanM/NjQ4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2lCO0FBQ3FFO0FBQzlGO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDJEQUFROztBQUU5QixtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0EsZ0JBQWdCLDJEQUFROztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsNEVBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLHlCQUF5Qiw2RUFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSx5QkFBeUIsMEVBQXVCO0FBQ2hEOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix3REFBSztBQUN2QixrQkFBa0Isd0RBQUs7QUFDdkIsZ0NBQWdDO0FBQ2hDOztBQUVBO0FBQ0EsUUFBUSwyREFBUSxXQUFXLDJEQUFRO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxtRUFBSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2l0ZW0vbm9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNOaWwsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBkaXN0YW5jZSwgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCwgZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQsIGdldFJlY3RJbnRlcnNlY3RCeVBvaW50IH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCBJdGVtIGZyb20gJy4vaXRlbSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG52YXIgQ0FDSEVfQkJPWCA9ICdiYm94Q2FjaGUnO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhOb2RlLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVhcmVzdFBvaW50ID0gZnVuY3Rpb24gKHBvaW50cywgY3VyUG9pbnQpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBuZWFyZXN0UG9pbnQgPSBwb2ludHNbMF07XG4gICAgdmFyIG1pbkRpc3RhbmNlID0gZGlzdGFuY2UocG9pbnRzWzBdLCBjdXJQb2ludCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgdmFyIGRpcyA9IGRpc3RhbmNlKHBvaW50LCBjdXJQb2ludCk7XG5cbiAgICAgIGlmIChkaXMgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICBuZWFyZXN0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXM7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZWFyZXN0UG9pbnQuYW5jaG9ySW5kZXggPSBpbmRleDtcbiAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bku47oioLngrnlhbPogZTnmoTmiYDmnInovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInnmoTlhaXovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRJbkVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJykuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXQoJ3RhcmdldCcpID09PSBzZWxmO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5omA5pyJ55qE5Ye66L65XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0T3V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiB0aGlzLmdldCgnZWRnZXMnKS5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmdldCgnc291cmNlJykgPT09IHNlbGY7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTpgrvlsYXoioLngrlcbiAgICpcbiAgICogQHJldHVybnMge0lOb2RlW119XG4gICAqIEBtZW1iZXJvZiBOb2RlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXQoJ2VkZ2VzJyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzEgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzEoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXM7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMSkubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICAvLyDlvZPliY3oioLngrnkuLogdGFyZ2V077yM5a6D5omA5oyH5ZCR55qE5rqQ6IqC54K5XG4gICAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UuZ2V0VGFyZ2V0KCkgPT09IF90aGlzO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIH0pO1xuICAgIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcihlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXMgPyBlZGdlLmdldFRhcmdldCgpIDogZWRnZS5nZXRTb3VyY2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrumUmueCueeahOe0ouW8leiOt+WPlui/nuaOpeeCuVxuICAgKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IOe0ouW8lVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmdldExpbmtQb2ludEJ5QW5jaG9yID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0QW5jaG9yUG9pbnRzKCk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50c1tpbmRleF07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bov57mjqXngrlcbiAgICogQHBhcmFtIHBvaW50XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TGlua1BvaW50ID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcbiAgICB2YXIgaXRlbVR5cGUgPSB0aGlzLmdldCgndHlwZScpO1xuICAgIHZhciBjZW50ZXJYO1xuICAgIHZhciBjZW50ZXJZO1xuICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG5cbiAgICBpZiAoaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclggfHwgKGJib3gubWF4WCArIGJib3gubWluWCkgLyAyO1xuICAgICAgY2VudGVyWSA9IGJib3guY2VudGVyWSB8fCAoYmJveC5tYXhZICsgYmJveC5taW5ZKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclg7XG4gICAgICBjZW50ZXJZID0gYmJveC5jZW50ZXJZO1xuICAgIH1cblxuICAgIHZhciBhbmNob3JQb2ludHMgPSB0aGlzLmdldEFuY2hvclBvaW50cygpO1xuICAgIHZhciBpbnRlcnNlY3RQb2ludDtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgaW50ZXJzZWN0UG9pbnQgPSBnZXRDaXJjbGVJbnRlcnNlY3RCeVBvaW50KHtcbiAgICAgICAgICB4OiBjZW50ZXJYLFxuICAgICAgICAgIHk6IGNlbnRlclksXG4gICAgICAgICAgcjogYmJveC53aWR0aCAvIDJcbiAgICAgICAgfSwgcG9pbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZWxsaXBzZSc6XG4gICAgICAgIGludGVyc2VjdFBvaW50ID0gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoe1xuICAgICAgICAgIHg6IGNlbnRlclgsXG4gICAgICAgICAgeTogY2VudGVyWSxcbiAgICAgICAgICByeDogYmJveC53aWR0aCAvIDIsXG4gICAgICAgICAgcnk6IGJib3guaGVpZ2h0IC8gMlxuICAgICAgICB9LCBwb2ludCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpbnRlcnNlY3RQb2ludCA9IGdldFJlY3RJbnRlcnNlY3RCeVBvaW50KGJib3gsIHBvaW50KTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50ID0gaW50ZXJzZWN0UG9pbnQ7IC8vIOWmguaenOWtmOWcqOmUmueCue+8jOWImeS9v+eUqOS6pOeCueiuoeeul+acgOi/keeahOmUmueCuVxuXG4gICAgaWYgKGFuY2hvclBvaW50cy5sZW5ndGgpIHtcbiAgICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAgIC8vIOWmguaenOiuoeeul+S4jeWHuuS6pOeCuVxuICAgICAgICBsaW5rUG9pbnQgPSBwb2ludDtcbiAgICAgIH1cblxuICAgICAgbGlua1BvaW50ID0gdGhpcy5nZXROZWFyZXN0UG9pbnQoYW5jaG9yUG9pbnRzLCBsaW5rUG9pbnQpO1xuICAgIH1cblxuICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAvLyDlpoLmnpzmnIDnu4jkvp3nhLbmsqHms5Xmib7liLDplJrngrnlkozov57mjqXngrnvvIznm7TmjqXov5Tlm57kuK3lv4PngrlcbiAgICAgIGxpbmtQb2ludCA9IHtcbiAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgeTogY2VudGVyWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlua1BvaW50O1xuICB9O1xuICAvKipcbiAgICog6I635Y+W6ZSa54K555qE5a6a5LmJXG4gICAqIEByZXR1cm4ge2FycmF5fSBhbmNob3JQb2ludHNcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRBbmNob3JQb2ludHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMpO1xuXG4gICAgaWYgKCFhbmNob3JQb2ludHMpIHtcbiAgICAgIGFuY2hvclBvaW50cyA9IFtdO1xuICAgICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICAgIHZhciBiYm94XzEgPSB0aGlzLmdldEJCb3goKTtcbiAgICAgIHZhciBtb2RlbCA9IHRoaXMuZ2V0KCdtb2RlbCcpO1xuICAgICAgdmFyIHNoYXBlQ2ZnID0gdGhpcy5nZXRTaGFwZUNmZyhtb2RlbCk7XG4gICAgICB2YXIgdHlwZSA9IG1vZGVsLnR5cGU7XG4gICAgICB2YXIgcG9pbnRzID0gc2hhcGVGYWN0b3J5LmdldEFuY2hvclBvaW50cyh0eXBlLCBzaGFwZUNmZykgfHwgW107XG4gICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHBvaW50QXJyLCBpbmRleCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgICAgeDogYmJveF8xLm1pblggKyBwb2ludEFyclswXSAqIGJib3hfMS53aWR0aCxcbiAgICAgICAgICB5OiBiYm94XzEubWluWSArIHBvaW50QXJyWzFdICogYmJveF8xLmhlaWdodCxcbiAgICAgICAgICBhbmNob3JJbmRleDogaW5kZXhcbiAgICAgICAgfTtcbiAgICAgICAgYW5jaG9yUG9pbnRzLnB1c2gocG9pbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBhbmNob3JQb2ludHMpO1xuICAgIH1cblxuICAgIHJldHVybiBhbmNob3JQb2ludHM7XG4gIH07XG4gIC8qKlxuICAgKiBhZGQgZWRnZVxuICAgKiBAcGFyYW0gZWRnZSBFZGdlIGluc3RhbmNlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuYWRkRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdGhpcy5nZXQoJ2VkZ2VzJykucHVzaChlZGdlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmUgeWumuiKgueCuVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmxvY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ2xvY2tlZCcsIHRydWUpO1xuICB9O1xuICAvKipcbiAgICog6Kej6ZSB6ZSB5a6a55qE6IqC54K5XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUudW5sb2NrID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdsb2NrZWQnLCBmYWxzZSk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuaGFzTG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbG9ja2VkJyk7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTovrlcbiAgICogQHBhcmFtIHtFZGdlfSBlZGdlIOi+uVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUVkZ2UgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuZ2V0RWRnZXMoKTtcbiAgICB2YXIgaW5kZXggPSBlZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmIChpbmRleCA+IC0xKSBlZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmNsZWFyQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgbnVsbCk7IC8vIOa4heeQhue8k+WtmOeahCBiYm94XG5cbiAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreabtOaWsOeahOenjeexu++8jG1vdmUg6KGo56S65LuF56e75Yqo77yMYmJveCDooajnpLrlpKflsI/mnInlj5jljJbvvIxzdHlsZSDooajnpLrku4XkuI7lpKflsI/ml6DlhbPnmoTlj4LmlbDlj5jljJZcbiAgICogQHBhcmFtIGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRVcGRhdGVUeXBlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG5cbiAgICBpZiAoIWNmZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB2YXIgZXhpc3RYID0gIWlzTmlsKGNmZy54KTtcbiAgICB2YXIgZXhpc3RZID0gIWlzTmlsKGNmZy55KTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNmZyk7IC8vIOS7heacieS4gOS4quWtl+aute+8jOWMheWQqyB4IOaIluiAhSDljIXlkKsgeVxuICAgIC8vIOS4pOS4quWtl+aute+8jOWQjOaXtuaciSB477yM5ZCM5pe25pyJIHlcblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSAmJiAoZXhpc3RYIHx8IGV4aXN0WSkgfHwga2V5cy5sZW5ndGggPT09IDIgJiYgZXhpc3RYICYmIGV4aXN0WSkgcmV0dXJuICdtb3ZlJztcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLngpIHx8IGlzTnVtYmVyKGNmZy55KSB8fCBjZmcudHlwZSB8fCBjZmcuYW5jaG9yUG9pbnRzIHx8IGNmZy5zaXplIHx8IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpICYmICgoKF9hID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucikgfHwgKChfYiA9IGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5zdHlsZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLndpZHRoKSB8fCAoKF9jID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuaGVpZ2h0KSB8fCAoKF9kID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucngpIHx8ICgoX2UgPSBjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5yeSkpKSByZXR1cm4gJ2Jib3h8bGFiZWwnO1xuICAgIHZhciB1cGRhdGVMYWJlbCA9IGtleXMuaW5jbHVkZXMoJ2xhYmVsJykgfHwga2V5cy5pbmNsdWRlcygnbGFiZWxDZmcnKTtcbiAgICByZXR1cm4gdXBkYXRlTGFiZWwgPyAnc3R5bGV8bGFiZWwnIDogJ3N0eWxlJztcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oSXRlbSk7XG5cbmV4cG9ydCBkZWZhdWx0IE5vZGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js ***! \***************************************************************************/ /*! exports provided: G6GraphEvent, G6Event */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return G6Event; });\n/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interface */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _interface__WEBPACK_IMPORTED_MODULE_0__[\"G6GraphEvent\"]; });\n\n // Behavior type file\n\nvar G6Event;\n\n(function (G6Event) {\n // common events\n G6Event[\"CLICK\"] = \"click\";\n G6Event[\"DBLCLICK\"] = \"dblclick\";\n G6Event[\"MOUSEDOWN\"] = \"mousedown\";\n G6Event[\"MOUDEUP\"] = \"mouseup\";\n G6Event[\"CONTEXTMENU\"] = \"contextmenu\";\n G6Event[\"MOUSEENTER\"] = \"mouseenter\";\n G6Event[\"MOUSEOUT\"] = \"mouseout\";\n G6Event[\"MOUSEOVER\"] = \"mouseover\";\n G6Event[\"MOUSEMOVE\"] = \"mousemove\";\n G6Event[\"MOUSELEAVE\"] = \"mouseleave\";\n G6Event[\"DRAGSTART\"] = \"dragstart\";\n G6Event[\"DRAGEND\"] = \"dragend\";\n G6Event[\"DRAG\"] = \"drag\";\n G6Event[\"DRAGENTER\"] = \"dragenter\";\n G6Event[\"DRAGLEAVE\"] = \"dragleave\";\n G6Event[\"DRAGOVER\"] = \"dragover\";\n G6Event[\"DRAGOUT\"] = \"dragout\";\n G6Event[\"DDROP\"] = \"drop\";\n G6Event[\"KEYUP\"] = \"keyup\";\n G6Event[\"KEYDOWN\"] = \"keydown\";\n G6Event[\"WHEEL\"] = \"wheel\";\n G6Event[\"FOCUS\"] = \"focus\";\n G6Event[\"BLUR\"] = \"blur\"; // touch events\n\n G6Event[\"TOUCHSTART\"] = \"touchstart\";\n G6Event[\"TOUCHMOVE\"] = \"touchmove\";\n G6Event[\"TOUCHEND\"] = \"touchend\";\n G6Event[\"CANVAS_TOUCHSTART\"] = \"canvas:touchstart\";\n G6Event[\"CANVAS_TOUCHMOVE\"] = \"canvas:touchmove\";\n G6Event[\"CANVAS_TOUCHEND\"] = \"canvas:touchend\";\n G6Event[\"NODE_TOUCHSTART\"] = \"node:touchstart\";\n G6Event[\"NODE_TOUCHMOVE\"] = \"node:touchmove\";\n G6Event[\"NODE_TOUCHEND\"] = \"node:touchend\";\n G6Event[\"COMBO_TOUCHSTART\"] = \"combo:touchstart\";\n G6Event[\"COMBO_TOUCHMOVE\"] = \"combo:touchmove\";\n G6Event[\"COMBO_TOUCHEND\"] = \"combo:touchend\";\n G6Event[\"EDGE_TOUCHSTART\"] = \"edge:touchstart\";\n G6Event[\"EDGE_TOUCHMOVE\"] = \"edge:touchmove\";\n G6Event[\"EDGE_TOUCHEND\"] = \"edge:touchend\"; // node events\n\n G6Event[\"NODE_CONTEXTMENU\"] = \"node:contextmenu\";\n G6Event[\"NODE_CLICK\"] = \"node:click\";\n G6Event[\"NODE_DBLCLICK\"] = \"node:dblclick\";\n G6Event[\"NODE_MOUSEDOWN\"] = \"node:mousedown\";\n G6Event[\"NODE_MOUSEUP\"] = \"node:mouseup\";\n G6Event[\"NODE_MOUSEENTER\"] = \"node:mouseenter\";\n G6Event[\"NODE_MOUSELEAVE\"] = \"node:mouseleave\";\n G6Event[\"NODE_MOUSEMOVE\"] = \"node:mousemove\";\n G6Event[\"NODE_MOUSEOUT\"] = \"node:mouseout\";\n G6Event[\"NODE_MOUSEOVER\"] = \"node:mouseover\";\n G6Event[\"NODE_DROP\"] = \"node:drop\";\n G6Event[\"NODE_DRAGOVER\"] = \"node:dragover\";\n G6Event[\"NODE_DRAGENTER\"] = \"node:dragenter\";\n G6Event[\"NODE_DRAGLEAVE\"] = \"node:dragleave\";\n G6Event[\"NODE_DRAGSTART\"] = \"node:dragstart\";\n G6Event[\"NODE_DRAG\"] = \"node:drag\";\n G6Event[\"NODE_DRAGEND\"] = \"node:dragend\";\n G6Event[\"NODE_TAP\"] = \"node:tap\";\n G6Event[\"NODE_PANSTART\"] = \"node:panstart\";\n G6Event[\"NODE_PANMOVE\"] = \"node:panmove\";\n G6Event[\"NODE_PANEND\"] = \"node:panend\"; // combo, extends from nodes\n\n G6Event[\"COMBO_CONTEXTMENU\"] = \"combo:contextmenu\";\n G6Event[\"COMBO_CLICK\"] = \"combo:click\";\n G6Event[\"COMBO_DBLCLICK\"] = \"combo:dblclick\";\n G6Event[\"COMBO_MOUSEDOWN\"] = \"combo:mousedown\";\n G6Event[\"COMBO_MOUSEUP\"] = \"combo:mouseup\";\n G6Event[\"COMBO_MOUSEENTER\"] = \"combo:mouseenter\";\n G6Event[\"COMBO_MOUSELEAVE\"] = \"combo:mouseleave\";\n G6Event[\"COMBO_MOUSEMOVE\"] = \"combo:mousemove\";\n G6Event[\"COMBO_MOUSEOUT\"] = \"combo:mouseout\";\n G6Event[\"COMBO_MOUSEOVER\"] = \"combo:mouseover\";\n G6Event[\"COMBO_DROP\"] = \"combo:drop\";\n G6Event[\"COMBO_DRAGOVER\"] = \"combo:dragover\";\n G6Event[\"COMBO_DRAGENTER\"] = \"combo:dragenter\";\n G6Event[\"COMBO_DRAGLEAVE\"] = \"combo:dragleave\";\n G6Event[\"COMBO_DRAGSTART\"] = \"combo:dragstart\";\n G6Event[\"COMBO_DRAG\"] = \"combo:drag\";\n G6Event[\"COMBO_DRAGEND\"] = \"combo:dragend\";\n G6Event[\"COMBO_TAP\"] = \"combo:tap\";\n G6Event[\"COMBO_PANSTART\"] = \"combo:panstart\";\n G6Event[\"COMBO_PANMOVE\"] = \"combo:panmove\";\n G6Event[\"COMBO_PANEND\"] = \"combo:panend\"; // edge events\n\n G6Event[\"EDGE_CONTEXTMENU\"] = \"edge:contextmenu\";\n G6Event[\"EDGE_CLICK\"] = \"edge:click\";\n G6Event[\"EDGE_DBLCLICK\"] = \"edge:dblclick\";\n G6Event[\"EDGE_MOUSEDOWN\"] = \"edge:mousedown\";\n G6Event[\"EDGE_MOUSEUP\"] = \"edge:mouseup\";\n G6Event[\"EDGE_MOUSEENTER\"] = \"edge:mouseenter\";\n G6Event[\"EDGE_MOUSELEAVE\"] = \"edge:mouseleave\";\n G6Event[\"EDGE_MOUSEMOVE\"] = \"edge:mousemove\";\n G6Event[\"EDGE_MOUSEOUT\"] = \"edge:mouseout\";\n G6Event[\"EDGE_MOUSEOVER\"] = \"edge:mouseover\";\n G6Event[\"EDGE_DROP\"] = \"edge:drop\";\n G6Event[\"EDGE_DRAGOVER\"] = \"edge:dragover\";\n G6Event[\"EDGE_DRAGENTER\"] = \"edge:dragenter\";\n G6Event[\"EDGE_DRAGLEAVE\"] = \"edge:dragleave\"; // canvas events\n\n G6Event[\"CANVAS_CONTEXTMENU\"] = \"canvas:contextmenu\";\n G6Event[\"CANVAS_CLICK\"] = \"canvas:click\";\n G6Event[\"CANVAS_DBLCLICK\"] = \"canvas:dblclick\";\n G6Event[\"CANVAS_MOUSEDOWN\"] = \"canvas:mousedown\";\n G6Event[\"CANVAS_MOUSEUP\"] = \"canvas:mouseup\";\n G6Event[\"CANVAS_MOUSEENTER\"] = \"canvas:mouseenter\";\n G6Event[\"CANVAS_MOUSELEAVE\"] = \"canvas:mouseleave\";\n G6Event[\"CANVAS_MOUSEMOVE\"] = \"canvas:mousemove\";\n G6Event[\"CANVAS_MOUSEOUT\"] = \"canvas:mouseout\";\n G6Event[\"CANVAS_MOUSEOVER\"] = \"canvas:mouseover\";\n G6Event[\"CANVAS_DROP\"] = \"canvas:drop\";\n G6Event[\"CANVAS_DRAGENTER\"] = \"canvas:dragenter\";\n G6Event[\"CANVAS_DRAGLEAVE\"] = \"canvas:dragleave\";\n G6Event[\"CANVAS_DRAGSTART\"] = \"canvas:dragstart\";\n G6Event[\"CANVAS_DRAG\"] = \"canvas:drag\";\n G6Event[\"CANVAS_DRAGEND\"] = \"canvas:dragend\";\n G6Event[\"CANVAS_TAP\"] = \"canvas:tap\";\n G6Event[\"CANVAS_PANSTART\"] = \"canvas:panstart\";\n G6Event[\"CANVAS_PANMOVE\"] = \"canvas:panmove\";\n G6Event[\"CANVAS_PANEND\"] = \"canvas:panend\"; // timing events\n\n G6Event[\"BEFORERENDER\"] = \"beforerender\";\n G6Event[\"AFTERRENDER\"] = \"afterrender\";\n G6Event[\"BEFOREADDITEM\"] = \"beforeadditem\";\n G6Event[\"AFTERADDITEM\"] = \"afteradditem\";\n G6Event[\"BEFOREREMOVEITEM\"] = \"beforeremoveitem\";\n G6Event[\"AFTERREMOVEITEM\"] = \"afterremoveitem\";\n G6Event[\"BEFOREUPDATEITEM\"] = \"beforeupdateitem\";\n G6Event[\"AFTERUPDATEITEM\"] = \"afterupdateitem\";\n G6Event[\"BEFOREITEMVISIBILITYCHANGE\"] = \"beforeitemvisibilitychange\";\n G6Event[\"AFTERITEMVISIBILITYCHANGE\"] = \"afteritemvisibilitychange\";\n G6Event[\"BEFOREITEMSTATECHANGE\"] = \"beforeitemstatechange\";\n G6Event[\"AFTERITEMSTATECHANGE\"] = \"afteritemstatechange\";\n G6Event[\"BEFOREITEMREFRESH\"] = \"beforeitemrefresh\";\n G6Event[\"AFTERITEMREFRESH\"] = \"afteritemrefresh\";\n G6Event[\"BEFOREITEMSTATESCLEAR\"] = \"beforeitemstatesclear\";\n G6Event[\"AFTERITEMSTATESCLEAR\"] = \"afteritemstatesclear\";\n G6Event[\"BEFOREMODECHANGE\"] = \"beforemodechange\";\n G6Event[\"AFTERMODECHANGE\"] = \"aftermodechange\";\n G6Event[\"BEFORELAYOUT\"] = \"beforelayout\";\n G6Event[\"AFTERLAYOUT\"] = \"afterlayout\";\n G6Event[\"BEFORECREATEEDGE\"] = \"beforecreateedge\";\n G6Event[\"AFTERCREATEEDGE\"] = \"aftercreateedge\";\n G6Event[\"BEFOREGRAPHREFRESHPOSITION\"] = \"beforegraphrefreshposition\";\n G6Event[\"AFTERGRAPHREFRESHPOSITION\"] = \"aftergraphrefreshposition\";\n G6Event[\"BEFOREGRAPHREFRESH\"] = \"beforegraphrefresh\";\n G6Event[\"AFTERGRAPHREFRESH\"] = \"aftergraphrefresh\";\n G6Event[\"BEFOREANIMATE\"] = \"beforeanimate\";\n G6Event[\"AFTERANIMATE\"] = \"afteranimate\";\n G6Event[\"BEFOREPAINT\"] = \"beforepaint\";\n G6Event[\"AFTERPAINT\"] = \"afterpaint\";\n G6Event[\"BEFORECOLLAPSEEXPANDCOMBO\"] = \"beforecollapseexpandcombo\";\n G6Event[\"AFTERCOLLAPSEEXPANDCOMBO\"] = \"aftercollapseexpandcombo\";\n G6Event[\"GRAPHSTATECHANGE\"] = \"graphstatechange\";\n G6Event[\"AFTERACTIVATERELATIONS\"] = \"afteractivaterelations\";\n G6Event[\"NODESELECTCHANGE\"] = \"nodeselectchange\";\n G6Event[\"TOOLTIPCHANGE\"] = \"tooltipchange\";\n G6Event[\"WHEELZOOM\"] = \"wheelzoom\";\n G6Event[\"VIEWPORTCHANGE\"] = \"viewportchange\";\n G6Event[\"DRAGNODEEND\"] = \"dragnodeend\";\n G6Event[\"STACKCHANGE\"] = \"stackchange\"; // Mobile event support\n\n G6Event[\"TAP\"] = \"tap\";\n G6Event[\"PINCHSTART\"] = \"pinchstart\";\n G6Event[\"PINCHMOVE\"] = \"pinchmove\";\n G6Event[\"PANSTART\"] = \"panstart\";\n G6Event[\"PANMOVE\"] = \"panmove\";\n G6Event[\"PANEND\"] = \"panend\";\n})(G6Event || (G6Event = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy90eXBlcy9pbmRleC5qcz9iYzFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkI7O0FBRXRCOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsMEJBQTBCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvdHlwZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuLi9pbnRlcmZhY2UnOyAvLyBCZWhhdmlvciB0eXBlIGZpbGVcblxuZXhwb3J0IHZhciBHNkV2ZW50O1xuXG4oZnVuY3Rpb24gKEc2RXZlbnQpIHtcbiAgLy8gY29tbW9uIGV2ZW50c1xuICBHNkV2ZW50W1wiQ0xJQ0tcIl0gPSBcImNsaWNrXCI7XG4gIEc2RXZlbnRbXCJEQkxDTElDS1wiXSA9IFwiZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk1PVVNFRE9XTlwiXSA9IFwibW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJNT1VERVVQXCJdID0gXCJtb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT05URVhUTUVOVVwiXSA9IFwiY29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk1PVVNFRU5URVJcIl0gPSBcIm1vdXNlZW50ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFT1VUXCJdID0gXCJtb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiTU9VU0VPVkVSXCJdID0gXCJtb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFTU9WRVwiXSA9IFwibW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJNT1VTRUxFQVZFXCJdID0gXCJtb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHU1RBUlRcIl0gPSBcImRyYWdzdGFydFwiO1xuICBHNkV2ZW50W1wiRFJBR0VORFwiXSA9IFwiZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiRFJBR1wiXSA9IFwiZHJhZ1wiO1xuICBHNkV2ZW50W1wiRFJBR0VOVEVSXCJdID0gXCJkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdMRUFWRVwiXSA9IFwiZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHT1ZFUlwiXSA9IFwiZHJhZ292ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdPVVRcIl0gPSBcImRyYWdvdXRcIjtcbiAgRzZFdmVudFtcIkREUk9QXCJdID0gXCJkcm9wXCI7XG4gIEc2RXZlbnRbXCJLRVlVUFwiXSA9IFwia2V5dXBcIjtcbiAgRzZFdmVudFtcIktFWURPV05cIl0gPSBcImtleWRvd25cIjtcbiAgRzZFdmVudFtcIldIRUVMXCJdID0gXCJ3aGVlbFwiO1xuICBHNkV2ZW50W1wiRk9DVVNcIl0gPSBcImZvY3VzXCI7XG4gIEc2RXZlbnRbXCJCTFVSXCJdID0gXCJibHVyXCI7IC8vIHRvdWNoIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJUT1VDSFNUQVJUXCJdID0gXCJ0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJUT1VDSE1PVkVcIl0gPSBcInRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiVE9VQ0hFTkRcIl0gPSBcInRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfVE9VQ0hTVEFSVFwiXSA9IFwiY2FudmFzOnRvdWNoc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSE1PVkVcIl0gPSBcImNhbnZhczp0b3VjaG1vdmVcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSEVORFwiXSA9IFwiY2FudmFzOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIU1RBUlRcIl0gPSBcIm5vZGU6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9UT1VDSE1PVkVcIl0gPSBcIm5vZGU6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIRU5EXCJdID0gXCJub2RlOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSFNUQVJUXCJdID0gXCJjb21ibzp0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSE1PVkVcIl0gPSBcImNvbWJvOnRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fVE9VQ0hFTkRcIl0gPSBcImNvbWJvOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIU1RBUlRcIl0gPSBcImVkZ2U6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiRURHRV9UT1VDSE1PVkVcIl0gPSBcImVkZ2U6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIRU5EXCJdID0gXCJlZGdlOnRvdWNoZW5kXCI7IC8vIG5vZGUgZXZlbnRzXG5cbiAgRzZFdmVudFtcIk5PREVfQ09OVEVYVE1FTlVcIl0gPSBcIm5vZGU6Y29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk5PREVfQ0xJQ0tcIl0gPSBcIm5vZGU6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfREJMQ0xJQ0tcIl0gPSBcIm5vZGU6ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VET1dOXCJdID0gXCJub2RlOm1vdXNlZG93blwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRVVQXCJdID0gXCJub2RlOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VFTlRFUlwiXSA9IFwibm9kZTptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFTEVBVkVcIl0gPSBcIm5vZGU6bW91c2VsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRU1PVkVcIl0gPSBcIm5vZGU6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1VUXCJdID0gXCJub2RlOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1ZFUlwiXSA9IFwibm9kZTptb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJPUFwiXSA9IFwibm9kZTpkcm9wXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdPVkVSXCJdID0gXCJub2RlOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdFTlRFUlwiXSA9IFwibm9kZTpkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJBR0xFQVZFXCJdID0gXCJub2RlOmRyYWdsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHU1RBUlRcIl0gPSBcIm5vZGU6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdcIl0gPSBcIm5vZGU6ZHJhZ1wiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHRU5EXCJdID0gXCJub2RlOmRyYWdlbmRcIjtcbiAgRzZFdmVudFtcIk5PREVfVEFQXCJdID0gXCJub2RlOnRhcFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5TVEFSVFwiXSA9IFwibm9kZTpwYW5zdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5NT1ZFXCJdID0gXCJub2RlOnBhbm1vdmVcIjtcbiAgRzZFdmVudFtcIk5PREVfUEFORU5EXCJdID0gXCJub2RlOnBhbmVuZFwiOyAvLyBjb21ibywgZXh0ZW5kcyBmcm9tIG5vZGVzXG5cbiAgRzZFdmVudFtcIkNPTUJPX0NPTlRFWFRNRU5VXCJdID0gXCJjb21ibzpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fQ0xJQ0tcIl0gPSBcImNvbWJvOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EQkxDTElDS1wiXSA9IFwiY29tYm86ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIkNPTUJPX01PVVNFRE9XTlwiXSA9IFwiY29tYm86bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRVVQXCJdID0gXCJjb21ibzptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUVOVEVSXCJdID0gXCJjb21ibzptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUxFQVZFXCJdID0gXCJjb21ibzptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU1PVkVcIl0gPSBcImNvbWJvOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fTU9VU0VPVVRcIl0gPSBcImNvbWJvOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU9WRVJcIl0gPSBcImNvbWJvOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJPUFwiXSA9IFwiY29tYm86ZHJvcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR09WRVJcIl0gPSBcImNvbWJvOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5URVJcIl0gPSBcImNvbWJvOmRyYWdlbnRlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR0xFQVZFXCJdID0gXCJjb21ibzpkcmFnbGVhdmVcIjtcbiAgRzZFdmVudFtcIkNPTUJPX0RSQUdTVEFSVFwiXSA9IFwiY29tYm86ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHXCJdID0gXCJjb21ibzpkcmFnXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5EXCJdID0gXCJjb21ibzpkcmFnZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UQVBcIl0gPSBcImNvbWJvOnRhcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fUEFOU1RBUlRcIl0gPSBcImNvbWJvOnBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5NT1ZFXCJdID0gXCJjb21ibzpwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5FTkRcIl0gPSBcImNvbWJvOnBhbmVuZFwiOyAvLyBlZGdlIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJFREdFX0NPTlRFWFRNRU5VXCJdID0gXCJlZGdlOmNvbnRleHRtZW51XCI7XG4gIEc2RXZlbnRbXCJFREdFX0NMSUNLXCJdID0gXCJlZGdlOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RCTENMSUNLXCJdID0gXCJlZGdlOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRE9XTlwiXSA9IFwiZWRnZTptb3VzZWRvd25cIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VVUFwiXSA9IFwiZWRnZTptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRU5URVJcIl0gPSBcImVkZ2U6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRUxFQVZFXCJdID0gXCJlZGdlOm1vdXNlbGVhdmVcIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VNT1ZFXCJdID0gXCJlZGdlOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9VVFwiXSA9IFwiZWRnZTptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9WRVJcIl0gPSBcImVkZ2U6bW91c2VvdmVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RST1BcIl0gPSBcImVkZ2U6ZHJvcFwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHT1ZFUlwiXSA9IFwiZWRnZTpkcmFnb3ZlclwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHRU5URVJcIl0gPSBcImVkZ2U6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RSQUdMRUFWRVwiXSA9IFwiZWRnZTpkcmFnbGVhdmVcIjsgLy8gY2FudmFzIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJDQU5WQVNfQ09OVEVYVE1FTlVcIl0gPSBcImNhbnZhczpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0NMSUNLXCJdID0gXCJjYW52YXM6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EQkxDTElDS1wiXSA9IFwiY2FudmFzOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VET1dOXCJdID0gXCJjYW52YXM6bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VVUFwiXSA9IFwiY2FudmFzOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19NT1VTRUVOVEVSXCJdID0gXCJjYW52YXM6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFTEVBVkVcIl0gPSBcImNhbnZhczptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VNT1ZFXCJdID0gXCJjYW52YXM6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VPVVRcIl0gPSBcImNhbnZhczptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFT1ZFUlwiXSA9IFwiY2FudmFzOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0RST1BcIl0gPSBcImNhbnZhczpkcm9wXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0VOVEVSXCJdID0gXCJjYW52YXM6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0xFQVZFXCJdID0gXCJjYW52YXM6ZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1NUQVJUXCJdID0gXCJjYW52YXM6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1wiXSA9IFwiY2FudmFzOmRyYWdcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EUkFHRU5EXCJdID0gXCJjYW52YXM6ZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1RBUFwiXSA9IFwiY2FudmFzOnRhcFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTlNUQVJUXCJdID0gXCJjYW52YXM6cGFuc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19QQU5NT1ZFXCJdID0gXCJjYW52YXM6cGFubW92ZVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTkVORFwiXSA9IFwiY2FudmFzOnBhbmVuZFwiOyAvLyB0aW1pbmcgZXZlbnRzXG5cbiAgRzZFdmVudFtcIkJFRk9SRVJFTkRFUlwiXSA9IFwiYmVmb3JlcmVuZGVyXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTkRFUlwiXSA9IFwiYWZ0ZXJyZW5kZXJcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUFERElURU1cIl0gPSBcImJlZm9yZWFkZGl0ZW1cIjtcbiAgRzZFdmVudFtcIkFGVEVSQURESVRFTVwiXSA9IFwiYWZ0ZXJhZGRpdGVtXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVSRU1PVkVJVEVNXCJdID0gXCJiZWZvcmVyZW1vdmVpdGVtXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTU9WRUlURU1cIl0gPSBcImFmdGVycmVtb3ZlaXRlbVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFVVBEQVRFSVRFTVwiXSA9IFwiYmVmb3JldXBkYXRlaXRlbVwiO1xuICBHNkV2ZW50W1wiQUZURVJVUERBVEVJVEVNXCJdID0gXCJhZnRlcnVwZGF0ZWl0ZW1cIjtcbiAgRzZFdmVudFtcIkJFRk9SRUlURU1WSVNJQklMSVRZQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNVklTSUJJTElUWUNIQU5HRVwiXSA9IFwiYWZ0ZXJpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJhZnRlcml0ZW1zdGF0ZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVJFRlJFU0hcIl0gPSBcImJlZm9yZWl0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJBRlRFUklURU1SRUZSRVNIXCJdID0gXCJhZnRlcml0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImJlZm9yZWl0ZW1zdGF0ZXNjbGVhclwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImFmdGVyaXRlbXN0YXRlc2NsZWFyXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVNT0RFQ0hBTkdFXCJdID0gXCJiZWZvcmVtb2RlY2hhbmdlXCI7XG4gIEc2RXZlbnRbXCJBRlRFUk1PREVDSEFOR0VcIl0gPSBcImFmdGVybW9kZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFTEFZT1VUXCJdID0gXCJiZWZvcmVsYXlvdXRcIjtcbiAgRzZFdmVudFtcIkFGVEVSTEFZT1VUXCJdID0gXCJhZnRlcmxheW91dFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ1JFQVRFRURHRVwiXSA9IFwiYmVmb3JlY3JlYXRlZWRnZVwiO1xuICBHNkV2ZW50W1wiQUZURVJDUkVBVEVFREdFXCJdID0gXCJhZnRlcmNyZWF0ZWVkZ2VcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUdSQVBIUkVGUkVTSFBPU0lUSU9OXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQUZURVJHUkFQSFJFRlJFU0hQT1NJVElPTlwiXSA9IFwiYWZ0ZXJncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQkVGT1JFR1JBUEhSRUZSRVNIXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hcIjtcbiAgRzZFdmVudFtcIkFGVEVSR1JBUEhSRUZSRVNIXCJdID0gXCJhZnRlcmdyYXBocmVmcmVzaFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQU5JTUFURVwiXSA9IFwiYmVmb3JlYW5pbWF0ZVwiO1xuICBHNkV2ZW50W1wiQUZURVJBTklNQVRFXCJdID0gXCJhZnRlcmFuaW1hdGVcIjtcbiAgRzZFdmVudFtcIkJFRk9SRVBBSU5UXCJdID0gXCJiZWZvcmVwYWludFwiO1xuICBHNkV2ZW50W1wiQUZURVJQQUlOVFwiXSA9IFwiYWZ0ZXJwYWludFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ09MTEFQU0VFWFBBTkRDT01CT1wiXSA9IFwiYmVmb3JlY29sbGFwc2VleHBhbmRjb21ib1wiO1xuICBHNkV2ZW50W1wiQUZURVJDT0xMQVBTRUVYUEFORENPTUJPXCJdID0gXCJhZnRlcmNvbGxhcHNlZXhwYW5kY29tYm9cIjtcbiAgRzZFdmVudFtcIkdSQVBIU1RBVEVDSEFOR0VcIl0gPSBcImdyYXBoc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSQUNUSVZBVEVSRUxBVElPTlNcIl0gPSBcImFmdGVyYWN0aXZhdGVyZWxhdGlvbnNcIjtcbiAgRzZFdmVudFtcIk5PREVTRUxFQ1RDSEFOR0VcIl0gPSBcIm5vZGVzZWxlY3RjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIlRPT0xUSVBDSEFOR0VcIl0gPSBcInRvb2x0aXBjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIldIRUVMWk9PTVwiXSA9IFwid2hlZWx6b29tXCI7XG4gIEc2RXZlbnRbXCJWSUVXUE9SVENIQU5HRVwiXSA9IFwidmlld3BvcnRjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkRSQUdOT0RFRU5EXCJdID0gXCJkcmFnbm9kZWVuZFwiO1xuICBHNkV2ZW50W1wiU1RBQ0tDSEFOR0VcIl0gPSBcInN0YWNrY2hhbmdlXCI7IC8vIE1vYmlsZSBldmVudCBzdXBwb3J0XG5cbiAgRzZFdmVudFtcIlRBUFwiXSA9IFwidGFwXCI7XG4gIEc2RXZlbnRbXCJQSU5DSFNUQVJUXCJdID0gXCJwaW5jaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQSU5DSE1PVkVcIl0gPSBcInBpbmNobW92ZVwiO1xuICBHNkV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcInBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQQU5NT1ZFXCJdID0gXCJwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJQQU5FTkRcIl0gPSBcInBhbmVuZFwiO1xufSkoRzZFdmVudCB8fCAoRzZFdmVudCA9IHt9KSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js ***! \*************************************************************************/ /*! exports provided: uniqueId, formatPadding, cloneEvent, isViewportChanged, isNaN, calculationItemsBBox, processParallelEdges */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPadding\", function() { return formatPadding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneEvent\", function() { return cloneEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isViewportChanged\", function() { return isViewportChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculationItemsBBox\", function() { return calculationItemsBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processParallelEdges\", function() { return processParallelEdges; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _interface_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../interface/behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js\");\n\n\nvar uniqueId = function uniqueId(type) {\n return type + \"-\" + Math.random() + Date.now();\n};\n/**\n * turn padding into [top, right, bottom, right]\n * @param {Number|Array} padding input padding\n * @return {array} output\n */\n\nvar formatPadding = function formatPadding(padding) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(padding)) {\n switch (padding.length) {\n case 4:\n return padding;\n\n case 3:\n padding.push(padding[1]);\n return padding;\n\n case 2:\n return padding.concat(padding);\n\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n\n default:\n return [0, 0, 0, 0];\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(padding)) {\n return [padding, padding, padding, padding];\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(padding)) {\n var intPadding = parseInt(padding, 10);\n return [intPadding, intPadding, intPadding, intPadding];\n }\n\n return [0, 0, 0, 0];\n};\n/**\n * clone event\n * @param e\n */\n\nvar cloneEvent = function cloneEvent(e) {\n var event = new _interface_behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"](e.type, e);\n event.clientX = e.clientX;\n event.clientY = e.clientY;\n event.x = e.x;\n event.y = e.y;\n event.target = e.target;\n event.currentTarget = e.currentTarget;\n event.bubbles = true;\n event.item = e.item;\n return event;\n};\n/**\n * 判断 viewport 是否改变,通过和单位矩阵对比\n * @param matrix Viewport 的 Matrix\n */\n\nvar isViewportChanged = function isViewportChanged(matrix) {\n // matrix 为 null, 则说明没有变化\n if (!matrix) {\n return false;\n }\n\n var MATRIX_LEN = 9;\n var ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n for (var i = 0; i < MATRIX_LEN; i++) {\n if (matrix[i] !== ORIGIN_MATRIX[i]) {\n return true;\n }\n }\n\n return false;\n};\nvar isNaN = function isNaN(input) {\n return Number.isNaN(Number(input));\n};\n/**\n * 计算一组 Item 的 BBox\n * @param items 选中的一组Item,可以是 node 或 combo\n */\n\nvar calculationItemsBBox = function calculationItemsBBox(items) {\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < items.length; i++) {\n var element = items[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny,\n maxX: maxx,\n maxY: maxy\n };\n};\n/**\n * 若 edges 中存在两端点相同的边,使用 quadratic 边并自动计算 curveOffset 使它们不相互重叠\n * 文档: https://g6.antv.vision/en/docs/api/Util\n * @param edges 边数据集合\n * @param offsetDiff 相邻两边的 offset 之差\n * @param multiEdgeType\n * @param singleEdgeType\n * @param loopEdgeType\n */\n\nvar processParallelEdges = function processParallelEdges(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) {\n if (offsetDiff === void 0) {\n offsetDiff = 15;\n }\n\n if (multiEdgeType === void 0) {\n multiEdgeType = 'quadratic';\n }\n\n if (singleEdgeType === void 0) {\n singleEdgeType = undefined;\n }\n\n if (loopEdgeType === void 0) {\n loopEdgeType = undefined;\n }\n\n var len = edges.length;\n var cod = offsetDiff * 2;\n var loopPosition = ['top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left'];\n var edgeMap = {};\n var tags = [];\n var reverses = {};\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n var source = edge.source,\n target = edge.target;\n var sourceTarget = source + \"-\" + target;\n if (tags[i]) continue;\n\n if (!edgeMap[sourceTarget]) {\n edgeMap[sourceTarget] = [];\n }\n\n tags[i] = true;\n edgeMap[sourceTarget].push(edge);\n\n for (var j = 0; j < len; j++) {\n if (i === j) continue;\n var sedge = edges[j];\n var src = sedge.source;\n var dst = sedge.target; // 两个节点之间共同的边\n // 第一条的source = 第二条的target\n // 第一条的target = 第二条的source\n\n if (!tags[j]) {\n if (source === dst && target === src) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n reverses[src + \"|\" + dst + \"|\" + (edgeMap[sourceTarget].length - 1)] = true;\n } else if (source === src && target === dst) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n }\n }\n }\n }\n\n for (var key in edgeMap) {\n var arcEdges = edgeMap[key];\n var length_1 = arcEdges.length;\n\n for (var k = 0; k < length_1; k++) {\n var current = arcEdges[k];\n\n if (current.source === current.target) {\n if (loopEdgeType) current.type = loopEdgeType; // 超过8条自环边,则需要重新处理\n\n current.loopCfg = {\n position: loopPosition[k % 8],\n dist: Math.floor(k / 8) * 20 + 50\n };\n continue;\n }\n\n if (length_1 === 1 && singleEdgeType && current.source !== current.target) {\n current.type = singleEdgeType;\n continue;\n }\n\n current.type = multiEdgeType;\n var sign = (k % 2 === 0 ? 1 : -1) * (reverses[current.source + \"|\" + current.target + \"|\" + k] ? -1 : 1);\n\n if (length_1 % 2 === 1) {\n current.curveOffset = sign * Math.ceil(k / 2) * cod;\n } else {\n current.curveOffset = sign * (Math.floor(k / 2) * cod + offsetDiff);\n }\n }\n }\n\n return edges;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanM/N2JlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5RDtBQUNKO0FBQzlDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1AsTUFBTSwwREFBTztBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sMkRBQVE7QUFDZDtBQUNBLEdBQUcsVUFBVSwyREFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1Asa0JBQWtCLGdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QixpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixjQUFjO0FBQ2pDOztBQUVBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgaXNOdW1iZXIsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IEc2R3JhcGhFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZS9iZWhhdmlvcic7XG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQodHlwZSkge1xuICByZXR1cm4gdHlwZSArIFwiLVwiICsgTWF0aC5yYW5kb20oKSArIERhdGUubm93KCk7XG59O1xuLyoqXG4gKiB0dXJuIHBhZGRpbmcgaW50byBbdG9wLCByaWdodCwgYm90dG9tLCByaWdodF1cbiAqIEBwYXJhbSAge051bWJlcnxBcnJheX0gcGFkZGluZyBpbnB1dCBwYWRkaW5nXG4gKiBAcmV0dXJuIHthcnJheX0gb3V0cHV0XG4gKi9cblxuZXhwb3J0IHZhciBmb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gZm9ybWF0UGFkZGluZyhwYWRkaW5nKSB7XG4gIGlmIChpc0FycmF5KHBhZGRpbmcpKSB7XG4gICAgc3dpdGNoIChwYWRkaW5nLmxlbmd0aCkge1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gcGFkZGluZztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICBwYWRkaW5nLnB1c2gocGFkZGluZ1sxXSk7XG4gICAgICAgIHJldHVybiBwYWRkaW5nO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYWRkaW5nLmNvbmNhdChwYWRkaW5nKTtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gW3BhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF1dO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgIHJldHVybiBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICB2YXIgaW50UGFkZGluZyA9IHBhcnNlSW50KHBhZGRpbmcsIDEwKTtcbiAgICByZXR1cm4gW2ludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmddO1xuICB9XG5cbiAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbn07XG4vKipcbiAqIGNsb25lIGV2ZW50XG4gKiBAcGFyYW0gZVxuICovXG5cbmV4cG9ydCB2YXIgY2xvbmVFdmVudCA9IGZ1bmN0aW9uIGNsb25lRXZlbnQoZSkge1xuICB2YXIgZXZlbnQgPSBuZXcgRzZHcmFwaEV2ZW50KGUudHlwZSwgZSk7XG4gIGV2ZW50LmNsaWVudFggPSBlLmNsaWVudFg7XG4gIGV2ZW50LmNsaWVudFkgPSBlLmNsaWVudFk7XG4gIGV2ZW50LnggPSBlLng7XG4gIGV2ZW50LnkgPSBlLnk7XG4gIGV2ZW50LnRhcmdldCA9IGUudGFyZ2V0O1xuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICBldmVudC5idWJibGVzID0gdHJ1ZTtcbiAgZXZlbnQuaXRlbSA9IGUuaXRlbTtcbiAgcmV0dXJuIGV2ZW50O1xufTtcbi8qKlxuICog5Yik5patIHZpZXdwb3J0IOaYr+WQpuaUueWPmO+8jOmAmui/h+WSjOWNleS9jeefqemYteWvueavlFxuICogQHBhcmFtIG1hdHJpeCBWaWV3cG9ydCDnmoQgTWF0cml4XG4gKi9cblxuZXhwb3J0IHZhciBpc1ZpZXdwb3J0Q2hhbmdlZCA9IGZ1bmN0aW9uIGlzVmlld3BvcnRDaGFuZ2VkKG1hdHJpeCkge1xuICAvLyBtYXRyaXgg5Li6IG51bGzvvIwg5YiZ6K+05piO5rKh5pyJ5Y+Y5YyWXG4gIGlmICghbWF0cml4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE1BVFJJWF9MRU4gPSA5O1xuICB2YXIgT1JJR0lOX01BVFJJWCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IE1BVFJJWF9MRU47IGkrKykge1xuICAgIGlmIChtYXRyaXhbaV0gIT09IE9SSUdJTl9NQVRSSVhbaV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIGlzTmFOID0gZnVuY3Rpb24gaXNOYU4oaW5wdXQpIHtcbiAgcmV0dXJuIE51bWJlci5pc05hTihOdW1iZXIoaW5wdXQpKTtcbn07XG4vKipcbiAqIOiuoeeul+S4gOe7hCBJdGVtIOeahCBCQm94XG4gKiBAcGFyYW0gaXRlbXMg6YCJ5Lit55qE5LiA57uESXRlbe+8jOWPr+S7peaYryBub2RlIOaIliBjb21ib1xuICovXG5cbmV4cG9ydCB2YXIgY2FsY3VsYXRpb25JdGVtc0JCb3ggPSBmdW5jdGlvbiBjYWxjdWxhdGlvbkl0ZW1zQkJveChpdGVtcykge1xuICB2YXIgbWlueCA9IEluZmluaXR5O1xuICB2YXIgbWF4eCA9IC1JbmZpbml0eTtcbiAgdmFyIG1pbnkgPSBJbmZpbml0eTtcbiAgdmFyIG1heHkgPSAtSW5maW5pdHk7IC8vIOiOt+WPluW3suiKgueCueeahOaJgOacieacgOWkp+acgOWwj3ggeeWAvFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW1zW2ldO1xuICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIG1pblggPSBiYm94Lm1pblgsXG4gICAgICAgIG1pblkgPSBiYm94Lm1pblksXG4gICAgICAgIG1heFggPSBiYm94Lm1heFgsXG4gICAgICAgIG1heFkgPSBiYm94Lm1heFk7XG5cbiAgICBpZiAobWluWCA8IG1pbngpIHtcbiAgICAgIG1pbnggPSBtaW5YO1xuICAgIH1cblxuICAgIGlmIChtaW5ZIDwgbWlueSkge1xuICAgICAgbWlueSA9IG1pblk7XG4gICAgfVxuXG4gICAgaWYgKG1heFggPiBtYXh4KSB7XG4gICAgICBtYXh4ID0gbWF4WDtcbiAgICB9XG5cbiAgICBpZiAobWF4WSA+IG1heHkpIHtcbiAgICAgIG1heHkgPSBtYXhZO1xuICAgIH1cbiAgfVxuXG4gIHZhciB4ID0gTWF0aC5mbG9vcihtaW54KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKG1pbnkpO1xuICB2YXIgd2lkdGggPSBNYXRoLmNlaWwobWF4eCkgLSBNYXRoLmZsb29yKG1pbngpO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5jZWlsKG1heHkpIC0gTWF0aC5mbG9vcihtaW55KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIG1pblg6IG1pbngsXG4gICAgbWluWTogbWlueSxcbiAgICBtYXhYOiBtYXh4LFxuICAgIG1heFk6IG1heHlcbiAgfTtcbn07XG4vKipcbiAqIOiLpSBlZGdlcyDkuK3lrZjlnKjkuKTnq6/ngrnnm7jlkIznmoTovrnvvIzkvb/nlKggcXVhZHJhdGljIOi+ueW5tuiHquWKqOiuoeeulyBjdXJ2ZU9mZnNldCDkvb/lroPku6zkuI3nm7jkupLph43lj6BcbiAqIOaWh+ahozogaHR0cHM6Ly9nNi5hbnR2LnZpc2lvbi9lbi9kb2NzL2FwaS9VdGlsXG4gKiBAcGFyYW0gZWRnZXMg6L655pWw5o2u6ZuG5ZCIXG4gKiBAcGFyYW0gb2Zmc2V0RGlmZiDnm7jpgrvkuKTovrnnmoQgb2Zmc2V0IOS5i+W3rlxuICogQHBhcmFtIG11bHRpRWRnZVR5cGVcbiAqIEBwYXJhbSBzaW5nbGVFZGdlVHlwZVxuICogQHBhcmFtIGxvb3BFZGdlVHlwZVxuICovXG5cbmV4cG9ydCB2YXIgcHJvY2Vzc1BhcmFsbGVsRWRnZXMgPSBmdW5jdGlvbiBwcm9jZXNzUGFyYWxsZWxFZGdlcyhlZGdlcywgb2Zmc2V0RGlmZiwgbXVsdGlFZGdlVHlwZSwgc2luZ2xlRWRnZVR5cGUsIGxvb3BFZGdlVHlwZSkge1xuICBpZiAob2Zmc2V0RGlmZiA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0RGlmZiA9IDE1O1xuICB9XG5cbiAgaWYgKG11bHRpRWRnZVR5cGUgPT09IHZvaWQgMCkge1xuICAgIG11bHRpRWRnZVR5cGUgPSAncXVhZHJhdGljJztcbiAgfVxuXG4gIGlmIChzaW5nbGVFZGdlVHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgc2luZ2xlRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAobG9vcEVkZ2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBsb29wRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgbGVuID0gZWRnZXMubGVuZ3RoO1xuICB2YXIgY29kID0gb2Zmc2V0RGlmZiAqIDI7XG4gIHZhciBsb29wUG9zaXRpb24gPSBbJ3RvcCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbScsICdib3R0b20tbGVmdCcsICdsZWZ0JywgJ3RvcC1sZWZ0J107XG4gIHZhciBlZGdlTWFwID0ge307XG4gIHZhciB0YWdzID0gW107XG4gIHZhciByZXZlcnNlcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHNvdXJjZVRhcmdldCA9IHNvdXJjZSArIFwiLVwiICsgdGFyZ2V0O1xuICAgIGlmICh0YWdzW2ldKSBjb250aW51ZTtcblxuICAgIGlmICghZWRnZU1hcFtzb3VyY2VUYXJnZXRdKSB7XG4gICAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0gPSBbXTtcbiAgICB9XG5cbiAgICB0YWdzW2ldID0gdHJ1ZTtcbiAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0ucHVzaChlZGdlKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBzZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgdmFyIHNyYyA9IHNlZGdlLnNvdXJjZTtcbiAgICAgIHZhciBkc3QgPSBzZWRnZS50YXJnZXQ7IC8vIOS4pOS4quiKgueCueS5i+mXtOWFseWQjOeahOi+uVxuICAgICAgLy8g56ys5LiA5p2h55qEc291cmNlID0g56ys5LqM5p2h55qEdGFyZ2V0XG4gICAgICAvLyDnrKzkuIDmnaHnmoR0YXJnZXQgPSDnrKzkuozmnaHnmoRzb3VyY2VcblxuICAgICAgaWYgKCF0YWdzW2pdKSB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IGRzdCAmJiB0YXJnZXQgPT09IHNyYykge1xuICAgICAgICAgIGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5wdXNoKHNlZGdlKTtcbiAgICAgICAgICB0YWdzW2pdID0gdHJ1ZTtcbiAgICAgICAgICByZXZlcnNlc1tzcmMgKyBcInxcIiArIGRzdCArIFwifFwiICsgKGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5sZW5ndGggLSAxKV0gPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSA9PT0gc3JjICYmIHRhcmdldCA9PT0gZHN0KSB7XG4gICAgICAgICAgZWRnZU1hcFtzb3VyY2VUYXJnZXRdLnB1c2goc2VkZ2UpO1xuICAgICAgICAgIHRhZ3Nbal0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIGVkZ2VNYXApIHtcbiAgICB2YXIgYXJjRWRnZXMgPSBlZGdlTWFwW2tleV07XG4gICAgdmFyIGxlbmd0aF8xID0gYXJjRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGhfMTsgaysrKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGFyY0VkZ2VzW2tdO1xuXG4gICAgICBpZiAoY3VycmVudC5zb3VyY2UgPT09IGN1cnJlbnQudGFyZ2V0KSB7XG4gICAgICAgIGlmIChsb29wRWRnZVR5cGUpIGN1cnJlbnQudHlwZSA9IGxvb3BFZGdlVHlwZTsgLy8g6LaF6L+HOOadoeiHqueOr+i+ue+8jOWImemcgOimgemHjeaWsOWkhOeQhlxuXG4gICAgICAgIGN1cnJlbnQubG9vcENmZyA9IHtcbiAgICAgICAgICBwb3NpdGlvbjogbG9vcFBvc2l0aW9uW2sgJSA4XSxcbiAgICAgICAgICBkaXN0OiBNYXRoLmZsb29yKGsgLyA4KSAqIDIwICsgNTBcbiAgICAgICAgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChsZW5ndGhfMSA9PT0gMSAmJiBzaW5nbGVFZGdlVHlwZSAmJiBjdXJyZW50LnNvdXJjZSAhPT0gY3VycmVudC50YXJnZXQpIHtcbiAgICAgICAgY3VycmVudC50eXBlID0gc2luZ2xlRWRnZVR5cGU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50LnR5cGUgPSBtdWx0aUVkZ2VUeXBlO1xuICAgICAgdmFyIHNpZ24gPSAoayAlIDIgPT09IDAgPyAxIDogLTEpICogKHJldmVyc2VzW2N1cnJlbnQuc291cmNlICsgXCJ8XCIgKyBjdXJyZW50LnRhcmdldCArIFwifFwiICsga10gPyAtMSA6IDEpO1xuXG4gICAgICBpZiAobGVuZ3RoXzEgJSAyID09PSAxKSB7XG4gICAgICAgIGN1cnJlbnQuY3VydmVPZmZzZXQgPSBzaWduICogTWF0aC5jZWlsKGsgLyAyKSAqIGNvZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQuY3VydmVPZmZzZXQgPSBzaWduICogKE1hdGguZmxvb3IoayAvIDIpICogY29kICsgb2Zmc2V0RGlmZik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVkZ2VzO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js ***! \**************************************************************************/ /*! exports provided: defaultSubjectColors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultSubjectColors\", function() { return defaultSubjectColors; });\nvar defaultSubjectColors = ['#5F95FF', '#61DDAA', '#65789B', '#F6BD16', '#7262FD', '#78D3F8', '#9661BC', '#F6903D', '#008685', '#F08BB4'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2NvbG9yLmpzPzRiOTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvdXRpbC9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZGVmYXVsdFN1YmplY3RDb2xvcnMgPSBbJyM1Rjk1RkYnLCAnIzYxRERBQScsICcjNjU3ODlCJywgJyNGNkJEMTYnLCAnIzcyNjJGRCcsICcjNzhEM0Y4JywgJyM5NjYxQkMnLCAnI0Y2OTAzRCcsICcjMDA4Njg1JywgJyNGMDhCQjQnXTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js ***! \****************************************************************************/ /*! exports provided: getBBox, getLoopCfgs, getLabelPosition, traverseTree, traverseTreeUp, getLetterWidth, getTextSize, plainCombosToTrees, reconstructTree, getComboBBox, shouldRefreshEdge, cloneBesidesImg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLoopCfgs\", function() { return getLoopCfgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLabelPosition\", function() { return getLabelPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTree\", function() { return traverseTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return traverseTreeUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLetterWidth\", function() { return getLetterWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextSize\", function() { return getTextSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"plainCombosToTrees\", function() { return plainCombosToTrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructTree\", function() { return reconstructTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getComboBBox\", function() { return getComboBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shouldRefreshEdge\", function() { return shouldRefreshEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneBesidesImg\", function() { return cloneBesidesImg; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./letterAspectRatio */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n\n\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos; // 一共支持8个方向的自环,每个环占的角度是45度,在计算时再二分,为22.5度\n\nvar SELF_LINK_SIN = sin(PI / 8);\nvar SELF_LINK_COS = cos(PI / 8);\nvar getBBox = function getBBox(element, group) {\n var bbox = element.getBBox();\n var leftTop = {\n x: bbox.minX,\n y: bbox.minY\n };\n var rightBottom = {\n x: bbox.maxX,\n y: bbox.maxY\n }; // 根据父元素变换矩阵\n\n if (group) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n leftTop = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(leftTop, matrix);\n rightBottom = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(rightBottom, matrix);\n }\n\n var lx = leftTop.x,\n ly = leftTop.y;\n var rx = rightBottom.x,\n ry = rightBottom.y;\n return {\n x: lx,\n y: ly,\n minX: lx,\n minY: ly,\n maxX: rx,\n maxY: ry,\n width: rx - lx,\n height: ry - ly\n };\n};\n/**\n * get loop edge config\n * @param cfg edge config\n */\n\nvar getLoopCfgs = function getLoopCfgs(cfg) {\n var item = cfg.sourceNode || cfg.targetNode;\n var container = item.get('group');\n var containerMatrix = container.getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var keyShape = item.getKeyShape();\n var bbox = keyShape.getBBox();\n var loopCfg = cfg.loopCfg || {}; // 距离keyShape边的最高距离\n\n var dist = loopCfg.dist || Math.max(bbox.width, bbox.height) * 2; // 自环边与keyShape的相对位置关系\n\n var position = loopCfg.position || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultLoopPosition; // 中心取group上真实位置\n\n var center = [containerMatrix[6], containerMatrix[7]];\n var startPoint = [cfg.startPoint.x, cfg.startPoint.y];\n var endPoint = [cfg.endPoint.x, cfg.endPoint.y];\n var rstart = bbox.height / 2;\n var rend = bbox.height / 2;\n var sinDeltaStart = rstart * SELF_LINK_SIN;\n var cosDeltaStart = rstart * SELF_LINK_COS;\n var sinDeltaEnd = rend * SELF_LINK_SIN;\n var cosDeltaEnd = rend * SELF_LINK_COS; // 如果定义了锚点的,直接用锚点坐标,否则,根据自环的 cfg 计算\n\n if (startPoint[0] === endPoint[0] && startPoint[1] === endPoint[1]) {\n switch (position) {\n case 'top':\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n case 'top-right':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'right':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'bottom-right':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom':\n rstart = bbox.height / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom-left':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'left':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'top-left':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n default:\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n } // 如果逆时针画,交换起点和终点\n\n\n if (loopCfg.clockwise === false) {\n var swap = [startPoint[0], startPoint[1]];\n startPoint = [endPoint[0], endPoint[1]];\n endPoint = [swap[0], swap[1]];\n }\n }\n\n var startVec = [startPoint[0] - center[0], startPoint[1] - center[1]];\n var scaleRateStart = (rstart + dist) / rstart;\n var scaleRateEnd = (rend + dist) / rend;\n\n if (loopCfg.clockwise === false) {\n scaleRateStart = (rend + dist) / rend;\n scaleRateEnd = (rstart + dist) / rstart;\n }\n\n var startExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], startVec, scaleRateStart);\n var controlPoint1 = [center[0] + startExtendVec[0], center[1] + startExtendVec[1]];\n var endVec = [endPoint[0] - center[0], endPoint[1] - center[1]];\n var endExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], endVec, scaleRateEnd);\n var controlPoint2 = [center[0] + endExtendVec[0], center[1] + endExtendVec[1]];\n cfg.startPoint = {\n x: startPoint[0],\n y: startPoint[1]\n };\n cfg.endPoint = {\n x: endPoint[0],\n y: endPoint[1]\n };\n cfg.controlPoints = [{\n x: controlPoint1[0],\n y: controlPoint1[1]\n }, {\n x: controlPoint2[0],\n y: controlPoint2[1]\n }];\n return cfg;\n};\n/**\n * 根据 label 所在线条的位置百分比,计算 label 坐标\n * @param {object} pathShape G 的 path 实例,一般是 Edge 实例的 keyShape\n * @param {number} percent 范围 0 - 1 的线条百分比\n * @param {number} refX x 轴正方向为基准的 label 偏移\n * @param {number} refY y 轴正方向为基准的 label 偏移\n * @param {boolean} rotate 是否根据线条斜率旋转文本\n * @return {object} 文本的 x, y, 文本的旋转角度\n */\n\nvar getLabelPosition = function getLabelPosition(pathShape, percent, refX, refY, rotate) {\n var TAN_OFFSET = 0.0001;\n var vector = [];\n var point = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent);\n\n if (!point) {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n } // 头尾最可能,放在最前面,使用 g path 上封装的方法\n\n\n if (percent < TAN_OFFSET) {\n vector = pathShape.getStartTangent().reverse();\n } else if (percent > 1 - TAN_OFFSET) {\n vector = pathShape.getEndTangent();\n } else {\n // 否则取指定位置的点,与少量偏移的点,做微分向量\n var offsetPoint = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent + TAN_OFFSET);\n vector.push([point.x, point.y]);\n vector.push([offsetPoint.x, offsetPoint.y]);\n }\n\n var rad = Math.atan2(vector[1][1] - vector[0][1], vector[1][0] - vector[0][0]);\n\n if (rad < 0) {\n rad += PI * 2;\n }\n\n if (refX) {\n point.x += cos(rad) * refX;\n point.y += sin(rad) * refX;\n }\n\n if (refY) {\n // 默认方向是 x 轴正方向,法线是 求出角度 - 90°\n var normal = rad - PI / 2; // 若法线角度在 y 轴负方向,切到正方向,保证 refY 相对于 y 轴正方向\n\n if (rad > 1 / 2 * PI && rad < 3 * 1 / 2 * PI) {\n normal -= PI;\n }\n\n point.x += cos(normal) * refY;\n point.y += sin(normal) * refY;\n }\n\n var result = {\n x: point.x,\n y: point.y,\n angle: rad\n };\n\n if (rotate) {\n if (rad > 0.5 * PI && rad < 1.5 * PI) {\n rad -= PI;\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n rotate: rad\n }, result);\n }\n\n return result;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverse = function traverse(data, fn) {\n if (fn(data) === false) {\n return false;\n }\n\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverse(data.children[i], fn)) return false;\n }\n }\n\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseUp = function traverseUp(data, fn) {\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn)) return;\n }\n }\n\n if (fn(data) === false) {\n return false;\n }\n\n return true;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseTree = function traverseTree(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverse(data, fn);\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverseTreeUp = function traverseTreeUp(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverseUp(data, fn);\n};\n/**\n *\n * @param letter the letter\n * @param fontSize\n * @return the letter's width\n */\n\nvar getLetterWidth = function getLetterWidth(letter, fontSize) {\n return fontSize * (_letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__[\"default\"][letter] || 1);\n};\n/**\n *\n * @param text the text\n * @param fontSize\n * @return the text's size\n */\n\nvar getTextSize = function getTextSize(text, fontSize) {\n var width = 0;\n var pattern = new RegExp(\"[\\u4E00-\\u9FA5]+\");\n text.split('').forEach(function (letter) {\n if (pattern.test(letter)) {\n // 中文字符\n width += fontSize;\n } else {\n width += getLetterWidth(letter, fontSize);\n }\n });\n return [width, fontSize];\n};\n/**\n * construct the trees from combos data\n * @param array the combos array\n * @param nodes the nodes array\n * @return the tree\n */\n\nvar plainCombosToTrees = function plainCombosToTrees(array, nodes) {\n var result = [];\n var addedMap = {};\n var modelMap = {};\n array.forEach(function (d) {\n modelMap[d.id] = d;\n });\n array.forEach(function (d, i) {\n var cd = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(d);\n cd.itemType = 'combo';\n cd.children = undefined;\n\n if (cd.parentId === cd.id) {\n console.warn(\"The parentId for combo \" + cd.id + \" can not be the same as the combo's id\");\n delete cd.parentId;\n } else if (cd.parentId && !modelMap[cd.parentId]) {\n console.warn(\"The parent combo for combo \" + cd.id + \" does not exist!\");\n delete cd.parentId;\n }\n\n var mappedObj = addedMap[cd.id];\n\n if (mappedObj) {\n cd.children = mappedObj.children;\n addedMap[cd.id] = cd;\n mappedObj = cd;\n\n if (!mappedObj.parentId) {\n result.push(mappedObj);\n return;\n }\n\n var mappedParent = addedMap[mappedObj.parentId];\n\n if (mappedParent) {\n if (mappedParent.children) mappedParent.children.push(cd);else mappedParent.children = [cd];\n } else {\n var parent_1 = {\n id: mappedObj.parentId,\n children: [mappedObj]\n };\n addedMap[mappedObj.parentId] = parent_1;\n addedMap[cd.id] = cd;\n }\n\n return;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(d.parentId)) {\n var parent_2 = addedMap[d.parentId];\n\n if (parent_2) {\n if (parent_2.children) parent_2.children.push(cd);else parent_2.children = [cd];\n addedMap[cd.id] = cd;\n } else {\n var pa = {\n id: d.parentId,\n children: [cd]\n };\n addedMap[pa.id] = pa;\n addedMap[cd.id] = cd;\n }\n } else {\n result.push(cd);\n addedMap[cd.id] = cd;\n }\n }); // proccess the nodes\n\n var nodeMap = {};\n (nodes || []).forEach(function (node) {\n nodeMap[node.id] = node;\n var combo = addedMap[node.comboId];\n\n if (combo) {\n var cnode = {\n id: node.id,\n comboId: node.comboId\n };\n if (combo.children) combo.children.push(cnode);else combo.children = [cnode];\n cnode.itemType = 'node';\n addedMap[node.id] = cnode;\n }\n }); // assign the depth for each element\n\n var maxDepth = 0;\n result.forEach(function (tree) {\n tree.depth = maxDepth + 10;\n traverse(tree, function (child) {\n var parent;\n var itemType = addedMap[child.id].itemType;\n\n if (itemType === 'node') {\n parent = addedMap[child.comboId];\n } else {\n parent = addedMap[child.parentId];\n }\n\n if (parent) {\n if (itemType === 'node') child.depth = maxDepth + 1;else child.depth = maxDepth + 10;\n } else {\n child.depth = maxDepth + 10;\n }\n\n if (maxDepth < child.depth) maxDepth = child.depth;\n var oriNodeModel = nodeMap[child.id];\n\n if (oriNodeModel) {\n oriNodeModel.depth = child.depth;\n }\n\n return true;\n });\n });\n return result;\n};\nvar reconstructTree = function reconstructTree(trees, subtreeId, newParentId) {\n var brothers = trees;\n var subtree;\n var comboChildsMap = {\n root: {\n children: trees\n }\n };\n var foundSubTree = false;\n var oldParentId = 'root';\n (trees || []).forEach(function (tree) {\n if (foundSubTree) return;\n\n if (tree.id === subtreeId) {\n subtree = tree;\n\n if (tree.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return;\n }\n\n traverseTree(tree, function (child) {\n comboChildsMap[child.id] = {\n children: child.children\n }; // store the old parent id to delete the subtree from the old parent's children in next recursion\n\n brothers = comboChildsMap[child.parentId || child.comboId || 'root'].children;\n\n if (child && (child.removed || subtreeId === child.id) && brothers) {\n oldParentId = child.parentId || child.comboId || 'root';\n subtree = child; // re-assign the parentId or comboId for the moved subtree\n\n if (child.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return false;\n }\n\n return true;\n });\n });\n brothers = comboChildsMap[oldParentId].children;\n var index = brothers ? brothers.indexOf(subtree) : -1;\n if (index > -1) brothers.splice(index, 1); // 如果遍历完整棵树还没有找到,说明之前就不在树中\n\n if (!foundSubTree) {\n subtree = {\n id: subtreeId,\n itemType: 'node',\n comboId: newParentId\n };\n comboChildsMap[subtreeId] = {\n children: undefined\n };\n } // append to new parent\n\n\n if (subtreeId) {\n var found_1 = false; // newParentId is undefined means the subtree will have no parent\n\n if (newParentId) {\n var newParentDepth_1 = 0;\n (trees || []).forEach(function (tree) {\n if (found_1) return; // terminate\n\n traverseTree(tree, function (child) {\n // append subtree to the new parent ans assign the depth to the subtree\n if (newParentId === child.id) {\n found_1 = true;\n if (child.children) child.children.push(subtree);else child.children = [subtree];\n newParentDepth_1 = child.depth;\n if (subtree.itemType === 'node') subtree.depth = newParentDepth_1 + 2;else subtree.depth = newParentDepth_1 + 1;\n return false; // terminate\n }\n\n return true;\n });\n });\n } else if ((!newParentId || !found_1) && subtree.itemType !== 'node') {\n // if the newParentId is undefined or it is not found in the tree, add the subTree to the root\n trees.push(subtree);\n } // update the depth of the subtree and its children from the subtree\n\n\n var currentDepth_1 = subtree.depth;\n traverseTree(subtree, function (child) {\n if (child.itemType === 'node') currentDepth_1 += 2;else currentDepth_1 += 1;\n child.depth = currentDepth_1;\n return true;\n });\n }\n\n return trees;\n};\nvar getComboBBox = function getComboBBox(children, graph) {\n var comboBBox = {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity,\n x: undefined,\n y: undefined,\n width: undefined,\n height: undefined,\n centerX: undefined,\n centerY: undefined\n };\n\n if (!children || children.length === 0) {\n return comboBBox;\n }\n\n children.forEach(function (child) {\n var childItem = graph.findById(child.id);\n if (!childItem || !childItem.isVisible()) return; // ignore hidden children\n\n childItem.set('bboxCanvasCache', undefined);\n var childBBox = childItem.getCanvasBBox();\n if (childBBox.x && comboBBox.minX > childBBox.minX) comboBBox.minX = childBBox.minX;\n if (childBBox.y && comboBBox.minY > childBBox.minY) comboBBox.minY = childBBox.minY;\n if (childBBox.x && comboBBox.maxX < childBBox.maxX) comboBBox.maxX = childBBox.maxX;\n if (childBBox.y && comboBBox.maxY < childBBox.maxY) comboBBox.maxY = childBBox.maxY;\n });\n comboBBox.x = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.y = (comboBBox.minY + comboBBox.maxY) / 2;\n comboBBox.width = comboBBox.maxX - comboBBox.minX;\n comboBBox.height = comboBBox.maxY - comboBBox.minY;\n comboBBox.centerX = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.centerY = (comboBBox.minY + comboBBox.maxY) / 2;\n Object.keys(comboBBox).forEach(function (key) {\n if (comboBBox[key] === Infinity || comboBBox[key] === -Infinity) {\n comboBBox[key] = undefined;\n }\n });\n return comboBBox;\n};\nvar shouldRefreshEdge = function shouldRefreshEdge(cfg) {\n var refreshEdge = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size;\n if (cfg.style) refreshEdge = refreshEdge || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.r) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.width) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.height) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.rx) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.ry);\n return refreshEdge;\n};\nvar cloneBesidesImg = function cloneBesidesImg(obj) {\n var clonedObj = {};\n Object.keys(obj).forEach(function (key1) {\n var obj2 = obj[key1];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isObject\"])(obj2) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isArray\"])(obj2)) {\n var clonedObj2_1 = {};\n Object.keys(obj2).forEach(function (key2) {\n var v = obj2[key2];\n if (key2 === 'img' && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(v)) return;\n clonedObj2_1[key2] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(v);\n });\n clonedObj[key1] = clonedObj2_1;\n } else {\n clonedObj[key1] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(obj2);\n }\n });\n return clonedObj;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2dyYXBoaWMuanM/YTI2YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNRO0FBQ1Y7QUFDTTtBQUNlO0FBQ3NCO0FBQzFFO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMseURBQVc7QUFDekIsa0JBQWtCLHlEQUFXO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxtRUFBbUU7O0FBRW5FLHFDQUFxQywrQ0FBTSxxQkFBcUI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBSTtBQUMzQjtBQUNBO0FBQ0EscUJBQXFCLHNEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsUUFBUTtBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsMENBQTBDLFFBQVE7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AscUJBQXFCLDBEQUFpQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsYUFBYSx3REFBSztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrRUFBa0U7QUFDbEUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBLGtGQUFrRjtBQUNsRix5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQLG9CQUFvQiwyREFBUSxXQUFXLDJEQUFRO0FBQy9DLDhDQUE4QywyREFBUSxpQkFBaUIsMkRBQVEscUJBQXFCLDJEQUFRLHNCQUFzQiwyREFBUSxrQkFBa0IsMkRBQVE7QUFDcEs7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVEsV0FBVywwREFBTztBQUNsQztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQVE7QUFDdkMsNkJBQTZCLHdEQUFLO0FBQ2xDLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCx3QkFBd0Isd0RBQUs7QUFDN0I7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL3V0aWwvZ3JhcGhpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgYXBwbHlNYXRyaXggfSBmcm9tICcuL21hdGgnO1xuaW1wb3J0IGxldHRlckFzcGVjdFJhdGlvIGZyb20gJy4vbGV0dGVyQXNwZWN0UmF0aW8nO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGNsb25lLCBpc051bWJlciwgaXNPYmplY3QsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBQSSA9IE1hdGguUEksXG4gICAgc2luID0gTWF0aC5zaW4sXG4gICAgY29zID0gTWF0aC5jb3M7IC8vIOS4gOWFseaUr+aMgTjkuKrmlrnlkJHnmoToh6rnjq/vvIzmr4/kuKrnjq/ljaDnmoTop5LluqbmmK80NeW6pu+8jOWcqOiuoeeul+aXtuWGjeS6jOWIhu+8jOS4ujIyLjXluqZcblxudmFyIFNFTEZfTElOS19TSU4gPSBzaW4oUEkgLyA4KTtcbnZhciBTRUxGX0xJTktfQ09TID0gY29zKFBJIC8gOCk7XG5leHBvcnQgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KGVsZW1lbnQsIGdyb3VwKSB7XG4gIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gIHZhciBsZWZ0VG9wID0ge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfTtcbiAgdmFyIHJpZ2h0Qm90dG9tID0ge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfTsgLy8g5qC55o2u54i25YWD57Sg5Y+Y5o2i55+p6Zi1XG5cbiAgaWYgKGdyb3VwKSB7XG4gICAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBsZWZ0VG9wID0gYXBwbHlNYXRyaXgobGVmdFRvcCwgbWF0cml4KTtcbiAgICByaWdodEJvdHRvbSA9IGFwcGx5TWF0cml4KHJpZ2h0Qm90dG9tLCBtYXRyaXgpO1xuICB9XG5cbiAgdmFyIGx4ID0gbGVmdFRvcC54LFxuICAgICAgbHkgPSBsZWZ0VG9wLnk7XG4gIHZhciByeCA9IHJpZ2h0Qm90dG9tLngsXG4gICAgICByeSA9IHJpZ2h0Qm90dG9tLnk7XG4gIHJldHVybiB7XG4gICAgeDogbHgsXG4gICAgeTogbHksXG4gICAgbWluWDogbHgsXG4gICAgbWluWTogbHksXG4gICAgbWF4WDogcngsXG4gICAgbWF4WTogcnksXG4gICAgd2lkdGg6IHJ4IC0gbHgsXG4gICAgaGVpZ2h0OiByeSAtIGx5XG4gIH07XG59O1xuLyoqXG4gKiBnZXQgbG9vcCBlZGdlIGNvbmZpZ1xuICogQHBhcmFtIGNmZyBlZGdlIGNvbmZpZ1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0TG9vcENmZ3MgPSBmdW5jdGlvbiBnZXRMb29wQ2ZncyhjZmcpIHtcbiAgdmFyIGl0ZW0gPSBjZmcuc291cmNlTm9kZSB8fCBjZmcudGFyZ2V0Tm9kZTtcbiAgdmFyIGNvbnRhaW5lciA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICB2YXIgY29udGFpbmVyTWF0cml4ID0gY29udGFpbmVyLmdldE1hdHJpeCgpO1xuICBpZiAoIWNvbnRhaW5lck1hdHJpeCkgY29udGFpbmVyTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG4gIHZhciBiYm94ID0ga2V5U2hhcGUuZ2V0QkJveCgpO1xuICB2YXIgbG9vcENmZyA9IGNmZy5sb29wQ2ZnIHx8IHt9OyAvLyDot53nprtrZXlTaGFwZei+ueeahOacgOmrmOi3neemu1xuXG4gIHZhciBkaXN0ID0gbG9vcENmZy5kaXN0IHx8IE1hdGgubWF4KGJib3gud2lkdGgsIGJib3guaGVpZ2h0KSAqIDI7IC8vIOiHqueOr+i+ueS4jmtleVNoYXBl55qE55u45a+55L2N572u5YWz57O7XG5cbiAgdmFyIHBvc2l0aW9uID0gbG9vcENmZy5wb3NpdGlvbiB8fCBHbG9iYWwuZGVmYXVsdExvb3BQb3NpdGlvbjsgLy8g5Lit5b+D5Y+WZ3JvdXDkuIrnnJ/lrp7kvY3nva5cblxuICB2YXIgY2VudGVyID0gW2NvbnRhaW5lck1hdHJpeFs2XSwgY29udGFpbmVyTWF0cml4WzddXTtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBbY2ZnLnN0YXJ0UG9pbnQueCwgY2ZnLnN0YXJ0UG9pbnQueV07XG4gIHZhciBlbmRQb2ludCA9IFtjZmcuZW5kUG9pbnQueCwgY2ZnLmVuZFBvaW50LnldO1xuICB2YXIgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICB2YXIgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgdmFyIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19DT1M7XG4gIHZhciBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUzsgLy8g5aaC5p6c5a6a5LmJ5LqG6ZSa54K555qE77yM55u05o6l55So6ZSa54K55Z2Q5qCH77yM5ZCm5YiZ77yM5qC55o2u6Ieq546v55qEIGNmZyDorqHnrpdcblxuICBpZiAoc3RhcnRQb2ludFswXSA9PT0gZW5kUG9pbnRbMF0gJiYgc3RhcnRQb2ludFsxXSA9PT0gZW5kUG9pbnRbMV0pIHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSAtIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YUVuZCwgY2VudGVyWzFdIC0gY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIGNvc0RlbHRhU3RhcnQsIGNlbnRlclsxXSAtIHNpbkRlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSArIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJzdGFydCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YUVuZCwgY2VudGVyWzFdICsgY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICByc3RhcnQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICB9IC8vIOWmguaenOmAhuaXtumSiOeUu++8jOS6pOaNoui1t+eCueWSjOe7iOeCuVxuXG5cbiAgICBpZiAobG9vcENmZy5jbG9ja3dpc2UgPT09IGZhbHNlKSB7XG4gICAgICB2YXIgc3dhcCA9IFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXTtcbiAgICAgIHN0YXJ0UG9pbnQgPSBbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXTtcbiAgICAgIGVuZFBvaW50ID0gW3N3YXBbMF0sIHN3YXBbMV1dO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGFydFZlYyA9IFtzdGFydFBvaW50WzBdIC0gY2VudGVyWzBdLCBzdGFydFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIHNjYWxlUmF0ZVN0YXJ0ID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB2YXIgc2NhbGVSYXRlRW5kID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG5cbiAgaWYgKGxvb3BDZmcuY2xvY2t3aXNlID09PSBmYWxzZSkge1xuICAgIHNjYWxlUmF0ZVN0YXJ0ID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG4gICAgc2NhbGVSYXRlRW5kID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB9XG5cbiAgdmFyIHN0YXJ0RXh0ZW5kVmVjID0gdmVjMi5zY2FsZShbMCwgMF0sIHN0YXJ0VmVjLCBzY2FsZVJhdGVTdGFydCk7XG4gIHZhciBjb250cm9sUG9pbnQxID0gW2NlbnRlclswXSArIHN0YXJ0RXh0ZW5kVmVjWzBdLCBjZW50ZXJbMV0gKyBzdGFydEV4dGVuZFZlY1sxXV07XG4gIHZhciBlbmRWZWMgPSBbZW5kUG9pbnRbMF0gLSBjZW50ZXJbMF0sIGVuZFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIGVuZEV4dGVuZFZlYyA9IHZlYzIuc2NhbGUoWzAsIDBdLCBlbmRWZWMsIHNjYWxlUmF0ZUVuZCk7XG4gIHZhciBjb250cm9sUG9pbnQyID0gW2NlbnRlclswXSArIGVuZEV4dGVuZFZlY1swXSwgY2VudGVyWzFdICsgZW5kRXh0ZW5kVmVjWzFdXTtcbiAgY2ZnLnN0YXJ0UG9pbnQgPSB7XG4gICAgeDogc3RhcnRQb2ludFswXSxcbiAgICB5OiBzdGFydFBvaW50WzFdXG4gIH07XG4gIGNmZy5lbmRQb2ludCA9IHtcbiAgICB4OiBlbmRQb2ludFswXSxcbiAgICB5OiBlbmRQb2ludFsxXVxuICB9O1xuICBjZmcuY29udHJvbFBvaW50cyA9IFt7XG4gICAgeDogY29udHJvbFBvaW50MVswXSxcbiAgICB5OiBjb250cm9sUG9pbnQxWzFdXG4gIH0sIHtcbiAgICB4OiBjb250cm9sUG9pbnQyWzBdLFxuICAgIHk6IGNvbnRyb2xQb2ludDJbMV1cbiAgfV07XG4gIHJldHVybiBjZmc7XG59O1xuLyoqXG4gKiDmoLnmja4gbGFiZWwg5omA5Zyo57q/5p2h55qE5L2N572u55m+5YiG5q+U77yM6K6h566XIGxhYmVsIOWdkOagh1xuICogQHBhcmFtIHtvYmplY3R9ICBwYXRoU2hhcGUgIEcg55qEIHBhdGgg5a6e5L6L77yM5LiA6Iis5pivIEVkZ2Ug5a6e5L6L55qEIGtleVNoYXBlXG4gKiBAcGFyYW0ge251bWJlcn0gIHBlcmNlbnQgICAg6IyD5Zu0IDAgLSAxIOeahOe6v+adoeeZvuWIhuavlFxuICogQHBhcmFtIHtudW1iZXJ9ICByZWZYICAgICB4IOi9tOato+aWueWQkeS4uuWfuuWHhueahCBsYWJlbCDlgY/np7tcbiAqIEBwYXJhbSB7bnVtYmVyfSAgcmVmWSAgICAgeSDovbTmraPmlrnlkJHkuLrln7rlh4bnmoQgbGFiZWwg5YGP56e7XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJvdGF0ZSAgICAg5piv5ZCm5qC55o2u57q/5p2h5pac546H5peL6L2s5paH5pysXG4gKiBAcmV0dXJuIHtvYmplY3R9IOaWh+acrOeahCB4LCB5LCDmlofmnKznmoTml4vovazop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIGdldExhYmVsUG9zaXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFBvc2l0aW9uKHBhdGhTaGFwZSwgcGVyY2VudCwgcmVmWCwgcmVmWSwgcm90YXRlKSB7XG4gIHZhciBUQU5fT0ZGU0VUID0gMC4wMDAxO1xuICB2YXIgdmVjdG9yID0gW107XG4gIHZhciBwb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50KTtcblxuICBpZiAoIXBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgYW5nbGU6IDBcbiAgICB9O1xuICB9IC8vIOWktOWwvuacgOWPr+iDve+8jOaUvuWcqOacgOWJjemdou+8jOS9v+eUqCBnIHBhdGgg5LiK5bCB6KOF55qE5pa55rOVXG5cblxuICBpZiAocGVyY2VudCA8IFRBTl9PRkZTRVQpIHtcbiAgICB2ZWN0b3IgPSBwYXRoU2hhcGUuZ2V0U3RhcnRUYW5nZW50KCkucmV2ZXJzZSgpO1xuICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxIC0gVEFOX09GRlNFVCkge1xuICAgIHZlY3RvciA9IHBhdGhTaGFwZS5nZXRFbmRUYW5nZW50KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8g5ZCm5YiZ5Y+W5oyH5a6a5L2N572u55qE54K5LOS4juWwkemHj+WBj+enu+eahOeCue+8jOWBmuW+ruWIhuWQkemHj1xuICAgIHZhciBvZmZzZXRQb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50ICsgVEFOX09GRlNFVCk7XG4gICAgdmVjdG9yLnB1c2goW3BvaW50LngsIHBvaW50LnldKTtcbiAgICB2ZWN0b3IucHVzaChbb2Zmc2V0UG9pbnQueCwgb2Zmc2V0UG9pbnQueV0pO1xuICB9XG5cbiAgdmFyIHJhZCA9IE1hdGguYXRhbjIodmVjdG9yWzFdWzFdIC0gdmVjdG9yWzBdWzFdLCB2ZWN0b3JbMV1bMF0gLSB2ZWN0b3JbMF1bMF0pO1xuXG4gIGlmIChyYWQgPCAwKSB7XG4gICAgcmFkICs9IFBJICogMjtcbiAgfVxuXG4gIGlmIChyZWZYKSB7XG4gICAgcG9pbnQueCArPSBjb3MocmFkKSAqIHJlZlg7XG4gICAgcG9pbnQueSArPSBzaW4ocmFkKSAqIHJlZlg7XG4gIH1cblxuICBpZiAocmVmWSkge1xuICAgIC8vIOm7mOiupOaWueWQkeaYryB4IOi9tOato+aWueWQke+8jOazlee6v+aYryDmsYLlh7rop5LluqYgLSA5MMKwXG4gICAgdmFyIG5vcm1hbCA9IHJhZCAtIFBJIC8gMjsgLy8g6Iul5rOV57q/6KeS5bqm5ZyoIHkg6L206LSf5pa55ZCR77yM5YiH5Yiw5q2j5pa55ZCR77yM5L+d6K+BIHJlZlkg55u45a+55LqOIHkg6L205q2j5pa55ZCRXG5cbiAgICBpZiAocmFkID4gMSAvIDIgKiBQSSAmJiByYWQgPCAzICogMSAvIDIgKiBQSSkge1xuICAgICAgbm9ybWFsIC09IFBJO1xuICAgIH1cblxuICAgIHBvaW50LnggKz0gY29zKG5vcm1hbCkgKiByZWZZO1xuICAgIHBvaW50LnkgKz0gc2luKG5vcm1hbCkgKiByZWZZO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHtcbiAgICB4OiBwb2ludC54LFxuICAgIHk6IHBvaW50LnksXG4gICAgYW5nbGU6IHJhZFxuICB9O1xuXG4gIGlmIChyb3RhdGUpIHtcbiAgICBpZiAocmFkID4gMC41ICogUEkgJiYgcmFkIDwgMS41ICogUEkpIHtcbiAgICAgIHJhZCAtPSBQSTtcbiAgICB9XG5cbiAgICByZXR1cm4gX19hc3NpZ24oe1xuICAgICAgcm90YXRlOiByYWRcbiAgICB9LCByZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG52YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShkYXRhLCBmbikge1xuICBpZiAoZm4oZGF0YSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5jaGlsZHJlbikge1xuICAgIGZvciAodmFyIGkgPSBkYXRhLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoIXRyYXZlcnNlKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogZGVwdGggZmlyc3QgdHJhdmVyc2UsIGZyb20gbGVhdmVzIHRvIHJvb3QsIGNoaWxkcmVuIGluIGludmVyc2Ugb3JkZXJcbiAqICBpZiB0aGUgZm4gcmV0dXJucyBmYWxzZSwgdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICovXG5cblxudmFyIHRyYXZlcnNlVXAgPSBmdW5jdGlvbiB0cmF2ZXJzZVVwKGRhdGEsIGZuKSB7XG4gIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHtcbiAgICBmb3IgKHZhciBpID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCF0cmF2ZXJzZVVwKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgdHJhdmVyc2VUcmVlID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlKGRhdGEsIGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmF2ZXJzZShkYXRhLCBmbik7XG59O1xuLyoqXG4gKiBkZXB0aCBmaXJzdCB0cmF2ZXJzZSwgZnJvbSBsZWF2ZXMgdG8gcm9vdCwgY2hpbGRyZW4gaW4gaW52ZXJzZSBvcmRlclxuICogaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5leHBvcnQgdmFyIHRyYXZlcnNlVHJlZVVwID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlVXAoZGF0YSwgZm4pIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyYXZlcnNlVXAoZGF0YSwgZm4pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBsZXR0ZXIgdGhlIGxldHRlclxuICogQHBhcmFtIGZvbnRTaXplXG4gKiBAcmV0dXJuIHRoZSBsZXR0ZXIncyB3aWR0aFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0TGV0dGVyV2lkdGggPSBmdW5jdGlvbiBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKSB7XG4gIHJldHVybiBmb250U2l6ZSAqIChsZXR0ZXJBc3BlY3RSYXRpb1tsZXR0ZXJdIHx8IDEpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0XG4gKiBAcGFyYW0gZm9udFNpemVcbiAqIEByZXR1cm4gdGhlIHRleHQncyBzaXplXG4gKi9cblxuZXhwb3J0IHZhciBnZXRUZXh0U2l6ZSA9IGZ1bmN0aW9uIGdldFRleHRTaXplKHRleHQsIGZvbnRTaXplKSB7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcIltcXHU0RTAwLVxcdTlGQTVdK1wiKTtcbiAgdGV4dC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG4gICAgaWYgKHBhdHRlcm4udGVzdChsZXR0ZXIpKSB7XG4gICAgICAvLyDkuK3mloflrZfnrKZcbiAgICAgIHdpZHRoICs9IGZvbnRTaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCArPSBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3dpZHRoLCBmb250U2l6ZV07XG59O1xuLyoqXG4gKiBjb25zdHJ1Y3QgdGhlIHRyZWVzIGZyb20gY29tYm9zIGRhdGFcbiAqIEBwYXJhbSBhcnJheSB0aGUgY29tYm9zIGFycmF5XG4gKiBAcGFyYW0gbm9kZXMgdGhlIG5vZGVzIGFycmF5XG4gKiBAcmV0dXJuIHRoZSB0cmVlXG4gKi9cblxuZXhwb3J0IHZhciBwbGFpbkNvbWJvc1RvVHJlZXMgPSBmdW5jdGlvbiBwbGFpbkNvbWJvc1RvVHJlZXMoYXJyYXksIG5vZGVzKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGFkZGVkTWFwID0ge307XG4gIHZhciBtb2RlbE1hcCA9IHt9O1xuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgbW9kZWxNYXBbZC5pZF0gPSBkO1xuICB9KTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgIHZhciBjZCA9IGNsb25lKGQpO1xuICAgIGNkLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICBjZC5jaGlsZHJlbiA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChjZC5wYXJlbnRJZCA9PT0gY2QuaWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlRoZSBwYXJlbnRJZCBmb3IgY29tYm8gXCIgKyBjZC5pZCArIFwiIGNhbiBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGNvbWJvJ3MgaWRcIik7XG4gICAgICBkZWxldGUgY2QucGFyZW50SWQ7XG4gICAgfSBlbHNlIGlmIChjZC5wYXJlbnRJZCAmJiAhbW9kZWxNYXBbY2QucGFyZW50SWRdKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJUaGUgcGFyZW50IGNvbWJvIGZvciBjb21ibyBcIiArIGNkLmlkICsgXCIgZG9lcyBub3QgZXhpc3QhXCIpO1xuICAgICAgZGVsZXRlIGNkLnBhcmVudElkO1xuICAgIH1cblxuICAgIHZhciBtYXBwZWRPYmogPSBhZGRlZE1hcFtjZC5pZF07XG5cbiAgICBpZiAobWFwcGVkT2JqKSB7XG4gICAgICBjZC5jaGlsZHJlbiA9IG1hcHBlZE9iai5jaGlsZHJlbjtcbiAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgICAgbWFwcGVkT2JqID0gY2Q7XG5cbiAgICAgIGlmICghbWFwcGVkT2JqLnBhcmVudElkKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG1hcHBlZE9iaik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG1hcHBlZFBhcmVudCA9IGFkZGVkTWFwW21hcHBlZE9iai5wYXJlbnRJZF07XG5cbiAgICAgIGlmIChtYXBwZWRQYXJlbnQpIHtcbiAgICAgICAgaWYgKG1hcHBlZFBhcmVudC5jaGlsZHJlbikgbWFwcGVkUGFyZW50LmNoaWxkcmVuLnB1c2goY2QpO2Vsc2UgbWFwcGVkUGFyZW50LmNoaWxkcmVuID0gW2NkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwYXJlbnRfMSA9IHtcbiAgICAgICAgICBpZDogbWFwcGVkT2JqLnBhcmVudElkLFxuICAgICAgICAgIGNoaWxkcmVuOiBbbWFwcGVkT2JqXVxuICAgICAgICB9O1xuICAgICAgICBhZGRlZE1hcFttYXBwZWRPYmoucGFyZW50SWRdID0gcGFyZW50XzE7XG4gICAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGQucGFyZW50SWQpKSB7XG4gICAgICB2YXIgcGFyZW50XzIgPSBhZGRlZE1hcFtkLnBhcmVudElkXTtcblxuICAgICAgaWYgKHBhcmVudF8yKSB7XG4gICAgICAgIGlmIChwYXJlbnRfMi5jaGlsZHJlbikgcGFyZW50XzIuY2hpbGRyZW4ucHVzaChjZCk7ZWxzZSBwYXJlbnRfMi5jaGlsZHJlbiA9IFtjZF07XG4gICAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhID0ge1xuICAgICAgICAgIGlkOiBkLnBhcmVudElkLFxuICAgICAgICAgIGNoaWxkcmVuOiBbY2RdXG4gICAgICAgIH07XG4gICAgICAgIGFkZGVkTWFwW3BhLmlkXSA9IHBhO1xuICAgICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goY2QpO1xuICAgICAgYWRkZWRNYXBbY2QuaWRdID0gY2Q7XG4gICAgfVxuICB9KTsgLy8gcHJvY2Nlc3MgdGhlIG5vZGVzXG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcbiAgKG5vZGVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgdmFyIGNvbWJvID0gYWRkZWRNYXBbbm9kZS5jb21ib0lkXTtcblxuICAgIGlmIChjb21ibykge1xuICAgICAgdmFyIGNub2RlID0ge1xuICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAgY29tYm9JZDogbm9kZS5jb21ib0lkXG4gICAgICB9O1xuICAgICAgaWYgKGNvbWJvLmNoaWxkcmVuKSBjb21iby5jaGlsZHJlbi5wdXNoKGNub2RlKTtlbHNlIGNvbWJvLmNoaWxkcmVuID0gW2Nub2RlXTtcbiAgICAgIGNub2RlLml0ZW1UeXBlID0gJ25vZGUnO1xuICAgICAgYWRkZWRNYXBbbm9kZS5pZF0gPSBjbm9kZTtcbiAgICB9XG4gIH0pOyAvLyBhc3NpZ24gdGhlIGRlcHRoIGZvciBlYWNoIGVsZW1lbnRcblxuICB2YXIgbWF4RGVwdGggPSAwO1xuICByZXN1bHQuZm9yRWFjaChmdW5jdGlvbiAodHJlZSkge1xuICAgIHRyZWUuZGVwdGggPSBtYXhEZXB0aCArIDEwO1xuICAgIHRyYXZlcnNlKHRyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgdmFyIHBhcmVudDtcbiAgICAgIHZhciBpdGVtVHlwZSA9IGFkZGVkTWFwW2NoaWxkLmlkXS5pdGVtVHlwZTtcblxuICAgICAgaWYgKGl0ZW1UeXBlID09PSAnbm9kZScpIHtcbiAgICAgICAgcGFyZW50ID0gYWRkZWRNYXBbY2hpbGQuY29tYm9JZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJlbnQgPSBhZGRlZE1hcFtjaGlsZC5wYXJlbnRJZF07XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKGl0ZW1UeXBlID09PSAnbm9kZScpIGNoaWxkLmRlcHRoID0gbWF4RGVwdGggKyAxO2Vsc2UgY2hpbGQuZGVwdGggPSBtYXhEZXB0aCArIDEwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGQuZGVwdGggPSBtYXhEZXB0aCArIDEwO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4RGVwdGggPCBjaGlsZC5kZXB0aCkgbWF4RGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgIHZhciBvcmlOb2RlTW9kZWwgPSBub2RlTWFwW2NoaWxkLmlkXTtcblxuICAgICAgaWYgKG9yaU5vZGVNb2RlbCkge1xuICAgICAgICBvcmlOb2RlTW9kZWwuZGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgcmVjb25zdHJ1Y3RUcmVlID0gZnVuY3Rpb24gcmVjb25zdHJ1Y3RUcmVlKHRyZWVzLCBzdWJ0cmVlSWQsIG5ld1BhcmVudElkKSB7XG4gIHZhciBicm90aGVycyA9IHRyZWVzO1xuICB2YXIgc3VidHJlZTtcbiAgdmFyIGNvbWJvQ2hpbGRzTWFwID0ge1xuICAgIHJvb3Q6IHtcbiAgICAgIGNoaWxkcmVuOiB0cmVlc1xuICAgIH1cbiAgfTtcbiAgdmFyIGZvdW5kU3ViVHJlZSA9IGZhbHNlO1xuICB2YXIgb2xkUGFyZW50SWQgPSAncm9vdCc7XG4gICh0cmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAodHJlZSkge1xuICAgIGlmIChmb3VuZFN1YlRyZWUpIHJldHVybjtcblxuICAgIGlmICh0cmVlLmlkID09PSBzdWJ0cmVlSWQpIHtcbiAgICAgIHN1YnRyZWUgPSB0cmVlO1xuXG4gICAgICBpZiAodHJlZS5pdGVtVHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICBzdWJ0cmVlLnBhcmVudElkID0gbmV3UGFyZW50SWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJ0cmVlLmNvbWJvSWQgPSBuZXdQYXJlbnRJZDtcbiAgICAgIH1cblxuICAgICAgZm91bmRTdWJUcmVlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cmF2ZXJzZVRyZWUodHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBjb21ib0NoaWxkc01hcFtjaGlsZC5pZF0gPSB7XG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZC5jaGlsZHJlblxuICAgICAgfTsgLy8gc3RvcmUgdGhlIG9sZCBwYXJlbnQgaWQgdG8gZGVsZXRlIHRoZSBzdWJ0cmVlIGZyb20gdGhlIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBpbiBuZXh0IHJlY3Vyc2lvblxuXG4gICAgICBicm90aGVycyA9IGNvbWJvQ2hpbGRzTWFwW2NoaWxkLnBhcmVudElkIHx8IGNoaWxkLmNvbWJvSWQgfHwgJ3Jvb3QnXS5jaGlsZHJlbjtcblxuICAgICAgaWYgKGNoaWxkICYmIChjaGlsZC5yZW1vdmVkIHx8IHN1YnRyZWVJZCA9PT0gY2hpbGQuaWQpICYmIGJyb3RoZXJzKSB7XG4gICAgICAgIG9sZFBhcmVudElkID0gY2hpbGQucGFyZW50SWQgfHwgY2hpbGQuY29tYm9JZCB8fCAncm9vdCc7XG4gICAgICAgIHN1YnRyZWUgPSBjaGlsZDsgLy8gcmUtYXNzaWduIHRoZSBwYXJlbnRJZCBvciBjb21ib0lkIGZvciB0aGUgbW92ZWQgc3VidHJlZVxuXG4gICAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgIHN1YnRyZWUucGFyZW50SWQgPSBuZXdQYXJlbnRJZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWJ0cmVlLmNvbWJvSWQgPSBuZXdQYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvdW5kU3ViVHJlZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0pO1xuICBicm90aGVycyA9IGNvbWJvQ2hpbGRzTWFwW29sZFBhcmVudElkXS5jaGlsZHJlbjtcbiAgdmFyIGluZGV4ID0gYnJvdGhlcnMgPyBicm90aGVycy5pbmRleE9mKHN1YnRyZWUpIDogLTE7XG4gIGlmIChpbmRleCA+IC0xKSBicm90aGVycy5zcGxpY2UoaW5kZXgsIDEpOyAvLyDlpoLmnpzpgY3ljoblrozmlbTmo7XmoJHov5jmsqHmnInmib7liLDvvIzor7TmmI7kuYvliY3lsLHkuI3lnKjmoJHkuK1cblxuICBpZiAoIWZvdW5kU3ViVHJlZSkge1xuICAgIHN1YnRyZWUgPSB7XG4gICAgICBpZDogc3VidHJlZUlkLFxuICAgICAgaXRlbVR5cGU6ICdub2RlJyxcbiAgICAgIGNvbWJvSWQ6IG5ld1BhcmVudElkXG4gICAgfTtcbiAgICBjb21ib0NoaWxkc01hcFtzdWJ0cmVlSWRdID0ge1xuICAgICAgY2hpbGRyZW46IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gLy8gYXBwZW5kIHRvIG5ldyBwYXJlbnRcblxuXG4gIGlmIChzdWJ0cmVlSWQpIHtcbiAgICB2YXIgZm91bmRfMSA9IGZhbHNlOyAvLyBuZXdQYXJlbnRJZCBpcyB1bmRlZmluZWQgbWVhbnMgdGhlIHN1YnRyZWUgd2lsbCBoYXZlIG5vIHBhcmVudFxuXG4gICAgaWYgKG5ld1BhcmVudElkKSB7XG4gICAgICB2YXIgbmV3UGFyZW50RGVwdGhfMSA9IDA7XG4gICAgICAodHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKHRyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kXzEpIHJldHVybjsgLy8gdGVybWluYXRlXG5cbiAgICAgICAgdHJhdmVyc2VUcmVlKHRyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIC8vIGFwcGVuZCBzdWJ0cmVlIHRvIHRoZSBuZXcgcGFyZW50IGFucyBhc3NpZ24gdGhlIGRlcHRoIHRvIHRoZSBzdWJ0cmVlXG4gICAgICAgICAgaWYgKG5ld1BhcmVudElkID09PSBjaGlsZC5pZCkge1xuICAgICAgICAgICAgZm91bmRfMSA9IHRydWU7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIGNoaWxkLmNoaWxkcmVuLnB1c2goc3VidHJlZSk7ZWxzZSBjaGlsZC5jaGlsZHJlbiA9IFtzdWJ0cmVlXTtcbiAgICAgICAgICAgIG5ld1BhcmVudERlcHRoXzEgPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgICAgIGlmIChzdWJ0cmVlLml0ZW1UeXBlID09PSAnbm9kZScpIHN1YnRyZWUuZGVwdGggPSBuZXdQYXJlbnREZXB0aF8xICsgMjtlbHNlIHN1YnRyZWUuZGVwdGggPSBuZXdQYXJlbnREZXB0aF8xICsgMTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGVybWluYXRlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICgoIW5ld1BhcmVudElkIHx8ICFmb3VuZF8xKSAmJiBzdWJ0cmVlLml0ZW1UeXBlICE9PSAnbm9kZScpIHtcbiAgICAgIC8vIGlmIHRoZSBuZXdQYXJlbnRJZCBpcyB1bmRlZmluZWQgb3IgaXQgaXMgbm90IGZvdW5kIGluIHRoZSB0cmVlLCBhZGQgdGhlIHN1YlRyZWUgdG8gdGhlIHJvb3RcbiAgICAgIHRyZWVzLnB1c2goc3VidHJlZSk7XG4gICAgfSAvLyB1cGRhdGUgdGhlIGRlcHRoIG9mIHRoZSBzdWJ0cmVlIGFuZCBpdHMgY2hpbGRyZW4gZnJvbSB0aGUgc3VidHJlZVxuXG5cbiAgICB2YXIgY3VycmVudERlcHRoXzEgPSBzdWJ0cmVlLmRlcHRoO1xuICAgIHRyYXZlcnNlVHJlZShzdWJ0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSA9PT0gJ25vZGUnKSBjdXJyZW50RGVwdGhfMSArPSAyO2Vsc2UgY3VycmVudERlcHRoXzEgKz0gMTtcbiAgICAgIGNoaWxkLmRlcHRoID0gY3VycmVudERlcHRoXzE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0cmVlcztcbn07XG5leHBvcnQgdmFyIGdldENvbWJvQkJveCA9IGZ1bmN0aW9uIGdldENvbWJvQkJveChjaGlsZHJlbiwgZ3JhcGgpIHtcbiAgdmFyIGNvbWJvQkJveCA9IHtcbiAgICBtaW5YOiBJbmZpbml0eSxcbiAgICBtaW5ZOiBJbmZpbml0eSxcbiAgICBtYXhYOiAtSW5maW5pdHksXG4gICAgbWF4WTogLUluZmluaXR5LFxuICAgIHg6IHVuZGVmaW5lZCxcbiAgICB5OiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBjZW50ZXJYOiB1bmRlZmluZWQsXG4gICAgY2VudGVyWTogdW5kZWZpbmVkXG4gIH07XG5cbiAgaWYgKCFjaGlsZHJlbiB8fCBjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY29tYm9CQm94O1xuICB9XG5cbiAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICB2YXIgY2hpbGRJdGVtID0gZ3JhcGguZmluZEJ5SWQoY2hpbGQuaWQpO1xuICAgIGlmICghY2hpbGRJdGVtIHx8ICFjaGlsZEl0ZW0uaXNWaXNpYmxlKCkpIHJldHVybjsgLy8gaWdub3JlIGhpZGRlbiBjaGlsZHJlblxuXG4gICAgY2hpbGRJdGVtLnNldCgnYmJveENhbnZhc0NhY2hlJywgdW5kZWZpbmVkKTtcbiAgICB2YXIgY2hpbGRCQm94ID0gY2hpbGRJdGVtLmdldENhbnZhc0JCb3goKTtcbiAgICBpZiAoY2hpbGRCQm94LnggJiYgY29tYm9CQm94Lm1pblggPiBjaGlsZEJCb3gubWluWCkgY29tYm9CQm94Lm1pblggPSBjaGlsZEJCb3gubWluWDtcbiAgICBpZiAoY2hpbGRCQm94LnkgJiYgY29tYm9CQm94Lm1pblkgPiBjaGlsZEJCb3gubWluWSkgY29tYm9CQm94Lm1pblkgPSBjaGlsZEJCb3gubWluWTtcbiAgICBpZiAoY2hpbGRCQm94LnggJiYgY29tYm9CQm94Lm1heFggPCBjaGlsZEJCb3gubWF4WCkgY29tYm9CQm94Lm1heFggPSBjaGlsZEJCb3gubWF4WDtcbiAgICBpZiAoY2hpbGRCQm94LnkgJiYgY29tYm9CQm94Lm1heFkgPCBjaGlsZEJCb3gubWF4WSkgY29tYm9CQm94Lm1heFkgPSBjaGlsZEJCb3gubWF4WTtcbiAgfSk7XG4gIGNvbWJvQkJveC54ID0gKGNvbWJvQkJveC5taW5YICsgY29tYm9CQm94Lm1heFgpIC8gMjtcbiAgY29tYm9CQm94LnkgPSAoY29tYm9CQm94Lm1pblkgKyBjb21ib0JCb3gubWF4WSkgLyAyO1xuICBjb21ib0JCb3gud2lkdGggPSBjb21ib0JCb3gubWF4WCAtIGNvbWJvQkJveC5taW5YO1xuICBjb21ib0JCb3guaGVpZ2h0ID0gY29tYm9CQm94Lm1heFkgLSBjb21ib0JCb3gubWluWTtcbiAgY29tYm9CQm94LmNlbnRlclggPSAoY29tYm9CQm94Lm1pblggKyBjb21ib0JCb3gubWF4WCkgLyAyO1xuICBjb21ib0JCb3guY2VudGVyWSA9IChjb21ib0JCb3gubWluWSArIGNvbWJvQkJveC5tYXhZKSAvIDI7XG4gIE9iamVjdC5rZXlzKGNvbWJvQkJveCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGNvbWJvQkJveFtrZXldID09PSBJbmZpbml0eSB8fCBjb21ib0JCb3hba2V5XSA9PT0gLUluZmluaXR5KSB7XG4gICAgICBjb21ib0JCb3hba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29tYm9CQm94O1xufTtcbmV4cG9ydCB2YXIgc2hvdWxkUmVmcmVzaEVkZ2UgPSBmdW5jdGlvbiBzaG91bGRSZWZyZXNoRWRnZShjZmcpIHtcbiAgdmFyIHJlZnJlc2hFZGdlID0gaXNOdW1iZXIoY2ZnLngpIHx8IGlzTnVtYmVyKGNmZy55KSB8fCBjZmcudHlwZSB8fCBjZmcuYW5jaG9yUG9pbnRzIHx8IGNmZy5zaXplO1xuICBpZiAoY2ZnLnN0eWxlKSByZWZyZXNoRWRnZSA9IHJlZnJlc2hFZGdlIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5yKSB8fCBpc051bWJlcihjZmcuc3R5bGUud2lkdGgpIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5oZWlnaHQpIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5yeCkgfHwgaXNOdW1iZXIoY2ZnLnN0eWxlLnJ5KTtcbiAgcmV0dXJuIHJlZnJlc2hFZGdlO1xufTtcbmV4cG9ydCB2YXIgY2xvbmVCZXNpZGVzSW1nID0gZnVuY3Rpb24gY2xvbmVCZXNpZGVzSW1nKG9iaikge1xuICB2YXIgY2xvbmVkT2JqID0ge307XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5MSkge1xuICAgIHZhciBvYmoyID0gb2JqW2tleTFdO1xuXG4gICAgaWYgKGlzT2JqZWN0KG9iajIpICYmICFpc0FycmF5KG9iajIpKSB7XG4gICAgICB2YXIgY2xvbmVkT2JqMl8xID0ge307XG4gICAgICBPYmplY3Qua2V5cyhvYmoyKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkyKSB7XG4gICAgICAgIHZhciB2ID0gb2JqMltrZXkyXTtcbiAgICAgICAgaWYgKGtleTIgPT09ICdpbWcnICYmICFpc1N0cmluZyh2KSkgcmV0dXJuO1xuICAgICAgICBjbG9uZWRPYmoyXzFba2V5Ml0gPSBjbG9uZSh2KTtcbiAgICAgIH0pO1xuICAgICAgY2xvbmVkT2JqW2tleTFdID0gY2xvbmVkT2JqMl8xO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbG9uZWRPYmpba2V5MV0gPSBjbG9uZShvYmoyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkT2JqO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./color */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"ext\"].transform;\n\nvar Util = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _base__WEBPACK_IMPORTED_MODULE_4__), _graphic__WEBPACK_IMPORTED_MODULE_2__), _path__WEBPACK_IMPORTED_MODULE_3__), _math__WEBPACK_IMPORTED_MODULE_1__), _color__WEBPACK_IMPORTED_MODULE_5__), {\n transform: transform,\n mat3: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"]\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Util);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzP2IyZDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ007QUFDTjtBQUNBO0FBQ0U7QUFDUztBQUM5QyxnQkFBZ0IscURBQUc7O0FBRW5CLFdBQVcsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxrQ0FBUSxHQUFHLHFDQUFXLEdBQUcsa0NBQVEsR0FBRyxrQ0FBUSxHQUFHLG1DQUFTO0FBQzdIO0FBQ0EsUUFBUSxzREFBSTtBQUNaLENBQUM7O0FBRWMsbUVBQUkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIE1hdGhVdGlsIGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgKiBhcyBHcmFwaGljVXRpbCBmcm9tICcuL2dyYXBoaWMnO1xuaW1wb3J0ICogYXMgUGF0aFV0aWwgZnJvbSAnLi9wYXRoJztcbmltcG9ydCAqIGFzIEJhc2VVdGlsIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBDb2xvclV0aWwgZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgeyBleHQsIG1hdDMgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcblxudmFyIFV0aWwgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgQmFzZVV0aWwpLCBHcmFwaGljVXRpbCksIFBhdGhVdGlsKSwgTWF0aFV0aWwpLCBDb2xvclV0aWwpLCB7XG4gIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICBtYXQzOiBtYXQzXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgVXRpbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ' ': 0.3329986572265625,\n a: 0.5589996337890625,\n A: 0.6569992065429687,\n b: 0.58599853515625,\n B: 0.6769989013671875,\n c: 0.5469985961914062,\n C: 0.7279998779296875,\n d: 0.58599853515625,\n D: 0.705999755859375,\n e: 0.554998779296875,\n E: 0.63699951171875,\n f: 0.37299957275390627,\n F: 0.5769989013671875,\n g: 0.5909988403320312,\n G: 0.7479995727539063,\n h: 0.555999755859375,\n H: 0.7199996948242188,\n i: 0.255999755859375,\n I: 0.23699951171875,\n j: 0.26699981689453123,\n J: 0.5169998168945312,\n k: 0.5289993286132812,\n K: 0.6899993896484375,\n l: 0.23499908447265624,\n L: 0.5879989624023437,\n m: 0.854998779296875,\n M: 0.8819992065429687,\n n: 0.5589996337890625,\n N: 0.7189987182617188,\n o: 0.58599853515625,\n O: 0.7669998168945312,\n p: 0.58599853515625,\n P: 0.6419998168945312,\n q: 0.58599853515625,\n Q: 0.7669998168945312,\n r: 0.3649993896484375,\n R: 0.6759994506835938,\n s: 0.504998779296875,\n S: 0.6319992065429687,\n t: 0.354998779296875,\n T: 0.6189987182617187,\n u: 0.5599990844726562,\n U: 0.7139999389648437,\n v: 0.48199920654296874,\n V: 0.6389999389648438,\n w: 0.754998779296875,\n W: 0.929998779296875,\n x: 0.5089996337890625,\n X: 0.63699951171875,\n y: 0.4959991455078125,\n Y: 0.66199951171875,\n z: 0.48699951171875,\n Z: 0.6239990234375,\n '0': 0.6,\n '1': 0.40099945068359377,\n '2': 0.6,\n '3': 0.6,\n '4': 0.6,\n '5': 0.6,\n '6': 0.6,\n '7': 0.5469985961914062,\n '8': 0.6,\n '9': 0.6,\n '[': 0.3329986572265625,\n ']': 0.3329986572265625,\n ',': 0.26399993896484375,\n '.': 0.26399993896484375,\n ';': 0.26399993896484375,\n ':': 0.26399993896484375,\n '{': 0.3329986572265625,\n '}': 0.3329986572265625,\n '\\\\': 0.5,\n '|': 0.19499969482421875,\n '=': 0.604998779296875,\n '+': 0.604998779296875,\n '-': 0.604998779296875,\n _: 0.5,\n '`': 0.3329986572265625,\n ' ~': 0.8329986572265625,\n '!': 0.3329986572265625,\n '@': 0.8579986572265625,\n '#': 0.6,\n $: 0.6,\n '%': 0.9699996948242188,\n '^': 0.517999267578125,\n '&': 0.7259994506835937,\n '*': 0.505999755859375,\n '(': 0.3329986572265625,\n ')': 0.3329986572265625,\n '<': 0.604998779296875,\n '>': 0.604998779296875,\n '/': 0.5,\n '?': 0.53699951171875\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzPzlkNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAnICc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgYTogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBBOiAwLjY1Njk5OTIwNjU0Mjk2ODcsXG4gIGI6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEI6IDAuNjc2OTk4OTAxMzY3MTg3NSxcbiAgYzogMC41NDY5OTg1OTYxOTE0MDYyLFxuICBDOiAwLjcyNzk5OTg3NzkyOTY4NzUsXG4gIGQ6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEQ6IDAuNzA1OTk5NzU1ODU5Mzc1LFxuICBlOiAwLjU1NDk5ODc3OTI5Njg3NSxcbiAgRTogMC42MzY5OTk1MTE3MTg3NSxcbiAgZjogMC4zNzI5OTk1NzI3NTM5MDYyNyxcbiAgRjogMC41NzY5OTg5MDEzNjcxODc1LFxuICBnOiAwLjU5MDk5ODg0MDMzMjAzMTIsXG4gIEc6IDAuNzQ3OTk5NTcyNzUzOTA2MyxcbiAgaDogMC41NTU5OTk3NTU4NTkzNzUsXG4gIEg6IDAuNzE5OTk5Njk0ODI0MjE4OCxcbiAgaTogMC4yNTU5OTk3NTU4NTkzNzUsXG4gIEk6IDAuMjM2OTk5NTExNzE4NzUsXG4gIGo6IDAuMjY2OTk5ODE2ODk0NTMxMjMsXG4gIEo6IDAuNTE2OTk5ODE2ODk0NTMxMixcbiAgazogMC41Mjg5OTkzMjg2MTMyODEyLFxuICBLOiAwLjY4OTk5OTM4OTY0ODQzNzUsXG4gIGw6IDAuMjM0OTk5MDg0NDcyNjU2MjQsXG4gIEw6IDAuNTg3OTk4OTYyNDAyMzQzNyxcbiAgbTogMC44NTQ5OTg3NzkyOTY4NzUsXG4gIE06IDAuODgxOTk5MjA2NTQyOTY4NyxcbiAgbjogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBOOiAwLjcxODk5ODcxODI2MTcxODgsXG4gIG86IDAuNTg1OTk4NTM1MTU2MjUsXG4gIE86IDAuNzY2OTk5ODE2ODk0NTMxMixcbiAgcDogMC41ODU5OTg1MzUxNTYyNSxcbiAgUDogMC42NDE5OTk4MTY4OTQ1MzEyLFxuICBxOiAwLjU4NTk5ODUzNTE1NjI1LFxuICBROiAwLjc2Njk5OTgxNjg5NDUzMTIsXG4gIHI6IDAuMzY0OTk5Mzg5NjQ4NDM3NSxcbiAgUjogMC42NzU5OTk0NTA2ODM1OTM4LFxuICBzOiAwLjUwNDk5ODc3OTI5Njg3NSxcbiAgUzogMC42MzE5OTkyMDY1NDI5Njg3LFxuICB0OiAwLjM1NDk5ODc3OTI5Njg3NSxcbiAgVDogMC42MTg5OTg3MTgyNjE3MTg3LFxuICB1OiAwLjU1OTk5OTA4NDQ3MjY1NjIsXG4gIFU6IDAuNzEzOTk5OTM4OTY0ODQzNyxcbiAgdjogMC40ODE5OTkyMDY1NDI5Njg3NCxcbiAgVjogMC42Mzg5OTk5Mzg5NjQ4NDM4LFxuICB3OiAwLjc1NDk5ODc3OTI5Njg3NSxcbiAgVzogMC45Mjk5OTg3NzkyOTY4NzUsXG4gIHg6IDAuNTA4OTk5NjMzNzg5MDYyNSxcbiAgWDogMC42MzY5OTk1MTE3MTg3NSxcbiAgeTogMC40OTU5OTkxNDU1MDc4MTI1LFxuICBZOiAwLjY2MTk5OTUxMTcxODc1LFxuICB6OiAwLjQ4Njk5OTUxMTcxODc1LFxuICBaOiAwLjYyMzk5OTAyMzQzNzUsXG4gICcwJzogMC42LFxuICAnMSc6IDAuNDAwOTk5NDUwNjgzNTkzNzcsXG4gICcyJzogMC42LFxuICAnMyc6IDAuNixcbiAgJzQnOiAwLjYsXG4gICc1JzogMC42LFxuICAnNic6IDAuNixcbiAgJzcnOiAwLjU0Njk5ODU5NjE5MTQwNjIsXG4gICc4JzogMC42LFxuICAnOSc6IDAuNixcbiAgJ1snOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICddJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnLCc6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICcuJzogMC4yNjM5OTk5Mzg5NjQ4NDM3NSxcbiAgJzsnOiAwLjI2Mzk5OTkzODk2NDg0Mzc1LFxuICAnOic6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICd7JzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnfSc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ1xcXFwnOiAwLjUsXG4gICd8JzogMC4xOTQ5OTk2OTQ4MjQyMTg3NSxcbiAgJz0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJysnOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJy0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgXzogMC41LFxuICAnYCc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJyB+JzogMC44MzI5OTg2NTcyMjY1NjI1LFxuICAnISc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ0AnOiAwLjg1Nzk5ODY1NzIyNjU2MjUsXG4gICcjJzogMC42LFxuICAkOiAwLjYsXG4gICclJzogMC45Njk5OTk2OTQ4MjQyMTg4LFxuICAnXic6IDAuNTE3OTk5MjY3NTc4MTI1LFxuICAnJic6IDAuNzI1OTk5NDUwNjgzNTkzNyxcbiAgJyonOiAwLjUwNTk5OTc1NTg1OTM3NSxcbiAgJygnOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICcpJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnPCc6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnPic6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnLyc6IDAuNSxcbiAgJz8nOiAwLjUzNjk5OTUxMTcxODc1XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js ***! \*************************************************************************/ /*! exports provided: compare, getLineIntersect, getRectIntersectByPoint, getCircleIntersectByPoint, getEllipseIntersectByPoint, applyMatrix, invertMatrix, getCircleCenterByPoints, distance, scaleMatrix, floydWarshall, getAdjMatrix, translate, move, scale, rotate, getDegree, isPointInPolygon, intersectBBox, isPolygonsIntersect, Line, getBBoxBoundLine, itemIntersectByLine, fractionToLine, getPointsCenter, squareDist, pointLineSquareDist, isPointsOverlap, pointRectSquareDist, pointLineDistance, lerp */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineIntersect\", function() { return getLineIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectIntersectByPoint\", function() { return getRectIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleIntersectByPoint\", function() { return getCircleIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEllipseIntersectByPoint\", function() { return getEllipseIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyMatrix\", function() { return applyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invertMatrix\", function() { return invertMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleCenterByPoints\", function() { return getCircleCenterByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return scaleMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return floydWarshall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return getAdjMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"move\", function() { return move; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return getDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointInPolygon\", function() { return isPointInPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBBox\", function() { return intersectBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPolygonsIntersect\", function() { return isPolygonsIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxBoundLine\", function() { return getBBoxBoundLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"itemIntersectByLine\", function() { return itemIntersectByLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fractionToLine\", function() { return fractionToLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsCenter\", function() { return getPointsCenter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squareDist\", function() { return squareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineSquareDist\", function() { return pointLineSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointsOverlap\", function() { return isPointsOverlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointRectSquareDist\", function() { return pointRectSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineDistance\", function() { return pointLineDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\n/**\n * 对比对象,用于对象数组排序\n * @param {string} attributeName 排序依据的字段名称\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar compare = function compare(attributeName) {\n return function (m, n) {\n return m[attributeName] - n[attributeName];\n };\n};\n/**\n * 是否在区间内\n * @param {number} value 值\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\n/**\n * 获取两条线段的交点\n * @param {Point} p0 第一条线段起点\n * @param {Point} p1 第一条线段终点\n * @param {Point} p2 第二条线段起点\n * @param {Point} p3 第二条线段终点\n * @return {Point} 交点\n */\n\n\nvar getLineIntersect = function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.0001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var invertKross = 1 / kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) * invertKross;\n var t = (E.x * D0.y - E.y * D0.x) * invertKross;\n if (!isBetween(s, 0, 1) || !isBetween(t, 0, 1)) return null;\n return {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n\n return null;\n};\n/**\n * point and rectangular intersection point\n * @param {IRect} rect rect\n * @param {Point} point point\n * @return {PointPoint} rst;\n */\n\nvar getRectIntersectByPoint = function getRectIntersectByPoint(rect, point) {\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n var cx = x + width / 2;\n var cy = y + height / 2;\n var points = [];\n var center = {\n x: cx,\n y: cy\n };\n points.push({\n x: x,\n y: y\n });\n points.push({\n x: x + width,\n y: y\n });\n points.push({\n x: x + width,\n y: y + height\n });\n points.push({\n x: x,\n y: y + height\n });\n points.push({\n x: x,\n y: y\n });\n var rst = null;\n\n for (var i = 1; i < points.length; i++) {\n rst = getLineIntersect(points[i - 1], points[i], center, point);\n\n if (rst) {\n break;\n }\n }\n\n return rst;\n};\n/**\n * get point and circle inIntersect\n * @param {ICircle} circle 圆点,x,y,r\n * @param {Point} point 点 x,y\n * @return {Point} applied point\n */\n\nvar getCircleIntersectByPoint = function getCircleIntersectByPoint(circle, point) {\n var cx = circle.x,\n cy = circle.y,\n r = circle.r;\n var x = point.x,\n y = point.y;\n var dx = x - cx;\n var dy = y - cy;\n\n if (dx * dx + dy * dy < r * r) {\n return null;\n }\n\n var angle = Math.atan(dy / dx);\n return {\n x: cx + Math.abs(r * Math.cos(angle)) * Math.sign(dx),\n y: cy + Math.abs(r * Math.sin(angle)) * Math.sign(dy)\n };\n};\n/**\n * get point and ellipse inIntersect\n * @param {Object} ellipse 椭圆 x,y,rx,ry\n * @param {Object} point 点 x,y\n * @return {object} applied point\n */\n\nvar getEllipseIntersectByPoint = function getEllipseIntersectByPoint(ellipse, point) {\n var a = ellipse.rx;\n var b = ellipse.ry;\n var cx = ellipse.x;\n var cy = ellipse.y;\n var dx = point.x - cx;\n var dy = point.y - cy; // 直接通过 x,y 求夹角,求出来的范围是 -PI, PI\n\n var angle = Math.atan2(dy / b, dx / a);\n\n if (angle < 0) {\n angle += 2 * Math.PI; // 转换到 0,2PI\n }\n\n return {\n x: cx + a * Math.cos(angle),\n y: cy + b * Math.sin(angle)\n };\n};\n/**\n * coordinate matrix transformation\n * @param {number} point coordinate\n * @param {Matrix} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {Point} transformed point\n */\n\nvar applyMatrix = function applyMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n var vector = [point.x, point.y, tag];\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, matrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n * coordinate matrix invert transformation\n * @param {number} point coordinate\n * @param {number} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {object} transformed point\n */\n\nvar invertMatrix = function invertMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var inversedMatrix = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].invert([1, 0, 0, 0, 1, 0, 0, 0, 1], matrix);\n\n if (!inversedMatrix) {\n inversedMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var vector = [point.x, point.y, tag];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, inversedMatrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n *\n * @param p1 First coordinate\n * @param p2 second coordinate\n * @param p3 three coordinate\n */\n\nvar getCircleCenterByPoints = function getCircleCenterByPoints(p1, p2, p3) {\n var a = p1.x - p2.x;\n var b = p1.y - p2.y;\n var c = p1.x - p3.x;\n var d = p1.y - p3.y;\n var e = (p1.x * p1.x - p2.x * p2.x - p2.y * p2.y + p1.y * p1.y) / 2;\n var f = (p1.x * p1.x - p3.x * p3.x - p3.y * p3.y + p1.y * p1.y) / 2;\n var denominator = b * c - a * d;\n return {\n x: -(d * e - b * f) / denominator,\n y: -(a * f - c * e) / denominator\n };\n};\n/**\n * get distance by two points\n * @param p1 first point\n * @param p2 second point\n */\n\nvar distance = function distance(p1, p2) {\n var vx = p1.x - p2.x;\n var vy = p1.y - p2.y;\n return Math.sqrt(vx * vx + vy * vy);\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\n\nvar scaleMatrix = function scaleMatrix(matrix, ratio) {\n var result = [];\n matrix.forEach(function (row) {\n var newRow = [];\n row.forEach(function (v) {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * Floyd Warshall algorithm for shortest path distances matrix\n * @param {array} adjMatrix adjacency matrix\n * @return {array} distances shortest path distances matrix\n */\n\nvar floydWarshall = function floydWarshall(adjMatrix) {\n // initialize\n var dist = [];\n var size = adjMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n/**\n * get adjacency matrix\n * @param data graph data\n * @param directed whether it's a directed graph\n */\n\nvar getAdjMatrix = function getAdjMatrix(data, directed) {\n var nodes = data.nodes,\n edges = data.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (e) {\n var source = e.source,\n target = e.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n/**\n * 平移group\n * @param group Group 实例\n * @param vec 移动向量\n */\n\nvar translate = function translate(group, vec) {\n group.translate(vec.x, vec.y);\n};\n/**\n * 移动到指定坐标点\n * @param group Group 实例\n * @param point 移动到的坐标点\n */\n\nvar move = function move(group, point, animate, animateCfg) {\n if (animateCfg === void 0) {\n animateCfg = {\n duration: 500\n };\n }\n\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var bbox = group.getCanvasBBox();\n var vx = point.x - bbox.minX;\n var vy = point.y - bbox.minY;\n\n if (animate) {\n var dx_1 = vx * matrix[0];\n var dy_1 = vy * matrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0;\n group.animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n matrix = transform(matrix, [['t', newX_1 - lastX_1, newY_1 - lastY_1]]);\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n return {\n matrix: matrix\n };\n }, animateCfg);\n } else {\n var movedMatrix = transform(matrix, [['t', vx, vy]]);\n group.setMatrix(movedMatrix);\n }\n};\n/**\n * 缩放 group\n * @param group Group 实例\n * @param point 在x 和 y 方向上的缩放比例\n */\n\nvar scale = function scale(group, ratio) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var scaleXY = ratio;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio)) {\n scaleXY = [ratio, ratio];\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio) && ratio.length === 1) {\n scaleXY = [ratio[0], ratio[0]];\n }\n\n matrix = transform(matrix, [['s', scaleXY[0], scaleXY[1]]]);\n group.setMatrix(matrix);\n};\n/**\n *\n * @param group Group 实例\n * @param ratio 选择角度\n */\n\nvar rotate = function rotate(group, angle) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n matrix = transform(matrix, [['r', angle]]);\n group.setMatrix(matrix);\n};\nvar getDegree = function getDegree(n, nodeIdxMap, edges) {\n var degrees = [];\n\n for (var i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n\n edges.forEach(function (e) {\n if (e.source) {\n degrees[nodeIdxMap[e.source]] += 1;\n }\n\n if (e.target) {\n degrees[nodeIdxMap[e.target]] += 1;\n }\n });\n return degrees;\n}; // 判断点Q是否在p1和p2的线段上\n\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n\n return false;\n}\n/**\n * 判断点P在多边形内-射线法. Borrow from https://github.com/antvis/util/blob/master/packages/path-util/src/point-in-polygon.ts\n * @param points\n * @param x\n * @param y\n */\n\n\nvar isPointInPolygon = function isPointInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length; // 判断两个double在eps精度下的大小关系\n\n var tolerance = 1e-6;\n\n function dcmp(xValue) {\n if (Math.abs(xValue) < tolerance) {\n return 0;\n }\n\n return xValue < 0 ? -1 : 1;\n }\n\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n } // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n\n return isHit;\n}; // 判断两个BBox是否相交\n\nvar intersectBBox = function intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n};\n\nvar lineIntersectPolygon = function lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n/**\n * 判断两个polygon是否相交。\n * borrow from @antv/path-util\n * @param points1 polygon1的顶点数组\n * @param points2 polygon2的顶点数组\n */\n\n\nvar isPolygonsIntersect = function isPolygonsIntersect(points1, points2) {\n var getBBox = function getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n };\n\n var parseToLines = function parseToLines(points) {\n var lines = [];\n var count = points.length;\n\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n\n return lines;\n }; // 空数组,或者一个点返回 false\n\n\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2); // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n\n var isIn = false; // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n\nvar Line =\n/** @class */\nfunction () {\n function Line(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n\n Line.prototype.getBBox = function () {\n var minX = Math.min(this.x1, this.x2);\n var minY = Math.min(this.y1, this.y2);\n var maxX = Math.max(this.x1, this.x2);\n var maxY = Math.max(this.y1, this.y2);\n var res = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return res;\n };\n\n return Line;\n}();\n\n\nvar getBBoxBoundLine = function getBBoxBoundLine(bbox, direction) {\n var bounds = {\n top: [bbox.minX, bbox.minY, bbox.maxX, bbox.minY],\n left: [bbox.minX, bbox.minY, bbox.minX, bbox.maxY],\n bottom: [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY],\n right: [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY]\n };\n return bounds[direction];\n};\n/**\n * 计算两条线段相交时,相交点对第一条线段上的分割比例\n */\n\nvar fractionAlongLineA = function fractionAlongLineA(la, lb) {\n var uaT = (lb.x2 - lb.x1) * (la.y1 - lb.y1) - (lb.y2 - lb.y1) * (la.x1 - lb.x1);\n var ubT = (la.x2 - la.x1) * (la.y1 - lb.y1) - (la.y2 - la.y1) * (la.x1 - lb.x1);\n var uB = (lb.y2 - lb.y1) * (la.x2 - la.x1) - (lb.x2 - lb.x1) * (la.y2 - la.y1);\n\n if (uB) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return ua;\n }\n }\n\n return Number.POSITIVE_INFINITY;\n};\n\nvar itemIntersectByLine = function itemIntersectByLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var countIntersections = 0;\n var intersections = [];\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n intersections[i] = getLineIntersect({\n x: line.x1,\n y: line.y1\n }, {\n x: line.x2,\n y: line.y2\n }, {\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n\n if (intersections[i]) {\n countIntersections += 1;\n }\n }\n\n return [intersections, countIntersections];\n};\nvar fractionToLine = function fractionToLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var minDistance = Number.POSITIVE_INFINITY;\n var countIntersections = 0;\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n var testDistance = fractionAlongLineA(line, new Line(x1, y1, x2, y2));\n testDistance = Math.abs(testDistance - 0.5);\n\n if (testDistance >= 0 && testDistance <= 1) {\n countIntersections += 1;\n minDistance = testDistance < minDistance ? testDistance : minDistance;\n }\n }\n\n if (countIntersections === 0) return -1;\n return minDistance;\n};\nvar getPointsCenter = function getPointsCenter(points) {\n var centerX = 0;\n var centerY = 0;\n\n if (points.length > 0) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n centerX += point.x;\n centerY += point.y;\n }\n\n centerX /= points.length;\n centerY /= points.length;\n }\n\n return {\n x: centerX,\n y: centerY\n };\n};\nvar squareDist = function squareDist(a, b) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n};\nvar pointLineSquareDist = function pointLineSquareDist(point, line) {\n var x1 = line.x1;\n var y1 = line.y1;\n var x2 = line.x2 - x1;\n var y2 = line.y2 - y1;\n var px = point.x - x1;\n var py = point.y - y1;\n var dotprod = px * x2 + py * y2;\n var projlenSq;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n px = x2 - px;\n py = y2 - py;\n dotprod = px * x2 + py * y2;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);\n }\n }\n\n var lenSq = px * px + py * py - projlenSq;\n\n if (lenSq < 0) {\n lenSq = 0;\n }\n\n return lenSq;\n};\nvar isPointsOverlap = function isPointsOverlap(p1, p2, e) {\n if (e === void 0) {\n e = 1e-3;\n }\n\n return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) < Math.pow(e, 2);\n};\n/**\n * 点到矩形的距离的平方:矩形内部点视作距离为0,外部的点若投影落在矩形边上则为点到矩形边的最近的垂直距离,否则为点到矩形顶点的距离,\n * @param point IPoint\n * @param rect IRect\n */\n\nvar pointRectSquareDist = function pointRectSquareDist(point, rect) {\n var isLeft = point.x < rect.x;\n var isRight = point.x > rect.x + rect.width;\n var isTop = point.y > rect.y + rect.height;\n var isBottom = point.y < rect.y;\n var isPointOutside = isLeft || isRight || isTop || isBottom;\n\n if (!isPointOutside) {\n return 0;\n }\n\n if (isTop && !isLeft && !isRight) {\n return Math.pow(rect.y + rect.height - point.y, 2);\n }\n\n if (isBottom && !isLeft && !isRight) {\n return Math.pow(point.y - rect.y, 2);\n }\n\n if (isLeft && !isTop && !isBottom) {\n return Math.pow(rect.x - point.x, 2);\n }\n\n if (isRight && !isTop && !isBottom) {\n return Math.pow(rect.x + rect.width - point.x, 2);\n }\n\n var dx = Math.min(Math.abs(rect.x - point.x), Math.abs(rect.x + rect.width - point.x));\n var dy = Math.min(Math.abs(rect.y - point.y), Math.abs(rect.y + rect.height - point.y));\n return dx * dx + dy * dy;\n};\n/**\n * point to line distance\n * @param {array} line 线的四个顶点 [x1, y1, x2, y2]\n * @param {object} point 坐标点 {x, y}\n * @return {Number|NaN} distance\n */\n\nvar pointLineDistance = function pointLineDistance(line, point) {\n var x1 = line[0],\n y1 = line[1],\n x2 = line[2],\n y2 = line[3];\n var x = point.x,\n y = point.y;\n var d = [x2 - x1, y2 - y1];\n\n if (_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].exactEquals(d, [0, 0])) {\n return NaN;\n }\n\n var u = [-d[1], d[0]]; // @ts-ignore\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(u, u);\n var a = [x - x1, y - y1]; // @ts-ignore\n\n return Math.abs(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].dot(a, u));\n};\n/**\n * Linearly interpolate between start and end, where alpha is the percent distance along the line.\n * alpha = 0 will be start, and alpha = 1 will be end.\n * @param {Number} start\n * @param {Number} end\n * @param {Number} alpha interpolation factor, typically in the closed interval [0, 1]\n * @returns\n */\n\nvar lerp = function lerp(start, end, alpha) {\n return start + (end - start) * alpha;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanM/YjRjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRDtBQUNmO0FBQzNDLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksTUFBTTtBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qjs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxzREFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQUk7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUUsc0RBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPLDBEQUFPO0FBQ2Q7QUFDQTs7QUFFQSxNQUFNLDBEQUFPO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQSx3QkFBd0I7O0FBRXhCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7O0FBRW5CLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFZTtBQUNUO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsc0JBQXNCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLFlBQVksT0FBTyxZQUFZO0FBQy9CLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sc0RBQUk7QUFDVjtBQUNBOztBQUVBLHdCQUF3Qjs7QUFFeEIsRUFBRSxzREFBSTtBQUNOLDJCQUEyQjs7QUFFM0Isa0JBQWtCLHNEQUFJO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXQzLCB2ZWMzLCBleHQsIHZlYzIgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBpc0FycmF5LCBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbi8qKlxuICog5a+55q+U5a+56LGh77yM55So5LqO5a+56LGh5pWw57uE5o6S5bqPXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgICAgICBhdHRyaWJ1dGVOYW1lICDmjpLluo/kvp3mja7nmoTlrZfmrrXlkI3np7BcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1pbiAgICDmnIDlsI/lgLxcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1heCAgICDmnIDlpKflgLxcbiAqIEByZXR1cm4gIHtib29sZWFufSAgICAgIGJvb2wgICDluIPlsJRcbiAqL1xuXG5leHBvcnQgdmFyIGNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChtLCBuKSB7XG4gICAgcmV0dXJuIG1bYXR0cmlidXRlTmFtZV0gLSBuW2F0dHJpYnV0ZU5hbWVdO1xuICB9O1xufTtcbi8qKlxuICog5piv5ZCm5Zyo5Yy66Ze05YaFXG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICB2YWx1ZSAg5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtaW4gICAg5pyA5bCP5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtYXggICAg5pyA5aSn5YC8XG4gKiBAcmV0dXJuICB7Ym9vbGVhbn0gICAgICBib29sICAg5biD5bCUXG4gKi9cblxudmFyIGlzQmV0d2VlbiA9IGZ1bmN0aW9uIGlzQmV0d2Vlbih2YWx1ZSwgbWluLCBtYXgpIHtcbiAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuLyoqXG4gKiDojrflj5bkuKTmnaHnur/mrrXnmoTkuqTngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDAg56ys5LiA5p2h57q/5q616LW354K5XG4gKiBAcGFyYW0gIHtQb2ludH0gIHAxIOesrOS4gOadoee6v+autee7iOeCuVxuICogQHBhcmFtICB7UG9pbnR9ICBwMiDnrKzkuozmnaHnur/mrrXotbfngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDMg56ys5LqM5p2h57q/5q6157uI54K5XG4gKiBAcmV0dXJuIHtQb2ludH0gIOS6pOeCuVxuICovXG5cblxuZXhwb3J0IHZhciBnZXRMaW5lSW50ZXJzZWN0ID0gZnVuY3Rpb24gZ2V0TGluZUludGVyc2VjdChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdG9sZXJhbmNlID0gMC4wMDAxO1xuICB2YXIgRSA9IHtcbiAgICB4OiBwMi54IC0gcDAueCxcbiAgICB5OiBwMi55IC0gcDAueVxuICB9O1xuICB2YXIgRDAgPSB7XG4gICAgeDogcDEueCAtIHAwLngsXG4gICAgeTogcDEueSAtIHAwLnlcbiAgfTtcbiAgdmFyIEQxID0ge1xuICAgIHg6IHAzLnggLSBwMi54LFxuICAgIHk6IHAzLnkgLSBwMi55XG4gIH07XG4gIHZhciBrcm9zcyA9IEQwLnggKiBEMS55IC0gRDAueSAqIEQxLng7XG4gIHZhciBzcXJLcm9zcyA9IGtyb3NzICoga3Jvc3M7XG4gIHZhciBpbnZlcnRLcm9zcyA9IDEgLyBrcm9zcztcbiAgdmFyIHNxckxlbjAgPSBEMC54ICogRDAueCArIEQwLnkgKiBEMC55O1xuICB2YXIgc3FyTGVuMSA9IEQxLnggKiBEMS54ICsgRDEueSAqIEQxLnk7XG5cbiAgaWYgKHNxcktyb3NzID4gdG9sZXJhbmNlICogc3FyTGVuMCAqIHNxckxlbjEpIHtcbiAgICB2YXIgcyA9IChFLnggKiBEMS55IC0gRS55ICogRDEueCkgKiBpbnZlcnRLcm9zcztcbiAgICB2YXIgdCA9IChFLnggKiBEMC55IC0gRS55ICogRDAueCkgKiBpbnZlcnRLcm9zcztcbiAgICBpZiAoIWlzQmV0d2VlbihzLCAwLCAxKSB8fCAhaXNCZXR3ZWVuKHQsIDAsIDEpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcDAueCArIHMgKiBEMC54LFxuICAgICAgeTogcDAueSArIHMgKiBEMC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbi8qKlxuICogcG9pbnQgYW5kIHJlY3Rhbmd1bGFyIGludGVyc2VjdGlvbiBwb2ludFxuICogQHBhcmFtICB7SVJlY3R9IHJlY3QgIHJlY3RcbiAqIEBwYXJhbSAge1BvaW50fSBwb2ludCBwb2ludFxuICogQHJldHVybiB7UG9pbnRQb2ludH0gcnN0O1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0UmVjdEludGVyc2VjdEJ5UG9pbnQgPSBmdW5jdGlvbiBnZXRSZWN0SW50ZXJzZWN0QnlQb2ludChyZWN0LCBwb2ludCkge1xuICB2YXIgeCA9IHJlY3QueCxcbiAgICAgIHkgPSByZWN0LnksXG4gICAgICB3aWR0aCA9IHJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgdmFyIGN4ID0geCArIHdpZHRoIC8gMjtcbiAgdmFyIGN5ID0geSArIGhlaWdodCAvIDI7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBjeCxcbiAgICB5OiBjeVxuICB9O1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pO1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCArIHdpZHRoLFxuICAgIHk6IHlcbiAgfSk7XG4gIHBvaW50cy5wdXNoKHtcbiAgICB4OiB4ICsgd2lkdGgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KTtcbiAgdmFyIHJzdCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICByc3QgPSBnZXRMaW5lSW50ZXJzZWN0KHBvaW50c1tpIC0gMV0sIHBvaW50c1tpXSwgY2VudGVyLCBwb2ludCk7XG5cbiAgICBpZiAocnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcbi8qKlxuICogZ2V0IHBvaW50IGFuZCBjaXJjbGUgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7SUNpcmNsZX0gY2lyY2xlIOWchueCue+8jHgseSxyXG4gKiBAcGFyYW0ge1BvaW50fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtQb2ludH0gYXBwbGllZCBwb2ludFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCA9IGZ1bmN0aW9uIGdldENpcmNsZUludGVyc2VjdEJ5UG9pbnQoY2lyY2xlLCBwb2ludCkge1xuICB2YXIgY3ggPSBjaXJjbGUueCxcbiAgICAgIGN5ID0gY2lyY2xlLnksXG4gICAgICByID0gY2lyY2xlLnI7XG4gIHZhciB4ID0gcG9pbnQueCxcbiAgICAgIHkgPSBwb2ludC55O1xuICB2YXIgZHggPSB4IC0gY3g7XG4gIHZhciBkeSA9IHkgLSBjeTtcblxuICBpZiAoZHggKiBkeCArIGR5ICogZHkgPCByICogcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuICByZXR1cm4ge1xuICAgIHg6IGN4ICsgTWF0aC5hYnMociAqIE1hdGguY29zKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHgpLFxuICAgIHk6IGN5ICsgTWF0aC5hYnMociAqIE1hdGguc2luKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHkpXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgcG9pbnQgYW5kIGVsbGlwc2UgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGxpcHNlIOakreWchiB4LHkscngscnlcbiAqIEBwYXJhbSB7T2JqZWN0fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtvYmplY3R9IGFwcGxpZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGdldEVsbGlwc2VJbnRlcnNlY3RCeVBvaW50ID0gZnVuY3Rpb24gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoZWxsaXBzZSwgcG9pbnQpIHtcbiAgdmFyIGEgPSBlbGxpcHNlLnJ4O1xuICB2YXIgYiA9IGVsbGlwc2Uucnk7XG4gIHZhciBjeCA9IGVsbGlwc2UueDtcbiAgdmFyIGN5ID0gZWxsaXBzZS55O1xuICB2YXIgZHggPSBwb2ludC54IC0gY3g7XG4gIHZhciBkeSA9IHBvaW50LnkgLSBjeTsgLy8g55u05o6l6YCa6L+HIHgseSDmsYLlpLnop5LvvIzmsYLlh7rmnaXnmoTojIPlm7TmmK8gLVBJLCBQSVxuXG4gIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoZHkgLyBiLCBkeCAvIGEpO1xuXG4gIGlmIChhbmdsZSA8IDApIHtcbiAgICBhbmdsZSArPSAyICogTWF0aC5QSTsgLy8g6L2s5o2i5YiwIDDvvIwyUElcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogY3ggKyBhICogTWF0aC5jb3MoYW5nbGUpLFxuICAgIHk6IGN5ICsgYiAqIE1hdGguc2luKGFuZ2xlKVxuICB9O1xufTtcbi8qKlxuICogY29vcmRpbmF0ZSBtYXRyaXggdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtNYXRyaXh9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtQb2ludH0gdHJhbnNmb3JtZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGFwcGx5TWF0cml4ID0gZnVuY3Rpb24gYXBwbHlNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICB2YXIgdmVjdG9yID0gW3BvaW50LngsIHBvaW50LnksIHRhZ107XG5cbiAgaWYgKCFtYXRyaXggfHwgaXNOYU4obWF0cml4WzBdKSkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZlYzMudHJhbnNmb3JtTWF0Myh2ZWN0b3IsIHZlY3RvciwgbWF0cml4KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB2ZWN0b3JbMF0sXG4gICAgeTogdmVjdG9yWzFdXG4gIH07XG59O1xuLyoqXG4gKiBjb29yZGluYXRlIG1hdHJpeCBpbnZlcnQgdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtvYmplY3R9IHRyYW5zZm9ybWVkIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBpbnZlcnRNYXRyaXggPSBmdW5jdGlvbiBpbnZlcnRNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICBpZiAoIW1hdHJpeCB8fCBpc05hTihtYXRyaXhbMF0pKSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgdmFyIGludmVyc2VkTWF0cml4ID0gbWF0My5pbnZlcnQoWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdLCBtYXRyaXgpO1xuXG4gIGlmICghaW52ZXJzZWRNYXRyaXgpIHtcbiAgICBpbnZlcnNlZE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciB2ZWN0b3IgPSBbcG9pbnQueCwgcG9pbnQueSwgdGFnXTtcbiAgdmVjMy50cmFuc2Zvcm1NYXQzKHZlY3RvciwgdmVjdG9yLCBpbnZlcnNlZE1hdHJpeCk7XG4gIHJldHVybiB7XG4gICAgeDogdmVjdG9yWzBdLFxuICAgIHk6IHZlY3RvclsxXVxuICB9O1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBwMSBGaXJzdCBjb29yZGluYXRlXG4gKiBAcGFyYW0gcDIgc2Vjb25kIGNvb3JkaW5hdGVcbiAqIEBwYXJhbSBwMyB0aHJlZSBjb29yZGluYXRlXG4gKi9cblxuZXhwb3J0IHZhciBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyA9IGZ1bmN0aW9uIGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHAxLCBwMiwgcDMpIHtcbiAgdmFyIGEgPSBwMS54IC0gcDIueDtcbiAgdmFyIGIgPSBwMS55IC0gcDIueTtcbiAgdmFyIGMgPSBwMS54IC0gcDMueDtcbiAgdmFyIGQgPSBwMS55IC0gcDMueTtcbiAgdmFyIGUgPSAocDEueCAqIHAxLnggLSBwMi54ICogcDIueCAtIHAyLnkgKiBwMi55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGYgPSAocDEueCAqIHAxLnggLSBwMy54ICogcDMueCAtIHAzLnkgKiBwMy55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGRlbm9taW5hdG9yID0gYiAqIGMgLSBhICogZDtcbiAgcmV0dXJuIHtcbiAgICB4OiAtKGQgKiBlIC0gYiAqIGYpIC8gZGVub21pbmF0b3IsXG4gICAgeTogLShhICogZiAtIGMgKiBlKSAvIGRlbm9taW5hdG9yXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgZGlzdGFuY2UgYnkgdHdvIHBvaW50c1xuICogQHBhcmFtIHAxIGZpcnN0IHBvaW50XG4gKiBAcGFyYW0gcDIgc2Vjb25kIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICB2YXIgdnggPSBwMS54IC0gcDIueDtcbiAgdmFyIHZ5ID0gcDEueSAtIHAyLnk7XG4gIHJldHVybiBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xufTtcbi8qKlxuICogc2NhbGUgbWF0cml4XG4gKiBAcGFyYW0gbWF0cml4IFsgW10sIFtdLCBbXSBdXG4gKiBAcGFyYW0gcmF0aW9cbiAqL1xuXG5leHBvcnQgdmFyIHNjYWxlTWF0cml4ID0gZnVuY3Rpb24gc2NhbGVNYXRyaXgobWF0cml4LCByYXRpbykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICB2YXIgbmV3Um93ID0gW107XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHYgKiByYXRpbyk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobmV3Um93KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBGbG95ZCBXYXJzaGFsbCBhbGdvcml0aG0gZm9yIHNob3J0ZXN0IHBhdGggZGlzdGFuY2VzIG1hdHJpeFxuICogQHBhcmFtICB7YXJyYXl9IGFkak1hdHJpeCAgIGFkamFjZW5jeSBtYXRyaXhcbiAqIEByZXR1cm4ge2FycmF5fSBkaXN0YW5jZXMgICBzaG9ydGVzdCBwYXRoIGRpc3RhbmNlcyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgdmFyIGZsb3lkV2Fyc2hhbGwgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGFkak1hdHJpeCkge1xuICAvLyBpbml0aWFsaXplXG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqTWF0cml4Lmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgIGRpc3RbaV0gPSBbXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICBkaXN0W2ldW2pdID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWRqTWF0cml4W2ldW2pdID09PSAwIHx8ICFhZGpNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkak1hdHJpeFtpXVtqXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gZmxveWRcblxuXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgc2l6ZTsgayArPSAxKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgIGlmIChkaXN0W2ldW2pdID4gZGlzdFtpXVtrXSArIGRpc3Rba11bal0pIHtcbiAgICAgICAgICBkaXN0W2ldW2pdID0gZGlzdFtpXVtrXSArIGRpc3Rba11bal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzdDtcbn07XG4vKipcbiAqIGdldCBhZGphY2VuY3kgbWF0cml4XG4gKiBAcGFyYW0gZGF0YSBncmFwaCBkYXRhXG4gKiBAcGFyYW0gZGlyZWN0ZWQgd2hldGhlciBpdCdzIGEgZGlyZWN0ZWQgZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGdldEFkak1hdHJpeCA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeChkYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBkYXRhLmVkZ2VzO1xuICB2YXIgbWF0cml4ID0gW107IC8vIG1hcCBub2RlIHdpdGggaW5kZXggaW4gZGF0YS5ub2Rlc1xuXG4gIHZhciBub2RlTWFwID0ge307XG5cbiAgaWYgKCFub2Rlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBub2RlcyBkYXRhIScpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGUuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuLyoqXG4gKiDlubPnp7tncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHZlYyDnp7vliqjlkJHph49cbiAqL1xuXG5leHBvcnQgdmFyIHRyYW5zbGF0ZSA9IGZ1bmN0aW9uIHRyYW5zbGF0ZShncm91cCwgdmVjKSB7XG4gIGdyb3VwLnRyYW5zbGF0ZSh2ZWMueCwgdmVjLnkpO1xufTtcbi8qKlxuICog56e75Yqo5Yiw5oyH5a6a5Z2Q5qCH54K5XG4gKiBAcGFyYW0gZ3JvdXAgR3JvdXAg5a6e5L6LXG4gKiBAcGFyYW0gcG9pbnQg56e75Yqo5Yiw55qE5Z2Q5qCH54K5XG4gKi9cblxuZXhwb3J0IHZhciBtb3ZlID0gZnVuY3Rpb24gbW92ZShncm91cCwgcG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgaWYgKGFuaW1hdGVDZmcgPT09IHZvaWQgMCkge1xuICAgIGFuaW1hdGVDZmcgPSB7XG4gICAgICBkdXJhdGlvbjogNTAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcblxuICBpZiAoIW1hdHJpeCkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICB2YXIgdnggPSBwb2ludC54IC0gYmJveC5taW5YO1xuICB2YXIgdnkgPSBwb2ludC55IC0gYmJveC5taW5ZO1xuXG4gIGlmIChhbmltYXRlKSB7XG4gICAgdmFyIGR4XzEgPSB2eCAqIG1hdHJpeFswXTtcbiAgICB2YXIgZHlfMSA9IHZ5ICogbWF0cml4WzRdO1xuICAgIHZhciBsYXN0WF8xID0gMDtcbiAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgdmFyIG5ld1hfMSA9IDA7XG4gICAgdmFyIG5ld1lfMSA9IDA7XG4gICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgIG5ld1lfMSA9IGR5XzEgKiByYXRpbztcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCBuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xXV0pO1xuICAgICAgbGFzdFhfMSA9IG5ld1hfMTtcbiAgICAgIGxhc3RZXzEgPSBuZXdZXzE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfTtcbiAgICB9LCBhbmltYXRlQ2ZnKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW92ZWRNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgdngsIHZ5XV0pO1xuICAgIGdyb3VwLnNldE1hdHJpeChtb3ZlZE1hdHJpeCk7XG4gIH1cbn07XG4vKipcbiAqIOe8qeaUviBncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHBvaW50IOWcqHgg5ZKMIHkg5pa55ZCR5LiK55qE57yp5pS+5q+U5L6LXG4gKi9cblxuZXhwb3J0IHZhciBzY2FsZSA9IGZ1bmN0aW9uIHNjYWxlKGdyb3VwLCByYXRpbykge1xuICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG5cbiAgaWYgKCFtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gIH1cblxuICB2YXIgc2NhbGVYWSA9IHJhdGlvO1xuXG4gIGlmICghaXNBcnJheShyYXRpbykpIHtcbiAgICBzY2FsZVhZID0gW3JhdGlvLCByYXRpb107XG4gIH1cblxuICBpZiAoaXNBcnJheShyYXRpbykgJiYgcmF0aW8ubGVuZ3RoID09PSAxKSB7XG4gICAgc2NhbGVYWSA9IFtyYXRpb1swXSwgcmF0aW9bMF1dO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncycsIHNjYWxlWFlbMF0sIHNjYWxlWFlbMV1dXSk7XG4gIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBncm91cCBHcm91cCDlrp7kvotcbiAqIEBwYXJhbSByYXRpbyDpgInmi6nop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZShncm91cCwgYW5nbGUpIHtcbiAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gIGlmICghbWF0cml4KSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncicsIGFuZ2xlXV0pO1xuICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbn07XG5leHBvcnQgdmFyIGdldERlZ3JlZSA9IGZ1bmN0aW9uIGdldERlZ3JlZShuLCBub2RlSWR4TWFwLCBlZGdlcykge1xuICB2YXIgZGVncmVlcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZGVncmVlc1tpXSA9IDA7XG4gIH1cblxuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUuc291cmNlKSB7XG4gICAgICBkZWdyZWVzW25vZGVJZHhNYXBbZS5zb3VyY2VdXSArPSAxO1xuICAgIH1cblxuICAgIGlmIChlLnRhcmdldCkge1xuICAgICAgZGVncmVlc1tub2RlSWR4TWFwW2UudGFyZ2V0XV0gKz0gMTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07IC8vIOWIpOaWreeCuVHmmK/lkKblnKhwMeWSjHAy55qE57q/5q615LiKXG5cbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgaWYgKChxWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pID09PSAocDJbMF0gLSBwMVswXSkgKiAocVsxXSAtIHAxWzFdKSAmJiBNYXRoLm1pbihwMVswXSwgcDJbMF0pIDw9IHFbMF0gJiYgcVswXSA8PSBNYXRoLm1heChwMVswXSwgcDJbMF0pICYmIE1hdGgubWluKHAxWzFdLCBwMlsxXSkgPD0gcVsxXSAmJiBxWzFdIDw9IE1hdGgubWF4KHAxWzFdLCBwMlsxXSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICog5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5UuIEJvcnJvdyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvdXRpbC9ibG9iL21hc3Rlci9wYWNrYWdlcy9wYXRoLXV0aWwvc3JjL3BvaW50LWluLXBvbHlnb24udHNcbiAqIEBwYXJhbSBwb2ludHNcbiAqIEBwYXJhbSB4XG4gKiBAcGFyYW0geVxuICovXG5cblxuZXhwb3J0IHZhciBpc1BvaW50SW5Qb2x5Z29uID0gZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludHMsIHgsIHkpIHtcbiAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gIHZhciBuID0gcG9pbnRzLmxlbmd0aDsgLy8g5Yik5pat5Lik5LiqZG91Ymxl5ZyoZXBz57K+5bqm5LiL55qE5aSn5bCP5YWz57O7XG5cbiAgdmFyIHRvbGVyYW5jZSA9IDFlLTY7XG5cbiAgZnVuY3Rpb24gZGNtcCh4VmFsdWUpIHtcbiAgICBpZiAoTWF0aC5hYnMoeFZhbHVlKSA8IHRvbGVyYW5jZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHhWYWx1ZSA8IDAgPyAtMSA6IDE7XG4gIH1cblxuICBpZiAobiA8PSAyKSB7XG4gICAgLy8gc3ZnIOS4reeCueWwj+S6jiAzIOS4quaXtu+8jOS4jeaYvuekuu+8jOS5n+aXoOazleiiq+aLvuWPllxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIHAxID0gcG9pbnRzW2ldO1xuICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG5cbiAgICBpZiAob25TZWdtZW50KHAxLCBwMiwgW3gsIHldKSkge1xuICAgICAgLy8g54K55Zyo5aSa6L655b2i5LiA5p2h6L655LiKXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgLy8g5ZCO5LiA5Liq5Yik5pat6KKr5rWL54K5IOWcqCDlsITnur/kuI7ovrnkuqTngrkg55qE5bem6L65XG5cblxuICAgIGlmIChkY21wKHAxWzFdIC0geSkgPiAwICE9PSBkY21wKHAyWzFdIC0geSkgPiAwICYmIGRjbXAoeCAtICh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pIC8gKHAxWzFdIC0gcDJbMV0pIC0gcDFbMF0pIDwgMCkge1xuICAgICAgaXNIaXQgPSAhaXNIaXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzSGl0O1xufTsgLy8g5Yik5pat5Lik5LiqQkJveOaYr+WQpuebuOS6pFxuXG5leHBvcnQgdmFyIGludGVyc2VjdEJCb3ggPSBmdW5jdGlvbiBpbnRlcnNlY3RCQm94KGJveDEsIGJveDIpIHtcbiAgcmV0dXJuICEoYm94Mi5taW5YID4gYm94MS5tYXhYIHx8IGJveDIubWF4WCA8IGJveDEubWluWCB8fCBib3gyLm1pblkgPiBib3gxLm1heFkgfHwgYm94Mi5tYXhZIDwgYm94MS5taW5ZKTtcbn07XG5cbnZhciBsaW5lSW50ZXJzZWN0UG9seWdvbiA9IGZ1bmN0aW9uIGxpbmVJbnRlcnNlY3RQb2x5Z29uKGxpbmVzLCBsaW5lKSB7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzLCBmdW5jdGlvbiAobCkge1xuICAgIGlmIChnZXRMaW5lSW50ZXJzZWN0KGwuZnJvbSwgbC50bywgbGluZS5mcm9tLCBsaW5lLnRvKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG4vKipcbiAqIOWIpOaWreS4pOS4qnBvbHlnb27mmK/lkKbnm7jkuqTjgIJcbiAqIGJvcnJvdyBmcm9tIEBhbnR2L3BhdGgtdXRpbFxuICogQHBhcmFtIHBvaW50czEgcG9seWdvbjHnmoTpobbngrnmlbDnu4RcbiAqIEBwYXJhbSBwb2ludHMyIHBvbHlnb24y55qE6aG254K55pWw57uEXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzUG9seWdvbnNJbnRlcnNlY3QgPSBmdW5jdGlvbiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvaW50czEsIHBvaW50czIpIHtcbiAgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KHBvaW50cykge1xuICAgIHZhciB4QXJyID0gcG9pbnRzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIHBbMF07XG4gICAgfSk7XG4gICAgdmFyIHlBcnIgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gcFsxXTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWluWDogTWF0aC5taW4uYXBwbHkobnVsbCwgeEFyciksXG4gICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShudWxsLCB4QXJyKSxcbiAgICAgIG1pblk6IE1hdGgubWluLmFwcGx5KG51bGwsIHlBcnIpLFxuICAgICAgbWF4WTogTWF0aC5tYXguYXBwbHkobnVsbCwgeUFycilcbiAgICB9O1xuICB9O1xuXG4gIHZhciBwYXJzZVRvTGluZXMgPSBmdW5jdGlvbiBwYXJzZVRvTGluZXMocG9pbnRzKSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgdmFyIGNvdW50ID0gcG9pbnRzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgIHZhciBuZXh0ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgeDogcG9pbnRbMF0sXG4gICAgICAgICAgeTogcG9pbnRbMV1cbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB4OiBuZXh0WzBdLFxuICAgICAgICAgIHk6IG5leHRbMV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBmaXJzdCA9IHBvaW50c1swXTtcbiAgICAgIHZhciBsYXN0ID0gcG9pbnRzW2NvdW50IC0gMV07XG4gICAgICBsaW5lcy5wdXNoKHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHg6IGxhc3RbMF0sXG4gICAgICAgICAgeTogbGFzdFsxXVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHg6IGZpcnN0WzBdLFxuICAgICAgICAgIHk6IGZpcnN0WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfTsgLy8g56m65pWw57uE77yM5oiW6ICF5LiA5Liq54K56L+U5ZueIGZhbHNlXG5cblxuICBpZiAocG9pbnRzMS5sZW5ndGggPCAyIHx8IHBvaW50czIubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBiYm94MSA9IGdldEJCb3gocG9pbnRzMSk7XG4gIHZhciBiYm94MiA9IGdldEJCb3gocG9pbnRzMik7IC8vIOWIpOWumuWMheWbtOebkuaYr+WQpuebuOS6pO+8jOavlOWIpOWumueCueaYr+WQpuWcqOWkmui+ueW9ouWGheimgeW/q+eahOWkmu+8jOWPr+S7peetm+mAieaOieWkp+WkmuaVsOaDheWGtVxuXG4gIGlmICghaW50ZXJzZWN0QkJveChiYm94MSwgYmJveDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGlzSW4gPSBmYWxzZTsgLy8g5Yik5a6a54K55piv5ZCm5Zyo5aSa6L655b2i5YaF6YOo77yM5LiA5pem5pyJ5LiA5Liq54K55Zyo5Y+m5LiA5Liq5aSa6L655b2i5YaF77yM5YiZ6L+U5ZueXG5cbiAgZWFjaChwb2ludHMyLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAoaXNQb2ludEluUG9seWdvbihwb2ludHMxLCBwb2ludFswXSwgcG9pbnRbMV0pKSB7XG4gICAgICBpc0luID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChpc0luKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBlYWNoKHBvaW50czEsIGZ1bmN0aW9uIChwb2ludCkge1xuICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKHBvaW50czIsIHBvaW50WzBdLCBwb2ludFsxXSkpIHtcbiAgICAgIGlzSW4gPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzSW4pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBsaW5lczEgPSBwYXJzZVRvTGluZXMocG9pbnRzMSk7XG4gIHZhciBsaW5lczIgPSBwYXJzZVRvTGluZXMocG9pbnRzMik7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzMiwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICBpZiAobGluZUludGVyc2VjdFBvbHlnb24obGluZXMxLCBsaW5lKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG5cbnZhciBMaW5lID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHRoaXMueDEgPSB4MTtcbiAgICB0aGlzLnkxID0geTE7XG4gICAgdGhpcy54MiA9IHgyO1xuICAgIHRoaXMueTIgPSB5MjtcbiAgfVxuXG4gIExpbmUucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHRoaXMueTEsIHRoaXMueTIpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgodGhpcy54MSwgdGhpcy54Mik7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWluWCxcbiAgICAgIHk6IG1pblksXG4gICAgICBtaW5YOiBtaW5YLFxuICAgICAgbWluWTogbWluWSxcbiAgICAgIG1heFg6IG1heFgsXG4gICAgICBtYXhZOiBtYXhZLFxuICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICByZXR1cm4gTGluZTtcbn0oKTtcblxuZXhwb3J0IHsgTGluZSB9O1xuZXhwb3J0IHZhciBnZXRCQm94Qm91bmRMaW5lID0gZnVuY3Rpb24gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb24pIHtcbiAgdmFyIGJvdW5kcyA9IHtcbiAgICB0b3A6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1pblldLFxuICAgIGxlZnQ6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5taW5YLCBiYm94Lm1heFldLFxuICAgIGJvdHRvbTogW2Jib3gubWluWCwgYmJveC5tYXhZLCBiYm94Lm1heFgsIGJib3gubWF4WV0sXG4gICAgcmlnaHQ6IFtiYm94Lm1heFgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1heFldXG4gIH07XG4gIHJldHVybiBib3VuZHNbZGlyZWN0aW9uXTtcbn07XG4vKipcbiAqIOiuoeeul+S4pOadoee6v+auteebuOS6pOaXtu+8jOebuOS6pOeCueWvueesrOS4gOadoee6v+auteS4iueahOWIhuWJsuavlOS+i1xuICovXG5cbnZhciBmcmFjdGlvbkFsb25nTGluZUEgPSBmdW5jdGlvbiBmcmFjdGlvbkFsb25nTGluZUEobGEsIGxiKSB7XG4gIHZhciB1YVQgPSAobGIueDIgLSBsYi54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGIueTIgLSBsYi55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1YlQgPSAobGEueDIgLSBsYS54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGEueTIgLSBsYS55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1QiA9IChsYi55MiAtIGxiLnkxKSAqIChsYS54MiAtIGxhLngxKSAtIChsYi54MiAtIGxiLngxKSAqIChsYS55MiAtIGxhLnkxKTtcblxuICBpZiAodUIpIHtcbiAgICB2YXIgdWEgPSB1YVQgLyB1QjtcbiAgICB2YXIgdWIgPSB1YlQgLyB1QjtcblxuICAgIGlmICh1YSA+PSAwICYmIHVhIDw9IDEgJiYgdWIgPj0gMCAmJiB1YiA8PSAxKSB7XG4gICAgICByZXR1cm4gdWE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbn07XG5cbmV4cG9ydCB2YXIgaXRlbUludGVyc2VjdEJ5TGluZSA9IGZ1bmN0aW9uIGl0ZW1JbnRlcnNlY3RCeUxpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBjb3VudEludGVyc2VjdGlvbnMgPSAwO1xuICB2YXIgaW50ZXJzZWN0aW9ucyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIF9hID0gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb25zW2ldKSxcbiAgICAgICAgeDEgPSBfYVswXSxcbiAgICAgICAgeTEgPSBfYVsxXSxcbiAgICAgICAgeDIgPSBfYVsyXSxcbiAgICAgICAgeTIgPSBfYVszXTtcblxuICAgIGludGVyc2VjdGlvbnNbaV0gPSBnZXRMaW5lSW50ZXJzZWN0KHtcbiAgICAgIHg6IGxpbmUueDEsXG4gICAgICB5OiBsaW5lLnkxXG4gICAgfSwge1xuICAgICAgeDogbGluZS54MixcbiAgICAgIHk6IGxpbmUueTJcbiAgICB9LCB7XG4gICAgICB4OiB4MSxcbiAgICAgIHk6IHkxXG4gICAgfSwge1xuICAgICAgeDogeDIsXG4gICAgICB5OiB5MlxuICAgIH0pO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbnNbaV0pIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbaW50ZXJzZWN0aW9ucywgY291bnRJbnRlcnNlY3Rpb25zXTtcbn07XG5leHBvcnQgdmFyIGZyYWN0aW9uVG9MaW5lID0gZnVuY3Rpb24gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBtaW5EaXN0YW5jZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIGNvdW50SW50ZXJzZWN0aW9ucyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgX2EgPSBnZXRCQm94Qm91bmRMaW5lKGJib3gsIGRpcmVjdGlvbnNbaV0pLFxuICAgICAgICB4MSA9IF9hWzBdLFxuICAgICAgICB5MSA9IF9hWzFdLFxuICAgICAgICB4MiA9IF9hWzJdLFxuICAgICAgICB5MiA9IF9hWzNdO1xuXG4gICAgdmFyIHRlc3REaXN0YW5jZSA9IGZyYWN0aW9uQWxvbmdMaW5lQShsaW5lLCBuZXcgTGluZSh4MSwgeTEsIHgyLCB5MikpO1xuICAgIHRlc3REaXN0YW5jZSA9IE1hdGguYWJzKHRlc3REaXN0YW5jZSAtIDAuNSk7XG5cbiAgICBpZiAodGVzdERpc3RhbmNlID49IDAgJiYgdGVzdERpc3RhbmNlIDw9IDEpIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgICAgbWluRGlzdGFuY2UgPSB0ZXN0RGlzdGFuY2UgPCBtaW5EaXN0YW5jZSA/IHRlc3REaXN0YW5jZSA6IG1pbkRpc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDApIHJldHVybiAtMTtcbiAgcmV0dXJuIG1pbkRpc3RhbmNlO1xufTtcbmV4cG9ydCB2YXIgZ2V0UG9pbnRzQ2VudGVyID0gZnVuY3Rpb24gZ2V0UG9pbnRzQ2VudGVyKHBvaW50cykge1xuICB2YXIgY2VudGVyWCA9IDA7XG4gIHZhciBjZW50ZXJZID0gMDtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIHBvaW50c18xID0gcG9pbnRzOyBfaSA8IHBvaW50c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgICAgY2VudGVyWCArPSBwb2ludC54O1xuICAgICAgY2VudGVyWSArPSBwb2ludC55O1xuICAgIH1cblxuICAgIGNlbnRlclggLz0gcG9pbnRzLmxlbmd0aDtcbiAgICBjZW50ZXJZIC89IHBvaW50cy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGNlbnRlclgsXG4gICAgeTogY2VudGVyWVxuICB9O1xufTtcbmV4cG9ydCB2YXIgc3F1YXJlRGlzdCA9IGZ1bmN0aW9uIHNxdWFyZURpc3QoYSwgYikge1xuICByZXR1cm4gTWF0aC5wb3coYS54IC0gYi54LCAyKSArIE1hdGgucG93KGEueSAtIGIueSwgMik7XG59O1xuZXhwb3J0IHZhciBwb2ludExpbmVTcXVhcmVEaXN0ID0gZnVuY3Rpb24gcG9pbnRMaW5lU3F1YXJlRGlzdChwb2ludCwgbGluZSkge1xuICB2YXIgeDEgPSBsaW5lLngxO1xuICB2YXIgeTEgPSBsaW5lLnkxO1xuICB2YXIgeDIgPSBsaW5lLngyIC0geDE7XG4gIHZhciB5MiA9IGxpbmUueTIgLSB5MTtcbiAgdmFyIHB4ID0gcG9pbnQueCAtIHgxO1xuICB2YXIgcHkgPSBwb2ludC55IC0geTE7XG4gIHZhciBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG4gIHZhciBwcm9qbGVuU3E7XG5cbiAgaWYgKGRvdHByb2QgPD0gMCkge1xuICAgIHByb2psZW5TcSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgcHggPSB4MiAtIHB4O1xuICAgIHB5ID0geTIgLSBweTtcbiAgICBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG5cbiAgICBpZiAoZG90cHJvZCA8PSAwKSB7XG4gICAgICBwcm9qbGVuU3EgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9qbGVuU3EgPSBkb3Rwcm9kICogZG90cHJvZCAvICh4MiAqIHgyICsgeTIgKiB5Mik7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxlblNxID0gcHggKiBweCArIHB5ICogcHkgLSBwcm9qbGVuU3E7XG5cbiAgaWYgKGxlblNxIDwgMCkge1xuICAgIGxlblNxID0gMDtcbiAgfVxuXG4gIHJldHVybiBsZW5TcTtcbn07XG5leHBvcnQgdmFyIGlzUG9pbnRzT3ZlcmxhcCA9IGZ1bmN0aW9uIGlzUG9pbnRzT3ZlcmxhcChwMSwgcDIsIGUpIHtcbiAgaWYgKGUgPT09IHZvaWQgMCkge1xuICAgIGUgPSAxZS0zO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSA8IE1hdGgucG93KGUsIDIpO1xufTtcbi8qKlxuICog54K55Yiw55+p5b2i55qE6Led56a755qE5bmz5pa577ya55+p5b2i5YaF6YOo54K56KeG5L2c6Led56a75Li6MO+8jOWklumDqOeahOeCueiLpeaKleW9seiQveWcqOefqeW9oui+ueS4iuWImeS4uueCueWIsOefqeW9oui+ueeahOacgOi/keeahOWeguebtOi3neemu++8jOWQpuWImeS4uueCueWIsOefqeW9oumhtueCueeahOi3neemu++8jFxuICogQHBhcmFtIHBvaW50IElQb2ludFxuICogQHBhcmFtIHJlY3QgSVJlY3RcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50UmVjdFNxdWFyZURpc3QgPSBmdW5jdGlvbiBwb2ludFJlY3RTcXVhcmVEaXN0KHBvaW50LCByZWN0KSB7XG4gIHZhciBpc0xlZnQgPSBwb2ludC54IDwgcmVjdC54O1xuICB2YXIgaXNSaWdodCA9IHBvaW50LnggPiByZWN0LnggKyByZWN0LndpZHRoO1xuICB2YXIgaXNUb3AgPSBwb2ludC55ID4gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG4gIHZhciBpc0JvdHRvbSA9IHBvaW50LnkgPCByZWN0Lnk7XG4gIHZhciBpc1BvaW50T3V0c2lkZSA9IGlzTGVmdCB8fCBpc1JpZ2h0IHx8IGlzVG9wIHx8IGlzQm90dG9tO1xuXG4gIGlmICghaXNQb2ludE91dHNpZGUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChpc1RvcCAmJiAhaXNMZWZ0ICYmICFpc1JpZ2h0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gcG9pbnQueSwgMik7XG4gIH1cblxuICBpZiAoaXNCb3R0b20gJiYgIWlzTGVmdCAmJiAhaXNSaWdodCkge1xuICAgIHJldHVybiBNYXRoLnBvdyhwb2ludC55IC0gcmVjdC55LCAyKTtcbiAgfVxuXG4gIGlmIChpc0xlZnQgJiYgIWlzVG9wICYmICFpc0JvdHRvbSkge1xuICAgIHJldHVybiBNYXRoLnBvdyhyZWN0LnggLSBwb2ludC54LCAyKTtcbiAgfVxuXG4gIGlmIChpc1JpZ2h0ICYmICFpc1RvcCAmJiAhaXNCb3R0b20pIHtcbiAgICByZXR1cm4gTWF0aC5wb3cocmVjdC54ICsgcmVjdC53aWR0aCAtIHBvaW50LngsIDIpO1xuICB9XG5cbiAgdmFyIGR4ID0gTWF0aC5taW4oTWF0aC5hYnMocmVjdC54IC0gcG9pbnQueCksIE1hdGguYWJzKHJlY3QueCArIHJlY3Qud2lkdGggLSBwb2ludC54KSk7XG4gIHZhciBkeSA9IE1hdGgubWluKE1hdGguYWJzKHJlY3QueSAtIHBvaW50LnkpLCBNYXRoLmFicyhyZWN0LnkgKyByZWN0LmhlaWdodCAtIHBvaW50LnkpKTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbi8qKlxuICogcG9pbnQgdG8gbGluZSBkaXN0YW5jZVxuICogQHBhcmFtICB7YXJyYXl9IGxpbmUg57q/55qE5Zub5Liq6aG254K5IFt4MSwgeTEsIHgyLCB5Ml1cbiAqIEBwYXJhbSAge29iamVjdH0gcG9pbnQg5Z2Q5qCH54K5IHt4LCB5fVxuICogQHJldHVybiB7TnVtYmVyfE5hTn0gZGlzdGFuY2VcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50TGluZURpc3RhbmNlID0gZnVuY3Rpb24gcG9pbnRMaW5lRGlzdGFuY2UobGluZSwgcG9pbnQpIHtcbiAgdmFyIHgxID0gbGluZVswXSxcbiAgICAgIHkxID0gbGluZVsxXSxcbiAgICAgIHgyID0gbGluZVsyXSxcbiAgICAgIHkyID0gbGluZVszXTtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdO1xuXG4gIGlmICh2ZWMyLmV4YWN0RXF1YWxzKGQsIFswLCAwXSkpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgdmFyIHUgPSBbLWRbMV0sIGRbMF1dOyAvLyBAdHMtaWdub3JlXG5cbiAgdmVjMi5ub3JtYWxpemUodSwgdSk7XG4gIHZhciBhID0gW3ggLSB4MSwgeSAtIHkxXTsgLy8gQHRzLWlnbm9yZVxuXG4gIHJldHVybiBNYXRoLmFicyh2ZWMyLmRvdChhLCB1KSk7XG59O1xuLyoqXG4gKiBMaW5lYXJseSBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQsIHdoZXJlIGFscGhhIGlzIHRoZSBwZXJjZW50IGRpc3RhbmNlIGFsb25nIHRoZSBsaW5lLlxuICogYWxwaGEgPSAwIHdpbGwgYmUgc3RhcnQsIGFuZCBhbHBoYSA9IDEgd2lsbCBiZSBlbmQuXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhcnRcbiAqIEBwYXJhbSB7TnVtYmVyfSBlbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbHBoYSBpbnRlcnBvbGF0aW9uIGZhY3RvciwgdHlwaWNhbGx5IGluIHRoZSBjbG9zZWQgaW50ZXJ2YWwgWzAsIDFdXG4gKiBAcmV0dXJuc1xuICovXG5cbmV4cG9ydCB2YXIgbGVycCA9IGZ1bmN0aW9uIGxlcnAoc3RhcnQsIGVuZCwgYWxwaGEpIHtcbiAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGFscGhhO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js ***! \*************************************************************************/ /*! exports provided: getSpline, getControlPoint, pointsToPolygon, pathToPoints, getClosedSpline, roundedHull, paddedHull */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSpline\", function() { return getSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getControlPoint\", function() { return getControlPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointsToPolygon\", function() { return pointsToPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToPoints\", function() { return pathToPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClosedSpline\", function() { return getClosedSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"roundedHull\", function() { return roundedHull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"paddedHull\", function() { return paddedHull; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n\n\n/**\n * 替换字符串中的字段\n * @param {String} str 模版字符串\n * @param {Object} o json data\n */\n\nvar substitute = function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n var res = o[name];\n if (res === 0) res = '0';\n return res || '';\n });\n};\n/**\n * 给定坐标获取三次贝塞尔曲线的 M 及 C 值\n * @param points coordinate set\n */\n\n\nvar getSpline = function getSpline(points) {\n var data = [];\n\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \" + points.length);\n }\n\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var x = point.x,\n y = point.y;\n data.push(x);\n data.push(y);\n }\n\n var spliePath = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"catmullRom2Bezier\"])(data);\n spliePath.unshift(['M', points[0].x, points[0].y]);\n return spliePath;\n};\n/**\n * 根据起始点、相对位置、偏移量计算控制点\n * @param {IPoint} startPoint 起始点,包含 x,y\n * @param {IPoint} endPoint 结束点, 包含 x,y\n * @param {Number} percent 相对位置,范围 0-1\n * @param {Number} offset 偏移量\n * @return {IPoint} 控制点,包含 x,y\n */\n\nvar getControlPoint = function getControlPoint(startPoint, endPoint, percent, offset) {\n if (percent === void 0) {\n percent = 0;\n }\n\n if (offset === void 0) {\n offset = 0;\n }\n\n var point = {\n x: (1 - percent) * startPoint.x + percent * endPoint.x,\n y: (1 - percent) * startPoint.y + percent * endPoint.y\n };\n var tangent = [0, 0];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(tangent, [endPoint.x - startPoint.x, endPoint.y - startPoint.y]);\n\n if (!tangent || !tangent[0] && !tangent[1]) {\n tangent = [0, 0];\n }\n\n var perpendicular = [-tangent[1] * offset, tangent[0] * offset]; // 垂直向量\n\n point.x += perpendicular[0];\n point.y += perpendicular[1];\n return point;\n};\n/**\n * 点集转化为Path多边形\n * @param {Array} points 点集\n * @param {Boolen} z 是否封闭\n * @return {Array} Path\n */\n\nvar pointsToPolygon = function pointsToPolygon(points, z) {\n var length = points.length;\n\n if (!length) {\n return '';\n }\n\n var path = '';\n var str = '';\n\n for (var i = 0; i < length; i++) {\n var item = points[i];\n\n if (i === 0) {\n str = 'M{x} {y}';\n } else {\n str = 'L{x} {y}';\n }\n\n path += substitute(str, item);\n }\n\n if (z) {\n path += 'Z';\n }\n\n return path;\n};\nvar pathToPoints = function pathToPoints(path) {\n var points = [];\n path.forEach(function (seg) {\n var command = seg[0];\n\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n};\n/**\n * 生成平滑的闭合曲线\n * @param points\n */\n\nvar getClosedSpline = function getClosedSpline(points) {\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \" + points.length);\n }\n\n var first = points[0];\n var second = points[1];\n var last = points[points.length - 1];\n var lastSecond = points[points.length - 2];\n points.unshift(last);\n points.unshift(lastSecond);\n points.push(first);\n points.push(second);\n var closedPath = [];\n\n for (var i = 1; i < points.length - 2; i += 1) {\n var x0 = points[i - 1].x;\n var y0 = points[i - 1].y;\n var x1 = points[i].x;\n var y1 = points[i].y;\n var x2 = points[i + 1].x;\n var y2 = points[i + 1].y;\n var x3 = i !== points.length - 2 ? points[i + 2].x : x2;\n var y3 = i !== points.length - 2 ? points[i + 2].y : y2;\n var cp1x = x1 + (x2 - x0) / 6;\n var cp1y = y1 + (y2 - y0) / 6;\n var cp2x = x2 - (x3 - x1) / 6;\n var cp2y = y2 - (y3 - y1) / 6;\n closedPath.push(['C', cp1x, cp1y, cp2x, cp2y, x2, y2]);\n }\n\n closedPath.unshift(['M', last.x, last.y]);\n return closedPath;\n};\n\nvar vecScaleTo = function vecScaleTo(v, length) {\n // Vector with direction of v with specified length\n return _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), length);\n};\n\nvar unitNormal = function unitNormal(p0, p1) {\n // Returns the unit normal to the line segment from p0 to p1.\n var n = [p0[1] - p1[1], p1[0] - p0[0]];\n var nLength = Math.sqrt(n[0] * n[0] + n[1] * n[1]);\n\n if (nLength === 0) {\n throw new Error('p0 should not be equal to p1');\n }\n\n return [n[0] / nLength, n[1] / nLength];\n};\n\nvar vecFrom = function vecFrom(p0, p1) {\n // Vector from p0 to p1\n return [p1[0] - p0[0], p1[1] - p0[1]];\n};\n/**\n * 传入的节点作为多边形顶点,生成有圆角的多边形\n * @param polyPoints 多边形顶点\n * @param padding 在原多边形基础上增加最终轮廓和原多边形的空白间隔\n */\n\n\nfunction roundedHull(polyPoints, padding) {\n // The rounded hull path around a single point\n var roundedHull1 = function roundedHull1(points) {\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \" + p1 + \" A \" + padding + \",\" + padding + \",0,0,0,\" + p2 + \" A \" + padding + \",\" + padding + \",0,0,0,\" + p1;\n }; // The rounded hull path around two points\n\n\n var roundedHull2 = function roundedHull2(points) {\n var offsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(points[0], points[1]), padding);\n var invOffsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], offsetVector, -1);\n var p0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], offsetVector);\n var p1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], offsetVector);\n var p2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], invOffsetVector);\n var p3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], invOffsetVector);\n return \"M \" + p0 + \" L \" + p1 + \" A \" + [padding, padding, '0,0,0', p2].join(',') + \" L \" + p3 + \" A \" + [padding, padding, '0,0,0', p0].join(',');\n }; // 特殊情况处理:节点数小于等于2\n\n\n if (!polyPoints || polyPoints.length < 1) return '';\n if (polyPoints.length === 1) return roundedHull1(polyPoints);\n if (polyPoints.length === 2) return roundedHull2(polyPoints);\n var segments = new Array(polyPoints.length); // Calculate each offset (outwards) segment of the convex hull.\n\n for (var segmentIndex = 0; segmentIndex < segments.length; ++segmentIndex) {\n var p0 = segmentIndex === 0 ? polyPoints[polyPoints.length - 1] : polyPoints[segmentIndex - 1];\n var p1 = polyPoints[segmentIndex]; // Compute the offset vector for the line segment, with length = padding.\n\n var offset = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(p0, p1), padding);\n segments[segmentIndex] = [_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p0, offset), _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p1, offset)];\n }\n\n var arcData = \"A \" + [padding, padding, '0,0,0,'].join(',');\n segments = segments.map(function (segment, index) {\n var pathFragment = '';\n\n if (index === 0) {\n pathFragment = \"M \" + segments[segments.length - 1][1] + \" \";\n }\n\n pathFragment += arcData + segment[0] + \" L \" + segment[1];\n return pathFragment;\n });\n return segments.join(' ');\n}\n/**\n * 传入的节点作为多边形顶点,生成平滑的闭合多边形\n * @param polyPoints\n * @param padding\n */\n\nfunction paddedHull(polyPoints, padding) {\n var pointCount = polyPoints.length;\n\n var smoothHull1 = function smoothHull1(points) {\n // Returns the path for a circular hull around a single point.\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \" + p1 + \" A \" + [padding, padding, '0,0,0', p2].join(',') + \" A \" + [padding, padding, '0,0,0', p1].join(',');\n }; // Returns the path for a rounded hull around two points.\n\n\n var smoothHull2 = function smoothHull2(points) {\n var v = vecFrom(points[0], points[1]);\n var extensionVec = vecScaleTo(v, padding);\n var extension0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, -1));\n var extension1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], extensionVec);\n var tangentHalfLength = 1.2 * padding;\n var controlDelta = vecScaleTo(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), tangentHalfLength);\n var invControlDelta = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], controlDelta, -1);\n var control0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, invControlDelta);\n var control1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension1, invControlDelta);\n var control3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, controlDelta); // return [\n // ['M', extension0[0], extension0[1]],\n // ['C', control0, control1, extension1],\n // ['S', control3, extension0],\n // 'Z',\n // ];\n\n return \"M \" + extension0 + \" C \" + [control0, control1, extension1].join(',') + \" S \" + [control3, extension0].join(',') + \" Z\";\n }; // Handle special cases\n\n\n if (!polyPoints || pointCount < 1) return '';\n if (pointCount === 1) return smoothHull1(polyPoints);\n if (pointCount === 2) return smoothHull2(polyPoints);\n var hullPoints = polyPoints.map(function (point, index) {\n var pNext = polyPoints[(index + 1) % pointCount];\n return {\n p: point,\n v: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], vecFrom(point, pNext))\n };\n }); // Compute the expanded hull points, and the nearest prior control point for each.\n\n for (var i = 0; i < hullPoints.length; ++i) {\n var priorIndex = i > 0 ? i - 1 : pointCount - 1;\n var extensionVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[priorIndex].v, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], hullPoints[i].v, -1)));\n hullPoints[i].p = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[i].p, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, padding));\n }\n\n return hullPoints.map(function (obj) {\n var point = obj.p;\n return {\n x: point[0],\n y: point[1]\n };\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanM/YmQ2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNXO0FBQ3BEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixLQUFLLEtBQUs7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsc0JBQXNCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IseUVBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxzREFBSTs7QUFFTjtBQUNBO0FBQ0E7O0FBRUEsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBO0FBQ0EsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQixLQUFLO0FBQ0wsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxzREFBSSxlQUFlLHNEQUFJO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQSx1QkFBdUIsc0RBQUk7QUFDM0IsMEJBQTBCLHNEQUFJO0FBQzlCLGFBQWEsc0RBQUk7QUFDakIsYUFBYSxzREFBSTtBQUNqQixhQUFhLHNEQUFJO0FBQ2pCLGFBQWEsc0RBQUk7QUFDakI7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDLDRCQUE0QixnQ0FBZ0M7QUFDNUQ7QUFDQSxzQ0FBc0M7O0FBRXRDLGlCQUFpQixzREFBSTtBQUNyQiw4QkFBOEIsc0RBQUksMEJBQTBCLHNEQUFJO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUksd0JBQXdCLHNEQUFJO0FBQ3JELHFCQUFxQixzREFBSTtBQUN6QjtBQUNBLGtDQUFrQyxzREFBSTtBQUN0QywwQkFBMEIsc0RBQUk7QUFDOUIsbUJBQW1CLHNEQUFJO0FBQ3ZCLG1CQUFtQixzREFBSTtBQUN2QixtQkFBbUIsc0RBQUksdUNBQXVDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0RBQUk7QUFDYjtBQUNBLEdBQUcsRUFBRTs7QUFFTCxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0EsdUJBQXVCLHNEQUFJLG1CQUFtQixzREFBSSx1Q0FBdUMsc0RBQUk7QUFDN0Ysc0JBQXNCLHNEQUFJLDhCQUE4QixzREFBSTtBQUM1RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2F0bXVsbFJvbTJCZXppZXIgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuLyoqXG4gKiDmm7/mjaLlrZfnrKbkuLLkuK3nmoTlrZfmrrVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIg5qih54mI5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gbyBqc29uIGRhdGFcbiAqL1xuXG52YXIgc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoc3RyLCBvKSB7XG4gIGlmICghc3RyIHx8ICFvKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXD9cXHsoW157fV0rKVxcfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG5hbWUpIHtcbiAgICBpZiAobWF0Y2guY2hhckF0KDApID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBtYXRjaC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gb1tuYW1lXTtcbiAgICBpZiAocmVzID09PSAwKSByZXMgPSAnMCc7XG4gICAgcmV0dXJuIHJlcyB8fCAnJztcbiAgfSk7XG59O1xuLyoqXG4gKiDnu5nlrprlnZDmoIfojrflj5bkuInmrKHotJ3loZ7lsJTmm7Lnur/nmoQgTSDlj4ogQyDlgLxcbiAqIEBwYXJhbSBwb2ludHMgY29vcmRpbmF0ZSBzZXRcbiAqL1xuXG5cbmV4cG9ydCB2YXIgZ2V0U3BsaW5lID0gZnVuY3Rpb24gZ2V0U3BsaW5lKHBvaW50cykge1xuICB2YXIgZGF0YSA9IFtdO1xuXG4gIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInBvaW50IGxlbmd0aCBtdXN0IGxhcmduIHRoYW4gMiwgbm93IGl0J3MgXCIgKyBwb2ludHMubGVuZ3RoKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgcG9pbnRzXzEgPSBwb2ludHM7IF9pIDwgcG9pbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgIHZhciB4ID0gcG9pbnQueCxcbiAgICAgICAgeSA9IHBvaW50Lnk7XG4gICAgZGF0YS5wdXNoKHgpO1xuICAgIGRhdGEucHVzaCh5KTtcbiAgfVxuXG4gIHZhciBzcGxpZVBhdGggPSBjYXRtdWxsUm9tMkJlemllcihkYXRhKTtcbiAgc3BsaWVQYXRoLnVuc2hpZnQoWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gIHJldHVybiBzcGxpZVBhdGg7XG59O1xuLyoqXG4gKiDmoLnmja7otbflp4vngrnjgIHnm7jlr7nkvY3nva7jgIHlgY/np7vph4/orqHnrpfmjqfliLbngrlcbiAqIEBwYXJhbSAge0lQb2ludH0gc3RhcnRQb2ludCDotbflp4vngrnvvIzljIXlkKsgeCx5XG4gKiBAcGFyYW0gIHtJUG9pbnR9IGVuZFBvaW50ICDnu5PmnZ/ngrksIOWMheWQqyB4LHlcbiAqIEBwYXJhbSAge051bWJlcn0gcGVyY2VudCAgIOebuOWvueS9jee9rizojIPlm7QgMC0xXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IG9mZnNldCAgICDlgY/np7vph49cbiAqIEByZXR1cm4ge0lQb2ludH0g5o6n5Yi254K577yM5YyF5ZCrIHgseVxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q29udHJvbFBvaW50ID0gZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBwZXJjZW50LCBvZmZzZXQpIHtcbiAgaWYgKHBlcmNlbnQgPT09IHZvaWQgMCkge1xuICAgIHBlcmNlbnQgPSAwO1xuICB9XG5cbiAgaWYgKG9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0ID0gMDtcbiAgfVxuXG4gIHZhciBwb2ludCA9IHtcbiAgICB4OiAoMSAtIHBlcmNlbnQpICogc3RhcnRQb2ludC54ICsgcGVyY2VudCAqIGVuZFBvaW50LngsXG4gICAgeTogKDEgLSBwZXJjZW50KSAqIHN0YXJ0UG9pbnQueSArIHBlcmNlbnQgKiBlbmRQb2ludC55XG4gIH07XG4gIHZhciB0YW5nZW50ID0gWzAsIDBdO1xuICB2ZWMyLm5vcm1hbGl6ZSh0YW5nZW50LCBbZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueCwgZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueV0pO1xuXG4gIGlmICghdGFuZ2VudCB8fCAhdGFuZ2VudFswXSAmJiAhdGFuZ2VudFsxXSkge1xuICAgIHRhbmdlbnQgPSBbMCwgMF07XG4gIH1cblxuICB2YXIgcGVycGVuZGljdWxhciA9IFstdGFuZ2VudFsxXSAqIG9mZnNldCwgdGFuZ2VudFswXSAqIG9mZnNldF07IC8vIOWeguebtOWQkemHj1xuXG4gIHBvaW50LnggKz0gcGVycGVuZGljdWxhclswXTtcbiAgcG9pbnQueSArPSBwZXJwZW5kaWN1bGFyWzFdO1xuICByZXR1cm4gcG9pbnQ7XG59O1xuLyoqXG4gKiDngrnpm4bovazljJbkuLpQYXRo5aSa6L655b2iXG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludHMg54K56ZuGXG4gKiBAcGFyYW0ge0Jvb2xlbn0geiDmmK/lkKblsIHpl61cbiAqIEByZXR1cm4ge0FycmF5fSBQYXRoXG4gKi9cblxuZXhwb3J0IHZhciBwb2ludHNUb1BvbHlnb24gPSBmdW5jdGlvbiBwb2ludHNUb1BvbHlnb24ocG9pbnRzLCB6KSB7XG4gIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHBhdGggPSAnJztcbiAgdmFyIHN0ciA9ICcnO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHBvaW50c1tpXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzdHIgPSAnTXt4fSB7eX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSAnTHt4fSB7eX0nO1xuICAgIH1cblxuICAgIHBhdGggKz0gc3Vic3RpdHV0ZShzdHIsIGl0ZW0pO1xuICB9XG5cbiAgaWYgKHopIHtcbiAgICBwYXRoICs9ICdaJztcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbmV4cG9ydCB2YXIgcGF0aFRvUG9pbnRzID0gZnVuY3Rpb24gcGF0aFRvUG9pbnRzKHBhdGgpIHtcbiAgdmFyIHBvaW50cyA9IFtdO1xuICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgIHZhciBjb21tYW5kID0gc2VnWzBdO1xuXG4gICAgaWYgKGNvbW1hbmQgIT09ICdBJykge1xuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzZWcubGVuZ3RoOyBpID0gaSArIDIpIHtcbiAgICAgICAgcG9pbnRzLnB1c2goW3NlZ1tpXSwgc2VnW2kgKyAxXV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGVuZ3RoXzEgPSBzZWcubGVuZ3RoO1xuICAgICAgcG9pbnRzLnB1c2goW3NlZ1tsZW5ndGhfMSAtIDJdLCBzZWdbbGVuZ3RoXzEgLSAxXV0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwb2ludHM7XG59O1xuLyoqXG4gKiDnlJ/miJDlubPmu5HnmoTpl63lkIjmm7Lnur9cbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5leHBvcnQgdmFyIGdldENsb3NlZFNwbGluZSA9IGZ1bmN0aW9uIGdldENsb3NlZFNwbGluZShwb2ludHMpIHtcbiAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwicG9pbnQgbGVuZ3RoIG11c3QgbGFyZ24gdGhhbiAyLCBub3cgaXQncyBcIiArIHBvaW50cy5sZW5ndGgpO1xuICB9XG5cbiAgdmFyIGZpcnN0ID0gcG9pbnRzWzBdO1xuICB2YXIgc2Vjb25kID0gcG9pbnRzWzFdO1xuICB2YXIgbGFzdCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG4gIHZhciBsYXN0U2Vjb25kID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAyXTtcbiAgcG9pbnRzLnVuc2hpZnQobGFzdCk7XG4gIHBvaW50cy51bnNoaWZ0KGxhc3RTZWNvbmQpO1xuICBwb2ludHMucHVzaChmaXJzdCk7XG4gIHBvaW50cy5wdXNoKHNlY29uZCk7XG4gIHZhciBjbG9zZWRQYXRoID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoIC0gMjsgaSArPSAxKSB7XG4gICAgdmFyIHgwID0gcG9pbnRzW2kgLSAxXS54O1xuICAgIHZhciB5MCA9IHBvaW50c1tpIC0gMV0ueTtcbiAgICB2YXIgeDEgPSBwb2ludHNbaV0ueDtcbiAgICB2YXIgeTEgPSBwb2ludHNbaV0ueTtcbiAgICB2YXIgeDIgPSBwb2ludHNbaSArIDFdLng7XG4gICAgdmFyIHkyID0gcG9pbnRzW2kgKyAxXS55O1xuICAgIHZhciB4MyA9IGkgIT09IHBvaW50cy5sZW5ndGggLSAyID8gcG9pbnRzW2kgKyAyXS54IDogeDI7XG4gICAgdmFyIHkzID0gaSAhPT0gcG9pbnRzLmxlbmd0aCAtIDIgPyBwb2ludHNbaSArIDJdLnkgOiB5MjtcbiAgICB2YXIgY3AxeCA9IHgxICsgKHgyIC0geDApIC8gNjtcbiAgICB2YXIgY3AxeSA9IHkxICsgKHkyIC0geTApIC8gNjtcbiAgICB2YXIgY3AyeCA9IHgyIC0gKHgzIC0geDEpIC8gNjtcbiAgICB2YXIgY3AyeSA9IHkyIC0gKHkzIC0geTEpIC8gNjtcbiAgICBjbG9zZWRQYXRoLnB1c2goWydDJywgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeDIsIHkyXSk7XG4gIH1cblxuICBjbG9zZWRQYXRoLnVuc2hpZnQoWydNJywgbGFzdC54LCBsYXN0LnldKTtcbiAgcmV0dXJuIGNsb3NlZFBhdGg7XG59O1xuXG52YXIgdmVjU2NhbGVUbyA9IGZ1bmN0aW9uIHZlY1NjYWxlVG8odiwgbGVuZ3RoKSB7XG4gIC8vIFZlY3RvciB3aXRoIGRpcmVjdGlvbiBvZiB2IHdpdGggc3BlY2lmaWVkIGxlbmd0aFxuICByZXR1cm4gdmVjMi5zY2FsZShbMCwgMF0sIHZlYzIubm9ybWFsaXplKFswLCAwXSwgdiksIGxlbmd0aCk7XG59O1xuXG52YXIgdW5pdE5vcm1hbCA9IGZ1bmN0aW9uIHVuaXROb3JtYWwocDAsIHAxKSB7XG4gIC8vIFJldHVybnMgdGhlIHVuaXQgbm9ybWFsIHRvIHRoZSBsaW5lIHNlZ21lbnQgZnJvbSBwMCB0byBwMS5cbiAgdmFyIG4gPSBbcDBbMV0gLSBwMVsxXSwgcDFbMF0gLSBwMFswXV07XG4gIHZhciBuTGVuZ3RoID0gTWF0aC5zcXJ0KG5bMF0gKiBuWzBdICsgblsxXSAqIG5bMV0pO1xuXG4gIGlmIChuTGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwMCBzaG91bGQgbm90IGJlIGVxdWFsIHRvIHAxJyk7XG4gIH1cblxuICByZXR1cm4gW25bMF0gLyBuTGVuZ3RoLCBuWzFdIC8gbkxlbmd0aF07XG59O1xuXG52YXIgdmVjRnJvbSA9IGZ1bmN0aW9uIHZlY0Zyb20ocDAsIHAxKSB7XG4gIC8vIFZlY3RvciBmcm9tIHAwIHRvIHAxXG4gIHJldHVybiBbcDFbMF0gLSBwMFswXSwgcDFbMV0gLSBwMFsxXV07XG59O1xuLyoqXG4gKiDkvKDlhaXnmoToioLngrnkvZzkuLrlpJrovrnlvaLpobbngrnvvIznlJ/miJDmnInlnIbop5LnmoTlpJrovrnlvaJcbiAqIEBwYXJhbSBwb2x5UG9pbnRzIOWkmui+ueW9oumhtueCuVxuICogQHBhcmFtIHBhZGRpbmcg5Zyo5Y6f5aSa6L655b2i5Z+656GA5LiK5aKe5Yqg5pyA57uI6L2u5buT5ZKM5Y6f5aSa6L655b2i55qE56m655m96Ze06ZqUXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRlZEh1bGwocG9seVBvaW50cywgcGFkZGluZykge1xuICAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIGEgc2luZ2xlIHBvaW50XG4gIHZhciByb3VuZGVkSHVsbDEgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDEocG9pbnRzKSB7XG4gICAgdmFyIHAxID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdIC0gcGFkZGluZ107XG4gICAgdmFyIHAyID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdICsgcGFkZGluZ107XG4gICAgcmV0dXJuIFwiTSBcIiArIHAxICsgXCIgQSBcIiArIHBhZGRpbmcgKyBcIixcIiArIHBhZGRpbmcgKyBcIiwwLDAsMCxcIiArIHAyICsgXCIgQSBcIiArIHBhZGRpbmcgKyBcIixcIiArIHBhZGRpbmcgKyBcIiwwLDAsMCxcIiArIHAxO1xuICB9OyAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIHR3byBwb2ludHNcblxuXG4gIHZhciByb3VuZGVkSHVsbDIgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDIocG9pbnRzKSB7XG4gICAgdmFyIG9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCB1bml0Tm9ybWFsKHBvaW50c1swXSwgcG9pbnRzWzFdKSwgcGFkZGluZyk7XG4gICAgdmFyIGludk9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCBvZmZzZXRWZWN0b3IsIC0xKTtcbiAgICB2YXIgcDAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDEgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDIgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDMgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICByZXR1cm4gXCJNIFwiICsgcDAgKyBcIiBMIFwiICsgcDEgKyBcIiBBIFwiICsgW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAyXS5qb2luKCcsJykgKyBcIiBMIFwiICsgcDMgKyBcIiBBIFwiICsgW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAwXS5qb2luKCcsJyk7XG4gIH07IC8vIOeJueauiuaDheWGteWkhOeQhu+8muiKgueCueaVsOWwj+S6juetieS6jjJcblxuXG4gIGlmICghcG9seVBvaW50cyB8fCBwb2x5UG9pbnRzLmxlbmd0aCA8IDEpIHJldHVybiAnJztcbiAgaWYgKHBvbHlQb2ludHMubGVuZ3RoID09PSAxKSByZXR1cm4gcm91bmRlZEh1bGwxKHBvbHlQb2ludHMpO1xuICBpZiAocG9seVBvaW50cy5sZW5ndGggPT09IDIpIHJldHVybiByb3VuZGVkSHVsbDIocG9seVBvaW50cyk7XG4gIHZhciBzZWdtZW50cyA9IG5ldyBBcnJheShwb2x5UG9pbnRzLmxlbmd0aCk7IC8vIENhbGN1bGF0ZSBlYWNoIG9mZnNldCAob3V0d2FyZHMpIHNlZ21lbnQgb2YgdGhlIGNvbnZleCBodWxsLlxuXG4gIGZvciAodmFyIHNlZ21lbnRJbmRleCA9IDA7IHNlZ21lbnRJbmRleCA8IHNlZ21lbnRzLmxlbmd0aDsgKytzZWdtZW50SW5kZXgpIHtcbiAgICB2YXIgcDAgPSBzZWdtZW50SW5kZXggPT09IDAgPyBwb2x5UG9pbnRzW3BvbHlQb2ludHMubGVuZ3RoIC0gMV0gOiBwb2x5UG9pbnRzW3NlZ21lbnRJbmRleCAtIDFdO1xuICAgIHZhciBwMSA9IHBvbHlQb2ludHNbc2VnbWVudEluZGV4XTsgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0IHZlY3RvciBmb3IgdGhlIGxpbmUgc2VnbWVudCwgd2l0aCBsZW5ndGggPSBwYWRkaW5nLlxuXG4gICAgdmFyIG9mZnNldCA9IHZlYzIuc2NhbGUoWzAsIDBdLCB1bml0Tm9ybWFsKHAwLCBwMSksIHBhZGRpbmcpO1xuICAgIHNlZ21lbnRzW3NlZ21lbnRJbmRleF0gPSBbdmVjMi5hZGQoWzAsIDBdLCBwMCwgb2Zmc2V0KSwgdmVjMi5hZGQoWzAsIDBdLCBwMSwgb2Zmc2V0KV07XG4gIH1cblxuICB2YXIgYXJjRGF0YSA9IFwiQSBcIiArIFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAsJ10uam9pbignLCcpO1xuICBzZWdtZW50cyA9IHNlZ21lbnRzLm1hcChmdW5jdGlvbiAoc2VnbWVudCwgaW5kZXgpIHtcbiAgICB2YXIgcGF0aEZyYWdtZW50ID0gJyc7XG5cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHBhdGhGcmFnbWVudCA9IFwiTSBcIiArIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdWzFdICsgXCIgXCI7XG4gICAgfVxuXG4gICAgcGF0aEZyYWdtZW50ICs9IGFyY0RhdGEgKyBzZWdtZW50WzBdICsgXCIgTCBcIiArIHNlZ21lbnRbMV07XG4gICAgcmV0dXJuIHBhdGhGcmFnbWVudDtcbiAgfSk7XG4gIHJldHVybiBzZWdtZW50cy5qb2luKCcgJyk7XG59XG4vKipcbiAqIOS8oOWFpeeahOiKgueCueS9nOS4uuWkmui+ueW9oumhtueCue+8jOeUn+aIkOW5s+a7keeahOmXreWQiOWkmui+ueW9olxuICogQHBhcmFtIHBvbHlQb2ludHNcbiAqIEBwYXJhbSBwYWRkaW5nXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZGRlZEh1bGwocG9seVBvaW50cywgcGFkZGluZykge1xuICB2YXIgcG9pbnRDb3VudCA9IHBvbHlQb2ludHMubGVuZ3RoO1xuXG4gIHZhciBzbW9vdGhIdWxsMSA9IGZ1bmN0aW9uIHNtb290aEh1bGwxKHBvaW50cykge1xuICAgIC8vIFJldHVybnMgdGhlIHBhdGggZm9yIGEgY2lyY3VsYXIgaHVsbCBhcm91bmQgYSBzaW5nbGUgcG9pbnQuXG4gICAgdmFyIHAxID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdIC0gcGFkZGluZ107XG4gICAgdmFyIHAyID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdICsgcGFkZGluZ107XG4gICAgcmV0dXJuIFwiTSBcIiArIHAxICsgXCIgQSBcIiArIFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAnLCBwMl0uam9pbignLCcpICsgXCIgQSBcIiArIFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAnLCBwMV0uam9pbignLCcpO1xuICB9OyAvLyBSZXR1cm5zIHRoZSBwYXRoIGZvciBhIHJvdW5kZWQgaHVsbCBhcm91bmQgdHdvIHBvaW50cy5cblxuXG4gIHZhciBzbW9vdGhIdWxsMiA9IGZ1bmN0aW9uIHNtb290aEh1bGwyKHBvaW50cykge1xuICAgIHZhciB2ID0gdmVjRnJvbShwb2ludHNbMF0sIHBvaW50c1sxXSk7XG4gICAgdmFyIGV4dGVuc2lvblZlYyA9IHZlY1NjYWxlVG8odiwgcGFkZGluZyk7XG4gICAgdmFyIGV4dGVuc2lvbjAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgdmVjMi5zY2FsZShbMCwgMF0sIGV4dGVuc2lvblZlYywgLTEpKTtcbiAgICB2YXIgZXh0ZW5zaW9uMSA9IHZlYzIuYWRkKFswLCAwXSwgcG9pbnRzWzFdLCBleHRlbnNpb25WZWMpO1xuICAgIHZhciB0YW5nZW50SGFsZkxlbmd0aCA9IDEuMiAqIHBhZGRpbmc7XG4gICAgdmFyIGNvbnRyb2xEZWx0YSA9IHZlY1NjYWxlVG8odmVjMi5ub3JtYWxpemUoWzAsIDBdLCB2KSwgdGFuZ2VudEhhbGZMZW5ndGgpO1xuICAgIHZhciBpbnZDb250cm9sRGVsdGEgPSB2ZWMyLnNjYWxlKFswLCAwXSwgY29udHJvbERlbHRhLCAtMSk7XG4gICAgdmFyIGNvbnRyb2wwID0gdmVjMi5hZGQoWzAsIDBdLCBleHRlbnNpb24wLCBpbnZDb250cm9sRGVsdGEpO1xuICAgIHZhciBjb250cm9sMSA9IHZlYzIuYWRkKFswLCAwXSwgZXh0ZW5zaW9uMSwgaW52Q29udHJvbERlbHRhKTtcbiAgICB2YXIgY29udHJvbDMgPSB2ZWMyLmFkZChbMCwgMF0sIGV4dGVuc2lvbjAsIGNvbnRyb2xEZWx0YSk7IC8vIHJldHVybiBbXG4gICAgLy8gICBbJ00nLCBleHRlbnNpb24wWzBdLCBleHRlbnNpb24wWzFdXSxcbiAgICAvLyAgIFsnQycsIGNvbnRyb2wwLCBjb250cm9sMSwgZXh0ZW5zaW9uMV0sXG4gICAgLy8gICBbJ1MnLCBjb250cm9sMywgZXh0ZW5zaW9uMF0sXG4gICAgLy8gICAnWicsXG4gICAgLy8gXTtcblxuICAgIHJldHVybiBcIk0gXCIgKyBleHRlbnNpb24wICsgXCIgQyBcIiArIFtjb250cm9sMCwgY29udHJvbDEsIGV4dGVuc2lvbjFdLmpvaW4oJywnKSArIFwiIFMgXCIgKyBbY29udHJvbDMsIGV4dGVuc2lvbjBdLmpvaW4oJywnKSArIFwiIFpcIjtcbiAgfTsgLy8gSGFuZGxlIHNwZWNpYWwgY2FzZXNcblxuXG4gIGlmICghcG9seVBvaW50cyB8fCBwb2ludENvdW50IDwgMSkgcmV0dXJuICcnO1xuICBpZiAocG9pbnRDb3VudCA9PT0gMSkgcmV0dXJuIHNtb290aEh1bGwxKHBvbHlQb2ludHMpO1xuICBpZiAocG9pbnRDb3VudCA9PT0gMikgcmV0dXJuIHNtb290aEh1bGwyKHBvbHlQb2ludHMpO1xuICB2YXIgaHVsbFBvaW50cyA9IHBvbHlQb2ludHMubWFwKGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICB2YXIgcE5leHQgPSBwb2x5UG9pbnRzWyhpbmRleCArIDEpICUgcG9pbnRDb3VudF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHBvaW50LFxuICAgICAgdjogdmVjMi5ub3JtYWxpemUoWzAsIDBdLCB2ZWNGcm9tKHBvaW50LCBwTmV4dCkpXG4gICAgfTtcbiAgfSk7IC8vIENvbXB1dGUgdGhlIGV4cGFuZGVkIGh1bGwgcG9pbnRzLCBhbmQgdGhlIG5lYXJlc3QgcHJpb3IgY29udHJvbCBwb2ludCBmb3IgZWFjaC5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGh1bGxQb2ludHMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcHJpb3JJbmRleCA9IGkgPiAwID8gaSAtIDEgOiBwb2ludENvdW50IC0gMTtcbiAgICB2YXIgZXh0ZW5zaW9uVmVjID0gdmVjMi5ub3JtYWxpemUoWzAsIDBdLCB2ZWMyLmFkZChbMCwgMF0sIGh1bGxQb2ludHNbcHJpb3JJbmRleF0udiwgdmVjMi5zY2FsZShbMCwgMF0sIGh1bGxQb2ludHNbaV0udiwgLTEpKSk7XG4gICAgaHVsbFBvaW50c1tpXS5wID0gdmVjMi5hZGQoWzAsIDBdLCBodWxsUG9pbnRzW2ldLnAsIHZlYzIuc2NhbGUoWzAsIDBdLCBleHRlbnNpb25WZWMsIHBhZGRpbmcpKTtcbiAgfVxuXG4gIHJldHVybiBodWxsUG9pbnRzLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIHBvaW50ID0gb2JqLnA7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgeTogcG9pbnRbMV1cbiAgICB9O1xuICB9KTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js ***! \*******************************************************************************/ /*! exports provided: dataValidation, singleDataValidation */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataValidation\", function() { return dataValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"singleDataValidation\", function() { return singleDataValidation; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n\n\n\n/**\n * 验证关系图或树图数据的合法性,必须符合以下规则才会渲染图:\n * 1. 必须传入数据\n * 2. 节点的 ID 必须为字符串,暂不支持数字类型,如果支持数字类型,会出现类似 123 与 '123' 是否相等的问题\n * 3. 边的 source 和 target 值必须在节点 ID 中存在\n * @param data 关系图或树图数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar dataValidation = function dataValidation(data) {\n var _a; // 1. 必须传入数据\n\n\n if (!data) {\n console.error('G6 Error Tips: the data must be defined');\n return false;\n } // 2. 节点的 ID 必须为字符串或数字类型\n\n\n var nodes = data.nodes,\n edges = data.edges,\n _b = data.combos,\n combos = _b === void 0 ? [] : _b;\n\n if (!nodes && !edges) {\n var validated_1 = true; // 不存在 nodes 和 edges,则说明是 TreeGraphData,按 TreeGraphData 规则验证\n\n Object(_graphic__WEBPACK_IMPORTED_MODULE_2__[\"traverseTree\"])(data, function (param) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(param.id)) {\n validated_1 = false;\n return false;\n }\n\n return true;\n });\n return validated_1;\n }\n\n var nonNode = (nodes || []).find(function (node) {\n return !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(node.id);\n });\n\n if (nonNode) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or %c\" + nonNode.id + \"%c is not a string.\", 'font-size: 20px; color: red;', '');\n return false;\n } // 3. 边的 source 和 target 必须存在于节点 或 Combo中\n\n\n var nodeIds = (nodes || []).map(function (node) {\n return node.id;\n });\n var comboIds = (_a = combos) === null || _a === void 0 ? void 0 : _a.map(function (combo) {\n return combo.id;\n });\n\n var ids = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], nodeIds, true), comboIds, true);\n\n var nonEdges = (edges || []).find(function (edge) {\n return !ids.includes(edge.source) || !ids.includes(edge.target);\n });\n\n if (nonEdges) {\n console.warn(\"G6 Warning Tips: The source %c\" + nonEdges.source + \"%c or the target %c\" + nonEdges.target + \"%c of the edge do not exist in the nodes or combos.\", 'font-size: 20px; color: red;', '', 'font-size: 20px; color: red;', '');\n return false;\n }\n\n return true;\n};\n/**\n * 验证添加节点、边或从combo时的数据\n * @param type 节点、边或从combo\n * @param data 添加的单条数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar singleDataValidation = function singleDataValidation(type, data) {\n if (type === 'node' || type === 'combo') {\n // 必须有 id 字段,且id必须为字符串类型\n if (data.id && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(data.id)) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or the 'id' %c\" + data.id + \"%c is not a string.\", 'font-size: 20px; color: red;', '');\n return false;\n }\n } else if (type === 'edge') {\n // 必须有 source 和 target 字段\n if (!data.source || !data.target) {\n console.warn(\"G6 Warning Tips: missing 'source' or 'target' for the edge.\");\n return false;\n }\n }\n\n return true;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanM/MjA5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDQTtBQUNHO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0IsSUFBSSw2REFBWTtBQUNoQixXQUFXLDJEQUFRO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQixHQUFHOztBQUVIO0FBQ0Esd0hBQXdILFlBQVk7QUFDcEk7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVILFlBQVksMkRBQWEsQ0FBQywyREFBYTs7QUFFdkM7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSx3TEFBd0wsWUFBWSx3QkFBd0IsWUFBWTtBQUN4TztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFRO0FBQzVCLGdJQUFnSSxZQUFZO0FBQzVJO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlIH0gZnJvbSAnLi9ncmFwaGljJztcbi8qKlxuICog6aqM6K+B5YWz57O75Zu+5oiW5qCR5Zu+5pWw5o2u55qE5ZCI5rOV5oCn77yM5b+F6aG756ym5ZCI5Lul5LiL6KeE5YiZ5omN5Lya5riy5p+T5Zu+77yaXG4gKiAxLiDlv4XpobvkvKDlhaXmlbDmja5cbiAqIDIuIOiKgueCueeahCBJRCDlv4XpobvkuLrlrZfnrKbkuLLvvIzmmoLkuI3mlK/mjIHmlbDlrZfnsbvlnovvvIzlpoLmnpzmlK/mjIHmlbDlrZfnsbvlnovvvIzkvJrlh7rnjrDnsbvkvLwgMTIzIOS4jiAnMTIzJyDmmK/lkKbnm7jnrYnnmoTpl67pophcbiAqIDMuIOi+ueeahCBzb3VyY2Ug5ZKMIHRhcmdldCDlgLzlv4XpobvlnKjoioLngrkgSUQg5Lit5a2Y5ZyoXG4gKiBAcGFyYW0gZGF0YSDlhbPns7vlm77miJbmoJHlm77mlbDmja5cbiAqIEByZXR1cm4gYm9vbGVhbiDlhajpg6jpqozor4HpgJrov4fov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICovXG5cbmV4cG9ydCB2YXIgZGF0YVZhbGlkYXRpb24gPSBmdW5jdGlvbiBkYXRhVmFsaWRhdGlvbihkYXRhKSB7XG4gIHZhciBfYTsgLy8gMS4g5b+F6aG75Lyg5YWl5pWw5o2uXG5cblxuICBpZiAoIWRhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKCdHNiBFcnJvciBUaXBzOiB0aGUgZGF0YSBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gMi4g6IqC54K555qEIElEIOW/hemhu+S4uuWtl+espuS4suaIluaVsOWtl+exu+Wei1xuXG5cbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcyxcbiAgICAgIGVkZ2VzID0gZGF0YS5lZGdlcyxcbiAgICAgIF9iID0gZGF0YS5jb21ib3MsXG4gICAgICBjb21ib3MgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAoIW5vZGVzICYmICFlZGdlcykge1xuICAgIHZhciB2YWxpZGF0ZWRfMSA9IHRydWU7IC8vIOS4jeWtmOWcqCBub2RlcyDlkowgZWRnZXPvvIzliJnor7TmmI7mmK8gVHJlZUdyYXBoRGF0Ye+8jOaMiSBUcmVlR3JhcGhEYXRhIOinhOWImemqjOivgVxuXG4gICAgdHJhdmVyc2VUcmVlKGRhdGEsIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgaWYgKCFpc1N0cmluZyhwYXJhbS5pZCkpIHtcbiAgICAgICAgdmFsaWRhdGVkXzEgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmFsaWRhdGVkXzE7XG4gIH1cblxuICB2YXIgbm9uTm9kZSA9IChub2RlcyB8fCBbXSkuZmluZChmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAhaXNTdHJpbmcobm9kZS5pZCk7XG4gIH0pO1xuXG4gIGlmIChub25Ob2RlKSB7XG4gICAgY29uc29sZS53YXJuKFwiRzYgV2FybmluZyBUaXBzOiBtaXNzaW5nICdpZCcgcHJvcGVydHksIG9yICVjXCIgKyBub25Ob2RlLmlkICsgXCIlYyBpcyBub3QgYSBzdHJpbmcuXCIsICdmb250LXNpemU6IDIwcHg7IGNvbG9yOiByZWQ7JywgJycpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyAzLiDovrnnmoQgc291cmNlIOWSjCB0YXJnZXQg5b+F6aG75a2Y5Zyo5LqO6IqC54K5IOaIliBDb21ib+S4rVxuXG5cbiAgdmFyIG5vZGVJZHMgPSAobm9kZXMgfHwgW10pLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlLmlkO1xuICB9KTtcbiAgdmFyIGNvbWJvSWRzID0gKF9hID0gY29tYm9zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgIHJldHVybiBjb21iby5pZDtcbiAgfSk7XG5cbiAgdmFyIGlkcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgbm9kZUlkcywgdHJ1ZSksIGNvbWJvSWRzLCB0cnVlKTtcblxuICB2YXIgbm9uRWRnZXMgPSAoZWRnZXMgfHwgW10pLmZpbmQoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gIWlkcy5pbmNsdWRlcyhlZGdlLnNvdXJjZSkgfHwgIWlkcy5pbmNsdWRlcyhlZGdlLnRhcmdldCk7XG4gIH0pO1xuXG4gIGlmIChub25FZGdlcykge1xuICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogVGhlIHNvdXJjZSAlY1wiICsgbm9uRWRnZXMuc291cmNlICsgXCIlYyBvciB0aGUgdGFyZ2V0ICVjXCIgKyBub25FZGdlcy50YXJnZXQgKyBcIiVjIG9mIHRoZSBlZGdlIGRvIG5vdCBleGlzdCBpbiB0aGUgbm9kZXMgb3IgY29tYm9zLlwiLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIOmqjOivgea3u+WKoOiKgueCueOAgei+ueaIluS7jmNvbWJv5pe255qE5pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDoioLngrnjgIHovrnmiJbku45jb21ib1xuICogQHBhcmFtIGRhdGEg5re75Yqg55qE5Y2V5p2h5pWw5o2uXG4gKiBAcmV0dXJuIGJvb2xlYW4g5YWo6YOo6aqM6K+B6YCa6L+H6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAqL1xuXG5leHBvcnQgdmFyIHNpbmdsZURhdGFWYWxpZGF0aW9uID0gZnVuY3Rpb24gc2luZ2xlRGF0YVZhbGlkYXRpb24odHlwZSwgZGF0YSkge1xuICBpZiAodHlwZSA9PT0gJ25vZGUnIHx8IHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAvLyDlv4XpobvmnIkgaWQg5a2X5q6177yM5LiUaWTlv4XpobvkuLrlrZfnrKbkuLLnsbvlnotcbiAgICBpZiAoZGF0YS5pZCAmJiAhaXNTdHJpbmcoZGF0YS5pZCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogbWlzc2luZyAnaWQnIHByb3BlcnR5LCBvciB0aGUgJ2lkJyAlY1wiICsgZGF0YS5pZCArIFwiJWMgaXMgbm90IGEgc3RyaW5nLlwiLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VkZ2UnKSB7XG4gICAgLy8g5b+F6aG75pyJIHNvdXJjZSDlkowgdGFyZ2V0IOWtl+autVxuICAgIGlmICghZGF0YS5zb3VyY2UgfHwgIWRhdGEudGFyZ2V0KSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJHNiBXYXJuaW5nIFRpcHM6IG1pc3NpbmcgJ3NvdXJjZScgb3IgJ3RhcmdldCcgZm9yIHRoZSBlZGdlLlwiKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js ***! \*********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcz83YTg1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9wb2x5bGluZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js ***! \*****************************************************************************************/ /*! exports provided: getBBoxFromPoint, getBBoxFromPoints, isBBoxesOverlapping, filterConnectPoints, simplifyPolyline, getSimplePolyline, getExpandedBBox, isHorizontalPort, getExpandedBBoxPoint, mergeBBox, getPointsFromBBox, isPointOutsideBBox, getBBoxXCrossPoints, getBBoxYCrossPoints, getBBoxCrossPointsByPoint, distance, _costByPoints, heuristicCostEstimate, reconstructPath, removeFrom, isSegmentsIntersected, isSegmentCrossingBBox, getNeighborPoints, pathFinder, isBending, getBorderRadiusPoints, getPathWithBorderRadiusByPolyline, getPolylinePoints */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoint\", function() { return getBBoxFromPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoints\", function() { return getBBoxFromPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBBoxesOverlapping\", function() { return isBBoxesOverlapping; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterConnectPoints\", function() { return filterConnectPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"simplifyPolyline\", function() { return simplifyPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSimplePolyline\", function() { return getSimplePolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBox\", function() { return getExpandedBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHorizontalPort\", function() { return isHorizontalPort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBoxPoint\", function() { return getExpandedBBoxPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsFromBBox\", function() { return getPointsFromBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointOutsideBBox\", function() { return isPointOutsideBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxXCrossPoints\", function() { return getBBoxXCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxYCrossPoints\", function() { return getBBoxYCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxCrossPointsByPoint\", function() { return getBBoxCrossPointsByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_costByPoints\", function() { return _costByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"heuristicCostEstimate\", function() { return heuristicCostEstimate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructPath\", function() { return reconstructPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFrom\", function() { return removeFrom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentsIntersected\", function() { return isSegmentsIntersected; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentCrossingBBox\", function() { return isSegmentCrossingBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighborPoints\", function() { return getNeighborPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBending\", function() { return isBending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBorderRadiusPoints\", function() { return getBorderRadiusPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPathWithBorderRadiusByPolyline\", function() { return getPathWithBorderRadiusByPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPolylinePoints\", function() { return getPolylinePoints; });\nvar getBBoxFromPoint = function getBBoxFromPoint(point) {\n var x = point.x,\n y = point.y;\n return {\n x: x,\n y: y,\n centerX: x,\n centerY: y,\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n height: 0,\n width: 0\n };\n};\nvar getBBoxFromPoints = function getBBoxFromPoints(points) {\n if (points === void 0) {\n points = [];\n }\n\n var xs = [];\n var ys = [];\n points.forEach(function (p) {\n xs.push(p.x);\n ys.push(p.y);\n });\n var minX = Math.min.apply(Math, xs);\n var maxX = Math.max.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxY = Math.max.apply(Math, ys);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n maxX: maxX,\n maxY: maxY,\n minX: minX,\n minY: minY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar isBBoxesOverlapping = function isBBoxesOverlapping(b1, b2) {\n return Math.abs(b1.centerX - b2.centerX) * 2 < b1.width + b2.width && Math.abs(b1.centerY - b2.centerY) * 2 < b1.height + b2.height;\n};\nvar filterConnectPoints = function filterConnectPoints(points) {\n // pre-process: remove duplicated points\n var result = [];\n var pointsMap = {};\n var pointsLength = points.length;\n\n for (var i = pointsLength - 1; i >= 0; i--) {\n var p = points[i];\n p.id = p.x + \"|||\" + p.y;\n pointsMap[p.id] = p;\n result.push(p);\n }\n\n return result;\n};\nvar simplifyPolyline = function simplifyPolyline(points) {\n return filterConnectPoints(points);\n};\nvar getSimplePolyline = function getSimplePolyline(sPoint, tPoint) {\n return [sPoint, {\n x: sPoint.x,\n y: tPoint.y\n }, tPoint];\n};\nvar getExpandedBBox = function getExpandedBBox(bbox, offset) {\n if (bbox.width || bbox.height) {\n return {\n centerX: bbox.centerX,\n centerY: bbox.centerY,\n minX: bbox.minX - offset,\n minY: bbox.minY - offset,\n maxX: bbox.maxX + offset,\n maxY: bbox.maxY + offset,\n height: bbox.height + 2 * offset,\n width: bbox.width + 2 * offset\n };\n } // when it is a point\n\n\n return bbox;\n};\nvar isHorizontalPort = function isHorizontalPort(port, bbox) {\n var dx = Math.abs(port.x - bbox.centerX);\n var dy = Math.abs(port.y - bbox.centerY);\n if (dx === 0 && dy === 0) return 0;\n return dx / bbox.width > dy / bbox.height;\n};\nvar getExpandedBBoxPoint = function getExpandedBBoxPoint(bbox, // 将原来节点 bbox 扩展了 offset 后的 bbox,且被 gridSize 格式化\npoint, // 被 gridSize 格式化后的位置(anchorPoint)\nanotherPoint) {\n var isHorizontal = isHorizontalPort(point, bbox);\n\n if (isHorizontal === 0) {\n // 说明锚点是节点中心,linkCenter: true。需要根据两个节点的相对关系决定方向\n var x = bbox.centerX;\n var y = bbox.centerY;\n\n if (anotherPoint.y < point.y) {\n // 另一端在左上/右上方时,总是从上方走\n y = bbox.minY;\n } else if (anotherPoint.x > point.x) {\n // 另一端在右下方,往右边走\n x = bbox.maxX;\n } else if (anotherPoint.x < point.x) {\n // 另一端在左下方,往左边走\n x = bbox.minX;\n } else if (anotherPoint.x === point.x) {\n // 另一段在正下方,往下走\n y = bbox.maxY;\n }\n\n return {\n x: x,\n y: y\n };\n }\n\n if (isHorizontal) {\n return {\n x: point.x > bbox.centerX ? bbox.maxX : bbox.minX,\n y: point.y\n };\n }\n\n return {\n x: point.x,\n y: point.y > bbox.centerY ? bbox.maxY : bbox.minY\n };\n};\n/**\n *\n * @param b1\n * @param b2\n */\n\nvar mergeBBox = function mergeBBox(b1, b2) {\n var minX = Math.min(b1.minX, b2.minX);\n var minY = Math.min(b1.minY, b2.minY);\n var maxX = Math.max(b1.maxX, b2.maxX);\n var maxY = Math.max(b1.maxY, b2.maxY);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar getPointsFromBBox = function getPointsFromBBox(bbox) {\n // anticlockwise\n // const { minX, minY, maxX, maxY } = bbox;\n return [{\n x: bbox.minX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.maxY\n }, {\n x: bbox.minX,\n y: bbox.maxY\n }];\n};\nvar isPointOutsideBBox = function isPointOutsideBBox(point, bbox) {\n var x = point.x,\n y = point.y;\n return x < bbox.minX || x > bbox.maxX || y < bbox.minY || y > bbox.maxY;\n};\nvar getBBoxXCrossPoints = function getBBoxXCrossPoints(bbox, x) {\n if (x < bbox.minX || x > bbox.maxX) {\n return [];\n }\n\n return [{\n x: x,\n y: bbox.minY\n }, {\n x: x,\n y: bbox.maxY\n }];\n};\nvar getBBoxYCrossPoints = function getBBoxYCrossPoints(bbox, y) {\n if (y < bbox.minY || y > bbox.maxY) {\n return [];\n }\n\n return [{\n x: bbox.minX,\n y: y\n }, {\n x: bbox.maxX,\n y: y\n }];\n};\nvar getBBoxCrossPointsByPoint = function getBBoxCrossPointsByPoint(bbox, point) {\n return getBBoxXCrossPoints(bbox, point.x).concat(getBBoxYCrossPoints(bbox, point.y));\n};\n/**\n * 曼哈顿距离\n */\n\nvar distance = function distance(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n/**\n * 如果 points 中的一个节点 x 与 p 相等,则消耗 -2。y 同\n * 即优先选择和 points 在同一水平线 / 垂直线上的点\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\nvar _costByPoints = function _costByPoints(p, points) {\n var offset = -2;\n var result = 0;\n points.forEach(function (point) {\n if (point) {\n if (p.x === point.x) {\n result += offset;\n }\n\n if (p.y === point.y) {\n result += offset;\n }\n }\n });\n return result;\n};\n/**\n * ps 经过 p 到 pt 的距离,减去其他路过节点造成的消耗\n */\n\nvar heuristicCostEstimate = function heuristicCostEstimate(p, ps, pt, source, target) {\n return distance(p, ps) + distance(p, pt) + _costByPoints(p, [ps, pt, source, target]);\n};\nvar reconstructPath = function reconstructPath(pathPoints, pointById, cameFrom, currentId, iterator) {\n if (iterator === void 0) {\n iterator = 0;\n }\n\n pathPoints.unshift(pointById[currentId]);\n\n if (cameFrom[currentId] && cameFrom[currentId] !== currentId && iterator <= 100) {\n reconstructPath(pathPoints, pointById, cameFrom, cameFrom[currentId], iterator + 1);\n }\n};\n/**\n * 从 arr 中删去 item\n */\n\nvar removeFrom = function removeFrom(arr, item) {\n var index = arr.indexOf(item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n};\nvar isSegmentsIntersected = function isSegmentsIntersected(p0, p1, p2, p3) {\n var v1x = p2.x - p0.x;\n var v1y = p2.y - p0.y;\n var v2x = p3.x - p0.x;\n var v2y = p3.y - p0.y;\n var v3x = p2.x - p1.x;\n var v3y = p2.y - p1.y;\n var v4x = p3.x - p1.x;\n var v4y = p3.y - p1.y;\n var pd1 = v1x * v2y - v1y * v2x;\n var pd2 = v3x * v4y - v3y * v4x;\n var pd3 = v1x * v3y - v1y * v3x;\n var pd4 = v2x * v4y - v2y * v4x;\n return pd1 * pd2 <= 0 && pd3 * pd4 <= 0;\n};\nvar isSegmentCrossingBBox = function isSegmentCrossingBBox(p1, p2, bbox) {\n if (bbox.width || bbox.height) {\n var _a = getPointsFromBBox(bbox),\n pa = _a[0],\n pb = _a[1],\n pc = _a[2],\n pd = _a[3];\n\n return isSegmentsIntersected(p1, p2, pa, pb) || isSegmentsIntersected(p1, p2, pa, pd) || isSegmentsIntersected(p1, p2, pb, pc) || isSegmentsIntersected(p1, p2, pc, pd);\n }\n\n return false;\n};\n/**\n * 在 points 中找到满足 x 或 y 和 point 的 x 或 y 相等,且与 point 连线不经过 bbox1 与 bbox2 的点\n */\n\nvar getNeighborPoints = function getNeighborPoints(points, point, bbox1, bbox2) {\n var neighbors = [];\n points.forEach(function (p) {\n if (p === point) return;\n\n if (p.x === point.x || p.y === point.y) {\n if (isSegmentCrossingBBox(p, point, bbox1) || isSegmentCrossingBBox(p, point, bbox2)) return;\n neighbors.push(p);\n }\n });\n return filterConnectPoints(neighbors);\n};\nvar pathFinder = function pathFinder(points, start, goal, sBBox, tBBox, os, ot) {\n // A-Star Algorithm\n var closedSet = [];\n var openSet = [start];\n var cameFrom = {};\n var gScore = {}; // all default values are Infinity\n\n var fScore = {}; // all default values are Infinity\n\n gScore[start.id] = 0;\n fScore[start.id] = heuristicCostEstimate(start, goal, start);\n var pointById = {};\n points.forEach(function (p) {\n pointById[p.id] = p;\n });\n var current, lowestFScore;\n\n while (openSet.length) {\n current = undefined;\n lowestFScore = Infinity; // 找到 openSet 中 fScore 最小的点\n\n openSet.forEach(function (p) {\n if (fScore[p.id] <= lowestFScore) {\n lowestFScore = fScore[p.id];\n current = p;\n }\n }); // 若 openSet 中 fScore 最小的点就是终点\n\n if (current === goal) {\n // ending condition\n var pathPoints = [];\n reconstructPath(pathPoints, pointById, cameFrom, goal.id);\n return pathPoints;\n }\n\n removeFrom(openSet, current);\n closedSet.push(current);\n getNeighborPoints(points, current, sBBox, tBBox).forEach(function (neighbor) {\n if (closedSet.indexOf(neighbor) !== -1) {\n return;\n }\n\n if (openSet.indexOf(neighbor) === -1) {\n openSet.push(neighbor);\n }\n\n var tentativeGScore = fScore[current.id] + distance(current, neighbor); // + distance(neighbor, goal);\n\n if (gScore[neighbor.id] && tentativeGScore >= gScore[neighbor.id]) {\n return;\n }\n\n cameFrom[neighbor.id] = current.id;\n gScore[neighbor.id] = tentativeGScore;\n fScore[neighbor.id] = gScore[neighbor.id] + heuristicCostEstimate(neighbor, goal, start, os, ot);\n });\n } // throw new Error('Cannot find path');\n\n\n return [start, goal];\n};\nvar isBending = function isBending(p0, p1, p2) {\n return !(p0.x === p1.x && p1.x === p2.x || p0.y === p1.y && p1.y === p2.y);\n};\nvar getBorderRadiusPoints = function getBorderRadiusPoints(p0, p1, p2, r) {\n var d0 = distance(p0, p1);\n var d1 = distance(p2, p1);\n\n if (d0 < r) {\n r = d0;\n }\n\n if (d1 < r) {\n r = d1;\n }\n\n var ps = {\n x: p1.x - r / d0 * (p1.x - p0.x),\n y: p1.y - r / d0 * (p1.y - p0.y)\n };\n var pt = {\n x: p1.x - r / d1 * (p1.x - p2.x),\n y: p1.y - r / d1 * (p1.y - p2.y)\n };\n return [ps, pt];\n};\nvar getPathWithBorderRadiusByPolyline = function getPathWithBorderRadiusByPolyline(points, borderRadius) {\n var pathSegments = [];\n var startPoint = points[0];\n pathSegments.push(\"M\" + startPoint.x + \" \" + startPoint.y);\n points.forEach(function (p, i) {\n var p1 = points[i + 1];\n var p2 = points[i + 2];\n\n if (p1 && p2) {\n if (isBending(p, p1, p2)) {\n var _a = getBorderRadiusPoints(p, p1, p2, borderRadius),\n ps = _a[0],\n pt = _a[1];\n\n pathSegments.push(\"L\" + ps.x + \" \" + ps.y);\n pathSegments.push(\"Q\" + p1.x + \" \" + p1.y + \" \" + pt.x + \" \" + pt.y);\n pathSegments.push(\"L\" + pt.x + \" \" + pt.y);\n } else {\n pathSegments.push(\"L\" + p1.x + \" \" + p1.y);\n }\n } else if (p1) {\n pathSegments.push(\"L\" + p1.x + \" \" + p1.y);\n }\n });\n return pathSegments.join('');\n};\nvar getPolylinePoints = function getPolylinePoints(start, end, sNode, tNode, offset) {\n var sBBox, tBBox;\n\n if (!sNode || !sNode.getType()) {\n sBBox = getBBoxFromPoint(start);\n } else if (sNode.getType() === 'combo') {\n var sNodeKeyShape = sNode.getKeyShape();\n sBBox = sNodeKeyShape.getCanvasBBox() || getBBoxFromPoint(start);\n sBBox.centerX = (sBBox.minX + sBBox.maxX) / 2;\n sBBox.centerY = (sBBox.minY + sBBox.maxY) / 2;\n } else {\n sBBox = sNode.getBBox();\n }\n\n if (!tNode || !tNode.getType()) {\n tBBox = getBBoxFromPoint(end);\n } else if (tNode.getType() === 'combo') {\n var tKeyShapeBBox = tNode.getKeyShape().getBBox();\n\n if (tKeyShapeBBox) {\n var _a = tNode.getModel(),\n tx = _a.x,\n ty = _a.y;\n\n tBBox = {\n x: tx,\n y: ty,\n width: tKeyShapeBBox.width,\n height: tKeyShapeBBox.height,\n minX: tKeyShapeBBox.minX + tx,\n maxX: tKeyShapeBBox.maxX + tx,\n minY: tKeyShapeBBox.minY + ty,\n maxY: tKeyShapeBBox.maxY + ty\n };\n tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2;\n tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2;\n } else {\n tBBox = getBBoxFromPoint(end);\n }\n } else {\n tBBox = tNode && tNode.getBBox();\n } // if (isBBoxesOverlapping(sBBox, tBBox)) {\n // // source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n\n var sxBBox = getExpandedBBox(sBBox, offset);\n var txBBox = getExpandedBBox(tBBox, offset); // if (isBBoxesOverlapping(sxBBox, txBBox)) {\n // // the expanded bounding boxes of source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n var sPoint = getExpandedBBoxPoint(sxBBox, start, end);\n var tPoint = getExpandedBBoxPoint(txBBox, end, start);\n var lineBBox = getBBoxFromPoints([sPoint, tPoint]);\n var sMixBBox = mergeBBox(sxBBox, lineBBox);\n var tMixBBox = mergeBBox(txBBox, lineBBox);\n var connectPoints = [];\n connectPoints = connectPoints.concat(getPointsFromBBox(sMixBBox)).concat(getPointsFromBBox(tMixBBox));\n var centerPoint = {\n x: (start.x + end.x) / 2,\n y: (start.y + end.y) / 2\n };\n [lineBBox, sMixBBox, tMixBBox].forEach(function (bbox) {\n connectPoints = connectPoints.concat(getBBoxCrossPointsByPoint(bbox, centerPoint).filter(function (p) {\n return isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox);\n }));\n });\n [{\n x: sPoint.x,\n y: tPoint.y\n }, {\n x: tPoint.x,\n y: sPoint.y\n }].forEach(function (p) {\n // impossible!!\n if (isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox) // &&\n // isPointInsideBBox(p, sMixBBox) && isPointInsideBBox(p, tMixBBox)\n ) {\n connectPoints.push(p);\n }\n });\n connectPoints.unshift(sPoint);\n connectPoints.push(tPoint); // filter out dulplicated points in connectPoints\n\n connectPoints = filterConnectPoints(connectPoints); // , sxBBox, txBBox, outerBBox\n\n var pathPoints = pathFinder(connectPoints, sPoint, tPoint, sBBox, tBBox, start, end);\n pathPoints.unshift(start);\n pathPoints.push(end);\n return simplifyPolyline(pathPoints);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzPzM2ZGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQyxRQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLFlBQVkseUJBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZFQUE2RTs7QUFFN0U7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsNkJBQTZCOztBQUU3QixxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50ID0gZnVuY3Rpb24gZ2V0QkJveEZyb21Qb2ludChwb2ludCkge1xuICB2YXIgeCA9IHBvaW50LngsXG4gICAgICB5ID0gcG9pbnQueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgY2VudGVyWDogeCxcbiAgICBjZW50ZXJZOiB5LFxuICAgIG1pblg6IHgsXG4gICAgbWluWTogeSxcbiAgICBtYXhYOiB4LFxuICAgIG1heFk6IHksXG4gICAgaGVpZ2h0OiAwLFxuICAgIHdpZHRoOiAwXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hGcm9tUG9pbnRzKHBvaW50cykge1xuICBpZiAocG9pbnRzID09PSB2b2lkIDApIHtcbiAgICBwb2ludHMgPSBbXTtcbiAgfVxuXG4gIHZhciB4cyA9IFtdO1xuICB2YXIgeXMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICB4cy5wdXNoKHAueCk7XG4gICAgeXMucHVzaChwLnkpO1xuICB9KTtcbiAgdmFyIG1pblggPSBNYXRoLm1pbi5hcHBseShNYXRoLCB4cyk7XG4gIHZhciBtYXhYID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgeHMpO1xuICB2YXIgbWluWSA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHlzKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heC5hcHBseShNYXRoLCB5cyk7XG4gIHJldHVybiB7XG4gICAgY2VudGVyWDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgY2VudGVyWTogKG1pblkgKyBtYXhZKSAvIDIsXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIG1pblg6IG1pblgsXG4gICAgbWluWTogbWluWSxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWFxuICB9O1xufTtcbmV4cG9ydCB2YXIgaXNCQm94ZXNPdmVybGFwcGluZyA9IGZ1bmN0aW9uIGlzQkJveGVzT3ZlcmxhcHBpbmcoYjEsIGIyKSB7XG4gIHJldHVybiBNYXRoLmFicyhiMS5jZW50ZXJYIC0gYjIuY2VudGVyWCkgKiAyIDwgYjEud2lkdGggKyBiMi53aWR0aCAmJiBNYXRoLmFicyhiMS5jZW50ZXJZIC0gYjIuY2VudGVyWSkgKiAyIDwgYjEuaGVpZ2h0ICsgYjIuaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZmlsdGVyQ29ubmVjdFBvaW50cyA9IGZ1bmN0aW9uIGZpbHRlckNvbm5lY3RQb2ludHMocG9pbnRzKSB7XG4gIC8vIHByZS1wcm9jZXNzOiByZW1vdmUgZHVwbGljYXRlZCBwb2ludHNcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgcG9pbnRzTWFwID0ge307XG4gIHZhciBwb2ludHNMZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHNMZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHAuaWQgPSBwLnggKyBcInx8fFwiICsgcC55O1xuICAgIHBvaW50c01hcFtwLmlkXSA9IHA7XG4gICAgcmVzdWx0LnB1c2gocCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgc2ltcGxpZnlQb2x5bGluZSA9IGZ1bmN0aW9uIHNpbXBsaWZ5UG9seWxpbmUocG9pbnRzKSB7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKHBvaW50cyk7XG59O1xuZXhwb3J0IHZhciBnZXRTaW1wbGVQb2x5bGluZSA9IGZ1bmN0aW9uIGdldFNpbXBsZVBvbHlsaW5lKHNQb2ludCwgdFBvaW50KSB7XG4gIHJldHVybiBbc1BvaW50LCB7XG4gICAgeDogc1BvaW50LngsXG4gICAgeTogdFBvaW50LnlcbiAgfSwgdFBvaW50XTtcbn07XG5leHBvcnQgdmFyIGdldEV4cGFuZGVkQkJveCA9IGZ1bmN0aW9uIGdldEV4cGFuZGVkQkJveChiYm94LCBvZmZzZXQpIHtcbiAgaWYgKGJib3gud2lkdGggfHwgYmJveC5oZWlnaHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2VudGVyWDogYmJveC5jZW50ZXJYLFxuICAgICAgY2VudGVyWTogYmJveC5jZW50ZXJZLFxuICAgICAgbWluWDogYmJveC5taW5YIC0gb2Zmc2V0LFxuICAgICAgbWluWTogYmJveC5taW5ZIC0gb2Zmc2V0LFxuICAgICAgbWF4WDogYmJveC5tYXhYICsgb2Zmc2V0LFxuICAgICAgbWF4WTogYmJveC5tYXhZICsgb2Zmc2V0LFxuICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodCArIDIgKiBvZmZzZXQsXG4gICAgICB3aWR0aDogYmJveC53aWR0aCArIDIgKiBvZmZzZXRcbiAgICB9O1xuICB9IC8vIHdoZW4gaXQgaXMgYSBwb2ludFxuXG5cbiAgcmV0dXJuIGJib3g7XG59O1xuZXhwb3J0IHZhciBpc0hvcml6b250YWxQb3J0ID0gZnVuY3Rpb24gaXNIb3Jpem9udGFsUG9ydChwb3J0LCBiYm94KSB7XG4gIHZhciBkeCA9IE1hdGguYWJzKHBvcnQueCAtIGJib3guY2VudGVyWCk7XG4gIHZhciBkeSA9IE1hdGguYWJzKHBvcnQueSAtIGJib3guY2VudGVyWSk7XG4gIGlmIChkeCA9PT0gMCAmJiBkeSA9PT0gMCkgcmV0dXJuIDA7XG4gIHJldHVybiBkeCAvIGJib3gud2lkdGggPiBkeSAvIGJib3guaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZ2V0RXhwYW5kZWRCQm94UG9pbnQgPSBmdW5jdGlvbiBnZXRFeHBhbmRlZEJCb3hQb2ludChiYm94LCAvLyDlsIbljp/mnaXoioLngrkgYmJveCDmianlsZXkuoYgb2Zmc2V0IOWQjueahCBiYm9477yM5LiU6KKrIGdyaWRTaXplIOagvOW8j+WMllxucG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxuYW5vdGhlclBvaW50KSB7XG4gIHZhciBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxQb3J0KHBvaW50LCBiYm94KTtcblxuICBpZiAoaXNIb3Jpem9udGFsID09PSAwKSB7XG4gICAgLy8g6K+05piO6ZSa54K55piv6IqC54K55Lit5b+D77yMbGlua0NlbnRlcjogdHJ1ZeOAgumcgOimgeagueaNruS4pOS4quiKgueCueeahOebuOWvueWFs+ezu+WGs+WumuaWueWQkVxuICAgIHZhciB4ID0gYmJveC5jZW50ZXJYO1xuICAgIHZhciB5ID0gYmJveC5jZW50ZXJZO1xuXG4gICAgaWYgKGFub3RoZXJQb2ludC55IDwgcG9pbnQueSkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5bem5LiKL+WPs+S4iuaWueaXtu+8jOaAu+aYr+S7juS4iuaWuei1sFxuICAgICAgeSA9IGJib3gubWluWTtcbiAgICB9IGVsc2UgaWYgKGFub3RoZXJQb2ludC54ID4gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5Y+z5LiL5pa577yM5b6A5Y+z6L656LWwXG4gICAgICB4ID0gYmJveC5tYXhYO1xuICAgIH0gZWxzZSBpZiAoYW5vdGhlclBvaW50LnggPCBwb2ludC54KSB7XG4gICAgICAvLyDlj6bkuIDnq6/lnKjlt6bkuIvmlrnvvIzlvoDlt6bovrnotbBcbiAgICAgIHggPSBiYm94Lm1pblg7XG4gICAgfSBlbHNlIGlmIChhbm90aGVyUG9pbnQueCA9PT0gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA5q615Zyo5q2j5LiL5pa577yM5b6A5LiL6LWwXG4gICAgICB5ID0gYmJveC5tYXhZO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG4gIH1cblxuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LnggPiBiYm94LmNlbnRlclggPyBiYm94Lm1heFggOiBiYm94Lm1pblgsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcG9pbnQueCxcbiAgICB5OiBwb2ludC55ID4gYmJveC5jZW50ZXJZID8gYmJveC5tYXhZIDogYmJveC5taW5ZXG4gIH07XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGIxXG4gKiBAcGFyYW0gYjJcbiAqL1xuXG5leHBvcnQgdmFyIG1lcmdlQkJveCA9IGZ1bmN0aW9uIG1lcmdlQkJveChiMSwgYjIpIHtcbiAgdmFyIG1pblggPSBNYXRoLm1pbihiMS5taW5YLCBiMi5taW5YKTtcbiAgdmFyIG1pblkgPSBNYXRoLm1pbihiMS5taW5ZLCBiMi5taW5ZKTtcbiAgdmFyIG1heFggPSBNYXRoLm1heChiMS5tYXhYLCBiMi5tYXhYKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heChiMS5tYXhZLCBiMi5tYXhZKTtcbiAgcmV0dXJuIHtcbiAgICBjZW50ZXJYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBjZW50ZXJZOiAobWluWSArIG1heFkpIC8gMixcbiAgICBtaW5YOiBtaW5YLFxuICAgIG1pblk6IG1pblksXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRQb2ludHNGcm9tQkJveCA9IGZ1bmN0aW9uIGdldFBvaW50c0Zyb21CQm94KGJib3gpIHtcbiAgLy8gYW50aWNsb2Nrd2lzZVxuICAvLyBjb25zdCB7IG1pblgsIG1pblksIG1heFgsIG1heFkgfSA9IGJib3g7XG4gIHJldHVybiBbe1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfSwge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfV07XG59O1xuZXhwb3J0IHZhciBpc1BvaW50T3V0c2lkZUJCb3ggPSBmdW5jdGlvbiBpc1BvaW50T3V0c2lkZUJCb3gocG9pbnQsIGJib3gpIHtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHJldHVybiB4IDwgYmJveC5taW5YIHx8IHggPiBiYm94Lm1heFggfHwgeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFhDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgeCkge1xuICBpZiAoeCA8IGJib3gubWluWCB8fCB4ID4gYmJveC5tYXhYKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogeCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IHgsXG4gICAgeTogYmJveC5tYXhZXG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFlDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgeSkge1xuICBpZiAoeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogYmJveC5taW5YLFxuICAgIHk6IHlcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiB5XG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveENyb3NzUG9pbnRzQnlQb2ludCA9IGZ1bmN0aW9uIGdldEJCb3hDcm9zc1BvaW50c0J5UG9pbnQoYmJveCwgcG9pbnQpIHtcbiAgcmV0dXJuIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueCkuY29uY2F0KGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueSkpO1xufTtcbi8qKlxuICog5pu85ZOI6aG/6Led56a7XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5hYnMocDEueCAtIHAyLngpICsgTWF0aC5hYnMocDEueSAtIHAyLnkpO1xufTtcbi8qKlxuICog5aaC5p6cIHBvaW50cyDkuK3nmoTkuIDkuKroioLngrkgeCDkuI4gcCDnm7jnrYnvvIzliJnmtojogJcgLTLjgIJ5IOWQjFxuICog5Y2z5LyY5YWI6YCJ5oup5ZKMIHBvaW50cyDlnKjlkIzkuIDmsLTlubPnur8gLyDlnoLnm7Tnur/kuIrnmoTngrlcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuXG5leHBvcnQgdmFyIF9jb3N0QnlQb2ludHMgPSBmdW5jdGlvbiBfY29zdEJ5UG9pbnRzKHAsIHBvaW50cykge1xuICB2YXIgb2Zmc2V0ID0gLTI7XG4gIHZhciByZXN1bHQgPSAwO1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAocG9pbnQpIHtcbiAgICAgIGlmIChwLnggPT09IHBvaW50LngpIHtcbiAgICAgICAgcmVzdWx0ICs9IG9mZnNldDtcbiAgICAgIH1cblxuICAgICAgaWYgKHAueSA9PT0gcG9pbnQueSkge1xuICAgICAgICByZXN1bHQgKz0gb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBwcyDnu4/ov4cgcCDliLAgcHQg55qE6Led56a777yM5YeP5Y675YW25LuW6Lev6L+H6IqC54K56YCg5oiQ55qE5raI6ICXXG4gKi9cblxuZXhwb3J0IHZhciBoZXVyaXN0aWNDb3N0RXN0aW1hdGUgPSBmdW5jdGlvbiBoZXVyaXN0aWNDb3N0RXN0aW1hdGUocCwgcHMsIHB0LCBzb3VyY2UsIHRhcmdldCkge1xuICByZXR1cm4gZGlzdGFuY2UocCwgcHMpICsgZGlzdGFuY2UocCwgcHQpICsgX2Nvc3RCeVBvaW50cyhwLCBbcHMsIHB0LCBzb3VyY2UsIHRhcmdldF0pO1xufTtcbmV4cG9ydCB2YXIgcmVjb25zdHJ1Y3RQYXRoID0gZnVuY3Rpb24gcmVjb25zdHJ1Y3RQYXRoKHBhdGhQb2ludHMsIHBvaW50QnlJZCwgY2FtZUZyb20sIGN1cnJlbnRJZCwgaXRlcmF0b3IpIHtcbiAgaWYgKGl0ZXJhdG9yID09PSB2b2lkIDApIHtcbiAgICBpdGVyYXRvciA9IDA7XG4gIH1cblxuICBwYXRoUG9pbnRzLnVuc2hpZnQocG9pbnRCeUlkW2N1cnJlbnRJZF0pO1xuXG4gIGlmIChjYW1lRnJvbVtjdXJyZW50SWRdICYmIGNhbWVGcm9tW2N1cnJlbnRJZF0gIT09IGN1cnJlbnRJZCAmJiBpdGVyYXRvciA8PSAxMDApIHtcbiAgICByZWNvbnN0cnVjdFBhdGgocGF0aFBvaW50cywgcG9pbnRCeUlkLCBjYW1lRnJvbSwgY2FtZUZyb21bY3VycmVudElkXSwgaXRlcmF0b3IgKyAxKTtcbiAgfVxufTtcbi8qKlxuICog5LuOIGFyciDkuK3liKDljrsgaXRlbVxuICovXG5cbmV4cG9ydCB2YXIgcmVtb3ZlRnJvbSA9IGZ1bmN0aW9uIHJlbW92ZUZyb20oYXJyLCBpdGVtKSB7XG4gIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGlzU2VnbWVudHNJbnRlcnNlY3RlZCA9IGZ1bmN0aW9uIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdjF4ID0gcDIueCAtIHAwLng7XG4gIHZhciB2MXkgPSBwMi55IC0gcDAueTtcbiAgdmFyIHYyeCA9IHAzLnggLSBwMC54O1xuICB2YXIgdjJ5ID0gcDMueSAtIHAwLnk7XG4gIHZhciB2M3ggPSBwMi54IC0gcDEueDtcbiAgdmFyIHYzeSA9IHAyLnkgLSBwMS55O1xuICB2YXIgdjR4ID0gcDMueCAtIHAxLng7XG4gIHZhciB2NHkgPSBwMy55IC0gcDEueTtcbiAgdmFyIHBkMSA9IHYxeCAqIHYyeSAtIHYxeSAqIHYyeDtcbiAgdmFyIHBkMiA9IHYzeCAqIHY0eSAtIHYzeSAqIHY0eDtcbiAgdmFyIHBkMyA9IHYxeCAqIHYzeSAtIHYxeSAqIHYzeDtcbiAgdmFyIHBkNCA9IHYyeCAqIHY0eSAtIHYyeSAqIHY0eDtcbiAgcmV0dXJuIHBkMSAqIHBkMiA8PSAwICYmIHBkMyAqIHBkNCA8PSAwO1xufTtcbmV4cG9ydCB2YXIgaXNTZWdtZW50Q3Jvc3NpbmdCQm94ID0gZnVuY3Rpb24gaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAxLCBwMiwgYmJveCkge1xuICBpZiAoYmJveC53aWR0aCB8fCBiYm94LmhlaWdodCkge1xuICAgIHZhciBfYSA9IGdldFBvaW50c0Zyb21CQm94KGJib3gpLFxuICAgICAgICBwYSA9IF9hWzBdLFxuICAgICAgICBwYiA9IF9hWzFdLFxuICAgICAgICBwYyA9IF9hWzJdLFxuICAgICAgICBwZCA9IF9hWzNdO1xuXG4gICAgcmV0dXJuIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBhLCBwYikgfHwgaXNTZWdtZW50c0ludGVyc2VjdGVkKHAxLCBwMiwgcGEsIHBkKSB8fCBpc1NlZ21lbnRzSW50ZXJzZWN0ZWQocDEsIHAyLCBwYiwgcGMpIHx8IGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBjLCBwZCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDlnKggcG9pbnRzIOS4reaJvuWIsOa7oei2syB4IOaIliB5IOWSjCBwb2ludCDnmoQgeCDmiJYgeSDnm7jnrYnvvIzkuJTkuI4gcG9pbnQg6L+e57q/5LiN57uP6L+HIGJib3gxIOS4jiBiYm94MiDnmoTngrlcbiAqL1xuXG5leHBvcnQgdmFyIGdldE5laWdoYm9yUG9pbnRzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBwb2ludCwgYmJveDEsIGJib3gyKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICBpZiAocCA9PT0gcG9pbnQpIHJldHVybjtcblxuICAgIGlmIChwLnggPT09IHBvaW50LnggfHwgcC55ID09PSBwb2ludC55KSB7XG4gICAgICBpZiAoaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MSkgfHwgaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MikpIHJldHVybjtcbiAgICAgIG5laWdoYm9ycy5wdXNoKHApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKG5laWdoYm9ycyk7XG59O1xuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihwb2ludHMsIHN0YXJ0LCBnb2FsLCBzQkJveCwgdEJCb3gsIG9zLCBvdCkge1xuICAvLyBBLVN0YXIgQWxnb3JpdGhtXG4gIHZhciBjbG9zZWRTZXQgPSBbXTtcbiAgdmFyIG9wZW5TZXQgPSBbc3RhcnRdO1xuICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgdmFyIGdTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgZ1Njb3JlW3N0YXJ0LmlkXSA9IDA7XG4gIGZTY29yZVtzdGFydC5pZF0gPSBoZXVyaXN0aWNDb3N0RXN0aW1hdGUoc3RhcnQsIGdvYWwsIHN0YXJ0KTtcbiAgdmFyIHBvaW50QnlJZCA9IHt9O1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgIHBvaW50QnlJZFtwLmlkXSA9IHA7XG4gIH0pO1xuICB2YXIgY3VycmVudCwgbG93ZXN0RlNjb3JlO1xuXG4gIHdoaWxlIChvcGVuU2V0Lmxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgbG93ZXN0RlNjb3JlID0gSW5maW5pdHk7IC8vIOaJvuWIsCBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K5XG5cbiAgICBvcGVuU2V0LmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgIGlmIChmU2NvcmVbcC5pZF0gPD0gbG93ZXN0RlNjb3JlKSB7XG4gICAgICAgIGxvd2VzdEZTY29yZSA9IGZTY29yZVtwLmlkXTtcbiAgICAgICAgY3VycmVudCA9IHA7XG4gICAgICB9XG4gICAgfSk7IC8vIOiLpSBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K55bCx5piv57uI54K5XG5cbiAgICBpZiAoY3VycmVudCA9PT0gZ29hbCkge1xuICAgICAgLy8gZW5kaW5nIGNvbmRpdGlvblxuICAgICAgdmFyIHBhdGhQb2ludHMgPSBbXTtcbiAgICAgIHJlY29uc3RydWN0UGF0aChwYXRoUG9pbnRzLCBwb2ludEJ5SWQsIGNhbWVGcm9tLCBnb2FsLmlkKTtcbiAgICAgIHJldHVybiBwYXRoUG9pbnRzO1xuICAgIH1cblxuICAgIHJlbW92ZUZyb20ob3BlblNldCwgY3VycmVudCk7XG4gICAgY2xvc2VkU2V0LnB1c2goY3VycmVudCk7XG4gICAgZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBjdXJyZW50LCBzQkJveCwgdEJCb3gpLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yKSB7XG4gICAgICBpZiAoY2xvc2VkU2V0LmluZGV4T2YobmVpZ2hib3IpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuU2V0LmluZGV4T2YobmVpZ2hib3IpID09PSAtMSkge1xuICAgICAgICBvcGVuU2V0LnB1c2gobmVpZ2hib3IpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGVudGF0aXZlR1Njb3JlID0gZlNjb3JlW2N1cnJlbnQuaWRdICsgZGlzdGFuY2UoY3VycmVudCwgbmVpZ2hib3IpOyAvLyArIGRpc3RhbmNlKG5laWdoYm9yLCBnb2FsKTtcblxuICAgICAgaWYgKGdTY29yZVtuZWlnaGJvci5pZF0gJiYgdGVudGF0aXZlR1Njb3JlID49IGdTY29yZVtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYW1lRnJvbVtuZWlnaGJvci5pZF0gPSBjdXJyZW50LmlkO1xuICAgICAgZ1Njb3JlW25laWdoYm9yLmlkXSA9IHRlbnRhdGl2ZUdTY29yZTtcbiAgICAgIGZTY29yZVtuZWlnaGJvci5pZF0gPSBnU2NvcmVbbmVpZ2hib3IuaWRdICsgaGV1cmlzdGljQ29zdEVzdGltYXRlKG5laWdoYm9yLCBnb2FsLCBzdGFydCwgb3MsIG90KTtcbiAgICB9KTtcbiAgfSAvLyB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIHBhdGgnKTtcblxuXG4gIHJldHVybiBbc3RhcnQsIGdvYWxdO1xufTtcbmV4cG9ydCB2YXIgaXNCZW5kaW5nID0gZnVuY3Rpb24gaXNCZW5kaW5nKHAwLCBwMSwgcDIpIHtcbiAgcmV0dXJuICEocDAueCA9PT0gcDEueCAmJiBwMS54ID09PSBwMi54IHx8IHAwLnkgPT09IHAxLnkgJiYgcDEueSA9PT0gcDIueSk7XG59O1xuZXhwb3J0IHZhciBnZXRCb3JkZXJSYWRpdXNQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3JkZXJSYWRpdXNQb2ludHMocDAsIHAxLCBwMiwgcikge1xuICB2YXIgZDAgPSBkaXN0YW5jZShwMCwgcDEpO1xuICB2YXIgZDEgPSBkaXN0YW5jZShwMiwgcDEpO1xuXG4gIGlmIChkMCA8IHIpIHtcbiAgICByID0gZDA7XG4gIH1cblxuICBpZiAoZDEgPCByKSB7XG4gICAgciA9IGQxO1xuICB9XG5cbiAgdmFyIHBzID0ge1xuICAgIHg6IHAxLnggLSByIC8gZDAgKiAocDEueCAtIHAwLngpLFxuICAgIHk6IHAxLnkgLSByIC8gZDAgKiAocDEueSAtIHAwLnkpXG4gIH07XG4gIHZhciBwdCA9IHtcbiAgICB4OiBwMS54IC0gciAvIGQxICogKHAxLnggLSBwMi54KSxcbiAgICB5OiBwMS55IC0gciAvIGQxICogKHAxLnkgLSBwMi55KVxuICB9O1xuICByZXR1cm4gW3BzLCBwdF07XG59O1xuZXhwb3J0IHZhciBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUgPSBmdW5jdGlvbiBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9pbnRzLCBib3JkZXJSYWRpdXMpIHtcbiAgdmFyIHBhdGhTZWdtZW50cyA9IFtdO1xuICB2YXIgc3RhcnRQb2ludCA9IHBvaW50c1swXTtcbiAgcGF0aFNlZ21lbnRzLnB1c2goXCJNXCIgKyBzdGFydFBvaW50LnggKyBcIiBcIiArIHN0YXJ0UG9pbnQueSk7XG4gIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwLCBpKSB7XG4gICAgdmFyIHAxID0gcG9pbnRzW2kgKyAxXTtcbiAgICB2YXIgcDIgPSBwb2ludHNbaSArIDJdO1xuXG4gICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICBpZiAoaXNCZW5kaW5nKHAsIHAxLCBwMikpIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0Qm9yZGVyUmFkaXVzUG9pbnRzKHAsIHAxLCBwMiwgYm9yZGVyUmFkaXVzKSxcbiAgICAgICAgICAgIHBzID0gX2FbMF0sXG4gICAgICAgICAgICBwdCA9IF9hWzFdO1xuXG4gICAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiTFwiICsgcHMueCArIFwiIFwiICsgcHMueSk7XG4gICAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiUVwiICsgcDEueCArIFwiIFwiICsgcDEueSArIFwiIFwiICsgcHQueCArIFwiIFwiICsgcHQueSk7XG4gICAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiTFwiICsgcHQueCArIFwiIFwiICsgcHQueSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIkxcIiArIHAxLnggKyBcIiBcIiArIHAxLnkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocDEpIHtcbiAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiTFwiICsgcDEueCArIFwiIFwiICsgcDEueSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHBhdGhTZWdtZW50cy5qb2luKCcnKTtcbn07XG5leHBvcnQgdmFyIGdldFBvbHlsaW5lUG9pbnRzID0gZnVuY3Rpb24gZ2V0UG9seWxpbmVQb2ludHMoc3RhcnQsIGVuZCwgc05vZGUsIHROb2RlLCBvZmZzZXQpIHtcbiAgdmFyIHNCQm94LCB0QkJveDtcblxuICBpZiAoIXNOb2RlIHx8ICFzTm9kZS5nZXRUeXBlKCkpIHtcbiAgICBzQkJveCA9IGdldEJCb3hGcm9tUG9pbnQoc3RhcnQpO1xuICB9IGVsc2UgaWYgKHNOb2RlLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgIHZhciBzTm9kZUtleVNoYXBlID0gc05vZGUuZ2V0S2V5U2hhcGUoKTtcbiAgICBzQkJveCA9IHNOb2RlS2V5U2hhcGUuZ2V0Q2FudmFzQkJveCgpIHx8IGdldEJCb3hGcm9tUG9pbnQoc3RhcnQpO1xuICAgIHNCQm94LmNlbnRlclggPSAoc0JCb3gubWluWCArIHNCQm94Lm1heFgpIC8gMjtcbiAgICBzQkJveC5jZW50ZXJZID0gKHNCQm94Lm1pblkgKyBzQkJveC5tYXhZKSAvIDI7XG4gIH0gZWxzZSB7XG4gICAgc0JCb3ggPSBzTm9kZS5nZXRCQm94KCk7XG4gIH1cblxuICBpZiAoIXROb2RlIHx8ICF0Tm9kZS5nZXRUeXBlKCkpIHtcbiAgICB0QkJveCA9IGdldEJCb3hGcm9tUG9pbnQoZW5kKTtcbiAgfSBlbHNlIGlmICh0Tm9kZS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICB2YXIgdEtleVNoYXBlQkJveCA9IHROb2RlLmdldEtleVNoYXBlKCkuZ2V0QkJveCgpO1xuXG4gICAgaWYgKHRLZXlTaGFwZUJCb3gpIHtcbiAgICAgIHZhciBfYSA9IHROb2RlLmdldE1vZGVsKCksXG4gICAgICAgICAgdHggPSBfYS54LFxuICAgICAgICAgIHR5ID0gX2EueTtcblxuICAgICAgdEJCb3ggPSB7XG4gICAgICAgIHg6IHR4LFxuICAgICAgICB5OiB0eSxcbiAgICAgICAgd2lkdGg6IHRLZXlTaGFwZUJCb3gud2lkdGgsXG4gICAgICAgIGhlaWdodDogdEtleVNoYXBlQkJveC5oZWlnaHQsXG4gICAgICAgIG1pblg6IHRLZXlTaGFwZUJCb3gubWluWCArIHR4LFxuICAgICAgICBtYXhYOiB0S2V5U2hhcGVCQm94Lm1heFggKyB0eCxcbiAgICAgICAgbWluWTogdEtleVNoYXBlQkJveC5taW5ZICsgdHksXG4gICAgICAgIG1heFk6IHRLZXlTaGFwZUJCb3gubWF4WSArIHR5XG4gICAgICB9O1xuICAgICAgdEJCb3guY2VudGVyWCA9ICh0QkJveC5taW5YICsgdEJCb3gubWF4WCkgLyAyO1xuICAgICAgdEJCb3guY2VudGVyWSA9ICh0QkJveC5taW5ZICsgdEJCb3gubWF4WSkgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0QkJveCA9IGdldEJCb3hGcm9tUG9pbnQoZW5kKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdEJCb3ggPSB0Tm9kZSAmJiB0Tm9kZS5nZXRCQm94KCk7XG4gIH0gLy8gaWYgKGlzQkJveGVzT3ZlcmxhcHBpbmcoc0JCb3gsIHRCQm94KSkge1xuICAvLyAgIC8vIHNvdXJjZSBhbmQgdGFyZ2V0IG5vZGVzIGFyZSBvdmVybGFwcGluZ1xuICAvLyAgIHJldHVybiBzaW1wbGlmeVBvbHlsaW5lKGdldFNpbXBsZVBvbHlsaW5lKHN0YXJ0LCBlbmQpKTtcbiAgLy8gfVxuXG5cbiAgdmFyIHN4QkJveCA9IGdldEV4cGFuZGVkQkJveChzQkJveCwgb2Zmc2V0KTtcbiAgdmFyIHR4QkJveCA9IGdldEV4cGFuZGVkQkJveCh0QkJveCwgb2Zmc2V0KTsgLy8gaWYgKGlzQkJveGVzT3ZlcmxhcHBpbmcoc3hCQm94LCB0eEJCb3gpKSB7XG4gIC8vICAgLy8gdGhlIGV4cGFuZGVkIGJvdW5kaW5nIGJveGVzIG9mIHNvdXJjZSBhbmQgdGFyZ2V0IG5vZGVzIGFyZSBvdmVybGFwcGluZ1xuICAvLyAgIHJldHVybiBzaW1wbGlmeVBvbHlsaW5lKGdldFNpbXBsZVBvbHlsaW5lKHN0YXJ0LCBlbmQpKTtcbiAgLy8gfVxuXG4gIHZhciBzUG9pbnQgPSBnZXRFeHBhbmRlZEJCb3hQb2ludChzeEJCb3gsIHN0YXJ0LCBlbmQpO1xuICB2YXIgdFBvaW50ID0gZ2V0RXhwYW5kZWRCQm94UG9pbnQodHhCQm94LCBlbmQsIHN0YXJ0KTtcbiAgdmFyIGxpbmVCQm94ID0gZ2V0QkJveEZyb21Qb2ludHMoW3NQb2ludCwgdFBvaW50XSk7XG4gIHZhciBzTWl4QkJveCA9IG1lcmdlQkJveChzeEJCb3gsIGxpbmVCQm94KTtcbiAgdmFyIHRNaXhCQm94ID0gbWVyZ2VCQm94KHR4QkJveCwgbGluZUJCb3gpO1xuICB2YXIgY29ubmVjdFBvaW50cyA9IFtdO1xuICBjb25uZWN0UG9pbnRzID0gY29ubmVjdFBvaW50cy5jb25jYXQoZ2V0UG9pbnRzRnJvbUJCb3goc01peEJCb3gpKS5jb25jYXQoZ2V0UG9pbnRzRnJvbUJCb3godE1peEJCb3gpKTtcbiAgdmFyIGNlbnRlclBvaW50ID0ge1xuICAgIHg6IChzdGFydC54ICsgZW5kLngpIC8gMixcbiAgICB5OiAoc3RhcnQueSArIGVuZC55KSAvIDJcbiAgfTtcbiAgW2xpbmVCQm94LCBzTWl4QkJveCwgdE1peEJCb3hdLmZvckVhY2goZnVuY3Rpb24gKGJib3gpIHtcbiAgICBjb25uZWN0UG9pbnRzID0gY29ubmVjdFBvaW50cy5jb25jYXQoZ2V0QkJveENyb3NzUG9pbnRzQnlQb2ludChiYm94LCBjZW50ZXJQb2ludCkuZmlsdGVyKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gaXNQb2ludE91dHNpZGVCQm94KHAsIHN4QkJveCkgJiYgaXNQb2ludE91dHNpZGVCQm94KHAsIHR4QkJveCk7XG4gICAgfSkpO1xuICB9KTtcbiAgW3tcbiAgICB4OiBzUG9pbnQueCxcbiAgICB5OiB0UG9pbnQueVxuICB9LCB7XG4gICAgeDogdFBvaW50LngsXG4gICAgeTogc1BvaW50LnlcbiAgfV0uZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgIC8vIGltcG9zc2libGUhIVxuICAgIGlmIChpc1BvaW50T3V0c2lkZUJCb3gocCwgc3hCQm94KSAmJiBpc1BvaW50T3V0c2lkZUJCb3gocCwgdHhCQm94KSAvLyAmJlxuICAgIC8vIGlzUG9pbnRJbnNpZGVCQm94KHAsIHNNaXhCQm94KSAmJiBpc1BvaW50SW5zaWRlQkJveChwLCB0TWl4QkJveClcbiAgICApIHtcbiAgICAgIGNvbm5lY3RQb2ludHMucHVzaChwKTtcbiAgICB9XG4gIH0pO1xuICBjb25uZWN0UG9pbnRzLnVuc2hpZnQoc1BvaW50KTtcbiAgY29ubmVjdFBvaW50cy5wdXNoKHRQb2ludCk7IC8vIGZpbHRlciBvdXQgZHVscGxpY2F0ZWQgcG9pbnRzIGluIGNvbm5lY3RQb2ludHNcblxuICBjb25uZWN0UG9pbnRzID0gZmlsdGVyQ29ubmVjdFBvaW50cyhjb25uZWN0UG9pbnRzKTsgLy8gLCBzeEJCb3gsIHR4QkJveCwgb3V0ZXJCQm94XG5cbiAgdmFyIHBhdGhQb2ludHMgPSBwYXRoRmluZGVyKGNvbm5lY3RQb2ludHMsIHNQb2ludCwgdFBvaW50LCBzQkJveCwgdEJCb3gsIHN0YXJ0LCBlbmQpO1xuICBwYXRoUG9pbnRzLnVuc2hpZnQoc3RhcnQpO1xuICBwYXRoUG9pbnRzLnB1c2goZW5kKTtcbiAgcmV0dXJuIHNpbXBsaWZ5UG9seWxpbmUocGF0aFBvaW50cyk7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js ***! \************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./router */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js\");\n\n\n\n\n // 折线\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerEdge\"])('polyline', {\n options: {\n color: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.color,\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.size,\n style: {\n radius: 0,\n offset: 15,\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.stroke,\n lineAppendWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.lineAppendWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n routeCfg: {\n obstacles: [],\n maxAllowedDirectionChange: Math.PI,\n maximumLoops: 500,\n gridSize: 10 // 指定精度\n\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeStateStyles)\n },\n shapeType: 'polyline',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n if (shapeStyle.radius === 0) delete shapeStyle.radius;\n var keyShape = group.addShape('path', {\n className: 'edge-shape',\n name: 'edge-shape',\n attrs: shapeStyle\n });\n group['shapeMap']['edge-shape'] = keyShape;\n return keyShape;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n };\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n cfg = this.getPathPoints(cfg);\n this.radius = style.radius;\n this.offset = style.offset;\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = style.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = style.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style, style, {\n lineWidth: cfg.size,\n path: path\n });\n return attrs;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n if (!item.isVisible()) return;\n var strokeStyle = {\n stroke: cfg.color\n };\n var shape = group['shapeMap']['edge-shape'] || group.find(function (element) {\n return element.get('className') === 'edge-shape';\n }) || item.getKeyShape();\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr();\n var previousStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, strokeStyle, currentAttr, cfg.style);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = previousStyle.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = previousStyle.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(strokeStyle, shape.attr(), {\n lineWidth: size,\n path: path\n }, cfg.style);\n\n if (shape) {\n shape.attr(style);\n }\n },\n getPath: function getPath(points, source, target, radius, routeCfg) {\n var offset = routeCfg.offset,\n simple = routeCfg.simple; // 指定了控制点\n\n if (!offset || points.length > 2) {\n if (radius) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(points, radius);\n }\n\n var pathArray_1 = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n pathArray_1.push(['M', point.x, point.y]);\n } else {\n pathArray_1.push(['L', point.x, point.y]);\n }\n });\n return pathArray_1;\n } // 未指定控制点\n\n\n var polylinePoints = simple ? Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPolylinePoints\"])(points[points.length - 1], points[0], target, source, offset) : Object(_router__WEBPACK_IMPORTED_MODULE_4__[\"pathFinder\"])(points[0], points[points.length - 1], source, target, routeCfg);\n if (!polylinePoints || !polylinePoints.length) return 'M0 0, L0 0';\n\n if (radius) {\n var res_1 = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(polylinePoints, radius);\n return res_1;\n }\n\n var res = _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"Util\"].pointsToPolygon(polylinePoints);\n return res;\n }\n}, 'single-edge');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS5qcz80YjVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN5QjtBQUNlO0FBQ2M7QUFDakQ7O0FBRXRDLGtFQUFZO0FBQ1o7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsdUJBQXVCLHdEQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7QUFDQTs7QUFFQSxRQUFRLDBEQUFPLDhCQUE4QiwyREFBUTtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUcsR0FBRyxFQUFFLHdEQUFNO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFHLEdBQUc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQUcsR0FBRztBQUN6QjtBQUNBOztBQUVBLFFBQVEsMERBQU8sOEJBQThCLDJEQUFRO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUc7QUFDbkI7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxlQUFlLHdGQUFpQztBQUNoRDs7QUFFQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTCxrQ0FBa0Msd0VBQWlCLGlFQUFpRSwwREFBVTtBQUM5SDs7QUFFQTtBQUNBLGtCQUFrQix3RkFBaUM7QUFDbkQ7QUFDQTs7QUFFQSxjQUFjLGtEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvZWRnZXMvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWl4LCBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFZGdlLCBVdGlsLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZ2V0UGF0aFdpdGhCb3JkZXJSYWRpdXNCeVBvbHlsaW5lLCBnZXRQb2x5bGluZVBvaW50cyB9IGZyb20gJy4vcG9seWxpbmUtdXRpbCc7XG5pbXBvcnQgeyBwYXRoRmluZGVyIH0gZnJvbSAnLi9yb3V0ZXInOyAvLyDmipjnur9cblxucmVnaXN0ZXJFZGdlKCdwb2x5bGluZScsIHtcbiAgb3B0aW9uczoge1xuICAgIGNvbG9yOiBHbG9iYWwuZGVmYXVsdEVkZ2UuY29sb3IsXG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHRFZGdlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHJhZGl1czogMCxcbiAgICAgIG9mZnNldDogMTUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGxpbmVBcHBlbmRXaWR0aDogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLmxpbmVBcHBlbmRXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICByb3V0ZUNmZzoge1xuICAgICAgb2JzdGFjbGVzOiBbXSxcbiAgICAgIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEksXG4gICAgICBtYXhpbXVtTG9vcHM6IDUwMCxcbiAgICAgIGdyaWRTaXplOiAxMCAvLyDmjIflrprnsr7luqZcblxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwuZWRnZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdwb2x5bGluZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgaWYgKHNoYXBlU3R5bGUucmFkaXVzID09PSAwKSBkZWxldGUgc2hhcGVTdHlsZS5yYWRpdXM7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIG5hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdGhpcy5yYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdGhpcy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdmFyIGRlZmF1bHRSb3V0ZUNmZyA9IHRoaXMub3B0aW9ucy5yb3V0ZUNmZztcbiAgICB2YXIgcm91dGVDZmcgPSBtaXgoe30sIGRlZmF1bHRSb3V0ZUNmZywgY2ZnLnJvdXRlQ2ZnKTtcbiAgICByb3V0ZUNmZy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGgocG9pbnRzLCBzb3VyY2UsIHRhcmdldCwgcmFkaXVzLCByb3V0ZUNmZyk7XG5cbiAgICBpZiAoaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA8PSAxIHx8IGlzU3RyaW5nKHBhdGgpICYmIHBhdGguaW5kZXhPZignTCcpID09PSAtMSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4oc3RhcnRQb2ludC54KSB8fCBpc05hTihzdGFydFBvaW50LnkpIHx8IGlzTmFOKGVuZFBvaW50LngpIHx8IGlzTmFOKGVuZFBvaW50LnkpKSB7XG4gICAgICBwYXRoID0gJ00wIDAsIEwwIDAnO1xuICAgIH1cblxuICAgIHZhciBhdHRycyA9IG1peCh7fSwgR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLCBzdHlsZSwge1xuICAgICAgbGluZVdpZHRoOiBjZmcuc2l6ZSxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgICByZXR1cm4gYXR0cnM7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIHJldHVybjtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07XG4gICAgdmFyIHNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnZWRnZS1zaGFwZSc7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaXplID0gY2ZnLnNpemU7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTsgLy8gfHwgY2ZnLmNvbnRyb2xQb2ludHM7XG5cbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgY3VycmVudEF0dHIgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHByZXZpb3VzU3R5bGUgPSBtaXgoe30sIHN0cm9rZVN0eWxlLCBjdXJyZW50QXR0ciwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBwcmV2aW91c1N0eWxlLnJhZGl1cztcbiAgICB2YXIgZGVmYXVsdFJvdXRlQ2ZnID0gdGhpcy5vcHRpb25zLnJvdXRlQ2ZnO1xuICAgIHZhciByb3V0ZUNmZyA9IG1peCh7fSwgZGVmYXVsdFJvdXRlQ2ZnLCBjZmcucm91dGVDZmcpO1xuICAgIHJvdXRlQ2ZnLm9mZnNldCA9IHByZXZpb3VzU3R5bGUub2Zmc2V0O1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpO1xuXG4gICAgaWYgKGlzQXJyYXkocGF0aCkgJiYgcGF0aC5sZW5ndGggPD0gMSB8fCBpc1N0cmluZyhwYXRoKSAmJiBwYXRoLmluZGV4T2YoJ0wnKSA9PT0gLTEpIHtcbiAgICAgIHBhdGggPSAnTTAgMCwgTDAgMCc7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oc3RhcnRQb2ludC55KSB8fCBpc05hTihlbmRQb2ludC54KSB8fCBpc05hTihlbmRQb2ludC55KSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEF0dHIuZW5kQXJyb3cgJiYgcHJldmlvdXNTdHlsZS5lbmRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgIGNmZy5zdHlsZS5lbmRBcnJvdyA9IHtcbiAgICAgICAgcGF0aDogJydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRBdHRyLnN0YXJ0QXJyb3cgJiYgcHJldmlvdXNTdHlsZS5zdGFydEFycm93ID09PSBmYWxzZSkge1xuICAgICAgY2ZnLnN0eWxlLnN0YXJ0QXJyb3cgPSB7XG4gICAgICAgIHBhdGg6ICcnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG1peChzdHJva2VTdHlsZSwgc2hhcGUuYXR0cigpLCB7XG4gICAgICBsaW5lV2lkdGg6IHNpemUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSwgY2ZnLnN0eWxlKTtcblxuICAgIGlmIChzaGFwZSkge1xuICAgICAgc2hhcGUuYXR0cihzdHlsZSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpIHtcbiAgICB2YXIgb2Zmc2V0ID0gcm91dGVDZmcub2Zmc2V0LFxuICAgICAgICBzaW1wbGUgPSByb3V0ZUNmZy5zaW1wbGU7IC8vIOaMh+WumuS6huaOp+WItueCuVxuXG4gICAgaWYgKCFvZmZzZXQgfHwgcG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmIChyYWRpdXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhdGhXaXRoQm9yZGVyUmFkaXVzQnlQb2x5bGluZShwb2ludHMsIHJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXRoQXJyYXlfMSA9IFtdO1xuICAgICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ00nLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ0wnLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBhdGhBcnJheV8xO1xuICAgIH0gLy8g5pyq5oyH5a6a5o6n5Yi254K5XG5cblxuICAgIHZhciBwb2x5bGluZVBvaW50cyA9IHNpbXBsZSA/IGdldFBvbHlsaW5lUG9pbnRzKHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0sIHBvaW50c1swXSwgdGFyZ2V0LCBzb3VyY2UsIG9mZnNldCkgOiBwYXRoRmluZGVyKHBvaW50c1swXSwgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgc291cmNlLCB0YXJnZXQsIHJvdXRlQ2ZnKTtcbiAgICBpZiAoIXBvbHlsaW5lUG9pbnRzIHx8ICFwb2x5bGluZVBvaW50cy5sZW5ndGgpIHJldHVybiAnTTAgMCwgTDAgMCc7XG5cbiAgICBpZiAocmFkaXVzKSB7XG4gICAgICB2YXIgcmVzXzEgPSBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9seWxpbmVQb2ludHMsIHJhZGl1cyk7XG4gICAgICByZXR1cm4gcmVzXzE7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IFV0aWwucG9pbnRzVG9Qb2x5Z29uKHBvbHlsaW5lUG9pbnRzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js ***! \**********************************************************************************/ /*! exports provided: octolinearCfg, pathFinder */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"octolinearCfg\", function() { return octolinearCfg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js\");\n/**\n * 通过配置不同的 costFunc, distFunc, constraints 可以得到不同效果的 router\n * generalRouter: 不限制搜索时的移动方向,避开障碍即可\n * orthogonal: 线必须沿着竖直或水平方向(4个方向)\n * octolinearRouter: 线沿着竖直、水平、对角线方向(8个方向)\n */\n\n\n\n\nvar manhattanDist = function manhattanDist(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n\nvar eucliDist = function eucliDist(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n};\n\nvar straightPath = function straightPath(start, end) {\n // console.warn('fallbackRoute: straight path');\n return [start, end];\n};\n\nvar simplePolyline = function simplePolyline(start, end, startNode, endNode, cfg) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"simplifyPolyline\"])(Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getPolylinePoints\"])(start, end, startNode, endNode, cfg.offset));\n}; // getPolylinePoints\n\n\nvar defaultCfg = {\n offset: 20,\n maxAllowedDirectionChange: Math.PI / 2,\n maximumLoops: 2000,\n gridSize: 10,\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: 0,\n stepY: -1\n } // top\n ],\n\n get penalties() {\n return {\n 0: 0,\n 45: this.gridSize / 2,\n 90: this.gridSize / 2\n };\n },\n\n distFunc: manhattanDist,\n fallbackRoute: simplePolyline\n};\nvar octolinearCfg = {\n maxAllowedDirectionChange: Math.PI / 4,\n // 8 个方向: 上下左右 + 45度斜线方向\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: 1,\n stepY: 1\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: -1\n }, {\n stepX: 0,\n stepY: -1\n }, {\n stepX: 1,\n stepY: -1\n }],\n distFunc: eucliDist,\n fallbackRoute: straightPath\n};\n\nvar pos2GridIx = function pos2GridIx(pos, gridSize) {\n var gridIx = Math.round(Math.abs(pos / gridSize));\n var sign = pos < 0 ? -1 : 1;\n return gridIx < 0 ? 0 : sign * gridIx;\n};\n\nvar getObstacleMap = function getObstacleMap(items, gridSize, offset) {\n var map = {};\n items.forEach(function (item) {\n // create-edge 时,当边类型为 polyline 时 endNode 为 null\n if (!item) return;\n var bbox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(item.getBBox(), offset);\n\n for (var x = pos2GridIx(bbox.minX, gridSize); x <= pos2GridIx(bbox.maxX, gridSize); x += 1) {\n for (var y = pos2GridIx(bbox.minY, gridSize); y <= pos2GridIx(bbox.maxY, gridSize); y += 1) {\n map[x + \"|||\" + y] = true;\n }\n }\n });\n return map;\n};\n/**\n * 方向角:计算从 p1 到 p2 的射线与水平线形成的夹角度数(顺时针从右侧0°转到该射线的角度)\n * @param p1 PolyPoint\n * @param p2 PolyPoint\n */\n\n\nvar getDirectionAngle = function getDirectionAngle(p1, p2) {\n var deltaX = p2.x - p1.x;\n var deltaY = p2.y - p1.y;\n\n if (deltaX || deltaY) {\n return Math.atan2(deltaY, deltaX);\n }\n\n return 0;\n};\n/**\n * 方向角的改变,取小于180度角\n * @param angle1\n * @param angle2\n */\n\n\nvar getAngleDiff = function getAngleDiff(angle1, angle2) {\n var directionChange = Math.abs(angle1 - angle2);\n return directionChange > Math.PI ? 2 * Math.PI - directionChange : directionChange; // return directionChange > 180 ? 360 - directionChange : directionChange;\n}; // Path finder //\n\n\nvar estimateCost = function estimateCost(from, endPoints, distFunc) {\n var min = Infinity;\n\n for (var i = 0, len = endPoints.length; i < len; i++) {\n var cost = distFunc(from, endPoints[i]);\n\n if (cost < min) {\n min = cost;\n }\n }\n\n return min;\n}; // 计算考虑 offset 后的 BBox 上的连接点\n\n\nvar getBoxPoints = function getBoxPoints(point, // 被 gridSize 格式化后的位置(anchorPoint)\noriPoint, // 未被 gridSize 格式化的位置(anchorPoint)\nnode, // 原始节点,用于获取 bbox\nanotherPoint, // 另一端被 gridSize 格式化后的位置\ncfg) {\n var points = []; // create-edge 生成边的过程中,endNode 为 null\n\n if (!node) {\n return [point];\n }\n\n var directions = cfg.directions,\n offset = cfg.offset;\n var bbox = node.getBBox();\n var isInside = oriPoint.x > bbox.minX && oriPoint.x < bbox.maxX && oriPoint.y > bbox.minY && oriPoint.y < bbox.maxY;\n var expandBBox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(bbox, offset);\n\n for (var i in expandBBox) {\n expandBBox[i] = pos2GridIx(expandBBox[i], cfg.gridSize);\n }\n\n if (isInside) {\n // 如果 anchorPoint 在节点内部,允许第一段线穿过节点\n for (var _i = 0, directions_1 = directions; _i < directions_1.length; _i++) {\n var dir = directions_1[_i];\n var bounds = [[{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.minY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.minX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.maxX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.maxY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }]];\n\n for (var i = 0; i < 4; i++) {\n var boundLine = bounds[i];\n var insterctP_1 = _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getLineIntersect(point, {\n x: point.x + dir.stepX * expandBBox.width,\n y: point.y + dir.stepY * expandBBox.height\n }, boundLine[0], boundLine[1]);\n\n if (insterctP_1 && !Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"isSegmentCrossingBBox\"])(point, insterctP_1, bbox)) {\n insterctP_1.id = insterctP_1.x + \"|||\" + insterctP_1.y;\n points.push(insterctP_1);\n }\n }\n }\n\n return points;\n } // 如果 anchorPoint 在节点上,只有一个可选方向\n\n\n var insterctP = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBoxPoint\"])(expandBBox, point, anotherPoint);\n insterctP.id = insterctP.x + \"|||\" + insterctP.y;\n return [insterctP];\n};\n\nvar getDirectionChange = function getDirectionChange(current, neighbor, cameFrom, scaleStartPoint) {\n var directionAngle = getDirectionAngle(current, neighbor);\n\n if (!cameFrom[current.id]) {\n var startAngle = getDirectionAngle(scaleStartPoint, current);\n return getAngleDiff(startAngle, directionAngle);\n }\n\n var prevDirectionAngle = getDirectionAngle({\n x: cameFrom[current.id].x,\n y: cameFrom[current.id].y\n }, current);\n return getAngleDiff(prevDirectionAngle, directionAngle);\n};\n\nvar getControlPoints = function getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize) {\n var controlPoints = [endPoint];\n var currentId = current.id;\n var currentX = current.x;\n var currentY = current.y;\n var lastPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n\n if (getDirectionChange(lastPoint, scaleEndPoint, cameFrom, scaleStartPoint)) {\n // if (scaleEndPoint.x === endPoint.x && scaleEndPoint.y === endPoint.y)\n // controlPoints.unshift({\n // x: endPoint.x,\n // y: endPoint.y\n // })\n // else\n // controlPoints.unshift({\n // x: lastPoint.x * gridSize,\n // y: lastPoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: scaleEndPoint.x === endPoint.x ? endPoint.x : lastPoint.x * gridSize,\n y: scaleEndPoint.y === endPoint.y ? endPoint.y : lastPoint.y * gridSize\n });\n }\n\n while (cameFrom[currentId] && cameFrom[currentId].id !== currentId) {\n var point = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n var preId = cameFrom[currentId].id;\n var preX = cameFrom[currentId].x;\n var preY = cameFrom[currentId].y;\n var prePoint = {\n x: preX,\n y: preY,\n id: preId\n };\n var directionChange = getDirectionChange(prePoint, point, cameFrom, scaleStartPoint);\n\n if (directionChange) {\n // if (prePoint.x === point.x && prePoint.y === point.y)\n // controlPoints.unshift({\n // x: controlPoints[0].x,\n // y: controlPoints[0].y\n // })\n // else\n // controlPoints.unshift({\n // x: prePoint.x * gridSize,\n // y: prePoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: prePoint.x === point.x ? controlPoints[0].x : prePoint.x * gridSize,\n y: prePoint.y === point.y ? controlPoints[0].y : prePoint.y * gridSize\n });\n }\n\n currentId = preId;\n currentX = preX;\n currentY = preY;\n } // 和startNode对齐\n\n\n var firstPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n }; // if (firstPoint.x === scaleStartPoint.x && firstPoint.y === scaleStartPoint.y) {\n // controlPoints[0].x = startPoint.x;\n // controlPoints[0].y = startPoint.y;\n // }\n\n controlPoints[0].x = firstPoint.x === scaleStartPoint.x ? startPoint.x : controlPoints[0].x;\n controlPoints[0].y = firstPoint.y === scaleStartPoint.y ? startPoint.y : controlPoints[0].y;\n controlPoints.unshift(startPoint);\n return controlPoints;\n};\n\nvar pathFinder = function pathFinder(startPoint, endPoint, startNode, endNode, routerCfg) {\n if (isNaN(startPoint.x) || isNaN(endPoint.x)) return [];\n var cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(defaultCfg, routerCfg);\n cfg.obstacles = cfg.obstacles || [];\n var gridSize = cfg.gridSize;\n var map = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset);\n var scaleStartPoint = {\n x: pos2GridIx(startPoint.x, gridSize),\n y: pos2GridIx(startPoint.y, gridSize)\n };\n var scaleEndPoint = {\n x: pos2GridIx(endPoint.x, gridSize),\n y: pos2GridIx(endPoint.y, gridSize)\n };\n startPoint.id = scaleStartPoint.x + \"|||\" + scaleStartPoint.y;\n endPoint.id = scaleEndPoint.x + \"|||\" + scaleEndPoint.y;\n var startPoints = getBoxPoints(scaleStartPoint, startPoint, startNode, scaleEndPoint, cfg);\n var endPoints = getBoxPoints(scaleEndPoint, endPoint, endNode, scaleStartPoint, cfg);\n startPoints.forEach(function (point) {\n delete map[point.id];\n });\n endPoints.forEach(function (point) {\n delete map[point.id];\n });\n var openSet = {};\n var closedSet = {};\n var cameFrom = {}; // 从起点到当前点已产生的 cost, default: Infinity\n\n var gScore = {}; // 起点经过当前点到达终点预估的 cost, default: Infinity\n\n var fScore = {}; // initialize\n\n for (var i = 0; i < startPoints.length; i++) {\n var firstStep = startPoints[i];\n openSet[firstStep.id] = firstStep; // cameFrom[firstStep.id] = startPoint.id;\n\n gScore[firstStep.id] = 0;\n fScore[firstStep.id] = estimateCost(firstStep, endPoints, cfg.distFunc);\n }\n\n var remainLoops = cfg.maximumLoops;\n var penalties = cfg.penalties;\n var current, curCost, direction, neighbor, neighborCost, costFromStart, directionChange;\n\n while (Object.keys(openSet).length > 0 && remainLoops > 0) {\n current = undefined;\n curCost = Infinity; // 找到 openSet 中 fScore 最小的点\n\n Object.keys(openSet).forEach(function (key) {\n var id = openSet[key].id;\n\n if (fScore[id] <= curCost) {\n curCost = fScore[id];\n current = openSet[id];\n }\n });\n if (!current) break; // 如果 fScore 最小的点就是终点\n\n if (endPoints.findIndex(function (point) {\n return point.x === current.x && point.y === current.y;\n }) > -1) {\n return getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize);\n }\n\n delete openSet[current.id];\n closedSet[current.id] = true; // 获取符合条件的下一步的候选连接点\n // 沿候选方向走一步\n\n for (var i = 0; i < cfg.directions.length; i++) {\n direction = cfg.directions[i];\n neighbor = {\n x: current.x + direction.stepX,\n y: current.y + direction.stepY,\n id: Math.round(current.x) + direction.stepX + \"|||\" + (Math.round(current.y) + direction.stepY)\n };\n if (closedSet[neighbor.id]) continue;\n directionChange = getDirectionChange(current, neighbor, cameFrom, scaleStartPoint);\n if (directionChange > cfg.maxAllowedDirectionChange) continue;\n if (map[neighbor.id]) continue; // 如果交叉则跳过\n // 将候选点加入 openSet, 并计算每个候选点的 cost\n\n if (!openSet[neighbor.id]) {\n openSet[neighbor.id] = neighbor;\n }\n\n neighborCost = cfg.distFunc(current, neighbor) + (isNaN(penalties[directionChange]) ? gridSize : penalties[directionChange]);\n costFromStart = gScore[current.id] + neighborCost;\n\n if (gScore[neighbor.id] && costFromStart >= gScore[neighbor.id]) {\n continue;\n }\n\n cameFrom[neighbor.id] = current;\n gScore[neighbor.id] = costFromStart;\n fScore[neighbor.id] = costFromStart + estimateCost(neighbor, endPoints, cfg.distFunc);\n }\n\n remainLoops -= 1;\n }\n\n return cfg.fallbackRoute(startPoint, endPoint, startNode, endNode, cfg);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9yb3V0ZXIuanM/YWUxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUM7QUFDQTtBQUMrRjs7QUFFcEk7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsdUVBQWdCLENBQUMsd0VBQWlCO0FBQzNDLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzRUFBZTs7QUFFOUIsaURBQWlELHNDQUFzQztBQUN2RixtREFBbUQsc0NBQXNDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLHFGQUFxRjtBQUNyRixFQUFFOzs7QUFHRjtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNFQUFlOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtDQUErQywwQkFBMEI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVAscUJBQXFCLE9BQU87QUFDNUI7QUFDQSwwQkFBMEIsa0RBQUk7QUFDOUI7QUFDQTtBQUNBLFNBQVM7O0FBRVQsNEJBQTRCLDRFQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0gsa0JBQWtCLDJFQUFvQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0I7O0FBRXBCLGtCQUFrQjs7QUFFbEIsa0JBQWtCOztBQUVsQixpQkFBaUIsd0JBQXdCO0FBQ3pDO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUEsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL2VkZ2VzL3JvdXRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6YCa6L+H6YWN572u5LiN5ZCM55qEIGNvc3RGdW5jLCBkaXN0RnVuYywgY29uc3RyYWludHMg5Y+v5Lul5b6X5Yiw5LiN5ZCM5pWI5p6c55qEIHJvdXRlclxuICogZ2VuZXJhbFJvdXRlcjog5LiN6ZmQ5Yi25pCc57Si5pe255qE56e75Yqo5pa55ZCR77yM6YG/5byA6Zqc56KN5Y2z5Y+vXG4gKiBvcnRob2dvbmFsOiDnur/lv4Xpobvmsr/nnYDnq5bnm7TmiJbmsLTlubPmlrnlkJHvvIg05Liq5pa55ZCR77yJXG4gKiBvY3RvbGluZWFyUm91dGVyOiDnur/msr/nnYDnq5bnm7TjgIHmsLTlubPjgIHlr7nop5Lnur/mlrnlkJHvvIg45Liq5pa55ZCR77yJXG4gKi9cbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldEV4cGFuZGVkQkJveCwgZ2V0RXhwYW5kZWRCQm94UG9pbnQsIGdldFBvbHlsaW5lUG9pbnRzLCBzaW1wbGlmeVBvbHlsaW5lLCBpc1NlZ21lbnRDcm9zc2luZ0JCb3ggfSBmcm9tICcuL3BvbHlsaW5lLXV0aWwnO1xuXG52YXIgbWFuaGF0dGFuRGlzdCA9IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLmFicyhwMS54IC0gcDIueCkgKyBNYXRoLmFicyhwMS55IC0gcDIueSk7XG59O1xuXG52YXIgZXVjbGlEaXN0ID0gZnVuY3Rpb24gZXVjbGlEaXN0KHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSk7XG59O1xuXG52YXIgc3RyYWlnaHRQYXRoID0gZnVuY3Rpb24gc3RyYWlnaHRQYXRoKHN0YXJ0LCBlbmQpIHtcbiAgLy8gY29uc29sZS53YXJuKCdmYWxsYmFja1JvdXRlOiBzdHJhaWdodCBwYXRoJyk7XG4gIHJldHVybiBbc3RhcnQsIGVuZF07XG59O1xuXG52YXIgc2ltcGxlUG9seWxpbmUgPSBmdW5jdGlvbiBzaW1wbGVQb2x5bGluZShzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZykge1xuICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRQb2x5bGluZVBvaW50cyhzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZy5vZmZzZXQpKTtcbn07IC8vIGdldFBvbHlsaW5lUG9pbnRzXG5cblxudmFyIGRlZmF1bHRDZmcgPSB7XG4gIG9mZnNldDogMjAsXG4gIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEkgLyAyLFxuICBtYXhpbXVtTG9vcHM6IDIwMDAsXG4gIGdyaWRTaXplOiAxMCxcbiAgZGlyZWN0aW9uczogW3tcbiAgICBzdGVwWDogMSxcbiAgICBzdGVwWTogMFxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAwXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IDAsXG4gICAgc3RlcFk6IC0xXG4gIH0gLy8gdG9wXG4gIF0sXG5cbiAgZ2V0IHBlbmFsdGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgMDogMCxcbiAgICAgIDQ1OiB0aGlzLmdyaWRTaXplIC8gMixcbiAgICAgIDkwOiB0aGlzLmdyaWRTaXplIC8gMlxuICAgIH07XG4gIH0sXG5cbiAgZGlzdEZ1bmM6IG1hbmhhdHRhbkRpc3QsXG4gIGZhbGxiYWNrUm91dGU6IHNpbXBsZVBvbHlsaW5lXG59O1xuZXhwb3J0IHZhciBvY3RvbGluZWFyQ2ZnID0ge1xuICBtYXhBbGxvd2VkRGlyZWN0aW9uQ2hhbmdlOiBNYXRoLlBJIC8gNCxcbiAgLy8gOCDkuKrmlrnlkJE6IOS4iuS4i+W3puWPsyArIDQ15bqm5pac57q/5pa55ZCRXG4gIGRpcmVjdGlvbnM6IFt7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAxLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogLTEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAtMSxcbiAgICBzdGVwWTogLTFcbiAgfSwge1xuICAgIHN0ZXBYOiAwLFxuICAgIHN0ZXBZOiAtMVxuICB9LCB7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IC0xXG4gIH1dLFxuICBkaXN0RnVuYzogZXVjbGlEaXN0LFxuICBmYWxsYmFja1JvdXRlOiBzdHJhaWdodFBhdGhcbn07XG5cbnZhciBwb3MyR3JpZEl4ID0gZnVuY3Rpb24gcG9zMkdyaWRJeChwb3MsIGdyaWRTaXplKSB7XG4gIHZhciBncmlkSXggPSBNYXRoLnJvdW5kKE1hdGguYWJzKHBvcyAvIGdyaWRTaXplKSk7XG4gIHZhciBzaWduID0gcG9zIDwgMCA/IC0xIDogMTtcbiAgcmV0dXJuIGdyaWRJeCA8IDAgPyAwIDogc2lnbiAqIGdyaWRJeDtcbn07XG5cbnZhciBnZXRPYnN0YWNsZU1hcCA9IGZ1bmN0aW9uIGdldE9ic3RhY2xlTWFwKGl0ZW1zLCBncmlkU2l6ZSwgb2Zmc2V0KSB7XG4gIHZhciBtYXAgPSB7fTtcbiAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIC8vIGNyZWF0ZS1lZGdlIOaXtu+8jOW9k+i+ueexu+Wei+S4uiBwb2x5bGluZSDml7YgZW5kTm9kZSDkuLogbnVsbFxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIHZhciBiYm94ID0gZ2V0RXhwYW5kZWRCQm94KGl0ZW0uZ2V0QkJveCgpLCBvZmZzZXQpO1xuXG4gICAgZm9yICh2YXIgeCA9IHBvczJHcmlkSXgoYmJveC5taW5YLCBncmlkU2l6ZSk7IHggPD0gcG9zMkdyaWRJeChiYm94Lm1heFgsIGdyaWRTaXplKTsgeCArPSAxKSB7XG4gICAgICBmb3IgKHZhciB5ID0gcG9zMkdyaWRJeChiYm94Lm1pblksIGdyaWRTaXplKTsgeSA8PSBwb3MyR3JpZEl4KGJib3gubWF4WSwgZ3JpZFNpemUpOyB5ICs9IDEpIHtcbiAgICAgICAgbWFwW3ggKyBcInx8fFwiICsgeV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtYXA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LvvJrorqHnrpfku44gcDEg5YiwIHAyIOeahOWwhOe6v+S4juawtOW5s+e6v+W9ouaIkOeahOWkueinkuW6puaVsO+8iOmhuuaXtumSiOS7juWPs+S+pzDCsOi9rOWIsOivpeWwhOe6v+eahOinkuW6pu+8iVxuICogQHBhcmFtIHAxIFBvbHlQb2ludFxuICogQHBhcmFtIHAyIFBvbHlQb2ludFxuICovXG5cblxudmFyIGdldERpcmVjdGlvbkFuZ2xlID0gZnVuY3Rpb24gZ2V0RGlyZWN0aW9uQW5nbGUocDEsIHAyKSB7XG4gIHZhciBkZWx0YVggPSBwMi54IC0gcDEueDtcbiAgdmFyIGRlbHRhWSA9IHAyLnkgLSBwMS55O1xuXG4gIGlmIChkZWx0YVggfHwgZGVsdGFZKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoZGVsdGFZLCBkZWx0YVgpO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LnmoTmlLnlj5jvvIzlj5blsI/kuo4xODDluqbop5JcbiAqIEBwYXJhbSBhbmdsZTFcbiAqIEBwYXJhbSBhbmdsZTJcbiAqL1xuXG5cbnZhciBnZXRBbmdsZURpZmYgPSBmdW5jdGlvbiBnZXRBbmdsZURpZmYoYW5nbGUxLCBhbmdsZTIpIHtcbiAgdmFyIGRpcmVjdGlvbkNoYW5nZSA9IE1hdGguYWJzKGFuZ2xlMSAtIGFuZ2xlMik7XG4gIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiBNYXRoLlBJID8gMiAqIE1hdGguUEkgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7IC8vIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiAxODAgPyAzNjAgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7XG59OyAvLyBQYXRoIGZpbmRlciAvL1xuXG5cbnZhciBlc3RpbWF0ZUNvc3QgPSBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QoZnJvbSwgZW5kUG9pbnRzLCBkaXN0RnVuYykge1xuICB2YXIgbWluID0gSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVuZFBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjb3N0ID0gZGlzdEZ1bmMoZnJvbSwgZW5kUG9pbnRzW2ldKTtcblxuICAgIGlmIChjb3N0IDwgbWluKSB7XG4gICAgICBtaW4gPSBjb3N0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW47XG59OyAvLyDorqHnrpfogIPomZEgb2Zmc2V0IOWQjueahCBCQm94IOS4iueahOi/nuaOpeeCuVxuXG5cbnZhciBnZXRCb3hQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3hQb2ludHMocG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxub3JpUG9pbnQsIC8vIOacquiiqyBncmlkU2l6ZSDmoLzlvI/ljJbnmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxubm9kZSwgLy8g5Y6f5aeL6IqC54K577yM55So5LqO6I635Y+WIGJib3hcbmFub3RoZXJQb2ludCwgLy8g5Y+m5LiA56uv6KKrIGdyaWRTaXplIOagvOW8j+WMluWQjueahOS9jee9rlxuY2ZnKSB7XG4gIHZhciBwb2ludHMgPSBbXTsgLy8gY3JlYXRlLWVkZ2Ug55Sf5oiQ6L6555qE6L+H56iL5Lit77yMZW5kTm9kZSDkuLogbnVsbFxuXG4gIGlmICghbm9kZSkge1xuICAgIHJldHVybiBbcG9pbnRdO1xuICB9XG5cbiAgdmFyIGRpcmVjdGlvbnMgPSBjZmcuZGlyZWN0aW9ucyxcbiAgICAgIG9mZnNldCA9IGNmZy5vZmZzZXQ7XG4gIHZhciBiYm94ID0gbm9kZS5nZXRCQm94KCk7XG4gIHZhciBpc0luc2lkZSA9IG9yaVBvaW50LnggPiBiYm94Lm1pblggJiYgb3JpUG9pbnQueCA8IGJib3gubWF4WCAmJiBvcmlQb2ludC55ID4gYmJveC5taW5ZICYmIG9yaVBvaW50LnkgPCBiYm94Lm1heFk7XG4gIHZhciBleHBhbmRCQm94ID0gZ2V0RXhwYW5kZWRCQm94KGJib3gsIG9mZnNldCk7XG5cbiAgZm9yICh2YXIgaSBpbiBleHBhbmRCQm94KSB7XG4gICAgZXhwYW5kQkJveFtpXSA9IHBvczJHcmlkSXgoZXhwYW5kQkJveFtpXSwgY2ZnLmdyaWRTaXplKTtcbiAgfVxuXG4gIGlmIChpc0luc2lkZSkge1xuICAgIC8vIOWmguaenCBhbmNob3JQb2ludCDlnKjoioLngrnlhoXpg6jvvIzlhYHorrjnrKzkuIDmrrXnur/nqb/ov4foioLngrlcbiAgICBmb3IgKHZhciBfaSA9IDAsIGRpcmVjdGlvbnNfMSA9IGRpcmVjdGlvbnM7IF9pIDwgZGlyZWN0aW9uc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGRpciA9IGRpcmVjdGlvbnNfMVtfaV07XG4gICAgICB2YXIgYm91bmRzID0gW1t7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9XSwgW3tcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1pbllcbiAgICAgIH0sIHtcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1heFlcbiAgICAgIH1dLCBbe1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWluWVxuICAgICAgfSwge1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWF4WVxuICAgICAgfV0sIFt7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9XV07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHZhciBib3VuZExpbmUgPSBib3VuZHNbaV07XG4gICAgICAgIHZhciBpbnN0ZXJjdFBfMSA9IFV0aWwuZ2V0TGluZUludGVyc2VjdChwb2ludCwge1xuICAgICAgICAgIHg6IHBvaW50LnggKyBkaXIuc3RlcFggKiBleHBhbmRCQm94LndpZHRoLFxuICAgICAgICAgIHk6IHBvaW50LnkgKyBkaXIuc3RlcFkgKiBleHBhbmRCQm94LmhlaWdodFxuICAgICAgICB9LCBib3VuZExpbmVbMF0sIGJvdW5kTGluZVsxXSk7XG5cbiAgICAgICAgaWYgKGluc3RlcmN0UF8xICYmICFpc1NlZ21lbnRDcm9zc2luZ0JCb3gocG9pbnQsIGluc3RlcmN0UF8xLCBiYm94KSkge1xuICAgICAgICAgIGluc3RlcmN0UF8xLmlkID0gaW5zdGVyY3RQXzEueCArIFwifHx8XCIgKyBpbnN0ZXJjdFBfMS55O1xuICAgICAgICAgIHBvaW50cy5wdXNoKGluc3RlcmN0UF8xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8g5aaC5p6cIGFuY2hvclBvaW50IOWcqOiKgueCueS4iu+8jOWPquacieS4gOS4quWPr+mAieaWueWQkVxuXG5cbiAgdmFyIGluc3RlcmN0UCA9IGdldEV4cGFuZGVkQkJveFBvaW50KGV4cGFuZEJCb3gsIHBvaW50LCBhbm90aGVyUG9pbnQpO1xuICBpbnN0ZXJjdFAuaWQgPSBpbnN0ZXJjdFAueCArIFwifHx8XCIgKyBpbnN0ZXJjdFAueTtcbiAgcmV0dXJuIFtpbnN0ZXJjdFBdO1xufTtcblxudmFyIGdldERpcmVjdGlvbkNoYW5nZSA9IGZ1bmN0aW9uIGdldERpcmVjdGlvbkNoYW5nZShjdXJyZW50LCBuZWlnaGJvciwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCkge1xuICB2YXIgZGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZShjdXJyZW50LCBuZWlnaGJvcik7XG5cbiAgaWYgKCFjYW1lRnJvbVtjdXJyZW50LmlkXSkge1xuICAgIHZhciBzdGFydEFuZ2xlID0gZ2V0RGlyZWN0aW9uQW5nbGUoc2NhbGVTdGFydFBvaW50LCBjdXJyZW50KTtcbiAgICByZXR1cm4gZ2V0QW5nbGVEaWZmKHN0YXJ0QW5nbGUsIGRpcmVjdGlvbkFuZ2xlKTtcbiAgfVxuXG4gIHZhciBwcmV2RGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZSh7XG4gICAgeDogY2FtZUZyb21bY3VycmVudC5pZF0ueCxcbiAgICB5OiBjYW1lRnJvbVtjdXJyZW50LmlkXS55XG4gIH0sIGN1cnJlbnQpO1xuICByZXR1cm4gZ2V0QW5nbGVEaWZmKHByZXZEaXJlY3Rpb25BbmdsZSwgZGlyZWN0aW9uQW5nbGUpO1xufTtcblxudmFyIGdldENvbnRyb2xQb2ludHMgPSBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGN1cnJlbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzdGFydFBvaW50LCBzY2FsZUVuZFBvaW50LCBncmlkU2l6ZSkge1xuICB2YXIgY29udHJvbFBvaW50cyA9IFtlbmRQb2ludF07XG4gIHZhciBjdXJyZW50SWQgPSBjdXJyZW50LmlkO1xuICB2YXIgY3VycmVudFggPSBjdXJyZW50Lng7XG4gIHZhciBjdXJyZW50WSA9IGN1cnJlbnQueTtcbiAgdmFyIGxhc3RQb2ludCA9IHtcbiAgICB4OiBjdXJyZW50WCxcbiAgICB5OiBjdXJyZW50WSxcbiAgICBpZDogY3VycmVudElkXG4gIH07XG5cbiAgaWYgKGdldERpcmVjdGlvbkNoYW5nZShsYXN0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQpKSB7XG4gICAgLy8gaWYgKHNjYWxlRW5kUG9pbnQueCA9PT0gZW5kUG9pbnQueCAmJiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkpXG4gICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgIC8vICAgICB4OiBlbmRQb2ludC54LFxuICAgIC8vICAgICB5OiBlbmRQb2ludC55XG4gICAgLy8gICB9KVxuICAgIC8vIGVsc2VcbiAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgLy8gICAgIHg6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgLy8gICAgIHk6IGxhc3RQb2ludC55ICogZ3JpZFNpemUsXG4gICAgLy8gICB9KTtcbiAgICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgeDogc2NhbGVFbmRQb2ludC54ID09PSBlbmRQb2ludC54ID8gZW5kUG9pbnQueCA6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgICB5OiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkgPyBlbmRQb2ludC55IDogbGFzdFBvaW50LnkgKiBncmlkU2l6ZVxuICAgIH0pO1xuICB9XG5cbiAgd2hpbGUgKGNhbWVGcm9tW2N1cnJlbnRJZF0gJiYgY2FtZUZyb21bY3VycmVudElkXS5pZCAhPT0gY3VycmVudElkKSB7XG4gICAgdmFyIHBvaW50ID0ge1xuICAgICAgeDogY3VycmVudFgsXG4gICAgICB5OiBjdXJyZW50WSxcbiAgICAgIGlkOiBjdXJyZW50SWRcbiAgICB9O1xuICAgIHZhciBwcmVJZCA9IGNhbWVGcm9tW2N1cnJlbnRJZF0uaWQ7XG4gICAgdmFyIHByZVggPSBjYW1lRnJvbVtjdXJyZW50SWRdLng7XG4gICAgdmFyIHByZVkgPSBjYW1lRnJvbVtjdXJyZW50SWRdLnk7XG4gICAgdmFyIHByZVBvaW50ID0ge1xuICAgICAgeDogcHJlWCxcbiAgICAgIHk6IHByZVksXG4gICAgICBpZDogcHJlSWRcbiAgICB9O1xuICAgIHZhciBkaXJlY3Rpb25DaGFuZ2UgPSBnZXREaXJlY3Rpb25DaGFuZ2UocHJlUG9pbnQsIHBvaW50LCBjYW1lRnJvbSwgc2NhbGVTdGFydFBvaW50KTtcblxuICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UpIHtcbiAgICAgIC8vIGlmIChwcmVQb2ludC54ID09PSBwb2ludC54ICYmIHByZVBvaW50LnkgPT09IHBvaW50LnkpXG4gICAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgICAvLyAgICAgeDogY29udHJvbFBvaW50c1swXS54LFxuICAgICAgLy8gICAgIHk6IGNvbnRyb2xQb2ludHNbMF0ueVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gZWxzZVxuICAgICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgLy8gICAgIHg6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgIC8vICAgICB5OiBwcmVQb2ludC55ICogZ3JpZFNpemUsXG4gICAgICAvLyAgIH0pO1xuICAgICAgY29udHJvbFBvaW50cy51bnNoaWZ0KHtcbiAgICAgICAgeDogcHJlUG9pbnQueCA9PT0gcG9pbnQueCA/IGNvbnRyb2xQb2ludHNbMF0ueCA6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgICAgeTogcHJlUG9pbnQueSA9PT0gcG9pbnQueSA/IGNvbnRyb2xQb2ludHNbMF0ueSA6IHByZVBvaW50LnkgKiBncmlkU2l6ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VycmVudElkID0gcHJlSWQ7XG4gICAgY3VycmVudFggPSBwcmVYO1xuICAgIGN1cnJlbnRZID0gcHJlWTtcbiAgfSAvLyDlkoxzdGFydE5vZGXlr7npvZBcblxuXG4gIHZhciBmaXJzdFBvaW50ID0ge1xuICAgIHg6IGN1cnJlbnRYLFxuICAgIHk6IGN1cnJlbnRZLFxuICAgIGlkOiBjdXJyZW50SWRcbiAgfTsgLy8gaWYgKGZpcnN0UG9pbnQueCA9PT0gc2NhbGVTdGFydFBvaW50LnggJiYgZmlyc3RQb2ludC55ID09PSBzY2FsZVN0YXJ0UG9pbnQueSkge1xuICAvLyAgIGNvbnRyb2xQb2ludHNbMF0ueCA9IHN0YXJ0UG9pbnQueDtcbiAgLy8gICBjb250cm9sUG9pbnRzWzBdLnkgPSBzdGFydFBvaW50Lnk7XG4gIC8vIH1cblxuICBjb250cm9sUG9pbnRzWzBdLnggPSBmaXJzdFBvaW50LnggPT09IHNjYWxlU3RhcnRQb2ludC54ID8gc3RhcnRQb2ludC54IDogY29udHJvbFBvaW50c1swXS54O1xuICBjb250cm9sUG9pbnRzWzBdLnkgPSBmaXJzdFBvaW50LnkgPT09IHNjYWxlU3RhcnRQb2ludC55ID8gc3RhcnRQb2ludC55IDogY29udHJvbFBvaW50c1swXS55O1xuICBjb250cm9sUG9pbnRzLnVuc2hpZnQoc3RhcnRQb2ludCk7XG4gIHJldHVybiBjb250cm9sUG9pbnRzO1xufTtcblxuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihzdGFydFBvaW50LCBlbmRQb2ludCwgc3RhcnROb2RlLCBlbmROb2RlLCByb3V0ZXJDZmcpIHtcbiAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oZW5kUG9pbnQueCkpIHJldHVybiBbXTtcbiAgdmFyIGNmZyA9IGRlZXBNaXgoZGVmYXVsdENmZywgcm91dGVyQ2ZnKTtcbiAgY2ZnLm9ic3RhY2xlcyA9IGNmZy5vYnN0YWNsZXMgfHwgW107XG4gIHZhciBncmlkU2l6ZSA9IGNmZy5ncmlkU2l6ZTtcbiAgdmFyIG1hcCA9IGdldE9ic3RhY2xlTWFwKGNmZy5vYnN0YWNsZXMuY29uY2F0KFtzdGFydE5vZGUsIGVuZE5vZGVdKSwgZ3JpZFNpemUsIGNmZy5vZmZzZXQpO1xuICB2YXIgc2NhbGVTdGFydFBvaW50ID0ge1xuICAgIHg6IHBvczJHcmlkSXgoc3RhcnRQb2ludC54LCBncmlkU2l6ZSksXG4gICAgeTogcG9zMkdyaWRJeChzdGFydFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICB2YXIgc2NhbGVFbmRQb2ludCA9IHtcbiAgICB4OiBwb3MyR3JpZEl4KGVuZFBvaW50LngsIGdyaWRTaXplKSxcbiAgICB5OiBwb3MyR3JpZEl4KGVuZFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICBzdGFydFBvaW50LmlkID0gc2NhbGVTdGFydFBvaW50LnggKyBcInx8fFwiICsgc2NhbGVTdGFydFBvaW50Lnk7XG4gIGVuZFBvaW50LmlkID0gc2NhbGVFbmRQb2ludC54ICsgXCJ8fHxcIiArIHNjYWxlRW5kUG9pbnQueTtcbiAgdmFyIHN0YXJ0UG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlU3RhcnRQb2ludCwgc3RhcnRQb2ludCwgc3RhcnROb2RlLCBzY2FsZUVuZFBvaW50LCBjZmcpO1xuICB2YXIgZW5kUG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlRW5kUG9pbnQsIGVuZFBvaW50LCBlbmROb2RlLCBzY2FsZVN0YXJ0UG9pbnQsIGNmZyk7XG4gIHN0YXJ0UG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgZGVsZXRlIG1hcFtwb2ludC5pZF07XG4gIH0pO1xuICBlbmRQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBkZWxldGUgbWFwW3BvaW50LmlkXTtcbiAgfSk7XG4gIHZhciBvcGVuU2V0ID0ge307XG4gIHZhciBjbG9zZWRTZXQgPSB7fTtcbiAgdmFyIGNhbWVGcm9tID0ge307IC8vIOS7jui1t+eCueWIsOW9k+WJjeeCueW3suS6p+eUn+eahCBjb3N0LCBkZWZhdWx0OiBJbmZpbml0eVxuXG4gIHZhciBnU2NvcmUgPSB7fTsgLy8g6LW354K557uP6L+H5b2T5YmN54K55Yiw6L6+57uI54K56aKE5Lyw55qEIGNvc3QsIGRlZmF1bHQ6IEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBpbml0aWFsaXplXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydFBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBmaXJzdFN0ZXAgPSBzdGFydFBvaW50c1tpXTtcbiAgICBvcGVuU2V0W2ZpcnN0U3RlcC5pZF0gPSBmaXJzdFN0ZXA7IC8vIGNhbWVGcm9tW2ZpcnN0U3RlcC5pZF0gPSBzdGFydFBvaW50LmlkO1xuXG4gICAgZ1Njb3JlW2ZpcnN0U3RlcC5pZF0gPSAwO1xuICAgIGZTY29yZVtmaXJzdFN0ZXAuaWRdID0gZXN0aW1hdGVDb3N0KGZpcnN0U3RlcCwgZW5kUG9pbnRzLCBjZmcuZGlzdEZ1bmMpO1xuICB9XG5cbiAgdmFyIHJlbWFpbkxvb3BzID0gY2ZnLm1heGltdW1Mb29wcztcbiAgdmFyIHBlbmFsdGllcyA9IGNmZy5wZW5hbHRpZXM7XG4gIHZhciBjdXJyZW50LCBjdXJDb3N0LCBkaXJlY3Rpb24sIG5laWdoYm9yLCBuZWlnaGJvckNvc3QsIGNvc3RGcm9tU3RhcnQsIGRpcmVjdGlvbkNoYW5nZTtcblxuICB3aGlsZSAoT2JqZWN0LmtleXMob3BlblNldCkubGVuZ3RoID4gMCAmJiByZW1haW5Mb29wcyA+IDApIHtcbiAgICBjdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIGN1ckNvc3QgPSBJbmZpbml0eTsgLy8g5om+5YiwIG9wZW5TZXQg5LitIGZTY29yZSDmnIDlsI/nmoTngrlcblxuICAgIE9iamVjdC5rZXlzKG9wZW5TZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGlkID0gb3BlblNldFtrZXldLmlkO1xuXG4gICAgICBpZiAoZlNjb3JlW2lkXSA8PSBjdXJDb3N0KSB7XG4gICAgICAgIGN1ckNvc3QgPSBmU2NvcmVbaWRdO1xuICAgICAgICBjdXJyZW50ID0gb3BlblNldFtpZF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjdXJyZW50KSBicmVhazsgLy8g5aaC5p6cIGZTY29yZSDmnIDlsI/nmoTngrnlsLHmmK/nu4jngrlcblxuICAgIGlmIChlbmRQb2ludHMuZmluZEluZGV4KGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHBvaW50LnggPT09IGN1cnJlbnQueCAmJiBwb2ludC55ID09PSBjdXJyZW50Lnk7XG4gICAgfSkgPiAtMSkge1xuICAgICAgcmV0dXJuIGdldENvbnRyb2xQb2ludHMoY3VycmVudCwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCwgZW5kUG9pbnQsIHN0YXJ0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGdyaWRTaXplKTtcbiAgICB9XG5cbiAgICBkZWxldGUgb3BlblNldFtjdXJyZW50LmlkXTtcbiAgICBjbG9zZWRTZXRbY3VycmVudC5pZF0gPSB0cnVlOyAvLyDojrflj5bnrKblkIjmnaHku7bnmoTkuIvkuIDmraXnmoTlgJnpgInov57mjqXngrlcbiAgICAvLyDmsr/lgJnpgInmlrnlkJHotbDkuIDmraVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2ZnLmRpcmVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRpcmVjdGlvbiA9IGNmZy5kaXJlY3Rpb25zW2ldO1xuICAgICAgbmVpZ2hib3IgPSB7XG4gICAgICAgIHg6IGN1cnJlbnQueCArIGRpcmVjdGlvbi5zdGVwWCxcbiAgICAgICAgeTogY3VycmVudC55ICsgZGlyZWN0aW9uLnN0ZXBZLFxuICAgICAgICBpZDogTWF0aC5yb3VuZChjdXJyZW50LngpICsgZGlyZWN0aW9uLnN0ZXBYICsgXCJ8fHxcIiArIChNYXRoLnJvdW5kKGN1cnJlbnQueSkgKyBkaXJlY3Rpb24uc3RlcFkpXG4gICAgICB9O1xuICAgICAgaWYgKGNsb3NlZFNldFtuZWlnaGJvci5pZF0pIGNvbnRpbnVlO1xuICAgICAgZGlyZWN0aW9uQ2hhbmdlID0gZ2V0RGlyZWN0aW9uQ2hhbmdlKGN1cnJlbnQsIG5laWdoYm9yLCBjYW1lRnJvbSwgc2NhbGVTdGFydFBvaW50KTtcbiAgICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UgPiBjZmcubWF4QWxsb3dlZERpcmVjdGlvbkNoYW5nZSkgY29udGludWU7XG4gICAgICBpZiAobWFwW25laWdoYm9yLmlkXSkgY29udGludWU7IC8vIOWmguaenOS6pOWPieWImei3s+i/h1xuICAgICAgLy8g5bCG5YCZ6YCJ54K55Yqg5YWlIG9wZW5TZXQsIOW5tuiuoeeul+avj+S4quWAmemAieeCueeahCBjb3N0XG5cbiAgICAgIGlmICghb3BlblNldFtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgb3BlblNldFtuZWlnaGJvci5pZF0gPSBuZWlnaGJvcjtcbiAgICAgIH1cblxuICAgICAgbmVpZ2hib3JDb3N0ID0gY2ZnLmRpc3RGdW5jKGN1cnJlbnQsIG5laWdoYm9yKSArIChpc05hTihwZW5hbHRpZXNbZGlyZWN0aW9uQ2hhbmdlXSkgPyBncmlkU2l6ZSA6IHBlbmFsdGllc1tkaXJlY3Rpb25DaGFuZ2VdKTtcbiAgICAgIGNvc3RGcm9tU3RhcnQgPSBnU2NvcmVbY3VycmVudC5pZF0gKyBuZWlnaGJvckNvc3Q7XG5cbiAgICAgIGlmIChnU2NvcmVbbmVpZ2hib3IuaWRdICYmIGNvc3RGcm9tU3RhcnQgPj0gZ1Njb3JlW25laWdoYm9yLmlkXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY2FtZUZyb21bbmVpZ2hib3IuaWRdID0gY3VycmVudDtcbiAgICAgIGdTY29yZVtuZWlnaGJvci5pZF0gPSBjb3N0RnJvbVN0YXJ0O1xuICAgICAgZlNjb3JlW25laWdoYm9yLmlkXSA9IGNvc3RGcm9tU3RhcnQgKyBlc3RpbWF0ZUNvc3QobmVpZ2hib3IsIGVuZFBvaW50cywgY2ZnLmRpc3RGdW5jKTtcbiAgICB9XG5cbiAgICByZW1haW5Mb29wcyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIGNmZy5mYWxsYmFja1JvdXRlKHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZyk7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js ***! \***************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nodes */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js\");\n/* harmony import */ var _edges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edges */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9pbmRleC5qcz81YzZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL25vZGVzJztcbmltcG9ydCAnLi9lZGdlcyc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js ***! \**********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 带有图标的圆,可用于拓扑图中\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('circle', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var name = this.type + \"-keyShape\";\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: name,\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n var iconName = this.type + \"-icon\";\n\n if (text) {\n group['shapeMap'][iconName] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n } else {\n group['shapeMap'][iconName] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var linkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n if (!linkPoints) return;\n\n var _a = linkPoints || {},\n top = _a.top,\n left = _a.left,\n right = _a.right,\n bottom = _a.bottom,\n markSize = _a.size,\n markR = _a.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(_a, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n if (left) {\n // left circle\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -r,\n r: markSize / 2 || markR || 5\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: r,\n r: markSize / 2 || markR || 5\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n // const strokeStyle = {\n // stroke: cfg.color,\n // r: size[0] / 2,\n // };\n // // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n // const keyShape = item.get('keyShape');\n // TODO: performance\n // const style = deepMix({}, keyShape.attr(), strokeStyle, cfg.style);\n // const style = deepMix({}, keyShape.attr(), cfg.style);\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n\n if (cfg.style.stroke === undefined && cfg.color) {\n style.stroke = cfg.color;\n }\n\n if (cfg.style.r === undefined && !isNaN(size[0])) {\n style.r = size[0] / 2;\n }\n\n this.updateShape(cfg, item, style, true, updateType); // (this as any).updateShape(cfg, item, style, true, updateType);\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9jaXJjbGUuanM/Y2IwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUMwQjtBQUM5Qjs7QUFFckMsa0VBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVSx3REFBTTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQSxlQUFlLDBEQUFPLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjs7QUFFL0IsZ0JBQWdCLHNEQUFRLEdBQUc7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlEOztBQUV6RDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJzsgLy8g5bim5pyJ5Zu+5qCH55qE5ZyG77yM5Y+v55So5LqO5ouT5omR5Zu+5LitXG5cbnJlZ2lzdGVyTm9kZSgnY2lyY2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IG5hbWUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV0gPSBrZXlTaGFwZTtcbiAgICB2YXIgd2lkdGggPSBpY29uLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBpY29uLmhlaWdodCxcbiAgICAgICAgc2hvdyA9IGljb24uc2hvdyxcbiAgICAgICAgdGV4dCA9IGljb24udGV4dDtcblxuICAgIGlmIChzaG93KSB7XG4gICAgICB2YXIgaWNvbk5hbWUgPSB0aGlzLnR5cGUgKyBcIi1pY29uXCI7XG5cbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IGljb25OYW1lLFxuICAgICAgICAgIG5hbWU6IGljb25OYW1lLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBsaW5rUG9pbnRzID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cztcbiAgICBpZiAoIWxpbmtQb2ludHMpIHJldHVybjtcblxuICAgIHZhciBfYSA9IGxpbmtQb2ludHMgfHwge30sXG4gICAgICAgIHRvcCA9IF9hLnRvcCxcbiAgICAgICAgbGVmdCA9IF9hLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2EucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IF9hLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBfYS5zaXplLFxuICAgICAgICBtYXJrUiA9IF9hLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChfYSwgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgciA9IHNpemVbMF0gLyAyO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8xID0gJ2xpbmstcG9pbnQtbGVmdCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzFdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzEsXG4gICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIHZhciBuYW1lXzIgPSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzJdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogcixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMixcbiAgICAgICAgbmFtZTogbmFtZV8yLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8zID0gJ2xpbmstcG9pbnQtdG9wJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfM10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1yLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMyxcbiAgICAgICAgbmFtZTogbmFtZV8zLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICB2YXIgbmFtZV80ID0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNF0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV80LFxuICAgICAgICBuYW1lOiBuYW1lXzQsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpOyAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG4gICAgLy8gY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gICAgLy8gICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAvLyAgIHI6IHNpemVbMF0gLyAyLFxuICAgIC8vIH07XG4gICAgLy8gLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcbiAgICAvLyBjb25zdCBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIC8vIFRPRE86IHBlcmZvcm1hbmNlXG4gICAgLy8gY29uc3Qgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIC8vIGNvbnN0IHN0eWxlID0gZGVlcE1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBjZmcuc3R5bGUpO1xuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe30sIGNmZy5zdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlLnN0cm9rZSA9PT0gdW5kZWZpbmVkICYmIGNmZy5jb2xvcikge1xuICAgICAgc3R5bGUuc3Ryb2tlID0gY2ZnLmNvbG9yO1xuICAgIH1cblxuICAgIGlmIChjZmcuc3R5bGUuciA9PT0gdW5kZWZpbmVkICYmICFpc05hTihzaXplWzBdKSkge1xuICAgICAgc3R5bGUuciA9IHNpemVbMF0gLyAyO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7IC8vICh0aGlzIGFzIGFueSkudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js ***! \***********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 菱形shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('diamond', {\n // 自定义节点时的配置\n options: {\n size: [80, 80],\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'diamond',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var path = [['M', 0, -height / 2], ['L', width / 2, 0], ['L', 0, height / 2], ['L', -width / 2, 0], ['Z'] // 封闭\n ];\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kaWFtb25kLmpzP2U0NTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZGlhbW9uZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoj7HlvaJzaGFwZVxuXG5yZWdpc3Rlck5vZGUoJ2RpYW1vbmQnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzgwLCA4MF0sXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZGlhbW9uZCcsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiXSA9IGtleVNoYXBlO1xuICAgIHZhciB3ID0gaWNvbi53aWR0aCxcbiAgICAgICAgaCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICAgIHk6IC1oIC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAwLCAtaGVpZ2h0IC8gMl0sIFsnTCcsIHdpZHRoIC8gMiwgMF0sIFsnTCcsIDAsIGhlaWdodCAvIDJdLCBbJ0wnLCAtd2lkdGggLyAyLCAwXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgXTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js ***! \*********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\nvar defaultSubjectColors = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].defaultSubjectColors; // 饼图节点\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('donut', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: this.type + \"-keyShape\",\n draggable: true,\n name: this.type + \"-keyShape\"\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n var donutR = keyShape.attr('r');\n var innerR = 0.6 * donutR; // 甜甜圈的内环半径\n\n var arcR = (donutR + innerR) / 2; // 内环半径与外环半径的平均值\n\n var _b = cfg,\n _c = _b.donutAttrs,\n donutAttrs = _c === void 0 ? {} : _c,\n _d = _b.donutColorMap,\n donutColorMap = _d === void 0 ? {} : _d;\n var attrNum = Object.keys(donutAttrs).length;\n\n if (donutAttrs && attrNum > 1) {\n var attrs_1 = [];\n var totalValue_1 = 0;\n Object.keys(donutAttrs).forEach(function (name) {\n var value = donutAttrs[name] || 0;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(value)) return;\n attrs_1.push({\n key: name,\n value: value,\n color: donutColorMap[name]\n });\n totalValue_1 += value;\n });\n\n if (totalValue_1) {\n var lineWidth_1 = donutR - innerR;\n\n if (attrNum === 1) {\n group['shapeMap']['fan-shape-0'] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attrs_1[0].color || defaultSubjectColors[0],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-0\"\n });\n return;\n }\n\n var arcBegin_1 = [arcR, 0];\n var beginAngle_1 = 0;\n attrs_1.forEach(function (attr, i) {\n var percent = attr.value / totalValue_1;\n if (percent < 0.001) return;\n if (percent > 0.999) percent = 1;\n\n if (percent === 1) {\n group['shapeMap'][\"fan-shape-\" + i] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-\" + i\n });\n return;\n }\n\n attr.percent = percent;\n attr.angle = percent * Math.PI * 2;\n attr.beginAgnle = beginAngle_1;\n beginAngle_1 += attr.angle;\n attr.endAngle = beginAngle_1;\n attr.arcBegin = arcBegin_1;\n attr.arcEnd = [arcR * Math.cos(attr.endAngle), -arcR * Math.sin(attr.endAngle)];\n var isBig = attr.angle > Math.PI ? 1 : 0;\n var path = [['M', attr.arcBegin[0], attr.arcBegin[1]], ['A', arcR, arcR, 0, isBig, 0, attr.arcEnd[0], attr.arcEnd[1]], ['L', attr.arcEnd[0], attr.arcEnd[1]]];\n group['shapeMap'][\"fan-shape-\" + i] = group.addShape('path', {\n attrs: {\n path: path,\n lineWidth: lineWidth_1,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length]\n },\n name: \"fan-shape-\" + i\n });\n arcBegin_1 = attr.arcEnd;\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n update: undefined\n}, 'circle');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kb251dC5qcz84MDJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ3dDO0FBQzFCO0FBQy9DLDJCQUEyQixrREFBSSxzQkFBc0I7O0FBRXJELGtFQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsa0JBQWtCLHdEQUFNO0FBQ3hCLG9CQUFvQix3REFBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLFlBQVksd0RBQU07QUFDbEIsY0FBYyx3REFBTTtBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0EsZUFBZSwwREFBTyxHQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsOEJBQThCOztBQUU5QixxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSwwQ0FBMEM7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZG9udXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCwgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZGVlcE1peCwgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBkZWZhdWx0U3ViamVjdENvbG9ycyA9IFV0aWwuZGVmYXVsdFN1YmplY3RDb2xvcnM7IC8vIOmlvOWbvuiKgueCuVxuXG5yZWdpc3Rlck5vZGUoJ2RvbnV0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCJcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRvbnV0UiA9IGtleVNoYXBlLmF0dHIoJ3InKTtcbiAgICB2YXIgaW5uZXJSID0gMC42ICogZG9udXRSOyAvLyDnlJznlJzlnIjnmoTlhoXnjq/ljYrlvoRcblxuICAgIHZhciBhcmNSID0gKGRvbnV0UiArIGlubmVyUikgLyAyOyAvLyDlhoXnjq/ljYrlvoTkuI7lpJbnjq/ljYrlvoTnmoTlubPlnYflgLxcblxuICAgIHZhciBfYiA9IGNmZyxcbiAgICAgICAgX2MgPSBfYi5kb251dEF0dHJzLFxuICAgICAgICBkb251dEF0dHJzID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2IuZG9udXRDb2xvck1hcCxcbiAgICAgICAgZG9udXRDb2xvck1hcCA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuICAgIHZhciBhdHRyTnVtID0gT2JqZWN0LmtleXMoZG9udXRBdHRycykubGVuZ3RoO1xuXG4gICAgaWYgKGRvbnV0QXR0cnMgJiYgYXR0ck51bSA+IDEpIHtcbiAgICAgIHZhciBhdHRyc18xID0gW107XG4gICAgICB2YXIgdG90YWxWYWx1ZV8xID0gMDtcbiAgICAgIE9iamVjdC5rZXlzKGRvbnV0QXR0cnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZG9udXRBdHRyc1tuYW1lXSB8fCAwO1xuICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuO1xuICAgICAgICBhdHRyc18xLnB1c2goe1xuICAgICAgICAgIGtleTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgY29sb3I6IGRvbnV0Q29sb3JNYXBbbmFtZV1cbiAgICAgICAgfSk7XG4gICAgICAgIHRvdGFsVmFsdWVfMSArPSB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG90YWxWYWx1ZV8xKSB7XG4gICAgICAgIHZhciBsaW5lV2lkdGhfMSA9IGRvbnV0UiAtIGlubmVyUjtcblxuICAgICAgICBpZiAoYXR0ck51bSA9PT0gMSkge1xuICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydmYW4tc2hhcGUtMCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHI6IGFyY1IsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgIHN0cm9rZTogYXR0cnNfMVswXS5jb2xvciB8fCBkZWZhdWx0U3ViamVjdENvbG9yc1swXSxcbiAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IFwiZmFuLXNoYXBlLTBcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhcmNCZWdpbl8xID0gW2FyY1IsIDBdO1xuICAgICAgICB2YXIgYmVnaW5BbmdsZV8xID0gMDtcbiAgICAgICAgYXR0cnNfMS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyLCBpKSB7XG4gICAgICAgICAgdmFyIHBlcmNlbnQgPSBhdHRyLnZhbHVlIC8gdG90YWxWYWx1ZV8xO1xuICAgICAgICAgIGlmIChwZXJjZW50IDwgMC4wMDEpIHJldHVybjtcbiAgICAgICAgICBpZiAocGVyY2VudCA+IDAuOTk5KSBwZXJjZW50ID0gMTtcblxuICAgICAgICAgIGlmIChwZXJjZW50ID09PSAxKSB7XG4gICAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIiArIGldID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByOiBhcmNSLFxuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF0sXG4gICAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIiArIGlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF0dHIucGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgICAgICAgYXR0ci5hbmdsZSA9IHBlcmNlbnQgKiBNYXRoLlBJICogMjtcbiAgICAgICAgICBhdHRyLmJlZ2luQWdubGUgPSBiZWdpbkFuZ2xlXzE7XG4gICAgICAgICAgYmVnaW5BbmdsZV8xICs9IGF0dHIuYW5nbGU7XG4gICAgICAgICAgYXR0ci5lbmRBbmdsZSA9IGJlZ2luQW5nbGVfMTtcbiAgICAgICAgICBhdHRyLmFyY0JlZ2luID0gYXJjQmVnaW5fMTtcbiAgICAgICAgICBhdHRyLmFyY0VuZCA9IFthcmNSICogTWF0aC5jb3MoYXR0ci5lbmRBbmdsZSksIC1hcmNSICogTWF0aC5zaW4oYXR0ci5lbmRBbmdsZSldO1xuICAgICAgICAgIHZhciBpc0JpZyA9IGF0dHIuYW5nbGUgPiBNYXRoLlBJID8gMSA6IDA7XG4gICAgICAgICAgdmFyIHBhdGggPSBbWydNJywgYXR0ci5hcmNCZWdpblswXSwgYXR0ci5hcmNCZWdpblsxXV0sIFsnQScsIGFyY1IsIGFyY1IsIDAsIGlzQmlnLCAwLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dLCBbJ0wnLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dXTtcbiAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIiArIGldID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICBsaW5lV2lkdGg6IGxpbmVXaWR0aF8xLFxuICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIiArIGlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmNCZWdpbl8xID0gYXR0ci5hcmNFbmQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuICB1cGRhdGU6IHVuZGVmaW5lZFxufSwgJ2NpcmNsZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js ***! \***********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n/**\n * 基本的椭圆,可以添加文本,默认文本居中\n */\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('ellipse', {\n // 自定义节点时的配置\n options: {\n size: [80, 40],\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'ellipse',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('ellipse', {\n attrs: style,\n className: 'ellipse-keyShape',\n name: 'ellipse-keyShape',\n draggable: true\n });\n group['shapeMap']['ellipse-keyShape'] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n rx: rx,\n ry: ry\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var strokeStyle = {\n stroke: cfg.color,\n rx: size[0] / 2,\n ry: size[1] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9lbGxpcHNlLmpzPzIzOGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7QUFDakM7QUFDQTtBQUNBOztBQUVBLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyByZWdpc3Rlck5vZGUsIEJhc2VHbG9iYWwgYXMgR2xvYmFsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgeyBtaXggfSBmcm9tICdAYW50di91dGlsJztcbi8qKlxuICog5Z+65pys55qE5qSt5ZyG77yM5Y+v5Lul5re75Yqg5paH5pys77yM6buY6K6k5paH5pys5bGF5LitXG4gKi9cblxucmVnaXN0ZXJOb2RlKCdlbGxpcHNlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFs4MCwgNDBdLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZWxsaXBzZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnZWxsaXBzZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgbmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VsbGlwc2Uta2V5U2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgcnggPSBzaXplWzBdIC8gMjtcbiAgICB2YXIgcnkgPSBzaXplWzFdIC8gMjtcblxuICAgIGlmIChsZWZ0KSB7XG4gICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtcnksXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHJ5LFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHJ4ID0gc2l6ZVswXSAvIDI7XG4gICAgdmFyIHJ5ID0gc2l6ZVsxXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByeDogcngsXG4gICAgICByeTogcnlcbiAgICB9LCBzdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpOyAvLyDov5nph4zkuI3kvKAgY2ZnIOWPguaVsOaYr+WboOS4uiBjZmcuc3R5bGUg6ZyA6KaB5pyA5ZCO6KaG55uW5qC35byPXG5cbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5nZXRPcHRpb25zKHt9KS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcng6IHNpemVbMF0gLyAyLFxuICAgICAgcnk6IHNpemVbMV0gLyAyXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIHRydWUsIHVwZGF0ZVR5cGUpO1xuICAgIHRoaXMudXBkYXRlTGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js ***! \*********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js\");\n/* harmony import */ var _diamond__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diamond */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js\");\n/* harmony import */ var _triangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triangle */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js\");\n/* harmony import */ var _modelRect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modelRect */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js\");\n/* harmony import */ var _star__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./star */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js\");\n/* harmony import */ var _donut__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./donut */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js\");\n\n\n\n\n\n\n\n // import './image';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9pbmRleC5qcz81YmY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQjtBQUNGO0FBQ0c7QUFDQTtBQUNDO0FBQ0M7QUFDTDtBQUNDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vY2lyY2xlJztcbmltcG9ydCAnLi9yZWN0JztcbmltcG9ydCAnLi9lbGxpcHNlJztcbmltcG9ydCAnLi9kaWFtb25kJztcbmltcG9ydCAnLi90cmlhbmdsZSc7XG5pbXBvcnQgJy4vbW9kZWxSZWN0JztcbmltcG9ydCAnLi9zdGFyJztcbmltcG9ydCAnLi9kb251dCc7IC8vIGltcG9ydCAnLi9pbWFnZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js ***! \*************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('modelRect', {\n // 自定义节点时的配置\n options: {\n size: [185, 70],\n style: {\n radius: 5,\n stroke: '#69c0ff',\n fill: '#ffffff',\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth,\n fillOpacity: 1\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: '#595959',\n fontSize: 14,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n offset: 30 // 距离左侧的 offset,没有设置 y 轴上移动的配置\n\n },\n descriptionCfg: {\n style: {\n fontSize: 12,\n fill: '#bfbfbf',\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n paddingTop: 0\n },\n preRect: {\n show: true,\n width: 4,\n fill: '#40a9ff',\n radius: 2\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: 10,\n lineWidth: 1,\n fill: '#72CC4A',\n stroke: '#72CC4A'\n },\n // 节点中icon配置\n logoIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/4f81893c-1806-4de4-aff3-9a6b266bc8a2.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: 0\n },\n // 节点中表示状态的icon配置\n stateIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/300a2523-67e0-4cbf-9d4a-67c077b40395.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: -5\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]]\n },\n shapeType: 'modelRect',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).preRect,\n preRect = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n\n var preRectShow = preRect.show,\n preRectStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(preRect, [\"show\"]);\n\n if (preRectShow) {\n group['shapeMap']['pre-rect'] = group.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n height: height\n }, preRectStyle),\n className: 'pre-rect',\n name: 'pre-rect',\n draggable: true\n });\n }\n\n this.drawLogoIcon(cfg, group);\n this.drawStateIcon(cfg, group);\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制模型矩形左边的logo图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawLogoIcon: function drawLogoIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).logoIcon,\n logoIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (logoIcon.show) {\n var w = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n offset = logoIcon.offset,\n text = logoIcon.text,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-logo-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, logoIconStyle),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-logo-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制模型矩形右边的状态图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawStateIcon: function drawStateIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).stateIcon,\n stateIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (stateIcon.show) {\n var w = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n offset = stateIcon.offset,\n text = stateIcon.text,\n iconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-state-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, iconStyle),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-state-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconStyle), {\n x: x || width / 2 - w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n drawLabel: function drawLabel(cfg, group) {\n var _a = this.getOptions(cfg),\n _b = _a.labelCfg,\n labelCfg = _b === void 0 ? {} : _b,\n _c = _a.logoIcon,\n logoIcon = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var label = null;\n var show = logoIcon.show,\n w = logoIcon.width;\n var offsetX = -width / 2 + labelCfg.offset;\n\n if (show) {\n offsetX = -width / 2 + w + labelCfg.offset;\n }\n\n var fontStyle = labelCfg.style;\n var descriptionStyle = descriptionCfg.style,\n descriptionPaddingTop = descriptionCfg.paddingTop;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: -5,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true\n });\n group['shapeMap']['text-shape'] = label;\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n x: offsetX,\n y: 17 + (descriptionPaddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true\n });\n } else {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: 7,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true\n });\n group['shapeMap']['text-shape'] = label;\n }\n\n return label;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.style,\n style = _b === void 0 ? {} : _b,\n _c = _a.labelCfg,\n labelCfg = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, style), {\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }));\n var group = item.getContainer();\n var logoIconShape = group['shapeMap']['rect-logo-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-logo-icon';\n });\n var currentLogoIconAttr = logoIconShape ? logoIconShape.attr() : {};\n var logoIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLogoIconAttr, cfg.logoIcon);\n var w = logoIcon.width;\n\n if (w === undefined) {\n w = this.options.logoIcon.width;\n }\n\n var show = cfg.logoIcon ? cfg.logoIcon.show : undefined;\n var offset = labelCfg.offset;\n var offsetX = -width / 2 + w + offset;\n\n if (!show && show !== undefined) {\n offsetX = -width / 2 + offset;\n }\n\n var label = group['shapeMap']['node-label'] || group.find(function (element) {\n return element.get('className') === 'node-label';\n });\n var description = group['shapeMap']['rect-description'] || group.find(function (element) {\n return element.get('className') === 'rect-description';\n });\n\n if (cfg.label) {\n if (!label) {\n group['shapeMap']['node-label'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, labelCfg.style), {\n x: offsetX,\n y: cfg.description ? -5 : 7,\n text: cfg.label\n }),\n className: 'node-label',\n name: 'node-label',\n draggable: true\n });\n } else {\n var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : {};\n var labelStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, label.attr(), cfgStyle);\n if (cfg.label) labelStyle.text = cfg.label;\n labelStyle.x = offsetX;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) labelStyle.y = -5;\n\n if (description) {\n description.resetMatrix();\n description.attr({\n x: offsetX\n });\n }\n\n label.resetMatrix();\n label.attr(labelStyle);\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n var paddingTop = descriptionCfg.paddingTop;\n\n if (!description) {\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionCfg.style), {\n x: offsetX,\n y: 17 + (paddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true\n });\n } else {\n var cfgStyle = cfg.descriptionCfg ? cfg.descriptionCfg.style : {};\n var descriptionStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, description.attr(), cfgStyle);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) descriptionStyle.text = cfg.description;\n descriptionStyle.x = offsetX;\n description.resetMatrix();\n description.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n y: 17 + (paddingTop || 0)\n }));\n }\n }\n\n var preRectShape = group['shapeMap']['pre-rect'] || group.find(function (element) {\n return element.get('className') === 'pre-rect';\n });\n\n if (preRectShape && !preRectShape.destroyed) {\n var preRect = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, preRectShape.attr(), cfg.preRect);\n preRectShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, preRect), {\n x: -width / 2,\n y: -height / 2,\n height: height\n }));\n }\n\n if (logoIconShape && !logoIconShape.destroyed) {\n if (!show && show !== undefined) {\n logoIconShape.remove();\n delete group['shapeMap']['pre-rect'];\n } else {\n var logoW = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n logoOffset = logoIcon.offset,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n logoIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + logoW + logoOffset,\n y: y || -h / 2,\n width: logoW,\n height: h\n }));\n }\n } else if (show) {\n this.drawLogoIcon(cfg, group);\n }\n\n var stateIconShape = group['shapeMap']['rect-state-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-state-icon';\n });\n var currentStateIconAttr = stateIconShape ? stateIconShape.attr() : {};\n var stateIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentStateIconAttr, cfg.stateIcon);\n\n if (stateIconShape) {\n if (!stateIcon.show && stateIcon.show !== undefined) {\n stateIconShape.remove();\n delete group['shapeMap']['rect-state-icon'];\n }\n\n var stateW = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n stateOffset = stateIcon.offset,\n stateIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n stateIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, stateIconStyle), {\n x: x || width / 2 - stateW + stateOffset,\n y: y || -h / 2,\n width: stateW,\n height: h\n }));\n } else if (stateIcon.show) {\n this.drawStateIcon(cfg, group);\n }\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9tb2RlbFJlY3QuanM/MjZmYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNFO0FBQ3dCO0FBQ25FLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQU07QUFDdkI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3REFBTTtBQUMxQixPQUFPO0FBQ1A7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdEQUFNO0FBQzFCLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVCQUF1QixlQUFlLEdBQUcsZUFBZTtBQUN4RDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLG9EQUFNOztBQUU3QjtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBTTs7QUFFaEM7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU07O0FBRTVCO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EseUJBQXlCLHNEQUFHLEdBQUc7QUFDL0I7QUFDQTtBQUNBLFlBQVksMkRBQVE7O0FBRXBCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSwrQkFBK0Isc0RBQUcsR0FBRztBQUNyQyxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzdDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxvQkFBb0Isc0RBQUcsR0FBRztBQUMxQix3QkFBd0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG9EQUFNOztBQUVsQywyQkFBMkIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG9CQUFvQixzREFBRyxHQUFHOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0RBQU07O0FBRWpDLDBCQUEwQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9tb2RlbFJlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBtaXgsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyByZWdpc3Rlck5vZGUsIEJhc2VHbG9iYWwgYXMgR2xvYmFsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5yZWdpc3Rlck5vZGUoJ21vZGVsUmVjdCcsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbMTg1LCA3MF0sXG4gICAgc3R5bGU6IHtcbiAgICAgIHJhZGl1czogNSxcbiAgICAgIHN0cm9rZTogJyM2OWMwZmYnLFxuICAgICAgZmlsbDogJyNmZmZmZmYnLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoLFxuICAgICAgZmlsbE9wYWNpdHk6IDFcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiAnIzU5NTk1OScsXG4gICAgICAgIGZvbnRTaXplOiAxNCxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH0sXG4gICAgICBvZmZzZXQ6IDMwIC8vIOi3neemu+W3puS+p+eahCBvZmZzZXTvvIzmsqHmnInorr7nva4geSDovbTkuIrnp7vliqjnmoTphY3nva5cblxuICAgIH0sXG4gICAgZGVzY3JpcHRpb25DZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgZmlsbDogJyNiZmJmYmYnLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfSxcbiAgICAgIHBhZGRpbmdUb3A6IDBcbiAgICB9LFxuICAgIHByZVJlY3Q6IHtcbiAgICAgIHNob3c6IHRydWUsXG4gICAgICB3aWR0aDogNCxcbiAgICAgIGZpbGw6ICcjNDBhOWZmJyxcbiAgICAgIHJhZGl1czogMlxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogMTAsXG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBmaWxsOiAnIzcyQ0M0QScsXG4gICAgICBzdHJva2U6ICcjNzJDQzRBJ1xuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGxvZ29JY29uOiB7XG4gICAgICAvLyDmmK/lkKbmmL7npLppY29u77yM5YC85Li6IGZhbHNlIOWImeS4jea4suafk2ljb25cbiAgICAgIHNob3c6IHRydWUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jhc2VtZW50X3Byb2QvNGY4MTg5M2MtMTgwNi00ZGU0LWFmZjMtOWE2YjI2NmJjOGEyLnN2ZycsXG4gICAgICB3aWR0aDogMTYsXG4gICAgICBoZWlnaHQ6IDE2LFxuICAgICAgLy8g55So5LqO6LCD5pW05Zu+5qCH55qE5bem5Y+z5L2N572uXG4gICAgICBvZmZzZXQ6IDBcbiAgICB9LFxuICAgIC8vIOiKgueCueS4reihqOekuueKtuaAgeeahGljb27phY3nva5cbiAgICBzdGF0ZUljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgLy8gaWNvbueahOWcsOWdgO+8jOWtl+espuS4suexu+Wei1xuICAgICAgaW1nOiAnaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS96b3MvYmFzZW1lbnRfcHJvZC8zMDBhMjUyMy02N2UwLTRjYmYtOWQ0YS02N2MwNzdiNDAzOTUuc3ZnJyxcbiAgICAgIHdpZHRoOiAxNixcbiAgICAgIGhlaWdodDogMTYsXG4gICAgICAvLyDnlKjkuo7osIPmlbTlm77moIfnmoTlt6blj7PkvY3nva5cbiAgICAgIG9mZnNldDogLTVcbiAgICB9LFxuICAgIC8vIOi/nuaOpeeCue+8jOm7mOiupOS4uuW3puWPs1xuICAgIC8vIGFuY2hvclBvaW50czogW3sgeDogMCwgeTogMC41IH0sIHsgeDogMSwgeTogMC41IH1dXG4gICAgYW5jaG9yUG9pbnRzOiBbWzAsIDAuNV0sIFsxLCAwLjVdXVxuICB9LFxuICBzaGFwZVR5cGU6ICdtb2RlbFJlY3QnLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkucHJlUmVjdCxcbiAgICAgICAgcHJlUmVjdCA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiXSA9IGtleVNoYXBlO1xuXG4gICAgdmFyIHByZVJlY3RTaG93ID0gcHJlUmVjdC5zaG93LFxuICAgICAgICBwcmVSZWN0U3R5bGUgPSBfX3Jlc3QocHJlUmVjdCwgW1wic2hvd1wiXSk7XG5cbiAgICBpZiAocHJlUmVjdFNob3cpIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydwcmUtcmVjdCddID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICB9LCBwcmVSZWN0U3R5bGUpLFxuICAgICAgICBjbGFzc05hbWU6ICdwcmUtcmVjdCcsXG4gICAgICAgIG5hbWU6ICdwcmUtcmVjdCcsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TG9nb0ljb24oY2ZnLCBncm91cCk7XG4gICAgdGhpcy5kcmF3U3RhdGVJY29uKGNmZywgZ3JvdXApO1xuICAgIHRoaXMuZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbmqKHlnovnn6nlvaLlt6bovrnnmoRsb2dv5Zu+5qCHXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TG9nb0ljb246IGZ1bmN0aW9uIGRyYXdMb2dvSWNvbihjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubG9nb0ljb24sXG4gICAgICAgIGxvZ29JY29uID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuXG4gICAgaWYgKGxvZ29JY29uLnNob3cpIHtcbiAgICAgIHZhciB3ID0gbG9nb0ljb24ud2lkdGgsXG4gICAgICAgICAgaCA9IGxvZ29JY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gbG9nb0ljb24ueCxcbiAgICAgICAgICB5ID0gbG9nb0ljb24ueSxcbiAgICAgICAgICBvZmZzZXQgPSBsb2dvSWNvbi5vZmZzZXQsXG4gICAgICAgICAgdGV4dCA9IGxvZ29JY29uLnRleHQsXG4gICAgICAgICAgbG9nb0ljb25TdHlsZSA9IF9fcmVzdChsb2dvSWNvbiwgW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJ4XCIsIFwieVwiLCBcIm9mZnNldFwiLCBcInRleHRcIl0pO1xuXG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1sb2dvLWljb24nXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBsb2dvSWNvblN0eWxlKSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWxvZ28taWNvbicsXG4gICAgICAgICAgbmFtZTogJ3JlY3QtbG9nby1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1sb2dvLWljb24nXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGxvZ29JY29uU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB4IHx8IC13aWR0aCAvIDIgKyB3ICsgb2Zmc2V0LFxuICAgICAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgICAgICB3aWR0aDogdyxcbiAgICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlY3QtbG9nby1pY29uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1sb2dvLWljb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuaooeWei+efqeW9ouWPs+i+ueeahOeKtuaAgeWbvuagh1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBHcm91cOWunuS+i1xuICAgKi9cbiAgZHJhd1N0YXRlSWNvbjogZnVuY3Rpb24gZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3RhdGVJY29uLFxuICAgICAgICBzdGF0ZUljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG5cbiAgICBpZiAoc3RhdGVJY29uLnNob3cpIHtcbiAgICAgIHZhciB3ID0gc3RhdGVJY29uLndpZHRoLFxuICAgICAgICAgIGggPSBzdGF0ZUljb24uaGVpZ2h0LFxuICAgICAgICAgIHggPSBzdGF0ZUljb24ueCxcbiAgICAgICAgICB5ID0gc3RhdGVJY29uLnksXG4gICAgICAgICAgb2Zmc2V0ID0gc3RhdGVJY29uLm9mZnNldCxcbiAgICAgICAgICB0ZXh0ID0gc3RhdGVJY29uLnRleHQsXG4gICAgICAgICAgaWNvblN0eWxlID0gX19yZXN0KHN0YXRlSWNvbiwgW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJ4XCIsIFwieVwiLCBcIm9mZnNldFwiLCBcInRleHRcIl0pO1xuXG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvblN0eWxlKSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIG5hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LXN0YXRlLWljb24nXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGljb25TdHlsZSksIHtcbiAgICAgICAgICAgIHg6IHggfHwgd2lkdGggLyAyIC0gdyArIG9mZnNldCxcbiAgICAgICAgICAgIHk6IHkgfHwgLWggLyAyLFxuICAgICAgICAgICAgd2lkdGg6IHcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIG5hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBkcmF3TGFiZWw6IGZ1bmN0aW9uIGRyYXdMYWJlbChjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gdGhpcy5nZXRPcHRpb25zKGNmZyksXG4gICAgICAgIF9iID0gX2EubGFiZWxDZmcsXG4gICAgICAgIGxhYmVsQ2ZnID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIF9jID0gX2EubG9nb0ljb24sXG4gICAgICAgIGxvZ29JY29uID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2EuZGVzY3JpcHRpb25DZmcsXG4gICAgICAgIGRlc2NyaXB0aW9uQ2ZnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2Q7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGxhYmVsID0gbnVsbDtcbiAgICB2YXIgc2hvdyA9IGxvZ29JY29uLnNob3csXG4gICAgICAgIHcgPSBsb2dvSWNvbi53aWR0aDtcbiAgICB2YXIgb2Zmc2V0WCA9IC13aWR0aCAvIDIgKyBsYWJlbENmZy5vZmZzZXQ7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgb2Zmc2V0WCA9IC13aWR0aCAvIDIgKyB3ICsgbGFiZWxDZmcub2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBmb250U3R5bGUgPSBsYWJlbENmZy5zdHlsZTtcbiAgICB2YXIgZGVzY3JpcHRpb25TdHlsZSA9IGRlc2NyaXB0aW9uQ2ZnLnN0eWxlLFxuICAgICAgICBkZXNjcmlwdGlvblBhZGRpbmdUb3AgPSBkZXNjcmlwdGlvbkNmZy5wYWRkaW5nVG9wO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNmZy5kZXNjcmlwdGlvbikpIHtcbiAgICAgIGxhYmVsID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9udFN0eWxlKSwge1xuICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgeTogLTUsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgICAgbmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtZGVzY3JpcHRpb24nXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeDogb2Zmc2V0WCxcbiAgICAgICAgICB5OiAxNyArIChkZXNjcmlwdGlvblBhZGRpbmdUb3AgfHwgMCksXG4gICAgICAgICAgdGV4dDogY2ZnLmRlc2NyaXB0aW9uXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWRlc2NyaXB0aW9uJyxcbiAgICAgICAgbmFtZTogJ3JlY3QtZGVzY3JpcHRpb24nLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGZvbnRTdHlsZSksIHtcbiAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgIHk6IDcsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgICAgbmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc3R5bGUud2lkdGggfHwgc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc3R5bGUuaGVpZ2h0IHx8IHNpemVbMV07XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9LCBzdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0pIHtcbiAgICB2YXIgX2EgPSB0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZyksXG4gICAgICAgIF9iID0gX2Euc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIF9jID0gX2EubGFiZWxDZmcsXG4gICAgICAgIGxhYmVsQ2ZnID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2EuZGVzY3JpcHRpb25DZmcsXG4gICAgICAgIGRlc2NyaXB0aW9uQ2ZnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2Q7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG4gICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAga2V5U2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGUpLCB7XG4gICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0pKTtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgIHZhciBsb2dvSWNvblNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtbG9nby1pY29uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3QtbG9nby1pY29uJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExvZ29JY29uQXR0ciA9IGxvZ29JY29uU2hhcGUgPyBsb2dvSWNvblNoYXBlLmF0dHIoKSA6IHt9O1xuICAgIHZhciBsb2dvSWNvbiA9IG1peCh7fSwgY3VycmVudExvZ29JY29uQXR0ciwgY2ZnLmxvZ29JY29uKTtcbiAgICB2YXIgdyA9IGxvZ29JY29uLndpZHRoO1xuXG4gICAgaWYgKHcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdyA9IHRoaXMub3B0aW9ucy5sb2dvSWNvbi53aWR0aDtcbiAgICB9XG5cbiAgICB2YXIgc2hvdyA9IGNmZy5sb2dvSWNvbiA/IGNmZy5sb2dvSWNvbi5zaG93IDogdW5kZWZpbmVkO1xuICAgIHZhciBvZmZzZXQgPSBsYWJlbENmZy5vZmZzZXQ7XG4gICAgdmFyIG9mZnNldFggPSAtd2lkdGggLyAyICsgdyArIG9mZnNldDtcblxuICAgIGlmICghc2hvdyAmJiBzaG93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9mZnNldFggPSAtd2lkdGggLyAyICsgb2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBsYWJlbCA9IGdyb3VwWydzaGFwZU1hcCddWydub2RlLWxhYmVsJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ25vZGUtbGFiZWwnO1xuICAgIH0pO1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IGdyb3VwWydzaGFwZU1hcCddWydyZWN0LWRlc2NyaXB0aW9uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3QtZGVzY3JpcHRpb24nO1xuICAgIH0pO1xuXG4gICAgaWYgKGNmZy5sYWJlbCkge1xuICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbm9kZS1sYWJlbCddID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBsYWJlbENmZy5zdHlsZSksIHtcbiAgICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgICB5OiBjZmcuZGVzY3JpcHRpb24gPyAtNSA6IDcsXG4gICAgICAgICAgICB0ZXh0OiBjZmcubGFiZWxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdub2RlLWxhYmVsJyxcbiAgICAgICAgICBuYW1lOiAnbm9kZS1sYWJlbCcsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNmZ1N0eWxlID0gY2ZnLmxhYmVsQ2ZnID8gY2ZnLmxhYmVsQ2ZnLnN0eWxlIDoge307XG4gICAgICAgIHZhciBsYWJlbFN0eWxlID0gbWl4KHt9LCBsYWJlbC5hdHRyKCksIGNmZ1N0eWxlKTtcbiAgICAgICAgaWYgKGNmZy5sYWJlbCkgbGFiZWxTdHlsZS50ZXh0ID0gY2ZnLmxhYmVsO1xuICAgICAgICBsYWJlbFN0eWxlLnggPSBvZmZzZXRYO1xuICAgICAgICBpZiAoaXNTdHJpbmcoY2ZnLmRlc2NyaXB0aW9uKSkgbGFiZWxTdHlsZS55ID0gLTU7XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb24ucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbi5hdHRyKHtcbiAgICAgICAgICAgIHg6IG9mZnNldFhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsLnJlc2V0TWF0cml4KCk7XG4gICAgICAgIGxhYmVsLmF0dHIobGFiZWxTdHlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGNmZy5kZXNjcmlwdGlvbikpIHtcbiAgICAgIHZhciBwYWRkaW5nVG9wID0gZGVzY3JpcHRpb25DZmcucGFkZGluZ1RvcDtcblxuICAgICAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1kZXNjcmlwdGlvbiddID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZXNjcmlwdGlvbkNmZy5zdHlsZSksIHtcbiAgICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgICB5OiAxNyArIChwYWRkaW5nVG9wIHx8IDApLFxuICAgICAgICAgICAgdGV4dDogY2ZnLmRlc2NyaXB0aW9uXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1kZXNjcmlwdGlvbicsXG4gICAgICAgICAgbmFtZTogJ3JlY3QtZGVzY3JpcHRpb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjZmdTdHlsZSA9IGNmZy5kZXNjcmlwdGlvbkNmZyA/IGNmZy5kZXNjcmlwdGlvbkNmZy5zdHlsZSA6IHt9O1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25TdHlsZSA9IG1peCh7fSwgZGVzY3JpcHRpb24uYXR0cigpLCBjZmdTdHlsZSk7XG4gICAgICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSBkZXNjcmlwdGlvblN0eWxlLnRleHQgPSBjZmcuZGVzY3JpcHRpb247XG4gICAgICAgIGRlc2NyaXB0aW9uU3R5bGUueCA9IG9mZnNldFg7XG4gICAgICAgIGRlc2NyaXB0aW9uLnJlc2V0TWF0cml4KCk7XG4gICAgICAgIGRlc2NyaXB0aW9uLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeTogMTcgKyAocGFkZGluZ1RvcCB8fCAwKVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZVJlY3RTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydwcmUtcmVjdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdwcmUtcmVjdCc7XG4gICAgfSk7XG5cbiAgICBpZiAocHJlUmVjdFNoYXBlICYmICFwcmVSZWN0U2hhcGUuZGVzdHJveWVkKSB7XG4gICAgICB2YXIgcHJlUmVjdCA9IG1peCh7fSwgcHJlUmVjdFNoYXBlLmF0dHIoKSwgY2ZnLnByZVJlY3QpO1xuICAgICAgcHJlUmVjdFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHByZVJlY3QpLCB7XG4gICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChsb2dvSWNvblNoYXBlICYmICFsb2dvSWNvblNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgaWYgKCFzaG93ICYmIHNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2dvSWNvblNoYXBlLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3ByZS1yZWN0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbG9nb1cgPSBsb2dvSWNvbi53aWR0aCxcbiAgICAgICAgICAgIGggPSBsb2dvSWNvbi5oZWlnaHQsXG4gICAgICAgICAgICB4ID0gbG9nb0ljb24ueCxcbiAgICAgICAgICAgIHkgPSBsb2dvSWNvbi55LFxuICAgICAgICAgICAgbG9nb09mZnNldCA9IGxvZ29JY29uLm9mZnNldCxcbiAgICAgICAgICAgIGxvZ29JY29uU3R5bGUgPSBfX3Jlc3QobG9nb0ljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICAgIGxvZ29JY29uU2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbG9nb0ljb25TdHlsZSksIHtcbiAgICAgICAgICB4OiB4IHx8IC13aWR0aCAvIDIgKyBsb2dvVyArIGxvZ29PZmZzZXQsXG4gICAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgICAgd2lkdGg6IGxvZ29XLFxuICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG93KSB7XG4gICAgICB0aGlzLmRyYXdMb2dvSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB2YXIgc3RhdGVJY29uU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3Qtc3RhdGUtaWNvbic7XG4gICAgfSk7XG4gICAgdmFyIGN1cnJlbnRTdGF0ZUljb25BdHRyID0gc3RhdGVJY29uU2hhcGUgPyBzdGF0ZUljb25TaGFwZS5hdHRyKCkgOiB7fTtcbiAgICB2YXIgc3RhdGVJY29uID0gbWl4KHt9LCBjdXJyZW50U3RhdGVJY29uQXR0ciwgY2ZnLnN0YXRlSWNvbik7XG5cbiAgICBpZiAoc3RhdGVJY29uU2hhcGUpIHtcbiAgICAgIGlmICghc3RhdGVJY29uLnNob3cgJiYgc3RhdGVJY29uLnNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzdGF0ZUljb25TaGFwZS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LXN0YXRlLWljb24nXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlVyA9IHN0YXRlSWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gc3RhdGVJY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gc3RhdGVJY29uLngsXG4gICAgICAgICAgeSA9IHN0YXRlSWNvbi55LFxuICAgICAgICAgIHN0YXRlT2Zmc2V0ID0gc3RhdGVJY29uLm9mZnNldCxcbiAgICAgICAgICBzdGF0ZUljb25TdHlsZSA9IF9fcmVzdChzdGF0ZUljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICBzdGF0ZUljb25TaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZUljb25TdHlsZSksIHtcbiAgICAgICAgeDogeCB8fCB3aWR0aCAvIDIgLSBzdGF0ZVcgKyBzdGF0ZU9mZnNldCxcbiAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgIHdpZHRoOiBzdGF0ZVcsXG4gICAgICAgIGhlaWdodDogaFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGVJY29uLnNob3cpIHtcbiAgICAgIHRoaXMuZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js ***! \********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9yZWN0LmpzP2Q2NDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDUjtBQUNrQztBQUNuRSxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xucmVnaXN0ZXJOb2RlKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFsxMDAsIDMwXSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgLy8g6L+e5o6l54K577yM6buY6K6k5Li65bem5Y+zXG4gICAgLy8gYW5jaG9yUG9pbnRzOiBbeyB4OiAwLCB5OiAwLjUgfSwgeyB4OiAxLCB5OiAwLjUgfV1cbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAncmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBuYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIl0gPSBrZXlTaGFwZTtcbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG5cbiAgICBpZiAobGVmdCkge1xuICAgICAgLy8gbGVmdCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueeahOagt+W8j++8jOS+m+WfuuS6juivpeiKgueCueiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOiKgueCueeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHN0eWxlLmhlaWdodCB8fCBzaXplWzFdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8g6L+Z6YeM5LiN5LygIGNmZyDlj4LmlbDmmK/lm6DkuLogY2ZnLnN0eWxlIOmcgOimgeacgOWQjuimhuebluagt+W8j1xuXG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMuZ2V0T3B0aW9ucyh7fSkuc3R5bGU7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcblxuICAgIGlmICghY2ZnLnNpemUpIHtcbiAgICAgIHNpemVbMF0gPSBrZXlTaGFwZS5hdHRyKCd3aWR0aCcpIHx8IGRlZmF1bHRTdHlsZS53aWR0aDtcbiAgICAgIHNpemVbMV0gPSBrZXlTaGFwZS5hdHRyKCdoZWlnaHQnKSB8fCBkZWZhdWx0U3R5bGUuaGVpZ2h0O1xuICAgIH0gLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG5cbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAgIHg6IC1zaXplWzBdIC8gMixcbiAgICAgIHk6IC1zaXplWzFdIC8gMixcbiAgICAgIHdpZHRoOiBzaXplWzBdLFxuICAgICAgaGVpZ2h0OiBzaXplWzFdXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js ***! \********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 五角星shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('star', {\n // 自定义节点时的配置\n options: {\n size: 60,\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'star',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n leftBottom = linkPoints.leftBottom,\n rightBottom = linkPoints.rightBottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"leftBottom\", \"rightBottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR; // top circle\n\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR; // left circle\n\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n\n if (leftBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom'\n });\n }\n\n if (rightBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom'\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var outerR = size[0];\n var defaultInnerR = outerR * 3 / 8;\n var innerR = cfg.innerR || defaultInnerR;\n var path = [];\n\n for (var i = 0; i < 5; i++) {\n var x1 = Math.cos((18 + 72 * i) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * i) / 180 * Math.PI) * outerR;\n var x2 = Math.cos((54 + 72 * i) / 180 * Math.PI) * innerR;\n var y2 = Math.sin((54 + 72 * i) / 180 * Math.PI) * innerR;\n\n if (i === 0) {\n path.push(['M', x1, -y1]);\n } else {\n path.push(['L', x1, -y1]);\n }\n\n path.push(['L', x2, -y2]);\n }\n\n path.push(['Z']);\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖原来默认的 stroke 属性。但 cfg 中但 stroke 属性优先级更高\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = this.getOptions({}).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markLeftBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-left-bottom';\n });\n var markRightBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-right-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markLeftBottom || markRightBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n leftBottom: undefined,\n rightBottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n leftBottom = _a.leftBottom,\n rightBottom = _a.rightBottom;\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var x = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR;\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR;\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR;\n\n if (markLeftBottom) {\n if (!leftBottom && leftBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-left-bottom'];\n } else {\n markLeftBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (leftBottom) {\n group['shapeMap']['link-point-left-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR;\n\n if (markRightBottom) {\n if (!rightBottom && rightBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-right-bottom'];\n } else {\n markRightBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (rightBottom) {\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom',\n isAnchorPoint: true\n });\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzP2ZhZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7O0FBRWhFO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN6QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQkFBc0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzFDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDaEQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNqRDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS6lOinkuaYn3NoYXBlXG5cbnJlZ2lzdGVyTm9kZSgnc3RhcicsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiA2MCxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzdGFyJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgaWNvbiA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgbmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWtleVNoYXBlXCJdID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIHRleHQgPSBpY29uLnRleHQ7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCItaWNvblwiXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBuYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCItaWNvblwiXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXcgLyAyLFxuICAgICAgICAgICAgeTogLWggLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGxlZnRCb3R0b20gPSBsaW5rUG9pbnRzLmxlZnRCb3R0b20sXG4gICAgICAgIHJpZ2h0Qm90dG9tID0gbGlua1BvaW50cy5yaWdodEJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwibGVmdEJvdHRvbVwiLCBcInJpZ2h0Qm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7IC8vIHRvcCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiB4MSxcbiAgICAgICAgICB5OiAteTEsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBvdXRlclIgPSBzaXplWzBdO1xuICAgIHZhciBkZWZhdWx0SW5uZXJSID0gb3V0ZXJSICogMyAvIDg7XG4gICAgdmFyIGlubmVyUiA9IGNmZy5pbm5lclIgfHwgZGVmYXVsdElubmVyUjtcbiAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB4MiA9IE1hdGguY29zKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcbiAgICAgIHZhciB5MiA9IE1hdGguc2luKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgcGF0aC5wdXNoKFsnTScsIHgxLCAteTFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGgucHVzaChbJ0wnLCB4MSwgLXkxXSk7XG4gICAgICB9XG5cbiAgICAgIHBhdGgucHVzaChbJ0wnLCB4MiwgLXkyXSk7XG4gICAgfVxuXG4gICAgcGF0aC5wdXNoKFsnWiddKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW5Y6f5p2l6buY6K6k55qEIHN0cm9rZSDlsZ7mgKfjgILkvYYgY2ZnIOS4reS9hiBzdHJva2Ug5bGe5oCn5LyY5YWI57qn5pu06auYXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExpbmtQb2ludHMgPSB0aGlzLmdldE9wdGlvbnMoe30pLmxpbmtQb2ludHM7XG4gICAgdmFyIG1hcmtMZWZ0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrUmlnaHQgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1RvcCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXRvcCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtMZWZ0Qm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0LWJvdHRvbSc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtSaWdodEJvdHRvbSA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrTGVmdEJvdHRvbSB8fCBtYXJrUmlnaHRCb3R0b207XG5cbiAgICBpZiAoZXhpc3RMaW5rUG9pbnQpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gZXhpc3RMaW5rUG9pbnQuYXR0cigpO1xuICAgIH1cblxuICAgIHZhciBsaW5rUG9pbnRzID0gbWl4KHt9LCBjdXJyZW50TGlua1BvaW50cywgY2ZnLmxpbmtQb2ludHMpO1xuICAgIHZhciBtYXJrRmlsbCA9IGxpbmtQb2ludHMuZmlsbCxcbiAgICAgICAgbWFya1N0cm9rZSA9IGxpbmtQb2ludHMuc3Ryb2tlLFxuICAgICAgICBib3JkZXJXaWR0aCA9IGxpbmtQb2ludHMubGluZVdpZHRoO1xuICAgIHZhciBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSAvIDI7XG4gICAgaWYgKCFtYXJrU2l6ZSkgbWFya1NpemUgPSBsaW5rUG9pbnRzLnI7XG5cbiAgICB2YXIgX2EgPSBjZmcubGlua1BvaW50cyA/IGNmZy5saW5rUG9pbnRzIDoge1xuICAgICAgbGVmdDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHRvcDogdW5kZWZpbmVkLFxuICAgICAgbGVmdEJvdHRvbTogdW5kZWZpbmVkLFxuICAgICAgcmlnaHRCb3R0b206IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgICAgIGxlZnQgPSBfYS5sZWZ0LFxuICAgICAgICByaWdodCA9IF9hLnJpZ2h0LFxuICAgICAgICB0b3AgPSBfYS50b3AsXG4gICAgICAgIGxlZnRCb3R0b20gPSBfYS5sZWZ0Qm90dG9tLFxuICAgICAgICByaWdodEJvdHRvbSA9IF9hLnJpZ2h0Qm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHZhciB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtSaWdodCkge1xuICAgICAgaWYgKCFyaWdodCAmJiByaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogLXlcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAxKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1RvcCkge1xuICAgICAgaWYgKCF0b3AgJiYgdG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya1RvcC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya1RvcC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAyKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDIpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya0xlZnQpIHtcbiAgICAgIGlmICghbGVmdCAmJiBsZWZ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgeCA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAzKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtMZWZ0Qm90dG9tKSB7XG4gICAgICBpZiAoIWxlZnRCb3R0b20gJiYgbGVmdEJvdHRvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiA0KSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDQpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1JpZ2h0Qm90dG9tKSB7XG4gICAgICBpZiAoIXJpZ2h0Qm90dG9tICYmIHJpZ2h0Qm90dG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnRCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtSaWdodEJvdHRvbS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyaWdodEJvdHRvbSkge1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js ***! \************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 三角形\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('triangle', {\n // 自定义节点时的配置\n options: {\n size: 40,\n direction: 'up',\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize\n },\n offset: 15\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20,\n offset: 6\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'triangle',\n // 文本位置\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.icon,\n icon = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var style = this.getShapeStyle(cfg);\n var direction = cfg.direction || defaultDirection;\n var keyShape = group.addShape('path', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n offset = icon.offset,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n var iconW = -w / 2;\n var iconH = -h / 2;\n\n if (direction === 'up' || direction === 'down') {\n iconH += offset;\n }\n\n if (direction === 'left' || direction === 'right') {\n iconW += offset;\n }\n\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: iconW,\n y: iconH\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.linkPoints,\n linkPoints = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var len = size[0];\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: leftPos[0],\n y: leftPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n }\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var rightPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rightPos[0],\n y: rightPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var topPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: topPos[0],\n y: topPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n }\n\n if (bottom) {\n // up down left right 四个方向的坐标均不相同\n var bottomPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: bottomPos[0],\n y: bottomPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom'\n });\n }\n }\n },\n getPath: function getPath(cfg) {\n var defaultDirection = (this.mergeStyle || this.getOptions(cfg)).direction;\n var direction = cfg.direction || defaultDirection;\n var size = this.getSize(cfg);\n var len = size[0];\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n var path = [['M', -r, diffY], ['L', 0, -diffY], ['L', r, diffY], ['Z'] // 封闭\n ];\n\n if (direction === 'down') {\n path = [['M', -r, -diffY], ['L', r, -diffY], ['L', 0, diffY], ['Z'] // 封闭\n ];\n } else if (direction === 'left') {\n path = [['M', -r, r - diffY], ['L', r, -r], ['L', r, r], ['Z'] // 封闭\n ];\n } else if (direction === 'right') {\n path = [['M', r, r - diffY], ['L', -r, r], ['L', -r, -r], ['Z'] // 封闭\n ];\n }\n\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var _a = this.getOptions({}),\n defaultLinkPoints = _a.linkPoints,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _b = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _b.left,\n right = _b.right,\n top = _b.top,\n bottom = _b.bottom;\n\n var size = this.getSize(cfg);\n var len = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n }\n\n var rightPos = null;\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n }\n\n var topPos = null;\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n // top circle\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n }\n\n var bottomPos = null;\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }));\n }\n } else if (bottom) {\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy90cmlhbmdsZS5qcz8xM2ExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQzBCO0FBQ2xDOztBQUVqQyxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU07O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQ0FBb0M7O0FBRXBDLHlDQUF5QztBQUN6QyxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCx3QkFBd0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzVDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM3QztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBCQUEwQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL25vZGVzL3RyaWFuZ2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS4ieinkuW9olxuXG5yZWdpc3Rlck5vZGUoJ3RyaWFuZ2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IDQwLFxuICAgIGRpcmVjdGlvbjogJ3VwJyxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplXG4gICAgICB9LFxuICAgICAgb2Zmc2V0OiAxNVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgIG9mZnNldDogNlxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICd0cmlhbmdsZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5pY29uLFxuICAgICAgICBpY29uID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgbmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWtleVNoYXBlXCJdID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIG9mZnNldCA9IGljb24ub2Zmc2V0LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpY29uVyA9IC13IC8gMjtcbiAgICAgICAgdmFyIGljb25IID0gLWggLyAyO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcgfHwgZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgICBpY29uSCArPSBvZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcgfHwgZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgaWNvblcgKz0gb2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCItaWNvblwiXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogaWNvblcsXG4gICAgICAgICAgICB5OiBpY29uSFxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5saW5rUG9pbnRzLFxuICAgICAgICBsaW5rUG9pbnRzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBsZW4gPSBzaXplWzBdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgbGVmdFBvcyA9IFstciwgZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCByIC0gZGlmZlldO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVmdFBvcykge1xuICAgICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgICAgeDogbGVmdFBvc1swXSxcbiAgICAgICAgICAgIHk6IGxlZnRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciByaWdodFBvcyA9IG51bGw7XG4gICAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgICAgdmFyIHIgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIGRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgcmlnaHRQb3MgPSBbciwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodFBvcykge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0J1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgdG9wUG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IgLSBkaWZmWSwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB0b3BQb3MgPSBbLXIsIC1kaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0b3BQb3MpIHtcbiAgICAgICAgLy8gdG9wIGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB0b3BQb3NbMF0sXG4gICAgICAgICAgICB5OiB0b3BQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChib3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBib3R0b21Qb3MgPSBudWxsO1xuICAgICAgdmFyIGRpZmZZID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFstciArIGRpZmZZLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFtyLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvdHRvbVBvcykge1xuICAgICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IGJvdHRvbVBvc1swXSxcbiAgICAgICAgICAgIHk6IGJvdHRvbVBvc1sxXSxcbiAgICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbSdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBkZWZhdWx0RGlyZWN0aW9uID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuZGlyZWN0aW9uO1xuICAgIHZhciBkaXJlY3Rpb24gPSBjZmcuZGlyZWN0aW9uIHx8IGRlZmF1bHREaXJlY3Rpb247XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAtciwgZGlmZlldLCBbJ0wnLCAwLCAtZGlmZlldLCBbJ0wnLCByLCBkaWZmWV0sIFsnWiddIC8vIOWwgemXrVxuICAgIF07XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIC1kaWZmWV0sIFsnTCcsIHIsIC1kaWZmWV0sIFsnTCcsIDAsIGRpZmZZXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIHIgLSBkaWZmWV0sIFsnTCcsIHIsIC1yXSwgWydMJywgciwgcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcGF0aCA9IFtbJ00nLCByLCByIC0gZGlmZlldLCBbJ0wnLCAtciwgcl0sIFsnTCcsIC1yLCAtcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgX2EgPSB0aGlzLmdldE9wdGlvbnMoe30pLFxuICAgICAgICBkZWZhdWx0TGlua1BvaW50cyA9IF9hLmxpbmtQb2ludHMsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBtYXJrTGVmdCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1JpZ2h0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtUb3AgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC10b3AnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrQm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrQm90dG9tO1xuXG4gICAgaWYgKGV4aXN0TGlua1BvaW50KSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IGV4aXN0TGlua1BvaW50LmF0dHIoKTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50cyA9IG1peCh7fSwgY3VycmVudExpbmtQb2ludHMsIGNmZy5saW5rUG9pbnRzKTtcbiAgICB2YXIgbWFya0ZpbGwgPSBsaW5rUG9pbnRzLmZpbGwsXG4gICAgICAgIG1hcmtTdHJva2UgPSBsaW5rUG9pbnRzLnN0cm9rZSxcbiAgICAgICAgYm9yZGVyV2lkdGggPSBsaW5rUG9pbnRzLmxpbmVXaWR0aDtcbiAgICB2YXIgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUgLyAyO1xuICAgIGlmICghbWFya1NpemUpIG1hcmtTaXplID0gbGlua1BvaW50cy5yO1xuXG4gICAgdmFyIF9iID0gY2ZnLmxpbmtQb2ludHMgPyBjZmcubGlua1BvaW50cyA6IHtcbiAgICAgIGxlZnQ6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiB1bmRlZmluZWQsXG4gICAgICB0b3A6IHVuZGVmaW5lZCxcbiAgICAgIGJvdHRvbTogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAgICAgbGVmdCA9IF9iLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2IucmlnaHQsXG4gICAgICAgIHRvcCA9IF9iLnRvcCxcbiAgICAgICAgYm90dG9tID0gX2IuYm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKGxlZnRQb3MpIHtcbiAgICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgICBpZiAoIWxlZnQgJiYgbGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmlnaHRQb3MgPSBudWxsO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgcmlnaHRQb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0UG9zKSB7XG4gICAgICBpZiAobWFya1JpZ2h0KSB7XG4gICAgICAgIGlmICghcmlnaHQgJiYgcmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogcmlnaHRQb3NbMF0sXG4gICAgICAgICAgICB5OiByaWdodFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdG9wUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIHRvcFBvcyA9IFtyIC0gZGlmZlksIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcFBvcyA9IFstciwgLWRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAodG9wUG9zKSB7XG4gICAgICBpZiAobWFya1RvcCkge1xuICAgICAgICBpZiAoIXRvcCAmJiB0b3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtUb3AucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgICAgICBtYXJrVG9wLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHRvcFBvc1swXSxcbiAgICAgICAgICAgIHk6IHRvcFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogdG9wUG9zWzBdLFxuICAgICAgICAgICAgeTogdG9wUG9zWzFdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYm90dG9tUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgYm90dG9tUG9zID0gWy1yICsgZGlmZlksIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tUG9zKSB7XG4gICAgICBpZiAobWFya0JvdHRvbSkge1xuICAgICAgICBpZiAoIWJvdHRvbSAmJiBib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hcmtCb3R0b20uYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogYm90dG9tUG9zWzBdLFxuICAgICAgICAgICAgeTogYm90dG9tUG9zWzFdXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGJvdHRvbSkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBib3R0b21Qb3NbMF0sXG4gICAgICAgICAgICB5OiBib3R0b21Qb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n // 可选 mouseenter || click\n // 选择 click 会监听 touch,mouseenter 不会监听\n trigger: 'mouseenter',\n activeState: 'active',\n inactiveState: 'inactive',\n resetSelected: false,\n shouldUpdate: function shouldUpdate() {\n return true;\n }\n };\n },\n getEvents: function getEvents() {\n if (this.get('trigger') === 'mouseenter') {\n return {\n 'node:mouseenter': 'setAllItemStates',\n 'combo:mouseenter': 'setAllItemStates',\n 'node:mouseleave': 'clearActiveState',\n 'combo:mouseleave': 'clearActiveState'\n };\n }\n\n return {\n 'node:click': 'setAllItemStates',\n 'combo:click': 'setAllItemStates',\n 'canvas:click': 'clearActiveState',\n 'node:touchstart': 'setOnTouchStart',\n 'combo:touchstart': 'setOnTouchStart',\n 'canvas:touchstart': 'clearOnTouchStart'\n };\n },\n setOnTouchStart: function setOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.setAllItemStates(e);\n },\n clearOnTouchStart: function clearOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.clearActiveState(e);\n },\n setAllItemStates: function setAllItemStates(e) {\n var item = e.item;\n var graph = this.graph;\n this.item = item;\n\n if (!this.shouldUpdate(e.item, {\n event: e,\n action: 'activate'\n })) {\n return;\n }\n\n var self = this;\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var nodes = graph.getNodes();\n var combos = graph.getCombos();\n var edges = graph.getEdges();\n var vEdges = graph.get('vedges');\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var hasSelected = node.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(node, 'selected', false);\n }\n }\n\n graph.setItemState(node, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(node, inactiveState, true);\n }\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n var hasSelected = combo.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(combo, 'selected', false);\n }\n }\n\n graph.setItemState(combo, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(combo, inactiveState, true);\n }\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.setItemState(edge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(edge, inactiveState, true);\n }\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.setItemState(vEdge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(vEdge, inactiveState, true);\n }\n }\n\n if (inactiveState) {\n graph.setItemState(item, inactiveState, false);\n }\n\n graph.setItemState(item, activeState, true);\n var rEdges = item.getEdges();\n var rEdgeLegnth = rEdges.length;\n\n for (var i = 0; i < rEdgeLegnth; i++) {\n var edge = rEdges[i];\n var otherEnd = void 0;\n\n if (edge.getSource() === item) {\n otherEnd = edge.getTarget();\n } else {\n otherEnd = edge.getSource();\n }\n\n if (inactiveState) {\n graph.setItemState(otherEnd, inactiveState, false);\n }\n\n graph.setItemState(otherEnd, activeState, true);\n graph.setItemState(edge, inactiveState, false);\n graph.setItemState(edge, activeState, true);\n edge.toFront();\n }\n\n graph.emit('afteractivaterelations', {\n item: e.item,\n action: 'activate'\n });\n },\n clearActiveState: function clearActiveState(e) {\n var self = this;\n var graph = self.get('graph');\n\n if (!self.shouldUpdate(e.item, {\n event: e,\n action: 'deactivate'\n })) {\n return;\n }\n\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var autoPaint = graph.get('autoPaint');\n graph.setAutoPaint(false);\n var nodes = graph.getNodes() || [];\n var combos = graph.getCombos() || [];\n var edges = graph.getEdges() || [];\n var vEdges = graph.get('vedges') || [];\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n graph.clearItemStates(node, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n graph.clearItemStates(combo, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.clearItemStates(edge, [activeState, inactiveState, 'deactivate']);\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.clearItemStates(vEdge, [activeState, inactiveState, 'deactivate']);\n }\n\n graph.paint();\n graph.setAutoPaint(autoPaint);\n graph.emit('afteractivaterelations', {\n item: e.item || self.get('item'),\n action: 'deactivate'\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2FjdGl2YXRlLXJlbGF0aW9ucy5qcz85NWI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9hY3RpdmF0ZS1yZWxhdGlvbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIOWPr+mAiSBtb3VzZWVudGVyIHx8IGNsaWNrXG4gICAgICAvLyDpgInmi6kgY2xpY2sg5Lya55uR5ZCsIHRvdWNo77yMbW91c2VlbnRlciDkuI3kvJrnm5HlkKxcbiAgICAgIHRyaWdnZXI6ICdtb3VzZWVudGVyJyxcbiAgICAgIGFjdGl2ZVN0YXRlOiAnYWN0aXZlJyxcbiAgICAgIGluYWN0aXZlU3RhdGU6ICdpbmFjdGl2ZScsXG4gICAgICByZXNldFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNob3VsZFVwZGF0ZTogZnVuY3Rpb24gc2hvdWxkVXBkYXRlKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5nZXQoJ3RyaWdnZXInKSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnbm9kZTptb3VzZWVudGVyJzogJ3NldEFsbEl0ZW1TdGF0ZXMnLFxuICAgICAgICAnY29tYm86bW91c2VlbnRlcic6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICAgJ25vZGU6bW91c2VsZWF2ZSc6ICdjbGVhckFjdGl2ZVN0YXRlJyxcbiAgICAgICAgJ2NvbWJvOm1vdXNlbGVhdmUnOiAnY2xlYXJBY3RpdmVTdGF0ZSdcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmNsaWNrJzogJ3NldEFsbEl0ZW1TdGF0ZXMnLFxuICAgICAgJ2NvbWJvOmNsaWNrJzogJ3NldEFsbEl0ZW1TdGF0ZXMnLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhckFjdGl2ZVN0YXRlJyxcbiAgICAgICdub2RlOnRvdWNoc3RhcnQnOiAnc2V0T25Ub3VjaFN0YXJ0JyxcbiAgICAgICdjb21ibzp0b3VjaHN0YXJ0JzogJ3NldE9uVG91Y2hTdGFydCcsXG4gICAgICAnY2FudmFzOnRvdWNoc3RhcnQnOiAnY2xlYXJPblRvdWNoU3RhcnQnXG4gICAgfTtcbiAgfSxcbiAgc2V0T25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBzZXRPblRvdWNoU3RhcnQoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdUb3VjaCBvcmlnaW5hbCBldmVudCBub3QgZXhpc3QhJyk7XG4gICAgfVxuXG4gICAgc2VsZi5zZXRBbGxJdGVtU3RhdGVzKGUpO1xuICB9LFxuICBjbGVhck9uVG91Y2hTdGFydDogZnVuY3Rpb24gY2xlYXJPblRvdWNoU3RhcnQoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdUb3VjaCBvcmlnaW5hbCBldmVudCBub3QgZXhpc3QhJyk7XG4gICAgfVxuXG4gICAgc2VsZi5jbGVhckFjdGl2ZVN0YXRlKGUpO1xuICB9LFxuICBzZXRBbGxJdGVtU3RhdGVzOiBmdW5jdGlvbiBzZXRBbGxJdGVtU3RhdGVzKGUpIHtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuaXRlbSA9IGl0ZW07XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlKGUuaXRlbSwge1xuICAgICAgZXZlbnQ6IGUsXG4gICAgICBhY3Rpb246ICdhY3RpdmF0ZSdcbiAgICB9KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYWN0aXZlU3RhdGUgPSB0aGlzLmFjdGl2ZVN0YXRlO1xuICAgIHZhciBpbmFjdGl2ZVN0YXRlID0gdGhpcy5pbmFjdGl2ZVN0YXRlO1xuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmdldENvbWJvcygpO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLmdldEVkZ2VzKCk7XG4gICAgdmFyIHZFZGdlcyA9IGdyYXBoLmdldCgndmVkZ2VzJyk7XG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9zLmxlbmd0aDtcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcbiAgICB2YXIgdkVkZ2VMZW5ndGggPSB2RWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICB2YXIgaGFzU2VsZWN0ZWQgPSBub2RlLmhhc1N0YXRlKCdzZWxlY3RlZCcpO1xuXG4gICAgICBpZiAoc2VsZi5yZXNldFNlbGVjdGVkKSB7XG4gICAgICAgIGlmIChoYXNTZWxlY3RlZCkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCAnc2VsZWN0ZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIGFjdGl2ZVN0YXRlLCBmYWxzZSk7XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBpbmFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJvTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21ibyA9IGNvbWJvc1tpXTtcbiAgICAgIHZhciBoYXNTZWxlY3RlZCA9IGNvbWJvLmhhc1N0YXRlKCdzZWxlY3RlZCcpO1xuXG4gICAgICBpZiAoc2VsZi5yZXNldFNlbGVjdGVkKSB7XG4gICAgICAgIGlmIChoYXNTZWxlY3RlZCkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgYWN0aXZlU3RhdGUsIGZhbHNlKTtcblxuICAgICAgaWYgKGluYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvLCBpbmFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2RWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdkVkZ2UgPSB2RWRnZXNbaV07XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUodkVkZ2UsIGFjdGl2ZVN0YXRlLCBmYWxzZSk7XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZSh2RWRnZSwgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluYWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBpbmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIGFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICB2YXIgckVkZ2VzID0gaXRlbS5nZXRFZGdlcygpO1xuICAgIHZhciByRWRnZUxlZ250aCA9IHJFZGdlcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJFZGdlTGVnbnRoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gckVkZ2VzW2ldO1xuICAgICAgdmFyIG90aGVyRW5kID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZWRnZS5nZXRTb3VyY2UoKSA9PT0gaXRlbSkge1xuICAgICAgICBvdGhlckVuZCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdGhlckVuZCA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShvdGhlckVuZCwgaW5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUob3RoZXJFbmQsIGFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBpbmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgZWRnZS50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJhY3RpdmF0ZXJlbGF0aW9ucycsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGFjdGlvbjogJ2FjdGl2YXRlJ1xuICAgIH0pO1xuICB9LFxuICBjbGVhckFjdGl2ZVN0YXRlOiBmdW5jdGlvbiBjbGVhckFjdGl2ZVN0YXRlKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG5cbiAgICBpZiAoIXNlbGYuc2hvdWxkVXBkYXRlKGUuaXRlbSwge1xuICAgICAgZXZlbnQ6IGUsXG4gICAgICBhY3Rpb246ICdkZWFjdGl2YXRlJ1xuICAgIH0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGFjdGl2ZVN0YXRlID0gdGhpcy5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgaW5hY3RpdmVTdGF0ZSA9IHRoaXMuaW5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgYXV0b1BhaW50ID0gZ3JhcGguZ2V0KCdhdXRvUGFpbnQnKTtcbiAgICBncmFwaC5zZXRBdXRvUGFpbnQoZmFsc2UpO1xuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCkgfHwgW107XG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmdldENvbWJvcygpIHx8IFtdO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLmdldEVkZ2VzKCkgfHwgW107XG4gICAgdmFyIHZFZGdlcyA9IGdyYXBoLmdldCgndmVkZ2VzJykgfHwgW107XG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9zLmxlbmd0aDtcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcbiAgICB2YXIgdkVkZ2VMZW5ndGggPSB2RWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMobm9kZSwgW2FjdGl2ZVN0YXRlLCBpbmFjdGl2ZVN0YXRlXSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21ib0xlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY29tYm8gPSBjb21ib3NbaV07XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMoY29tYm8sIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZV0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKGVkZ2UsIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZSwgJ2RlYWN0aXZhdGUnXSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2RWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdkVkZ2UgPSB2RWRnZXNbaV07XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXModkVkZ2UsIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZSwgJ2RlYWN0aXZhdGUnXSk7XG4gICAgfVxuXG4gICAgZ3JhcGgucGFpbnQoKTtcbiAgICBncmFwaC5zZXRBdXRvUGFpbnQoYXV0b1BhaW50KTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcmFjdGl2YXRlcmVsYXRpb25zJywge1xuICAgICAgaXRlbTogZS5pdGVtIHx8IHNlbGYuZ2V0KCdpdGVtJyksXG4gICAgICBhY3Rpb246ICdkZWFjdGl2YXRlJ1xuICAgIH0pO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar min = Math.min,\n max = Math.max,\n abs = Math.abs;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n brushStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onMouseDown: function onMouseDown(e) {\n // 按在node上面拖动时候不应该是框选\n var item = e.item;\n var brush = this.brush;\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!brush) {\n brush = this.createBrush();\n }\n\n this.originPoint = {\n x: e.canvasX,\n y: e.canvasY\n };\n brush.attr({\n width: 0,\n height: 0\n });\n brush.show();\n this.dragging = true;\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.updateBrush(e);\n },\n onMouseUp: function onMouseUp(e) {\n var graph = this.graph; // TODO: 触发了 canvas:click 导致 clearStates\n\n if (!this.brush && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.brush.remove(true); // remove and destroy\n\n this.brush = null;\n this.getSelectedNodes(e);\n this.dragging = false;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n this.selectedNodes = [];\n this.selectedEdges = [];\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedNodes: function getSelectedNodes(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n originPoint = _a.originPoint,\n shouldUpdate = _a.shouldUpdate;\n\n var state = this.selectedState;\n var p1 = {\n x: e.x,\n y: e.y\n };\n var p2 = graph.getPointByCanvas(originPoint.x, originPoint.y);\n var left = min(p1.x, p2.x);\n var right = max(p1.x, p2.x);\n var top = min(p1.y, p2.y);\n var bottom = max(p1.y, p2.y);\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n var bbox = node.getBBox();\n\n if (bbox.centerX >= left && bbox.centerX <= right && bbox.centerY >= top && bbox.centerY <= bottom) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createBrush: function createBrush() {\n var self = this;\n var brush = self.graph.get('canvas').addShape('rect', {\n attrs: self.brushStyle,\n capture: false,\n name: 'brush-shape'\n });\n this.brush = brush;\n this.delegate = brush;\n return brush;\n },\n updateBrush: function updateBrush(e) {\n var originPoint = this.originPoint;\n this.brush.attr({\n width: abs(e.canvasX - originPoint.x),\n height: abs(e.canvasY - originPoint.y),\n x: min(e.canvasX, originPoint.x),\n y: min(e.canvasY, originPoint.y)\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2JydXNoLXNlbGVjdC5qcz81ZWFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9icnVzaC1zZWxlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWluID0gTWF0aC5taW4sXG4gICAgbWF4ID0gTWF0aC5tYXgsXG4gICAgYWJzID0gTWF0aC5hYnM7XG52YXIgREVGQVVMVF9UUklHR0VSID0gJ3NoaWZ0JztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2RyYWcnLCAnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBicnVzaFN0eWxlOiB7XG4gICAgICAgIGZpbGw6ICcjRUVGNkZGJyxcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuNCxcbiAgICAgICAgc3Ryb2tlOiAnI0RERUVGRScsXG4gICAgICAgIGxpbmVXaWR0aDogMVxuICAgICAgfSxcbiAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbiBvblNlbGVjdCgpIHt9LFxuICAgICAgb25EZXNlbGVjdDogZnVuY3Rpb24gb25EZXNlbGVjdCgpIHt9LFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJyxcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIGluY2x1ZGVFZGdlczogdHJ1ZSxcbiAgICAgIHNlbGVjdGVkRWRnZXM6IFtdLFxuICAgICAgc2VsZWN0ZWROb2RlczogW11cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZih0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHRoaXMudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjtcbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGJydXNoLXNlbGVjdCDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2RyYWcn44CBJ3NoaWZ0J+OAgSdjdHJsJyDmiJYgJ2FsdCdcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2RyYWcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcmFnc3RhcnQ6ICdvbk1vdXNlRG93bicsXG4gICAgICAgIGRyYWc6ICdvbk1vdXNlTW92ZScsXG4gICAgICAgIGRyYWdlbmQ6ICdvbk1vdXNlVXAnLFxuICAgICAgICAnY2FudmFzOmNsaWNrJzogJ2NsZWFyU3RhdGVzJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZHJhZ3N0YXJ0OiAnb25Nb3VzZURvd24nLFxuICAgICAgZHJhZzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGRyYWdlbmQ6ICdvbk1vdXNlVXAnLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcycsXG4gICAgICBrZXl1cDogJ29uS2V5VXAnLFxuICAgICAga2V5ZG93bjogJ29uS2V5RG93bidcbiAgICB9O1xuICB9LFxuICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZSkge1xuICAgIC8vIOaMieWcqG5vZGXkuIrpnaLmi5bliqjml7blgJnkuI3lupTor6XmmK/moYbpgIlcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICB2YXIgYnJ1c2ggPSB0aGlzLmJydXNoO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5jbGVhclN0YXRlcygpO1xuICAgIH1cblxuICAgIGlmICghYnJ1c2gpIHtcbiAgICAgIGJydXNoID0gdGhpcy5jcmVhdGVCcnVzaCgpO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICB4OiBlLmNhbnZhc1gsXG4gICAgICB5OiBlLmNhbnZhc1lcbiAgICB9O1xuICAgIGJydXNoLmF0dHIoe1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9KTtcbiAgICBicnVzaC5zaG93KCk7XG4gICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gIH0sXG4gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbiBvbk1vdXNlTW92ZShlKSB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUJydXNoKGUpO1xuICB9LFxuICBvbk1vdXNlVXA6IGZ1bmN0aW9uIG9uTW91c2VVcChlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsgLy8gVE9ETzog6Kem5Y+R5LqGIGNhbnZhczpjbGljayDlr7zoh7QgY2xlYXJTdGF0ZXNcblxuICAgIGlmICghdGhpcy5icnVzaCAmJiAhdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdkcmFnJyAmJiAhdGhpcy5rZXlkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5icnVzaC5yZW1vdmUodHJ1ZSk7IC8vIHJlbW92ZSBhbmQgZGVzdHJveVxuXG4gICAgdGhpcy5icnVzaCA9IG51bGw7XG4gICAgdGhpcy5nZXRTZWxlY3RlZE5vZGVzKGUpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgfSxcbiAgY2xlYXJTdGF0ZXM6IGZ1bmN0aW9uIGNsZWFyU3RhdGVzKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHNlbGVjdGVkU3RhdGUgPSBfYS5zZWxlY3RlZFN0YXRlO1xuXG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnZWRnZScsIHNlbGVjdGVkU3RhdGUpO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMub25EZXNlbGVjdCkge1xuICAgICAgdGhpcy5vbkRlc2VsZWN0KHRoaXMuc2VsZWN0ZWROb2RlcywgdGhpcy5zZWxlY3RlZEVkZ2VzKTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgZ2V0U2VsZWN0ZWROb2RlczogZnVuY3Rpb24gZ2V0U2VsZWN0ZWROb2RlcyhlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIG9yaWdpblBvaW50ID0gX2Eub3JpZ2luUG9pbnQsXG4gICAgICAgIHNob3VsZFVwZGF0ZSA9IF9hLnNob3VsZFVwZGF0ZTtcblxuICAgIHZhciBzdGF0ZSA9IHRoaXMuc2VsZWN0ZWRTdGF0ZTtcbiAgICB2YXIgcDEgPSB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9O1xuICAgIHZhciBwMiA9IGdyYXBoLmdldFBvaW50QnlDYW52YXMob3JpZ2luUG9pbnQueCwgb3JpZ2luUG9pbnQueSk7XG4gICAgdmFyIGxlZnQgPSBtaW4ocDEueCwgcDIueCk7XG4gICAgdmFyIHJpZ2h0ID0gbWF4KHAxLngsIHAyLngpO1xuICAgIHZhciB0b3AgPSBtaW4ocDEueSwgcDIueSk7XG4gICAgdmFyIGJvdHRvbSA9IG1heChwMS55LCBwMi55KTtcbiAgICB2YXIgc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHZhciBzZWxlY3RlZElkcyA9IFtdO1xuICAgIGdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCFub2RlLmlzVmlzaWJsZSgpKSByZXR1cm47IC8vIOmakOiXj+iKgueCueS4jeiDveiiq+mAieS4rVxuXG4gICAgICB2YXIgYmJveCA9IG5vZGUuZ2V0QkJveCgpO1xuXG4gICAgICBpZiAoYmJveC5jZW50ZXJYID49IGxlZnQgJiYgYmJveC5jZW50ZXJYIDw9IHJpZ2h0ICYmIGJib3guY2VudGVyWSA+PSB0b3AgJiYgYmJveC5jZW50ZXJZIDw9IGJvdHRvbSkge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKG5vZGUsICdzZWxlY3QnKSkge1xuICAgICAgICAgIHNlbGVjdGVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChtb2RlbC5pZCk7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIHN0YXRlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG5cbiAgICBpZiAodGhpcy5pbmNsdWRlRWRnZXMpIHtcbiAgICAgIC8vIOmAieS4rei+ue+8jOi+ueeahHNvdXJjZeWSjHRhcmdldOmDveWcqOmAieS4reeahOiKgueCueS4reaXtuaJjemAieS4rVxuICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG5vZGUuZ2V0T3V0RWRnZXMoKTtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIGlmICghZWRnZS5pc1Zpc2libGUoKSkgcmV0dXJuOyAvLyDpmpDol4/ovrnkuI3og73lpJ/ooqvpgInkuK1cblxuICAgICAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgc291cmNlID0gbW9kZWwuc291cmNlLFxuICAgICAgICAgICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7XG5cbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJZHMuaW5jbHVkZXMoc291cmNlKSAmJiBzZWxlY3RlZElkcy5pbmNsdWRlcyh0YXJnZXQpICYmIHNob3VsZFVwZGF0ZShlZGdlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBfdGhpcy5zZWxlY3RlZFN0YXRlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZEVkZ2VzID0gc2VsZWN0ZWRFZGdlcztcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBzZWxlY3RlZE5vZGVzO1xuXG4gICAgaWYgKHRoaXMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMub25TZWxlY3Qoc2VsZWN0ZWROb2Rlcywgc2VsZWN0ZWRFZGdlcyk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IHNlbGVjdGVkTm9kZXMsXG4gICAgICAgIGVkZ2VzOiBzZWxlY3RlZEVkZ2VzXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiB0cnVlXG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZUJydXNoOiBmdW5jdGlvbiBjcmVhdGVCcnVzaCgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGJydXNoID0gc2VsZi5ncmFwaC5nZXQoJ2NhbnZhcycpLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHNlbGYuYnJ1c2hTdHlsZSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgbmFtZTogJ2JydXNoLXNoYXBlJ1xuICAgIH0pO1xuICAgIHRoaXMuYnJ1c2ggPSBicnVzaDtcbiAgICB0aGlzLmRlbGVnYXRlID0gYnJ1c2g7XG4gICAgcmV0dXJuIGJydXNoO1xuICB9LFxuICB1cGRhdGVCcnVzaDogZnVuY3Rpb24gdXBkYXRlQnJ1c2goZSkge1xuICAgIHZhciBvcmlnaW5Qb2ludCA9IHRoaXMub3JpZ2luUG9pbnQ7XG4gICAgdGhpcy5icnVzaC5hdHRyKHtcbiAgICAgIHdpZHRoOiBhYnMoZS5jYW52YXNYIC0gb3JpZ2luUG9pbnQueCksXG4gICAgICBoZWlnaHQ6IGFicyhlLmNhbnZhc1kgLSBvcmlnaW5Qb2ludC55KSxcbiAgICAgIHg6IG1pbihlLmNhbnZhc1gsIG9yaWdpblBvaW50LngpLFxuICAgICAgeTogbWluKGUuY2FudmFzWSwgb3JpZ2luUG9pbnQueSlcbiAgICB9KTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlckxvd2VyQ2FzZSA9IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb2RlTG93ZXJDYXNlID0gY29kZS50b0xvd2VyQ2FzZSgpOyAvLyDmjInkvY8gY29udHJvbCDplK7ml7bvvIzlhYHorrjnlKjmiLforr7nva4gdHJpZ2dlciDkuLogY3RybFxuXG4gICAgaWYgKGNvZGVMb3dlckNhc2UgPT09IHRyaWdnZXJMb3dlckNhc2UgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnICYmIHRyaWdnZXJMb3dlckNhc2UgPT09ICdjdHJsJyB8fCBjb2RlTG93ZXJDYXNlID09PSAnY3RybCcgJiYgdHJpZ2dlckxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICB0aGlzLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgaWYgKHRoaXMuYnJ1c2gpIHtcbiAgICAgIC8vIOa4hemZpOaJgOaciemAieS4reeKtuaAgeWQju+8jOiuvue9ruaLluW+l+WKqOeKtuaAgeS4umZhbHNl77yM5bm25riF6Zmk5qGG6YCJ55qEYnJ1c2hcbiAgICAgIHRoaXMuYnJ1c2gucmVtb3ZlKHRydWUpO1xuICAgICAgdGhpcy5icnVzaCA9IG51bGw7XG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n multiple: true,\n trigger: DEFAULT_TRIGGER,\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (!self.multiple) {\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick'\n };\n }\n\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onClick: function onClick(evt) {\n var self = this;\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return;\n }\n\n var type = item.getType();\n var graph = self.graph,\n keydown = self.keydown,\n multiple = self.multiple,\n shouldUpdate = self.shouldUpdate,\n shouldBegin = self.shouldBegin;\n\n if (!shouldBegin.call(self, evt)) {\n return;\n } // allow to select multiple nodes but did not press a key || do not allow the select multiple nodes\n\n\n if (!keydown || !multiple) {\n var selected = graph.findAllByState('node', self.selectedState).concat(graph.findAllByState('combo', self.selectedState));\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (combo) {\n if (combo !== item) {\n graph.setItemState(combo, self.selectedState, false);\n }\n });\n }\n\n if (item.hasState(self.selectedState)) {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, false);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: false\n });\n } else {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, true);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: true\n });\n }\n },\n onCanvasClick: function onCanvasClick() {\n var _this = this;\n\n var graph = this.graph;\n var selected = graph.findAllByState('node', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (node) {\n graph.setItemState(node, _this.selectedState, false);\n });\n var selectedCombos = graph.findAllByState('combo', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selectedCombos, function (combo) {\n graph.setItemState(combo, _this.selectedState, false);\n });\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: [],\n combos: []\n },\n select: false\n });\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === this.trigger.toLowerCase() || code.toLowerCase() === 'control') {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n self.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NsaWNrLXNlbGVjdC5qcz9kMjVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7QUFDbEM7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9jbGljay1zZWxlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgREVGQVVMVF9UUklHR0VSID0gJ3NoaWZ0JztcbnZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBzZWxlY3RlZFN0YXRlOiAnc2VsZWN0ZWQnXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzOyAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcblxuICAgIGlmICghKEFMTE9XX0VWRU5UUy5pbmRleE9mKHNlbGYudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSA+IC0xKSkge1xuICAgICAgc2VsZi50cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBicnVzaC1zZWxlY3Qg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdkcmFnJ+OAgSdzaGlmdCfjgIEnY3RybCcg5oiWICdhbHQnXCIpO1xuICAgIH1cblxuICAgIGlmICghc2VsZi5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdjb21ibzpjbGljayc6ICdvbkNsaWNrJyxcbiAgICAgICAgJ2NhbnZhczpjbGljayc6ICdvbkNhbnZhc0NsaWNrJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAnY2FudmFzOmNsaWNrJzogJ29uQ2FudmFzQ2xpY2snLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhldnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5ncmFwaCxcbiAgICAgICAga2V5ZG93biA9IHNlbGYua2V5ZG93bixcbiAgICAgICAgbXVsdGlwbGUgPSBzZWxmLm11bHRpcGxlLFxuICAgICAgICBzaG91bGRVcGRhdGUgPSBzZWxmLnNob3VsZFVwZGF0ZSxcbiAgICAgICAgc2hvdWxkQmVnaW4gPSBzZWxmLnNob3VsZEJlZ2luO1xuXG4gICAgaWYgKCFzaG91bGRCZWdpbi5jYWxsKHNlbGYsIGV2dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGFsbG93IHRvIHNlbGVjdCBtdWx0aXBsZSBub2RlcyBidXQgZGlkIG5vdCBwcmVzcyBhIGtleSB8fCBkbyBub3QgYWxsb3cgdGhlIHNlbGVjdCBtdWx0aXBsZSBub2Rlc1xuXG5cbiAgICBpZiAoIWtleWRvd24gfHwgIW11bHRpcGxlKSB7XG4gICAgICB2YXIgc2VsZWN0ZWQgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIHNlbGYuc2VsZWN0ZWRTdGF0ZSkuY29uY2F0KGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHNlbGYuc2VsZWN0ZWRTdGF0ZSkpO1xuICAgICAgZWFjaChzZWxlY3RlZCwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgIGlmIChjb21ibyAhPT0gaXRlbSkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgc2VsZi5zZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpdGVtLmhhc1N0YXRlKHNlbGYuc2VsZWN0ZWRTdGF0ZSkpIHtcbiAgICAgIGlmIChzaG91bGRVcGRhdGUuY2FsbChzZWxmLCBldnQpKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBzZWxmLnNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIHNlbGYuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgICB2YXIgc2VsZWN0ZWRDb21ib3MgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnY29tYm8nLCBzZWxmLnNlbGVjdGVkU3RhdGUpO1xuICAgICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgICAgdGFyZ2V0OiBpdGVtLFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgICAgbm9kZXM6IHNlbGVjdGVkTm9kZXMsXG4gICAgICAgICAgY29tYm9zOiBzZWxlY3RlZENvbWJvc1xuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Q6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZS5jYWxsKHNlbGYsIGV2dCkpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHNlbGYuc2VsZWN0ZWRTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzZWxlY3RlZE5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxmLnNlbGVjdGVkU3RhdGUpO1xuICAgICAgdmFyIHNlbGVjdGVkQ29tYm9zID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2NvbWJvJywgc2VsZi5zZWxlY3RlZFN0YXRlKTtcbiAgICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICAgIHRhcmdldDogaXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICAgIGNvbWJvczogc2VsZWN0ZWRDb21ib3NcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG9uQ2FudmFzQ2xpY2s6IGZ1bmN0aW9uIG9uQ2FudmFzQ2xpY2soKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHNlbGVjdGVkID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCB0aGlzLnNlbGVjdGVkU3RhdGUpO1xuICAgIGVhY2goc2VsZWN0ZWQsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgX3RoaXMuc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIHZhciBzZWxlY3RlZENvbWJvcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHRoaXMuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgZWFjaChzZWxlY3RlZENvbWJvcywgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIF90aGlzLnNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgY29tYm9zOiBbXVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkgfHwgY29kZS50b0xvd2VyQ2FzZSgpID09PSAnY29udHJvbCcpIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlVcDogZnVuY3Rpb24gb25LZXlVcCgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5rZXlkb3duID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js ***! \******************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/*\n * @Author: Shiwu\n * @Description: 收起和展开 Combo\n */\nvar DEFAULT_TRIGGER = 'dblclick';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n relayout: true\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand-group 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"combo:\" + trigger] = 'onComboClick', _a;\n },\n onComboClick: function onComboClick(evt) {\n var item = evt.item;\n\n var _a = this,\n graph = _a.graph,\n relayout = _a.relayout;\n\n if (!item || item.destroyed || item.getType() !== 'combo') return;\n var model = item.getModel();\n var comboId = model.id;\n\n if (!comboId) {\n return;\n }\n\n graph.collapseExpandCombo(comboId);\n if (relayout && graph.get('layout')) graph.layout();else graph.refreshPositions();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NvbGxhcHNlLWV4cGFuZC1jb21iby5qcz9iZGNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0EsS0FBSztBQUNMLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEIsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9jb2xsYXBzZS1leHBhbmQtY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogU2hpd3VcbiAqIEBEZXNjcmlwdGlvbjog5pS26LW35ZKM5bGV5byAIENvbWJvXG4gKi9cbnZhciBERUZBVUxUX1RSSUdHRVIgPSAnZGJsY2xpY2snO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnZGJsY2xpY2snXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgcmVsYXlvdXQ6IHRydWVcbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgdHJpZ2dlcjsgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG5cbiAgICBpZiAoQUxMT1dfRVZFTlRTLmluY2x1ZGVzKHRoaXMudHJpZ2dlcikpIHtcbiAgICAgIHRyaWdnZXIgPSB0aGlzLnRyaWdnZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXIgPSBERUZBVUxUX1RSSUdHRVI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGNvbGxhcHNlLWV4cGFuZC1ncm91cCDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2NsaWNrJyDmiJYgJ2RibGNsaWNrJ1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2EgPSB7fSwgX2FbXCJjb21ibzpcIiArIHRyaWdnZXJdID0gJ29uQ29tYm9DbGljaycsIF9hO1xuICB9LFxuICBvbkNvbWJvQ2xpY2s6IGZ1bmN0aW9uIG9uQ29tYm9DbGljayhldnQpIHtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgcmVsYXlvdXQgPSBfYS5yZWxheW91dDtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCB8fCBpdGVtLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykgcmV0dXJuO1xuICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICB2YXIgY29tYm9JZCA9IG1vZGVsLmlkO1xuXG4gICAgaWYgKCFjb21ib0lkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ3JhcGguY29sbGFwc2VFeHBhbmRDb21ibyhjb21ib0lkKTtcbiAgICBpZiAocmVsYXlvdXQgJiYgZ3JhcGguZ2V0KCdsYXlvdXQnKSkgZ3JhcGgubGF5b3V0KCk7ZWxzZSBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js ***! \************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n /**\n * 发生收缩/扩展变化时的回调\n */\n trigger: DEFAULT_TRIGGER,\n onChange: function onChange() {}\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"node:\" + trigger] = 'onNodeClick', // 支持移动端事件\n _a.touchstart = 'onNodeClick', _a;\n },\n onNodeClick: function onNodeClick(e) {\n var item = e.item;\n if (!item) return; // 如果节点进行过更新,model 会进行 merge,直接改 model 就不能改布局,所以需要去改源数据\n\n var sourceData = this.graph.findDataById(item.get('id'));\n\n if (!sourceData) {\n return;\n }\n\n var children = sourceData.children; // 叶子节点的收缩和展开没有意义\n\n if (!children || children.length === 0) {\n return;\n }\n\n var collapsed = !sourceData.collapsed;\n\n if (!this.shouldBegin(e, collapsed)) {\n return;\n }\n\n sourceData.collapsed = collapsed;\n item.getModel().collapsed = collapsed;\n this.graph.emit('itemcollapsed', {\n item: e.item,\n collapsed: collapsed\n });\n\n if (!this.shouldUpdate(e, collapsed)) {\n return;\n }\n\n this.onChange(item, collapsed);\n this.graph.layout();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NvbGxhcHNlLWV4cGFuZC5qcz9jZGFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBLEtBQUs7QUFDTCxnQ0FBZ0M7O0FBRWhDO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NvbGxhcHNlLWV4cGFuZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBERUZBVUxUX1RSSUdHRVIgPSAnY2xpY2snO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnZGJsY2xpY2snXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiDlj5HnlJ/mlLbnvKkv5omp5bGV5Y+Y5YyW5pe255qE5Zue6LCDXG4gICAgICAgKi9cbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9XG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHRyaWdnZXI7IC8vIOajgOa1i+i+k+WFpeaYr+WQpuWQiOazlVxuXG4gICAgaWYgKEFMTE9XX0VWRU5UUy5pbmNsdWRlcyh0aGlzLnRyaWdnZXIpKSB7XG4gICAgICB0cmlnZ2VyID0gdGhpcy50cmlnZ2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjb2xsYXBzZS1leHBhbmQg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdjbGljaycg5oiWICdkYmxjbGljaydcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hID0ge30sIF9hW1wibm9kZTpcIiArIHRyaWdnZXJdID0gJ29uTm9kZUNsaWNrJywgLy8g5pSv5oyB56e75Yqo56uv5LqL5Lu2XG4gICAgX2EudG91Y2hzdGFydCA9ICdvbk5vZGVDbGljaycsIF9hO1xuICB9LFxuICBvbk5vZGVDbGljazogZnVuY3Rpb24gb25Ob2RlQ2xpY2soZSkge1xuICAgIHZhciBpdGVtID0gZS5pdGVtO1xuICAgIGlmICghaXRlbSkgcmV0dXJuOyAvLyDlpoLmnpzoioLngrnov5vooYzov4fmm7TmlrDvvIxtb2RlbCDkvJrov5vooYwgbWVyZ2XvvIznm7TmjqXmlLkgbW9kZWwg5bCx5LiN6IO95pS55biD5bGA77yM5omA5Lul6ZyA6KaB5Y675pS55rqQ5pWw5o2uXG5cbiAgICB2YXIgc291cmNlRGF0YSA9IHRoaXMuZ3JhcGguZmluZERhdGFCeUlkKGl0ZW0uZ2V0KCdpZCcpKTtcblxuICAgIGlmICghc291cmNlRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IHNvdXJjZURhdGEuY2hpbGRyZW47IC8vIOWPtuWtkOiKgueCueeahOaUtue8qeWSjOWxleW8gOayoeacieaEj+S5iVxuXG4gICAgaWYgKCFjaGlsZHJlbiB8fCBjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sbGFwc2VkID0gIXNvdXJjZURhdGEuY29sbGFwc2VkO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZEJlZ2luKGUsIGNvbGxhcHNlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzb3VyY2VEYXRhLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgICBpdGVtLmdldE1vZGVsKCkuY29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgnaXRlbWNvbGxhcHNlZCcsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGNvbGxhcHNlZDogY29sbGFwc2VkXG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlKGUsIGNvbGxhcHNlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKGl0ZW0sIGNvbGxhcHNlZCk7XG4gICAgdGhpcy5ncmFwaC5sYXlvdXQoKTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'drag'];\nvar DEFAULT_KEY = undefined;\nvar ALLOW_KEYS = ['shift', 'ctrl', 'control', 'alt', 'meta', undefined];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n key: DEFAULT_KEY,\n edgeConfig: {},\n getEdgeConfig: undefined\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 trigger 参数不合法,请输入 'click','drag'\");\n }\n\n if (self.key && ALLOW_KEYS.indexOf(self.key.toLowerCase()) === -1) {\n self.trigger = DEFAULT_KEY; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 key 参数不合法,请输入 'shift','ctrl','alt','control',或 undefined\");\n }\n\n var events;\n\n if (self.trigger === 'drag') {\n events = {\n 'node:dragstart': 'onClick',\n 'combo:dragstart': 'onClick',\n drag: 'updateEndPoint',\n 'node:drop': 'onClick',\n 'combo:drop': 'onClick',\n dragend: 'onDragEnd'\n };\n } else if (self.trigger === 'click') {\n events = {\n 'node:click': 'onClick',\n mousemove: 'updateEndPoint',\n 'edge:click': 'cancelCreating',\n 'canvas:click': 'cancelCreating',\n 'combo:click': 'onClick'\n };\n }\n\n if (self.key) {\n events.keydown = 'onKeyDown';\n events.keyup = 'onKeyUp';\n }\n\n return events;\n },\n onDragEnd: function onDragEnd(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var item = ev.item;\n if (!item || item.getID() === self.source || item.getType() !== 'node') self.cancelCreating({\n item: self.edge,\n x: ev.x,\n y: ev.y\n });\n },\n // 如果边的起点没有指定,则根据起点创建新边;如果起点已经指定而终点未指定,则指定终点\n onClick: function onClick(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var node = ev.item;\n var graph = self.graph;\n var model = node.getModel();\n var getEdgeConfig = self.getEdgeConfig; // 如果起点已经指定而终点未指定,则指定终点\n\n if (self.addingEdge && self.edge) {\n if (!self.shouldEnd.call(self, ev)) return;\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: self.source,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n var updateCfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n target: model.id\n }, edgeConfig);\n\n if (self.source === model.id) {\n updateCfg.type = 'loop';\n }\n\n graph.emit('beforecreateedge', {});\n graph.updateItem(self.edge, updateCfg, false);\n\n if (graph.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, self.edge.getModel()), {\n itemType: 'edge'\n });\n\n var after = {};\n after.edges = [addedModel];\n graph.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n graph.emit('aftercreateedge', {\n edge: self.edge\n }); // 暂时将该边的 capture 恢复为 true\n\n self.edge.getKeyShape().set('capture', true);\n self.edge = null;\n self.addingEdge = false;\n } else {\n // 如果边的起点没有指定,则根据起点创建新边\n if (!self.shouldBegin.call(self, ev)) return; // 获取自定义 edge 配置\n\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: model.id,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n self.edge = graph.addItem('edge', Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n source: model.id,\n target: model.id\n }, edgeConfig), false);\n self.source = model.id;\n self.addingEdge = true; // 暂时将该边的 capture 设置为 false,这样可以拾取到后面的元素\n\n self.edge.getKeyShape().set('capture', false);\n }\n },\n // 边的起点已经确定,边的末端跟随鼠标移动\n updateEndPoint: function updateEndPoint(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var point = {\n x: ev.x,\n y: ev.y\n }; // 若此时 source 节点已经被移除,结束添加边\n\n if (!self.graph.findById(self.source)) {\n self.addingEdge = false;\n return;\n }\n\n if (self.addingEdge && self.edge) {\n // 更新边的终点为鼠标位置\n self.graph.updateItem(self.edge, {\n target: point\n }, false);\n }\n },\n // 取消增加边,删除该边;或指定终点\n cancelCreating: function cancelCreating(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var graph = self.graph;\n var currentEdge = ev.item;\n\n if (self.addingEdge && ev.target && ev.target.isCanvas && ev.target.isCanvas()) {\n graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n return;\n }\n\n if (self.addingEdge && self.edge === currentEdge) {\n graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n }\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === self.key.toLowerCase()) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n\n if (self.addingEdge && self.edge) {\n // 清除正在增加的边\n self.graph.removeItem(self.edge, false);\n self.addingEdge = false;\n self.edge = null;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NyZWF0ZS1lZGdlLmpzP2FjNDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ087QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBOztBQUVBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLDZEQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxzQkFBc0Isc0RBQVE7QUFDOUI7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQSx5QkFBeUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzdDO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxtREFBbUQ7O0FBRW5EOztBQUVBLDJCQUEyQiw2REFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUEsd0NBQXdDLHNEQUFRO0FBQ2hEO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY3JlYXRlLWVkZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdjbGljayc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydjbGljaycsICdkcmFnJ107XG52YXIgREVGQVVMVF9LRVkgPSB1bmRlZmluZWQ7XG52YXIgQUxMT1dfS0VZUyA9IFsnc2hpZnQnLCAnY3RybCcsICdjb250cm9sJywgJ2FsdCcsICdtZXRhJywgdW5kZWZpbmVkXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAga2V5OiBERUZBVUxUX0tFWSxcbiAgICAgIGVkZ2VDb25maWc6IHt9LFxuICAgICAgZ2V0RWRnZUNvbmZpZzogdW5kZWZpbmVkXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzOyAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcblxuICAgIGlmICghKEFMTE9XX0VWRU5UUy5pbmRleE9mKHNlbGYudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSA+IC0xKSkge1xuICAgICAgc2VsZi50cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjcmVhdGUtZWRnZSDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2NsaWNrJ++8jCdkcmFnJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5rZXkgJiYgQUxMT1dfS0VZUy5pbmRleE9mKHNlbGYua2V5LnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgc2VsZi50cmlnZ2VyID0gREVGQVVMVF9LRVk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGNyZWF0ZS1lZGdlIOeahCBrZXkg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdzaGlmdCfvvIwnY3RybCfvvIwnYWx0J++8jCdjb250cm9sJ++8jOaIliB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgdmFyIGV2ZW50cztcblxuICAgIGlmIChzZWxmLnRyaWdnZXIgPT09ICdkcmFnJykge1xuICAgICAgZXZlbnRzID0ge1xuICAgICAgICAnbm9kZTpkcmFnc3RhcnQnOiAnb25DbGljaycsXG4gICAgICAgICdjb21ibzpkcmFnc3RhcnQnOiAnb25DbGljaycsXG4gICAgICAgIGRyYWc6ICd1cGRhdGVFbmRQb2ludCcsXG4gICAgICAgICdub2RlOmRyb3AnOiAnb25DbGljaycsXG4gICAgICAgICdjb21ibzpkcm9wJzogJ29uQ2xpY2snLFxuICAgICAgICBkcmFnZW5kOiAnb25EcmFnRW5kJ1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHNlbGYudHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgZXZlbnRzID0ge1xuICAgICAgICAnbm9kZTpjbGljayc6ICdvbkNsaWNrJyxcbiAgICAgICAgbW91c2Vtb3ZlOiAndXBkYXRlRW5kUG9pbnQnLFxuICAgICAgICAnZWRnZTpjbGljayc6ICdjYW5jZWxDcmVhdGluZycsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnY2FuY2VsQ3JlYXRpbmcnLFxuICAgICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHNlbGYua2V5KSB7XG4gICAgICBldmVudHMua2V5ZG93biA9ICdvbktleURvd24nO1xuICAgICAgZXZlbnRzLmtleXVwID0gJ29uS2V5VXAnO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG4gIH0sXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGV2KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmIChzZWxmLmtleSAmJiAhc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIGl0ZW0gPSBldi5pdGVtO1xuICAgIGlmICghaXRlbSB8fCBpdGVtLmdldElEKCkgPT09IHNlbGYuc291cmNlIHx8IGl0ZW0uZ2V0VHlwZSgpICE9PSAnbm9kZScpIHNlbGYuY2FuY2VsQ3JlYXRpbmcoe1xuICAgICAgaXRlbTogc2VsZi5lZGdlLFxuICAgICAgeDogZXYueCxcbiAgICAgIHk6IGV2LnlcbiAgICB9KTtcbiAgfSxcbiAgLy8g5aaC5p6c6L6555qE6LW354K55rKh5pyJ5oyH5a6a77yM5YiZ5qC55o2u6LW354K55Yib5bu65paw6L6577yb5aaC5p6c6LW354K55bey57uP5oyH5a6a6ICM57uI54K55pyq5oyH5a6a77yM5YiZ5oyH5a6a57uI54K5XG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZXYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgbm9kZSA9IGV2Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gc2VsZi5ncmFwaDtcbiAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgdmFyIGdldEVkZ2VDb25maWcgPSBzZWxmLmdldEVkZ2VDb25maWc7IC8vIOWmguaenOi1t+eCueW3sue7j+aMh+WumuiAjOe7iOeCueacquaMh+Wumu+8jOWImeaMh+Wumue7iOeCuVxuXG4gICAgaWYgKHNlbGYuYWRkaW5nRWRnZSAmJiBzZWxmLmVkZ2UpIHtcbiAgICAgIGlmICghc2VsZi5zaG91bGRFbmQuY2FsbChzZWxmLCBldikpIHJldHVybjtcbiAgICAgIHZhciBlZGdlQ29uZmlnID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZ2V0RWRnZUNvbmZpZyAmJiBpc0Z1bmN0aW9uKGdldEVkZ2VDb25maWcpKSB7XG4gICAgICAgIGVkZ2VDb25maWcgPSBnZXRFZGdlQ29uZmlnKHtcbiAgICAgICAgICBzb3VyY2U6IHNlbGYuc291cmNlLFxuICAgICAgICAgIHRhcmdldDogbW9kZWwuaWRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlQ29uZmlnID0gc2VsZi5lZGdlQ29uZmlnO1xuICAgICAgfVxuXG4gICAgICB2YXIgdXBkYXRlQ2ZnID0gX19hc3NpZ24oe1xuICAgICAgICB0YXJnZXQ6IG1vZGVsLmlkXG4gICAgICB9LCBlZGdlQ29uZmlnKTtcblxuICAgICAgaWYgKHNlbGYuc291cmNlID09PSBtb2RlbC5pZCkge1xuICAgICAgICB1cGRhdGVDZmcudHlwZSA9ICdsb29wJztcbiAgICAgIH1cblxuICAgICAgZ3JhcGguZW1pdCgnYmVmb3JlY3JlYXRlZWRnZScsIHt9KTtcbiAgICAgIGdyYXBoLnVwZGF0ZUl0ZW0oc2VsZi5lZGdlLCB1cGRhdGVDZmcsIGZhbHNlKTtcblxuICAgICAgaWYgKGdyYXBoLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgICAgdmFyIGFkZGVkTW9kZWwgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2VsZi5lZGdlLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgaXRlbVR5cGU6ICdlZGdlJ1xuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgYWZ0ZXIgPSB7fTtcbiAgICAgICAgYWZ0ZXIuZWRnZXMgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgIGdyYXBoLnB1c2hTdGFjaygnYWRkJywge1xuICAgICAgICAgIGJlZm9yZToge30sXG4gICAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5lbWl0KCdhZnRlcmNyZWF0ZWVkZ2UnLCB7XG4gICAgICAgIGVkZ2U6IHNlbGYuZWRnZVxuICAgICAgfSk7IC8vIOaaguaXtuWwhuivpei+ueeahCBjYXB0dXJlIOaBouWkjeS4uiB0cnVlXG5cbiAgICAgIHNlbGYuZWRnZS5nZXRLZXlTaGFwZSgpLnNldCgnY2FwdHVyZScsIHRydWUpO1xuICAgICAgc2VsZi5lZGdlID0gbnVsbDtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzovrnnmoTotbfngrnmsqHmnInmjIflrprvvIzliJnmoLnmja7otbfngrnliJvlu7rmlrDovrlcbiAgICAgIGlmICghc2VsZi5zaG91bGRCZWdpbi5jYWxsKHNlbGYsIGV2KSkgcmV0dXJuOyAvLyDojrflj5boh6rlrprkuYkgZWRnZSDphY3nva5cblxuICAgICAgdmFyIGVkZ2VDb25maWcgPSB2b2lkIDA7XG5cbiAgICAgIGlmIChnZXRFZGdlQ29uZmlnICYmIGlzRnVuY3Rpb24oZ2V0RWRnZUNvbmZpZykpIHtcbiAgICAgICAgZWRnZUNvbmZpZyA9IGdldEVkZ2VDb25maWcoe1xuICAgICAgICAgIHNvdXJjZTogbW9kZWwuaWQsXG4gICAgICAgICAgdGFyZ2V0OiBtb2RlbC5pZFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkZ2VDb25maWcgPSBzZWxmLmVkZ2VDb25maWc7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZWRnZSA9IGdyYXBoLmFkZEl0ZW0oJ2VkZ2UnLCBfX2Fzc2lnbih7XG4gICAgICAgIHNvdXJjZTogbW9kZWwuaWQsXG4gICAgICAgIHRhcmdldDogbW9kZWwuaWRcbiAgICAgIH0sIGVkZ2VDb25maWcpLCBmYWxzZSk7XG4gICAgICBzZWxmLnNvdXJjZSA9IG1vZGVsLmlkO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gdHJ1ZTsgLy8g5pqC5pe25bCG6K+l6L6555qEIGNhcHR1cmUg6K6+572u5Li6IGZhbHNl77yM6L+Z5qC35Y+v5Lul5ou+5Y+W5Yiw5ZCO6Z2i55qE5YWD57SgXG5cbiAgICAgIHNlbGYuZWRnZS5nZXRLZXlTaGFwZSgpLnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIC8vIOi+ueeahOi1t+eCueW3sue7j+ehruWumu+8jOi+ueeahOacq+err+i3n+maj+m8oOagh+enu+WKqFxuICB1cGRhdGVFbmRQb2ludDogZnVuY3Rpb24gdXBkYXRlRW5kUG9pbnQoZXYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgcG9pbnQgPSB7XG4gICAgICB4OiBldi54LFxuICAgICAgeTogZXYueVxuICAgIH07IC8vIOiLpeatpOaXtiBzb3VyY2Ug6IqC54K55bey57uP6KKr56e76Zmk77yM57uT5p2f5re75Yqg6L65XG5cbiAgICBpZiAoIXNlbGYuZ3JhcGguZmluZEJ5SWQoc2VsZi5zb3VyY2UpKSB7XG4gICAgICBzZWxmLmFkZGluZ0VkZ2UgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5hZGRpbmdFZGdlICYmIHNlbGYuZWRnZSkge1xuICAgICAgLy8g5pu05paw6L6555qE57uI54K55Li66byg5qCH5L2N572uXG4gICAgICBzZWxmLmdyYXBoLnVwZGF0ZUl0ZW0oc2VsZi5lZGdlLCB7XG4gICAgICAgIHRhcmdldDogcG9pbnRcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIC8vIOWPlua2iOWinuWKoOi+ue+8jOWIoOmZpOivpei+ue+8m+aIluaMh+Wumue7iOeCuVxuICBjYW5jZWxDcmVhdGluZzogZnVuY3Rpb24gY2FuY2VsQ3JlYXRpbmcoZXYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdyYXBoO1xuICAgIHZhciBjdXJyZW50RWRnZSA9IGV2Lml0ZW07XG5cbiAgICBpZiAoc2VsZi5hZGRpbmdFZGdlICYmIGV2LnRhcmdldCAmJiBldi50YXJnZXQuaXNDYW52YXMgJiYgZXYudGFyZ2V0LmlzQ2FudmFzKCkpIHtcbiAgICAgIGdyYXBoLnJlbW92ZUl0ZW0oc2VsZi5lZGdlLCBmYWxzZSk7XG4gICAgICBzZWxmLmVkZ2UgPSBudWxsO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuYWRkaW5nRWRnZSAmJiBzZWxmLmVkZ2UgPT09IGN1cnJlbnRFZGdlKSB7XG4gICAgICBncmFwaC5yZW1vdmVJdGVtKHNlbGYuZWRnZSwgZmFsc2UpO1xuICAgICAgc2VsZi5lZGdlID0gbnVsbDtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gc2VsZi5rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgc2VsZi5rZXlkb3duID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5rZXlkb3duID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmIChzZWxmLmFkZGluZ0VkZ2UgJiYgc2VsZi5lZGdlKSB7XG4gICAgICAvLyDmuIXpmaTmraPlnKjlop7liqDnmoTovrlcbiAgICAgIHNlbGYuZ3JhcGgucmVtb3ZlSXRlbShzZWxmLmVkZ2UsIGZhbHNlKTtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgICAgc2VsZi5lZGdlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n\n\nvar cloneEvent = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneEvent,\n isNaN = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNaN;\nvar abs = Math.abs;\nvar DRAG_OFFSET = 10;\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n // drag-canvas 可拖动的扩展范围,默认为 0,即最多可以拖动一屏的位置\n // 当设置的值大于 0 时,即拖动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可拖动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0,\n allowDragOnItem: false\n };\n },\n getEvents: function getEvents() {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'onMouseUp',\n keyup: 'onKeyUp',\n focus: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onMouseUp'\n };\n },\n updateViewport: function updateViewport(e) {\n var origin = this.origin;\n var clientX = +e.clientX;\n var clientY = +e.clientY;\n\n if (isNaN(clientX) || isNaN(clientY)) {\n return;\n }\n\n var dx = clientX - origin.x;\n var dy = clientY - origin.y;\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n this.origin = {\n x: clientX,\n y: clientY\n };\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n if (graphCanvasBBox.minX <= width + expandWidth && graphCanvasBBox.minX + dx > width + expandWidth || graphCanvasBBox.maxX + expandWidth >= 0 && graphCanvasBBox.maxX + expandWidth + dx < 0) {\n dx = 0;\n }\n\n if (graphCanvasBBox.minY <= height + expandHeight && graphCanvasBBox.minY + dy > height + expandHeight || graphCanvasBBox.maxY + expandHeight >= 0 && graphCanvasBBox.maxY + expandHeight + dy < 0) {\n dy = 0;\n }\n\n this.graph.translate(dx, dy);\n },\n onTouchStart: function onTouchStart(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n self.onMouseDown(e);\n },\n onMouseDown: function onMouseDown(e) {\n var self = this;\n var event = e.originalEvent;\n\n if (event && e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && event.button !== 0) {\n return;\n }\n\n if (e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && typeof window !== 'undefined' && window.event && !window.event.buttons && !window.event.button) {\n return;\n }\n\n if (!this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (self.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n self.origin = {\n x: e.clientX,\n y: e.clientY\n };\n self.dragging = false;\n\n if (this.enableOptimize) {\n // 拖动 canvas 过程中隐藏所有的边及label\n var graph = this.graph;\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n });\n }\n\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n var child = children_1[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n child.set('ori-visibility', child.get('ori-visibility') || child.get('visible'));\n child.hide();\n }\n }\n }\n }\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布,结束拖拽\n\n if (event1 && event2) {\n this.onMouseUp(e);\n return;\n }\n\n e.preventDefault();\n self.onMouseMove(e);\n },\n onMouseMove: function onMouseMove(e) {\n var graph = this.graph;\n if (this.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n e = cloneEvent(e);\n\n if (!this.origin) {\n return;\n }\n\n if (!this.dragging) {\n if (abs(this.origin.x - e.clientX) + abs(this.origin.y - e.clientY) < DRAG_OFFSET) {\n return;\n }\n\n if (this.shouldBegin.call(this, e)) {\n e.type = 'dragstart';\n graph.emit('canvas:dragstart', e);\n this.originPosition = {\n x: e.clientX,\n y: e.clientY\n };\n this.dragging = true;\n }\n } else {\n e.type = 'drag';\n graph.emit('canvas:drag', e);\n }\n\n if (this.shouldUpdate.call(this, e)) {\n this.updateViewport(e);\n }\n },\n onMouseUp: function onMouseUp(e) {\n var _a, _b;\n\n var graph = this.graph;\n if (this.keydown) return;\n var currentZoom = graph.getZoom();\n var modeController = graph.get('modeController');\n var zoomCanvas = (_b = (_a = modeController === null || modeController === void 0 ? void 0 : modeController.modes[modeController.mode]) === null || _a === void 0 ? void 0 : _a.filter(function (behavior) {\n return behavior.type === 'zoom-canvas';\n })) === null || _b === void 0 ? void 0 : _b[0];\n var optimizeZoom = zoomCanvas ? zoomCanvas.optimizeZoom || 0.1 : 0;\n\n if (this.enableOptimize) {\n // 拖动结束后显示所有的边\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n });\n }\n\n if (currentZoom > optimizeZoom) {\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {\n var child = children_2[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n var oriVis = child.get('ori-visibility');\n if (oriVis) child.show();\n }\n }\n }\n }\n }\n\n if (!this.dragging) {\n this.origin = null;\n return;\n }\n\n e = cloneEvent(e);\n\n if (this.shouldEnd.call(this, e)) {\n this.updateViewport(e);\n }\n\n e.type = 'dragend';\n e.dx = e.clientX - this.originPosition.x;\n e.dy = e.clientY - this.originPosition.y;\n graph.emit('canvas:dragend', e);\n this.endDrag();\n },\n endDrag: function endDrag() {\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (ALLOW_EVENTS.indexOf(code.toLowerCase()) > -1) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n this.keydown = false;\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY2FudmFzLmpzPzNmNTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ2I7QUFDM0IsaUJBQWlCLDZDQUFJO0FBQ3JCLFlBQVksNkNBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHFEQUFPO0FBQ25DO0FBQ0E7O0FBRUEsbUJBQW1CLHFEQUFPO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBOztBQUVBLDZDQUE2QyxhQUFhO0FBQzFEO0FBQ0E7O0FBRUEsK0NBQStDLHdCQUF3QjtBQUN2RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBLCtDQUErQyxhQUFhO0FBQzVEO0FBQ0E7O0FBRUEsaURBQWlELHdCQUF3QjtBQUN6RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHNkV2ZW50IH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgVXRpbCBmcm9tICcuLi91dGlsJztcbnZhciBjbG9uZUV2ZW50ID0gVXRpbC5jbG9uZUV2ZW50LFxuICAgIGlzTmFOID0gVXRpbC5pc05hTjtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBEUkFHX09GRlNFVCA9IDEwO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaXJlY3Rpb246ICdib3RoJyxcbiAgICAgIGVuYWJsZU9wdGltaXplOiBmYWxzZSxcbiAgICAgIC8vIGRyYWctY2FudmFzIOWPr+aLluWKqOeahOaJqeWxleiMg+WbtO+8jOm7mOiupOS4uiAw77yM5Y2z5pyA5aSa5Y+v5Lul5ouW5Yqo5LiA5bGP55qE5L2N572uXG4gICAgICAvLyDlvZPorr7nva7nmoTlgLzlpKfkuo4gMCDml7bvvIzljbPmi5bliqjlj6/ku6XotoXov4fkuIDlsY9cbiAgICAgIC8vIOW9k+iuvue9rueahOWAvOWwj+S6jiAwIOaXtu+8jOebuOW9k+S6jue8qeWwj+S6huWPr+aLluWKqOiMg+WbtFxuICAgICAgLy8g5YW35L2T5a6e5L6L5Y+v5Y+C6ICD77yaaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS9tZG4vcm1zX2Y4YzZhMC9hZnRzL2ltZy9BKklGZm9TNjdfSHNzQUFBQUFBQUFBQUFBQUFSUW5BUVxuICAgICAgc2NhbGFibGVSYW5nZTogMCxcbiAgICAgIGFsbG93RHJhZ09uSXRlbTogZmFsc2VcbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZHJhZ3N0YXJ0OiAnb25Nb3VzZURvd24nLFxuICAgICAgZHJhZzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGRyYWdlbmQ6ICdvbk1vdXNlVXAnLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdvbk1vdXNlVXAnLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGZvY3VzOiAnb25LZXlVcCcsXG4gICAgICBrZXlkb3duOiAnb25LZXlEb3duJyxcbiAgICAgIHRvdWNoc3RhcnQ6ICdvblRvdWNoU3RhcnQnLFxuICAgICAgdG91Y2htb3ZlOiAnb25Ub3VjaE1vdmUnLFxuICAgICAgdG91Y2hlbmQ6ICdvbk1vdXNlVXAnXG4gICAgfTtcbiAgfSxcbiAgdXBkYXRlVmlld3BvcnQ6IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KGUpIHtcbiAgICB2YXIgb3JpZ2luID0gdGhpcy5vcmlnaW47XG4gICAgdmFyIGNsaWVudFggPSArZS5jbGllbnRYO1xuICAgIHZhciBjbGllbnRZID0gK2UuY2xpZW50WTtcblxuICAgIGlmIChpc05hTihjbGllbnRYKSB8fCBpc05hTihjbGllbnRZKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBkeCA9IGNsaWVudFggLSBvcmlnaW4ueDtcbiAgICB2YXIgZHkgPSBjbGllbnRZIC0gb3JpZ2luLnk7XG5cbiAgICBpZiAodGhpcy5nZXQoJ2RpcmVjdGlvbicpID09PSAneCcpIHtcbiAgICAgIGR5ID0gMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ3knKSB7XG4gICAgICBkeCA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW4gPSB7XG4gICAgICB4OiBjbGllbnRYLFxuICAgICAgeTogY2xpZW50WVxuICAgIH07XG4gICAgdmFyIHdpZHRoID0gdGhpcy5ncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICB2YXIgZ3JhcGhDYW52YXNCQm94ID0gdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgZXhwYW5kV2lkdGggPSB0aGlzLnNjYWxhYmxlUmFuZ2U7XG4gICAgdmFyIGV4cGFuZEhlaWdodCA9IHRoaXMuc2NhbGFibGVSYW5nZTsgLy8g6IulIHNjYWxhYmxlUmFuZ2Ug5pivIDB+MSDnmoTlsI/mlbDvvIzliJnkvZzkuLrmr5TkvovogIPomZFcblxuICAgIGlmIChleHBhbmRXaWR0aCA8IDEgJiYgZXhwYW5kV2lkdGggPiAtMSkge1xuICAgICAgZXhwYW5kV2lkdGggPSB3aWR0aCAqIGV4cGFuZFdpZHRoO1xuICAgICAgZXhwYW5kSGVpZ2h0ID0gaGVpZ2h0ICogZXhwYW5kSGVpZ2h0O1xuICAgIH1cblxuICAgIGlmIChncmFwaENhbnZhc0JCb3gubWluWCA8PSB3aWR0aCArIGV4cGFuZFdpZHRoICYmIGdyYXBoQ2FudmFzQkJveC5taW5YICsgZHggPiB3aWR0aCArIGV4cGFuZFdpZHRoIHx8IGdyYXBoQ2FudmFzQkJveC5tYXhYICsgZXhwYW5kV2lkdGggPj0gMCAmJiBncmFwaENhbnZhc0JCb3gubWF4WCArIGV4cGFuZFdpZHRoICsgZHggPCAwKSB7XG4gICAgICBkeCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGdyYXBoQ2FudmFzQkJveC5taW5ZIDw9IGhlaWdodCArIGV4cGFuZEhlaWdodCAmJiBncmFwaENhbnZhc0JCb3gubWluWSArIGR5ID4gaGVpZ2h0ICsgZXhwYW5kSGVpZ2h0IHx8IGdyYXBoQ2FudmFzQkJveC5tYXhZICsgZXhwYW5kSGVpZ2h0ID49IDAgJiYgZ3JhcGhDYW52YXNCQm94Lm1heFkgKyBleHBhbmRIZWlnaHQgKyBkeSA8IDApIHtcbiAgICAgIGR5ID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLmdyYXBoLnRyYW5zbGF0ZShkeCwgZHkpO1xuICB9LFxuICBvblRvdWNoU3RhcnQ6IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3VjaGVzID0gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07IC8vIOWmguaenOaYr+WPjOaMh+aTjeS9nO+8jOS4jeWFgeiuuOaLluaLveeUu+W4g1xuXG4gICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2VsZi5vbk1vdXNlRG93bihlKTtcbiAgfSxcbiAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGV2ZW50ID0gZS5vcmlnaW5hbEV2ZW50O1xuXG4gICAgaWYgKGV2ZW50ICYmIGUubmFtZSAhPT0gRzZFdmVudC5UT1VDSFNUQVJUICYmIGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlLm5hbWUgIT09IEc2RXZlbnQuVE9VQ0hTVEFSVCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZXZlbnQgJiYgIXdpbmRvdy5ldmVudC5idXR0b25zICYmICF3aW5kb3cuZXZlbnQuYnV0dG9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgIHZhciB0YXJnZXRJc0NhbnZhcyA9IHRhcmdldCAmJiB0YXJnZXQuaXNDYW52YXMgJiYgdGFyZ2V0LmlzQ2FudmFzKCk7XG4gICAgaWYgKCF0aGlzLmFsbG93RHJhZ09uSXRlbSAmJiAhdGFyZ2V0SXNDYW52YXMpIHJldHVybjtcbiAgICBzZWxmLm9yaWdpbiA9IHtcbiAgICAgIHg6IGUuY2xpZW50WCxcbiAgICAgIHk6IGUuY2xpZW50WVxuICAgIH07XG4gICAgc2VsZi5kcmFnZ2luZyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlT3B0aW1pemUpIHtcbiAgICAgIC8vIOaLluWKqCBjYW52YXMg6L+H56iL5Lit6ZqQ6JeP5omA5pyJ55qE6L655Y+KbGFiZWxcbiAgICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZWRnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIHNoYXBlcyA9IGVkZ2VzW2ldLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgIGlmICghc2hhcGVzKSBjb250aW51ZTtcbiAgICAgICAgc2hhcGVzLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDAsIG5vZGVMZW4gPSBub2Rlcy5sZW5ndGg7IGogPCBub2RlTGVuOyBqKyspIHtcbiAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5vZGVzW2pdLmdldENvbnRhaW5lcigpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBjb250YWluZXIuZ2V0KCdjaGlsZHJlbicpO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgY2hpbGRyZW5fMSA9IGNoaWxkcmVuOyBfaSA8IGNoaWxkcmVuXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5fMVtfaV07XG4gICAgICAgICAgdmFyIGlzS2V5U2hhcGUgPSBjaGlsZC5nZXQoJ2lzS2V5U2hhcGUnKTtcblxuICAgICAgICAgIGlmICghaXNLZXlTaGFwZSkge1xuICAgICAgICAgICAgY2hpbGQuc2V0KCdvcmktdmlzaWJpbGl0eScsIGNoaWxkLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBjaGlsZC5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICBjaGlsZC5oaWRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBvblRvdWNoTW92ZTogZnVuY3Rpb24gb25Ub3VjaE1vdmUoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdOyAvLyDlpoLmnpzmmK/lj4zmjIfmk43kvZzvvIzkuI3lhYHorrjmi5bmi73nlLvluIPvvIznu5PmnZ/mi5bmi71cblxuICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICB0aGlzLm9uTW91c2VVcChlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2VsZi5vbk1vdXNlTW92ZShlKTtcbiAgfSxcbiAgb25Nb3VzZU1vdmU6IGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGUpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIGlmICh0aGlzLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgdmFyIHRhcmdldElzQ2FudmFzID0gdGFyZ2V0ICYmIHRhcmdldC5pc0NhbnZhcyAmJiB0YXJnZXQuaXNDYW52YXMoKTtcbiAgICBpZiAoIXRoaXMuYWxsb3dEcmFnT25JdGVtICYmICF0YXJnZXRJc0NhbnZhcykgcmV0dXJuO1xuICAgIGUgPSBjbG9uZUV2ZW50KGUpO1xuXG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgaWYgKGFicyh0aGlzLm9yaWdpbi54IC0gZS5jbGllbnRYKSArIGFicyh0aGlzLm9yaWdpbi55IC0gZS5jbGllbnRZKSA8IERSQUdfT0ZGU0VUKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBlKSkge1xuICAgICAgICBlLnR5cGUgPSAnZHJhZ3N0YXJ0JztcbiAgICAgICAgZ3JhcGguZW1pdCgnY2FudmFzOmRyYWdzdGFydCcsIGUpO1xuICAgICAgICB0aGlzLm9yaWdpblBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IGUuY2xpZW50WCxcbiAgICAgICAgICB5OiBlLmNsaWVudFlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGUudHlwZSA9ICdkcmFnJztcbiAgICAgIGdyYXBoLmVtaXQoJ2NhbnZhczpkcmFnJywgZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmlld3BvcnQoZSk7XG4gICAgfVxuICB9LFxuICBvbk1vdXNlVXA6IGZ1bmN0aW9uIG9uTW91c2VVcChlKSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgaWYgKHRoaXMua2V5ZG93bikgcmV0dXJuO1xuICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSBncmFwaC5nZXQoJ21vZGVDb250cm9sbGVyJyk7XG4gICAgdmFyIHpvb21DYW52YXMgPSAoX2IgPSAoX2EgPSBtb2RlQ29udHJvbGxlciA9PT0gbnVsbCB8fCBtb2RlQ29udHJvbGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kZUNvbnRyb2xsZXIubW9kZXNbbW9kZUNvbnRyb2xsZXIubW9kZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5maWx0ZXIoZnVuY3Rpb24gKGJlaGF2aW9yKSB7XG4gICAgICByZXR1cm4gYmVoYXZpb3IudHlwZSA9PT0gJ3pvb20tY2FudmFzJztcbiAgICB9KSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzBdO1xuICAgIHZhciBvcHRpbWl6ZVpvb20gPSB6b29tQ2FudmFzID8gem9vbUNhbnZhcy5vcHRpbWl6ZVpvb20gfHwgMC4xIDogMDtcblxuICAgIGlmICh0aGlzLmVuYWJsZU9wdGltaXplKSB7XG4gICAgICAvLyDmi5bliqjnu5PmnZ/lkI7mmL7npLrmiYDmnInnmoTovrlcbiAgICAgIHZhciBlZGdlcyA9IGdyYXBoLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlZGdlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgc2hhcGVzID0gZWRnZXNbaV0uZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgaWYgKCFzaGFwZXMpIGNvbnRpbnVlO1xuICAgICAgICBzaGFwZXMuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgICB2YXIgb3JpVmlzID0gc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgIGlmIChvcmlWaXMpIHNoYXBlLnNob3coKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50Wm9vbSA+IG9wdGltaXplWm9vbSkge1xuICAgICAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwLCBub2RlTGVuID0gbm9kZXMubGVuZ3RoOyBqIDwgbm9kZUxlbjsgaisrKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5vZGVzW2pdLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXQoJ2NoaWxkcmVuJyk7XG5cbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGNoaWxkcmVuXzIgPSBjaGlsZHJlbjsgX2kgPCBjaGlsZHJlbl8yLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5fMltfaV07XG4gICAgICAgICAgICB2YXIgaXNLZXlTaGFwZSA9IGNoaWxkLmdldCgnaXNLZXlTaGFwZScpO1xuXG4gICAgICAgICAgICBpZiAoIWlzS2V5U2hhcGUpIHtcbiAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IGNoaWxkLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgaWYgKG9yaVZpcykgY2hpbGQuc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgdGhpcy5vcmlnaW4gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUgPSBjbG9uZUV2ZW50KGUpO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmlld3BvcnQoZSk7XG4gICAgfVxuXG4gICAgZS50eXBlID0gJ2RyYWdlbmQnO1xuICAgIGUuZHggPSBlLmNsaWVudFggLSB0aGlzLm9yaWdpblBvc2l0aW9uLng7XG4gICAgZS5keSA9IGUuY2xpZW50WSAtIHRoaXMub3JpZ2luUG9zaXRpb24ueTtcbiAgICBncmFwaC5lbWl0KCdjYW52YXM6ZHJhZ2VuZCcsIGUpO1xuICAgIHRoaXMuZW5kRHJhZygpO1xuICB9LFxuICBlbmREcmFnOiBmdW5jdGlvbiBlbmREcmFnKCkge1xuICAgIHRoaXMub3JpZ2luID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5kcmFnYmVnaW4gPSBmYWxzZTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFMTE9XX0VWRU5UUy5pbmRleE9mKGNvZGUudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgc2VsZi5rZXlkb3duID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5rZXlkb3duID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICAgIHRoaXMub3JpZ2luID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5kcmFnYmVnaW4gPSBmYWxzZTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\");\n\n/*\n * @Author: moyee\n * @LastEditors: moyee\n * @Description: 拖动 Combo\n */\n\n\n\n\nvar calculationItemsBBox = _util__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calculationItemsBBox;\n/**\n * 遍历拖动的 Combo 下的所有 Combo\n * @param data 拖动的 Combo\n * @param fn\n */\n\nvar traverseCombo = function traverseCombo(data, fn) {\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n\n if (combos.length === 0) {\n return false;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n traverseCombo(child, fn);\n });\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n enableDelegate: false,\n delegateStyle: {},\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n activeState: '',\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n return {\n 'combo:dragstart': 'onDragStart',\n 'combo:drag': 'onDrag',\n 'combo:dragend': 'onDragEnd',\n 'combo:drop': 'onDrop',\n 'node:drop': 'onNodeDrop',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave'\n };\n },\n validationCombo: function validationCombo(evt) {\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return false;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n var graph = this.graph;\n var item = evt.item;\n this.currentShouldEnd = true;\n if (!this.validationCombo(evt)) return;\n this.targets = []; // 获取所有选中的 Combo\n\n var combos = graph.findAllByState('combo', this.selectedState);\n var currentCombo = item.get('id');\n var dragCombos = combos.filter(function (combo) {\n var comboId = combo.get('id');\n return currentCombo === comboId;\n });\n\n if (dragCombos.length === 0) {\n this.targets.push(item);\n } else {\n this.targets = combos;\n }\n\n if (this.activeState) {\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId) {\n var parentCombo = graph.findById(model.parentId);\n\n if (parentCombo) {\n graph.setItemState(parentCombo, _this.activeState, true);\n }\n }\n });\n }\n\n this.point = {};\n this.originPoint = {};\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.currentItemChildCombos = [];\n traverseCombo(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n var model = param.getModel();\n\n _this.currentItemChildCombos.push(model.id);\n\n return true;\n });\n },\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n\n if (this.enableDelegate) {\n this.updateDelegate(evt);\n } else {\n if (this.activeState) {\n var graph_1 = this.graph;\n var item = evt.item;\n var model_1 = item.getModel(); // 拖动过程中实时计算距离\n\n var combos = graph_1.getCombos();\n var sourceBBox = item.getBBox();\n var centerX_1 = sourceBBox.centerX,\n centerY_1 = sourceBBox.centerY,\n width_1 = sourceBBox.width; // 参与计算的 Combo,需要排除掉:\n // 1、拖动 combo 自己\n // 2、拖动 combo 的 parent\n // 3、拖动 Combo 的 children\n\n var calcCombos = combos.filter(function (combo) {\n var cmodel = combo.getModel(); // 被拖动的是最外层的 Combo,无 parent,排除自身和子元素\n\n if (!model_1.parentId) {\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n }\n\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n });\n calcCombos.map(function (combo) {\n var _a = combo.getBBox(),\n cx = _a.centerX,\n cy = _a.centerY,\n w = _a.width; // 拖动的 combo 和要进入的 combo 之间的距离\n\n\n var disX = centerX_1 - cx;\n var disY = centerY_1 - cy; // 圆心距离\n\n var distance = 2 * Math.sqrt(disX * disX + disY * disY);\n\n if (width_1 + w - distance > 0.8 * width_1) {\n graph_1.setItemState(combo, _this.activeState, true);\n } else {\n graph_1.setItemState(combo, _this.activeState, false);\n }\n });\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt);\n });\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this; // 当启用 delegate 时,拖动结束时需要更新 combo\n\n\n if (this.enableDelegate || restore) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt, restore);\n });\n }\n },\n onDrop: function onDrop(evt) {\n var _this = this; // 被放下的目标 combo\n\n\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !item || !this.targets || item.destroyed) return;\n var graph = this.graph;\n var targetModel = item.getModel();\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId !== targetModel.id) {\n if (_this.activeState) {\n graph.setItemState(item, _this.activeState, false);\n } // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n\n\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo, targetModel.id);\n } else {\n graph.updateCombo(combo);\n }\n } else {\n graph.updateCombo(item);\n }\n });\n this.end(item, evt); // 如果已经拖放下了,则不需要再通过距离判断了\n\n this.endComparison = true;\n },\n onNodeDrop: function onNodeDrop(evt) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return;\n var graph = this.graph;\n var item = evt.item;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n var droppedCombo; // 如果被放置的的节点有 comboId,且这个 comboId 与正在被拖拽的 combo 的父 id 不相同,则更新父亲为 comboId\n\n if (comboId) {\n if (this.activeState) {\n var combo = graph.findById(comboId);\n graph.setItemState(combo, this.activeState, false);\n }\n\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n if (comboId !== combo.getID()) {\n droppedCombo = graph.findById(comboId);\n if (comboId !== combo.getModel().parentId) graph.updateComboTree(combo, comboId);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } else {\n // 如果被放置的节点没有 comboId,且正在被拖拽的 combo 有父 id,则更新父亲为 undefined\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n var model = combo.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(combo);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } // 如果已经拖放下了,则不需要再通过距离判断了\n\n\n this.endComparison = true;\n this.end(droppedCombo, evt);\n },\n onDragEnter: function onDragEnter(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, true);\n }\n },\n onDragLeave: function onDragLeave(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, false);\n }\n },\n onDragEnd: function onDragEnd(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var item = evt.item;\n\n if (this.currentShouldEnd) {\n this.updatePositions(evt);\n }\n\n var parentCombo = this.getParentCombo(item.getModel().parentId);\n var graph = this.graph;\n\n if (parentCombo && this.activeState) {\n graph.setItemState(parentCombo, this.activeState, false);\n }\n\n this.end(undefined, evt);\n },\n end: function end(comboDropedOn, evt) {\n var _this = this;\n\n if (!this.origin) return;\n var graph = this.graph; // 删除delegate shape\n\n if (this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n delegateGroup.clear();\n this.delegateShape = null;\n }\n\n if (comboDropedOn && this.activeState) {\n graph.setItemState(comboDropedOn, this.activeState, false);\n } // 若没有被放置的 combo,则是被放置在画布上\n\n\n if (!comboDropedOn) {\n this.targets.map(function (combo) {\n // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo);\n } else {\n graph.updateCombo(combo);\n }\n });\n }\n\n this.point = [];\n this.origin = null;\n this.originPoint = null;\n this.targets.length = 0;\n },\n\n /**\n * 遍历 comboTree,分别更新 node 和 combo\n * @param data\n * @param fn\n */\n traverse: function traverse(data, fn) {\n var _this = this;\n\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n _this.traverse(child, fn);\n });\n var nodes = data.get('nodes');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(nodes, function (child) {\n _this.traverse(child, fn);\n });\n }\n },\n updateCombo: function updateCombo(item, evt, restore) {\n var _this = this;\n\n this.traverse(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n _this.updateSignleItem(param, evt, restore);\n\n return true;\n });\n },\n\n /**\n *\n * @param item 当前正在拖动的元素\n * @param evt\n */\n updateSignleItem: function updateSignleItem(item, evt, restore) {\n var origin = this.origin;\n var graph = this.graph;\n var model = item.getModel();\n var itemId = item.get('id');\n\n if (!this.point[itemId]) {\n this.point[itemId] = {\n x: model.x,\n y: model.y\n };\n }\n\n var x = evt.x - origin.x + this.point[itemId].x;\n var y = evt.y - origin.y + this.point[itemId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n graph.updateItem(item, {\n x: x,\n y: y\n });\n },\n\n /**\n * 根据 ID 获取父 Combo\n * @param parentId 父 Combo ID\n */\n getParentCombo: function getParentCombo(parentId) {\n var graph = this.graph;\n\n if (!parentId) {\n return undefined;\n }\n\n var parentCombo = graph.findById(parentId);\n\n if (!parentCombo) {\n return undefined;\n }\n\n return parentCombo;\n },\n updateDelegate: function updateDelegate(evt) {\n var graph = this.graph; // 当没有 delegate shape 时创建\n\n if (!this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n var bbox = null;\n\n if (this.targets.length > 1) {\n bbox = calculationItemsBBox(this.targets);\n } else {\n bbox = this.targets[0].getBBox();\n }\n\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height,\n minX = bbox.minX,\n minY = bbox.minY;\n this.originPoint = {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n };\n\n var attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].delegateStyle), this.delegateStyle);\n\n this.delegateShape = delegateGroup.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: bbox.width,\n height: bbox.height,\n x: bbox.x,\n y: bbox.y\n }, attrs),\n name: 'combo-delegate-shape'\n });\n this.delegateShape.set('capture', false);\n this.delegate = this.delegateShape;\n } else {\n var clientX = evt.x - this.origin.x + this.originPoint.minX;\n var clientY = evt.y - this.origin.y + this.originPoint.minY;\n this.delegateShape.attr({\n x: clientX,\n y: clientY\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY29tYm8uanM/NzQxYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWtDO0FBQ1A7QUFDSTtBQUMvQiwyQkFBMkIsNkNBQUk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCOzs7QUFHM0I7QUFDQSxvQ0FBb0M7O0FBRXBDOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQSxxQkFBcUI7OztBQUdyQjtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjs7O0FBR3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCOztBQUV4QjtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHLEVBQUUsK0NBQU07O0FBRTlDO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLypcbiAqIEBBdXRob3I6IG1veWVlXG4gKiBATGFzdEVkaXRvcnM6IG1veWVlXG4gKiBARGVzY3JpcHRpb246IOaLluWKqCBDb21ib1xuICovXG5cbmltcG9ydCB7IGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBVdGlsIGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xudmFyIGNhbGN1bGF0aW9uSXRlbXNCQm94ID0gVXRpbC5jYWxjdWxhdGlvbkl0ZW1zQkJveDtcbi8qKlxuICog6YGN5Y6G5ouW5Yqo55qEIENvbWJvIOS4i+eahOaJgOaciSBDb21ib1xuICogQHBhcmFtIGRhdGEg5ouW5Yqo55qEIENvbWJvXG4gKiBAcGFyYW0gZm5cbiAqL1xuXG52YXIgdHJhdmVyc2VDb21ibyA9IGZ1bmN0aW9uIHRyYXZlcnNlQ29tYm8oZGF0YSwgZm4pIHtcbiAgaWYgKGZuKGRhdGEpID09PSBmYWxzZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkYXRhKSB7XG4gICAgdmFyIGNvbWJvcyA9IGRhdGEuZ2V0KCdjb21ib3MnKTtcblxuICAgIGlmIChjb21ib3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZWFjaChjb21ib3MsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgdHJhdmVyc2VDb21ibyhjaGlsZCwgZm4pO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZURlbGVnYXRlOiBmYWxzZSxcbiAgICAgIGRlbGVnYXRlU3R5bGU6IHt9LFxuICAgICAgLy8g5ouW5Yqo6IqC54K56L+H56iL5Lit5piv5ZCm5Y+q5pS55Y+YIENvbWJvIOeahOWkp+Wwj++8jOiAjOS4jeaUueWPmOWFtue7k+aehFxuICAgICAgb25seUNoYW5nZUNvbWJvU2l6ZTogZmFsc2UsXG4gICAgICAvLyDmi5bliqjov4fnqIvkuK3nm67moIcgY29tYm8g54q25oCB5qC35byPXG4gICAgICBhY3RpdmVTdGF0ZTogJycsXG4gICAgICBzZWxlY3RlZFN0YXRlOiAnc2VsZWN0ZWQnXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjb21ibzpkcmFnc3RhcnQnOiAnb25EcmFnU3RhcnQnLFxuICAgICAgJ2NvbWJvOmRyYWcnOiAnb25EcmFnJyxcbiAgICAgICdjb21ibzpkcmFnZW5kJzogJ29uRHJhZ0VuZCcsXG4gICAgICAnY29tYm86ZHJvcCc6ICdvbkRyb3AnLFxuICAgICAgJ25vZGU6ZHJvcCc6ICdvbk5vZGVEcm9wJyxcbiAgICAgICdjb21ibzpkcmFnZW50ZXInOiAnb25EcmFnRW50ZXInLFxuICAgICAgJ2NvbWJvOmRyYWdsZWF2ZSc6ICdvbkRyYWdMZWF2ZSdcbiAgICB9O1xuICB9LFxuICB2YWxpZGF0aW9uQ29tYm86IGZ1bmN0aW9uIHZhbGlkYXRpb25Db21ibyhldnQpIHtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZS5jYWxsKHRoaXMsIGV2dCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHR5cGUgIT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcbiAgICB0aGlzLnRhcmdldHMgPSBbXTsgLy8g6I635Y+W5omA5pyJ6YCJ5Lit55qEIENvbWJvXG5cbiAgICB2YXIgY29tYm9zID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2NvbWJvJywgdGhpcy5zZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgY3VycmVudENvbWJvID0gaXRlbS5nZXQoJ2lkJyk7XG4gICAgdmFyIGRyYWdDb21ib3MgPSBjb21ib3MuZmlsdGVyKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgdmFyIGNvbWJvSWQgPSBjb21iby5nZXQoJ2lkJyk7XG4gICAgICByZXR1cm4gY3VycmVudENvbWJvID09PSBjb21ib0lkO1xuICAgIH0pO1xuXG4gICAgaWYgKGRyYWdDb21ib3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRhcmdldHMucHVzaChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXRzID0gY29tYm9zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICB2YXIgbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChtb2RlbC5wYXJlbnRJZCkge1xuICAgICAgICAgIHZhciBwYXJlbnRDb21ibyA9IGdyYXBoLmZpbmRCeUlkKG1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmIChwYXJlbnRDb21ibykge1xuICAgICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKHBhcmVudENvbWJvLCBfdGhpcy5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50ID0ge307XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IHt9O1xuICAgIHRoaXMub3JpZ2luID0ge1xuICAgICAgeDogZXZ0LngsXG4gICAgICB5OiBldnQueVxuICAgIH07XG4gICAgdGhpcy5jdXJyZW50SXRlbUNoaWxkQ29tYm9zID0gW107XG4gICAgdHJhdmVyc2VDb21ibyhpdGVtLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgIGlmIChwYXJhbS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbW9kZWwgPSBwYXJhbS5nZXRNb2RlbCgpO1xuXG4gICAgICBfdGhpcy5jdXJyZW50SXRlbUNoaWxkQ29tYm9zLnB1c2gobW9kZWwuaWQpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfSxcbiAgb25EcmFnOiBmdW5jdGlvbiBvbkRyYWcoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmVuYWJsZURlbGVnYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZURlbGVnYXRlKGV2dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIHZhciBncmFwaF8xID0gdGhpcy5ncmFwaDtcbiAgICAgICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICAgICAgdmFyIG1vZGVsXzEgPSBpdGVtLmdldE1vZGVsKCk7IC8vIOaLluWKqOi/h+eoi+S4reWunuaXtuiuoeeul+i3neemu1xuXG4gICAgICAgIHZhciBjb21ib3MgPSBncmFwaF8xLmdldENvbWJvcygpO1xuICAgICAgICB2YXIgc291cmNlQkJveCA9IGl0ZW0uZ2V0QkJveCgpO1xuICAgICAgICB2YXIgY2VudGVyWF8xID0gc291cmNlQkJveC5jZW50ZXJYLFxuICAgICAgICAgICAgY2VudGVyWV8xID0gc291cmNlQkJveC5jZW50ZXJZLFxuICAgICAgICAgICAgd2lkdGhfMSA9IHNvdXJjZUJCb3gud2lkdGg7IC8vIOWPguS4juiuoeeul+eahCBDb21ib++8jOmcgOimgeaOkumZpOaOie+8mlxuICAgICAgICAvLyAx44CB5ouW5YqoIGNvbWJvIOiHquW3sVxuICAgICAgICAvLyAy44CB5ouW5YqoIGNvbWJvIOeahCBwYXJlbnRcbiAgICAgICAgLy8gM+OAgeaLluWKqCBDb21ibyDnmoQgY2hpbGRyZW5cblxuICAgICAgICB2YXIgY2FsY0NvbWJvcyA9IGNvbWJvcy5maWx0ZXIoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgdmFyIGNtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7IC8vIOiiq+aLluWKqOeahOaYr+acgOWkluWxgueahCBDb21ib++8jOaXoCBwYXJlbnTvvIzmjpLpmaToh6rouqvlkozlrZDlhYPntKBcblxuICAgICAgICAgIGlmICghbW9kZWxfMS5wYXJlbnRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNtb2RlbC5pZCAhPT0gbW9kZWxfMS5pZCAmJiAhX3RoaXMuY3VycmVudEl0ZW1DaGlsZENvbWJvcy5pbmNsdWRlcyhjbW9kZWwuaWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjbW9kZWwuaWQgIT09IG1vZGVsXzEuaWQgJiYgIV90aGlzLmN1cnJlbnRJdGVtQ2hpbGRDb21ib3MuaW5jbHVkZXMoY21vZGVsLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNhbGNDb21ib3MubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIHZhciBfYSA9IGNvbWJvLmdldEJCb3goKSxcbiAgICAgICAgICAgICAgY3ggPSBfYS5jZW50ZXJYLFxuICAgICAgICAgICAgICBjeSA9IF9hLmNlbnRlclksXG4gICAgICAgICAgICAgIHcgPSBfYS53aWR0aDsgLy8g5ouW5Yqo55qEIGNvbWJvIOWSjOimgei/m+WFpeeahCBjb21ibyDkuYvpl7TnmoTot53nprtcblxuXG4gICAgICAgICAgdmFyIGRpc1ggPSBjZW50ZXJYXzEgLSBjeDtcbiAgICAgICAgICB2YXIgZGlzWSA9IGNlbnRlcllfMSAtIGN5OyAvLyDlnIblv4Pot53nprtcblxuICAgICAgICAgIHZhciBkaXN0YW5jZSA9IDIgKiBNYXRoLnNxcnQoZGlzWCAqIGRpc1ggKyBkaXNZICogZGlzWSk7XG5cbiAgICAgICAgICBpZiAod2lkdGhfMSArIHcgLSBkaXN0YW5jZSA+IDAuOCAqIHdpZHRoXzEpIHtcbiAgICAgICAgICAgIGdyYXBoXzEuc2V0SXRlbVN0YXRlKGNvbWJvLCBfdGhpcy5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyYXBoXzEuc2V0SXRlbVN0YXRlKGNvbWJvLCBfdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGVhY2godGhpcy50YXJnZXRzLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBfdGhpcy51cGRhdGVDb21ibyhpdGVtLCBldnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVQb3NpdGlvbnM6IGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9ucyhldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyDlvZPlkK/nlKggZGVsZWdhdGUg5pe277yM5ouW5Yqo57uT5p2f5pe26ZyA6KaB5pu05pawIGNvbWJvXG5cblxuICAgIGlmICh0aGlzLmVuYWJsZURlbGVnYXRlIHx8IHJlc3RvcmUpIHtcbiAgICAgIGVhY2godGhpcy50YXJnZXRzLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBfdGhpcy51cGRhdGVDb21ibyhpdGVtLCBldnQsIHJlc3RvcmUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBvbkRyb3A6IGZ1bmN0aW9uIG9uRHJvcChldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyDooqvmlL7kuIvnmoTnm67moIcgY29tYm9cblxuXG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgaXRlbSk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0LCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKTtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNob3VsZEVuZCB8fCAhaXRlbSB8fCAhdGhpcy50YXJnZXRzIHx8IGl0ZW0uZGVzdHJveWVkKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgdGFyZ2V0TW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgIHZhciBtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmIChtb2RlbC5wYXJlbnRJZCAhPT0gdGFyZ2V0TW9kZWwuaWQpIHtcbiAgICAgICAgaWYgKF90aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIF90aGlzLmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICAgIH0gLy8g5bCGIENvbWJvIOaUvue9ruWIsOafkOS4qiBDb21ibyDkuIrpnaLml7bvvIzlj6rmnInlvZMgb25seUNoYW5nZUNvbWJvU2l6ZSDkuLogZmFsc2Ug5pe25YCZ5omN5pu05pawIENvbWJvIOe7k+aehFxuXG5cbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvLCB0YXJnZXRNb2RlbC5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncmFwaC51cGRhdGVDb21ibyhpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVuZChpdGVtLCBldnQpOyAvLyDlpoLmnpzlt7Lnu4/mi5bmlL7kuIvkuobvvIzliJnkuI3pnIDopoHlho3pgJrov4fot53nprvliKTmlq3kuoZcblxuICAgIHRoaXMuZW5kQ29tcGFyaXNvbiA9IHRydWU7XG4gIH0sXG4gIG9uTm9kZURyb3A6IGZ1bmN0aW9uIG9uTm9kZURyb3AoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy50YXJnZXRzIHx8IHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGNvbWJvSWQgPSBpdGVtLmdldE1vZGVsKCkuY29tYm9JZDtcbiAgICB2YXIgbmV3UGFyZW50Q29tYm8gPSBjb21ib0lkID8gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdGhpcy5zaG91bGRFbmQuY2FsbCh0aGlzLCBldnQsIG5ld1BhcmVudENvbWJvKTtcbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy5jdXJyZW50U2hvdWxkRW5kKSByZXR1cm47XG4gICAgdmFyIGRyb3BwZWRDb21ibzsgLy8g5aaC5p6c6KKr5pS+572u55qE55qE6IqC54K55pyJIGNvbWJvSWTvvIzkuJTov5nkuKogY29tYm9JZCDkuI7mraPlnKjooqvmi5bmi73nmoQgY29tYm8g55qE54i2IGlkIOS4jeebuOWQjO+8jOWImeabtOaWsOeItuS6suS4uiBjb21ib0lkXG5cbiAgICBpZiAoY29tYm9JZCkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgdmFyIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCk7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICBpZiAoIV90aGlzLm9ubHlDaGFuZ2VDb21ib1NpemUpIHtcbiAgICAgICAgICBpZiAoY29tYm9JZCAhPT0gY29tYm8uZ2V0SUQoKSkge1xuICAgICAgICAgICAgZHJvcHBlZENvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCk7XG4gICAgICAgICAgICBpZiAoY29tYm9JZCAhPT0gY29tYm8uZ2V0TW9kZWwoKS5wYXJlbnRJZCkgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvLCBjb21ib0lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5aaC5p6c6KKr5pS+572u55qE6IqC54K55rKh5pyJIGNvbWJvSWTvvIzkuJTmraPlnKjooqvmi5bmi73nmoQgY29tYm8g5pyJ54i2IGlk77yM5YiZ5pu05paw54i25Lqy5Li6IHVuZGVmaW5lZFxuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgdmFyIG1vZGVsID0gY29tYm8uZ2V0TW9kZWwoKTtcblxuICAgICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUoY29tYm8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ibyhjb21ibyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gLy8g5aaC5p6c5bey57uP5ouW5pS+5LiL5LqG77yM5YiZ5LiN6ZyA6KaB5YaN6YCa6L+H6Led56a75Yik5pat5LqGXG5cblxuICAgIHRoaXMuZW5kQ29tcGFyaXNvbiA9IHRydWU7XG4gICAgdGhpcy5lbmQoZHJvcHBlZENvbWJvLCBldnQpO1xuICB9LFxuICBvbkRyYWdFbnRlcjogZnVuY3Rpb24gb25EcmFnRW50ZXIoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0aW9uQ29tYm8oZXZ0KSkgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LFxuICBvbkRyYWdMZWF2ZTogZnVuY3Rpb24gb25EcmFnTGVhdmUoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0aW9uQ29tYm8oZXZ0KSkgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSxcbiAgb25EcmFnRW5kOiBmdW5jdGlvbiBvbkRyYWdFbmQoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50U2hvdWxkRW5kKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQpO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRDb21ibyA9IHRoaXMuZ2V0UGFyZW50Q29tYm8oaXRlbS5nZXRNb2RlbCgpLnBhcmVudElkKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKHBhcmVudENvbWJvICYmIHRoaXMuYWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShwYXJlbnRDb21ibywgdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuZW5kKHVuZGVmaW5lZCwgZXZ0KTtcbiAgfSxcbiAgZW5kOiBmdW5jdGlvbiBlbmQoY29tYm9Ecm9wZWRPbiwgZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOyAvLyDliKDpmaRkZWxlZ2F0ZSBzaGFwZVxuXG4gICAgaWYgKHRoaXMuZGVsZWdhdGVTaGFwZSkge1xuICAgICAgdmFyIGRlbGVnYXRlR3JvdXAgPSBncmFwaC5nZXQoJ2RlbGVnYXRlR3JvdXAnKTtcbiAgICAgIGRlbGVnYXRlR3JvdXAuY2xlYXIoKTtcbiAgICAgIHRoaXMuZGVsZWdhdGVTaGFwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNvbWJvRHJvcGVkT24gJiYgdGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvRHJvcGVkT24sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9IC8vIOiLpeayoeacieiiq+aUvue9rueahCBjb21ib++8jOWImeaYr+iiq+aUvue9ruWcqOeUu+W4g+S4ilxuXG5cbiAgICBpZiAoIWNvbWJvRHJvcGVkT24pIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgIC8vIOWwhiBDb21ibyDmlL7nva7liLDmn5DkuKogQ29tYm8g5LiK6Z2i5pe277yM5Y+q5pyJ5b2TIG9ubHlDaGFuZ2VDb21ib1NpemUg5Li6IGZhbHNlIOaXtuWAmeaJjeabtOaWsCBDb21ibyDnu5PmnoRcbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ibyhjb21ibyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucG9pbnQgPSBbXTtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IG51bGw7XG4gICAgdGhpcy50YXJnZXRzLmxlbmd0aCA9IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOmBjeWOhiBjb21ib1RyZWXvvIzliIbliKvmm7TmlrAgbm9kZSDlkowgY29tYm9cbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIGZuXG4gICAqL1xuICB0cmF2ZXJzZTogZnVuY3Rpb24gdHJhdmVyc2UoZGF0YSwgZm4pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGZuKGRhdGEpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRhKSB7XG4gICAgICB2YXIgY29tYm9zID0gZGF0YS5nZXQoJ2NvbWJvcycpO1xuICAgICAgZWFjaChjb21ib3MsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBfdGhpcy50cmF2ZXJzZShjaGlsZCwgZm4pO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9kZXMgPSBkYXRhLmdldCgnbm9kZXMnKTtcbiAgICAgIGVhY2gobm9kZXMsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBfdGhpcy50cmF2ZXJzZShjaGlsZCwgZm4pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVDb21ibzogZnVuY3Rpb24gdXBkYXRlQ29tYm8oaXRlbSwgZXZ0LCByZXN0b3JlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMudHJhdmVyc2UoaXRlbSwgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICBpZiAocGFyYW0uZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMudXBkYXRlU2lnbmxlSXRlbShwYXJhbSwgZXZ0LCByZXN0b3JlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIOW9k+WJjeato+WcqOaLluWKqOeahOWFg+e0oFxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICB1cGRhdGVTaWdubGVJdGVtOiBmdW5jdGlvbiB1cGRhdGVTaWdubGVJdGVtKGl0ZW0sIGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBvcmlnaW4gPSB0aGlzLm9yaWdpbjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICB2YXIgaXRlbUlkID0gaXRlbS5nZXQoJ2lkJyk7XG5cbiAgICBpZiAoIXRoaXMucG9pbnRbaXRlbUlkXSkge1xuICAgICAgdGhpcy5wb2ludFtpdGVtSWRdID0ge1xuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciB4ID0gZXZ0LnggLSBvcmlnaW4ueCArIHRoaXMucG9pbnRbaXRlbUlkXS54O1xuICAgIHZhciB5ID0gZXZ0LnkgLSBvcmlnaW4ueSArIHRoaXMucG9pbnRbaXRlbUlkXS55O1xuXG4gICAgaWYgKHJlc3RvcmUpIHtcbiAgICAgIHggKz0gb3JpZ2luLnggLSBldnQueDtcbiAgICAgIHkgKz0gb3JpZ2luLnkgLSBldnQueTtcbiAgICB9XG5cbiAgICBncmFwaC51cGRhdGVJdGVtKGl0ZW0sIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOagueaNriBJRCDojrflj5bniLYgQ29tYm9cbiAgICogQHBhcmFtIHBhcmVudElkIOeItiBDb21ibyBJRFxuICAgKi9cbiAgZ2V0UGFyZW50Q29tYm86IGZ1bmN0aW9uIGdldFBhcmVudENvbWJvKHBhcmVudElkKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghcGFyZW50SWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudENvbWJvID0gZ3JhcGguZmluZEJ5SWQocGFyZW50SWQpO1xuXG4gICAgaWYgKCFwYXJlbnRDb21ibykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Q29tYm87XG4gIH0sXG4gIHVwZGF0ZURlbGVnYXRlOiBmdW5jdGlvbiB1cGRhdGVEZWxlZ2F0ZShldnQpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOyAvLyDlvZPmsqHmnIkgZGVsZWdhdGUgc2hhcGUg5pe25Yib5bu6XG5cbiAgICBpZiAoIXRoaXMuZGVsZWdhdGVTaGFwZSkge1xuICAgICAgdmFyIGRlbGVnYXRlR3JvdXAgPSBncmFwaC5nZXQoJ2RlbGVnYXRlR3JvdXAnKTtcbiAgICAgIHZhciBiYm94ID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMudGFyZ2V0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGJib3ggPSBjYWxjdWxhdGlvbkl0ZW1zQkJveCh0aGlzLnRhcmdldHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJveCA9IHRoaXMudGFyZ2V0c1swXS5nZXRCQm94KCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB4ID0gYmJveC54LFxuICAgICAgICAgIHkgPSBiYm94LnksXG4gICAgICAgICAgd2lkdGggPSBiYm94LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IGJib3guaGVpZ2h0LFxuICAgICAgICAgIG1pblggPSBiYm94Lm1pblgsXG4gICAgICAgICAgbWluWSA9IGJib3gubWluWTtcbiAgICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIG1pblg6IG1pblgsXG4gICAgICAgIG1pblk6IG1pbllcbiAgICAgIH07XG5cbiAgICAgIHZhciBhdHRycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBHbG9iYWwuZGVsZWdhdGVTdHlsZSksIHRoaXMuZGVsZWdhdGVTdHlsZSk7XG5cbiAgICAgIHRoaXMuZGVsZWdhdGVTaGFwZSA9IGRlbGVnYXRlR3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgd2lkdGg6IGJib3gud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodCxcbiAgICAgICAgICB4OiBiYm94LngsXG4gICAgICAgICAgeTogYmJveC55XG4gICAgICAgIH0sIGF0dHJzKSxcbiAgICAgICAgbmFtZTogJ2NvbWJvLWRlbGVnYXRlLXNoYXBlJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUuc2V0KCdjYXB0dXJlJywgZmFsc2UpO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGVTaGFwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNsaWVudFggPSBldnQueCAtIHRoaXMub3JpZ2luLnggKyB0aGlzLm9yaWdpblBvaW50Lm1pblg7XG4gICAgICB2YXIgY2xpZW50WSA9IGV2dC55IC0gdGhpcy5vcmlnaW4ueSArIHRoaXMub3JpZ2luUG9pbnQubWluWTtcbiAgICAgIHRoaXMuZGVsZWdhdGVTaGFwZS5hdHRyKHtcbiAgICAgICAgeDogY2xpZW50WCxcbiAgICAgICAgeTogY2xpZW50WVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n updateEdge: true,\n delegateStyle: {},\n // 是否开启delegate\n enableDelegate: false,\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n comboActiveState: '',\n selectedState: 'selected',\n enableOptimize: false,\n enableDebounce: false,\n enableStack: true\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave',\n 'combo:drop': 'onDropCombo',\n 'node:drop': 'onDropNode',\n 'canvas:drop': 'onDropCanvas',\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onDragEnd'\n };\n },\n validationCombo: function validationCombo(item) {\n if (!this.origin || !item || item.destroyed) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onTouchStart: function onTouchStart(e) {\n if (!e.item) return;\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDragStart(e);\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n self.onDragEnd(e);\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDrag(e);\n },\n\n /**\n * 开始拖动节点\n * @param evt\n */\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n this.currentShouldEnd = true;\n\n if (!this.shouldBegin.call(this, evt)) {\n return;\n }\n\n var item = evt.item;\n\n if (!item || item.destroyed || item.hasLocked()) {\n return;\n } // 拖动时,设置拖动元素的 capture 为false,则不拾取拖动的元素\n\n\n var group = item.getContainer();\n group.set('capture', false);\n if (!this.cachedCaptureItems) this.cachedCaptureItems = [];\n this.cachedCaptureItems.push(item); // 如果拖动的target 是linkPoints / anchorPoints 则不允许拖动\n\n var target = evt.target;\n\n if (target) {\n var isAnchorPoint = target.get('isAnchorPoint');\n\n if (isAnchorPoint) {\n return;\n }\n }\n\n var graph = this.graph;\n this.targets = []; // 将节点拖入到指定的 Combo\n\n this.targetCombo = null; // 获取所有选中的元素\n\n var nodes = graph.findAllByState('node', this.selectedState);\n var currentNodeId = item.get('id'); // 当前拖动的节点是否是选中的节点\n\n var dragNodes = nodes.filter(function (node) {\n var nodeId = node.get('id');\n return currentNodeId === nodeId;\n }); // 只拖动当前节点\n\n if (dragNodes.length === 0) {\n this.targets.push(item);\n } else if (nodes.length > 1) {\n // 拖动多个节点\n nodes.forEach(function (node) {\n var locked = node.hasLocked();\n\n if (!locked) {\n _this.targets.push(node);\n }\n });\n } else {\n this.targets.push(item);\n }\n\n var beforeDragNodes = [];\n this.targets.forEach(function (t) {\n beforeDragNodes.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(t.getModel()));\n });\n this.set('beforeDragNodes', beforeDragNodes);\n this.hidenEdge = {};\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return;\n _this.hidenEdge[edge.getID()] = true;\n edge.hide();\n });\n });\n }\n\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.point = {};\n this.originPoint = {};\n },\n\n /**\n * 持续拖动节点\n * @param evt\n */\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return;\n }\n\n if (this.get('enableDelegate')) {\n this.updateDelegate(evt);\n } else {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge')\n });else this.targets.map(function (target) {\n _this.update(target, evt);\n });\n }\n },\n\n /**\n * 拖动结束,设置拖动元素capture为true,更新元素位置,如果是拖动涉及到 combo,则更新 combo 结构\n * @param evt\n */\n onDragEnd: function onDragEnd(evt) {\n var _this = this;\n\n var _a;\n\n if (!this.origin) {\n return;\n } // 拖动结束后,设置拖动元素 group 的 capture 为 true,允许拾取拖动元素\n\n\n (_a = this.cachedCaptureItems) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n var group = item.getContainer();\n group.set('capture', true);\n });\n this.cachedCaptureItems = [];\n\n if (this.delegateRect) {\n this.delegateRect.remove();\n this.delegateRect = null;\n }\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (_this.hidenEdge[edge.getID()]) edge.show();\n edge.refresh();\n });\n });\n }\n\n this.hidenEdge = {};\n var graph = this.graph; // 拖动结束后,入栈\n\n if (graph.get('enabledStack') && this.enableStack) {\n var stackData_1 = {\n before: {\n nodes: [],\n edges: [],\n combos: []\n },\n after: {\n nodes: [],\n edges: [],\n combos: []\n }\n };\n this.get('beforeDragNodes').forEach(function (model) {\n stackData_1.before.nodes.push({\n id: model.id,\n x: model.x,\n y: model.y\n });\n });\n this.targets.forEach(function (target) {\n var targetModel = target.getModel();\n stackData_1.after.nodes.push({\n id: targetModel.id,\n x: targetModel.x,\n y: targetModel.y\n });\n });\n graph.pushStack('update', Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(stackData_1));\n } // 拖动结束后emit事件,将当前操作的节点抛出去,目标节点为null\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: null\n });\n this.point = {};\n this.origin = null;\n this.originPoint = {};\n this.targets.length = 0;\n this.targetCombo = null;\n },\n\n /**\n * 拖动过程中将节点放置到 combo 上\n * @param evt\n */\n onDropCombo: function onDropCombo(evt) {\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n\n this.targetCombo = item; // 拖动结束后是动态改变 Combo 大小还是将节点从 Combo 中删除\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n var targetComboModel_1 = item.getModel();\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (nodeModel.comboId !== targetComboModel_1.id) {\n graph.updateComboTree(node, targetComboModel_1.id);\n }\n });\n graph.updateCombo(item);\n } // 将节点拖动到 combo 上面,emit事件抛出当前操作的节点及目标 combo\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: this.targetCombo\n });\n },\n onDropCanvas: function onDropCanvas(evt) {\n var graph = this.graph;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, undefined); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.targets || this.targets.length === 0 || !this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n this.targets.map(function (node) {\n // 拖动的节点有 comboId,即是从其他 combo 中拖出时才处理\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n }\n },\n\n /**\n * 拖动放置到某个 combo 中的子 node 上\n * @param evt\n */\n onDropNode: function onDropNode(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var self = this;\n var item = evt.item;\n var graph = self.graph;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n graph.updateCombos();\n } else if (comboId) {\n var combo = graph.findById(comboId);\n\n if (self.comboActiveState) {\n graph.setItemState(combo, self.comboActiveState, false);\n }\n\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (comboId !== nodeModel.comboId) {\n graph.updateComboTree(node, comboId);\n }\n });\n graph.updateCombo(combo);\n } else {\n this.targets.map(function (node) {\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n } // 将节点拖动到另外个节点上面,emit 事件抛出当前操作的节点及目标节点\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: item\n });\n },\n\n /**\n * 将节点拖入到 Combo 中\n * @param evt\n */\n onDragEnter: function onDragEnter(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, true);\n }\n },\n\n /**\n * 将节点从 Combo 中拖出\n * @param evt\n */\n onDragLeave: function onDragLeave(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return; // 当开启 delegate 时,拖动结束后需要更新所有已选中节点的位置\n\n if (this.get('enableDelegate')) {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge'),\n updateFunc: this.update\n });else if (!restore) this.targets.map(function (node) {\n return _this.update(node, evt);\n });\n } else this.targets.map(function (node) {\n return _this.update(node, evt, restore);\n });\n },\n\n /**\n * 更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n update: function update(item, evt, restore) {\n var origin = this.origin;\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!this.point[nodeId]) {\n this.point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + this.point[nodeId].x;\n var y = evt.y - origin.y + this.point[nodeId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n var pos = {\n x: x,\n y: y\n };\n\n if (this.get('updateEdge')) {\n this.graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n },\n\n /**\n * 限流更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n debounceUpdate: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"debounce\"])(function (event) {\n var targets = event.targets,\n graph = event.graph,\n point = event.point,\n origin = event.origin,\n evt = event.evt,\n updateEdge = event.updateEdge,\n updateFunc = event.updateFunc;\n targets.map(function (item) {\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!point[nodeId]) {\n point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + point[nodeId].x;\n var y = evt.y - origin.y + point[nodeId].y;\n var pos = {\n x: x,\n y: y\n };\n\n if (updateEdge) {\n graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n });\n }, 50, true),\n\n /**\n * 更新拖动元素时的delegate\n * @param {Event} e 事件句柄\n * @param {number} x 拖动单个元素时候的x坐标\n * @param {number} y 拖动单个元素时候的y坐标\n */\n updateDelegate: function updateDelegate(e) {\n var graph = this.graph;\n\n if (!this.delegateRect) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].delegateStyle, this.delegateStyle);\n\n var _a = this.calculationGroupPosition(e),\n cx = _a.x,\n cy = _a.y,\n width = _a.width,\n height = _a.height,\n minX = _a.minX,\n minY = _a.minY;\n\n this.originPoint = {\n x: cx,\n y: cy,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n }; // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n\n this.delegateRect = parent_1.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: width,\n height: height,\n x: cx,\n y: cy\n }, attrs),\n name: 'rect-delegate-shape'\n });\n this.delegate = this.delegateRect;\n this.delegateRect.set('capture', false);\n } else {\n var clientX = e.x - this.origin.x + this.originPoint.minX;\n var clientY = e.y - this.origin.y + this.originPoint.minY;\n this.delegateRect.attr({\n x: clientX,\n y: clientY\n });\n }\n },\n\n /**\n * 计算delegate位置,包括左上角左边及宽度和高度\n * @memberof ItemGroup\n * @return {object} 计算出来的delegate坐标信息及宽高\n */\n calculationGroupPosition: function calculationGroupPosition(evt) {\n var nodes = this.targets;\n\n if (nodes.length === 0) {\n nodes.push(evt.item);\n }\n\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < nodes.length; i++) {\n var element = nodes[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctbm9kZS5qcz8yZmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ3FCO0FBQ3ZCO0FBQ2hCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCOztBQUV0Qiw0QkFBNEI7O0FBRTVCO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIsd0RBQUs7QUFDaEMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTtBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxnQ0FBZ0Msd0RBQUs7QUFDckMsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0VBQXNFOztBQUV0RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFOztBQUUzRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUFPLEdBQUcsRUFBRSwrQ0FBTTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekIsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9kcmFnLW5vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZGVlcE1peCwgY2xvbmUsIGRlYm91bmNlIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZUVkZ2U6IHRydWUsXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiB7fSxcbiAgICAgIC8vIOaYr+WQpuW8gOWQr2RlbGVnYXRlXG4gICAgICBlbmFibGVEZWxlZ2F0ZTogZmFsc2UsXG4gICAgICAvLyDmi5bliqjoioLngrnov4fnqIvkuK3mmK/lkKblj6rmlLnlj5ggQ29tYm8g55qE5aSn5bCP77yM6ICM5LiN5pS55Y+Y5YW257uT5p6EXG4gICAgICBvbmx5Q2hhbmdlQ29tYm9TaXplOiBmYWxzZSxcbiAgICAgIC8vIOaLluWKqOi/h+eoi+S4reebruaghyBjb21ibyDnirbmgIHmoLflvI9cbiAgICAgIGNvbWJvQWN0aXZlU3RhdGU6ICcnLFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJyxcbiAgICAgIGVuYWJsZU9wdGltaXplOiBmYWxzZSxcbiAgICAgIGVuYWJsZURlYm91bmNlOiBmYWxzZSxcbiAgICAgIGVuYWJsZVN0YWNrOiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmRyYWdzdGFydCc6ICdvbkRyYWdTdGFydCcsXG4gICAgICAnbm9kZTpkcmFnJzogJ29uRHJhZycsXG4gICAgICAnbm9kZTpkcmFnZW5kJzogJ29uRHJhZ0VuZCcsXG4gICAgICAnY29tYm86ZHJhZ2VudGVyJzogJ29uRHJhZ0VudGVyJyxcbiAgICAgICdjb21ibzpkcmFnbGVhdmUnOiAnb25EcmFnTGVhdmUnLFxuICAgICAgJ2NvbWJvOmRyb3AnOiAnb25Ecm9wQ29tYm8nLFxuICAgICAgJ25vZGU6ZHJvcCc6ICdvbkRyb3BOb2RlJyxcbiAgICAgICdjYW52YXM6ZHJvcCc6ICdvbkRyb3BDYW52YXMnLFxuICAgICAgJ3RvdWNoc3RhcnQnOiAnb25Ub3VjaFN0YXJ0JyxcbiAgICAgICd0b3VjaG1vdmUnOiAnb25Ub3VjaE1vdmUnLFxuICAgICAgJ3RvdWNoZW5kJzogJ29uRHJhZ0VuZCdcbiAgICB9O1xuICB9LFxuICB2YWxpZGF0aW9uQ29tYm86IGZ1bmN0aW9uIHZhbGlkYXRpb25Db21ibyhpdGVtKSB7XG4gICAgaWYgKCF0aGlzLm9yaWdpbiB8fCAhaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG5cbiAgICBpZiAodHlwZSAhPT0gJ2NvbWJvJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvblRvdWNoU3RhcnQ6IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChlKSB7XG4gICAgaWYgKCFlLml0ZW0pIHJldHVybjtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07XG5cbiAgICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYub25EcmFnU3RhcnQoZSk7XG4gIH0sXG4gIG9uVG91Y2hNb3ZlOiBmdW5jdGlvbiBvblRvdWNoTW92ZShlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciB0b3VjaGVzID0gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuXG4gICAgICBpZiAoZXZlbnQxICYmIGV2ZW50Mikge1xuICAgICAgICBzZWxmLm9uRHJhZ0VuZChlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdUb3VjaCBvcmlnaW5hbCBldmVudCBub3QgZXhpc3QhJyk7XG4gICAgfVxuXG4gICAgc2VsZi5vbkRyYWcoZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOW8gOWni+aLluWKqOiKgueCuVxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdTdGFydDogZnVuY3Rpb24gb25EcmFnU3RhcnQoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCB8fCBpdGVtLmhhc0xvY2tlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmi5bliqjml7bvvIzorr7nva7mi5bliqjlhYPntKDnmoQgY2FwdHVyZSDkuLpmYWxzZe+8jOWImeS4jeaLvuWPluaLluWKqOeahOWFg+e0oFxuXG5cbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgIGdyb3VwLnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICBpZiAoIXRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zKSB0aGlzLmNhY2hlZENhcHR1cmVJdGVtcyA9IFtdO1xuICAgIHRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zLnB1c2goaXRlbSk7IC8vIOWmguaenOaLluWKqOeahHRhcmdldCDmmK9saW5rUG9pbnRzIC8gYW5jaG9yUG9pbnRzIOWImeS4jeWFgeiuuOaLluWKqFxuXG4gICAgdmFyIHRhcmdldCA9IGV2dC50YXJnZXQ7XG5cbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB2YXIgaXNBbmNob3JQb2ludCA9IHRhcmdldC5nZXQoJ2lzQW5jaG9yUG9pbnQnKTtcblxuICAgICAgaWYgKGlzQW5jaG9yUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdGhpcy50YXJnZXRzID0gW107IC8vIOWwhuiKgueCueaLluWFpeWIsOaMh+WumueahCBDb21ib1xuXG4gICAgdGhpcy50YXJnZXRDb21ibyA9IG51bGw7IC8vIOiOt+WPluaJgOaciemAieS4reeahOWFg+e0oFxuXG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCB0aGlzLnNlbGVjdGVkU3RhdGUpO1xuICAgIHZhciBjdXJyZW50Tm9kZUlkID0gaXRlbS5nZXQoJ2lkJyk7IC8vIOW9k+WJjeaLluWKqOeahOiKgueCueaYr+WQpuaYr+mAieS4reeahOiKgueCuVxuXG4gICAgdmFyIGRyYWdOb2RlcyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGUuZ2V0KCdpZCcpO1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlSWQgPT09IG5vZGVJZDtcbiAgICB9KTsgLy8g5Y+q5ouW5Yqo5b2T5YmN6IqC54K5XG5cbiAgICBpZiAoZHJhZ05vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIGlmIChub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyDmi5bliqjlpJrkuKroioLngrlcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGxvY2tlZCA9IG5vZGUuaGFzTG9ja2VkKCk7XG5cbiAgICAgICAgaWYgKCFsb2NrZWQpIHtcbiAgICAgICAgICBfdGhpcy50YXJnZXRzLnB1c2gobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldHMucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgYmVmb3JlRHJhZ05vZGVzID0gW107XG4gICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgIGJlZm9yZURyYWdOb2Rlcy5wdXNoKGNsb25lKHQuZ2V0TW9kZWwoKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0KCdiZWZvcmVEcmFnTm9kZXMnLCBiZWZvcmVEcmFnTm9kZXMpO1xuICAgIHRoaXMuaGlkZW5FZGdlID0ge307XG5cbiAgICBpZiAodGhpcy5nZXQoJ3VwZGF0ZUVkZ2UnKSAmJiB0aGlzLmVuYWJsZU9wdGltaXplICYmICF0aGlzLmVuYWJsZURlbGVnYXRlKSB7XG4gICAgICB0aGlzLnRhcmdldHMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLmdldEVkZ2VzKCk7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICBpZiAoIWVkZ2UuaXNWaXNpYmxlKCkpIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5oaWRlbkVkZ2VbZWRnZS5nZXRJRCgpXSA9IHRydWU7XG4gICAgICAgICAgZWRnZS5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW4gPSB7XG4gICAgICB4OiBldnQueCxcbiAgICAgIHk6IGV2dC55XG4gICAgfTtcbiAgICB0aGlzLnBvaW50ID0ge307XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IHt9O1xuICB9LFxuXG4gIC8qKlxuICAgKiDmjIHnu63mi5bliqjoioLngrlcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnOiBmdW5jdGlvbiBvbkRyYWcoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlLmNhbGwodGhpcywgZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlRGVsZWdhdGUnKSkge1xuICAgICAgdGhpcy51cGRhdGVEZWxlZ2F0ZShldnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5lbmFibGVEZWJvdW5jZSkgdGhpcy5kZWJvdW5jZVVwZGF0ZSh7XG4gICAgICAgIHRhcmdldHM6IHRoaXMudGFyZ2V0cyxcbiAgICAgICAgZ3JhcGg6IHRoaXMuZ3JhcGgsXG4gICAgICAgIHBvaW50OiB0aGlzLnBvaW50LFxuICAgICAgICBvcmlnaW46IHRoaXMub3JpZ2luLFxuICAgICAgICBldnQ6IGV2dCxcbiAgICAgICAgdXBkYXRlRWRnZTogdGhpcy5nZXQoJ3VwZGF0ZUVkZ2UnKVxuICAgICAgfSk7ZWxzZSB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgX3RoaXMudXBkYXRlKHRhcmdldCwgZXZ0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog5ouW5Yqo57uT5p2f77yM6K6+572u5ouW5Yqo5YWD57SgY2FwdHVyZeS4unRydWXvvIzmm7TmlrDlhYPntKDkvY3nva7vvIzlpoLmnpzmmK/mi5bliqjmtonlj4rliLAgY29tYm/vvIzliJnmm7TmlrAgY29tYm8g57uT5p6EXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmi5bliqjnu5PmnZ/lkI7vvIzorr7nva7mi5bliqjlhYPntKAgZ3JvdXAg55qEIGNhcHR1cmUg5Li6IHRydWXvvIzlhYHorrjmi77lj5bmi5bliqjlhYPntKBcblxuXG4gICAgKF9hID0gdGhpcy5jYWNoZWRDYXB0dXJlSXRlbXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgICAgZ3JvdXAuc2V0KCdjYXB0dXJlJywgdHJ1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWNoZWRDYXB0dXJlSXRlbXMgPSBbXTtcblxuICAgIGlmICh0aGlzLmRlbGVnYXRlUmVjdCkge1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QucmVtb3ZlKCk7XG4gICAgICB0aGlzLmRlbGVnYXRlUmVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0KCd1cGRhdGVFZGdlJykgJiYgdGhpcy5lbmFibGVPcHRpbWl6ZSAmJiAhdGhpcy5lbmFibGVEZWxlZ2F0ZSkge1xuICAgICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGVkZ2VzID0gbm9kZS5nZXRFZGdlcygpO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgaWYgKF90aGlzLmhpZGVuRWRnZVtlZGdlLmdldElEKCldKSBlZGdlLnNob3coKTtcbiAgICAgICAgICBlZGdlLnJlZnJlc2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGVuRWRnZSA9IHt9O1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7IC8vIOaLluWKqOe7k+adn+WQju+8jOWFpeagiFxuXG4gICAgaWYgKGdyYXBoLmdldCgnZW5hYmxlZFN0YWNrJykgJiYgdGhpcy5lbmFibGVTdGFjaykge1xuICAgICAgdmFyIHN0YWNrRGF0YV8xID0ge1xuICAgICAgICBiZWZvcmU6IHtcbiAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgZWRnZXM6IFtdLFxuICAgICAgICAgIGNvbWJvczogW11cbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXI6IHtcbiAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgZWRnZXM6IFtdLFxuICAgICAgICAgIGNvbWJvczogW11cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuZ2V0KCdiZWZvcmVEcmFnTm9kZXMnKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICBzdGFja0RhdGFfMS5iZWZvcmUubm9kZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIHg6IG1vZGVsLngsXG4gICAgICAgICAgeTogbW9kZWwueVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgc3RhY2tEYXRhXzEuYWZ0ZXIubm9kZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IHRhcmdldE1vZGVsLmlkLFxuICAgICAgICAgIHg6IHRhcmdldE1vZGVsLngsXG4gICAgICAgICAgeTogdGFyZ2V0TW9kZWwueVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZ3JhcGgucHVzaFN0YWNrKCd1cGRhdGUnLCBjbG9uZShzdGFja0RhdGFfMSkpO1xuICAgIH0gLy8g5ouW5Yqo57uT5p2f5ZCOZW1pdOS6i+S7tu+8jOWwhuW9k+WJjeaTjeS9nOeahOiKgueCueaKm+WHuuWOu++8jOebruagh+iKgueCueS4um51bGxcblxuXG4gICAgZ3JhcGguZW1pdCgnZHJhZ25vZGVlbmQnLCB7XG4gICAgICBpdGVtczogdGhpcy50YXJnZXRzLFxuICAgICAgdGFyZ2V0SXRlbTogbnVsbFxuICAgIH0pO1xuICAgIHRoaXMucG9pbnQgPSB7fTtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IHt9O1xuICAgIHRoaXMudGFyZ2V0cy5sZW5ndGggPSAwO1xuICAgIHRoaXMudGFyZ2V0Q29tYm8gPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmi5bliqjov4fnqIvkuK3lsIboioLngrnmlL7nva7liLAgY29tYm8g5LiKXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJvcENvbWJvOiBmdW5jdGlvbiBvbkRyb3BDb21ibyhldnQpIHtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZXZ0LCBpdGVtKTsgLy8g6Iul5LiN5YWB6K6457uT5p2f77yM5YiZ5bCG6IqC54K55L2N572u6K6+572u5Zue5Yid6K+G5L2N572u44CC5ZCO6Z2i55qE6YC76L6R5LuN6ZyA6KaB5omn6KGMXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy5jdXJyZW50U2hvdWxkRW5kIHx8ICF0aGlzLnZhbGlkYXRpb25Db21ibyhpdGVtKSkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5jb21ib0FjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRDb21ibyA9IGl0ZW07IC8vIOaLluWKqOe7k+adn+WQjuaYr+WKqOaAgeaUueWPmCBDb21ibyDlpKflsI/ov5jmmK/lsIboioLngrnku44gQ29tYm8g5Lit5Yig6ZmkXG5cbiAgICBpZiAodGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAvLyDmi5bliqjoioLngrnnu5PmnZ/lkI7vvIzliqjmgIHmlLnlj5ggQ29tYm8g55qE5aSn5bCPXG4gICAgICBncmFwaC51cGRhdGVDb21ib3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhcmdldENvbWJvTW9kZWxfMSA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVNb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobm9kZU1vZGVsLmNvbWJvSWQgIT09IHRhcmdldENvbWJvTW9kZWxfMS5pZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlLCB0YXJnZXRDb21ib01vZGVsXzEuaWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvKGl0ZW0pO1xuICAgIH0gLy8g5bCG6IqC54K55ouW5Yqo5YiwIGNvbWJvIOS4iumdou+8jGVtaXTkuovku7bmipvlh7rlvZPliY3mk43kvZznmoToioLngrnlj4rnm67moIcgY29tYm9cblxuXG4gICAgZ3JhcGguZW1pdCgnZHJhZ25vZGVlbmQnLCB7XG4gICAgICBpdGVtczogdGhpcy50YXJnZXRzLFxuICAgICAgdGFyZ2V0SXRlbTogdGhpcy50YXJnZXRDb21ib1xuICAgIH0pO1xuICB9LFxuICBvbkRyb3BDYW52YXM6IGZ1bmN0aW9uIG9uRHJvcENhbnZhcyhldnQpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZXZ0LCB1bmRlZmluZWQpOyAvLyDoi6XkuI3lhYHorrjnu5PmnZ/vvIzliJnlsIboioLngrnkvY3nva7orr7nva7lm57liJ3or4bkvY3nva7jgILlkI7pnaLnmoTpgLvovpHku43pnIDopoHmiafooYxcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKGV2dCwgIXRoaXMuY3VycmVudFNob3VsZEVuZCk7XG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAvLyDmi5bliqjoioLngrnnu5PmnZ/lkI7vvIzliqjmgIHmlLnlj5ggQ29tYm8g55qE5aSn5bCPXG4gICAgICBncmFwaC51cGRhdGVDb21ib3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAvLyDmi5bliqjnmoToioLngrnmnIkgY29tYm9JZO+8jOWNs+aYr+S7juWFtuS7liBjb21ibyDkuK3mi5blh7rml7bmiY3lpITnkIZcbiAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaLluWKqOaUvue9ruWIsOafkOS4qiBjb21ibyDkuK3nmoTlrZAgbm9kZSDkuIpcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25Ecm9wTm9kZTogZnVuY3Rpb24gb25Ecm9wTm9kZShldnQpIHtcbiAgICBpZiAoIXRoaXMudGFyZ2V0cyB8fCB0aGlzLnRhcmdldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gc2VsZi5ncmFwaDtcbiAgICB2YXIgY29tYm9JZCA9IGl0ZW0uZ2V0TW9kZWwoKS5jb21ib0lkO1xuICAgIHZhciBuZXdQYXJlbnRDb21ibyA9IGNvbWJvSWQgPyBncmFwaC5maW5kQnlJZChjb21ib0lkKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgbmV3UGFyZW50Q29tYm8pOyAvLyDoi6XkuI3lhYHorrjnu5PmnZ/vvIzliJnlsIboioLngrnkvY3nva7orr7nva7lm57liJ3or4bkvY3nva7jgILlkI7pnaLnmoTpgLvovpHku43pnIDopoHmiafooYxcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKGV2dCwgIXRoaXMuY3VycmVudFNob3VsZEVuZCk7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTaG91bGRFbmQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLm9ubHlDaGFuZ2VDb21ib1NpemUpIHtcbiAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvcygpO1xuICAgIH0gZWxzZSBpZiAoY29tYm9JZCkge1xuICAgICAgdmFyIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCk7XG5cbiAgICAgIGlmIChzZWxmLmNvbWJvQWN0aXZlU3RhdGUpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvLCBzZWxmLmNvbWJvQWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZU1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChjb21ib0lkICE9PSBub2RlTW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlLCBjb21ib0lkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBncmFwaC51cGRhdGVDb21ibyhjb21ibyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IC8vIOWwhuiKgueCueaLluWKqOWIsOWPpuWkluS4quiKgueCueS4iumdou+8jGVtaXQg5LqL5Lu25oqb5Ye65b2T5YmN5pON5L2c55qE6IqC54K55Y+K55uu5qCH6IqC54K5XG5cblxuICAgIGdyYXBoLmVtaXQoJ2RyYWdub2RlZW5kJywge1xuICAgICAgaXRlbXM6IHRoaXMudGFyZ2V0cyxcbiAgICAgIHRhcmdldEl0ZW06IGl0ZW1cbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICog5bCG6IqC54K55ouW5YWl5YiwIENvbWJvIOS4rVxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdFbnRlcjogZnVuY3Rpb24gb25EcmFnRW50ZXIoZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGl0ZW0pKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmNvbWJvQWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCB0aGlzLmNvbWJvQWN0aXZlU3RhdGUsIHRydWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog5bCG6IqC54K55LuOIENvbWJvIOS4reaLluWHulxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdMZWF2ZTogZnVuY3Rpb24gb25EcmFnTGVhdmUoZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGl0ZW0pKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmNvbWJvQWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCB0aGlzLmNvbWJvQWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZVBvc2l0aW9uczogZnVuY3Rpb24gdXBkYXRlUG9zaXRpb25zKGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMudGFyZ2V0cyB8fCB0aGlzLnRhcmdldHMubGVuZ3RoID09PSAwKSByZXR1cm47IC8vIOW9k+W8gOWQryBkZWxlZ2F0ZSDml7bvvIzmi5bliqjnu5PmnZ/lkI7pnIDopoHmm7TmlrDmiYDmnInlt7LpgInkuK3oioLngrnnmoTkvY3nva5cblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlRGVsZWdhdGUnKSkge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlRGVib3VuY2UpIHRoaXMuZGVib3VuY2VVcGRhdGUoe1xuICAgICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldHMsXG4gICAgICAgIGdyYXBoOiB0aGlzLmdyYXBoLFxuICAgICAgICBwb2ludDogdGhpcy5wb2ludCxcbiAgICAgICAgb3JpZ2luOiB0aGlzLm9yaWdpbixcbiAgICAgICAgZXZ0OiBldnQsXG4gICAgICAgIHVwZGF0ZUVkZ2U6IHRoaXMuZ2V0KCd1cGRhdGVFZGdlJyksXG4gICAgICAgIHVwZGF0ZUZ1bmM6IHRoaXMudXBkYXRlXG4gICAgICB9KTtlbHNlIGlmICghcmVzdG9yZSkgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG5vZGUsIGV2dCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShub2RlLCBldnQsIHJlc3RvcmUpO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmm7TmlrDoioLngrlcbiAgICogQHBhcmFtIGl0ZW0g5ouW5Yqo55qE6IqC54K55a6e5L6LXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGl0ZW0sIGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBvcmlnaW4gPSB0aGlzLm9yaWdpbjtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgbm9kZUlkID0gaXRlbS5nZXQoJ2lkJyk7XG5cbiAgICBpZiAoIXRoaXMucG9pbnRbbm9kZUlkXSkge1xuICAgICAgdGhpcy5wb2ludFtub2RlSWRdID0ge1xuICAgICAgICB4OiBtb2RlbC54IHx8IDAsXG4gICAgICAgIHk6IG1vZGVsLnkgfHwgMFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgeCA9IGV2dC54IC0gb3JpZ2luLnggKyB0aGlzLnBvaW50W25vZGVJZF0ueDtcbiAgICB2YXIgeSA9IGV2dC55IC0gb3JpZ2luLnkgKyB0aGlzLnBvaW50W25vZGVJZF0ueTtcblxuICAgIGlmIChyZXN0b3JlKSB7XG4gICAgICB4ICs9IG9yaWdpbi54IC0gZXZ0Lng7XG4gICAgICB5ICs9IG9yaWdpbi55IC0gZXZ0Lnk7XG4gICAgfVxuXG4gICAgdmFyIHBvcyA9IHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfTtcblxuICAgIGlmICh0aGlzLmdldCgndXBkYXRlRWRnZScpKSB7XG4gICAgICB0aGlzLmdyYXBoLnVwZGF0ZUl0ZW0oaXRlbSwgcG9zLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0udXBkYXRlUG9zaXRpb24ocG9zKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOmZkOa1geabtOaWsOiKgueCuVxuICAgKiBAcGFyYW0gaXRlbSDmi5bliqjnmoToioLngrnlrp7kvotcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgZGVib3VuY2VVcGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciB0YXJnZXRzID0gZXZlbnQudGFyZ2V0cyxcbiAgICAgICAgZ3JhcGggPSBldmVudC5ncmFwaCxcbiAgICAgICAgcG9pbnQgPSBldmVudC5wb2ludCxcbiAgICAgICAgb3JpZ2luID0gZXZlbnQub3JpZ2luLFxuICAgICAgICBldnQgPSBldmVudC5ldnQsXG4gICAgICAgIHVwZGF0ZUVkZ2UgPSBldmVudC51cGRhdGVFZGdlLFxuICAgICAgICB1cGRhdGVGdW5jID0gZXZlbnQudXBkYXRlRnVuYztcbiAgICB0YXJnZXRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIG1vZGVsID0gaXRlbS5nZXQoJ21vZGVsJyk7XG4gICAgICB2YXIgbm9kZUlkID0gaXRlbS5nZXQoJ2lkJyk7XG5cbiAgICAgIGlmICghcG9pbnRbbm9kZUlkXSkge1xuICAgICAgICBwb2ludFtub2RlSWRdID0ge1xuICAgICAgICAgIHg6IG1vZGVsLnggfHwgMCxcbiAgICAgICAgICB5OiBtb2RlbC55IHx8IDBcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdmFyIHggPSBldnQueCAtIG9yaWdpbi54ICsgcG9pbnRbbm9kZUlkXS54O1xuICAgICAgdmFyIHkgPSBldnQueSAtIG9yaWdpbi55ICsgcG9pbnRbbm9kZUlkXS55O1xuICAgICAgdmFyIHBvcyA9IHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfTtcblxuICAgICAgaWYgKHVwZGF0ZUVkZ2UpIHtcbiAgICAgICAgZ3JhcGgudXBkYXRlSXRlbShpdGVtLCBwb3MsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0udXBkYXRlUG9zaXRpb24ocG9zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgNTAsIHRydWUpLFxuXG4gIC8qKlxuICAgKiDmm7TmlrDmi5bliqjlhYPntKDml7bnmoRkZWxlZ2F0ZVxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIOS6i+S7tuWPpeafhFxuICAgKiBAcGFyYW0ge251bWJlcn0geCDmi5bliqjljZXkuKrlhYPntKDml7blgJnnmoR45Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOaLluWKqOWNleS4quWFg+e0oOaXtuWAmeeahHnlnZDmoIdcbiAgICovXG4gIHVwZGF0ZURlbGVnYXRlOiBmdW5jdGlvbiB1cGRhdGVEZWxlZ2F0ZShlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghdGhpcy5kZWxlZ2F0ZVJlY3QpIHtcbiAgICAgIC8vIOaLluWKqOWkmuS4qlxuICAgICAgdmFyIHBhcmVudF8xID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgICAgdmFyIGF0dHJzID0gZGVlcE1peCh7fSwgR2xvYmFsLmRlbGVnYXRlU3R5bGUsIHRoaXMuZGVsZWdhdGVTdHlsZSk7XG5cbiAgICAgIHZhciBfYSA9IHRoaXMuY2FsY3VsYXRpb25Hcm91cFBvc2l0aW9uKGUpLFxuICAgICAgICAgIGN4ID0gX2EueCxcbiAgICAgICAgICBjeSA9IF9hLnksXG4gICAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQsXG4gICAgICAgICAgbWluWCA9IF9hLm1pblgsXG4gICAgICAgICAgbWluWSA9IF9hLm1pblk7XG5cbiAgICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICAgIHg6IGN4LFxuICAgICAgICB5OiBjeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgbWluWTogbWluWVxuICAgICAgfTsgLy8gbW9kZWzkuIrnmoR4LCB55piv55u45a+55LqO5Zu+5b2i5Lit5b+D55qE77yMZGVsZWdhdGVTaGFwZeaYr2flrp7kvovvvIx4LHnmmK/nu53lr7nlnZDmoIdcblxuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QgPSBwYXJlbnRfMS5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgeDogY3gsXG4gICAgICAgICAgeTogY3lcbiAgICAgICAgfSwgYXR0cnMpLFxuICAgICAgICBuYW1lOiAncmVjdC1kZWxlZ2F0ZS1zaGFwZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGVSZWN0O1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3Quc2V0KCdjYXB0dXJlJywgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY2xpZW50WCA9IGUueCAtIHRoaXMub3JpZ2luLnggKyB0aGlzLm9yaWdpblBvaW50Lm1pblg7XG4gICAgICB2YXIgY2xpZW50WSA9IGUueSAtIHRoaXMub3JpZ2luLnkgKyB0aGlzLm9yaWdpblBvaW50Lm1pblk7XG4gICAgICB0aGlzLmRlbGVnYXRlUmVjdC5hdHRyKHtcbiAgICAgICAgeDogY2xpZW50WCxcbiAgICAgICAgeTogY2xpZW50WVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDorqHnrpdkZWxlZ2F0ZeS9jee9ru+8jOWMheaLrOW3puS4iuinkuW3pui+ueWPiuWuveW6puWSjOmrmOW6plxuICAgKiBAbWVtYmVyb2YgSXRlbUdyb3VwXG4gICAqIEByZXR1cm4ge29iamVjdH0g6K6h566X5Ye65p2l55qEZGVsZWdhdGXlnZDmoIfkv6Hmga/lj4rlrr3pq5hcbiAgICovXG4gIGNhbGN1bGF0aW9uR3JvdXBQb3NpdGlvbjogZnVuY3Rpb24gY2FsY3VsYXRpb25Hcm91cFBvc2l0aW9uKGV2dCkge1xuICAgIHZhciBub2RlcyA9IHRoaXMudGFyZ2V0cztcblxuICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIG5vZGVzLnB1c2goZXZ0Lml0ZW0pO1xuICAgIH1cblxuICAgIHZhciBtaW54ID0gSW5maW5pdHk7XG4gICAgdmFyIG1heHggPSAtSW5maW5pdHk7XG4gICAgdmFyIG1pbnkgPSBJbmZpbml0eTtcbiAgICB2YXIgbWF4eSA9IC1JbmZpbml0eTsgLy8g6I635Y+W5bey6IqC54K555qE5omA5pyJ5pyA5aSn5pyA5bCPeCB55YC8XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGJib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICAgIHZhciBtaW5YID0gYmJveC5taW5YLFxuICAgICAgICAgIG1pblkgPSBiYm94Lm1pblksXG4gICAgICAgICAgbWF4WCA9IGJib3gubWF4WCxcbiAgICAgICAgICBtYXhZID0gYmJveC5tYXhZO1xuXG4gICAgICBpZiAobWluWCA8IG1pbngpIHtcbiAgICAgICAgbWlueCA9IG1pblg7XG4gICAgICB9XG5cbiAgICAgIGlmIChtaW5ZIDwgbWlueSkge1xuICAgICAgICBtaW55ID0gbWluWTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFggPiBtYXh4KSB7XG4gICAgICAgIG1heHggPSBtYXhYO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4WSA+IG1heHkpIHtcbiAgICAgICAgbWF4eSA9IG1heFk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHggPSBNYXRoLmZsb29yKG1pbngpO1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcihtaW55KTtcbiAgICB2YXIgd2lkdGggPSBNYXRoLmNlaWwobWF4eCkgLSBNYXRoLmZsb29yKG1pbngpO1xuICAgIHZhciBoZWlnaHQgPSBNYXRoLmNlaWwobWF4eSkgLSBNYXRoLmZsb29yKG1pbnkpO1xuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgbWluWDogbWlueCxcbiAgICAgIG1pblk6IG1pbnlcbiAgICB9O1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'edge',\n offset: 12,\n formatText: function formatText(model) {\n return \"source: \" + model.source + \" target: \" + model.target;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2VkZ2UtdG9vbHRpcC5qcz85NDk0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNDO0FBQ25CLHFIQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRSxxREFBSSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9lZGdlLXRvb2x0aXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IGJhc2UgZnJvbSAnLi90b29sdGlwLWJhc2UnO1xuZXhwb3J0IGRlZmF1bHQgX19hc3NpZ24oe1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtOiAnZWRnZScsXG4gICAgICBvZmZzZXQ6IDEyLFxuICAgICAgZm9ybWF0VGV4dDogZnVuY3Rpb24gZm9ybWF0VGV4dChtb2RlbCkge1xuICAgICAgICByZXR1cm4gXCJzb3VyY2U6IFwiICsgbW9kZWwuc291cmNlICsgXCIgdGFyZ2V0OiBcIiArIG1vZGVsLnRhcmdldDtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2VkZ2U6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ2VkZ2U6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ2VkZ2U6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGFmdGVycmVtb3ZlaXRlbTogJ29uTW91c2VMZWF2ZSdcbiAgICB9O1xuICB9XG59LCBiYXNlKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js ***! \**************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _drag_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./drag-canvas */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js\");\n/* harmony import */ var _drag_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./drag-node */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js\");\n/* harmony import */ var _activate_relations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./activate-relations */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js\");\n/* harmony import */ var _brush_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./brush-select */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js\");\n/* harmony import */ var _click_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./click-select */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js\");\n/* harmony import */ var _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom-canvas */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js\");\n/* harmony import */ var _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edge-tooltip */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js\");\n/* harmony import */ var _collapse_expand__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./collapse-expand */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js\");\n/* harmony import */ var _drag_combo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./drag-combo */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js\");\n/* harmony import */ var _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./collapse-expand-combo */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js\");\n/* harmony import */ var _lasso_select__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lasso-select */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js\");\n/* harmony import */ var _create_edge__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./create-edge */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js\");\n/* harmony import */ var _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./shortcuts-call */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js\");\n/* harmony import */ var _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./scroll-canvas */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js\");\n\n // import Behavior from './behavior';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar behaviors = {\n 'drag-canvas': _drag_canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n 'zoom-canvas': _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n 'drag-node': _drag_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n 'activate-relations': _activate_relations__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n 'brush-select': _brush_select__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n 'click-select': _click_select__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n 'lasso-select': _lasso_select__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n 'edge-tooltip': _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n 'collapse-expand': _collapse_expand__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n 'drag-combo': _drag_combo__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n 'collapse-expand-combo': _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n 'create-edge': _create_edge__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n 'shortcuts-call': _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n 'scroll-canvas': _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n};\nObject(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior, type) {\n Object(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"])(type, behavior);\n}); // export default Behavior;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2luZGV4LmpzP2FjOGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2U7O0FBRVY7QUFDSjtBQUNrQjtBQUNaO0FBQ0E7QUFDRjtBQUNQO0FBQ1M7QUFDTTtBQUNWO0FBQ3FCO0FBQ2pCO0FBQ0Y7QUFDTTtBQUNGO0FBQzNDO0FBQ0EsaUJBQWlCLG9EQUFVO0FBQzNCLGlCQUFpQixvREFBVTtBQUMzQixlQUFlLGtEQUFRO0FBQ3ZCLHdCQUF3QiwyREFBaUI7QUFDekMsa0JBQWtCLHFEQUFXO0FBQzdCLGtCQUFrQixxREFBVztBQUM3QixrQkFBa0Isc0RBQVc7QUFDN0IsV0FBVyxnREFBTztBQUNsQixrQkFBa0IscURBQVc7QUFDN0IscUJBQXFCLHlEQUFjO0FBQ25DLGdCQUFnQixvREFBUztBQUN6QiwyQkFBMkIsK0RBQW1CO0FBQzlDLGlCQUFpQixxREFBVTtBQUMzQixvQkFBb0Isd0RBQWE7QUFDakMsbUJBQW1CLHVEQUFZO0FBQy9CO0FBQ0EsdURBQUk7QUFDSixFQUFFLHNFQUFnQjtBQUNsQixDQUFDLEVBQUUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJCZWhhdmlvciB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnOyAvLyBpbXBvcnQgQmVoYXZpb3IgZnJvbSAnLi9iZWhhdmlvcic7XG5cbmltcG9ydCBEcmFnQ2FudmFzIGZyb20gJy4vZHJhZy1jYW52YXMnO1xuaW1wb3J0IERyYWdOb2RlIGZyb20gJy4vZHJhZy1ub2RlJztcbmltcG9ydCBBY3RpdmF0ZVJlbGF0aW9ucyBmcm9tICcuL2FjdGl2YXRlLXJlbGF0aW9ucyc7XG5pbXBvcnQgQnJ1c2hTZWxlY3QgZnJvbSAnLi9icnVzaC1zZWxlY3QnO1xuaW1wb3J0IENsaWNrU2VsZWN0IGZyb20gJy4vY2xpY2stc2VsZWN0JztcbmltcG9ydCBab29tQ2FudmFzIGZyb20gJy4vem9vbS1jYW52YXMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCBFZGdlVG9vbHRpcCBmcm9tICcuL2VkZ2UtdG9vbHRpcCc7XG5pbXBvcnQgQ29sbGFwc2VFeHBhbmQgZnJvbSAnLi9jb2xsYXBzZS1leHBhbmQnO1xuaW1wb3J0IERyYWdDb21ibyBmcm9tICcuL2RyYWctY29tYm8nO1xuaW1wb3J0IENvbGxhcHNlRXhwYW5kQ29tYm8gZnJvbSAnLi9jb2xsYXBzZS1leHBhbmQtY29tYm8nO1xuaW1wb3J0IExhc3NvU2VsZWN0IGZyb20gJy4vbGFzc28tc2VsZWN0JztcbmltcG9ydCBDcmVhdGVFZGdlIGZyb20gJy4vY3JlYXRlLWVkZ2UnO1xuaW1wb3J0IFNob3J0Y3V0c0NhbGwgZnJvbSAnLi9zaG9ydGN1dHMtY2FsbCc7XG5pbXBvcnQgU2Nyb2xsQ2FudmFzIGZyb20gJy4vc2Nyb2xsLWNhbnZhcyc7XG52YXIgYmVoYXZpb3JzID0ge1xuICAnZHJhZy1jYW52YXMnOiBEcmFnQ2FudmFzLFxuICAnem9vbS1jYW52YXMnOiBab29tQ2FudmFzLFxuICAnZHJhZy1ub2RlJzogRHJhZ05vZGUsXG4gICdhY3RpdmF0ZS1yZWxhdGlvbnMnOiBBY3RpdmF0ZVJlbGF0aW9ucyxcbiAgJ2JydXNoLXNlbGVjdCc6IEJydXNoU2VsZWN0LFxuICAnY2xpY2stc2VsZWN0JzogQ2xpY2tTZWxlY3QsXG4gICdsYXNzby1zZWxlY3QnOiBMYXNzb1NlbGVjdCxcbiAgdG9vbHRpcDogVG9vbHRpcCxcbiAgJ2VkZ2UtdG9vbHRpcCc6IEVkZ2VUb29sdGlwLFxuICAnY29sbGFwc2UtZXhwYW5kJzogQ29sbGFwc2VFeHBhbmQsXG4gICdkcmFnLWNvbWJvJzogRHJhZ0NvbWJvLFxuICAnY29sbGFwc2UtZXhwYW5kLWNvbWJvJzogQ29sbGFwc2VFeHBhbmRDb21ibyxcbiAgJ2NyZWF0ZS1lZGdlJzogQ3JlYXRlRWRnZSxcbiAgJ3Nob3J0Y3V0cy1jYWxsJzogU2hvcnRjdXRzQ2FsbCxcbiAgJ3Njcm9sbC1jYW52YXMnOiBTY3JvbGxDYW52YXNcbn07XG5lYWNoKGJlaGF2aW9ycywgZnVuY3Rpb24gKGJlaGF2aW9yLCB0eXBlKSB7XG4gIHJlZ2lzdGVyQmVoYXZpb3IodHlwZSwgYmVoYXZpb3IpO1xufSk7IC8vIGV4cG9ydCBkZWZhdWx0IEJlaGF2aW9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n\n\nvar isPolygonsIntersect = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPolygonsIntersect,\n pathToPoints = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pathToPoints;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n\nvar isItemIntersecPolygon = function isItemIntersecPolygon(item, polyPoints) {\n var shapePoints;\n var shape = item.getKeyShape();\n\n if (item.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n return isPolygonsIntersect(polyPoints, shapePoints);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n delegateStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: [] // multiple: false,\n\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior lasso-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n 'canvas:click': 'clearStates'\n };\n },\n onDragStart: function onDragStart(e) {\n var lasso = this.lasso;\n var item = e.item; // 排除在节点上拖动\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!lasso) {\n lasso = this.createLasso();\n }\n\n this.dragging = true;\n this.originPoint = {\n x: e.x,\n y: e.y\n };\n this.points.push(this.originPoint);\n lasso.show();\n },\n onDragMove: function onDragMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push({\n x: e.x,\n y: e.y\n });\n this.updateLasso(e);\n },\n onDragEnd: function onDragEnd(e) {\n if (!this.lasso && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push(this.originPoint);\n this.getSelectedItems();\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n },\n getLassoPath: function getLassoPath() {\n var points = this.points;\n var path = [];\n\n if (points.length) {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n\n return path;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n this.selectedNodes = [];\n this.selectedEdges = [];\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedItems: function getSelectedItems() {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n shouldUpdate = _a.shouldUpdate;\n\n var lassoContour = this.points.map(function (point) {\n return [graph.getCanvasByPoint(point.x, point.y).x, graph.getCanvasByPoint(point.x, point.y).y];\n });\n var state = this.selectedState;\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n if (isItemIntersecPolygon(node, lassoContour)) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createLasso: function createLasso() {\n var self = this;\n var lasso = self.graph.get('delegateGroup').addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: []\n }, self.delegateStyle),\n capture: false,\n name: 'lasso-shape'\n });\n this.lasso = lasso;\n this.delegate = lasso;\n this.points = [];\n return lasso;\n },\n updateLasso: function updateLasso(e) {\n var self = this;\n this.lasso.attr({\n path: self.getLassoPath()\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n } // if (this.selectedNodes && this.selectedNodes.length !== 0) {\n // this.clearStates();\n // }\n\n\n if (code.toLowerCase() === this.trigger.toLowerCase()) {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.lasso) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的lasso\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2xhc3NvLXNlbGVjdC5qcz80MzYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNOO0FBQzNCLDBCQUEwQiw2Q0FBSTtBQUM5QixtQkFBbUIsNkNBQUk7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNDQUFzQztBQUN0QywwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9sYXNzby1zZWxlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbCc7XG52YXIgaXNQb2x5Z29uc0ludGVyc2VjdCA9IFV0aWwuaXNQb2x5Z29uc0ludGVyc2VjdCxcbiAgICBwYXRoVG9Qb2ludHMgPSBVdGlsLnBhdGhUb1BvaW50cztcbnZhciBERUZBVUxUX1RSSUdHRVIgPSAnc2hpZnQnO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnZHJhZycsICdzaGlmdCcsICdjdHJsJywgJ2FsdCcsICdjb250cm9sJ107XG5cbnZhciBpc0l0ZW1JbnRlcnNlY1BvbHlnb24gPSBmdW5jdGlvbiBpc0l0ZW1JbnRlcnNlY1BvbHlnb24oaXRlbSwgcG9seVBvaW50cykge1xuICB2YXIgc2hhcGVQb2ludHM7XG4gIHZhciBzaGFwZSA9IGl0ZW0uZ2V0S2V5U2hhcGUoKTtcblxuICBpZiAoaXRlbS5nZXQoJ3R5cGUnKSA9PT0gJ3BhdGgnKSB7XG4gICAgc2hhcGVQb2ludHMgPSBwYXRoVG9Qb2ludHMoc2hhcGUuYXR0cigncGF0aCcpKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2hhcGVCQm94ID0gc2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHNoYXBlUG9pbnRzID0gW1tzaGFwZUJCb3gubWluWCwgc2hhcGVCQm94Lm1pblldLCBbc2hhcGVCQm94Lm1heFgsIHNoYXBlQkJveC5taW5ZXSwgW3NoYXBlQkJveC5tYXhYLCBzaGFwZUJCb3gubWF4WV0sIFtzaGFwZUJCb3gubWluWCwgc2hhcGVCQm94Lm1heFldXTtcbiAgfVxuXG4gIHJldHVybiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvbHlQb2ludHMsIHNoYXBlUG9pbnRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVsZWdhdGVTdHlsZToge1xuICAgICAgICBmaWxsOiAnI0VFRjZGRicsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjQsXG4gICAgICAgIHN0cm9rZTogJyNEREVFRkUnLFxuICAgICAgICBsaW5lV2lkdGg6IDFcbiAgICAgIH0sXG4gICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QoKSB7fSxcbiAgICAgIG9uRGVzZWxlY3Q6IGZ1bmN0aW9uIG9uRGVzZWxlY3QoKSB7fSxcbiAgICAgIHNlbGVjdGVkU3RhdGU6ICdzZWxlY3RlZCcsXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gICAgICBzZWxlY3RlZEVkZ2VzOiBbXSxcbiAgICAgIHNlbGVjdGVkTm9kZXM6IFtdIC8vIG11bHRpcGxlOiBmYWxzZSxcblxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIC8vIOajgOa1i+i+k+WFpeaYr+WQpuWQiOazlVxuICAgIGlmICghKEFMTE9XX0VWRU5UUy5pbmRleE9mKHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSA+IC0xKSkge1xuICAgICAgdGhpcy50cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSO1xuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgbGFzc28tc2VsZWN0IOeahCB0cmlnZ2VyIOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnZHJhZyfjgIEnc2hpZnQn44CBJ2N0cmwnIOaIliAnYWx0J1wiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnZHJhZycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRyYWdzdGFydDogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgICAgZHJhZzogJ29uRHJhZ01vdmUnLFxuICAgICAgICBkcmFnZW5kOiAnb25EcmFnRW5kJyxcbiAgICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRyYWdzdGFydDogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgIGRyYWc6ICdvbkRyYWdNb3ZlJyxcbiAgICAgIGRyYWdlbmQ6ICdvbkRyYWdFbmQnLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcydcbiAgICB9O1xuICB9LFxuICBvbkRyYWdTdGFydDogZnVuY3Rpb24gb25EcmFnU3RhcnQoZSkge1xuICAgIHZhciBsYXNzbyA9IHRoaXMubGFzc287XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07IC8vIOaOkumZpOWcqOiKgueCueS4iuaLluWKqFxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5jbGVhclN0YXRlcygpO1xuICAgIH1cblxuICAgIGlmICghbGFzc28pIHtcbiAgICAgIGxhc3NvID0gdGhpcy5jcmVhdGVMYXNzbygpO1xuICAgIH1cblxuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9O1xuICAgIHRoaXMucG9pbnRzLnB1c2godGhpcy5vcmlnaW5Qb2ludCk7XG4gICAgbGFzc28uc2hvdygpO1xuICB9LFxuICBvbkRyYWdNb3ZlOiBmdW5jdGlvbiBvbkRyYWdNb3ZlKGUpIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9pbnRzLnB1c2goe1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVMYXNzbyhlKTtcbiAgfSxcbiAgb25EcmFnRW5kOiBmdW5jdGlvbiBvbkRyYWdFbmQoZSkge1xuICAgIGlmICghdGhpcy5sYXNzbyAmJiAhdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdkcmFnJyAmJiAhdGhpcy5rZXlkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wb2ludHMucHVzaCh0aGlzLm9yaWdpblBvaW50KTtcbiAgICB0aGlzLmdldFNlbGVjdGVkSXRlbXMoKTtcbiAgICB0aGlzLmxhc3NvLnJlbW92ZSh0cnVlKTtcbiAgICB0aGlzLmxhc3NvID0gbnVsbDtcbiAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgfSxcbiAgZ2V0TGFzc29QYXRoOiBmdW5jdGlvbiBnZXRMYXNzb1BhdGgoKSB7XG4gICAgdmFyIHBvaW50cyA9IHRoaXMucG9pbnRzO1xuICAgIHZhciBwYXRoID0gW107XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50LCBpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICBwYXRoLnB1c2goWydNJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcGF0aC5wdXNoKFsnTCcsIHBvaW50c1swXS54LCBwb2ludHNbMF0ueV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICBjbGVhclN0YXRlczogZnVuY3Rpb24gY2xlYXJTdGF0ZXMoKSB7XG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgc2VsZWN0ZWRTdGF0ZSA9IF9hLnNlbGVjdGVkU3RhdGU7XG5cbiAgICB2YXIgbm9kZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIHNlbGVjdGVkU3RhdGUpO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdlZGdlJywgc2VsZWN0ZWRTdGF0ZSk7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBzZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBzZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5vbkRlc2VsZWN0KSB7XG4gICAgICB0aGlzLm9uRGVzZWxlY3QodGhpcy5zZWxlY3RlZE5vZGVzLCB0aGlzLnNlbGVjdGVkRWRnZXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiBmYWxzZVxuICAgIH0pO1xuICB9LFxuICBnZXRTZWxlY3RlZEl0ZW1zOiBmdW5jdGlvbiBnZXRTZWxlY3RlZEl0ZW1zKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBzaG91bGRVcGRhdGUgPSBfYS5zaG91bGRVcGRhdGU7XG5cbiAgICB2YXIgbGFzc29Db250b3VyID0gdGhpcy5wb2ludHMubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIFtncmFwaC5nZXRDYW52YXNCeVBvaW50KHBvaW50LngsIHBvaW50LnkpLngsIGdyYXBoLmdldENhbnZhc0J5UG9pbnQocG9pbnQueCwgcG9pbnQueSkueV07XG4gICAgfSk7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5zZWxlY3RlZFN0YXRlO1xuICAgIHZhciBzZWxlY3RlZE5vZGVzID0gW107XG4gICAgdmFyIHNlbGVjdGVkSWRzID0gW107XG4gICAgZ3JhcGguZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAoIW5vZGUuaXNWaXNpYmxlKCkpIHJldHVybjsgLy8g6ZqQ6JeP6IqC54K55LiN6IO96KKr6YCJ5LitXG5cbiAgICAgIGlmIChpc0l0ZW1JbnRlcnNlY1BvbHlnb24obm9kZSwgbGFzc29Db250b3VyKSkge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKG5vZGUsICdzZWxlY3QnKSkge1xuICAgICAgICAgIHNlbGVjdGVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChtb2RlbC5pZCk7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIHN0YXRlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG5cbiAgICBpZiAodGhpcy5pbmNsdWRlRWRnZXMpIHtcbiAgICAgIC8vIOmAieS4rei+ue+8jOi+ueeahHNvdXJjZeWSjHRhcmdldOmDveWcqOmAieS4reeahOiKgueCueS4reaXtuaJjemAieS4rVxuICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG5vZGUuZ2V0T3V0RWRnZXMoKTtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIGlmICghZWRnZS5pc1Zpc2libGUoKSkgcmV0dXJuOyAvLyDpmpDol4/ovrnkuI3og73lpJ/ooqvpgInkuK1cblxuICAgICAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgc291cmNlID0gbW9kZWwuc291cmNlLFxuICAgICAgICAgICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7XG5cbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJZHMuaW5jbHVkZXMoc291cmNlKSAmJiBzZWxlY3RlZElkcy5pbmNsdWRlcyh0YXJnZXQpICYmIHNob3VsZFVwZGF0ZShlZGdlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBfdGhpcy5zZWxlY3RlZFN0YXRlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZEVkZ2VzID0gc2VsZWN0ZWRFZGdlcztcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBzZWxlY3RlZE5vZGVzO1xuXG4gICAgaWYgKHRoaXMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMub25TZWxlY3Qoc2VsZWN0ZWROb2Rlcywgc2VsZWN0ZWRFZGdlcyk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IHNlbGVjdGVkTm9kZXMsXG4gICAgICAgIGVkZ2VzOiBzZWxlY3RlZEVkZ2VzXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiB0cnVlXG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZUxhc3NvOiBmdW5jdGlvbiBjcmVhdGVMYXNzbygpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxhc3NvID0gc2VsZi5ncmFwaC5nZXQoJ2RlbGVnYXRlR3JvdXAnKS5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IFtdXG4gICAgICB9LCBzZWxmLmRlbGVnYXRlU3R5bGUpLFxuICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICBuYW1lOiAnbGFzc28tc2hhcGUnXG4gICAgfSk7XG4gICAgdGhpcy5sYXNzbyA9IGxhc3NvO1xuICAgIHRoaXMuZGVsZWdhdGUgPSBsYXNzbztcbiAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgIHJldHVybiBsYXNzbztcbiAgfSxcbiAgdXBkYXRlTGFzc286IGZ1bmN0aW9uIHVwZGF0ZUxhc3NvKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5sYXNzby5hdHRyKHtcbiAgICAgIHBhdGg6IHNlbGYuZ2V0TGFzc29QYXRoKClcbiAgICB9KTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgIC8vICAgdGhpcy5jbGVhclN0YXRlcygpO1xuICAgIC8vIH1cblxuXG4gICAgaWYgKGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRoaXMua2V5ZG93biA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlVcDogZnVuY3Rpb24gb25LZXlVcCgpIHtcbiAgICBpZiAodGhpcy5sYXNzbykge1xuICAgICAgLy8g5riF6Zmk5omA5pyJ6YCJ5Lit54q25oCB5ZCO77yM6K6+572u5ouW5b6X5Yqo54q25oCB5Li6ZmFsc2XvvIzlubbmuIXpmaTmoYbpgInnmoRsYXNzb1xuICAgICAgdGhpcy5sYXNzby5yZW1vdmUodHJ1ZSk7XG4gICAgICB0aGlzLmxhc3NvID0gbnVsbDtcbiAgICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n zoomKey: 'ctrl',\n // scroll-canvas 可滚动的扩展范围,默认为 0,即最多可以滚动一屏的位置\n // 当设置的值大于 0 时,即滚动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可滚动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0\n };\n },\n getEvents: function getEvents() {\n if (!this.zoomKey || ALLOW_EVENTS.indexOf(this.zoomKey) === -1) this.zoomKey = 'ctrl';\n return {\n wheel: 'onWheel'\n };\n },\n onWheel: function onWheel(ev) {\n var _this = this;\n\n var graph = this.graph;\n var keyDown = ev[this.zoomKey + \"Key\"];\n if (this.zoomKey === 'control') keyDown = ev.ctrlKey;\n\n if (keyDown) {\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(ev.clientX, ev.clientY);\n var ratio = graph.getZoom();\n\n if (ev.wheelDelta > 0) {\n ratio = ratio + ratio * 0.05;\n } else {\n ratio = ratio - ratio * 0.05;\n }\n\n graph.zoomTo(ratio, {\n x: point.x,\n y: point.y\n });\n } else {\n var dx = ev.deltaX || ev.movementX;\n var dy = ev.deltaY || ev.movementY;\n if (!dy && navigator.userAgent.indexOf('Firefox') > -1) dy = -ev.wheelDelta * 125 / 3;\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n var minX = graphCanvasBBox.minX,\n maxX = graphCanvasBBox.maxX,\n minY = graphCanvasBBox.minY,\n maxY = graphCanvasBBox.maxY;\n\n if (dx > 0) {\n if (maxX < -expandWidth) {\n dx = 0;\n } else if (maxX - dx < -expandWidth) {\n dx = maxX + expandWidth;\n }\n } else if (dx < 0) {\n if (minX > width + expandWidth) {\n dx = 0;\n } else if (minX - dx > width + expandWidth) {\n dx = minX - (width + expandWidth);\n }\n }\n\n if (dy > 0) {\n if (maxY < -expandHeight) {\n dy = 0;\n } else if (maxY - dy < -expandHeight) {\n dy = maxY + expandHeight;\n }\n } else if (dy < 0) {\n if (minY > height + expandHeight) {\n dy = 0;\n } else if (minY - dy > height + expandHeight) {\n dy = minY - (height + expandHeight);\n }\n }\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n graph.translate(-dx, -dy);\n }\n\n ev.preventDefault(); // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Njcm9sbC1jYW52YXMuanM/NmZmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdCQUF3QjtBQUN4Qjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLG9CQUFvQjtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0IsMkJBQTJCO0FBQzFEO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsb0JBQW9CO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw2QkFBNkIsb0JBQW9CO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQywyQkFBMkI7QUFDNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLDZCQUE2QixvQkFBb0I7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9zY3JvbGwtY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIEFMTE9XX0VWRU5UUyA9IFsnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaXJlY3Rpb246ICdib3RoJyxcbiAgICAgIGVuYWJsZU9wdGltaXplOiBmYWxzZSxcbiAgICAgIHpvb21LZXk6ICdjdHJsJyxcbiAgICAgIC8vIHNjcm9sbC1jYW52YXMg5Y+v5rua5Yqo55qE5omp5bGV6IyD5Zu077yM6buY6K6k5Li6IDDvvIzljbPmnIDlpJrlj6/ku6Xmu5rliqjkuIDlsY/nmoTkvY3nva5cbiAgICAgIC8vIOW9k+iuvue9rueahOWAvOWkp+S6jiAwIOaXtu+8jOWNs+a7muWKqOWPr+S7pei2hei/h+S4gOWxj1xuICAgICAgLy8g5b2T6K6+572u55qE5YC85bCP5LqOIDAg5pe277yM55u45b2T5LqO57yp5bCP5LqG5Y+v5rua5Yqo6IyD5Zu0XG4gICAgICAvLyDlhbfkvZPlrp7kvovlj6/lj4LogIPvvJpodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL21kbi9ybXNfZjhjNmEwL2FmdHMvaW1nL0EqSUZmb1M2N19Ic3NBQUFBQUFBQUFBQUFBQVJRbkFRXG4gICAgICBzY2FsYWJsZVJhbmdlOiAwXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgaWYgKCF0aGlzLnpvb21LZXkgfHwgQUxMT1dfRVZFTlRTLmluZGV4T2YodGhpcy56b29tS2V5KSA9PT0gLTEpIHRoaXMuem9vbUtleSA9ICdjdHJsJztcbiAgICByZXR1cm4ge1xuICAgICAgd2hlZWw6ICdvbldoZWVsJ1xuICAgIH07XG4gIH0sXG4gIG9uV2hlZWw6IGZ1bmN0aW9uIG9uV2hlZWwoZXYpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIga2V5RG93biA9IGV2W3RoaXMuem9vbUtleSArIFwiS2V5XCJdO1xuICAgIGlmICh0aGlzLnpvb21LZXkgPT09ICdjb250cm9sJykga2V5RG93biA9IGV2LmN0cmxLZXk7XG5cbiAgICBpZiAoa2V5RG93bikge1xuICAgICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgICB2YXIgcG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChldi5jbGllbnRYLCBldi5jbGllbnRZKTtcbiAgICAgIHZhciByYXRpbyA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgICAgaWYgKGV2LndoZWVsRGVsdGEgPiAwKSB7XG4gICAgICAgIHJhdGlvID0gcmF0aW8gKyByYXRpbyAqIDAuMDU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYXRpbyA9IHJhdGlvIC0gcmF0aW8gKiAwLjA1O1xuICAgICAgfVxuXG4gICAgICBncmFwaC56b29tVG8ocmF0aW8sIHtcbiAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgeTogcG9pbnQueVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkeCA9IGV2LmRlbHRhWCB8fCBldi5tb3ZlbWVudFg7XG4gICAgICB2YXIgZHkgPSBldi5kZWx0YVkgfHwgZXYubW92ZW1lbnRZO1xuICAgICAgaWYgKCFkeSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+IC0xKSBkeSA9IC1ldi53aGVlbERlbHRhICogMTI1IC8gMztcbiAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgICAgdmFyIGhlaWdodCA9IHRoaXMuZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICAgIHZhciBncmFwaENhbnZhc0JCb3ggPSB0aGlzLmdyYXBoLmdldCgnY2FudmFzJykuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgdmFyIGV4cGFuZFdpZHRoID0gdGhpcy5zY2FsYWJsZVJhbmdlO1xuICAgICAgdmFyIGV4cGFuZEhlaWdodCA9IHRoaXMuc2NhbGFibGVSYW5nZTsgLy8g6IulIHNjYWxhYmxlUmFuZ2Ug5pivIDB+MSDnmoTlsI/mlbDvvIzliJnkvZzkuLrmr5TkvovogIPomZFcblxuICAgICAgaWYgKGV4cGFuZFdpZHRoIDwgMSAmJiBleHBhbmRXaWR0aCA+IC0xKSB7XG4gICAgICAgIGV4cGFuZFdpZHRoID0gd2lkdGggKiBleHBhbmRXaWR0aDtcbiAgICAgICAgZXhwYW5kSGVpZ2h0ID0gaGVpZ2h0ICogZXhwYW5kSGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICB2YXIgbWluWCA9IGdyYXBoQ2FudmFzQkJveC5taW5YLFxuICAgICAgICAgIG1heFggPSBncmFwaENhbnZhc0JCb3gubWF4WCxcbiAgICAgICAgICBtaW5ZID0gZ3JhcGhDYW52YXNCQm94Lm1pblksXG4gICAgICAgICAgbWF4WSA9IGdyYXBoQ2FudmFzQkJveC5tYXhZO1xuXG4gICAgICBpZiAoZHggPiAwKSB7XG4gICAgICAgIGlmIChtYXhYIDwgLWV4cGFuZFdpZHRoKSB7XG4gICAgICAgICAgZHggPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1heFggLSBkeCA8IC1leHBhbmRXaWR0aCkge1xuICAgICAgICAgIGR4ID0gbWF4WCArIGV4cGFuZFdpZHRoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGR4IDwgMCkge1xuICAgICAgICBpZiAobWluWCA+IHdpZHRoICsgZXhwYW5kV2lkdGgpIHtcbiAgICAgICAgICBkeCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAobWluWCAtIGR4ID4gd2lkdGggKyBleHBhbmRXaWR0aCkge1xuICAgICAgICAgIGR4ID0gbWluWCAtICh3aWR0aCArIGV4cGFuZFdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZHkgPiAwKSB7XG4gICAgICAgIGlmIChtYXhZIDwgLWV4cGFuZEhlaWdodCkge1xuICAgICAgICAgIGR5ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhZIC0gZHkgPCAtZXhwYW5kSGVpZ2h0KSB7XG4gICAgICAgICAgZHkgPSBtYXhZICsgZXhwYW5kSGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGR5IDwgMCkge1xuICAgICAgICBpZiAobWluWSA+IGhlaWdodCArIGV4cGFuZEhlaWdodCkge1xuICAgICAgICAgIGR5ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChtaW5ZIC0gZHkgPiBoZWlnaHQgKyBleHBhbmRIZWlnaHQpIHtcbiAgICAgICAgICBkeSA9IG1pblkgLSAoaGVpZ2h0ICsgZXhwYW5kSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5nZXQoJ2RpcmVjdGlvbicpID09PSAneCcpIHtcbiAgICAgICAgZHkgPSAwO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmdldCgnZGlyZWN0aW9uJykgPT09ICd5Jykge1xuICAgICAgICBkeCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnRyYW5zbGF0ZSgtZHgsIC1keSk7XG4gICAgfVxuXG4gICAgZXYucHJldmVudERlZmF1bHQoKTsgLy8gaGlkZSB0aGUgc2hhcGVzIHdoZW4gdGhlIHpvb20gcmF0aW8gaXMgc21hbGxlciB0aGFuIG9wdGltaXplWm9vbVxuICAgIC8vIGhpZGUgdGhlIHNoYXBlcyB3aGVuIHpvb21taW5nXG5cbiAgICB2YXIgZW5hYmxlT3B0aW1pemUgPSB0aGlzLmdldCgnZW5hYmxlT3B0aW1pemUnKTtcblxuICAgIGlmIChlbmFibGVPcHRpbWl6ZSkge1xuICAgICAgdmFyIG9wdGltaXplWm9vbV8xID0gdGhpcy5nZXQoJ29wdGltaXplWm9vbScpO1xuICAgICAgdmFyIG9wdGltaXplZCA9IHRoaXMuZ2V0KCdvcHRpbWl6ZWQnKTtcbiAgICAgIHZhciBub2Rlc18xID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgICAgIHZhciBlZGdlc18xID0gZ3JhcGguZ2V0RWRnZXMoKTtcbiAgICAgIHZhciBub2Rlc0xlbmd0aF8xID0gbm9kZXNfMS5sZW5ndGg7XG4gICAgICB2YXIgZWRnZXNMZW5ndGhfMSA9IGVkZ2VzXzEubGVuZ3RoOyAvLyBoaWRpbmdcblxuICAgICAgaWYgKCFvcHRpbWl6ZWQpIHtcbiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBub2Rlc0xlbmd0aF8xOyBuKyspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzXzFbbl07XG5cbiAgICAgICAgICBpZiAoIW5vZGUuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcblxuICAgICAgICAgICAgICBpZiAoIXNoYXBlLmRlc3RvcnllZCAmJiAhc2hhcGUuZ2V0KCdpc0tleVNoYXBlJykpIHtcbiAgICAgICAgICAgICAgICBzaGFwZS5zZXQoJ29yaS12aXNpYmlsaXR5Jywgc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpIHx8IHNoYXBlLmdldCgndmlzaWJsZScpKTtcbiAgICAgICAgICAgICAgICBzaGFwZS5oaWRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSAwOyBlZGdlSW5kZXggPCBlZGdlc0xlbmd0aF8xOyBlZGdlSW5kZXgrKykge1xuICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNfMVtlZGdlSW5kZXhdO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICBzaGFwZS5oaWRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXQoJ29wdGltaXplZCcsIHRydWUpO1xuICAgICAgfSAvLyBzaG93aW5nIGFmdGVyIDEwMG1zXG5cblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZ2V0KCd0aW1lb3V0JykpO1xuICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRab29tID0gZ3JhcGguZ2V0Wm9vbSgpO1xuXG4gICAgICAgIHZhciBjdXJPcHRpbWl6ZWQgPSBfdGhpcy5nZXQoJ29wdGltaXplZCcpO1xuXG4gICAgICAgIGlmIChjdXJPcHRpbWl6ZWQpIHtcbiAgICAgICAgICBfdGhpcy5zZXQoJ29wdGltaXplZCcsIGZhbHNlKTtcblxuICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXNMZW5ndGhfMTsgbisrKSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzXzFbbl07XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Wm9vbSA8IG9wdGltaXplWm9vbV8xKSB7XG4gICAgICAgICAgICAgIHZhciBrZXlTaGFwZSA9IG5vZGUuZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IGtleVNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgaWYgKG9yaVZpcykga2V5U2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcblxuICAgICAgICAgICAgICAgIGlmICghc2hhcGUuZ2V0KCd2aXNpYmxlJykgJiYgb3JpVmlzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gMDsgZWRnZUluZGV4IDwgZWRnZXNMZW5ndGhfMTsgZWRnZUluZGV4KyspIHtcbiAgICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNfMVtlZGdlSW5kZXhdO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWRnZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFpvb20gPCBvcHRpbWl6ZVpvb21fMSkge1xuICAgICAgICAgICAgICB2YXIga2V5U2hhcGUgPSBlZGdlLmdldEtleVNoYXBlKCk7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBrZXlTaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGtleVNoYXBlLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFwZS5nZXQoJ3Zpc2libGUnKSkge1xuICAgICAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgICAgIGlmIChvcmlWaXMpIHNoYXBlLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgICB0aGlzLnNldCgndGltZW91dCcsIHRpbWVvdXQpO1xuICAgIH1cbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'ctrl';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nvar DEFAULT_COMBINED_KEY = '1';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n combinedKey: DEFAULT_COMBINED_KEY,\n functionName: 'fitView',\n functionParams: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior shortcuts-fit-view \\u7684 trigger \\u53C2\\u6570 '\" + this.trigger + \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u8BF7\\u8F93\\u5165 'drag'\\u3001'shift'\\u3001'ctrl' \\u6216 'alt'\");\n }\n\n if (this.combinedKey === this.trigger) {\n this.combinedKey = undefined;\n }\n\n return {\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (!this.triggerKeydown) {\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.triggerKeydown = true;\n } else {\n this.triggerKeydown = false;\n }\n }\n\n var graph = this.graph;\n\n if (!graph[this.functionName]) {\n console.warn(\"Behavior shortcuts-fit-view \\u7684 functionName \\u53C2\\u6570 '\" + this.functionName + \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u5B83\\u4E0D\\u662F Graph \\u7684\\u4E00\\u4E2A\\u51FD\\u6570\\u540D\");\n return {};\n } // 未配置 combinedKey,直接 fitView\n\n\n if (this.triggerKeydown && !this.combinedKey) {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n return;\n }\n\n var combinedKeyLowerCase = this.combinedKey.toLowerCase();\n\n if (this.triggerKeydown) {\n if (codeLowerCase === combinedKeyLowerCase || codeLowerCase === 'control' && combinedKeyLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && combinedKeyLowerCase === 'control') {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n }\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.triggerKeydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Nob3J0Y3V0cy1jYWxsLmpzP2Q5YjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSx3SEFBd0g7QUFDeEg7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMEhBQTBIO0FBQzFIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Nob3J0Y3V0cy1jYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIERFRkFVTFRfVFJJR0dFUiA9ICdjdHJsJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbnZhciBERUZBVUxUX0NPTUJJTkVEX0tFWSA9ICcxJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgY29tYmluZWRLZXk6IERFRkFVTFRfQ09NQklORURfS0VZLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnZml0VmlldycsXG4gICAgICBmdW5jdGlvblBhcmFtczogW11cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZih0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHRoaXMudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjtcbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIHNob3J0Y3V0cy1maXQtdmlldyBcXHU3Njg0IHRyaWdnZXIgXFx1NTNDMlxcdTY1NzAgJ1wiICsgdGhpcy50cmlnZ2VyICsgXCInIFxcdTRFMERcXHU1NDA4XFx1NkNENVxcdUZGMENcXHU4QkY3XFx1OEY5M1xcdTUxNjUgJ2RyYWcnXFx1MzAwMSdzaGlmdCdcXHUzMDAxJ2N0cmwnIFxcdTYyMTYgJ2FsdCdcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tYmluZWRLZXkgPT09IHRoaXMudHJpZ2dlcikge1xuICAgICAgdGhpcy5jb21iaW5lZEtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlckxvd2VyQ2FzZSA9IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb2RlTG93ZXJDYXNlID0gY29kZS50b0xvd2VyQ2FzZSgpOyAvLyDmjInkvY8gY29udHJvbCDplK7ml7bvvIzlhYHorrjnlKjmiLforr7nva4gdHJpZ2dlciDkuLogY3RybFxuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJLZXlkb3duKSB7XG4gICAgICBpZiAoY29kZUxvd2VyQ2FzZSA9PT0gdHJpZ2dlckxvd2VyQ2FzZSB8fCBjb2RlTG93ZXJDYXNlID09PSAnY29udHJvbCcgJiYgdHJpZ2dlckxvd2VyQ2FzZSA9PT0gJ2N0cmwnIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjdHJsJyAmJiB0cmlnZ2VyTG93ZXJDYXNlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyS2V5ZG93biA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyaWdnZXJLZXlkb3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBzaG9ydGN1dHMtZml0LXZpZXcgXFx1NzY4NCBmdW5jdGlvbk5hbWUgXFx1NTNDMlxcdTY1NzAgJ1wiICsgdGhpcy5mdW5jdGlvbk5hbWUgKyBcIicgXFx1NEUwRFxcdTU0MDhcXHU2Q0Q1XFx1RkYwQ1xcdTVCODNcXHU0RTBEXFx1NjYyRiBHcmFwaCBcXHU3Njg0XFx1NEUwMFxcdTRFMkFcXHU1MUZEXFx1NjU3MFxcdTU0MERcIik7XG4gICAgICByZXR1cm4ge307XG4gICAgfSAvLyDmnKrphY3nva4gY29tYmluZWRLZXnvvIznm7TmjqUgZml0Vmlld1xuXG5cbiAgICBpZiAodGhpcy50cmlnZ2VyS2V5ZG93biAmJiAhdGhpcy5jb21iaW5lZEtleSkge1xuICAgICAgaWYgKHRoaXMuZnVuY3Rpb25QYXJhbXMgJiYgdGhpcy5mdW5jdGlvblBhcmFtcy5sZW5ndGgpIGdyYXBoW3RoaXMuZnVuY3Rpb25OYW1lXS5hcHBseShncmFwaCwgdGhpcy5mdW5jdGlvblBhcmFtcyk7ZWxzZSBncmFwaFt0aGlzLmZ1bmN0aW9uTmFtZV0oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29tYmluZWRLZXlMb3dlckNhc2UgPSB0aGlzLmNvbWJpbmVkS2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyS2V5ZG93bikge1xuICAgICAgaWYgKGNvZGVMb3dlckNhc2UgPT09IGNvbWJpbmVkS2V5TG93ZXJDYXNlIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjb250cm9sJyAmJiBjb21iaW5lZEtleUxvd2VyQ2FzZSA9PT0gJ2N0cmwnIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjdHJsJyAmJiBjb21iaW5lZEtleUxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICAgIGlmICh0aGlzLmZ1bmN0aW9uUGFyYW1zICYmIHRoaXMuZnVuY3Rpb25QYXJhbXMubGVuZ3RoKSBncmFwaFt0aGlzLmZ1bmN0aW9uTmFtZV0uYXBwbHkoZ3JhcGgsIHRoaXMuZnVuY3Rpb25QYXJhbXMpO2Vsc2UgZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIGlmICh0aGlzLmJydXNoKSB7XG4gICAgICAvLyDmuIXpmaTmiYDmnInpgInkuK3nirbmgIHlkI7vvIzorr7nva7mi5blvpfliqjnirbmgIHkuLpmYWxzZe+8jOW5tua4hemZpOahhumAieeahGJydXNoXG4gICAgICB0aGlzLmJydXNoLnJlbW92ZSh0cnVlKTtcbiAgICAgIHRoaXMuYnJ1c2ggPSBudWxsO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcktleWRvd24gPSBmYWxzZTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onMouseEnter: function onMouseEnter(e) {\n var item = e.item;\n this.currentTarget = item;\n this.showTooltip(e);\n this.graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.shouldUpdate(e)) {\n this.hideTooltip();\n return;\n }\n\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n\n this.updatePosition(e);\n },\n onMouseLeave: function onMouseLeave(e) {\n if (!this.shouldEnd(e)) {\n return;\n }\n\n this.hideTooltip();\n this.graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n },\n showTooltip: function showTooltip(e) {\n var container = this.container;\n\n if (!e.item || e.item.destroyed) {\n return;\n }\n\n if (!container) {\n container = this.createTooltip(this.graph.get('canvas'));\n this.container = container;\n }\n\n var text = this.formatText(e.item.get('model'), e);\n container.innerHTML = text;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'visible'\n });\n this.updatePosition(e);\n },\n hideTooltip: function hideTooltip() {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'hidden'\n });\n },\n updatePosition: function updatePosition(e) {\n var shouldBegin = this.get('shouldBegin');\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n container = _a.container,\n graph = _a.graph;\n\n if (!shouldBegin(e)) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n visibility: 'hidden'\n });\n return;\n }\n\n var point = graph.getPointByClient(e.clientX, e.clientY);\n\n var _b = graph.getCanvasByPoint(point.x, point.y),\n x = _b.x,\n y = _b.y;\n\n var bbox = container.getBoundingClientRect();\n\n if (x > width / 2) {\n x -= bbox.width;\n } else {\n x += this.offset;\n }\n\n if (y > height / 2) {\n y -= bbox.height;\n } else {\n y += this.offset;\n }\n\n var left = x + \"px\";\n var top = y + \"px\";\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n left: left,\n top: top,\n visibility: 'visible'\n });\n },\n createTooltip: function createTooltip(canvas) {\n var el = canvas.get('el');\n el.style.position = 'relative';\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n el.parentNode.appendChild(container);\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n position: 'absolute',\n visibility: 'visible'\n });\n this.width = canvas.get('width');\n this.height = canvas.get('height');\n this.container = container;\n this.graph.get('tooltips').push(container);\n return container;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAtYmFzZS5qcz82YmNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBc0Q7QUFDdkM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxnRUFBUztBQUNmO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixnRUFBUztBQUM3QjtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAtYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbk1vdXNlRW50ZXI6IGZ1bmN0aW9uIG9uTW91c2VFbnRlcihlKSB7XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gaXRlbTtcbiAgICB0aGlzLnNob3dUb29sdGlwKGUpO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgndG9vbHRpcGNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGFjdGlvbjogJ3Nob3cnXG4gICAgfSk7XG4gIH0sXG4gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbiBvbk1vdXNlTW92ZShlKSB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZShlKSkge1xuICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXJyZW50VGFyZ2V0IHx8IGUuaXRlbSAhPT0gdGhpcy5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbihlKTtcbiAgfSxcbiAgb25Nb3VzZUxlYXZlOiBmdW5jdGlvbiBvbk1vdXNlTGVhdmUoZSkge1xuICAgIGlmICghdGhpcy5zaG91bGRFbmQoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCd0b29sdGlwY2hhbmdlJywge1xuICAgICAgaXRlbTogdGhpcy5jdXJyZW50VGFyZ2V0LFxuICAgICAgYWN0aW9uOiAnaGlkZSdcbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuICB9LFxuICBzaG93VG9vbHRpcDogZnVuY3Rpb24gc2hvd1Rvb2x0aXAoZSkge1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcblxuICAgIGlmICghZS5pdGVtIHx8IGUuaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gdGhpcy5jcmVhdGVUb29sdGlwKHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKSk7XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuZm9ybWF0VGV4dChlLml0ZW0uZ2V0KCdtb2RlbCcpLCBlKTtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gdGV4dDtcbiAgICBtb2RpZnlDU1ModGhpcy5jb250YWluZXIsIHtcbiAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oZSk7XG4gIH0sXG4gIGhpZGVUb29sdGlwOiBmdW5jdGlvbiBoaWRlVG9vbHRpcCgpIHtcbiAgICBtb2RpZnlDU1ModGhpcy5jb250YWluZXIsIHtcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH0sXG4gIHVwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbihlKSB7XG4gICAgdmFyIHNob3VsZEJlZ2luID0gdGhpcy5nZXQoJ3Nob3VsZEJlZ2luJyk7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICB3aWR0aCA9IF9hLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQsXG4gICAgICAgIGNvbnRhaW5lciA9IF9hLmNvbnRhaW5lcixcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaDtcblxuICAgIGlmICghc2hvdWxkQmVnaW4oZSkpIHtcbiAgICAgIG1vZGlmeUNTUyhjb250YWluZXIsIHtcbiAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwb2ludCA9IGdyYXBoLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuXG4gICAgdmFyIF9iID0gZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChwb2ludC54LCBwb2ludC55KSxcbiAgICAgICAgeCA9IF9iLngsXG4gICAgICAgIHkgPSBfYi55O1xuXG4gICAgdmFyIGJib3ggPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAoeCA+IHdpZHRoIC8gMikge1xuICAgICAgeCAtPSBiYm94LndpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ICs9IHRoaXMub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmICh5ID4gaGVpZ2h0IC8gMikge1xuICAgICAgeSAtPSBiYm94LmhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgeSArPSB0aGlzLm9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgbGVmdCA9IHggKyBcInB4XCI7XG4gICAgdmFyIHRvcCA9IHkgKyBcInB4XCI7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuY29udGFpbmVyLCB7XG4gICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgdG9wOiB0b3AsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgfSxcbiAgY3JlYXRlVG9vbHRpcDogZnVuY3Rpb24gY3JlYXRlVG9vbHRpcChjYW52YXMpIHtcbiAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cXFwiZzYtdG9vbHRpcCBnNi1cIiArIHRoaXMuaXRlbSArIFwiLXRvb2x0aXBcXFwiPjwvZGl2PlwiKTtcbiAgICBlbC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICB0aGlzLndpZHRoID0gY2FudmFzLmdldCgnd2lkdGgnKTtcbiAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5nZXQoJ2hlaWdodCcpO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuZ3JhcGguZ2V0KCd0b29sdGlwcycpLnB1c2goY29udGFpbmVyKTtcbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'node',\n offset: 12,\n formatText: function formatText(model) {\n return model.label;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAuanM/ZDU0NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDQztBQUNuQixxSEFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUUscURBQUksQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvdG9vbHRpcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgYmFzZSBmcm9tICcuL3Rvb2x0aXAtYmFzZSc7XG5leHBvcnQgZGVmYXVsdCBfX2Fzc2lnbih7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW06ICdub2RlJyxcbiAgICAgIG9mZnNldDogMTIsXG4gICAgICBmb3JtYXRUZXh0OiBmdW5jdGlvbiBmb3JtYXRUZXh0KG1vZGVsKSB7XG4gICAgICAgIHJldHVybiBtb2RlbC5sYWJlbDtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ25vZGU6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ25vZGU6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGFmdGVycmVtb3ZlaXRlbTogJ29uTW91c2VMZWF2ZSdcbiAgICB9O1xuICB9XG59LCBiYXNlKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\nvar DELTA = 0.05;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n sensitivity: 2,\n minZoom: undefined,\n maxZoom: undefined,\n enableOptimize: false,\n optimizeZoom: 0.1,\n fixSelectedItems: {\n fixAll: false,\n fixLineWidth: false,\n fixLabel: false,\n fixState: 'selected'\n }\n };\n },\n getEvents: function getEvents() {\n var fixSelectedItems = this.fixSelectedItems;\n if (!fixSelectedItems.fixState) fixSelectedItems.fixState = 'selected';\n\n if (fixSelectedItems.fixAll) {\n fixSelectedItems.fixLineWidth = true;\n fixSelectedItems.fixLabel = true;\n }\n\n return {\n wheel: 'onWheel',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd'\n };\n },\n onTouchStart: function onTouchStart(evt) {\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n evt.preventDefault(); // 如果不是缩放事件则禁止继续执行\n\n if (!event2) {\n return;\n }\n\n if (this.shouldBegin && !this.shouldBegin.call(this, evt)) {\n return;\n } // 第一个触摸点位置\n\n\n this.startPoint = {\n pageX: event1.pageX,\n pageY: event1.pageY\n };\n this.moveable = true;\n\n if (event2) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n }\n\n this.originScale = this.graph.getZoom() || this.currentScale || 1;\n },\n onTouchMove: function onTouchMove(evt) {\n if (!this.moveable) {\n return;\n }\n\n evt.preventDefault();\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (!event2) {\n return;\n }\n\n if (!this.endPoint) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n } // 获取坐标之间的距离\n\n\n var getDistance = function getDistance(start, end) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n }; // 双指缩放比例\n\n\n var scale = getDistance({\n x: event1.pageX,\n y: event1.pageY\n }, {\n x: event2.pageX,\n y: event2.pageY\n }) / getDistance({\n x: this.startPoint.pageX,\n y: this.startPoint.pageY\n }, {\n x: this.endPoint.pageX,\n y: this.endPoint.pageY\n }); // 应用到画布上的缩放比例\n\n var zoom = this.originScale * scale; // 缓存当前的缩放比例\n\n this.currentScale = zoom;\n var minZoom = this.get('minZoom') || this.graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || this.graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n }\n\n var canvas = this.graph.get('canvas');\n var point = canvas.getPointByClient(evt.clientX, evt.clientY);\n this.graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n });\n this.graph.emit('wheelzoom', evt);\n },\n onTouchEnd: function onTouchEnd() {\n this.moveable = false;\n this.endPoint = null;\n },\n onWheel: function onWheel(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n fixSelectedItems = _a.fixSelectedItems;\n\n if (this.shouldBegin && !this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, e)) {\n return;\n }\n\n e.preventDefault();\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(e.clientX, e.clientY);\n var sensitivity = this.get('sensitivity');\n var graphZoom = graph.getZoom();\n var ratio = graphZoom;\n var zoom = graphZoom; // 兼容IE、Firefox及Chrome\n\n if (e.wheelDelta < 0) {\n ratio = 1 - DELTA * sensitivity;\n } else {\n ratio = 1 / (1 - DELTA * sensitivity);\n }\n\n zoom = graphZoom * ratio; // const zoom = ratio * graphZoom;\n\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n } // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n } // fix the items when zooming\n\n\n if (graphZoom <= 1) {\n var fixNodes = void 0,\n fixEdges = void 0;\n\n if (fixSelectedItems.fixAll || fixSelectedItems.fixLineWidth || fixSelectedItems.fixLabel) {\n fixNodes = graph.findAllByState('node', fixSelectedItems.fixState);\n fixEdges = graph.findAllByState('edge', fixSelectedItems.fixState);\n var scale = graphZoom / zoom;\n var fixNodesLength = fixNodes.length;\n\n for (var fn = 0; fn < fixNodesLength; fn++) {\n var node = fixNodes[fn];\n var group = node.getContainer();\n var nodeModel = node.getModel();\n var originStyle = node.getOriginStyle();\n var itemStateStyle = node.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = node.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, node)[fixSelectedItems.fixState];\n\n if (fixSelectedItems.fixAll) {\n if (zoom <= 1) {\n var groupMatrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(group.getMatrix());\n if (!groupMatrix) groupMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n var _b = node.getModel(),\n x = _b.x,\n y = _b.y;\n\n groupMatrix = transform(groupMatrix, [['t', -x, -y], ['s', scale, scale], ['t', x, y]]);\n group.setMatrix(groupMatrix);\n }\n } else {\n var children = group.get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom); // * graphZoom / zoom\n\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || originStyle.lineWidth || 0;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom); // * graphZoom / zoom\n\n if (fontSize) break;\n }\n }\n }\n }\n }\n\n var fixEdgesLength = fixEdges.length;\n\n for (var fe = 0; fe < fixEdgesLength; fe++) {\n var edge = fixEdges[fe];\n var group = edge.getContainer();\n var children = group.get('children');\n var nodeModel = edge.getModel();\n var itemStateStyle = edge.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = edge.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, edge)[fixSelectedItems.fixState];\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel || fixSelectedItems.fixAll) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom);\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth || fixSelectedItems.fixAll) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || 1;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom);\n if (fontSize) break;\n }\n }\n }\n }\n }\n }\n\n graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n });\n graph.emit('wheelzoom', e);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3pvb20tY2FudmFzLmpzP2YxOWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ0w7QUFDbkMsZ0JBQWdCLHFEQUFHO0FBQ25CO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLG9CQUFvQjtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0IsMkJBQTJCO0FBQzFEO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsb0JBQW9CO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw2QkFBNkIsb0JBQW9CO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQywyQkFBMkI7QUFDNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLDZCQUE2QixvQkFBb0I7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQ0FBZ0Msd0RBQUs7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBLDJCQUEyQixvQkFBb0I7QUFDL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEU7O0FBRTVFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RTs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLG9CQUFvQjtBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3pvb20tY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIERFTFRBID0gMC4wNTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Vuc2l0aXZpdHk6IDIsXG4gICAgICBtaW5ab29tOiB1bmRlZmluZWQsXG4gICAgICBtYXhab29tOiB1bmRlZmluZWQsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICBvcHRpbWl6ZVpvb206IDAuMSxcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgZml4QWxsOiBmYWxzZSxcbiAgICAgICAgZml4TGluZVdpZHRoOiBmYWxzZSxcbiAgICAgICAgZml4TGFiZWw6IGZhbHNlLFxuICAgICAgICBmaXhTdGF0ZTogJ3NlbGVjdGVkJ1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBmaXhTZWxlY3RlZEl0ZW1zID0gdGhpcy5maXhTZWxlY3RlZEl0ZW1zO1xuICAgIGlmICghZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSkgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSA9ICdzZWxlY3RlZCc7XG5cbiAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoID0gdHJ1ZTtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3aGVlbDogJ29uV2hlZWwnLFxuICAgICAgdG91Y2hzdGFydDogJ29uVG91Y2hTdGFydCcsXG4gICAgICB0b3VjaG1vdmU6ICdvblRvdWNoTW92ZScsXG4gICAgICB0b3VjaGVuZDogJ29uVG91Y2hFbmQnXG4gICAgfTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZXZ0KSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldnQub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlpoLmnpzkuI3mmK/nvKnmlL7kuovku7bliJnnpoHmraLnu6fnu63miafooYxcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4gJiYgIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDnrKzkuIDkuKrop6bmkbjngrnkvY3nva5cblxuXG4gICAgdGhpcy5zdGFydFBvaW50ID0ge1xuICAgICAgcGFnZVg6IGV2ZW50MS5wYWdlWCxcbiAgICAgIHBhZ2VZOiBldmVudDEucGFnZVlcbiAgICB9O1xuICAgIHRoaXMubW92ZWFibGUgPSB0cnVlO1xuXG4gICAgaWYgKGV2ZW50Mikge1xuICAgICAgdGhpcy5lbmRQb2ludCA9IHtcbiAgICAgICAgcGFnZVg6IGV2ZW50Mi5wYWdlWCxcbiAgICAgICAgcGFnZVk6IGV2ZW50Mi5wYWdlWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpblNjYWxlID0gdGhpcy5ncmFwaC5nZXRab29tKCkgfHwgdGhpcy5jdXJyZW50U2NhbGUgfHwgMTtcbiAgfSxcbiAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGV2dCkge1xuICAgIGlmICghdGhpcy5tb3ZlYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciB0b3VjaGVzID0gZXZ0Lm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50KSB7XG4gICAgICB0aGlzLmVuZFBvaW50ID0ge1xuICAgICAgICBwYWdlWDogZXZlbnQyLnBhZ2VYLFxuICAgICAgICBwYWdlWTogZXZlbnQyLnBhZ2VZXG4gICAgICB9O1xuICAgIH0gLy8g6I635Y+W5Z2Q5qCH5LmL6Ze055qE6Led56a7XG5cblxuICAgIHZhciBnZXREaXN0YW5jZSA9IGZ1bmN0aW9uIGdldERpc3RhbmNlKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBNYXRoLmh5cG90KGVuZC54IC0gc3RhcnQueCwgZW5kLnkgLSBzdGFydC55KTtcbiAgICB9OyAvLyDlj4zmjIfnvKnmlL7mr5TkvotcblxuXG4gICAgdmFyIHNjYWxlID0gZ2V0RGlzdGFuY2Uoe1xuICAgICAgeDogZXZlbnQxLnBhZ2VYLFxuICAgICAgeTogZXZlbnQxLnBhZ2VZXG4gICAgfSwge1xuICAgICAgeDogZXZlbnQyLnBhZ2VYLFxuICAgICAgeTogZXZlbnQyLnBhZ2VZXG4gICAgfSkgLyBnZXREaXN0YW5jZSh7XG4gICAgICB4OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVgsXG4gICAgICB5OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVlcbiAgICB9LCB7XG4gICAgICB4OiB0aGlzLmVuZFBvaW50LnBhZ2VYLFxuICAgICAgeTogdGhpcy5lbmRQb2ludC5wYWdlWVxuICAgIH0pOyAvLyDlupTnlKjliLDnlLvluIPkuIrnmoTnvKnmlL7mr5TkvotcblxuICAgIHZhciB6b29tID0gdGhpcy5vcmlnaW5TY2FsZSAqIHNjYWxlOyAvLyDnvJPlrZjlvZPliY3nmoTnvKnmlL7mr5TkvotcblxuICAgIHRoaXMuY3VycmVudFNjYWxlID0gem9vbTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21pblpvb20nKTtcbiAgICB2YXIgbWF4Wm9vbSA9IHRoaXMuZ2V0KCdtYXhab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21heFpvb20nKTtcblxuICAgIGlmICh6b29tID4gbWF4Wm9vbSB8fCB6b29tIDwgbWluWm9vbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYW52YXMgPSB0aGlzLmdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlDbGllbnQoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcbiAgICB0aGlzLmdyYXBoLnpvb21Ubyh6b29tLCB7XG4gICAgICB4OiBwb2ludC54LFxuICAgICAgeTogcG9pbnQueVxuICAgIH0pO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgnd2hlZWx6b29tJywgZXZ0KTtcbiAgfSxcbiAgb25Ub3VjaEVuZDogZnVuY3Rpb24gb25Ub3VjaEVuZCgpIHtcbiAgICB0aGlzLm1vdmVhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5lbmRQb2ludCA9IG51bGw7XG4gIH0sXG4gIG9uV2hlZWw6IGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBmaXhTZWxlY3RlZEl0ZW1zID0gX2EuZml4U2VsZWN0ZWRJdGVtcztcblxuICAgIGlmICh0aGlzLnNob3VsZEJlZ2luICYmICF0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIHZhciBzZW5zaXRpdml0eSA9IHRoaXMuZ2V0KCdzZW5zaXRpdml0eScpO1xuICAgIHZhciBncmFwaFpvb20gPSBncmFwaC5nZXRab29tKCk7XG4gICAgdmFyIHJhdGlvID0gZ3JhcGhab29tO1xuICAgIHZhciB6b29tID0gZ3JhcGhab29tOyAvLyDlhbzlrrlJReOAgUZpcmVmb3jlj4pDaHJvbWVcblxuICAgIGlmIChlLndoZWVsRGVsdGEgPCAwKSB7XG4gICAgICByYXRpbyA9IDEgLSBERUxUQSAqIHNlbnNpdGl2aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICByYXRpbyA9IDEgLyAoMSAtIERFTFRBICogc2Vuc2l0aXZpdHkpO1xuICAgIH1cblxuICAgIHpvb20gPSBncmFwaFpvb20gKiByYXRpbzsgLy8gY29uc3Qgem9vbSA9IHJhdGlvICogZ3JhcGhab29tO1xuXG4gICAgdmFyIG1pblpvb20gPSB0aGlzLmdldCgnbWluWm9vbScpIHx8IGdyYXBoLmdldCgnbWluWm9vbScpO1xuICAgIHZhciBtYXhab29tID0gdGhpcy5nZXQoJ21heFpvb20nKSB8fCBncmFwaC5nZXQoJ21heFpvb20nKTtcblxuICAgIGlmICh6b29tID4gbWF4Wm9vbSB8fCB6b29tIDwgbWluWm9vbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gaGlkZSB0aGUgc2hhcGVzIHdoZW4gdGhlIHpvb20gcmF0aW8gaXMgc21hbGxlciB0aGFuIG9wdGltaXplWm9vbVxuICAgIC8vIGhpZGUgdGhlIHNoYXBlcyB3aGVuIHpvb21taW5nXG5cblxuICAgIHZhciBlbmFibGVPcHRpbWl6ZSA9IHRoaXMuZ2V0KCdlbmFibGVPcHRpbWl6ZScpO1xuXG4gICAgaWYgKGVuYWJsZU9wdGltaXplKSB7XG4gICAgICB2YXIgb3B0aW1pemVab29tXzEgPSB0aGlzLmdldCgnb3B0aW1pemVab29tJyk7XG4gICAgICB2YXIgb3B0aW1pemVkID0gdGhpcy5nZXQoJ29wdGltaXplZCcpO1xuICAgICAgdmFyIG5vZGVzXzEgPSBncmFwaC5nZXROb2RlcygpO1xuICAgICAgdmFyIGVkZ2VzXzEgPSBncmFwaC5nZXRFZGdlcygpO1xuICAgICAgdmFyIG5vZGVzTGVuZ3RoXzEgPSBub2Rlc18xLmxlbmd0aDtcbiAgICAgIHZhciBlZGdlc0xlbmd0aF8xID0gZWRnZXNfMS5sZW5ndGg7IC8vIGhpZGluZ1xuXG4gICAgICBpZiAoIW9wdGltaXplZCkge1xuICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzTGVuZ3RoXzE7IG4rKykge1xuICAgICAgICAgIHZhciBub2RlID0gbm9kZXNfMVtuXTtcblxuICAgICAgICAgIGlmICghbm9kZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuXG4gICAgICAgICAgICAgIGlmICghc2hhcGUuZGVzdG9yeWVkICYmICFzaGFwZS5nZXQoJ2lzS2V5U2hhcGUnKSkge1xuICAgICAgICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgICAgIHNoYXBlLmhpZGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IDA7IGVkZ2VJbmRleCA8IGVkZ2VzTGVuZ3RoXzE7IGVkZ2VJbmRleCsrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc18xW2VkZ2VJbmRleF07XG4gICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWRnZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICBzaGFwZS5zZXQoJ29yaS12aXNpYmlsaXR5Jywgc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpIHx8IHNoYXBlLmdldCgndmlzaWJsZScpKTtcbiAgICAgICAgICAgIHNoYXBlLmhpZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldCgnb3B0aW1pemVkJywgdHJ1ZSk7XG4gICAgICB9IC8vIHNob3dpbmcgYWZ0ZXIgMTAwbXNcblxuXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5nZXQoJ3RpbWVvdXQnKSk7XG4gICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudFpvb20gPSBncmFwaC5nZXRab29tKCk7XG5cbiAgICAgICAgdmFyIGN1ck9wdGltaXplZCA9IF90aGlzLmdldCgnb3B0aW1pemVkJyk7XG5cbiAgICAgICAgaWYgKGN1ck9wdGltaXplZCkge1xuICAgICAgICAgIF90aGlzLnNldCgnb3B0aW1pemVkJywgZmFsc2UpO1xuXG4gICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBub2Rlc0xlbmd0aF8xOyBuKyspIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNfMVtuXTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRab29tIDwgb3B0aW1pemVab29tXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gbm9kZS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgICB2YXIgb3JpVmlzID0ga2V5U2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICBpZiAob3JpVmlzKSBrZXlTaGFwZS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcbiAgICAgICAgICAgICAgICB2YXIgb3JpVmlzID0gc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFwZS5nZXQoJ3Zpc2libGUnKSAmJiBvcmlWaXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChvcmlWaXMpIHNoYXBlLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSAwOyBlZGdlSW5kZXggPCBlZGdlc0xlbmd0aF8xOyBlZGdlSW5kZXgrKykge1xuICAgICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc18xW2VkZ2VJbmRleF07XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Wm9vbSA8IG9wdGltaXplWm9vbV8xKSB7XG4gICAgICAgICAgICAgIHZhciBrZXlTaGFwZSA9IGVkZ2UuZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IGtleVNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgaWYgKG9yaVZpcykga2V5U2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmdldCgndmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgb3JpVmlzID0gc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICAgICAgaWYgKG9yaVZpcykgc2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICAgIHRoaXMuc2V0KCd0aW1lb3V0JywgdGltZW91dCk7XG4gICAgfSAvLyBmaXggdGhlIGl0ZW1zIHdoZW4gem9vbWluZ1xuXG5cbiAgICBpZiAoZ3JhcGhab29tIDw9IDEpIHtcbiAgICAgIHZhciBmaXhOb2RlcyA9IHZvaWQgMCxcbiAgICAgICAgICBmaXhFZGdlcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4QWxsIHx8IGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoIHx8IGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwpIHtcbiAgICAgICAgZml4Tm9kZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUpO1xuICAgICAgICBmaXhFZGdlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdlZGdlJywgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSk7XG4gICAgICAgIHZhciBzY2FsZSA9IGdyYXBoWm9vbSAvIHpvb207XG4gICAgICAgIHZhciBmaXhOb2Rlc0xlbmd0aCA9IGZpeE5vZGVzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKHZhciBmbiA9IDA7IGZuIDwgZml4Tm9kZXNMZW5ndGg7IGZuKyspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IGZpeE5vZGVzW2ZuXTtcbiAgICAgICAgICB2YXIgZ3JvdXAgPSBub2RlLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBub2RlTW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgICAgdmFyIG9yaWdpblN0eWxlID0gbm9kZS5nZXRPcmlnaW5TdHlsZSgpO1xuICAgICAgICAgIHZhciBpdGVtU3RhdGVTdHlsZSA9IG5vZGUuZ2V0U3RhdGVTdHlsZShmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlKTtcbiAgICAgICAgICB2YXIgc2hhcGVTdGF0ZVN0eWxlID0gbm9kZS5nZXQoJ3NoYXBlRmFjdG9yeScpLmdldFNoYXBlKG5vZGVNb2RlbC50eXBlKS5nZXRTdGF0ZVN0eWxlKGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUsIG5vZGUpW2ZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGVdO1xuXG4gICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4QWxsKSB7XG4gICAgICAgICAgICBpZiAoem9vbSA8PSAxKSB7XG4gICAgICAgICAgICAgIHZhciBncm91cE1hdHJpeCA9IGNsb25lKGdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICAgICAgICAgICAgaWYgKCFncm91cE1hdHJpeCkgZ3JvdXBNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG5cbiAgICAgICAgICAgICAgdmFyIF9iID0gbm9kZS5nZXRNb2RlbCgpLFxuICAgICAgICAgICAgICAgICAgeCA9IF9iLngsXG4gICAgICAgICAgICAgICAgICB5ID0gX2IueTtcblxuICAgICAgICAgICAgICBncm91cE1hdHJpeCA9IHRyYW5zZm9ybShncm91cE1hdHJpeCwgW1sndCcsIC14LCAteV0sIFsncycsIHNjYWxlLCBzY2FsZV0sIFsndCcsIHgsIHldXSk7XG4gICAgICAgICAgICAgIGdyb3VwLnNldE1hdHJpeChncm91cE1hdHJpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGdyb3VwLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgICB2YXIgZm9udFNpemUgPSB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICBsaW5lV2lkdGggPSB2b2lkIDA7XG5cbiAgICAgICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGVUeXBlID0gc2hhcGUuZ2V0KCd0eXBlJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplID0gc2hhcGUuYXR0cignZm9udFNpemUnKSB8fCAxMjtcbiAgICAgICAgICAgICAgICAgIHZhciBpdGVtU3R5bGUgPSBpdGVtU3RhdGVTdHlsZVtzaGFwZS5nZXQoJ25hbWUnKV07XG4gICAgICAgICAgICAgICAgICB2YXIgc2hhcGVTdHlsZSA9IHNoYXBlU3RhdGVTdHlsZVtzaGFwZS5nZXQoJ25hbWUnKV07XG4gICAgICAgICAgICAgICAgICB2YXIgaXRlbUZvbnRTaXplID0gaXRlbVN0eWxlID8gaXRlbVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgICB2YXIgc2hhcGVGb250U2l6ZSA9IHNoYXBlU3R5bGUgPyBzaGFwZVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgICB2YXIgb3JpRm9udFNpemUgPSBpdGVtRm9udFNpemUgfHwgc2hhcGVGb250U2l6ZSB8fCAxMjtcbiAgICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2ZvbnRTaXplJywgb3JpRm9udFNpemUgLyB6b29tKTsgLy8gKiBncmFwaFpvb20gLyB6b29tXG5cbiAgICAgICAgICAgICAgICAgIGlmIChsaW5lV2lkdGgpIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChmaXhTZWxlY3RlZEl0ZW1zLmZpeExpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGlmIChzaGFwZS5nZXQoJ2lzS2V5U2hhcGUnKSkge1xuICAgICAgICAgICAgICAgICAgbGluZVdpZHRoID0gc2hhcGUuYXR0cignbGluZVdpZHRoJykgfHwgMDtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlMaW5lV2lkdGggPSBpdGVtU3RhdGVTdHlsZS5saW5lV2lkdGggfHwgc2hhcGVTdGF0ZVN0eWxlLmxpbmVXaWR0aCB8fCBvcmlnaW5TdHlsZS5saW5lV2lkdGggfHwgMDtcbiAgICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2xpbmVXaWR0aCcsIG9yaUxpbmVXaWR0aCAvIHpvb20pOyAvLyAqIGdyYXBoWm9vbSAvIHpvb21cblxuICAgICAgICAgICAgICAgICAgaWYgKGZvbnRTaXplKSBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZml4RWRnZXNMZW5ndGggPSBmaXhFZGdlcy5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgZmUgPSAwOyBmZSA8IGZpeEVkZ2VzTGVuZ3RoOyBmZSsrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBmaXhFZGdlc1tmZV07XG4gICAgICAgICAgdmFyIGdyb3VwID0gZWRnZS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBncm91cC5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgdmFyIG5vZGVNb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgaXRlbVN0YXRlU3R5bGUgPSBlZGdlLmdldFN0YXRlU3R5bGUoZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSk7XG4gICAgICAgICAgdmFyIHNoYXBlU3RhdGVTdHlsZSA9IGVkZ2UuZ2V0KCdzaGFwZUZhY3RvcnknKS5nZXRTaGFwZShub2RlTW9kZWwudHlwZSkuZ2V0U3RhdGVTdHlsZShmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlLCBlZGdlKVtmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlXTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgdmFyIGZvbnRTaXplID0gdm9pZCAwLFxuICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IHZvaWQgMDtcblxuICAgICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwgfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlVHlwZSA9IHNoYXBlLmdldCgndHlwZScpO1xuXG4gICAgICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplID0gc2hhcGUuYXR0cignZm9udFNpemUnKSB8fCAxMjtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbVN0eWxlID0gaXRlbVN0YXRlU3R5bGVbc2hhcGUuZ2V0KCduYW1lJyldO1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZVN0eWxlID0gc2hhcGVTdGF0ZVN0eWxlW3NoYXBlLmdldCgnbmFtZScpXTtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbUZvbnRTaXplID0gaXRlbVN0eWxlID8gaXRlbVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlRm9udFNpemUgPSBzaGFwZVN0eWxlID8gc2hhcGVTdHlsZS5mb250U2l6ZSA6IDEyO1xuICAgICAgICAgICAgICAgIHZhciBvcmlGb250U2l6ZSA9IGl0ZW1Gb250U2l6ZSB8fCBzaGFwZUZvbnRTaXplIHx8IDEyO1xuICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2ZvbnRTaXplJywgb3JpRm9udFNpemUgLyB6b29tKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZVdpZHRoKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhMaW5lV2lkdGggfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgICAgICAgICAgaWYgKHNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgbGluZVdpZHRoID0gc2hhcGUuYXR0cignbGluZVdpZHRoJykgfHwgMDtcbiAgICAgICAgICAgICAgICB2YXIgb3JpTGluZVdpZHRoID0gaXRlbVN0YXRlU3R5bGUubGluZVdpZHRoIHx8IHNoYXBlU3RhdGVTdHlsZS5saW5lV2lkdGggfHwgMTtcbiAgICAgICAgICAgICAgICBpZiAoem9vbSA8PSAxKSBzaGFwZS5hdHRyKCdsaW5lV2lkdGgnLCBvcmlMaW5lV2lkdGggLyB6b29tKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9udFNpemUpIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhcGguem9vbVRvKHpvb20sIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfSk7XG4gICAgZ3JhcGguZW1pdCgnd2hlZWx6b29tJywgZSk7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js ***! \*************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-element */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2VsZW1lbnQvaW5kZXguanM/MTg3MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9lbGVtZW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAYW50di9nNi1lbGVtZW50JzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/color */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/color.js\");\n\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar colorSet = Object(_util_color__WEBPACK_IMPORTED_MODULE_0__[\"getColorsWithSubjectColor\"])(subjectColor, backColor);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.0',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: colorSet.mainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n // 文本水印默认配置\n textWaterMarkerConfig: {\n width: 150,\n height: 100,\n compatible: false,\n text: {\n x: 0,\n y: 60,\n lineHeight: 20,\n rotate: 20,\n fontSize: 14,\n fontFamily: 'Microsoft YaHei',\n fill: 'rgba(0, 0, 0, 0.1)',\n baseline: 'Middle'\n }\n },\n imageWaterMarkerConfig: {\n width: 150,\n height: 130,\n compatible: false,\n image: {\n x: 0,\n y: 0,\n width: 30,\n height: 20,\n rotate: 0\n }\n },\n waterMarkerImage: 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/logo-with-text-73b8a.svg'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dsb2JhbC5qcz84ZmUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSw2RUFBeUI7QUFDekI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dsb2JhbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbG9yc1dpdGhTdWJqZWN0Q29sb3IgfSBmcm9tICcuL3V0aWwvY29sb3InO1xudmFyIHN1YmplY3RDb2xvciA9ICdyZ2IoOTUsIDE0OSwgMjU1KSc7XG52YXIgYmFja0NvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7XG52YXIgdGV4dENvbG9yID0gJ3JnYigwLCAwLCAwKSc7XG52YXIgY29sb3JTZXQgPSBnZXRDb2xvcnNXaXRoU3ViamVjdENvbG9yKHN1YmplY3RDb2xvciwgYmFja0NvbG9yKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmVyc2lvbjogJzAuNS4wJyxcbiAgcm9vdENvbnRhaW5lckNsYXNzTmFtZTogJ3Jvb3QtY29udGFpbmVyJyxcbiAgbm9kZUNvbnRhaW5lckNsYXNzTmFtZTogJ25vZGUtY29udGFpbmVyJyxcbiAgZWRnZUNvbnRhaW5lckNsYXNzTmFtZTogJ2VkZ2UtY29udGFpbmVyJyxcbiAgY29tYm9Db250YWluZXJDbGFzc05hbWU6ICdjb21iby1jb250YWluZXInLFxuICBkZWxlZ2F0ZUNvbnRhaW5lckNsYXNzTmFtZTogJ2RlbGVnYXRlLWNvbnRhaW5lcicsXG4gIGRlZmF1bHRMb29wUG9zaXRpb246ICd0b3AnLFxuICBub2RlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogJyMwMDAnLFxuICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZSdcbiAgICB9LFxuICAgIG9mZnNldDogNCAvLyDoioLngrnnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Tm9kZToge1xuICAgIHR5cGU6ICdjaXJjbGUnLFxuICAgIHN0eWxlOiB7XG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBmaWxsOiBjb2xvclNldC5tYWluRmlsbFxuICAgIH0sXG4gICAgc2l6ZTogMjAsXG4gICAgY29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgbGlua1BvaW50czoge1xuICAgICAgc2l6ZTogOCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZVxuICAgIH1cbiAgfSxcbiAgLy8g6IqC54K55bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LnNlbGVjdGVkRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDQsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgZmlsbDogY29sb3JTZXQuaGlnaGxpZ2h0RmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmluYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaW5hY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIGRpc2FibGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmRpc2FibGVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5kaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBlZGdlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogdGV4dENvbG9yLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICBmb250U2l6ZTogMTJcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRFZGdlOiB7XG4gICAgdHlwZTogJ2xpbmUnLFxuICAgIHNpemU6IDEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZU1haW5TdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IDJcbiAgICB9LFxuICAgIGNvbG9yOiBjb2xvclNldC5lZGdlTWFpblN0cm9rZVxuICB9LFxuICAvLyDovrnlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgZWRnZVN0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VBY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VTZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VEaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBjb21ib0xhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfSxcbiAgICByZWZZOiAxMCxcbiAgICByZWZYOiAxMCAvLyBDb21ibyDnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Q29tYm86IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9NYWluRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9NYWluU3Ryb2tlLFxuICAgICAgcjogNSxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMTBcbiAgICB9LFxuICAgIHNpemU6IFsyMCwgNV0sXG4gICAgY29sb3I6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICBwYWRkaW5nOiBbMjUsIDIwLCAxNSwgMjBdXG4gIH0sXG4gIC8vIGNvbWJvIOW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBjb21ib1N0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9BY3RpdmVGaWxsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib1NlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9TZWxlY3RlZEZpbGwsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIHNoYWRvd0JsdXI6IDEwLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0OiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9IaWdobGlnaHRGaWxsLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9JbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZUZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9XG4gIH0sXG4gIGRlbGVnYXRlU3R5bGU6IHtcbiAgICBmaWxsOiAnI0YzRjlGRicsXG4gICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICBzdHJva2U6ICcjMTg5MEZGJyxcbiAgICBzdHJva2VPcGFjaXR5OiAwLjksXG4gICAgbGluZURhc2g6IFs1LCA1XVxuICB9LFxuICAvLyDmlofmnKzmsLTljbDpu5jorqTphY3nva5cbiAgdGV4dFdhdGVyTWFya2VyQ29uZmlnOiB7XG4gICAgd2lkdGg6IDE1MCxcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICBjb21wYXRpYmxlOiBmYWxzZSxcbiAgICB0ZXh0OiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogNjAsXG4gICAgICBsaW5lSGVpZ2h0OiAyMCxcbiAgICAgIHJvdGF0ZTogMjAsXG4gICAgICBmb250U2l6ZTogMTQsXG4gICAgICBmb250RmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpJyxcbiAgICAgIGZpbGw6ICdyZ2JhKDAsIDAsIDAsIDAuMSknLFxuICAgICAgYmFzZWxpbmU6ICdNaWRkbGUnXG4gICAgfVxuICB9LFxuICBpbWFnZVdhdGVyTWFya2VyQ29uZmlnOiB7XG4gICAgd2lkdGg6IDE1MCxcbiAgICBoZWlnaHQ6IDEzMCxcbiAgICBjb21wYXRpYmxlOiBmYWxzZSxcbiAgICBpbWFnZToge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogMzAsXG4gICAgICBoZWlnaHQ6IDIwLFxuICAgICAgcm90YXRlOiAwXG4gICAgfVxuICB9LFxuICB3YXRlck1hcmtlckltYWdlOiAnaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS9vcy9zL3Byb2QvYW50di9hc3NldHMvaW1hZ2UvbG9nby13aXRoLXRleHQtNzNiOGEuc3ZnJ1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/event.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/event.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\n\nvar cloneEvent = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].cloneEvent,\n isViewportChanged = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].isViewportChanged;\n\nvar EventController =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EventController, _super);\n\n function EventController(graph) {\n var _this = _super.call(this, graph) || this;\n\n _this.extendEvents = [];\n _this.dragging = false;\n _this.preItem = null;\n _this.graph = graph;\n _this.destroyed = false;\n\n _this.initEvents();\n\n return _this;\n } // 初始化 G6 中的事件\n\n\n EventController.prototype.initEvents = function () {\n var _a = this,\n graph = _a.graph,\n _b = _a.extendEvents,\n extendEvents = _b === void 0 ? [] : _b;\n\n var canvas = graph.get('canvas'); // canvas.set('draggable', true);\n\n var el = canvas.get('el');\n var canvasHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onCanvasEvents');\n var originHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onExtendEvents');\n var wheelHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onWheelEvent'); // each(EVENTS, event => {\n // canvas.off(event).on(event, canvasHandler);\n // });\n\n canvas.off('*').on('*', canvasHandler);\n this.canvasHandler = canvasHandler;\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'DOMMouseScroll', wheelHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'mousewheel', wheelHandler));\n\n if (typeof window !== 'undefined') {\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keydown', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keyup', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'focus', originHandler));\n }\n }; // 获取 shape 的 item 对象\n\n\n EventController.getItemRoot = function (shape) {\n while (shape && !shape.get('item')) {\n shape = shape.get('parent');\n }\n\n return shape;\n };\n /**\n * 处理 canvas 事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onCanvasEvents = function (evt) {\n var graph = this.graph;\n var canvas = graph.get('canvas');\n var target = evt.target;\n var eventType = evt.type;\n /**\n * (clientX, clientY): 相对于页面的坐标;\n * (canvasX, canvasY): 相对于 左上角的坐标;\n * (x, y): 相对于整个画布的坐标, 与 model 的 x, y 是同一维度的。\n */\n\n evt.canvasX = evt.x;\n evt.canvasY = evt.y;\n var point = {\n x: evt.canvasX,\n y: evt.canvasY\n };\n var group = graph.get('group');\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (isViewportChanged(matrix)) {\n point = graph.getPointByClient(evt.clientX, evt.clientY);\n }\n\n evt.x = point.x;\n evt.y = point.y;\n evt.currentTarget = graph;\n\n if (target === canvas) {\n if (eventType === 'mousemove' || eventType === 'mouseleave') {\n this.handleMouseMove(evt, 'canvas');\n }\n\n evt.target = canvas;\n evt.item = null;\n graph.emit(eventType, evt);\n graph.emit(\"canvas:\" + eventType, evt);\n return;\n }\n\n var itemShape = EventController.getItemRoot(target);\n\n if (!itemShape) {\n graph.emit(eventType, evt);\n return;\n }\n\n var item = itemShape.get('item');\n\n if (item.destroyed) {\n return;\n }\n\n var type = item.getType(); // 事件target是触发事件的Shape实例,item是触发事件的item实例\n\n evt.target = target;\n evt.item = item;\n\n if (evt.canvasX === evt.x && evt.canvasY === evt.y) {\n var canvasPoint = graph.getCanvasByPoint(evt.x, evt.y);\n evt.canvasX = canvasPoint.x;\n evt.canvasY = canvasPoint.y;\n } // emit('click', evt);\n\n\n graph.emit(eventType, evt);\n if (evt.name && !evt.name.includes(':')) graph.emit(type + \":\" + eventType, evt); // emit('node:click', evt)\n else graph.emit(evt.name, evt); // emit('text-shape:click', evt)\n\n if (eventType === 'dragstart') {\n this.dragging = true;\n }\n\n if (eventType === 'dragend') {\n this.dragging = false;\n }\n\n if (eventType === 'mousemove') {\n this.handleMouseMove(evt, type);\n }\n };\n /**\n * 处理扩展事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onExtendEvents = function (evt) {\n this.graph.emit(evt.type, evt);\n };\n /**\n * 处理滚轮事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onWheelEvent = function (evt) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(evt.wheelDelta)) {\n evt.wheelDelta = -evt.detail;\n }\n\n this.graph.emit('wheel', evt);\n };\n /**\n * 处理鼠标移动的事件\n * @param evt 事件句柄\n * @param type item 类型\n */\n\n\n EventController.prototype.handleMouseMove = function (evt, type) {\n var _a = this,\n graph = _a.graph,\n preItem = _a.preItem;\n\n var canvas = graph.get('canvas');\n var item = evt.target === canvas ? null : evt.item;\n evt = cloneEvent(evt); // 从前一个item直接移动到当前item,触发前一个item的leave事件\n\n if (preItem && preItem !== item && !preItem.destroyed) {\n evt.item = preItem;\n this.emitCustomEvent(preItem.getType(), 'mouseleave', evt);\n\n if (this.dragging) {\n this.emitCustomEvent(preItem.getType(), 'dragleave', evt);\n }\n } // 从一个item或canvas移动到当前item,触发当前item的enter事件\n\n\n if (item && preItem !== item) {\n evt.item = item;\n this.emitCustomEvent(type, 'mouseenter', evt);\n\n if (this.dragging) {\n this.emitCustomEvent(type, 'dragenter', evt);\n }\n }\n\n this.preItem = item;\n };\n /**\n * 在 graph 上面 emit 事件\n * @param itemType item 类型\n * @param eventType 事件类型\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.emitCustomEvent = function (itemType, eventType, evt) {\n evt.type = eventType;\n this.graph.emit(itemType + \":\" + eventType, evt);\n };\n\n EventController.prototype.destroy = function () {\n var _a = this,\n graph = _a.graph,\n canvasHandler = _a.canvasHandler,\n extendEvents = _a.extendEvents;\n\n var canvas = graph.get('canvas'); // each(EVENTS, event => {\n // canvas.off(event, canvasHandler);\n // });\n\n canvas.off('*', canvasHandler);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(extendEvents, function (event) {\n event.remove();\n });\n this.dragging = false;\n this.preItem = null;\n this.extendEvents.length = 0;\n this.canvasHandler = null;\n this.destroyed = true;\n };\n\n return EventController;\n}(_antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"AbstractEvent\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQuanM/OWVkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2dCO0FBQ0s7QUFDSDtBQUNwRCxpQkFBaUIsa0RBQUk7QUFDckIsd0JBQXdCLGtEQUFJOztBQUU1QjtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDOztBQUVyQztBQUNBLHdCQUF3QiwrREFBWTtBQUNwQyx3QkFBd0IsK0RBQVk7QUFDcEMsdUJBQXVCLCtEQUFZLHVCQUF1QjtBQUMxRDtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBLHNCQUFzQix1RUFBZ0I7QUFDdEMsc0JBQXNCLHVFQUFnQjs7QUFFdEM7QUFDQSx3QkFBd0IsdUVBQWdCO0FBQ3hDLHdCQUF3Qix1RUFBZ0I7QUFDeEMsd0JBQXdCLHVFQUFnQjtBQUN4QztBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDhCQUE4Qjs7QUFFOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0EscUZBQXFGO0FBQ3JGLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxRQUFRLHdEQUFLO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQztBQUNyQztBQUNBLFFBQVE7O0FBRVI7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFhOztBQUVBLDhFQUFlIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9ncmFwaC9jb250cm9sbGVyL2V2ZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBhZGRFdmVudExpc3RlbmVyIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IHsgZWFjaCwgaXNOaWwsIHdyYXBCZWhhdmlvciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RFdmVudCwgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xudmFyIGNsb25lRXZlbnQgPSBVdGlsLmNsb25lRXZlbnQsXG4gICAgaXNWaWV3cG9ydENoYW5nZWQgPSBVdGlsLmlzVmlld3BvcnRDaGFuZ2VkO1xuXG52YXIgRXZlbnRDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKEV2ZW50Q29udHJvbGxlciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBFdmVudENvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBncmFwaCkgfHwgdGhpcztcblxuICAgIF90aGlzLmV4dGVuZEV2ZW50cyA9IFtdO1xuICAgIF90aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgX3RoaXMucHJlSXRlbSA9IG51bGw7XG4gICAgX3RoaXMuZ3JhcGggPSBncmFwaDtcbiAgICBfdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAgIF90aGlzLmluaXRFdmVudHMoKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfSAvLyDliJ3lp4vljJYgRzYg5Lit55qE5LqL5Lu2XG5cblxuICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLmluaXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgX2IgPSBfYS5leHRlbmRFdmVudHMsXG4gICAgICAgIGV4dGVuZEV2ZW50cyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7IC8vIGNhbnZhcy5zZXQoJ2RyYWdnYWJsZScsIHRydWUpO1xuXG4gICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICB2YXIgY2FudmFzSGFuZGxlciA9IHdyYXBCZWhhdmlvcih0aGlzLCAnb25DYW52YXNFdmVudHMnKTtcbiAgICB2YXIgb3JpZ2luSGFuZGxlciA9IHdyYXBCZWhhdmlvcih0aGlzLCAnb25FeHRlbmRFdmVudHMnKTtcbiAgICB2YXIgd2hlZWxIYW5kbGVyID0gd3JhcEJlaGF2aW9yKHRoaXMsICdvbldoZWVsRXZlbnQnKTsgLy8gZWFjaChFVkVOVFMsIGV2ZW50ID0+IHtcbiAgICAvLyAgIGNhbnZhcy5vZmYoZXZlbnQpLm9uKGV2ZW50LCBjYW52YXNIYW5kbGVyKTtcbiAgICAvLyB9KTtcblxuICAgIGNhbnZhcy5vZmYoJyonKS5vbignKicsIGNhbnZhc0hhbmRsZXIpO1xuICAgIHRoaXMuY2FudmFzSGFuZGxlciA9IGNhbnZhc0hhbmRsZXI7XG4gICAgZXh0ZW5kRXZlbnRzLnB1c2goYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ0RPTU1vdXNlU2Nyb2xsJywgd2hlZWxIYW5kbGVyKSk7XG4gICAgZXh0ZW5kRXZlbnRzLnB1c2goYWRkRXZlbnRMaXN0ZW5lcihlbCwgJ21vdXNld2hlZWwnLCB3aGVlbEhhbmRsZXIpKTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZXh0ZW5kRXZlbnRzLnB1c2goYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3csICdrZXlkb3duJywgb3JpZ2luSGFuZGxlcikpO1xuICAgICAgZXh0ZW5kRXZlbnRzLnB1c2goYWRkRXZlbnRMaXN0ZW5lcih3aW5kb3csICdrZXl1cCcsIG9yaWdpbkhhbmRsZXIpKTtcbiAgICAgIGV4dGVuZEV2ZW50cy5wdXNoKGFkZEV2ZW50TGlzdGVuZXIod2luZG93LCAnZm9jdXMnLCBvcmlnaW5IYW5kbGVyKSk7XG4gICAgfVxuICB9OyAvLyDojrflj5Ygc2hhcGUg55qEIGl0ZW0g5a+56LGhXG5cblxuICBFdmVudENvbnRyb2xsZXIuZ2V0SXRlbVJvb3QgPSBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB3aGlsZSAoc2hhcGUgJiYgIXNoYXBlLmdldCgnaXRlbScpKSB7XG4gICAgICBzaGFwZSA9IHNoYXBlLmdldCgncGFyZW50Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXBlO1xuICB9O1xuICAvKipcbiAgICog5aSE55CGIGNhbnZhcyDkuovku7ZcbiAgICogQHBhcmFtIGV2dCDkuovku7blj6Xmn4RcbiAgICovXG5cblxuICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLm9uQ2FudmFzRXZlbnRzID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHRhcmdldCA9IGV2dC50YXJnZXQ7XG4gICAgdmFyIGV2ZW50VHlwZSA9IGV2dC50eXBlO1xuICAgIC8qKlxuICAgICAqIChjbGllbnRYLCBjbGllbnRZKTog55u45a+55LqO6aG16Z2i55qE5Z2Q5qCH77ybXG4gICAgICogKGNhbnZhc1gsIGNhbnZhc1kpOiDnm7jlr7nkuo4gPGNhbnZhcz4g5bem5LiK6KeS55qE5Z2Q5qCH77ybXG4gICAgICogKHgsIHkpOiDnm7jlr7nkuo7mlbTkuKrnlLvluIPnmoTlnZDmoIcsIOS4jiBtb2RlbCDnmoQgeCwgeSDmmK/lkIzkuIDnu7TluqbnmoTjgIJcbiAgICAgKi9cblxuICAgIGV2dC5jYW52YXNYID0gZXZ0Lng7XG4gICAgZXZ0LmNhbnZhc1kgPSBldnQueTtcbiAgICB2YXIgcG9pbnQgPSB7XG4gICAgICB4OiBldnQuY2FudmFzWCxcbiAgICAgIHk6IGV2dC5jYW52YXNZXG4gICAgfTtcbiAgICB2YXIgZ3JvdXAgPSBncmFwaC5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoaXNWaWV3cG9ydENoYW5nZWQobWF0cml4KSkge1xuICAgICAgcG9pbnQgPSBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGV2dC5jbGllbnRYLCBldnQuY2xpZW50WSk7XG4gICAgfVxuXG4gICAgZXZ0LnggPSBwb2ludC54O1xuICAgIGV2dC55ID0gcG9pbnQueTtcbiAgICBldnQuY3VycmVudFRhcmdldCA9IGdyYXBoO1xuXG4gICAgaWYgKHRhcmdldCA9PT0gY2FudmFzKSB7XG4gICAgICBpZiAoZXZlbnRUeXBlID09PSAnbW91c2Vtb3ZlJyB8fCBldmVudFR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgICB0aGlzLmhhbmRsZU1vdXNlTW92ZShldnQsICdjYW52YXMnKTtcbiAgICAgIH1cblxuICAgICAgZXZ0LnRhcmdldCA9IGNhbnZhcztcbiAgICAgIGV2dC5pdGVtID0gbnVsbDtcbiAgICAgIGdyYXBoLmVtaXQoZXZlbnRUeXBlLCBldnQpO1xuICAgICAgZ3JhcGguZW1pdChcImNhbnZhczpcIiArIGV2ZW50VHlwZSwgZXZ0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbVNoYXBlID0gRXZlbnRDb250cm9sbGVyLmdldEl0ZW1Sb290KHRhcmdldCk7XG5cbiAgICBpZiAoIWl0ZW1TaGFwZSkge1xuICAgICAgZ3JhcGguZW1pdChldmVudFR5cGUsIGV2dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBpdGVtU2hhcGUuZ2V0KCdpdGVtJyk7XG5cbiAgICBpZiAoaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpOyAvLyDkuovku7Z0YXJnZXTmmK/op6blj5Hkuovku7bnmoRTaGFwZeWunuS+i++8jGl0ZW3mmK/op6blj5Hkuovku7bnmoRpdGVt5a6e5L6LXG5cbiAgICBldnQudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGV2dC5pdGVtID0gaXRlbTtcblxuICAgIGlmIChldnQuY2FudmFzWCA9PT0gZXZ0LnggJiYgZXZ0LmNhbnZhc1kgPT09IGV2dC55KSB7XG4gICAgICB2YXIgY2FudmFzUG9pbnQgPSBncmFwaC5nZXRDYW52YXNCeVBvaW50KGV2dC54LCBldnQueSk7XG4gICAgICBldnQuY2FudmFzWCA9IGNhbnZhc1BvaW50Lng7XG4gICAgICBldnQuY2FudmFzWSA9IGNhbnZhc1BvaW50Lnk7XG4gICAgfSAvLyBlbWl0KCdjbGljaycsIGV2dCk7XG5cblxuICAgIGdyYXBoLmVtaXQoZXZlbnRUeXBlLCBldnQpO1xuICAgIGlmIChldnQubmFtZSAmJiAhZXZ0Lm5hbWUuaW5jbHVkZXMoJzonKSkgZ3JhcGguZW1pdCh0eXBlICsgXCI6XCIgKyBldmVudFR5cGUsIGV2dCk7IC8vIGVtaXQoJ25vZGU6Y2xpY2snLCBldnQpXG4gICAgZWxzZSBncmFwaC5lbWl0KGV2dC5uYW1lLCBldnQpOyAvLyBlbWl0KCd0ZXh0LXNoYXBlOmNsaWNrJywgZXZ0KVxuXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2RyYWdzdGFydCcpIHtcbiAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChldmVudFR5cGUgPT09ICdkcmFnZW5kJykge1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChldmVudFR5cGUgPT09ICdtb3VzZW1vdmUnKSB7XG4gICAgICB0aGlzLmhhbmRsZU1vdXNlTW92ZShldnQsIHR5cGUpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWkhOeQhuaJqeWxleS6i+S7tlxuICAgKiBAcGFyYW0gZXZ0IOS6i+S7tuWPpeafhFxuICAgKi9cblxuXG4gIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUub25FeHRlbmRFdmVudHMgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgdGhpcy5ncmFwaC5lbWl0KGV2dC50eXBlLCBldnQpO1xuICB9O1xuICAvKipcbiAgICog5aSE55CG5rua6L2u5LqL5Lu2XG4gICAqIEBwYXJhbSBldnQg5LqL5Lu25Y+l5p+EXG4gICAqL1xuXG5cbiAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5vbldoZWVsRXZlbnQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKGlzTmlsKGV2dC53aGVlbERlbHRhKSkge1xuICAgICAgZXZ0LndoZWVsRGVsdGEgPSAtZXZ0LmRldGFpbDtcbiAgICB9XG5cbiAgICB0aGlzLmdyYXBoLmVtaXQoJ3doZWVsJywgZXZ0KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWkhOeQhum8oOagh+enu+WKqOeahOS6i+S7tlxuICAgKiBAcGFyYW0gZXZ0IOS6i+S7tuWPpeafhFxuICAgKiBAcGFyYW0gdHlwZSBpdGVtIOexu+Wei1xuICAgKi9cblxuXG4gIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlTW91c2VNb3ZlID0gZnVuY3Rpb24gKGV2dCwgdHlwZSkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHByZUl0ZW0gPSBfYS5wcmVJdGVtO1xuXG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIGl0ZW0gPSBldnQudGFyZ2V0ID09PSBjYW52YXMgPyBudWxsIDogZXZ0Lml0ZW07XG4gICAgZXZ0ID0gY2xvbmVFdmVudChldnQpOyAvLyDku47liY3kuIDkuKppdGVt55u05o6l56e75Yqo5Yiw5b2T5YmNaXRlbe+8jOinpuWPkeWJjeS4gOS4qml0ZW3nmoRsZWF2ZeS6i+S7tlxuXG4gICAgaWYgKHByZUl0ZW0gJiYgcHJlSXRlbSAhPT0gaXRlbSAmJiAhcHJlSXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIGV2dC5pdGVtID0gcHJlSXRlbTtcbiAgICAgIHRoaXMuZW1pdEN1c3RvbUV2ZW50KHByZUl0ZW0uZ2V0VHlwZSgpLCAnbW91c2VsZWF2ZScsIGV2dCk7XG5cbiAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgIHRoaXMuZW1pdEN1c3RvbUV2ZW50KHByZUl0ZW0uZ2V0VHlwZSgpLCAnZHJhZ2xlYXZlJywgZXZ0KTtcbiAgICAgIH1cbiAgICB9IC8vIOS7juS4gOS4qml0ZW3miJZjYW52YXPnp7vliqjliLDlvZPliY1pdGVt77yM6Kem5Y+R5b2T5YmNaXRlbeeahGVudGVy5LqL5Lu2XG5cblxuICAgIGlmIChpdGVtICYmIHByZUl0ZW0gIT09IGl0ZW0pIHtcbiAgICAgIGV2dC5pdGVtID0gaXRlbTtcbiAgICAgIHRoaXMuZW1pdEN1c3RvbUV2ZW50KHR5cGUsICdtb3VzZWVudGVyJywgZXZ0KTtcblxuICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgdGhpcy5lbWl0Q3VzdG9tRXZlbnQodHlwZSwgJ2RyYWdlbnRlcicsIGV2dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcmVJdGVtID0gaXRlbTtcbiAgfTtcbiAgLyoqXG4gICAqIOWcqCBncmFwaCDkuIrpnaIgZW1pdCDkuovku7ZcbiAgICogQHBhcmFtIGl0ZW1UeXBlIGl0ZW0g57G75Z6LXG4gICAqIEBwYXJhbSBldmVudFR5cGUg5LqL5Lu257G75Z6LXG4gICAqIEBwYXJhbSBldnQg5LqL5Lu25Y+l5p+EXG4gICAqL1xuXG5cbiAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5lbWl0Q3VzdG9tRXZlbnQgPSBmdW5jdGlvbiAoaXRlbVR5cGUsIGV2ZW50VHlwZSwgZXZ0KSB7XG4gICAgZXZ0LnR5cGUgPSBldmVudFR5cGU7XG4gICAgdGhpcy5ncmFwaC5lbWl0KGl0ZW1UeXBlICsgXCI6XCIgKyBldmVudFR5cGUsIGV2dCk7XG4gIH07XG5cbiAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGNhbnZhc0hhbmRsZXIgPSBfYS5jYW52YXNIYW5kbGVyLFxuICAgICAgICBleHRlbmRFdmVudHMgPSBfYS5leHRlbmRFdmVudHM7XG5cbiAgICB2YXIgY2FudmFzID0gZ3JhcGguZ2V0KCdjYW52YXMnKTsgLy8gZWFjaChFVkVOVFMsIGV2ZW50ID0+IHtcbiAgICAvLyAgIGNhbnZhcy5vZmYoZXZlbnQsIGNhbnZhc0hhbmRsZXIpO1xuICAgIC8vIH0pO1xuXG4gICAgY2FudmFzLm9mZignKicsIGNhbnZhc0hhbmRsZXIpO1xuICAgIGVhY2goZXh0ZW5kRXZlbnRzLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnJlbW92ZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnByZUl0ZW0gPSBudWxsO1xuICAgIHRoaXMuZXh0ZW5kRXZlbnRzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5jYW52YXNIYW5kbGVyID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIEV2ZW50Q29udHJvbGxlcjtcbn0oQWJzdHJhY3RFdmVudCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50Q29udHJvbGxlcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/event.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/index.js ***! \**********************************************************************************/ /*! exports provided: EventController, LayoutController */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EventController\", function() { return _event__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layout */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LayoutController\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dyYXBoL2NvbnRyb2xsZXIvaW5kZXguanM/YzgwYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvZ3JhcGgvY29udHJvbGxlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgRXZlbnRDb250cm9sbGVyIH0gZnJvbSAnLi9ldmVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIExheW91dENvbnRyb2xsZXIgfSBmcm9tICcuL2xheW91dCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/layout.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/layout.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../layout */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/index.js\");\n/* harmony import */ var _layout_worker_layout_worker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../layout/worker/layout.worker */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layout.worker.js\");\n/* harmony import */ var _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../layout/worker/layoutConst */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layoutConst.js\");\n/* harmony import */ var _util_gpu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/gpu */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/gpu.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n\nvar mockRaf = function mockRaf(cb) {\n return setTimeout(cb, 16);\n};\n\nvar mockCaf = function mockCaf(reqId) {\n return clearTimeout(reqId);\n};\n\nvar helper = {\n // pollyfill\n requestAnimationFrame: function requestAnimationFrame(callback) {\n var fn = typeof window !== 'undefined' ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || mockRaf : mockRaf;\n return fn(callback);\n },\n cancelAnimationFrame: function cancelAnimationFrame(requestId) {\n var fn = typeof window !== 'undefined' ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || mockCaf : mockCaf;\n return fn(requestId);\n }\n};\nvar GPU_LAYOUT_NAMES = ['fruchterman', 'gForce'];\nvar LAYOUT_PIPES_ADJUST_NAMES = ['force', 'grid', 'circular'];\n\nvar LayoutController =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(LayoutController, _super); // the configurations of the layout\n // private layoutCfg: any; // LayoutOptions\n // the type name of the layout\n // private layoutType: string;\n // private data: GraphData;\n // private layoutMethods: typeof Layout;\n\n\n function LayoutController(graph) {\n var _this = _super.call(this, graph) || this;\n\n _this.graph = graph;\n _this.layoutCfg = graph.get('layout') || {};\n _this.layoutType = _this.getLayoutType();\n _this.worker = null;\n _this.workerData = {};\n\n _this.initLayout();\n\n return _this;\n } // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.initLayout = function () {// no data before rendering\n }; // get layout worker and create one if not exists\n\n\n LayoutController.prototype.getWorker = function () {\n if (this.worker) {\n return this.worker;\n }\n\n if (typeof Worker === 'undefined') {\n // 如果当前浏览器不支持 web worker,则不使用 web worker\n console.warn('Web worker is not supported in current browser.');\n this.worker = null;\n } else {\n this.worker = Object(_layout_worker_layout_worker__WEBPACK_IMPORTED_MODULE_3__[\"LayoutWorker\"])(this.layoutCfg.workerScriptURL);\n }\n\n return this.worker;\n }; // stop layout worker\n\n\n LayoutController.prototype.stopWorker = function () {\n var workerData = this.workerData;\n\n if (!this.worker) {\n return;\n }\n\n this.worker.terminate();\n this.worker = null; // 重新开始新的布局之前,先取消之前布局的requestAnimationFrame。\n\n if (workerData.requestId) {\n helper.cancelAnimationFrame(workerData.requestId);\n workerData.requestId = null;\n }\n\n if (workerData.requestId2) {\n helper.cancelAnimationFrame(workerData.requestId2);\n workerData.requestId2 = null;\n }\n };\n\n LayoutController.prototype.execLayoutMethod = function (layoutCfg, order) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var graph, layoutType, isForce, onTick_1, tick, enableTick, layoutMethod, onTick_2, tick, layoutData;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n graph = this.graph;\n if (!graph || graph.get('destroyed')) return [2\n /*return*/\n ];\n layoutType = layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n }; // 若用户指定开启 gpu,且当前浏览器支持 webgl,且该算法存在 GPU 版本(目前仅支持 fruchterman 和 gForce),使用 gpu 版本的布局\n\n\n if (layoutType && this.isGPU) {\n if (!this.hasGPUVersion(layoutType)) {\n console.warn(\"The '\" + layoutType + \"' layout does not support GPU calculation for now, it will run in CPU.\");\n } else {\n layoutType = layoutType + \"-gpu\";\n }\n }\n\n isForce = layoutType === 'force' || layoutType === 'g6force' || layoutType === 'gForce';\n\n if (isForce) {\n onTick_1 = layoutCfg.onTick;\n\n tick = function tick() {\n if (onTick_1) {\n onTick_1();\n }\n\n graph.refreshPositions();\n };\n\n layoutCfg.tick = tick;\n } else if (layoutCfg.type === 'comboForce') {\n layoutCfg.comboTrees = graph.get('comboTrees');\n }\n\n enableTick = false;\n\n try {\n layoutMethod = new _layout__WEBPACK_IMPORTED_MODULE_2__[\"Layout\"][layoutType](layoutCfg);\n } catch (e) {\n console.warn(\"The layout method: '\" + layoutType + \"' does not exist! Please specify it first.\");\n reject();\n } // 是否需要迭代的方式完成布局。这里是来自布局对象的实例属性,是由布局的定义者在布局类定义的。\n\n\n enableTick = layoutMethod.enableTick;\n\n if (enableTick) {\n onTick_2 = layoutCfg.onTick;\n\n tick = function tick() {\n if (onTick_2) {\n onTick_2();\n }\n\n graph.refreshPositions();\n };\n\n layoutMethod.tick = tick;\n }\n\n layoutData = this.filterLayoutData(this.data, layoutCfg);\n addLayoutOrder(layoutData, order);\n layoutMethod.init(layoutData); // 若存在节点没有位置信息,且没有设置 layout,在 initPositions 中 random 给出了所有节点的位置,不需要再次执行 random 布局\n // 所有节点都有位置信息,且指定了 layout,则执行布局(代表不是第一次进行布局)\n\n graph.emit('beforesublayout', {\n type: layoutType\n });\n return [4\n /*yield*/\n , layoutMethod.execute()];\n\n case 1:\n _a.sent();\n\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n this.layoutMethods[order] = layoutMethod;\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n\n LayoutController.prototype.updateLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var graph, layoutType, layoutData;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n graph = this.graph;\n layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n\n layoutData = this.filterLayoutData(this.data, layoutCfg);\n layoutMethod.init(layoutData);\n layoutMethod.updateCfg(layoutCfg);\n graph.emit('beforesublayout', {\n type: layoutType\n });\n return [4\n /*yield*/\n , layoutMethod.execute()];\n\n case 1:\n _a.sent();\n\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n /**\n * @param {function} success callback\n * @return {boolean} 是否使用web worker布局\n */\n\n\n LayoutController.prototype.layout = function (success) {\n var _this = this;\n\n var graph = this.graph;\n this.data = this.setDataFromGraph();\n var _a = this.data,\n nodes = _a.nodes,\n hiddenNodes = _a.hiddenNodes;\n\n if (!nodes) {\n return false;\n }\n\n var width = graph.get('width');\n var height = graph.get('height');\n var layoutCfg = {};\n Object.assign(layoutCfg, {\n width: width,\n height: height,\n center: [width / 2, height / 2]\n }, this.layoutCfg);\n this.layoutCfg = layoutCfg;\n this.destoryLayoutMethods();\n graph.emit('beforelayout');\n this.initPositions(layoutCfg.center, nodes); // init hidden nodes\n\n this.initPositions(layoutCfg.center, hiddenNodes); // 防止用户直接用 -gpu 结尾指定布局\n\n var layoutType = layoutCfg.type;\n\n if (layoutType && layoutType.split('-')[1] === 'gpu') {\n layoutType = layoutType.split('-')[0];\n layoutCfg.gpuEnabled = true;\n } // 若用户指定开启 gpu,且当前浏览器支持 webgl,且该算法存在 GPU 版本(目前仅支持 fruchterman 和 gForce),使用 gpu 版本的布局\n\n\n var enableGPU = false;\n\n if (layoutCfg.gpuEnabled) {\n enableGPU = true; // 打开下面语句将会导致 webworker 报找不到 window\n\n if (!Object(_util_gpu__WEBPACK_IMPORTED_MODULE_5__[\"gpuDetector\"])().webgl) {\n console.warn(\"Your browser does not support webGL or GPGPU. The layout will run in CPU.\");\n enableGPU = false;\n }\n }\n\n this.isGPU = enableGPU; // 在 onAllLayoutEnd 中执行用户自定义 onLayoutEnd,触发 afterlayout、更新节点位置、fitView/fitCenter、触发 afterrender\n\n var onLayoutEnd = layoutCfg.onLayoutEnd,\n layoutEndFormatted = layoutCfg.layoutEndFormatted,\n adjust = layoutCfg.adjust;\n\n if (!layoutEndFormatted) {\n layoutCfg.layoutEndFormatted = true;\n\n layoutCfg.onAllLayoutEnd = function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n // 执行用户自定义 onLayoutEnd\n if (onLayoutEnd) {\n onLayoutEnd();\n } // 更新节点位置\n\n\n this.refreshLayout();\n if (!(adjust && layoutCfg.pipes)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.adjustPipesBox(this.data, adjust)];\n\n case 1:\n _a.sent();\n\n this.refreshLayout();\n _a.label = 2;\n\n case 2:\n // 触发 afterlayout\n graph.emit('afterlayout');\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n }\n\n this.stopWorker();\n\n if (layoutCfg.workerEnabled && this.layoutWithWorker(this.data)) {\n // 如果启用布局web worker并且浏览器支持web worker,用web worker布局。否则回退到不用web worker布局。\n return true;\n }\n\n var start = Promise.resolve();\n\n if (layoutCfg.type) {\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.execLayoutMethod(layoutCfg, 0)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n } else if (layoutCfg.pipes) {\n layoutCfg.pipes.forEach(function (cfg, index) {\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.execLayoutMethod(cfg, index)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n });\n } // 最后统一在外部调用onAllLayoutEnd\n\n\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd(); // 在执行 execute 后立即执行 success,且在 timeBar 中有 throttle,可以防止 timeBar 监听 afterrender 进行 changeData 后 layout,从而死循环\n // 对于 force 一类布局完成后的 fitView 需要用户自己在 onLayoutEnd 中配置\n\n if (success) success();\n }).catch(function (error) {\n console.warn('graph layout failed,', error);\n });\n return false;\n };\n /**\n * layout with web worker\n * @param {object} data graph data\n * @return {boolean} 是否支持web worker\n */\n\n\n LayoutController.prototype.layoutWithWorker = function (data) {\n var _this = this;\n\n var _a = this,\n layoutCfg = _a.layoutCfg,\n graph = _a.graph;\n\n var worker = this.getWorker(); // 每次worker message event handler调用之间的共享数据,会被修改。\n\n var workerData = this.workerData;\n\n if (!worker) {\n return false;\n }\n\n workerData.requestId = null;\n workerData.requestId2 = null;\n workerData.currentTick = null;\n workerData.currentTickData = null;\n graph.emit('beforelayout');\n var start = Promise.resolve();\n\n if (layoutCfg.type) {\n start = start.then(function () {\n return _this.runWebworker(worker, data, layoutCfg);\n });\n } else if (layoutCfg.pipes) {\n var _loop_1 = function _loop_1(cfg) {\n start = start.then(function () {\n return _this.runWebworker(worker, data, cfg);\n });\n };\n\n for (var _i = 0, _b = layoutCfg.pipes; _i < _b.length; _i++) {\n var cfg = _b[_i];\n\n _loop_1(cfg);\n }\n } // 最后统一在外部调用onAllLayoutEnd\n\n\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.error('layout failed', error);\n });\n return true;\n };\n\n LayoutController.prototype.runWebworker = function (worker, allData, layoutCfg) {\n var _this = this;\n\n var isGPU = this.isGPU;\n var data = this.filterLayoutData(allData, layoutCfg);\n var nodes = data.nodes,\n edges = data.edges;\n var offScreenCanvas = document.createElement('canvas');\n var gpuWorkerAbility = isGPU && typeof window !== 'undefined' && // eslint-disable-next-line @typescript-eslint/dot-notation\n window.navigator && !navigator[\"gpu\"] && // WebGPU 还不支持 OffscreenCanvas\n 'OffscreenCanvas' in window && 'transferControlToOffscreen' in offScreenCanvas; // NOTE: postMessage的message参数里面不能包含函数,否则postMessage会报错,\n // 例如:'function could not be cloned'。\n // 详情参考:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\n // 所以这里需要把过滤layoutCfg里的函数字段过滤掉。\n\n var filteredLayoutCfg = filterObject(layoutCfg, function (value) {\n return typeof value !== 'function';\n });\n\n if (!gpuWorkerAbility) {\n worker.postMessage({\n type: _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].RUN,\n nodes: nodes,\n edges: edges,\n layoutCfg: filteredLayoutCfg\n });\n } else {\n var offscreen = offScreenCanvas.transferControlToOffscreen(); // filteredLayoutCfg.canvas = offscreen;\n\n filteredLayoutCfg.type = filteredLayoutCfg.type + \"-gpu\";\n worker.postMessage({\n type: _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].GPURUN,\n nodes: nodes,\n edges: edges,\n layoutCfg: filteredLayoutCfg,\n canvas: offscreen\n }, [offscreen]);\n }\n\n return new Promise(function (reslove, reject) {\n worker.onmessage = function (event) {\n _this.handleWorkerMessage(reslove, reject, event, data, layoutCfg);\n };\n });\n }; // success callback will be called when updating graph positions for the first time.\n\n\n LayoutController.prototype.handleWorkerMessage = function (reslove, reject, event, data, layoutCfg) {\n var _a = this,\n graph = _a.graph,\n workerData = _a.workerData;\n\n var eventData = event.data;\n var type = eventData.type;\n\n var onTick = function onTick() {\n if (layoutCfg.onTick) {\n layoutCfg.onTick();\n }\n };\n\n switch (type) {\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].TICK:\n workerData.currentTick = eventData.currentTick;\n workerData.currentTickData = eventData;\n\n if (!workerData.requestId) {\n workerData.requestId = helper.requestAnimationFrame(function requestId() {\n updateLayoutPosition(data, eventData);\n graph.refreshPositions();\n onTick();\n\n if (eventData.currentTick === eventData.totalTicks) {\n // 如果是最后一次tick\n reslove();\n } else if (workerData.currentTick === eventData.totalTicks) {\n // 注意这里workerData.currentTick可能已经不再是前面赋值时候的值了,\n // 因为在requestAnimationFrame等待时间里,可能产生新的tick。\n // 如果当前tick不是最后一次tick,并且所有的tick消息都已发出来了,那么需要用最后一次tick的数据再刷新一次。\n workerData.requestId2 = helper.requestAnimationFrame(function requestId2() {\n updateLayoutPosition(data, workerData.currentTickData);\n graph.refreshPositions();\n workerData.requestId2 = null;\n onTick();\n reslove();\n });\n }\n\n workerData.requestId = null;\n });\n }\n\n break;\n\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].END:\n // 如果没有tick消息(非力导布局)\n if (workerData.currentTick == null) {\n updateLayoutPosition(data, eventData);\n reslove();\n }\n\n break;\n\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].GPUEND:\n // 如果没有tick消息(非力导布局)\n if (workerData.currentTick == null) {\n updateGPUWorkerLayoutPosition(data, eventData);\n reslove();\n }\n\n break;\n\n case _layout_worker_layoutConst__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].ERROR:\n console.warn('Web-Worker layout error!', eventData.message);\n reject();\n break;\n\n default:\n reject();\n break;\n }\n }; // 更新布局参数\n\n\n LayoutController.prototype.updateLayoutCfg = function (cfg) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods;\n\n var layoutCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_6__[\"mix\"])({}, this.layoutCfg, cfg);\n this.layoutCfg = layoutCfg;\n\n if (!(layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.length)) {\n this.layout();\n return;\n }\n\n this.data = this.setDataFromGraph();\n this.stopWorker();\n\n if (cfg.workerEnabled && this.layoutWithWorker(this.data)) {\n // 如果启用布局web worker并且浏览器支持web worker,用web worker布局。否则回退到不用web worker布局。\n return;\n }\n\n graph.emit('beforelayout');\n var start = Promise.resolve();\n\n if (layoutMethods.length === 1) {\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.updateLayoutMethod(layoutMethods[0], layoutCfg)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n } else {\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg.pipes[index];\n start = start.then(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.updateLayoutMethod(layoutMethod, currentCfg)];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n });\n });\n }\n\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('layout failed', error);\n });\n };\n\n LayoutController.prototype.adjustPipesBox = function (data, adjust) {\n var _this = this;\n\n return new Promise(function (resolve) {\n var nodes = data.nodes;\n\n if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) {\n resolve();\n }\n\n if (!LAYOUT_PIPES_ADJUST_NAMES.includes(adjust)) {\n console.warn(\"The adjust type \" + adjust + \" is not supported yet, please assign it with 'force', 'grid', or 'circular'.\");\n resolve();\n }\n\n var layoutCfg = {\n center: _this.layoutCfg.center,\n nodeSize: function nodeSize(d) {\n return Math.max(d.height, d.width);\n },\n preventOverlap: true,\n onLayoutEnd: function onLayoutEnd() {}\n }; // 计算出大单元\n\n var _a = _this.getLayoutBBox(nodes),\n groupNodes = _a.groupNodes,\n layoutNodes = _a.layoutNodes;\n\n var preNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_6__[\"clone\"])(layoutNodes); // 根据大单元坐标的变化,调整这里面每个小单元nodes\n\n layoutCfg.onLayoutEnd = function () {\n layoutNodes === null || layoutNodes === void 0 ? void 0 : layoutNodes.forEach(function (ele, index) {\n var _a, _b, _c;\n\n var dx = ele.x - ((_a = preNodes[index]) === null || _a === void 0 ? void 0 : _a.x);\n var dy = ele.y - ((_b = preNodes[index]) === null || _b === void 0 ? void 0 : _b.y);\n (_c = groupNodes[index]) === null || _c === void 0 ? void 0 : _c.forEach(function (n) {\n n.x += dx;\n n.y += dy;\n });\n });\n resolve();\n };\n\n var layoutMethod = new _layout__WEBPACK_IMPORTED_MODULE_2__[\"Layout\"][adjust](layoutCfg);\n layoutMethod.layout({\n nodes: layoutNodes\n });\n });\n };\n\n LayoutController.prototype.hasGPUVersion = function (layoutName) {\n return GPU_LAYOUT_NAMES.includes(layoutName);\n };\n\n LayoutController.prototype.destroy = function () {\n this.destoryLayoutMethods();\n var worker = this.worker;\n\n if (worker) {\n worker.terminate();\n this.worker = null;\n }\n\n this.destroyed = true;\n this.graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n this.graph = null;\n };\n\n return LayoutController;\n}(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractLayout\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LayoutController);\n\nfunction updateLayoutPosition(data, layoutData) {\n var nodes = data.nodes;\n var layoutNodes = layoutData.nodes;\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x = layoutNodes[i].x;\n node.y = layoutNodes[i].y;\n }\n}\n\nfunction filterObject(collection, callback) {\n var result = {};\n\n if (collection && _typeof(collection) === 'object') {\n Object.keys(collection).forEach(function (key) {\n if (collection.hasOwnProperty(key) && callback(collection[key])) {\n result[key] = collection[key];\n }\n });\n return result;\n }\n\n return collection;\n}\n\nfunction updateGPUWorkerLayoutPosition(data, layoutData) {\n var nodes = data.nodes;\n var vertexEdgeData = layoutData.vertexEdgeData;\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var x = vertexEdgeData[4 * i];\n var y = vertexEdgeData[4 * i + 1];\n node.x = x;\n node.y = y;\n }\n}\n\nfunction addLayoutOrder(data, order) {\n var _a;\n\n if (!((_a = data === null || data === void 0 ? void 0 : data.nodes) === null || _a === void 0 ? void 0 : _a.length)) {\n return;\n }\n\n var nodes = data.nodes;\n nodes.forEach(function (node) {\n node.layoutOrder = order;\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dyYXBoL2NvbnRyb2xsZXIvbGF5b3V0LmpzPzUyMTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUU5VDtBQUNYO0FBQ1Q7QUFDMkI7QUFDQTtBQUNwQjtBQUNMOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUywyQkFBMkI7QUFDdEMsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxHQUFHOzs7QUFHSCx1REFBdUQ7QUFDdkQsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0JBQW9CLGlGQUFZO0FBQ2hDOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGFBQWEsdURBQVM7QUFDdEI7QUFDQSxlQUFlLHlEQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0JBQWdCOzs7QUFHaEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLG1DQUFtQyw4Q0FBTTtBQUN6QyxlQUFlO0FBQ2Y7QUFDQTtBQUNBLGVBQWU7OztBQUdmOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSx1REFBUztBQUN0QjtBQUNBLGVBQWUseURBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsZ0dBQWdHOztBQUVoRztBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7O0FBRWhELHNEQUFzRDs7QUFFdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUE7QUFDQSx1QkFBdUI7O0FBRXZCLFdBQVcsNkRBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGVBQWUsdURBQVM7QUFDeEIsaUJBQWlCLHlEQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7OztBQUdqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGVBQWUsdURBQVM7QUFDeEIsaUJBQWlCLHlEQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsaUJBQWlCLHVEQUFTO0FBQzFCLG1CQUFtQix5REFBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQSwrREFBK0Q7QUFDL0Q7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0M7O0FBRWxDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEsNENBQTRDLGdCQUFnQjtBQUM1RDs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7QUFDbkY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxjQUFjLHlFQUFjO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsbUVBQW1FOztBQUVuRTtBQUNBO0FBQ0EsY0FBYyx5RUFBYztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHlFQUFjO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0EsV0FBVztBQUNYOztBQUVBOztBQUVBLFdBQVcseUVBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxXQUFXLHlFQUFjO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsV0FBVyx5RUFBYztBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0Isc0RBQUcsR0FBRztBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsdURBQVM7QUFDeEIsaUJBQWlCLHlEQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVM7QUFDMUIsbUJBQW1CLHlEQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBOztBQUVBLHFCQUFxQix3REFBSyxjQUFjOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSw2QkFBNkIsOENBQU07QUFDbkM7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw0REFBYzs7QUFFRCwrRUFBZ0IsRUFBQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dyYXBoL2NvbnRyb2xsZXIvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5pbXBvcnQgeyBfX2F3YWl0ZXIsIF9fZXh0ZW5kcywgX19nZW5lcmF0b3IgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0TGF5b3V0IH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgeyBMYXlvdXQgfSBmcm9tICcuLi8uLi9sYXlvdXQnO1xuaW1wb3J0IHsgTGF5b3V0V29ya2VyIH0gZnJvbSAnLi4vLi4vbGF5b3V0L3dvcmtlci9sYXlvdXQud29ya2VyJztcbmltcG9ydCB7IExBWU9VVF9NRVNTQUdFIH0gZnJvbSAnLi4vLi4vbGF5b3V0L3dvcmtlci9sYXlvdXRDb25zdCc7XG5pbXBvcnQgeyBncHVEZXRlY3RvciB9IGZyb20gJy4uLy4uL3V0aWwvZ3B1JztcbmltcG9ydCB7IG1peCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJzsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbXBsaWVkLWV2YWxcblxudmFyIG1vY2tSYWYgPSBmdW5jdGlvbiBtb2NrUmFmKGNiKSB7XG4gIHJldHVybiBzZXRUaW1lb3V0KGNiLCAxNik7XG59O1xuXG52YXIgbW9ja0NhZiA9IGZ1bmN0aW9uIG1vY2tDYWYocmVxSWQpIHtcbiAgcmV0dXJuIGNsZWFyVGltZW91dChyZXFJZCk7XG59O1xuXG52YXIgaGVscGVyID0ge1xuICAvLyBwb2xseWZpbGxcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBmdW5jdGlvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spIHtcbiAgICB2YXIgZm4gPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCBtb2NrUmFmIDogbW9ja1JhZjtcbiAgICByZXR1cm4gZm4oY2FsbGJhY2spO1xuICB9LFxuICBjYW5jZWxBbmltYXRpb25GcmFtZTogZnVuY3Rpb24gY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVxdWVzdElkKSB7XG4gICAgdmFyIGZuID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdENhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IG1vY2tDYWYgOiBtb2NrQ2FmO1xuICAgIHJldHVybiBmbihyZXF1ZXN0SWQpO1xuICB9XG59O1xudmFyIEdQVV9MQVlPVVRfTkFNRVMgPSBbJ2ZydWNodGVybWFuJywgJ2dGb3JjZSddO1xudmFyIExBWU9VVF9QSVBFU19BREpVU1RfTkFNRVMgPSBbJ2ZvcmNlJywgJ2dyaWQnLCAnY2lyY3VsYXInXTtcblxudmFyIExheW91dENvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoTGF5b3V0Q29udHJvbGxlciwgX3N1cGVyKTsgLy8gdGhlIGNvbmZpZ3VyYXRpb25zIG9mIHRoZSBsYXlvdXRcbiAgLy8gcHJpdmF0ZSBsYXlvdXRDZmc6IGFueTsgLy8gTGF5b3V0T3B0aW9uc1xuICAvLyB0aGUgdHlwZSBuYW1lIG9mIHRoZSBsYXlvdXRcbiAgLy8gcHJpdmF0ZSBsYXlvdXRUeXBlOiBzdHJpbmc7XG4gIC8vIHByaXZhdGUgZGF0YTogR3JhcGhEYXRhO1xuICAvLyBwcml2YXRlIGxheW91dE1ldGhvZHM6IHR5cGVvZiBMYXlvdXQ7XG5cblxuICBmdW5jdGlvbiBMYXlvdXRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZ3JhcGgpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIF90aGlzLmxheW91dENmZyA9IGdyYXBoLmdldCgnbGF5b3V0JykgfHwge307XG4gICAgX3RoaXMubGF5b3V0VHlwZSA9IF90aGlzLmdldExheW91dFR5cGUoKTtcbiAgICBfdGhpcy53b3JrZXIgPSBudWxsO1xuICAgIF90aGlzLndvcmtlckRhdGEgPSB7fTtcblxuICAgIF90aGlzLmluaXRMYXlvdXQoKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdExheW91dCA9IGZ1bmN0aW9uICgpIHsvLyBubyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgfTsgLy8gZ2V0IGxheW91dCB3b3JrZXIgYW5kIGNyZWF0ZSBvbmUgaWYgbm90IGV4aXN0c1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0V29ya2VyID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLndvcmtlcikge1xuICAgICAgcmV0dXJuIHRoaXMud29ya2VyO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgV29ya2VyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8g5aaC5p6c5b2T5YmN5rWP6KeI5Zmo5LiN5pSv5oyBIHdlYiB3b3JrZXLvvIzliJnkuI3kvb/nlKggd2ViIHdvcmtlclxuICAgICAgY29uc29sZS53YXJuKCdXZWIgd29ya2VyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gY3VycmVudCBicm93c2VyLicpO1xuICAgICAgdGhpcy53b3JrZXIgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmtlciA9IExheW91dFdvcmtlcih0aGlzLmxheW91dENmZy53b3JrZXJTY3JpcHRVUkwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLndvcmtlcjtcbiAgfTsgLy8gc3RvcCBsYXlvdXQgd29ya2VyXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5zdG9wV29ya2VyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB3b3JrZXJEYXRhID0gdGhpcy53b3JrZXJEYXRhO1xuXG4gICAgaWYgKCF0aGlzLndvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMud29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgIHRoaXMud29ya2VyID0gbnVsbDsgLy8g6YeN5paw5byA5aeL5paw55qE5biD5bGA5LmL5YmN77yM5YWI5Y+W5raI5LmL5YmN5biD5bGA55qEcmVxdWVzdEFuaW1hdGlvbkZyYW1l44CCXG5cbiAgICBpZiAod29ya2VyRGF0YS5yZXF1ZXN0SWQpIHtcbiAgICAgIGhlbHBlci5jYW5jZWxBbmltYXRpb25GcmFtZSh3b3JrZXJEYXRhLnJlcXVlc3RJZCk7XG4gICAgICB3b3JrZXJEYXRhLnJlcXVlc3RJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHdvcmtlckRhdGEucmVxdWVzdElkMikge1xuICAgICAgaGVscGVyLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHdvcmtlckRhdGEucmVxdWVzdElkMik7XG4gICAgICB3b3JrZXJEYXRhLnJlcXVlc3RJZDIgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5leGVjTGF5b3V0TWV0aG9kID0gZnVuY3Rpb24gKGxheW91dENmZywgb3JkZXIpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBncmFwaCwgbGF5b3V0VHlwZSwgaXNGb3JjZSwgb25UaWNrXzEsIHRpY2ssIGVuYWJsZVRpY2ssIGxheW91dE1ldGhvZCwgb25UaWNrXzIsIHRpY2ssIGxheW91dERhdGE7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICAgICAgICAgICAgaWYgKCFncmFwaCB8fCBncmFwaC5nZXQoJ2Rlc3Ryb3llZCcpKSByZXR1cm4gWzJcbiAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICBsYXlvdXRUeXBlID0gbGF5b3V0Q2ZnLnR5cGU7IC8vIOavj+S4quW4g+WxgOaWueazlemDvemcgOimgeazqOWGjFxuXG4gICAgICAgICAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBncmFwaC5lbWl0KCdhZnRlcnN1YmxheW91dCcsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXNsb3ZlKCk7XG4gICAgICAgICAgICAgIH07IC8vIOiLpeeUqOaIt+aMh+WumuW8gOWQryBncHXvvIzkuJTlvZPliY3mtY/op4jlmajmlK/mjIEgd2ViZ2zvvIzkuJTor6Xnrpfms5XlrZjlnKggR1BVIOeJiOacrO+8iOebruWJjeS7heaUr+aMgSBmcnVjaHRlcm1hbiDlkowgZ0ZvcmNl77yJ77yM5L2/55SoIGdwdSDniYjmnKznmoTluIPlsYBcblxuXG4gICAgICAgICAgICAgIGlmIChsYXlvdXRUeXBlICYmIHRoaXMuaXNHUFUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzR1BVVmVyc2lvbihsYXlvdXRUeXBlKSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiVGhlICdcIiArIGxheW91dFR5cGUgKyBcIicgbGF5b3V0IGRvZXMgbm90IHN1cHBvcnQgR1BVIGNhbGN1bGF0aW9uIGZvciBub3csIGl0IHdpbGwgcnVuIGluIENQVS5cIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGxheW91dFR5cGUgPSBsYXlvdXRUeXBlICsgXCItZ3B1XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaXNGb3JjZSA9IGxheW91dFR5cGUgPT09ICdmb3JjZScgfHwgbGF5b3V0VHlwZSA9PT0gJ2c2Zm9yY2UnIHx8IGxheW91dFR5cGUgPT09ICdnRm9yY2UnO1xuXG4gICAgICAgICAgICAgIGlmIChpc0ZvcmNlKSB7XG4gICAgICAgICAgICAgICAgb25UaWNrXzEgPSBsYXlvdXRDZmcub25UaWNrO1xuXG4gICAgICAgICAgICAgICAgdGljayA9IGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgICAgICAgICAgICAgICBpZiAob25UaWNrXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgb25UaWNrXzEoKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsYXlvdXRDZmcudGljayA9IHRpY2s7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Q2ZnLnR5cGUgPT09ICdjb21ib0ZvcmNlJykge1xuICAgICAgICAgICAgICAgIGxheW91dENmZy5jb21ib1RyZWVzID0gZ3JhcGguZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBlbmFibGVUaWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsYXlvdXRNZXRob2QgPSBuZXcgTGF5b3V0W2xheW91dFR5cGVdKGxheW91dENmZyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgbGF5b3V0IG1ldGhvZDogJ1wiICsgbGF5b3V0VHlwZSArIFwiJyBkb2VzIG5vdCBleGlzdCEgUGxlYXNlIHNwZWNpZnkgaXQgZmlyc3QuXCIpO1xuICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICB9IC8vIOaYr+WQpumcgOimgei/reS7o+eahOaWueW8j+WujOaIkOW4g+WxgOOAgui/memHjOaYr+adpeiHquW4g+WxgOWvueixoeeahOWunuS+i+WxnuaAp++8jOaYr+eUseW4g+WxgOeahOWumuS5ieiAheWcqOW4g+WxgOexu+WumuS5ieeahOOAglxuXG5cbiAgICAgICAgICAgICAgZW5hYmxlVGljayA9IGxheW91dE1ldGhvZC5lbmFibGVUaWNrO1xuXG4gICAgICAgICAgICAgIGlmIChlbmFibGVUaWNrKSB7XG4gICAgICAgICAgICAgICAgb25UaWNrXzIgPSBsYXlvdXRDZmcub25UaWNrO1xuXG4gICAgICAgICAgICAgICAgdGljayA9IGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgICAgICAgICAgICAgICBpZiAob25UaWNrXzIpIHtcbiAgICAgICAgICAgICAgICAgICAgb25UaWNrXzIoKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsYXlvdXRNZXRob2QudGljayA9IHRpY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBsYXlvdXREYXRhID0gdGhpcy5maWx0ZXJMYXlvdXREYXRhKHRoaXMuZGF0YSwgbGF5b3V0Q2ZnKTtcbiAgICAgICAgICAgICAgYWRkTGF5b3V0T3JkZXIobGF5b3V0RGF0YSwgb3JkZXIpO1xuICAgICAgICAgICAgICBsYXlvdXRNZXRob2QuaW5pdChsYXlvdXREYXRhKTsgLy8g6Iul5a2Y5Zyo6IqC54K55rKh5pyJ5L2N572u5L+h5oGv77yM5LiU5rKh5pyJ6K6+572uIGxheW91dO+8jOWcqCBpbml0UG9zaXRpb25zIOS4rSByYW5kb20g57uZ5Ye65LqG5omA5pyJ6IqC54K555qE5L2N572u77yM5LiN6ZyA6KaB5YaN5qyh5omn6KGMIHJhbmRvbSDluIPlsYBcbiAgICAgICAgICAgICAgLy8g5omA5pyJ6IqC54K56YO95pyJ5L2N572u5L+h5oGv77yM5LiU5oyH5a6a5LqGIGxheW91dO+8jOWImeaJp+ihjOW4g+WxgO+8iOS7o+ihqOS4jeaYr+esrOS4gOasoei/m+ihjOW4g+WxgO+8iVxuXG4gICAgICAgICAgICAgIGdyYXBoLmVtaXQoJ2JlZm9yZXN1YmxheW91dCcsIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBsYXlvdXRUeXBlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gWzRcbiAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICwgbGF5b3V0TWV0aG9kLmV4ZWN1dGUoKV07XG5cbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgX2Euc2VudCgpO1xuXG4gICAgICAgICAgICAgIGlmIChsYXlvdXRNZXRob2QuaXNDdXN0b21MYXlvdXQgJiYgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKSBsYXlvdXRDZmcub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgICAgdGhpcy5sYXlvdXRNZXRob2RzW29yZGVyXSA9IGxheW91dE1ldGhvZDtcbiAgICAgICAgICAgICAgcmV0dXJuIFsyXG4gICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0TWV0aG9kID0gZnVuY3Rpb24gKGxheW91dE1ldGhvZCwgbGF5b3V0Q2ZnKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzbG92ZSwgcmVqZWN0KSB7XG4gICAgICByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZ3JhcGgsIGxheW91dFR5cGUsIGxheW91dERhdGE7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICAgICAgICAgICAgbGF5b3V0VHlwZSA9IGxheW91dENmZyA9PT0gbnVsbCB8fCBsYXlvdXRDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dENmZy50eXBlOyAvLyDmr4/kuKrluIPlsYDmlrnms5Xpg73pnIDopoHms6jlhoxcblxuICAgICAgICAgICAgICBsYXlvdXRDZmcub25MYXlvdXRFbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBsYXlvdXRUeXBlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGxheW91dERhdGEgPSB0aGlzLmZpbHRlckxheW91dERhdGEodGhpcy5kYXRhLCBsYXlvdXRDZmcpO1xuICAgICAgICAgICAgICBsYXlvdXRNZXRob2QuaW5pdChsYXlvdXREYXRhKTtcbiAgICAgICAgICAgICAgbGF5b3V0TWV0aG9kLnVwZGF0ZUNmZyhsYXlvdXRDZmcpO1xuICAgICAgICAgICAgICBncmFwaC5lbWl0KCdiZWZvcmVzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogbGF5b3V0VHlwZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIFs0XG4gICAgICAgICAgICAgIC8qeWllbGQqL1xuICAgICAgICAgICAgICAsIGxheW91dE1ldGhvZC5leGVjdXRlKCldO1xuXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIF9hLnNlbnQoKTtcblxuICAgICAgICAgICAgICBpZiAobGF5b3V0TWV0aG9kLmlzQ3VzdG9tTGF5b3V0ICYmIGxheW91dENmZy5vbkxheW91dEVuZCkgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgIHJldHVybiBbMlxuICAgICAgICAgICAgICAvKnJldHVybiovXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gc3VjY2VzcyBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtib29sZWFufSDmmK/lkKbkvb/nlKh3ZWIgd29ya2Vy5biD5bGAXG4gICAqL1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUubGF5b3V0ID0gZnVuY3Rpb24gKHN1Y2Nlc3MpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLnNldERhdGFGcm9tR3JhcGgoKTtcbiAgICB2YXIgX2EgPSB0aGlzLmRhdGEsXG4gICAgICAgIG5vZGVzID0gX2Eubm9kZXMsXG4gICAgICAgIGhpZGRlbk5vZGVzID0gX2EuaGlkZGVuTm9kZXM7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBsYXlvdXRDZmcgPSB7fTtcbiAgICBPYmplY3QuYXNzaWduKGxheW91dENmZywge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBjZW50ZXI6IFt3aWR0aCAvIDIsIGhlaWdodCAvIDJdXG4gICAgfSwgdGhpcy5sYXlvdXRDZmcpO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gbGF5b3V0Q2ZnO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICBncmFwaC5lbWl0KCdiZWZvcmVsYXlvdXQnKTtcbiAgICB0aGlzLmluaXRQb3NpdGlvbnMobGF5b3V0Q2ZnLmNlbnRlciwgbm9kZXMpOyAvLyBpbml0IGhpZGRlbiBub2Rlc1xuXG4gICAgdGhpcy5pbml0UG9zaXRpb25zKGxheW91dENmZy5jZW50ZXIsIGhpZGRlbk5vZGVzKTsgLy8g6Ziy5q2i55So5oi355u05o6l55SoIC1ncHUg57uT5bC+5oyH5a6a5biD5bGAXG5cbiAgICB2YXIgbGF5b3V0VHlwZSA9IGxheW91dENmZy50eXBlO1xuXG4gICAgaWYgKGxheW91dFR5cGUgJiYgbGF5b3V0VHlwZS5zcGxpdCgnLScpWzFdID09PSAnZ3B1Jykge1xuICAgICAgbGF5b3V0VHlwZSA9IGxheW91dFR5cGUuc3BsaXQoJy0nKVswXTtcbiAgICAgIGxheW91dENmZy5ncHVFbmFibGVkID0gdHJ1ZTtcbiAgICB9IC8vIOiLpeeUqOaIt+aMh+WumuW8gOWQryBncHXvvIzkuJTlvZPliY3mtY/op4jlmajmlK/mjIEgd2ViZ2zvvIzkuJTor6Xnrpfms5XlrZjlnKggR1BVIOeJiOacrO+8iOebruWJjeS7heaUr+aMgSBmcnVjaHRlcm1hbiDlkowgZ0ZvcmNl77yJ77yM5L2/55SoIGdwdSDniYjmnKznmoTluIPlsYBcblxuXG4gICAgdmFyIGVuYWJsZUdQVSA9IGZhbHNlO1xuXG4gICAgaWYgKGxheW91dENmZy5ncHVFbmFibGVkKSB7XG4gICAgICBlbmFibGVHUFUgPSB0cnVlOyAvLyDmiZPlvIDkuIvpnaLor63lj6XlsIbkvJrlr7zoh7Qgd2Vid29ya2VyIOaKpeaJvuS4jeWIsCB3aW5kb3dcblxuICAgICAgaWYgKCFncHVEZXRlY3RvcigpLndlYmdsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIllvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHdlYkdMIG9yIEdQR1BVLiBUaGUgbGF5b3V0IHdpbGwgcnVuIGluIENQVS5cIik7XG4gICAgICAgIGVuYWJsZUdQVSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNHUFUgPSBlbmFibGVHUFU7IC8vIOWcqCBvbkFsbExheW91dEVuZCDkuK3miafooYznlKjmiLfoh6rlrprkuYkgb25MYXlvdXRFbmTvvIzop6blj5EgYWZ0ZXJsYXlvdXTjgIHmm7TmlrDoioLngrnkvY3nva7jgIFmaXRWaWV3L2ZpdENlbnRlcuOAgeinpuWPkSBhZnRlcnJlbmRlclxuXG4gICAgdmFyIG9uTGF5b3V0RW5kID0gbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kLFxuICAgICAgICBsYXlvdXRFbmRGb3JtYXR0ZWQgPSBsYXlvdXRDZmcubGF5b3V0RW5kRm9ybWF0dGVkLFxuICAgICAgICBhZGp1c3QgPSBsYXlvdXRDZmcuYWRqdXN0O1xuXG4gICAgaWYgKCFsYXlvdXRFbmRGb3JtYXR0ZWQpIHtcbiAgICAgIGxheW91dENmZy5sYXlvdXRFbmRGb3JtYXR0ZWQgPSB0cnVlO1xuXG4gICAgICBsYXlvdXRDZmcub25BbGxMYXlvdXRFbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8g5omn6KGM55So5oi36Ieq5a6a5LmJIG9uTGF5b3V0RW5kXG4gICAgICAgICAgICAgICAgaWYgKG9uTGF5b3V0RW5kKSB7XG4gICAgICAgICAgICAgICAgICBvbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgICAgIH0gLy8g5pu05paw6IqC54K55L2N572uXG5cblxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaExheW91dCgpO1xuICAgICAgICAgICAgICAgIGlmICghKGFkanVzdCAmJiBsYXlvdXRDZmcucGlwZXMpKSByZXR1cm4gWzNcbiAgICAgICAgICAgICAgICAvKmJyZWFrKi9cbiAgICAgICAgICAgICAgICAsIDJdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbNFxuICAgICAgICAgICAgICAgIC8qeWllbGQqL1xuICAgICAgICAgICAgICAgICwgdGhpcy5hZGp1c3RQaXBlc0JveCh0aGlzLmRhdGEsIGFkanVzdCldO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hMYXlvdXQoKTtcbiAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDI7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIC8vIOinpuWPkSBhZnRlcmxheW91dFxuICAgICAgICAgICAgICAgIGdyYXBoLmVtaXQoJ2FmdGVybGF5b3V0Jyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnN0b3BXb3JrZXIoKTtcblxuICAgIGlmIChsYXlvdXRDZmcud29ya2VyRW5hYmxlZCAmJiB0aGlzLmxheW91dFdpdGhXb3JrZXIodGhpcy5kYXRhKSkge1xuICAgICAgLy8g5aaC5p6c5ZCv55So5biD5bGAd2ViIHdvcmtlcuW5tuS4lOa1j+iniOWZqOaUr+aMgXdlYiB3b3JrZXLvvIznlKh3ZWIgd29ya2Vy5biD5bGA44CC5ZCm5YiZ5Zue6YCA5Yiw5LiN55Sod2ViIHdvcmtlcuW4g+WxgOOAglxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIHN0YXJ0ID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICBpZiAobGF5b3V0Q2ZnLnR5cGUpIHtcbiAgICAgIHN0YXJ0ID0gc3RhcnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFs0XG4gICAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICAgLCB0aGlzLmV4ZWNMYXlvdXRNZXRob2QobGF5b3V0Q2ZnLCAwKV07XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIHJldHVybiBbMlxuICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgICAsIF9hLnNlbnQoKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChsYXlvdXRDZmcucGlwZXMpIHtcbiAgICAgIGxheW91dENmZy5waXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChjZmcsIGluZGV4KSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbNFxuICAgICAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICAgICAsIHRoaXMuZXhlY0xheW91dE1ldGhvZChjZmcsIGluZGV4KV07XG5cbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgICAgICAgIC8qcmV0dXJuKi9cbiAgICAgICAgICAgICAgICAgICwgX2Euc2VudCgpXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSAvLyDmnIDlkI7nu5/kuIDlnKjlpJbpg6josIPnlKhvbkFsbExheW91dEVuZFxuXG5cbiAgICBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChsYXlvdXRDZmcub25BbGxMYXlvdXRFbmQpIGxheW91dENmZy5vbkFsbExheW91dEVuZCgpOyAvLyDlnKjmiafooYwgZXhlY3V0ZSDlkI7nq4vljbPmiafooYwgc3VjY2Vzc++8jOS4lOWcqCB0aW1lQmFyIOS4reaciSB0aHJvdHRsZe+8jOWPr+S7pemYsuatoiB0aW1lQmFyIOebkeWQrCBhZnRlcnJlbmRlciDov5vooYwgY2hhbmdlRGF0YSDlkI4gbGF5b3V077yM5LuO6ICM5q275b6q546vXG4gICAgICAvLyDlr7nkuo4gZm9yY2Ug5LiA57G75biD5bGA5a6M5oiQ5ZCO55qEIGZpdFZpZXcg6ZyA6KaB55So5oi36Ieq5bex5ZyoIG9uTGF5b3V0RW5kIOS4remFjee9rlxuXG4gICAgICBpZiAoc3VjY2Vzcykgc3VjY2VzcygpO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdncmFwaCBsYXlvdXQgZmFpbGVkLCcsIGVycm9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIC8qKlxuICAgKiBsYXlvdXQgd2l0aCB3ZWIgd29ya2VyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIGdyYXBoIGRhdGFcbiAgICogQHJldHVybiB7Ym9vbGVhbn0g5piv5ZCm5pSv5oyBd2ViIHdvcmtlclxuICAgKi9cblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmxheW91dFdpdGhXb3JrZXIgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBsYXlvdXRDZmcgPSBfYS5sYXlvdXRDZmcsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICB2YXIgd29ya2VyID0gdGhpcy5nZXRXb3JrZXIoKTsgLy8g5q+P5qyhd29ya2VyIG1lc3NhZ2UgZXZlbnQgaGFuZGxlcuiwg+eUqOS5i+mXtOeahOWFseS6q+aVsOaNru+8jOS8muiiq+S/ruaUueOAglxuXG4gICAgdmFyIHdvcmtlckRhdGEgPSB0aGlzLndvcmtlckRhdGE7XG5cbiAgICBpZiAoIXdvcmtlcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHdvcmtlckRhdGEucmVxdWVzdElkID0gbnVsbDtcbiAgICB3b3JrZXJEYXRhLnJlcXVlc3RJZDIgPSBudWxsO1xuICAgIHdvcmtlckRhdGEuY3VycmVudFRpY2sgPSBudWxsO1xuICAgIHdvcmtlckRhdGEuY3VycmVudFRpY2tEYXRhID0gbnVsbDtcbiAgICBncmFwaC5lbWl0KCdiZWZvcmVsYXlvdXQnKTtcbiAgICB2YXIgc3RhcnQgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgIGlmIChsYXlvdXRDZmcudHlwZSkge1xuICAgICAgc3RhcnQgPSBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnJ1bldlYndvcmtlcih3b3JrZXIsIGRhdGEsIGxheW91dENmZyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGxheW91dENmZy5waXBlcykge1xuICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGNmZykge1xuICAgICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5ydW5XZWJ3b3JrZXIod29ya2VyLCBkYXRhLCBjZmcpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIF9pID0gMCwgX2IgPSBsYXlvdXRDZmcucGlwZXM7IF9pIDwgX2IubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBjZmcgPSBfYltfaV07XG5cbiAgICAgICAgX2xvb3BfMShjZmcpO1xuICAgICAgfVxuICAgIH0gLy8g5pyA5ZCO57uf5LiA5Zyo5aSW6YOo6LCD55Sob25BbGxMYXlvdXRFbmRcblxuXG4gICAgc3RhcnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAobGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKSBsYXlvdXRDZmcub25BbGxMYXlvdXRFbmQoKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2xheW91dCBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUucnVuV2Vid29ya2VyID0gZnVuY3Rpb24gKHdvcmtlciwgYWxsRGF0YSwgbGF5b3V0Q2ZnKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBpc0dQVSA9IHRoaXMuaXNHUFU7XG4gICAgdmFyIGRhdGEgPSB0aGlzLmZpbHRlckxheW91dERhdGEoYWxsRGF0YSwgbGF5b3V0Q2ZnKTtcbiAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IGRhdGEuZWRnZXM7XG4gICAgdmFyIG9mZlNjcmVlbkNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIHZhciBncHVXb3JrZXJBYmlsaXR5ID0gaXNHUFUgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICB3aW5kb3cubmF2aWdhdG9yICYmICFuYXZpZ2F0b3JbXCJncHVcIl0gJiYgLy8gV2ViR1BVIOi/mOS4jeaUr+aMgSBPZmZzY3JlZW5DYW52YXNcbiAgICAnT2Zmc2NyZWVuQ2FudmFzJyBpbiB3aW5kb3cgJiYgJ3RyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuJyBpbiBvZmZTY3JlZW5DYW52YXM7IC8vIE5PVEU6IHBvc3RNZXNzYWdl55qEbWVzc2FnZeWPguaVsOmHjOmdouS4jeiDveWMheWQq+WHveaVsO+8jOWQpuWImXBvc3RNZXNzYWdl5Lya5oql6ZSZ77yMXG4gICAgLy8g5L6L5aaC77yaJ2Z1bmN0aW9uIGNvdWxkIG5vdCBiZSBjbG9uZWQn44CCXG4gICAgLy8g6K+m5oOF5Y+C6ICD77yaaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dlYl9Xb3JrZXJzX0FQSS9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobVxuICAgIC8vIOaJgOS7pei/memHjOmcgOimgeaKiui/h+a7pGxheW91dENmZ+mHjOeahOWHveaVsOWtl+autei/h+a7pOaOieOAglxuXG4gICAgdmFyIGZpbHRlcmVkTGF5b3V0Q2ZnID0gZmlsdGVyT2JqZWN0KGxheW91dENmZywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nO1xuICAgIH0pO1xuXG4gICAgaWYgKCFncHVXb3JrZXJBYmlsaXR5KSB7XG4gICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5SVU4sXG4gICAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgICAgZWRnZXM6IGVkZ2VzLFxuICAgICAgICBsYXlvdXRDZmc6IGZpbHRlcmVkTGF5b3V0Q2ZnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG9mZnNjcmVlbiA9IG9mZlNjcmVlbkNhbnZhcy50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpOyAvLyBmaWx0ZXJlZExheW91dENmZy5jYW52YXMgPSBvZmZzY3JlZW47XG5cbiAgICAgIGZpbHRlcmVkTGF5b3V0Q2ZnLnR5cGUgPSBmaWx0ZXJlZExheW91dENmZy50eXBlICsgXCItZ3B1XCI7XG4gICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5HUFVSVU4sXG4gICAgICAgIG5vZGVzOiBub2RlcyxcbiAgICAgICAgZWRnZXM6IGVkZ2VzLFxuICAgICAgICBsYXlvdXRDZmc6IGZpbHRlcmVkTGF5b3V0Q2ZnLFxuICAgICAgICBjYW52YXM6IG9mZnNjcmVlblxuICAgICAgfSwgW29mZnNjcmVlbl0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzbG92ZSwgcmVqZWN0KSB7XG4gICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIF90aGlzLmhhbmRsZVdvcmtlck1lc3NhZ2UocmVzbG92ZSwgcmVqZWN0LCBldmVudCwgZGF0YSwgbGF5b3V0Q2ZnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH07IC8vIHN1Y2Nlc3MgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2hlbiB1cGRhdGluZyBncmFwaCBwb3NpdGlvbnMgZm9yIHRoZSBmaXJzdCB0aW1lLlxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlV29ya2VyTWVzc2FnZSA9IGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QsIGV2ZW50LCBkYXRhLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICB3b3JrZXJEYXRhID0gX2Eud29ya2VyRGF0YTtcblxuICAgIHZhciBldmVudERhdGEgPSBldmVudC5kYXRhO1xuICAgIHZhciB0eXBlID0gZXZlbnREYXRhLnR5cGU7XG5cbiAgICB2YXIgb25UaWNrID0gZnVuY3Rpb24gb25UaWNrKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vblRpY2spIHtcbiAgICAgICAgbGF5b3V0Q2ZnLm9uVGljaygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgTEFZT1VUX01FU1NBR0UuVElDSzpcbiAgICAgICAgd29ya2VyRGF0YS5jdXJyZW50VGljayA9IGV2ZW50RGF0YS5jdXJyZW50VGljaztcbiAgICAgICAgd29ya2VyRGF0YS5jdXJyZW50VGlja0RhdGEgPSBldmVudERhdGE7XG5cbiAgICAgICAgaWYgKCF3b3JrZXJEYXRhLnJlcXVlc3RJZCkge1xuICAgICAgICAgIHdvcmtlckRhdGEucmVxdWVzdElkID0gaGVscGVyLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiByZXF1ZXN0SWQoKSB7XG4gICAgICAgICAgICB1cGRhdGVMYXlvdXRQb3NpdGlvbihkYXRhLCBldmVudERhdGEpO1xuICAgICAgICAgICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgICAgICAgICAgb25UaWNrKCk7XG5cbiAgICAgICAgICAgIGlmIChldmVudERhdGEuY3VycmVudFRpY2sgPT09IGV2ZW50RGF0YS50b3RhbFRpY2tzKSB7XG4gICAgICAgICAgICAgIC8vIOWmguaenOaYr+acgOWQjuS4gOasoXRpY2tcbiAgICAgICAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3b3JrZXJEYXRhLmN1cnJlbnRUaWNrID09PSBldmVudERhdGEudG90YWxUaWNrcykge1xuICAgICAgICAgICAgICAvLyDms6jmhI/ov5nph4x3b3JrZXJEYXRhLmN1cnJlbnRUaWNr5Y+v6IO95bey57uP5LiN5YaN5piv5YmN6Z2i6LWL5YC85pe25YCZ55qE5YC85LqG77yMXG4gICAgICAgICAgICAgIC8vIOWboOS4uuWcqHJlcXVlc3RBbmltYXRpb25GcmFtZeetieW+heaXtumXtOmHjO+8jOWPr+iDveS6p+eUn+aWsOeahHRpY2vjgIJcbiAgICAgICAgICAgICAgLy8g5aaC5p6c5b2T5YmNdGlja+S4jeaYr+acgOWQjuS4gOasoXRpY2vvvIzlubbkuJTmiYDmnInnmoR0aWNr5raI5oGv6YO95bey5Y+R5Ye65p2l5LqG77yM6YKj5LmI6ZyA6KaB55So5pyA5ZCO5LiA5qyhdGlja+eahOaVsOaNruWGjeWIt+aWsOS4gOasoeOAglxuICAgICAgICAgICAgICB3b3JrZXJEYXRhLnJlcXVlc3RJZDIgPSBoZWxwZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIHJlcXVlc3RJZDIoKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlTGF5b3V0UG9zaXRpb24oZGF0YSwgd29ya2VyRGF0YS5jdXJyZW50VGlja0RhdGEpO1xuICAgICAgICAgICAgICAgIGdyYXBoLnJlZnJlc2hQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB3b3JrZXJEYXRhLnJlcXVlc3RJZDIgPSBudWxsO1xuICAgICAgICAgICAgICAgIG9uVGljaygpO1xuICAgICAgICAgICAgICAgIHJlc2xvdmUoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdvcmtlckRhdGEucmVxdWVzdElkID0gbnVsbDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIExBWU9VVF9NRVNTQUdFLkVORDpcbiAgICAgICAgLy8g5aaC5p6c5rKh5pyJdGlja+a2iOaBr++8iOmdnuWKm+WvvOW4g+WxgO+8iVxuICAgICAgICBpZiAod29ya2VyRGF0YS5jdXJyZW50VGljayA9PSBudWxsKSB7XG4gICAgICAgICAgdXBkYXRlTGF5b3V0UG9zaXRpb24oZGF0YSwgZXZlbnREYXRhKTtcbiAgICAgICAgICByZXNsb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBMQVlPVVRfTUVTU0FHRS5HUFVFTkQ6XG4gICAgICAgIC8vIOWmguaenOayoeaciXRpY2vmtojmga/vvIjpnZ7lipvlr7zluIPlsYDvvIlcbiAgICAgICAgaWYgKHdvcmtlckRhdGEuY3VycmVudFRpY2sgPT0gbnVsbCkge1xuICAgICAgICAgIHVwZGF0ZUdQVVdvcmtlckxheW91dFBvc2l0aW9uKGRhdGEsIGV2ZW50RGF0YSk7XG4gICAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTEFZT1VUX01FU1NBR0UuRVJST1I6XG4gICAgICAgIGNvbnNvbGUud2FybignV2ViLVdvcmtlciBsYXlvdXQgZXJyb3IhJywgZXZlbnREYXRhLm1lc3NhZ2UpO1xuICAgICAgICByZWplY3QoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlamVjdCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07IC8vIOabtOaWsOW4g+WxgOWPguaVsFxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlTGF5b3V0Q2ZnID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBsYXlvdXRNZXRob2RzID0gX2EubGF5b3V0TWV0aG9kcztcblxuICAgIHZhciBsYXlvdXRDZmcgPSBtaXgoe30sIHRoaXMubGF5b3V0Q2ZnLCBjZmcpO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gbGF5b3V0Q2ZnO1xuXG4gICAgaWYgKCEobGF5b3V0TWV0aG9kcyA9PT0gbnVsbCB8fCBsYXlvdXRNZXRob2RzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRNZXRob2RzLmxlbmd0aCkpIHtcbiAgICAgIHRoaXMubGF5b3V0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gdGhpcy5zZXREYXRhRnJvbUdyYXBoKCk7XG4gICAgdGhpcy5zdG9wV29ya2VyKCk7XG5cbiAgICBpZiAoY2ZnLndvcmtlckVuYWJsZWQgJiYgdGhpcy5sYXlvdXRXaXRoV29ya2VyKHRoaXMuZGF0YSkpIHtcbiAgICAgIC8vIOWmguaenOWQr+eUqOW4g+WxgHdlYiB3b3JrZXLlubbkuJTmtY/op4jlmajmlK/mjIF3ZWIgd29ya2Vy77yM55Sod2ViIHdvcmtlcuW4g+WxgOOAguWQpuWImeWbnumAgOWIsOS4jeeUqHdlYiB3b3JrZXLluIPlsYDjgIJcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVsYXlvdXQnKTtcbiAgICB2YXIgc3RhcnQgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgIGlmIChsYXlvdXRNZXRob2RzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc3RhcnQgPSBzdGFydC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gWzRcbiAgICAgICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICAgICAsIHRoaXMudXBkYXRlTGF5b3V0TWV0aG9kKGxheW91dE1ldGhvZHNbMF0sIGxheW91dENmZyldO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgICAgICAvKnJldHVybiovXG4gICAgICAgICAgICAgICAgLCBfYS5zZW50KCldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXlvdXRNZXRob2RzID09PSBudWxsIHx8IGxheW91dE1ldGhvZHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbiAobGF5b3V0TWV0aG9kLCBpbmRleCkge1xuICAgICAgICB2YXIgY3VycmVudENmZyA9IGxheW91dENmZy5waXBlc1tpbmRleF07XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbNFxuICAgICAgICAgICAgICAgICAgLyp5aWVsZCovXG4gICAgICAgICAgICAgICAgICAsIHRoaXMudXBkYXRlTGF5b3V0TWV0aG9kKGxheW91dE1ldGhvZCwgY3VycmVudENmZyldO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXG4gICAgICAgICAgICAgICAgICAvKnJldHVybiovXG4gICAgICAgICAgICAgICAgICAsIF9hLnNlbnQoKV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vbkFsbExheW91dEVuZCkgbGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2xheW91dCBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuYWRqdXN0UGlwZXNCb3ggPSBmdW5jdGlvbiAoZGF0YSwgYWRqdXN0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcblxuICAgICAgaWYgKCEobm9kZXMgPT09IG51bGwgfHwgbm9kZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVzLmxlbmd0aCkpIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUxBWU9VVF9QSVBFU19BREpVU1RfTkFNRVMuaW5jbHVkZXMoYWRqdXN0KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgYWRqdXN0IHR5cGUgXCIgKyBhZGp1c3QgKyBcIiBpcyBub3Qgc3VwcG9ydGVkIHlldCwgcGxlYXNlIGFzc2lnbiBpdCB3aXRoICdmb3JjZScsICdncmlkJywgb3IgJ2NpcmN1bGFyJy5cIik7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGxheW91dENmZyA9IHtcbiAgICAgICAgY2VudGVyOiBfdGhpcy5sYXlvdXRDZmcuY2VudGVyLFxuICAgICAgICBub2RlU2l6ZTogZnVuY3Rpb24gbm9kZVNpemUoZCkge1xuICAgICAgICAgIHJldHVybiBNYXRoLm1heChkLmhlaWdodCwgZC53aWR0aCk7XG4gICAgICAgIH0sXG4gICAgICAgIHByZXZlbnRPdmVybGFwOiB0cnVlLFxuICAgICAgICBvbkxheW91dEVuZDogZnVuY3Rpb24gb25MYXlvdXRFbmQoKSB7fVxuICAgICAgfTsgLy8g6K6h566X5Ye65aSn5Y2V5YWDXG5cbiAgICAgIHZhciBfYSA9IF90aGlzLmdldExheW91dEJCb3gobm9kZXMpLFxuICAgICAgICAgIGdyb3VwTm9kZXMgPSBfYS5ncm91cE5vZGVzLFxuICAgICAgICAgIGxheW91dE5vZGVzID0gX2EubGF5b3V0Tm9kZXM7XG5cbiAgICAgIHZhciBwcmVOb2RlcyA9IGNsb25lKGxheW91dE5vZGVzKTsgLy8g5qC55o2u5aSn5Y2V5YWD5Z2Q5qCH55qE5Y+Y5YyW77yM6LCD5pW06L+Z6YeM6Z2i5q+P5Liq5bCP5Y2V5YWDbm9kZXNcblxuICAgICAgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXlvdXROb2RlcyA9PT0gbnVsbCB8fCBsYXlvdXROb2RlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0Tm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlLCBpbmRleCkge1xuICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xuXG4gICAgICAgICAgdmFyIGR4ID0gZWxlLnggLSAoKF9hID0gcHJlTm9kZXNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EueCk7XG4gICAgICAgICAgdmFyIGR5ID0gZWxlLnkgLSAoKF9iID0gcHJlTm9kZXNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IueSk7XG4gICAgICAgICAgKF9jID0gZ3JvdXBOb2Rlc1tpbmRleF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICBuLnggKz0gZHg7XG4gICAgICAgICAgICBuLnkgKz0gZHk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgbGF5b3V0TWV0aG9kID0gbmV3IExheW91dFthZGp1c3RdKGxheW91dENmZyk7XG4gICAgICBsYXlvdXRNZXRob2QubGF5b3V0KHtcbiAgICAgICAgbm9kZXM6IGxheW91dE5vZGVzXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5oYXNHUFVWZXJzaW9uID0gZnVuY3Rpb24gKGxheW91dE5hbWUpIHtcbiAgICByZXR1cm4gR1BVX0xBWU9VVF9OQU1FUy5pbmNsdWRlcyhsYXlvdXROYW1lKTtcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB2YXIgd29ya2VyID0gdGhpcy53b3JrZXI7XG5cbiAgICBpZiAod29ya2VyKSB7XG4gICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICB0aGlzLndvcmtlciA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIHRoaXMuZ3JhcGguc2V0KCdsYXlvdXQnLCB1bmRlZmluZWQpO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGF5b3V0VHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gIH07XG5cbiAgcmV0dXJuIExheW91dENvbnRyb2xsZXI7XG59KEFic3RyYWN0TGF5b3V0KTtcblxuZXhwb3J0IGRlZmF1bHQgTGF5b3V0Q29udHJvbGxlcjtcblxuZnVuY3Rpb24gdXBkYXRlTGF5b3V0UG9zaXRpb24oZGF0YSwgbGF5b3V0RGF0YSkge1xuICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzO1xuICB2YXIgbGF5b3V0Tm9kZXMgPSBsYXlvdXREYXRhLm5vZGVzO1xuICB2YXIgbm9kZUxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVMZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgbm9kZS54ID0gbGF5b3V0Tm9kZXNbaV0ueDtcbiAgICBub2RlLnkgPSBsYXlvdXROb2Rlc1tpXS55O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbHRlck9iamVjdChjb2xsZWN0aW9uLCBjYWxsYmFjaykge1xuICB2YXIgcmVzdWx0ID0ge307XG5cbiAgaWYgKGNvbGxlY3Rpb24gJiYgX3R5cGVvZihjb2xsZWN0aW9uKSA9PT0gJ29iamVjdCcpIHtcbiAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9uKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uLmhhc093blByb3BlcnR5KGtleSkgJiYgY2FsbGJhY2soY29sbGVjdGlvbltrZXldKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IGNvbGxlY3Rpb25ba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUdQVVdvcmtlckxheW91dFBvc2l0aW9uKGRhdGEsIGxheW91dERhdGEpIHtcbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcbiAgdmFyIHZlcnRleEVkZ2VEYXRhID0gbGF5b3V0RGF0YS52ZXJ0ZXhFZGdlRGF0YTtcbiAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciB4ID0gdmVydGV4RWRnZURhdGFbNCAqIGldO1xuICAgIHZhciB5ID0gdmVydGV4RWRnZURhdGFbNCAqIGkgKyAxXTtcbiAgICBub2RlLnggPSB4O1xuICAgIG5vZGUueSA9IHk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkTGF5b3V0T3JkZXIoZGF0YSwgb3JkZXIpIHtcbiAgdmFyIF9hO1xuXG4gIGlmICghKChfYSA9IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGF0YS5ub2RlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzO1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgbm9kZS5sYXlvdXRPcmRlciA9IG9yZGVyO1xuICB9KTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/layout.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/graph.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/graph.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js\");\n/* harmony import */ var _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./controller */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__[\"ext\"].transform;\nvar SVG = 'svg';\n\nvar Graph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Graph, _super);\n\n function Graph(cfg) {\n var _this = _super.call(this, cfg) || this;\n\n var defaultNode = _this.get('defaultNode');\n\n if (!defaultNode) {\n _this.set('defaultNode', {\n type: 'circle'\n });\n }\n\n if (!defaultNode.type) {\n defaultNode.type = 'circle';\n\n _this.set('defaultNode', defaultNode);\n }\n\n _this.destroyed = false;\n return _this;\n }\n\n Graph.prototype.initLayoutController = function () {\n var layoutController = new _controller__WEBPACK_IMPORTED_MODULE_7__[\"LayoutController\"](this);\n this.set({\n layoutController: layoutController\n });\n };\n\n Graph.prototype.initEventController = function () {\n var eventController = new _controller__WEBPACK_IMPORTED_MODULE_7__[\"EventController\"](this);\n this.set({\n eventController: eventController\n });\n };\n\n Graph.prototype.initCanvas = function () {\n var container = this.get('container');\n\n if (typeof container === 'string') {\n container = document.getElementById(container);\n this.set('container', container);\n }\n\n if (!container) {\n throw new Error('invalid container');\n }\n\n var clientWidth = container.clientWidth,\n clientHeight = container.clientHeight;\n var width = this.get('width') || clientWidth;\n var height = this.get('height') || clientHeight;\n\n if (!this.get('width') && !this.get('height')) {\n this.set('width', clientWidth);\n this.set('height', clientHeight);\n }\n\n var renderer = this.get('renderer');\n var canvas;\n\n if (renderer === SVG) {\n canvas = new _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__[\"Canvas\"]({\n container: container,\n width: width,\n height: height\n });\n } else {\n var canvasCfg = {\n container: container,\n width: width,\n height: height\n };\n var pixelRatio = this.get('pixelRatio');\n\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n }\n\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasCfg);\n }\n\n this.set('canvas', canvas);\n };\n\n Graph.prototype.initPlugins = function () {\n var self = this;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(self.get('plugins'), function (plugin) {\n if (!plugin.destroyed && plugin.initPlugin) {\n plugin.initPlugin(self);\n }\n });\n };\n /**\n * 增加图片下载水印功能\n */\n\n\n Graph.prototype.downloadImageWatermark = function (watermarker, context, width, height) {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(this, void 0, void 0, function () {\n var watermarkStr, watermarkbase64, img;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n watermarkStr = watermarker.style.backgroundImage;\n watermarkbase64 = watermarkStr.slice(5, watermarkStr.length - 2);\n img = new Image();\n img.src = watermarkbase64;\n return [4\n /*yield*/\n , new Promise(function (resolve) {\n img.onload = function () {\n var pat = context.createPattern(img, \"repeat\");\n context.rect(0, 0, width, height);\n context.fillStyle = pat;\n context.fill();\n resolve('');\n };\n })];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n /**\n * 用于生成图片 (异步callback)\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n * @return {string} 图片 dataURL\n */\n\n\n Graph.prototype.asyncToDataUrl = function (type, backgroundColor, callback, widths, heights, vCanvasEl) {\n var _this = this;\n\n var watermarker = document.querySelector('.g6-graph-watermarker');\n var canvas = this.get('canvas');\n var renderer = canvas.getRenderer();\n var canvasDom = vCanvasEl || canvas.get('el');\n var dataURL = '';\n if (!type) type = 'image/png';\n setTimeout(function () {\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__awaiter\"])(_this, void 0, void 0, function () {\n var cloneNode, svgDocType, svgDoc, svgData, imageData, context, width, height, compositeOperation, pixelRatio;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__generator\"])(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(renderer === 'svg')) return [3\n /*break*/\n , 1];\n cloneNode = canvasDom.cloneNode(true);\n svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\" + encodeURIComponent(svgData);\n return [3\n /*break*/\n , 4];\n\n case 1:\n imageData = void 0;\n context = canvasDom.getContext('2d');\n width = widths || this.get('width');\n height = heights || this.get('height');\n compositeOperation = void 0;\n if (!watermarker) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , this.downloadImageWatermark(watermarker, context, width, height)];\n\n case 2:\n _a.sent();\n\n _a.label = 3;\n\n case 3:\n if (backgroundColor) {\n pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\n try {\n imageData = context.getImageData(0, 0, width * pixelRatio, height * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n\n dataURL = canvasDom.toDataURL(type);\n\n if (backgroundColor) {\n context.clearRect(0, 0, width, height);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n\n _a.label = 4;\n\n case 4:\n if (callback) callback(dataURL);\n return [2\n /*return*/\n ];\n }\n });\n });\n }, 16);\n };\n /**\n * 返回可见区域的图的 dataUrl,用于生成图片\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n * @return {string} 图片 dataURL\n */\n\n\n Graph.prototype.toDataURL = function (type, backgroundColor) {\n var canvas = this.get('canvas');\n var renderer = canvas.getRenderer();\n var canvasDom = canvas.get('el');\n if (!type) type = 'image/png';\n var dataURL = '';\n\n if (renderer === 'svg') {\n var cloneNode = canvasDom.cloneNode(true);\n var svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n var svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\" + encodeURIComponent(svgData);\n } else {\n var imageData = void 0;\n var context = canvasDom.getContext('2d');\n var width = this.get('width');\n var height = this.get('height');\n var compositeOperation = void 0;\n\n if (backgroundColor) {\n var pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\n try {\n imageData = context.getImageData(0, 0, width * pixelRatio, height * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, width, height);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n\n dataURL = canvasDom.toDataURL(type);\n\n if (backgroundColor) {\n context.clearRect(0, 0, width, height);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n }\n\n return dataURL;\n };\n /**\n * 返回整个图(包括超出可见区域的部分)的 dataUrl,用于生成图片\n * @param {Function} callback 异步生成 dataUrl 完成后的回调函数,在这里处理生成的 dataUrl 字符串\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {Object} imageConfig 图片配置项,包括背景色和上下左右的 padding\n */\n\n\n Graph.prototype.toFullDataURL = function (callback, type, imageConfig) {\n var bbox = this.get('group').getCanvasBBox();\n var height = bbox.height;\n var width = bbox.width;\n var renderer = this.get('renderer');\n var vContainerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_8__[\"createDom\"])('');\n var backgroundColor = imageConfig ? imageConfig.backgroundColor : undefined;\n var padding = imageConfig ? imageConfig.padding : undefined;\n if (!padding) padding = [0, 0, 0, 0];else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var vHeight = height + padding[0] + padding[2];\n var vWidth = width + padding[1] + padding[3];\n var canvasOptions = {\n container: vContainerDOM,\n height: vHeight,\n width: vWidth,\n quickHit: true\n };\n var vCanvas = renderer === 'svg' ? new _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__[\"Canvas\"](canvasOptions) : new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasOptions);\n var group = this.get('group');\n var vGroup = group.clone();\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"clone\"])(vGroup.getMatrix());\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var centerX = (bbox.maxX + bbox.minX) / 2;\n var centerY = (bbox.maxY + bbox.minY) / 2;\n matrix = transform(matrix, [['t', -centerX, -centerY], ['t', width / 2 + padding[3], height / 2 + padding[0]]]);\n vGroup.resetMatrix();\n vGroup.setMatrix(matrix);\n vCanvas.add(vGroup);\n var vCanvasEl = vCanvas.get('el');\n var dataURL = '';\n if (!type) type = 'image/png';\n setTimeout(function () {\n if (renderer === 'svg') {\n var cloneNode = vCanvasEl.cloneNode(true);\n var svgDocType = document.implementation.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');\n var svgDoc = document.implementation.createDocument('http://www.w3.org/2000/svg', 'svg', svgDocType);\n svgDoc.replaceChild(cloneNode, svgDoc.documentElement);\n var svgData = new XMLSerializer().serializeToString(svgDoc);\n dataURL = \"data:image/svg+xml;charset=utf8,\" + encodeURIComponent(svgData);\n } else {\n var imageData = void 0;\n var context = vCanvasEl.getContext('2d');\n var compositeOperation = void 0;\n\n if (backgroundColor) {\n var pixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\n try {\n imageData = context.getImageData(0, 0, vWidth * pixelRatio, vHeight * pixelRatio);\n compositeOperation = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-over';\n context.fillStyle = backgroundColor;\n context.fillRect(0, 0, vWidth, vHeight);\n } catch (error) {\n console.error('Download image failed. Out of memory at ImageData creation');\n }\n }\n\n dataURL = vCanvasEl.toDataURL(type);\n\n if (backgroundColor) {\n context.clearRect(0, 0, vWidth, vHeight);\n context.putImageData(imageData, 0, 0);\n context.globalCompositeOperation = compositeOperation;\n }\n }\n\n if (callback) callback(dataURL);\n }, 16);\n };\n /**\n * 导出包含全图的图片\n * @param {String} name 图片的名称\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {Object} imageConfig 图片配置项,包括背景色和上下左右的 padding\n */\n\n\n Graph.prototype.downloadFullImage = function (name, type, imageConfig) {\n var _this = this;\n\n var bbox = this.get('group').getCanvasBBox();\n var height = bbox.height;\n var width = bbox.width;\n var renderer = this.get('renderer');\n var vContainerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_8__[\"createDom\"])('');\n var watermarker = document.querySelector('.g6-graph-watermarker');\n var backgroundColor = imageConfig ? imageConfig.backgroundColor : undefined;\n var padding = imageConfig ? imageConfig.padding : undefined;\n if (!padding) padding = [0, 0, 0, 0];else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var vHeight = height + padding[0] + padding[2];\n var vWidth = width + padding[1] + padding[3];\n\n if (watermarker) {\n var _a = this.get('graphWaterMarker').cfg || {},\n wmWidth = _a.width,\n wmHeight = _a.height;\n\n vHeight = Math.ceil(vHeight / wmHeight) * wmHeight;\n vWidth = Math.ceil(vWidth / wmWidth) * wmWidth;\n }\n\n var canvasOptions = {\n container: vContainerDOM,\n height: vHeight,\n width: vWidth\n };\n var vCanvas = renderer === 'svg' ? new _antv_g_svg__WEBPACK_IMPORTED_MODULE_2__[\"Canvas\"](canvasOptions) : new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasOptions);\n var group = this.get('group');\n var vGroup = group.clone();\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"clone\"])(vGroup.getMatrix());\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var centerX = (bbox.maxX + bbox.minX) / 2;\n var centerY = (bbox.maxY + bbox.minY) / 2;\n matrix = transform(matrix, [['t', -centerX, -centerY], ['t', width / 2 + padding[3], height / 2 + padding[0]]]);\n vGroup.resetMatrix();\n vGroup.setMatrix(matrix);\n vCanvas.add(vGroup);\n var vCanvasEl = vCanvas.get('el');\n if (!type) type = 'image/png';\n this.asyncToDataUrl(type, backgroundColor, function (dataURL) {\n var link = document.createElement('a');\n var fileName = (name || 'graph') + (renderer === 'svg' ? '.svg' : \".\" + type.split('/')[1]);\n\n _this.dataURLToImage(dataURL, renderer, link, fileName);\n\n var e = document.createEvent('MouseEvents');\n e.initEvent('click', false, false);\n link.dispatchEvent(e);\n }, vWidth, vHeight, vCanvasEl);\n };\n /**\n * 画布导出图片,图片仅包含画布可见区域部分内容\n * @param {String} name 图片的名称\n * @param {String} type 图片类型,可选值:\"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/bmp\"\n * @param {string} backgroundColor 图片背景色\n */\n\n\n Graph.prototype.downloadImage = function (name, type, backgroundColor) {\n var _this = this;\n\n var self = this;\n\n if (self.isAnimating()) {\n self.stopAnimate();\n }\n\n var canvas = self.get('canvas');\n var renderer = canvas.getRenderer();\n if (!type) type = 'image/png';\n var fileName = (name || 'graph') + (renderer === 'svg' ? '.svg' : type.split('/')[1]);\n var link = document.createElement('a');\n self.asyncToDataUrl(type, backgroundColor, function (dataURL) {\n _this.dataURLToImage(dataURL, renderer, link, fileName);\n\n var e = document.createEvent('MouseEvents');\n e.initEvent('click', false, false);\n link.dispatchEvent(e);\n });\n };\n\n Graph.prototype.dataURLToImage = function (dataURL, renderer, link, fileName) {\n if (!dataURL || dataURL === 'data:') {\n console.error('Download image failed. The graph is too large or there is invalid attribute values in graph items');\n return;\n }\n\n if (typeof window !== 'undefined') {\n if (window.Blob && window.URL && renderer !== 'svg') {\n var arr = dataURL.split(',');\n var mime = '';\n\n if (arr && arr.length > 0) {\n var match = arr[0].match(/:(.*?);/); // eslint-disable-next-line prefer-destructuring\n\n if (match && match.length >= 2) mime = match[1];\n }\n\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n var blobObj_1 = new Blob([u8arr], {\n type: mime\n });\n\n if (window.navigator.msSaveBlob) {\n window.navigator.msSaveBlob(blobObj_1, fileName);\n } else {\n link.addEventListener('click', function () {\n link.download = fileName;\n link.href = window.URL.createObjectURL(blobObj_1);\n });\n }\n } else {\n link.addEventListener('click', function () {\n link.download = fileName;\n link.href = dataURL;\n });\n }\n }\n };\n /**\n * 添加插件\n * @param {object} plugin 插件实例\n */\n\n\n Graph.prototype.addPlugin = function (plugin) {\n var self = this;\n\n if (plugin.destroyed) {\n return;\n }\n\n self.get('plugins').push(plugin);\n plugin.initPlugin(self);\n };\n /**\n * 添加插件\n * @param {object} plugin 插件实例\n */\n\n\n Graph.prototype.removePlugin = function (plugin) {\n var plugins = this.get('plugins');\n var index = plugins.indexOf(plugin);\n\n if (index >= 0) {\n plugin.destroyPlugin();\n plugins.splice(index, 1);\n }\n };\n /**\n * 设置图片水印\n * @param {string} imgURL 图片水印的url地址\n * @param {WaterMarkerConfig} config 文本水印的配置项\n */\n\n\n Graph.prototype.setImageWaterMarker = function (imgURL, config) {\n if (imgURL === void 0) {\n imgURL = _global__WEBPACK_IMPORTED_MODULE_6__[\"default\"].waterMarkerImage;\n }\n\n var container = this.get('container');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n if (!container.style.position) {\n container.style.position = 'relative';\n }\n\n var canvas = this.get('graphWaterMarker');\n var waterMarkerConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_6__[\"default\"].imageWaterMarkerConfig, config);\n var width = waterMarkerConfig.width,\n height = waterMarkerConfig.height,\n compatible = waterMarkerConfig.compatible,\n image = waterMarkerConfig.image;\n\n if (!canvas) {\n var canvasCfg = {\n container: container,\n width: width,\n height: height,\n capture: false\n };\n var pixelRatio = this.get('pixelRatio');\n\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n }\n\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasCfg);\n this.set('graphWaterMarker', canvas);\n }\n\n canvas.get('el').style.display = 'none';\n var ctx = canvas.get('context');\n var rotate = image.rotate,\n x = image.x,\n y = image.y; // 旋转20度\n\n ctx.rotate(-rotate * Math.PI / 180);\n var img = new Image();\n img.crossOrigin = 'anonymous';\n img.src = imgURL;\n\n img.onload = function () {\n ctx.drawImage(img, x, y, image.width, image.height); // 恢复旋转角度\n\n ctx.rotate(rotate * Math.PI / 180); // 默认按照现代浏览器处理\n\n if (!compatible) {\n var box = document.querySelector('.g6-graph-watermarker');\n\n if (!box) {\n box = document.createElement('div');\n box.className = 'g6-graph-watermarker';\n }\n\n box.className = 'g6-graph-watermarker';\n\n if (!canvas.destroyed) {\n box.style.cssText = \"background-image: url(\" + canvas.get('el').toDataURL('image/png') + \");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:-1;\";\n container.appendChild(box);\n }\n } else {\n // 当需要兼容不支持 pointer-events属性的浏览器时,将 compatible 设置为 true\n container.style.cssText = \"background-image: url(\" + canvas.get('el').toDataURL('image/png') + \");background-repeat:repeat;\";\n }\n };\n };\n /**\n * 设置文本水印\n * @param {string[]} texts 水印的文本内容\n * @param {WaterMarkerConfig} config 文本水印的配置项\n */\n\n\n Graph.prototype.setTextWaterMarker = function (texts, config) {\n var container = this.get('container');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n if (!container.style.position) {\n container.style.position = 'relative';\n }\n\n var canvas = this.get('graphWaterMarker');\n var waterMarkerConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_6__[\"default\"].textWaterMarkerConfig, config);\n var width = waterMarkerConfig.width,\n height = waterMarkerConfig.height,\n compatible = waterMarkerConfig.compatible,\n text = waterMarkerConfig.text;\n\n if (!canvas) {\n var canvasCfg = {\n container: container,\n width: width,\n height: height,\n capture: false\n };\n var pixelRatio = this.get('pixelRatio');\n\n if (pixelRatio) {\n canvasCfg.pixelRatio = pixelRatio;\n }\n\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"](canvasCfg);\n this.set('graphWaterMarker', canvas);\n }\n\n canvas.get('el').style.display = 'none';\n var ctx = canvas.get('context');\n var rotate = text.rotate,\n fill = text.fill,\n fontFamily = text.fontFamily,\n fontSize = text.fontSize,\n baseline = text.baseline,\n x = text.x,\n y = text.y,\n lineHeight = text.lineHeight; // 旋转20度\n\n ctx.rotate(-rotate * Math.PI / 180); // 设置文字样式\n\n ctx.font = fontSize + \"px \" + fontFamily; // 设置文字颜色\n\n ctx.fillStyle = fill;\n ctx.textBaseline = baseline;\n\n for (var i = texts.length - 1; i >= 0; i--) {\n // 将文字绘制到画布\n ctx.fillText(texts[i], x, y + i * lineHeight);\n } // 恢复旋转角度\n\n\n ctx.rotate(rotate * Math.PI / 180); // 默认按照现代浏览器处理\n\n if (!compatible) {\n var box = document.querySelector('.g6-graph-watermarker');\n\n if (!box) {\n box = document.createElement('div');\n box.className = 'g6-graph-watermarker';\n }\n\n box.style.cssText = \"background-image: url(\" + canvas.get('el').toDataURL('image/png') + \");background-repeat:repeat;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;z-index:99;\";\n container.appendChild(box);\n } else {\n // 当需要兼容不支持 pointer-events属性的浏览器时,将 compatible 设置为 true\n container.style.cssText = \"background-image: url(\" + canvas.get('el').toDataURL('image/png') + \");background-repeat:repeat;\";\n }\n };\n /**\n * 销毁画布\n */\n\n\n Graph.prototype.destroy = function () {\n var _a, _b, _c, _d;\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(this.get('plugins'), function (plugin) {\n plugin.destroyPlugin();\n }); // destroy tooltip doms, removed when upgrade G6 4.0\n\n var tooltipDOMs = this.get('tooltips');\n\n if (tooltipDOMs) {\n for (var i = 0; i < tooltipDOMs.length; i++) {\n var container = tooltipDOMs[i];\n if (!container) continue;\n var parent_1 = container.parentElement;\n if (!parent_1) continue;\n parent_1.removeChild(container);\n }\n }\n\n (_a = this.get('eventController')) === null || _a === void 0 ? void 0 : _a.destroy();\n (_b = this.get('layoutController')) === null || _b === void 0 ? void 0 : _b.destroy(); // this.get('eventController').destroy();\n // this.get('itemController').destroy();\n // this.get('modeController').destroy();\n // this.get('viewController').destroy();\n // this.get('stateController').destroy();\n // this.get('canvas').destroy();\n\n (_c = this.get('graphWaterMarker')) === null || _c === void 0 ? void 0 : _c.destroy();\n (_d = document.querySelector('.g6-graph-watermarker')) === null || _d === void 0 ? void 0 : _d.remove();\n\n _super.prototype.destroy.call(this);\n };\n\n return Graph;\n}(_antv_g6_core__WEBPACK_IMPORTED_MODULE_5__[\"AbstractGraph\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Graph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dyYXBoL2dyYXBoLmpzPzgzNzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEQ7QUFDUDtBQUNBO0FBQ1g7QUFDOEI7QUFDeEI7QUFDZjtBQUNrQztBQUN0QjtBQUMzQyxnQkFBZ0IscURBQUc7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLDREQUFnQjtBQUMvQztBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsOEJBQThCLDJEQUFlO0FBQzdDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixrREFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHFEQUFPO0FBQzFCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsV0FBVyx1REFBUztBQUNwQjtBQUNBLGFBQWEseURBQVc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1REFBUztBQUN0QjtBQUNBLGVBQWUseURBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QixhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdFQUFTO0FBQ2pDO0FBQ0E7QUFDQSx5Q0FBeUMsU0FBUywyREFBUTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGtEQUFVLHNCQUFzQixxREFBTztBQUNsRjtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdFQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxTQUFTLDJEQUFRO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxrREFBVSxzQkFBc0IscURBQU87QUFDbEY7QUFDQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQyxHQUFHOztBQUU5QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLGtCQUFrQjtBQUMvQjs7O0FBR0E7QUFDQTtBQUNBLGVBQWUsK0NBQU07QUFDckI7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QiwwREFBTyxHQUFHLEVBQUUsK0NBQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHFEQUFPO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMERBQTBEOztBQUUxRCx5Q0FBeUM7O0FBRXpDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzR0FBc0cseUJBQXlCLGtCQUFrQixNQUFNLFNBQVMsT0FBTyxRQUFRLG9CQUFvQixXQUFXO0FBQzlNO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSwwR0FBMEcseUJBQXlCO0FBQ25JO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsYUFBYSxrQkFBa0I7QUFDL0I7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QiwwREFBTyxHQUFHLEVBQUUsK0NBQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHFEQUFPO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDOztBQUVyQyx3Q0FBd0M7O0FBRXhDLDZDQUE2Qzs7QUFFN0M7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQztBQUNBO0FBQ0EsS0FBSzs7O0FBR0wsdUNBQXVDOztBQUV2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtHQUFrRyx5QkFBeUIsa0JBQWtCLE1BQU0sU0FBUyxPQUFPLFFBQVEsb0JBQW9CLFdBQVc7QUFDMU07QUFDQSxLQUFLO0FBQ0w7QUFDQSx3R0FBd0cseUJBQXlCO0FBQ2pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0EscUJBQXFCLHdCQUF3QjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBGQUEwRjtBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBYTs7QUFFQSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvZ3JhcGgvZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2F3YWl0ZXIsIF9fZXh0ZW5kcywgX19nZW5lcmF0b3IgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IENhbnZhcyBhcyBHQ2FudmFzIH0gZnJvbSAnQGFudHYvZy1jYW52YXMnO1xuaW1wb3J0IHsgQ2FudmFzIGFzIEdTVkdDYW52YXMgfSBmcm9tICdAYW50di9nLXN2Zyc7XG5pbXBvcnQgeyBleHQgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBjbG9uZSwgZGVlcE1peCwgZWFjaCwgaXNTdHJpbmcsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBBYnN0cmFjdEdyYXBoIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgeyBMYXlvdXRDb250cm9sbGVyLCBFdmVudENvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xuaW1wb3J0IHsgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xudmFyIHRyYW5zZm9ybSA9IGV4dC50cmFuc2Zvcm07XG52YXIgU1ZHID0gJ3N2Zyc7XG5cbnZhciBHcmFwaCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhHcmFwaCwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBHcmFwaChjZmcpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjZmcpIHx8IHRoaXM7XG5cbiAgICB2YXIgZGVmYXVsdE5vZGUgPSBfdGhpcy5nZXQoJ2RlZmF1bHROb2RlJyk7XG5cbiAgICBpZiAoIWRlZmF1bHROb2RlKSB7XG4gICAgICBfdGhpcy5zZXQoJ2RlZmF1bHROb2RlJywge1xuICAgICAgICB0eXBlOiAnY2lyY2xlJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFkZWZhdWx0Tm9kZS50eXBlKSB7XG4gICAgICBkZWZhdWx0Tm9kZS50eXBlID0gJ2NpcmNsZSc7XG5cbiAgICAgIF90aGlzLnNldCgnZGVmYXVsdE5vZGUnLCBkZWZhdWx0Tm9kZSk7XG4gICAgfVxuXG4gICAgX3RoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgR3JhcGgucHJvdG90eXBlLmluaXRMYXlvdXRDb250cm9sbGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gbmV3IExheW91dENvbnRyb2xsZXIodGhpcyk7XG4gICAgdGhpcy5zZXQoe1xuICAgICAgbGF5b3V0Q29udHJvbGxlcjogbGF5b3V0Q29udHJvbGxlclxuICAgIH0pO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5pbml0RXZlbnRDb250cm9sbGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBldmVudENvbnRyb2xsZXIgPSBuZXcgRXZlbnRDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIGV2ZW50Q29udHJvbGxlcjogZXZlbnRDb250cm9sbGVyXG4gICAgfSk7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmluaXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgIGlmICh0eXBlb2YgY29udGFpbmVyID09PSAnc3RyaW5nJykge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgIHRoaXMuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgIH1cblxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgdmFyIGNsaWVudFdpZHRoID0gY29udGFpbmVyLmNsaWVudFdpZHRoLFxuICAgICAgICBjbGllbnRIZWlnaHQgPSBjb250YWluZXIuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB3aWR0aCA9IHRoaXMuZ2V0KCd3aWR0aCcpIHx8IGNsaWVudFdpZHRoO1xuICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldCgnaGVpZ2h0JykgfHwgY2xpZW50SGVpZ2h0O1xuXG4gICAgaWYgKCF0aGlzLmdldCgnd2lkdGgnKSAmJiAhdGhpcy5nZXQoJ2hlaWdodCcpKSB7XG4gICAgICB0aGlzLnNldCgnd2lkdGgnLCBjbGllbnRXaWR0aCk7XG4gICAgICB0aGlzLnNldCgnaGVpZ2h0JywgY2xpZW50SGVpZ2h0KTtcbiAgICB9XG5cbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLmdldCgncmVuZGVyZXInKTtcbiAgICB2YXIgY2FudmFzO1xuXG4gICAgaWYgKHJlbmRlcmVyID09PSBTVkcpIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBHU1ZHQ2FudmFzKHtcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY2FudmFzQ2ZnID0ge1xuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICAgIHZhciBwaXhlbFJhdGlvID0gdGhpcy5nZXQoJ3BpeGVsUmF0aW8nKTtcblxuICAgICAgaWYgKHBpeGVsUmF0aW8pIHtcbiAgICAgICAgY2FudmFzQ2ZnLnBpeGVsUmF0aW8gPSBwaXhlbFJhdGlvO1xuICAgICAgfVxuXG4gICAgICBjYW52YXMgPSBuZXcgR0NhbnZhcyhjYW52YXNDZmcpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KCdjYW52YXMnLCBjYW52YXMpO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5pbml0UGx1Z2lucyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgZWFjaChzZWxmLmdldCgncGx1Z2lucycpLCBmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgICBpZiAoIXBsdWdpbi5kZXN0cm95ZWQgJiYgcGx1Z2luLmluaXRQbHVnaW4pIHtcbiAgICAgICAgcGx1Z2luLmluaXRQbHVnaW4oc2VsZik7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAqIOWinuWKoOWbvueJh+S4i+i9veawtOWNsOWKn+iDvVxuICAqL1xuXG5cbiAgR3JhcGgucHJvdG90eXBlLmRvd25sb2FkSW1hZ2VXYXRlcm1hcmsgPSBmdW5jdGlvbiAod2F0ZXJtYXJrZXIsIGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgd2F0ZXJtYXJrU3RyLCB3YXRlcm1hcmtiYXNlNjQsIGltZztcbiAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHdhdGVybWFya1N0ciA9IHdhdGVybWFya2VyLnN0eWxlLmJhY2tncm91bmRJbWFnZTtcbiAgICAgICAgICAgIHdhdGVybWFya2Jhc2U2NCA9IHdhdGVybWFya1N0ci5zbGljZSg1LCB3YXRlcm1hcmtTdHIubGVuZ3RoIC0gMik7XG4gICAgICAgICAgICBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgIGltZy5zcmMgPSB3YXRlcm1hcmtiYXNlNjQ7XG4gICAgICAgICAgICByZXR1cm4gWzRcbiAgICAgICAgICAgIC8qeWllbGQqL1xuICAgICAgICAgICAgLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBwYXQgPSBjb250ZXh0LmNyZWF0ZVBhdHRlcm4oaW1nLCBcInJlcGVhdFwiKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBwYXQ7XG4gICAgICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgnJyk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KV07XG5cbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBfYS5zZW50KCk7XG5cbiAgICAgICAgICAgIHJldHVybiBbMlxuICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDnlKjkuo7nlJ/miJDlm77niYcgKOW8guatpWNhbGxiYWNrKVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDlm77niYfnsbvlnovvvIzlj6/pgInlgLzvvJpcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGVnXCIgfCBcImltYWdlL3dlYnBcIiB8IFwiaW1hZ2UvYm1wXCJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhY2tncm91bmRDb2xvciDlm77niYfog4zmma/oibJcbiAgICogQHJldHVybiB7c3RyaW5nfSDlm77niYcgZGF0YVVSTFxuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS5hc3luY1RvRGF0YVVybCA9IGZ1bmN0aW9uICh0eXBlLCBiYWNrZ3JvdW5kQ29sb3IsIGNhbGxiYWNrLCB3aWR0aHMsIGhlaWdodHMsIHZDYW52YXNFbCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgd2F0ZXJtYXJrZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZzYtZ3JhcGgtd2F0ZXJtYXJrZXInKTtcbiAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2NhbnZhcycpO1xuICAgIHZhciByZW5kZXJlciA9IGNhbnZhcy5nZXRSZW5kZXJlcigpO1xuICAgIHZhciBjYW52YXNEb20gPSB2Q2FudmFzRWwgfHwgY2FudmFzLmdldCgnZWwnKTtcbiAgICB2YXIgZGF0YVVSTCA9ICcnO1xuICAgIGlmICghdHlwZSkgdHlwZSA9ICdpbWFnZS9wbmcnO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsb25lTm9kZSwgc3ZnRG9jVHlwZSwgc3ZnRG9jLCBzdmdEYXRhLCBpbWFnZURhdGEsIGNvbnRleHQsIHdpZHRoLCBoZWlnaHQsIGNvbXBvc2l0ZU9wZXJhdGlvbiwgcGl4ZWxSYXRpbztcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgaWYgKCEocmVuZGVyZXIgPT09ICdzdmcnKSkgcmV0dXJuIFszXG4gICAgICAgICAgICAgIC8qYnJlYWsqL1xuICAgICAgICAgICAgICAsIDFdO1xuICAgICAgICAgICAgICBjbG9uZU5vZGUgPSBjYW52YXNEb20uY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICBzdmdEb2NUeXBlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCdzdmcnLCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJyk7XG4gICAgICAgICAgICAgIHN2Z0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnLCBzdmdEb2NUeXBlKTtcbiAgICAgICAgICAgICAgc3ZnRG9jLnJlcGxhY2VDaGlsZChjbG9uZU5vZGUsIHN2Z0RvYy5kb2N1bWVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICBzdmdEYXRhID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmdEb2MpO1xuICAgICAgICAgICAgICBkYXRhVVJMID0gXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHN2Z0RhdGEpO1xuICAgICAgICAgICAgICByZXR1cm4gWzNcbiAgICAgICAgICAgICAgLypicmVhayovXG4gICAgICAgICAgICAgICwgNF07XG5cbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgaW1hZ2VEYXRhID0gdm9pZCAwO1xuICAgICAgICAgICAgICBjb250ZXh0ID0gY2FudmFzRG9tLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICAgIHdpZHRoID0gd2lkdGhzIHx8IHRoaXMuZ2V0KCd3aWR0aCcpO1xuICAgICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHRzIHx8IHRoaXMuZ2V0KCdoZWlnaHQnKTtcbiAgICAgICAgICAgICAgY29tcG9zaXRlT3BlcmF0aW9uID0gdm9pZCAwO1xuICAgICAgICAgICAgICBpZiAoIXdhdGVybWFya2VyKSByZXR1cm4gWzNcbiAgICAgICAgICAgICAgLypicmVhayovXG4gICAgICAgICAgICAgICwgM107XG4gICAgICAgICAgICAgIHJldHVybiBbNFxuICAgICAgICAgICAgICAvKnlpZWxkKi9cbiAgICAgICAgICAgICAgLCB0aGlzLmRvd25sb2FkSW1hZ2VXYXRlcm1hcmsod2F0ZXJtYXJrZXIsIGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpXTtcblxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBfYS5zZW50KCk7XG5cbiAgICAgICAgICAgICAgX2EubGFiZWwgPSAzO1xuXG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBwaXhlbFJhdGlvID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDE7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgaW1hZ2VEYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGggKiBwaXhlbFJhdGlvLCBoZWlnaHQgKiBwaXhlbFJhdGlvKTtcbiAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3Zlcic7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Rvd25sb2FkIGltYWdlIGZhaWxlZC4gT3V0IG9mIG1lbW9yeSBhdCBJbWFnZURhdGEgY3JlYXRpb24nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBkYXRhVVJMID0gY2FudmFzRG9tLnRvRGF0YVVSTCh0eXBlKTtcblxuICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIF9hLmxhYmVsID0gNDtcblxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGRhdGFVUkwpO1xuICAgICAgICAgICAgICByZXR1cm4gWzJcbiAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCAxNik7XG4gIH07XG4gIC8qKlxuICAgKiDov5Tlm57lj6/op4HljLrln5/nmoTlm77nmoQgZGF0YVVybO+8jOeUqOS6jueUn+aIkOWbvueJh1xuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDlm77niYfnsbvlnovvvIzlj6/pgInlgLzvvJpcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGVnXCIgfCBcImltYWdlL3dlYnBcIiB8IFwiaW1hZ2UvYm1wXCJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhY2tncm91bmRDb2xvciDlm77niYfog4zmma/oibJcbiAgICogQHJldHVybiB7c3RyaW5nfSDlm77niYcgZGF0YVVSTFxuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS50b0RhdGFVUkwgPSBmdW5jdGlvbiAodHlwZSwgYmFja2dyb3VuZENvbG9yKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcmVuZGVyZXIgPSBjYW52YXMuZ2V0UmVuZGVyZXIoKTtcbiAgICB2YXIgY2FudmFzRG9tID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICBpZiAoIXR5cGUpIHR5cGUgPSAnaW1hZ2UvcG5nJztcbiAgICB2YXIgZGF0YVVSTCA9ICcnO1xuXG4gICAgaWYgKHJlbmRlcmVyID09PSAnc3ZnJykge1xuICAgICAgdmFyIGNsb25lTm9kZSA9IGNhbnZhc0RvbS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICB2YXIgc3ZnRG9jVHlwZSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50VHlwZSgnc3ZnJywgJy0vL1czQy8vRFREIFNWRyAxLjEvL0VOJywgJ2h0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCcpO1xuICAgICAgdmFyIHN2Z0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnLCBzdmdEb2NUeXBlKTtcbiAgICAgIHN2Z0RvYy5yZXBsYWNlQ2hpbGQoY2xvbmVOb2RlLCBzdmdEb2MuZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgIHZhciBzdmdEYXRhID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmdEb2MpO1xuICAgICAgZGF0YVVSTCA9IFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCxcIiArIGVuY29kZVVSSUNvbXBvbmVudChzdmdEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGltYWdlRGF0YSA9IHZvaWQgMDtcbiAgICAgIHZhciBjb250ZXh0ID0gY2FudmFzRG9tLmdldENvbnRleHQoJzJkJyk7XG4gICAgICB2YXIgd2lkdGggPSB0aGlzLmdldCgnd2lkdGgnKTtcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmdldCgnaGVpZ2h0Jyk7XG4gICAgICB2YXIgY29tcG9zaXRlT3BlcmF0aW9uID0gdm9pZCAwO1xuXG4gICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgIHZhciBwaXhlbFJhdGlvID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDE7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpbWFnZURhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCAqIHBpeGVsUmF0aW8sIGhlaWdodCAqIHBpeGVsUmF0aW8pO1xuICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW92ZXInO1xuICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRG93bmxvYWQgaW1hZ2UgZmFpbGVkLiBPdXQgb2YgbWVtb3J5IGF0IEltYWdlRGF0YSBjcmVhdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGRhdGFVUkwgPSBjYW52YXNEb20udG9EYXRhVVJMKHR5cGUpO1xuXG4gICAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICBjb250ZXh0LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDApO1xuICAgICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVVSTDtcbiAgfTtcbiAgLyoqXG4gICAqIOi/lOWbnuaVtOS4quWbvu+8iOWMheaLrOi2heWHuuWPr+ingeWMuuWfn+eahOmDqOWIhu+8ieeahCBkYXRhVXJs77yM55So5LqO55Sf5oiQ5Zu+54mHXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIOW8guatpeeUn+aIkCBkYXRhVXJsIOWujOaIkOWQjueahOWbnuiwg+WHveaVsO+8jOWcqOi/memHjOWkhOeQhueUn+aIkOeahCBkYXRhVXJsIOWtl+espuS4slxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSDlm77niYfnsbvlnovvvIzlj6/pgInlgLzvvJpcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGVnXCIgfCBcImltYWdlL3dlYnBcIiB8IFwiaW1hZ2UvYm1wXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IGltYWdlQ29uZmlnIOWbvueJh+mFjee9rumhue+8jOWMheaLrOiDjOaZr+iJsuWSjOS4iuS4i+W3puWPs+eahCBwYWRkaW5nXG4gICAqL1xuXG5cbiAgR3JhcGgucHJvdG90eXBlLnRvRnVsbERhdGFVUkwgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIHR5cGUsIGltYWdlQ29uZmlnKSB7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnZ3JvdXAnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgdmFyIGhlaWdodCA9IGJib3guaGVpZ2h0O1xuICAgIHZhciB3aWR0aCA9IGJib3gud2lkdGg7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5nZXQoJ3JlbmRlcmVyJyk7XG4gICAgdmFyIHZDb250YWluZXJET00gPSBjcmVhdGVEb20oJzxpZD1cInZpcnR1YWwtaW1hZ2VcIj48L2Rpdj4nKTtcbiAgICB2YXIgYmFja2dyb3VuZENvbG9yID0gaW1hZ2VDb25maWcgPyBpbWFnZUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHBhZGRpbmcgPSBpbWFnZUNvbmZpZyA/IGltYWdlQ29uZmlnLnBhZGRpbmcgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCFwYWRkaW5nKSBwYWRkaW5nID0gWzAsIDAsIDAsIDBdO2Vsc2UgaWYgKGlzTnVtYmVyKHBhZGRpbmcpKSBwYWRkaW5nID0gW3BhZGRpbmcsIHBhZGRpbmcsIHBhZGRpbmcsIHBhZGRpbmddO1xuICAgIHZhciB2SGVpZ2h0ID0gaGVpZ2h0ICsgcGFkZGluZ1swXSArIHBhZGRpbmdbMl07XG4gICAgdmFyIHZXaWR0aCA9IHdpZHRoICsgcGFkZGluZ1sxXSArIHBhZGRpbmdbM107XG4gICAgdmFyIGNhbnZhc09wdGlvbnMgPSB7XG4gICAgICBjb250YWluZXI6IHZDb250YWluZXJET00sXG4gICAgICBoZWlnaHQ6IHZIZWlnaHQsXG4gICAgICB3aWR0aDogdldpZHRoLFxuICAgICAgcXVpY2tIaXQ6IHRydWVcbiAgICB9O1xuICAgIHZhciB2Q2FudmFzID0gcmVuZGVyZXIgPT09ICdzdmcnID8gbmV3IEdTVkdDYW52YXMoY2FudmFzT3B0aW9ucykgOiBuZXcgR0NhbnZhcyhjYW52YXNPcHRpb25zKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgdkdyb3VwID0gZ3JvdXAuY2xvbmUoKTtcbiAgICB2YXIgbWF0cml4ID0gY2xvbmUodkdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICBpZiAoIW1hdHJpeCkgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIHZhciBjZW50ZXJYID0gKGJib3gubWF4WCArIGJib3gubWluWCkgLyAyO1xuICAgIHZhciBjZW50ZXJZID0gKGJib3gubWF4WSArIGJib3gubWluWSkgLyAyO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCAtY2VudGVyWCwgLWNlbnRlclldLCBbJ3QnLCB3aWR0aCAvIDIgKyBwYWRkaW5nWzNdLCBoZWlnaHQgLyAyICsgcGFkZGluZ1swXV1dKTtcbiAgICB2R3JvdXAucmVzZXRNYXRyaXgoKTtcbiAgICB2R3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7XG4gICAgdkNhbnZhcy5hZGQodkdyb3VwKTtcbiAgICB2YXIgdkNhbnZhc0VsID0gdkNhbnZhcy5nZXQoJ2VsJyk7XG4gICAgdmFyIGRhdGFVUkwgPSAnJztcbiAgICBpZiAoIXR5cGUpIHR5cGUgPSAnaW1hZ2UvcG5nJztcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChyZW5kZXJlciA9PT0gJ3N2ZycpIHtcbiAgICAgICAgdmFyIGNsb25lTm9kZSA9IHZDYW52YXNFbC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIHZhciBzdmdEb2NUeXBlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCdzdmcnLCAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nLCAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJyk7XG4gICAgICAgIHZhciBzdmdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnc3ZnJywgc3ZnRG9jVHlwZSk7XG4gICAgICAgIHN2Z0RvYy5yZXBsYWNlQ2hpbGQoY2xvbmVOb2RlLCBzdmdEb2MuZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgICAgdmFyIHN2Z0RhdGEgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHN2Z0RvYyk7XG4gICAgICAgIGRhdGFVUkwgPSBcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsXCIgKyBlbmNvZGVVUklDb21wb25lbnQoc3ZnRGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaW1hZ2VEYXRhID0gdm9pZCAwO1xuICAgICAgICB2YXIgY29udGV4dCA9IHZDYW52YXNFbC5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICB2YXIgY29tcG9zaXRlT3BlcmF0aW9uID0gdm9pZCAwO1xuXG4gICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgICB2YXIgcGl4ZWxSYXRpbyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gOiAxO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHZXaWR0aCAqIHBpeGVsUmF0aW8sIHZIZWlnaHQgKiBwaXhlbFJhdGlvKTtcbiAgICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3Zlcic7XG4gICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgdldpZHRoLCB2SGVpZ2h0KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRG93bmxvYWQgaW1hZ2UgZmFpbGVkLiBPdXQgb2YgbWVtb3J5IGF0IEltYWdlRGF0YSBjcmVhdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFVUkwgPSB2Q2FudmFzRWwudG9EYXRhVVJMKHR5cGUpO1xuXG4gICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB2V2lkdGgsIHZIZWlnaHQpO1xuICAgICAgICAgIGNvbnRleHQucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7XG4gICAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhkYXRhVVJMKTtcbiAgICB9LCAxNik7XG4gIH07XG4gIC8qKlxuICAgKiDlr7zlh7rljIXlkKvlhajlm77nmoTlm77niYdcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUg5Zu+54mH55qE5ZCN56ewXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIOWbvueJh+exu+Wei++8jOWPr+mAieWAvO+8mlwiaW1hZ2UvcG5nXCIgfCBcImltYWdlL2pwZWdcIiB8IFwiaW1hZ2Uvd2VicFwiIHwgXCJpbWFnZS9ibXBcIlxuICAgKiBAcGFyYW0ge09iamVjdH0gaW1hZ2VDb25maWcg5Zu+54mH6YWN572u6aG577yM5YyF5ous6IOM5pmv6Imy5ZKM5LiK5LiL5bem5Y+z55qEIHBhZGRpbmdcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuZG93bmxvYWRGdWxsSW1hZ2UgPSBmdW5jdGlvbiAobmFtZSwgdHlwZSwgaW1hZ2VDb25maWcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnZ3JvdXAnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgdmFyIGhlaWdodCA9IGJib3guaGVpZ2h0O1xuICAgIHZhciB3aWR0aCA9IGJib3gud2lkdGg7XG4gICAgdmFyIHJlbmRlcmVyID0gdGhpcy5nZXQoJ3JlbmRlcmVyJyk7XG4gICAgdmFyIHZDb250YWluZXJET00gPSBjcmVhdGVEb20oJzxpZD1cInZpcnR1YWwtaW1hZ2VcIj48L2Rpdj4nKTtcbiAgICB2YXIgd2F0ZXJtYXJrZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZzYtZ3JhcGgtd2F0ZXJtYXJrZXInKTtcbiAgICB2YXIgYmFja2dyb3VuZENvbG9yID0gaW1hZ2VDb25maWcgPyBpbWFnZUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHBhZGRpbmcgPSBpbWFnZUNvbmZpZyA/IGltYWdlQ29uZmlnLnBhZGRpbmcgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCFwYWRkaW5nKSBwYWRkaW5nID0gWzAsIDAsIDAsIDBdO2Vsc2UgaWYgKGlzTnVtYmVyKHBhZGRpbmcpKSBwYWRkaW5nID0gW3BhZGRpbmcsIHBhZGRpbmcsIHBhZGRpbmcsIHBhZGRpbmddO1xuICAgIHZhciB2SGVpZ2h0ID0gaGVpZ2h0ICsgcGFkZGluZ1swXSArIHBhZGRpbmdbMl07XG4gICAgdmFyIHZXaWR0aCA9IHdpZHRoICsgcGFkZGluZ1sxXSArIHBhZGRpbmdbM107XG5cbiAgICBpZiAod2F0ZXJtYXJrZXIpIHtcbiAgICAgIHZhciBfYSA9IHRoaXMuZ2V0KCdncmFwaFdhdGVyTWFya2VyJykuY2ZnIHx8IHt9LFxuICAgICAgICAgIHdtV2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgICB3bUhlaWdodCA9IF9hLmhlaWdodDtcblxuICAgICAgdkhlaWdodCA9IE1hdGguY2VpbCh2SGVpZ2h0IC8gd21IZWlnaHQpICogd21IZWlnaHQ7XG4gICAgICB2V2lkdGggPSBNYXRoLmNlaWwodldpZHRoIC8gd21XaWR0aCkgKiB3bVdpZHRoO1xuICAgIH1cblxuICAgIHZhciBjYW52YXNPcHRpb25zID0ge1xuICAgICAgY29udGFpbmVyOiB2Q29udGFpbmVyRE9NLFxuICAgICAgaGVpZ2h0OiB2SGVpZ2h0LFxuICAgICAgd2lkdGg6IHZXaWR0aFxuICAgIH07XG4gICAgdmFyIHZDYW52YXMgPSByZW5kZXJlciA9PT0gJ3N2ZycgPyBuZXcgR1NWR0NhbnZhcyhjYW52YXNPcHRpb25zKSA6IG5ldyBHQ2FudmFzKGNhbnZhc09wdGlvbnMpO1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIHZhciB2R3JvdXAgPSBncm91cC5jbG9uZSgpO1xuICAgIHZhciBtYXRyaXggPSBjbG9uZSh2R3JvdXAuZ2V0TWF0cml4KCkpO1xuICAgIGlmICghbWF0cml4KSBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgdmFyIGNlbnRlclggPSAoYmJveC5tYXhYICsgYmJveC5taW5YKSAvIDI7XG4gICAgdmFyIGNlbnRlclkgPSAoYmJveC5tYXhZICsgYmJveC5taW5ZKSAvIDI7XG4gICAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sndCcsIC1jZW50ZXJYLCAtY2VudGVyWV0sIFsndCcsIHdpZHRoIC8gMiArIHBhZGRpbmdbM10sIGhlaWdodCAvIDIgKyBwYWRkaW5nWzBdXV0pO1xuICAgIHZHcm91cC5yZXNldE1hdHJpeCgpO1xuICAgIHZHcm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgICB2Q2FudmFzLmFkZCh2R3JvdXApO1xuICAgIHZhciB2Q2FudmFzRWwgPSB2Q2FudmFzLmdldCgnZWwnKTtcbiAgICBpZiAoIXR5cGUpIHR5cGUgPSAnaW1hZ2UvcG5nJztcbiAgICB0aGlzLmFzeW5jVG9EYXRhVXJsKHR5cGUsIGJhY2tncm91bmRDb2xvciwgZnVuY3Rpb24gKGRhdGFVUkwpIHtcbiAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgdmFyIGZpbGVOYW1lID0gKG5hbWUgfHwgJ2dyYXBoJykgKyAocmVuZGVyZXIgPT09ICdzdmcnID8gJy5zdmcnIDogXCIuXCIgKyB0eXBlLnNwbGl0KCcvJylbMV0pO1xuXG4gICAgICBfdGhpcy5kYXRhVVJMVG9JbWFnZShkYXRhVVJMLCByZW5kZXJlciwgbGluaywgZmlsZU5hbWUpO1xuXG4gICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50cycpO1xuICAgICAgZS5pbml0RXZlbnQoJ2NsaWNrJywgZmFsc2UsIGZhbHNlKTtcbiAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChlKTtcbiAgICB9LCB2V2lkdGgsIHZIZWlnaHQsIHZDYW52YXNFbCk7XG4gIH07XG4gIC8qKlxuICAgKiDnlLvluIPlr7zlh7rlm77niYfvvIzlm77niYfku4XljIXlkKvnlLvluIPlj6/op4HljLrln5/pg6jliIblhoXlrrlcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUg5Zu+54mH55qE5ZCN56ewXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIOWbvueJh+exu+Wei++8jOWPr+mAieWAvO+8mlwiaW1hZ2UvcG5nXCIgfCBcImltYWdlL2pwZWdcIiB8IFwiaW1hZ2Uvd2VicFwiIHwgXCJpbWFnZS9ibXBcIlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFja2dyb3VuZENvbG9yIOWbvueJh+iDjOaZr+iJslxuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS5kb3dubG9hZEltYWdlID0gZnVuY3Rpb24gKG5hbWUsIHR5cGUsIGJhY2tncm91bmRDb2xvcikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoc2VsZi5pc0FuaW1hdGluZygpKSB7XG4gICAgICBzZWxmLnN0b3BBbmltYXRlKCk7XG4gICAgfVxuXG4gICAgdmFyIGNhbnZhcyA9IHNlbGYuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgcmVuZGVyZXIgPSBjYW52YXMuZ2V0UmVuZGVyZXIoKTtcbiAgICBpZiAoIXR5cGUpIHR5cGUgPSAnaW1hZ2UvcG5nJztcbiAgICB2YXIgZmlsZU5hbWUgPSAobmFtZSB8fCAnZ3JhcGgnKSArIChyZW5kZXJlciA9PT0gJ3N2ZycgPyAnLnN2ZycgOiB0eXBlLnNwbGl0KCcvJylbMV0pO1xuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIHNlbGYuYXN5bmNUb0RhdGFVcmwodHlwZSwgYmFja2dyb3VuZENvbG9yLCBmdW5jdGlvbiAoZGF0YVVSTCkge1xuICAgICAgX3RoaXMuZGF0YVVSTFRvSW1hZ2UoZGF0YVVSTCwgcmVuZGVyZXIsIGxpbmssIGZpbGVOYW1lKTtcblxuICAgICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcbiAgICAgIGUuaW5pdEV2ZW50KCdjbGljaycsIGZhbHNlLCBmYWxzZSk7XG4gICAgICBsaW5rLmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmRhdGFVUkxUb0ltYWdlID0gZnVuY3Rpb24gKGRhdGFVUkwsIHJlbmRlcmVyLCBsaW5rLCBmaWxlTmFtZSkge1xuICAgIGlmICghZGF0YVVSTCB8fCBkYXRhVVJMID09PSAnZGF0YTonKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdEb3dubG9hZCBpbWFnZSBmYWlsZWQuIFRoZSBncmFwaCBpcyB0b28gbGFyZ2Ugb3IgdGhlcmUgaXMgaW52YWxpZCBhdHRyaWJ1dGUgdmFsdWVzIGluIGdyYXBoIGl0ZW1zJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAod2luZG93LkJsb2IgJiYgd2luZG93LlVSTCAmJiByZW5kZXJlciAhPT0gJ3N2ZycpIHtcbiAgICAgICAgdmFyIGFyciA9IGRhdGFVUkwuc3BsaXQoJywnKTtcbiAgICAgICAgdmFyIG1pbWUgPSAnJztcblxuICAgICAgICBpZiAoYXJyICYmIGFyci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7Lyk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuXG4gICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+PSAyKSBtaW1lID0gbWF0Y2hbMV07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYnN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgICAgICAgdmFyIG4gPSBic3RyLmxlbmd0aDtcbiAgICAgICAgdmFyIHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG5cbiAgICAgICAgd2hpbGUgKG4tLSkge1xuICAgICAgICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGJsb2JPYmpfMSA9IG5ldyBCbG9iKFt1OGFycl0sIHtcbiAgICAgICAgICB0eXBlOiBtaW1lXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcbiAgICAgICAgICB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYk9ial8xLCBmaWxlTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2JPYmpfMSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xuICAgICAgICAgIGxpbmsuaHJlZiA9IGRhdGFVUkw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOa3u+WKoOaPkuS7tlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGx1Z2luIOaPkuS7tuWunuS+i1xuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGRQbHVnaW4gPSBmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKHBsdWdpbi5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLmdldCgncGx1Z2lucycpLnB1c2gocGx1Z2luKTtcbiAgICBwbHVnaW4uaW5pdFBsdWdpbihzZWxmKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa3u+WKoOaPkuS7tlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGx1Z2luIOaPkuS7tuWunuS+i1xuICAgKi9cblxuXG4gIEdyYXBoLnByb3RvdHlwZS5yZW1vdmVQbHVnaW4gPSBmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgdmFyIHBsdWdpbnMgPSB0aGlzLmdldCgncGx1Z2lucycpO1xuICAgIHZhciBpbmRleCA9IHBsdWdpbnMuaW5kZXhPZihwbHVnaW4pO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHBsdWdpbi5kZXN0cm95UGx1Z2luKCk7XG4gICAgICBwbHVnaW5zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6K6+572u5Zu+54mH5rC05Y2wXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbWdVUkwg5Zu+54mH5rC05Y2w55qEdXJs5Zyw5Z2AXG4gICAqIEBwYXJhbSB7V2F0ZXJNYXJrZXJDb25maWd9IGNvbmZpZyDmlofmnKzmsLTljbDnmoTphY3nva7poblcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuc2V0SW1hZ2VXYXRlck1hcmtlciA9IGZ1bmN0aW9uIChpbWdVUkwsIGNvbmZpZykge1xuICAgIGlmIChpbWdVUkwgPT09IHZvaWQgMCkge1xuICAgICAgaW1nVVJMID0gR2xvYmFsLndhdGVyTWFya2VySW1hZ2U7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgIH1cblxuICAgIGlmICghY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uKSB7XG4gICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIH1cblxuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnZ3JhcGhXYXRlck1hcmtlcicpO1xuICAgIHZhciB3YXRlck1hcmtlckNvbmZpZyA9IGRlZXBNaXgoe30sIEdsb2JhbC5pbWFnZVdhdGVyTWFya2VyQ29uZmlnLCBjb25maWcpO1xuICAgIHZhciB3aWR0aCA9IHdhdGVyTWFya2VyQ29uZmlnLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSB3YXRlck1hcmtlckNvbmZpZy5oZWlnaHQsXG4gICAgICAgIGNvbXBhdGlibGUgPSB3YXRlck1hcmtlckNvbmZpZy5jb21wYXRpYmxlLFxuICAgICAgICBpbWFnZSA9IHdhdGVyTWFya2VyQ29uZmlnLmltYWdlO1xuXG4gICAgaWYgKCFjYW52YXMpIHtcbiAgICAgIHZhciBjYW52YXNDZmcgPSB7XG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBjYXB0dXJlOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHZhciBwaXhlbFJhdGlvID0gdGhpcy5nZXQoJ3BpeGVsUmF0aW8nKTtcblxuICAgICAgaWYgKHBpeGVsUmF0aW8pIHtcbiAgICAgICAgY2FudmFzQ2ZnLnBpeGVsUmF0aW8gPSBwaXhlbFJhdGlvO1xuICAgICAgfVxuXG4gICAgICBjYW52YXMgPSBuZXcgR0NhbnZhcyhjYW52YXNDZmcpO1xuICAgICAgdGhpcy5zZXQoJ2dyYXBoV2F0ZXJNYXJrZXInLCBjYW52YXMpO1xuICAgIH1cblxuICAgIGNhbnZhcy5nZXQoJ2VsJykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldCgnY29udGV4dCcpO1xuICAgIHZhciByb3RhdGUgPSBpbWFnZS5yb3RhdGUsXG4gICAgICAgIHggPSBpbWFnZS54LFxuICAgICAgICB5ID0gaW1hZ2UueTsgLy8g5peL6L2sMjDluqZcblxuICAgIGN0eC5yb3RhdGUoLXJvdGF0ZSAqIE1hdGguUEkgLyAxODApO1xuICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcbiAgICBpbWcuc3JjID0gaW1nVVJMO1xuXG4gICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCB4LCB5LCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0KTsgLy8g5oGi5aSN5peL6L2s6KeS5bqmXG5cbiAgICAgIGN0eC5yb3RhdGUocm90YXRlICogTWF0aC5QSSAvIDE4MCk7IC8vIOm7mOiupOaMieeFp+eOsOS7o+a1j+iniOWZqOWkhOeQhlxuXG4gICAgICBpZiAoIWNvbXBhdGlibGUpIHtcbiAgICAgICAgdmFyIGJveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nNi1ncmFwaC13YXRlcm1hcmtlcicpO1xuXG4gICAgICAgIGlmICghYm94KSB7XG4gICAgICAgICAgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgYm94LmNsYXNzTmFtZSA9ICdnNi1ncmFwaC13YXRlcm1hcmtlcic7XG4gICAgICAgIH1cblxuICAgICAgICBib3guY2xhc3NOYW1lID0gJ2c2LWdyYXBoLXdhdGVybWFya2VyJztcblxuICAgICAgICBpZiAoIWNhbnZhcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICBib3guc3R5bGUuY3NzVGV4dCA9IFwiYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiICsgY2FudmFzLmdldCgnZWwnKS50b0RhdGFVUkwoJ2ltYWdlL3BuZycpICsgXCIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6LTE7XCI7XG4gICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJveCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOW9k+mcgOimgeWFvOWuueS4jeaUr+aMgSBwb2ludGVyLWV2ZW50c+WxnuaAp+eahOa1j+iniOWZqOaXtu+8jOWwhiBjb21wYXRpYmxlIOiuvue9ruS4uiB0cnVlXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gXCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIgKyBjYW52YXMuZ2V0KCdlbCcpLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykgKyBcIik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O1wiO1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7mlofmnKzmsLTljbBcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gdGV4dHMg5rC05Y2w55qE5paH5pys5YaF5a65XG4gICAqIEBwYXJhbSB7V2F0ZXJNYXJrZXJDb25maWd9IGNvbmZpZyDmlofmnKzmsLTljbDnmoTphY3nva7poblcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuc2V0VGV4dFdhdGVyTWFya2VyID0gZnVuY3Rpb24gKHRleHRzLCBjb25maWcpIHtcbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgaWYgKCFjb250YWluZXIuc3R5bGUucG9zaXRpb24pIHtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgfVxuXG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdncmFwaFdhdGVyTWFya2VyJyk7XG4gICAgdmFyIHdhdGVyTWFya2VyQ29uZmlnID0gZGVlcE1peCh7fSwgR2xvYmFsLnRleHRXYXRlck1hcmtlckNvbmZpZywgY29uZmlnKTtcbiAgICB2YXIgd2lkdGggPSB3YXRlck1hcmtlckNvbmZpZy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gd2F0ZXJNYXJrZXJDb25maWcuaGVpZ2h0LFxuICAgICAgICBjb21wYXRpYmxlID0gd2F0ZXJNYXJrZXJDb25maWcuY29tcGF0aWJsZSxcbiAgICAgICAgdGV4dCA9IHdhdGVyTWFya2VyQ29uZmlnLnRleHQ7XG5cbiAgICBpZiAoIWNhbnZhcykge1xuICAgICAgdmFyIGNhbnZhc0NmZyA9IHtcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgICB9O1xuICAgICAgdmFyIHBpeGVsUmF0aW8gPSB0aGlzLmdldCgncGl4ZWxSYXRpbycpO1xuXG4gICAgICBpZiAocGl4ZWxSYXRpbykge1xuICAgICAgICBjYW52YXNDZmcucGl4ZWxSYXRpbyA9IHBpeGVsUmF0aW87XG4gICAgICB9XG5cbiAgICAgIGNhbnZhcyA9IG5ldyBHQ2FudmFzKGNhbnZhc0NmZyk7XG4gICAgICB0aGlzLnNldCgnZ3JhcGhXYXRlck1hcmtlcicsIGNhbnZhcyk7XG4gICAgfVxuXG4gICAgY2FudmFzLmdldCgnZWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIHZhciBjdHggPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgdmFyIHJvdGF0ZSA9IHRleHQucm90YXRlLFxuICAgICAgICBmaWxsID0gdGV4dC5maWxsLFxuICAgICAgICBmb250RmFtaWx5ID0gdGV4dC5mb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZSA9IHRleHQuZm9udFNpemUsXG4gICAgICAgIGJhc2VsaW5lID0gdGV4dC5iYXNlbGluZSxcbiAgICAgICAgeCA9IHRleHQueCxcbiAgICAgICAgeSA9IHRleHQueSxcbiAgICAgICAgbGluZUhlaWdodCA9IHRleHQubGluZUhlaWdodDsgLy8g5peL6L2sMjDluqZcblxuICAgIGN0eC5yb3RhdGUoLXJvdGF0ZSAqIE1hdGguUEkgLyAxODApOyAvLyDorr7nva7mloflrZfmoLflvI9cblxuICAgIGN0eC5mb250ID0gZm9udFNpemUgKyBcInB4IFwiICsgZm9udEZhbWlseTsgLy8g6K6+572u5paH5a2X6aKc6ImyXG5cbiAgICBjdHguZmlsbFN0eWxlID0gZmlsbDtcbiAgICBjdHgudGV4dEJhc2VsaW5lID0gYmFzZWxpbmU7XG5cbiAgICBmb3IgKHZhciBpID0gdGV4dHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIC8vIOWwhuaWh+Wtl+e7mOWItuWIsOeUu+W4g1xuICAgICAgY3R4LmZpbGxUZXh0KHRleHRzW2ldLCB4LCB5ICsgaSAqIGxpbmVIZWlnaHQpO1xuICAgIH0gLy8g5oGi5aSN5peL6L2s6KeS5bqmXG5cblxuICAgIGN0eC5yb3RhdGUocm90YXRlICogTWF0aC5QSSAvIDE4MCk7IC8vIOm7mOiupOaMieeFp+eOsOS7o+a1j+iniOWZqOWkhOeQhlxuXG4gICAgaWYgKCFjb21wYXRpYmxlKSB7XG4gICAgICB2YXIgYm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmc2LWdyYXBoLXdhdGVybWFya2VyJyk7XG5cbiAgICAgIGlmICghYm94KSB7XG4gICAgICAgIGJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBib3guY2xhc3NOYW1lID0gJ2c2LWdyYXBoLXdhdGVybWFya2VyJztcbiAgICAgIH1cblxuICAgICAgYm94LnN0eWxlLmNzc1RleHQgPSBcImJhY2tncm91bmQtaW1hZ2U6IHVybChcIiArIGNhbnZhcy5nZXQoJ2VsJykudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSArIFwiKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Ojk5O1wiO1xuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJveCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOW9k+mcgOimgeWFvOWuueS4jeaUr+aMgSBwb2ludGVyLWV2ZW50c+WxnuaAp+eahOa1j+iniOWZqOaXtu+8jOWwhiBjb21wYXRpYmxlIOiuvue9ruS4uiB0cnVlXG4gICAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwiYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiICsgY2FudmFzLmdldCgnZWwnKS50b0RhdGFVUkwoJ2ltYWdlL3BuZycpICsgXCIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtcIjtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDplIDmr4HnlLvluINcbiAgICovXG5cblxuICBHcmFwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG5cbiAgICBlYWNoKHRoaXMuZ2V0KCdwbHVnaW5zJyksIGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIHBsdWdpbi5kZXN0cm95UGx1Z2luKCk7XG4gICAgfSk7IC8vIGRlc3Ryb3kgdG9vbHRpcCBkb21zLCByZW1vdmVkIHdoZW4gdXBncmFkZSBHNiA0LjBcblxuICAgIHZhciB0b29sdGlwRE9NcyA9IHRoaXMuZ2V0KCd0b29sdGlwcycpO1xuXG4gICAgaWYgKHRvb2x0aXBET01zKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBET01zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSB0b29sdGlwRE9Nc1tpXTtcbiAgICAgICAgaWYgKCFjb250YWluZXIpIGNvbnRpbnVlO1xuICAgICAgICB2YXIgcGFyZW50XzEgPSBjb250YWluZXIucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKCFwYXJlbnRfMSkgY29udGludWU7XG4gICAgICAgIHBhcmVudF8xLnJlbW92ZUNoaWxkKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2V2ZW50Q29udHJvbGxlcicpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVzdHJveSgpO1xuICAgIChfYiA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJykpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kZXN0cm95KCk7IC8vIHRoaXMuZ2V0KCdldmVudENvbnRyb2xsZXInKS5kZXN0cm95KCk7XG4gICAgLy8gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJykuZGVzdHJveSgpO1xuICAgIC8vIHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICAvLyB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKS5kZXN0cm95KCk7XG4gICAgLy8gdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICAvLyB0aGlzLmdldCgnY2FudmFzJykuZGVzdHJveSgpO1xuXG4gICAgKF9jID0gdGhpcy5nZXQoJ2dyYXBoV2F0ZXJNYXJrZXInKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmRlc3Ryb3koKTtcbiAgICAoX2QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZzYtZ3JhcGgtd2F0ZXJtYXJrZXInKSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnJlbW92ZSgpO1xuXG4gICAgX3N1cGVyLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIEdyYXBoO1xufShBYnN0cmFjdEdyYXBoKTtcblxuZXhwb3J0IGRlZmF1bHQgR3JhcGg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/graph.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/tree-graph.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/tree-graph.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/hierarchy */ \"./node_modules/_@antv_hierarchy@0.6.8@@antv/hierarchy/build/hierarchy.js\");\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_antv_hierarchy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n/* harmony import */ var _graph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./graph */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/graph.js\");\n\n\n\n\n\nvar radialLayout = _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].radialLayout,\n traverseTree = _util__WEBPACK_IMPORTED_MODULE_3__[\"default\"].traverseTree;\n\nvar TreeGraph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TreeGraph, _super);\n\n function TreeGraph(cfg) {\n var _this = _super.call(this, cfg) || this;\n\n _this.layoutAnimating = false; // 用于缓存动画结束后需要删除的节点\n\n _this.set('removeList', []);\n\n _this.set('layoutMethod', _this.getLayout());\n\n return _this;\n }\n /**\n * 通过 Layout 配置获取布局配置\n */\n\n\n TreeGraph.prototype.getLayout = function () {\n var layout = this.get('layout');\n\n if (!layout) {\n return null;\n }\n\n if (typeof layout === 'function') {\n return layout;\n }\n\n if (!layout.type) {\n layout.type = 'dendrogram';\n }\n\n if (!layout.direction) {\n layout.direction = 'TB';\n }\n\n if (layout.radial) {\n return function (data) {\n var layoutData = _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1___default.a[layout.type](data, layout);\n radialLayout(layoutData);\n return layoutData;\n };\n }\n\n return function (data) {\n return _antv_hierarchy__WEBPACK_IMPORTED_MODULE_1___default.a[layout.type](data, layout);\n };\n };\n /**\n * 返回指定节点在树图数据中的索引\n * @param children 树图数据\n * @param child 树图中某一个 Item 的数据\n */\n\n\n TreeGraph.indexOfChild = function (children, id) {\n var index = -1; // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(children, function (former, i) {\n if (id === former.id) {\n index = i;\n return false;\n }\n });\n return index;\n };\n\n TreeGraph.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this); // 树图默认打开动画\n\n\n cfg.animate = true;\n return cfg;\n };\n /**\n * 向🌲树中添加数据\n * @param treeData 树图数据\n * @param parent 父节点实例\n * @param animate 是否开启动画\n */\n\n\n TreeGraph.prototype.innerAddChild = function (treeData, parent, animate) {\n var self = this;\n var model = treeData.data;\n\n if (model) {\n // model 中应存储真实的数据,特别是真实的 children\n model.x = treeData.x;\n model.y = treeData.y;\n model.depth = treeData.depth;\n }\n\n var node = self.addItem('node', model, false);\n\n if (parent) {\n node.set('parent', parent);\n\n if (animate) {\n var origin_1 = parent.get('originAttrs');\n\n if (origin_1) {\n node.set('originAttrs', origin_1);\n } else {\n var parentModel = parent.getModel();\n node.set('originAttrs', {\n x: parentModel.x,\n y: parentModel.y\n });\n }\n }\n\n var childrenList = parent.get('children');\n\n if (!childrenList) {\n parent.set('children', [node]);\n } else {\n childrenList.push(node);\n }\n\n self.addItem('edge', {\n source: parent.get('id'),\n target: node.get('id'),\n id: parent.get('id') + \":\" + node.get('id')\n }, false);\n } // 渲染到视图上应参考布局的children, 避免多绘制了收起的节点\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(treeData.children || [], function (child) {\n self.innerAddChild(child, node, animate);\n });\n self.emit('afteraddchild', {\n item: node,\n parent: parent\n });\n return node;\n };\n /**\n * 将数据上的变更转换到视图上\n * @param data\n * @param parent\n * @param animate\n */\n\n\n TreeGraph.prototype.innerUpdateChild = function (data, parent, animate) {\n var self = this;\n var current = self.findById(data.id); // 若子树不存在,整体添加即可\n\n if (!current) {\n self.innerAddChild(data, parent, animate);\n return;\n } // 更新新节点下所有子节点\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(data.children || [], function (child) {\n self.innerUpdateChild(child, current, animate);\n }); // 用现在节点的children实例来删除移除的子节点\n\n var children = current.get('children');\n\n if (children) {\n var len = children.length;\n\n if (len > 0) {\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i].getModel();\n\n if (TreeGraph.indexOfChild(data.children || [], child.id) === -1) {\n self.innerRemoveChild(child.id, {\n x: data.x,\n y: data.y\n }, animate); // 更新父节点下缓存的子节点 item 实例列表\n\n children.splice(i, 1);\n }\n }\n }\n }\n\n var oriX;\n var oriY;\n\n if (current.get('originAttrs')) {\n oriX = current.get('originAttrs').x;\n oriY = current.get('originAttrs').y;\n }\n\n var model = current.getModel();\n\n if (animate) {\n // 如果有动画,先缓存节点运动再更新节点\n current.set('originAttrs', {\n x: model.x,\n y: model.y\n });\n }\n\n current.set('model', data.data);\n\n if (oriX !== data.x || oriY !== data.y) {\n current.updatePosition({\n x: data.x,\n y: data.y\n });\n }\n };\n /**\n * 删除子节点Item对象\n * @param id\n * @param to\n * @param animate\n */\n\n\n TreeGraph.prototype.innerRemoveChild = function (id, to, animate) {\n var self = this;\n var node = self.findById(id);\n\n if (!node) {\n return;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(node.get('children'), function (child) {\n self.innerRemoveChild(child.getModel().id, to, animate);\n });\n\n if (animate) {\n var model = node.getModel();\n node.set('to', to);\n node.set('originAttrs', {\n x: model.x,\n y: model.y\n });\n self.get('removeList').push(node);\n } else {\n self.removeItem(node, false);\n }\n };\n /**\n * 更新数据模型,差量更新并重新渲染\n * @param {object} data 数据模型\n */\n\n\n TreeGraph.prototype.changeData = function (data) {\n var self = this; // 更改数据源后,取消所有状态\n\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n\n if (data) {\n self.data(data);\n self.render();\n } else {\n self.layout(this.get('fitView'));\n }\n };\n /**\n * 已更名为 updateLayout,为保持兼容暂且保留。\n * 更改并应用树布局算法\n * @param {object} layout 布局算法\n */\n\n\n TreeGraph.prototype.changeLayout = function (layout) {\n // eslint-disable-next-line no-console\n console.warn('Please call updateLayout instead of changeLayout. changeLayout will be discarded soon');\n var self = this;\n self.updateLayout(layout);\n };\n /**\n * 更改并应用树布局算法\n * @param {object} layout 布局算法\n */\n\n\n TreeGraph.prototype.updateLayout = function (layout) {\n var self = this;\n\n if (!layout) {\n // eslint-disable-next-line no-console\n console.warn('layout cannot be null');\n return;\n }\n\n self.set('layout', layout);\n self.set('layoutMethod', self.getLayout());\n self.layout();\n };\n /**\n * 已更名为 layout,为保持兼容暂且保留。\n * 根据目前的 data 刷新布局,更新到画布上。用于变更数据之后刷新视图。\n * @param {boolean} fitView 更新布局时是否需要适应窗口\n */\n\n\n TreeGraph.prototype.refreshLayout = function (fitView) {\n // eslint-disable-next-line no-console\n console.warn('Please call layout instead of refreshLayout. refreshLayout will be discarded soon');\n var self = this;\n self.layout(fitView);\n };\n /**\n * 根据目前的 data 刷新布局,更新到画布上。用于变更数据之后刷新视图。\n * @param {boolean} fitView 更新布局时是否需要适应窗口\n */\n\n\n TreeGraph.prototype.layout = function (fitView) {\n var self = this;\n var data = self.get('data');\n var layoutMethod = self.get('layoutMethod');\n var layoutData = layoutMethod ? layoutMethod(data, self.get('layout')) : data;\n var animate = self.get('animate');\n self.emit('beforerefreshlayout', {\n data: data,\n layoutData: layoutData\n });\n self.emit('beforelayout');\n self.innerUpdateChild(layoutData, undefined, animate);\n\n if (fitView) {\n var viewController = self.get('viewController');\n viewController.fitView();\n }\n\n if (!animate) {\n // 如果没有动画,目前仅更新了节点的位置,刷新一下边的样式\n self.refresh();\n self.paint();\n } else {\n self.layoutAnimate(layoutData);\n }\n\n self.emit('afterrefreshlayout', {\n data: data,\n layoutData: layoutData\n });\n self.emit('afterlayout');\n };\n /**\n * 添加子树到对应 id 的节点\n * @param {TreeGraphData} data 子树数据模型\n * @param {string} parent 子树的父节点id\n */\n\n\n TreeGraph.prototype.addChild = function (data, parent) {\n var self = this;\n self.emit('beforeaddchild', {\n model: data,\n parent: parent\n }); // 将数据添加到源数据中,走changeData方法\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(parent)) {\n parent = parent.get('id');\n }\n\n var parentData = self.findDataById(parent);\n\n if (parentData) {\n if (!parentData.children) {\n parentData.children = [];\n }\n\n parentData.children.push(data);\n self.changeData();\n }\n };\n /**\n * 更新某个节点下的所有子节点\n * @param {TreeGraphData[]} data 子树数据模型集合\n * @param {string} parent 子树的父节点id\n */\n\n\n TreeGraph.prototype.updateChildren = function (data, parentId) {\n var self = this; // 如果没有父节点或找不到该节点,是全量的更新,直接重置data\n\n if (!parentId || !self.findById(parentId)) {\n console.warn(\"Update children failed! There is no node with id '\" + parentId + \"'\");\n return;\n }\n\n var parentModel = self.findDataById(parentId);\n parentModel.children = data;\n self.changeData();\n };\n /**\n * 更新源数据,差量更新子树\n * @param {TreeGraphData} data 子树数据模型\n * @param {string} parentId 子树的父节点id\n */\n\n\n TreeGraph.prototype.updateChild = function (data, parentId) {\n var self = this; // 如果没有父节点或找不到该节点,是全量的更新,直接重置data\n\n if (!parentId || !self.findById(parentId)) {\n self.changeData(data);\n return;\n }\n\n var parentModel = self.findDataById(parentId);\n var current = self.findById(data.id);\n\n if (!parentModel.children) {\n // 当 current 不存在时,children 为空数组\n parentModel.children = [];\n } // 如果不存在该节点,则添加\n\n\n if (!current) {\n parentModel.children.push(data);\n } else {\n var index = TreeGraph.indexOfChild(parentModel.children, data.id);\n parentModel.children[index] = data;\n }\n\n self.changeData();\n };\n /**\n * 删除子树\n * @param {string} id 子树根节点id\n */\n\n\n TreeGraph.prototype.removeChild = function (id) {\n var self = this;\n var node = self.findById(id);\n\n if (!node) {\n return;\n }\n\n var parent = node.get('parent');\n\n if (parent && !parent.destroyed) {\n var parentNode = self.findDataById(parent.get('id'));\n var siblings = parentNode && parentNode.children || [];\n var model = node.getModel();\n var index = TreeGraph.indexOfChild(siblings, model.id);\n siblings.splice(index, 1);\n }\n\n self.changeData();\n };\n /**\n * 根据id获取对应的源数据\n * @param {string} id 元素id\n * @param {TreeGraphData | undefined} parent 从哪个节点开始寻找,为空时从根节点开始查找\n * @return {TreeGraphData} 对应源数据\n */\n\n\n TreeGraph.prototype.findDataById = function (id, parent) {\n var self = this;\n\n if (!parent) {\n parent = self.get('data');\n }\n\n if (id === parent.id) {\n return parent;\n }\n\n var result = null; // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(parent.children || [], function (child) {\n if (child.id === id) {\n result = child;\n return false;\n }\n\n result = self.findDataById(id, child);\n\n if (result) {\n return false;\n }\n });\n return result;\n };\n /**\n * 布局动画接口,用于数据更新时做节点位置更新的动画\n * @param {TreeGraphData} data 更新的数据\n * @param {function} onFrame 定义节点位置更新时如何移动\n */\n\n\n TreeGraph.prototype.layoutAnimate = function (data, onFrame) {\n var self = this;\n var animateCfg = this.get('animateCfg');\n self.emit('beforeanimate', {\n data: data\n }); // 如果边中没有指定锚点,但是本身有锚点控制,在动画过程中保持锚点不变\n\n self.getEdges().forEach(function (edge) {\n var model = edge.get('model');\n\n if (!model.sourceAnchor) {\n model.sourceAnchor = edge.get('sourceAnchorIndex');\n }\n });\n this.get('canvas').animate(function (ratio) {\n traverseTree(data, function (child) {\n var node = self.findById(child.id); // 只有当存在node的时候才执行\n\n if (node) {\n var origin_2 = node.get('originAttrs');\n var model = node.get('model');\n\n if (!origin_2) {\n origin_2 = {\n x: model.x,\n y: model.y\n };\n node.set('originAttrs', origin_2);\n }\n\n if (onFrame) {\n var attrs = onFrame(node, ratio, origin_2, data);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = origin_2.x + (child.x - origin_2.x) * ratio;\n model.y = origin_2.y + (child.y - origin_2.y) * ratio;\n }\n }\n\n return true;\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(self.get('removeList'), function (node) {\n var model = node.getModel();\n var from = node.get('originAttrs');\n var to = node.get('to');\n model.x = from.x + (to.x - from.x) * ratio;\n model.y = from.y + (to.y - from.y) * ratio;\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.ease,\n callback: function callback() {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(self.getNodes(), function (node) {\n node.set('originAttrs', null);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(self.get('removeList'), function (node) {\n self.removeItem(node);\n });\n self.set('removeList', []);\n\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n\n self.emit('afteranimate', {\n data: data\n });\n },\n delay: animateCfg.delay\n });\n };\n /**\n * 立即停止布局动画\n */\n\n\n TreeGraph.prototype.stopLayoutAnimate = function () {\n this.get('canvas').stopAnimate();\n this.emit('layoutanimateend', {\n data: this.get('data')\n });\n this.layoutAnimating = false;\n };\n /**\n * 是否在布局动画\n * @return {boolean} 是否有布局动画\n */\n\n\n TreeGraph.prototype.isLayoutAnimating = function () {\n return this.layoutAnimating;\n };\n /**\n * 根据data接口的数据渲染视图\n */\n\n\n TreeGraph.prototype.render = function () {\n var self = this;\n var data = self.get('data');\n\n if (!data || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(data) || !Object.keys(data).length) {\n throw new Error('data must be defined first');\n }\n\n self.clear();\n self.emit('beforerender');\n self.layout(this.get('fitView'));\n self.emit('afterrender');\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n\n\n TreeGraph.prototype.save = function () {\n return this.get('data');\n };\n\n return TreeGraph;\n}(_graph__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TreeGraph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dyYXBoL3RyZWUtZ3JhcGguanM/NjY1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNNO0FBQ2M7QUFDM0I7QUFDQztBQUM1QixtQkFBbUIsNkNBQUk7QUFDdkIsbUJBQW1CLDZDQUFJOztBQUV2QjtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7O0FBRUEsa0NBQWtDOztBQUVsQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNEQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxzREFBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxtQkFBbUI7O0FBRW5CLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0Esd0RBQXdEOzs7QUFHeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx5Q0FBeUMsUUFBUTtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsV0FBVzs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxTQUFTLDJEQUFRO0FBQ2pCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnQkFBZ0I7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCOzs7QUFHQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSwwQkFBMEI7QUFDdkMsY0FBYyxjQUFjO0FBQzVCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCOztBQUV0QixJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCLGFBQWEsU0FBUztBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVCxRQUFRLHVEQUFJO0FBQ1o7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLDJEQUFRO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw4Q0FBSzs7QUFFUSx3RUFBUyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvZ3JhcGgvdHJlZS1ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IEhpZXJhcmNoeSBmcm9tICdAYW50di9oaWVyYXJjaHknO1xuaW1wb3J0IHsgZWFjaCwgaXNPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgVXRpbCBmcm9tICcuLi91dGlsJztcbmltcG9ydCBHcmFwaCBmcm9tICcuL2dyYXBoJztcbnZhciByYWRpYWxMYXlvdXQgPSBVdGlsLnJhZGlhbExheW91dCxcbiAgICB0cmF2ZXJzZVRyZWUgPSBVdGlsLnRyYXZlcnNlVHJlZTtcblxudmFyIFRyZWVHcmFwaCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhUcmVlR3JhcGgsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gVHJlZUdyYXBoKGNmZykge1xuICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNmZykgfHwgdGhpcztcblxuICAgIF90aGlzLmxheW91dEFuaW1hdGluZyA9IGZhbHNlOyAvLyDnlKjkuo7nvJPlrZjliqjnlLvnu5PmnZ/lkI7pnIDopoHliKDpmaTnmoToioLngrlcblxuICAgIF90aGlzLnNldCgncmVtb3ZlTGlzdCcsIFtdKTtcblxuICAgIF90aGlzLnNldCgnbGF5b3V0TWV0aG9kJywgX3RoaXMuZ2V0TGF5b3V0KCkpO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIC8qKlxuICAgKiDpgJrov4cgTGF5b3V0IOmFjee9ruiOt+WPluW4g+WxgOmFjee9rlxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuZ2V0TGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsYXlvdXQgPSB0aGlzLmdldCgnbGF5b3V0Jyk7XG5cbiAgICBpZiAoIWxheW91dCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBsYXlvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBsYXlvdXQ7XG4gICAgfVxuXG4gICAgaWYgKCFsYXlvdXQudHlwZSkge1xuICAgICAgbGF5b3V0LnR5cGUgPSAnZGVuZHJvZ3JhbSc7XG4gICAgfVxuXG4gICAgaWYgKCFsYXlvdXQuZGlyZWN0aW9uKSB7XG4gICAgICBsYXlvdXQuZGlyZWN0aW9uID0gJ1RCJztcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0LnJhZGlhbCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBsYXlvdXREYXRhID0gSGllcmFyY2h5W2xheW91dC50eXBlXShkYXRhLCBsYXlvdXQpO1xuICAgICAgICByYWRpYWxMYXlvdXQobGF5b3V0RGF0YSk7XG4gICAgICAgIHJldHVybiBsYXlvdXREYXRhO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHJldHVybiBIaWVyYXJjaHlbbGF5b3V0LnR5cGVdKGRhdGEsIGxheW91dCk7XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOi/lOWbnuaMh+WumuiKgueCueWcqOagkeWbvuaVsOaNruS4reeahOe0ouW8lVxuICAgKiBAcGFyYW0gY2hpbGRyZW4g5qCR5Zu+5pWw5o2uXG4gICAqIEBwYXJhbSBjaGlsZCDmoJHlm77kuK3mn5DkuIDkuKogSXRlbSDnmoTmlbDmja5cbiAgICovXG5cblxuICBUcmVlR3JhcGguaW5kZXhPZkNoaWxkID0gZnVuY3Rpb24gKGNoaWxkcmVuLCBpZCkge1xuICAgIHZhciBpbmRleCA9IC0xOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblxuICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChmb3JtZXIsIGkpIHtcbiAgICAgIGlmIChpZCA9PT0gZm9ybWVyLmlkKSB7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpbmRleDtcbiAgfTtcblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNmZyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZy5jYWxsKHRoaXMpOyAvLyDmoJHlm77pu5jorqTmiZPlvIDliqjnlLtcblxuXG4gICAgY2ZnLmFuaW1hdGUgPSB0cnVlO1xuICAgIHJldHVybiBjZmc7XG4gIH07XG4gIC8qKlxuICAgKiDlkJHwn4yy5qCR5Lit5re75Yqg5pWw5o2uXG4gICAqIEBwYXJhbSB0cmVlRGF0YSDmoJHlm77mlbDmja5cbiAgICogQHBhcmFtIHBhcmVudCDniLboioLngrnlrp7kvotcbiAgICogQHBhcmFtIGFuaW1hdGUg5piv5ZCm5byA5ZCv5Yqo55S7XG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5pbm5lckFkZENoaWxkID0gZnVuY3Rpb24gKHRyZWVEYXRhLCBwYXJlbnQsIGFuaW1hdGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIG1vZGVsID0gdHJlZURhdGEuZGF0YTtcblxuICAgIGlmIChtb2RlbCkge1xuICAgICAgLy8gbW9kZWwg5Lit5bqU5a2Y5YKo55yf5a6e55qE5pWw5o2u77yM54m55Yir5piv55yf5a6e55qEIGNoaWxkcmVuXG4gICAgICBtb2RlbC54ID0gdHJlZURhdGEueDtcbiAgICAgIG1vZGVsLnkgPSB0cmVlRGF0YS55O1xuICAgICAgbW9kZWwuZGVwdGggPSB0cmVlRGF0YS5kZXB0aDtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IHNlbGYuYWRkSXRlbSgnbm9kZScsIG1vZGVsLCBmYWxzZSk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBub2RlLnNldCgncGFyZW50JywgcGFyZW50KTtcblxuICAgICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgICAgdmFyIG9yaWdpbl8xID0gcGFyZW50LmdldCgnb3JpZ2luQXR0cnMnKTtcblxuICAgICAgICBpZiAob3JpZ2luXzEpIHtcbiAgICAgICAgICBub2RlLnNldCgnb3JpZ2luQXR0cnMnLCBvcmlnaW5fMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHBhcmVudE1vZGVsID0gcGFyZW50LmdldE1vZGVsKCk7XG4gICAgICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywge1xuICAgICAgICAgICAgeDogcGFyZW50TW9kZWwueCxcbiAgICAgICAgICAgIHk6IHBhcmVudE1vZGVsLnlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGRyZW5MaXN0ID0gcGFyZW50LmdldCgnY2hpbGRyZW4nKTtcblxuICAgICAgaWYgKCFjaGlsZHJlbkxpc3QpIHtcbiAgICAgICAgcGFyZW50LnNldCgnY2hpbGRyZW4nLCBbbm9kZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW5MaXN0LnB1c2gobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuYWRkSXRlbSgnZWRnZScsIHtcbiAgICAgICAgc291cmNlOiBwYXJlbnQuZ2V0KCdpZCcpLFxuICAgICAgICB0YXJnZXQ6IG5vZGUuZ2V0KCdpZCcpLFxuICAgICAgICBpZDogcGFyZW50LmdldCgnaWQnKSArIFwiOlwiICsgbm9kZS5nZXQoJ2lkJylcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9IC8vIOa4suafk+WIsOinhuWbvuS4iuW6lOWPguiAg+W4g+WxgOeahGNoaWxkcmVuLCDpgb/lhY3lpJrnu5jliLbkuobmlLbotbfnmoToioLngrlcblxuXG4gICAgZWFjaCh0cmVlRGF0YS5jaGlsZHJlbiB8fCBbXSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBzZWxmLmlubmVyQWRkQ2hpbGQoY2hpbGQsIG5vZGUsIGFuaW1hdGUpO1xuICAgIH0pO1xuICAgIHNlbGYuZW1pdCgnYWZ0ZXJhZGRjaGlsZCcsIHtcbiAgICAgIGl0ZW06IG5vZGUsXG4gICAgICBwYXJlbnQ6IHBhcmVudFxuICAgIH0pO1xuICAgIHJldHVybiBub2RlO1xuICB9O1xuICAvKipcbiAgICog5bCG5pWw5o2u5LiK55qE5Y+Y5pu06L2s5o2i5Yiw6KeG5Zu+5LiKXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBwYXJlbnRcbiAgICogQHBhcmFtIGFuaW1hdGVcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmlubmVyVXBkYXRlQ2hpbGQgPSBmdW5jdGlvbiAoZGF0YSwgcGFyZW50LCBhbmltYXRlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjdXJyZW50ID0gc2VsZi5maW5kQnlJZChkYXRhLmlkKTsgLy8g6Iul5a2Q5qCR5LiN5a2Y5Zyo77yM5pW05L2T5re75Yqg5Y2z5Y+vXG5cbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHNlbGYuaW5uZXJBZGRDaGlsZChkYXRhLCBwYXJlbnQsIGFuaW1hdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g5pu05paw5paw6IqC54K55LiL5omA5pyJ5a2Q6IqC54K5XG5cblxuICAgIGVhY2goZGF0YS5jaGlsZHJlbiB8fCBbXSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBzZWxmLmlubmVyVXBkYXRlQ2hpbGQoY2hpbGQsIGN1cnJlbnQsIGFuaW1hdGUpO1xuICAgIH0pOyAvLyDnlKjnjrDlnKjoioLngrnnmoRjaGlsZHJlbuWunuS+i+adpeWIoOmZpOenu+mZpOeahOWtkOiKgueCuVxuXG4gICAgdmFyIGNoaWxkcmVuID0gY3VycmVudC5nZXQoJ2NoaWxkcmVuJyk7XG5cbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgIGlmIChsZW4gPiAwKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldLmdldE1vZGVsKCk7XG5cbiAgICAgICAgICBpZiAoVHJlZUdyYXBoLmluZGV4T2ZDaGlsZChkYXRhLmNoaWxkcmVuIHx8IFtdLCBjaGlsZC5pZCkgPT09IC0xKSB7XG4gICAgICAgICAgICBzZWxmLmlubmVyUmVtb3ZlQ2hpbGQoY2hpbGQuaWQsIHtcbiAgICAgICAgICAgICAgeDogZGF0YS54LFxuICAgICAgICAgICAgICB5OiBkYXRhLnlcbiAgICAgICAgICAgIH0sIGFuaW1hdGUpOyAvLyDmm7TmlrDniLboioLngrnkuIvnvJPlrZjnmoTlrZDoioLngrkgaXRlbSDlrp7kvovliJfooahcblxuICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBvcmlYO1xuICAgIHZhciBvcmlZO1xuXG4gICAgaWYgKGN1cnJlbnQuZ2V0KCdvcmlnaW5BdHRycycpKSB7XG4gICAgICBvcmlYID0gY3VycmVudC5nZXQoJ29yaWdpbkF0dHJzJykueDtcbiAgICAgIG9yaVkgPSBjdXJyZW50LmdldCgnb3JpZ2luQXR0cnMnKS55O1xuICAgIH1cblxuICAgIHZhciBtb2RlbCA9IGN1cnJlbnQuZ2V0TW9kZWwoKTtcblxuICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAvLyDlpoLmnpzmnInliqjnlLvvvIzlhYjnvJPlrZjoioLngrnov5Dliqjlho3mm7TmlrDoioLngrlcbiAgICAgIGN1cnJlbnQuc2V0KCdvcmlnaW5BdHRycycsIHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VycmVudC5zZXQoJ21vZGVsJywgZGF0YS5kYXRhKTtcblxuICAgIGlmIChvcmlYICE9PSBkYXRhLnggfHwgb3JpWSAhPT0gZGF0YS55KSB7XG4gICAgICBjdXJyZW50LnVwZGF0ZVBvc2l0aW9uKHtcbiAgICAgICAgeDogZGF0YS54LFxuICAgICAgICB5OiBkYXRhLnlcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWtkOiKgueCuUl0ZW3lr7nosaFcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0b1xuICAgKiBAcGFyYW0gYW5pbWF0ZVxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuaW5uZXJSZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIChpZCwgdG8sIGFuaW1hdGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIG5vZGUgPSBzZWxmLmZpbmRCeUlkKGlkKTtcblxuICAgIGlmICghbm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVhY2gobm9kZS5nZXQoJ2NoaWxkcmVuJyksIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgc2VsZi5pbm5lclJlbW92ZUNoaWxkKGNoaWxkLmdldE1vZGVsKCkuaWQsIHRvLCBhbmltYXRlKTtcbiAgICB9KTtcblxuICAgIGlmIChhbmltYXRlKSB7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICBub2RlLnNldCgndG8nLCB0byk7XG4gICAgICBub2RlLnNldCgnb3JpZ2luQXR0cnMnLCB7XG4gICAgICAgIHg6IG1vZGVsLngsXG4gICAgICAgIHk6IG1vZGVsLnlcbiAgICAgIH0pO1xuICAgICAgc2VsZi5nZXQoJ3JlbW92ZUxpc3QnKS5wdXNoKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnJlbW92ZUl0ZW0obm9kZSwgZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOaVsOaNruaooeWei++8jOW3rumHj+abtOaWsOW5tumHjeaWsOa4suafk1xuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSDmlbDmja7mqKHlnotcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8g5pu05pS55pWw5o2u5rqQ5ZCO77yM5Y+W5raI5omA5pyJ54q25oCBXG5cbiAgICB0aGlzLmdldE5vZGVzKCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gc2VsZi5jbGVhckl0ZW1TdGF0ZXMobm9kZSk7XG4gICAgfSk7XG4gICAgdGhpcy5nZXRFZGdlcygpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIHNlbGYuY2xlYXJJdGVtU3RhdGVzKGVkZ2UpO1xuICAgIH0pO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHNlbGYuZGF0YShkYXRhKTtcbiAgICAgIHNlbGYucmVuZGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYubGF5b3V0KHRoaXMuZ2V0KCdmaXRWaWV3JykpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOW3suabtOWQjeS4uiB1cGRhdGVMYXlvdXTvvIzkuLrkv53mjIHlhbzlrrnmmoLkuJTkv53nlZnjgIJcbiAgICog5pu05pS55bm25bqU55So5qCR5biD5bGA566X5rOVXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXlvdXQg5biD5bGA566X5rOVXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5jaGFuZ2VMYXlvdXQgPSBmdW5jdGlvbiAobGF5b3V0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ1BsZWFzZSBjYWxsIHVwZGF0ZUxheW91dCBpbnN0ZWFkIG9mIGNoYW5nZUxheW91dC4gY2hhbmdlTGF5b3V0IHdpbGwgYmUgZGlzY2FyZGVkIHNvb24nKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi51cGRhdGVMYXlvdXQobGF5b3V0KTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaUueW5tuW6lOeUqOagkeW4g+WxgOeul+azlVxuICAgKiBAcGFyYW0ge29iamVjdH0gbGF5b3V0IOW4g+WxgOeul+azlVxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUudXBkYXRlTGF5b3V0ID0gZnVuY3Rpb24gKGxheW91dCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICghbGF5b3V0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKCdsYXlvdXQgY2Fubm90IGJlIG51bGwnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnNldCgnbGF5b3V0JywgbGF5b3V0KTtcbiAgICBzZWxmLnNldCgnbGF5b3V0TWV0aG9kJywgc2VsZi5nZXRMYXlvdXQoKSk7XG4gICAgc2VsZi5sYXlvdXQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOW3suabtOWQjeS4uiBsYXlvdXTvvIzkuLrkv53mjIHlhbzlrrnmmoLkuJTkv53nlZnjgIJcbiAgICog5qC55o2u55uu5YmN55qEIGRhdGEg5Yi35paw5biD5bGA77yM5pu05paw5Yiw55S75biD5LiK44CC55So5LqO5Y+Y5pu05pWw5o2u5LmL5ZCO5Yi35paw6KeG5Zu+44CCXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZml0VmlldyDmm7TmlrDluIPlsYDml7bmmK/lkKbpnIDopoHpgILlupTnqpflj6NcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnJlZnJlc2hMYXlvdXQgPSBmdW5jdGlvbiAoZml0Vmlldykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKCdQbGVhc2UgY2FsbCBsYXlvdXQgaW5zdGVhZCBvZiByZWZyZXNoTGF5b3V0LiByZWZyZXNoTGF5b3V0IHdpbGwgYmUgZGlzY2FyZGVkIHNvb24nKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5sYXlvdXQoZml0Vmlldyk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja7nm67liY3nmoQgZGF0YSDliLfmlrDluIPlsYDvvIzmm7TmlrDliLDnlLvluIPkuIrjgILnlKjkuo7lj5jmm7TmlbDmja7kuYvlkI7liLfmlrDop4blm77jgIJcbiAgICogQHBhcmFtIHtib29sZWFufSBmaXRWaWV3IOabtOaWsOW4g+WxgOaXtuaYr+WQpumcgOimgemAguW6lOeql+WPo1xuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUubGF5b3V0ID0gZnVuY3Rpb24gKGZpdFZpZXcpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGRhdGEgPSBzZWxmLmdldCgnZGF0YScpO1xuICAgIHZhciBsYXlvdXRNZXRob2QgPSBzZWxmLmdldCgnbGF5b3V0TWV0aG9kJyk7XG4gICAgdmFyIGxheW91dERhdGEgPSBsYXlvdXRNZXRob2QgPyBsYXlvdXRNZXRob2QoZGF0YSwgc2VsZi5nZXQoJ2xheW91dCcpKSA6IGRhdGE7XG4gICAgdmFyIGFuaW1hdGUgPSBzZWxmLmdldCgnYW5pbWF0ZScpO1xuICAgIHNlbGYuZW1pdCgnYmVmb3JlcmVmcmVzaGxheW91dCcsIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBsYXlvdXREYXRhOiBsYXlvdXREYXRhXG4gICAgfSk7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVsYXlvdXQnKTtcbiAgICBzZWxmLmlubmVyVXBkYXRlQ2hpbGQobGF5b3V0RGF0YSwgdW5kZWZpbmVkLCBhbmltYXRlKTtcblxuICAgIGlmIChmaXRWaWV3KSB7XG4gICAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSBzZWxmLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICAgIHZpZXdDb250cm9sbGVyLmZpdFZpZXcoKTtcbiAgICB9XG5cbiAgICBpZiAoIWFuaW1hdGUpIHtcbiAgICAgIC8vIOWmguaenOayoeacieWKqOeUu++8jOebruWJjeS7heabtOaWsOS6huiKgueCueeahOS9jee9ru+8jOWIt+aWsOS4gOS4i+i+ueeahOagt+W8j1xuICAgICAgc2VsZi5yZWZyZXNoKCk7XG4gICAgICBzZWxmLnBhaW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYubGF5b3V0QW5pbWF0ZShsYXlvdXREYXRhKTtcbiAgICB9XG5cbiAgICBzZWxmLmVtaXQoJ2FmdGVycmVmcmVzaGxheW91dCcsIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICBsYXlvdXREYXRhOiBsYXlvdXREYXRhXG4gICAgfSk7XG4gICAgc2VsZi5lbWl0KCdhZnRlcmxheW91dCcpO1xuICB9O1xuICAvKipcbiAgICog5re75Yqg5a2Q5qCR5Yiw5a+55bqUIGlkIOeahOiKgueCuVxuICAgKiBAcGFyYW0ge1RyZWVHcmFwaERhdGF9IGRhdGEg5a2Q5qCR5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnQg5a2Q5qCR55qE54i26IqC54K5aWRcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLmFkZENoaWxkID0gZnVuY3Rpb24gKGRhdGEsIHBhcmVudCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWFkZGNoaWxkJywge1xuICAgICAgbW9kZWw6IGRhdGEsXG4gICAgICBwYXJlbnQ6IHBhcmVudFxuICAgIH0pOyAvLyDlsIbmlbDmja7mt7vliqDliLDmupDmlbDmja7kuK3vvIzotbBjaGFuZ2VEYXRh5pa55rOVXG5cbiAgICBpZiAoIWlzU3RyaW5nKHBhcmVudCkpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5nZXQoJ2lkJyk7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudERhdGEgPSBzZWxmLmZpbmREYXRhQnlJZChwYXJlbnQpO1xuXG4gICAgaWYgKHBhcmVudERhdGEpIHtcbiAgICAgIGlmICghcGFyZW50RGF0YS5jaGlsZHJlbikge1xuICAgICAgICBwYXJlbnREYXRhLmNoaWxkcmVuID0gW107XG4gICAgICB9XG5cbiAgICAgIHBhcmVudERhdGEuY2hpbGRyZW4ucHVzaChkYXRhKTtcbiAgICAgIHNlbGYuY2hhbmdlRGF0YSgpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOafkOS4quiKgueCueS4i+eahOaJgOacieWtkOiKgueCuVxuICAgKiBAcGFyYW0ge1RyZWVHcmFwaERhdGFbXX0gZGF0YSDlrZDmoJHmlbDmja7mqKHlnovpm4blkIhcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudCDlrZDmoJHnmoTniLboioLngrlpZFxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUudXBkYXRlQ2hpbGRyZW4gPSBmdW5jdGlvbiAoZGF0YSwgcGFyZW50SWQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIOWmguaenOayoeacieeItuiKgueCueaIluaJvuS4jeWIsOivpeiKgueCue+8jOaYr+WFqOmHj+eahOabtOaWsO+8jOebtOaOpemHjee9rmRhdGFcblxuICAgIGlmICghcGFyZW50SWQgfHwgIXNlbGYuZmluZEJ5SWQocGFyZW50SWQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJVcGRhdGUgY2hpbGRyZW4gZmFpbGVkISBUaGVyZSBpcyBubyBub2RlIHdpdGggaWQgJ1wiICsgcGFyZW50SWQgKyBcIidcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE1vZGVsID0gc2VsZi5maW5kRGF0YUJ5SWQocGFyZW50SWQpO1xuICAgIHBhcmVudE1vZGVsLmNoaWxkcmVuID0gZGF0YTtcbiAgICBzZWxmLmNoYW5nZURhdGEoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOa6kOaVsOaNru+8jOW3rumHj+abtOaWsOWtkOagkVxuICAgKiBAcGFyYW0ge1RyZWVHcmFwaERhdGF9IGRhdGEg5a2Q5qCR5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRJZCDlrZDmoJHnmoTniLboioLngrlpZFxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUudXBkYXRlQ2hpbGQgPSBmdW5jdGlvbiAoZGF0YSwgcGFyZW50SWQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIOWmguaenOayoeacieeItuiKgueCueaIluaJvuS4jeWIsOivpeiKgueCue+8jOaYr+WFqOmHj+eahOabtOaWsO+8jOebtOaOpemHjee9rmRhdGFcblxuICAgIGlmICghcGFyZW50SWQgfHwgIXNlbGYuZmluZEJ5SWQocGFyZW50SWQpKSB7XG4gICAgICBzZWxmLmNoYW5nZURhdGEoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudE1vZGVsID0gc2VsZi5maW5kRGF0YUJ5SWQocGFyZW50SWQpO1xuICAgIHZhciBjdXJyZW50ID0gc2VsZi5maW5kQnlJZChkYXRhLmlkKTtcblxuICAgIGlmICghcGFyZW50TW9kZWwuY2hpbGRyZW4pIHtcbiAgICAgIC8vIOW9kyBjdXJyZW50IOS4jeWtmOWcqOaXtu+8jGNoaWxkcmVuIOS4uuepuuaVsOe7hFxuICAgICAgcGFyZW50TW9kZWwuY2hpbGRyZW4gPSBbXTtcbiAgICB9IC8vIOWmguaenOS4jeWtmOWcqOivpeiKgueCue+8jOWImea3u+WKoFxuXG5cbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHBhcmVudE1vZGVsLmNoaWxkcmVuLnB1c2goZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpbmRleCA9IFRyZWVHcmFwaC5pbmRleE9mQ2hpbGQocGFyZW50TW9kZWwuY2hpbGRyZW4sIGRhdGEuaWQpO1xuICAgICAgcGFyZW50TW9kZWwuY2hpbGRyZW5baW5kZXhdID0gZGF0YTtcbiAgICB9XG5cbiAgICBzZWxmLmNoYW5nZURhdGEoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWtkOagkVxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQg5a2Q5qCR5qC56IqC54K5aWRcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBub2RlID0gc2VsZi5maW5kQnlJZChpZCk7XG5cbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50ID0gbm9kZS5nZXQoJ3BhcmVudCcpO1xuXG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50LmRlc3Ryb3llZCkge1xuICAgICAgdmFyIHBhcmVudE5vZGUgPSBzZWxmLmZpbmREYXRhQnlJZChwYXJlbnQuZ2V0KCdpZCcpKTtcbiAgICAgIHZhciBzaWJsaW5ncyA9IHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS5jaGlsZHJlbiB8fCBbXTtcbiAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgIHZhciBpbmRleCA9IFRyZWVHcmFwaC5pbmRleE9mQ2hpbGQoc2libGluZ3MsIG1vZGVsLmlkKTtcbiAgICAgIHNpYmxpbmdzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgc2VsZi5jaGFuZ2VEYXRhKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja5pZOiOt+WPluWvueW6lOeahOa6kOaVsOaNrlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQg5YWD57SgaWRcbiAgICogQHBhcmFtIHtUcmVlR3JhcGhEYXRhIHwgdW5kZWZpbmVkfSBwYXJlbnQg5LuO5ZOq5Liq6IqC54K55byA5aeL5a+75om+77yM5Li656m65pe25LuO5qC56IqC54K55byA5aeL5p+l5om+XG4gICAqIEByZXR1cm4ge1RyZWVHcmFwaERhdGF9IOWvueW6lOa6kOaVsOaNrlxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuZmluZERhdGFCeUlkID0gZnVuY3Rpb24gKGlkLCBwYXJlbnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcGFyZW50ID0gc2VsZi5nZXQoJ2RhdGEnKTtcbiAgICB9XG5cbiAgICBpZiAoaWQgPT09IHBhcmVudC5pZCkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gbnVsbDsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cbiAgICBlYWNoKHBhcmVudC5jaGlsZHJlbiB8fCBbXSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuaWQgPT09IGlkKSB7XG4gICAgICAgIHJlc3VsdCA9IGNoaWxkO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCA9IHNlbGYuZmluZERhdGFCeUlkKGlkLCBjaGlsZCk7XG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIC8qKlxuICAgKiDluIPlsYDliqjnlLvmjqXlj6PvvIznlKjkuo7mlbDmja7mm7TmlrDml7blgZroioLngrnkvY3nva7mm7TmlrDnmoTliqjnlLtcbiAgICogQHBhcmFtIHtUcmVlR3JhcGhEYXRhfSBkYXRhIOabtOaWsOeahOaVsOaNrlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkZyYW1lIOWumuS5ieiKgueCueS9jee9ruabtOaWsOaXtuWmguS9leenu+WKqFxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUubGF5b3V0QW5pbWF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBvbkZyYW1lKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBhbmltYXRlQ2ZnID0gdGhpcy5nZXQoJ2FuaW1hdGVDZmcnKTtcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWFuaW1hdGUnLCB7XG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7IC8vIOWmguaenOi+ueS4reayoeacieaMh+WumumUmueCue+8jOS9huaYr+acrOi6q+aciemUmueCueaOp+WItu+8jOWcqOWKqOeUu+i/h+eoi+S4reS/neaMgemUmueCueS4jeWPmFxuXG4gICAgc2VsZi5nZXRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0KCdtb2RlbCcpO1xuXG4gICAgICBpZiAoIW1vZGVsLnNvdXJjZUFuY2hvcikge1xuICAgICAgICBtb2RlbC5zb3VyY2VBbmNob3IgPSBlZGdlLmdldCgnc291cmNlQW5jaG9ySW5kZXgnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmdldCgnY2FudmFzJykuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIHRyYXZlcnNlVHJlZShkYXRhLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBzZWxmLmZpbmRCeUlkKGNoaWxkLmlkKTsgLy8g5Y+q5pyJ5b2T5a2Y5Zyobm9kZeeahOaXtuWAmeaJjeaJp+ihjFxuXG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgdmFyIG9yaWdpbl8yID0gbm9kZS5nZXQoJ29yaWdpbkF0dHJzJyk7XG4gICAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXQoJ21vZGVsJyk7XG5cbiAgICAgICAgICBpZiAoIW9yaWdpbl8yKSB7XG4gICAgICAgICAgICBvcmlnaW5fMiA9IHtcbiAgICAgICAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgICAgICAgeTogbW9kZWwueVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIG9yaWdpbl8yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob25GcmFtZSkge1xuICAgICAgICAgICAgdmFyIGF0dHJzID0gb25GcmFtZShub2RlLCByYXRpbywgb3JpZ2luXzIsIGRhdGEpO1xuICAgICAgICAgICAgbm9kZS5zZXQoJ21vZGVsJywgT2JqZWN0LmFzc2lnbihtb2RlbCwgYXR0cnMpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kZWwueCA9IG9yaWdpbl8yLnggKyAoY2hpbGQueCAtIG9yaWdpbl8yLngpICogcmF0aW87XG4gICAgICAgICAgICBtb2RlbC55ID0gb3JpZ2luXzIueSArIChjaGlsZC55IC0gb3JpZ2luXzIueSkgKiByYXRpbztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgZWFjaChzZWxmLmdldCgncmVtb3ZlTGlzdCcpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgIHZhciBmcm9tID0gbm9kZS5nZXQoJ29yaWdpbkF0dHJzJyk7XG4gICAgICAgIHZhciB0byA9IG5vZGUuZ2V0KCd0bycpO1xuICAgICAgICBtb2RlbC54ID0gZnJvbS54ICsgKHRvLnggLSBmcm9tLngpICogcmF0aW87XG4gICAgICAgIG1vZGVsLnkgPSBmcm9tLnkgKyAodG8ueSAtIGZyb20ueSkgKiByYXRpbztcbiAgICAgIH0pO1xuICAgICAgc2VsZi5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgfSwge1xuICAgICAgZHVyYXRpb246IGFuaW1hdGVDZmcuZHVyYXRpb24sXG4gICAgICBlYXNpbmc6IGFuaW1hdGVDZmcuZWFzZSxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiBjYWxsYmFjaygpIHtcbiAgICAgICAgZWFjaChzZWxmLmdldE5vZGVzKCksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgICBlYWNoKHNlbGYuZ2V0KCdyZW1vdmVMaXN0JyksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgc2VsZi5yZW1vdmVJdGVtKG5vZGUpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5zZXQoJ3JlbW92ZUxpc3QnLCBbXSk7XG5cbiAgICAgICAgaWYgKGFuaW1hdGVDZmcuY2FsbGJhY2spIHtcbiAgICAgICAgICBhbmltYXRlQ2ZnLmNhbGxiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmVtaXQoJ2FmdGVyYW5pbWF0ZScsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGRlbGF5OiBhbmltYXRlQ2ZnLmRlbGF5XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDnq4vljbPlgZzmraLluIPlsYDliqjnlLtcbiAgICovXG5cblxuICBUcmVlR3JhcGgucHJvdG90eXBlLnN0b3BMYXlvdXRBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ2V0KCdjYW52YXMnKS5zdG9wQW5pbWF0ZSgpO1xuICAgIHRoaXMuZW1pdCgnbGF5b3V0YW5pbWF0ZWVuZCcsIHtcbiAgICAgIGRhdGE6IHRoaXMuZ2V0KCdkYXRhJylcbiAgICB9KTtcbiAgICB0aGlzLmxheW91dEFuaW1hdGluZyA9IGZhbHNlO1xuICB9O1xuICAvKipcbiAgICog5piv5ZCm5Zyo5biD5bGA5Yqo55S7XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IOaYr+WQpuacieW4g+WxgOWKqOeUu1xuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUuaXNMYXlvdXRBbmltYXRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0QW5pbWF0aW5nO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uZGF0YeaOpeWPo+eahOaVsOaNrua4suafk+inhuWbvlxuICAgKi9cblxuXG4gIFRyZWVHcmFwaC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGF0YSA9IHNlbGYuZ2V0KCdkYXRhJyk7XG5cbiAgICBpZiAoIWRhdGEgfHwgIWlzT2JqZWN0KGRhdGEpIHx8ICFPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBtdXN0IGJlIGRlZmluZWQgZmlyc3QnKTtcbiAgICB9XG5cbiAgICBzZWxmLmNsZWFyKCk7XG4gICAgc2VsZi5lbWl0KCdiZWZvcmVyZW5kZXInKTtcbiAgICBzZWxmLmxheW91dCh0aGlzLmdldCgnZml0VmlldycpKTtcbiAgICBzZWxmLmVtaXQoJ2FmdGVycmVuZGVyJyk7XG4gIH07XG4gIC8qKlxuICAgKiDlr7zlh7rlm77mlbDmja5cbiAgICogQHJldHVybiB7b2JqZWN0fSBkYXRhXG4gICAqL1xuXG5cbiAgVHJlZUdyYXBoLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnZGF0YScpO1xuICB9O1xuXG4gIHJldHVybiBUcmVlR3JhcGg7XG59KEdyYXBoKTtcblxuZXhwb3J0IGRlZmF1bHQgVHJlZUdyYXBoOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/tree-graph.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/index.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/index.js ***! \*****************************************************************/ /*! exports provided: G6GraphEvent, G6Event, Node, Edge, Combo, Hull, registerNode, registerCombo, AbstractGraph, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, Graph, TreeGraph, Util, Layout, TreeLayout, registerLayout, Global, Minimap, Grid, Bundling, Menu, Fisheye, Algorithm, ToolBar, Tooltip, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, Arrow, Marker, Shape, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Minimap\", function() { return Minimap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return Grid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bundling\", function() { return Bundling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Menu\", function() { return Menu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Fisheye\", function() { return Fisheye; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Algorithm\", function() { return Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolBar\", function() { return ToolBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return Tooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimeBar\", function() { return TimeBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageMinimap\", function() { return ImageMinimap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EdgeFilterLens\", function() { return EdgeFilterLens; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SnapLine\", function() { return SnapLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Legend\", function() { return Legend; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Marker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Shape\"]; });\n\n/* harmony import */ var _antv_algorithm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/algorithm */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js\");\n/* harmony import */ var _antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/algorithm/lib/asyncIndex */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js\");\n/* harmony import */ var _antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _graph_graph__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./graph/graph */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return _graph_graph__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _graph_tree_graph__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graph/tree-graph */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/tree-graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeGraph\", function() { return _graph_tree_graph__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./layout */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_6__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_6__[\"TreeLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_6__[\"registerLayout\"]; });\n\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./global */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Global\", function() { return _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _plugin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plugin */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/plugin/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js\");\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"G6Event\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Node\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Edge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Combo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Hull\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerCombo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerEdge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"AbstractEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./types */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/types/index.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _interface_graph__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./interface/graph */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/interface/graph.js\");\n/* empty/unused harmony star reexport */\n\n\n\n\n\n\n\n\n\n\n\n\nvar Algorithm = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_algorithm__WEBPACK_IMPORTED_MODULE_2__), _antv_algorithm_lib_asyncIndex__WEBPACK_IMPORTED_MODULE_3__);\n\nvar Grid = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Grid;\nvar Minimap = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Minimap;\nvar Bundling = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Bundling;\nvar Menu = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Menu;\nvar Fisheye = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Fisheye;\nvar ToolBar = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ToolBar;\nvar Tooltip = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Tooltip;\nvar TimeBar = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].TimeBar;\nvar ImageMinimap = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ImageMinimap;\nvar EdgeFilterLens = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].EdgeFilterLens;\nvar SnapLine = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].SnapLine;\nvar Legend = _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Legend;\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].version,\n Graph: _graph_graph__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n TreeGraph: _graph_tree_graph__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n Util: _util__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n Layout: _layout__WEBPACK_IMPORTED_MODULE_6__[\"Layout\"],\n TreeLayout: _layout__WEBPACK_IMPORTED_MODULE_6__[\"TreeLayout\"],\n registerLayout: _layout__WEBPACK_IMPORTED_MODULE_6__[\"registerLayout\"],\n Global: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n registerBehavior: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"],\n registerCombo: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerCombo\"],\n registerEdge: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerEdge\"],\n registerNode: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"],\n Minimap: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Minimap,\n Grid: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Grid,\n Bundling: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Bundling,\n Menu: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Menu,\n ToolBar: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ToolBar,\n Tooltip: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Tooltip,\n Legend: _plugin__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Legend,\n TimeBar: TimeBar,\n SnapLine: SnapLine,\n Fisheye: Fisheye,\n ImageMinimap: ImageMinimap,\n EdgeFilterLens: EdgeFilterLens,\n Algorithm: Algorithm,\n Arrow: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Arrow\"],\n Marker: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Marker\"],\n Shape: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Shape\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2luZGV4LmpzP2MwZjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUFpQztBQUNpRjtBQUNqRTtBQUNnQjtBQUMvQjtBQUNTO0FBQ21CO0FBQ2hDO0FBQ0o7QUFDSTtBQUNYO0FBQ0M7O0FBRXBCLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSw0Q0FBYSxHQUFHLDJEQUFjOztBQUVwRSxXQUFXLCtDQUFNO0FBQ2pCLGNBQWMsK0NBQU07QUFDcEIsZUFBZSwrQ0FBTTtBQUNyQixXQUFXLCtDQUFNO0FBQ2pCLGNBQWMsK0NBQU07QUFDcEIsY0FBYywrQ0FBTTtBQUNwQixjQUFjLCtDQUFNO0FBQ3BCLGNBQWMsK0NBQU07QUFDcEIsbUJBQW1CLCtDQUFNO0FBQ3pCLHFCQUFxQiwrQ0FBTTtBQUMzQixlQUFlLCtDQUFNO0FBQ3JCLGFBQWEsK0NBQU07QUFDVztBQUNOO0FBQ1U7QUFDZ007QUFDbk47QUFDZixXQUFXLCtDQUFNO0FBQ2pCLFNBQVMsb0RBQUs7QUFDZCxhQUFhLHlEQUFTO0FBQ3RCLFFBQVEsNkNBQUk7QUFDWixVQUFVLDhDQUFNO0FBQ2hCLGNBQWMsa0RBQVU7QUFDeEIsa0JBQWtCLHNEQUFjO0FBQ2hDLFVBQVUsK0NBQU07QUFDaEIsb0JBQW9CLDhEQUFnQjtBQUNwQyxpQkFBaUIsMkRBQWE7QUFDOUIsZ0JBQWdCLDBEQUFZO0FBQzVCLGdCQUFnQiwwREFBWTtBQUM1QixXQUFXLCtDQUFNO0FBQ2pCLFFBQVEsK0NBQU07QUFDZCxZQUFZLCtDQUFNO0FBQ2xCLFFBQVEsK0NBQU07QUFDZCxXQUFXLCtDQUFNO0FBQ2pCLFdBQVcsK0NBQU07QUFDakIsVUFBVSwrQ0FBTTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG1EQUFLO0FBQ2QsVUFBVSxvREFBTTtBQUNoQixTQUFTLG1EQUFLO0FBQ2QsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJCZWhhdmlvciwgcmVnaXN0ZXJDb21ibywgcmVnaXN0ZXJFZGdlLCByZWdpc3Rlck5vZGUsIEFycm93LCBNYXJrZXIsIFNoYXBlIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgKiBhcyBBbGdvcml0aG1TeW5jIGZyb20gJ0BhbnR2L2FsZ29yaXRobSc7XG5pbXBvcnQgKiBhcyBBbGdvcml0aG1Bc3luYyBmcm9tICdAYW50di9hbGdvcml0aG0vbGliL2FzeW5jSW5kZXgnO1xuaW1wb3J0IEdyYXBoIGZyb20gJy4vZ3JhcGgvZ3JhcGgnO1xuaW1wb3J0IFRyZWVHcmFwaCBmcm9tICcuL2dyYXBoL3RyZWUtZ3JhcGgnO1xuaW1wb3J0IHsgVHJlZUxheW91dCwgTGF5b3V0LCByZWdpc3RlckxheW91dCB9IGZyb20gJy4vbGF5b3V0JztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi9nbG9iYWwnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJztcbmltcG9ydCBQbHVnaW4gZnJvbSAnLi9wbHVnaW4nO1xuaW1wb3J0ICcuL2VsZW1lbnQnO1xuaW1wb3J0ICcuL2JlaGF2aW9yJztcblxudmFyIEFsZ29yaXRobSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBBbGdvcml0aG1TeW5jKSwgQWxnb3JpdGhtQXN5bmMpO1xuXG52YXIgR3JpZCA9IFBsdWdpbi5HcmlkO1xudmFyIE1pbmltYXAgPSBQbHVnaW4uTWluaW1hcDtcbnZhciBCdW5kbGluZyA9IFBsdWdpbi5CdW5kbGluZztcbnZhciBNZW51ID0gUGx1Z2luLk1lbnU7XG52YXIgRmlzaGV5ZSA9IFBsdWdpbi5GaXNoZXllO1xudmFyIFRvb2xCYXIgPSBQbHVnaW4uVG9vbEJhcjtcbnZhciBUb29sdGlwID0gUGx1Z2luLlRvb2x0aXA7XG52YXIgVGltZUJhciA9IFBsdWdpbi5UaW1lQmFyO1xudmFyIEltYWdlTWluaW1hcCA9IFBsdWdpbi5JbWFnZU1pbmltYXA7XG52YXIgRWRnZUZpbHRlckxlbnMgPSBQbHVnaW4uRWRnZUZpbHRlckxlbnM7XG52YXIgU25hcExpbmUgPSBQbHVnaW4uU25hcExpbmU7XG52YXIgTGVnZW5kID0gUGx1Z2luLkxlZ2VuZDtcbmV4cG9ydCAqIGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9ncmFwaCc7XG5leHBvcnQgeyBHcmFwaCwgVHJlZUdyYXBoLCBVdGlsLCBMYXlvdXQsIFRyZWVMYXlvdXQsIHJlZ2lzdGVyTGF5b3V0LCBHbG9iYWwsIE1pbmltYXAsIEdyaWQsIEJ1bmRsaW5nLCBNZW51LCBGaXNoZXllLCBBbGdvcml0aG0sIFRvb2xCYXIsIFRvb2x0aXAsIFRpbWVCYXIsIEltYWdlTWluaW1hcCwgRWRnZUZpbHRlckxlbnMsIFNuYXBMaW5lLCBMZWdlbmQsIEFycm93LCBNYXJrZXIsIFNoYXBlIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZlcnNpb246IEdsb2JhbC52ZXJzaW9uLFxuICBHcmFwaDogR3JhcGgsXG4gIFRyZWVHcmFwaDogVHJlZUdyYXBoLFxuICBVdGlsOiBVdGlsLFxuICBMYXlvdXQ6IExheW91dCxcbiAgVHJlZUxheW91dDogVHJlZUxheW91dCxcbiAgcmVnaXN0ZXJMYXlvdXQ6IHJlZ2lzdGVyTGF5b3V0LFxuICBHbG9iYWw6IEdsb2JhbCxcbiAgcmVnaXN0ZXJCZWhhdmlvcjogcmVnaXN0ZXJCZWhhdmlvcixcbiAgcmVnaXN0ZXJDb21ibzogcmVnaXN0ZXJDb21ibyxcbiAgcmVnaXN0ZXJFZGdlOiByZWdpc3RlckVkZ2UsXG4gIHJlZ2lzdGVyTm9kZTogcmVnaXN0ZXJOb2RlLFxuICBNaW5pbWFwOiBQbHVnaW4uTWluaW1hcCxcbiAgR3JpZDogUGx1Z2luLkdyaWQsXG4gIEJ1bmRsaW5nOiBQbHVnaW4uQnVuZGxpbmcsXG4gIE1lbnU6IFBsdWdpbi5NZW51LFxuICBUb29sQmFyOiBQbHVnaW4uVG9vbEJhcixcbiAgVG9vbHRpcDogUGx1Z2luLlRvb2x0aXAsXG4gIExlZ2VuZDogUGx1Z2luLkxlZ2VuZCxcbiAgVGltZUJhcjogVGltZUJhcixcbiAgU25hcExpbmU6IFNuYXBMaW5lLFxuICBGaXNoZXllOiBGaXNoZXllLFxuICBJbWFnZU1pbmltYXA6IEltYWdlTWluaW1hcCxcbiAgRWRnZUZpbHRlckxlbnM6IEVkZ2VGaWx0ZXJMZW5zLFxuICBBbGdvcml0aG06IEFsZ29yaXRobSxcbiAgQXJyb3c6IEFycm93LFxuICBNYXJrZXI6IE1hcmtlcixcbiAgU2hhcGU6IFNoYXBlXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/interface/graph.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/interface/graph.js ***! \***************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2ludGVyZmFjZS9ncmFwaC5qcz84NGYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9pbnRlcmZhY2UvZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/interface/graph.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/index.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/index.js ***! \************************************************************************/ /*! exports provided: TreeLayout, Layout, registerLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return registerLayout; });\n/* harmony import */ var _antv_layout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/layout */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"Layouts\"]; });\n\n/* harmony import */ var _tree_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tree-layout */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/tree-layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLayout\", function() { return _tree_layout__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('grid', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"GridLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('random', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"RandomLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('force', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ForceLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('circular', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"CircularLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('dagre', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"DagreLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('radial', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"RadialLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('concentric', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ConcentricLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('mds', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"MDSLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('fruchterman', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"FruchtermanLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('fruchterman-gpu', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"FruchtermanGPULayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('gForce', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"GForceLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('gForce-gpu', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"GForceGPULayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('comboForce', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ComboForceLayout\"]);\nObject(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])('forceAtlas2', _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"ForceAtlas2Layout\"]);\n\nvar registerLayout = function registerLayout(name, layoutOverride) {\n layoutOverride.isCustomLayout = true;\n _antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"Layouts\"][name] = Object(_antv_layout__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"])(name, layoutOverride);\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC9pbmRleC5qcz84ZmQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBZ1Q7QUFDelE7QUFDdkMsbUVBQWUsU0FBUyx1REFBVTtBQUNsQyxtRUFBZSxXQUFXLHlEQUFZO0FBQ3RDLG1FQUFlLFVBQVUsd0RBQVc7QUFDcEMsbUVBQWUsYUFBYSwyREFBYztBQUMxQyxtRUFBZSxVQUFVLHdEQUFXO0FBQ3BDLG1FQUFlLFdBQVcseURBQVk7QUFDdEMsbUVBQWUsZUFBZSw2REFBZ0I7QUFDOUMsbUVBQWUsUUFBUSxzREFBUztBQUNoQyxtRUFBZSxnQkFBZ0IsOERBQWlCO0FBQ2hELG1FQUFlLG9CQUFvQixpRUFBb0I7QUFDdkQsbUVBQWUsV0FBVyx5REFBWTtBQUN0QyxtRUFBZSxlQUFlLDREQUFlO0FBQzdDLG1FQUFlLGVBQWUsNkRBQWdCO0FBQzlDLG1FQUFlLGdCQUFnQiw4REFBaUI7O0FBRWhEO0FBQ0E7QUFDQSxFQUFFLG9EQUFNLFNBQVMsbUVBQWU7QUFDaEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dHMgYXMgTGF5b3V0LCByZWdpc3RlckxheW91dCBhcyBvUmVnaXN0ZXJMYXlvdXQsIEdyaWRMYXlvdXQsIFJhbmRvbUxheW91dCwgRm9yY2VMYXlvdXQsIENpcmN1bGFyTGF5b3V0LCBEYWdyZUxheW91dCwgUmFkaWFsTGF5b3V0LCBDb25jZW50cmljTGF5b3V0LCBNRFNMYXlvdXQsIEZydWNodGVybWFuR1BVTGF5b3V0LCBGcnVjaHRlcm1hbkxheW91dCwgR0ZvcmNlTGF5b3V0LCBHRm9yY2VHUFVMYXlvdXQsIENvbWJvRm9yY2VMYXlvdXQsIEZvcmNlQXRsYXMyTGF5b3V0IH0gZnJvbSAnQGFudHYvbGF5b3V0JztcbmltcG9ydCBUcmVlTGF5b3V0IGZyb20gJy4vdHJlZS1sYXlvdXQnO1xub1JlZ2lzdGVyTGF5b3V0KCdncmlkJywgR3JpZExheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ3JhbmRvbScsIFJhbmRvbUxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2ZvcmNlJywgRm9yY2VMYXlvdXQpO1xub1JlZ2lzdGVyTGF5b3V0KCdjaXJjdWxhcicsIENpcmN1bGFyTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnZGFncmUnLCBEYWdyZUxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ3JhZGlhbCcsIFJhZGlhbExheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2NvbmNlbnRyaWMnLCBDb25jZW50cmljTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnbWRzJywgTURTTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnZnJ1Y2h0ZXJtYW4nLCBGcnVjaHRlcm1hbkxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2ZydWNodGVybWFuLWdwdScsIEZydWNodGVybWFuR1BVTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnZ0ZvcmNlJywgR0ZvcmNlTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnZ0ZvcmNlLWdwdScsIEdGb3JjZUdQVUxheW91dCk7XG5vUmVnaXN0ZXJMYXlvdXQoJ2NvbWJvRm9yY2UnLCBDb21ib0ZvcmNlTGF5b3V0KTtcbm9SZWdpc3RlckxheW91dCgnZm9yY2VBdGxhczInLCBGb3JjZUF0bGFzMkxheW91dCk7XG5cbnZhciByZWdpc3RlckxheW91dCA9IGZ1bmN0aW9uIHJlZ2lzdGVyTGF5b3V0KG5hbWUsIGxheW91dE92ZXJyaWRlKSB7XG4gIGxheW91dE92ZXJyaWRlLmlzQ3VzdG9tTGF5b3V0ID0gdHJ1ZTtcbiAgTGF5b3V0W25hbWVdID0gb1JlZ2lzdGVyTGF5b3V0KG5hbWUsIGxheW91dE92ZXJyaWRlKTtcbn07XG5cbmV4cG9ydCB7IFRyZWVMYXlvdXQsIExheW91dCwgcmVnaXN0ZXJMYXlvdXQgfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/tree-layout.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/tree-layout.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/hierarchy */ \"./node_modules/_@antv_hierarchy@0.6.8@@antv/hierarchy/build/hierarchy.js\");\n/* harmony import */ var _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_antv_hierarchy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n\n\nvar radialLayout = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].radialLayout;\n\nvar TreeLayout =\n/** @class */\nfunction () {\n function TreeLayout(cfg) {\n this.type = cfg.type;\n this.radial = cfg.radial;\n this.config = cfg;\n }\n\n TreeLayout.prototype.init = function (data) {\n var _this = this;\n\n this.data = data;\n\n if (this.radial) {\n this.layoutMethod = function (data) {\n var layoutData = _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0___default.a[_this.type](data, _this.config);\n\n radialLayout(layoutData);\n return layoutData;\n };\n\n return;\n }\n\n this.layoutMethod = function (data) {\n return _antv_hierarchy__WEBPACK_IMPORTED_MODULE_0___default.a[_this.type](data, _this.config);\n };\n };\n\n TreeLayout.prototype.execute = function () {\n return this.layoutMethod(this.data, this.config);\n };\n\n TreeLayout.prototype.layout = function (data) {\n this.init(data);\n return this.execute();\n };\n\n return TreeLayout;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TreeLayout);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC90cmVlLWxheW91dC5qcz83Y2MzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ2I7QUFDM0IsbUJBQW1CLDZDQUFJOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlCQUF5QixzREFBUzs7QUFFbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLHNEQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyx5RUFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvbGF5b3V0L3RyZWUtbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEhpZXJhcmNoeSBmcm9tICdAYW50di9oaWVyYXJjaHknO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbCc7XG52YXIgcmFkaWFsTGF5b3V0ID0gVXRpbC5yYWRpYWxMYXlvdXQ7XG5cbnZhciBUcmVlTGF5b3V0ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVHJlZUxheW91dChjZmcpIHtcbiAgICB0aGlzLnR5cGUgPSBjZmcudHlwZTtcbiAgICB0aGlzLnJhZGlhbCA9IGNmZy5yYWRpYWw7XG4gICAgdGhpcy5jb25maWcgPSBjZmc7XG4gIH1cblxuICBUcmVlTGF5b3V0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcblxuICAgIGlmICh0aGlzLnJhZGlhbCkge1xuICAgICAgdGhpcy5sYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgbGF5b3V0RGF0YSA9IEhpZXJhcmNoeVtfdGhpcy50eXBlXShkYXRhLCBfdGhpcy5jb25maWcpO1xuXG4gICAgICAgIHJhZGlhbExheW91dChsYXlvdXREYXRhKTtcbiAgICAgICAgcmV0dXJuIGxheW91dERhdGE7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIEhpZXJhcmNoeVtfdGhpcy50eXBlXShkYXRhLCBfdGhpcy5jb25maWcpO1xuICAgIH07XG4gIH07XG5cbiAgVHJlZUxheW91dC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXRNZXRob2QodGhpcy5kYXRhLCB0aGlzLmNvbmZpZyk7XG4gIH07XG5cbiAgVHJlZUxheW91dC5wcm90b3R5cGUubGF5b3V0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGlzLmluaXQoZGF0YSk7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZSgpO1xuICB9O1xuXG4gIHJldHVybiBUcmVlTGF5b3V0O1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBUcmVlTGF5b3V0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/tree-layout.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layout.worker.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layout.worker.js ***! \***************************************************************************************/ /*! exports provided: LayoutWorker */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LayoutWorker\", function() { return LayoutWorker; });\n/* harmony import */ var _work__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./work */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/work.js\");\n\nvar LayoutWorker = function LayoutWorker(workerScriptURL) {\n if (workerScriptURL === void 0) {\n workerScriptURL = 'https://unpkg.com/@antv/layout@latest/dist/layout.min.js';\n }\n\n function workerCode() {\n var LAYOUT_MESSAGE = {\n // run layout\n RUN: 'LAYOUT_RUN',\n // layout ended with success\n END: 'LAYOUT_END',\n // layout error\n ERROR: 'LAYOUT_ERROR',\n // layout tick, used in force directed layout\n TICK: 'LAYOUT_TICK',\n GPURUN: 'GPU_LAYOUT_RUN',\n GPUEND: 'GPU_LAYOUT_END'\n }; // @ts-ignore\n\n layout.registerLayout('grid', layout.GridLayout); // @ts-ignore\n\n layout.registerLayout('random', layout.RandomLayout); // @ts-ignore\n\n layout.registerLayout('force', layout.ForceLayout); // @ts-ignore\n\n layout.registerLayout('circular', layout.CircularLayout); // @ts-ignore\n\n layout.registerLayout('dagre', layout.DagreLayout); // @ts-ignore\n\n layout.registerLayout('radial', layout.RadialLayout); // @ts-ignore\n\n layout.registerLayout('concentric', layout.ConcentricLayout); // @ts-ignore\n\n layout.registerLayout('mds', layout.MDSLayout); // @ts-ignore\n\n layout.registerLayout('fruchterman', layout.FruchtermanLayout); // @ts-ignore\n\n layout.registerLayout('fruchterman-gpu', layout.FruchtermanGPULayout); // @ts-ignore\n\n layout.registerLayout('gForce', layout.GForceLayout); // @ts-ignore\n\n layout.registerLayout('gForce-gpu', layout.GForceGPULayout); // @ts-ignore\n\n layout.registerLayout('comboForce', layout.ComboForceLayout); // @ts-ignore\n\n layout.registerLayout('forceAtlas2', layout.ForceAtlas2Layout);\n\n function isLayoutMessage(event) {\n var type = event.data.type;\n return type === LAYOUT_MESSAGE.RUN || type === LAYOUT_MESSAGE.GPURUN;\n }\n\n function handleLayoutMessage(event) {\n var _this = this;\n\n var type = event.data.type;\n\n switch (type) {\n case LAYOUT_MESSAGE.RUN:\n {\n var _a = event.data,\n nodes_1 = _a.nodes,\n edges = _a.edges,\n _b = _a.layoutCfg,\n layoutCfg = _b === void 0 ? {} : _b;\n var layoutType = layoutCfg.type; // @ts-ignore\n\n var LayoutClass = layout.getLayoutByName(layoutType);\n\n if (!LayoutClass) {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \" + layoutType + \" not found\"\n });\n break;\n }\n\n var layoutMethod_1;\n\n layoutCfg.onLayoutEnd = function () {\n _this.postMessage({\n type: LAYOUT_MESSAGE.END,\n nodes: nodes_1\n });\n\n layoutMethod_1 === null || layoutMethod_1 === void 0 ? void 0 : layoutMethod_1.destroy();\n };\n\n layoutMethod_1 = new LayoutClass(layoutCfg);\n layoutMethod_1.init({\n nodes: nodes_1,\n edges: edges\n });\n layoutMethod_1.execute();\n break;\n }\n\n case LAYOUT_MESSAGE.GPURUN:\n {\n var _c = event.data,\n nodes = _c.nodes,\n edges = _c.edges,\n _d = _c.layoutCfg,\n layoutCfg = _d === void 0 ? {} : _d,\n canvas = _c.canvas;\n var layoutType = layoutCfg.type; // @ts-ignore\n\n var LayoutClass = layout.getLayoutByName(layoutType);\n\n if (!LayoutClass) {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \" + layoutType + \" not found\"\n });\n break;\n }\n\n if (layoutType.split('-')[1] !== 'gpu') {\n this.postMessage({\n type: LAYOUT_MESSAGE.ERROR,\n message: \"layout \" + layoutType + \" does not support GPU\"\n });\n break;\n }\n\n var layoutMethod = new LayoutClass(layoutCfg);\n layoutMethod.init({\n nodes: nodes,\n edges: edges\n });\n layoutMethod.executeWithWorker(canvas, this);\n break;\n }\n\n default:\n break;\n }\n }\n\n onmessage = function onmessage(event) {\n if (isLayoutMessage(event)) {\n handleLayoutMessage(event);\n }\n };\n }\n\n var layoutWorker = new _work__WEBPACK_IMPORTED_MODULE_0__[\"default\"](workerCode, workerScriptURL);\n return layoutWorker;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC93b3JrZXIvbGF5b3V0Lndvcmtlci5qcz80MTMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUErQjtBQUN4QjtBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLHFEQUFxRDs7QUFFckQseURBQXlEOztBQUV6RCx1REFBdUQ7O0FBRXZELDZEQUE2RDs7QUFFN0QsdURBQXVEOztBQUV2RCx5REFBeUQ7O0FBRXpELGlFQUFpRTs7QUFFakUsbURBQW1EOztBQUVuRCxtRUFBbUU7O0FBRW5FLDBFQUEwRTs7QUFFMUUseURBQXlEOztBQUV6RCxnRUFBZ0U7O0FBRWhFLGlFQUFpRTs7QUFFakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5Qyw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBLDRDQUE0Qzs7QUFFNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLDZDQUFTO0FBQ2xDO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC93b3JrZXIvbGF5b3V0Lndvcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXZWJXb3JrZXIgZnJvbSAnLi93b3JrJztcbmV4cG9ydCB2YXIgTGF5b3V0V29ya2VyID0gZnVuY3Rpb24gTGF5b3V0V29ya2VyKHdvcmtlclNjcmlwdFVSTCkge1xuICBpZiAod29ya2VyU2NyaXB0VVJMID09PSB2b2lkIDApIHtcbiAgICB3b3JrZXJTY3JpcHRVUkwgPSAnaHR0cHM6Ly91bnBrZy5jb20vQGFudHYvbGF5b3V0QGxhdGVzdC9kaXN0L2xheW91dC5taW4uanMnO1xuICB9XG5cbiAgZnVuY3Rpb24gd29ya2VyQ29kZSgpIHtcbiAgICB2YXIgTEFZT1VUX01FU1NBR0UgPSB7XG4gICAgICAvLyBydW4gbGF5b3V0XG4gICAgICBSVU46ICdMQVlPVVRfUlVOJyxcbiAgICAgIC8vIGxheW91dCBlbmRlZCB3aXRoIHN1Y2Nlc3NcbiAgICAgIEVORDogJ0xBWU9VVF9FTkQnLFxuICAgICAgLy8gbGF5b3V0IGVycm9yXG4gICAgICBFUlJPUjogJ0xBWU9VVF9FUlJPUicsXG4gICAgICAvLyBsYXlvdXQgdGljaywgdXNlZCBpbiBmb3JjZSBkaXJlY3RlZCBsYXlvdXRcbiAgICAgIFRJQ0s6ICdMQVlPVVRfVElDSycsXG4gICAgICBHUFVSVU46ICdHUFVfTEFZT1VUX1JVTicsXG4gICAgICBHUFVFTkQ6ICdHUFVfTEFZT1VUX0VORCdcbiAgICB9OyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ2dyaWQnLCBsYXlvdXQuR3JpZExheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgncmFuZG9tJywgbGF5b3V0LlJhbmRvbUxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZm9yY2UnLCBsYXlvdXQuRm9yY2VMYXlvdXQpOyAvLyBAdHMtaWdub3JlXG5cbiAgICBsYXlvdXQucmVnaXN0ZXJMYXlvdXQoJ2NpcmN1bGFyJywgbGF5b3V0LkNpcmN1bGFyTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdkYWdyZScsIGxheW91dC5EYWdyZUxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgncmFkaWFsJywgbGF5b3V0LlJhZGlhbExheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnY29uY2VudHJpYycsIGxheW91dC5Db25jZW50cmljTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdtZHMnLCBsYXlvdXQuTURTTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdmcnVjaHRlcm1hbicsIGxheW91dC5GcnVjaHRlcm1hbkxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnZnJ1Y2h0ZXJtYW4tZ3B1JywgbGF5b3V0LkZydWNodGVybWFuR1BVTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdnRm9yY2UnLCBsYXlvdXQuR0ZvcmNlTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdnRm9yY2UtZ3B1JywgbGF5b3V0LkdGb3JjZUdQVUxheW91dCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIGxheW91dC5yZWdpc3RlckxheW91dCgnY29tYm9Gb3JjZScsIGxheW91dC5Db21ib0ZvcmNlTGF5b3V0KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgbGF5b3V0LnJlZ2lzdGVyTGF5b3V0KCdmb3JjZUF0bGFzMicsIGxheW91dC5Gb3JjZUF0bGFzMkxheW91dCk7XG5cbiAgICBmdW5jdGlvbiBpc0xheW91dE1lc3NhZ2UoZXZlbnQpIHtcbiAgICAgIHZhciB0eXBlID0gZXZlbnQuZGF0YS50eXBlO1xuICAgICAgcmV0dXJuIHR5cGUgPT09IExBWU9VVF9NRVNTQUdFLlJVTiB8fCB0eXBlID09PSBMQVlPVVRfTUVTU0FHRS5HUFVSVU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlTGF5b3V0TWVzc2FnZShldmVudCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHR5cGUgPSBldmVudC5kYXRhLnR5cGU7XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIExBWU9VVF9NRVNTQUdFLlJVTjpcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YXIgX2EgPSBldmVudC5kYXRhLFxuICAgICAgICAgICAgICAgIG5vZGVzXzEgPSBfYS5ub2RlcyxcbiAgICAgICAgICAgICAgICBlZGdlcyA9IF9hLmVkZ2VzLFxuICAgICAgICAgICAgICAgIF9iID0gX2EubGF5b3V0Q2ZnLFxuICAgICAgICAgICAgICAgIGxheW91dENmZyA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iO1xuICAgICAgICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICB2YXIgTGF5b3V0Q2xhc3MgPSBsYXlvdXQuZ2V0TGF5b3V0QnlOYW1lKGxheW91dFR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIUxheW91dENsYXNzKSB7XG4gICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIHR5cGU6IExBWU9VVF9NRVNTQUdFLkVSUk9SLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwibGF5b3V0IFwiICsgbGF5b3V0VHlwZSArIFwiIG5vdCBmb3VuZFwiXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGxheW91dE1ldGhvZF8xO1xuXG4gICAgICAgICAgICBsYXlvdXRDZmcub25MYXlvdXRFbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5FTkQsXG4gICAgICAgICAgICAgICAgbm9kZXM6IG5vZGVzXzFcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgbGF5b3V0TWV0aG9kXzEgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kXzEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dE1ldGhvZF8xLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxheW91dE1ldGhvZF8xID0gbmV3IExheW91dENsYXNzKGxheW91dENmZyk7XG4gICAgICAgICAgICBsYXlvdXRNZXRob2RfMS5pbml0KHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGVzXzEsXG4gICAgICAgICAgICAgIGVkZ2VzOiBlZGdlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsYXlvdXRNZXRob2RfMS5leGVjdXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBMQVlPVVRfTUVTU0FHRS5HUFVSVU46XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIF9jID0gZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICBub2RlcyA9IF9jLm5vZGVzLFxuICAgICAgICAgICAgICAgIGVkZ2VzID0gX2MuZWRnZXMsXG4gICAgICAgICAgICAgICAgX2QgPSBfYy5sYXlvdXRDZmcsXG4gICAgICAgICAgICAgICAgbGF5b3V0Q2ZnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2QsXG4gICAgICAgICAgICAgICAgY2FudmFzID0gX2MuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICB2YXIgTGF5b3V0Q2xhc3MgPSBsYXlvdXQuZ2V0TGF5b3V0QnlOYW1lKGxheW91dFR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIUxheW91dENsYXNzKSB7XG4gICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIHR5cGU6IExBWU9VVF9NRVNTQUdFLkVSUk9SLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwibGF5b3V0IFwiICsgbGF5b3V0VHlwZSArIFwiIG5vdCBmb3VuZFwiXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxheW91dFR5cGUuc3BsaXQoJy0nKVsxXSAhPT0gJ2dwdScpIHtcbiAgICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgdHlwZTogTEFZT1VUX01FU1NBR0UuRVJST1IsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXCJsYXlvdXQgXCIgKyBsYXlvdXRUeXBlICsgXCIgZG9lcyBub3Qgc3VwcG9ydCBHUFVcIlxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBsYXlvdXRNZXRob2QgPSBuZXcgTGF5b3V0Q2xhc3MobGF5b3V0Q2ZnKTtcbiAgICAgICAgICAgIGxheW91dE1ldGhvZC5pbml0KHtcbiAgICAgICAgICAgICAgbm9kZXM6IG5vZGVzLFxuICAgICAgICAgICAgICBlZGdlczogZWRnZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGF5b3V0TWV0aG9kLmV4ZWN1dGVXaXRoV29ya2VyKGNhbnZhcywgdGhpcyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvbm1lc3NhZ2UgPSBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZlbnQpIHtcbiAgICAgIGlmIChpc0xheW91dE1lc3NhZ2UoZXZlbnQpKSB7XG4gICAgICAgIGhhbmRsZUxheW91dE1lc3NhZ2UoZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB2YXIgbGF5b3V0V29ya2VyID0gbmV3IFdlYldvcmtlcih3b3JrZXJDb2RlLCB3b3JrZXJTY3JpcHRVUkwpO1xuICByZXR1cm4gbGF5b3V0V29ya2VyO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layout.worker.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layoutConst.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layoutConst.js ***! \*************************************************************************************/ /*! exports provided: LAYOUT_MESSAGE */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LAYOUT_MESSAGE\", function() { return LAYOUT_MESSAGE; });\n/**\n * @fileoverview constants for layout\n * @author changzhe.zb@antfin.com\n */\n\n/** layout message type */\nvar LAYOUT_MESSAGE = {\n // run layout\n RUN: 'LAYOUT_RUN',\n // layout ended with success\n END: 'LAYOUT_END',\n // layout error\n ERROR: 'LAYOUT_ERROR',\n // layout tick, used in force directed layout\n TICK: 'LAYOUT_TICK',\n GPURUN: 'GPU_LAYOUT_RUN',\n GPUEND: 'GPU_LAYOUT_END'\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC93b3JrZXIvbGF5b3V0Q29uc3QuanM/MjA2ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC93b3JrZXIvbGF5b3V0Q29uc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgY29uc3RhbnRzIGZvciBsYXlvdXRcbiAqIEBhdXRob3IgY2hhbmd6aGUuemJAYW50ZmluLmNvbVxuICovXG5cbi8qKiBsYXlvdXQgbWVzc2FnZSB0eXBlICovXG5leHBvcnQgdmFyIExBWU9VVF9NRVNTQUdFID0ge1xuICAvLyBydW4gbGF5b3V0XG4gIFJVTjogJ0xBWU9VVF9SVU4nLFxuICAvLyBsYXlvdXQgZW5kZWQgd2l0aCBzdWNjZXNzXG4gIEVORDogJ0xBWU9VVF9FTkQnLFxuICAvLyBsYXlvdXQgZXJyb3JcbiAgRVJST1I6ICdMQVlPVVRfRVJST1InLFxuICAvLyBsYXlvdXQgdGljaywgdXNlZCBpbiBmb3JjZSBkaXJlY3RlZCBsYXlvdXRcbiAgVElDSzogJ0xBWU9VVF9USUNLJyxcbiAgR1BVUlVOOiAnR1BVX0xBWU9VVF9SVU4nLFxuICBHUFVFTkQ6ICdHUFVfTEFZT1VUX0VORCdcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/layoutConst.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/work.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/work.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar WebWorker =\n/** @class */\nfunction () {\n function WebWorker(worker, workerScirptURL) {\n var code = worker.toString();\n var blob = new Blob([\"importScripts('\" + workerScirptURL + \"');(\" + code + \")()\"], {\n type: 'text/javascript'\n });\n return new Worker(URL.createObjectURL(blob));\n }\n\n return WebWorker;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (WebWorker);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2xheW91dC93b3JrZXIvd29yay5qcz9kMDNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyx3RUFBUyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvbGF5b3V0L3dvcmtlci93b3JrLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFdlYldvcmtlciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYldvcmtlcih3b3JrZXIsIHdvcmtlclNjaXJwdFVSTCkge1xuICAgIHZhciBjb2RlID0gd29ya2VyLnRvU3RyaW5nKCk7XG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbXCJpbXBvcnRTY3JpcHRzKCdcIiArIHdvcmtlclNjaXJwdFVSTCArIFwiJyk7KFwiICsgY29kZSArIFwiKSgpXCJdLCB7XG4gICAgICB0eXBlOiAndGV4dC9qYXZhc2NyaXB0J1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikpO1xuICB9XG5cbiAgcmV0dXJuIFdlYldvcmtlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgV2ViV29ya2VyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/layout/worker/work.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/plugin/index.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/plugin/index.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_plugin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-plugin */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_antv_g6_plugin__WEBPACK_IMPORTED_MODULE_0__[\"default\"]); // export default {};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3BsdWdpbi9pbmRleC5qcz81M2ZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBcUM7QUFDdEIsc0hBQU0sRUFBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvcGx1Z2luL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBsdWdpbiBmcm9tICdAYW50di9nNi1wbHVnaW4nO1xuZXhwb3J0IGRlZmF1bHQgUGx1Z2luOyAvLyBleHBvcnQgZGVmYXVsdCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/plugin/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/types/index.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/types/index.js ***! \***********************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3R5cGVzL2luZGV4LmpzPzQ4YTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3R5cGVzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/types/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/color.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/color.js ***! \**********************************************************************/ /*! exports provided: mixColor, getColorsWithSubjectColor, getColorSetsBySubjectColors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mixColor\", function() { return mixColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorsWithSubjectColor\", function() { return getColorsWithSubjectColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorSetsBySubjectColors\", function() { return getColorSetsBySubjectColors; });\n/* harmony import */ var color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! color */ \"./node_modules/_color@3.2.1@color/index.js\");\n/* harmony import */ var color__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(color__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ant_design_colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ant-design/colors */ \"./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js\");\n\n\n/**\n * get the mix color of backColor and frontColor with alpah\n * @param backColor background color\n * @param frontColor foreground color\n * @param frontAlpha the opacity of foreground color\n */\n\nvar mixColor = function mixColor(backColor, frontColor, frontAlpha) {\n var bc = color__WEBPACK_IMPORTED_MODULE_0___default()(backColor);\n var fc = color__WEBPACK_IMPORTED_MODULE_0___default()(frontColor);\n return color__WEBPACK_IMPORTED_MODULE_0___default()([(1 - frontAlpha) * bc.red() + frontAlpha * fc.red(), (1 - frontAlpha) * bc.green() + frontAlpha * fc.green(), (1 - frontAlpha) * bc.blue() + frontAlpha * fc.blue()]).rgb();\n};\n\nvar getColorsWithDefaultTheme = function getColorsWithDefaultTheme(subjectColor, backColor, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n\n var subjectColor005 = mixColor(backColor, subjectColor, 0.05).rgb().toString();\n var subjectColor01 = mixColor(backColor, subjectColor, 0.1).rgb().toString();\n var subjectColor02 = mixColor(backColor, subjectColor, 0.2).rgb().toString();\n var subjectColor04 = mixColor(backColor, subjectColor, 0.4).rgb().toString();\n var disableColor002 = mixColor(backColor, disableColor, 0.02).rgb().toString();\n var disableColor005 = mixColor(backColor, disableColor, 0.05).rgb().toString();\n var disableColor01 = mixColor(backColor, disableColor, 0.1).rgb().toString();\n var disableColor02 = mixColor(backColor, disableColor, 0.2).rgb().toString();\n var disableColor03 = mixColor(backColor, disableColor, 0.3).rgb().toString();\n var paletteFromSubject = Object(_ant_design_colors__WEBPACK_IMPORTED_MODULE_1__[\"generate\"])(subjectColor, {\n theme: 'default',\n backgroundColor: backColor\n });\n var subjectHex = color__WEBPACK_IMPORTED_MODULE_0___default()(subjectColor).hex().toLowerCase();\n var subjectIdx = paletteFromSubject.indexOf(subjectHex);\n var deeperSubject = subjectColor;\n\n if (subjectIdx !== -1) {\n deeperSubject = paletteFromSubject[subjectIdx + 1];\n }\n\n return {\n // for nodes\n mainStroke: subjectColor,\n mainFill: subjectColor01,\n activeStroke: subjectColor,\n activeFill: subjectColor005,\n inactiveStroke: subjectColor04,\n inactiveFill: subjectColor005,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: deeperSubject,\n highlightFill: subjectColor02,\n disableStroke: disableColor03,\n disableFill: disableColor005,\n // for edges\n edgeMainStroke: disableColor03,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: disableColor02,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: disableColor01,\n // for combos\n comboMainStroke: disableColor03,\n comboMainFill: disableColor002,\n comboActiveStroke: subjectColor,\n comboActiveFill: subjectColor005,\n comboInactiveStroke: disableColor03,\n comboInactiveFill: disableColor002,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: disableColor002,\n comboHighlightStroke: deeperSubject,\n comboHighlightFill: disableColor002,\n comboDisableStroke: disableColor02,\n comboDisableFill: disableColor005\n };\n};\n\nvar getColorsWithDarkTheme = function getColorsWithDarkTheme(subjectColor, backColor, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (disableColor === void 0) {\n disableColor = '#777';\n }\n\n var subjectColor02 = mixColor(backColor, subjectColor, 0.2).rgb().toString();\n var subjectColor03 = mixColor(backColor, subjectColor, 0.3).rgb().toString();\n var subjectColor06 = mixColor(backColor, subjectColor, 0.6).rgb().toString();\n var subjectColor08 = mixColor(backColor, subjectColor, 0.8).rgb().toString();\n var disableColor02 = mixColor(backColor, disableColor, 0.2).rgb().toString();\n var disableColor025 = mixColor(backColor, disableColor, 0.25).rgb().toString();\n var disableColor03 = mixColor(backColor, disableColor, 0.3).rgb().toString();\n var disableColor04 = mixColor(backColor, disableColor, 0.4).rgb().toString();\n var disableColor05 = mixColor(backColor, disableColor, 0.5).rgb().toString();\n var paletteFromSubject = Object(_ant_design_colors__WEBPACK_IMPORTED_MODULE_1__[\"generate\"])(subjectColor, {\n theme: 'dark',\n backgroundColor: backColor\n });\n var subjectHex = color__WEBPACK_IMPORTED_MODULE_0___default()(subjectColor).hex().toLowerCase();\n var subjectIdx = paletteFromSubject.indexOf(subjectHex);\n var deeperSubject = subjectColor;\n\n if (subjectIdx !== -1) {\n deeperSubject = paletteFromSubject[subjectIdx + 1];\n }\n\n return {\n // for nodes\n mainStroke: subjectColor08,\n mainFill: subjectColor02,\n activeStroke: subjectColor,\n activeFill: subjectColor03,\n inactiveStroke: subjectColor08,\n inactiveFill: subjectColor02,\n selectedStroke: subjectColor,\n selectedFill: subjectColor02,\n highlightStroke: subjectColor,\n highlightFill: subjectColor06,\n disableStroke: disableColor05,\n disableFill: disableColor025,\n // for edges\n edgeMainStroke: disableColor,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: disableColor,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: disableColor03,\n // for combos\n comboMainStroke: disableColor04,\n comboMainFill: disableColor025,\n comboActiveStroke: subjectColor,\n comboActiveFill: disableColor02,\n comboInactiveStroke: disableColor04,\n comboInactiveFill: disableColor025,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: disableColor02,\n comboHighlightStroke: deeperSubject,\n comboHighlightFill: disableColor025,\n comboDisableStroke: disableColor04,\n comboDisableFill: disableColor02\n };\n};\n/**\n * get the set of colors according to the subject color and background color\n * @param subjectColor the subject color\n * @param backColor background color\n * @param disableColor the color for disable state\n */\n\n\nvar getColorsWithSubjectColor = function getColorsWithSubjectColor(subjectColor, backColor, theme, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (theme === void 0) {\n theme = 'default';\n }\n\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n\n if (theme === 'default') return getColorsWithDefaultTheme(subjectColor, backColor, 'rgb(150, 150, 150)');\n return getColorsWithDarkTheme(subjectColor, backColor, '#777');\n};\nvar getColorSetsBySubjectColors = function getColorSetsBySubjectColors(subjectColors, backColor, theme, disableColor) {\n if (backColor === void 0) {\n backColor = '#fff';\n }\n\n if (theme === void 0) {\n theme = 'default';\n }\n\n if (disableColor === void 0) {\n disableColor = 'rgb(150, 150, 150)';\n }\n\n var sets = [];\n subjectColors.forEach(function (sColor) {\n sets.push(getColorsWithSubjectColor(sColor, backColor, theme, disableColor));\n });\n return sets;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3V0aWwvY29sb3IuanM/YWUxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUNvQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxXQUFXLDRDQUFLO0FBQ2hCLFdBQVcsNENBQUs7QUFDaEIsU0FBUyw0Q0FBSztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbUVBQVE7QUFDbkM7QUFDQTtBQUNBLEdBQUc7QUFDSCxtQkFBbUIsNENBQUs7QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsbUVBQVE7QUFDbkM7QUFDQTtBQUNBLEdBQUc7QUFDSCxtQkFBbUIsNENBQUs7QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3V0aWwvY29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3IgZnJvbSAnY29sb3InO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tICdAYW50LWRlc2lnbi9jb2xvcnMnO1xuLyoqXG4gKiBnZXQgdGhlIG1peCBjb2xvciBvZiBiYWNrQ29sb3IgYW5kIGZyb250Q29sb3Igd2l0aCBhbHBhaFxuICogQHBhcmFtIGJhY2tDb2xvciBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAcGFyYW0gZnJvbnRDb2xvciBmb3JlZ3JvdW5kIGNvbG9yXG4gKiBAcGFyYW0gZnJvbnRBbHBoYSB0aGUgb3BhY2l0eSBvZiBmb3JlZ3JvdW5kIGNvbG9yXG4gKi9cblxuZXhwb3J0IHZhciBtaXhDb2xvciA9IGZ1bmN0aW9uIG1peENvbG9yKGJhY2tDb2xvciwgZnJvbnRDb2xvciwgZnJvbnRBbHBoYSkge1xuICB2YXIgYmMgPSBjb2xvcihiYWNrQ29sb3IpO1xuICB2YXIgZmMgPSBjb2xvcihmcm9udENvbG9yKTtcbiAgcmV0dXJuIGNvbG9yKFsoMSAtIGZyb250QWxwaGEpICogYmMucmVkKCkgKyBmcm9udEFscGhhICogZmMucmVkKCksICgxIC0gZnJvbnRBbHBoYSkgKiBiYy5ncmVlbigpICsgZnJvbnRBbHBoYSAqIGZjLmdyZWVuKCksICgxIC0gZnJvbnRBbHBoYSkgKiBiYy5ibHVlKCkgKyBmcm9udEFscGhhICogZmMuYmx1ZSgpXSkucmdiKCk7XG59O1xuXG52YXIgZ2V0Q29sb3JzV2l0aERlZmF1bHRUaGVtZSA9IGZ1bmN0aW9uIGdldENvbG9yc1dpdGhEZWZhdWx0VGhlbWUoc3ViamVjdENvbG9yLCBiYWNrQ29sb3IsIGRpc2FibGVDb2xvcikge1xuICBpZiAoYmFja0NvbG9yID09PSB2b2lkIDApIHtcbiAgICBiYWNrQ29sb3IgPSAnI2ZmZic7XG4gIH1cblxuICBpZiAoZGlzYWJsZUNvbG9yID09PSB2b2lkIDApIHtcbiAgICBkaXNhYmxlQ29sb3IgPSAncmdiKDE1MCwgMTUwLCAxNTApJztcbiAgfVxuXG4gIHZhciBzdWJqZWN0Q29sb3IwMDUgPSBtaXhDb2xvcihiYWNrQ29sb3IsIHN1YmplY3RDb2xvciwgMC4wNSkucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIHN1YmplY3RDb2xvcjAxID0gbWl4Q29sb3IoYmFja0NvbG9yLCBzdWJqZWN0Q29sb3IsIDAuMSkucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIHN1YmplY3RDb2xvcjAyID0gbWl4Q29sb3IoYmFja0NvbG9yLCBzdWJqZWN0Q29sb3IsIDAuMikucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIHN1YmplY3RDb2xvcjA0ID0gbWl4Q29sb3IoYmFja0NvbG9yLCBzdWJqZWN0Q29sb3IsIDAuNCkucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIGRpc2FibGVDb2xvcjAwMiA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjAyKS5yZ2IoKS50b1N0cmluZygpO1xuICB2YXIgZGlzYWJsZUNvbG9yMDA1ID0gbWl4Q29sb3IoYmFja0NvbG9yLCBkaXNhYmxlQ29sb3IsIDAuMDUpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMSA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjEpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMiA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjIpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMyA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjMpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBwYWxldHRlRnJvbVN1YmplY3QgPSBnZW5lcmF0ZShzdWJqZWN0Q29sb3IsIHtcbiAgICB0aGVtZTogJ2RlZmF1bHQnLFxuICAgIGJhY2tncm91bmRDb2xvcjogYmFja0NvbG9yXG4gIH0pO1xuICB2YXIgc3ViamVjdEhleCA9IGNvbG9yKHN1YmplY3RDb2xvcikuaGV4KCkudG9Mb3dlckNhc2UoKTtcbiAgdmFyIHN1YmplY3RJZHggPSBwYWxldHRlRnJvbVN1YmplY3QuaW5kZXhPZihzdWJqZWN0SGV4KTtcbiAgdmFyIGRlZXBlclN1YmplY3QgPSBzdWJqZWN0Q29sb3I7XG5cbiAgaWYgKHN1YmplY3RJZHggIT09IC0xKSB7XG4gICAgZGVlcGVyU3ViamVjdCA9IHBhbGV0dGVGcm9tU3ViamVjdFtzdWJqZWN0SWR4ICsgMV07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIGZvciBub2Rlc1xuICAgIG1haW5TdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBtYWluRmlsbDogc3ViamVjdENvbG9yMDEsXG4gICAgYWN0aXZlU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgYWN0aXZlRmlsbDogc3ViamVjdENvbG9yMDA1LFxuICAgIGluYWN0aXZlU3Ryb2tlOiBzdWJqZWN0Q29sb3IwNCxcbiAgICBpbmFjdGl2ZUZpbGw6IHN1YmplY3RDb2xvcjAwNSxcbiAgICBzZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIHNlbGVjdGVkRmlsbDogYmFja0NvbG9yLFxuICAgIGhpZ2hsaWdodFN0cm9rZTogZGVlcGVyU3ViamVjdCxcbiAgICBoaWdobGlnaHRGaWxsOiBzdWJqZWN0Q29sb3IwMixcbiAgICBkaXNhYmxlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMyxcbiAgICBkaXNhYmxlRmlsbDogZGlzYWJsZUNvbG9yMDA1LFxuICAgIC8vIGZvciBlZGdlc1xuICAgIGVkZ2VNYWluU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMyxcbiAgICBlZGdlQWN0aXZlU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgZWRnZUluYWN0aXZlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMixcbiAgICBlZGdlU2VsZWN0ZWRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBlZGdlSGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgZWRnZURpc2FibGVTdHJva2U6IGRpc2FibGVDb2xvcjAxLFxuICAgIC8vIGZvciBjb21ib3NcbiAgICBjb21ib01haW5TdHJva2U6IGRpc2FibGVDb2xvcjAzLFxuICAgIGNvbWJvTWFpbkZpbGw6IGRpc2FibGVDb2xvcjAwMixcbiAgICBjb21ib0FjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGNvbWJvQWN0aXZlRmlsbDogc3ViamVjdENvbG9yMDA1LFxuICAgIGNvbWJvSW5hY3RpdmVTdHJva2U6IGRpc2FibGVDb2xvcjAzLFxuICAgIGNvbWJvSW5hY3RpdmVGaWxsOiBkaXNhYmxlQ29sb3IwMDIsXG4gICAgY29tYm9TZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGNvbWJvU2VsZWN0ZWRGaWxsOiBkaXNhYmxlQ29sb3IwMDIsXG4gICAgY29tYm9IaWdobGlnaHRTdHJva2U6IGRlZXBlclN1YmplY3QsXG4gICAgY29tYm9IaWdobGlnaHRGaWxsOiBkaXNhYmxlQ29sb3IwMDIsXG4gICAgY29tYm9EaXNhYmxlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwMixcbiAgICBjb21ib0Rpc2FibGVGaWxsOiBkaXNhYmxlQ29sb3IwMDVcbiAgfTtcbn07XG5cbnZhciBnZXRDb2xvcnNXaXRoRGFya1RoZW1lID0gZnVuY3Rpb24gZ2V0Q29sb3JzV2l0aERhcmtUaGVtZShzdWJqZWN0Q29sb3IsIGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yKSB7XG4gIGlmIChiYWNrQ29sb3IgPT09IHZvaWQgMCkge1xuICAgIGJhY2tDb2xvciA9ICcjZmZmJztcbiAgfVxuXG4gIGlmIChkaXNhYmxlQ29sb3IgPT09IHZvaWQgMCkge1xuICAgIGRpc2FibGVDb2xvciA9ICcjNzc3JztcbiAgfVxuXG4gIHZhciBzdWJqZWN0Q29sb3IwMiA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjIpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBzdWJqZWN0Q29sb3IwMyA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjMpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBzdWJqZWN0Q29sb3IwNiA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjYpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBzdWJqZWN0Q29sb3IwOCA9IG1peENvbG9yKGJhY2tDb2xvciwgc3ViamVjdENvbG9yLCAwLjgpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMiA9IG1peENvbG9yKGJhY2tDb2xvciwgZGlzYWJsZUNvbG9yLCAwLjIpLnJnYigpLnRvU3RyaW5nKCk7XG4gIHZhciBkaXNhYmxlQ29sb3IwMjUgPSBtaXhDb2xvcihiYWNrQ29sb3IsIGRpc2FibGVDb2xvciwgMC4yNSkucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIGRpc2FibGVDb2xvcjAzID0gbWl4Q29sb3IoYmFja0NvbG9yLCBkaXNhYmxlQ29sb3IsIDAuMykucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIGRpc2FibGVDb2xvcjA0ID0gbWl4Q29sb3IoYmFja0NvbG9yLCBkaXNhYmxlQ29sb3IsIDAuNCkucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIGRpc2FibGVDb2xvcjA1ID0gbWl4Q29sb3IoYmFja0NvbG9yLCBkaXNhYmxlQ29sb3IsIDAuNSkucmdiKCkudG9TdHJpbmcoKTtcbiAgdmFyIHBhbGV0dGVGcm9tU3ViamVjdCA9IGdlbmVyYXRlKHN1YmplY3RDb2xvciwge1xuICAgIHRoZW1lOiAnZGFyaycsXG4gICAgYmFja2dyb3VuZENvbG9yOiBiYWNrQ29sb3JcbiAgfSk7XG4gIHZhciBzdWJqZWN0SGV4ID0gY29sb3Ioc3ViamVjdENvbG9yKS5oZXgoKS50b0xvd2VyQ2FzZSgpO1xuICB2YXIgc3ViamVjdElkeCA9IHBhbGV0dGVGcm9tU3ViamVjdC5pbmRleE9mKHN1YmplY3RIZXgpO1xuICB2YXIgZGVlcGVyU3ViamVjdCA9IHN1YmplY3RDb2xvcjtcblxuICBpZiAoc3ViamVjdElkeCAhPT0gLTEpIHtcbiAgICBkZWVwZXJTdWJqZWN0ID0gcGFsZXR0ZUZyb21TdWJqZWN0W3N1YmplY3RJZHggKyAxXTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gZm9yIG5vZGVzXG4gICAgbWFpblN0cm9rZTogc3ViamVjdENvbG9yMDgsXG4gICAgbWFpbkZpbGw6IHN1YmplY3RDb2xvcjAyLFxuICAgIGFjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGFjdGl2ZUZpbGw6IHN1YmplY3RDb2xvcjAzLFxuICAgIGluYWN0aXZlU3Ryb2tlOiBzdWJqZWN0Q29sb3IwOCxcbiAgICBpbmFjdGl2ZUZpbGw6IHN1YmplY3RDb2xvcjAyLFxuICAgIHNlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgc2VsZWN0ZWRGaWxsOiBzdWJqZWN0Q29sb3IwMixcbiAgICBoaWdobGlnaHRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBoaWdobGlnaHRGaWxsOiBzdWJqZWN0Q29sb3IwNixcbiAgICBkaXNhYmxlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwNSxcbiAgICBkaXNhYmxlRmlsbDogZGlzYWJsZUNvbG9yMDI1LFxuICAgIC8vIGZvciBlZGdlc1xuICAgIGVkZ2VNYWluU3Ryb2tlOiBkaXNhYmxlQ29sb3IsXG4gICAgZWRnZUFjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGVkZ2VJbmFjdGl2ZVN0cm9rZTogZGlzYWJsZUNvbG9yLFxuICAgIGVkZ2VTZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICAgIGVkZ2VIaWdobGlnaHRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBlZGdlRGlzYWJsZVN0cm9rZTogZGlzYWJsZUNvbG9yMDMsXG4gICAgLy8gZm9yIGNvbWJvc1xuICAgIGNvbWJvTWFpblN0cm9rZTogZGlzYWJsZUNvbG9yMDQsXG4gICAgY29tYm9NYWluRmlsbDogZGlzYWJsZUNvbG9yMDI1LFxuICAgIGNvbWJvQWN0aXZlU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gICAgY29tYm9BY3RpdmVGaWxsOiBkaXNhYmxlQ29sb3IwMixcbiAgICBjb21ib0luYWN0aXZlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwNCxcbiAgICBjb21ib0luYWN0aXZlRmlsbDogZGlzYWJsZUNvbG9yMDI1LFxuICAgIGNvbWJvU2VsZWN0ZWRTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgICBjb21ib1NlbGVjdGVkRmlsbDogZGlzYWJsZUNvbG9yMDIsXG4gICAgY29tYm9IaWdobGlnaHRTdHJva2U6IGRlZXBlclN1YmplY3QsXG4gICAgY29tYm9IaWdobGlnaHRGaWxsOiBkaXNhYmxlQ29sb3IwMjUsXG4gICAgY29tYm9EaXNhYmxlU3Ryb2tlOiBkaXNhYmxlQ29sb3IwNCxcbiAgICBjb21ib0Rpc2FibGVGaWxsOiBkaXNhYmxlQ29sb3IwMlxuICB9O1xufTtcbi8qKlxuICogZ2V0IHRoZSBzZXQgb2YgY29sb3JzIGFjY29yZGluZyB0byB0aGUgc3ViamVjdCBjb2xvciBhbmQgYmFja2dyb3VuZCBjb2xvclxuICogQHBhcmFtIHN1YmplY3RDb2xvciB0aGUgc3ViamVjdCBjb2xvclxuICogQHBhcmFtIGJhY2tDb2xvciBiYWNrZ3JvdW5kIGNvbG9yXG4gKiBAcGFyYW0gZGlzYWJsZUNvbG9yIHRoZSBjb2xvciBmb3IgZGlzYWJsZSBzdGF0ZVxuICovXG5cblxuZXhwb3J0IHZhciBnZXRDb2xvcnNXaXRoU3ViamVjdENvbG9yID0gZnVuY3Rpb24gZ2V0Q29sb3JzV2l0aFN1YmplY3RDb2xvcihzdWJqZWN0Q29sb3IsIGJhY2tDb2xvciwgdGhlbWUsIGRpc2FibGVDb2xvcikge1xuICBpZiAoYmFja0NvbG9yID09PSB2b2lkIDApIHtcbiAgICBiYWNrQ29sb3IgPSAnI2ZmZic7XG4gIH1cblxuICBpZiAodGhlbWUgPT09IHZvaWQgMCkge1xuICAgIHRoZW1lID0gJ2RlZmF1bHQnO1xuICB9XG5cbiAgaWYgKGRpc2FibGVDb2xvciA9PT0gdm9pZCAwKSB7XG4gICAgZGlzYWJsZUNvbG9yID0gJ3JnYigxNTAsIDE1MCwgMTUwKSc7XG4gIH1cblxuICBpZiAodGhlbWUgPT09ICdkZWZhdWx0JykgcmV0dXJuIGdldENvbG9yc1dpdGhEZWZhdWx0VGhlbWUoc3ViamVjdENvbG9yLCBiYWNrQ29sb3IsICdyZ2IoMTUwLCAxNTAsIDE1MCknKTtcbiAgcmV0dXJuIGdldENvbG9yc1dpdGhEYXJrVGhlbWUoc3ViamVjdENvbG9yLCBiYWNrQ29sb3IsICcjNzc3Jyk7XG59O1xuZXhwb3J0IHZhciBnZXRDb2xvclNldHNCeVN1YmplY3RDb2xvcnMgPSBmdW5jdGlvbiBnZXRDb2xvclNldHNCeVN1YmplY3RDb2xvcnMoc3ViamVjdENvbG9ycywgYmFja0NvbG9yLCB0aGVtZSwgZGlzYWJsZUNvbG9yKSB7XG4gIGlmIChiYWNrQ29sb3IgPT09IHZvaWQgMCkge1xuICAgIGJhY2tDb2xvciA9ICcjZmZmJztcbiAgfVxuXG4gIGlmICh0aGVtZSA9PT0gdm9pZCAwKSB7XG4gICAgdGhlbWUgPSAnZGVmYXVsdCc7XG4gIH1cblxuICBpZiAoZGlzYWJsZUNvbG9yID09PSB2b2lkIDApIHtcbiAgICBkaXNhYmxlQ29sb3IgPSAncmdiKDE1MCwgMTUwLCAxNTApJztcbiAgfVxuXG4gIHZhciBzZXRzID0gW107XG4gIHN1YmplY3RDb2xvcnMuZm9yRWFjaChmdW5jdGlvbiAoc0NvbG9yKSB7XG4gICAgc2V0cy5wdXNoKGdldENvbG9yc1dpdGhTdWJqZWN0Q29sb3Ioc0NvbG9yLCBiYWNrQ29sb3IsIHRoZW1lLCBkaXNhYmxlQ29sb3IpKTtcbiAgfSk7XG4gIHJldHVybiBzZXRzO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/color.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/gpu.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/gpu.js ***! \********************************************************************/ /*! exports provided: gpuDetector */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gpuDetector\", function() { return gpuDetector; });\n/**\n * 调用 gpuDetector.webgl 判断当前浏览器是否支持 webgl。(支持 gpgpu 的浏览器一定也支持 webgl)\n */\nvar gpuDetector = function gpuDetector() {\n if (typeof window === 'undefined' || typeof document === 'undefined') return {};\n return {\n canvas: !!window.CanvasRenderingContext2D,\n webgl: function () {\n try {\n var canvas = document.createElement('canvas');\n return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));\n } catch (e) {\n return false;\n }\n }(),\n workers: !!window.Worker,\n fileapi: window.File && window.FileReader && window.FileList && window.Blob,\n getWebGLErrorMessage: function getWebGLErrorMessage() {\n var element = document.createElement('div');\n element.id = 'webgl-error-message';\n element.style.fontFamily = 'monospace';\n element.style.fontSize = '13px';\n element.style.fontWeight = 'normal';\n element.style.textAlign = 'center';\n element.style.background = '#fff';\n element.style.color = '#000';\n element.style.padding = '1.5em';\n element.style.width = '400px';\n element.style.margin = '5em auto 0';\n\n if (!this.webgl) {\n element.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support WebGL.
', 'Find out how to get it here.'].join('\\n') : ['Your browser does not seem to support WebGL.
', 'Find out how to get it here.'].join('\\n');\n }\n\n return element;\n },\n addGetWebGLMessage: function addGetWebGLMessage(parameters) {\n parameters = parameters || {};\n var parent = parameters.parent !== undefined ? parameters.parent : document.body;\n var id = parameters.id !== undefined ? parameters.id : 'oldie';\n var element = gpuDetector().getWebGLErrorMessage();\n element.id = id;\n parent.appendChild(element);\n }\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3V0aWwvZ3B1LmpzP2Q1NjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvdXRpbC9ncHUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOiwg+eUqCBncHVEZXRlY3Rvci53ZWJnbCDliKTmlq3lvZPliY3mtY/op4jlmajmmK/lkKbmlK/mjIEgd2ViZ2zjgILvvIjmlK/mjIEgZ3BncHUg55qE5rWP6KeI5Zmo5LiA5a6a5Lmf5pSv5oyBIHdlYmds77yJXG4gKi9cbmV4cG9ydCB2YXIgZ3B1RGV0ZWN0b3IgPSBmdW5jdGlvbiBncHVEZXRlY3RvcigpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB7fTtcbiAgcmV0dXJuIHtcbiAgICBjYW52YXM6ICEhd2luZG93LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICB3ZWJnbDogZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICByZXR1cm4gISEod2luZG93LldlYkdMUmVuZGVyaW5nQ29udGV4dCAmJiAoY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJykgfHwgY2FudmFzLmdldENvbnRleHQoJ2V4cGVyaW1lbnRhbC13ZWJnbCcpKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KCksXG4gICAgd29ya2VyczogISF3aW5kb3cuV29ya2VyLFxuICAgIGZpbGVhcGk6IHdpbmRvdy5GaWxlICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5GaWxlTGlzdCAmJiB3aW5kb3cuQmxvYixcbiAgICBnZXRXZWJHTEVycm9yTWVzc2FnZTogZnVuY3Rpb24gZ2V0V2ViR0xFcnJvck1lc3NhZ2UoKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgZWxlbWVudC5pZCA9ICd3ZWJnbC1lcnJvci1tZXNzYWdlJztcbiAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9ICdtb25vc3BhY2UnO1xuICAgICAgZWxlbWVudC5zdHlsZS5mb250U2l6ZSA9ICcxM3B4JztcbiAgICAgIGVsZW1lbnQuc3R5bGUuZm9udFdlaWdodCA9ICdub3JtYWwnO1xuICAgICAgZWxlbWVudC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmJztcbiAgICAgIGVsZW1lbnQuc3R5bGUuY29sb3IgPSAnIzAwMCc7XG4gICAgICBlbGVtZW50LnN0eWxlLnBhZGRpbmcgPSAnMS41ZW0nO1xuICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9ICc0MDBweCc7XG4gICAgICBlbGVtZW50LnN0eWxlLm1hcmdpbiA9ICc1ZW0gYXV0byAwJztcblxuICAgICAgaWYgKCF0aGlzLndlYmdsKSB7XG4gICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gd2luZG93LldlYkdMUmVuZGVyaW5nQ29udGV4dCA/IFsnWW91ciBncmFwaGljcyBjYXJkIGRvZXMgbm90IHNlZW0gdG8gc3VwcG9ydCA8YSBocmVmPVwiaHR0cDovL2tocm9ub3Mub3JnL3dlYmdsL3dpa2kvR2V0dGluZ19hX1dlYkdMX0ltcGxlbWVudGF0aW9uXCIgcmVsPVwiZXh0ZXJuYWwgbm9mb2xsb3dcIiByZWw9XCJleHRlcm5hbCBub2ZvbGxvd1wiIHN0eWxlPVwiY29sb3I6IzAwMFwiPldlYkdMPC9hPi48YnIgLz4nLCAnRmluZCBvdXQgaG93IHRvIGdldCBpdCA8YSBocmVmPVwiaHR0cDovL2dldC53ZWJnbC5vcmcvXCIgcmVsPVwiZXh0ZXJuYWwgbm9mb2xsb3dcIiByZWw9XCJleHRlcm5hbCBub2ZvbGxvd1wiIHN0eWxlPVwiY29sb3I6IzAwMFwiPmhlcmU8L2E+LiddLmpvaW4oJ1xcbicpIDogWydZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc2VlbSB0byBzdXBwb3J0IDxhIGhyZWY9XCJodHRwOi8va2hyb25vcy5vcmcvd2ViZ2wvd2lraS9HZXR0aW5nX2FfV2ViR0xfSW1wbGVtZW50YXRpb25cIiByZWw9XCJleHRlcm5hbCBub2ZvbGxvd1wiIHJlbD1cImV4dGVybmFsIG5vZm9sbG93XCIgc3R5bGU9XCJjb2xvcjojMDAwXCI+V2ViR0w8L2E+Ljxici8+JywgJ0ZpbmQgb3V0IGhvdyB0byBnZXQgaXQgPGEgaHJlZj1cImh0dHA6Ly9nZXQud2ViZ2wub3JnL1wiIHJlbD1cImV4dGVybmFsIG5vZm9sbG93XCIgcmVsPVwiZXh0ZXJuYWwgbm9mb2xsb3dcIiBzdHlsZT1cImNvbG9yOiMwMDBcIj5oZXJlPC9hPi4nXS5qb2luKCdcXG4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSxcbiAgICBhZGRHZXRXZWJHTE1lc3NhZ2U6IGZ1bmN0aW9uIGFkZEdldFdlYkdMTWVzc2FnZShwYXJhbWV0ZXJzKSB7XG4gICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcbiAgICAgIHZhciBwYXJlbnQgPSBwYXJhbWV0ZXJzLnBhcmVudCAhPT0gdW5kZWZpbmVkID8gcGFyYW1ldGVycy5wYXJlbnQgOiBkb2N1bWVudC5ib2R5O1xuICAgICAgdmFyIGlkID0gcGFyYW1ldGVycy5pZCAhPT0gdW5kZWZpbmVkID8gcGFyYW1ldGVycy5pZCA6ICdvbGRpZSc7XG4gICAgICB2YXIgZWxlbWVudCA9IGdwdURldGVjdG9yKCkuZ2V0V2ViR0xFcnJvck1lc3NhZ2UoKTtcbiAgICAgIGVsZW1lbnQuaWQgPSBpZDtcbiAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICB9XG4gIH07XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/gpu.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/color.js\");\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layout */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/layout.js\");\n/* harmony import */ var _gpu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./gpu */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/gpu.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\n\n\n\nvar G6Util = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_4__[\"Util\"]), _color__WEBPACK_IMPORTED_MODULE_1__), _layout__WEBPACK_IMPORTED_MODULE_2__), _gpu__WEBPACK_IMPORTED_MODULE_3__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (G6Util);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3V0aWwvaW5kZXguanM/ZDM3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSTtBQUNFO0FBQ047QUFDSTs7QUFFckMsYUFBYSxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLEVBQUUsa0RBQUksR0FBRyxtQ0FBUyxHQUFHLG9DQUFVLEdBQUcsaUNBQU87O0FBRTdFLHFFQUFNIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy91dGlsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIENvbG9yVXRpbCBmcm9tICcuL2NvbG9yJztcbmltcG9ydCAqIGFzIExheW91dFV0aWwgZnJvbSAnLi9sYXlvdXQnO1xuaW1wb3J0ICogYXMgR3B1VXRpbCBmcm9tICcuL2dwdSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5cbnZhciBHNlV0aWwgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgVXRpbCksIENvbG9yVXRpbCksIExheW91dFV0aWwpLCBHcHVVdGlsKTtcblxuZXhwb3J0IGRlZmF1bHQgRzZVdGlsOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/layout.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/layout.js ***! \***********************************************************************/ /*! exports provided: proccessToFunc, buildTextureData, buildTextureDataWithOneEdgeAttr, buildTextureDataWithTwoEdgeAttr, attributesToTextureData, arrayToTextureData, radialLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"proccessToFunc\", function() { return proccessToFunc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureData\", function() { return buildTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureDataWithOneEdgeAttr\", function() { return buildTextureDataWithOneEdgeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureDataWithTwoEdgeAttr\", function() { return buildTextureDataWithTwoEdgeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attributesToTextureData\", function() { return attributesToTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arrayToTextureData\", function() { return arrayToTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radialLayout\", function() { return radialLayout; });\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar traverseTree = _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].traverseTree;\n/**\n * 将 number | Function 类型的参数转换为 return number 的 Function\n * @param {number | Function} value 需要被转换的值\n * @param {number} defaultV 返回函数的默认返回值\n * @return {Function} 转换后的函数\n */\n\nvar proccessToFunc = function proccessToFunc(value, defaultV) {\n var func;\n\n if (!value) {\n func = function func(d) {\n return defaultV || 1;\n };\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n func = function func(d) {\n return value;\n };\n } else {\n func = value;\n }\n\n return func;\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 需要被转换的值\n * @param {EdgeConfig[]} edges 返回函数的默认返回值\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\n\nvar buildTextureData = function buildTextureData(nodes, edges) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n }\n\n var maxEdgePerVetex = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i];\n var len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = dests.length;\n maxEdgePerVetex = Math.max(maxEdgePerVetex, dests.length);\n\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n }\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 节点数组\n * @param {EdgeConfig[]} edges 边数组\n * @param {Function} attrs 读取边属性的函数\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\n\nvar buildTextureDataWithOneEdgeAttr = function buildTextureDataWithOneEdgeAttr(nodes, edges, attrs) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n }\n\n var maxEdgePerVetex = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n\n var len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数\n\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);\n\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n } // 不是 4 的倍数,填充 0\n\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 节点数组\n * @param {EdgeConfig[]} edges 边数组\n * @param {Function} attrs 读取边属性的函数\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\n\nvar buildTextureDataWithTwoEdgeAttr = function buildTextureDataWithTwoEdgeAttr(nodes, edges, attrs1, attrs2) {\n var dataArray = [];\n var nodeDict = [];\n var mapIdPos = {};\n var i = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n\n for (i = 0; i < edges.length; i++) {\n var e = edges[i];\n nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n nodeDict[mapIdPos[e.source]].push(attrs1(e));\n nodeDict[mapIdPos[e.source]].push(attrs2(e));\n nodeDict[mapIdPos[e.source]].push(0);\n nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n nodeDict[mapIdPos[e.target]].push(attrs1(e));\n nodeDict[mapIdPos[e.target]].push(attrs2(e));\n nodeDict[mapIdPos[e.target]].push(0);\n }\n\n var maxEdgePerVetex = 0;\n\n for (i = 0; i < nodes.length; i++) {\n var offset = dataArray.length;\n var dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n\n var len = dests.length; // dataArray[i * 4 + 2] = offset;\n // dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数\n // pack offset & length into float32: offset 20bit, length 12bit\n\n dataArray[i * 4 + 2] = offset + 1048576 * len / 4;\n dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值\n\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);\n\n for (var j = 0; j < len; ++j) {\n var dest = dests[j];\n dataArray.push(+dest);\n }\n } // 不是 4 的倍数,填充 0\n\n\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n\n return {\n array: new Float32Array(dataArray),\n maxEdgePerVetex: maxEdgePerVetex\n };\n};\n/**\n * transform the extended attributes of nodes or edges to a texture array\n * @param {string[]} attributeNames attributes' name to be read from items and put into output array\n * @param {ModelConfig[]} items the items to be read\n * @return {Float32Array} the attributes' value array to be read by GPU\n */\n\nvar attributesToTextureData = function attributesToTextureData(attributeNames, items) {\n var dataArray = [];\n var attributeNum = attributeNames.length;\n var attributteStringMap = {};\n items.forEach(function (item) {\n attributeNames.forEach(function (name, i) {\n if (attributteStringMap[item[name]] === undefined) {\n attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;\n }\n\n dataArray.push(attributteStringMap[item[name]]); // insure each node's attributes take inter number of grids\n\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n });\n return {\n array: new Float32Array(dataArray),\n count: Object.keys(attributteStringMap).length\n };\n};\n/**\n * transform the number array format of extended attributes of nodes or edges to a texture array\n * @param {string[]} attributeNames attributes' name to be read from items and put into output array\n * @return {Float32Array} the attributes' value array to be read by GPU\n */\n\nvar arrayToTextureData = function arrayToTextureData(valueArrays) {\n var dataArray = [];\n var attributeNum = valueArrays.length;\n var itemNum = valueArrays[0].length;\n\n var _loop_1 = function _loop_1(j) {\n valueArrays.forEach(function (valueArray, i) {\n dataArray.push(valueArray[j]); // insure each node's attributes take inter number of grids\n\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n };\n\n for (var j = 0; j < itemNum; j++) {\n _loop_1(j);\n }\n\n return new Float32Array(dataArray);\n};\n/**\n *\n * @param data Tree graph data\n * @param layout\n */\n\nvar radialLayout = function radialLayout(data, layout) {\n // 布局方式有 H / V / LR / RL / TB / BT\n var VERTICAL_LAYOUTS = ['V', 'TB', 'BT'];\n var min = {\n x: Infinity,\n y: Infinity\n };\n var max = {\n x: -Infinity,\n y: -Infinity\n }; // 默认布局是垂直布局TB,此时x对应rad,y对应r\n\n var rScale = 'x';\n var radScale = 'y';\n\n if (layout && VERTICAL_LAYOUTS.indexOf(layout) >= 0) {\n // 若是水平布局,y对应rad,x对应r\n radScale = 'x';\n rScale = 'y';\n }\n\n var count = 0;\n traverseTree(data, function (node) {\n count++;\n\n if (node.x > max.x) {\n max.x = node.x;\n }\n\n if (node.x < min.x) {\n min.x = node.x;\n }\n\n if (node.y > max.y) {\n max.y = node.y;\n }\n\n if (node.y < min.y) {\n min.y = node.y;\n }\n\n return true;\n });\n var avgRad = Math.PI * 2 / count;\n var radDiff = max[radScale] - min[radScale];\n\n if (radDiff === 0) {\n return data;\n }\n\n traverseTree(data, function (node) {\n var radial = (node[radScale] - min[radScale]) / radDiff * (Math.PI * 2 - avgRad) + avgRad;\n var r = Math.abs(rScale === 'x' ? node.x - data.x : node.y - data.y);\n node.x = r * Math.cos(radial);\n node.y = r * Math.sin(radial);\n return true;\n });\n return data;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3V0aWwvbGF5b3V0LmpzPzljZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDQztBQUN0QyxtQkFBbUIsa0RBQUk7QUFDdkI7QUFDQTtBQUNBLFlBQVksa0JBQWtCO0FBQzlCLFlBQVksT0FBTztBQUNuQixZQUFZLFNBQVM7QUFDckI7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsVUFBVSwyREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksYUFBYTtBQUN6QixZQUFZLGFBQWE7QUFDekIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxrQkFBa0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCLFlBQVksYUFBYTtBQUN6QixZQUFZLFNBQVM7QUFDckIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxrQkFBa0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBLGdEQUFnRDtBQUNoRDs7QUFFQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkM7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCLFlBQVksYUFBYTtBQUN6QixZQUFZLFNBQVM7QUFDckIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxrQkFBa0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBLDRCQUE0Qjs7QUFFNUIsMkJBQTJCO0FBQzNCLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBLDZCQUE2Qjs7QUFFN0I7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCLFlBQVksY0FBYztBQUMxQixZQUFZLGFBQWE7QUFDekI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNEQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVM7QUFDckIsWUFBWSxhQUFhO0FBQ3pCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsaUJBQWlCLGFBQWE7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL3V0aWwvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0cmF2ZXJzZVRyZWUgPSBVdGlsLnRyYXZlcnNlVHJlZTtcbi8qKlxuICog5bCGIG51bWJlciB8IEZ1bmN0aW9uIOexu+Wei+eahOWPguaVsOi9rOaNouS4uiByZXR1cm4gbnVtYmVyIOeahCBGdW5jdGlvblxuICogQHBhcmFtICB7bnVtYmVyIHwgRnVuY3Rpb259ICB2YWx1ZSDpnIDopoHooqvovazmjaLnmoTlgLxcbiAqIEBwYXJhbSAge251bWJlcn0gIGRlZmF1bHRWIOi/lOWbnuWHveaVsOeahOm7mOiupOi/lOWbnuWAvFxuICogQHJldHVybiB7RnVuY3Rpb259IOi9rOaNouWQjueahOWHveaVsFxuICovXG5cbmV4cG9ydCB2YXIgcHJvY2Nlc3NUb0Z1bmMgPSBmdW5jdGlvbiBwcm9jY2Vzc1RvRnVuYyh2YWx1ZSwgZGVmYXVsdFYpIHtcbiAgdmFyIGZ1bmM7XG5cbiAgaWYgKCF2YWx1ZSkge1xuICAgIGZ1bmMgPSBmdW5jdGlvbiBmdW5jKGQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0ViB8fCAxO1xuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgZnVuYyA9IGZ1bmN0aW9uIGZ1bmMoZCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZnVuYyA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmM7XG59O1xuLyoqXG4gKiDlsIboioLngrnlkozovrnmlbDmja7ovazmjaLkuLogR1BVIOWPr+ivu+eahOaVsOe7hOOAguW5tui/lOWbniBtYXhFZGdlUGVyVmV0ZXjvvIzmr4/kuKroioLngrnkuIrmnIDlpJrnmoTovrnmlbBcbiAqIEBwYXJhbSAge05vZGVDb25maWdbXX0gIG5vZGVzIOmcgOimgeiiq+i9rOaNoueahOWAvFxuICogQHBhcmFtICB7RWRnZUNvbmZpZ1tdfSAgZWRnZXMg6L+U5Zue5Ye95pWw55qE6buY6K6k6L+U5Zue5YC8XG4gKiBAcmV0dXJuIHtPYmplY3R9IOi9rOaNouWQjueahOaVsOe7hOWPiiBtYXhFZGdlUGVyVmV0ZXgg57uE5oiQ55qE5a+56LGhXG4gKi9cblxuZXhwb3J0IHZhciBidWlsZFRleHR1cmVEYXRhID0gZnVuY3Rpb24gYnVpbGRUZXh0dXJlRGF0YShub2RlcywgZWRnZXMpIHtcbiAgdmFyIGRhdGFBcnJheSA9IFtdO1xuICB2YXIgbm9kZURpY3QgPSBbXTtcbiAgdmFyIG1hcElkUG9zID0ge307XG4gIHZhciBpID0gMDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbiA9IG5vZGVzW2ldO1xuICAgIG1hcElkUG9zW24uaWRdID0gaTtcbiAgICBkYXRhQXJyYXkucHVzaChuLngpO1xuICAgIGRhdGFBcnJheS5wdXNoKG4ueSk7XG4gICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgbm9kZURpY3QucHVzaChbXSk7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2Uuc291cmNlXV0ucHVzaChtYXBJZFBvc1tlLnRhcmdldF0pO1xuICAgIG5vZGVEaWN0W21hcElkUG9zW2UudGFyZ2V0XV0ucHVzaChtYXBJZFBvc1tlLnNvdXJjZV0pO1xuICB9XG5cbiAgdmFyIG1heEVkZ2VQZXJWZXRleCA9IDA7XG5cbiAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG9mZnNldCA9IGRhdGFBcnJheS5sZW5ndGg7XG4gICAgdmFyIGRlc3RzID0gbm9kZURpY3RbaV07XG4gICAgdmFyIGxlbiA9IGRlc3RzLmxlbmd0aDtcbiAgICBkYXRhQXJyYXlbaSAqIDQgKyAyXSA9IG9mZnNldDtcbiAgICBkYXRhQXJyYXlbaSAqIDQgKyAzXSA9IGRlc3RzLmxlbmd0aDtcbiAgICBtYXhFZGdlUGVyVmV0ZXggPSBNYXRoLm1heChtYXhFZGdlUGVyVmV0ZXgsIGRlc3RzLmxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICB2YXIgZGVzdCA9IGRlc3RzW2pdO1xuICAgICAgZGF0YUFycmF5LnB1c2goK2Rlc3QpO1xuICAgIH1cbiAgfVxuXG4gIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgIG1heEVkZ2VQZXJWZXRleDogbWF4RWRnZVBlclZldGV4XG4gIH07XG59O1xuLyoqXG4gKiDlsIboioLngrnlkozovrnmlbDmja7ovazmjaLkuLogR1BVIOWPr+ivu+eahOaVsOe7hO+8jOavj+adoei+ueW4puacieS4gOS4quWxnuaAp+OAguW5tui/lOWbniBtYXhFZGdlUGVyVmV0ZXjvvIzmr4/kuKroioLngrnkuIrmnIDlpJrnmoTovrnmlbBcbiAqIEBwYXJhbSAge05vZGVDb25maWdbXX0gIG5vZGVzIOiKgueCueaVsOe7hFxuICogQHBhcmFtICB7RWRnZUNvbmZpZ1tdfSAgZWRnZXMg6L655pWw57uEXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gIGF0dHJzIOivu+WPlui+ueWxnuaAp+eahOWHveaVsFxuICogQHJldHVybiB7T2JqZWN0fSDovazmjaLlkI7nmoTmlbDnu4Tlj4ogbWF4RWRnZVBlclZldGV4IOe7hOaIkOeahOWvueixoVxuICovXG5cbmV4cG9ydCB2YXIgYnVpbGRUZXh0dXJlRGF0YVdpdGhPbmVFZGdlQXR0ciA9IGZ1bmN0aW9uIGJ1aWxkVGV4dHVyZURhdGFXaXRoT25lRWRnZUF0dHIobm9kZXMsIGVkZ2VzLCBhdHRycykge1xuICB2YXIgZGF0YUFycmF5ID0gW107XG4gIHZhciBub2RlRGljdCA9IFtdO1xuICB2YXIgbWFwSWRQb3MgPSB7fTtcbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuID0gbm9kZXNbaV07XG4gICAgbWFwSWRQb3Nbbi5pZF0gPSBpO1xuICAgIGRhdGFBcnJheS5wdXNoKG4ueCk7XG4gICAgZGF0YUFycmF5LnB1c2gobi55KTtcbiAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICBub2RlRGljdC5wdXNoKFtdKTtcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlID0gZWRnZXNbaV07XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKG1hcElkUG9zW2UudGFyZ2V0XSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKGF0dHJzKGUpKTsgLy8g55CG5oOz6L656ZW/77yM5ZCO57ut5Y+v5Lul5pS55oiQ5q+P5p2h6L655LiN5ZCMXG5cbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnRhcmdldF1dLnB1c2gobWFwSWRQb3NbZS5zb3VyY2VdKTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnRhcmdldF1dLnB1c2goYXR0cnMoZSkpOyAvLyDnkIbmg7Povrnplb/vvIzlkI7nu63lj6/ku6XmlLnmiJDmr4/mnaHovrnkuI3lkIxcbiAgfVxuXG4gIHZhciBtYXhFZGdlUGVyVmV0ZXggPSAwO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBvZmZzZXQgPSBkYXRhQXJyYXkubGVuZ3RoO1xuICAgIHZhciBkZXN0cyA9IG5vZGVEaWN0W2ldOyAvLyBkZXN0IOS4reiKgueCuSBpZCDkuI7ovrnplb/pl7TpmpTlrZjlgqjvvIzljbPkuIDkvY3oioLngrkgaWTvvIzkuIDkvY3ovrnplb/igKbigKZcblxuICAgIHZhciBsZW4gPSBkZXN0cy5sZW5ndGg7XG4gICAgZGF0YUFycmF5W2kgKiA0ICsgMl0gPSBvZmZzZXQ7XG4gICAgZGF0YUFycmF5W2kgKiA0ICsgM10gPSBsZW4gLyAyOyAvLyDnrKzlm5vkvY3lrZjlgqjkuI7or6XoioLngrnnm7jlhbPnmoTmiYDmnInoioLngrnkuKrmlbBcblxuICAgIG1heEVkZ2VQZXJWZXRleCA9IE1hdGgubWF4KG1heEVkZ2VQZXJWZXRleCwgbGVuIC8gMik7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICB2YXIgZGVzdCA9IGRlc3RzW2pdO1xuICAgICAgZGF0YUFycmF5LnB1c2goK2Rlc3QpO1xuICAgIH1cbiAgfSAvLyDkuI3mmK8gNCDnmoTlgI3mlbDvvIzloavlhYUgMFxuXG5cbiAgd2hpbGUgKGRhdGFBcnJheS5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgZGF0YUFycmF5LnB1c2goMCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFycmF5OiBuZXcgRmxvYXQzMkFycmF5KGRhdGFBcnJheSksXG4gICAgbWF4RWRnZVBlclZldGV4OiBtYXhFZGdlUGVyVmV0ZXhcbiAgfTtcbn07XG4vKipcbiAqIOWwhuiKgueCueWSjOi+ueaVsOaNrui9rOaNouS4uiBHUFUg5Y+v6K+755qE5pWw57uE77yM5q+P5p2h6L655bim5pyJ5LiA5Liq5Lul5LiK5bGe5oCn44CC5bm26L+U5ZueIG1heEVkZ2VQZXJWZXRleO+8jOavj+S4quiKgueCueS4iuacgOWkmueahOi+ueaVsFxuICogQHBhcmFtICB7Tm9kZUNvbmZpZ1tdfSAgbm9kZXMg6IqC54K55pWw57uEXG4gKiBAcGFyYW0gIHtFZGdlQ29uZmlnW119ICBlZGdlcyDovrnmlbDnu4RcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSAgYXR0cnMg6K+75Y+W6L655bGe5oCn55qE5Ye95pWwXG4gKiBAcmV0dXJuIHtPYmplY3R9IOi9rOaNouWQjueahOaVsOe7hOWPiiBtYXhFZGdlUGVyVmV0ZXgg57uE5oiQ55qE5a+56LGhXG4gKi9cblxuZXhwb3J0IHZhciBidWlsZFRleHR1cmVEYXRhV2l0aFR3b0VkZ2VBdHRyID0gZnVuY3Rpb24gYnVpbGRUZXh0dXJlRGF0YVdpdGhUd29FZGdlQXR0cihub2RlcywgZWRnZXMsIGF0dHJzMSwgYXR0cnMyKSB7XG4gIHZhciBkYXRhQXJyYXkgPSBbXTtcbiAgdmFyIG5vZGVEaWN0ID0gW107XG4gIHZhciBtYXBJZFBvcyA9IHt9O1xuICB2YXIgaSA9IDA7XG5cbiAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG4gPSBub2Rlc1tpXTtcbiAgICBtYXBJZFBvc1tuLmlkXSA9IGk7XG4gICAgZGF0YUFycmF5LnB1c2gobi54KTtcbiAgICBkYXRhQXJyYXkucHVzaChuLnkpO1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgIG5vZGVEaWN0LnB1c2goW10pO1xuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGUgPSBlZGdlc1tpXTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnNvdXJjZV1dLnB1c2gobWFwSWRQb3NbZS50YXJnZXRdKTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnNvdXJjZV1dLnB1c2goYXR0cnMxKGUpKTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnNvdXJjZV1dLnB1c2goYXR0cnMyKGUpKTtcbiAgICBub2RlRGljdFttYXBJZFBvc1tlLnNvdXJjZV1dLnB1c2goMCk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKG1hcElkUG9zW2Uuc291cmNlXSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKGF0dHJzMShlKSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKGF0dHJzMihlKSk7XG4gICAgbm9kZURpY3RbbWFwSWRQb3NbZS50YXJnZXRdXS5wdXNoKDApO1xuICB9XG5cbiAgdmFyIG1heEVkZ2VQZXJWZXRleCA9IDA7XG5cbiAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG9mZnNldCA9IGRhdGFBcnJheS5sZW5ndGg7XG4gICAgdmFyIGRlc3RzID0gbm9kZURpY3RbaV07IC8vIGRlc3Qg5Lit6IqC54K5IGlkIOS4jui+uemVv+mXtOmalOWtmOWCqO+8jOWNs+S4gOS9jeiKgueCuSBpZO+8jOS4gOS9jei+uemVv+KApuKAplxuXG4gICAgdmFyIGxlbiA9IGRlc3RzLmxlbmd0aDsgLy8gZGF0YUFycmF5W2kgKiA0ICsgMl0gPSBvZmZzZXQ7XG4gICAgLy8gZGF0YUFycmF5W2kgKiA0ICsgM10gPSBsZW4gLyA0OyAvLyDnrKzlm5vkvY3lrZjlgqjkuI7or6XoioLngrnnm7jlhbPnmoTmiYDmnInoioLngrnkuKrmlbBcbiAgICAvLyBwYWNrIG9mZnNldCAmIGxlbmd0aCBpbnRvIGZsb2F0MzI6IG9mZnNldCAyMGJpdCwgbGVuZ3RoIDEyYml0XG5cbiAgICBkYXRhQXJyYXlbaSAqIDQgKyAyXSA9IG9mZnNldCArIDEwNDg1NzYgKiBsZW4gLyA0O1xuICAgIGRhdGFBcnJheVtpICogNCArIDNdID0gMDsgLy8g56ys5Zub5L2N5a2Y5YKo5LiO5LiK5LiA5qyh55qE6Led56a75beu5YC8XG5cbiAgICBtYXhFZGdlUGVyVmV0ZXggPSBNYXRoLm1heChtYXhFZGdlUGVyVmV0ZXgsIGxlbiAvIDQpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47ICsraikge1xuICAgICAgdmFyIGRlc3QgPSBkZXN0c1tqXTtcbiAgICAgIGRhdGFBcnJheS5wdXNoKCtkZXN0KTtcbiAgICB9XG4gIH0gLy8g5LiN5pivIDQg55qE5YCN5pWw77yM5aGr5YWFIDBcblxuXG4gIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgIG1heEVkZ2VQZXJWZXRleDogbWF4RWRnZVBlclZldGV4XG4gIH07XG59O1xuLyoqXG4gKiB0cmFuc2Zvcm0gdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2Ygbm9kZXMgb3IgZWRnZXMgdG8gYSB0ZXh0dXJlIGFycmF5XG4gKiBAcGFyYW0gIHtzdHJpbmdbXX0gIGF0dHJpYnV0ZU5hbWVzIGF0dHJpYnV0ZXMnIG5hbWUgdG8gYmUgcmVhZCBmcm9tIGl0ZW1zIGFuZCBwdXQgaW50byBvdXRwdXQgYXJyYXlcbiAqIEBwYXJhbSAge01vZGVsQ29uZmlnW119ICBpdGVtcyB0aGUgaXRlbXMgdG8gYmUgcmVhZFxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSB0aGUgYXR0cmlidXRlcycgdmFsdWUgYXJyYXkgdG8gYmUgcmVhZCBieSBHUFVcbiAqL1xuXG5leHBvcnQgdmFyIGF0dHJpYnV0ZXNUb1RleHR1cmVEYXRhID0gZnVuY3Rpb24gYXR0cmlidXRlc1RvVGV4dHVyZURhdGEoYXR0cmlidXRlTmFtZXMsIGl0ZW1zKSB7XG4gIHZhciBkYXRhQXJyYXkgPSBbXTtcbiAgdmFyIGF0dHJpYnV0ZU51bSA9IGF0dHJpYnV0ZU5hbWVzLmxlbmd0aDtcbiAgdmFyIGF0dHJpYnV0dGVTdHJpbmdNYXAgPSB7fTtcbiAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGF0dHJpYnV0ZU5hbWVzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGkpIHtcbiAgICAgIGlmIChhdHRyaWJ1dHRlU3RyaW5nTWFwW2l0ZW1bbmFtZV1dID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXR0cmlidXR0ZVN0cmluZ01hcFtpdGVtW25hbWVdXSA9IE9iamVjdC5rZXlzKGF0dHJpYnV0dGVTdHJpbmdNYXApLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZGF0YUFycmF5LnB1c2goYXR0cmlidXR0ZVN0cmluZ01hcFtpdGVtW25hbWVdXSk7IC8vIGluc3VyZSBlYWNoIG5vZGUncyBhdHRyaWJ1dGVzIHRha2UgaW50ZXIgbnVtYmVyIG9mIGdyaWRzXG5cbiAgICAgIGlmIChpID09PSBhdHRyaWJ1dGVOdW0gLSAxKSB7XG4gICAgICAgIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGFycmF5OiBuZXcgRmxvYXQzMkFycmF5KGRhdGFBcnJheSksXG4gICAgY291bnQ6IE9iamVjdC5rZXlzKGF0dHJpYnV0dGVTdHJpbmdNYXApLmxlbmd0aFxuICB9O1xufTtcbi8qKlxuICogdHJhbnNmb3JtIHRoZSBudW1iZXIgYXJyYXkgZm9ybWF0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2Ygbm9kZXMgb3IgZWRnZXMgdG8gYSB0ZXh0dXJlIGFycmF5XG4gKiBAcGFyYW0gIHtzdHJpbmdbXX0gIGF0dHJpYnV0ZU5hbWVzIGF0dHJpYnV0ZXMnIG5hbWUgdG8gYmUgcmVhZCBmcm9tIGl0ZW1zIGFuZCBwdXQgaW50byBvdXRwdXQgYXJyYXlcbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gdGhlIGF0dHJpYnV0ZXMnIHZhbHVlIGFycmF5IHRvIGJlIHJlYWQgYnkgR1BVXG4gKi9cblxuZXhwb3J0IHZhciBhcnJheVRvVGV4dHVyZURhdGEgPSBmdW5jdGlvbiBhcnJheVRvVGV4dHVyZURhdGEodmFsdWVBcnJheXMpIHtcbiAgdmFyIGRhdGFBcnJheSA9IFtdO1xuICB2YXIgYXR0cmlidXRlTnVtID0gdmFsdWVBcnJheXMubGVuZ3RoO1xuICB2YXIgaXRlbU51bSA9IHZhbHVlQXJyYXlzWzBdLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaikge1xuICAgIHZhbHVlQXJyYXlzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlQXJyYXksIGkpIHtcbiAgICAgIGRhdGFBcnJheS5wdXNoKHZhbHVlQXJyYXlbal0pOyAvLyBpbnN1cmUgZWFjaCBub2RlJ3MgYXR0cmlidXRlcyB0YWtlIGludGVyIG51bWJlciBvZiBncmlkc1xuXG4gICAgICBpZiAoaSA9PT0gYXR0cmlidXRlTnVtIC0gMSkge1xuICAgICAgICB3aGlsZSAoZGF0YUFycmF5Lmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbU51bTsgaisrKSB7XG4gICAgX2xvb3BfMShqKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KGRhdGFBcnJheSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGRhdGEgVHJlZSBncmFwaCBkYXRhXG4gKiBAcGFyYW0gbGF5b3V0XG4gKi9cblxuZXhwb3J0IHZhciByYWRpYWxMYXlvdXQgPSBmdW5jdGlvbiByYWRpYWxMYXlvdXQoZGF0YSwgbGF5b3V0KSB7XG4gIC8vIOW4g+WxgOaWueW8j+aciSBIIC8gViAvIExSIC8gUkwgLyBUQiAvIEJUXG4gIHZhciBWRVJUSUNBTF9MQVlPVVRTID0gWydWJywgJ1RCJywgJ0JUJ107XG4gIHZhciBtaW4gPSB7XG4gICAgeDogSW5maW5pdHksXG4gICAgeTogSW5maW5pdHlcbiAgfTtcbiAgdmFyIG1heCA9IHtcbiAgICB4OiAtSW5maW5pdHksXG4gICAgeTogLUluZmluaXR5XG4gIH07IC8vIOm7mOiupOW4g+WxgOaYr+WeguebtOW4g+WxgFRC77yM5q2k5pe2eOWvueW6lHJhZO+8jHnlr7nlupRyXG5cbiAgdmFyIHJTY2FsZSA9ICd4JztcbiAgdmFyIHJhZFNjYWxlID0gJ3knO1xuXG4gIGlmIChsYXlvdXQgJiYgVkVSVElDQUxfTEFZT1VUUy5pbmRleE9mKGxheW91dCkgPj0gMCkge1xuICAgIC8vIOiLpeaYr+awtOW5s+W4g+WxgO+8jHnlr7nlupRyYWTvvIx45a+55bqUclxuICAgIHJhZFNjYWxlID0gJ3gnO1xuICAgIHJTY2FsZSA9ICd5JztcbiAgfVxuXG4gIHZhciBjb3VudCA9IDA7XG4gIHRyYXZlcnNlVHJlZShkYXRhLCBmdW5jdGlvbiAobm9kZSkge1xuICAgIGNvdW50Kys7XG5cbiAgICBpZiAobm9kZS54ID4gbWF4LngpIHtcbiAgICAgIG1heC54ID0gbm9kZS54O1xuICAgIH1cblxuICAgIGlmIChub2RlLnggPCBtaW4ueCkge1xuICAgICAgbWluLnggPSBub2RlLng7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUueSA+IG1heC55KSB7XG4gICAgICBtYXgueSA9IG5vZGUueTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS55IDwgbWluLnkpIHtcbiAgICAgIG1pbi55ID0gbm9kZS55O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgdmFyIGF2Z1JhZCA9IE1hdGguUEkgKiAyIC8gY291bnQ7XG4gIHZhciByYWREaWZmID0gbWF4W3JhZFNjYWxlXSAtIG1pbltyYWRTY2FsZV07XG5cbiAgaWYgKHJhZERpZmYgPT09IDApIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHRyYXZlcnNlVHJlZShkYXRhLCBmdW5jdGlvbiAobm9kZSkge1xuICAgIHZhciByYWRpYWwgPSAobm9kZVtyYWRTY2FsZV0gLSBtaW5bcmFkU2NhbGVdKSAvIHJhZERpZmYgKiAoTWF0aC5QSSAqIDIgLSBhdmdSYWQpICsgYXZnUmFkO1xuICAgIHZhciByID0gTWF0aC5hYnMoclNjYWxlID09PSAneCcgPyBub2RlLnggLSBkYXRhLnggOiBub2RlLnkgLSBkYXRhLnkpO1xuICAgIG5vZGUueCA9IHIgKiBNYXRoLmNvcyhyYWRpYWwpO1xuICAgIG5vZGUueSA9IHIgKiBNYXRoLnNpbihyYWRpYWwpO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/layout.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar PluginBase =\n/** @class */\nfunction () {\n /**\n * 插件基类的构造函数\n * @param cfgs 插件的配置项\n */\n function PluginBase(cfgs) {\n this._cfgs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])(this.getDefaultCfgs(), cfgs);\n this._events = {};\n this.destroyed = false;\n }\n /**\n * 获取默认的插件配置\n */\n\n\n PluginBase.prototype.getDefaultCfgs = function () {\n return {};\n };\n /**\n * 初始化插件\n * @param graph IGraph 实例\n */\n\n\n PluginBase.prototype.initPlugin = function (graph) {\n var self = this;\n self.set('graph', graph);\n var events = self.getEvents();\n var bindEvents = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (v, k) {\n var event = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"wrapBehavior\"])(self, v);\n bindEvents[k] = event;\n graph.on(k, event);\n });\n this._events = bindEvents;\n this.init();\n };\n /**\n * 获取插件中的事件和事件处理方法,供子类实现\n */\n\n\n PluginBase.prototype.getEvents = function () {\n return {};\n };\n /**\n * 获取配置项中的某个值\n * @param key 键值\n */\n\n\n PluginBase.prototype.get = function (key) {\n var _a;\n\n return (_a = this._cfgs) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 将指定的值存储到 cfgs 中\n * @param key 键值\n * @param val 设置的值\n */\n\n\n PluginBase.prototype.set = function (key, val) {\n this._cfgs[key] = val;\n };\n /**\n * 销毁方法,供子类复写\n */\n\n\n PluginBase.prototype.destroy = function () {};\n /**\n * 销毁插件\n */\n\n\n PluginBase.prototype.destroyPlugin = function () {\n this.destroy();\n var graph = this.get('graph');\n var events = this._events;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (v, k) {\n graph.off(k, v);\n });\n this._events = null;\n this._cfgs = null;\n this.destroyed = true;\n };\n\n return PluginBase;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (PluginBase);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvYmFzZS5qcz82Y2RkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUQ7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMERBQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUixrQkFBa0IsK0RBQVk7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMseUVBQVUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdyYXBCZWhhdmlvciwgZWFjaCwgZGVlcE1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuXG52YXIgUGx1Z2luQmFzZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiDmj5Lku7bln7rnsbvnmoTmnoTpgKDlh73mlbBcbiAgICogQHBhcmFtIGNmZ3Mg5o+S5Lu255qE6YWN572u6aG5XG4gICAqL1xuICBmdW5jdGlvbiBQbHVnaW5CYXNlKGNmZ3MpIHtcbiAgICB0aGlzLl9jZmdzID0gZGVlcE1peCh0aGlzLmdldERlZmF1bHRDZmdzKCksIGNmZ3MpO1xuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOiOt+WPlum7mOiupOeahOaPkuS7tumFjee9rlxuICAgKi9cblxuXG4gIFBsdWdpbkJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIneWni+WMluaPkuS7tlxuICAgKiBAcGFyYW0gZ3JhcGggSUdyYXBoIOWunuS+i1xuICAgKi9cblxuXG4gIFBsdWdpbkJhc2UucHJvdG90eXBlLmluaXRQbHVnaW4gPSBmdW5jdGlvbiAoZ3JhcGgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5zZXQoJ2dyYXBoJywgZ3JhcGgpO1xuICAgIHZhciBldmVudHMgPSBzZWxmLmdldEV2ZW50cygpO1xuICAgIHZhciBiaW5kRXZlbnRzID0ge307XG4gICAgZWFjaChldmVudHMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICB2YXIgZXZlbnQgPSB3cmFwQmVoYXZpb3Ioc2VsZiwgdik7XG4gICAgICBiaW5kRXZlbnRzW2tdID0gZXZlbnQ7XG4gICAgICBncmFwaC5vbihrLCBldmVudCk7XG4gICAgfSk7XG4gICAgdGhpcy5fZXZlbnRzID0gYmluZEV2ZW50cztcbiAgICB0aGlzLmluaXQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluaPkuS7tuS4reeahOS6i+S7tuWSjOS6i+S7tuWkhOeQhuaWueazle+8jOS+m+WtkOexu+WunueOsFxuICAgKi9cblxuXG4gIFBsdWdpbkJhc2UucHJvdG90eXBlLmdldEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bphY3nva7pobnkuK3nmoTmn5DkuKrlgLxcbiAgICogQHBhcmFtIGtleSDplK7lgLxcbiAgICovXG5cblxuICBQbHVnaW5CYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgcmV0dXJuIChfYSA9IHRoaXMuX2NmZ3MpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtrZXldO1xuICB9O1xuICAvKipcbiAgICog5bCG5oyH5a6a55qE5YC85a2Y5YKo5YiwIGNmZ3Mg5LitXG4gICAqIEBwYXJhbSBrZXkg6ZSu5YC8XG4gICAqIEBwYXJhbSB2YWwg6K6+572u55qE5YC8XG4gICAqL1xuXG5cbiAgUGx1Z2luQmFzZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsKSB7XG4gICAgdGhpcy5fY2Znc1trZXldID0gdmFsO1xuICB9O1xuICAvKipcbiAgICog6ZSA5q+B5pa55rOV77yM5L6b5a2Q57G75aSN5YaZXG4gICAqL1xuXG5cbiAgUGx1Z2luQmFzZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHt9O1xuICAvKipcbiAgICog6ZSA5q+B5o+S5Lu2XG4gICAqL1xuXG5cbiAgUGx1Z2luQmFzZS5wcm90b3R5cGUuZGVzdHJveVBsdWdpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgIGVhY2goZXZlbnRzLCBmdW5jdGlvbiAodiwgaykge1xuICAgICAgZ3JhcGgub2ZmKGssIHYpO1xuICAgIH0pO1xuICAgIHRoaXMuX2V2ZW50cyA9IG51bGw7XG4gICAgdGhpcy5fY2ZncyA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBQbHVnaW5CYXNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBQbHVnaW5CYXNlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/bundling/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/bundling/index.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\nfunction getEucliDis(pointA, pointB, eps) {\n var vx = pointA.x - pointB.x;\n var vy = pointA.y - pointB.y;\n\n if (!eps || Math.abs(vx) > eps || Math.abs(vy) > eps) {\n return Math.sqrt(vx * vx + vy * vy);\n }\n\n return eps;\n}\n\nfunction getDotProduct(ei, ej) {\n return ei.x * ej.x + ei.y * ej.y;\n}\n\nfunction projectPointToEdge(p, e) {\n var k = (e.source.y - e.target.y) / (e.source.x - e.target.x);\n var x = (k * k * e.source.x + k * (p.y - e.source.y) + p.x) / (k * k + 1);\n var y = k * (x - e.source.x) + e.source.y;\n return {\n x: x,\n y: y\n };\n}\n\nvar Bundling =\n/** @class */\nfunction (_super) {\n __extends(Bundling, _super);\n\n function Bundling(config) {\n return _super.call(this, config) || this;\n }\n\n Bundling.prototype.getDefaultCfgs = function () {\n return {\n edgeBundles: [],\n edgePoints: [],\n K: 0.1,\n lambda: 0.1,\n divisions: 1,\n divRate: 2,\n cycles: 6,\n iterations: 90,\n iterRate: 0.6666667,\n bundleThreshold: 0.6,\n eps: 1e-6,\n onLayoutEnd: function onLayoutEnd() {},\n onTick: function onTick() {}\n };\n };\n\n Bundling.prototype.init = function () {\n var graph = this.get('graph');\n var onTick = this.get('onTick');\n\n var tick = function tick() {\n if (onTick) {\n onTick();\n }\n\n graph.refreshPositions();\n };\n\n this.set('tick', tick);\n };\n\n Bundling.prototype.bundling = function (data) {\n var self = this;\n self.set('data', data); // 如果正在布局,忽略布局请求\n\n if (self.isTicking()) {\n return;\n }\n\n var edges = data.edges || [];\n var nodes = data.nodes || [];\n var nodeIdMap = {};\n var error = false;\n nodes.forEach(function (node) {\n if (node.x === null || !node.y === null || node.x === undefined || !node.y === undefined) {\n error = true;\n }\n\n nodeIdMap[node.id] = node;\n });\n if (error) throw new Error('please layout the graph or assign x and y for nodes first');\n self.set('nodeIdMap', nodeIdMap); // subdivide each edges\n\n var divisions = self.get('divisions');\n var divRate = self.get('divRate');\n var edgePoints = self.divideEdges(divisions);\n self.set('edgePoints', edgePoints); // compute the bundles\n\n var edgeBundles = self.getEdgeBundles();\n self.set('edgeBundles', edgeBundles); // iterations\n\n var C = self.get('cycles');\n var iterations = self.get('iterations');\n var iterRate = self.get('iterRate');\n var lambda = self.get('lambda');\n\n for (var i = 0; i < C; i++) {\n var _loop_1 = function _loop_1(j) {\n var forces = [];\n edges.forEach(function (e, k) {\n if (e.source === e.target) return;\n var source = nodeIdMap[e.source];\n var target = nodeIdMap[e.target];\n forces[k] = self.getEdgeForces({\n source: source,\n target: target\n }, k, divisions, lambda);\n\n for (var p = 0; p < divisions + 1; p++) {\n edgePoints[k][p].x += forces[k][p].x;\n edgePoints[k][p].y += forces[k][p].y;\n }\n });\n };\n\n for (var j = 0; j < iterations; j++) {\n _loop_1(j);\n } // parameters for nex cycle\n\n\n lambda = lambda / 2;\n divisions *= divRate;\n iterations *= iterRate;\n edgePoints = self.divideEdges(divisions);\n self.set('edgePoints', edgePoints);\n } // change the edges according to edgePoints\n\n\n edges.forEach(function (e, i) {\n if (e.source === e.target) return;\n e.type = 'polyline';\n e.controlPoints = edgePoints[i].slice(1, edgePoints[i].length - 1);\n });\n var graph = self.get('graph');\n graph.refresh();\n };\n\n Bundling.prototype.updateBundling = function (cfg) {\n var self = this;\n var data = cfg.data;\n\n if (data) {\n self.set('data', data);\n }\n\n if (self.get('ticking')) {\n self.set('ticking', false);\n }\n\n Object.keys(cfg).forEach(function (key) {\n self.set(key, cfg[key]);\n });\n\n if (cfg.onTick) {\n var graph_1 = this.get('graph');\n self.set('tick', function () {\n cfg.onTick();\n graph_1.refresh();\n });\n }\n\n self.bundling(data);\n };\n\n Bundling.prototype.divideEdges = function (divisions) {\n var self = this;\n var edges = self.get('data').edges;\n var nodeIdMap = self.get('nodeIdMap');\n var edgePoints = self.get('edgePoints');\n if (!edgePoints || edgePoints === undefined) edgePoints = [];\n edges.forEach(function (edge, i) {\n if (!edgePoints[i] || edgePoints[i] === undefined) {\n edgePoints[i] = [];\n }\n\n var source = nodeIdMap[edge.source];\n var target = nodeIdMap[edge.target];\n\n if (divisions === 1) {\n edgePoints[i].push({\n x: source.x,\n y: source.y\n }); // source\n\n edgePoints[i].push({\n x: 0.5 * (source.x + target.x),\n y: 0.5 * (source.y + target.y)\n }); // mid\n\n edgePoints[i].push({\n x: target.x,\n y: target.y\n }); // target\n } else {\n var edgeLength = 0;\n\n if (!edgePoints[i] || edgePoints[i] === []) {\n // it is a straight line\n edgeLength = getEucliDis({\n x: source.x,\n y: source.y\n }, {\n x: target.x,\n y: target.y\n });\n } else {\n edgeLength = self.getEdgeLength(edgePoints[i]);\n }\n\n var divisionLength_1 = edgeLength / (divisions + 1);\n var currentDivisonLength_1 = divisionLength_1;\n var newEdgePoints_1 = [{\n x: source.x,\n y: source.y\n }]; // source\n\n edgePoints[i].forEach(function (ep, j) {\n if (j === 0) return;\n var oriDivisionLength = getEucliDis(ep, edgePoints[i][j - 1]);\n\n while (oriDivisionLength > currentDivisonLength_1) {\n var ratio = currentDivisonLength_1 / oriDivisionLength;\n var edgePoint = {\n x: edgePoints[i][j - 1].x,\n y: edgePoints[i][j - 1].y\n };\n edgePoint.x += ratio * (ep.x - edgePoints[i][j - 1].x);\n edgePoint.y += ratio * (ep.y - edgePoints[i][j - 1].y);\n newEdgePoints_1.push(edgePoint);\n oriDivisionLength -= currentDivisonLength_1;\n currentDivisonLength_1 = divisionLength_1;\n }\n\n currentDivisonLength_1 -= oriDivisionLength;\n });\n newEdgePoints_1.push({\n x: target.x,\n y: target.y\n }); // target\n\n edgePoints[i] = newEdgePoints_1;\n }\n });\n return edgePoints;\n };\n /**\n * 计算边的长度\n * @param points\n */\n\n\n Bundling.prototype.getEdgeLength = function (points) {\n var length = 0;\n points.forEach(function (p, i) {\n if (i === 0) return;\n length += getEucliDis(p, points[i - 1]);\n });\n return length;\n };\n\n Bundling.prototype.getEdgeBundles = function () {\n var self = this;\n var data = self.get('data');\n var edges = data.edges || [];\n var bundleThreshold = self.get('bundleThreshold');\n var nodeIdMap = self.get('nodeIdMap');\n var edgeBundles = self.get('edgeBundles');\n if (!edgeBundles) edgeBundles = [];\n edges.forEach(function (e, i) {\n if (!edgeBundles[i] || edgeBundles[i] === undefined) {\n edgeBundles[i] = [];\n }\n });\n edges.forEach(function (ei, i) {\n var iSource = nodeIdMap[ei.source];\n var iTarget = nodeIdMap[ei.target];\n edges.forEach(function (ej, j) {\n if (j <= i) return;\n var jSource = nodeIdMap[ej.source];\n var jTarget = nodeIdMap[ej.target];\n var score = self.getBundleScore({\n source: iSource,\n target: iTarget\n }, {\n source: jSource,\n target: jTarget\n });\n\n if (score >= bundleThreshold) {\n edgeBundles[i].push(j);\n edgeBundles[j].push(i);\n }\n });\n });\n return edgeBundles;\n };\n\n Bundling.prototype.getBundleScore = function (ei, ej) {\n var self = this;\n ei.vx = ei.target.x - ei.source.x;\n ei.vy = ei.target.y - ei.source.y;\n ej.vx = ej.target.x - ej.source.x;\n ej.vy = ej.target.y - ej.source.y;\n ei.length = getEucliDis({\n x: ei.source.x,\n y: ei.source.y\n }, {\n x: ei.target.x,\n y: ei.target.y\n });\n ej.length = getEucliDis({\n x: ej.source.x,\n y: ej.source.y\n }, {\n x: ej.target.x,\n y: ej.target.y\n }); // angle score\n\n var aScore = self.getAngleScore(ei, ej); // scale score\n\n var sScore = self.getScaleScore(ei, ej); // position score\n\n var pScore = self.getPositionScore(ei, ej); // visibility socre\n\n var vScore = self.getVisibilityScore(ei, ej);\n return aScore * sScore * pScore * vScore;\n };\n\n Bundling.prototype.getAngleScore = function (ei, ej) {\n var dotProduct = getDotProduct({\n x: ei.vx,\n y: ei.vy\n }, {\n x: ej.vx,\n y: ej.vy\n });\n return dotProduct / (ei.length * ej.length);\n };\n\n Bundling.prototype.getScaleScore = function (ei, ej) {\n var aLength = (ei.length + ej.length) / 2;\n var score = 2 / (aLength / Math.min(ei.length, ej.length) + Math.max(ei.length, ej.length) / aLength);\n return score;\n };\n\n Bundling.prototype.getPositionScore = function (ei, ej) {\n var aLength = (ei.length + ej.length) / 2;\n var iMid = {\n x: (ei.source.x + ei.target.x) / 2,\n y: (ei.source.y + ei.target.y) / 2\n };\n var jMid = {\n x: (ej.source.x + ej.target.x) / 2,\n y: (ej.source.y + ej.target.y) / 2\n };\n var distance = getEucliDis(iMid, jMid);\n return aLength / (aLength + distance);\n };\n\n Bundling.prototype.getVisibilityScore = function (ei, ej) {\n var vij = this.getEdgeVisibility(ei, ej);\n var vji = this.getEdgeVisibility(ej, ei);\n return vij < vji ? vij : vji;\n };\n\n Bundling.prototype.getEdgeVisibility = function (ei, ej) {\n var ps = projectPointToEdge(ej.source, ei);\n var pt = projectPointToEdge(ej.target, ei);\n var pMid = {\n x: (ps.x + pt.x) / 2,\n y: (ps.y + pt.y) / 2\n };\n var iMid = {\n x: (ei.source.x + ei.target.x) / 2,\n y: (ei.source.y + ei.target.y) / 2\n };\n return Math.max(0, 1 - 2 * getEucliDis(pMid, iMid) / getEucliDis(ps, pt));\n };\n\n Bundling.prototype.getEdgeForces = function (e, eidx, divisions, lambda) {\n var self = this;\n var edgePoints = self.get('edgePoints');\n var K = self.get('K');\n var kp = K / (getEucliDis(e.source, e.target) * (divisions + 1));\n var edgePointForces = [{\n x: 0,\n y: 0\n }];\n\n for (var i = 1; i < divisions; i++) {\n var force = {\n x: 0,\n y: 0\n };\n var spring = self.getSpringForce({\n pre: edgePoints[eidx][i - 1],\n cur: edgePoints[eidx][i],\n next: edgePoints[eidx][i + 1]\n }, kp);\n var electrostatic = self.getElectrostaticForce(i, eidx);\n force.x = lambda * (spring.x + electrostatic.x);\n force.y = lambda * (spring.y + electrostatic.y);\n edgePointForces.push(force);\n }\n\n edgePointForces.push({\n x: 0,\n y: 0\n });\n return edgePointForces;\n };\n\n Bundling.prototype.getSpringForce = function (divisions, kp) {\n var x = divisions.pre.x + divisions.next.x - 2 * divisions.cur.x;\n var y = divisions.pre.y + divisions.next.y - 2 * divisions.cur.y;\n x *= kp;\n y *= kp;\n return {\n x: x,\n y: y\n };\n };\n\n Bundling.prototype.getElectrostaticForce = function (pidx, eidx) {\n var self = this;\n var eps = self.get('eps');\n var edgeBundles = self.get('edgeBundles');\n var edgePoints = self.get('edgePoints');\n var edgeBundle = edgeBundles[eidx];\n var resForce = {\n x: 0,\n y: 0\n };\n edgeBundle.forEach(function (eb) {\n var force = {\n x: edgePoints[eb][pidx].x - edgePoints[eidx][pidx].x,\n y: edgePoints[eb][pidx].y - edgePoints[eidx][pidx].y\n };\n\n if (Math.abs(force.x) > eps || Math.abs(force.y) > eps) {\n var length_1 = getEucliDis(edgePoints[eb][pidx], edgePoints[eidx][pidx]);\n var diff = 1 / length_1;\n resForce.x += force.x * diff;\n resForce.y += force.y * diff;\n }\n });\n return resForce;\n };\n\n Bundling.prototype.isTicking = function () {\n return this.get('ticking');\n };\n\n Bundling.prototype.getSimulation = function () {\n return this.get('forceSimulation');\n };\n\n Bundling.prototype.destroy = function () {\n if (this.get('ticking')) {\n this.getSimulation().stop();\n }\n\n _super.prototype.destroy.call(this);\n };\n\n return Bundling;\n}(_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Bundling);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvYnVuZGxpbmcvaW5kZXguanM/YTUzNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUUwQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYLHlCQUF5QixtQkFBbUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7QUFDWCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVAsNENBQTRDOztBQUU1Qyw0Q0FBNEM7O0FBRTVDLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUwsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsdUVBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvYnVuZGxpbmcvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcblxuZnVuY3Rpb24gZ2V0RXVjbGlEaXMocG9pbnRBLCBwb2ludEIsIGVwcykge1xuICB2YXIgdnggPSBwb2ludEEueCAtIHBvaW50Qi54O1xuICB2YXIgdnkgPSBwb2ludEEueSAtIHBvaW50Qi55O1xuXG4gIGlmICghZXBzIHx8IE1hdGguYWJzKHZ4KSA+IGVwcyB8fCBNYXRoLmFicyh2eSkgPiBlcHMpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHZ4ICogdnggKyB2eSAqIHZ5KTtcbiAgfVxuXG4gIHJldHVybiBlcHM7XG59XG5cbmZ1bmN0aW9uIGdldERvdFByb2R1Y3QoZWksIGVqKSB7XG4gIHJldHVybiBlaS54ICogZWoueCArIGVpLnkgKiBlai55O1xufVxuXG5mdW5jdGlvbiBwcm9qZWN0UG9pbnRUb0VkZ2UocCwgZSkge1xuICB2YXIgayA9IChlLnNvdXJjZS55IC0gZS50YXJnZXQueSkgLyAoZS5zb3VyY2UueCAtIGUudGFyZ2V0LngpO1xuICB2YXIgeCA9IChrICogayAqIGUuc291cmNlLnggKyBrICogKHAueSAtIGUuc291cmNlLnkpICsgcC54KSAvIChrICogayArIDEpO1xuICB2YXIgeSA9IGsgKiAoeCAtIGUuc291cmNlLngpICsgZS5zb3VyY2UueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn1cblxudmFyIEJ1bmRsaW5nID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKEJ1bmRsaW5nLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEJ1bmRsaW5nKGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVkZ2VCdW5kbGVzOiBbXSxcbiAgICAgIGVkZ2VQb2ludHM6IFtdLFxuICAgICAgSzogMC4xLFxuICAgICAgbGFtYmRhOiAwLjEsXG4gICAgICBkaXZpc2lvbnM6IDEsXG4gICAgICBkaXZSYXRlOiAyLFxuICAgICAgY3ljbGVzOiA2LFxuICAgICAgaXRlcmF0aW9uczogOTAsXG4gICAgICBpdGVyUmF0ZTogMC42NjY2NjY3LFxuICAgICAgYnVuZGxlVGhyZXNob2xkOiAwLjYsXG4gICAgICBlcHM6IDFlLTYsXG4gICAgICBvbkxheW91dEVuZDogZnVuY3Rpb24gb25MYXlvdXRFbmQoKSB7fSxcbiAgICAgIG9uVGljazogZnVuY3Rpb24gb25UaWNrKCkge31cbiAgICB9O1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBvblRpY2sgPSB0aGlzLmdldCgnb25UaWNrJyk7XG5cbiAgICB2YXIgdGljayA9IGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgICBpZiAob25UaWNrKSB7XG4gICAgICAgIG9uVGljaygpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgfTtcblxuICAgIHRoaXMuc2V0KCd0aWNrJywgdGljayk7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmJ1bmRsaW5nID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5zZXQoJ2RhdGEnLCBkYXRhKTsgLy8g5aaC5p6c5q2j5Zyo5biD5bGA77yM5b+955Wl5biD5bGA6K+35rGCXG5cbiAgICBpZiAoc2VsZi5pc1RpY2tpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBlZGdlcyA9IGRhdGEuZWRnZXMgfHwgW107XG4gICAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcyB8fCBbXTtcbiAgICB2YXIgbm9kZUlkTWFwID0ge307XG4gICAgdmFyIGVycm9yID0gZmFsc2U7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKG5vZGUueCA9PT0gbnVsbCB8fCAhbm9kZS55ID09PSBudWxsIHx8IG5vZGUueCA9PT0gdW5kZWZpbmVkIHx8ICFub2RlLnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlcnJvciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIG5vZGVJZE1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgfSk7XG4gICAgaWYgKGVycm9yKSB0aHJvdyBuZXcgRXJyb3IoJ3BsZWFzZSBsYXlvdXQgdGhlIGdyYXBoIG9yIGFzc2lnbiB4IGFuZCB5IGZvciBub2RlcyBmaXJzdCcpO1xuICAgIHNlbGYuc2V0KCdub2RlSWRNYXAnLCBub2RlSWRNYXApOyAvLyBzdWJkaXZpZGUgZWFjaCBlZGdlc1xuXG4gICAgdmFyIGRpdmlzaW9ucyA9IHNlbGYuZ2V0KCdkaXZpc2lvbnMnKTtcbiAgICB2YXIgZGl2UmF0ZSA9IHNlbGYuZ2V0KCdkaXZSYXRlJyk7XG4gICAgdmFyIGVkZ2VQb2ludHMgPSBzZWxmLmRpdmlkZUVkZ2VzKGRpdmlzaW9ucyk7XG4gICAgc2VsZi5zZXQoJ2VkZ2VQb2ludHMnLCBlZGdlUG9pbnRzKTsgLy8gY29tcHV0ZSB0aGUgYnVuZGxlc1xuXG4gICAgdmFyIGVkZ2VCdW5kbGVzID0gc2VsZi5nZXRFZGdlQnVuZGxlcygpO1xuICAgIHNlbGYuc2V0KCdlZGdlQnVuZGxlcycsIGVkZ2VCdW5kbGVzKTsgLy8gaXRlcmF0aW9uc1xuXG4gICAgdmFyIEMgPSBzZWxmLmdldCgnY3ljbGVzJyk7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSBzZWxmLmdldCgnaXRlcmF0aW9ucycpO1xuICAgIHZhciBpdGVyUmF0ZSA9IHNlbGYuZ2V0KCdpdGVyUmF0ZScpO1xuICAgIHZhciBsYW1iZGEgPSBzZWxmLmdldCgnbGFtYmRhJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IEM7IGkrKykge1xuICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGopIHtcbiAgICAgICAgdmFyIGZvcmNlcyA9IFtdO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlLCBrKSB7XG4gICAgICAgICAgaWYgKGUuc291cmNlID09PSBlLnRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBub2RlSWRNYXBbZS5zb3VyY2VdO1xuICAgICAgICAgIHZhciB0YXJnZXQgPSBub2RlSWRNYXBbZS50YXJnZXRdO1xuICAgICAgICAgIGZvcmNlc1trXSA9IHNlbGYuZ2V0RWRnZUZvcmNlcyh7XG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0XG4gICAgICAgICAgfSwgaywgZGl2aXNpb25zLCBsYW1iZGEpO1xuXG4gICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBkaXZpc2lvbnMgKyAxOyBwKyspIHtcbiAgICAgICAgICAgIGVkZ2VQb2ludHNba11bcF0ueCArPSBmb3JjZXNba11bcF0ueDtcbiAgICAgICAgICAgIGVkZ2VQb2ludHNba11bcF0ueSArPSBmb3JjZXNba11bcF0ueTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVyYXRpb25zOyBqKyspIHtcbiAgICAgICAgX2xvb3BfMShqKTtcbiAgICAgIH0gLy8gcGFyYW1ldGVycyBmb3IgbmV4IGN5Y2xlXG5cblxuICAgICAgbGFtYmRhID0gbGFtYmRhIC8gMjtcbiAgICAgIGRpdmlzaW9ucyAqPSBkaXZSYXRlO1xuICAgICAgaXRlcmF0aW9ucyAqPSBpdGVyUmF0ZTtcbiAgICAgIGVkZ2VQb2ludHMgPSBzZWxmLmRpdmlkZUVkZ2VzKGRpdmlzaW9ucyk7XG4gICAgICBzZWxmLnNldCgnZWRnZVBvaW50cycsIGVkZ2VQb2ludHMpO1xuICAgIH0gLy8gY2hhbmdlIHRoZSBlZGdlcyBhY2NvcmRpbmcgdG8gZWRnZVBvaW50c1xuXG5cbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlLCBpKSB7XG4gICAgICBpZiAoZS5zb3VyY2UgPT09IGUudGFyZ2V0KSByZXR1cm47XG4gICAgICBlLnR5cGUgPSAncG9seWxpbmUnO1xuICAgICAgZS5jb250cm9sUG9pbnRzID0gZWRnZVBvaW50c1tpXS5zbGljZSgxLCBlZGdlUG9pbnRzW2ldLmxlbmd0aCAtIDEpO1xuICAgIH0pO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIGdyYXBoLnJlZnJlc2goKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUudXBkYXRlQnVuZGxpbmcgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBkYXRhID0gY2ZnLmRhdGE7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgc2VsZi5zZXQoJ2RhdGEnLCBkYXRhKTtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5nZXQoJ3RpY2tpbmcnKSkge1xuICAgICAgc2VsZi5zZXQoJ3RpY2tpbmcnLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXMoY2ZnKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHNlbGYuc2V0KGtleSwgY2ZnW2tleV0pO1xuICAgIH0pO1xuXG4gICAgaWYgKGNmZy5vblRpY2spIHtcbiAgICAgIHZhciBncmFwaF8xID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgICBzZWxmLnNldCgndGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2ZnLm9uVGljaygpO1xuICAgICAgICBncmFwaF8xLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGYuYnVuZGxpbmcoZGF0YSk7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmRpdmlkZUVkZ2VzID0gZnVuY3Rpb24gKGRpdmlzaW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZWRnZXMgPSBzZWxmLmdldCgnZGF0YScpLmVkZ2VzO1xuICAgIHZhciBub2RlSWRNYXAgPSBzZWxmLmdldCgnbm9kZUlkTWFwJyk7XG4gICAgdmFyIGVkZ2VQb2ludHMgPSBzZWxmLmdldCgnZWRnZVBvaW50cycpO1xuICAgIGlmICghZWRnZVBvaW50cyB8fCBlZGdlUG9pbnRzID09PSB1bmRlZmluZWQpIGVkZ2VQb2ludHMgPSBbXTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlLCBpKSB7XG4gICAgICBpZiAoIWVkZ2VQb2ludHNbaV0gfHwgZWRnZVBvaW50c1tpXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVkZ2VQb2ludHNbaV0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZSA9IG5vZGVJZE1hcFtlZGdlLnNvdXJjZV07XG4gICAgICB2YXIgdGFyZ2V0ID0gbm9kZUlkTWFwW2VkZ2UudGFyZ2V0XTtcblxuICAgICAgaWYgKGRpdmlzaW9ucyA9PT0gMSkge1xuICAgICAgICBlZGdlUG9pbnRzW2ldLnB1c2goe1xuICAgICAgICAgIHg6IHNvdXJjZS54LFxuICAgICAgICAgIHk6IHNvdXJjZS55XG4gICAgICAgIH0pOyAvLyBzb3VyY2VcblxuICAgICAgICBlZGdlUG9pbnRzW2ldLnB1c2goe1xuICAgICAgICAgIHg6IDAuNSAqIChzb3VyY2UueCArIHRhcmdldC54KSxcbiAgICAgICAgICB5OiAwLjUgKiAoc291cmNlLnkgKyB0YXJnZXQueSlcbiAgICAgICAgfSk7IC8vIG1pZFxuXG4gICAgICAgIGVkZ2VQb2ludHNbaV0ucHVzaCh7XG4gICAgICAgICAgeDogdGFyZ2V0LngsXG4gICAgICAgICAgeTogdGFyZ2V0LnlcbiAgICAgICAgfSk7IC8vIHRhcmdldFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVkZ2VMZW5ndGggPSAwO1xuXG4gICAgICAgIGlmICghZWRnZVBvaW50c1tpXSB8fCBlZGdlUG9pbnRzW2ldID09PSBbXSkge1xuICAgICAgICAgIC8vIGl0IGlzIGEgc3RyYWlnaHQgbGluZVxuICAgICAgICAgIGVkZ2VMZW5ndGggPSBnZXRFdWNsaURpcyh7XG4gICAgICAgICAgICB4OiBzb3VyY2UueCxcbiAgICAgICAgICAgIHk6IHNvdXJjZS55XG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgeDogdGFyZ2V0LngsXG4gICAgICAgICAgICB5OiB0YXJnZXQueVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVkZ2VMZW5ndGggPSBzZWxmLmdldEVkZ2VMZW5ndGgoZWRnZVBvaW50c1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGl2aXNpb25MZW5ndGhfMSA9IGVkZ2VMZW5ndGggLyAoZGl2aXNpb25zICsgMSk7XG4gICAgICAgIHZhciBjdXJyZW50RGl2aXNvbkxlbmd0aF8xID0gZGl2aXNpb25MZW5ndGhfMTtcbiAgICAgICAgdmFyIG5ld0VkZ2VQb2ludHNfMSA9IFt7XG4gICAgICAgICAgeDogc291cmNlLngsXG4gICAgICAgICAgeTogc291cmNlLnlcbiAgICAgICAgfV07IC8vIHNvdXJjZVxuXG4gICAgICAgIGVkZ2VQb2ludHNbaV0uZm9yRWFjaChmdW5jdGlvbiAoZXAsIGopIHtcbiAgICAgICAgICBpZiAoaiA9PT0gMCkgcmV0dXJuO1xuICAgICAgICAgIHZhciBvcmlEaXZpc2lvbkxlbmd0aCA9IGdldEV1Y2xpRGlzKGVwLCBlZGdlUG9pbnRzW2ldW2ogLSAxXSk7XG5cbiAgICAgICAgICB3aGlsZSAob3JpRGl2aXNpb25MZW5ndGggPiBjdXJyZW50RGl2aXNvbkxlbmd0aF8xKSB7XG4gICAgICAgICAgICB2YXIgcmF0aW8gPSBjdXJyZW50RGl2aXNvbkxlbmd0aF8xIC8gb3JpRGl2aXNpb25MZW5ndGg7XG4gICAgICAgICAgICB2YXIgZWRnZVBvaW50ID0ge1xuICAgICAgICAgICAgICB4OiBlZGdlUG9pbnRzW2ldW2ogLSAxXS54LFxuICAgICAgICAgICAgICB5OiBlZGdlUG9pbnRzW2ldW2ogLSAxXS55XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWRnZVBvaW50LnggKz0gcmF0aW8gKiAoZXAueCAtIGVkZ2VQb2ludHNbaV1baiAtIDFdLngpO1xuICAgICAgICAgICAgZWRnZVBvaW50LnkgKz0gcmF0aW8gKiAoZXAueSAtIGVkZ2VQb2ludHNbaV1baiAtIDFdLnkpO1xuICAgICAgICAgICAgbmV3RWRnZVBvaW50c18xLnB1c2goZWRnZVBvaW50KTtcbiAgICAgICAgICAgIG9yaURpdmlzaW9uTGVuZ3RoIC09IGN1cnJlbnREaXZpc29uTGVuZ3RoXzE7XG4gICAgICAgICAgICBjdXJyZW50RGl2aXNvbkxlbmd0aF8xID0gZGl2aXNpb25MZW5ndGhfMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50RGl2aXNvbkxlbmd0aF8xIC09IG9yaURpdmlzaW9uTGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3RWRnZVBvaW50c18xLnB1c2goe1xuICAgICAgICAgIHg6IHRhcmdldC54LFxuICAgICAgICAgIHk6IHRhcmdldC55XG4gICAgICAgIH0pOyAvLyB0YXJnZXRcblxuICAgICAgICBlZGdlUG9pbnRzW2ldID0gbmV3RWRnZVBvaW50c18xO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBlZGdlUG9pbnRzO1xuICB9O1xuICAvKipcbiAgICog6K6h566X6L6555qE6ZW/5bqmXG4gICAqIEBwYXJhbSBwb2ludHNcbiAgICovXG5cblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0RWRnZUxlbmd0aCA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocCwgaSkge1xuICAgICAgaWYgKGkgPT09IDApIHJldHVybjtcbiAgICAgIGxlbmd0aCArPSBnZXRFdWNsaURpcyhwLCBwb2ludHNbaSAtIDFdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRFZGdlQnVuZGxlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGRhdGEgPSBzZWxmLmdldCgnZGF0YScpO1xuICAgIHZhciBlZGdlcyA9IGRhdGEuZWRnZXMgfHwgW107XG4gICAgdmFyIGJ1bmRsZVRocmVzaG9sZCA9IHNlbGYuZ2V0KCdidW5kbGVUaHJlc2hvbGQnKTtcbiAgICB2YXIgbm9kZUlkTWFwID0gc2VsZi5nZXQoJ25vZGVJZE1hcCcpO1xuICAgIHZhciBlZGdlQnVuZGxlcyA9IHNlbGYuZ2V0KCdlZGdlQnVuZGxlcycpO1xuICAgIGlmICghZWRnZUJ1bmRsZXMpIGVkZ2VCdW5kbGVzID0gW107XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSwgaSkge1xuICAgICAgaWYgKCFlZGdlQnVuZGxlc1tpXSB8fCBlZGdlQnVuZGxlc1tpXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVkZ2VCdW5kbGVzW2ldID0gW107XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWksIGkpIHtcbiAgICAgIHZhciBpU291cmNlID0gbm9kZUlkTWFwW2VpLnNvdXJjZV07XG4gICAgICB2YXIgaVRhcmdldCA9IG5vZGVJZE1hcFtlaS50YXJnZXRdO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWosIGopIHtcbiAgICAgICAgaWYgKGogPD0gaSkgcmV0dXJuO1xuICAgICAgICB2YXIgalNvdXJjZSA9IG5vZGVJZE1hcFtlai5zb3VyY2VdO1xuICAgICAgICB2YXIgalRhcmdldCA9IG5vZGVJZE1hcFtlai50YXJnZXRdO1xuICAgICAgICB2YXIgc2NvcmUgPSBzZWxmLmdldEJ1bmRsZVNjb3JlKHtcbiAgICAgICAgICBzb3VyY2U6IGlTb3VyY2UsXG4gICAgICAgICAgdGFyZ2V0OiBpVGFyZ2V0XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBzb3VyY2U6IGpTb3VyY2UsXG4gICAgICAgICAgdGFyZ2V0OiBqVGFyZ2V0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzY29yZSA+PSBidW5kbGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICBlZGdlQnVuZGxlc1tpXS5wdXNoKGopO1xuICAgICAgICAgIGVkZ2VCdW5kbGVzW2pdLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBlZGdlQnVuZGxlcztcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0QnVuZGxlU2NvcmUgPSBmdW5jdGlvbiAoZWksIGVqKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGVpLnZ4ID0gZWkudGFyZ2V0LnggLSBlaS5zb3VyY2UueDtcbiAgICBlaS52eSA9IGVpLnRhcmdldC55IC0gZWkuc291cmNlLnk7XG4gICAgZWoudnggPSBlai50YXJnZXQueCAtIGVqLnNvdXJjZS54O1xuICAgIGVqLnZ5ID0gZWoudGFyZ2V0LnkgLSBlai5zb3VyY2UueTtcbiAgICBlaS5sZW5ndGggPSBnZXRFdWNsaURpcyh7XG4gICAgICB4OiBlaS5zb3VyY2UueCxcbiAgICAgIHk6IGVpLnNvdXJjZS55XG4gICAgfSwge1xuICAgICAgeDogZWkudGFyZ2V0LngsXG4gICAgICB5OiBlaS50YXJnZXQueVxuICAgIH0pO1xuICAgIGVqLmxlbmd0aCA9IGdldEV1Y2xpRGlzKHtcbiAgICAgIHg6IGVqLnNvdXJjZS54LFxuICAgICAgeTogZWouc291cmNlLnlcbiAgICB9LCB7XG4gICAgICB4OiBlai50YXJnZXQueCxcbiAgICAgIHk6IGVqLnRhcmdldC55XG4gICAgfSk7IC8vIGFuZ2xlIHNjb3JlXG5cbiAgICB2YXIgYVNjb3JlID0gc2VsZi5nZXRBbmdsZVNjb3JlKGVpLCBlaik7IC8vIHNjYWxlIHNjb3JlXG5cbiAgICB2YXIgc1Njb3JlID0gc2VsZi5nZXRTY2FsZVNjb3JlKGVpLCBlaik7IC8vIHBvc2l0aW9uIHNjb3JlXG5cbiAgICB2YXIgcFNjb3JlID0gc2VsZi5nZXRQb3NpdGlvblNjb3JlKGVpLCBlaik7IC8vIHZpc2liaWxpdHkgc29jcmVcblxuICAgIHZhciB2U2NvcmUgPSBzZWxmLmdldFZpc2liaWxpdHlTY29yZShlaSwgZWopO1xuICAgIHJldHVybiBhU2NvcmUgKiBzU2NvcmUgKiBwU2NvcmUgKiB2U2NvcmU7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldEFuZ2xlU2NvcmUgPSBmdW5jdGlvbiAoZWksIGVqKSB7XG4gICAgdmFyIGRvdFByb2R1Y3QgPSBnZXREb3RQcm9kdWN0KHtcbiAgICAgIHg6IGVpLnZ4LFxuICAgICAgeTogZWkudnlcbiAgICB9LCB7XG4gICAgICB4OiBlai52eCxcbiAgICAgIHk6IGVqLnZ5XG4gICAgfSk7XG4gICAgcmV0dXJuIGRvdFByb2R1Y3QgLyAoZWkubGVuZ3RoICogZWoubGVuZ3RoKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0U2NhbGVTY29yZSA9IGZ1bmN0aW9uIChlaSwgZWopIHtcbiAgICB2YXIgYUxlbmd0aCA9IChlaS5sZW5ndGggKyBlai5sZW5ndGgpIC8gMjtcbiAgICB2YXIgc2NvcmUgPSAyIC8gKGFMZW5ndGggLyBNYXRoLm1pbihlaS5sZW5ndGgsIGVqLmxlbmd0aCkgKyBNYXRoLm1heChlaS5sZW5ndGgsIGVqLmxlbmd0aCkgLyBhTGVuZ3RoKTtcbiAgICByZXR1cm4gc2NvcmU7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldFBvc2l0aW9uU2NvcmUgPSBmdW5jdGlvbiAoZWksIGVqKSB7XG4gICAgdmFyIGFMZW5ndGggPSAoZWkubGVuZ3RoICsgZWoubGVuZ3RoKSAvIDI7XG4gICAgdmFyIGlNaWQgPSB7XG4gICAgICB4OiAoZWkuc291cmNlLnggKyBlaS50YXJnZXQueCkgLyAyLFxuICAgICAgeTogKGVpLnNvdXJjZS55ICsgZWkudGFyZ2V0LnkpIC8gMlxuICAgIH07XG4gICAgdmFyIGpNaWQgPSB7XG4gICAgICB4OiAoZWouc291cmNlLnggKyBlai50YXJnZXQueCkgLyAyLFxuICAgICAgeTogKGVqLnNvdXJjZS55ICsgZWoudGFyZ2V0LnkpIC8gMlxuICAgIH07XG4gICAgdmFyIGRpc3RhbmNlID0gZ2V0RXVjbGlEaXMoaU1pZCwgak1pZCk7XG4gICAgcmV0dXJuIGFMZW5ndGggLyAoYUxlbmd0aCArIGRpc3RhbmNlKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0VmlzaWJpbGl0eVNjb3JlID0gZnVuY3Rpb24gKGVpLCBlaikge1xuICAgIHZhciB2aWogPSB0aGlzLmdldEVkZ2VWaXNpYmlsaXR5KGVpLCBlaik7XG4gICAgdmFyIHZqaSA9IHRoaXMuZ2V0RWRnZVZpc2liaWxpdHkoZWosIGVpKTtcbiAgICByZXR1cm4gdmlqIDwgdmppID8gdmlqIDogdmppO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5nZXRFZGdlVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChlaSwgZWopIHtcbiAgICB2YXIgcHMgPSBwcm9qZWN0UG9pbnRUb0VkZ2UoZWouc291cmNlLCBlaSk7XG4gICAgdmFyIHB0ID0gcHJvamVjdFBvaW50VG9FZGdlKGVqLnRhcmdldCwgZWkpO1xuICAgIHZhciBwTWlkID0ge1xuICAgICAgeDogKHBzLnggKyBwdC54KSAvIDIsXG4gICAgICB5OiAocHMueSArIHB0LnkpIC8gMlxuICAgIH07XG4gICAgdmFyIGlNaWQgPSB7XG4gICAgICB4OiAoZWkuc291cmNlLnggKyBlaS50YXJnZXQueCkgLyAyLFxuICAgICAgeTogKGVpLnNvdXJjZS55ICsgZWkudGFyZ2V0LnkpIC8gMlxuICAgIH07XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIDEgLSAyICogZ2V0RXVjbGlEaXMocE1pZCwgaU1pZCkgLyBnZXRFdWNsaURpcyhwcywgcHQpKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZ2V0RWRnZUZvcmNlcyA9IGZ1bmN0aW9uIChlLCBlaWR4LCBkaXZpc2lvbnMsIGxhbWJkYSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZWRnZVBvaW50cyA9IHNlbGYuZ2V0KCdlZGdlUG9pbnRzJyk7XG4gICAgdmFyIEsgPSBzZWxmLmdldCgnSycpO1xuICAgIHZhciBrcCA9IEsgLyAoZ2V0RXVjbGlEaXMoZS5zb3VyY2UsIGUudGFyZ2V0KSAqIChkaXZpc2lvbnMgKyAxKSk7XG4gICAgdmFyIGVkZ2VQb2ludEZvcmNlcyA9IFt7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH1dO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBkaXZpc2lvbnM7IGkrKykge1xuICAgICAgdmFyIGZvcmNlID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9O1xuICAgICAgdmFyIHNwcmluZyA9IHNlbGYuZ2V0U3ByaW5nRm9yY2Uoe1xuICAgICAgICBwcmU6IGVkZ2VQb2ludHNbZWlkeF1baSAtIDFdLFxuICAgICAgICBjdXI6IGVkZ2VQb2ludHNbZWlkeF1baV0sXG4gICAgICAgIG5leHQ6IGVkZ2VQb2ludHNbZWlkeF1baSArIDFdXG4gICAgICB9LCBrcCk7XG4gICAgICB2YXIgZWxlY3Ryb3N0YXRpYyA9IHNlbGYuZ2V0RWxlY3Ryb3N0YXRpY0ZvcmNlKGksIGVpZHgpO1xuICAgICAgZm9yY2UueCA9IGxhbWJkYSAqIChzcHJpbmcueCArIGVsZWN0cm9zdGF0aWMueCk7XG4gICAgICBmb3JjZS55ID0gbGFtYmRhICogKHNwcmluZy55ICsgZWxlY3Ryb3N0YXRpYy55KTtcbiAgICAgIGVkZ2VQb2ludEZvcmNlcy5wdXNoKGZvcmNlKTtcbiAgICB9XG5cbiAgICBlZGdlUG9pbnRGb3JjZXMucHVzaCh7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH0pO1xuICAgIHJldHVybiBlZGdlUG9pbnRGb3JjZXM7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldFNwcmluZ0ZvcmNlID0gZnVuY3Rpb24gKGRpdmlzaW9ucywga3ApIHtcbiAgICB2YXIgeCA9IGRpdmlzaW9ucy5wcmUueCArIGRpdmlzaW9ucy5uZXh0LnggLSAyICogZGl2aXNpb25zLmN1ci54O1xuICAgIHZhciB5ID0gZGl2aXNpb25zLnByZS55ICsgZGl2aXNpb25zLm5leHQueSAtIDIgKiBkaXZpc2lvbnMuY3VyLnk7XG4gICAgeCAqPSBrcDtcbiAgICB5ICo9IGtwO1xuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldEVsZWN0cm9zdGF0aWNGb3JjZSA9IGZ1bmN0aW9uIChwaWR4LCBlaWR4KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBlcHMgPSBzZWxmLmdldCgnZXBzJyk7XG4gICAgdmFyIGVkZ2VCdW5kbGVzID0gc2VsZi5nZXQoJ2VkZ2VCdW5kbGVzJyk7XG4gICAgdmFyIGVkZ2VQb2ludHMgPSBzZWxmLmdldCgnZWRnZVBvaW50cycpO1xuICAgIHZhciBlZGdlQnVuZGxlID0gZWRnZUJ1bmRsZXNbZWlkeF07XG4gICAgdmFyIHJlc0ZvcmNlID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICAgIGVkZ2VCdW5kbGUuZm9yRWFjaChmdW5jdGlvbiAoZWIpIHtcbiAgICAgIHZhciBmb3JjZSA9IHtcbiAgICAgICAgeDogZWRnZVBvaW50c1tlYl1bcGlkeF0ueCAtIGVkZ2VQb2ludHNbZWlkeF1bcGlkeF0ueCxcbiAgICAgICAgeTogZWRnZVBvaW50c1tlYl1bcGlkeF0ueSAtIGVkZ2VQb2ludHNbZWlkeF1bcGlkeF0ueVxuICAgICAgfTtcblxuICAgICAgaWYgKE1hdGguYWJzKGZvcmNlLngpID4gZXBzIHx8IE1hdGguYWJzKGZvcmNlLnkpID4gZXBzKSB7XG4gICAgICAgIHZhciBsZW5ndGhfMSA9IGdldEV1Y2xpRGlzKGVkZ2VQb2ludHNbZWJdW3BpZHhdLCBlZGdlUG9pbnRzW2VpZHhdW3BpZHhdKTtcbiAgICAgICAgdmFyIGRpZmYgPSAxIC8gbGVuZ3RoXzE7XG4gICAgICAgIHJlc0ZvcmNlLnggKz0gZm9yY2UueCAqIGRpZmY7XG4gICAgICAgIHJlc0ZvcmNlLnkgKz0gZm9yY2UueSAqIGRpZmY7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc0ZvcmNlO1xuICB9O1xuXG4gIEJ1bmRsaW5nLnByb3RvdHlwZS5pc1RpY2tpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCd0aWNraW5nJyk7XG4gIH07XG5cbiAgQnVuZGxpbmcucHJvdG90eXBlLmdldFNpbXVsYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdmb3JjZVNpbXVsYXRpb24nKTtcbiAgfTtcblxuICBCdW5kbGluZy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5nZXQoJ3RpY2tpbmcnKSkge1xuICAgICAgdGhpcy5nZXRTaW11bGF0aW9uKCkuc3RvcCgpO1xuICAgIH1cblxuICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBCdW5kbGluZztcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEJ1bmRsaW5nOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/bundling/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/edgeFilterLens/index.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/edgeFilterLens/index.js ***! \****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\nvar distance = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].distance;\nvar DELTA = 0.05;\nvar lensDelegateStyle = {\n stroke: '#000',\n strokeOpacity: 0.8,\n lineWidth: 2,\n fillOpacity: 1,\n fill: '#fff'\n};\n\nvar EdgeFilterLens =\n/** @class */\nfunction (_super) {\n __extends(EdgeFilterLens, _super);\n\n function EdgeFilterLens(config) {\n return _super.call(this, config) || this;\n }\n\n EdgeFilterLens.prototype.getDefaultCfgs = function () {\n return {\n type: 'both',\n trigger: 'mousemove',\n r: 60,\n delegateStyle: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(lensDelegateStyle),\n showLabel: 'edge',\n scaleRBy: 'wheel'\n };\n }; // class-methods-use-this\n\n\n EdgeFilterLens.prototype.getEvents = function () {\n var events;\n\n switch (this.get('trigger')) {\n case 'click':\n events = {\n click: 'filter'\n };\n break;\n\n case 'drag':\n events = {\n click: 'createDelegate'\n };\n break;\n\n default:\n events = {\n mousemove: 'filter'\n };\n break;\n }\n\n return events;\n };\n\n EdgeFilterLens.prototype.init = function () {\n var self = this;\n var showLabel = self.get('showLabel');\n var showNodeLabel = showLabel === 'node' || showLabel === 'both';\n var showEdgeLabel = showLabel === 'edge' || showLabel === 'both';\n self.set('showNodeLabel', showNodeLabel);\n self.set('showEdgeLabel', showEdgeLabel);\n var shouldShow = self.get('shouldShow');\n if (!shouldShow) self.set('shouldShow', function () {\n return true;\n });\n }; // Create the delegate when the trigger is drag\n\n\n EdgeFilterLens.prototype.createDelegate = function (e) {\n var self = this;\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n self.filter(e);\n lensDelegate = self.get('delegate'); // drag to move the lens\n\n lensDelegate.on('dragstart', function (evt) {});\n lensDelegate.on('drag', function (evt) {\n self.filter(evt);\n }); // 绑定调整范围(r)\n // 由于 drag 用于改变 lens 位置,因此在此模式下,drag 不能用于调整 r\n // scaling r\n\n if (this.get('scaleRBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n };\n /**\n * Scale the range by wheel\n * @param e mouse wheel event\n */\n\n\n EdgeFilterLens.prototype.scaleRByWheel = function (e) {\n var self = this;\n if (!e || !e.originalEvent) return;\n if (e.preventDefault) e.preventDefault();\n var graph = self.get('graph');\n var ratio;\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n var mousePos = lensCenter || graph.getPointByClient(e.clientX, e.clientY);\n\n if (e.originalEvent.wheelDelta < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n\n r *= ratio;\n self.set('r', r);\n self.filter(e);\n };\n /**\n * Response function for mousemove, click, or drag to filter out the edges\n * @param e mouse event\n */\n\n\n EdgeFilterLens.prototype.filter = function (e) {\n var self = this;\n var graph = self.get('graph');\n var nodes = graph.getNodes();\n var hitNodesMap = {};\n var r = self.get('r');\n var type = self.get('type');\n var fCenter = {\n x: e.x,\n y: e.y\n };\n self.updateDelegate(fCenter, r);\n var shouldShow = self.get('shouldShow');\n var vShapes = self.get('vShapes');\n\n if (vShapes) {\n vShapes.forEach(function (shape) {\n shape.remove();\n shape.destroy();\n });\n }\n\n vShapes = [];\n nodes.forEach(function (node) {\n var model = node.getModel();\n var x = model.x,\n y = model.y;\n\n if (distance({\n x: x,\n y: y\n }, fCenter) < r) {\n hitNodesMap[model.id] = node;\n }\n });\n var edges = graph.getEdges();\n var hitEdges = [];\n edges.forEach(function (edge) {\n var model = edge.getModel();\n var sourceId = model.source;\n var targetId = model.target;\n\n if (shouldShow(model)) {\n if (type === 'only-source' || type === 'one') {\n if (hitNodesMap[sourceId] && !hitNodesMap[targetId]) hitEdges.push(edge);\n } else if (type === 'only-target' || type === 'one') {\n if (hitNodesMap[targetId] && !hitNodesMap[sourceId]) hitEdges.push(edge);\n } else if (type === 'both' && hitNodesMap[sourceId] && hitNodesMap[targetId]) {\n hitEdges.push(edge);\n }\n }\n });\n var showNodeLabel = self.get('showNodeLabel');\n var showEdgeLabel = self.get('showEdgelabel'); // copy the shapes in hitEdges\n\n var group = graph.get('group');\n hitEdges.forEach(function (edge) {\n var shapes = edge.get('group').get('children');\n shapes.forEach(function (shape) {\n var shapeType = shape.get('type');\n var vShape = group.addShape(shapeType, {\n attrs: shape.attr()\n });\n vShapes.push(vShape);\n\n if (showNodeLabel && shapeType === 'text') {\n vShape.set('visible', true);\n }\n });\n }); // copy the shape sof hitNodes\n\n Object.keys(hitNodesMap).forEach(function (key) {\n var node = hitNodesMap[key];\n var clonedGroup = node.get('group').clone();\n group.add(clonedGroup);\n vShapes.push(clonedGroup);\n\n if (showEdgeLabel) {\n var shapes = clonedGroup.get('children');\n\n for (var j = 0; j < shapes.length; j++) {\n var shape = shapes[j];\n\n if (shape.get('type') === 'text') {\n shape.set('visible', true);\n }\n }\n }\n });\n self.set('vShapes', vShapes);\n };\n /**\n * Adjust part of the parameters, including trigger, type, r, maxR, minR, shouldShow, showLabel, and scaleRBy\n * @param {EdgeFilterLensConfig} cfg\n */\n\n\n EdgeFilterLens.prototype.updateParams = function (cfg) {\n var self = this;\n var r = cfg.r,\n trigger = cfg.trigger,\n minR = cfg.minR,\n maxR = cfg.maxR,\n scaleRBy = cfg.scaleRBy,\n showLabel = cfg.showLabel,\n shouldShow = cfg.shouldShow;\n\n if (!isNaN(cfg.r)) {\n self.set('r', r);\n }\n\n if (!isNaN(maxR)) {\n self.set('maxR', maxR);\n }\n\n if (!isNaN(minR)) {\n self.set('minR', minR);\n }\n\n if (trigger === 'mousemove' || trigger === 'click') {\n self.set('trigger', trigger);\n }\n\n if (scaleRBy === 'wheel' || scaleRBy === 'unset') {\n self.set('scaleRBy', scaleRBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n\n if (showLabel === 'node' || showLabel === 'both') {\n self.set('showNodeLabel', true);\n }\n\n if (showLabel === 'edge' || showLabel === 'both') {\n self.set('showEdgeLabel', true);\n }\n\n if (shouldShow) {\n self.set('shouldShow', shouldShow);\n }\n };\n /**\n * Update the delegate shape of the lens\n * @param {Point} mCenter the center of the shape\n * @param {number} r the radius of the shape\n */\n\n\n EdgeFilterLens.prototype.updateDelegate = function (mCenter, r) {\n var self = this;\n var graph = self.get('graph');\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = self.get('delegateStyle') || lensDelegateStyle; // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n\n lensDelegate = parent_1.addShape('circle', {\n attrs: __assign({\n r: r,\n x: mCenter.x,\n y: mCenter.y\n }, attrs),\n name: 'lens-shape',\n draggable: true\n });\n\n if (this.get('trigger') !== 'drag') {\n // 调整范围 r 的监听\n if (this.get('scaleRBy') === 'wheel') {\n // 使用滚轮调整 r\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n } else {\n lensDelegate.attr({\n x: mCenter.x,\n y: mCenter.y,\n r: r\n });\n }\n\n self.set('delegate', lensDelegate);\n };\n /**\n * Clear the filtering\n */\n\n\n EdgeFilterLens.prototype.clear = function () {\n var self = this;\n var vShapes = self.get('vShapes');\n\n if (vShapes) {\n vShapes.forEach(function (shape) {\n shape.remove();\n shape.destroy();\n });\n }\n\n vShapes = [];\n self.set('vShapes', vShapes);\n var lensDelegate = self.get('delegate');\n\n if (lensDelegate && !lensDelegate.destroyed) {\n lensDelegate.remove();\n lensDelegate.destroy();\n }\n };\n /**\n * Destroy the component\n */\n\n\n EdgeFilterLens.prototype.destroy = function () {\n this.clear();\n };\n\n return EdgeFilterLens;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EdgeFilterLens);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvZWRnZUZpbHRlckxlbnMvaW5kZXguanM/ZWM0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVtQztBQUNFO0FBQ1Y7QUFDM0IsZUFBZSxrREFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHdEQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0EsT0FBTyxFQUFFO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUJBQXVCLG1CQUFtQjtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25CLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLDZFQUFjIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL2VkZ2VGaWx0ZXJMZW5zL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgICBfZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX2V4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuXG4gICAgX2V4dGVuZFN0YXRpY3MoZCwgYik7XG5cbiAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICAgIH1cblxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgfTtcbn0oKTtcblxudmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG52YXIgZGlzdGFuY2UgPSBVdGlsLmRpc3RhbmNlO1xudmFyIERFTFRBID0gMC4wNTtcbnZhciBsZW5zRGVsZWdhdGVTdHlsZSA9IHtcbiAgc3Ryb2tlOiAnIzAwMCcsXG4gIHN0cm9rZU9wYWNpdHk6IDAuOCxcbiAgbGluZVdpZHRoOiAyLFxuICBmaWxsT3BhY2l0eTogMSxcbiAgZmlsbDogJyNmZmYnXG59O1xuXG52YXIgRWRnZUZpbHRlckxlbnMgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRWRnZUZpbHRlckxlbnMsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRWRnZUZpbHRlckxlbnMoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2JvdGgnLFxuICAgICAgdHJpZ2dlcjogJ21vdXNlbW92ZScsXG4gICAgICByOiA2MCxcbiAgICAgIGRlbGVnYXRlU3R5bGU6IGNsb25lKGxlbnNEZWxlZ2F0ZVN0eWxlKSxcbiAgICAgIHNob3dMYWJlbDogJ2VkZ2UnLFxuICAgICAgc2NhbGVSQnk6ICd3aGVlbCdcbiAgICB9O1xuICB9OyAvLyBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBFZGdlRmlsdGVyTGVucy5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBldmVudHM7XG5cbiAgICBzd2l0Y2ggKHRoaXMuZ2V0KCd0cmlnZ2VyJykpIHtcbiAgICAgIGNhc2UgJ2NsaWNrJzpcbiAgICAgICAgZXZlbnRzID0ge1xuICAgICAgICAgIGNsaWNrOiAnZmlsdGVyJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZHJhZyc6XG4gICAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgICBjbGljazogJ2NyZWF0ZURlbGVnYXRlJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZXZlbnRzID0ge1xuICAgICAgICAgIG1vdXNlbW92ZTogJ2ZpbHRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50cztcbiAgfTtcblxuICBFZGdlRmlsdGVyTGVucy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHNob3dMYWJlbCA9IHNlbGYuZ2V0KCdzaG93TGFiZWwnKTtcbiAgICB2YXIgc2hvd05vZGVMYWJlbCA9IHNob3dMYWJlbCA9PT0gJ25vZGUnIHx8IHNob3dMYWJlbCA9PT0gJ2JvdGgnO1xuICAgIHZhciBzaG93RWRnZUxhYmVsID0gc2hvd0xhYmVsID09PSAnZWRnZScgfHwgc2hvd0xhYmVsID09PSAnYm90aCc7XG4gICAgc2VsZi5zZXQoJ3Nob3dOb2RlTGFiZWwnLCBzaG93Tm9kZUxhYmVsKTtcbiAgICBzZWxmLnNldCgnc2hvd0VkZ2VMYWJlbCcsIHNob3dFZGdlTGFiZWwpO1xuICAgIHZhciBzaG91bGRTaG93ID0gc2VsZi5nZXQoJ3Nob3VsZFNob3cnKTtcbiAgICBpZiAoIXNob3VsZFNob3cpIHNlbGYuc2V0KCdzaG91bGRTaG93JywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH07IC8vIENyZWF0ZSB0aGUgZGVsZWdhdGUgd2hlbiB0aGUgdHJpZ2dlciBpcyBkcmFnXG5cblxuICBFZGdlRmlsdGVyTGVucy5wcm90b3R5cGUuY3JlYXRlRGVsZWdhdGUgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgbGVuc0RlbGVnYXRlID0gc2VsZi5nZXQoJ2RlbGVnYXRlJyk7XG5cbiAgICBpZiAoIWxlbnNEZWxlZ2F0ZSB8fCBsZW5zRGVsZWdhdGUuZGVzdHJveWVkKSB7XG4gICAgICBzZWxmLmZpbHRlcihlKTtcbiAgICAgIGxlbnNEZWxlZ2F0ZSA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZScpOyAvLyBkcmFnIHRvIG1vdmUgdGhlIGxlbnNcblxuICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoZXZ0KSB7fSk7XG4gICAgICBsZW5zRGVsZWdhdGUub24oJ2RyYWcnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHNlbGYuZmlsdGVyKGV2dCk7XG4gICAgICB9KTsgLy8g57uR5a6a6LCD5pW06IyD5Zu077yIcu+8iVxuICAgICAgLy8g55Sx5LqOIGRyYWcg55So5LqO5pS55Y+YIGxlbnMg5L2N572u77yM5Zug5q2k5Zyo5q2k5qih5byP5LiL77yMZHJhZyDkuI3og73nlKjkuo7osIPmlbQgclxuICAgICAgLy8gc2NhbGluZyByXG5cbiAgICAgIGlmICh0aGlzLmdldCgnc2NhbGVSQnknKSA9PT0gJ3doZWVsJykge1xuICAgICAgICBsZW5zRGVsZWdhdGUub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgc2VsZi5zY2FsZVJCeVdoZWVsKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIFNjYWxlIHRoZSByYW5nZSBieSB3aGVlbFxuICAgKiBAcGFyYW0gZSBtb3VzZSB3aGVlbCBldmVudFxuICAgKi9cblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5zY2FsZVJCeVdoZWVsID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFlIHx8ICFlLm9yaWdpbmFsRXZlbnQpIHJldHVybjtcbiAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIHZhciByYXRpbztcbiAgICB2YXIgbGVuc0RlbGVnYXRlID0gc2VsZi5nZXQoJ2RlbGVnYXRlJyk7XG4gICAgdmFyIGxlbnNDZW50ZXIgPSBsZW5zRGVsZWdhdGUgPyB7XG4gICAgICB4OiBsZW5zRGVsZWdhdGUuYXR0cigneCcpLFxuICAgICAgeTogbGVuc0RlbGVnYXRlLmF0dHIoJ3knKVxuICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1vdXNlUG9zID0gbGVuc0NlbnRlciB8fCBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcblxuICAgIGlmIChlLm9yaWdpbmFsRXZlbnQud2hlZWxEZWx0YSA8IDApIHtcbiAgICAgIHJhdGlvID0gMSAtIERFTFRBO1xuICAgIH0gZWxzZSB7XG4gICAgICByYXRpbyA9IDEgLyAoMSAtIERFTFRBKTtcbiAgICB9XG5cbiAgICB2YXIgbWF4UiA9IHNlbGYuZ2V0KCdtYXhSJyk7XG4gICAgdmFyIG1pblIgPSBzZWxmLmdldCgnbWluUicpO1xuICAgIHZhciByID0gc2VsZi5nZXQoJ3InKTtcblxuICAgIGlmIChyID4gKG1heFIgfHwgZ3JhcGguZ2V0KCdoZWlnaHQnKSkgJiYgcmF0aW8gPiAxIHx8IHIgPCAobWluUiB8fCBncmFwaC5nZXQoJ2hlaWdodCcpICogMC4wNSkgJiYgcmF0aW8gPCAxKSB7XG4gICAgICByYXRpbyA9IDE7XG4gICAgfVxuXG4gICAgciAqPSByYXRpbztcbiAgICBzZWxmLnNldCgncicsIHIpO1xuICAgIHNlbGYuZmlsdGVyKGUpO1xuICB9O1xuICAvKipcbiAgICogUmVzcG9uc2UgZnVuY3Rpb24gZm9yIG1vdXNlbW92ZSwgY2xpY2ssIG9yIGRyYWcgdG8gZmlsdGVyIG91dCB0aGUgZWRnZXNcbiAgICogQHBhcmFtIGUgbW91c2UgZXZlbnRcbiAgICovXG5cblxuICBFZGdlRmlsdGVyTGVucy5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgICB2YXIgaGl0Tm9kZXNNYXAgPSB7fTtcbiAgICB2YXIgciA9IHNlbGYuZ2V0KCdyJyk7XG4gICAgdmFyIHR5cGUgPSBzZWxmLmdldCgndHlwZScpO1xuICAgIHZhciBmQ2VudGVyID0ge1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfTtcbiAgICBzZWxmLnVwZGF0ZURlbGVnYXRlKGZDZW50ZXIsIHIpO1xuICAgIHZhciBzaG91bGRTaG93ID0gc2VsZi5nZXQoJ3Nob3VsZFNob3cnKTtcbiAgICB2YXIgdlNoYXBlcyA9IHNlbGYuZ2V0KCd2U2hhcGVzJyk7XG5cbiAgICBpZiAodlNoYXBlcykge1xuICAgICAgdlNoYXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICBzaGFwZS5yZW1vdmUoKTtcbiAgICAgICAgc2hhcGUuZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdlNoYXBlcyA9IFtdO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBtb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcbiAgICAgIHZhciB4ID0gbW9kZWwueCxcbiAgICAgICAgICB5ID0gbW9kZWwueTtcblxuICAgICAgaWYgKGRpc3RhbmNlKHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfSwgZkNlbnRlcikgPCByKSB7XG4gICAgICAgIGhpdE5vZGVzTWFwW21vZGVsLmlkXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VzID0gZ3JhcGguZ2V0RWRnZXMoKTtcbiAgICB2YXIgaGl0RWRnZXMgPSBbXTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgbW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG4gICAgICB2YXIgc291cmNlSWQgPSBtb2RlbC5zb3VyY2U7XG4gICAgICB2YXIgdGFyZ2V0SWQgPSBtb2RlbC50YXJnZXQ7XG5cbiAgICAgIGlmIChzaG91bGRTaG93KG1vZGVsKSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ29ubHktc291cmNlJyB8fCB0eXBlID09PSAnb25lJykge1xuICAgICAgICAgIGlmIChoaXROb2Rlc01hcFtzb3VyY2VJZF0gJiYgIWhpdE5vZGVzTWFwW3RhcmdldElkXSkgaGl0RWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb25seS10YXJnZXQnIHx8IHR5cGUgPT09ICdvbmUnKSB7XG4gICAgICAgICAgaWYgKGhpdE5vZGVzTWFwW3RhcmdldElkXSAmJiAhaGl0Tm9kZXNNYXBbc291cmNlSWRdKSBoaXRFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib3RoJyAmJiBoaXROb2Rlc01hcFtzb3VyY2VJZF0gJiYgaGl0Tm9kZXNNYXBbdGFyZ2V0SWRdKSB7XG4gICAgICAgICAgaGl0RWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBzaG93Tm9kZUxhYmVsID0gc2VsZi5nZXQoJ3Nob3dOb2RlTGFiZWwnKTtcbiAgICB2YXIgc2hvd0VkZ2VMYWJlbCA9IHNlbGYuZ2V0KCdzaG93RWRnZWxhYmVsJyk7IC8vIGNvcHkgdGhlIHNoYXBlcyBpbiBoaXRFZGdlc1xuXG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGhpdEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBzaGFwZXMgPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICBzaGFwZXMuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgdmFyIHNoYXBlVHlwZSA9IHNoYXBlLmdldCgndHlwZScpO1xuICAgICAgICB2YXIgdlNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoc2hhcGVUeXBlLCB7XG4gICAgICAgICAgYXR0cnM6IHNoYXBlLmF0dHIoKVxuICAgICAgICB9KTtcbiAgICAgICAgdlNoYXBlcy5wdXNoKHZTaGFwZSk7XG5cbiAgICAgICAgaWYgKHNob3dOb2RlTGFiZWwgJiYgc2hhcGVUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICB2U2hhcGUuc2V0KCd2aXNpYmxlJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pOyAvLyBjb3B5IHRoZSBzaGFwZSBzb2YgaGl0Tm9kZXNcblxuICAgIE9iamVjdC5rZXlzKGhpdE5vZGVzTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBub2RlID0gaGl0Tm9kZXNNYXBba2V5XTtcbiAgICAgIHZhciBjbG9uZWRHcm91cCA9IG5vZGUuZ2V0KCdncm91cCcpLmNsb25lKCk7XG4gICAgICBncm91cC5hZGQoY2xvbmVkR3JvdXApO1xuICAgICAgdlNoYXBlcy5wdXNoKGNsb25lZEdyb3VwKTtcblxuICAgICAgaWYgKHNob3dFZGdlTGFiZWwpIHtcbiAgICAgICAgdmFyIHNoYXBlcyA9IGNsb25lZEdyb3VwLmdldCgnY2hpbGRyZW4nKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNoYXBlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBzaGFwZSA9IHNoYXBlc1tqXTtcblxuICAgICAgICAgIGlmIChzaGFwZS5nZXQoJ3R5cGUnKSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICBzaGFwZS5zZXQoJ3Zpc2libGUnLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZWxmLnNldCgndlNoYXBlcycsIHZTaGFwZXMpO1xuICB9O1xuICAvKipcbiAgICogQWRqdXN0IHBhcnQgb2YgdGhlIHBhcmFtZXRlcnMsIGluY2x1ZGluZyB0cmlnZ2VyLCB0eXBlLCByLCBtYXhSLCBtaW5SLCBzaG91bGRTaG93LCBzaG93TGFiZWwsIGFuZCBzY2FsZVJCeVxuICAgKiBAcGFyYW0ge0VkZ2VGaWx0ZXJMZW5zQ29uZmlnfSBjZmdcbiAgICovXG5cblxuICBFZGdlRmlsdGVyTGVucy5wcm90b3R5cGUudXBkYXRlUGFyYW1zID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgciA9IGNmZy5yLFxuICAgICAgICB0cmlnZ2VyID0gY2ZnLnRyaWdnZXIsXG4gICAgICAgIG1pblIgPSBjZmcubWluUixcbiAgICAgICAgbWF4UiA9IGNmZy5tYXhSLFxuICAgICAgICBzY2FsZVJCeSA9IGNmZy5zY2FsZVJCeSxcbiAgICAgICAgc2hvd0xhYmVsID0gY2ZnLnNob3dMYWJlbCxcbiAgICAgICAgc2hvdWxkU2hvdyA9IGNmZy5zaG91bGRTaG93O1xuXG4gICAgaWYgKCFpc05hTihjZmcucikpIHtcbiAgICAgIHNlbGYuc2V0KCdyJywgcik7XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihtYXhSKSkge1xuICAgICAgc2VsZi5zZXQoJ21heFInLCBtYXhSKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmFOKG1pblIpKSB7XG4gICAgICBzZWxmLnNldCgnbWluUicsIG1pblIpO1xuICAgIH1cblxuICAgIGlmICh0cmlnZ2VyID09PSAnbW91c2Vtb3ZlJyB8fCB0cmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICBzZWxmLnNldCgndHJpZ2dlcicsIHRyaWdnZXIpO1xuICAgIH1cblxuICAgIGlmIChzY2FsZVJCeSA9PT0gJ3doZWVsJyB8fCBzY2FsZVJCeSA9PT0gJ3Vuc2V0Jykge1xuICAgICAgc2VsZi5zZXQoJ3NjYWxlUkJ5Jywgc2NhbGVSQnkpO1xuICAgICAgc2VsZi5nZXQoJ2RlbGVnYXRlJykucmVtb3ZlKCk7XG4gICAgICBzZWxmLmdldCgnZGVsZWdhdGUnKS5kZXN0cm95KCk7XG4gICAgICB2YXIgZFBlcmNlbnRUZXh0ID0gc2VsZi5nZXQoJ2RQZXJjZW50VGV4dCcpO1xuXG4gICAgICBpZiAoZFBlcmNlbnRUZXh0KSB7XG4gICAgICAgIGRQZXJjZW50VGV4dC5yZW1vdmUoKTtcbiAgICAgICAgZFBlcmNlbnRUZXh0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2hvd0xhYmVsID09PSAnbm9kZScgfHwgc2hvd0xhYmVsID09PSAnYm90aCcpIHtcbiAgICAgIHNlbGYuc2V0KCdzaG93Tm9kZUxhYmVsJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNob3dMYWJlbCA9PT0gJ2VkZ2UnIHx8IHNob3dMYWJlbCA9PT0gJ2JvdGgnKSB7XG4gICAgICBzZWxmLnNldCgnc2hvd0VkZ2VMYWJlbCcsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRTaG93KSB7XG4gICAgICBzZWxmLnNldCgnc2hvdWxkU2hvdycsIHNob3VsZFNob3cpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgZGVsZWdhdGUgc2hhcGUgb2YgdGhlIGxlbnNcbiAgICogQHBhcmFtIHtQb2ludH0gbUNlbnRlciB0aGUgY2VudGVyIG9mIHRoZSBzaGFwZVxuICAgKiBAcGFyYW0ge251bWJlcn0gciB0aGUgcmFkaXVzIG9mIHRoZSBzaGFwZVxuICAgKi9cblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS51cGRhdGVEZWxlZ2F0ZSA9IGZ1bmN0aW9uIChtQ2VudGVyLCByKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcblxuICAgIGlmICghbGVuc0RlbGVnYXRlIHx8IGxlbnNEZWxlZ2F0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIOaLluWKqOWkmuS4qlxuICAgICAgdmFyIHBhcmVudF8xID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgICAgdmFyIGF0dHJzID0gc2VsZi5nZXQoJ2RlbGVnYXRlU3R5bGUnKSB8fCBsZW5zRGVsZWdhdGVTdHlsZTsgLy8gbW9kZWzkuIrnmoR4LCB55piv55u45a+55LqO5Zu+5b2i5Lit5b+D55qE77yMZGVsZWdhdGVTaGFwZeaYr2flrp7kvovvvIx4LHnmmK/nu53lr7nlnZDmoIdcblxuICAgICAgbGVuc0RlbGVnYXRlID0gcGFyZW50XzEuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICByOiByLFxuICAgICAgICAgIHg6IG1DZW50ZXIueCxcbiAgICAgICAgICB5OiBtQ2VudGVyLnlcbiAgICAgICAgfSwgYXR0cnMpLFxuICAgICAgICBuYW1lOiAnbGVucy1zaGFwZScsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmdldCgndHJpZ2dlcicpICE9PSAnZHJhZycpIHtcbiAgICAgICAgLy8g6LCD5pW06IyD5Zu0IHIg55qE55uR5ZCsXG4gICAgICAgIGlmICh0aGlzLmdldCgnc2NhbGVSQnknKSA9PT0gJ3doZWVsJykge1xuICAgICAgICAgIC8vIOS9v+eUqOa7mui9ruiwg+aVtCByXG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdtb3VzZXdoZWVsJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgc2VsZi5zY2FsZVJCeVdoZWVsKGV2dCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuc0RlbGVnYXRlLmF0dHIoe1xuICAgICAgICB4OiBtQ2VudGVyLngsXG4gICAgICAgIHk6IG1DZW50ZXIueSxcbiAgICAgICAgcjogclxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VsZi5zZXQoJ2RlbGVnYXRlJywgbGVuc0RlbGVnYXRlKTtcbiAgfTtcbiAgLyoqXG4gICAqIENsZWFyIHRoZSBmaWx0ZXJpbmdcbiAgICovXG5cblxuICBFZGdlRmlsdGVyTGVucy5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB2U2hhcGVzID0gc2VsZi5nZXQoJ3ZTaGFwZXMnKTtcblxuICAgIGlmICh2U2hhcGVzKSB7XG4gICAgICB2U2hhcGVzLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgIHNoYXBlLnJlbW92ZSgpO1xuICAgICAgICBzaGFwZS5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2U2hhcGVzID0gW107XG4gICAgc2VsZi5zZXQoJ3ZTaGFwZXMnLCB2U2hhcGVzKTtcbiAgICB2YXIgbGVuc0RlbGVnYXRlID0gc2VsZi5nZXQoJ2RlbGVnYXRlJyk7XG5cbiAgICBpZiAobGVuc0RlbGVnYXRlICYmICFsZW5zRGVsZWdhdGUuZGVzdHJveWVkKSB7XG4gICAgICBsZW5zRGVsZWdhdGUucmVtb3ZlKCk7XG4gICAgICBsZW5zRGVsZWdhdGUuZGVzdHJveSgpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIERlc3Ryb3kgdGhlIGNvbXBvbmVudFxuICAgKi9cblxuXG4gIEVkZ2VGaWx0ZXJMZW5zLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgfTtcblxuICByZXR1cm4gRWRnZUZpbHRlckxlbnM7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBFZGdlRmlsdGVyTGVuczsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/edgeFilterLens/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/fisheye/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/fisheye/index.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\nvar DELTA = 0.05;\nvar lensDelegateStyle = {\n stroke: '#000',\n strokeOpacity: 0.8,\n lineWidth: 2,\n fillOpacity: 0.1,\n fill: '#ccc'\n};\n\nvar Fisheye =\n/** @class */\nfunction (_super) {\n __extends(Fisheye, _super);\n\n function Fisheye(config) {\n return _super.call(this, config) || this;\n }\n\n Fisheye.prototype.getDefaultCfgs = function () {\n return {\n trigger: 'mousemove',\n d: 1.5,\n r: 300,\n delegateStyle: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(lensDelegateStyle),\n showLabel: false,\n maxD: 5,\n minD: 0,\n scaleRBy: 'unset',\n scaleDBy: 'unset',\n showDPercent: true\n };\n }; // class-methods-use-this\n\n\n Fisheye.prototype.getEvents = function () {\n var events;\n\n switch (this.get('trigger')) {\n case 'click':\n events = {\n click: 'magnify'\n };\n break;\n\n case 'drag':\n events = {\n click: 'createDelegate'\n };\n break;\n\n default:\n events = {\n mousemove: 'magnify'\n };\n break;\n }\n\n return events;\n };\n\n Fisheye.prototype.init = function () {\n var self = this;\n var r = self.get('r');\n self.set('cachedMagnifiedModels', []);\n self.set('cachedOriginPositions', {});\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n }; // Create the delegate when the trigger is drag\n\n\n Fisheye.prototype.createDelegate = function (e) {\n var _this = this;\n\n var self = this;\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n self.magnify(e);\n lensDelegate = self.get('delegate'); // drag to move the lens\n\n lensDelegate.on('dragstart', function (evt) {\n self.set('delegateCenterDiff', {\n x: lensDelegate.attr('x') - evt.x,\n y: lensDelegate.attr('y') - evt.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n self.magnify(evt);\n }); // 绑定调整范围(r)和缩放系数(d)的监听\n // 由于 drag 用于改变 lens 位置, 因此在此模式下, drag 不能用于调整 r 和 d\n // scaling d\n\n if (this.get('scaleDBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n _this.scaleDByWheel(evt);\n });\n } // scaling r\n\n\n if (this.get('scaleRBy') === 'wheel') {\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n }\n }\n };\n /**\n * Scale the range by wheel\n * @param e mouse wheel event\n */\n\n\n Fisheye.prototype.scaleRByWheel = function (e) {\n var self = this;\n if (!e || !e.originalEvent) return;\n if (e.preventDefault) e.preventDefault();\n var graph = self.get('graph');\n var ratio;\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n var mousePos = lensCenter || graph.getPointByClient(e.clientX, e.clientY);\n\n if (e.originalEvent.wheelDelta < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n\n r *= ratio;\n self.set('r', r);\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n self.set('delegateCenterDiff', undefined);\n self.magnify(e, mousePos);\n };\n /**\n * Scale the range by dragging\n * @param e mouse event\n */\n\n\n Fisheye.prototype.scaleRByDrag = function (e) {\n var self = this;\n if (!e) return;\n var dragPrePos = self.get('dragPrePos');\n var graph = self.get('graph');\n var ratio;\n var mousePos = graph.getPointByClient(e.clientX, e.clientY);\n\n if (e.x - dragPrePos.x < 0) {\n ratio = 1 - DELTA;\n } else {\n ratio = 1 / (1 - DELTA);\n }\n\n var maxR = self.get('maxR');\n var minR = self.get('minR');\n var r = self.get('r');\n\n if (r > (maxR || graph.get('height')) && ratio > 1 || r < (minR || graph.get('height') * 0.05) && ratio < 1) {\n ratio = 1;\n }\n\n r *= ratio;\n self.set('r', r);\n self.set('r2', r * r);\n var d = self.get('d');\n self.set('molecularParam', (d + 1) * r);\n self.magnify(e, mousePos);\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n };\n /**\n * Scale the magnifying factor by wheel\n * @param e mouse wheel event\n */\n\n\n Fisheye.prototype.scaleDByWheel = function (evt) {\n var self = this;\n if (!evt && !evt.originalEvent) return;\n if (evt.preventDefault) evt.preventDefault();\n var delta = 0;\n\n if (evt.originalEvent.wheelDelta < 0) {\n delta = -0.1;\n } else {\n delta = 0.1;\n }\n\n var d = self.get('d');\n var newD = d + delta;\n var maxD = self.get('maxD');\n var minD = self.get('minD');\n\n if (newD < maxD && newD > minD) {\n self.set('d', newD);\n var r = self.get('r');\n self.set('molecularParam', (newD + 1) * r);\n var lensDelegate = self.get('delegate');\n var lensCenter = lensDelegate ? {\n x: lensDelegate.attr('x'),\n y: lensDelegate.attr('y')\n } : undefined;\n self.set('delegateCenterDiff', undefined);\n self.magnify(evt, lensCenter);\n }\n };\n /**\n * Scale the magnifying factor by dragging\n * @param e mouse event\n */\n\n\n Fisheye.prototype.scaleDByDrag = function (e) {\n var self = this;\n var dragPrePos = self.get('dragPrePos');\n var delta = e.x - dragPrePos.x > 0 ? 0.1 : -0.1;\n var d = self.get('d');\n var newD = d + delta;\n var maxD = self.get('maxD');\n var minD = self.get('minD');\n\n if (newD < maxD && newD > minD) {\n self.set('d', newD);\n var r = self.get('r');\n self.set('molecularParam', (newD + 1) * r);\n self.magnify(e);\n }\n\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n };\n /**\n * Response function for mousemove, click, or drag to magnify\n * @param e mouse event\n */\n\n\n Fisheye.prototype.magnify = function (e, mousePos) {\n var self = this;\n self.restoreCache();\n var graph = self.get('graph');\n var cachedMagnifiedModels = self.get('cachedMagnifiedModels');\n var cachedOriginPositions = self.get('cachedOriginPositions');\n var showLabel = self.get('showLabel');\n var r = self.get('r');\n var r2 = self.get('r2');\n var d = self.get('d');\n var molecularParam = self.get('molecularParam');\n var nodes = graph.getNodes();\n var nodeLength = nodes.length;\n var mCenter = mousePos ? {\n x: mousePos.x,\n y: mousePos.y\n } : {\n x: e.x,\n y: e.y\n };\n\n if (self.get('dragging') && (self.get('trigger') === 'mousemove' || self.get('trigger') === 'click')) {\n mCenter = self.get('cacheCenter');\n }\n\n var delegateCenterDiff = self.get('delegateCenterDiff');\n\n if (delegateCenterDiff) {\n mCenter.x += delegateCenterDiff.x;\n mCenter.y += delegateCenterDiff.y;\n }\n\n self.updateDelegate(mCenter, r);\n\n for (var i = 0; i < nodeLength; i++) {\n var model = nodes[i].getModel();\n var x = model.x,\n y = model.y;\n if (isNaN(x) || isNaN(y)) continue; // the square of the distance between the node and the magnified center\n\n var dist2 = (x - mCenter.x) * (x - mCenter.x) + (y - mCenter.y) * (y - mCenter.y);\n\n if (!isNaN(dist2) && dist2 < r2 && dist2 !== 0) {\n var dist = Math.sqrt(dist2); // (r * (d + 1) * (dist / r)) / (d * (dist / r) + 1);\n\n var magnifiedDist = molecularParam * dist / (d * dist + r);\n var cos = (x - mCenter.x) / dist;\n var sin = (y - mCenter.y) / dist;\n model.x = cos * magnifiedDist + mCenter.x;\n model.y = sin * magnifiedDist + mCenter.y;\n\n if (!cachedOriginPositions[model.id]) {\n cachedOriginPositions[model.id] = {\n x: x,\n y: y,\n texts: []\n };\n }\n\n cachedMagnifiedModels.push(model);\n\n if (showLabel && 2 * dist < r) {\n var node = nodes[i];\n var nodeGroup = node.getContainer();\n var shapes = nodeGroup.getChildren();\n var shapeLength = shapes.length;\n\n for (var j = 0; j < shapeLength; j++) {\n var shape = shapes[j];\n\n if (shape.get('type') === 'text') {\n cachedOriginPositions[model.id].texts.push({\n visible: shape.get('visible'),\n shape: shape\n });\n shape.set('visible', true);\n }\n }\n }\n }\n }\n\n graph.refreshPositions();\n };\n /**\n * Restore the cache nodes while magnifying\n */\n\n\n Fisheye.prototype.restoreCache = function () {\n var self = this;\n var cachedMagnifiedModels = self.get('cachedMagnifiedModels');\n var cachedOriginPositions = self.get('cachedOriginPositions');\n var cacheLength = cachedMagnifiedModels.length;\n\n for (var i = 0; i < cacheLength; i++) {\n var node = cachedMagnifiedModels[i];\n var id = node.id;\n var ori = cachedOriginPositions[id];\n node.x = ori.x;\n node.y = ori.y;\n var textLength = ori.texts.length;\n\n for (var j = 0; j < textLength; j++) {\n var text = ori.texts[j];\n text.shape.set('visible', text.visible);\n }\n }\n\n self.set('cachedMagnifiedModels', []);\n self.set('cachedOriginPositions', {});\n };\n /**\n * Adjust part of the parameters, including trigger, d, r, maxR, minR, maxD, minD, scaleRBy, and scaleDBy\n * @param {FisheyeConfig} cfg\n */\n\n\n Fisheye.prototype.updateParams = function (cfg) {\n var self = this;\n var r = cfg.r,\n d = cfg.d,\n trigger = cfg.trigger,\n minD = cfg.minD,\n maxD = cfg.maxD,\n minR = cfg.minR,\n maxR = cfg.maxR,\n scaleDBy = cfg.scaleDBy,\n scaleRBy = cfg.scaleRBy;\n\n if (!isNaN(cfg.r)) {\n self.set('r', r);\n self.set('r2', r * r);\n }\n\n if (!isNaN(d)) {\n self.set('d', d);\n }\n\n if (!isNaN(maxD)) {\n self.set('maxD', maxD);\n }\n\n if (!isNaN(minD)) {\n self.set('minD', minD);\n }\n\n if (!isNaN(maxR)) {\n self.set('maxR', maxR);\n }\n\n if (!isNaN(minR)) {\n self.set('minR', minR);\n }\n\n var nd = self.get('d');\n var nr = self.get('r');\n self.set('molecularParam', (nd + 1) * nr);\n\n if (trigger === 'mousemove' || trigger === 'click' || trigger === 'drag') {\n self.set('trigger', trigger);\n }\n\n if (scaleDBy === 'drag' || scaleDBy === 'wheel' || scaleDBy === 'unset') {\n self.set('scaleDBy', scaleDBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n\n if (scaleRBy === 'drag' || scaleRBy === 'wheel' || scaleRBy === 'unset') {\n self.set('scaleRBy', scaleRBy);\n self.get('delegate').remove();\n self.get('delegate').destroy();\n var dPercentText = self.get('dPercentText');\n\n if (dPercentText) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n }\n };\n /**\n * Update the delegate shape of the lens\n * @param {Point} mCenter the center of the shape\n * @param {number} r the radius of the shape\n */\n\n\n Fisheye.prototype.updateDelegate = function (mCenter, r) {\n var _this = this;\n\n var self = this;\n var graph = self.get('graph');\n var lensDelegate = self.get('delegate');\n\n if (!lensDelegate || lensDelegate.destroyed) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = self.get('delegateStyle') || lensDelegateStyle; // model上的x, y是相对于图形中心的, delegateShape是g实例, x,y是绝对坐标\n\n lensDelegate = parent_1.addShape('circle', {\n attrs: __assign({\n r: r / 1.5,\n x: mCenter.x,\n y: mCenter.y\n }, attrs),\n name: 'lens-shape',\n draggable: true\n });\n\n if (this.get('trigger') !== 'drag') {\n // 调整范围 r 的监听\n if (this.get('scaleRBy') === 'wheel') {\n // 使用滚轮调整 r\n lensDelegate.on('mousewheel', function (evt) {\n self.scaleRByWheel(evt);\n });\n } else if (this.get('scaleRBy') === 'drag') {\n // 使用拖拽调整 r\n lensDelegate.on('dragstart', function (e) {\n self.set('dragging', true);\n self.set('cacheCenter', {\n x: e.x,\n y: e.y\n });\n self.set('dragPrePos', {\n x: e.x,\n y: e.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n self.scaleRByDrag(evt);\n });\n lensDelegate.on('dragend', function (e) {\n self.set('dragging', false);\n });\n } // 调整缩放系数 d 的监听\n\n\n if (this.get('scaleDBy') === 'wheel') {\n // 使用滚轮调整 d\n lensDelegate.on('mousewheel', function (evt) {\n _this.scaleDByWheel(evt);\n });\n } else if (this.get('scaleDBy') === 'drag') {\n // 使用拖拽调整 d\n lensDelegate.on('dragstart', function (evt) {\n self.set('dragging', true);\n self.set('cacheCenter', {\n x: evt.x,\n y: evt.y\n });\n self.set('dragPrePos', {\n x: evt.x,\n y: evt.y\n });\n });\n lensDelegate.on('drag', function (evt) {\n _this.scaleDByDrag(evt);\n });\n lensDelegate.on('dragend', function (evt) {\n self.set('dragging', false);\n });\n }\n }\n } else {\n lensDelegate.attr({\n x: mCenter.x,\n y: mCenter.y,\n r: r / 1.5\n });\n } // 绘制缩放系数百分比文本\n\n\n if (self.get('showDPercent')) {\n var percent = Math.round((self.get('d') - self.get('minD')) / (self.get('maxD') - self.get('minD')) * 100);\n var dPercentText = self.get('dPercentText');\n var textY = mCenter.y + r / 1.5 + 16;\n\n if (!dPercentText || dPercentText.destroyed) {\n var parent_2 = graph.get('group');\n dPercentText = parent_2.addShape('text', {\n attrs: {\n text: percent + \"%\",\n x: mCenter.x,\n y: textY,\n fill: '#aaa',\n stroke: '#fff',\n lineWidth: 1,\n fontSize: 12\n }\n });\n self.set('dPercentText', dPercentText);\n } else {\n dPercentText.attr({\n text: percent + \"%\",\n x: mCenter.x,\n y: textY\n });\n }\n }\n\n self.set('delegate', lensDelegate);\n };\n /**\n * Clear the fisheye lens\n */\n\n\n Fisheye.prototype.clear = function () {\n var graph = this.get('graph');\n this.restoreCache();\n graph.refreshPositions();\n var lensDelegate = this.get('delegate');\n\n if (lensDelegate && !lensDelegate.destroyed) {\n lensDelegate.remove();\n lensDelegate.destroy();\n }\n\n var dPercentText = this.get('dPercentText');\n\n if (dPercentText && !dPercentText.destroyed) {\n dPercentText.remove();\n dPercentText.destroy();\n }\n };\n /**\n * Destroy the component\n */\n\n\n Fisheye.prototype.destroy = function () {\n this.clear();\n };\n\n return Fisheye;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Fisheye);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvZmlzaGV5ZS9pbmRleC5qcz8xN2ExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVtQztBQUNSO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU8sRUFBRTtBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7O0FBRUE7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsaUJBQWlCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25CLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxzRUFBTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy9maXNoZXllL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgICBfZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX2V4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuXG4gICAgX2V4dGVuZFN0YXRpY3MoZCwgYik7XG5cbiAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICAgIH1cblxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgfTtcbn0oKTtcblxudmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG52YXIgREVMVEEgPSAwLjA1O1xudmFyIGxlbnNEZWxlZ2F0ZVN0eWxlID0ge1xuICBzdHJva2U6ICcjMDAwJyxcbiAgc3Ryb2tlT3BhY2l0eTogMC44LFxuICBsaW5lV2lkdGg6IDIsXG4gIGZpbGxPcGFjaXR5OiAwLjEsXG4gIGZpbGw6ICcjY2NjJ1xufTtcblxudmFyIEZpc2hleWUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRmlzaGV5ZSwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBGaXNoZXllKGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBGaXNoZXllLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogJ21vdXNlbW92ZScsXG4gICAgICBkOiAxLjUsXG4gICAgICByOiAzMDAsXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiBjbG9uZShsZW5zRGVsZWdhdGVTdHlsZSksXG4gICAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgICAgbWF4RDogNSxcbiAgICAgIG1pbkQ6IDAsXG4gICAgICBzY2FsZVJCeTogJ3Vuc2V0JyxcbiAgICAgIHNjYWxlREJ5OiAndW5zZXQnLFxuICAgICAgc2hvd0RQZXJjZW50OiB0cnVlXG4gICAgfTtcbiAgfTsgLy8gY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBldmVudHM7XG5cbiAgICBzd2l0Y2ggKHRoaXMuZ2V0KCd0cmlnZ2VyJykpIHtcbiAgICAgIGNhc2UgJ2NsaWNrJzpcbiAgICAgICAgZXZlbnRzID0ge1xuICAgICAgICAgIGNsaWNrOiAnbWFnbmlmeSdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2RyYWcnOlxuICAgICAgICBldmVudHMgPSB7XG4gICAgICAgICAgY2xpY2s6ICdjcmVhdGVEZWxlZ2F0ZSdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGV2ZW50cyA9IHtcbiAgICAgICAgICBtb3VzZW1vdmU6ICdtYWduaWZ5J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRzO1xuICB9O1xuXG4gIEZpc2hleWUucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByID0gc2VsZi5nZXQoJ3InKTtcbiAgICBzZWxmLnNldCgnY2FjaGVkTWFnbmlmaWVkTW9kZWxzJywgW10pO1xuICAgIHNlbGYuc2V0KCdjYWNoZWRPcmlnaW5Qb3NpdGlvbnMnLCB7fSk7XG4gICAgc2VsZi5zZXQoJ3IyJywgciAqIHIpO1xuICAgIHZhciBkID0gc2VsZi5nZXQoJ2QnKTtcbiAgICBzZWxmLnNldCgnbW9sZWN1bGFyUGFyYW0nLCAoZCArIDEpICogcik7XG4gIH07IC8vIENyZWF0ZSB0aGUgZGVsZWdhdGUgd2hlbiB0aGUgdHJpZ2dlciBpcyBkcmFnXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS5jcmVhdGVEZWxlZ2F0ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgbGVuc0RlbGVnYXRlID0gc2VsZi5nZXQoJ2RlbGVnYXRlJyk7XG5cbiAgICBpZiAoIWxlbnNEZWxlZ2F0ZSB8fCBsZW5zRGVsZWdhdGUuZGVzdHJveWVkKSB7XG4gICAgICBzZWxmLm1hZ25pZnkoZSk7XG4gICAgICBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTsgLy8gZHJhZyB0byBtb3ZlIHRoZSBsZW5zXG5cbiAgICAgIGxlbnNEZWxlZ2F0ZS5vbignZHJhZ3N0YXJ0JywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBzZWxmLnNldCgnZGVsZWdhdGVDZW50ZXJEaWZmJywge1xuICAgICAgICAgIHg6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd4JykgLSBldnQueCxcbiAgICAgICAgICB5OiBsZW5zRGVsZWdhdGUuYXR0cigneScpIC0gZXZ0LnlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5vbignZHJhZycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgc2VsZi5tYWduaWZ5KGV2dCk7XG4gICAgICB9KTsgLy8g57uR5a6a6LCD5pW06IyD5Zu077yIcu+8ieWSjOe8qeaUvuezu+aVsChkKeeahOebkeWQrFxuICAgICAgLy8g55Sx5LqOIGRyYWcg55So5LqO5pS55Y+YIGxlbnMg5L2N572uLCDlm6DmraTlnKjmraTmqKHlvI/kuIssIGRyYWcg5LiN6IO955So5LqO6LCD5pW0IHIg5ZKMIGRcbiAgICAgIC8vIHNjYWxpbmcgZFxuXG4gICAgICBpZiAodGhpcy5nZXQoJ3NjYWxlREJ5JykgPT09ICd3aGVlbCcpIHtcbiAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdtb3VzZXdoZWVsJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgIF90aGlzLnNjYWxlREJ5V2hlZWwoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIHNjYWxpbmcgclxuXG5cbiAgICAgIGlmICh0aGlzLmdldCgnc2NhbGVSQnknKSA9PT0gJ3doZWVsJykge1xuICAgICAgICBsZW5zRGVsZWdhdGUub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgc2VsZi5zY2FsZVJCeVdoZWVsKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIFNjYWxlIHRoZSByYW5nZSBieSB3aGVlbFxuICAgKiBAcGFyYW0gZSBtb3VzZSB3aGVlbCBldmVudFxuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLnNjYWxlUkJ5V2hlZWwgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoIWUgfHwgIWUub3JpZ2luYWxFdmVudCkgcmV0dXJuO1xuICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIHJhdGlvO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcbiAgICB2YXIgbGVuc0NlbnRlciA9IGxlbnNEZWxlZ2F0ZSA/IHtcbiAgICAgIHg6IGxlbnNEZWxlZ2F0ZS5hdHRyKCd4JyksXG4gICAgICB5OiBsZW5zRGVsZWdhdGUuYXR0cigneScpXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbW91c2VQb3MgPSBsZW5zQ2VudGVyIHx8IGdyYXBoLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuXG4gICAgaWYgKGUub3JpZ2luYWxFdmVudC53aGVlbERlbHRhIDwgMCkge1xuICAgICAgcmF0aW8gPSAxIC0gREVMVEE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvID0gMSAvICgxIC0gREVMVEEpO1xuICAgIH1cblxuICAgIHZhciBtYXhSID0gc2VsZi5nZXQoJ21heFInKTtcbiAgICB2YXIgbWluUiA9IHNlbGYuZ2V0KCdtaW5SJyk7XG4gICAgdmFyIHIgPSBzZWxmLmdldCgncicpO1xuXG4gICAgaWYgKHIgPiAobWF4UiB8fCBncmFwaC5nZXQoJ2hlaWdodCcpKSAmJiByYXRpbyA+IDEgfHwgciA8IChtaW5SIHx8IGdyYXBoLmdldCgnaGVpZ2h0JykgKiAwLjA1KSAmJiByYXRpbyA8IDEpIHtcbiAgICAgIHJhdGlvID0gMTtcbiAgICB9XG5cbiAgICByICo9IHJhdGlvO1xuICAgIHNlbGYuc2V0KCdyJywgcik7XG4gICAgc2VsZi5zZXQoJ3IyJywgciAqIHIpO1xuICAgIHZhciBkID0gc2VsZi5nZXQoJ2QnKTtcbiAgICBzZWxmLnNldCgnbW9sZWN1bGFyUGFyYW0nLCAoZCArIDEpICogcik7XG4gICAgc2VsZi5zZXQoJ2RlbGVnYXRlQ2VudGVyRGlmZicsIHVuZGVmaW5lZCk7XG4gICAgc2VsZi5tYWduaWZ5KGUsIG1vdXNlUG9zKTtcbiAgfTtcbiAgLyoqXG4gICAqIFNjYWxlIHRoZSByYW5nZSBieSBkcmFnZ2luZ1xuICAgKiBAcGFyYW0gZSBtb3VzZSBldmVudFxuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLnNjYWxlUkJ5RHJhZyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmICghZSkgcmV0dXJuO1xuICAgIHZhciBkcmFnUHJlUG9zID0gc2VsZi5nZXQoJ2RyYWdQcmVQb3MnKTtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgcmF0aW87XG4gICAgdmFyIG1vdXNlUG9zID0gZ3JhcGguZ2V0UG9pbnRCeUNsaWVudChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG5cbiAgICBpZiAoZS54IC0gZHJhZ1ByZVBvcy54IDwgMCkge1xuICAgICAgcmF0aW8gPSAxIC0gREVMVEE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhdGlvID0gMSAvICgxIC0gREVMVEEpO1xuICAgIH1cblxuICAgIHZhciBtYXhSID0gc2VsZi5nZXQoJ21heFInKTtcbiAgICB2YXIgbWluUiA9IHNlbGYuZ2V0KCdtaW5SJyk7XG4gICAgdmFyIHIgPSBzZWxmLmdldCgncicpO1xuXG4gICAgaWYgKHIgPiAobWF4UiB8fCBncmFwaC5nZXQoJ2hlaWdodCcpKSAmJiByYXRpbyA+IDEgfHwgciA8IChtaW5SIHx8IGdyYXBoLmdldCgnaGVpZ2h0JykgKiAwLjA1KSAmJiByYXRpbyA8IDEpIHtcbiAgICAgIHJhdGlvID0gMTtcbiAgICB9XG5cbiAgICByICo9IHJhdGlvO1xuICAgIHNlbGYuc2V0KCdyJywgcik7XG4gICAgc2VsZi5zZXQoJ3IyJywgciAqIHIpO1xuICAgIHZhciBkID0gc2VsZi5nZXQoJ2QnKTtcbiAgICBzZWxmLnNldCgnbW9sZWN1bGFyUGFyYW0nLCAoZCArIDEpICogcik7XG4gICAgc2VsZi5tYWduaWZ5KGUsIG1vdXNlUG9zKTtcbiAgICBzZWxmLnNldCgnZHJhZ1ByZVBvcycsIHtcbiAgICAgIHg6IGUueCxcbiAgICAgIHk6IGUueVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogU2NhbGUgdGhlIG1hZ25pZnlpbmcgZmFjdG9yIGJ5IHdoZWVsXG4gICAqIEBwYXJhbSBlIG1vdXNlIHdoZWVsIGV2ZW50XG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuc2NhbGVEQnlXaGVlbCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFldnQgJiYgIWV2dC5vcmlnaW5hbEV2ZW50KSByZXR1cm47XG4gICAgaWYgKGV2dC5wcmV2ZW50RGVmYXVsdCkgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGRlbHRhID0gMDtcblxuICAgIGlmIChldnQub3JpZ2luYWxFdmVudC53aGVlbERlbHRhIDwgMCkge1xuICAgICAgZGVsdGEgPSAtMC4xO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWx0YSA9IDAuMTtcbiAgICB9XG5cbiAgICB2YXIgZCA9IHNlbGYuZ2V0KCdkJyk7XG4gICAgdmFyIG5ld0QgPSBkICsgZGVsdGE7XG4gICAgdmFyIG1heEQgPSBzZWxmLmdldCgnbWF4RCcpO1xuICAgIHZhciBtaW5EID0gc2VsZi5nZXQoJ21pbkQnKTtcblxuICAgIGlmIChuZXdEIDwgbWF4RCAmJiBuZXdEID4gbWluRCkge1xuICAgICAgc2VsZi5zZXQoJ2QnLCBuZXdEKTtcbiAgICAgIHZhciByID0gc2VsZi5nZXQoJ3InKTtcbiAgICAgIHNlbGYuc2V0KCdtb2xlY3VsYXJQYXJhbScsIChuZXdEICsgMSkgKiByKTtcbiAgICAgIHZhciBsZW5zRGVsZWdhdGUgPSBzZWxmLmdldCgnZGVsZWdhdGUnKTtcbiAgICAgIHZhciBsZW5zQ2VudGVyID0gbGVuc0RlbGVnYXRlID8ge1xuICAgICAgICB4OiBsZW5zRGVsZWdhdGUuYXR0cigneCcpLFxuICAgICAgICB5OiBsZW5zRGVsZWdhdGUuYXR0cigneScpXG4gICAgICB9IDogdW5kZWZpbmVkO1xuICAgICAgc2VsZi5zZXQoJ2RlbGVnYXRlQ2VudGVyRGlmZicsIHVuZGVmaW5lZCk7XG4gICAgICBzZWxmLm1hZ25pZnkoZXZ0LCBsZW5zQ2VudGVyKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBTY2FsZSB0aGUgbWFnbmlmeWluZyBmYWN0b3IgYnkgZHJhZ2dpbmdcbiAgICogQHBhcmFtIGUgbW91c2UgZXZlbnRcbiAgICovXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS5zY2FsZURCeURyYWcgPSBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZHJhZ1ByZVBvcyA9IHNlbGYuZ2V0KCdkcmFnUHJlUG9zJyk7XG4gICAgdmFyIGRlbHRhID0gZS54IC0gZHJhZ1ByZVBvcy54ID4gMCA/IDAuMSA6IC0wLjE7XG4gICAgdmFyIGQgPSBzZWxmLmdldCgnZCcpO1xuICAgIHZhciBuZXdEID0gZCArIGRlbHRhO1xuICAgIHZhciBtYXhEID0gc2VsZi5nZXQoJ21heEQnKTtcbiAgICB2YXIgbWluRCA9IHNlbGYuZ2V0KCdtaW5EJyk7XG5cbiAgICBpZiAobmV3RCA8IG1heEQgJiYgbmV3RCA+IG1pbkQpIHtcbiAgICAgIHNlbGYuc2V0KCdkJywgbmV3RCk7XG4gICAgICB2YXIgciA9IHNlbGYuZ2V0KCdyJyk7XG4gICAgICBzZWxmLnNldCgnbW9sZWN1bGFyUGFyYW0nLCAobmV3RCArIDEpICogcik7XG4gICAgICBzZWxmLm1hZ25pZnkoZSk7XG4gICAgfVxuXG4gICAgc2VsZi5zZXQoJ2RyYWdQcmVQb3MnLCB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlc3BvbnNlIGZ1bmN0aW9uIGZvciBtb3VzZW1vdmUsIGNsaWNrLCBvciBkcmFnIHRvIG1hZ25pZnlcbiAgICogQHBhcmFtIGUgbW91c2UgZXZlbnRcbiAgICovXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS5tYWduaWZ5ID0gZnVuY3Rpb24gKGUsIG1vdXNlUG9zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYucmVzdG9yZUNhY2hlKCk7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGNhY2hlZE1hZ25pZmllZE1vZGVscyA9IHNlbGYuZ2V0KCdjYWNoZWRNYWduaWZpZWRNb2RlbHMnKTtcbiAgICB2YXIgY2FjaGVkT3JpZ2luUG9zaXRpb25zID0gc2VsZi5nZXQoJ2NhY2hlZE9yaWdpblBvc2l0aW9ucycpO1xuICAgIHZhciBzaG93TGFiZWwgPSBzZWxmLmdldCgnc2hvd0xhYmVsJyk7XG4gICAgdmFyIHIgPSBzZWxmLmdldCgncicpO1xuICAgIHZhciByMiA9IHNlbGYuZ2V0KCdyMicpO1xuICAgIHZhciBkID0gc2VsZi5nZXQoJ2QnKTtcbiAgICB2YXIgbW9sZWN1bGFyUGFyYW0gPSBzZWxmLmdldCgnbW9sZWN1bGFyUGFyYW0nKTtcbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuICAgIHZhciBtQ2VudGVyID0gbW91c2VQb3MgPyB7XG4gICAgICB4OiBtb3VzZVBvcy54LFxuICAgICAgeTogbW91c2VQb3MueVxuICAgIH0gOiB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9O1xuXG4gICAgaWYgKHNlbGYuZ2V0KCdkcmFnZ2luZycpICYmIChzZWxmLmdldCgndHJpZ2dlcicpID09PSAnbW91c2Vtb3ZlJyB8fCBzZWxmLmdldCgndHJpZ2dlcicpID09PSAnY2xpY2snKSkge1xuICAgICAgbUNlbnRlciA9IHNlbGYuZ2V0KCdjYWNoZUNlbnRlcicpO1xuICAgIH1cblxuICAgIHZhciBkZWxlZ2F0ZUNlbnRlckRpZmYgPSBzZWxmLmdldCgnZGVsZWdhdGVDZW50ZXJEaWZmJyk7XG5cbiAgICBpZiAoZGVsZWdhdGVDZW50ZXJEaWZmKSB7XG4gICAgICBtQ2VudGVyLnggKz0gZGVsZWdhdGVDZW50ZXJEaWZmLng7XG4gICAgICBtQ2VudGVyLnkgKz0gZGVsZWdhdGVDZW50ZXJEaWZmLnk7XG4gICAgfVxuXG4gICAgc2VsZi51cGRhdGVEZWxlZ2F0ZShtQ2VudGVyLCByKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbW9kZWwgPSBub2Rlc1tpXS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIHggPSBtb2RlbC54LFxuICAgICAgICAgIHkgPSBtb2RlbC55O1xuICAgICAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSBjb250aW51ZTsgLy8gdGhlIHNxdWFyZSBvZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgbm9kZSBhbmQgdGhlIG1hZ25pZmllZCBjZW50ZXJcblxuICAgICAgdmFyIGRpc3QyID0gKHggLSBtQ2VudGVyLngpICogKHggLSBtQ2VudGVyLngpICsgKHkgLSBtQ2VudGVyLnkpICogKHkgLSBtQ2VudGVyLnkpO1xuXG4gICAgICBpZiAoIWlzTmFOKGRpc3QyKSAmJiBkaXN0MiA8IHIyICYmIGRpc3QyICE9PSAwKSB7XG4gICAgICAgIHZhciBkaXN0ID0gTWF0aC5zcXJ0KGRpc3QyKTsgLy8gKHIgKiAoZCArIDEpICogKGRpc3QgLyByKSkgLyAoZCAqIChkaXN0IC8gcikgKyAxKTtcblxuICAgICAgICB2YXIgbWFnbmlmaWVkRGlzdCA9IG1vbGVjdWxhclBhcmFtICogZGlzdCAvIChkICogZGlzdCArIHIpO1xuICAgICAgICB2YXIgY29zID0gKHggLSBtQ2VudGVyLngpIC8gZGlzdDtcbiAgICAgICAgdmFyIHNpbiA9ICh5IC0gbUNlbnRlci55KSAvIGRpc3Q7XG4gICAgICAgIG1vZGVsLnggPSBjb3MgKiBtYWduaWZpZWREaXN0ICsgbUNlbnRlci54O1xuICAgICAgICBtb2RlbC55ID0gc2luICogbWFnbmlmaWVkRGlzdCArIG1DZW50ZXIueTtcblxuICAgICAgICBpZiAoIWNhY2hlZE9yaWdpblBvc2l0aW9uc1ttb2RlbC5pZF0pIHtcbiAgICAgICAgICBjYWNoZWRPcmlnaW5Qb3NpdGlvbnNbbW9kZWwuaWRdID0ge1xuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB0ZXh0czogW11cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY2FjaGVkTWFnbmlmaWVkTW9kZWxzLnB1c2gobW9kZWwpO1xuXG4gICAgICAgIGlmIChzaG93TGFiZWwgJiYgMiAqIGRpc3QgPCByKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICB2YXIgbm9kZUdyb3VwID0gbm9kZS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgICB2YXIgc2hhcGVzID0gbm9kZUdyb3VwLmdldENoaWxkcmVuKCk7XG4gICAgICAgICAgdmFyIHNoYXBlTGVuZ3RoID0gc2hhcGVzLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2hhcGVMZW5ndGg7IGorKykge1xuICAgICAgICAgICAgdmFyIHNoYXBlID0gc2hhcGVzW2pdO1xuXG4gICAgICAgICAgICBpZiAoc2hhcGUuZ2V0KCd0eXBlJykgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICBjYWNoZWRPcmlnaW5Qb3NpdGlvbnNbbW9kZWwuaWRdLnRleHRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZpc2libGU6IHNoYXBlLmdldCgndmlzaWJsZScpLFxuICAgICAgICAgICAgICAgIHNoYXBlOiBzaGFwZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgc2hhcGUuc2V0KCd2aXNpYmxlJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICB9O1xuICAvKipcbiAgICogUmVzdG9yZSB0aGUgY2FjaGUgbm9kZXMgd2hpbGUgbWFnbmlmeWluZ1xuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLnJlc3RvcmVDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNhY2hlZE1hZ25pZmllZE1vZGVscyA9IHNlbGYuZ2V0KCdjYWNoZWRNYWduaWZpZWRNb2RlbHMnKTtcbiAgICB2YXIgY2FjaGVkT3JpZ2luUG9zaXRpb25zID0gc2VsZi5nZXQoJ2NhY2hlZE9yaWdpblBvc2l0aW9ucycpO1xuICAgIHZhciBjYWNoZUxlbmd0aCA9IGNhY2hlZE1hZ25pZmllZE1vZGVscy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhY2hlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gY2FjaGVkTWFnbmlmaWVkTW9kZWxzW2ldO1xuICAgICAgdmFyIGlkID0gbm9kZS5pZDtcbiAgICAgIHZhciBvcmkgPSBjYWNoZWRPcmlnaW5Qb3NpdGlvbnNbaWRdO1xuICAgICAgbm9kZS54ID0gb3JpLng7XG4gICAgICBub2RlLnkgPSBvcmkueTtcbiAgICAgIHZhciB0ZXh0TGVuZ3RoID0gb3JpLnRleHRzLmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0ZXh0TGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIHRleHQgPSBvcmkudGV4dHNbal07XG4gICAgICAgIHRleHQuc2hhcGUuc2V0KCd2aXNpYmxlJywgdGV4dC52aXNpYmxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLnNldCgnY2FjaGVkTWFnbmlmaWVkTW9kZWxzJywgW10pO1xuICAgIHNlbGYuc2V0KCdjYWNoZWRPcmlnaW5Qb3NpdGlvbnMnLCB7fSk7XG4gIH07XG4gIC8qKlxuICAgKiBBZGp1c3QgcGFydCBvZiB0aGUgcGFyYW1ldGVycywgaW5jbHVkaW5nIHRyaWdnZXIsIGQsIHIsIG1heFIsIG1pblIsIG1heEQsIG1pbkQsIHNjYWxlUkJ5LCBhbmQgc2NhbGVEQnlcbiAgICogQHBhcmFtIHtGaXNoZXllQ29uZmlnfSBjZmdcbiAgICovXG5cblxuICBGaXNoZXllLnByb3RvdHlwZS51cGRhdGVQYXJhbXMgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByID0gY2ZnLnIsXG4gICAgICAgIGQgPSBjZmcuZCxcbiAgICAgICAgdHJpZ2dlciA9IGNmZy50cmlnZ2VyLFxuICAgICAgICBtaW5EID0gY2ZnLm1pbkQsXG4gICAgICAgIG1heEQgPSBjZmcubWF4RCxcbiAgICAgICAgbWluUiA9IGNmZy5taW5SLFxuICAgICAgICBtYXhSID0gY2ZnLm1heFIsXG4gICAgICAgIHNjYWxlREJ5ID0gY2ZnLnNjYWxlREJ5LFxuICAgICAgICBzY2FsZVJCeSA9IGNmZy5zY2FsZVJCeTtcblxuICAgIGlmICghaXNOYU4oY2ZnLnIpKSB7XG4gICAgICBzZWxmLnNldCgncicsIHIpO1xuICAgICAgc2VsZi5zZXQoJ3IyJywgciAqIHIpO1xuICAgIH1cblxuICAgIGlmICghaXNOYU4oZCkpIHtcbiAgICAgIHNlbGYuc2V0KCdkJywgZCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihtYXhEKSkge1xuICAgICAgc2VsZi5zZXQoJ21heEQnLCBtYXhEKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmFOKG1pbkQpKSB7XG4gICAgICBzZWxmLnNldCgnbWluRCcsIG1pbkQpO1xuICAgIH1cblxuICAgIGlmICghaXNOYU4obWF4UikpIHtcbiAgICAgIHNlbGYuc2V0KCdtYXhSJywgbWF4Uik7XG4gICAgfVxuXG4gICAgaWYgKCFpc05hTihtaW5SKSkge1xuICAgICAgc2VsZi5zZXQoJ21pblInLCBtaW5SKTtcbiAgICB9XG5cbiAgICB2YXIgbmQgPSBzZWxmLmdldCgnZCcpO1xuICAgIHZhciBuciA9IHNlbGYuZ2V0KCdyJyk7XG4gICAgc2VsZi5zZXQoJ21vbGVjdWxhclBhcmFtJywgKG5kICsgMSkgKiBucik7XG5cbiAgICBpZiAodHJpZ2dlciA9PT0gJ21vdXNlbW92ZScgfHwgdHJpZ2dlciA9PT0gJ2NsaWNrJyB8fCB0cmlnZ2VyID09PSAnZHJhZycpIHtcbiAgICAgIHNlbGYuc2V0KCd0cmlnZ2VyJywgdHJpZ2dlcik7XG4gICAgfVxuXG4gICAgaWYgKHNjYWxlREJ5ID09PSAnZHJhZycgfHwgc2NhbGVEQnkgPT09ICd3aGVlbCcgfHwgc2NhbGVEQnkgPT09ICd1bnNldCcpIHtcbiAgICAgIHNlbGYuc2V0KCdzY2FsZURCeScsIHNjYWxlREJ5KTtcbiAgICAgIHNlbGYuZ2V0KCdkZWxlZ2F0ZScpLnJlbW92ZSgpO1xuICAgICAgc2VsZi5nZXQoJ2RlbGVnYXRlJykuZGVzdHJveSgpO1xuICAgICAgdmFyIGRQZXJjZW50VGV4dCA9IHNlbGYuZ2V0KCdkUGVyY2VudFRleHQnKTtcblxuICAgICAgaWYgKGRQZXJjZW50VGV4dCkge1xuICAgICAgICBkUGVyY2VudFRleHQucmVtb3ZlKCk7XG4gICAgICAgIGRQZXJjZW50VGV4dC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjYWxlUkJ5ID09PSAnZHJhZycgfHwgc2NhbGVSQnkgPT09ICd3aGVlbCcgfHwgc2NhbGVSQnkgPT09ICd1bnNldCcpIHtcbiAgICAgIHNlbGYuc2V0KCdzY2FsZVJCeScsIHNjYWxlUkJ5KTtcbiAgICAgIHNlbGYuZ2V0KCdkZWxlZ2F0ZScpLnJlbW92ZSgpO1xuICAgICAgc2VsZi5nZXQoJ2RlbGVnYXRlJykuZGVzdHJveSgpO1xuICAgICAgdmFyIGRQZXJjZW50VGV4dCA9IHNlbGYuZ2V0KCdkUGVyY2VudFRleHQnKTtcblxuICAgICAgaWYgKGRQZXJjZW50VGV4dCkge1xuICAgICAgICBkUGVyY2VudFRleHQucmVtb3ZlKCk7XG4gICAgICAgIGRQZXJjZW50VGV4dC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogVXBkYXRlIHRoZSBkZWxlZ2F0ZSBzaGFwZSBvZiB0aGUgbGVuc1xuICAgKiBAcGFyYW0ge1BvaW50fSBtQ2VudGVyIHRoZSBjZW50ZXIgb2YgdGhlIHNoYXBlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByIHRoZSByYWRpdXMgb2YgdGhlIHNoYXBlXG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUudXBkYXRlRGVsZWdhdGUgPSBmdW5jdGlvbiAobUNlbnRlciwgcikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGxlbnNEZWxlZ2F0ZSA9IHNlbGYuZ2V0KCdkZWxlZ2F0ZScpO1xuXG4gICAgaWYgKCFsZW5zRGVsZWdhdGUgfHwgbGVuc0RlbGVnYXRlLmRlc3Ryb3llZCkge1xuICAgICAgLy8g5ouW5Yqo5aSa5LiqXG4gICAgICB2YXIgcGFyZW50XzEgPSBncmFwaC5nZXQoJ2dyb3VwJyk7XG4gICAgICB2YXIgYXR0cnMgPSBzZWxmLmdldCgnZGVsZWdhdGVTdHlsZScpIHx8IGxlbnNEZWxlZ2F0ZVN0eWxlOyAvLyBtb2RlbOS4iueahHgsIHnmmK/nm7jlr7nkuo7lm77lvaLkuK3lv4PnmoQsIGRlbGVnYXRlU2hhcGXmmK9n5a6e5L6LLCB4LHnmmK/nu53lr7nlnZDmoIdcblxuICAgICAgbGVuc0RlbGVnYXRlID0gcGFyZW50XzEuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICByOiByIC8gMS41LFxuICAgICAgICAgIHg6IG1DZW50ZXIueCxcbiAgICAgICAgICB5OiBtQ2VudGVyLnlcbiAgICAgICAgfSwgYXR0cnMpLFxuICAgICAgICBuYW1lOiAnbGVucy1zaGFwZScsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmdldCgndHJpZ2dlcicpICE9PSAnZHJhZycpIHtcbiAgICAgICAgLy8g6LCD5pW06IyD5Zu0IHIg55qE55uR5ZCsXG4gICAgICAgIGlmICh0aGlzLmdldCgnc2NhbGVSQnknKSA9PT0gJ3doZWVsJykge1xuICAgICAgICAgIC8vIOS9v+eUqOa7mui9ruiwg+aVtCByXG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdtb3VzZXdoZWVsJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgc2VsZi5zY2FsZVJCeVdoZWVsKGV2dCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ3NjYWxlUkJ5JykgPT09ICdkcmFnJykge1xuICAgICAgICAgIC8vIOS9v+eUqOaLluaLveiwg+aVtCByXG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgc2VsZi5zZXQoJ2RyYWdnaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICBzZWxmLnNldCgnY2FjaGVDZW50ZXInLCB7XG4gICAgICAgICAgICAgIHg6IGUueCxcbiAgICAgICAgICAgICAgeTogZS55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuc2V0KCdkcmFnUHJlUG9zJywge1xuICAgICAgICAgICAgICB4OiBlLngsXG4gICAgICAgICAgICAgIHk6IGUueVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgc2VsZi5zY2FsZVJCeURyYWcoZXZ0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ2RyYWdlbmQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgc2VsZi5zZXQoJ2RyYWdnaW5nJywgZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IC8vIOiwg+aVtOe8qeaUvuezu+aVsCBkIOeahOebkeWQrFxuXG5cbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdzY2FsZURCeScpID09PSAnd2hlZWwnKSB7XG4gICAgICAgICAgLy8g5L2/55So5rua6L2u6LCD5pW0IGRcbiAgICAgICAgICBsZW5zRGVsZWdhdGUub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBfdGhpcy5zY2FsZURCeVdoZWVsKGV2dCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ3NjYWxlREJ5JykgPT09ICdkcmFnJykge1xuICAgICAgICAgIC8vIOS9v+eUqOaLluaLveiwg+aVtCBkXG4gICAgICAgICAgbGVuc0RlbGVnYXRlLm9uKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBzZWxmLnNldCgnZHJhZ2dpbmcnLCB0cnVlKTtcbiAgICAgICAgICAgIHNlbGYuc2V0KCdjYWNoZUNlbnRlcicsIHtcbiAgICAgICAgICAgICAgeDogZXZ0LngsXG4gICAgICAgICAgICAgIHk6IGV2dC55XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuc2V0KCdkcmFnUHJlUG9zJywge1xuICAgICAgICAgICAgICB4OiBldnQueCxcbiAgICAgICAgICAgICAgeTogZXZ0LnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxlbnNEZWxlZ2F0ZS5vbignZHJhZycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIF90aGlzLnNjYWxlREJ5RHJhZyhldnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxlbnNEZWxlZ2F0ZS5vbignZHJhZ2VuZCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIHNlbGYuc2V0KCdkcmFnZ2luZycsIGZhbHNlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5zRGVsZWdhdGUuYXR0cih7XG4gICAgICAgIHg6IG1DZW50ZXIueCxcbiAgICAgICAgeTogbUNlbnRlci55LFxuICAgICAgICByOiByIC8gMS41XG4gICAgICB9KTtcbiAgICB9IC8vIOe7mOWItue8qeaUvuezu+aVsOeZvuWIhuavlOaWh+acrFxuXG5cbiAgICBpZiAoc2VsZi5nZXQoJ3Nob3dEUGVyY2VudCcpKSB7XG4gICAgICB2YXIgcGVyY2VudCA9IE1hdGgucm91bmQoKHNlbGYuZ2V0KCdkJykgLSBzZWxmLmdldCgnbWluRCcpKSAvIChzZWxmLmdldCgnbWF4RCcpIC0gc2VsZi5nZXQoJ21pbkQnKSkgKiAxMDApO1xuICAgICAgdmFyIGRQZXJjZW50VGV4dCA9IHNlbGYuZ2V0KCdkUGVyY2VudFRleHQnKTtcbiAgICAgIHZhciB0ZXh0WSA9IG1DZW50ZXIueSArIHIgLyAxLjUgKyAxNjtcblxuICAgICAgaWYgKCFkUGVyY2VudFRleHQgfHwgZFBlcmNlbnRUZXh0LmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgcGFyZW50XzIgPSBncmFwaC5nZXQoJ2dyb3VwJyk7XG4gICAgICAgIGRQZXJjZW50VGV4dCA9IHBhcmVudF8yLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICB0ZXh0OiBwZXJjZW50ICsgXCIlXCIsXG4gICAgICAgICAgICB4OiBtQ2VudGVyLngsXG4gICAgICAgICAgICB5OiB0ZXh0WSxcbiAgICAgICAgICAgIGZpbGw6ICcjYWFhJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyNmZmYnLFxuICAgICAgICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgICAgICAgZm9udFNpemU6IDEyXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5zZXQoJ2RQZXJjZW50VGV4dCcsIGRQZXJjZW50VGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkUGVyY2VudFRleHQuYXR0cih7XG4gICAgICAgICAgdGV4dDogcGVyY2VudCArIFwiJVwiLFxuICAgICAgICAgIHg6IG1DZW50ZXIueCxcbiAgICAgICAgICB5OiB0ZXh0WVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLnNldCgnZGVsZWdhdGUnLCBsZW5zRGVsZWdhdGUpO1xuICB9O1xuICAvKipcbiAgICogQ2xlYXIgdGhlIGZpc2hleWUgbGVuc1xuICAgKi9cblxuXG4gIEZpc2hleWUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHRoaXMucmVzdG9yZUNhY2hlKCk7XG4gICAgZ3JhcGgucmVmcmVzaFBvc2l0aW9ucygpO1xuICAgIHZhciBsZW5zRGVsZWdhdGUgPSB0aGlzLmdldCgnZGVsZWdhdGUnKTtcblxuICAgIGlmIChsZW5zRGVsZWdhdGUgJiYgIWxlbnNEZWxlZ2F0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5yZW1vdmUoKTtcbiAgICAgIGxlbnNEZWxlZ2F0ZS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdmFyIGRQZXJjZW50VGV4dCA9IHRoaXMuZ2V0KCdkUGVyY2VudFRleHQnKTtcblxuICAgIGlmIChkUGVyY2VudFRleHQgJiYgIWRQZXJjZW50VGV4dC5kZXN0cm95ZWQpIHtcbiAgICAgIGRQZXJjZW50VGV4dC5yZW1vdmUoKTtcbiAgICAgIGRQZXJjZW50VGV4dC5kZXN0cm95KCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogRGVzdHJveSB0aGUgY29tcG9uZW50XG4gICAqL1xuXG5cbiAgRmlzaGV5ZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH07XG5cbiAgcmV0dXJuIEZpc2hleWU7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBGaXNoZXllOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/fisheye/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/grid/index.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/grid/index.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n // 网格背景图片\n\nvar GRID_PNG = 'url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImdyaWQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDEwIEwgNDAgMTAgTSAxMCAwIEwgMTAgNDAgTSAwIDIwIEwgNDAgMjAgTSAyMCAwIEwgMjAgNDAgTSAwIDMwIEwgNDAgMzAgTSAzMCAwIEwgMzAgNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2UwZTBlMCIgb3BhY2l0eT0iMC4yIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNIDQwIDAgTCAwIDAgMCA0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIiBzdHJva2Utd2lkdGg9IjEiLz48L3BhdHRlcm4+PC9kZWZzPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JpZCkiLz48L3N2Zz4=)';\n\nvar Grid =\n/** @class */\nfunction (_super) {\n __extends(Grid, _super);\n\n function Grid(config) {\n return _super.call(this, config) || this;\n }\n\n Grid.prototype.getDefaultCfgs = function () {\n return {\n img: GRID_PNG,\n follow: true\n };\n };\n\n Grid.prototype.init = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var canvas = graph.get('canvas').get('el');\n var img = this.get('img') || GRID_PNG;\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n var gridContainer = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"\");\n this.set('container', container);\n this.set('gridContainer', gridContainer);\n this.positionInit();\n container.appendChild(gridContainer);\n graphContainer.insertBefore(container, canvas);\n };\n /** 定位信息初始化 */\n\n\n Grid.prototype.positionInit = function () {\n var graph = this.get('graph');\n var minZoom = graph.get('minZoom');\n var width = graph.get('width');\n var height = graph.get('height');\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.get('container'), {\n width: width + \"px\",\n height: height + \"px\"\n }); // 网格 40*40 需保证 (gridContainerWidth / 2) % 40 = 0 才能让网格线对齐左上角 故 * 80\n\n var gridContainerWidth = width * 80 / minZoom;\n var gridContainerHeight = height * 80 / minZoom;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.get('gridContainer'), {\n width: gridContainerWidth + \"px\",\n height: gridContainerHeight + \"px\",\n left: \"-\" + gridContainerWidth / 2 + \"px\",\n top: \"-\" + gridContainerHeight / 2 + \"px\"\n });\n }; // class-methods-use-this\n\n\n Grid.prototype.getEvents = function () {\n return {\n viewportchange: 'updateGrid'\n };\n };\n /**\n * viewport change 事件的响应函数\n * @param param\n */\n\n\n Grid.prototype.updateGrid = function (param) {\n var gridContainer = this.get('gridContainer');\n var matrix = param.matrix;\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var isFollow = this.get('follow');\n var transform = \"matrix(\" + matrix[0] + \", \" + matrix[1] + \", \" + matrix[3] + \", \" + matrix[4] + \", \" + (isFollow ? matrix[6] : '0') + \", \" + (isFollow ? matrix[7] : '0') + \")\";\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(gridContainer, {\n transform: transform\n });\n };\n\n Grid.prototype.getContainer = function () {\n return this.get('container');\n };\n\n Grid.prototype.destroy = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = this.get('container');\n graphContainer.removeChild(container);\n };\n\n return Grid;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Grid);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvZ3JpZC9pbmRleC5qcz8xOWE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFcUQ7QUFDM0I7O0FBRTNCLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdFQUFTLDJEQUEyRCxnQkFBZ0IsWUFBWTtBQUNwSCx3QkFBd0IsZ0VBQVMsa0VBQWtFLHdDQUF3QztBQUMzSTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxtRUFBSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy9ncmlkL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgICBfZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX2V4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuXG4gICAgX2V4dGVuZFN0YXRpY3MoZCwgYik7XG5cbiAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICAgIH1cblxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgfTtcbn0oKTtcblxuaW1wb3J0IHsgbW9kaWZ5Q1NTLCBjcmVhdGVEb20gfSBmcm9tICdAYW50di9kb20tdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJzsgLy8g572R5qC86IOM5pmv5Zu+54mHXG5cbnZhciBHUklEX1BORyA9ICd1cmwoZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTkRBaUlHaGxhV2RvZEQwaU5EQWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStQR1JsWm5NK1BIQmhkSFJsY200Z2FXUTlJbWR5YVdRaUlIZHBaSFJvUFNJME1DSWdhR1ZwWjJoMFBTSTBNQ0lnY0dGMGRHVnlibFZ1YVhSelBTSjFjMlZ5VTNCaFkyVlBibFZ6WlNJK1BIQmhkR2dnWkQwaVRTQXdJREV3SUV3Z05EQWdNVEFnVFNBeE1DQXdJRXdnTVRBZ05EQWdUU0F3SURJd0lFd2dOREFnTWpBZ1RTQXlNQ0F3SUV3Z01qQWdOREFnVFNBd0lETXdJRXdnTkRBZ016QWdUU0F6TUNBd0lFd2dNekFnTkRBaUlHWnBiR3c5SW01dmJtVWlJSE4wY205clpUMGlJMlV3WlRCbE1DSWdiM0JoWTJsMGVUMGlNQzR5SWlCemRISnZhMlV0ZDJsa2RHZzlJakVpTHo0OGNHRjBhQ0JrUFNKTklEUXdJREFnVENBd0lEQWdNQ0EwTUNJZ1ptbHNiRDBpYm05dVpTSWdjM1J5YjJ0bFBTSWpaVEJsTUdVd0lpQnpkSEp2YTJVdGQybGtkR2c5SWpFaUx6NDhMM0JoZEhSbGNtNCtQQzlrWldaelBqeHlaV04wSUhkcFpIUm9QU0l4TURBbElpQm9aV2xuYUhROUlqRXdNQ1VpSUdacGJHdzlJblZ5YkNnalozSnBaQ2tpTHo0OEwzTjJaejQ9KSc7XG5cbnZhciBHcmlkID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKEdyaWQsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gR3JpZChjb25maWcpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY29uZmlnKSB8fCB0aGlzO1xuICB9XG5cbiAgR3JpZC5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltZzogR1JJRF9QTkcsXG4gICAgICBmb2xsb3c6IHRydWVcbiAgICB9O1xuICB9O1xuXG4gIEdyaWQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyYXBoQ29udGFpbmVyID0gZ3JhcGguZ2V0KCdjb250YWluZXInKTtcbiAgICB2YXIgY2FudmFzID0gZ3JhcGguZ2V0KCdjYW52YXMnKS5nZXQoJ2VsJyk7XG4gICAgdmFyIGltZyA9IHRoaXMuZ2V0KCdpbWcnKSB8fCBHUklEX1BORztcbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz0nZzYtZ3JpZC1jb250YWluZXInIHN0eWxlPVxcXCJwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDogLTE7XFxcIj48L2Rpdj5cIik7XG4gICAgdmFyIGdyaWRDb250YWluZXIgPSBjcmVhdGVEb20oXCI8ZGl2XFxuICAgICAgICBjbGFzcz0nZzYtZ3JpZCdcXG4gICAgICAgIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtcXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IFwiICsgaW1nICsgXCI7XFxuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZVxcbiAgICAgICAgJz48L2Rpdj5cIik7XG4gICAgdGhpcy5zZXQoJ2NvbnRhaW5lcicsIGNvbnRhaW5lcik7XG4gICAgdGhpcy5zZXQoJ2dyaWRDb250YWluZXInLCBncmlkQ29udGFpbmVyKTtcbiAgICB0aGlzLnBvc2l0aW9uSW5pdCgpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChncmlkQ29udGFpbmVyKTtcbiAgICBncmFwaENvbnRhaW5lci5pbnNlcnRCZWZvcmUoY29udGFpbmVyLCBjYW52YXMpO1xuICB9O1xuICAvKiog5a6a5L2N5L+h5oGv5Yid5aeL5YyWICovXG5cblxuICBHcmlkLnByb3RvdHlwZS5wb3NpdGlvbkluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIG1pblpvb20gPSBncmFwaC5nZXQoJ21pblpvb20nKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuZ2V0KCdjb250YWluZXInKSwge1xuICAgICAgd2lkdGg6IHdpZHRoICsgXCJweFwiLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBcInB4XCJcbiAgICB9KTsgLy8g572R5qC8IDQwKjQwIOmcgOS/neivgSAoZ3JpZENvbnRhaW5lcldpZHRoIC8gMikgJSA0MCA9IDAg5omN6IO96K6p572R5qC857q/5a+56b2Q5bem5LiK6KeSIOaVhSAqIDgwXG5cbiAgICB2YXIgZ3JpZENvbnRhaW5lcldpZHRoID0gd2lkdGggKiA4MCAvIG1pblpvb207XG4gICAgdmFyIGdyaWRDb250YWluZXJIZWlnaHQgPSBoZWlnaHQgKiA4MCAvIG1pblpvb207XG4gICAgbW9kaWZ5Q1NTKHRoaXMuZ2V0KCdncmlkQ29udGFpbmVyJyksIHtcbiAgICAgIHdpZHRoOiBncmlkQ29udGFpbmVyV2lkdGggKyBcInB4XCIsXG4gICAgICBoZWlnaHQ6IGdyaWRDb250YWluZXJIZWlnaHQgKyBcInB4XCIsXG4gICAgICBsZWZ0OiBcIi1cIiArIGdyaWRDb250YWluZXJXaWR0aCAvIDIgKyBcInB4XCIsXG4gICAgICB0b3A6IFwiLVwiICsgZ3JpZENvbnRhaW5lckhlaWdodCAvIDIgKyBcInB4XCJcbiAgICB9KTtcbiAgfTsgLy8gY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgR3JpZC5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICB2aWV3cG9ydGNoYW5nZTogJ3VwZGF0ZUdyaWQnXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIHZpZXdwb3J0IGNoYW5nZSDkuovku7bnmoTlk43lupTlh73mlbBcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuXG5cbiAgR3JpZC5wcm90b3R5cGUudXBkYXRlR3JpZCA9IGZ1bmN0aW9uIChwYXJhbSkge1xuICAgIHZhciBncmlkQ29udGFpbmVyID0gdGhpcy5nZXQoJ2dyaWRDb250YWluZXInKTtcbiAgICB2YXIgbWF0cml4ID0gcGFyYW0ubWF0cml4O1xuICAgIGlmICghbWF0cml4KSBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgdmFyIGlzRm9sbG93ID0gdGhpcy5nZXQoJ2ZvbGxvdycpO1xuICAgIHZhciB0cmFuc2Zvcm0gPSBcIm1hdHJpeChcIiArIG1hdHJpeFswXSArIFwiLCBcIiArIG1hdHJpeFsxXSArIFwiLCBcIiArIG1hdHJpeFszXSArIFwiLCBcIiArIG1hdHJpeFs0XSArIFwiLCBcIiArIChpc0ZvbGxvdyA/IG1hdHJpeFs2XSA6ICcwJykgKyBcIiwgXCIgKyAoaXNGb2xsb3cgPyBtYXRyaXhbN10gOiAnMCcpICsgXCIpXCI7XG4gICAgbW9kaWZ5Q1NTKGdyaWRDb250YWluZXIsIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtXG4gICAgfSk7XG4gIH07XG5cbiAgR3JpZC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG5cbiAgR3JpZC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZ3JhcGhDb250YWluZXIgPSBncmFwaC5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gICAgZ3JhcGhDb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtcbiAgfTtcblxuICByZXR1cm4gR3JpZDtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEdyaWQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/grid/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/imageMinimap/index.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/imageMinimap/index.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\n\nvar applyMatrix = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].applyMatrix;\n\nfunction getImgNaturalDimension(img, callback) {\n var nWidth, nHeight;\n\n if (img.naturalWidth) {\n // 现代浏览器\n nWidth = img.naturalWidth;\n nHeight = img.naturalHeight;\n } else {\n // IE6/7/8\n var image_1 = new Image();\n image_1.src = img.src;\n\n image_1.onload = function () {\n if (callback) callback(image_1.width, image_1.height);\n };\n }\n\n return [nWidth, nHeight];\n}\n\nvar ImageMiniMap =\n/** @class */\nfunction (_super) {\n __extends(ImageMiniMap, _super);\n\n function ImageMiniMap(config) {\n return _super.call(this, config) || this;\n }\n\n ImageMiniMap.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-minimap',\n viewportClassName: 'g6-minimap-viewport',\n width: 200,\n delegateStyle: {\n fill: '#40a9ff',\n stroke: '#096dd9'\n },\n refresh: true\n };\n };\n\n ImageMiniMap.prototype.getEvents = function () {\n return {\n beforepaint: 'updateViewport',\n beforeanimate: 'disableRefresh',\n afteranimate: 'enableRefresh',\n viewportchange: 'disableOneRefresh'\n };\n }; // 若是正在进行动画,不刷新缩略图\n\n\n ImageMiniMap.prototype.disableRefresh = function () {\n this.set('refresh', false);\n };\n\n ImageMiniMap.prototype.enableRefresh = function () {\n this.set('refresh', true);\n this.updateCanvas();\n };\n\n ImageMiniMap.prototype.disableOneRefresh = function () {\n this.set('viewportChange', true);\n };\n\n ImageMiniMap.prototype.initViewport = function () {\n var _this = this;\n\n var cfgs = this._cfgs; // cWidth and cHeight are the width and height of the minimap's container\n\n var graph = cfgs.graph;\n if (this.destroyed) return;\n var containerDOM = this.get('container');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(containerDOM)) {\n containerDOM = document.getElementById(containerDOM);\n }\n\n var viewport = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\\n
\"); // 计算拖拽水平方向距离\n\n var x = 0; // 计算拖拽垂直方向距离\n\n var y = 0; // 是否在拖拽minimap的视口\n\n var dragging = false; // 缓存viewport当前对于画布的x\n\n var left = 0; // 缓存viewport当前对于画布的y\n\n var top = 0; // 缓存viewport当前宽度\n\n var width = 0; // 缓存viewport当前高度\n\n var height = 0;\n var ratio = 0;\n var zoom = 0;\n containerDOM.addEventListener('mousedown', function (e) {\n cfgs.refresh = false;\n\n if (e.target !== viewport) {\n return;\n } // 如果视口已经最大了,不需要拖拽\n\n\n var style = viewport.style;\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n\n var cWidth = _this.get('width');\n\n var cHeight = _this.get('height');\n\n if (width > cWidth || height > cHeight) {\n return;\n }\n\n zoom = graph.getZoom();\n ratio = _this.get('ratio');\n dragging = true;\n x = e.clientX;\n y = e.clientY;\n }, false);\n containerDOM.addEventListener('mousemove', function (e) {\n if (!dragging || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(e.clientX) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(e.clientY)) {\n return;\n }\n\n var cWidth = _this.get('width');\n\n var cHeight = _this.get('height');\n\n var style = viewport.style;\n left = parseInt(style.left, 10);\n top = parseInt(style.top, 10);\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n var dx = x - e.clientX;\n var dy = y - e.clientY; // 若视口移动到最左边或最右边了,仅移动到边界\n\n if (left - dx < 0) {\n dx = left;\n } else if (left - dx + width >= cWidth) {\n dx = 0;\n } // 若视口移动到最上或最下边了,仅移动到边界\n\n\n if (top - dy < 0) {\n dy = top;\n } else if (top - dy + height >= cHeight) {\n dy = 0;\n }\n\n left -= dx;\n top -= dy; // 先移动视口,避免移动到边上以后出现视口闪烁\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(viewport, {\n left: left + \"px\",\n top: top + \"px\"\n }); // graph 移动需要偏移量 dx/dy * 缩放比例才会得到正确的移动距离\n\n graph.translate(dx * zoom / ratio, dy * zoom / ratio);\n x = e.clientX;\n y = e.clientY;\n }, false);\n containerDOM.addEventListener('mouseleave', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n containerDOM.addEventListener('mouseup', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n this.set('viewport', viewport);\n containerDOM.appendChild(viewport);\n };\n /**\n * 更新 viewport 视图\n */\n\n\n ImageMiniMap.prototype.updateViewport = function () {\n if (this.destroyed) return;\n var ratio = this.get('ratio');\n var cWidth = this.get('width');\n var cHeight = this.get('height');\n var graph = this.get('graph');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var aspectRatio = graphWidth / graphHeight;\n var graphGroup = graph.getGroup(); // 主图的 bbox(矩阵变换相关的 bbox)\n\n var graphCanvasBBox = graphGroup.getCanvasBBox(); // 扩展 graphBBox 到和 graphWidth / graphHeight 等比\n\n var graphCanvasBBoxMean = [(graphCanvasBBox.minX + graphCanvasBBox.maxX) / 2, (graphCanvasBBox.minY + graphCanvasBBox.maxY) / 2];\n var graphCanvasBBoxSize = [graphCanvasBBox.maxX - graphCanvasBBox.minX, graphCanvasBBox.maxY - graphCanvasBBox.minY];\n var expandedGraphCanvasBBox = {\n centerX: graphCanvasBBoxMean[0],\n centerY: graphCanvasBBoxMean[1],\n width: 0,\n height: 0,\n minX: 0,\n minY: 0\n };\n\n if (graphCanvasBBox[0] / graphCanvasBBox[1] > aspectRatio) {\n expandedGraphCanvasBBox.width = graphCanvasBBoxSize[0];\n expandedGraphCanvasBBox.height = expandedGraphCanvasBBox.width / aspectRatio;\n } else {\n expandedGraphCanvasBBox.height = graphCanvasBBoxSize[1];\n expandedGraphCanvasBBox.width = expandedGraphCanvasBBox.height * aspectRatio;\n }\n\n expandedGraphCanvasBBox.minX = graphCanvasBBoxMean[0] - expandedGraphCanvasBBox.width / 2;\n expandedGraphCanvasBBox.minY = graphCanvasBBoxMean[1] - expandedGraphCanvasBBox.height / 2;\n var graphMatrix = graphGroup.getMatrix();\n if (!graphMatrix) graphMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var invertGraphMatrix = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__[\"mat3\"].invert([1, 0, 0, 0, 1, 0, 0, 0, 1], graphMatrix);\n var minXY = applyMatrix({\n x: expandedGraphCanvasBBox.minX,\n y: expandedGraphCanvasBBox.minY\n }, invertGraphMatrix); // 扩展 graphBBox 后的 bbox 的左上角对应的 canvas container 坐标\n\n var topLeft = graph.getCanvasByPoint(minXY.x, minXY.y);\n var viewport = this.get('viewport');\n\n if (!viewport) {\n this.initViewport();\n } // Viewport 与 minimap container 的比例 = Graph container 与 expandedGraphBBox 比例\n\n\n var vpToMc = graphWidth / expandedGraphCanvasBBox.width; // viewport 宽高 = vpToMc * minimap container 宽高\n\n var width = vpToMc * cWidth;\n var height = vpToMc * cHeight; // vierport 左上角到 minimap container 的距离 / minimap container 宽高\n // = 主图 expandedBBox 左上角 canvas container 坐标距离 / expandedBBox 宽高\n\n var left = cWidth * -topLeft.x / expandedGraphCanvasBBox.width;\n var top = cHeight * -topLeft.y / expandedGraphCanvasBBox.height;\n var right = left + width;\n var bottom = top + height;\n\n if (left < 0) {\n width += left;\n left = 0;\n }\n\n if (right > cWidth) {\n width = width - (right - cWidth);\n }\n\n if (top < 0) {\n height += top;\n top = 0;\n }\n\n if (bottom > cHeight) {\n height = height - (bottom - cHeight);\n } // 缓存目前缩放比,在移动 minimap 视窗时就不用再计算大图的移动量\n\n\n this.set('ratio', ratio);\n var correctLeft = left + \"px\";\n var correctTop = top + \"px\";\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(viewport, {\n left: correctLeft,\n top: correctTop,\n width: width + \"px\",\n height: height + \"px\"\n });\n };\n\n ImageMiniMap.prototype.init = function () {\n this.initContainer();\n };\n /**\n * 初始化 Minimap 的容器\n */\n\n\n ImageMiniMap.prototype.initContainer = function () {\n var self = this;\n var graph = self.get('graph');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var aspectRatio = graphHeight / graphWidth;\n var className = self.get('className');\n var parentNode = self.get('container'); // size of the minimap's container\n\n var cWidth = self.get('width');\n var cHeight = self.get('height');\n\n if (!cWidth && !cHeight) {\n cWidth = 200;\n }\n\n if (cWidth) {\n cHeight = aspectRatio * cWidth;\n self.set('height', cHeight);\n } else {\n cWidth = 1 / aspectRatio * cHeight;\n self.set('width', cWidth);\n }\n\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\");\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n\n if (parentNode) {\n parentNode.appendChild(container);\n } else {\n graph.get('container').appendChild(container);\n }\n\n self.set('container', container);\n var containerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\");\n container.appendChild(containerDOM);\n var span = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"\");\n containerDOM.appendChild(span);\n self.set('containerDOM', containerDOM);\n self.set('containerSpan', span);\n var img = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"\\\"\\\"\");\n self.set('imgDOM', img);\n self.updateImgSize();\n span.appendChild(img);\n self.updateCanvas();\n };\n\n ImageMiniMap.prototype.updateImgSize = function () {\n var self = this;\n var imgDOM = self.get('imgDOM');\n var cWidth = self.get('width');\n var cHeight = self.get('height');\n\n imgDOM.onload = function () {\n var naturalSize = getImgNaturalDimension(imgDOM);\n\n if (naturalSize[0] > naturalSize[1]) {\n imgDOM.width = cWidth;\n } else {\n imgDOM.height = cHeight;\n }\n };\n };\n\n ImageMiniMap.prototype.updateCanvas = function () {\n // 如果是在动画,则不刷新视图\n var isRefresh = this.get('refresh');\n\n if (!isRefresh) {\n return;\n }\n\n var graph = this.get('graph');\n\n if (graph.get('destroyed')) {\n return;\n } // 如果是视口变换,也不刷新视图,但是需要重置视口大小和位置\n\n\n if (this.get('viewportChange')) {\n this.set('viewportChange', false);\n this.updateViewport();\n }\n\n var cWidth = this.get('width');\n var graphBBox = graph.get('canvas').getCanvasBBox();\n var width = graphBBox.width;\n var ratio = cWidth / width; // // 更新minimap视口\n\n this.set('ratio', ratio);\n this.updateViewport();\n };\n /**\n * 获取minimap的窗口\n * @return {HTMLElement} 窗口的dom实例\n */\n\n\n ImageMiniMap.prototype.getViewport = function () {\n return this.get('viewport');\n };\n /**\n * 获取minimap的容器dom\n * @return {HTMLElement} dom\n */\n\n\n ImageMiniMap.prototype.getContainer = function () {\n return this.get('container');\n };\n\n ImageMiniMap.prototype.updateGraphImg = function (img) {\n var self = this;\n var oriImgDOM = self.get('imgDOM');\n oriImgDOM.remove();\n self.set('graphImg', img);\n var imgDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"\\\"\\\"\");\n self.set('imgDOM', imgDOM);\n imgDOM.src = img;\n self.updateImgSize();\n var span = self.get('containerSpan');\n span.appendChild(imgDOM);\n self.updateCanvas();\n };\n\n ImageMiniMap.prototype.destroy = function () {\n var container = this.get('container');\n container.parentNode.removeChild(container);\n };\n\n return ImageMiniMap;\n}(_base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ImageMiniMap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvaW1hZ2VNaW5pbWFwL2luZGV4LmpzPzI0YWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUUwQjtBQUNrQjtBQUNTO0FBQ2pCO0FBQ0k7QUFDekMsa0JBQWtCLGtEQUFJOztBQUV0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQSxtQkFBbUIsZ0VBQVMsNEVBQTRFLGlCQUFpQixnQkFBZ0IsZ0NBQWdDLHNEQUFzRDs7QUFFL04sY0FBYzs7QUFFZCxjQUFjOztBQUVkLHlCQUF5Qjs7QUFFekIsaUJBQWlCOztBQUVqQixnQkFBZ0I7O0FBRWhCLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsdUJBQXVCLHdEQUFLLGVBQWUsd0RBQUs7QUFDaEQ7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0I7O0FBRWhCLE1BQU0sZ0VBQVM7QUFDZjtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDOztBQUV0QyxxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQUk7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsS0FBSyxxQkFBcUI7O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMLDREQUE0RDs7QUFFNUQ7QUFDQSxrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsZ0VBQVMsZ0VBQWdFLDJCQUEyQixrQkFBa0Isb0JBQW9COztBQUU5SixRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLGdFQUFTLGlFQUFpRSxhQUFhLGNBQWMsb0JBQW9CLGdCQUFnQjtBQUNoSztBQUNBLGVBQWUsZ0VBQVMsb0NBQW9DLHdCQUF3QjtBQUNwRjtBQUNBO0FBQ0E7QUFDQSxjQUFjLGdFQUFTLG1GQUFtRixtQkFBbUI7QUFDN0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFlBQVk7QUFDMUI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFlBQVk7QUFDMUI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdFQUFTLGtFQUFrRSw4QkFBOEIsZ0NBQWdDO0FBQzFKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLDJFQUFZIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL2ltYWdlTWluaW1hcC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IG1hdDMgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG52YXIgYXBwbHlNYXRyaXggPSBVdGlsLmFwcGx5TWF0cml4O1xuXG5mdW5jdGlvbiBnZXRJbWdOYXR1cmFsRGltZW5zaW9uKGltZywgY2FsbGJhY2spIHtcbiAgdmFyIG5XaWR0aCwgbkhlaWdodDtcblxuICBpZiAoaW1nLm5hdHVyYWxXaWR0aCkge1xuICAgIC8vIOeOsOS7o+a1j+iniOWZqFxuICAgIG5XaWR0aCA9IGltZy5uYXR1cmFsV2lkdGg7XG4gICAgbkhlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIC8vIElFNi83LzhcbiAgICB2YXIgaW1hZ2VfMSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlXzEuc3JjID0gaW1nLnNyYztcblxuICAgIGltYWdlXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhpbWFnZV8xLndpZHRoLCBpbWFnZV8xLmhlaWdodCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBbbldpZHRoLCBuSGVpZ2h0XTtcbn1cblxudmFyIEltYWdlTWluaU1hcCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhJbWFnZU1pbmlNYXAsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gSW1hZ2VNaW5pTWFwKGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICBjbGFzc05hbWU6ICdnNi1taW5pbWFwJyxcbiAgICAgIHZpZXdwb3J0Q2xhc3NOYW1lOiAnZzYtbWluaW1hcC12aWV3cG9ydCcsXG4gICAgICB3aWR0aDogMjAwLFxuICAgICAgZGVsZWdhdGVTdHlsZToge1xuICAgICAgICBmaWxsOiAnIzQwYTlmZicsXG4gICAgICAgIHN0cm9rZTogJyMwOTZkZDknXG4gICAgICB9LFxuICAgICAgcmVmcmVzaDogdHJ1ZVxuICAgIH07XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5nZXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJlZm9yZXBhaW50OiAndXBkYXRlVmlld3BvcnQnLFxuICAgICAgYmVmb3JlYW5pbWF0ZTogJ2Rpc2FibGVSZWZyZXNoJyxcbiAgICAgIGFmdGVyYW5pbWF0ZTogJ2VuYWJsZVJlZnJlc2gnLFxuICAgICAgdmlld3BvcnRjaGFuZ2U6ICdkaXNhYmxlT25lUmVmcmVzaCdcbiAgICB9O1xuICB9OyAvLyDoi6XmmK/mraPlnKjov5vooYzliqjnlLvvvIzkuI3liLfmlrDnvKnnlaXlm75cblxuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUuZGlzYWJsZVJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ3JlZnJlc2gnLCBmYWxzZSk7XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5lbmFibGVSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdyZWZyZXNoJywgdHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVDYW52YXMoKTtcbiAgfTtcblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmRpc2FibGVPbmVSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCd2aWV3cG9ydENoYW5nZScsIHRydWUpO1xuICB9O1xuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUuaW5pdFZpZXdwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgY2ZncyA9IHRoaXMuX2NmZ3M7IC8vIGNXaWR0aCBhbmQgY0hlaWdodCBhcmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG1pbmltYXAncyBjb250YWluZXJcblxuICAgIHZhciBncmFwaCA9IGNmZ3MuZ3JhcGg7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgdmFyIGNvbnRhaW5lckRPTSA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgIGlmIChpc1N0cmluZyhjb250YWluZXJET00pKSB7XG4gICAgICBjb250YWluZXJET00gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJET00pO1xuICAgIH1cblxuICAgIHZhciB2aWV3cG9ydCA9IGNyZWF0ZURvbShcIjxkaXYgY2xhc3M9XCIgKyBjZmdzLnZpZXdwb3J0Q2xhc3NOYW1lICsgXCJcXG4gICAgICBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7XFxuICAgICAgICBsZWZ0OjA7XFxuICAgICAgICB0b3A6MDtcXG4gICAgICAgIGJveC1zaXppbmc6Ym9yZGVyLWJveDtcXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMxOTgwZmYnPlxcbiAgICAgIDwvZGl2PlwiKTsgLy8g6K6h566X5ouW5ou95rC05bmz5pa55ZCR6Led56a7XG5cbiAgICB2YXIgeCA9IDA7IC8vIOiuoeeul+aLluaLveWeguebtOaWueWQkei3neemu1xuXG4gICAgdmFyIHkgPSAwOyAvLyDmmK/lkKblnKjmi5bmi71taW5pbWFw55qE6KeG5Y+jXG5cbiAgICB2YXIgZHJhZ2dpbmcgPSBmYWxzZTsgLy8g57yT5a2Ydmlld3BvcnTlvZPliY3lr7nkuo7nlLvluIPnmoR4XG5cbiAgICB2YXIgbGVmdCA9IDA7IC8vIOe8k+WtmHZpZXdwb3J05b2T5YmN5a+55LqO55S75biD55qEeVxuXG4gICAgdmFyIHRvcCA9IDA7IC8vIOe8k+WtmHZpZXdwb3J05b2T5YmN5a695bqmXG5cbiAgICB2YXIgd2lkdGggPSAwOyAvLyDnvJPlrZh2aWV3cG9ydOW9k+WJjemrmOW6plxuXG4gICAgdmFyIGhlaWdodCA9IDA7XG4gICAgdmFyIHJhdGlvID0gMDtcbiAgICB2YXIgem9vbSA9IDA7XG4gICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjZmdzLnJlZnJlc2ggPSBmYWxzZTtcblxuICAgICAgaWYgKGUudGFyZ2V0ICE9PSB2aWV3cG9ydCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIOWmguaenOinhuWPo+W3sue7j+acgOWkp+S6hu+8jOS4jemcgOimgeaLluaLvVxuXG5cbiAgICAgIHZhciBzdHlsZSA9IHZpZXdwb3J0LnN0eWxlO1xuICAgICAgd2lkdGggPSBwYXJzZUludChzdHlsZS53aWR0aCwgMTApO1xuICAgICAgaGVpZ2h0ID0gcGFyc2VJbnQoc3R5bGUuaGVpZ2h0LCAxMCk7XG5cbiAgICAgIHZhciBjV2lkdGggPSBfdGhpcy5nZXQoJ3dpZHRoJyk7XG5cbiAgICAgIHZhciBjSGVpZ2h0ID0gX3RoaXMuZ2V0KCdoZWlnaHQnKTtcblxuICAgICAgaWYgKHdpZHRoID4gY1dpZHRoIHx8IGhlaWdodCA+IGNIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB6b29tID0gZ3JhcGguZ2V0Wm9vbSgpO1xuICAgICAgcmF0aW8gPSBfdGhpcy5nZXQoJ3JhdGlvJyk7XG4gICAgICBkcmFnZ2luZyA9IHRydWU7XG4gICAgICB4ID0gZS5jbGllbnRYO1xuICAgICAgeSA9IGUuY2xpZW50WTtcbiAgICB9LCBmYWxzZSk7XG4gICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWRyYWdnaW5nIHx8IGlzTmlsKGUuY2xpZW50WCkgfHwgaXNOaWwoZS5jbGllbnRZKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBjV2lkdGggPSBfdGhpcy5nZXQoJ3dpZHRoJyk7XG5cbiAgICAgIHZhciBjSGVpZ2h0ID0gX3RoaXMuZ2V0KCdoZWlnaHQnKTtcblxuICAgICAgdmFyIHN0eWxlID0gdmlld3BvcnQuc3R5bGU7XG4gICAgICBsZWZ0ID0gcGFyc2VJbnQoc3R5bGUubGVmdCwgMTApO1xuICAgICAgdG9wID0gcGFyc2VJbnQoc3R5bGUudG9wLCAxMCk7XG4gICAgICB3aWR0aCA9IHBhcnNlSW50KHN0eWxlLndpZHRoLCAxMCk7XG4gICAgICBoZWlnaHQgPSBwYXJzZUludChzdHlsZS5oZWlnaHQsIDEwKTtcbiAgICAgIHZhciBkeCA9IHggLSBlLmNsaWVudFg7XG4gICAgICB2YXIgZHkgPSB5IC0gZS5jbGllbnRZOyAvLyDoi6Xop4blj6Pnp7vliqjliLDmnIDlt6bovrnmiJbmnIDlj7PovrnkuoYs5LuF56e75Yqo5Yiw6L6555WMXG5cbiAgICAgIGlmIChsZWZ0IC0gZHggPCAwKSB7XG4gICAgICAgIGR4ID0gbGVmdDtcbiAgICAgIH0gZWxzZSBpZiAobGVmdCAtIGR4ICsgd2lkdGggPj0gY1dpZHRoKSB7XG4gICAgICAgIGR4ID0gMDtcbiAgICAgIH0gLy8g6Iul6KeG5Y+j56e75Yqo5Yiw5pyA5LiK5oiW5pyA5LiL6L655LqG77yM5LuF56e75Yqo5Yiw6L6555WMXG5cblxuICAgICAgaWYgKHRvcCAtIGR5IDwgMCkge1xuICAgICAgICBkeSA9IHRvcDtcbiAgICAgIH0gZWxzZSBpZiAodG9wIC0gZHkgKyBoZWlnaHQgPj0gY0hlaWdodCkge1xuICAgICAgICBkeSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGxlZnQgLT0gZHg7XG4gICAgICB0b3AgLT0gZHk7IC8vIOWFiOenu+WKqOinhuWPo++8jOmBv+WFjeenu+WKqOWIsOi+ueS4iuS7peWQjuWHuueOsOinhuWPo+mXqueDgVxuXG4gICAgICBtb2RpZnlDU1Modmlld3BvcnQsIHtcbiAgICAgICAgbGVmdDogbGVmdCArIFwicHhcIixcbiAgICAgICAgdG9wOiB0b3AgKyBcInB4XCJcbiAgICAgIH0pOyAvLyBncmFwaCDnp7vliqjpnIDopoHlgY/np7vph48gZHgvZHkgKiDnvKnmlL7mr5TkvovmiY3kvJrlvpfliLDmraPnoa7nmoTnp7vliqjot53nprtcblxuICAgICAgZ3JhcGgudHJhbnNsYXRlKGR4ICogem9vbSAvIHJhdGlvLCBkeSAqIHpvb20gLyByYXRpbyk7XG4gICAgICB4ID0gZS5jbGllbnRYO1xuICAgICAgeSA9IGUuY2xpZW50WTtcbiAgICB9LCBmYWxzZSk7XG4gICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgY2Zncy5yZWZyZXNoID0gdHJ1ZTtcbiAgICB9LCBmYWxzZSk7XG4gICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgY2Zncy5yZWZyZXNoID0gdHJ1ZTtcbiAgICB9LCBmYWxzZSk7XG4gICAgdGhpcy5zZXQoJ3ZpZXdwb3J0Jywgdmlld3BvcnQpO1xuICAgIGNvbnRhaW5lckRPTS5hcHBlbmRDaGlsZCh2aWV3cG9ydCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgdmlld3BvcnQg6KeG5Zu+XG4gICAqL1xuXG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVWaWV3cG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIgcmF0aW8gPSB0aGlzLmdldCgncmF0aW8nKTtcbiAgICB2YXIgY1dpZHRoID0gdGhpcy5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGNIZWlnaHQgPSB0aGlzLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyYXBoV2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGdyYXBoSGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICB2YXIgYXNwZWN0UmF0aW8gPSBncmFwaFdpZHRoIC8gZ3JhcGhIZWlnaHQ7XG4gICAgdmFyIGdyYXBoR3JvdXAgPSBncmFwaC5nZXRHcm91cCgpOyAvLyDkuLvlm77nmoQgYmJveO+8iOefqemYteWPmOaNouebuOWFs+eahCBiYm9477yJXG5cbiAgICB2YXIgZ3JhcGhDYW52YXNCQm94ID0gZ3JhcGhHcm91cC5nZXRDYW52YXNCQm94KCk7IC8vIOaJqeWxlSBncmFwaEJCb3gg5Yiw5ZKMIGdyYXBoV2lkdGggLyBncmFwaEhlaWdodCDnrYnmr5RcblxuICAgIHZhciBncmFwaENhbnZhc0JCb3hNZWFuID0gWyhncmFwaENhbnZhc0JCb3gubWluWCArIGdyYXBoQ2FudmFzQkJveC5tYXhYKSAvIDIsIChncmFwaENhbnZhc0JCb3gubWluWSArIGdyYXBoQ2FudmFzQkJveC5tYXhZKSAvIDJdO1xuICAgIHZhciBncmFwaENhbnZhc0JCb3hTaXplID0gW2dyYXBoQ2FudmFzQkJveC5tYXhYIC0gZ3JhcGhDYW52YXNCQm94Lm1pblgsIGdyYXBoQ2FudmFzQkJveC5tYXhZIC0gZ3JhcGhDYW52YXNCQm94Lm1pblldO1xuICAgIHZhciBleHBhbmRlZEdyYXBoQ2FudmFzQkJveCA9IHtcbiAgICAgIGNlbnRlclg6IGdyYXBoQ2FudmFzQkJveE1lYW5bMF0sXG4gICAgICBjZW50ZXJZOiBncmFwaENhbnZhc0JCb3hNZWFuWzFdLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBtaW5YOiAwLFxuICAgICAgbWluWTogMFxuICAgIH07XG5cbiAgICBpZiAoZ3JhcGhDYW52YXNCQm94WzBdIC8gZ3JhcGhDYW52YXNCQm94WzFdID4gYXNwZWN0UmF0aW8pIHtcbiAgICAgIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LndpZHRoID0gZ3JhcGhDYW52YXNCQm94U2l6ZVswXTtcbiAgICAgIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LmhlaWdodCA9IGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LndpZHRoIC8gYXNwZWN0UmF0aW87XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LmhlaWdodCA9IGdyYXBoQ2FudmFzQkJveFNpemVbMV07XG4gICAgICBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC53aWR0aCA9IGV4cGFuZGVkR3JhcGhDYW52YXNCQm94LmhlaWdodCAqIGFzcGVjdFJhdGlvO1xuICAgIH1cblxuICAgIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94Lm1pblggPSBncmFwaENhbnZhc0JCb3hNZWFuWzBdIC0gZXhwYW5kZWRHcmFwaENhbnZhc0JCb3gud2lkdGggLyAyO1xuICAgIGV4cGFuZGVkR3JhcGhDYW52YXNCQm94Lm1pblkgPSBncmFwaENhbnZhc0JCb3hNZWFuWzFdIC0gZXhwYW5kZWRHcmFwaENhbnZhc0JCb3guaGVpZ2h0IC8gMjtcbiAgICB2YXIgZ3JhcGhNYXRyaXggPSBncmFwaEdyb3VwLmdldE1hdHJpeCgpO1xuICAgIGlmICghZ3JhcGhNYXRyaXgpIGdyYXBoTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIHZhciBpbnZlcnRHcmFwaE1hdHJpeCA9IG1hdDMuaW52ZXJ0KFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXSwgZ3JhcGhNYXRyaXgpO1xuICAgIHZhciBtaW5YWSA9IGFwcGx5TWF0cml4KHtcbiAgICAgIHg6IGV4cGFuZGVkR3JhcGhDYW52YXNCQm94Lm1pblgsXG4gICAgICB5OiBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC5taW5ZXG4gICAgfSwgaW52ZXJ0R3JhcGhNYXRyaXgpOyAvLyDmianlsZUgZ3JhcGhCQm94IOWQjueahCBiYm94IOeahOW3puS4iuinkuWvueW6lOeahCBjYW52YXMgY29udGFpbmVyIOWdkOagh1xuXG4gICAgdmFyIHRvcExlZnQgPSBncmFwaC5nZXRDYW52YXNCeVBvaW50KG1pblhZLngsIG1pblhZLnkpO1xuICAgIHZhciB2aWV3cG9ydCA9IHRoaXMuZ2V0KCd2aWV3cG9ydCcpO1xuXG4gICAgaWYgKCF2aWV3cG9ydCkge1xuICAgICAgdGhpcy5pbml0Vmlld3BvcnQoKTtcbiAgICB9IC8vIFZpZXdwb3J0IOS4jiBtaW5pbWFwIGNvbnRhaW5lciDnmoTmr5TkvosgPSAgR3JhcGggY29udGFpbmVyIOS4jiBleHBhbmRlZEdyYXBoQkJveCDmr5TkvotcblxuXG4gICAgdmFyIHZwVG9NYyA9IGdyYXBoV2lkdGggLyBleHBhbmRlZEdyYXBoQ2FudmFzQkJveC53aWR0aDsgLy8gdmlld3BvcnQg5a696auYID0gdnBUb01jICogbWluaW1hcCBjb250YWluZXIg5a696auYXG5cbiAgICB2YXIgd2lkdGggPSB2cFRvTWMgKiBjV2lkdGg7XG4gICAgdmFyIGhlaWdodCA9IHZwVG9NYyAqIGNIZWlnaHQ7IC8vIHZpZXJwb3J0IOW3puS4iuinkuWIsCBtaW5pbWFwIGNvbnRhaW5lciDnmoTot53nprsgLyBtaW5pbWFwIGNvbnRhaW5lciDlrr3pq5hcbiAgICAvLyA9IOS4u+WbviBleHBhbmRlZEJCb3gg5bem5LiK6KeSIGNhbnZhcyBjb250YWluZXIg5Z2Q5qCH6Led56a7IC8gZXhwYW5kZWRCQm94IOWuvemrmFxuXG4gICAgdmFyIGxlZnQgPSBjV2lkdGggKiAtdG9wTGVmdC54IC8gZXhwYW5kZWRHcmFwaENhbnZhc0JCb3gud2lkdGg7XG4gICAgdmFyIHRvcCA9IGNIZWlnaHQgKiAtdG9wTGVmdC55IC8gZXhwYW5kZWRHcmFwaENhbnZhc0JCb3guaGVpZ2h0O1xuICAgIHZhciByaWdodCA9IGxlZnQgKyB3aWR0aDtcbiAgICB2YXIgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xuXG4gICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICB3aWR0aCArPSBsZWZ0O1xuICAgICAgbGVmdCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0ID4gY1dpZHRoKSB7XG4gICAgICB3aWR0aCA9IHdpZHRoIC0gKHJpZ2h0IC0gY1dpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAodG9wIDwgMCkge1xuICAgICAgaGVpZ2h0ICs9IHRvcDtcbiAgICAgIHRvcCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSA+IGNIZWlnaHQpIHtcbiAgICAgIGhlaWdodCA9IGhlaWdodCAtIChib3R0b20gLSBjSGVpZ2h0KTtcbiAgICB9IC8vIOe8k+WtmOebruWJjee8qeaUvuavlO+8jOWcqOenu+WKqCBtaW5pbWFwIOinhueql+aXtuWwseS4jeeUqOWGjeiuoeeul+Wkp+WbvueahOenu+WKqOmHj1xuXG5cbiAgICB0aGlzLnNldCgncmF0aW8nLCByYXRpbyk7XG4gICAgdmFyIGNvcnJlY3RMZWZ0ID0gbGVmdCArIFwicHhcIjtcbiAgICB2YXIgY29ycmVjdFRvcCA9IHRvcCArIFwicHhcIjtcbiAgICBtb2RpZnlDU1Modmlld3BvcnQsIHtcbiAgICAgIGxlZnQ6IGNvcnJlY3RMZWZ0LFxuICAgICAgdG9wOiBjb3JyZWN0VG9wLFxuICAgICAgd2lkdGg6IHdpZHRoICsgXCJweFwiLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQgKyBcInB4XCJcbiAgICB9KTtcbiAgfTtcblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0Q29udGFpbmVyKCk7XG4gIH07XG4gIC8qKlxuICAgKiDliJ3lp4vljJYgTWluaW1hcCDnmoTlrrnlmahcbiAgICovXG5cblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmluaXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBncmFwaFdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBncmFwaEhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGFzcGVjdFJhdGlvID0gZ3JhcGhIZWlnaHQgLyBncmFwaFdpZHRoO1xuICAgIHZhciBjbGFzc05hbWUgPSBzZWxmLmdldCgnY2xhc3NOYW1lJyk7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBzZWxmLmdldCgnY29udGFpbmVyJyk7IC8vIHNpemUgb2YgdGhlIG1pbmltYXAncyBjb250YWluZXJcblxuICAgIHZhciBjV2lkdGggPSBzZWxmLmdldCgnd2lkdGgnKTtcbiAgICB2YXIgY0hlaWdodCA9IHNlbGYuZ2V0KCdoZWlnaHQnKTtcblxuICAgIGlmICghY1dpZHRoICYmICFjSGVpZ2h0KSB7XG4gICAgICBjV2lkdGggPSAyMDA7XG4gICAgfVxuXG4gICAgaWYgKGNXaWR0aCkge1xuICAgICAgY0hlaWdodCA9IGFzcGVjdFJhdGlvICogY1dpZHRoO1xuICAgICAgc2VsZi5zZXQoJ2hlaWdodCcsIGNIZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjV2lkdGggPSAxIC8gYXNwZWN0UmF0aW8gKiBjSGVpZ2h0O1xuICAgICAgc2VsZi5zZXQoJ3dpZHRoJywgY1dpZHRoKTtcbiAgICB9XG5cbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz0nXCIgKyBjbGFzc05hbWUgKyBcIicgc3R5bGU9J3dpZHRoOiBcIiArIGNXaWR0aCArIFwicHg7IGhlaWdodDogXCIgKyBjSGVpZ2h0ICsgXCJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246IHJlbGF0aXZlOyc+PC9kaXY+XCIpO1xuXG4gICAgaWYgKGlzU3RyaW5nKHBhcmVudE5vZGUpKSB7XG4gICAgICBwYXJlbnROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGFyZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JhcGguZ2V0KCdjb250YWluZXInKS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIH1cblxuICAgIHNlbGYuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgIHZhciBjb250YWluZXJET00gPSBjcmVhdGVEb20oXCI8ZGl2IGNsYXNzPVxcXCJnNi1taW5pbWFwLWNvbnRhaW5lclxcXCIgc3R5bGU9XFxcInBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgdGV4dC1hbGlnbjogY2VudGVyOyBkaXNwbGF5OiB0YWJsZTtcXFwiPjwvZGl2PlwiKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyRE9NKTtcbiAgICB2YXIgc3BhbiA9IGNyZWF0ZURvbShcIjxzcGFuIHN0eWxlPVxcXCJkaXNwbGF5OiB0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBcXFwiPjwvc3Bhbj5cIik7XG4gICAgY29udGFpbmVyRE9NLmFwcGVuZENoaWxkKHNwYW4pO1xuICAgIHNlbGYuc2V0KCdjb250YWluZXJET00nLCBjb250YWluZXJET00pO1xuICAgIHNlbGYuc2V0KCdjb250YWluZXJTcGFuJywgc3Bhbik7XG4gICAgdmFyIGltZyA9IGNyZWF0ZURvbShcIjxpbWcgYWx0PVxcXCJcXFwiIHNyYz1cXFwiXCIgKyB0aGlzLmdldCgnZ3JhcGhJbWcnKSArIFwiXFxcIiBzdHlsZT1cXFwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB1c2VyLXNlbGVjdDogbm9uZTtcXFwiIGRyYWdnYWJsZT1cXFwiZmFsc2VcXFwiIC8+XCIpO1xuICAgIHNlbGYuc2V0KCdpbWdET00nLCBpbWcpO1xuICAgIHNlbGYudXBkYXRlSW1nU2l6ZSgpO1xuICAgIHNwYW4uYXBwZW5kQ2hpbGQoaW1nKTtcbiAgICBzZWxmLnVwZGF0ZUNhbnZhcygpO1xuICB9O1xuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUudXBkYXRlSW1nU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGltZ0RPTSA9IHNlbGYuZ2V0KCdpbWdET00nKTtcbiAgICB2YXIgY1dpZHRoID0gc2VsZi5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGNIZWlnaHQgPSBzZWxmLmdldCgnaGVpZ2h0Jyk7XG5cbiAgICBpbWdET00ub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG5hdHVyYWxTaXplID0gZ2V0SW1nTmF0dXJhbERpbWVuc2lvbihpbWdET00pO1xuXG4gICAgICBpZiAobmF0dXJhbFNpemVbMF0gPiBuYXR1cmFsU2l6ZVsxXSkge1xuICAgICAgICBpbWdET00ud2lkdGggPSBjV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWdET00uaGVpZ2h0ID0gY0hlaWdodDtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUudXBkYXRlQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIOWmguaenOaYr+WcqOWKqOeUu++8jOWImeS4jeWIt+aWsOinhuWbvlxuICAgIHZhciBpc1JlZnJlc2ggPSB0aGlzLmdldCgncmVmcmVzaCcpO1xuXG4gICAgaWYgKCFpc1JlZnJlc2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcblxuICAgIGlmIChncmFwaC5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDlpoLmnpzmmK/op4blj6Plj5jmjaLvvIzkuZ/kuI3liLfmlrDop4blm77vvIzkvYbmmK/pnIDopoHph43nva7op4blj6PlpKflsI/lkozkvY3nva5cblxuXG4gICAgaWYgKHRoaXMuZ2V0KCd2aWV3cG9ydENoYW5nZScpKSB7XG4gICAgICB0aGlzLnNldCgndmlld3BvcnRDaGFuZ2UnLCBmYWxzZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KCk7XG4gICAgfVxuXG4gICAgdmFyIGNXaWR0aCA9IHRoaXMuZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBncmFwaEJCb3ggPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaEJCb3gud2lkdGg7XG4gICAgdmFyIHJhdGlvID0gY1dpZHRoIC8gd2lkdGg7IC8vIC8vIOabtOaWsG1pbmltYXDop4blj6NcblxuICAgIHRoaXMuc2V0KCdyYXRpbycsIHJhdGlvKTtcbiAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5ZtaW5pbWFw55qE56qX5Y+jXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSDnqpflj6PnmoRkb23lrp7kvotcbiAgICovXG5cblxuICBJbWFnZU1pbmlNYXAucHJvdG90eXBlLmdldFZpZXdwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgndmlld3BvcnQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlm1pbmltYXDnmoTlrrnlmahkb21cbiAgICogQHJldHVybiB7SFRNTEVsZW1lbnR9IGRvbVxuICAgKi9cblxuXG4gIEltYWdlTWluaU1hcC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVHcmFwaEltZyA9IGZ1bmN0aW9uIChpbWcpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIG9yaUltZ0RPTSA9IHNlbGYuZ2V0KCdpbWdET00nKTtcbiAgICBvcmlJbWdET00ucmVtb3ZlKCk7XG4gICAgc2VsZi5zZXQoJ2dyYXBoSW1nJywgaW1nKTtcbiAgICB2YXIgaW1nRE9NID0gY3JlYXRlRG9tKFwiPGltZyBhbHQ9XFxcIlxcXCIgc3JjPVxcXCJcIiArIGltZyArIFwiXFxcIiBzdHlsZT1cXFwiZGlzcGxheTogaW5saW5lLWJsb2NrO1xcXCIgb25kcmFnc3RhcnQ9XFxcInJldHVybiBmYWxzZTtcXFwiIG9uc2VsZWN0c3RhcnQ9XFxcInJldHVybiBmYWxzZTtcXFwiLz5cIik7XG4gICAgc2VsZi5zZXQoJ2ltZ0RPTScsIGltZ0RPTSk7XG4gICAgaW1nRE9NLnNyYyA9IGltZztcbiAgICBzZWxmLnVwZGF0ZUltZ1NpemUoKTtcbiAgICB2YXIgc3BhbiA9IHNlbGYuZ2V0KCdjb250YWluZXJTcGFuJyk7XG4gICAgc3Bhbi5hcHBlbmRDaGlsZChpbWdET00pO1xuICAgIHNlbGYudXBkYXRlQ2FudmFzKCk7XG4gIH07XG5cbiAgSW1hZ2VNaW5pTWFwLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKTtcbiAgfTtcblxuICByZXR1cm4gSW1hZ2VNaW5pTWFwO1xufShCYXNlKTtcblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2VNaW5pTWFwOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/imageMinimap/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/index.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/index.js ***! \*************************************************************************/ /*! exports provided: PluginBase, Menu, Grid, Minimap, Bundling, ToolBar, Tooltip, Fisheye, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./grid */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/grid/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return _grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./menu */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/menu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Menu\", function() { return _menu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _minimap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minimap */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/minimap/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Minimap\", function() { return _minimap__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _bundling__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bundling */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/bundling/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Bundling\", function() { return _bundling__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _fisheye__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fisheye */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/fisheye/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fisheye\", function() { return _fisheye__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _toolBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./toolBar */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/toolBar/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ToolBar\", function() { return _toolBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/tooltip/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return _tooltip__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _timeBar__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./timeBar */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeBar\", function() { return _timeBar__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _imageMinimap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./imageMinimap */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/imageMinimap/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ImageMinimap\", function() { return _imageMinimap__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _edgeFilterLens__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edgeFilterLens */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/edgeFilterLens/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EdgeFilterLens\", function() { return _edgeFilterLens__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _snapline__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./snapline */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/snapline/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnapLine\", function() { return _snapline__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PluginBase\", function() { return _base__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _legend__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./legend */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/legend/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Legend\", function() { return _legend__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Plugin = {\n PluginBase: _base__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n Menu: _menu__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Grid: _grid__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n Minimap: _minimap__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Bundling: _bundling__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n ToolBar: _toolBar__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n Tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n Fisheye: _fisheye__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n TimeBar: _timeBar__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ImageMinimap: _imageMinimap__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n EdgeFilterLens: _edgeFilterLens__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n SnapLine: _snapline__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Legend: _legend__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Plugin);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvaW5kZXguanM/ODdjMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUNBO0FBQ007QUFDRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ1U7QUFDSTtBQUNaO0FBQ0Y7QUFDRjtBQUMyRztBQUN6STtBQUNBLGNBQWMsOENBQVU7QUFDeEIsUUFBUSw2Q0FBSTtBQUNaLFFBQVEsNkNBQUk7QUFDWixXQUFXLGdEQUFPO0FBQ2xCLFlBQVksaURBQVE7QUFDcEIsV0FBVyxnREFBTztBQUNsQixXQUFXLGdEQUFPO0FBQ2xCLFdBQVcsZ0RBQU87QUFDbEIsV0FBVyxnREFBTztBQUNsQixnQkFBZ0IscURBQVk7QUFDNUIsa0JBQWtCLHVEQUFjO0FBQ2hDLFlBQVksa0RBQVE7QUFDcEIsVUFBVSxnREFBTTtBQUNoQjtBQUNlLHFFQUFNIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdyaWQgZnJvbSAnLi9ncmlkJztcbmltcG9ydCBNZW51IGZyb20gJy4vbWVudSc7XG5pbXBvcnQgTWluaW1hcCBmcm9tICcuL21pbmltYXAnO1xuaW1wb3J0IEJ1bmRsaW5nIGZyb20gJy4vYnVuZGxpbmcnO1xuaW1wb3J0IEZpc2hleWUgZnJvbSAnLi9maXNoZXllJztcbmltcG9ydCBUb29sQmFyIGZyb20gJy4vdG9vbEJhcic7XG5pbXBvcnQgVG9vbHRpcCBmcm9tICcuL3Rvb2x0aXAnO1xuaW1wb3J0IFRpbWVCYXIgZnJvbSAnLi90aW1lQmFyJztcbmltcG9ydCBJbWFnZU1pbmltYXAgZnJvbSAnLi9pbWFnZU1pbmltYXAnO1xuaW1wb3J0IEVkZ2VGaWx0ZXJMZW5zIGZyb20gJy4vZWRnZUZpbHRlckxlbnMnO1xuaW1wb3J0IFNuYXBMaW5lIGZyb20gJy4vc25hcGxpbmUnO1xuaW1wb3J0IFBsdWdpbkJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCBMZWdlbmQgZnJvbSAnLi9sZWdlbmQnO1xuZXhwb3J0IHsgUGx1Z2luQmFzZSwgTWVudSwgR3JpZCwgTWluaW1hcCwgQnVuZGxpbmcsIFRvb2xCYXIsIFRvb2x0aXAsIEZpc2hleWUsIFRpbWVCYXIsIEltYWdlTWluaW1hcCwgRWRnZUZpbHRlckxlbnMsIFNuYXBMaW5lLCBMZWdlbmQgfTtcbnZhciBQbHVnaW4gPSB7XG4gIFBsdWdpbkJhc2U6IFBsdWdpbkJhc2UsXG4gIE1lbnU6IE1lbnUsXG4gIEdyaWQ6IEdyaWQsXG4gIE1pbmltYXA6IE1pbmltYXAsXG4gIEJ1bmRsaW5nOiBCdW5kbGluZyxcbiAgVG9vbEJhcjogVG9vbEJhcixcbiAgVG9vbHRpcDogVG9vbHRpcCxcbiAgRmlzaGV5ZTogRmlzaGV5ZSxcbiAgVGltZUJhcjogVGltZUJhcixcbiAgSW1hZ2VNaW5pbWFwOiBJbWFnZU1pbmltYXAsXG4gIEVkZ2VGaWx0ZXJMZW5zOiBFZGdlRmlsdGVyTGVucyxcbiAgU25hcExpbmU6IFNuYXBMaW5lLFxuICBMZWdlbmQ6IExlZ2VuZFxufTtcbmV4cG9ydCBkZWZhdWx0IFBsdWdpbjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/legend/index.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/legend/index.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\nvar ALLOW_EVENTS = ['click', 'mouseenter'];\n\nvar Legend =\n/** @class */\nfunction (_super) {\n __extends(Legend, _super);\n\n function Legend(config) {\n return _super.call(this, config) || this;\n }\n\n Legend.prototype.getDefaultCfgs = function () {\n return {\n data: {},\n position: 'top',\n padding: 8,\n margin: 8,\n offsetX: 0,\n offsetY: 0,\n layout: 'horizontal',\n flipPage: false,\n containerStyle: {},\n align: undefined,\n horiSep: 8,\n vertiSep: 8,\n filter: {\n enable: false,\n trigger: 'click'\n }\n };\n };\n\n Legend.prototype.init = function () {\n this.formatArray('padding');\n this.formatArray('margin');\n var filter = this.get('filter') || {};\n var multiple = filter.multiple;\n if (multiple && filter.trigger === 'mouseenter') this.set('multiple', false);\n var align = this.get('align');\n\n if (!align) {\n var positions = this.get('position').split('-');\n if (positions.includes('left')) align = 'left';\n if (positions.includes('right')) align = 'right';else align = 'center';\n this.set('align', align);\n }\n\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n graphContainer.appendChild(container);\n this.set('container', container);\n var size = this.render();\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, this.getContainerPos(size));\n this.bindEvents();\n };\n\n Legend.prototype.getContainerPos = function (size) {\n if (size === void 0) {\n size = [0, 0];\n }\n\n var self = this;\n var graph = self.get('graph');\n var offsetX = this.get('offsetX');\n var offsetY = this.get('offsetY');\n var margin = this.get('margin');\n var positions = this.get('position').split('-');\n var posIdxMap = {\n 'top': 0,\n 'right': 1,\n 'bottom': 2,\n 'left': 3\n };\n var x = 0,\n y = 0;\n var containerCSS = {\n left: (graph.getWidth() - size[0]) / 2 + x,\n top: (graph.getHeight() - size[1]) / 2 + y\n };\n positions.forEach(function (pos) {\n var marginValue = margin[posIdxMap[pos]];\n var key = pos;\n\n switch (pos) {\n case 'top':\n marginValue += y;\n break;\n\n case 'left':\n marginValue += x;\n break;\n\n case 'bottom':\n marginValue = graph.getHeight() - size[1] - marginValue + y;\n key = 'top';\n break;\n\n default:\n marginValue = graph.getWidth() - size[0] - marginValue + x;\n key = 'left';\n break;\n }\n\n containerCSS[key] = marginValue;\n });\n containerCSS.top += offsetY + graph.getContainer().offsetTop;\n containerCSS.left += offsetX + graph.getContainer().offsetLeft;\n Object.keys(containerCSS).forEach(function (key) {\n containerCSS[key] = containerCSS[key] + \"px\";\n });\n return containerCSS;\n }; // class-methods-use-this\n\n\n Legend.prototype.bindEvents = function () {\n var self = this;\n var filter = self.get('filter');\n if (!filter || !filter.enable) return;\n var trigger = filter.trigger || 'click';\n\n if (!ALLOW_EVENTS.includes(trigger)) {\n console.warn('Trigger for legend filterling must be \\'click\\' or \\'mouseenter\\', \\'click\\' will take effect by default.');\n trigger = 'click';\n }\n\n var lc = self.get('legendCanvas');\n\n if (trigger === 'mouseenter') {\n lc.on('node-container:mouseenter', function (e) {\n return self.filterData(e);\n });\n lc.on('node-container:mouseleave', function (e) {\n self.clearFilter();\n self.clearActiveLegend();\n });\n } else {\n lc.on('node-container:click', function (e) {\n return self.filterData(e);\n });\n lc.on('click', function (e) {\n if (e.target && e.target.isCanvas && e.target.isCanvas()) {\n self.clearFilter();\n self.clearActiveLegend();\n }\n });\n }\n };\n /**\n * 更新 legend 数据,开放给用户控制\n * @param param\n */\n\n\n Legend.prototype.changeData = function (data) {\n this.set('data', data);\n var size = this.render();\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.get('container'), this.getContainerPos(size));\n };\n\n Legend.prototype.activateLegend = function (shape) {\n var filter = this.get('filter');\n var multiple = filter === null || filter === void 0 ? void 0 : filter.multiple;\n if (!multiple) this.clearActiveLegend();\n var shapeGroup = shape.get('parent'); // 若被高亮元素已经处于 active 状态,则取消它的 active 状态\n // 并根据目前是否有其他 active 状态的元素决定是否要设置为 inactive 状态\n\n if (shapeGroup.get('active')) {\n shapeGroup.set('active', false);\n if (this.findLegendItemsByState('active').length) shapeGroup.set('inactive', true);\n } else {\n shapeGroup.set('inactive', false);\n shapeGroup.set('active', true);\n } // 当目前有元素为 active 状态时,将非 active 的元素设置为 inactive\n\n\n if (this.findLegendItemsByState('active').length) {\n this.findLegendItemsByState('active', 'all', false).forEach(function (subGroup) {\n subGroup.set('inactive', true);\n });\n } else {\n this.clearActiveLegend();\n } // 设置样式\n\n\n var stateStyles = (filter === null || filter === void 0 ? void 0 : filter.lengedStateStyles) || {};\n var legendInactive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.inactive) || {\n opacity: 0.5,\n 'text-shape': {\n opacity: 0.5\n }\n };\n var legendTextInactive = legendInactive['text-shape'] || {};\n this.findLegendItemsByState('inactive').forEach(function (subGroup) {\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n\n keyShape.attr(__assign(__assign({}, keyShape.get('oriAttrs')), legendInactive));\n text.attr(__assign(__assign({}, text.get('oriAttrs')), legendTextInactive));\n });\n var legendActive = (stateStyles === null || stateStyles === void 0 ? void 0 : stateStyles.active) || {\n stroke: '#000',\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 'bold'\n }\n };\n var legendTextActive = legendActive['text-shape'] || {};\n this.findLegendItemsByState('active').forEach(function (subGroup) {\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n\n keyShape.attr(__assign(__assign({}, keyShape.get('oriAttrs')), legendActive));\n text.attr(__assign(__assign({}, text.get('oriAttrs')), legendTextActive));\n });\n };\n\n Legend.prototype.findLegendItemsByState = function (stateName, type, value) {\n if (type === void 0) {\n type = 'all';\n }\n\n if (value === void 0) {\n value = true;\n }\n\n var group = this.get('legendCanvas').find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n if (type === 'node') return nodeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n });\n if (type === 'edge') return edgeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n });\n return nodeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n }).concat(edgeGroup.get('children').filter(function (g) {\n return !!g.get(stateName) === value;\n }));\n };\n\n Legend.prototype.clearActiveLegend = function () {\n var lg = this.get('legendCanvas');\n var group = lg.find(function (e) {\n return e.get('name') === 'root';\n });\n var groups = [group.find(function (e) {\n return e.get('name') === 'node-group';\n }), group.find(function (e) {\n return e.get('name') === 'edge-group';\n })];\n groups.forEach(function (itemGroup) {\n itemGroup.get('children').forEach(function (subGroup) {\n subGroup.set('active', false);\n subGroup.set('inactive', false);\n\n var _a = subGroup.get('children'),\n keyShape = _a[0],\n text = _a[1];\n\n keyShape.attr(keyShape.get('oriAttrs'));\n text.attr(text.get('oriAttrs'));\n });\n });\n };\n /**\n * 高亮和置灰图例,并过滤主图元素\n * @param param\n */\n\n\n Legend.prototype.filterData = function (e) {\n var filter = this.get('filter');\n var filterFunctions = filter === null || filter === void 0 ? void 0 : filter.filterFunctions;\n if (!filter || !filterFunctions) return;\n var lc = this.get('legendCanvas');\n var graph = this.get('graph');\n var activeState = filter.graphActiveState || 'active';\n var inactiveState = filter.graphInactiveState || 'inactive';\n var multiple = filter.multiple;\n this.clearFilter();\n if (!multiple) this.clearActiveLegend(); // 设置 legend 的高亮状态\n\n this.activateLegend(e.target);\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var activeNodeLegend = nodeGroup.get('children').filter(function (e) {\n return e.get('active');\n });\n var activeEdgeLegend = edgeGroup.get('children').filter(function (e) {\n return e.get('active');\n });\n var activeCount = 0;\n var typeFuncs = ['getNodes', 'getEdges'];\n typeFuncs.forEach(function (typeFunc) {\n graph[typeFunc]().forEach(function (graphItem) {\n var active = false;\n var activeLegend = typeFunc === 'getNodes' ? activeNodeLegend : activeEdgeLegend;\n activeLegend.forEach(function (itemGroup) {\n var func = filterFunctions[itemGroup.get('id')];\n active = active || func(graphItem.getModel());\n });\n\n if (active) {\n graph.setItemState(graphItem, inactiveState, false);\n graph.setItemState(graphItem, activeState, true);\n activeCount++;\n } else {\n graph.setItemState(graphItem, activeState, false);\n graph.setItemState(graphItem, inactiveState, true);\n }\n });\n });\n if (!activeCount) typeFuncs.forEach(function (typeFunc) {\n graph[typeFunc]().forEach(function (graphItem) {\n graph.clearItemStates(graphItem, [inactiveState]);\n });\n });\n };\n /**\n * 清除主图相关状态\n * @param param\n */\n\n\n Legend.prototype.clearFilter = function () {\n // 清除 legend 的高亮状态\n var graph = this.get('graph');\n var filter = this.get('filter');\n if (!filter) return;\n var activeState = filter.graphActiveState || 'active';\n var inactiveState = filter.graphInactiveState || 'inactive';\n graph.getNodes().forEach(function (node) {\n graph.clearItemStates(node, [activeState, inactiveState]);\n });\n graph.getEdges().forEach(function (edge) {\n graph.clearItemStates(edge, [activeState, inactiveState]);\n });\n };\n /**\n * 渲染 legend 图\n * @param param\n */\n\n\n Legend.prototype.render = function () {\n var _this = this;\n\n this.processData();\n var lc = this.get('legendCanvas');\n\n if (!lc) {\n lc = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_4__[\"Canvas\"]({\n container: this.get('container'),\n width: 200,\n height: 200\n });\n var rootGroup = lc.addGroup({\n name: 'root'\n });\n rootGroup.addGroup({\n name: 'node-group'\n });\n rootGroup.addGroup({\n name: 'edge-group'\n }); // nodeStateStyles: {\n // legendActive,\n // legendInactive\n // }\n\n this.set('legendCanvas', lc);\n }\n\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var itemsData = this.get('itemsData');\n var itemTypes = ['nodes', 'edges'];\n var itemGroup = [nodeGroup, edgeGroup];\n itemTypes.forEach(function (itemType, i) {\n itemsData[itemType].forEach(function (data) {\n var _a;\n\n var subGroup = itemGroup[i].addGroup({\n id: data.id,\n name: 'node-container'\n });\n var attrs;\n var shapeType = data.type;\n\n var _b = _this.getShapeSize(data),\n width = _b.width,\n height = _b.height,\n r = _b.r;\n\n var style = _this.getStyle(itemType.substr(0, 4), data);\n\n switch (data.type) {\n case 'circle':\n attrs = {\n r: r,\n x: 0,\n y: 0\n };\n break;\n\n case 'rect':\n attrs = {\n width: width,\n height: height,\n x: -width / 2,\n y: -height / 2\n };\n break;\n\n case 'ellipse':\n attrs = {\n r1: width,\n r2: height,\n x: 0,\n y: 0\n };\n break;\n\n case 'line':\n attrs = {\n x1: -width / 2,\n y1: 0,\n x2: width / 2,\n y2: 0\n };\n shapeType = 'line';\n break;\n\n case 'quadratic':\n attrs = {\n path: [['M', -width / 2, 0], ['Q', 0, width / 2, width / 2, 0]]\n };\n shapeType = 'path';\n break;\n\n case 'cubic':\n attrs = {\n path: [['M', -width / 2, 0], ['C', -width / 6, width / 2, width / 6, -width / 2, width / 2, 0]]\n };\n shapeType = 'path';\n break;\n\n default:\n attrs = {\n r: r,\n x: 0,\n y: 0\n };\n break;\n }\n\n var keyShape = subGroup.addShape(shapeType, {\n attrs: __assign(__assign({}, attrs), style),\n name: data.type + \"-node-keyShape\",\n oriAttrs: __assign({\n opacity: 1\n }, style)\n });\n\n if (data.label) {\n var keyShapeBBox = keyShape.getBBox();\n var labelStyle = ((_a = data.labelCfg) === null || _a === void 0 ? void 0 : _a.style) || {};\n\n var attrs_1 = __assign({\n textAlign: 'begin',\n fontSize: 12,\n textBaseline: 'middle',\n fill: '#000',\n opacity: 1,\n fontWeight: 'normal'\n }, labelStyle);\n\n subGroup.addShape('text', {\n attrs: __assign({\n x: keyShapeBBox.maxX + 4,\n y: 0,\n text: data.label\n }, attrs_1),\n className: 'legend-label',\n name: data.type + \"-node-text\",\n oriAttrs: attrs_1\n });\n }\n });\n });\n var padding = this.get('padding');\n var titleShape;\n var titleGroup = group.find(function (e) {\n return e.get('name') === 'title-container';\n });\n var titleGroupBBox = {\n height: 0,\n maxY: 0,\n width: 0\n };\n\n if (this.get('title')) {\n if (!titleGroup) {\n titleGroup = group.addGroup({\n name: 'title-container'\n });\n }\n\n var defaultTitleStyle = {\n fontSize: 20,\n fontFamily: 'Arial',\n fontWeight: 300,\n textBaseline: 'top',\n textAlign: 'center',\n fill: \"#000\",\n x: 0,\n y: padding[0]\n };\n var titleConfig = this.get('titleConfig') || {};\n var style = Object.assign(defaultTitleStyle, titleConfig.style || {});\n titleShape = titleGroup.addShape('text', {\n attrs: __assign({\n text: this.get('title')\n }, style)\n });\n titleGroupBBox = titleGroup.getCanvasBBox();\n titleGroup.setMatrix([1, 0, 0, 0, 1, 0, titleConfig.offsetX, titleConfig.offsetY, 1]);\n }\n\n this.layoutItems();\n var lcBBox = group.getCanvasBBox();\n var nodeGroupBBox = nodeGroup.getCanvasBBox(); // 若有图形超过边界的情况,平移回来\n\n var nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding[3] : padding[3];\n var nodeGroupBeginY = titleGroupBBox.maxY < nodeGroupBBox.minY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding[0] : titleGroupBBox.maxY + padding[0];\n var nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n nodeGroup.setMatrix(nodeGroupMatrix);\n lcBBox = group.getCanvasBBox();\n var size = [lcBBox.minX + lcBBox.width + padding[1], lcBBox.minY + lcBBox.height + padding[2]]; // 根据 size 和 titleConfig 调整 title 位置,再调整 nodeGroup 位置\n\n if (titleShape) {\n var titleConfig = __assign({\n position: 'center',\n offsetX: 0,\n offsetY: 0\n }, this.get('titleConfig'));\n\n titleGroupBBox = titleGroup.getCanvasBBox();\n var titleGroupMatrix = titleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (titleConfig.position === 'center') {\n titleGroupMatrix[6] = size[0] / 2 + titleConfig.offsetX;\n } else if (titleConfig.position === 'right') {\n titleGroupMatrix[6] = size[0] - padding[3] + titleConfig.offsetX;\n titleShape.attr({\n textAlign: 'right'\n });\n } else {\n titleGroupMatrix[6] = padding[3] + titleConfig.offsetX;\n titleShape.attr({\n textAlign: 'left'\n });\n }\n\n titleGroup.setMatrix(titleGroupMatrix);\n titleGroupBBox = titleGroup.getCanvasBBox(); // 若有图形超过边界的情况,平移回来\n\n nodeGroupBeginX = nodeGroupBBox.minX < 0 ? Math.abs(nodeGroupBBox.minX) + padding[3] : padding[3];\n nodeGroupBeginY = nodeGroupBBox.minY < titleGroupBBox.maxY ? Math.abs(titleGroupBBox.maxY - nodeGroupBBox.minY) + padding[0] : titleGroupBBox.maxY + padding[0];\n nodeGroupMatrix = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n nodeGroup.setMatrix(nodeGroupMatrix);\n var edgeGroupMatrix_1 = [1, 0, 0, 0, 1, 0, nodeGroupBeginX, nodeGroupBeginY, 1];\n if (this.get('layout') === 'vertical') edgeGroupMatrix_1[6] += nodeGroupBBox.maxX + this.get('horiSep');else edgeGroupMatrix_1[7] += nodeGroupBBox.maxY + this.get('vertiSep');\n edgeGroup.setMatrix(edgeGroupMatrix_1);\n } else {\n // 没有 title,也需要平移 edgeGroup\n nodeGroupBBox = nodeGroup.getCanvasBBox();\n var edgeGroupMatrix_2 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (this.get('layout') === 'vertical') edgeGroupMatrix_2[6] += nodeGroupMatrix[6] + nodeGroupBBox.maxX + this.get('horiSep');else edgeGroupMatrix_2[7] += nodeGroupMatrix[7] + nodeGroupBBox.maxY + this.get('vertiSep');\n edgeGroup.setMatrix(edgeGroupMatrix_2);\n }\n\n lcBBox = group.getCanvasBBox();\n nodeGroupBBox = nodeGroup.getCanvasBBox();\n nodeGroupMatrix = nodeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var edgeGroupMatrix = edgeGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var edgeGroupBBox = edgeGroup.getCanvasBBox();\n size = [Math.max(nodeGroupBBox.width + nodeGroupMatrix[6], edgeGroupBBox.width + edgeGroupMatrix[6]) + padding[1], Math.max(nodeGroupBBox.height + nodeGroupMatrix[7], edgeGroupBBox.height + edgeGroupMatrix[7]) + padding[2]];\n lc.changeSize(size[0], size[1]); // 更新容器背景样式\n\n var containerStyle = this.get('containerStyle');\n var viewportMatrix = group.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var beginPos = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].invertMatrix({\n x: 0,\n y: 0\n }, viewportMatrix);\n var backRect = group.addShape('rect', {\n attrs: __assign({\n x: beginPos.x + (containerStyle.lineWidth || 1),\n y: beginPos.y + (containerStyle.lineWidth || 1),\n width: size[0] - 2 * (containerStyle.lineWidth || 1),\n height: size[1] - 2 * (containerStyle.lineWidth || 1),\n fill: \"#f00\",\n stroke: '#000',\n lineWidth: 1,\n opacity: 0.5\n }, containerStyle),\n name: 'legend-back-rect',\n capture: false\n });\n backRect.toBack();\n return size;\n };\n\n Legend.prototype.layoutItems = function () {\n var lc = this.get('legendCanvas');\n var horiSep = this.get('horiSep');\n var vertiSep = this.get('vertiSep');\n var layout = this.get('layout');\n var align = this.get('align');\n var begin = [0, 0];\n var group = lc.find(function (e) {\n return e.get('name') === 'root';\n });\n var nodeGroup = group.find(function (e) {\n return e.get('name') === 'node-group';\n });\n var edgeGroup = group.find(function (e) {\n return e.get('name') === 'edge-group';\n });\n var nodeLegendSize = {\n min: 0,\n max: -Infinity\n };\n var rowMaxY = -Infinity;\n nodeGroup.get('children').forEach(function (cNodeGroup, i) {\n if (i === 0) nodeLegendSize.min = begin[0];\n var keyShape = cNodeGroup.get('children')[0];\n var bbox = cNodeGroup.getCanvasBBox();\n\n var _a = keyShape.getBBox(),\n keyShapeWidth = _a.width,\n keyShapeHeight = _a.height;\n\n var curHeight = 0,\n x = 0,\n y = 0;\n\n if (layout === 'vertical') {\n x = begin[1];\n y = begin[0] + keyShapeWidth / 2;\n begin[0] = y + bbox.height + vertiSep;\n curHeight = bbox.maxX + x + keyShapeWidth / 2;\n } else {\n x = begin[0] + keyShapeWidth / 2;\n y = begin[1];\n begin[0] = x + bbox.width + horiSep;\n curHeight = bbox.maxY + y + keyShapeHeight / 2;\n }\n\n if (begin[0] > nodeLegendSize.max) nodeLegendSize.max = begin[0];\n if (curHeight > rowMaxY) rowMaxY = curHeight;\n cNodeGroup.setMatrix([1, 0, 0, 0, 1, 0, x, y, 1]);\n });\n var nw = nodeLegendSize.max - nodeLegendSize.min;\n var edgeLegendSize = {\n min: 0,\n max: -Infinity\n };\n var nodeGroupBBox = nodeGroup.getCanvasBBox();\n begin[0] = 0;\n begin[1] = layout === 'vertical' ? nodeGroupBBox.maxX + horiSep : nodeGroupBBox.maxY + vertiSep;\n edgeGroup.get('children').forEach(function (subGroup, i) {\n if (i === 0) edgeLegendSize.min = begin[0];\n var keyShape = subGroup.get('children')[0];\n var bbox = subGroup.getCanvasBBox();\n\n var _a = keyShape.getBBox(),\n keyShapeWidth = _a.width,\n keyShapeHeight = _a.height;\n\n var x = 0,\n y = 0;\n\n if (layout === 'vertical') {\n x = begin[1];\n y = begin[0];\n begin[0] = y + bbox.height + vertiSep;\n subGroup.setMatrix([1, 0, 0, 0, 1, 0, 0, y + keyShapeHeight / 2, 1]);\n } else {\n x = begin[0];\n y = begin[1];\n begin[0] = x + bbox.width + horiSep;\n subGroup.setMatrix([1, 0, 0, 0, 1, 0, x + keyShapeWidth / 2, 0, 1]);\n }\n\n if (begin[0] > edgeLegendSize.max) edgeLegendSize.max = begin[0];\n });\n var ew = edgeLegendSize.max - edgeLegendSize.min;\n\n if (align && align !== '' && align !== 'left') {\n var widthDiff = nw - ew;\n var movement_1 = align === 'center' ? Math.abs(widthDiff) / 2 : Math.abs(widthDiff);\n var shouldAdjustGroup = widthDiff < 0 ? nodeGroup : edgeGroup;\n shouldAdjustGroup.get('children').forEach(function (subGroup) {\n var matrix = subGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (layout === 'vertical') matrix[7] += movement_1;else matrix[6] += movement_1;\n subGroup.setMatrix(matrix);\n });\n }\n };\n\n Legend.prototype.processData = function () {\n var data = this.get('data');\n var itemsData = {\n nodes: [],\n edges: []\n };\n\n if (data.nodes) {\n data.nodes.sort(function (a, b) {\n return a.order - b.order;\n });\n data.nodes.forEach(function (node) {\n var _a, _b, _c, _d, _e;\n\n var size = node.size || [((_a = node.style) === null || _a === void 0 ? void 0 : _a.width) || ((_b = node.style) === null || _b === void 0 ? void 0 : _b.r) || 8, ((_c = node.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = node.style) === null || _d === void 0 ? void 0 : _d.r) || 8];\n var labelStyle = ((_e = node.labelCfg) === null || _e === void 0 ? void 0 : _e.style) || {};\n itemsData.nodes.push({\n id: node.id || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"uniqueId\"])(),\n type: node.type || 'circle',\n style: __assign({}, node.style),\n order: node.order,\n label: node.label,\n itemType: 'node',\n size: size,\n labelCfg: {\n position: 'right',\n style: __assign({\n fontFamily: \"Arial\"\n }, labelStyle)\n }\n });\n });\n }\n\n if (data.edges) {\n data.edges.sort(function (a, b) {\n return a.order - b.order;\n });\n data.edges.forEach(function (edge) {\n var _a, _b;\n\n var type = edge.type || 'line';\n if (edge.type === 'cubic-horizontal') type = 'cubic';\n var labelStyle = ((_a = edge.labelCfg) === null || _a === void 0 ? void 0 : _a.style) || {};\n var size = edge.size || [((_b = edge.style) === null || _b === void 0 ? void 0 : _b.width) || 8, 1];\n itemsData.edges.push({\n id: edge.id || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"uniqueId\"])(),\n type: type,\n size: size,\n style: __assign({\n lineWidth: Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(size) ? size[1] : 1\n }, edge.style),\n order: edge.order,\n label: edge.label,\n itemType: 'edge',\n labelCfg: {\n position: 'right',\n style: __assign({\n fontFamily: \"Arial\"\n }, labelStyle)\n }\n });\n });\n }\n\n this.set('itemsData', itemsData);\n };\n\n Legend.prototype.getContainer = function () {\n return this.get('container');\n };\n\n Legend.prototype.formatArray = function (key) {\n var value = this.get(key);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(value)) this.set(key, [value, value, value, value]);else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value)) {\n switch (value.length) {\n case 0:\n this.set(key, [0, 0, 0, 0]);\n break;\n\n case 1:\n this.set(key, [value[0], value[0], value[0], value[0]]);\n break;\n\n case 2:\n this.set(key, [value[0], value[1], value[0], value[1]]);\n break;\n\n case 3:\n this.set(key, [value[0], value[1], value[2], value[1]]);\n break;\n\n default:\n break;\n }\n }\n return this.get(key);\n };\n\n Legend.prototype.getShapeSize = function (data) {\n var width, height, r;\n\n if (data.size) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(data.size)) {\n width = data.size[0];\n height = data.size[1] || data.size[0];\n r = data.size[0] / 2;\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(data.size)) {\n width = data.size;\n height = data.size;\n r = data.size / 2;\n }\n }\n\n if (data.style) {\n if (data.style.width) width = data.style.width;\n if (data.style.height) height = data.style.height;\n if (data.style.r) r = data.style.r;\n }\n\n if (!r) r = 5;\n if (!width) width = r;\n if (!height) height = r;\n return {\n width: width,\n height: height,\n r: r\n };\n };\n\n Legend.prototype.getStyle = function (type, data) {\n var defaultStyle = type === 'node' ? {\n fill: '#ccc',\n lineWidth: 0\n } : {\n stroke: '#000',\n lineWidth: 1\n };\n return __assign(__assign({}, defaultStyle), data.style || {});\n };\n\n Legend.prototype.destroy = function () {\n var graph = this.get('graph');\n var graphContainer = graph.get('container');\n var container = this.get('container');\n graphContainer.removeChild(container);\n };\n\n return Legend;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Legend);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvbGVnZW5kL2luZGV4LmpzPzU1MmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRXNEO0FBQzNCO0FBQzhCO0FBQ3BCO0FBQ0c7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQVMsOERBQThEO0FBQzNGO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3Q0FBd0M7QUFDeEMsb0NBQW9DO0FBQ3BDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDO0FBQ3hDLG9DQUFvQztBQUNwQyxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLHFEQUFNO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU8sRUFBRTtBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTOztBQUVUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUdBQW1HOztBQUVuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxrREFBa0Q7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4R0FBOEc7QUFDOUc7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsbUlBQW1JO0FBQ25JO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0EsbUJBQW1CLGtEQUFJO0FBQ3ZCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyREFBUTtBQUNqQztBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDJEQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwREFBTztBQUM5QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRLHFEQUFxRCxTQUFTLDBEQUFPO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSwwREFBTztBQUNqQjtBQUNBO0FBQ0E7QUFDQSxPQUFPLFVBQVUsMkRBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsaUNBQWlDO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxxRUFBTSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy9sZWdlbmQvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG52YXIgX19hc3NpZ24gPSB0aGlzICYmIHRoaXMuX19hc3NpZ24gfHwgZnVuY3Rpb24gKCkge1xuICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHQpIHtcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIHMgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIHAgaW4gcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5cbmltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBpc0FycmF5LCBpc051bWJlciwgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IENhbnZhcyB9IGZyb20gJ0BhbnR2L2ctY2FudmFzJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2NsaWNrJywgJ21vdXNlZW50ZXInXTtcblxudmFyIExlZ2VuZCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhMZWdlbmQsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gTGVnZW5kKGNvbmZpZykge1xuICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gIH1cblxuICBMZWdlbmQucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB7fSxcbiAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIHBhZGRpbmc6IDgsXG4gICAgICBtYXJnaW46IDgsXG4gICAgICBvZmZzZXRYOiAwLFxuICAgICAgb2Zmc2V0WTogMCxcbiAgICAgIGxheW91dDogJ2hvcml6b250YWwnLFxuICAgICAgZmxpcFBhZ2U6IGZhbHNlLFxuICAgICAgY29udGFpbmVyU3R5bGU6IHt9LFxuICAgICAgYWxpZ246IHVuZGVmaW5lZCxcbiAgICAgIGhvcmlTZXA6IDgsXG4gICAgICB2ZXJ0aVNlcDogOCxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgICB0cmlnZ2VyOiAnY2xpY2snXG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mb3JtYXRBcnJheSgncGFkZGluZycpO1xuICAgIHRoaXMuZm9ybWF0QXJyYXkoJ21hcmdpbicpO1xuICAgIHZhciBmaWx0ZXIgPSB0aGlzLmdldCgnZmlsdGVyJykgfHwge307XG4gICAgdmFyIG11bHRpcGxlID0gZmlsdGVyLm11bHRpcGxlO1xuICAgIGlmIChtdWx0aXBsZSAmJiBmaWx0ZXIudHJpZ2dlciA9PT0gJ21vdXNlZW50ZXInKSB0aGlzLnNldCgnbXVsdGlwbGUnLCBmYWxzZSk7XG4gICAgdmFyIGFsaWduID0gdGhpcy5nZXQoJ2FsaWduJyk7XG5cbiAgICBpZiAoIWFsaWduKSB7XG4gICAgICB2YXIgcG9zaXRpb25zID0gdGhpcy5nZXQoJ3Bvc2l0aW9uJykuc3BsaXQoJy0nKTtcbiAgICAgIGlmIChwb3NpdGlvbnMuaW5jbHVkZXMoJ2xlZnQnKSkgYWxpZ24gPSAnbGVmdCc7XG4gICAgICBpZiAocG9zaXRpb25zLmluY2x1ZGVzKCdyaWdodCcpKSBhbGlnbiA9ICdyaWdodCc7ZWxzZSBhbGlnbiA9ICdjZW50ZXInO1xuICAgICAgdGhpcy5zZXQoJ2FsaWduJywgYWxpZ24pO1xuICAgIH1cblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBncmFwaENvbnRhaW5lciA9IGdyYXBoLmdldCgnY29udGFpbmVyJyk7XG4gICAgdmFyIGNvbnRhaW5lciA9IGNyZWF0ZURvbShcIjxkaXYgY2xhc3M9J2c2LWxlZ2VuZC1jb250YWluZXInIHN0eWxlPVxcXCJwb3NpdGlvbjogYWJzb2x1dGU7XFxcIj48L2Rpdj5cIik7XG4gICAgZ3JhcGhDb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB0aGlzLnNldCgnY29udGFpbmVyJywgY29udGFpbmVyKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMucmVuZGVyKCk7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwgdGhpcy5nZXRDb250YWluZXJQb3Moc2l6ZSkpO1xuICAgIHRoaXMuYmluZEV2ZW50cygpO1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUuZ2V0Q29udGFpbmVyUG9zID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICBpZiAoc2l6ZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzaXplID0gWzAsIDBdO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgb2Zmc2V0WCA9IHRoaXMuZ2V0KCdvZmZzZXRYJyk7XG4gICAgdmFyIG9mZnNldFkgPSB0aGlzLmdldCgnb2Zmc2V0WScpO1xuICAgIHZhciBtYXJnaW4gPSB0aGlzLmdldCgnbWFyZ2luJyk7XG4gICAgdmFyIHBvc2l0aW9ucyA9IHRoaXMuZ2V0KCdwb3NpdGlvbicpLnNwbGl0KCctJyk7XG4gICAgdmFyIHBvc0lkeE1hcCA9IHtcbiAgICAgICd0b3AnOiAwLFxuICAgICAgJ3JpZ2h0JzogMSxcbiAgICAgICdib3R0b20nOiAyLFxuICAgICAgJ2xlZnQnOiAzXG4gICAgfTtcbiAgICB2YXIgeCA9IDAsXG4gICAgICAgIHkgPSAwO1xuICAgIHZhciBjb250YWluZXJDU1MgPSB7XG4gICAgICBsZWZ0OiAoZ3JhcGguZ2V0V2lkdGgoKSAtIHNpemVbMF0pIC8gMiArIHgsXG4gICAgICB0b3A6IChncmFwaC5nZXRIZWlnaHQoKSAtIHNpemVbMV0pIC8gMiArIHlcbiAgICB9O1xuICAgIHBvc2l0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgIHZhciBtYXJnaW5WYWx1ZSA9IG1hcmdpbltwb3NJZHhNYXBbcG9zXV07XG4gICAgICB2YXIga2V5ID0gcG9zO1xuXG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIG1hcmdpblZhbHVlICs9IHk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbWFyZ2luVmFsdWUgKz0geDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIG1hcmdpblZhbHVlID0gZ3JhcGguZ2V0SGVpZ2h0KCkgLSBzaXplWzFdIC0gbWFyZ2luVmFsdWUgKyB5O1xuICAgICAgICAgIGtleSA9ICd0b3AnO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbWFyZ2luVmFsdWUgPSBncmFwaC5nZXRXaWR0aCgpIC0gc2l6ZVswXSAtIG1hcmdpblZhbHVlICsgeDtcbiAgICAgICAgICBrZXkgPSAnbGVmdCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lckNTU1trZXldID0gbWFyZ2luVmFsdWU7XG4gICAgfSk7XG4gICAgY29udGFpbmVyQ1NTLnRvcCArPSBvZmZzZXRZICsgZ3JhcGguZ2V0Q29udGFpbmVyKCkub2Zmc2V0VG9wO1xuICAgIGNvbnRhaW5lckNTUy5sZWZ0ICs9IG9mZnNldFggKyBncmFwaC5nZXRDb250YWluZXIoKS5vZmZzZXRMZWZ0O1xuICAgIE9iamVjdC5rZXlzKGNvbnRhaW5lckNTUykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBjb250YWluZXJDU1Nba2V5XSA9IGNvbnRhaW5lckNTU1trZXldICsgXCJweFwiO1xuICAgIH0pO1xuICAgIHJldHVybiBjb250YWluZXJDU1M7XG4gIH07IC8vIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIExlZ2VuZC5wcm90b3R5cGUuYmluZEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGZpbHRlciA9IHNlbGYuZ2V0KCdmaWx0ZXInKTtcbiAgICBpZiAoIWZpbHRlciB8fCAhZmlsdGVyLmVuYWJsZSkgcmV0dXJuO1xuICAgIHZhciB0cmlnZ2VyID0gZmlsdGVyLnRyaWdnZXIgfHwgJ2NsaWNrJztcblxuICAgIGlmICghQUxMT1dfRVZFTlRTLmluY2x1ZGVzKHRyaWdnZXIpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RyaWdnZXIgZm9yIGxlZ2VuZCBmaWx0ZXJsaW5nIG11c3QgYmUgXFwnY2xpY2tcXCcgb3IgXFwnbW91c2VlbnRlclxcJywgXFwnY2xpY2tcXCcgd2lsbCB0YWtlIGVmZmVjdCBieSBkZWZhdWx0LicpO1xuICAgICAgdHJpZ2dlciA9ICdjbGljayc7XG4gICAgfVxuXG4gICAgdmFyIGxjID0gc2VsZi5nZXQoJ2xlZ2VuZENhbnZhcycpO1xuXG4gICAgaWYgKHRyaWdnZXIgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgbGMub24oJ25vZGUtY29udGFpbmVyOm1vdXNlZW50ZXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gc2VsZi5maWx0ZXJEYXRhKGUpO1xuICAgICAgfSk7XG4gICAgICBsYy5vbignbm9kZS1jb250YWluZXI6bW91c2VsZWF2ZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHNlbGYuY2xlYXJGaWx0ZXIoKTtcbiAgICAgICAgc2VsZi5jbGVhckFjdGl2ZUxlZ2VuZCgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxjLm9uKCdub2RlLWNvbnRhaW5lcjpjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBzZWxmLmZpbHRlckRhdGEoZSk7XG4gICAgICB9KTtcbiAgICAgIGxjLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCAmJiBlLnRhcmdldC5pc0NhbnZhcyAmJiBlLnRhcmdldC5pc0NhbnZhcygpKSB7XG4gICAgICAgICAgc2VsZi5jbGVhckZpbHRlcigpO1xuICAgICAgICAgIHNlbGYuY2xlYXJBY3RpdmVMZWdlbmQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05pawIGxlZ2VuZCDmlbDmja7vvIzlvIDmlL7nu5nnlKjmiLfmjqfliLZcbiAgICogQHBhcmFtIHBhcmFtXG4gICAqL1xuXG5cbiAgTGVnZW5kLnByb3RvdHlwZS5jaGFuZ2VEYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGlzLnNldCgnZGF0YScsIGRhdGEpO1xuICAgIHZhciBzaXplID0gdGhpcy5yZW5kZXIoKTtcbiAgICBtb2RpZnlDU1ModGhpcy5nZXQoJ2NvbnRhaW5lcicpLCB0aGlzLmdldENvbnRhaW5lclBvcyhzaXplKSk7XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5hY3RpdmF0ZUxlZ2VuZCA9IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBmaWx0ZXIgPSB0aGlzLmdldCgnZmlsdGVyJyk7XG4gICAgdmFyIG11bHRpcGxlID0gZmlsdGVyID09PSBudWxsIHx8IGZpbHRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlsdGVyLm11bHRpcGxlO1xuICAgIGlmICghbXVsdGlwbGUpIHRoaXMuY2xlYXJBY3RpdmVMZWdlbmQoKTtcbiAgICB2YXIgc2hhcGVHcm91cCA9IHNoYXBlLmdldCgncGFyZW50Jyk7IC8vIOiLpeiiq+mrmOS6ruWFg+e0oOW3sue7j+WkhOS6jiBhY3RpdmUg54q25oCB77yM5YiZ5Y+W5raI5a6D55qEIGFjdGl2ZSDnirbmgIFcbiAgICAvLyDlubbmoLnmja7nm67liY3mmK/lkKbmnInlhbbku5YgYWN0aXZlIOeKtuaAgeeahOWFg+e0oOWGs+WumuaYr+WQpuimgeiuvue9ruS4uiBpbmFjdGl2ZSDnirbmgIFcblxuICAgIGlmIChzaGFwZUdyb3VwLmdldCgnYWN0aXZlJykpIHtcbiAgICAgIHNoYXBlR3JvdXAuc2V0KCdhY3RpdmUnLCBmYWxzZSk7XG4gICAgICBpZiAodGhpcy5maW5kTGVnZW5kSXRlbXNCeVN0YXRlKCdhY3RpdmUnKS5sZW5ndGgpIHNoYXBlR3JvdXAuc2V0KCdpbmFjdGl2ZScsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaGFwZUdyb3VwLnNldCgnaW5hY3RpdmUnLCBmYWxzZSk7XG4gICAgICBzaGFwZUdyb3VwLnNldCgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgfSAvLyDlvZPnm67liY3mnInlhYPntKDkuLogYWN0aXZlIOeKtuaAgeaXtu+8jOWwhumdniBhY3RpdmUg55qE5YWD57Sg6K6+572u5Li6IGluYWN0aXZlXG5cblxuICAgIGlmICh0aGlzLmZpbmRMZWdlbmRJdGVtc0J5U3RhdGUoJ2FjdGl2ZScpLmxlbmd0aCkge1xuICAgICAgdGhpcy5maW5kTGVnZW5kSXRlbXNCeVN0YXRlKCdhY3RpdmUnLCAnYWxsJywgZmFsc2UpLmZvckVhY2goZnVuY3Rpb24gKHN1Ykdyb3VwKSB7XG4gICAgICAgIHN1Ykdyb3VwLnNldCgnaW5hY3RpdmUnLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyQWN0aXZlTGVnZW5kKCk7XG4gICAgfSAvLyDorr7nva7moLflvI9cblxuXG4gICAgdmFyIHN0YXRlU3R5bGVzID0gKGZpbHRlciA9PT0gbnVsbCB8fCBmaWx0ZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpbHRlci5sZW5nZWRTdGF0ZVN0eWxlcykgfHwge307XG4gICAgdmFyIGxlZ2VuZEluYWN0aXZlID0gKHN0YXRlU3R5bGVzID09PSBudWxsIHx8IHN0YXRlU3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdGF0ZVN0eWxlcy5pbmFjdGl2ZSkgfHwge1xuICAgICAgb3BhY2l0eTogMC41LFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIG9wYWNpdHk6IDAuNVxuICAgICAgfVxuICAgIH07XG4gICAgdmFyIGxlZ2VuZFRleHRJbmFjdGl2ZSA9IGxlZ2VuZEluYWN0aXZlWyd0ZXh0LXNoYXBlJ10gfHwge307XG4gICAgdGhpcy5maW5kTGVnZW5kSXRlbXNCeVN0YXRlKCdpbmFjdGl2ZScpLmZvckVhY2goZnVuY3Rpb24gKHN1Ykdyb3VwKSB7XG4gICAgICB2YXIgX2EgPSBzdWJHcm91cC5nZXQoJ2NoaWxkcmVuJyksXG4gICAgICAgICAga2V5U2hhcGUgPSBfYVswXSxcbiAgICAgICAgICB0ZXh0ID0gX2FbMV07XG5cbiAgICAgIGtleVNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIGtleVNoYXBlLmdldCgnb3JpQXR0cnMnKSksIGxlZ2VuZEluYWN0aXZlKSk7XG4gICAgICB0ZXh0LmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHRleHQuZ2V0KCdvcmlBdHRycycpKSwgbGVnZW5kVGV4dEluYWN0aXZlKSk7XG4gICAgfSk7XG4gICAgdmFyIGxlZ2VuZEFjdGl2ZSA9IChzdGF0ZVN0eWxlcyA9PT0gbnVsbCB8fCBzdGF0ZVN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RhdGVTdHlsZXMuYWN0aXZlKSB8fCB7XG4gICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCdcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBsZWdlbmRUZXh0QWN0aXZlID0gbGVnZW5kQWN0aXZlWyd0ZXh0LXNoYXBlJ10gfHwge307XG4gICAgdGhpcy5maW5kTGVnZW5kSXRlbXNCeVN0YXRlKCdhY3RpdmUnKS5mb3JFYWNoKGZ1bmN0aW9uIChzdWJHcm91cCkge1xuICAgICAgdmFyIF9hID0gc3ViR3JvdXAuZ2V0KCdjaGlsZHJlbicpLFxuICAgICAgICAgIGtleVNoYXBlID0gX2FbMF0sXG4gICAgICAgICAgdGV4dCA9IF9hWzFdO1xuXG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBrZXlTaGFwZS5nZXQoJ29yaUF0dHJzJykpLCBsZWdlbmRBY3RpdmUpKTtcbiAgICAgIHRleHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGV4dC5nZXQoJ29yaUF0dHJzJykpLCBsZWdlbmRUZXh0QWN0aXZlKSk7XG4gICAgfSk7XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5maW5kTGVnZW5kSXRlbXNCeVN0YXRlID0gZnVuY3Rpb24gKHN0YXRlTmFtZSwgdHlwZSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgICB0eXBlID0gJ2FsbCc7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnbGVnZW5kQ2FudmFzJykuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdyb290JztcbiAgICB9KTtcbiAgICB2YXIgbm9kZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgZWRnZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdlZGdlLWdyb3VwJztcbiAgICB9KTtcbiAgICBpZiAodHlwZSA9PT0gJ25vZGUnKSByZXR1cm4gbm9kZUdyb3VwLmdldCgnY2hpbGRyZW4nKS5maWx0ZXIoZnVuY3Rpb24gKGcpIHtcbiAgICAgIHJldHVybiAhIWcuZ2V0KHN0YXRlTmFtZSkgPT09IHZhbHVlO1xuICAgIH0pO1xuICAgIGlmICh0eXBlID09PSAnZWRnZScpIHJldHVybiBlZGdlR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZpbHRlcihmdW5jdGlvbiAoZykge1xuICAgICAgcmV0dXJuICEhZy5nZXQoc3RhdGVOYW1lKSA9PT0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVHcm91cC5nZXQoJ2NoaWxkcmVuJykuZmlsdGVyKGZ1bmN0aW9uIChnKSB7XG4gICAgICByZXR1cm4gISFnLmdldChzdGF0ZU5hbWUpID09PSB2YWx1ZTtcbiAgICB9KS5jb25jYXQoZWRnZUdyb3VwLmdldCgnY2hpbGRyZW4nKS5maWx0ZXIoZnVuY3Rpb24gKGcpIHtcbiAgICAgIHJldHVybiAhIWcuZ2V0KHN0YXRlTmFtZSkgPT09IHZhbHVlO1xuICAgIH0pKTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmNsZWFyQWN0aXZlTGVnZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZyA9IHRoaXMuZ2V0KCdsZWdlbmRDYW52YXMnKTtcbiAgICB2YXIgZ3JvdXAgPSBsZy5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ3Jvb3QnO1xuICAgIH0pO1xuICAgIHZhciBncm91cHMgPSBbZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWdyb3VwJztcbiAgICB9KSwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdlZGdlLWdyb3VwJztcbiAgICB9KV07XG4gICAgZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW1Hcm91cCkge1xuICAgICAgaXRlbUdyb3VwLmdldCgnY2hpbGRyZW4nKS5mb3JFYWNoKGZ1bmN0aW9uIChzdWJHcm91cCkge1xuICAgICAgICBzdWJHcm91cC5zZXQoJ2FjdGl2ZScsIGZhbHNlKTtcbiAgICAgICAgc3ViR3JvdXAuc2V0KCdpbmFjdGl2ZScsIGZhbHNlKTtcblxuICAgICAgICB2YXIgX2EgPSBzdWJHcm91cC5nZXQoJ2NoaWxkcmVuJyksXG4gICAgICAgICAgICBrZXlTaGFwZSA9IF9hWzBdLFxuICAgICAgICAgICAgdGV4dCA9IF9hWzFdO1xuXG4gICAgICAgIGtleVNoYXBlLmF0dHIoa2V5U2hhcGUuZ2V0KCdvcmlBdHRycycpKTtcbiAgICAgICAgdGV4dC5hdHRyKHRleHQuZ2V0KCdvcmlBdHRycycpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6auY5Lqu5ZKM572u54Gw5Zu+5L6L77yM5bm26L+H5ruk5Li75Zu+5YWD57SgXG4gICAqIEBwYXJhbSBwYXJhbVxuICAgKi9cblxuXG4gIExlZ2VuZC5wcm90b3R5cGUuZmlsdGVyRGF0YSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGZpbHRlciA9IHRoaXMuZ2V0KCdmaWx0ZXInKTtcbiAgICB2YXIgZmlsdGVyRnVuY3Rpb25zID0gZmlsdGVyID09PSBudWxsIHx8IGZpbHRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlsdGVyLmZpbHRlckZ1bmN0aW9ucztcbiAgICBpZiAoIWZpbHRlciB8fCAhZmlsdGVyRnVuY3Rpb25zKSByZXR1cm47XG4gICAgdmFyIGxjID0gdGhpcy5nZXQoJ2xlZ2VuZENhbnZhcycpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBhY3RpdmVTdGF0ZSA9IGZpbHRlci5ncmFwaEFjdGl2ZVN0YXRlIHx8ICdhY3RpdmUnO1xuICAgIHZhciBpbmFjdGl2ZVN0YXRlID0gZmlsdGVyLmdyYXBoSW5hY3RpdmVTdGF0ZSB8fCAnaW5hY3RpdmUnO1xuICAgIHZhciBtdWx0aXBsZSA9IGZpbHRlci5tdWx0aXBsZTtcbiAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XG4gICAgaWYgKCFtdWx0aXBsZSkgdGhpcy5jbGVhckFjdGl2ZUxlZ2VuZCgpOyAvLyDorr7nva4gbGVnZW5kIOeahOmrmOS6rueKtuaAgVxuXG4gICAgdGhpcy5hY3RpdmF0ZUxlZ2VuZChlLnRhcmdldCk7XG4gICAgdmFyIGdyb3VwID0gbGMuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdyb290JztcbiAgICB9KTtcbiAgICB2YXIgbm9kZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgZWRnZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdlZGdlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgYWN0aXZlTm9kZUxlZ2VuZCA9IG5vZGVHcm91cC5nZXQoJ2NoaWxkcmVuJykuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ2FjdGl2ZScpO1xuICAgIH0pO1xuICAgIHZhciBhY3RpdmVFZGdlTGVnZW5kID0gZWRnZUdyb3VwLmdldCgnY2hpbGRyZW4nKS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlLmdldCgnYWN0aXZlJyk7XG4gICAgfSk7XG4gICAgdmFyIGFjdGl2ZUNvdW50ID0gMDtcbiAgICB2YXIgdHlwZUZ1bmNzID0gWydnZXROb2RlcycsICdnZXRFZGdlcyddO1xuICAgIHR5cGVGdW5jcy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlRnVuYykge1xuICAgICAgZ3JhcGhbdHlwZUZ1bmNdKCkuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhJdGVtKSB7XG4gICAgICAgIHZhciBhY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdmFyIGFjdGl2ZUxlZ2VuZCA9IHR5cGVGdW5jID09PSAnZ2V0Tm9kZXMnID8gYWN0aXZlTm9kZUxlZ2VuZCA6IGFjdGl2ZUVkZ2VMZWdlbmQ7XG4gICAgICAgIGFjdGl2ZUxlZ2VuZC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtR3JvdXApIHtcbiAgICAgICAgICB2YXIgZnVuYyA9IGZpbHRlckZ1bmN0aW9uc1tpdGVtR3JvdXAuZ2V0KCdpZCcpXTtcbiAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUgfHwgZnVuYyhncmFwaEl0ZW0uZ2V0TW9kZWwoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZ3JhcGhJdGVtLCBpbmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGdyYXBoSXRlbSwgYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgICAgIGFjdGl2ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGdyYXBoSXRlbSwgYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZ3JhcGhJdGVtLCBpbmFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKCFhY3RpdmVDb3VudCkgdHlwZUZ1bmNzLmZvckVhY2goZnVuY3Rpb24gKHR5cGVGdW5jKSB7XG4gICAgICBncmFwaFt0eXBlRnVuY10oKS5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaEl0ZW0pIHtcbiAgICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKGdyYXBoSXRlbSwgW2luYWN0aXZlU3RhdGVdKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5riF6Zmk5Li75Zu+55u45YWz54q25oCBXG4gICAqIEBwYXJhbSBwYXJhbVxuICAgKi9cblxuXG4gIExlZ2VuZC5wcm90b3R5cGUuY2xlYXJGaWx0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g5riF6ZmkIGxlZ2VuZCDnmoTpq5jkuq7nirbmgIFcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZmlsdGVyID0gdGhpcy5nZXQoJ2ZpbHRlcicpO1xuICAgIGlmICghZmlsdGVyKSByZXR1cm47XG4gICAgdmFyIGFjdGl2ZVN0YXRlID0gZmlsdGVyLmdyYXBoQWN0aXZlU3RhdGUgfHwgJ2FjdGl2ZSc7XG4gICAgdmFyIGluYWN0aXZlU3RhdGUgPSBmaWx0ZXIuZ3JhcGhJbmFjdGl2ZVN0YXRlIHx8ICdpbmFjdGl2ZSc7XG4gICAgZ3JhcGguZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMobm9kZSwgW2FjdGl2ZVN0YXRlLCBpbmFjdGl2ZVN0YXRlXSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZ2V0RWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMoZWRnZSwgW2FjdGl2ZVN0YXRlLCBpbmFjdGl2ZVN0YXRlXSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmuLLmn5MgbGVnZW5kIOWbvlxuICAgKiBAcGFyYW0gcGFyYW1cbiAgICovXG5cblxuICBMZWdlbmQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICAgIHZhciBsYyA9IHRoaXMuZ2V0KCdsZWdlbmRDYW52YXMnKTtcblxuICAgIGlmICghbGMpIHtcbiAgICAgIGxjID0gbmV3IENhbnZhcyh7XG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5nZXQoJ2NvbnRhaW5lcicpLFxuICAgICAgICB3aWR0aDogMjAwLFxuICAgICAgICBoZWlnaHQ6IDIwMFxuICAgICAgfSk7XG4gICAgICB2YXIgcm9vdEdyb3VwID0gbGMuYWRkR3JvdXAoe1xuICAgICAgICBuYW1lOiAncm9vdCdcbiAgICAgIH0pO1xuICAgICAgcm9vdEdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgbmFtZTogJ25vZGUtZ3JvdXAnXG4gICAgICB9KTtcbiAgICAgIHJvb3RHcm91cC5hZGRHcm91cCh7XG4gICAgICAgIG5hbWU6ICdlZGdlLWdyb3VwJ1xuICAgICAgfSk7IC8vIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgICAgLy8gICBsZWdlbmRBY3RpdmUsXG4gICAgICAvLyAgIGxlZ2VuZEluYWN0aXZlXG4gICAgICAvLyB9XG5cbiAgICAgIHRoaXMuc2V0KCdsZWdlbmRDYW52YXMnLCBsYyk7XG4gICAgfVxuXG4gICAgdmFyIGdyb3VwID0gbGMuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdyb290JztcbiAgICB9KTtcbiAgICB2YXIgbm9kZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgZWRnZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdlZGdlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgaXRlbXNEYXRhID0gdGhpcy5nZXQoJ2l0ZW1zRGF0YScpO1xuICAgIHZhciBpdGVtVHlwZXMgPSBbJ25vZGVzJywgJ2VkZ2VzJ107XG4gICAgdmFyIGl0ZW1Hcm91cCA9IFtub2RlR3JvdXAsIGVkZ2VHcm91cF07XG4gICAgaXRlbVR5cGVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW1UeXBlLCBpKSB7XG4gICAgICBpdGVtc0RhdGFbaXRlbVR5cGVdLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIF9hO1xuXG4gICAgICAgIHZhciBzdWJHcm91cCA9IGl0ZW1Hcm91cFtpXS5hZGRHcm91cCh7XG4gICAgICAgICAgaWQ6IGRhdGEuaWQsXG4gICAgICAgICAgbmFtZTogJ25vZGUtY29udGFpbmVyJ1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGF0dHJzO1xuICAgICAgICB2YXIgc2hhcGVUeXBlID0gZGF0YS50eXBlO1xuXG4gICAgICAgIHZhciBfYiA9IF90aGlzLmdldFNoYXBlU2l6ZShkYXRhKSxcbiAgICAgICAgICAgIHdpZHRoID0gX2Iud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQgPSBfYi5oZWlnaHQsXG4gICAgICAgICAgICByID0gX2IucjtcblxuICAgICAgICB2YXIgc3R5bGUgPSBfdGhpcy5nZXRTdHlsZShpdGVtVHlwZS5zdWJzdHIoMCwgNCksIGRhdGEpO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgICAgIGF0dHJzID0ge1xuICAgICAgICAgICAgICByOiByLFxuICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdyZWN0JzpcbiAgICAgICAgICAgIGF0dHJzID0ge1xuICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnZWxsaXBzZSc6XG4gICAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgICAgcjE6IHdpZHRoLFxuICAgICAgICAgICAgICByMjogaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdsaW5lJzpcbiAgICAgICAgICAgIGF0dHJzID0ge1xuICAgICAgICAgICAgICB4MTogLXdpZHRoIC8gMixcbiAgICAgICAgICAgICAgeTE6IDAsXG4gICAgICAgICAgICAgIHgyOiB3aWR0aCAvIDIsXG4gICAgICAgICAgICAgIHkyOiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hhcGVUeXBlID0gJ2xpbmUnO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdxdWFkcmF0aWMnOlxuICAgICAgICAgICAgYXR0cnMgPSB7XG4gICAgICAgICAgICAgIHBhdGg6IFtbJ00nLCAtd2lkdGggLyAyLCAwXSwgWydRJywgMCwgd2lkdGggLyAyLCB3aWR0aCAvIDIsIDBdXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNoYXBlVHlwZSA9ICdwYXRoJztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY3ViaWMnOlxuICAgICAgICAgICAgYXR0cnMgPSB7XG4gICAgICAgICAgICAgIHBhdGg6IFtbJ00nLCAtd2lkdGggLyAyLCAwXSwgWydDJywgLXdpZHRoIC8gNiwgd2lkdGggLyAyLCB3aWR0aCAvIDYsIC13aWR0aCAvIDIsIHdpZHRoIC8gMiwgMF1dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc2hhcGVUeXBlID0gJ3BhdGgnO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYXR0cnMgPSB7XG4gICAgICAgICAgICAgIHI6IHIsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXlTaGFwZSA9IHN1Ykdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCBzdHlsZSksXG4gICAgICAgICAgbmFtZTogZGF0YS50eXBlICsgXCItbm9kZS1rZXlTaGFwZVwiLFxuICAgICAgICAgIG9yaUF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgfSwgc3R5bGUpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkYXRhLmxhYmVsKSB7XG4gICAgICAgICAgdmFyIGtleVNoYXBlQkJveCA9IGtleVNoYXBlLmdldEJCb3goKTtcbiAgICAgICAgICB2YXIgbGFiZWxTdHlsZSA9ICgoX2EgPSBkYXRhLmxhYmVsQ2ZnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3R5bGUpIHx8IHt9O1xuXG4gICAgICAgICAgdmFyIGF0dHJzXzEgPSBfX2Fzc2lnbih7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdiZWdpbicsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgICAgICAgZmlsbDogJyMwMDAnLFxuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnXG4gICAgICAgICAgfSwgbGFiZWxTdHlsZSk7XG5cbiAgICAgICAgICBzdWJHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICAgIHg6IGtleVNoYXBlQkJveC5tYXhYICsgNCxcbiAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgdGV4dDogZGF0YS5sYWJlbFxuICAgICAgICAgICAgfSwgYXR0cnNfMSksXG4gICAgICAgICAgICBjbGFzc05hbWU6ICdsZWdlbmQtbGFiZWwnLFxuICAgICAgICAgICAgbmFtZTogZGF0YS50eXBlICsgXCItbm9kZS10ZXh0XCIsXG4gICAgICAgICAgICBvcmlBdHRyczogYXR0cnNfMVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgcGFkZGluZyA9IHRoaXMuZ2V0KCdwYWRkaW5nJyk7XG4gICAgdmFyIHRpdGxlU2hhcGU7XG4gICAgdmFyIHRpdGxlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ3RpdGxlLWNvbnRhaW5lcic7XG4gICAgfSk7XG4gICAgdmFyIHRpdGxlR3JvdXBCQm94ID0ge1xuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgbWF4WTogMCxcbiAgICAgIHdpZHRoOiAwXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmdldCgndGl0bGUnKSkge1xuICAgICAgaWYgKCF0aXRsZUdyb3VwKSB7XG4gICAgICAgIHRpdGxlR3JvdXAgPSBncm91cC5hZGRHcm91cCh7XG4gICAgICAgICAgbmFtZTogJ3RpdGxlLWNvbnRhaW5lcidcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBkZWZhdWx0VGl0bGVTdHlsZSA9IHtcbiAgICAgICAgZm9udFNpemU6IDIwLFxuICAgICAgICBmb250RmFtaWx5OiAnQXJpYWwnLFxuICAgICAgICBmb250V2VpZ2h0OiAzMDAsXG4gICAgICAgIHRleHRCYXNlbGluZTogJ3RvcCcsXG4gICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgIGZpbGw6IFwiIzAwMFwiLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiBwYWRkaW5nWzBdXG4gICAgICB9O1xuICAgICAgdmFyIHRpdGxlQ29uZmlnID0gdGhpcy5nZXQoJ3RpdGxlQ29uZmlnJykgfHwge307XG4gICAgICB2YXIgc3R5bGUgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRUaXRsZVN0eWxlLCB0aXRsZUNvbmZpZy5zdHlsZSB8fCB7fSk7XG4gICAgICB0aXRsZVNoYXBlID0gdGl0bGVHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLmdldCgndGl0bGUnKVxuICAgICAgICB9LCBzdHlsZSlcbiAgICAgIH0pO1xuICAgICAgdGl0bGVHcm91cEJCb3ggPSB0aXRsZUdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICAgIHRpdGxlR3JvdXAuc2V0TWF0cml4KFsxLCAwLCAwLCAwLCAxLCAwLCB0aXRsZUNvbmZpZy5vZmZzZXRYLCB0aXRsZUNvbmZpZy5vZmZzZXRZLCAxXSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXlvdXRJdGVtcygpO1xuICAgIHZhciBsY0JCb3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgdmFyIG5vZGVHcm91cEJCb3ggPSBub2RlR3JvdXAuZ2V0Q2FudmFzQkJveCgpOyAvLyDoi6XmnInlm77lvaLotoXov4fovrnnlYznmoTmg4XlhrXvvIzlubPnp7vlm57mnaVcblxuICAgIHZhciBub2RlR3JvdXBCZWdpblggPSBub2RlR3JvdXBCQm94Lm1pblggPCAwID8gTWF0aC5hYnMobm9kZUdyb3VwQkJveC5taW5YKSArIHBhZGRpbmdbM10gOiBwYWRkaW5nWzNdO1xuICAgIHZhciBub2RlR3JvdXBCZWdpblkgPSB0aXRsZUdyb3VwQkJveC5tYXhZIDwgbm9kZUdyb3VwQkJveC5taW5ZID8gTWF0aC5hYnModGl0bGVHcm91cEJCb3gubWF4WSAtIG5vZGVHcm91cEJCb3gubWluWSkgKyBwYWRkaW5nWzBdIDogdGl0bGVHcm91cEJCb3gubWF4WSArIHBhZGRpbmdbMF07XG4gICAgdmFyIG5vZGVHcm91cE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCBub2RlR3JvdXBCZWdpblgsIG5vZGVHcm91cEJlZ2luWSwgMV07XG4gICAgbm9kZUdyb3VwLnNldE1hdHJpeChub2RlR3JvdXBNYXRyaXgpO1xuICAgIGxjQkJveCA9IGdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgc2l6ZSA9IFtsY0JCb3gubWluWCArIGxjQkJveC53aWR0aCArIHBhZGRpbmdbMV0sIGxjQkJveC5taW5ZICsgbGNCQm94LmhlaWdodCArIHBhZGRpbmdbMl1dOyAvLyDmoLnmja4gc2l6ZSDlkowgdGl0bGVDb25maWcg6LCD5pW0IHRpdGxlIOS9jee9ru+8jOWGjeiwg+aVtCBub2RlR3JvdXAg5L2N572uXG5cbiAgICBpZiAodGl0bGVTaGFwZSkge1xuICAgICAgdmFyIHRpdGxlQ29uZmlnID0gX19hc3NpZ24oe1xuICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgIG9mZnNldFk6IDBcbiAgICAgIH0sIHRoaXMuZ2V0KCd0aXRsZUNvbmZpZycpKTtcblxuICAgICAgdGl0bGVHcm91cEJCb3ggPSB0aXRsZUdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICAgIHZhciB0aXRsZUdyb3VwTWF0cml4ID0gdGl0bGVHcm91cC5nZXRNYXRyaXgoKSB8fCBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG5cbiAgICAgIGlmICh0aXRsZUNvbmZpZy5wb3NpdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgdGl0bGVHcm91cE1hdHJpeFs2XSA9IHNpemVbMF0gLyAyICsgdGl0bGVDb25maWcub2Zmc2V0WDtcbiAgICAgIH0gZWxzZSBpZiAodGl0bGVDb25maWcucG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgdGl0bGVHcm91cE1hdHJpeFs2XSA9IHNpemVbMF0gLSBwYWRkaW5nWzNdICsgdGl0bGVDb25maWcub2Zmc2V0WDtcbiAgICAgICAgdGl0bGVTaGFwZS5hdHRyKHtcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aXRsZUdyb3VwTWF0cml4WzZdID0gcGFkZGluZ1szXSArIHRpdGxlQ29uZmlnLm9mZnNldFg7XG4gICAgICAgIHRpdGxlU2hhcGUuYXR0cih7XG4gICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRpdGxlR3JvdXAuc2V0TWF0cml4KHRpdGxlR3JvdXBNYXRyaXgpO1xuICAgICAgdGl0bGVHcm91cEJCb3ggPSB0aXRsZUdyb3VwLmdldENhbnZhc0JCb3goKTsgLy8g6Iul5pyJ5Zu+5b2i6LaF6L+H6L6555WM55qE5oOF5Ya177yM5bmz56e75Zue5p2lXG5cbiAgICAgIG5vZGVHcm91cEJlZ2luWCA9IG5vZGVHcm91cEJCb3gubWluWCA8IDAgPyBNYXRoLmFicyhub2RlR3JvdXBCQm94Lm1pblgpICsgcGFkZGluZ1szXSA6IHBhZGRpbmdbM107XG4gICAgICBub2RlR3JvdXBCZWdpblkgPSBub2RlR3JvdXBCQm94Lm1pblkgPCB0aXRsZUdyb3VwQkJveC5tYXhZID8gTWF0aC5hYnModGl0bGVHcm91cEJCb3gubWF4WSAtIG5vZGVHcm91cEJCb3gubWluWSkgKyBwYWRkaW5nWzBdIDogdGl0bGVHcm91cEJCb3gubWF4WSArIHBhZGRpbmdbMF07XG4gICAgICBub2RlR3JvdXBNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgbm9kZUdyb3VwQmVnaW5YLCBub2RlR3JvdXBCZWdpblksIDFdO1xuICAgICAgbm9kZUdyb3VwLnNldE1hdHJpeChub2RlR3JvdXBNYXRyaXgpO1xuICAgICAgdmFyIGVkZ2VHcm91cE1hdHJpeF8xID0gWzEsIDAsIDAsIDAsIDEsIDAsIG5vZGVHcm91cEJlZ2luWCwgbm9kZUdyb3VwQmVnaW5ZLCAxXTtcbiAgICAgIGlmICh0aGlzLmdldCgnbGF5b3V0JykgPT09ICd2ZXJ0aWNhbCcpIGVkZ2VHcm91cE1hdHJpeF8xWzZdICs9IG5vZGVHcm91cEJCb3gubWF4WCArIHRoaXMuZ2V0KCdob3JpU2VwJyk7ZWxzZSBlZGdlR3JvdXBNYXRyaXhfMVs3XSArPSBub2RlR3JvdXBCQm94Lm1heFkgKyB0aGlzLmdldCgndmVydGlTZXAnKTtcbiAgICAgIGVkZ2VHcm91cC5zZXRNYXRyaXgoZWRnZUdyb3VwTWF0cml4XzEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDmsqHmnIkgdGl0bGXvvIzkuZ/pnIDopoHlubPnp7sgZWRnZUdyb3VwXG4gICAgICBub2RlR3JvdXBCQm94ID0gbm9kZUdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICAgIHZhciBlZGdlR3JvdXBNYXRyaXhfMiA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgIGlmICh0aGlzLmdldCgnbGF5b3V0JykgPT09ICd2ZXJ0aWNhbCcpIGVkZ2VHcm91cE1hdHJpeF8yWzZdICs9IG5vZGVHcm91cE1hdHJpeFs2XSArIG5vZGVHcm91cEJCb3gubWF4WCArIHRoaXMuZ2V0KCdob3JpU2VwJyk7ZWxzZSBlZGdlR3JvdXBNYXRyaXhfMls3XSArPSBub2RlR3JvdXBNYXRyaXhbN10gKyBub2RlR3JvdXBCQm94Lm1heFkgKyB0aGlzLmdldCgndmVydGlTZXAnKTtcbiAgICAgIGVkZ2VHcm91cC5zZXRNYXRyaXgoZWRnZUdyb3VwTWF0cml4XzIpO1xuICAgIH1cblxuICAgIGxjQkJveCA9IGdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICBub2RlR3JvdXBCQm94ID0gbm9kZUdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICBub2RlR3JvdXBNYXRyaXggPSBub2RlR3JvdXAuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIHZhciBlZGdlR3JvdXBNYXRyaXggPSBlZGdlR3JvdXAuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIHZhciBlZGdlR3JvdXBCQm94ID0gZWRnZUdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICBzaXplID0gW01hdGgubWF4KG5vZGVHcm91cEJCb3gud2lkdGggKyBub2RlR3JvdXBNYXRyaXhbNl0sIGVkZ2VHcm91cEJCb3gud2lkdGggKyBlZGdlR3JvdXBNYXRyaXhbNl0pICsgcGFkZGluZ1sxXSwgTWF0aC5tYXgobm9kZUdyb3VwQkJveC5oZWlnaHQgKyBub2RlR3JvdXBNYXRyaXhbN10sIGVkZ2VHcm91cEJCb3guaGVpZ2h0ICsgZWRnZUdyb3VwTWF0cml4WzddKSArIHBhZGRpbmdbMl1dO1xuICAgIGxjLmNoYW5nZVNpemUoc2l6ZVswXSwgc2l6ZVsxXSk7IC8vIOabtOaWsOWuueWZqOiDjOaZr+agt+W8j1xuXG4gICAgdmFyIGNvbnRhaW5lclN0eWxlID0gdGhpcy5nZXQoJ2NvbnRhaW5lclN0eWxlJyk7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIHZhciBiZWdpblBvcyA9IFV0aWwuaW52ZXJ0TWF0cml4KHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfSwgdmlld3BvcnRNYXRyaXgpO1xuICAgIHZhciBiYWNrUmVjdCA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgeDogYmVnaW5Qb3MueCArIChjb250YWluZXJTdHlsZS5saW5lV2lkdGggfHwgMSksXG4gICAgICAgIHk6IGJlZ2luUG9zLnkgKyAoY29udGFpbmVyU3R5bGUubGluZVdpZHRoIHx8IDEpLFxuICAgICAgICB3aWR0aDogc2l6ZVswXSAtIDIgKiAoY29udGFpbmVyU3R5bGUubGluZVdpZHRoIHx8IDEpLFxuICAgICAgICBoZWlnaHQ6IHNpemVbMV0gLSAyICogKGNvbnRhaW5lclN0eWxlLmxpbmVXaWR0aCB8fCAxKSxcbiAgICAgICAgZmlsbDogXCIjZjAwXCIsXG4gICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICAgIG9wYWNpdHk6IDAuNVxuICAgICAgfSwgY29udGFpbmVyU3R5bGUpLFxuICAgICAgbmFtZTogJ2xlZ2VuZC1iYWNrLXJlY3QnLFxuICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICB9KTtcbiAgICBiYWNrUmVjdC50b0JhY2soKTtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmxheW91dEl0ZW1zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsYyA9IHRoaXMuZ2V0KCdsZWdlbmRDYW52YXMnKTtcbiAgICB2YXIgaG9yaVNlcCA9IHRoaXMuZ2V0KCdob3JpU2VwJyk7XG4gICAgdmFyIHZlcnRpU2VwID0gdGhpcy5nZXQoJ3ZlcnRpU2VwJyk7XG4gICAgdmFyIGxheW91dCA9IHRoaXMuZ2V0KCdsYXlvdXQnKTtcbiAgICB2YXIgYWxpZ24gPSB0aGlzLmdldCgnYWxpZ24nKTtcbiAgICB2YXIgYmVnaW4gPSBbMCwgMF07XG4gICAgdmFyIGdyb3VwID0gbGMuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdyb290JztcbiAgICB9KTtcbiAgICB2YXIgbm9kZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdub2RlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgZWRnZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdlZGdlLWdyb3VwJztcbiAgICB9KTtcbiAgICB2YXIgbm9kZUxlZ2VuZFNpemUgPSB7XG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IC1JbmZpbml0eVxuICAgIH07XG4gICAgdmFyIHJvd01heFkgPSAtSW5maW5pdHk7XG4gICAgbm9kZUdyb3VwLmdldCgnY2hpbGRyZW4nKS5mb3JFYWNoKGZ1bmN0aW9uIChjTm9kZUdyb3VwLCBpKSB7XG4gICAgICBpZiAoaSA9PT0gMCkgbm9kZUxlZ2VuZFNpemUubWluID0gYmVnaW5bMF07XG4gICAgICB2YXIga2V5U2hhcGUgPSBjTm9kZUdyb3VwLmdldCgnY2hpbGRyZW4nKVswXTtcbiAgICAgIHZhciBiYm94ID0gY05vZGVHcm91cC5nZXRDYW52YXNCQm94KCk7XG5cbiAgICAgIHZhciBfYSA9IGtleVNoYXBlLmdldEJCb3goKSxcbiAgICAgICAgICBrZXlTaGFwZVdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgICAga2V5U2hhcGVIZWlnaHQgPSBfYS5oZWlnaHQ7XG5cbiAgICAgIHZhciBjdXJIZWlnaHQgPSAwLFxuICAgICAgICAgIHggPSAwLFxuICAgICAgICAgIHkgPSAwO1xuXG4gICAgICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgIHggPSBiZWdpblsxXTtcbiAgICAgICAgeSA9IGJlZ2luWzBdICsga2V5U2hhcGVXaWR0aCAvIDI7XG4gICAgICAgIGJlZ2luWzBdID0geSArIGJib3guaGVpZ2h0ICsgdmVydGlTZXA7XG4gICAgICAgIGN1ckhlaWdodCA9IGJib3gubWF4WCArIHggKyBrZXlTaGFwZVdpZHRoIC8gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHggPSBiZWdpblswXSArIGtleVNoYXBlV2lkdGggLyAyO1xuICAgICAgICB5ID0gYmVnaW5bMV07XG4gICAgICAgIGJlZ2luWzBdID0geCArIGJib3gud2lkdGggKyBob3JpU2VwO1xuICAgICAgICBjdXJIZWlnaHQgPSBiYm94Lm1heFkgKyB5ICsga2V5U2hhcGVIZWlnaHQgLyAyO1xuICAgICAgfVxuXG4gICAgICBpZiAoYmVnaW5bMF0gPiBub2RlTGVnZW5kU2l6ZS5tYXgpIG5vZGVMZWdlbmRTaXplLm1heCA9IGJlZ2luWzBdO1xuICAgICAgaWYgKGN1ckhlaWdodCA+IHJvd01heFkpIHJvd01heFkgPSBjdXJIZWlnaHQ7XG4gICAgICBjTm9kZUdyb3VwLnNldE1hdHJpeChbMSwgMCwgMCwgMCwgMSwgMCwgeCwgeSwgMV0pO1xuICAgIH0pO1xuICAgIHZhciBudyA9IG5vZGVMZWdlbmRTaXplLm1heCAtIG5vZGVMZWdlbmRTaXplLm1pbjtcbiAgICB2YXIgZWRnZUxlZ2VuZFNpemUgPSB7XG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IC1JbmZpbml0eVxuICAgIH07XG4gICAgdmFyIG5vZGVHcm91cEJCb3ggPSBub2RlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIGJlZ2luWzBdID0gMDtcbiAgICBiZWdpblsxXSA9IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyA/IG5vZGVHcm91cEJCb3gubWF4WCArIGhvcmlTZXAgOiBub2RlR3JvdXBCQm94Lm1heFkgKyB2ZXJ0aVNlcDtcbiAgICBlZGdlR3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZvckVhY2goZnVuY3Rpb24gKHN1Ykdyb3VwLCBpKSB7XG4gICAgICBpZiAoaSA9PT0gMCkgZWRnZUxlZ2VuZFNpemUubWluID0gYmVnaW5bMF07XG4gICAgICB2YXIga2V5U2hhcGUgPSBzdWJHcm91cC5nZXQoJ2NoaWxkcmVuJylbMF07XG4gICAgICB2YXIgYmJveCA9IHN1Ykdyb3VwLmdldENhbnZhc0JCb3goKTtcblxuICAgICAgdmFyIF9hID0ga2V5U2hhcGUuZ2V0QkJveCgpLFxuICAgICAgICAgIGtleVNoYXBlV2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgICBrZXlTaGFwZUhlaWdodCA9IF9hLmhlaWdodDtcblxuICAgICAgdmFyIHggPSAwLFxuICAgICAgICAgIHkgPSAwO1xuXG4gICAgICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgIHggPSBiZWdpblsxXTtcbiAgICAgICAgeSA9IGJlZ2luWzBdO1xuICAgICAgICBiZWdpblswXSA9IHkgKyBiYm94LmhlaWdodCArIHZlcnRpU2VwO1xuICAgICAgICBzdWJHcm91cC5zZXRNYXRyaXgoWzEsIDAsIDAsIDAsIDEsIDAsIDAsIHkgKyBrZXlTaGFwZUhlaWdodCAvIDIsIDFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHggPSBiZWdpblswXTtcbiAgICAgICAgeSA9IGJlZ2luWzFdO1xuICAgICAgICBiZWdpblswXSA9IHggKyBiYm94LndpZHRoICsgaG9yaVNlcDtcbiAgICAgICAgc3ViR3JvdXAuc2V0TWF0cml4KFsxLCAwLCAwLCAwLCAxLCAwLCB4ICsga2V5U2hhcGVXaWR0aCAvIDIsIDAsIDFdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJlZ2luWzBdID4gZWRnZUxlZ2VuZFNpemUubWF4KSBlZGdlTGVnZW5kU2l6ZS5tYXggPSBiZWdpblswXTtcbiAgICB9KTtcbiAgICB2YXIgZXcgPSBlZGdlTGVnZW5kU2l6ZS5tYXggLSBlZGdlTGVnZW5kU2l6ZS5taW47XG5cbiAgICBpZiAoYWxpZ24gJiYgYWxpZ24gIT09ICcnICYmIGFsaWduICE9PSAnbGVmdCcpIHtcbiAgICAgIHZhciB3aWR0aERpZmYgPSBudyAtIGV3O1xuICAgICAgdmFyIG1vdmVtZW50XzEgPSBhbGlnbiA9PT0gJ2NlbnRlcicgPyBNYXRoLmFicyh3aWR0aERpZmYpIC8gMiA6IE1hdGguYWJzKHdpZHRoRGlmZik7XG4gICAgICB2YXIgc2hvdWxkQWRqdXN0R3JvdXAgPSB3aWR0aERpZmYgPCAwID8gbm9kZUdyb3VwIDogZWRnZUdyb3VwO1xuICAgICAgc2hvdWxkQWRqdXN0R3JvdXAuZ2V0KCdjaGlsZHJlbicpLmZvckVhY2goZnVuY3Rpb24gKHN1Ykdyb3VwKSB7XG4gICAgICAgIHZhciBtYXRyaXggPSBzdWJHcm91cC5nZXRNYXRyaXgoKSB8fCBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIG1hdHJpeFs3XSArPSBtb3ZlbWVudF8xO2Vsc2UgbWF0cml4WzZdICs9IG1vdmVtZW50XzE7XG4gICAgICAgIHN1Ykdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUucHJvY2Vzc0RhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLmdldCgnZGF0YScpO1xuICAgIHZhciBpdGVtc0RhdGEgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEubm9kZXMpIHtcbiAgICAgIGRhdGEubm9kZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcbiAgICAgIGRhdGEubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuXG4gICAgICAgIHZhciBzaXplID0gbm9kZS5zaXplIHx8IFsoKF9hID0gbm9kZS5zdHlsZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLndpZHRoKSB8fCAoKF9iID0gbm9kZS5zdHlsZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnIpIHx8IDgsICgoX2MgPSBub2RlLnN0eWxlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuaGVpZ2h0KSB8fCAoKF9kID0gbm9kZS5zdHlsZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLnIpIHx8IDhdO1xuICAgICAgICB2YXIgbGFiZWxTdHlsZSA9ICgoX2UgPSBub2RlLmxhYmVsQ2ZnKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uuc3R5bGUpIHx8IHt9O1xuICAgICAgICBpdGVtc0RhdGEubm9kZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IG5vZGUuaWQgfHwgdW5pcXVlSWQoKSxcbiAgICAgICAgICB0eXBlOiBub2RlLnR5cGUgfHwgJ2NpcmNsZScsXG4gICAgICAgICAgc3R5bGU6IF9fYXNzaWduKHt9LCBub2RlLnN0eWxlKSxcbiAgICAgICAgICBvcmRlcjogbm9kZS5vcmRlcixcbiAgICAgICAgICBsYWJlbDogbm9kZS5sYWJlbCxcbiAgICAgICAgICBpdGVtVHlwZTogJ25vZGUnLFxuICAgICAgICAgIHNpemU6IHNpemUsXG4gICAgICAgICAgbGFiZWxDZmc6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgICAgICAgc3R5bGU6IF9fYXNzaWduKHtcbiAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJBcmlhbFwiXG4gICAgICAgICAgICB9LCBsYWJlbFN0eWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5lZGdlcykge1xuICAgICAgZGF0YS5lZGdlcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICAgIH0pO1xuICAgICAgZGF0YS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG5cbiAgICAgICAgdmFyIHR5cGUgPSBlZGdlLnR5cGUgfHwgJ2xpbmUnO1xuICAgICAgICBpZiAoZWRnZS50eXBlID09PSAnY3ViaWMtaG9yaXpvbnRhbCcpIHR5cGUgPSAnY3ViaWMnO1xuICAgICAgICB2YXIgbGFiZWxTdHlsZSA9ICgoX2EgPSBlZGdlLmxhYmVsQ2ZnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3R5bGUpIHx8IHt9O1xuICAgICAgICB2YXIgc2l6ZSA9IGVkZ2Uuc2l6ZSB8fCBbKChfYiA9IGVkZ2Uuc3R5bGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi53aWR0aCkgfHwgOCwgMV07XG4gICAgICAgIGl0ZW1zRGF0YS5lZGdlcy5wdXNoKHtcbiAgICAgICAgICBpZDogZWRnZS5pZCB8fCB1bmlxdWVJZCgpLFxuICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgc2l6ZTogc2l6ZSxcbiAgICAgICAgICBzdHlsZTogX19hc3NpZ24oe1xuICAgICAgICAgICAgbGluZVdpZHRoOiBpc0FycmF5KHNpemUpID8gc2l6ZVsxXSA6IDFcbiAgICAgICAgICB9LCBlZGdlLnN0eWxlKSxcbiAgICAgICAgICBvcmRlcjogZWRnZS5vcmRlcixcbiAgICAgICAgICBsYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBpdGVtVHlwZTogJ2VkZ2UnLFxuICAgICAgICAgIGxhYmVsQ2ZnOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgICAgICAgIHN0eWxlOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiQXJpYWxcIlxuICAgICAgICAgICAgfSwgbGFiZWxTdHlsZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXQoJ2l0ZW1zRGF0YScsIGl0ZW1zRGF0YSk7XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5nZXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmZvcm1hdEFycmF5ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0KGtleSk7XG4gICAgaWYgKGlzTnVtYmVyKHZhbHVlKSkgdGhpcy5zZXQoa2V5LCBbdmFsdWUsIHZhbHVlLCB2YWx1ZSwgdmFsdWVdKTtlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgc3dpdGNoICh2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHRoaXMuc2V0KGtleSwgWzAsIDAsIDAsIDBdKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhpcy5zZXQoa2V5LCBbdmFsdWVbMF0sIHZhbHVlWzBdLCB2YWx1ZVswXSwgdmFsdWVbMF1dKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhpcy5zZXQoa2V5LCBbdmFsdWVbMF0sIHZhbHVlWzFdLCB2YWx1ZVswXSwgdmFsdWVbMV1dKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgdGhpcy5zZXQoa2V5LCBbdmFsdWVbMF0sIHZhbHVlWzFdLCB2YWx1ZVsyXSwgdmFsdWVbMV1dKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXQoa2V5KTtcbiAgfTtcblxuICBMZWdlbmQucHJvdG90eXBlLmdldFNoYXBlU2l6ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHdpZHRoLCBoZWlnaHQsIHI7XG5cbiAgICBpZiAoZGF0YS5zaXplKSB7XG4gICAgICBpZiAoaXNBcnJheShkYXRhLnNpemUpKSB7XG4gICAgICAgIHdpZHRoID0gZGF0YS5zaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBkYXRhLnNpemVbMV0gfHwgZGF0YS5zaXplWzBdO1xuICAgICAgICByID0gZGF0YS5zaXplWzBdIC8gMjtcbiAgICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoZGF0YS5zaXplKSkge1xuICAgICAgICB3aWR0aCA9IGRhdGEuc2l6ZTtcbiAgICAgICAgaGVpZ2h0ID0gZGF0YS5zaXplO1xuICAgICAgICByID0gZGF0YS5zaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5zdHlsZSkge1xuICAgICAgaWYgKGRhdGEuc3R5bGUud2lkdGgpIHdpZHRoID0gZGF0YS5zdHlsZS53aWR0aDtcbiAgICAgIGlmIChkYXRhLnN0eWxlLmhlaWdodCkgaGVpZ2h0ID0gZGF0YS5zdHlsZS5oZWlnaHQ7XG4gICAgICBpZiAoZGF0YS5zdHlsZS5yKSByID0gZGF0YS5zdHlsZS5yO1xuICAgIH1cblxuICAgIGlmICghcikgciA9IDU7XG4gICAgaWYgKCF3aWR0aCkgd2lkdGggPSByO1xuICAgIGlmICghaGVpZ2h0KSBoZWlnaHQgPSByO1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHI6IHJcbiAgICB9O1xuICB9O1xuXG4gIExlZ2VuZC5wcm90b3R5cGUuZ2V0U3R5bGUgPSBmdW5jdGlvbiAodHlwZSwgZGF0YSkge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0eXBlID09PSAnbm9kZScgPyB7XG4gICAgICBmaWxsOiAnI2NjYycsXG4gICAgICBsaW5lV2lkdGg6IDBcbiAgICB9IDoge1xuICAgICAgc3Ryb2tlOiAnIzAwMCcsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdFN0eWxlKSwgZGF0YS5zdHlsZSB8fCB7fSk7XG4gIH07XG5cbiAgTGVnZW5kLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBncmFwaENvbnRhaW5lciA9IGdyYXBoLmdldCgnY29udGFpbmVyJyk7XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgICBncmFwaENvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIpO1xuICB9O1xuXG4gIHJldHVybiBMZWdlbmQ7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBMZWdlbmQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/legend/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/menu/index.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/menu/index.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! insert-css */ \"./node_modules/_insert-css@2.0.0@insert-css/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(insert_css__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\ntypeof document !== 'undefined' && insert_css__WEBPACK_IMPORTED_MODULE_2___default()(\"\\n .g6-component-contextmenu {\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n background-color: rgba(255, 255, 255, 0.9);\\n padding: 10px 8px;\\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\\n }\\n .g6-contextmenu-ul {\\n padding: 0;\\n margin: 0;\\n list-style: none;\\n }\\n\\n\");\n\nvar Menu =\n/** @class */\nfunction (_super) {\n __extends(Menu, _super);\n\n function Menu(config) {\n return _super.call(this, config) || this;\n }\n\n Menu.prototype.getDefaultCfgs = function () {\n return {\n offsetX: 6,\n offsetY: 6,\n handleMenuClick: undefined,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(e) {\n return \"\\n
    \\n
  • \\u83DC\\u5355\\u98791
  • \\n
  • \\u83DC\\u5355\\u98792
  • \\n
\\n \";\n },\n shouldBegin: function shouldBegin(e) {\n return true;\n },\n // 菜单隐藏事件\n onHide: function onHide() {\n return true;\n },\n itemTypes: ['node', 'edge', 'combo'],\n trigger: 'contextmenu'\n };\n }; // class-methods-use-this\n\n\n Menu.prototype.getEvents = function () {\n if (this.get('trigger') === 'click') {\n return {\n click: 'onMenuShow'\n };\n }\n\n return {\n contextmenu: 'onMenuShow'\n };\n };\n\n Menu.prototype.init = function () {\n var className = this.get('className');\n var menu = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(menu, {\n top: '0px',\n position: 'absolute',\n visibility: 'hidden'\n });\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.appendChild(menu);\n this.set('menu', menu);\n };\n\n Menu.prototype.onMenuShow = function (e) {\n var self = this;\n e.preventDefault();\n var itemTypes = this.get('itemTypes');\n\n if (!e.item) {\n if (itemTypes.indexOf('canvas') === -1) {\n self.onMenuHide();\n return;\n }\n } else {\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) {\n self.onMenuHide();\n return;\n }\n }\n\n var shouldBegin = this.get('shouldBegin');\n if (!shouldBegin(e)) return;\n var menuDom = this.get('menu');\n var getContent = this.get('getContent');\n var graph = this.get('graph');\n var menu = getContent(e, graph);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(menu)) {\n menuDom.innerHTML = menu;\n } else {\n menuDom.innerHTML = menu.outerHTML;\n } // 清除之前监听的事件\n\n\n this.removeMenuEventListener();\n var handleMenuClick = this.get('handleMenuClick');\n\n if (handleMenuClick) {\n var handleMenuClickWrapper = function handleMenuClickWrapper(evt) {\n handleMenuClick(evt.target, e.item, graph);\n };\n\n this.set('handleMenuClickWrapper', handleMenuClickWrapper);\n menuDom.addEventListener('click', handleMenuClickWrapper);\n }\n\n var width = graph.get('width');\n var height = graph.get('height');\n var bbox = menuDom.getBoundingClientRect();\n var offsetX = this.get('offsetX') || 0;\n var offsetY = this.get('offsetY') || 0;\n var graphTop = graph.getContainer().offsetTop;\n var graphLeft = graph.getContainer().offsetLeft;\n var x = e.canvasX + graphLeft + offsetX;\n var y = e.canvasY + graphTop + offsetY; // when the menu is (part of) out of the canvas\n\n if (x + bbox.width > width) {\n x = e.canvasX - bbox.width - offsetX + graphLeft;\n }\n\n if (y + bbox.height > height) {\n y = e.canvasY - bbox.height - offsetY + graphTop;\n }\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(menuDom, {\n top: y + \"px\",\n left: x + \"px\",\n visibility: 'visible'\n }); // 左键单击会触发 body 上监听的 click 事件,导致菜单展示出来后又立即被隐藏了,需要过滤掉\n\n var triggeredByFirstClick = this.get('trigger') === 'click';\n\n var handler = function handler(evt) {\n if (triggeredByFirstClick) {\n triggeredByFirstClick = false;\n return;\n }\n\n self.onMenuHide();\n }; // 如果在页面中其他任意地方进行click, 隐去菜单\n\n\n document.body.addEventListener('click', handler);\n this.set('handler', handler);\n };\n\n Menu.prototype.removeMenuEventListener = function () {\n var handleMenuClickWrapper = this.get('handleMenuClickWrapper');\n var handler = this.get('handler');\n\n if (handleMenuClickWrapper) {\n var menuDom = this.get('menu');\n menuDom.removeEventListener('click', handleMenuClickWrapper);\n this.set('handleMenuClickWrapper', null);\n }\n\n if (handler) {\n document.body.removeEventListener('click', handler);\n }\n };\n\n Menu.prototype.onMenuHide = function () {\n var menuDom = this.get('menu');\n\n if (menuDom) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(menuDom, {\n visibility: 'hidden'\n });\n } // 隐藏菜单后需要移除事件监听\n\n\n this.removeMenuEventListener();\n };\n\n Menu.prototype.destroy = function () {\n var menu = this.get('menu');\n this.removeMenuEventListener();\n\n if (menu) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(menu);\n }\n };\n\n return Menu;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Menu);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvbWVudS9pbmRleC5qcz85NzUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFcUQ7QUFDaEI7QUFDSDtBQUNSO0FBQzNCLG1DQUFtQyxpREFBUyxpQ0FBaUMsZ0NBQWdDLHlCQUF5QixzQkFBc0IscUJBQXFCLGlEQUFpRCx3QkFBd0Isa0RBQWtELEtBQUssd0JBQXdCLGlCQUFpQixnQkFBZ0IsdUJBQXVCLEtBQUs7O0FBRXRZO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGdFQUFTO0FBQ3hCLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLE1BQU0sZ0VBQVM7QUFDZjtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL21lbnUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG5pbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgaW5zZXJ0Q3NzIGZyb20gJ2luc2VydC1jc3MnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG50eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGluc2VydENzcyhcIlxcbiAgLmc2LWNvbXBvbmVudC1jb250ZXh0bWVudSB7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBjb2xvcjogIzU0NTQ1NDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xcbiAgICBwYWRkaW5nOiAxMHB4IDhweDtcXG4gICAgYm94LXNoYWRvdzogcmdiKDE3NCwgMTc0LCAxNzQpIDBweCAwcHggMTBweDtcXG4gIH1cXG4gIC5nNi1jb250ZXh0bWVudS11bCB7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG4gIH1cXG5cXG5cIik7XG5cbnZhciBNZW51ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKE1lbnUsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gTWVudShjb25maWcpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY29uZmlnKSB8fCB0aGlzO1xuICB9XG5cbiAgTWVudS5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldFg6IDYsXG4gICAgICBvZmZzZXRZOiA2LFxuICAgICAgaGFuZGxlTWVudUNsaWNrOiB1bmRlZmluZWQsXG4gICAgICAvLyDmjIflrproj5zljZXlhoXlrrnvvIxmdW5jdGlvbihlKSB7Li4ufVxuICAgICAgZ2V0Q29udGVudDogZnVuY3Rpb24gZ2V0Q29udGVudChlKSB7XG4gICAgICAgIHJldHVybiBcIlxcbiAgICAgICAgICA8dWwgY2xhc3M9J2c2LWNvbnRleHRtZW51LXVsJz5cXG4gICAgICAgICAgICA8bGk+XFx1ODNEQ1xcdTUzNTVcXHU5ODc5MTwvbGk+XFxuICAgICAgICAgICAgPGxpPlxcdTgzRENcXHU1MzU1XFx1OTg3OTI8L2xpPlxcbiAgICAgICAgICA8L3VsPlxcbiAgICAgICAgXCI7XG4gICAgICB9LFxuICAgICAgc2hvdWxkQmVnaW46IGZ1bmN0aW9uIHNob3VsZEJlZ2luKGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgLy8g6I+c5Y2V6ZqQ6JeP5LqL5Lu2XG4gICAgICBvbkhpZGU6IGZ1bmN0aW9uIG9uSGlkZSgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgICAgaXRlbVR5cGVzOiBbJ25vZGUnLCAnZWRnZScsICdjb21ibyddLFxuICAgICAgdHJpZ2dlcjogJ2NvbnRleHRtZW51J1xuICAgIH07XG4gIH07IC8vIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIE1lbnUucHJvdG90eXBlLmdldEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5nZXQoJ3RyaWdnZXInKSA9PT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xpY2s6ICdvbk1lbnVTaG93J1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGV4dG1lbnU6ICdvbk1lbnVTaG93J1xuICAgIH07XG4gIH07XG5cbiAgTWVudS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5nZXQoJ2NsYXNzTmFtZScpO1xuICAgIHZhciBtZW51ID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cIiArIChjbGFzc05hbWUgfHwgJ2c2LWNvbXBvbmVudC1jb250ZXh0bWVudScpICsgXCI+PC9kaXY+XCIpO1xuICAgIG1vZGlmeUNTUyhtZW51LCB7XG4gICAgICB0b3A6ICcwcHgnLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgIH0pO1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gdGhpcy5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobWVudSk7XG4gICAgdGhpcy5zZXQoJ21lbnUnLCBtZW51KTtcbiAgfTtcblxuICBNZW51LnByb3RvdHlwZS5vbk1lbnVTaG93ID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciBpdGVtVHlwZXMgPSB0aGlzLmdldCgnaXRlbVR5cGVzJyk7XG5cbiAgICBpZiAoIWUuaXRlbSkge1xuICAgICAgaWYgKGl0ZW1UeXBlcy5pbmRleE9mKCdjYW52YXMnKSA9PT0gLTEpIHtcbiAgICAgICAgc2VsZi5vbk1lbnVIaWRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGUuaXRlbSAmJiBlLml0ZW0uZ2V0VHlwZSAmJiBpdGVtVHlwZXMuaW5kZXhPZihlLml0ZW0uZ2V0VHlwZSgpKSA9PT0gLTEpIHtcbiAgICAgICAgc2VsZi5vbk1lbnVIaWRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkQmVnaW4gPSB0aGlzLmdldCgnc2hvdWxkQmVnaW4nKTtcbiAgICBpZiAoIXNob3VsZEJlZ2luKGUpKSByZXR1cm47XG4gICAgdmFyIG1lbnVEb20gPSB0aGlzLmdldCgnbWVudScpO1xuICAgIHZhciBnZXRDb250ZW50ID0gdGhpcy5nZXQoJ2dldENvbnRlbnQnKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgbWVudSA9IGdldENvbnRlbnQoZSwgZ3JhcGgpO1xuXG4gICAgaWYgKGlzU3RyaW5nKG1lbnUpKSB7XG4gICAgICBtZW51RG9tLmlubmVySFRNTCA9IG1lbnU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lbnVEb20uaW5uZXJIVE1MID0gbWVudS5vdXRlckhUTUw7XG4gICAgfSAvLyDmuIXpmaTkuYvliY3nm5HlkKznmoTkuovku7ZcblxuXG4gICAgdGhpcy5yZW1vdmVNZW51RXZlbnRMaXN0ZW5lcigpO1xuICAgIHZhciBoYW5kbGVNZW51Q2xpY2sgPSB0aGlzLmdldCgnaGFuZGxlTWVudUNsaWNrJyk7XG5cbiAgICBpZiAoaGFuZGxlTWVudUNsaWNrKSB7XG4gICAgICB2YXIgaGFuZGxlTWVudUNsaWNrV3JhcHBlciA9IGZ1bmN0aW9uIGhhbmRsZU1lbnVDbGlja1dyYXBwZXIoZXZ0KSB7XG4gICAgICAgIGhhbmRsZU1lbnVDbGljayhldnQudGFyZ2V0LCBlLml0ZW0sIGdyYXBoKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0KCdoYW5kbGVNZW51Q2xpY2tXcmFwcGVyJywgaGFuZGxlTWVudUNsaWNrV3JhcHBlcik7XG4gICAgICBtZW51RG9tLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlTWVudUNsaWNrV3JhcHBlcik7XG4gICAgfVxuXG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBiYm94ID0gbWVudURvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB2YXIgb2Zmc2V0WCA9IHRoaXMuZ2V0KCdvZmZzZXRYJykgfHwgMDtcbiAgICB2YXIgb2Zmc2V0WSA9IHRoaXMuZ2V0KCdvZmZzZXRZJykgfHwgMDtcbiAgICB2YXIgZ3JhcGhUb3AgPSBncmFwaC5nZXRDb250YWluZXIoKS5vZmZzZXRUb3A7XG4gICAgdmFyIGdyYXBoTGVmdCA9IGdyYXBoLmdldENvbnRhaW5lcigpLm9mZnNldExlZnQ7XG4gICAgdmFyIHggPSBlLmNhbnZhc1ggKyBncmFwaExlZnQgKyBvZmZzZXRYO1xuICAgIHZhciB5ID0gZS5jYW52YXNZICsgZ3JhcGhUb3AgKyBvZmZzZXRZOyAvLyB3aGVuIHRoZSBtZW51IGlzIChwYXJ0IG9mKSBvdXQgb2YgdGhlIGNhbnZhc1xuXG4gICAgaWYgKHggKyBiYm94LndpZHRoID4gd2lkdGgpIHtcbiAgICAgIHggPSBlLmNhbnZhc1ggLSBiYm94LndpZHRoIC0gb2Zmc2V0WCArIGdyYXBoTGVmdDtcbiAgICB9XG5cbiAgICBpZiAoeSArIGJib3guaGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICB5ID0gZS5jYW52YXNZIC0gYmJveC5oZWlnaHQgLSBvZmZzZXRZICsgZ3JhcGhUb3A7XG4gICAgfVxuXG4gICAgbW9kaWZ5Q1NTKG1lbnVEb20sIHtcbiAgICAgIHRvcDogeSArIFwicHhcIixcbiAgICAgIGxlZnQ6IHggKyBcInB4XCIsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTsgLy8g5bem6ZSu5Y2V5Ye75Lya6Kem5Y+RIGJvZHkg5LiK55uR5ZCs55qEIGNsaWNrIOS6i+S7tu+8jOWvvOiHtOiPnOWNleWxleekuuWHuuadpeWQjuWPiOeri+WNs+iiq+makOiXj+S6hu+8jOmcgOimgei/h+a7pOaOiVxuXG4gICAgdmFyIHRyaWdnZXJlZEJ5Rmlyc3RDbGljayA9IHRoaXMuZ2V0KCd0cmlnZ2VyJykgPT09ICdjbGljayc7XG5cbiAgICB2YXIgaGFuZGxlciA9IGZ1bmN0aW9uIGhhbmRsZXIoZXZ0KSB7XG4gICAgICBpZiAodHJpZ2dlcmVkQnlGaXJzdENsaWNrKSB7XG4gICAgICAgIHRyaWdnZXJlZEJ5Rmlyc3RDbGljayA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYub25NZW51SGlkZSgpO1xuICAgIH07IC8vIOWmguaenOWcqOmhtemdouS4reWFtuS7luS7u+aEj+WcsOaWuei/m+ihjGNsaWNrLCDpmpDljrvoj5zljZVcblxuXG4gICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIpO1xuICAgIHRoaXMuc2V0KCdoYW5kbGVyJywgaGFuZGxlcik7XG4gIH07XG5cbiAgTWVudS5wcm90b3R5cGUucmVtb3ZlTWVudUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhbmRsZU1lbnVDbGlja1dyYXBwZXIgPSB0aGlzLmdldCgnaGFuZGxlTWVudUNsaWNrV3JhcHBlcicpO1xuICAgIHZhciBoYW5kbGVyID0gdGhpcy5nZXQoJ2hhbmRsZXInKTtcblxuICAgIGlmIChoYW5kbGVNZW51Q2xpY2tXcmFwcGVyKSB7XG4gICAgICB2YXIgbWVudURvbSA9IHRoaXMuZ2V0KCdtZW51Jyk7XG4gICAgICBtZW51RG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlTWVudUNsaWNrV3JhcHBlcik7XG4gICAgICB0aGlzLnNldCgnaGFuZGxlTWVudUNsaWNrV3JhcHBlcicsIG51bGwpO1xuICAgIH1cblxuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgfVxuICB9O1xuXG4gIE1lbnUucHJvdG90eXBlLm9uTWVudUhpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lbnVEb20gPSB0aGlzLmdldCgnbWVudScpO1xuXG4gICAgaWYgKG1lbnVEb20pIHtcbiAgICAgIG1vZGlmeUNTUyhtZW51RG9tLCB7XG4gICAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgICB9KTtcbiAgICB9IC8vIOmakOiXj+iPnOWNleWQjumcgOimgeenu+mZpOS6i+S7tuebkeWQrFxuXG5cbiAgICB0aGlzLnJlbW92ZU1lbnVFdmVudExpc3RlbmVyKCk7XG4gIH07XG5cbiAgTWVudS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudSA9IHRoaXMuZ2V0KCdtZW51Jyk7XG4gICAgdGhpcy5yZW1vdmVNZW51RXZlbnRMaXN0ZW5lcigpO1xuXG4gICAgaWYgKG1lbnUpIHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdncmFwaCcpLmdldCgnY29udGFpbmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChtZW51KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIE1lbnU7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBNZW51OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/menu/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/minimap/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/minimap/index.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js\");\n/* harmony import */ var _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\nvar max = Math.max;\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_4__[\"ext\"].transform;\nvar DEFAULT_MODE = 'default';\nvar KEYSHAPE_MODE = 'keyShape';\nvar DELEGATE_MODE = 'delegate';\nvar SVG = 'svg';\n\nvar MiniMap =\n/** @class */\nfunction (_super) {\n __extends(MiniMap, _super);\n\n function MiniMap(config) {\n var _this = _super.call(this, config) || this;\n /**\n * 主图更新的监听函数,使用 debounce 减少渲染频率\n * e.g. 拖拽节点只会在松手后的 100ms 后执行 updateCanvas\n * e.g. render 时大量 addItem 也只会执行一次 updateCanvas\n */\n\n\n _this.handleUpdateCanvas = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"debounce\"])(function (event) {\n var self = _this;\n if (self.destroyed) return;\n self.updateCanvas();\n }, 100, false);\n return _this;\n }\n\n MiniMap.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-minimap',\n viewportClassName: 'g6-minimap-viewport',\n // Minimap 中默认展示和主图一样的内容,KeyShape 只展示节点和边的 key shape 部分,delegate表示展示自定义的rect,用户可自定义样式\n type: 'default',\n padding: 50,\n size: [200, 120],\n delegateStyle: {\n fill: '#40a9ff',\n stroke: '#096dd9'\n },\n refresh: true\n };\n };\n\n MiniMap.prototype.getEvents = function () {\n return {\n beforepaint: 'updateViewport',\n beforeanimate: 'disableRefresh',\n afteranimate: 'enableRefresh',\n viewportchange: 'disableOneRefresh'\n };\n }; // 若是正在进行动画,不刷新缩略图\n\n\n MiniMap.prototype.disableRefresh = function () {\n this.set('refresh', false);\n };\n\n MiniMap.prototype.enableRefresh = function () {\n this.set('refresh', true);\n this.updateCanvas();\n };\n\n MiniMap.prototype.disableOneRefresh = function () {\n this.set('viewportChange', true);\n };\n\n MiniMap.prototype.initViewport = function () {\n var _this = this;\n\n var cfgs = this._cfgs;\n var size = cfgs.size,\n graph = cfgs.graph;\n if (this.destroyed) return;\n var canvas = this.get('canvas');\n var containerDOM = canvas.get('container');\n var viewport = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(\"\\n \\n \");\n var isFireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; // 计算拖拽水平方向距离\n\n var x = 0; // 计算拖拽垂直方向距离\n\n var y = 0; // 是否在拖拽minimap的视口\n\n var dragging = false; // 缓存viewport当前对于画布的x\n\n var left = 0; // 缓存viewport当前对于画布的y\n\n var top = 0; // 缓存viewport当前宽度\n\n var width = 0; // 缓存viewport当前高度\n\n var height = 0;\n var ratio = 0;\n var zoom = 0;\n viewport.addEventListener('dragstart', function (e) {\n var _a, _b;\n\n if (e.dataTransfer) {\n var img = new Image();\n img.src = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' %3E%3Cpath /%3E%3C/svg%3E\";\n (_b = (_a = e.dataTransfer).setDragImage) === null || _b === void 0 ? void 0 : _b.call(_a, img, 0, 0);\n\n try {\n e.dataTransfer.setData('text/html', 'view-port-minimap');\n } catch (_c) {\n // support IE\n e.dataTransfer.setData('text', 'view-port-minimap');\n }\n }\n\n cfgs.refresh = false;\n\n if (e.target !== viewport) {\n return;\n } // 如果视口已经最大了,不需要拖拽\n\n\n var style = viewport.style;\n left = parseInt(style.left, 10);\n top = parseInt(style.top, 10);\n width = parseInt(style.width, 10);\n height = parseInt(style.height, 10);\n\n if (width > size[0] || height > size[1]) {\n return;\n }\n\n zoom = graph.getZoom();\n ratio = _this.get('ratio');\n dragging = true;\n x = e.clientX;\n y = e.clientY;\n }, false);\n viewport.addEventListener(isFireFox ? 'dragover' : 'drag', function (e) {\n if (!dragging || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(e.clientX) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(e.clientY)) {\n return;\n }\n\n var dx = x - e.clientX;\n var dy = y - e.clientY; // 若视口移动到最左边或最右边了,仅移动到边界\n\n if (left - dx < 0 || left - dx + width >= size[0]) {\n dx = 0;\n } // 若视口移动到最上或最下边了,仅移动到边界\n\n\n if (top - dy < 0 || top - dy + height >= size[1]) {\n dy = 0;\n }\n\n left -= dx;\n top -= dy; // 先移动视口,避免移动到边上以后出现视口闪烁\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"modifyCSS\"])(viewport, {\n left: left + \"px\",\n top: top + \"px\"\n }); // graph 移动需要偏移量 dx/dy * 缩放比例才会得到正确的移动距离\n\n graph.translate(dx * zoom / ratio, dy * zoom / ratio);\n x = e.clientX;\n y = e.clientY;\n }, false);\n viewport.addEventListener('dragend', function () {\n dragging = false;\n cfgs.refresh = true;\n }, false);\n this.set('viewport', viewport);\n containerDOM.appendChild(viewport);\n };\n /**\n * 更新 viewport 视图\n */\n\n\n MiniMap.prototype.updateViewport = function () {\n if (this.destroyed) return;\n var ratio = this.get('ratio');\n var dx = this.get('dx');\n var dy = this.get('dy');\n var totaldx = this.get('totaldx');\n var totaldy = this.get('totaldy');\n var graph = this.get('graph');\n var size = this.get('size');\n var graphWidth = graph.get('width');\n var graphHeight = graph.get('height');\n var topLeft = graph.getPointByCanvas(0, 0);\n var bottomRight = graph.getPointByCanvas(graphWidth, graphHeight);\n var viewport = this.get('viewport');\n\n if (!viewport) {\n this.initViewport();\n } // viewport宽高,左上角点的计算\n\n\n var width = (bottomRight.x - topLeft.x) * ratio;\n var height = (bottomRight.y - topLeft.y) * ratio;\n var left = topLeft.x * ratio + totaldx;\n var top = topLeft.y * ratio + totaldy;\n var right = left + width;\n var bottom = top + height;\n\n if (left < 0) {\n width += left;\n left = 0;\n }\n\n if (right > size[0]) {\n width = width - (right - size[0]);\n }\n\n if (top < 0) {\n height += top;\n top = 0;\n }\n\n if (bottom > size[1]) {\n height = height - (bottom - size[1]);\n } // 缓存目前缩放比,在移动 minimap 视窗时就不用再计算大图的移动量\n\n\n this.set('ratio', ratio);\n var correctLeft = left + \"px\";\n var correctTop = top + \"px\";\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"modifyCSS\"])(viewport, {\n left: correctLeft,\n top: correctTop,\n width: width + \"px\",\n height: height + \"px\"\n });\n };\n /**\n * 将主图上的图形完全复制到小图\n */\n\n\n MiniMap.prototype.updateGraphShapes = function () {\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var graphGroup = graph.get('group');\n if (graphGroup.destroyed) return;\n var clonedGroup = graphGroup.clone();\n clonedGroup.resetMatrix();\n canvas.clear();\n canvas.add(clonedGroup); // 当 renderer 是 svg,由于渲染引擎的 bug,这里需要将 visible 为 false 的元素手动隐藏\n\n var renderer = graph.get('renderer');\n\n if (renderer === SVG) {\n // 递归更新子元素\n this.updateVisible(clonedGroup);\n }\n }; // svg 在 canvas.add(clonedGroup) 之后会出现 visible 为 false 的元素被展示出来,需要递归更新\n\n\n MiniMap.prototype.updateVisible = function (ele) {\n var _this = this;\n\n if (!ele.isGroup() && !ele.get('visible')) {\n ele.hide();\n } else {\n var children = ele.get('children');\n if (!children || !children.length) return;\n children.forEach(function (child) {\n if (!child.get('visible')) child.hide();\n\n _this.updateVisible(child);\n });\n }\n }; // 仅在 minimap 上绘制 keyShape\n // FIXME 如果用户自定义绘制了其他内容,minimap上就无法画出\n\n\n MiniMap.prototype.updateKeyShapes = function () {\n var _this = this;\n\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var group = canvas.get('children')[0] || canvas.addGroup();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getEdges(), function (edge) {\n _this.updateOneEdgeKeyShape(edge, group);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getNodes(), function (node) {\n _this.updateOneNodeKeyShape(node, group);\n });\n var combos = graph.getCombos();\n\n if (combos && combos.length) {\n var comboGroup_1 = group.find(function (e) {\n return e.get('name') === 'comboGroup';\n }) || group.addGroup({\n name: 'comboGroup'\n });\n setTimeout(function () {\n if (_this.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(combos, function (combo) {\n _this.updateOneComboKeyShape(combo, comboGroup_1);\n });\n comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.sort();\n comboGroup_1 === null || comboGroup_1 === void 0 ? void 0 : comboGroup_1.toBack();\n\n _this.updateCanvas();\n }, 250);\n }\n\n this.clearDestroyedShapes();\n };\n /**\n * 增加/更新单个元素的 keyShape\n * @param item ICombo 实例\n */\n\n\n MiniMap.prototype.updateOneComboKeyShape = function (item, comboGroup) {\n if (this.destroyed) return;\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n\n var cKeyShape = item.get('keyShape').clone();\n var keyShapeStyle = cKeyShape.attr();\n var attrs = {\n x: bbox.centerX,\n y: bbox.centerY\n };\n\n if (!mappedItem) {\n mappedItem = cKeyShape;\n comboGroup.add(mappedItem);\n } else {\n attrs = Object.assign(keyShapeStyle, attrs);\n }\n\n var shapeType = mappedItem.get('type');\n\n if (shapeType === 'rect' || shapeType === 'image') {\n attrs.x = bbox.minX;\n attrs.y = bbox.minY;\n }\n\n mappedItem.attr(attrs);\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n var zIndex = item.getModel().depth;\n if (!isNaN(zIndex)) mappedItem.set('zIndex', zIndex);\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * 增加/更新单个元素的 keyShape\n * @param item INode 实例\n */\n\n\n MiniMap.prototype.updateOneNodeKeyShape = function (item, group) {\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n\n var cKeyShape = item.get('keyShape').clone();\n var keyShapeStyle = cKeyShape.attr();\n var attrs = {\n x: bbox.centerX,\n y: bbox.centerY\n };\n\n if (!mappedItem) {\n mappedItem = cKeyShape;\n group.add(mappedItem);\n } else {\n attrs = Object.assign(keyShapeStyle, attrs);\n }\n\n var shapeType = mappedItem.get('type');\n\n if (shapeType === 'rect' || shapeType === 'image') {\n attrs.x = bbox.minX;\n attrs.y = bbox.minY;\n }\n\n mappedItem.attr(attrs);\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n var zIndex = item.getModel().depth;\n if (!isNaN(zIndex)) mappedItem.set('zIndex', zIndex);\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * Minimap 中展示自定义的rect,支持用户自定义样式和节点大小\n */\n\n\n MiniMap.prototype.updateDelegateShapes = function () {\n var _this = this;\n\n var graph = this._cfgs.graph;\n var canvas = this.get('canvas');\n var group = canvas.get('children')[0] || canvas.addGroup(); // 差量更新 minimap 上的节点和边\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getEdges(), function (edge) {\n _this.updateOneEdgeKeyShape(edge, group);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(graph.getNodes(), function (node) {\n _this.updateOneNodeDelegateShape(node, group);\n });\n var combos = graph.getCombos();\n\n if (combos && combos.length) {\n var comboGroup_2 = group.find(function (e) {\n return e.get('name') === 'comboGroup';\n }) || group.addGroup({\n name: 'comboGroup'\n });\n setTimeout(function () {\n if (_this.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(combos, function (combo) {\n _this.updateOneComboKeyShape(combo, comboGroup_2);\n });\n comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.sort();\n comboGroup_2 === null || comboGroup_2 === void 0 ? void 0 : comboGroup_2.toBack();\n\n _this.updateCanvas();\n }, 250);\n }\n\n this.clearDestroyedShapes();\n };\n\n MiniMap.prototype.clearDestroyedShapes = function () {\n var itemMap = this.get('itemMap') || {};\n var keys = Object.keys(itemMap);\n if (!keys || keys.length === 0) return;\n\n for (var i = keys.length - 1; i >= 0; i--) {\n var shape = itemMap[keys[i]];\n var exist = shape.exist;\n shape.exist = false;\n\n if (!exist) {\n shape.remove();\n delete itemMap[keys[i]];\n }\n }\n };\n /**\n * 设置只显示 edge 的 keyShape\n * @param item IEdge 实例\n */\n\n\n MiniMap.prototype.updateOneEdgeKeyShape = function (item, group) {\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n\n if (mappedItem) {\n var path = item.get('keyShape').attr('path');\n mappedItem.attr('path', path);\n } else {\n mappedItem = item.get('keyShape').clone();\n group.add(mappedItem);\n }\n\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n /**\n * Minimap 中展示自定义的 rect,支持用户自定义样式和节点大小\n * 增加/更新单个元素\n * @param item INode 实例\n */\n\n\n MiniMap.prototype.updateOneNodeDelegateShape = function (item, group) {\n var delegateStyle = this.get('delegateStyle');\n var itemMap = this.get('itemMap') || {}; // 差量更新 minimap 上的一个节点,对应主图的 item\n\n var mappedItem = itemMap[item.get('id')];\n var bbox = item.getBBox(); // 计算了节点父组矩阵的 bbox\n\n if (mappedItem) {\n var attrs = {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n };\n mappedItem.attr(attrs);\n } else {\n mappedItem = group.addShape('rect', {\n attrs: __assign({\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n }, delegateStyle),\n name: 'minimap-node-shape'\n });\n }\n\n if (!item.isVisible()) mappedItem.hide();else mappedItem.show();\n mappedItem.exist = true;\n itemMap[item.get('id')] = mappedItem;\n this.set('itemMap', itemMap);\n };\n\n MiniMap.prototype.init = function () {\n this.initContainer();\n this.get('graph').on('afterupdateitem', this.handleUpdateCanvas);\n this.get('graph').on('afteritemstatechange', this.handleUpdateCanvas);\n this.get('graph').on('afteradditem', this.handleUpdateCanvas);\n this.get('graph').on('afterremoveitem', this.handleUpdateCanvas);\n this.get('graph').on('afterrender', this.handleUpdateCanvas);\n this.get('graph').on('afterlayout', this.handleUpdateCanvas);\n };\n /**\n * 初始化 Minimap 的容器\n */\n\n\n MiniMap.prototype.initContainer = function () {\n var self = this;\n var graph = self.get('graph');\n var size = self.get('size');\n var className = self.get('className');\n var parentNode = self.get('container');\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(\"
\");\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n\n if (parentNode) {\n parentNode.appendChild(container);\n } else {\n graph.get('container').appendChild(container);\n }\n\n self.set('container', container);\n var containerDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])('
');\n container.appendChild(containerDOM);\n containerDOM.addEventListener('dragenter', function (e) {\n e.preventDefault();\n });\n containerDOM.addEventListener('dragover', function (e) {\n e.preventDefault();\n });\n var canvas;\n var renderer = graph.get('renderer');\n\n if (renderer === SVG) {\n canvas = new _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"]({\n container: containerDOM,\n width: size[0],\n height: size[1]\n });\n } else {\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__[\"Canvas\"]({\n container: containerDOM,\n width: size[0],\n height: size[1]\n });\n }\n\n self.set('canvas', canvas);\n self.updateCanvas();\n };\n\n MiniMap.prototype.updateCanvas = function () {\n if (this.destroyed) return; // 如果是在动画,则不刷新视图\n\n var isRefresh = this.get('refresh');\n\n if (!isRefresh) {\n return;\n }\n\n var graph = this.get('graph');\n\n if (graph.get('destroyed')) {\n return;\n } // 如果是视口变换,也不刷新视图,但是需要重置视口大小和位置\n\n\n if (this.get('viewportChange')) {\n this.set('viewportChange', false);\n this.updateViewport();\n }\n\n var size = this.get('size'); // 用户定义的 minimap size\n\n var canvas = this.get('canvas'); // minimap 的 canvas\n\n var type = this.get('type'); // minimap 的类型\n\n var padding = this.get('padding'); // 用户额定义的 minimap 的 padding\n\n if (canvas.destroyed) {\n return;\n }\n\n switch (type) {\n case DEFAULT_MODE:\n this.updateGraphShapes();\n break;\n\n case KEYSHAPE_MODE:\n this.updateKeyShapes();\n break;\n\n case DELEGATE_MODE:\n // 得到的节点直接带有 x 和 y,每个节点不存在父 group,即每个节点位置不由父 group 控制\n this.updateDelegateShapes();\n break;\n\n default:\n break;\n }\n\n var group = canvas.get('children')[0];\n if (!group) return;\n group.resetMatrix(); // 该 bbox 是准确的,不计算 matrix 的包围盒\n\n var bbox = group.getCanvasBBox();\n var graphBBox = graph.get('canvas').getCanvasBBox(); // 主图的 bbox\n\n var graphZoom = graph.getZoom() || 1;\n var width = graphBBox.width / graphZoom;\n var height = graphBBox.height / graphZoom;\n\n if (Number.isFinite(bbox.width)) {\n // 刷新后bbox可能会变,需要重置画布矩阵以缩放到合适的大小\n width = max(bbox.width, width);\n height = max(bbox.height, height);\n }\n\n width += 2 * padding;\n height += 2 * padding;\n var ratio = Math.min(size[0] / width, size[1] / height);\n var matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var minX = 0;\n var minY = 0; // 平移到左上角\n\n if (Number.isFinite(bbox.minX)) {\n minX = -bbox.minX;\n }\n\n if (Number.isFinite(bbox.minY)) {\n minY = -bbox.minY;\n } // 缩放到适合视口后, 平移到画布中心\n\n\n var dx = (size[0] - (width - 2 * padding) * ratio) / 2;\n var dy = (size[1] - (height - 2 * padding) * ratio) / 2;\n matrix = transform(matrix, [['t', minX, minY], ['s', ratio, ratio], ['t', dx, dy] // 移动到画布中心\n ]);\n group.setMatrix(matrix); // 更新minimap视口\n\n this.set('ratio', ratio);\n this.set('totaldx', dx + minX * ratio);\n this.set('totaldy', dy + minY * ratio);\n this.set('dx', dx);\n this.set('dy', dy);\n this.updateViewport();\n };\n /**\n * 获取minimap的画布\n * @return {GCanvas} G的canvas实例\n */\n\n\n MiniMap.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n /**\n * 获取minimap的窗口\n * @return {HTMLElement} 窗口的dom实例\n */\n\n\n MiniMap.prototype.getViewport = function () {\n return this.get('viewport');\n };\n /**\n * 获取minimap的容器dom\n * @return {HTMLElement} dom\n */\n\n\n MiniMap.prototype.getContainer = function () {\n return this.get('container');\n };\n\n MiniMap.prototype.destroy = function () {\n this.get('canvas').destroy();\n var container = this.get('container');\n container.parentNode.removeChild(container);\n };\n\n return MiniMap;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MiniMap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvbWluaW1hcC9pbmRleC5qcz9jMGVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRW1EO0FBQ0E7QUFDVTtBQUNQO0FBQ2Q7QUFDYjtBQUMzQjtBQUNBLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0EsK0JBQStCLDJEQUFRO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdFQUFTLCtGQUErRixtQkFBbUIsa0JBQWtCLGtDQUFrQztBQUNsTSw4RUFBOEU7O0FBRTlFLGNBQWM7O0FBRWQsY0FBYzs7QUFFZCx5QkFBeUI7O0FBRXpCLGlCQUFpQjs7QUFFakIsZ0JBQWdCOztBQUVoQixrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVCQUF1Qix3REFBSyxlQUFlLHdEQUFLO0FBQ2hEO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0I7O0FBRWhCLE1BQU0sZ0VBQVM7QUFDZjtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsK0RBQStEOztBQUUvRCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsNENBQTRDOztBQUU1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQVMsaUVBQWlFLDJCQUEyQjs7QUFFekgsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixnRUFBUyw4REFBOEQ7QUFDOUY7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixrREFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLG1CQUFtQixxREFBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCOztBQUUvQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEMsb0NBQW9DOztBQUVwQyxnQ0FBZ0M7O0FBRWhDLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQSx3REFBd0Q7O0FBRXhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsWUFBWTtBQUMxQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsWUFBWTtBQUMxQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvbWluaW1hcC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2V4dGVuZHMgPSB0aGlzICYmIHRoaXMuX19leHRlbmRzIHx8IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbnZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgQ2FudmFzIGFzIEdDYW52YXMgfSBmcm9tICdAYW50di9nLWNhbnZhcyc7XG5pbXBvcnQgeyBDYW52YXMgYXMgR1NWR0NhbnZhcyB9IGZyb20gJ0BhbnR2L2ctc3ZnJztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc05pbCwgZWFjaCwgZGVib3VuY2UgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZURvbSwgbW9kaWZ5Q1NTIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBERUZBVUxUX01PREUgPSAnZGVmYXVsdCc7XG52YXIgS0VZU0hBUEVfTU9ERSA9ICdrZXlTaGFwZSc7XG52YXIgREVMRUdBVEVfTU9ERSA9ICdkZWxlZ2F0ZSc7XG52YXIgU1ZHID0gJ3N2Zyc7XG5cbnZhciBNaW5pTWFwID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKE1pbmlNYXAsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gTWluaU1hcChjb25maWcpIHtcbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjb25maWcpIHx8IHRoaXM7XG4gICAgLyoqXG4gICAgICog5Li75Zu+5pu05paw55qE55uR5ZCs5Ye95pWw77yM5L2/55SoIGRlYm91bmNlIOWHj+Wwkea4suafk+mikeeOh1xuICAgICAqIGUuZy4g5ouW5ou96IqC54K55Y+q5Lya5Zyo5p2+5omL5ZCO55qEIDEwMG1zIOWQjuaJp+ihjCB1cGRhdGVDYW52YXNcbiAgICAgKiBlLmcuIHJlbmRlciDml7blpKfph48gYWRkSXRlbSDkuZ/lj6rkvJrmiafooYzkuIDmrKEgdXBkYXRlQ2FudmFzXG4gICAgICovXG5cblxuICAgIF90aGlzLmhhbmRsZVVwZGF0ZUNhbnZhcyA9IGRlYm91bmNlKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgdmFyIHNlbGYgPSBfdGhpcztcbiAgICAgIGlmIChzZWxmLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgc2VsZi51cGRhdGVDYW52YXMoKTtcbiAgICB9LCAxMDAsIGZhbHNlKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBNaW5pTWFwLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZncyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgY2xhc3NOYW1lOiAnZzYtbWluaW1hcCcsXG4gICAgICB2aWV3cG9ydENsYXNzTmFtZTogJ2c2LW1pbmltYXAtdmlld3BvcnQnLFxuICAgICAgLy8gTWluaW1hcCDkuK3pu5jorqTlsZXnpLrlkozkuLvlm77kuIDmoLfnmoTlhoXlrrnvvIxLZXlTaGFwZSDlj6rlsZXnpLroioLngrnlkozovrnnmoQga2V5IHNoYXBlIOmDqOWIhu+8jGRlbGVnYXRl6KGo56S65bGV56S66Ieq5a6a5LmJ55qEcmVjdO+8jOeUqOaIt+WPr+iHquWumuS5ieagt+W8j1xuICAgICAgdHlwZTogJ2RlZmF1bHQnLFxuICAgICAgcGFkZGluZzogNTAsXG4gICAgICBzaXplOiBbMjAwLCAxMjBdLFxuICAgICAgZGVsZWdhdGVTdHlsZToge1xuICAgICAgICBmaWxsOiAnIzQwYTlmZicsXG4gICAgICAgIHN0cm9rZTogJyMwOTZkZDknXG4gICAgICB9LFxuICAgICAgcmVmcmVzaDogdHJ1ZVxuICAgIH07XG4gIH07XG5cbiAgTWluaU1hcC5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBiZWZvcmVwYWludDogJ3VwZGF0ZVZpZXdwb3J0JyxcbiAgICAgIGJlZm9yZWFuaW1hdGU6ICdkaXNhYmxlUmVmcmVzaCcsXG4gICAgICBhZnRlcmFuaW1hdGU6ICdlbmFibGVSZWZyZXNoJyxcbiAgICAgIHZpZXdwb3J0Y2hhbmdlOiAnZGlzYWJsZU9uZVJlZnJlc2gnXG4gICAgfTtcbiAgfTsgLy8g6Iul5piv5q2j5Zyo6L+b6KGM5Yqo55S777yM5LiN5Yi35paw57yp55Wl5Zu+XG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS5kaXNhYmxlUmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldCgncmVmcmVzaCcsIGZhbHNlKTtcbiAgfTtcblxuICBNaW5pTWFwLnByb3RvdHlwZS5lbmFibGVSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdyZWZyZXNoJywgdHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVDYW52YXMoKTtcbiAgfTtcblxuICBNaW5pTWFwLnByb3RvdHlwZS5kaXNhYmxlT25lUmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldCgndmlld3BvcnRDaGFuZ2UnLCB0cnVlKTtcbiAgfTtcblxuICBNaW5pTWFwLnByb3RvdHlwZS5pbml0Vmlld3BvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjZmdzID0gdGhpcy5fY2ZncztcbiAgICB2YXIgc2l6ZSA9IGNmZ3Muc2l6ZSxcbiAgICAgICAgZ3JhcGggPSBjZmdzLmdyYXBoO1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIGNvbnRhaW5lckRPTSA9IGNhbnZhcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIHZhciB2aWV3cG9ydCA9IGNyZWF0ZURvbShcIlxcbiAgICAgIDxkaXZcXG4gICAgICAgIGNsYXNzPVwiICsgY2Zncy52aWV3cG9ydENsYXNzTmFtZSArIFwiXFxuICAgICAgICBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7XFxuICAgICAgICAgIGxlZnQ6MDtcXG4gICAgICAgICAgdG9wOjA7XFxuICAgICAgICAgIGJveC1zaXppbmc6Ym9yZGVyLWJveDtcXG4gICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICMxOTgwZmYnXFxuICAgICAgICBkcmFnZ2FibGU9dHJ1ZT5cXG4gICAgICA8L2Rpdj5cIik7XG4gICAgdmFyIGlzRmlyZUZveCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdmaXJlZm94JykgPiAtMTsgLy8g6K6h566X5ouW5ou95rC05bmz5pa55ZCR6Led56a7XG5cbiAgICB2YXIgeCA9IDA7IC8vIOiuoeeul+aLluaLveWeguebtOaWueWQkei3neemu1xuXG4gICAgdmFyIHkgPSAwOyAvLyDmmK/lkKblnKjmi5bmi71taW5pbWFw55qE6KeG5Y+jXG5cbiAgICB2YXIgZHJhZ2dpbmcgPSBmYWxzZTsgLy8g57yT5a2Ydmlld3BvcnTlvZPliY3lr7nkuo7nlLvluIPnmoR4XG5cbiAgICB2YXIgbGVmdCA9IDA7IC8vIOe8k+WtmHZpZXdwb3J05b2T5YmN5a+55LqO55S75biD55qEeVxuXG4gICAgdmFyIHRvcCA9IDA7IC8vIOe8k+WtmHZpZXdwb3J05b2T5YmN5a695bqmXG5cbiAgICB2YXIgd2lkdGggPSAwOyAvLyDnvJPlrZh2aWV3cG9ydOW9k+WJjemrmOW6plxuXG4gICAgdmFyIGhlaWdodCA9IDA7XG4gICAgdmFyIHJhdGlvID0gMDtcbiAgICB2YXIgem9vbSA9IDA7XG4gICAgdmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBfYSwgX2I7XG5cbiAgICAgIGlmIChlLmRhdGFUcmFuc2Zlcikge1xuICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5zcmMgPSBcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyAlM0UlM0NwYXRoIC8lM0UlM0Mvc3ZnJTNFXCI7XG4gICAgICAgIChfYiA9IChfYSA9IGUuZGF0YVRyYW5zZmVyKS5zZXREcmFnSW1hZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBpbWcsIDAsIDApO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dC9odG1sJywgJ3ZpZXctcG9ydC1taW5pbWFwJyk7XG4gICAgICAgIH0gY2F0Y2ggKF9jKSB7XG4gICAgICAgICAgLy8gc3VwcG9ydCBJRVxuICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCAndmlldy1wb3J0LW1pbmltYXAnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjZmdzLnJlZnJlc2ggPSBmYWxzZTtcblxuICAgICAgaWYgKGUudGFyZ2V0ICE9PSB2aWV3cG9ydCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIOWmguaenOinhuWPo+W3sue7j+acgOWkp+S6hu+8jOS4jemcgOimgeaLluaLvVxuXG5cbiAgICAgIHZhciBzdHlsZSA9IHZpZXdwb3J0LnN0eWxlO1xuICAgICAgbGVmdCA9IHBhcnNlSW50KHN0eWxlLmxlZnQsIDEwKTtcbiAgICAgIHRvcCA9IHBhcnNlSW50KHN0eWxlLnRvcCwgMTApO1xuICAgICAgd2lkdGggPSBwYXJzZUludChzdHlsZS53aWR0aCwgMTApO1xuICAgICAgaGVpZ2h0ID0gcGFyc2VJbnQoc3R5bGUuaGVpZ2h0LCAxMCk7XG5cbiAgICAgIGlmICh3aWR0aCA+IHNpemVbMF0gfHwgaGVpZ2h0ID4gc2l6ZVsxXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHpvb20gPSBncmFwaC5nZXRab29tKCk7XG4gICAgICByYXRpbyA9IF90aGlzLmdldCgncmF0aW8nKTtcbiAgICAgIGRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIHggPSBlLmNsaWVudFg7XG4gICAgICB5ID0gZS5jbGllbnRZO1xuICAgIH0sIGZhbHNlKTtcbiAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKGlzRmlyZUZveCA/ICdkcmFnb3ZlcicgOiAnZHJhZycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWRyYWdnaW5nIHx8IGlzTmlsKGUuY2xpZW50WCkgfHwgaXNOaWwoZS5jbGllbnRZKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBkeCA9IHggLSBlLmNsaWVudFg7XG4gICAgICB2YXIgZHkgPSB5IC0gZS5jbGllbnRZOyAvLyDoi6Xop4blj6Pnp7vliqjliLDmnIDlt6bovrnmiJbmnIDlj7PovrnkuoYs5LuF56e75Yqo5Yiw6L6555WMXG5cbiAgICAgIGlmIChsZWZ0IC0gZHggPCAwIHx8IGxlZnQgLSBkeCArIHdpZHRoID49IHNpemVbMF0pIHtcbiAgICAgICAgZHggPSAwO1xuICAgICAgfSAvLyDoi6Xop4blj6Pnp7vliqjliLDmnIDkuIrmiJbmnIDkuIvovrnkuobvvIzku4Xnp7vliqjliLDovrnnlYxcblxuXG4gICAgICBpZiAodG9wIC0gZHkgPCAwIHx8IHRvcCAtIGR5ICsgaGVpZ2h0ID49IHNpemVbMV0pIHtcbiAgICAgICAgZHkgPSAwO1xuICAgICAgfVxuXG4gICAgICBsZWZ0IC09IGR4O1xuICAgICAgdG9wIC09IGR5OyAvLyDlhYjnp7vliqjop4blj6PvvIzpgb/lhY3np7vliqjliLDovrnkuIrku6XlkI7lh7rnjrDop4blj6Ppl6rng4FcblxuICAgICAgbW9kaWZ5Q1NTKHZpZXdwb3J0LCB7XG4gICAgICAgIGxlZnQ6IGxlZnQgKyBcInB4XCIsXG4gICAgICAgIHRvcDogdG9wICsgXCJweFwiXG4gICAgICB9KTsgLy8gZ3JhcGgg56e75Yqo6ZyA6KaB5YGP56e76YePIGR4L2R5ICog57yp5pS+5q+U5L6L5omN5Lya5b6X5Yiw5q2j56Gu55qE56e75Yqo6Led56a7XG5cbiAgICAgIGdyYXBoLnRyYW5zbGF0ZShkeCAqIHpvb20gLyByYXRpbywgZHkgKiB6b29tIC8gcmF0aW8pO1xuICAgICAgeCA9IGUuY2xpZW50WDtcbiAgICAgIHkgPSBlLmNsaWVudFk7XG4gICAgfSwgZmFsc2UpO1xuICAgIHZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgY2Zncy5yZWZyZXNoID0gdHJ1ZTtcbiAgICB9LCBmYWxzZSk7XG4gICAgdGhpcy5zZXQoJ3ZpZXdwb3J0Jywgdmlld3BvcnQpO1xuICAgIGNvbnRhaW5lckRPTS5hcHBlbmRDaGlsZCh2aWV3cG9ydCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgdmlld3BvcnQg6KeG5Zu+XG4gICAqL1xuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUudXBkYXRlVmlld3BvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgdmFyIHJhdGlvID0gdGhpcy5nZXQoJ3JhdGlvJyk7XG4gICAgdmFyIGR4ID0gdGhpcy5nZXQoJ2R4Jyk7XG4gICAgdmFyIGR5ID0gdGhpcy5nZXQoJ2R5Jyk7XG4gICAgdmFyIHRvdGFsZHggPSB0aGlzLmdldCgndG90YWxkeCcpO1xuICAgIHZhciB0b3RhbGR5ID0gdGhpcy5nZXQoJ3RvdGFsZHknKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0KCdzaXplJyk7XG4gICAgdmFyIGdyYXBoV2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGdyYXBoSGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICB2YXIgdG9wTGVmdCA9IGdyYXBoLmdldFBvaW50QnlDYW52YXMoMCwgMCk7XG4gICAgdmFyIGJvdHRvbVJpZ2h0ID0gZ3JhcGguZ2V0UG9pbnRCeUNhbnZhcyhncmFwaFdpZHRoLCBncmFwaEhlaWdodCk7XG4gICAgdmFyIHZpZXdwb3J0ID0gdGhpcy5nZXQoJ3ZpZXdwb3J0Jyk7XG5cbiAgICBpZiAoIXZpZXdwb3J0KSB7XG4gICAgICB0aGlzLmluaXRWaWV3cG9ydCgpO1xuICAgIH0gLy8gdmlld3BvcnTlrr3pq5gs5bem5LiK6KeS54K555qE6K6h566XXG5cblxuICAgIHZhciB3aWR0aCA9IChib3R0b21SaWdodC54IC0gdG9wTGVmdC54KSAqIHJhdGlvO1xuICAgIHZhciBoZWlnaHQgPSAoYm90dG9tUmlnaHQueSAtIHRvcExlZnQueSkgKiByYXRpbztcbiAgICB2YXIgbGVmdCA9IHRvcExlZnQueCAqIHJhdGlvICsgdG90YWxkeDtcbiAgICB2YXIgdG9wID0gdG9wTGVmdC55ICogcmF0aW8gKyB0b3RhbGR5O1xuICAgIHZhciByaWdodCA9IGxlZnQgKyB3aWR0aDtcbiAgICB2YXIgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xuXG4gICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICB3aWR0aCArPSBsZWZ0O1xuICAgICAgbGVmdCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0ID4gc2l6ZVswXSkge1xuICAgICAgd2lkdGggPSB3aWR0aCAtIChyaWdodCAtIHNpemVbMF0pO1xuICAgIH1cblxuICAgIGlmICh0b3AgPCAwKSB7XG4gICAgICBoZWlnaHQgKz0gdG9wO1xuICAgICAgdG9wID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tID4gc2l6ZVsxXSkge1xuICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gKGJvdHRvbSAtIHNpemVbMV0pO1xuICAgIH0gLy8g57yT5a2Y55uu5YmN57yp5pS+5q+U77yM5Zyo56e75YqoIG1pbmltYXAg6KeG56qX5pe25bCx5LiN55So5YaN6K6h566X5aSn5Zu+55qE56e75Yqo6YePXG5cblxuICAgIHRoaXMuc2V0KCdyYXRpbycsIHJhdGlvKTtcbiAgICB2YXIgY29ycmVjdExlZnQgPSBsZWZ0ICsgXCJweFwiO1xuICAgIHZhciBjb3JyZWN0VG9wID0gdG9wICsgXCJweFwiO1xuICAgIG1vZGlmeUNTUyh2aWV3cG9ydCwge1xuICAgICAgbGVmdDogY29ycmVjdExlZnQsXG4gICAgICB0b3A6IGNvcnJlY3RUb3AsXG4gICAgICB3aWR0aDogd2lkdGggKyBcInB4XCIsXG4gICAgICBoZWlnaHQ6IGhlaWdodCArIFwicHhcIlxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5bCG5Li75Zu+5LiK55qE5Zu+5b2i5a6M5YWo5aSN5Yi25Yiw5bCP5Zu+XG4gICAqL1xuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUudXBkYXRlR3JhcGhTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5fY2Zncy5ncmFwaDtcbiAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2NhbnZhcycpO1xuICAgIHZhciBncmFwaEdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGlmIChncmFwaEdyb3VwLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciBjbG9uZWRHcm91cCA9IGdyYXBoR3JvdXAuY2xvbmUoKTtcbiAgICBjbG9uZWRHcm91cC5yZXNldE1hdHJpeCgpO1xuICAgIGNhbnZhcy5jbGVhcigpO1xuICAgIGNhbnZhcy5hZGQoY2xvbmVkR3JvdXApOyAvLyDlvZMgcmVuZGVyZXIg5pivIHN2Z++8jOeUseS6jua4suafk+W8leaTjueahCBidWfvvIzov5nph4zpnIDopoHlsIYgdmlzaWJsZSDkuLogZmFsc2Ug55qE5YWD57Sg5omL5Yqo6ZqQ6JePXG5cbiAgICB2YXIgcmVuZGVyZXIgPSBncmFwaC5nZXQoJ3JlbmRlcmVyJyk7XG5cbiAgICBpZiAocmVuZGVyZXIgPT09IFNWRykge1xuICAgICAgLy8g6YCS5b2S5pu05paw5a2Q5YWD57SgXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGUoY2xvbmVkR3JvdXApO1xuICAgIH1cbiAgfTsgLy8gc3ZnIOWcqCBjYW52YXMuYWRkKGNsb25lZEdyb3VwKSDkuYvlkI7kvJrlh7rnjrAgdmlzaWJsZSDkuLogZmFsc2Ug55qE5YWD57Sg6KKr5bGV56S65Ye65p2l77yM6ZyA6KaB6YCS5b2S5pu05pawXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS51cGRhdGVWaXNpYmxlID0gZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIWVsZS5pc0dyb3VwKCkgJiYgIWVsZS5nZXQoJ3Zpc2libGUnKSkge1xuICAgICAgZWxlLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNoaWxkcmVuID0gZWxlLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKCFjaGlsZC5nZXQoJ3Zpc2libGUnKSkgY2hpbGQuaGlkZSgpO1xuXG4gICAgICAgIF90aGlzLnVwZGF0ZVZpc2libGUoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9OyAvLyDku4XlnKggbWluaW1hcCDkuIrnu5jliLYga2V5U2hhcGVcbiAgLy8gRklYTUUg5aaC5p6c55So5oi36Ieq5a6a5LmJ57uY5Yi25LqG5YW25LuW5YaF5a6577yMbWluaW1hcOS4iuWwseaXoOazleeUu+WHulxuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUudXBkYXRlS2V5U2hhcGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLl9jZmdzLmdyYXBoO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIGdyb3VwID0gY2FudmFzLmdldCgnY2hpbGRyZW4nKVswXSB8fCBjYW52YXMuYWRkR3JvdXAoKTtcbiAgICBlYWNoKGdyYXBoLmdldEVkZ2VzKCksIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBfdGhpcy51cGRhdGVPbmVFZGdlS2V5U2hhcGUoZWRnZSwgZ3JvdXApO1xuICAgIH0pO1xuICAgIGVhY2goZ3JhcGguZ2V0Tm9kZXMoKSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIF90aGlzLnVwZGF0ZU9uZU5vZGVLZXlTaGFwZShub2RlLCBncm91cCk7XG4gICAgfSk7XG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmdldENvbWJvcygpO1xuXG4gICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoKSB7XG4gICAgICB2YXIgY29tYm9Hcm91cF8xID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gZS5nZXQoJ25hbWUnKSA9PT0gJ2NvbWJvR3JvdXAnO1xuICAgICAgfSkgfHwgZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgICBuYW1lOiAnY29tYm9Hcm91cCdcbiAgICAgIH0pO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgZWFjaChjb21ib3MsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIF90aGlzLnVwZGF0ZU9uZUNvbWJvS2V5U2hhcGUoY29tYm8sIGNvbWJvR3JvdXBfMSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21ib0dyb3VwXzEgPT09IG51bGwgfHwgY29tYm9Hcm91cF8xID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21ib0dyb3VwXzEuc29ydCgpO1xuICAgICAgICBjb21ib0dyb3VwXzEgPT09IG51bGwgfHwgY29tYm9Hcm91cF8xID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb21ib0dyb3VwXzEudG9CYWNrKCk7XG5cbiAgICAgICAgX3RoaXMudXBkYXRlQ2FudmFzKCk7XG4gICAgICB9LCAyNTApO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXJEZXN0cm95ZWRTaGFwZXMoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWinuWKoC/mm7TmlrDljZXkuKrlhYPntKDnmoQga2V5U2hhcGVcbiAgICogQHBhcmFtIGl0ZW0gSUNvbWJvIOWunuS+i1xuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZU9uZUNvbWJvS2V5U2hhcGUgPSBmdW5jdGlvbiAoaXRlbSwgY29tYm9Hcm91cCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKSB8fCB7fTsgLy8g5beu6YeP5pu05pawIG1pbmltYXAg5LiK55qE5LiA5Liq6IqC54K577yM5a+55bqU5Li75Zu+55qEIGl0ZW1cblxuICAgIHZhciBtYXBwZWRJdGVtID0gaXRlbU1hcFtpdGVtLmdldCgnaWQnKV07XG4gICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTsgLy8g6K6h566X5LqG6IqC54K554i257uE55+p6Zi155qEIGJib3hcblxuICAgIHZhciBjS2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKS5jbG9uZSgpO1xuICAgIHZhciBrZXlTaGFwZVN0eWxlID0gY0tleVNoYXBlLmF0dHIoKTtcbiAgICB2YXIgYXR0cnMgPSB7XG4gICAgICB4OiBiYm94LmNlbnRlclgsXG4gICAgICB5OiBiYm94LmNlbnRlcllcbiAgICB9O1xuXG4gICAgaWYgKCFtYXBwZWRJdGVtKSB7XG4gICAgICBtYXBwZWRJdGVtID0gY0tleVNoYXBlO1xuICAgICAgY29tYm9Hcm91cC5hZGQobWFwcGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF0dHJzID0gT2JqZWN0LmFzc2lnbihrZXlTaGFwZVN0eWxlLCBhdHRycyk7XG4gICAgfVxuXG4gICAgdmFyIHNoYXBlVHlwZSA9IG1hcHBlZEl0ZW0uZ2V0KCd0eXBlJyk7XG5cbiAgICBpZiAoc2hhcGVUeXBlID09PSAncmVjdCcgfHwgc2hhcGVUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICBhdHRycy54ID0gYmJveC5taW5YO1xuICAgICAgYXR0cnMueSA9IGJib3gubWluWTtcbiAgICB9XG5cbiAgICBtYXBwZWRJdGVtLmF0dHIoYXR0cnMpO1xuICAgIGlmICghaXRlbS5pc1Zpc2libGUoKSkgbWFwcGVkSXRlbS5oaWRlKCk7ZWxzZSBtYXBwZWRJdGVtLnNob3coKTtcbiAgICBtYXBwZWRJdGVtLmV4aXN0ID0gdHJ1ZTtcbiAgICB2YXIgekluZGV4ID0gaXRlbS5nZXRNb2RlbCgpLmRlcHRoO1xuICAgIGlmICghaXNOYU4oekluZGV4KSkgbWFwcGVkSXRlbS5zZXQoJ3pJbmRleCcsIHpJbmRleCk7XG4gICAgaXRlbU1hcFtpdGVtLmdldCgnaWQnKV0gPSBtYXBwZWRJdGVtO1xuICAgIHRoaXMuc2V0KCdpdGVtTWFwJywgaXRlbU1hcCk7XG4gIH07XG4gIC8qKlxuICAgKiDlop7liqAv5pu05paw5Y2V5Liq5YWD57Sg55qEIGtleVNoYXBlXG4gICAqIEBwYXJhbSBpdGVtIElOb2RlIOWunuS+i1xuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZU9uZU5vZGVLZXlTaGFwZSA9IGZ1bmN0aW9uIChpdGVtLCBncm91cCkge1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKSB8fCB7fTsgLy8g5beu6YeP5pu05pawIG1pbmltYXAg5LiK55qE5LiA5Liq6IqC54K577yM5a+55bqU5Li75Zu+55qEIGl0ZW1cblxuICAgIHZhciBtYXBwZWRJdGVtID0gaXRlbU1hcFtpdGVtLmdldCgnaWQnKV07XG4gICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTsgLy8g6K6h566X5LqG6IqC54K554i257uE55+p6Zi155qEIGJib3hcblxuICAgIHZhciBjS2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKS5jbG9uZSgpO1xuICAgIHZhciBrZXlTaGFwZVN0eWxlID0gY0tleVNoYXBlLmF0dHIoKTtcbiAgICB2YXIgYXR0cnMgPSB7XG4gICAgICB4OiBiYm94LmNlbnRlclgsXG4gICAgICB5OiBiYm94LmNlbnRlcllcbiAgICB9O1xuXG4gICAgaWYgKCFtYXBwZWRJdGVtKSB7XG4gICAgICBtYXBwZWRJdGVtID0gY0tleVNoYXBlO1xuICAgICAgZ3JvdXAuYWRkKG1hcHBlZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRycyA9IE9iamVjdC5hc3NpZ24oa2V5U2hhcGVTdHlsZSwgYXR0cnMpO1xuICAgIH1cblxuICAgIHZhciBzaGFwZVR5cGUgPSBtYXBwZWRJdGVtLmdldCgndHlwZScpO1xuXG4gICAgaWYgKHNoYXBlVHlwZSA9PT0gJ3JlY3QnIHx8IHNoYXBlVHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgYXR0cnMueCA9IGJib3gubWluWDtcbiAgICAgIGF0dHJzLnkgPSBiYm94Lm1pblk7XG4gICAgfVxuXG4gICAgbWFwcGVkSXRlbS5hdHRyKGF0dHJzKTtcbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIG1hcHBlZEl0ZW0uaGlkZSgpO2Vsc2UgbWFwcGVkSXRlbS5zaG93KCk7XG4gICAgbWFwcGVkSXRlbS5leGlzdCA9IHRydWU7XG4gICAgdmFyIHpJbmRleCA9IGl0ZW0uZ2V0TW9kZWwoKS5kZXB0aDtcbiAgICBpZiAoIWlzTmFOKHpJbmRleCkpIG1hcHBlZEl0ZW0uc2V0KCd6SW5kZXgnLCB6SW5kZXgpO1xuICAgIGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldID0gbWFwcGVkSXRlbTtcbiAgICB0aGlzLnNldCgnaXRlbU1hcCcsIGl0ZW1NYXApO1xuICB9O1xuICAvKipcbiAgICogTWluaW1hcCDkuK3lsZXnpLroh6rlrprkuYnnmoRyZWN077yM5pSv5oyB55So5oi36Ieq5a6a5LmJ5qC35byP5ZKM6IqC54K55aSn5bCPXG4gICAqL1xuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUudXBkYXRlRGVsZWdhdGVTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuX2NmZ3MuZ3JhcGg7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgZ3JvdXAgPSBjYW52YXMuZ2V0KCdjaGlsZHJlbicpWzBdIHx8IGNhbnZhcy5hZGRHcm91cCgpOyAvLyDlt67ph4/mm7TmlrAgbWluaW1hcCDkuIrnmoToioLngrnlkozovrlcblxuICAgIGVhY2goZ3JhcGguZ2V0RWRnZXMoKSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIF90aGlzLnVwZGF0ZU9uZUVkZ2VLZXlTaGFwZShlZGdlLCBncm91cCk7XG4gICAgfSk7XG4gICAgZWFjaChncmFwaC5nZXROb2RlcygpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgX3RoaXMudXBkYXRlT25lTm9kZURlbGVnYXRlU2hhcGUobm9kZSwgZ3JvdXApO1xuICAgIH0pO1xuICAgIHZhciBjb21ib3MgPSBncmFwaC5nZXRDb21ib3MoKTtcblxuICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCkge1xuICAgICAgdmFyIGNvbWJvR3JvdXBfMiA9IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIGUuZ2V0KCduYW1lJykgPT09ICdjb21ib0dyb3VwJztcbiAgICAgIH0pIHx8IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgbmFtZTogJ2NvbWJvR3JvdXAnXG4gICAgICB9KTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoX3RoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIGVhY2goY29tYm9zLCBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICBfdGhpcy51cGRhdGVPbmVDb21ib0tleVNoYXBlKGNvbWJvLCBjb21ib0dyb3VwXzIpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tYm9Hcm91cF8yID09PSBudWxsIHx8IGNvbWJvR3JvdXBfMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tYm9Hcm91cF8yLnNvcnQoKTtcbiAgICAgICAgY29tYm9Hcm91cF8yID09PSBudWxsIHx8IGNvbWJvR3JvdXBfMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tYm9Hcm91cF8yLnRvQmFjaygpO1xuXG4gICAgICAgIF90aGlzLnVwZGF0ZUNhbnZhcygpO1xuICAgICAgfSwgMjUwKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyRGVzdHJveWVkU2hhcGVzKCk7XG4gIH07XG5cbiAgTWluaU1hcC5wcm90b3R5cGUuY2xlYXJEZXN0cm95ZWRTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGl0ZW1NYXAgPSB0aGlzLmdldCgnaXRlbU1hcCcpIHx8IHt9O1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoaXRlbU1hcCk7XG4gICAgaWYgKCFrZXlzIHx8IGtleXMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0ga2V5cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHNoYXBlID0gaXRlbU1hcFtrZXlzW2ldXTtcbiAgICAgIHZhciBleGlzdCA9IHNoYXBlLmV4aXN0O1xuICAgICAgc2hhcGUuZXhpc3QgPSBmYWxzZTtcblxuICAgICAgaWYgKCFleGlzdCkge1xuICAgICAgICBzaGFwZS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGl0ZW1NYXBba2V5c1tpXV07XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6K6+572u5Y+q5pi+56S6IGVkZ2Ug55qEIGtleVNoYXBlXG4gICAqIEBwYXJhbSBpdGVtIElFZGdlIOWunuS+i1xuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZU9uZUVkZ2VLZXlTaGFwZSA9IGZ1bmN0aW9uIChpdGVtLCBncm91cCkge1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKSB8fCB7fTsgLy8g5beu6YeP5pu05pawIG1pbmltYXAg5LiK55qE5LiA5Liq6IqC54K577yM5a+55bqU5Li75Zu+55qEIGl0ZW1cblxuICAgIHZhciBtYXBwZWRJdGVtID0gaXRlbU1hcFtpdGVtLmdldCgnaWQnKV07XG5cbiAgICBpZiAobWFwcGVkSXRlbSkge1xuICAgICAgdmFyIHBhdGggPSBpdGVtLmdldCgna2V5U2hhcGUnKS5hdHRyKCdwYXRoJyk7XG4gICAgICBtYXBwZWRJdGVtLmF0dHIoJ3BhdGgnLCBwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWFwcGVkSXRlbSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpLmNsb25lKCk7XG4gICAgICBncm91cC5hZGQobWFwcGVkSXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKCFpdGVtLmlzVmlzaWJsZSgpKSBtYXBwZWRJdGVtLmhpZGUoKTtlbHNlIG1hcHBlZEl0ZW0uc2hvdygpO1xuICAgIG1hcHBlZEl0ZW0uZXhpc3QgPSB0cnVlO1xuICAgIGl0ZW1NYXBbaXRlbS5nZXQoJ2lkJyldID0gbWFwcGVkSXRlbTtcbiAgICB0aGlzLnNldCgnaXRlbU1hcCcsIGl0ZW1NYXApO1xuICB9O1xuICAvKipcbiAgICogTWluaW1hcCDkuK3lsZXnpLroh6rlrprkuYnnmoQgcmVjdO+8jOaUr+aMgeeUqOaIt+iHquWumuS5ieagt+W8j+WSjOiKgueCueWkp+Wwj1xuICAgKiDlop7liqAv5pu05paw5Y2V5Liq5YWD57SgXG4gICAqIEBwYXJhbSBpdGVtIElOb2RlIOWunuS+i1xuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLnVwZGF0ZU9uZU5vZGVEZWxlZ2F0ZVNoYXBlID0gZnVuY3Rpb24gKGl0ZW0sIGdyb3VwKSB7XG4gICAgdmFyIGRlbGVnYXRlU3R5bGUgPSB0aGlzLmdldCgnZGVsZWdhdGVTdHlsZScpO1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKSB8fCB7fTsgLy8g5beu6YeP5pu05pawIG1pbmltYXAg5LiK55qE5LiA5Liq6IqC54K577yM5a+55bqU5Li75Zu+55qEIGl0ZW1cblxuICAgIHZhciBtYXBwZWRJdGVtID0gaXRlbU1hcFtpdGVtLmdldCgnaWQnKV07XG4gICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTsgLy8g6K6h566X5LqG6IqC54K554i257uE55+p6Zi155qEIGJib3hcblxuICAgIGlmIChtYXBwZWRJdGVtKSB7XG4gICAgICB2YXIgYXR0cnMgPSB7XG4gICAgICAgIHg6IGJib3gubWluWCxcbiAgICAgICAgeTogYmJveC5taW5ZLFxuICAgICAgICB3aWR0aDogYmJveC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodFxuICAgICAgfTtcbiAgICAgIG1hcHBlZEl0ZW0uYXR0cihhdHRycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcHBlZEl0ZW0gPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiBiYm94Lm1pblgsXG4gICAgICAgICAgeTogYmJveC5taW5ZLFxuICAgICAgICAgIHdpZHRoOiBiYm94LndpZHRoLFxuICAgICAgICAgIGhlaWdodDogYmJveC5oZWlnaHRcbiAgICAgICAgfSwgZGVsZWdhdGVTdHlsZSksXG4gICAgICAgIG5hbWU6ICdtaW5pbWFwLW5vZGUtc2hhcGUnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIG1hcHBlZEl0ZW0uaGlkZSgpO2Vsc2UgbWFwcGVkSXRlbS5zaG93KCk7XG4gICAgbWFwcGVkSXRlbS5leGlzdCA9IHRydWU7XG4gICAgaXRlbU1hcFtpdGVtLmdldCgnaWQnKV0gPSBtYXBwZWRJdGVtO1xuICAgIHRoaXMuc2V0KCdpdGVtTWFwJywgaXRlbU1hcCk7XG4gIH07XG5cbiAgTWluaU1hcC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmluaXRDb250YWluZXIoKTtcbiAgICB0aGlzLmdldCgnZ3JhcGgnKS5vbignYWZ0ZXJ1cGRhdGVpdGVtJywgdGhpcy5oYW5kbGVVcGRhdGVDYW52YXMpO1xuICAgIHRoaXMuZ2V0KCdncmFwaCcpLm9uKCdhZnRlcml0ZW1zdGF0ZWNoYW5nZScsIHRoaXMuaGFuZGxlVXBkYXRlQ2FudmFzKTtcbiAgICB0aGlzLmdldCgnZ3JhcGgnKS5vbignYWZ0ZXJhZGRpdGVtJywgdGhpcy5oYW5kbGVVcGRhdGVDYW52YXMpO1xuICAgIHRoaXMuZ2V0KCdncmFwaCcpLm9uKCdhZnRlcnJlbW92ZWl0ZW0nLCB0aGlzLmhhbmRsZVVwZGF0ZUNhbnZhcyk7XG4gICAgdGhpcy5nZXQoJ2dyYXBoJykub24oJ2FmdGVycmVuZGVyJywgdGhpcy5oYW5kbGVVcGRhdGVDYW52YXMpO1xuICAgIHRoaXMuZ2V0KCdncmFwaCcpLm9uKCdhZnRlcmxheW91dCcsIHRoaXMuaGFuZGxlVXBkYXRlQ2FudmFzKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIneWni+WMliBNaW5pbWFwIOeahOWuueWZqFxuICAgKi9cblxuXG4gIE1pbmlNYXAucHJvdG90eXBlLmluaXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBncmFwaCA9IHNlbGYuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBzaXplID0gc2VsZi5nZXQoJ3NpemUnKTtcbiAgICB2YXIgY2xhc3NOYW1lID0gc2VsZi5nZXQoJ2NsYXNzTmFtZScpO1xuICAgIHZhciBwYXJlbnROb2RlID0gc2VsZi5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIHZhciBjb250YWluZXIgPSBjcmVhdGVEb20oXCI8ZGl2IGNsYXNzPSdcIiArIGNsYXNzTmFtZSArIFwiJyBzdHlsZT0nd2lkdGg6IFwiICsgc2l6ZVswXSArIFwicHg7IGhlaWdodDogXCIgKyBzaXplWzFdICsgXCJweDsgb3ZlcmZsb3c6IGhpZGRlbic+PC9kaXY+XCIpO1xuXG4gICAgaWYgKGlzU3RyaW5nKHBhcmVudE5vZGUpKSB7XG4gICAgICBwYXJlbnROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGFyZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JhcGguZ2V0KCdjb250YWluZXInKS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIH1cblxuICAgIHNlbGYuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgIHZhciBjb250YWluZXJET00gPSBjcmVhdGVEb20oJzxkaXYgY2xhc3M9XCJnNi1taW5pbWFwLWNvbnRhaW5lclwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPjwvZGl2PicpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250YWluZXJET00pO1xuICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcztcbiAgICB2YXIgcmVuZGVyZXIgPSBncmFwaC5nZXQoJ3JlbmRlcmVyJyk7XG5cbiAgICBpZiAocmVuZGVyZXIgPT09IFNWRykge1xuICAgICAgY2FudmFzID0gbmV3IEdTVkdDYW52YXMoe1xuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lckRPTSxcbiAgICAgICAgd2lkdGg6IHNpemVbMF0sXG4gICAgICAgIGhlaWdodDogc2l6ZVsxXVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBHQ2FudmFzKHtcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXJET00sXG4gICAgICAgIHdpZHRoOiBzaXplWzBdLFxuICAgICAgICBoZWlnaHQ6IHNpemVbMV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGYuc2V0KCdjYW52YXMnLCBjYW52YXMpO1xuICAgIHNlbGYudXBkYXRlQ2FudmFzKCk7XG4gIH07XG5cbiAgTWluaU1hcC5wcm90b3R5cGUudXBkYXRlQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuOyAvLyDlpoLmnpzmmK/lnKjliqjnlLvvvIzliJnkuI3liLfmlrDop4blm75cblxuICAgIHZhciBpc1JlZnJlc2ggPSB0aGlzLmdldCgncmVmcmVzaCcpO1xuXG4gICAgaWYgKCFpc1JlZnJlc2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcblxuICAgIGlmIChncmFwaC5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDlpoLmnpzmmK/op4blj6Plj5jmjaLvvIzkuZ/kuI3liLfmlrDop4blm77vvIzkvYbmmK/pnIDopoHph43nva7op4blj6PlpKflsI/lkozkvY3nva5cblxuXG4gICAgaWYgKHRoaXMuZ2V0KCd2aWV3cG9ydENoYW5nZScpKSB7XG4gICAgICB0aGlzLnNldCgndmlld3BvcnRDaGFuZ2UnLCBmYWxzZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0KCk7XG4gICAgfVxuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldCgnc2l6ZScpOyAvLyDnlKjmiLflrprkuYnnmoQgbWluaW1hcCBzaXplXG5cbiAgICB2YXIgY2FudmFzID0gdGhpcy5nZXQoJ2NhbnZhcycpOyAvLyBtaW5pbWFwIOeahCBjYW52YXNcblxuICAgIHZhciB0eXBlID0gdGhpcy5nZXQoJ3R5cGUnKTsgLy8gbWluaW1hcCDnmoTnsbvlnotcblxuICAgIHZhciBwYWRkaW5nID0gdGhpcy5nZXQoJ3BhZGRpbmcnKTsgLy8g55So5oi36aKd5a6a5LmJ55qEIG1pbmltYXAg55qEIHBhZGRpbmdcblxuICAgIGlmIChjYW52YXMuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIERFRkFVTFRfTU9ERTpcbiAgICAgICAgdGhpcy51cGRhdGVHcmFwaFNoYXBlcygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLRVlTSEFQRV9NT0RFOlxuICAgICAgICB0aGlzLnVwZGF0ZUtleVNoYXBlcygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBERUxFR0FURV9NT0RFOlxuICAgICAgICAvLyDlvpfliLDnmoToioLngrnnm7TmjqXluKbmnIkgeCDlkowgee+8jOavj+S4quiKgueCueS4jeWtmOWcqOeItiBncm91cO+8jOWNs+avj+S4quiKgueCueS9jee9ruS4jeeUseeItiBncm91cCDmjqfliLZcbiAgICAgICAgdGhpcy51cGRhdGVEZWxlZ2F0ZVNoYXBlcygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGdyb3VwID0gY2FudmFzLmdldCgnY2hpbGRyZW4nKVswXTtcbiAgICBpZiAoIWdyb3VwKSByZXR1cm47XG4gICAgZ3JvdXAucmVzZXRNYXRyaXgoKTsgLy8g6K+lIGJib3gg5piv5YeG56Gu55qE77yM5LiN6K6h566XIG1hdHJpeCDnmoTljIXlm7Tnm5JcblxuICAgIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBncmFwaEJCb3ggPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTsgLy8g5Li75Zu+55qEIGJib3hcblxuICAgIHZhciBncmFwaFpvb20gPSBncmFwaC5nZXRab29tKCkgfHwgMTtcbiAgICB2YXIgd2lkdGggPSBncmFwaEJCb3gud2lkdGggLyBncmFwaFpvb207XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoQkJveC5oZWlnaHQgLyBncmFwaFpvb207XG5cbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGJib3gud2lkdGgpKSB7XG4gICAgICAvLyDliLfmlrDlkI5iYm945Y+v6IO95Lya5Y+Y77yM6ZyA6KaB6YeN572u55S75biD55+p6Zi15Lul57yp5pS+5Yiw5ZCI6YCC55qE5aSn5bCPXG4gICAgICB3aWR0aCA9IG1heChiYm94LndpZHRoLCB3aWR0aCk7XG4gICAgICBoZWlnaHQgPSBtYXgoYmJveC5oZWlnaHQsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgd2lkdGggKz0gMiAqIHBhZGRpbmc7XG4gICAgaGVpZ2h0ICs9IDIgKiBwYWRkaW5nO1xuICAgIHZhciByYXRpbyA9IE1hdGgubWluKHNpemVbMF0gLyB3aWR0aCwgc2l6ZVsxXSAvIGhlaWdodCk7XG4gICAgdmFyIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB2YXIgbWluWCA9IDA7XG4gICAgdmFyIG1pblkgPSAwOyAvLyDlubPnp7vliLDlt6bkuIrop5JcblxuICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoYmJveC5taW5YKSkge1xuICAgICAgbWluWCA9IC1iYm94Lm1pblg7XG4gICAgfVxuXG4gICAgaWYgKE51bWJlci5pc0Zpbml0ZShiYm94Lm1pblkpKSB7XG4gICAgICBtaW5ZID0gLWJib3gubWluWTtcbiAgICB9IC8vIOe8qeaUvuWIsOmAguWQiOinhuWPo+WQjiwg5bmz56e75Yiw55S75biD5Lit5b+DXG5cblxuICAgIHZhciBkeCA9IChzaXplWzBdIC0gKHdpZHRoIC0gMiAqIHBhZGRpbmcpICogcmF0aW8pIC8gMjtcbiAgICB2YXIgZHkgPSAoc2l6ZVsxXSAtIChoZWlnaHQgLSAyICogcGFkZGluZykgKiByYXRpbykgLyAyO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCBtaW5YLCBtaW5ZXSwgWydzJywgcmF0aW8sIHJhdGlvXSwgWyd0JywgZHgsIGR5XSAvLyDnp7vliqjliLDnlLvluIPkuK3lv4NcbiAgICBdKTtcbiAgICBncm91cC5zZXRNYXRyaXgobWF0cml4KTsgLy8g5pu05pawbWluaW1hcOinhuWPo1xuXG4gICAgdGhpcy5zZXQoJ3JhdGlvJywgcmF0aW8pO1xuICAgIHRoaXMuc2V0KCd0b3RhbGR4JywgZHggKyBtaW5YICogcmF0aW8pO1xuICAgIHRoaXMuc2V0KCd0b3RhbGR5JywgZHkgKyBtaW5ZICogcmF0aW8pO1xuICAgIHRoaXMuc2V0KCdkeCcsIGR4KTtcbiAgICB0aGlzLnNldCgnZHknLCBkeSk7XG4gICAgdGhpcy51cGRhdGVWaWV3cG9ydCgpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WbWluaW1hcOeahOeUu+W4g1xuICAgKiBAcmV0dXJuIHtHQ2FudmFzfSBH55qEY2FudmFz5a6e5L6LXG4gICAqL1xuXG5cbiAgTWluaU1hcC5wcm90b3R5cGUuZ2V0Q2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnY2FudmFzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5ZtaW5pbWFw55qE56qX5Y+jXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSDnqpflj6PnmoRkb23lrp7kvotcbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS5nZXRWaWV3cG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3ZpZXdwb3J0Jyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5ZtaW5pbWFw55qE5a655ZmoZG9tXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSBkb21cbiAgICovXG5cblxuICBNaW5pTWFwLnByb3RvdHlwZS5nZXRDb250YWluZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgfTtcblxuICBNaW5pTWFwLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ2V0KCdjYW52YXMnKS5kZXN0cm95KCk7XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgICBjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIpO1xuICB9O1xuXG4gIHJldHVybiBNaW5pTWFwO1xufShCYXNlKTtcblxuZXhwb3J0IGRlZmF1bHQgTWluaU1hcDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/minimap/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/snapline/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/snapline/index.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\nvar pointLineDistance = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].pointLineDistance; // 对齐线样式\n\nvar alignLineStyle = {\n stroke: '#FA8C16',\n lineWidth: 1\n};\n\nvar SnapLine =\n/** @class */\nfunction (_super) {\n __extends(SnapLine, _super);\n\n function SnapLine(props) {\n return _super.call(this, props) || this;\n }\n\n SnapLine.prototype.getDefaultCfgs = function () {\n return {\n line: alignLineStyle,\n\n /**\n * item align type\n * @type {String|True|False}\n */\n itemAlignType: 'center',\n\n /**\n * tolerance to item force align\n * @type {String|True|False}\n */\n tolerance: 5,\n horizontalLines: {},\n verticalLines: {},\n alignLines: []\n };\n };\n\n SnapLine.prototype.init = function () {}; // class-methods-use-this\n\n\n SnapLine.prototype.getEvents = function () {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd'\n };\n };\n\n SnapLine.prototype.onDragStart = function () {\n this.initBoxLine();\n };\n\n SnapLine.prototype.onDrag = function (e) {\n var item = e.item; // 计算辅助线位置,拖动过程中更新辅助线\n\n var delegateShape = item.get('delegateShape') || item;\n var bbox = delegateShape.getBBox();\n var model = item.getModel();\n var dx = model.x - bbox.x;\n var dy = model.y - bbox.y;\n this.show({\n x: bbox.minX + dx,\n y: bbox.minY + dy\n }, {\n width: bbox.width,\n height: bbox.height\n });\n };\n\n SnapLine.prototype.onDragEnd = function () {\n // 拖动结束时候删除辅助线\n this.destory();\n };\n /**\n * 每次开始拖动之前,计算出所有节点在水平和垂直方向上,左中右三条中线,并缓存起来\n *\n * @param {object} item Node节点\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.initBoxLine = function () {\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines,\n itemAlignType = _a.itemAlignType;\n var graph = this.get('graph');\n var nodes = graph.getNodes();\n nodes.forEach(function (item) {\n var bbox = item.getBBox();\n var nodeId = item.get('id'); // 设置水平方向辅助线\n\n if (itemAlignType === true || itemAlignType === 'horizontal') {\n // tltr: top left top right\n // lcrc: left center right center\n // blbr: bottom left bottom right\n horizontalLines[nodeId + \"tltr\"] = [bbox.minX, bbox.minY, bbox.maxX, bbox.minY, item];\n horizontalLines[nodeId + \"lcrc\"] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item];\n horizontalLines[nodeId + \"blbr\"] = [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY, item];\n } else if (itemAlignType === 'center') {\n horizontalLines[nodeId + \"lcrc\"] = [bbox.minX, bbox.centerY, bbox.maxX, bbox.centerY, item];\n } // 设置垂直方向辅助线\n\n\n if (itemAlignType === true || itemAlignType === 'vertical') {\n // tlbl: top left bottom left\n // tcbc: top center bottom center\n // trbr: top right bottom right\n verticalLines[nodeId + \"tlbl\"] = [bbox.minX, bbox.minY, bbox.minX, bbox.maxY, item];\n verticalLines[nodeId + \"tcbc\"] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item];\n verticalLines[nodeId + \"trbr\"] = [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY, item];\n } else if (itemAlignType === 'center') {\n verticalLines[nodeId + \"tcbc\"] = [bbox.centerX, bbox.minY, bbox.centerX, bbox.maxY, item];\n }\n });\n };\n /**\n * 显示AlignLine\n *\n * @param {object} point 起始点\n * @param {object} bbox BBox\n * @returns\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.show = function (point, bbox) {\n var originPoint = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"])({}, point);\n this.itemAlign(point, bbox, originPoint);\n return point;\n };\n /**\n * 拖动拖出中添加辅助线\n *\n * @param {object} point 起始点\n * @param {object} bbox 代理形状的bbox\n * @param {object} originPoint 原始点,同point\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.itemAlign = function (point, bbox, originPoint) {\n var _this = this;\n\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines,\n tolerance = _a.tolerance;\n var tc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y\n };\n var cc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y + bbox.height / 2\n };\n var bc = {\n x: originPoint.x + bbox.width / 2,\n y: originPoint.y + bbox.height\n };\n var lc = {\n x: originPoint.x,\n y: originPoint.y + bbox.height / 2\n };\n var rc = {\n x: originPoint.x + bbox.width,\n y: originPoint.y + bbox.height / 2\n };\n var horizontalDis = [];\n var verticalDis = [];\n var alignCfg = null;\n this.clearAlignLine();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(horizontalLines, function (line) {\n if (line[4].isVisible) {\n horizontalDis.push(_this.getLineDisObject(line, tc));\n horizontalDis.push(_this.getLineDisObject(line, cc));\n horizontalDis.push(_this.getLineDisObject(line, bc));\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(verticalLines, function (line) {\n if (line[4].isVisible) {\n verticalDis.push(_this.getLineDisObject(line, lc));\n verticalDis.push(_this.getLineDisObject(line, cc));\n verticalDis.push(_this.getLineDisObject(line, rc));\n }\n });\n horizontalDis.sort(function (a, b) {\n return a.dis - b.dis;\n });\n verticalDis.sort(function (a, b) {\n return a.dis - b.dis;\n });\n\n if (horizontalDis.length !== 0 && horizontalDis[0].dis < tolerance) {\n point.y = horizontalDis[0].line[1] - horizontalDis[0].point.y + originPoint.y;\n alignCfg = {\n type: 'item',\n horizontals: [horizontalDis[0]]\n };\n\n for (var i = 1; i < 3; i++) {\n if (horizontalDis[0].dis === horizontalDis[i].dis) {\n alignCfg.horizontals.push(horizontalDis[i]);\n }\n }\n }\n\n if (verticalDis.length !== 0 && verticalDis[0].dis < tolerance) {\n point.x = verticalDis[0].line[0] - verticalDis[0].point.x + originPoint.x;\n\n if (!alignCfg) {\n alignCfg = {\n type: 'item',\n verticals: [verticalDis[0]]\n };\n } else {\n alignCfg.verticals = [verticalDis[0]];\n }\n\n for (var i = 1; i < 3; i++) {\n if (verticalDis[0].dis === verticalDis[i].dis) {\n alignCfg.verticals.push(verticalDis[i]);\n }\n }\n }\n\n if (alignCfg) {\n alignCfg.bbox = bbox;\n this.addAlignLine(alignCfg);\n }\n };\n /**\n * 根据配置项添加辅助线\n *\n * @param {object} cfg\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.addAlignLine = function (cfg) {\n var bbox = cfg.bbox,\n type = cfg.type,\n horizontals = cfg.horizontals,\n verticals = cfg.verticals;\n var _a = this._cfgs,\n lineStyle = _a.line,\n alignLines = _a.alignLines;\n var graph = this.get('graph');\n var group = graph.get('group');\n\n if (type === 'item') {\n if (horizontals) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(horizontals, function (horizontal) {\n var refLine = horizontal.line,\n refPoint = horizontal.point;\n var lineCenterX = (refLine[0] + refLine[2]) / 2;\n var x1;\n var x2;\n\n if (refPoint.x < lineCenterX) {\n x1 = refPoint.x - bbox.width / 2;\n x2 = Math.max(refLine[0], refLine[2]);\n } else {\n x1 = refPoint.x + bbox.width / 2;\n x2 = Math.min(refLine[0], refLine[2]);\n }\n\n var lineAttrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"])({\n x1: x1,\n y1: refLine[1],\n x2: x2,\n y2: refLine[1]\n }, lineStyle);\n var line = group.addShape('line', {\n attrs: lineAttrs,\n capture: false\n });\n alignLines.push(line);\n });\n }\n\n if (verticals) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(verticals, function (vertical) {\n var refLine = vertical.line,\n refPoint = vertical.point;\n var lineCenterY = (refLine[1] + refLine[3]) / 2;\n var y1;\n var y2;\n\n if (refPoint.y < lineCenterY) {\n y1 = refPoint.y - bbox.height / 2;\n y2 = Math.max(refLine[1], refLine[3]);\n } else {\n y1 = refPoint.y + bbox.height / 2;\n y2 = Math.min(refLine[1], refLine[3]);\n }\n\n var lineAtts = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"])({\n x1: refLine[0],\n y1: y1,\n x2: refLine[0],\n y2: y2\n }, lineStyle);\n var line = group.addShape('line', {\n attrs: lineAtts,\n capture: false\n });\n alignLines.push(line);\n });\n }\n }\n };\n /**\n * 获取点到线的距离\n *\n * @param {array} line [x1, y1, x2, y2] 线的四个点\n * @param {object} point 点的x和y坐标点 {x, y}\n * @returns\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.getLineDisObject = function (line, point) {\n return {\n line: line,\n point: point,\n dis: pointLineDistance(line, point)\n };\n };\n\n SnapLine.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 拖动过程中,清楚上次绘制的线\n *\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.clearAlignLine = function () {\n var alignLines = this._cfgs.alignLines;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(alignLines, function (line) {\n line.remove();\n });\n alignLines.length = 0;\n };\n /**\n * 拖动结束时候,情况缓存的节点的辅助线,同时删除绘制的线\n *\n * @memberof AlignLine\n */\n\n\n SnapLine.prototype.destory = function () {\n var _a = this._cfgs,\n horizontalLines = _a.horizontalLines,\n verticalLines = _a.verticalLines;\n var graph = this.get('graph');\n var nodes = graph.getNodes();\n nodes.forEach(function (node) {\n var itemId = node.get('id');\n delete horizontalLines[itemId + \"tltr\"];\n delete horizontalLines[itemId + \"lcrc\"];\n delete horizontalLines[itemId + \"blbr\"];\n delete verticalLines[itemId + \"tlbl\"];\n delete verticalLines[itemId + \"tcbc\"];\n delete verticalLines[itemId + \"trbr\"];\n });\n this.clearAlignLine();\n };\n\n return SnapLine;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SnapLine);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvc25hcGxpbmUvaW5kZXguanM/NTRlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFc0M7QUFDRjtBQUNWO0FBQzNCLHdCQUF3QixrREFBSSxtQkFBbUI7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBLDJDQUEyQzs7O0FBRzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0Esc0JBQXNCLHNEQUFHLEdBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixPQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUEscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLDBCQUEwQixzREFBRztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixzREFBRztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxNQUFNO0FBQ25CLGFBQWEsT0FBTyxpQkFBaUI7QUFDckM7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsdUVBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvc25hcGxpbmUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG5pbXBvcnQgeyBlYWNoLCBtaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xudmFyIHBvaW50TGluZURpc3RhbmNlID0gVXRpbC5wb2ludExpbmVEaXN0YW5jZTsgLy8g5a+56b2Q57q/5qC35byPXG5cbnZhciBhbGlnbkxpbmVTdHlsZSA9IHtcbiAgc3Ryb2tlOiAnI0ZBOEMxNicsXG4gIGxpbmVXaWR0aDogMVxufTtcblxudmFyIFNuYXBMaW5lID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKFNuYXBMaW5lLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIFNuYXBMaW5lKHByb3BzKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICB9XG5cbiAgU25hcExpbmUucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBhbGlnbkxpbmVTdHlsZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBpdGVtIGFsaWduIHR5cGVcbiAgICAgICAqIEB0eXBlIHtTdHJpbmd8VHJ1ZXxGYWxzZX1cbiAgICAgICAqL1xuICAgICAgaXRlbUFsaWduVHlwZTogJ2NlbnRlcicsXG5cbiAgICAgIC8qKlxuICAgICAgICogdG9sZXJhbmNlIHRvIGl0ZW0gZm9yY2UgYWxpZ25cbiAgICAgICAqIEB0eXBlIHtTdHJpbmd8VHJ1ZXxGYWxzZX1cbiAgICAgICAqL1xuICAgICAgdG9sZXJhbmNlOiA1LFxuICAgICAgaG9yaXpvbnRhbExpbmVzOiB7fSxcbiAgICAgIHZlcnRpY2FsTGluZXM6IHt9LFxuICAgICAgYWxpZ25MaW5lczogW11cbiAgICB9O1xuICB9O1xuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge307IC8vIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5nZXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmRyYWdzdGFydCc6ICdvbkRyYWdTdGFydCcsXG4gICAgICAnbm9kZTpkcmFnJzogJ29uRHJhZycsXG4gICAgICAnbm9kZTpkcmFnZW5kJzogJ29uRHJhZ0VuZCdcbiAgICB9O1xuICB9O1xuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5vbkRyYWdTdGFydCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmluaXRCb3hMaW5lKCk7XG4gIH07XG5cbiAgU25hcExpbmUucHJvdG90eXBlLm9uRHJhZyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07IC8vIOiuoeeul+i+heWKqee6v+S9jee9rizmi5bliqjov4fnqIvkuK3mm7TmlrDovoXliqnnur9cblxuICAgIHZhciBkZWxlZ2F0ZVNoYXBlID0gaXRlbS5nZXQoJ2RlbGVnYXRlU2hhcGUnKSB8fCBpdGVtO1xuICAgIHZhciBiYm94ID0gZGVsZWdhdGVTaGFwZS5nZXRCQm94KCk7XG4gICAgdmFyIG1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuICAgIHZhciBkeCA9IG1vZGVsLnggLSBiYm94Lng7XG4gICAgdmFyIGR5ID0gbW9kZWwueSAtIGJib3gueTtcbiAgICB0aGlzLnNob3coe1xuICAgICAgeDogYmJveC5taW5YICsgZHgsXG4gICAgICB5OiBiYm94Lm1pblkgKyBkeVxuICAgIH0sIHtcbiAgICAgIHdpZHRoOiBiYm94LndpZHRoLFxuICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodFxuICAgIH0pO1xuICB9O1xuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5vbkRyYWdFbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g5ouW5Yqo57uT5p2f5pe25YCZ5Yig6Zmk6L6F5Yqp57q/XG4gICAgdGhpcy5kZXN0b3J5KCk7XG4gIH07XG4gIC8qKlxuICAgKiDmr4/mrKHlvIDlp4vmi5bliqjkuYvliY3vvIzorqHnrpflh7rmiYDmnInoioLngrnlnKjmsLTlubPlkozlnoLnm7TmlrnlkJHkuIrvvIzlt6bkuK3lj7PkuInmnaHkuK3nur/vvIzlubbnvJPlrZjotbfmnaVcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGl0ZW0gTm9kZeiKgueCuVxuICAgKiBAbWVtYmVyb2YgQWxpZ25MaW5lXG4gICAqL1xuXG5cbiAgU25hcExpbmUucHJvdG90eXBlLmluaXRCb3hMaW5lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMuX2NmZ3MsXG4gICAgICAgIGhvcml6b250YWxMaW5lcyA9IF9hLmhvcml6b250YWxMaW5lcyxcbiAgICAgICAgdmVydGljYWxMaW5lcyA9IF9hLnZlcnRpY2FsTGluZXMsXG4gICAgICAgIGl0ZW1BbGlnblR5cGUgPSBfYS5pdGVtQWxpZ25UeXBlO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgIHZhciBub2RlSWQgPSBpdGVtLmdldCgnaWQnKTsgLy8g6K6+572u5rC05bmz5pa55ZCR6L6F5Yqp57q/XG5cbiAgICAgIGlmIChpdGVtQWxpZ25UeXBlID09PSB0cnVlIHx8IGl0ZW1BbGlnblR5cGUgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAvLyB0bHRyOiB0b3AgbGVmdCB0b3AgcmlnaHRcbiAgICAgICAgLy8gbGNyYzogbGVmdCBjZW50ZXIgcmlnaHQgY2VudGVyXG4gICAgICAgIC8vIGJsYnI6IGJvdHRvbSBsZWZ0IGJvdHRvbSByaWdodFxuICAgICAgICBob3Jpem9udGFsTGluZXNbbm9kZUlkICsgXCJ0bHRyXCJdID0gW2Jib3gubWluWCwgYmJveC5taW5ZLCBiYm94Lm1heFgsIGJib3gubWluWSwgaXRlbV07XG4gICAgICAgIGhvcml6b250YWxMaW5lc1tub2RlSWQgKyBcImxjcmNcIl0gPSBbYmJveC5taW5YLCBiYm94LmNlbnRlclksIGJib3gubWF4WCwgYmJveC5jZW50ZXJZLCBpdGVtXTtcbiAgICAgICAgaG9yaXpvbnRhbExpbmVzW25vZGVJZCArIFwiYmxiclwiXSA9IFtiYm94Lm1pblgsIGJib3gubWF4WSwgYmJveC5tYXhYLCBiYm94Lm1heFksIGl0ZW1dO1xuICAgICAgfSBlbHNlIGlmIChpdGVtQWxpZ25UeXBlID09PSAnY2VudGVyJykge1xuICAgICAgICBob3Jpem9udGFsTGluZXNbbm9kZUlkICsgXCJsY3JjXCJdID0gW2Jib3gubWluWCwgYmJveC5jZW50ZXJZLCBiYm94Lm1heFgsIGJib3guY2VudGVyWSwgaXRlbV07XG4gICAgICB9IC8vIOiuvue9ruWeguebtOaWueWQkei+heWKqee6v1xuXG5cbiAgICAgIGlmIChpdGVtQWxpZ25UeXBlID09PSB0cnVlIHx8IGl0ZW1BbGlnblR5cGUgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgLy8gdGxibDogdG9wIGxlZnQgYm90dG9tIGxlZnRcbiAgICAgICAgLy8gdGNiYzogdG9wIGNlbnRlciBib3R0b20gY2VudGVyXG4gICAgICAgIC8vIHRyYnI6IHRvcCByaWdodCBib3R0b20gcmlnaHRcbiAgICAgICAgdmVydGljYWxMaW5lc1tub2RlSWQgKyBcInRsYmxcIl0gPSBbYmJveC5taW5YLCBiYm94Lm1pblksIGJib3gubWluWCwgYmJveC5tYXhZLCBpdGVtXTtcbiAgICAgICAgdmVydGljYWxMaW5lc1tub2RlSWQgKyBcInRjYmNcIl0gPSBbYmJveC5jZW50ZXJYLCBiYm94Lm1pblksIGJib3guY2VudGVyWCwgYmJveC5tYXhZLCBpdGVtXTtcbiAgICAgICAgdmVydGljYWxMaW5lc1tub2RlSWQgKyBcInRyYnJcIl0gPSBbYmJveC5tYXhYLCBiYm94Lm1pblksIGJib3gubWF4WCwgYmJveC5tYXhZLCBpdGVtXTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbUFsaWduVHlwZSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgdmVydGljYWxMaW5lc1tub2RlSWQgKyBcInRjYmNcIl0gPSBbYmJveC5jZW50ZXJYLCBiYm94Lm1pblksIGJib3guY2VudGVyWCwgYmJveC5tYXhZLCBpdGVtXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYvuekukFsaWduTGluZVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcG9pbnQg6LW35aeL54K5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiYm94IEJCb3hcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIEFsaWduTGluZVxuICAgKi9cblxuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKHBvaW50LCBiYm94KSB7XG4gICAgdmFyIG9yaWdpblBvaW50ID0gbWl4KHt9LCBwb2ludCk7XG4gICAgdGhpcy5pdGVtQWxpZ24ocG9pbnQsIGJib3gsIG9yaWdpblBvaW50KTtcbiAgICByZXR1cm4gcG9pbnQ7XG4gIH07XG4gIC8qKlxuICAgKiDmi5bliqjmi5blh7rkuK3mt7vliqDovoXliqnnur9cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHBvaW50IOi1t+Wni+eCuVxuICAgKiBAcGFyYW0ge29iamVjdH0gYmJveCDku6PnkIblvaLnirbnmoRiYm94XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcmlnaW5Qb2ludCDljp/lp4vngrnvvIzlkIxwb2ludFxuICAgKiBAbWVtYmVyb2YgQWxpZ25MaW5lXG4gICAqL1xuXG5cbiAgU25hcExpbmUucHJvdG90eXBlLml0ZW1BbGlnbiA9IGZ1bmN0aW9uIChwb2ludCwgYmJveCwgb3JpZ2luUG9pbnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF9hID0gdGhpcy5fY2ZncyxcbiAgICAgICAgaG9yaXpvbnRhbExpbmVzID0gX2EuaG9yaXpvbnRhbExpbmVzLFxuICAgICAgICB2ZXJ0aWNhbExpbmVzID0gX2EudmVydGljYWxMaW5lcyxcbiAgICAgICAgdG9sZXJhbmNlID0gX2EudG9sZXJhbmNlO1xuICAgIHZhciB0YyA9IHtcbiAgICAgIHg6IG9yaWdpblBvaW50LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IG9yaWdpblBvaW50LnlcbiAgICB9O1xuICAgIHZhciBjYyA9IHtcbiAgICAgIHg6IG9yaWdpblBvaW50LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IG9yaWdpblBvaW50LnkgKyBiYm94LmhlaWdodCAvIDJcbiAgICB9O1xuICAgIHZhciBiYyA9IHtcbiAgICAgIHg6IG9yaWdpblBvaW50LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IG9yaWdpblBvaW50LnkgKyBiYm94LmhlaWdodFxuICAgIH07XG4gICAgdmFyIGxjID0ge1xuICAgICAgeDogb3JpZ2luUG9pbnQueCxcbiAgICAgIHk6IG9yaWdpblBvaW50LnkgKyBiYm94LmhlaWdodCAvIDJcbiAgICB9O1xuICAgIHZhciByYyA9IHtcbiAgICAgIHg6IG9yaWdpblBvaW50LnggKyBiYm94LndpZHRoLFxuICAgICAgeTogb3JpZ2luUG9pbnQueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgdmFyIGhvcml6b250YWxEaXMgPSBbXTtcbiAgICB2YXIgdmVydGljYWxEaXMgPSBbXTtcbiAgICB2YXIgYWxpZ25DZmcgPSBudWxsO1xuICAgIHRoaXMuY2xlYXJBbGlnbkxpbmUoKTtcbiAgICBlYWNoKGhvcml6b250YWxMaW5lcywgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChsaW5lWzRdLmlzVmlzaWJsZSkge1xuICAgICAgICBob3Jpem9udGFsRGlzLnB1c2goX3RoaXMuZ2V0TGluZURpc09iamVjdChsaW5lLCB0YykpO1xuICAgICAgICBob3Jpem9udGFsRGlzLnB1c2goX3RoaXMuZ2V0TGluZURpc09iamVjdChsaW5lLCBjYykpO1xuICAgICAgICBob3Jpem9udGFsRGlzLnB1c2goX3RoaXMuZ2V0TGluZURpc09iamVjdChsaW5lLCBiYykpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2godmVydGljYWxMaW5lcywgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChsaW5lWzRdLmlzVmlzaWJsZSkge1xuICAgICAgICB2ZXJ0aWNhbERpcy5wdXNoKF90aGlzLmdldExpbmVEaXNPYmplY3QobGluZSwgbGMpKTtcbiAgICAgICAgdmVydGljYWxEaXMucHVzaChfdGhpcy5nZXRMaW5lRGlzT2JqZWN0KGxpbmUsIGNjKSk7XG4gICAgICAgIHZlcnRpY2FsRGlzLnB1c2goX3RoaXMuZ2V0TGluZURpc09iamVjdChsaW5lLCByYykpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGhvcml6b250YWxEaXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEuZGlzIC0gYi5kaXM7XG4gICAgfSk7XG4gICAgdmVydGljYWxEaXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEuZGlzIC0gYi5kaXM7XG4gICAgfSk7XG5cbiAgICBpZiAoaG9yaXpvbnRhbERpcy5sZW5ndGggIT09IDAgJiYgaG9yaXpvbnRhbERpc1swXS5kaXMgPCB0b2xlcmFuY2UpIHtcbiAgICAgIHBvaW50LnkgPSBob3Jpem9udGFsRGlzWzBdLmxpbmVbMV0gLSBob3Jpem9udGFsRGlzWzBdLnBvaW50LnkgKyBvcmlnaW5Qb2ludC55O1xuICAgICAgYWxpZ25DZmcgPSB7XG4gICAgICAgIHR5cGU6ICdpdGVtJyxcbiAgICAgICAgaG9yaXpvbnRhbHM6IFtob3Jpem9udGFsRGlzWzBdXVxuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgaWYgKGhvcml6b250YWxEaXNbMF0uZGlzID09PSBob3Jpem9udGFsRGlzW2ldLmRpcykge1xuICAgICAgICAgIGFsaWduQ2ZnLmhvcml6b250YWxzLnB1c2goaG9yaXpvbnRhbERpc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVydGljYWxEaXMubGVuZ3RoICE9PSAwICYmIHZlcnRpY2FsRGlzWzBdLmRpcyA8IHRvbGVyYW5jZSkge1xuICAgICAgcG9pbnQueCA9IHZlcnRpY2FsRGlzWzBdLmxpbmVbMF0gLSB2ZXJ0aWNhbERpc1swXS5wb2ludC54ICsgb3JpZ2luUG9pbnQueDtcblxuICAgICAgaWYgKCFhbGlnbkNmZykge1xuICAgICAgICBhbGlnbkNmZyA9IHtcbiAgICAgICAgICB0eXBlOiAnaXRlbScsXG4gICAgICAgICAgdmVydGljYWxzOiBbdmVydGljYWxEaXNbMF1dXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGlnbkNmZy52ZXJ0aWNhbHMgPSBbdmVydGljYWxEaXNbMF1dO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMTsgaSA8IDM7IGkrKykge1xuICAgICAgICBpZiAodmVydGljYWxEaXNbMF0uZGlzID09PSB2ZXJ0aWNhbERpc1tpXS5kaXMpIHtcbiAgICAgICAgICBhbGlnbkNmZy52ZXJ0aWNhbHMucHVzaCh2ZXJ0aWNhbERpc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYWxpZ25DZmcpIHtcbiAgICAgIGFsaWduQ2ZnLmJib3ggPSBiYm94O1xuICAgICAgdGhpcy5hZGRBbGlnbkxpbmUoYWxpZ25DZmcpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrumFjee9rumhuea3u+WKoOi+heWKqee6v1xuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnXG4gICAqIEBtZW1iZXJvZiBBbGlnbkxpbmVcbiAgICovXG5cblxuICBTbmFwTGluZS5wcm90b3R5cGUuYWRkQWxpZ25MaW5lID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBiYm94ID0gY2ZnLmJib3gsXG4gICAgICAgIHR5cGUgPSBjZmcudHlwZSxcbiAgICAgICAgaG9yaXpvbnRhbHMgPSBjZmcuaG9yaXpvbnRhbHMsXG4gICAgICAgIHZlcnRpY2FscyA9IGNmZy52ZXJ0aWNhbHM7XG4gICAgdmFyIF9hID0gdGhpcy5fY2ZncyxcbiAgICAgICAgbGluZVN0eWxlID0gX2EubGluZSxcbiAgICAgICAgYWxpZ25MaW5lcyA9IF9hLmFsaWduTGluZXM7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdpdGVtJykge1xuICAgICAgaWYgKGhvcml6b250YWxzKSB7XG4gICAgICAgIGVhY2goaG9yaXpvbnRhbHMsIGZ1bmN0aW9uIChob3Jpem9udGFsKSB7XG4gICAgICAgICAgdmFyIHJlZkxpbmUgPSBob3Jpem9udGFsLmxpbmUsXG4gICAgICAgICAgICAgIHJlZlBvaW50ID0gaG9yaXpvbnRhbC5wb2ludDtcbiAgICAgICAgICB2YXIgbGluZUNlbnRlclggPSAocmVmTGluZVswXSArIHJlZkxpbmVbMl0pIC8gMjtcbiAgICAgICAgICB2YXIgeDE7XG4gICAgICAgICAgdmFyIHgyO1xuXG4gICAgICAgICAgaWYgKHJlZlBvaW50LnggPCBsaW5lQ2VudGVyWCkge1xuICAgICAgICAgICAgeDEgPSByZWZQb2ludC54IC0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgICAgICB4MiA9IE1hdGgubWF4KHJlZkxpbmVbMF0sIHJlZkxpbmVbMl0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB4MSA9IHJlZlBvaW50LnggKyBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgICAgIHgyID0gTWF0aC5taW4ocmVmTGluZVswXSwgcmVmTGluZVsyXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGxpbmVBdHRycyA9IG1peCh7XG4gICAgICAgICAgICB4MTogeDEsXG4gICAgICAgICAgICB5MTogcmVmTGluZVsxXSxcbiAgICAgICAgICAgIHgyOiB4MixcbiAgICAgICAgICAgIHkyOiByZWZMaW5lWzFdXG4gICAgICAgICAgfSwgbGluZVN0eWxlKTtcbiAgICAgICAgICB2YXIgbGluZSA9IGdyb3VwLmFkZFNoYXBlKCdsaW5lJywge1xuICAgICAgICAgICAgYXR0cnM6IGxpbmVBdHRycyxcbiAgICAgICAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYWxpZ25MaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZlcnRpY2Fscykge1xuICAgICAgICBlYWNoKHZlcnRpY2FscywgZnVuY3Rpb24gKHZlcnRpY2FsKSB7XG4gICAgICAgICAgdmFyIHJlZkxpbmUgPSB2ZXJ0aWNhbC5saW5lLFxuICAgICAgICAgICAgICByZWZQb2ludCA9IHZlcnRpY2FsLnBvaW50O1xuICAgICAgICAgIHZhciBsaW5lQ2VudGVyWSA9IChyZWZMaW5lWzFdICsgcmVmTGluZVszXSkgLyAyO1xuICAgICAgICAgIHZhciB5MTtcbiAgICAgICAgICB2YXIgeTI7XG5cbiAgICAgICAgICBpZiAocmVmUG9pbnQueSA8IGxpbmVDZW50ZXJZKSB7XG4gICAgICAgICAgICB5MSA9IHJlZlBvaW50LnkgLSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgICAgICB5MiA9IE1hdGgubWF4KHJlZkxpbmVbMV0sIHJlZkxpbmVbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB5MSA9IHJlZlBvaW50LnkgKyBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgICAgICB5MiA9IE1hdGgubWluKHJlZkxpbmVbMV0sIHJlZkxpbmVbM10pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBsaW5lQXR0cyA9IG1peCh7XG4gICAgICAgICAgICB4MTogcmVmTGluZVswXSxcbiAgICAgICAgICAgIHkxOiB5MSxcbiAgICAgICAgICAgIHgyOiByZWZMaW5lWzBdLFxuICAgICAgICAgICAgeTI6IHkyXG4gICAgICAgICAgfSwgbGluZVN0eWxlKTtcbiAgICAgICAgICB2YXIgbGluZSA9IGdyb3VwLmFkZFNoYXBlKCdsaW5lJywge1xuICAgICAgICAgICAgYXR0cnM6IGxpbmVBdHRzLFxuICAgICAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhbGlnbkxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlueCueWIsOe6v+eahOi3neemu1xuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5fSBsaW5lIFt4MSwgeTEsIHgyLCB5Ml0g57q/55qE5Zub5Liq54K5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwb2ludCDngrnnmoR45ZKMeeWdkOagh+eCuSB7eCwgeX1cbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIEFsaWduTGluZVxuICAgKi9cblxuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5nZXRMaW5lRGlzT2JqZWN0ID0gZnVuY3Rpb24gKGxpbmUsIHBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IGxpbmUsXG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBkaXM6IHBvaW50TGluZURpc3RhbmNlKGxpbmUsIHBvaW50KVxuICAgIH07XG4gIH07XG5cbiAgU25hcExpbmUucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICB9O1xuICAvKipcbiAgICog5ouW5Yqo6L+H56iL5Lit77yM5riF5qWa5LiK5qyh57uY5Yi255qE57q/XG4gICAqXG4gICAqIEBtZW1iZXJvZiBBbGlnbkxpbmVcbiAgICovXG5cblxuICBTbmFwTGluZS5wcm90b3R5cGUuY2xlYXJBbGlnbkxpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsaWduTGluZXMgPSB0aGlzLl9jZmdzLmFsaWduTGluZXM7XG4gICAgZWFjaChhbGlnbkxpbmVzLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgbGluZS5yZW1vdmUoKTtcbiAgICB9KTtcbiAgICBhbGlnbkxpbmVzLmxlbmd0aCA9IDA7XG4gIH07XG4gIC8qKlxuICAgKiDmi5bliqjnu5PmnZ/ml7blgJnvvIzmg4XlhrXnvJPlrZjnmoToioLngrnnmoTovoXliqnnur/vvIzlkIzml7bliKDpmaTnu5jliLbnmoTnur9cbiAgICpcbiAgICogQG1lbWJlcm9mIEFsaWduTGluZVxuICAgKi9cblxuXG4gIFNuYXBMaW5lLnByb3RvdHlwZS5kZXN0b3J5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMuX2NmZ3MsXG4gICAgICAgIGhvcml6b250YWxMaW5lcyA9IF9hLmhvcml6b250YWxMaW5lcyxcbiAgICAgICAgdmVydGljYWxMaW5lcyA9IF9hLnZlcnRpY2FsTGluZXM7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgaXRlbUlkID0gbm9kZS5nZXQoJ2lkJyk7XG4gICAgICBkZWxldGUgaG9yaXpvbnRhbExpbmVzW2l0ZW1JZCArIFwidGx0clwiXTtcbiAgICAgIGRlbGV0ZSBob3Jpem9udGFsTGluZXNbaXRlbUlkICsgXCJsY3JjXCJdO1xuICAgICAgZGVsZXRlIGhvcml6b250YWxMaW5lc1tpdGVtSWQgKyBcImJsYnJcIl07XG4gICAgICBkZWxldGUgdmVydGljYWxMaW5lc1tpdGVtSWQgKyBcInRsYmxcIl07XG4gICAgICBkZWxldGUgdmVydGljYWxMaW5lc1tpdGVtSWQgKyBcInRjYmNcIl07XG4gICAgICBkZWxldGUgdmVydGljYWxMaW5lc1tpdGVtSWQgKyBcInRyYnJcIl07XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhckFsaWduTGluZSgpO1xuICB9O1xuXG4gIHJldHVybiBTbmFwTGluZTtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IFNuYXBMaW5lOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/snapline/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js ***! \************************************************************************************/ /*! exports provided: TIMELINE_START, TIMELINE_END, VALUE_CHANGE, TIMEBAR_CONFIG_CHANGE, PLAY_PAUSE_BTN, NEXT_STEP_BTN, PRE_STEP_BTN */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMELINE_START\", function() { return TIMELINE_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMELINE_END\", function() { return TIMELINE_END; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VALUE_CHANGE\", function() { return VALUE_CHANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIMEBAR_CONFIG_CHANGE\", function() { return TIMEBAR_CONFIG_CHANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PLAY_PAUSE_BTN\", function() { return PLAY_PAUSE_BTN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NEXT_STEP_BTN\", function() { return NEXT_STEP_BTN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PRE_STEP_BTN\", function() { return PRE_STEP_BTN; });\nvar TIMELINE_START = 'timebarstartplay';\nvar TIMELINE_END = 'timebarendplay';\nvar VALUE_CHANGE = 'valuechange';\nvar TIMEBAR_CONFIG_CHANGE = 'timebarConfigChanged';\nvar PLAY_PAUSE_BTN = 'playPauseBtn';\nvar NEXT_STEP_BTN = 'nextStepBtn';\nvar PRE_STEP_BTN = 'preStepBtn';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci9jb25zdGFudC5qcz9jZDczIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBUSU1FTElORV9TVEFSVCA9ICd0aW1lYmFyc3RhcnRwbGF5JztcbmV4cG9ydCB2YXIgVElNRUxJTkVfRU5EID0gJ3RpbWViYXJlbmRwbGF5JztcbmV4cG9ydCB2YXIgVkFMVUVfQ0hBTkdFID0gJ3ZhbHVlY2hhbmdlJztcbmV4cG9ydCB2YXIgVElNRUJBUl9DT05GSUdfQ0hBTkdFID0gJ3RpbWViYXJDb25maWdDaGFuZ2VkJztcbmV4cG9ydCB2YXIgUExBWV9QQVVTRV9CVE4gPSAncGxheVBhdXNlQnRuJztcbmV4cG9ydCB2YXIgTkVYVF9TVEVQX0JUTiA9ICduZXh0U3RlcEJ0bic7XG5leHBvcnQgdmFyIFBSRV9TVEVQX0JUTiA9ICdwcmVTdGVwQnRuJzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/controllerBtn.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/controllerBtn.js ***! \*****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _timeButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeButton */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeButton.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"ext\"].transform;\nvar DEFAULT_RECT_FILL = '#aaa';\nvar DEFAULT_RECT_STROKE = 'green';\nvar DEFAULT_PLAYBTN_STYLE = {\n fill: '#aaa',\n fillOpacity: 0.35,\n stroke: '#aaa'\n};\nvar DEFAULT_PREBTN_STYLE = {\n fill: '#fff'\n};\nvar DEFAULT_NEXTBTN_STYLE = {\n fill: 'green'\n};\nvar DEFAULT_SPEED_CONTROLLER_STYLE = {\n pointer: {\n fill: '#aaa',\n lineWidth: 0\n },\n scroller: {\n stroke: '#aaa',\n fill: '#aaa',\n lineWidth: 1,\n lineAppendWidth: 5,\n cursor: 'pointer'\n },\n text: {\n fill: '#aaa',\n textBaseline: 'top'\n }\n};\nvar DEFAULT_TIMETYPE_CONTROLLER_STYLE = {\n check: {\n stroke: 'green',\n lineWidth: 3\n },\n box: {\n fill: '#fff',\n stroke: '#aaa',\n lineWidth: 2,\n radius: 3,\n width: 12,\n height: 12\n },\n text: {\n fill: '#aaa',\n fontSize: 12,\n textBaseline: 'top'\n }\n};\nvar DEFAULT_CONTROLLER_CONFIG = {\n speed: 1,\n loop: false,\n fill: '#fff',\n stroke: '#fff',\n hideTimeTypeController: false,\n preBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa'\n },\n nextBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa'\n },\n playBtnStyle: {\n fill: '#aaa',\n stroke: '#aaa',\n fillOpacity: 0.05\n },\n speedControllerStyle: DEFAULT_SPEED_CONTROLLER_STYLE,\n timeTypeControllerStyle: DEFAULT_TIMETYPE_CONTROLLER_STYLE\n};\nvar SPEED_CONTROLLER_OFFSET = 110;\nvar TOGGLE_MODEL_OFFSET = 50;\n\nvar ControllerBtn =\n/** @class */\nfunction () {\n function ControllerBtn(cfg) {\n this.controllerCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])({}, DEFAULT_CONTROLLER_CONFIG, cfg);\n this.group = cfg.group;\n this.controllerGroup = this.group.addGroup({\n name: 'controller-group'\n });\n this.speedAxisY = [];\n this.currentSpeed = this.controllerCfg.speed;\n this.currentType = 'range';\n this.fontFamily = cfg.fontFamily || 'Arial, sans-serif';\n this.init();\n }\n\n ControllerBtn.prototype.init = function () {\n this.renderPlayButton();\n };\n /** 获取播放键 marker path */\n\n\n ControllerBtn.prototype.getNextMarkerPath = function (x, y, len) {\n return [['M', x, y - len], ['L', x + len, y], ['L', x, y + len], ['Z', x, y - len], ['M', x, y], ['L', x - len, y - len], ['L', x - len, y + len], ['Z']];\n };\n\n ControllerBtn.prototype.getPreMarkerPath = function (x, y, len) {\n return [['M', x, y - len], ['L', x - len, y], ['L', x, y + len], ['L', x, y - len], ['M', x, y], ['L', x + len, y - len], ['L', x + len, y + len], ['Z']];\n };\n\n ControllerBtn.prototype.renderPlayButton = function () {\n var controllerCfg = this.controllerCfg;\n var width = controllerCfg.width,\n height = controllerCfg.height,\n x = controllerCfg.x,\n y = controllerCfg.y,\n hideTimeTypeController = controllerCfg.hideTimeTypeController,\n _a = controllerCfg.fill,\n fill = _a === void 0 ? DEFAULT_RECT_FILL : _a,\n _b = controllerCfg.stroke,\n stroke = _b === void 0 ? DEFAULT_RECT_STROKE : _b;\n\n var playBtnStyle = __assign(__assign({}, DEFAULT_PLAYBTN_STYLE), controllerCfg.playBtnStyle || {});\n\n var preBtnStyle = __assign(__assign({}, DEFAULT_PREBTN_STYLE), controllerCfg.preBtnStyle || {});\n\n var nextBtnStyle = __assign(__assign({}, DEFAULT_NEXTBTN_STYLE), controllerCfg.nextBtnStyle || {});\n\n var r = height / 2 - 5;\n var realY = y + 10; // 绘制最外层的矩形包围框\n\n var container = this.controllerGroup.addShape('rect', {\n attrs: {\n x: x,\n y: realY,\n width: width,\n height: height,\n stroke: stroke,\n fill: fill\n },\n name: 'container-rect'\n });\n\n if (this.playButton) {\n this.playButton.update({\n x: width / 2,\n y: realY,\n r: r\n });\n } else {\n this.playButton = new _timeButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n group: this.controllerGroup,\n x: width / 2,\n y: realY + r + 5,\n r: r,\n isPlay: this.isPlay,\n style: playBtnStyle\n });\n } // 后退按钮\n\n\n var prePaddingX = preBtnStyle.offsetX || 0;\n var prePaddingY = preBtnStyle.offsetY || 0;\n var preR = (preBtnStyle.scale || 1) * r;\n this.controllerGroup.addShape('path', {\n attrs: __assign({\n path: this.getPreMarkerPath(width / 2 - 5 * r + prePaddingX, realY + r + 5 + prePaddingY, preR * 0.5)\n }, preBtnStyle),\n name: _constant__WEBPACK_IMPORTED_MODULE_3__[\"PRE_STEP_BTN\"]\n }); // 前进按钮\n\n var nxtPaddingX = nextBtnStyle.offsetX || 0;\n var nxtPaddingY = nextBtnStyle.offsetY || 0;\n var nxtR = (nextBtnStyle.scale || 1) * r;\n this.controllerGroup.addShape('path', {\n attrs: __assign({\n path: this.getNextMarkerPath(width / 2 + 5 * r + nxtPaddingX, realY + r + 5 + nxtPaddingY, nxtR * 0.5)\n }, nextBtnStyle),\n name: _constant__WEBPACK_IMPORTED_MODULE_3__[\"NEXT_STEP_BTN\"]\n });\n container.toBack(); // 调节speed的按钮\n\n this.renderSpeedBtn();\n\n if (!hideTimeTypeController) {\n this.renderToggleTime();\n }\n\n this.bindEvent(); // 根据配置的 scale、offsetX,offsetY 缩放和移动控制栏\n\n var _c = this.controllerCfg.scale,\n scale = _c === void 0 ? 1 : _c;\n var currentBBox = this.controllerGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = transform([1, 0, 0, 0, 1, 0, 0, 0, 1], [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX, centerY]]);\n this.controllerGroup.setMatrix(matrix);\n };\n\n ControllerBtn.prototype.renderSpeedBtn = function () {\n var _a = this.controllerCfg,\n y = _a.y,\n width = _a.width,\n hideTimeTypeController = _a.hideTimeTypeController;\n\n var speedControllerStyle = __assign(__assign({}, DEFAULT_SPEED_CONTROLLER_STYLE), this.controllerCfg.speedControllerStyle || {});\n\n var _b = speedControllerStyle.scroller,\n scroller = _b === void 0 ? {} : _b,\n _c = speedControllerStyle.text,\n text = _c === void 0 ? {} : _c,\n _d = speedControllerStyle.pointer,\n pointer = _d === void 0 ? {} : _d,\n _e = speedControllerStyle.scale,\n scale = _e === void 0 ? 1 : _e,\n _f = speedControllerStyle.offsetX,\n offsetX = _f === void 0 ? 0 : _f,\n _g = speedControllerStyle.offsetY,\n offsetY = _g === void 0 ? 0 : _g;\n var speedGroup = this.controllerGroup.addGroup({\n name: 'speed-group'\n });\n this.speedGroup = speedGroup;\n var speedNum = [];\n var maxSpeed = 5;\n this.speedAxisY = [19, 22, 26, 32, 39]; // 增加speed刻度\n\n for (var i = 0; i < 5; i++) {\n var axisY = y + this.speedAxisY[i]; // 灰色刻度\n\n var startX = width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET);\n speedGroup.addShape('line', {\n attrs: __assign({\n x1: startX,\n x2: startX + 15,\n y1: axisY,\n y2: axisY\n }, scroller),\n speed: maxSpeed,\n name: 'speed-rect'\n });\n this.speedAxisY[i] = axisY;\n speedNum.push(maxSpeed);\n maxSpeed = maxSpeed - 1;\n } // 速度文本\n\n\n this.speedText = speedGroup.addShape('text', {\n attrs: __assign({\n x: width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET) + 20,\n y: this.speedAxisY[0] + 4,\n text: \"1.0X\",\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, text)\n });\n this.speedPoint = speedGroup.addShape('path', {\n attrs: __assign({\n path: this.getPointerPath(width - (!hideTimeTypeController ? SPEED_CONTROLLER_OFFSET : TOGGLE_MODEL_OFFSET), 0),\n matrix: [1, 0, 0, 0, 1, 0, 0, this.speedAxisY[4], 1]\n }, pointer)\n }); // 根据配置在 speedControllerStyle 中的 scale offsetX offsetY 缩放和移动速度控制器\n\n var currentBBox = this.speedGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = this.speedGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n matrix = transform(matrix, [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX + offsetX * scale, centerY + offsetY * scale]]);\n this.speedGroup.setMatrix(matrix);\n };\n\n ControllerBtn.prototype.getPointerPath = function (x, y) {\n return [['M', x, y], ['L', x - 10, y - 4], ['L', x - 10, y + 4], ['Z']];\n };\n\n ControllerBtn.prototype.renderToggleTime = function () {\n var _a;\n\n var width = this.controllerCfg.width;\n\n var timeTypeControllerStyle = __assign(__assign({}, DEFAULT_TIMETYPE_CONTROLLER_STYLE), this.controllerCfg.timeTypeControllerStyle || {});\n\n var _b = timeTypeControllerStyle.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = timeTypeControllerStyle.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = timeTypeControllerStyle.offsetY,\n offsetY = _d === void 0 ? 0 : _d,\n _e = timeTypeControllerStyle.box,\n box = _e === void 0 ? {} : _e,\n _f = timeTypeControllerStyle.check,\n check = _f === void 0 ? {} : _f,\n _g = timeTypeControllerStyle.text,\n text = _g === void 0 ? {} : _g;\n this.toggleGroup = this.controllerGroup.addGroup({\n name: 'toggle-group'\n });\n this.toggleGroup.addShape('rect', {\n attrs: __assign({\n x: width - TOGGLE_MODEL_OFFSET,\n y: this.speedAxisY[0] + 3.5\n }, box),\n isChecked: false,\n name: 'toggle-model'\n });\n this.checkedIcon = this.toggleGroup.addShape('path', {\n attrs: __assign({\n path: [['M', width - TOGGLE_MODEL_OFFSET + 3, this.speedAxisY[1] + 6], ['L', width - TOGGLE_MODEL_OFFSET + 7, this.speedAxisY[1] + 10], ['L', width - TOGGLE_MODEL_OFFSET + 12, this.speedAxisY[1] + 4]]\n }, check),\n capture: false\n });\n this.checkedIcon.hide();\n this.checkedText = this.toggleGroup.addShape('text', {\n attrs: __assign({\n text: ((_a = this.controllerCfg) === null || _a === void 0 ? void 0 : _a.timePointControllerText) || '单一时间',\n x: width - TOGGLE_MODEL_OFFSET + 15,\n y: this.speedAxisY[0] + 4,\n fontFamily: typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n }, text)\n }); // 根据配置在 timeTypeControllerStyle 中的 scale offsetX offsetY 缩放和移动速度控制器\n\n var currentBBox = this.toggleGroup.getCanvasBBox();\n var centerX = (currentBBox.maxX + currentBBox.minX) / 2;\n var centerY = (currentBBox.maxY + currentBBox.minY) / 2;\n var matrix = this.toggleGroup.getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n matrix = transform(matrix, [['t', -centerX, -centerY], ['s', scale, scale], ['t', centerX + offsetX * scale, centerY + offsetY * scale]]);\n this.toggleGroup.setMatrix(matrix);\n };\n\n ControllerBtn.prototype.bindEvent = function () {\n var _this = this;\n\n this.speedGroup.on('speed-rect:click', function (evt) {\n var currentPointerY = evt.target.attr('y1');\n\n var pointerMatrix = _this.speedPoint.attr('matrix');\n\n var currentYIdx = _this.speedAxisY.indexOf(pointerMatrix[7] || 0);\n\n var targetYIdx = _this.speedAxisY.indexOf(currentPointerY);\n\n var yDiff = _this.speedAxisY[targetYIdx] - _this.speedAxisY[currentYIdx];\n pointerMatrix = transform(pointerMatrix, [['t', 0, yDiff]]);\n\n _this.speedPoint.setMatrix(pointerMatrix);\n\n _this.currentSpeed = _this.speedAxisY.length - targetYIdx;\n\n _this.speedText.attr('text', _this.currentSpeed + \".0X\");\n\n _this.group.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], {\n speed: _this.currentSpeed,\n type: _this.currentType\n });\n });\n this.speedGroup.on('mousewheel', function (evt) {\n evt.preventDefault();\n var pointerMatrix = _this.speedPoint.attr('matrix') || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var currentPointerY = pointerMatrix[7];\n\n var currentYIdx = _this.speedAxisY.indexOf(currentPointerY);\n\n if (currentYIdx === -1) {\n // 找到最近的一个 y\n var minDist_1 = Infinity;\n\n _this.speedAxisY.forEach(function (y, idx) {\n var dist = Math.abs(y - currentPointerY);\n\n if (minDist_1 > dist) {\n minDist_1 = dist;\n currentYIdx = idx;\n }\n });\n }\n\n if (evt.originalEvent.deltaY > 0) currentYIdx = Math.max(0, currentYIdx - 1);else currentYIdx = Math.min(_this.speedAxisY.length - 1, currentYIdx + 1);\n var yDiff = _this.speedAxisY[currentYIdx] - currentPointerY;\n pointerMatrix = transform(pointerMatrix, [['t', 0, yDiff]]);\n\n _this.speedPoint.setMatrix(pointerMatrix);\n\n _this.currentSpeed = _this.speedAxisY.length - currentYIdx;\n\n _this.speedText.attr('text', _this.currentSpeed + \".0X\");\n\n _this.group.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], {\n speed: _this.currentSpeed,\n type: _this.currentType\n });\n });\n\n if (this.toggleGroup) {\n this.toggleGroup.on('toggle-model:click', function (evt) {\n var _a, _b;\n\n var isChecked = evt.target.get('isChecked');\n\n if (!isChecked) {\n _this.checkedIcon.show();\n\n _this.checkedText.attr('text', ((_a = _this.controllerCfg) === null || _a === void 0 ? void 0 : _a.timeRangeControllerText) || '时间范围');\n\n _this.currentType = 'single';\n } else {\n _this.checkedIcon.hide();\n\n _this.checkedText.attr('text', ((_b = _this.controllerCfg) === null || _b === void 0 ? void 0 : _b.timePointControllerText) || '单一时间');\n\n _this.currentType = 'range';\n }\n\n evt.target.set('isChecked', !isChecked);\n\n _this.group.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], {\n type: _this.currentType,\n speed: _this.currentSpeed\n });\n });\n }\n };\n\n ControllerBtn.prototype.destroy = function () {\n this.speedGroup.off('speed-rect:click');\n\n if (this.toggleGroup) {\n this.toggleGroup.off('toggle-model:click');\n this.toggleGroup.destroy();\n }\n\n this.speedGroup.destroy();\n };\n\n return ControllerBtn;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ControllerBtn);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci9jb250cm9sbGVyQnRuLmpzPzViMzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRXFDO0FBQ0c7QUFDTjtBQUM4QztBQUNoRixnQkFBZ0IscURBQUc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwwREFBTyxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkMsMERBQTBEOztBQUVyRywwQ0FBMEMsd0RBQXdEOztBQUVsRywyQ0FBMkMsMERBQTBEOztBQUVyRztBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsNEJBQTRCLG1EQUFNO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsWUFBWSxzREFBWTtBQUN4QixLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFlBQVksdURBQWE7QUFDekIsS0FBSztBQUNMLHVCQUF1Qjs7QUFFdkI7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1EQUFtRCxnRkFBZ0Y7O0FBRW5JO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQyxtQkFBbUIsT0FBTztBQUMxQix5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsc0RBQXNELHNGQUFzRjs7QUFFNUk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEsdUJBQXVCLCtEQUFxQjtBQUM1QztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxtRkFBbUY7QUFDbkY7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSx1QkFBdUIsK0RBQXFCO0FBQzVDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLHlCQUF5QiwrREFBcUI7QUFDOUM7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDRFQUFhIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL3RpbWVCYXIvY29udHJvbGxlckJ0bi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgZGVlcE1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL3RpbWVCdXR0b24nO1xuaW1wb3J0IHsgVElNRUJBUl9DT05GSUdfQ0hBTkdFLCBQUkVfU1RFUF9CVE4sIE5FWFRfU1RFUF9CVE4gfSBmcm9tICcuL2NvbnN0YW50JztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIERFRkFVTFRfUkVDVF9GSUxMID0gJyNhYWEnO1xudmFyIERFRkFVTFRfUkVDVF9TVFJPS0UgPSAnZ3JlZW4nO1xudmFyIERFRkFVTFRfUExBWUJUTl9TVFlMRSA9IHtcbiAgZmlsbDogJyNhYWEnLFxuICBmaWxsT3BhY2l0eTogMC4zNSxcbiAgc3Ryb2tlOiAnI2FhYSdcbn07XG52YXIgREVGQVVMVF9QUkVCVE5fU1RZTEUgPSB7XG4gIGZpbGw6ICcjZmZmJ1xufTtcbnZhciBERUZBVUxUX05FWFRCVE5fU1RZTEUgPSB7XG4gIGZpbGw6ICdncmVlbidcbn07XG52YXIgREVGQVVMVF9TUEVFRF9DT05UUk9MTEVSX1NUWUxFID0ge1xuICBwb2ludGVyOiB7XG4gICAgZmlsbDogJyNhYWEnLFxuICAgIGxpbmVXaWR0aDogMFxuICB9LFxuICBzY3JvbGxlcjoge1xuICAgIHN0cm9rZTogJyNhYWEnLFxuICAgIGZpbGw6ICcjYWFhJyxcbiAgICBsaW5lV2lkdGg6IDEsXG4gICAgbGluZUFwcGVuZFdpZHRoOiA1LFxuICAgIGN1cnNvcjogJ3BvaW50ZXInXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBmaWxsOiAnI2FhYScsXG4gICAgdGV4dEJhc2VsaW5lOiAndG9wJ1xuICB9XG59O1xudmFyIERFRkFVTFRfVElNRVRZUEVfQ09OVFJPTExFUl9TVFlMRSA9IHtcbiAgY2hlY2s6IHtcbiAgICBzdHJva2U6ICdncmVlbicsXG4gICAgbGluZVdpZHRoOiAzXG4gIH0sXG4gIGJveDoge1xuICAgIGZpbGw6ICcjZmZmJyxcbiAgICBzdHJva2U6ICcjYWFhJyxcbiAgICBsaW5lV2lkdGg6IDIsXG4gICAgcmFkaXVzOiAzLFxuICAgIHdpZHRoOiAxMixcbiAgICBoZWlnaHQ6IDEyXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBmaWxsOiAnI2FhYScsXG4gICAgZm9udFNpemU6IDEyLFxuICAgIHRleHRCYXNlbGluZTogJ3RvcCdcbiAgfVxufTtcbnZhciBERUZBVUxUX0NPTlRST0xMRVJfQ09ORklHID0ge1xuICBzcGVlZDogMSxcbiAgbG9vcDogZmFsc2UsXG4gIGZpbGw6ICcjZmZmJyxcbiAgc3Ryb2tlOiAnI2ZmZicsXG4gIGhpZGVUaW1lVHlwZUNvbnRyb2xsZXI6IGZhbHNlLFxuICBwcmVCdG5TdHlsZToge1xuICAgIGZpbGw6ICcjYWFhJyxcbiAgICBzdHJva2U6ICcjYWFhJ1xuICB9LFxuICBuZXh0QnRuU3R5bGU6IHtcbiAgICBmaWxsOiAnI2FhYScsXG4gICAgc3Ryb2tlOiAnI2FhYSdcbiAgfSxcbiAgcGxheUJ0blN0eWxlOiB7XG4gICAgZmlsbDogJyNhYWEnLFxuICAgIHN0cm9rZTogJyNhYWEnLFxuICAgIGZpbGxPcGFjaXR5OiAwLjA1XG4gIH0sXG4gIHNwZWVkQ29udHJvbGxlclN0eWxlOiBERUZBVUxUX1NQRUVEX0NPTlRST0xMRVJfU1RZTEUsXG4gIHRpbWVUeXBlQ29udHJvbGxlclN0eWxlOiBERUZBVUxUX1RJTUVUWVBFX0NPTlRST0xMRVJfU1RZTEVcbn07XG52YXIgU1BFRURfQ09OVFJPTExFUl9PRkZTRVQgPSAxMTA7XG52YXIgVE9HR0xFX01PREVMX09GRlNFVCA9IDUwO1xuXG52YXIgQ29udHJvbGxlckJ0biA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbnRyb2xsZXJCdG4oY2ZnKSB7XG4gICAgdGhpcy5jb250cm9sbGVyQ2ZnID0gZGVlcE1peCh7fSwgREVGQVVMVF9DT05UUk9MTEVSX0NPTkZJRywgY2ZnKTtcbiAgICB0aGlzLmdyb3VwID0gY2ZnLmdyb3VwO1xuICAgIHRoaXMuY29udHJvbGxlckdyb3VwID0gdGhpcy5ncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAnY29udHJvbGxlci1ncm91cCdcbiAgICB9KTtcbiAgICB0aGlzLnNwZWVkQXhpc1kgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRTcGVlZCA9IHRoaXMuY29udHJvbGxlckNmZy5zcGVlZDtcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gJ3JhbmdlJztcbiAgICB0aGlzLmZvbnRGYW1pbHkgPSBjZmcuZm9udEZhbWlseSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlbmRlclBsYXlCdXR0b24oKTtcbiAgfTtcbiAgLyoqIOiOt+WPluaSreaUvumUriBtYXJrZXIgcGF0aCAqL1xuXG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUuZ2V0TmV4dE1hcmtlclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgbGVuKSB7XG4gICAgcmV0dXJuIFtbJ00nLCB4LCB5IC0gbGVuXSwgWydMJywgeCArIGxlbiwgeV0sIFsnTCcsIHgsIHkgKyBsZW5dLCBbJ1onLCB4LCB5IC0gbGVuXSwgWydNJywgeCwgeV0sIFsnTCcsIHggLSBsZW4sIHkgLSBsZW5dLCBbJ0wnLCB4IC0gbGVuLCB5ICsgbGVuXSwgWydaJ11dO1xuICB9O1xuXG4gIENvbnRyb2xsZXJCdG4ucHJvdG90eXBlLmdldFByZU1hcmtlclBhdGggPSBmdW5jdGlvbiAoeCwgeSwgbGVuKSB7XG4gICAgcmV0dXJuIFtbJ00nLCB4LCB5IC0gbGVuXSwgWydMJywgeCAtIGxlbiwgeV0sIFsnTCcsIHgsIHkgKyBsZW5dLCBbJ0wnLCB4LCB5IC0gbGVuXSwgWydNJywgeCwgeV0sIFsnTCcsIHggKyBsZW4sIHkgLSBsZW5dLCBbJ0wnLCB4ICsgbGVuLCB5ICsgbGVuXSwgWydaJ11dO1xuICB9O1xuXG4gIENvbnRyb2xsZXJCdG4ucHJvdG90eXBlLnJlbmRlclBsYXlCdXR0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRyb2xsZXJDZmcgPSB0aGlzLmNvbnRyb2xsZXJDZmc7XG4gICAgdmFyIHdpZHRoID0gY29udHJvbGxlckNmZy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gY29udHJvbGxlckNmZy5oZWlnaHQsXG4gICAgICAgIHggPSBjb250cm9sbGVyQ2ZnLngsXG4gICAgICAgIHkgPSBjb250cm9sbGVyQ2ZnLnksXG4gICAgICAgIGhpZGVUaW1lVHlwZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyQ2ZnLmhpZGVUaW1lVHlwZUNvbnRyb2xsZXIsXG4gICAgICAgIF9hID0gY29udHJvbGxlckNmZy5maWxsLFxuICAgICAgICBmaWxsID0gX2EgPT09IHZvaWQgMCA/IERFRkFVTFRfUkVDVF9GSUxMIDogX2EsXG4gICAgICAgIF9iID0gY29udHJvbGxlckNmZy5zdHJva2UsXG4gICAgICAgIHN0cm9rZSA9IF9iID09PSB2b2lkIDAgPyBERUZBVUxUX1JFQ1RfU1RST0tFIDogX2I7XG5cbiAgICB2YXIgcGxheUJ0blN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIERFRkFVTFRfUExBWUJUTl9TVFlMRSksIGNvbnRyb2xsZXJDZmcucGxheUJ0blN0eWxlIHx8IHt9KTtcblxuICAgIHZhciBwcmVCdG5TdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX1BSRUJUTl9TVFlMRSksIGNvbnRyb2xsZXJDZmcucHJlQnRuU3R5bGUgfHwge30pO1xuXG4gICAgdmFyIG5leHRCdG5TdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX05FWFRCVE5fU1RZTEUpLCBjb250cm9sbGVyQ2ZnLm5leHRCdG5TdHlsZSB8fCB7fSk7XG5cbiAgICB2YXIgciA9IGhlaWdodCAvIDIgLSA1O1xuICAgIHZhciByZWFsWSA9IHkgKyAxMDsgLy8g57uY5Yi25pyA5aSW5bGC55qE55+p5b2i5YyF5Zu05qGGXG5cbiAgICB2YXIgY29udGFpbmVyID0gdGhpcy5jb250cm9sbGVyR3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiByZWFsWSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgICAgIGZpbGw6IGZpbGxcbiAgICAgIH0sXG4gICAgICBuYW1lOiAnY29udGFpbmVyLXJlY3QnXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wbGF5QnV0dG9uKSB7XG4gICAgICB0aGlzLnBsYXlCdXR0b24udXBkYXRlKHtcbiAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICB5OiByZWFsWSxcbiAgICAgICAgcjogclxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxheUJ1dHRvbiA9IG5ldyBCdXR0b24oe1xuICAgICAgICBncm91cDogdGhpcy5jb250cm9sbGVyR3JvdXAsXG4gICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgeTogcmVhbFkgKyByICsgNSxcbiAgICAgICAgcjogcixcbiAgICAgICAgaXNQbGF5OiB0aGlzLmlzUGxheSxcbiAgICAgICAgc3R5bGU6IHBsYXlCdG5TdHlsZVxuICAgICAgfSk7XG4gICAgfSAvLyDlkI7pgIDmjInpkq5cblxuXG4gICAgdmFyIHByZVBhZGRpbmdYID0gcHJlQnRuU3R5bGUub2Zmc2V0WCB8fCAwO1xuICAgIHZhciBwcmVQYWRkaW5nWSA9IHByZUJ0blN0eWxlLm9mZnNldFkgfHwgMDtcbiAgICB2YXIgcHJlUiA9IChwcmVCdG5TdHlsZS5zY2FsZSB8fCAxKSAqIHI7XG4gICAgdGhpcy5jb250cm9sbGVyR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICBwYXRoOiB0aGlzLmdldFByZU1hcmtlclBhdGgod2lkdGggLyAyIC0gNSAqIHIgKyBwcmVQYWRkaW5nWCwgcmVhbFkgKyByICsgNSArIHByZVBhZGRpbmdZLCBwcmVSICogMC41KVxuICAgICAgfSwgcHJlQnRuU3R5bGUpLFxuICAgICAgbmFtZTogUFJFX1NURVBfQlROXG4gICAgfSk7IC8vIOWJjei/m+aMiemSrlxuXG4gICAgdmFyIG54dFBhZGRpbmdYID0gbmV4dEJ0blN0eWxlLm9mZnNldFggfHwgMDtcbiAgICB2YXIgbnh0UGFkZGluZ1kgPSBuZXh0QnRuU3R5bGUub2Zmc2V0WSB8fCAwO1xuICAgIHZhciBueHRSID0gKG5leHRCdG5TdHlsZS5zY2FsZSB8fCAxKSAqIHI7XG4gICAgdGhpcy5jb250cm9sbGVyR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICBwYXRoOiB0aGlzLmdldE5leHRNYXJrZXJQYXRoKHdpZHRoIC8gMiArIDUgKiByICsgbnh0UGFkZGluZ1gsIHJlYWxZICsgciArIDUgKyBueHRQYWRkaW5nWSwgbnh0UiAqIDAuNSlcbiAgICAgIH0sIG5leHRCdG5TdHlsZSksXG4gICAgICBuYW1lOiBORVhUX1NURVBfQlROXG4gICAgfSk7XG4gICAgY29udGFpbmVyLnRvQmFjaygpOyAvLyDosIPoioJzcGVlZOeahOaMiemSrlxuXG4gICAgdGhpcy5yZW5kZXJTcGVlZEJ0bigpO1xuXG4gICAgaWYgKCFoaWRlVGltZVR5cGVDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLnJlbmRlclRvZ2dsZVRpbWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmJpbmRFdmVudCgpOyAvLyDmoLnmja7phY3nva7nmoQgc2NhbGXjgIFvZmZzZXRY77yMb2Zmc2V0WSDnvKnmlL7lkoznp7vliqjmjqfliLbmoI9cblxuICAgIHZhciBfYyA9IHRoaXMuY29udHJvbGxlckNmZy5zY2FsZSxcbiAgICAgICAgc2NhbGUgPSBfYyA9PT0gdm9pZCAwID8gMSA6IF9jO1xuICAgIHZhciBjdXJyZW50QkJveCA9IHRoaXMuY29udHJvbGxlckdyb3VwLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgY2VudGVyWCA9IChjdXJyZW50QkJveC5tYXhYICsgY3VycmVudEJCb3gubWluWCkgLyAyO1xuICAgIHZhciBjZW50ZXJZID0gKGN1cnJlbnRCQm94Lm1heFkgKyBjdXJyZW50QkJveC5taW5ZKSAvIDI7XG4gICAgdmFyIG1hdHJpeCA9IHRyYW5zZm9ybShbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV0sIFtbJ3QnLCAtY2VudGVyWCwgLWNlbnRlclldLCBbJ3MnLCBzY2FsZSwgc2NhbGVdLCBbJ3QnLCBjZW50ZXJYLCBjZW50ZXJZXV0pO1xuICAgIHRoaXMuY29udHJvbGxlckdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICB9O1xuXG4gIENvbnRyb2xsZXJCdG4ucHJvdG90eXBlLnJlbmRlclNwZWVkQnRuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMuY29udHJvbGxlckNmZyxcbiAgICAgICAgeSA9IF9hLnksXG4gICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgIGhpZGVUaW1lVHlwZUNvbnRyb2xsZXIgPSBfYS5oaWRlVGltZVR5cGVDb250cm9sbGVyO1xuXG4gICAgdmFyIHNwZWVkQ29udHJvbGxlclN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIERFRkFVTFRfU1BFRURfQ09OVFJPTExFUl9TVFlMRSksIHRoaXMuY29udHJvbGxlckNmZy5zcGVlZENvbnRyb2xsZXJTdHlsZSB8fCB7fSk7XG5cbiAgICB2YXIgX2IgPSBzcGVlZENvbnRyb2xsZXJTdHlsZS5zY3JvbGxlcixcbiAgICAgICAgc2Nyb2xsZXIgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYixcbiAgICAgICAgX2MgPSBzcGVlZENvbnRyb2xsZXJTdHlsZS50ZXh0LFxuICAgICAgICB0ZXh0ID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gc3BlZWRDb250cm9sbGVyU3R5bGUucG9pbnRlcixcbiAgICAgICAgcG9pbnRlciA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kLFxuICAgICAgICBfZSA9IHNwZWVkQ29udHJvbGxlclN0eWxlLnNjYWxlLFxuICAgICAgICBzY2FsZSA9IF9lID09PSB2b2lkIDAgPyAxIDogX2UsXG4gICAgICAgIF9mID0gc3BlZWRDb250cm9sbGVyU3R5bGUub2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WCA9IF9mID09PSB2b2lkIDAgPyAwIDogX2YsXG4gICAgICAgIF9nID0gc3BlZWRDb250cm9sbGVyU3R5bGUub2Zmc2V0WSxcbiAgICAgICAgb2Zmc2V0WSA9IF9nID09PSB2b2lkIDAgPyAwIDogX2c7XG4gICAgdmFyIHNwZWVkR3JvdXAgPSB0aGlzLmNvbnRyb2xsZXJHcm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAnc3BlZWQtZ3JvdXAnXG4gICAgfSk7XG4gICAgdGhpcy5zcGVlZEdyb3VwID0gc3BlZWRHcm91cDtcbiAgICB2YXIgc3BlZWROdW0gPSBbXTtcbiAgICB2YXIgbWF4U3BlZWQgPSA1O1xuICAgIHRoaXMuc3BlZWRBeGlzWSA9IFsxOSwgMjIsIDI2LCAzMiwgMzldOyAvLyDlop7liqBzcGVlZOWIu+W6plxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHZhciBheGlzWSA9IHkgKyB0aGlzLnNwZWVkQXhpc1lbaV07IC8vIOeBsOiJsuWIu+W6plxuXG4gICAgICB2YXIgc3RhcnRYID0gd2lkdGggLSAoIWhpZGVUaW1lVHlwZUNvbnRyb2xsZXIgPyBTUEVFRF9DT05UUk9MTEVSX09GRlNFVCA6IFRPR0dMRV9NT0RFTF9PRkZTRVQpO1xuICAgICAgc3BlZWRHcm91cC5hZGRTaGFwZSgnbGluZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4MTogc3RhcnRYLFxuICAgICAgICAgIHgyOiBzdGFydFggKyAxNSxcbiAgICAgICAgICB5MTogYXhpc1ksXG4gICAgICAgICAgeTI6IGF4aXNZXG4gICAgICAgIH0sIHNjcm9sbGVyKSxcbiAgICAgICAgc3BlZWQ6IG1heFNwZWVkLFxuICAgICAgICBuYW1lOiAnc3BlZWQtcmVjdCdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zcGVlZEF4aXNZW2ldID0gYXhpc1k7XG4gICAgICBzcGVlZE51bS5wdXNoKG1heFNwZWVkKTtcbiAgICAgIG1heFNwZWVkID0gbWF4U3BlZWQgLSAxO1xuICAgIH0gLy8g6YCf5bqm5paH5pysXG5cblxuICAgIHRoaXMuc3BlZWRUZXh0ID0gc3BlZWRHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHg6IHdpZHRoIC0gKCFoaWRlVGltZVR5cGVDb250cm9sbGVyID8gU1BFRURfQ09OVFJPTExFUl9PRkZTRVQgOiBUT0dHTEVfTU9ERUxfT0ZGU0VUKSArIDIwLFxuICAgICAgICB5OiB0aGlzLnNwZWVkQXhpc1lbMF0gKyA0LFxuICAgICAgICB0ZXh0OiBcIjEuMFhcIixcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgIH0sIHRleHQpXG4gICAgfSk7XG4gICAgdGhpcy5zcGVlZFBvaW50ID0gc3BlZWRHcm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMuZ2V0UG9pbnRlclBhdGgod2lkdGggLSAoIWhpZGVUaW1lVHlwZUNvbnRyb2xsZXIgPyBTUEVFRF9DT05UUk9MTEVSX09GRlNFVCA6IFRPR0dMRV9NT0RFTF9PRkZTRVQpLCAwKSxcbiAgICAgICAgbWF0cml4OiBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgdGhpcy5zcGVlZEF4aXNZWzRdLCAxXVxuICAgICAgfSwgcG9pbnRlcilcbiAgICB9KTsgLy8g5qC55o2u6YWN572u5ZyoIHNwZWVkQ29udHJvbGxlclN0eWxlIOS4reeahCBzY2FsZSBvZmZzZXRYIG9mZnNldFkg57yp5pS+5ZKM56e75Yqo6YCf5bqm5o6n5Yi25ZmoXG5cbiAgICB2YXIgY3VycmVudEJCb3ggPSB0aGlzLnNwZWVkR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBjZW50ZXJYID0gKGN1cnJlbnRCQm94Lm1heFggKyBjdXJyZW50QkJveC5taW5YKSAvIDI7XG4gICAgdmFyIGNlbnRlclkgPSAoY3VycmVudEJCb3gubWF4WSArIGN1cnJlbnRCQm94Lm1pblkpIC8gMjtcbiAgICB2YXIgbWF0cml4ID0gdGhpcy5zcGVlZEdyb3VwLmdldE1hdHJpeCgpIHx8IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgLWNlbnRlclgsIC1jZW50ZXJZXSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgY2VudGVyWCArIG9mZnNldFggKiBzY2FsZSwgY2VudGVyWSArIG9mZnNldFkgKiBzY2FsZV1dKTtcbiAgICB0aGlzLnNwZWVkR3JvdXAuc2V0TWF0cml4KG1hdHJpeCk7XG4gIH07XG5cbiAgQ29udHJvbGxlckJ0bi5wcm90b3R5cGUuZ2V0UG9pbnRlclBhdGggPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgIHJldHVybiBbWydNJywgeCwgeV0sIFsnTCcsIHggLSAxMCwgeSAtIDRdLCBbJ0wnLCB4IC0gMTAsIHkgKyA0XSwgWydaJ11dO1xuICB9O1xuXG4gIENvbnRyb2xsZXJCdG4ucHJvdG90eXBlLnJlbmRlclRvZ2dsZVRpbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHdpZHRoID0gdGhpcy5jb250cm9sbGVyQ2ZnLndpZHRoO1xuXG4gICAgdmFyIHRpbWVUeXBlQ29udHJvbGxlclN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIERFRkFVTFRfVElNRVRZUEVfQ09OVFJPTExFUl9TVFlMRSksIHRoaXMuY29udHJvbGxlckNmZy50aW1lVHlwZUNvbnRyb2xsZXJTdHlsZSB8fCB7fSk7XG5cbiAgICB2YXIgX2IgPSB0aW1lVHlwZUNvbnRyb2xsZXJTdHlsZS5zY2FsZSxcbiAgICAgICAgc2NhbGUgPSBfYiA9PT0gdm9pZCAwID8gMSA6IF9iLFxuICAgICAgICBfYyA9IHRpbWVUeXBlQ29udHJvbGxlclN0eWxlLm9mZnNldFgsXG4gICAgICAgIG9mZnNldFggPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jLFxuICAgICAgICBfZCA9IHRpbWVUeXBlQ29udHJvbGxlclN0eWxlLm9mZnNldFksXG4gICAgICAgIG9mZnNldFkgPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kLFxuICAgICAgICBfZSA9IHRpbWVUeXBlQ29udHJvbGxlclN0eWxlLmJveCxcbiAgICAgICAgYm94ID0gX2UgPT09IHZvaWQgMCA/IHt9IDogX2UsXG4gICAgICAgIF9mID0gdGltZVR5cGVDb250cm9sbGVyU3R5bGUuY2hlY2ssXG4gICAgICAgIGNoZWNrID0gX2YgPT09IHZvaWQgMCA/IHt9IDogX2YsXG4gICAgICAgIF9nID0gdGltZVR5cGVDb250cm9sbGVyU3R5bGUudGV4dCxcbiAgICAgICAgdGV4dCA9IF9nID09PSB2b2lkIDAgPyB7fSA6IF9nO1xuICAgIHRoaXMudG9nZ2xlR3JvdXAgPSB0aGlzLmNvbnRyb2xsZXJHcm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAndG9nZ2xlLWdyb3VwJ1xuICAgIH0pO1xuICAgIHRoaXMudG9nZ2xlR3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICB4OiB3aWR0aCAtIFRPR0dMRV9NT0RFTF9PRkZTRVQsXG4gICAgICAgIHk6IHRoaXMuc3BlZWRBeGlzWVswXSArIDMuNVxuICAgICAgfSwgYm94KSxcbiAgICAgIGlzQ2hlY2tlZDogZmFsc2UsXG4gICAgICBuYW1lOiAndG9nZ2xlLW1vZGVsJ1xuICAgIH0pO1xuICAgIHRoaXMuY2hlY2tlZEljb24gPSB0aGlzLnRvZ2dsZUdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgcGF0aDogW1snTScsIHdpZHRoIC0gVE9HR0xFX01PREVMX09GRlNFVCArIDMsIHRoaXMuc3BlZWRBeGlzWVsxXSArIDZdLCBbJ0wnLCB3aWR0aCAtIFRPR0dMRV9NT0RFTF9PRkZTRVQgKyA3LCB0aGlzLnNwZWVkQXhpc1lbMV0gKyAxMF0sIFsnTCcsIHdpZHRoIC0gVE9HR0xFX01PREVMX09GRlNFVCArIDEyLCB0aGlzLnNwZWVkQXhpc1lbMV0gKyA0XV1cbiAgICAgIH0sIGNoZWNrKSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5jaGVja2VkSWNvbi5oaWRlKCk7XG4gICAgdGhpcy5jaGVja2VkVGV4dCA9IHRoaXMudG9nZ2xlR3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICB0ZXh0OiAoKF9hID0gdGhpcy5jb250cm9sbGVyQ2ZnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGltZVBvaW50Q29udHJvbGxlclRleHQpIHx8ICfljZXkuIDml7bpl7QnLFxuICAgICAgICB4OiB3aWR0aCAtIFRPR0dMRV9NT0RFTF9PRkZTRVQgKyAxNSxcbiAgICAgICAgeTogdGhpcy5zcGVlZEF4aXNZWzBdICsgNCxcbiAgICAgICAgZm9udEZhbWlseTogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpIHx8ICdBcmlhbCwgc2Fucy1zZXJpZicgOiAnQXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICB9LCB0ZXh0KVxuICAgIH0pOyAvLyDmoLnmja7phY3nva7lnKggdGltZVR5cGVDb250cm9sbGVyU3R5bGUg5Lit55qEIHNjYWxlIG9mZnNldFggb2Zmc2V0WSDnvKnmlL7lkoznp7vliqjpgJ/luqbmjqfliLblmahcblxuICAgIHZhciBjdXJyZW50QkJveCA9IHRoaXMudG9nZ2xlR3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHZhciBjZW50ZXJYID0gKGN1cnJlbnRCQm94Lm1heFggKyBjdXJyZW50QkJveC5taW5YKSAvIDI7XG4gICAgdmFyIGNlbnRlclkgPSAoY3VycmVudEJCb3gubWF4WSArIGN1cnJlbnRCQm94Lm1pblkpIC8gMjtcbiAgICB2YXIgbWF0cml4ID0gdGhpcy50b2dnbGVHcm91cC5nZXRNYXRyaXgoKSB8fCBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sndCcsIC1jZW50ZXJYLCAtY2VudGVyWV0sIFsncycsIHNjYWxlLCBzY2FsZV0sIFsndCcsIGNlbnRlclggKyBvZmZzZXRYICogc2NhbGUsIGNlbnRlclkgKyBvZmZzZXRZICogc2NhbGVdXSk7XG4gICAgdGhpcy50b2dnbGVHcm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgfTtcblxuICBDb250cm9sbGVyQnRuLnByb3RvdHlwZS5iaW5kRXZlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuc3BlZWRHcm91cC5vbignc3BlZWQtcmVjdDpjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciBjdXJyZW50UG9pbnRlclkgPSBldnQudGFyZ2V0LmF0dHIoJ3kxJyk7XG5cbiAgICAgIHZhciBwb2ludGVyTWF0cml4ID0gX3RoaXMuc3BlZWRQb2ludC5hdHRyKCdtYXRyaXgnKTtcblxuICAgICAgdmFyIGN1cnJlbnRZSWR4ID0gX3RoaXMuc3BlZWRBeGlzWS5pbmRleE9mKHBvaW50ZXJNYXRyaXhbN10gfHwgMCk7XG5cbiAgICAgIHZhciB0YXJnZXRZSWR4ID0gX3RoaXMuc3BlZWRBeGlzWS5pbmRleE9mKGN1cnJlbnRQb2ludGVyWSk7XG5cbiAgICAgIHZhciB5RGlmZiA9IF90aGlzLnNwZWVkQXhpc1lbdGFyZ2V0WUlkeF0gLSBfdGhpcy5zcGVlZEF4aXNZW2N1cnJlbnRZSWR4XTtcbiAgICAgIHBvaW50ZXJNYXRyaXggPSB0cmFuc2Zvcm0ocG9pbnRlck1hdHJpeCwgW1sndCcsIDAsIHlEaWZmXV0pO1xuXG4gICAgICBfdGhpcy5zcGVlZFBvaW50LnNldE1hdHJpeChwb2ludGVyTWF0cml4KTtcblxuICAgICAgX3RoaXMuY3VycmVudFNwZWVkID0gX3RoaXMuc3BlZWRBeGlzWS5sZW5ndGggLSB0YXJnZXRZSWR4O1xuXG4gICAgICBfdGhpcy5zcGVlZFRleHQuYXR0cigndGV4dCcsIF90aGlzLmN1cnJlbnRTcGVlZCArIFwiLjBYXCIpO1xuXG4gICAgICBfdGhpcy5ncm91cC5lbWl0KFRJTUVCQVJfQ09ORklHX0NIQU5HRSwge1xuICAgICAgICBzcGVlZDogX3RoaXMuY3VycmVudFNwZWVkLFxuICAgICAgICB0eXBlOiBfdGhpcy5jdXJyZW50VHlwZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zcGVlZEdyb3VwLm9uKCdtb3VzZXdoZWVsJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB2YXIgcG9pbnRlck1hdHJpeCA9IF90aGlzLnNwZWVkUG9pbnQuYXR0cignbWF0cml4JykgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgdmFyIGN1cnJlbnRQb2ludGVyWSA9IHBvaW50ZXJNYXRyaXhbN107XG5cbiAgICAgIHZhciBjdXJyZW50WUlkeCA9IF90aGlzLnNwZWVkQXhpc1kuaW5kZXhPZihjdXJyZW50UG9pbnRlclkpO1xuXG4gICAgICBpZiAoY3VycmVudFlJZHggPT09IC0xKSB7XG4gICAgICAgIC8vIOaJvuWIsOacgOi/keeahOS4gOS4qiB5XG4gICAgICAgIHZhciBtaW5EaXN0XzEgPSBJbmZpbml0eTtcblxuICAgICAgICBfdGhpcy5zcGVlZEF4aXNZLmZvckVhY2goZnVuY3Rpb24gKHksIGlkeCkge1xuICAgICAgICAgIHZhciBkaXN0ID0gTWF0aC5hYnMoeSAtIGN1cnJlbnRQb2ludGVyWSk7XG5cbiAgICAgICAgICBpZiAobWluRGlzdF8xID4gZGlzdCkge1xuICAgICAgICAgICAgbWluRGlzdF8xID0gZGlzdDtcbiAgICAgICAgICAgIGN1cnJlbnRZSWR4ID0gaWR4O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChldnQub3JpZ2luYWxFdmVudC5kZWx0YVkgPiAwKSBjdXJyZW50WUlkeCA9IE1hdGgubWF4KDAsIGN1cnJlbnRZSWR4IC0gMSk7ZWxzZSBjdXJyZW50WUlkeCA9IE1hdGgubWluKF90aGlzLnNwZWVkQXhpc1kubGVuZ3RoIC0gMSwgY3VycmVudFlJZHggKyAxKTtcbiAgICAgIHZhciB5RGlmZiA9IF90aGlzLnNwZWVkQXhpc1lbY3VycmVudFlJZHhdIC0gY3VycmVudFBvaW50ZXJZO1xuICAgICAgcG9pbnRlck1hdHJpeCA9IHRyYW5zZm9ybShwb2ludGVyTWF0cml4LCBbWyd0JywgMCwgeURpZmZdXSk7XG5cbiAgICAgIF90aGlzLnNwZWVkUG9pbnQuc2V0TWF0cml4KHBvaW50ZXJNYXRyaXgpO1xuXG4gICAgICBfdGhpcy5jdXJyZW50U3BlZWQgPSBfdGhpcy5zcGVlZEF4aXNZLmxlbmd0aCAtIGN1cnJlbnRZSWR4O1xuXG4gICAgICBfdGhpcy5zcGVlZFRleHQuYXR0cigndGV4dCcsIF90aGlzLmN1cnJlbnRTcGVlZCArIFwiLjBYXCIpO1xuXG4gICAgICBfdGhpcy5ncm91cC5lbWl0KFRJTUVCQVJfQ09ORklHX0NIQU5HRSwge1xuICAgICAgICBzcGVlZDogX3RoaXMuY3VycmVudFNwZWVkLFxuICAgICAgICB0eXBlOiBfdGhpcy5jdXJyZW50VHlwZVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy50b2dnbGVHcm91cCkge1xuICAgICAgdGhpcy50b2dnbGVHcm91cC5vbigndG9nZ2xlLW1vZGVsOmNsaWNrJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuXG4gICAgICAgIHZhciBpc0NoZWNrZWQgPSBldnQudGFyZ2V0LmdldCgnaXNDaGVja2VkJyk7XG5cbiAgICAgICAgaWYgKCFpc0NoZWNrZWQpIHtcbiAgICAgICAgICBfdGhpcy5jaGVja2VkSWNvbi5zaG93KCk7XG5cbiAgICAgICAgICBfdGhpcy5jaGVja2VkVGV4dC5hdHRyKCd0ZXh0JywgKChfYSA9IF90aGlzLmNvbnRyb2xsZXJDZmcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50aW1lUmFuZ2VDb250cm9sbGVyVGV4dCkgfHwgJ+aXtumXtOiMg+WbtCcpO1xuXG4gICAgICAgICAgX3RoaXMuY3VycmVudFR5cGUgPSAnc2luZ2xlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5jaGVja2VkSWNvbi5oaWRlKCk7XG5cbiAgICAgICAgICBfdGhpcy5jaGVja2VkVGV4dC5hdHRyKCd0ZXh0JywgKChfYiA9IF90aGlzLmNvbnRyb2xsZXJDZmcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50aW1lUG9pbnRDb250cm9sbGVyVGV4dCkgfHwgJ+WNleS4gOaXtumXtCcpO1xuXG4gICAgICAgICAgX3RoaXMuY3VycmVudFR5cGUgPSAncmFuZ2UnO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZ0LnRhcmdldC5zZXQoJ2lzQ2hlY2tlZCcsICFpc0NoZWNrZWQpO1xuXG4gICAgICAgIF90aGlzLmdyb3VwLmVtaXQoVElNRUJBUl9DT05GSUdfQ0hBTkdFLCB7XG4gICAgICAgICAgdHlwZTogX3RoaXMuY3VycmVudFR5cGUsXG4gICAgICAgICAgc3BlZWQ6IF90aGlzLmN1cnJlbnRTcGVlZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBDb250cm9sbGVyQnRuLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc3BlZWRHcm91cC5vZmYoJ3NwZWVkLXJlY3Q6Y2xpY2snKTtcblxuICAgIGlmICh0aGlzLnRvZ2dsZUdyb3VwKSB7XG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwLm9mZigndG9nZ2xlLW1vZGVsOmNsaWNrJyk7XG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLnNwZWVkR3JvdXAuZGVzdHJveSgpO1xuICB9O1xuXG4gIHJldHVybiBDb250cm9sbGVyQnRuO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBDb250cm9sbGVyQnRuOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/controllerBtn.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/handler.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/handler.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\nvar DEFAULT_STYLE = {\n fill: '#1890ff',\n stroke: '#1890ff',\n type: 'trend',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize',\n // 高亮的颜色\n highLightFill: '#0050b3'\n};\nvar SIMPLE_DEFAULT_STYLE = {\n fill: '#fff',\n stroke: '#1890ff',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize'\n};\n\nvar Handler =\n/** @class */\nfunction () {\n function Handler(cfg) {\n var group = cfg.group,\n name = cfg.name,\n type = cfg.type,\n _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 2 : _c,\n _d = cfg.height,\n height = _d === void 0 ? 24 : _d,\n _e = cfg.style,\n style = _e === void 0 ? {} : _e;\n this.group = group;\n this.name = name;\n this.handleType = type;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n\n if (type === 'trend') {\n this.style = __assign(__assign({}, DEFAULT_STYLE), style);\n } else if (type === 'simple') {\n this.style = __assign(__assign({}, SIMPLE_DEFAULT_STYLE), style);\n }\n\n this.renderHandle();\n }\n /**\n * 设置位置 x\n * @param x\n */\n\n\n Handler.prototype.setX = function (x) {\n this.setXY(x, undefined);\n };\n /**\n * 设置位置 y\n * @param y\n */\n\n\n Handler.prototype.setY = function (y) {\n this.setXY(undefined, y);\n };\n\n Handler.prototype.setXY = function (x, y) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(x)) {\n this.x = x;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(y)) {\n this.y = y;\n }\n\n this.updateXY();\n };\n /**\n * 初始化组件\n * @private\n */\n\n\n Handler.prototype.renderHandle = function () {\n var _a = this,\n width = _a.width,\n height = _a.height,\n style = _a.style,\n name = _a.name;\n\n var fill = style.fill,\n stroke = style.stroke,\n radius = style.radius,\n opacity = style.opacity,\n cursor = style.cursor;\n this.handleGroup = this.group.addGroup(); // 趋势图时的 handle\n\n if (this.handleType === 'trend') {\n // 垂直线\n this.verticalLine = this.handleGroup.addShape('rect', {\n attrs: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: name + \"-handler\"\n });\n this.topCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: 0,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: name + \"-handler\"\n });\n this.bottomCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: height,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor\n },\n name: name + \"-handler\"\n });\n } else if (this.handleType === 'simple') {\n this.topCircle = this.handleGroup.addShape('circle', {\n attrs: {\n x: width / 2,\n y: height / 2,\n r: 2 * width,\n fill: fill,\n stroke: stroke,\n radius: radius,\n opacity: opacity,\n cursor: cursor,\n lineWidth: 2\n },\n name: name + \"-handler\"\n });\n } // 移动到对应的位置\n\n\n this.updateXY();\n\n if (this.handleType === 'trend') {\n this.bindTrendEvents();\n } else if (this.handleType === 'simple') {\n this.bindSimpleEvents();\n }\n };\n\n Handler.prototype.bindSimpleEvents = function () {\n var _this = this;\n\n var name = this.name;\n this.handleGroup.on(name + \"-handler:mouseenter\", function () {\n var highLightFill = _this.style.highLightFill;\n\n _this.topCircle.attr('fill', highLightFill);\n });\n this.handleGroup.on(name + \"-handler:mouseleave\", function () {\n var fill = _this.style.fill;\n\n _this.topCircle.attr('fill', fill);\n });\n };\n\n Handler.prototype.bindTrendEvents = function () {\n var _this = this;\n\n var name = this.name;\n this.handleGroup.on(name + \"-handler:mouseenter\", function () {\n var highLightFill = _this.style.highLightFill;\n\n _this.verticalLine.attr('fill', highLightFill);\n\n _this.topCircle.attr('fill', highLightFill);\n\n _this.bottomCircle.attr('fill', highLightFill);\n });\n this.handleGroup.on(name + \"-handler:mouseleave\", function () {\n var fill = _this.style.fill;\n\n _this.verticalLine.attr('fill', fill);\n\n _this.topCircle.attr('fill', fill);\n\n _this.bottomCircle.attr('fill', fill);\n });\n };\n\n Handler.prototype.show = function () {\n this.handleGroup.show();\n };\n\n Handler.prototype.hide = function () {\n this.handleGroup.hide();\n };\n\n Handler.prototype.updateXY = function () {\n this.handleGroup.setMatrix([1, 0, 0, 0, 1, 0, this.x, this.y, 1]);\n };\n\n return Handler;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Handler);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci9oYW5kbGVyLmpzPzdmNjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUM7QUFDdkMsS0FBSztBQUNMLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci9oYW5kbGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIERFRkFVTFRfU1RZTEUgPSB7XG4gIGZpbGw6ICcjMTg5MGZmJyxcbiAgc3Ryb2tlOiAnIzE4OTBmZicsXG4gIHR5cGU6ICd0cmVuZCcsXG4gIHJhZGl1czogMixcbiAgb3BhY2l0eTogMSxcbiAgY3Vyc29yOiAnZXctcmVzaXplJyxcbiAgLy8g6auY5Lqu55qE6aKc6ImyXG4gIGhpZ2hMaWdodEZpbGw6ICcjMDA1MGIzJ1xufTtcbnZhciBTSU1QTEVfREVGQVVMVF9TVFlMRSA9IHtcbiAgZmlsbDogJyNmZmYnLFxuICBzdHJva2U6ICcjMTg5MGZmJyxcbiAgcmFkaXVzOiAyLFxuICBvcGFjaXR5OiAxLFxuICBjdXJzb3I6ICdldy1yZXNpemUnXG59O1xuXG52YXIgSGFuZGxlciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEhhbmRsZXIoY2ZnKSB7XG4gICAgdmFyIGdyb3VwID0gY2ZnLmdyb3VwLFxuICAgICAgICBuYW1lID0gY2ZnLm5hbWUsXG4gICAgICAgIHR5cGUgPSBjZmcudHlwZSxcbiAgICAgICAgX2EgPSBjZmcueCxcbiAgICAgICAgeCA9IF9hID09PSB2b2lkIDAgPyAwIDogX2EsXG4gICAgICAgIF9iID0gY2ZnLnksXG4gICAgICAgIHkgPSBfYiA9PT0gdm9pZCAwID8gMCA6IF9iLFxuICAgICAgICBfYyA9IGNmZy53aWR0aCxcbiAgICAgICAgd2lkdGggPSBfYyA9PT0gdm9pZCAwID8gMiA6IF9jLFxuICAgICAgICBfZCA9IGNmZy5oZWlnaHQsXG4gICAgICAgIGhlaWdodCA9IF9kID09PSB2b2lkIDAgPyAyNCA6IF9kLFxuICAgICAgICBfZSA9IGNmZy5zdHlsZSxcbiAgICAgICAgc3R5bGUgPSBfZSA9PT0gdm9pZCAwID8ge30gOiBfZTtcbiAgICB0aGlzLmdyb3VwID0gZ3JvdXA7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmhhbmRsZVR5cGUgPSB0eXBlO1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgdGhpcy5zdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX1NUWUxFKSwgc3R5bGUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRoaXMuc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgU0lNUExFX0RFRkFVTFRfU1RZTEUpLCBzdHlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJIYW5kbGUoKTtcbiAgfVxuICAvKipcbiAgICog6K6+572u5L2N572uIHhcbiAgICogQHBhcmFtIHhcbiAgICovXG5cblxuICBIYW5kbGVyLnByb3RvdHlwZS5zZXRYID0gZnVuY3Rpb24gKHgpIHtcbiAgICB0aGlzLnNldFhZKHgsIHVuZGVmaW5lZCk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7kvY3nva4geVxuICAgKiBAcGFyYW0geVxuICAgKi9cblxuXG4gIEhhbmRsZXIucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgIHRoaXMuc2V0WFkodW5kZWZpbmVkLCB5KTtcbiAgfTtcblxuICBIYW5kbGVyLnByb3RvdHlwZS5zZXRYWSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgaWYgKGlzTnVtYmVyKHgpKSB7XG4gICAgICB0aGlzLnggPSB4O1xuICAgIH1cblxuICAgIGlmIChpc051bWJlcih5KSkge1xuICAgICAgdGhpcy55ID0geTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVhZKCk7XG4gIH07XG4gIC8qKlxuICAgKiDliJ3lp4vljJbnu4Tku7ZcbiAgICogQHByaXZhdGVcbiAgICovXG5cblxuICBIYW5kbGVyLnByb3RvdHlwZS5yZW5kZXJIYW5kbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICBzdHlsZSA9IF9hLnN0eWxlLFxuICAgICAgICBuYW1lID0gX2EubmFtZTtcblxuICAgIHZhciBmaWxsID0gc3R5bGUuZmlsbCxcbiAgICAgICAgc3Ryb2tlID0gc3R5bGUuc3Ryb2tlLFxuICAgICAgICByYWRpdXMgPSBzdHlsZS5yYWRpdXMsXG4gICAgICAgIG9wYWNpdHkgPSBzdHlsZS5vcGFjaXR5LFxuICAgICAgICBjdXJzb3IgPSBzdHlsZS5jdXJzb3I7XG4gICAgdGhpcy5oYW5kbGVHcm91cCA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoKTsgLy8g6LaL5Yq/5Zu+5pe255qEIGhhbmRsZVxuXG4gICAgaWYgKHRoaXMuaGFuZGxlVHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgLy8g5Z6C55u057q/XG4gICAgICB0aGlzLnZlcnRpY2FsTGluZSA9IHRoaXMuaGFuZGxlR3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICBmaWxsOiBmaWxsLFxuICAgICAgICAgIHN0cm9rZTogc3Ryb2tlLFxuICAgICAgICAgIHJhZGl1czogcmFkaXVzLFxuICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHksXG4gICAgICAgICAgY3Vyc29yOiBjdXJzb3JcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogbmFtZSArIFwiLWhhbmRsZXJcIlxuICAgICAgfSk7XG4gICAgICB0aGlzLnRvcENpcmNsZSA9IHRoaXMuaGFuZGxlR3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICB4OiB3aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiAyICogd2lkdGgsXG4gICAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgICByYWRpdXM6IHJhZGl1cyxcbiAgICAgICAgICBvcGFjaXR5OiBvcGFjaXR5LFxuICAgICAgICAgIGN1cnNvcjogY3Vyc29yXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6IG5hbWUgKyBcIi1oYW5kbGVyXCJcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ib3R0b21DaXJjbGUgPSB0aGlzLmhhbmRsZUdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IGhlaWdodCxcbiAgICAgICAgICByOiAyICogd2lkdGgsXG4gICAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgICByYWRpdXM6IHJhZGl1cyxcbiAgICAgICAgICBvcGFjaXR5OiBvcGFjaXR5LFxuICAgICAgICAgIGN1cnNvcjogY3Vyc29yXG4gICAgICAgIH0sXG4gICAgICAgIG5hbWU6IG5hbWUgKyBcIi1oYW5kbGVyXCJcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYW5kbGVUeXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy50b3BDaXJjbGUgPSB0aGlzLmhhbmRsZUdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogMiAqIHdpZHRoLFxuICAgICAgICAgIGZpbGw6IGZpbGwsXG4gICAgICAgICAgc3Ryb2tlOiBzdHJva2UsXG4gICAgICAgICAgcmFkaXVzOiByYWRpdXMsXG4gICAgICAgICAgb3BhY2l0eTogb3BhY2l0eSxcbiAgICAgICAgICBjdXJzb3I6IGN1cnNvcixcbiAgICAgICAgICBsaW5lV2lkdGg6IDJcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogbmFtZSArIFwiLWhhbmRsZXJcIlxuICAgICAgfSk7XG4gICAgfSAvLyDnp7vliqjliLDlr7nlupTnmoTkvY3nva5cblxuXG4gICAgdGhpcy51cGRhdGVYWSgpO1xuXG4gICAgaWYgKHRoaXMuaGFuZGxlVHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgdGhpcy5iaW5kVHJlbmRFdmVudHMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGFuZGxlVHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRoaXMuYmluZFNpbXBsZUV2ZW50cygpO1xuICAgIH1cbiAgfTtcblxuICBIYW5kbGVyLnByb3RvdHlwZS5iaW5kU2ltcGxlRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTtcbiAgICB0aGlzLmhhbmRsZUdyb3VwLm9uKG5hbWUgKyBcIi1oYW5kbGVyOm1vdXNlZW50ZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGhpZ2hMaWdodEZpbGwgPSBfdGhpcy5zdHlsZS5oaWdoTGlnaHRGaWxsO1xuXG4gICAgICBfdGhpcy50b3BDaXJjbGUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlR3JvdXAub24obmFtZSArIFwiLWhhbmRsZXI6bW91c2VsZWF2ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZmlsbCA9IF90aGlzLnN0eWxlLmZpbGw7XG5cbiAgICAgIF90aGlzLnRvcENpcmNsZS5hdHRyKCdmaWxsJywgZmlsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgSGFuZGxlci5wcm90b3R5cGUuYmluZFRyZW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTtcbiAgICB0aGlzLmhhbmRsZUdyb3VwLm9uKG5hbWUgKyBcIi1oYW5kbGVyOm1vdXNlZW50ZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGhpZ2hMaWdodEZpbGwgPSBfdGhpcy5zdHlsZS5oaWdoTGlnaHRGaWxsO1xuXG4gICAgICBfdGhpcy52ZXJ0aWNhbExpbmUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuXG4gICAgICBfdGhpcy50b3BDaXJjbGUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuXG4gICAgICBfdGhpcy5ib3R0b21DaXJjbGUuYXR0cignZmlsbCcsIGhpZ2hMaWdodEZpbGwpO1xuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlR3JvdXAub24obmFtZSArIFwiLWhhbmRsZXI6bW91c2VsZWF2ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZmlsbCA9IF90aGlzLnN0eWxlLmZpbGw7XG5cbiAgICAgIF90aGlzLnZlcnRpY2FsTGluZS5hdHRyKCdmaWxsJywgZmlsbCk7XG5cbiAgICAgIF90aGlzLnRvcENpcmNsZS5hdHRyKCdmaWxsJywgZmlsbCk7XG5cbiAgICAgIF90aGlzLmJvdHRvbUNpcmNsZS5hdHRyKCdmaWxsJywgZmlsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgSGFuZGxlci5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmhhbmRsZUdyb3VwLnNob3coKTtcbiAgfTtcblxuICBIYW5kbGVyLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaGFuZGxlR3JvdXAuaGlkZSgpO1xuICB9O1xuXG4gIEhhbmRsZXIucHJvdG90eXBlLnVwZGF0ZVhZID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaGFuZGxlR3JvdXAuc2V0TWF0cml4KFsxLCAwLCAwLCAwLCAxLCAwLCB0aGlzLngsIHRoaXMueSwgMV0pO1xuICB9O1xuXG4gIHJldHVybiBIYW5kbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBIYW5kbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/handler.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/index.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-canvas */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js\");\n/* harmony import */ var _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\n/* harmony import */ var _trendTimeBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./trendTimeBar */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trendTimeBar.js\");\n/* harmony import */ var _timeBarSlice__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./timeBarSlice */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarSlice.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * 基于 G 的时间轴组件\n */\n\n\n\n\n\n\n\n\n\n // simple 版本默认高度\n\nvar DEFAULT_SIMPLE_HEIGHT = 4; // trend 版本默认高度\n\nvar DEFAULT_TREND_HEIGHT = 26;\n\nvar TimeBar =\n/** @class */\nfunction (_super) {\n __extends(TimeBar, _super);\n\n function TimeBar(config) {\n return _super.call(this, config) || this;\n }\n\n TimeBar.prototype.getDefaultCfgs = function () {\n return {\n container: null,\n className: 'g6-component-timebar',\n padding: 10,\n type: 'trend',\n trend: {\n data: [],\n isArea: false,\n smooth: true\n },\n controllerCfg: {\n speed: 1,\n loop: false\n },\n slider: {\n start: 0.1,\n end: 0.9,\n minText: 'min',\n maxText: 'max'\n },\n tick: {\n start: 0.1,\n end: 0.9,\n data: []\n },\n textStyle: {},\n filterEdge: false\n };\n };\n /**\n * 初始化 TimeBar 的容器\n */\n\n\n TimeBar.prototype.initContainer = function () {\n var graph = this.get('graph');\n var _a = this._cfgs,\n width = _a.width,\n height = _a.height;\n var className = this.get('className') || 'g6-component-timebar';\n var container = this.get('container');\n var graphContainer = this.get('graph').get('container');\n var timeBarContainer;\n\n if (!container) {\n timeBarContainer = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"createDom\"])(\"
\");\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_2__[\"modifyCSS\"])(timeBarContainer, {\n position: 'relative'\n });\n } else {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_7__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n timeBarContainer = container;\n }\n\n graphContainer.appendChild(timeBarContainer);\n this.set('timeBarContainer', timeBarContainer);\n var canvas;\n var renderer = graph.get('renderer');\n\n if (renderer === 'SVG') {\n canvas = new _antv_g_svg__WEBPACK_IMPORTED_MODULE_1__[\"Canvas\"]({\n container: timeBarContainer,\n width: width,\n height: height\n });\n } else {\n canvas = new _antv_g_canvas__WEBPACK_IMPORTED_MODULE_0__[\"Canvas\"]({\n container: timeBarContainer,\n width: width,\n height: height\n });\n }\n\n this.set('canvas', canvas);\n };\n\n TimeBar.prototype.init = function () {\n this.initContainer();\n var canvas = this.get('canvas');\n var timeBarGroup = canvas.addGroup({\n name: 'timebar-group'\n });\n this.set('timeBarGroup', timeBarGroup);\n this.renderTrend();\n this.initEvent();\n var fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.set('fontFamily', fontFamily);\n };\n\n TimeBar.prototype.renderTrend = function () {\n var _a = this._cfgs,\n width = _a.width,\n x = _a.x,\n y = _a.y,\n padding = _a.padding,\n type = _a.type,\n trend = _a.trend,\n slider = _a.slider,\n controllerCfg = _a.controllerCfg,\n textStyle = _a.textStyle,\n tick = _a.tick,\n backgroundStyle = _a.backgroundStyle,\n foregroundStyle = _a.foregroundStyle;\n\n var data = trend.data,\n other = __rest(trend, [\"data\"]);\n\n var realWidth = width - 2 * padding;\n var defaultHeight = type === 'trend' ? DEFAULT_TREND_HEIGHT : DEFAULT_SIMPLE_HEIGHT;\n var graph = this.get('graph');\n var group = this.get('timeBarGroup');\n var canvas = this.get('canvas');\n var timebar = null;\n\n if (type === 'trend' || type === 'simple') {\n timebar = new _trendTimeBar__WEBPACK_IMPORTED_MODULE_4__[\"default\"](__assign(__assign({\n graph: graph,\n canvas: canvas,\n group: group,\n type: type,\n x: x + padding,\n y: type === 'trend' ? y + padding : y + padding + 15,\n width: realWidth,\n height: defaultHeight,\n padding: padding,\n backgroundStyle: backgroundStyle,\n foregroundStyle: foregroundStyle,\n trendCfg: __assign(__assign({}, other), {\n data: data.map(function (d) {\n return d.value;\n })\n })\n }, slider), {\n tick: {\n ticks: data,\n tickLabelFormatter: tick.tickLabelFormatter,\n tickLabelStyle: tick.tickLabelStyle,\n tickLineStyle: tick.tickLineStyle\n },\n handlerStyle: __assign(__assign({}, slider.handlerStyle), {\n height: slider.height || defaultHeight\n }),\n controllerCfg: controllerCfg,\n textStyle: textStyle\n }));\n } else if (type === 'tick') {\n // 刻度时间轴\n timebar = new _timeBarSlice__WEBPACK_IMPORTED_MODULE_5__[\"default\"](__assign({\n graph: graph,\n canvas: canvas,\n group: group,\n x: x + padding,\n y: y + padding\n }, tick));\n }\n\n this.set('timebar', timebar);\n };\n\n TimeBar.prototype.filterData = function (evt) {\n var _a;\n\n var value = evt.value;\n var trendData = null;\n var type = this._cfgs.type;\n\n if (type === 'trend' || type === 'simple') {\n trendData = this._cfgs.trend.data;\n } else if (type === 'tick') {\n trendData = this._cfgs.tick.data;\n }\n\n if (!trendData || trendData.length === 0) {\n console.warn('请配置 TimeBar 组件的数据');\n return;\n }\n\n var rangeChange = this.get('rangeChange');\n var graph = this.get('graph');\n var min = Math.round(trendData.length * value[0]);\n var max = Math.round(trendData.length * value[1]);\n max = max >= trendData.length ? trendData.length - 1 : max;\n min = min >= trendData.length ? trendData.length - 1 : min;\n var tickLabelFormatter = (_a = this._cfgs.tick) === null || _a === void 0 ? void 0 : _a.tickLabelFormatter;\n var minText = tickLabelFormatter ? tickLabelFormatter(trendData[min]) : trendData[min].date;\n var maxText = tickLabelFormatter ? tickLabelFormatter(trendData[max]) : trendData[max].date;\n\n if (type !== 'tick') {\n var timebar = this.get('timebar');\n timebar.setText(minText, maxText);\n }\n\n if (rangeChange) {\n rangeChange(graph, minText, maxText);\n } else {\n // 自动过滤数据,并渲染 graph\n if (!this.cacheGraphData || this.cacheGraphData.nodes && this.cacheGraphData.nodes.length === 0) {\n this.cacheGraphData = graph.get('data'); // graph.save() as GraphData;\n } // 过滤不在 min 和 max 范围内的节点\n\n\n var filterData = this.cacheGraphData.nodes.filter(function (d) {\n return d.date >= trendData[min].date && d.date <= trendData[max].date;\n });\n var nodeIds_1 = filterData.map(function (node) {\n return node.id;\n });\n var fileterEdges = [];\n\n if (this.cacheGraphData.edges) {\n // 过滤 source 或 target 不在 min 和 max 范围内的边\n fileterEdges = this.cacheGraphData.edges.filter(function (edge) {\n return nodeIds_1.includes(edge.source) && nodeIds_1.includes(edge.target);\n });\n\n if (this.get('filterEdge')) {\n fileterEdges = fileterEdges.filter(function (edge) {\n return edge.date >= trendData[min].date && edge.date <= trendData[max].date;\n });\n }\n }\n\n graph.changeData({\n nodes: filterData,\n edges: fileterEdges\n });\n }\n };\n\n TimeBar.prototype.initEvent = function () {\n var _this = this;\n\n var start = 0;\n var end = 0;\n var type = this._cfgs.type;\n\n if (!type || type === 'trend' || type === 'simple') {\n start = this._cfgs.slider.start;\n end = this._cfgs.slider.end;\n } else if (type === 'tick') {\n start = this._cfgs.tick.start;\n end = this._cfgs.tick.end;\n }\n\n var graph = this.get('graph');\n graph.on('afterrender', function (e) {\n _this.filterData({\n value: [start, end]\n });\n }); // 时间轴的值发生改变的事件\n\n graph.on(_constant__WEBPACK_IMPORTED_MODULE_6__[\"VALUE_CHANGE\"], Object(_antv_util__WEBPACK_IMPORTED_MODULE_7__[\"throttle\"])(function (e) {\n _this.filterData(e);\n }, 200, {\n trailing: true,\n leading: true\n }));\n };\n\n TimeBar.prototype.destroy = function () {\n var timebar = this.get('timebar');\n\n if (timebar && timebar.destory) {\n timebar.destory();\n }\n\n _super.prototype.destroy.call(this);\n\n var timeBarContainer = this.get('timeBarContainer');\n\n if (timeBarContainer) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_7__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(timeBarContainer);\n }\n };\n\n return TimeBar;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeBar);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci9pbmRleC5qcz84ZDU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlLFNBQUksSUFBSSxTQUFJO0FBQzNCO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDJIQUEySCxjQUFjO0FBQ3pJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHbUQ7QUFDQTtBQUNHO0FBQzNCO0FBQ2U7QUFDQTtBQUNBO0FBQ007O0FBRWhELDhCQUE4Qjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixnRUFBUztBQUNsQyxNQUFNLGdFQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLFVBQVUsMkRBQVE7QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGtEQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsbUJBQW1CLHFEQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IscURBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCwwQ0FBMEM7QUFDMUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxvQkFBb0IscURBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hELE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsYUFBYSxzREFBWSxFQUFFLDJEQUFRO0FBQ25DO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSwyREFBUTtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxzRUFBTyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9IHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMgfHwgZnVuY3Rpb24gKCkge1xuICB2YXIgX2V4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiBleHRlbmRTdGF0aWNzKGQsIGIpIHtcbiAgICBfZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBkLl9fcHJvdG9fXyA9IGI7XG4gICAgfSB8fCBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZm9yICh2YXIgcCBpbiBiKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gX2V4dGVuZFN0YXRpY3MoZCwgYik7XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuXG4gICAgX2V4dGVuZFN0YXRpY3MoZCwgYik7XG5cbiAgICBmdW5jdGlvbiBfXygpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBkO1xuICAgIH1cblxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgfTtcbn0oKTtcblxudmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG52YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG4gIH1cblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcbi8qKlxuICog5Z+65LqOIEcg55qE5pe26Ze06L2057uE5Lu2XG4gKi9cblxuXG5pbXBvcnQgeyBDYW52YXMgYXMgR0NhbnZhcyB9IGZyb20gJ0BhbnR2L2ctY2FudmFzJztcbmltcG9ydCB7IENhbnZhcyBhcyBHU1ZHQ2FudmFzIH0gZnJvbSAnQGFudHYvZy1zdmcnO1xuaW1wb3J0IHsgY3JlYXRlRG9tLCBtb2RpZnlDU1MgfSBmcm9tICdAYW50di9kb20tdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbmltcG9ydCBUcmVuZFRpbWVCYXIgZnJvbSAnLi90cmVuZFRpbWVCYXInO1xuaW1wb3J0IFRpbWVCYXJTbGljZSBmcm9tICcuL3RpbWVCYXJTbGljZSc7XG5pbXBvcnQgeyBWQUxVRV9DSEFOR0UgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7IGlzU3RyaW5nLCB0aHJvdHRsZSB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyBzaW1wbGUg54mI5pys6buY6K6k6auY5bqmXG5cbnZhciBERUZBVUxUX1NJTVBMRV9IRUlHSFQgPSA0OyAvLyB0cmVuZCDniYjmnKzpu5jorqTpq5jluqZcblxudmFyIERFRkFVTFRfVFJFTkRfSEVJR0hUID0gMjY7XG5cbnZhciBUaW1lQmFyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgX19leHRlbmRzKFRpbWVCYXIsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gVGltZUJhcihjb25maWcpIHtcbiAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY29uZmlnKSB8fCB0aGlzO1xuICB9XG5cbiAgVGltZUJhci5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgIGNsYXNzTmFtZTogJ2c2LWNvbXBvbmVudC10aW1lYmFyJyxcbiAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgdHlwZTogJ3RyZW5kJyxcbiAgICAgIHRyZW5kOiB7XG4gICAgICAgIGRhdGE6IFtdLFxuICAgICAgICBpc0FyZWE6IGZhbHNlLFxuICAgICAgICBzbW9vdGg6IHRydWVcbiAgICAgIH0sXG4gICAgICBjb250cm9sbGVyQ2ZnOiB7XG4gICAgICAgIHNwZWVkOiAxLFxuICAgICAgICBsb29wOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHNsaWRlcjoge1xuICAgICAgICBzdGFydDogMC4xLFxuICAgICAgICBlbmQ6IDAuOSxcbiAgICAgICAgbWluVGV4dDogJ21pbicsXG4gICAgICAgIG1heFRleHQ6ICdtYXgnXG4gICAgICB9LFxuICAgICAgdGljazoge1xuICAgICAgICBzdGFydDogMC4xLFxuICAgICAgICBlbmQ6IDAuOSxcbiAgICAgICAgZGF0YTogW11cbiAgICAgIH0sXG4gICAgICB0ZXh0U3R5bGU6IHt9LFxuICAgICAgZmlsdGVyRWRnZTogZmFsc2VcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog5Yid5aeL5YyWIFRpbWVCYXIg55qE5a655ZmoXG4gICAqL1xuXG5cbiAgVGltZUJhci5wcm90b3R5cGUuaW5pdENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgX2EgPSB0aGlzLl9jZmdzLFxuICAgICAgICB3aWR0aCA9IF9hLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMuZ2V0KCdjbGFzc05hbWUnKSB8fCAnZzYtY29tcG9uZW50LXRpbWViYXInO1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG4gICAgdmFyIGdyYXBoQ29udGFpbmVyID0gdGhpcy5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICB2YXIgdGltZUJhckNvbnRhaW5lcjtcblxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICB0aW1lQmFyQ29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz0nXCIgKyBjbGFzc05hbWUgKyBcIic+PC9kaXY+XCIpO1xuICAgICAgbW9kaWZ5Q1NTKHRpbWVCYXJDb250YWluZXIsIHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgICAgfVxuXG4gICAgICB0aW1lQmFyQ29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH1cblxuICAgIGdyYXBoQ29udGFpbmVyLmFwcGVuZENoaWxkKHRpbWVCYXJDb250YWluZXIpO1xuICAgIHRoaXMuc2V0KCd0aW1lQmFyQ29udGFpbmVyJywgdGltZUJhckNvbnRhaW5lcik7XG4gICAgdmFyIGNhbnZhcztcbiAgICB2YXIgcmVuZGVyZXIgPSBncmFwaC5nZXQoJ3JlbmRlcmVyJyk7XG5cbiAgICBpZiAocmVuZGVyZXIgPT09ICdTVkcnKSB7XG4gICAgICBjYW52YXMgPSBuZXcgR1NWR0NhbnZhcyh7XG4gICAgICAgIGNvbnRhaW5lcjogdGltZUJhckNvbnRhaW5lcixcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBHQ2FudmFzKHtcbiAgICAgICAgY29udGFpbmVyOiB0aW1lQmFyQ29udGFpbmVyLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnY2FudmFzJywgY2FudmFzKTtcbiAgfTtcblxuICBUaW1lQmFyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHRpbWVCYXJHcm91cCA9IGNhbnZhcy5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAndGltZWJhci1ncm91cCdcbiAgICB9KTtcbiAgICB0aGlzLnNldCgndGltZUJhckdyb3VwJywgdGltZUJhckdyb3VwKTtcbiAgICB0aGlzLnJlbmRlclRyZW5kKCk7XG4gICAgdGhpcy5pbml0RXZlbnQoKTtcbiAgICB2YXIgZm9udEZhbWlseSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1mYW1pbHknKSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnIDogJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB0aGlzLnNldCgnZm9udEZhbWlseScsIGZvbnRGYW1pbHkpO1xuICB9O1xuXG4gIFRpbWVCYXIucHJvdG90eXBlLnJlbmRlclRyZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMuX2NmZ3MsXG4gICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgIHggPSBfYS54LFxuICAgICAgICB5ID0gX2EueSxcbiAgICAgICAgcGFkZGluZyA9IF9hLnBhZGRpbmcsXG4gICAgICAgIHR5cGUgPSBfYS50eXBlLFxuICAgICAgICB0cmVuZCA9IF9hLnRyZW5kLFxuICAgICAgICBzbGlkZXIgPSBfYS5zbGlkZXIsXG4gICAgICAgIGNvbnRyb2xsZXJDZmcgPSBfYS5jb250cm9sbGVyQ2ZnLFxuICAgICAgICB0ZXh0U3R5bGUgPSBfYS50ZXh0U3R5bGUsXG4gICAgICAgIHRpY2sgPSBfYS50aWNrLFxuICAgICAgICBiYWNrZ3JvdW5kU3R5bGUgPSBfYS5iYWNrZ3JvdW5kU3R5bGUsXG4gICAgICAgIGZvcmVncm91bmRTdHlsZSA9IF9hLmZvcmVncm91bmRTdHlsZTtcblxuICAgIHZhciBkYXRhID0gdHJlbmQuZGF0YSxcbiAgICAgICAgb3RoZXIgPSBfX3Jlc3QodHJlbmQsIFtcImRhdGFcIl0pO1xuXG4gICAgdmFyIHJlYWxXaWR0aCA9IHdpZHRoIC0gMiAqIHBhZGRpbmc7XG4gICAgdmFyIGRlZmF1bHRIZWlnaHQgPSB0eXBlID09PSAndHJlbmQnID8gREVGQVVMVF9UUkVORF9IRUlHSFQgOiBERUZBVUxUX1NJTVBMRV9IRUlHSFQ7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ3RpbWVCYXJHcm91cCcpO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHRpbWViYXIgPSBudWxsO1xuXG4gICAgaWYgKHR5cGUgPT09ICd0cmVuZCcgfHwgdHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRpbWViYXIgPSBuZXcgVHJlbmRUaW1lQmFyKF9fYXNzaWduKF9fYXNzaWduKHtcbiAgICAgICAgZ3JhcGg6IGdyYXBoLFxuICAgICAgICBjYW52YXM6IGNhbnZhcyxcbiAgICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICB4OiB4ICsgcGFkZGluZyxcbiAgICAgICAgeTogdHlwZSA9PT0gJ3RyZW5kJyA/IHkgKyBwYWRkaW5nIDogeSArIHBhZGRpbmcgKyAxNSxcbiAgICAgICAgd2lkdGg6IHJlYWxXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBkZWZhdWx0SGVpZ2h0LFxuICAgICAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgICAgICBiYWNrZ3JvdW5kU3R5bGU6IGJhY2tncm91bmRTdHlsZSxcbiAgICAgICAgZm9yZWdyb3VuZFN0eWxlOiBmb3JlZ3JvdW5kU3R5bGUsXG4gICAgICAgIHRyZW5kQ2ZnOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3RoZXIpLCB7XG4gICAgICAgICAgZGF0YTogZGF0YS5tYXAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgIHJldHVybiBkLnZhbHVlO1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9LCBzbGlkZXIpLCB7XG4gICAgICAgIHRpY2s6IHtcbiAgICAgICAgICB0aWNrczogZGF0YSxcbiAgICAgICAgICB0aWNrTGFiZWxGb3JtYXR0ZXI6IHRpY2sudGlja0xhYmVsRm9ybWF0dGVyLFxuICAgICAgICAgIHRpY2tMYWJlbFN0eWxlOiB0aWNrLnRpY2tMYWJlbFN0eWxlLFxuICAgICAgICAgIHRpY2tMaW5lU3R5bGU6IHRpY2sudGlja0xpbmVTdHlsZVxuICAgICAgICB9LFxuICAgICAgICBoYW5kbGVyU3R5bGU6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzbGlkZXIuaGFuZGxlclN0eWxlKSwge1xuICAgICAgICAgIGhlaWdodDogc2xpZGVyLmhlaWdodCB8fCBkZWZhdWx0SGVpZ2h0XG4gICAgICAgIH0pLFxuICAgICAgICBjb250cm9sbGVyQ2ZnOiBjb250cm9sbGVyQ2ZnLFxuICAgICAgICB0ZXh0U3R5bGU6IHRleHRTdHlsZVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RpY2snKSB7XG4gICAgICAvLyDliLvluqbml7bpl7TovbRcbiAgICAgIHRpbWViYXIgPSBuZXcgVGltZUJhclNsaWNlKF9fYXNzaWduKHtcbiAgICAgICAgZ3JhcGg6IGdyYXBoLFxuICAgICAgICBjYW52YXM6IGNhbnZhcyxcbiAgICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgICB4OiB4ICsgcGFkZGluZyxcbiAgICAgICAgeTogeSArIHBhZGRpbmdcbiAgICAgIH0sIHRpY2spKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgndGltZWJhcicsIHRpbWViYXIpO1xuICB9O1xuXG4gIFRpbWVCYXIucHJvdG90eXBlLmZpbHRlckRhdGEgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHZhbHVlID0gZXZ0LnZhbHVlO1xuICAgIHZhciB0cmVuZERhdGEgPSBudWxsO1xuICAgIHZhciB0eXBlID0gdGhpcy5fY2Zncy50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICd0cmVuZCcgfHwgdHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRyZW5kRGF0YSA9IHRoaXMuX2NmZ3MudHJlbmQuZGF0YTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aWNrJykge1xuICAgICAgdHJlbmREYXRhID0gdGhpcy5fY2Zncy50aWNrLmRhdGE7XG4gICAgfVxuXG4gICAgaWYgKCF0cmVuZERhdGEgfHwgdHJlbmREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKCfor7fphY3nva4gVGltZUJhciDnu4Tku7bnmoTmlbDmja4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcmFuZ2VDaGFuZ2UgPSB0aGlzLmdldCgncmFuZ2VDaGFuZ2UnKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgbWluID0gTWF0aC5yb3VuZCh0cmVuZERhdGEubGVuZ3RoICogdmFsdWVbMF0pO1xuICAgIHZhciBtYXggPSBNYXRoLnJvdW5kKHRyZW5kRGF0YS5sZW5ndGggKiB2YWx1ZVsxXSk7XG4gICAgbWF4ID0gbWF4ID49IHRyZW5kRGF0YS5sZW5ndGggPyB0cmVuZERhdGEubGVuZ3RoIC0gMSA6IG1heDtcbiAgICBtaW4gPSBtaW4gPj0gdHJlbmREYXRhLmxlbmd0aCA/IHRyZW5kRGF0YS5sZW5ndGggLSAxIDogbWluO1xuICAgIHZhciB0aWNrTGFiZWxGb3JtYXR0ZXIgPSAoX2EgPSB0aGlzLl9jZmdzLnRpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50aWNrTGFiZWxGb3JtYXR0ZXI7XG4gICAgdmFyIG1pblRleHQgPSB0aWNrTGFiZWxGb3JtYXR0ZXIgPyB0aWNrTGFiZWxGb3JtYXR0ZXIodHJlbmREYXRhW21pbl0pIDogdHJlbmREYXRhW21pbl0uZGF0ZTtcbiAgICB2YXIgbWF4VGV4dCA9IHRpY2tMYWJlbEZvcm1hdHRlciA/IHRpY2tMYWJlbEZvcm1hdHRlcih0cmVuZERhdGFbbWF4XSkgOiB0cmVuZERhdGFbbWF4XS5kYXRlO1xuXG4gICAgaWYgKHR5cGUgIT09ICd0aWNrJykge1xuICAgICAgdmFyIHRpbWViYXIgPSB0aGlzLmdldCgndGltZWJhcicpO1xuICAgICAgdGltZWJhci5zZXRUZXh0KG1pblRleHQsIG1heFRleHQpO1xuICAgIH1cblxuICAgIGlmIChyYW5nZUNoYW5nZSkge1xuICAgICAgcmFuZ2VDaGFuZ2UoZ3JhcGgsIG1pblRleHQsIG1heFRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDoh6rliqjov4fmu6TmlbDmja7vvIzlubbmuLLmn5MgZ3JhcGhcbiAgICAgIGlmICghdGhpcy5jYWNoZUdyYXBoRGF0YSB8fCB0aGlzLmNhY2hlR3JhcGhEYXRhLm5vZGVzICYmIHRoaXMuY2FjaGVHcmFwaERhdGEubm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcmFwaERhdGEgPSBncmFwaC5nZXQoJ2RhdGEnKTsgLy8gZ3JhcGguc2F2ZSgpIGFzIEdyYXBoRGF0YTtcbiAgICAgIH0gLy8g6L+H5ruk5LiN5ZyoIG1pbiDlkowgbWF4IOiMg+WbtOWGheeahOiKgueCuVxuXG5cbiAgICAgIHZhciBmaWx0ZXJEYXRhID0gdGhpcy5jYWNoZUdyYXBoRGF0YS5ub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuZGF0ZSA+PSB0cmVuZERhdGFbbWluXS5kYXRlICYmIGQuZGF0ZSA8PSB0cmVuZERhdGFbbWF4XS5kYXRlO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9kZUlkc18xID0gZmlsdGVyRGF0YS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgICB9KTtcbiAgICAgIHZhciBmaWxldGVyRWRnZXMgPSBbXTtcblxuICAgICAgaWYgKHRoaXMuY2FjaGVHcmFwaERhdGEuZWRnZXMpIHtcbiAgICAgICAgLy8g6L+H5rukIHNvdXJjZSDmiJYgdGFyZ2V0IOS4jeWcqCBtaW4g5ZKMIG1heCDojIPlm7TlhoXnmoTovrlcbiAgICAgICAgZmlsZXRlckVkZ2VzID0gdGhpcy5jYWNoZUdyYXBoRGF0YS5lZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZUlkc18xLmluY2x1ZGVzKGVkZ2Uuc291cmNlKSAmJiBub2RlSWRzXzEuaW5jbHVkZXMoZWRnZS50YXJnZXQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5nZXQoJ2ZpbHRlckVkZ2UnKSkge1xuICAgICAgICAgIGZpbGV0ZXJFZGdlcyA9IGZpbGV0ZXJFZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBlZGdlLmRhdGUgPj0gdHJlbmREYXRhW21pbl0uZGF0ZSAmJiBlZGdlLmRhdGUgPD0gdHJlbmREYXRhW21heF0uZGF0ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBncmFwaC5jaGFuZ2VEYXRhKHtcbiAgICAgICAgbm9kZXM6IGZpbHRlckRhdGEsXG4gICAgICAgIGVkZ2VzOiBmaWxldGVyRWRnZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBUaW1lQmFyLnByb3RvdHlwZS5pbml0RXZlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBzdGFydCA9IDA7XG4gICAgdmFyIGVuZCA9IDA7XG4gICAgdmFyIHR5cGUgPSB0aGlzLl9jZmdzLnR5cGU7XG5cbiAgICBpZiAoIXR5cGUgfHwgdHlwZSA9PT0gJ3RyZW5kJyB8fCB0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgc3RhcnQgPSB0aGlzLl9jZmdzLnNsaWRlci5zdGFydDtcbiAgICAgIGVuZCA9IHRoaXMuX2NmZ3Muc2xpZGVyLmVuZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aWNrJykge1xuICAgICAgc3RhcnQgPSB0aGlzLl9jZmdzLnRpY2suc3RhcnQ7XG4gICAgICBlbmQgPSB0aGlzLl9jZmdzLnRpY2suZW5kO1xuICAgIH1cblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ2V0KCdncmFwaCcpO1xuICAgIGdyYXBoLm9uKCdhZnRlcnJlbmRlcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBfdGhpcy5maWx0ZXJEYXRhKHtcbiAgICAgICAgdmFsdWU6IFtzdGFydCwgZW5kXVxuICAgICAgfSk7XG4gICAgfSk7IC8vIOaXtumXtOi9tOeahOWAvOWPkeeUn+aUueWPmOeahOS6i+S7tlxuXG4gICAgZ3JhcGgub24oVkFMVUVfQ0hBTkdFLCB0aHJvdHRsZShmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMuZmlsdGVyRGF0YShlKTtcbiAgICB9LCAyMDAsIHtcbiAgICAgIHRyYWlsaW5nOiB0cnVlLFxuICAgICAgbGVhZGluZzogdHJ1ZVxuICAgIH0pKTtcbiAgfTtcblxuICBUaW1lQmFyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0aW1lYmFyID0gdGhpcy5nZXQoJ3RpbWViYXInKTtcblxuICAgIGlmICh0aW1lYmFyICYmIHRpbWViYXIuZGVzdG9yeSkge1xuICAgICAgdGltZWJhci5kZXN0b3J5KCk7XG4gICAgfVxuXG4gICAgX3N1cGVyLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7XG5cbiAgICB2YXIgdGltZUJhckNvbnRhaW5lciA9IHRoaXMuZ2V0KCd0aW1lQmFyQ29udGFpbmVyJyk7XG5cbiAgICBpZiAodGltZUJhckNvbnRhaW5lcikge1xuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyID0gdGhpcy5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKHRpbWVCYXJDb250YWluZXIpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gVGltZUJhcjtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRpbWVCYXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/path.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/path.js ***! \********************************************************************************/ /*! exports provided: getLinePath, getSmoothLinePath, dataToPath, dataToRectPath, getAreaLineY, linePathToAreaPath, getRectPoints, getRectPath */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLinePath\", function() { return getLinePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSmoothLinePath\", function() { return getSmoothLinePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataToPath\", function() { return dataToPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataToRectPath\", function() { return dataToRectPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAreaLineY\", function() { return getAreaLineY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linePathToAreaPath\", function() { return linePathToAreaPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectPoints\", function() { return getRectPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectPath\", function() { return getRectPath; });\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _antv_scale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/scale */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\nvar __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n/**\n * 点数组转 path\n * @param points\n */\n\nfunction pointsToPath(points) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(points, function (p, idx) {\n var command = idx === 0 ? 'M' : 'L';\n var x = p[0],\n y = p[1];\n return [command, x, y];\n });\n}\n/**\n * 将点连接成路径 path\n * @param points\n */\n\n\nfunction getLinePath(points) {\n return pointsToPath(points);\n}\n/**\n * 将点连成平滑的曲线\n * @param points\n */\n\nfunction getSmoothLinePath(points) {\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points);\n }\n\n var data = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p) {\n // 当前点和上一个点一样的时候,忽略掉\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isEqual\"])(p, data.slice(data.length - 2))) {\n data.push(p[0], p[1]);\n }\n });\n var path = _antv_path_util__WEBPACK_IMPORTED_MODULE_0__[\"catmullRom2Bezier\"](data, false);\n\n var _a = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"head\"])(points),\n x = _a[0],\n y = _a[1];\n\n path.unshift(['M', x, y]);\n return path;\n}\n/**\n * 将数据转成 path,利用 scale 的归一化能力\n * @param data\n * @param width\n * @param height\n * @param smooth\n */\n\nfunction dataToPath(data, width, height, smooth) {\n if (smooth === void 0) {\n smooth = true;\n } // 利用 scale 来获取 y 上的映射\n\n\n var y = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]({\n values: data\n });\n var x = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Category\"]({\n values: Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return idx;\n })\n });\n var points = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n return smooth ? getSmoothLinePath(points) : getLinePath(points);\n}\nfunction dataToRectPath(data, width, height, barWidth) {\n if (barWidth === void 0) {\n barWidth = 5;\n } // 利用 scale 来获取 y 上的映射\n\n\n var y = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]({\n values: data\n });\n var x = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Category\"]({\n values: Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return idx;\n })\n });\n var points = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"map\"])(data, function (v, idx) {\n return [x.scale(idx) * width, height - y.scale(v) * height];\n });\n var rectPoints = [];\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var param = {\n x: point[0],\n y: point[1],\n y0: height,\n size: barWidth\n };\n var rectPoint = getRectPoints(param);\n rectPoints.push.apply(rectPoints, rectPoint);\n }\n\n return getRectPath(rectPoints);\n}\n/**\n * 获得 area 面积的横向连接线的 px 位置\n * @param data\n * @param width\n * @param height\n */\n\nfunction getAreaLineY(data, height) {\n var y = new _antv_scale__WEBPACK_IMPORTED_MODULE_1__[\"Linear\"]({\n values: data\n });\n var lineY = Math.max(0, y.min);\n return height - y.scale(lineY) * height;\n}\n/**\n * 线 path 转 area path\n * @param path\n * @param width\n * @param height\n */\n\nfunction linePathToAreaPath(path, width, height, data) {\n var areaPath = __spreadArray([], path, true);\n\n var lineYPx = getAreaLineY(data, height);\n areaPath.push(['L', width, lineYPx]);\n areaPath.push(['L', 0, lineYPx]);\n areaPath.push(['Z']);\n return areaPath;\n}\n/**\n * @ignore\n * 根据数据点生成矩形的四个关键点\n * @param pointInfo 数据点信息\n * @returns rect points 返回矩形四个顶点信息\n */\n\nfunction getRectPoints(pointInfo) {\n var x = pointInfo.x,\n y = pointInfo.y,\n y0 = pointInfo.y0,\n size = pointInfo.size; // 有 4 种情况,\n // 1. x, y 都不是数组\n // 2. y是数组,x不是\n // 3. x是数组,y不是\n // 4. x, y 都是数组\n\n var yMin;\n var yMax;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(y)) {\n yMin = y[0], yMax = y[1];\n } else {\n yMin = y0;\n yMax = y;\n }\n\n var xMin;\n var xMax;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(x)) {\n xMin = x[0], xMax = x[1];\n } else {\n xMin = x - size / 2;\n xMax = x + size / 2;\n }\n\n var points = [{\n x: xMin,\n y: yMin\n }, {\n x: xMin,\n y: yMax\n }]; // 矩形的四个关键点,结构如下(左下角顺时针连接)\n // 1 ---- 2\n // | |\n // 0 ---- 3\n\n points.push({\n x: xMax,\n y: yMax\n }, {\n x: xMax,\n y: yMin\n });\n return points;\n}\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param isClosed path 是否需要闭合\n * @returns 返回矩形的 path\n */\n\nfunction getRectPath(points, isClosed) {\n if (isClosed === void 0) {\n isClosed = true;\n }\n\n var path = [];\n var firstPoint = points[0];\n path.push(['M', firstPoint.x, firstPoint.y]);\n\n for (var i = 1, len = points.length; i < len; i++) {\n path.push(['L', points[i].x, points[i].y]);\n } // 对于 shape=\"line\" path 不应该闭合,否则会造成 lineCap 绘图属性失效\n\n\n if (isClosed) {\n path.push(['L', firstPoint.x, firstPoint.y]); // 需要闭合\n\n path.push(['z']);\n }\n\n return path;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci9wYXRoLmpzPzZkZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBQW9CLFNBQUksSUFBSSxTQUFJO0FBQ2hDLDBFQUEwRSxPQUFPO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUU0QztBQUNHO0FBQ2dCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxzREFBRztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFLHVEQUFJO0FBQ047QUFDQSxTQUFTLDBEQUFPO0FBQ2hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsYUFBYSxpRUFBMEI7O0FBRXZDLFdBQVcsdURBQUk7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7OztBQUdILGNBQWMsa0RBQU07QUFDcEI7QUFDQSxHQUFHO0FBQ0gsY0FBYyxvREFBUTtBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILGVBQWUsc0RBQUc7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7OztBQUdILGNBQWMsa0RBQU07QUFDcEI7QUFDQSxHQUFHO0FBQ0gsY0FBYyxvREFBUTtBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILGVBQWUsc0RBQUc7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsY0FBYyxrREFBTTtBQUNwQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNLDBEQUFPO0FBQ2I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsTUFBTSwwREFBTztBQUNiO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxTQUFTO0FBQy9DO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQSxpREFBaUQ7O0FBRWpEO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19zcHJlYWRBcnJheSA9IHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5IHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICBhcltpXSA9IGZyb21baV07XG4gICAgfVxuICB9XG4gIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcblxuaW1wb3J0ICogYXMgcGF0aFV0aWwgZnJvbSAnQGFudHYvcGF0aC11dGlsJztcbmltcG9ydCB7IENhdGVnb3J5LCBMaW5lYXIgfSBmcm9tICdAYW50di9zY2FsZSc7XG5pbXBvcnQgeyBtYXAsIGVhY2gsIGlzRXF1YWwsIGhlYWQsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbi8qKlxuICog54K55pWw57uE6L2sIHBhdGhcbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5mdW5jdGlvbiBwb2ludHNUb1BhdGgocG9pbnRzKSB7XG4gIHJldHVybiBtYXAocG9pbnRzLCBmdW5jdGlvbiAocCwgaWR4KSB7XG4gICAgdmFyIGNvbW1hbmQgPSBpZHggPT09IDAgPyAnTScgOiAnTCc7XG4gICAgdmFyIHggPSBwWzBdLFxuICAgICAgICB5ID0gcFsxXTtcbiAgICByZXR1cm4gW2NvbW1hbmQsIHgsIHldO1xuICB9KTtcbn1cbi8qKlxuICog5bCG54K56L+e5o6l5oiQ6Lev5b6EIHBhdGhcbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lUGF0aChwb2ludHMpIHtcbiAgcmV0dXJuIHBvaW50c1RvUGF0aChwb2ludHMpO1xufVxuLyoqXG4gKiDlsIbngrnov57miJDlubPmu5HnmoTmm7Lnur9cbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U21vb3RoTGluZVBhdGgocG9pbnRzKSB7XG4gIGlmIChwb2ludHMubGVuZ3RoIDw9IDIpIHtcbiAgICAvLyDkuKTngrnku6XlhoXnm7TmjqXnu5jliLbmiJDot6/lvoRcbiAgICByZXR1cm4gZ2V0TGluZVBhdGgocG9pbnRzKTtcbiAgfVxuXG4gIHZhciBkYXRhID0gW107XG4gIGVhY2gocG9pbnRzLCBmdW5jdGlvbiAocCkge1xuICAgIC8vIOW9k+WJjeeCueWSjOS4iuS4gOS4queCueS4gOagt+eahOaXtuWAme+8jOW/veeVpeaOiVxuICAgIGlmICghaXNFcXVhbChwLCBkYXRhLnNsaWNlKGRhdGEubGVuZ3RoIC0gMikpKSB7XG4gICAgICBkYXRhLnB1c2gocFswXSwgcFsxXSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIHBhdGggPSBwYXRoVXRpbC5jYXRtdWxsUm9tMkJlemllcihkYXRhLCBmYWxzZSk7XG5cbiAgdmFyIF9hID0gaGVhZChwb2ludHMpLFxuICAgICAgeCA9IF9hWzBdLFxuICAgICAgeSA9IF9hWzFdO1xuXG4gIHBhdGgudW5zaGlmdChbJ00nLCB4LCB5XSk7XG4gIHJldHVybiBwYXRoO1xufVxuLyoqXG4gKiDlsIbmlbDmja7ovazmiJAgcGF0aO+8jOWIqeeUqCBzY2FsZSDnmoTlvZLkuIDljJbog73liptcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gd2lkdGhcbiAqIEBwYXJhbSBoZWlnaHRcbiAqIEBwYXJhbSBzbW9vdGhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGF0YVRvUGF0aChkYXRhLCB3aWR0aCwgaGVpZ2h0LCBzbW9vdGgpIHtcbiAgaWYgKHNtb290aCA9PT0gdm9pZCAwKSB7XG4gICAgc21vb3RoID0gdHJ1ZTtcbiAgfSAvLyDliKnnlKggc2NhbGUg5p2l6I635Y+WIHkg5LiK55qE5pig5bCEXG5cblxuICB2YXIgeSA9IG5ldyBMaW5lYXIoe1xuICAgIHZhbHVlczogZGF0YVxuICB9KTtcbiAgdmFyIHggPSBuZXcgQ2F0ZWdvcnkoe1xuICAgIHZhbHVlczogbWFwKGRhdGEsIGZ1bmN0aW9uICh2LCBpZHgpIHtcbiAgICAgIHJldHVybiBpZHg7XG4gICAgfSlcbiAgfSk7XG4gIHZhciBwb2ludHMgPSBtYXAoZGF0YSwgZnVuY3Rpb24gKHYsIGlkeCkge1xuICAgIHJldHVybiBbeC5zY2FsZShpZHgpICogd2lkdGgsIGhlaWdodCAtIHkuc2NhbGUodikgKiBoZWlnaHRdO1xuICB9KTtcbiAgcmV0dXJuIHNtb290aCA/IGdldFNtb290aExpbmVQYXRoKHBvaW50cykgOiBnZXRMaW5lUGF0aChwb2ludHMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFUb1JlY3RQYXRoKGRhdGEsIHdpZHRoLCBoZWlnaHQsIGJhcldpZHRoKSB7XG4gIGlmIChiYXJXaWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgYmFyV2lkdGggPSA1O1xuICB9IC8vIOWIqeeUqCBzY2FsZSDmnaXojrflj5YgeSDkuIrnmoTmmKDlsIRcblxuXG4gIHZhciB5ID0gbmV3IExpbmVhcih7XG4gICAgdmFsdWVzOiBkYXRhXG4gIH0pO1xuICB2YXIgeCA9IG5ldyBDYXRlZ29yeSh7XG4gICAgdmFsdWVzOiBtYXAoZGF0YSwgZnVuY3Rpb24gKHYsIGlkeCkge1xuICAgICAgcmV0dXJuIGlkeDtcbiAgICB9KVxuICB9KTtcbiAgdmFyIHBvaW50cyA9IG1hcChkYXRhLCBmdW5jdGlvbiAodiwgaWR4KSB7XG4gICAgcmV0dXJuIFt4LnNjYWxlKGlkeCkgKiB3aWR0aCwgaGVpZ2h0IC0geS5zY2FsZSh2KSAqIGhlaWdodF07XG4gIH0pO1xuICB2YXIgcmVjdFBvaW50cyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgIHZhciBwYXJhbSA9IHtcbiAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgeTogcG9pbnRbMV0sXG4gICAgICB5MDogaGVpZ2h0LFxuICAgICAgc2l6ZTogYmFyV2lkdGhcbiAgICB9O1xuICAgIHZhciByZWN0UG9pbnQgPSBnZXRSZWN0UG9pbnRzKHBhcmFtKTtcbiAgICByZWN0UG9pbnRzLnB1c2guYXBwbHkocmVjdFBvaW50cywgcmVjdFBvaW50KTtcbiAgfVxuXG4gIHJldHVybiBnZXRSZWN0UGF0aChyZWN0UG9pbnRzKTtcbn1cbi8qKlxuICog6I635b6XIGFyZWEg6Z2i56ev55qE5qiq5ZCR6L+e5o6l57q/55qEIHB4IOS9jee9rlxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB3aWR0aFxuICogQHBhcmFtIGhlaWdodFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcmVhTGluZVkoZGF0YSwgaGVpZ2h0KSB7XG4gIHZhciB5ID0gbmV3IExpbmVhcih7XG4gICAgdmFsdWVzOiBkYXRhXG4gIH0pO1xuICB2YXIgbGluZVkgPSBNYXRoLm1heCgwLCB5Lm1pbik7XG4gIHJldHVybiBoZWlnaHQgLSB5LnNjYWxlKGxpbmVZKSAqIGhlaWdodDtcbn1cbi8qKlxuICog57q/IHBhdGgg6L2sIGFyZWEgcGF0aFxuICogQHBhcmFtIHBhdGhcbiAqIEBwYXJhbSB3aWR0aFxuICogQHBhcmFtIGhlaWdodFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUGF0aFRvQXJlYVBhdGgocGF0aCwgd2lkdGgsIGhlaWdodCwgZGF0YSkge1xuICB2YXIgYXJlYVBhdGggPSBfX3NwcmVhZEFycmF5KFtdLCBwYXRoLCB0cnVlKTtcblxuICB2YXIgbGluZVlQeCA9IGdldEFyZWFMaW5lWShkYXRhLCBoZWlnaHQpO1xuICBhcmVhUGF0aC5wdXNoKFsnTCcsIHdpZHRoLCBsaW5lWVB4XSk7XG4gIGFyZWFQYXRoLnB1c2goWydMJywgMCwgbGluZVlQeF0pO1xuICBhcmVhUGF0aC5wdXNoKFsnWiddKTtcbiAgcmV0dXJuIGFyZWFQYXRoO1xufVxuLyoqXG4gKiBAaWdub3JlXG4gKiDmoLnmja7mlbDmja7ngrnnlJ/miJDnn6nlvaLnmoTlm5vkuKrlhbPplK7ngrlcbiAqIEBwYXJhbSBwb2ludEluZm8g5pWw5o2u54K55L+h5oGvXG4gKiBAcmV0dXJucyByZWN0IHBvaW50cyDov5Tlm57nn6nlvaLlm5vkuKrpobbngrnkv6Hmga9cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVjdFBvaW50cyhwb2ludEluZm8pIHtcbiAgdmFyIHggPSBwb2ludEluZm8ueCxcbiAgICAgIHkgPSBwb2ludEluZm8ueSxcbiAgICAgIHkwID0gcG9pbnRJbmZvLnkwLFxuICAgICAgc2l6ZSA9IHBvaW50SW5mby5zaXplOyAvLyDmnIkgNCDnp43mg4XlhrXvvIxcbiAgLy8gMS4geCwgeSDpg73kuI3mmK/mlbDnu4RcbiAgLy8gMi4geeaYr+aVsOe7hO+8jHjkuI3mmK9cbiAgLy8gMy4geOaYr+aVsOe7hO+8jHnkuI3mmK9cbiAgLy8gNC4geCwgeSDpg73mmK/mlbDnu4RcblxuICB2YXIgeU1pbjtcbiAgdmFyIHlNYXg7XG5cbiAgaWYgKGlzQXJyYXkoeSkpIHtcbiAgICB5TWluID0geVswXSwgeU1heCA9IHlbMV07XG4gIH0gZWxzZSB7XG4gICAgeU1pbiA9IHkwO1xuICAgIHlNYXggPSB5O1xuICB9XG5cbiAgdmFyIHhNaW47XG4gIHZhciB4TWF4O1xuXG4gIGlmIChpc0FycmF5KHgpKSB7XG4gICAgeE1pbiA9IHhbMF0sIHhNYXggPSB4WzFdO1xuICB9IGVsc2Uge1xuICAgIHhNaW4gPSB4IC0gc2l6ZSAvIDI7XG4gICAgeE1heCA9IHggKyBzaXplIC8gMjtcbiAgfVxuXG4gIHZhciBwb2ludHMgPSBbe1xuICAgIHg6IHhNaW4sXG4gICAgeTogeU1pblxuICB9LCB7XG4gICAgeDogeE1pbixcbiAgICB5OiB5TWF4XG4gIH1dOyAvLyDnn6nlvaLnmoTlm5vkuKrlhbPplK7ngrnvvIznu5PmnoTlpoLkuIvvvIjlt6bkuIvop5Lpobrml7bpkojov57mjqXvvIlcbiAgLy8gMSAtLS0tIDJcbiAgLy8gfCAgICAgIHxcbiAgLy8gMCAtLS0tIDNcblxuICBwb2ludHMucHVzaCh7XG4gICAgeDogeE1heCxcbiAgICB5OiB5TWF4XG4gIH0sIHtcbiAgICB4OiB4TWF4LFxuICAgIHk6IHlNaW5cbiAgfSk7XG4gIHJldHVybiBwb2ludHM7XG59XG4vKipcbiAqIEBpZ25vcmVcbiAqIOagueaNruefqeW9ouWFs+mUrueCuee7mOWItiBwYXRoXG4gKiBAcGFyYW0gcG9pbnRzIOWFs+mUrueCueaVsOe7hFxuICogQHBhcmFtIGlzQ2xvc2VkIHBhdGgg5piv5ZCm6ZyA6KaB6Zet5ZCIXG4gKiBAcmV0dXJucyDov5Tlm57nn6nlvaLnmoQgcGF0aFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWN0UGF0aChwb2ludHMsIGlzQ2xvc2VkKSB7XG4gIGlmIChpc0Nsb3NlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICB9XG5cbiAgdmFyIHBhdGggPSBbXTtcbiAgdmFyIGZpcnN0UG9pbnQgPSBwb2ludHNbMF07XG4gIHBhdGgucHVzaChbJ00nLCBmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueV0pO1xuXG4gIGZvciAodmFyIGkgPSAxLCBsZW4gPSBwb2ludHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBwYXRoLnB1c2goWydMJywgcG9pbnRzW2ldLngsIHBvaW50c1tpXS55XSk7XG4gIH0gLy8g5a+55LqOIHNoYXBlPVwibGluZVwiIHBhdGgg5LiN5bqU6K+l6Zet5ZCI77yM5ZCm5YiZ5Lya6YCg5oiQIGxpbmVDYXAg57uY5Zu+5bGe5oCn5aSx5pWIXG5cblxuICBpZiAoaXNDbG9zZWQpIHtcbiAgICBwYXRoLnB1c2goWydMJywgZmlyc3RQb2ludC54LCBmaXJzdFBvaW50LnldKTsgLy8g6ZyA6KaB6Zet5ZCIXG5cbiAgICBwYXRoLnB1c2goWyd6J10pO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/path.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarSlice.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarSlice.js ***! \****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _timeBarTooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeBarTooltip */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarTooltip.js\");\n/* harmony import */ var _controllerBtn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controllerBtn */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/controllerBtn.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\nvar DEFAULT_SELECTEDTICK_STYLE = {\n fill: '#5B8FF9'\n};\nvar DEFAULT_UNSELECTEDTICK_STYLE = {\n fill: '#e6e8e9'\n};\n\nvar TimeBarSlice =\n/** @class */\nfunction () {\n function TimeBarSlice(cfgs) {\n this.frameCount = 0;\n this.fontFamily = 'Arial, sans-serif';\n var graph = cfgs.graph,\n canvas = cfgs.canvas,\n group = cfgs.group,\n width = cfgs.width,\n height = cfgs.height,\n padding = cfgs.padding,\n data = cfgs.data,\n start = cfgs.start,\n end = cfgs.end,\n _a = cfgs.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfgs.y,\n y = _b === void 0 ? 0 : _b,\n tickLabelFormatter = cfgs.tickLabelFormatter,\n _c = cfgs.selectedTickStyle,\n selectedTickStyle = _c === void 0 ? DEFAULT_SELECTEDTICK_STYLE : _c,\n _d = cfgs.unselectedTickStyle,\n unselectedTickStyle = _d === void 0 ? DEFAULT_UNSELECTEDTICK_STYLE : _d,\n tooltipBackgroundColor = cfgs.tooltipBackgroundColor,\n tooltipFomatter = cfgs.tooltipFomatter;\n this.graph = graph;\n this.group = group;\n this.sliceGroup = group.addGroup({\n name: 'slice-group'\n });\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this.padding = padding;\n this.data = data;\n this.start = start;\n this.end = end;\n this.tickLabelFormatter = tickLabelFormatter;\n this.selectedTickStyle = selectedTickStyle;\n this.unselectedTickStyle = unselectedTickStyle;\n this.x = x;\n this.y = y;\n this.tooltipBackgroundColor = tooltipBackgroundColor;\n this.tooltipFomatter = tooltipFomatter; // 初始化 fontFamily,如果有浏览器,取 body 上的字体,防止文字更新时局部渲染造成的重影\n\n this.fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.renderSlices();\n this.initEvent();\n }\n\n TimeBarSlice.prototype.renderSlices = function () {\n var _this = this;\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n padding = _a.padding,\n data = _a.data,\n start = _a.start,\n end = _a.end,\n tickLabelFormatter = _a.tickLabelFormatter,\n selectedTickStyle = _a.selectedTickStyle,\n unselectedTickStyle = _a.unselectedTickStyle;\n\n var realWidth = width - 2 * padding;\n var fontSize = 10;\n var labelLineHeight = 4;\n var labelAreaHeight = 3 * padding + labelLineHeight + fontSize;\n var ticksAreaHeight = height - labelAreaHeight - 2 * padding;\n var gap = 2;\n var ticksLength = data.length;\n var tickWidth = (realWidth - gap * (ticksLength - 1)) / ticksLength;\n this.tickWidth = tickWidth;\n var sliceGroup = this.sliceGroup;\n var tickRects = [];\n var labels = [];\n var startTickId = Math.round(ticksLength * start);\n var endTickId = Math.round(ticksLength * end);\n this.startTickRectId = startTickId;\n this.endTickRectId = endTickId;\n data.forEach(function (d, i) {\n // draw the tick rects\n var selected = i >= startTickId && i <= endTickId;\n var tickStyle = selected ? selectedTickStyle : unselectedTickStyle;\n var rect = sliceGroup.addShape('rect', {\n attrs: __assign({\n x: padding + i * (tickWidth + gap),\n y: padding,\n width: tickWidth,\n height: ticksAreaHeight\n }, tickStyle),\n draggable: true,\n name: \"tick-rect-\" + i\n }); // draw the pick tick rects\n\n var pickRect = sliceGroup.addShape('rect', {\n attrs: {\n x: padding + i * tickWidth + gap * (2 * i - 1) / 2,\n y: padding,\n width: i === 0 || i === ticksLength - 1 ? tickWidth + gap / 2 : tickWidth + gap,\n height: ticksAreaHeight,\n fill: '#fff',\n opacity: 0\n },\n draggable: true,\n name: \"pick-rect-\" + i\n });\n pickRect.toFront();\n var rectBBox = rect.getBBox();\n var centerX = (rectBBox.minX + rectBBox.maxX) / 2;\n tickRects.push({\n rect: rect,\n pickRect: pickRect,\n value: d.date,\n x: centerX,\n y: rectBBox.minY\n });\n var label;\n\n if (tickLabelFormatter) {\n label = tickLabelFormatter(d);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(label) && label) {\n // return true\n label = d.date;\n }\n } else if (i % Math.round(ticksLength / 10) === 0) {\n label = d.date;\n }\n\n if (label) {\n labels.push(label); // draw tick lines\n\n var lineStartY = rectBBox.maxY + padding * 2;\n sliceGroup.addShape('line', {\n attrs: {\n stroke: '#BFBFBF',\n x1: centerX,\n y1: lineStartY,\n x2: centerX,\n y2: lineStartY + labelLineHeight\n }\n });\n var labelStartY = lineStartY + labelLineHeight + padding;\n var text = sliceGroup.addShape('text', {\n attrs: {\n fill: '#8c8c8c',\n stroke: '#fff',\n lineWidth: 1,\n x: centerX,\n y: labelStartY,\n textAlign: 'center',\n text: label,\n textBaseline: 'top',\n fontSize: 10,\n fontFamily: _this.fontFamily || 'Arial, sans-serif'\n },\n capture: false\n });\n var textBBox = text.getBBox();\n\n if (textBBox.maxX > width) {\n text.attr('textAlign', 'right');\n } else if (textBBox.minX < 0) {\n text.attr('textAlign', 'left');\n } // draw tick labels\n\n }\n });\n this.tickRects = tickRects; // 渲染播放、快进和后退的控制按钮\n\n var group = this.group;\n this.currentSpeed = 1;\n this.controllerBtnGroup = new _controllerBtn__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n group: group,\n x: this.x,\n y: this.y + height + 5,\n width: width,\n height: 40,\n hideTimeTypeController: true,\n speed: this.currentSpeed,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n });\n };\n\n TimeBarSlice.prototype.initEvent = function () {\n var _this = this;\n\n var sliceGroup = this.sliceGroup;\n sliceGroup.on('click', function (e) {\n var targetRect = e.target;\n if (targetRect.get('type') !== 'rect' || !targetRect.get('name')) return;\n var id = parseInt(targetRect.get('name').split('-')[2], 10);\n\n if (!isNaN(id)) {\n var tickRects_1 = _this.tickRects; // cancel the selected ticks\n\n var unselectedTickStyle_1 = _this.unselectedTickStyle;\n tickRects_1.forEach(function (tickRect) {\n tickRect.rect.attr(unselectedTickStyle_1);\n });\n var selectedTickStyle = _this.selectedTickStyle;\n tickRects_1[id].rect.attr(selectedTickStyle);\n _this.startTickRectId = id;\n _this.endTickRectId = id;\n var ticksLength = tickRects_1.length;\n var start = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"VALUE_CHANGE\"], {\n value: [start, start]\n });\n }\n });\n sliceGroup.on('dragstart', function (e) {\n var tickRects = _this.tickRects; // cancel the selected ticks\n\n var unselectedTickStyle = _this.unselectedTickStyle;\n tickRects.forEach(function (tickRect) {\n tickRect.rect.attr(unselectedTickStyle);\n });\n var targetRect = e.target;\n var id = parseInt(targetRect.get('name').split('-')[2], 10);\n var selectedTickStyle = _this.selectedTickStyle;\n tickRects[id].rect.attr(selectedTickStyle);\n _this.startTickRectId = id;\n var ticksLength = tickRects.length;\n var start = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"VALUE_CHANGE\"], {\n value: [start, start]\n });\n\n _this.dragging = true;\n });\n sliceGroup.on('dragover', function (e) {\n if (!_this.dragging) return;\n if (e.target.get('type') !== 'rect') return;\n var id = parseInt(e.target.get('name').split('-')[2], 10);\n var startTickRectId = _this.startTickRectId;\n var tickRects = _this.tickRects;\n var selectedTickStyle = _this.selectedTickStyle;\n var unselectedTickStyle = _this.unselectedTickStyle;\n\n for (var i = 0; i < tickRects.length; i++) {\n var style = i >= startTickRectId && i <= id ? selectedTickStyle : unselectedTickStyle;\n tickRects[i].rect.attr(style);\n }\n\n var ticksLength = tickRects.length;\n _this.endTickRectId = id;\n var start = startTickRectId / ticksLength;\n var end = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"VALUE_CHANGE\"], {\n value: [start, end]\n });\n });\n sliceGroup.on('drop', function (e) {\n if (!_this.dragging) return;\n _this.dragging = false;\n if (e.target.get('type') !== 'rect') return;\n var startTickRectId = _this.startTickRectId;\n var id = parseInt(e.target.get('name').split('-')[2], 10);\n if (id < startTickRectId) return;\n var selectedTickStyle = _this.selectedTickStyle;\n var tickRects = _this.tickRects;\n tickRects[id].rect.attr(selectedTickStyle);\n _this.endTickRectId = id;\n var ticksLength = tickRects.length;\n var start = startTickRectId / ticksLength;\n var end = id / ticksLength;\n\n _this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"VALUE_CHANGE\"], {\n value: [start, end]\n });\n }); // tooltip\n\n var _a = this,\n tooltipBackgroundColor = _a.tooltipBackgroundColor,\n tooltipFomatter = _a.tooltipFomatter,\n canvas = _a.canvas;\n\n var tooltip = new _timeBarTooltip__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n container: canvas.get('container'),\n backgroundColor: tooltipBackgroundColor\n });\n var tickRects = this.tickRects;\n tickRects.forEach(function (tickRect) {\n var pickRect = tickRect.pickRect;\n pickRect.on('mouseenter', function (e) {\n var rect = e.target;\n if (rect.get('type') !== 'rect') return;\n var id = parseInt(rect.get('name').split('-')[2], 10);\n var clientPoint = canvas.getClientByPoint(tickRects[id].x, tickRects[id].y);\n tooltip.show({\n x: tickRects[id].x,\n y: tickRects[id].y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n text: tooltipFomatter ? tooltipFomatter(tickRects[id].value) : tickRects[id].value\n });\n });\n pickRect.on('mouseleave', function (e) {\n tooltip.hide();\n });\n }); // play controller events\n\n var group = this.group; // 播放区按钮控制\n\n /** 播放/暂停事件 */\n\n group.on(_constant__WEBPACK_IMPORTED_MODULE_3__[\"PLAY_PAUSE_BTN\"] + \":click\", function () {\n _this.isPlay = !_this.isPlay;\n\n _this.changePlayStatus();\n }); // 处理前进一步的事件\n\n group.on(_constant__WEBPACK_IMPORTED_MODULE_3__[\"NEXT_STEP_BTN\"] + \":click\", function () {\n _this.updateStartEnd(1);\n }); // 处理后退一步的事件\n\n group.on(_constant__WEBPACK_IMPORTED_MODULE_3__[\"PRE_STEP_BTN\"] + \":click\", function () {\n _this.updateStartEnd(-1);\n });\n group.on(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"], function (_a) {\n var type = _a.type,\n speed = _a.speed;\n _this.currentSpeed = speed;\n });\n };\n\n TimeBarSlice.prototype.changePlayStatus = function (isSync) {\n if (isSync === void 0) {\n isSync = true;\n }\n\n this.controllerBtnGroup.playButton.update({\n isPlay: this.isPlay\n });\n\n if (this.isPlay) {\n // 开始播放\n this.playHandler = this.startPlay();\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMELINE_START\"], null);\n } else {\n // 结束播放\n if (this.playHandler) {\n if (typeof window !== 'undefined') window.cancelAnimationFrame(this.playHandler);\n\n if (isSync) {\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMELINE_END\"], null);\n }\n }\n }\n };\n\n TimeBarSlice.prototype.startPlay = function () {\n var _this = this;\n\n return typeof window !== 'undefined' ? window.requestAnimationFrame(function () {\n var speed = _this.currentSpeed; // 一分钟刷新一次\n\n if (_this.frameCount % (60 / speed) === 0) {\n _this.frameCount = 0;\n\n _this.updateStartEnd(1);\n }\n\n _this.frameCount++;\n\n if (_this.isPlay) {\n _this.playHandler = _this.startPlay();\n }\n }) : undefined;\n };\n\n TimeBarSlice.prototype.updateStartEnd = function (sign) {\n var self = this;\n var tickRects = this.tickRects;\n var ticksLength = tickRects.length;\n var unselectedTickStyle = this.unselectedTickStyle;\n var selectedTickStyle = this.selectedTickStyle;\n var previousEndTickRectId = self.endTickRectId;\n\n if (sign > 0) {\n self.endTickRectId++;\n } else {\n tickRects[self.endTickRectId].rect.attr(unselectedTickStyle);\n self.endTickRectId--;\n } // 若此时 start 与 end 不同,范围前进/后退/播放\n\n\n if (previousEndTickRectId !== self.startTickRectId) {\n if (self.endTickRectId < self.startTickRectId) {\n self.startTickRectId = self.endTickRectId;\n }\n } else {\n // 否则是单帧的前进/后退/播放\n for (var i = self.startTickRectId; i <= self.endTickRectId - 1; i++) {\n tickRects[i].rect.attr(unselectedTickStyle);\n }\n\n self.startTickRectId = self.endTickRectId;\n }\n\n if (tickRects[self.endTickRectId]) {\n tickRects[self.endTickRectId].rect.attr(selectedTickStyle);\n var start = self.startTickRectId / ticksLength;\n var end = self.endTickRectId / ticksLength;\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_3__[\"VALUE_CHANGE\"], {\n value: [start, end]\n });\n }\n };\n\n TimeBarSlice.prototype.destory = function () {\n this.graph.off(_constant__WEBPACK_IMPORTED_MODULE_3__[\"VALUE_CHANGE\"]);\n var group = this.sliceGroup;\n group.off('click');\n group.off('dragstart');\n group.off('dragover');\n group.off('drop');\n this.tickRects.forEach(function (tickRect) {\n var pickRect = tickRect.pickRect;\n pickRect.off('mouseenter');\n pickRect.off('mouseleave');\n });\n this.tickRects.length = 0;\n group.off(_constant__WEBPACK_IMPORTED_MODULE_3__[\"PLAY_PAUSE_BTN\"] + \":click\");\n group.off(_constant__WEBPACK_IMPORTED_MODULE_3__[\"NEXT_STEP_BTN\"] + \":click\");\n group.off(_constant__WEBPACK_IMPORTED_MODULE_3__[\"PRE_STEP_BTN\"] + \":click\");\n group.off(_constant__WEBPACK_IMPORTED_MODULE_3__[\"TIMEBAR_CONFIG_CHANGE\"]);\n this.sliceGroup.destroy();\n };\n\n return TimeBarSlice;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeBarSlice);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90aW1lQmFyU2xpY2UuanM/MjhlYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFc0M7QUFDUTtBQUNGO0FBQ2dHO0FBQzVJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLDJEQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7O0FBRVQ7QUFDQSxLQUFLO0FBQ0wsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0Esa0NBQWtDLHNEQUFhO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QixzREFBWTtBQUNyQztBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBWTtBQUNuQztBQUNBLE9BQU87O0FBRVA7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQVk7QUFDbkM7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHNEQUFZO0FBQ25DO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQWM7QUFDcEM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUCwyQkFBMkI7O0FBRTNCOztBQUVBLGFBQWEsd0RBQWM7QUFDM0I7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVAsYUFBYSx1REFBYTtBQUMxQjtBQUNBLEtBQUssRUFBRTs7QUFFUCxhQUFhLHNEQUFZO0FBQ3pCO0FBQ0EsS0FBSztBQUNMLGFBQWEsK0RBQXFCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0RBQWM7QUFDcEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQixzREFBWTtBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esd0NBQXdDLDZCQUE2QjtBQUNyRTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0RBQVk7QUFDbEM7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixzREFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxjQUFjLHdEQUFjO0FBQzVCLGNBQWMsdURBQWE7QUFDM0IsY0FBYyxzREFBWTtBQUMxQixjQUFjLCtEQUFxQjtBQUNuQztBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYywyRUFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL3RpbWVCYXJTbGljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBUaW1lQmFyVG9vbHRpcCBmcm9tICcuL3RpbWVCYXJUb29sdGlwJztcbmltcG9ydCBDb250cm9sbGVyQnRuIGZyb20gJy4vY29udHJvbGxlckJ0bic7XG5pbXBvcnQgeyBWQUxVRV9DSEFOR0UsIFRJTUVMSU5FX1NUQVJULCBUSU1FTElORV9FTkQsIFBMQVlfUEFVU0VfQlROLCBORVhUX1NURVBfQlROLCBQUkVfU1RFUF9CVE4sIFRJTUVCQVJfQ09ORklHX0NIQU5HRSB9IGZyb20gJy4vY29uc3RhbnQnO1xudmFyIERFRkFVTFRfU0VMRUNURURUSUNLX1NUWUxFID0ge1xuICBmaWxsOiAnIzVCOEZGOSdcbn07XG52YXIgREVGQVVMVF9VTlNFTEVDVEVEVElDS19TVFlMRSA9IHtcbiAgZmlsbDogJyNlNmU4ZTknXG59O1xuXG52YXIgVGltZUJhclNsaWNlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGltZUJhclNsaWNlKGNmZ3MpIHtcbiAgICB0aGlzLmZyYW1lQ291bnQgPSAwO1xuICAgIHRoaXMuZm9udEZhbWlseSA9ICdBcmlhbCwgc2Fucy1zZXJpZic7XG4gICAgdmFyIGdyYXBoID0gY2Zncy5ncmFwaCxcbiAgICAgICAgY2FudmFzID0gY2Zncy5jYW52YXMsXG4gICAgICAgIGdyb3VwID0gY2Zncy5ncm91cCxcbiAgICAgICAgd2lkdGggPSBjZmdzLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBjZmdzLmhlaWdodCxcbiAgICAgICAgcGFkZGluZyA9IGNmZ3MucGFkZGluZyxcbiAgICAgICAgZGF0YSA9IGNmZ3MuZGF0YSxcbiAgICAgICAgc3RhcnQgPSBjZmdzLnN0YXJ0LFxuICAgICAgICBlbmQgPSBjZmdzLmVuZCxcbiAgICAgICAgX2EgPSBjZmdzLngsXG4gICAgICAgIHggPSBfYSA9PT0gdm9pZCAwID8gMCA6IF9hLFxuICAgICAgICBfYiA9IGNmZ3MueSxcbiAgICAgICAgeSA9IF9iID09PSB2b2lkIDAgPyAwIDogX2IsXG4gICAgICAgIHRpY2tMYWJlbEZvcm1hdHRlciA9IGNmZ3MudGlja0xhYmVsRm9ybWF0dGVyLFxuICAgICAgICBfYyA9IGNmZ3Muc2VsZWN0ZWRUaWNrU3R5bGUsXG4gICAgICAgIHNlbGVjdGVkVGlja1N0eWxlID0gX2MgPT09IHZvaWQgMCA/IERFRkFVTFRfU0VMRUNURURUSUNLX1NUWUxFIDogX2MsXG4gICAgICAgIF9kID0gY2Zncy51bnNlbGVjdGVkVGlja1N0eWxlLFxuICAgICAgICB1bnNlbGVjdGVkVGlja1N0eWxlID0gX2QgPT09IHZvaWQgMCA/IERFRkFVTFRfVU5TRUxFQ1RFRFRJQ0tfU1RZTEUgOiBfZCxcbiAgICAgICAgdG9vbHRpcEJhY2tncm91bmRDb2xvciA9IGNmZ3MudG9vbHRpcEJhY2tncm91bmRDb2xvcixcbiAgICAgICAgdG9vbHRpcEZvbWF0dGVyID0gY2Zncy50b29sdGlwRm9tYXR0ZXI7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLnNsaWNlR3JvdXAgPSBncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAnc2xpY2UtZ3JvdXAnXG4gICAgfSk7XG4gICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMucGFkZGluZyA9IHBhZGRpbmc7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIgPSB0aWNrTGFiZWxGb3JtYXR0ZXI7XG4gICAgdGhpcy5zZWxlY3RlZFRpY2tTdHlsZSA9IHNlbGVjdGVkVGlja1N0eWxlO1xuICAgIHRoaXMudW5zZWxlY3RlZFRpY2tTdHlsZSA9IHVuc2VsZWN0ZWRUaWNrU3R5bGU7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHRoaXMudG9vbHRpcEJhY2tncm91bmRDb2xvciA9IHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3I7XG4gICAgdGhpcy50b29sdGlwRm9tYXR0ZXIgPSB0b29sdGlwRm9tYXR0ZXI7IC8vIOWIneWni+WMliBmb250RmFtaWx577yM5aaC5p6c5pyJ5rWP6KeI5Zmo77yM5Y+WIGJvZHkg5LiK55qE5a2X5L2T77yM6Ziy5q2i5paH5a2X5pu05paw5pe25bGA6YOo5riy5p+T6YCg5oiQ55qE6YeN5b2xXG5cbiAgICB0aGlzLmZvbnRGYW1pbHkgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5JykgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJyA6ICdBcmlhbCwgc2Fucy1zZXJpZic7XG4gICAgdGhpcy5yZW5kZXJTbGljZXMoKTtcbiAgICB0aGlzLmluaXRFdmVudCgpO1xuICB9XG5cbiAgVGltZUJhclNsaWNlLnByb3RvdHlwZS5yZW5kZXJTbGljZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF9hLmhlaWdodCxcbiAgICAgICAgcGFkZGluZyA9IF9hLnBhZGRpbmcsXG4gICAgICAgIGRhdGEgPSBfYS5kYXRhLFxuICAgICAgICBzdGFydCA9IF9hLnN0YXJ0LFxuICAgICAgICBlbmQgPSBfYS5lbmQsXG4gICAgICAgIHRpY2tMYWJlbEZvcm1hdHRlciA9IF9hLnRpY2tMYWJlbEZvcm1hdHRlcixcbiAgICAgICAgc2VsZWN0ZWRUaWNrU3R5bGUgPSBfYS5zZWxlY3RlZFRpY2tTdHlsZSxcbiAgICAgICAgdW5zZWxlY3RlZFRpY2tTdHlsZSA9IF9hLnVuc2VsZWN0ZWRUaWNrU3R5bGU7XG5cbiAgICB2YXIgcmVhbFdpZHRoID0gd2lkdGggLSAyICogcGFkZGluZztcbiAgICB2YXIgZm9udFNpemUgPSAxMDtcbiAgICB2YXIgbGFiZWxMaW5lSGVpZ2h0ID0gNDtcbiAgICB2YXIgbGFiZWxBcmVhSGVpZ2h0ID0gMyAqIHBhZGRpbmcgKyBsYWJlbExpbmVIZWlnaHQgKyBmb250U2l6ZTtcbiAgICB2YXIgdGlja3NBcmVhSGVpZ2h0ID0gaGVpZ2h0IC0gbGFiZWxBcmVhSGVpZ2h0IC0gMiAqIHBhZGRpbmc7XG4gICAgdmFyIGdhcCA9IDI7XG4gICAgdmFyIHRpY2tzTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgdmFyIHRpY2tXaWR0aCA9IChyZWFsV2lkdGggLSBnYXAgKiAodGlja3NMZW5ndGggLSAxKSkgLyB0aWNrc0xlbmd0aDtcbiAgICB0aGlzLnRpY2tXaWR0aCA9IHRpY2tXaWR0aDtcbiAgICB2YXIgc2xpY2VHcm91cCA9IHRoaXMuc2xpY2VHcm91cDtcbiAgICB2YXIgdGlja1JlY3RzID0gW107XG4gICAgdmFyIGxhYmVscyA9IFtdO1xuICAgIHZhciBzdGFydFRpY2tJZCA9IE1hdGgucm91bmQodGlja3NMZW5ndGggKiBzdGFydCk7XG4gICAgdmFyIGVuZFRpY2tJZCA9IE1hdGgucm91bmQodGlja3NMZW5ndGggKiBlbmQpO1xuICAgIHRoaXMuc3RhcnRUaWNrUmVjdElkID0gc3RhcnRUaWNrSWQ7XG4gICAgdGhpcy5lbmRUaWNrUmVjdElkID0gZW5kVGlja0lkO1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgICAgLy8gZHJhdyB0aGUgdGljayByZWN0c1xuICAgICAgdmFyIHNlbGVjdGVkID0gaSA+PSBzdGFydFRpY2tJZCAmJiBpIDw9IGVuZFRpY2tJZDtcbiAgICAgIHZhciB0aWNrU3R5bGUgPSBzZWxlY3RlZCA/IHNlbGVjdGVkVGlja1N0eWxlIDogdW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgIHZhciByZWN0ID0gc2xpY2VHcm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiBwYWRkaW5nICsgaSAqICh0aWNrV2lkdGggKyBnYXApLFxuICAgICAgICAgIHk6IHBhZGRpbmcsXG4gICAgICAgICAgd2lkdGg6IHRpY2tXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHRpY2tzQXJlYUhlaWdodFxuICAgICAgICB9LCB0aWNrU3R5bGUpLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIG5hbWU6IFwidGljay1yZWN0LVwiICsgaVxuICAgICAgfSk7IC8vIGRyYXcgdGhlIHBpY2sgdGljayByZWN0c1xuXG4gICAgICB2YXIgcGlja1JlY3QgPSBzbGljZUdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgICBhdHRyczoge1xuICAgICAgICAgIHg6IHBhZGRpbmcgKyBpICogdGlja1dpZHRoICsgZ2FwICogKDIgKiBpIC0gMSkgLyAyLFxuICAgICAgICAgIHk6IHBhZGRpbmcsXG4gICAgICAgICAgd2lkdGg6IGkgPT09IDAgfHwgaSA9PT0gdGlja3NMZW5ndGggLSAxID8gdGlja1dpZHRoICsgZ2FwIC8gMiA6IHRpY2tXaWR0aCArIGdhcCxcbiAgICAgICAgICBoZWlnaHQ6IHRpY2tzQXJlYUhlaWdodCxcbiAgICAgICAgICBmaWxsOiAnI2ZmZicsXG4gICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICB9LFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIG5hbWU6IFwicGljay1yZWN0LVwiICsgaVxuICAgICAgfSk7XG4gICAgICBwaWNrUmVjdC50b0Zyb250KCk7XG4gICAgICB2YXIgcmVjdEJCb3ggPSByZWN0LmdldEJCb3goKTtcbiAgICAgIHZhciBjZW50ZXJYID0gKHJlY3RCQm94Lm1pblggKyByZWN0QkJveC5tYXhYKSAvIDI7XG4gICAgICB0aWNrUmVjdHMucHVzaCh7XG4gICAgICAgIHJlY3Q6IHJlY3QsXG4gICAgICAgIHBpY2tSZWN0OiBwaWNrUmVjdCxcbiAgICAgICAgdmFsdWU6IGQuZGF0ZSxcbiAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgeTogcmVjdEJCb3gubWluWVxuICAgICAgfSk7XG4gICAgICB2YXIgbGFiZWw7XG5cbiAgICAgIGlmICh0aWNrTGFiZWxGb3JtYXR0ZXIpIHtcbiAgICAgICAgbGFiZWwgPSB0aWNrTGFiZWxGb3JtYXR0ZXIoZCk7XG5cbiAgICAgICAgaWYgKCFpc1N0cmluZyhsYWJlbCkgJiYgbGFiZWwpIHtcbiAgICAgICAgICAvLyByZXR1cm4gdHJ1ZVxuICAgICAgICAgIGxhYmVsID0gZC5kYXRlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGkgJSBNYXRoLnJvdW5kKHRpY2tzTGVuZ3RoIC8gMTApID09PSAwKSB7XG4gICAgICAgIGxhYmVsID0gZC5kYXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgbGFiZWxzLnB1c2gobGFiZWwpOyAvLyBkcmF3IHRpY2sgbGluZXNcblxuICAgICAgICB2YXIgbGluZVN0YXJ0WSA9IHJlY3RCQm94Lm1heFkgKyBwYWRkaW5nICogMjtcbiAgICAgICAgc2xpY2VHcm91cC5hZGRTaGFwZSgnbGluZScsIHtcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgc3Ryb2tlOiAnI0JGQkZCRicsXG4gICAgICAgICAgICB4MTogY2VudGVyWCxcbiAgICAgICAgICAgIHkxOiBsaW5lU3RhcnRZLFxuICAgICAgICAgICAgeDI6IGNlbnRlclgsXG4gICAgICAgICAgICB5MjogbGluZVN0YXJ0WSArIGxhYmVsTGluZUhlaWdodFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBsYWJlbFN0YXJ0WSA9IGxpbmVTdGFydFkgKyBsYWJlbExpbmVIZWlnaHQgKyBwYWRkaW5nO1xuICAgICAgICB2YXIgdGV4dCA9IHNsaWNlR3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIGZpbGw6ICcjOGM4YzhjJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyNmZmYnLFxuICAgICAgICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgICAgIHk6IGxhYmVsU3RhcnRZLFxuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHRleHQ6IGxhYmVsLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMCxcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IF90aGlzLmZvbnRGYW1pbHkgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB0ZXh0QkJveCA9IHRleHQuZ2V0QkJveCgpO1xuXG4gICAgICAgIGlmICh0ZXh0QkJveC5tYXhYID4gd2lkdGgpIHtcbiAgICAgICAgICB0ZXh0LmF0dHIoJ3RleHRBbGlnbicsICdyaWdodCcpO1xuICAgICAgICB9IGVsc2UgaWYgKHRleHRCQm94Lm1pblggPCAwKSB7XG4gICAgICAgICAgdGV4dC5hdHRyKCd0ZXh0QWxpZ24nLCAnbGVmdCcpO1xuICAgICAgICB9IC8vIGRyYXcgdGljayBsYWJlbHNcblxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudGlja1JlY3RzID0gdGlja1JlY3RzOyAvLyDmuLLmn5Pmkq3mlL7jgIHlv6vov5vlkozlkI7pgIDnmoTmjqfliLbmjInpkq5cblxuICAgIHZhciBncm91cCA9IHRoaXMuZ3JvdXA7XG4gICAgdGhpcy5jdXJyZW50U3BlZWQgPSAxO1xuICAgIHRoaXMuY29udHJvbGxlckJ0bkdyb3VwID0gbmV3IENvbnRyb2xsZXJCdG4oe1xuICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgeDogdGhpcy54LFxuICAgICAgeTogdGhpcy55ICsgaGVpZ2h0ICsgNSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogNDAsXG4gICAgICBoaWRlVGltZVR5cGVDb250cm9sbGVyOiB0cnVlLFxuICAgICAgc3BlZWQ6IHRoaXMuY3VycmVudFNwZWVkLFxuICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICB9KTtcbiAgfTtcblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLmluaXRFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHNsaWNlR3JvdXAgPSB0aGlzLnNsaWNlR3JvdXA7XG4gICAgc2xpY2VHcm91cC5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHRhcmdldFJlY3QgPSBlLnRhcmdldDtcbiAgICAgIGlmICh0YXJnZXRSZWN0LmdldCgndHlwZScpICE9PSAncmVjdCcgfHwgIXRhcmdldFJlY3QuZ2V0KCduYW1lJykpIHJldHVybjtcbiAgICAgIHZhciBpZCA9IHBhcnNlSW50KHRhcmdldFJlY3QuZ2V0KCduYW1lJykuc3BsaXQoJy0nKVsyXSwgMTApO1xuXG4gICAgICBpZiAoIWlzTmFOKGlkKSkge1xuICAgICAgICB2YXIgdGlja1JlY3RzXzEgPSBfdGhpcy50aWNrUmVjdHM7IC8vIGNhbmNlbCB0aGUgc2VsZWN0ZWQgdGlja3NcblxuICAgICAgICB2YXIgdW5zZWxlY3RlZFRpY2tTdHlsZV8xID0gX3RoaXMudW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgICAgdGlja1JlY3RzXzEuZm9yRWFjaChmdW5jdGlvbiAodGlja1JlY3QpIHtcbiAgICAgICAgICB0aWNrUmVjdC5yZWN0LmF0dHIodW5zZWxlY3RlZFRpY2tTdHlsZV8xKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBzZWxlY3RlZFRpY2tTdHlsZSA9IF90aGlzLnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgICB0aWNrUmVjdHNfMVtpZF0ucmVjdC5hdHRyKHNlbGVjdGVkVGlja1N0eWxlKTtcbiAgICAgICAgX3RoaXMuc3RhcnRUaWNrUmVjdElkID0gaWQ7XG4gICAgICAgIF90aGlzLmVuZFRpY2tSZWN0SWQgPSBpZDtcbiAgICAgICAgdmFyIHRpY2tzTGVuZ3RoID0gdGlja1JlY3RzXzEubGVuZ3RoO1xuICAgICAgICB2YXIgc3RhcnQgPSBpZCAvIHRpY2tzTGVuZ3RoO1xuXG4gICAgICAgIF90aGlzLmdyYXBoLmVtaXQoVkFMVUVfQ0hBTkdFLCB7XG4gICAgICAgICAgdmFsdWU6IFtzdGFydCwgc3RhcnRdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNsaWNlR3JvdXAub24oJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgdGlja1JlY3RzID0gX3RoaXMudGlja1JlY3RzOyAvLyBjYW5jZWwgdGhlIHNlbGVjdGVkIHRpY2tzXG5cbiAgICAgIHZhciB1bnNlbGVjdGVkVGlja1N0eWxlID0gX3RoaXMudW5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgIHRpY2tSZWN0cy5mb3JFYWNoKGZ1bmN0aW9uICh0aWNrUmVjdCkge1xuICAgICAgICB0aWNrUmVjdC5yZWN0LmF0dHIodW5zZWxlY3RlZFRpY2tTdHlsZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciB0YXJnZXRSZWN0ID0gZS50YXJnZXQ7XG4gICAgICB2YXIgaWQgPSBwYXJzZUludCh0YXJnZXRSZWN0LmdldCgnbmFtZScpLnNwbGl0KCctJylbMl0sIDEwKTtcbiAgICAgIHZhciBzZWxlY3RlZFRpY2tTdHlsZSA9IF90aGlzLnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgdGlja1JlY3RzW2lkXS5yZWN0LmF0dHIoc2VsZWN0ZWRUaWNrU3R5bGUpO1xuICAgICAgX3RoaXMuc3RhcnRUaWNrUmVjdElkID0gaWQ7XG4gICAgICB2YXIgdGlja3NMZW5ndGggPSB0aWNrUmVjdHMubGVuZ3RoO1xuICAgICAgdmFyIHN0YXJ0ID0gaWQgLyB0aWNrc0xlbmd0aDtcblxuICAgICAgX3RoaXMuZ3JhcGguZW1pdChWQUxVRV9DSEFOR0UsIHtcbiAgICAgICAgdmFsdWU6IFtzdGFydCwgc3RhcnRdXG4gICAgICB9KTtcblxuICAgICAgX3RoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIH0pO1xuICAgIHNsaWNlR3JvdXAub24oJ2RyYWdvdmVyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghX3RoaXMuZHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIGlmIChlLnRhcmdldC5nZXQoJ3R5cGUnKSAhPT0gJ3JlY3QnKSByZXR1cm47XG4gICAgICB2YXIgaWQgPSBwYXJzZUludChlLnRhcmdldC5nZXQoJ25hbWUnKS5zcGxpdCgnLScpWzJdLCAxMCk7XG4gICAgICB2YXIgc3RhcnRUaWNrUmVjdElkID0gX3RoaXMuc3RhcnRUaWNrUmVjdElkO1xuICAgICAgdmFyIHRpY2tSZWN0cyA9IF90aGlzLnRpY2tSZWN0cztcbiAgICAgIHZhciBzZWxlY3RlZFRpY2tTdHlsZSA9IF90aGlzLnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgdmFyIHVuc2VsZWN0ZWRUaWNrU3R5bGUgPSBfdGhpcy51bnNlbGVjdGVkVGlja1N0eWxlO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpY2tSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3R5bGUgPSBpID49IHN0YXJ0VGlja1JlY3RJZCAmJiBpIDw9IGlkID8gc2VsZWN0ZWRUaWNrU3R5bGUgOiB1bnNlbGVjdGVkVGlja1N0eWxlO1xuICAgICAgICB0aWNrUmVjdHNbaV0ucmVjdC5hdHRyKHN0eWxlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRpY2tzTGVuZ3RoID0gdGlja1JlY3RzLmxlbmd0aDtcbiAgICAgIF90aGlzLmVuZFRpY2tSZWN0SWQgPSBpZDtcbiAgICAgIHZhciBzdGFydCA9IHN0YXJ0VGlja1JlY3RJZCAvIHRpY2tzTGVuZ3RoO1xuICAgICAgdmFyIGVuZCA9IGlkIC8gdGlja3NMZW5ndGg7XG5cbiAgICAgIF90aGlzLmdyYXBoLmVtaXQoVkFMVUVfQ0hBTkdFLCB7XG4gICAgICAgIHZhbHVlOiBbc3RhcnQsIGVuZF1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHNsaWNlR3JvdXAub24oJ2Ryb3AnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKCFfdGhpcy5kcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIGlmIChlLnRhcmdldC5nZXQoJ3R5cGUnKSAhPT0gJ3JlY3QnKSByZXR1cm47XG4gICAgICB2YXIgc3RhcnRUaWNrUmVjdElkID0gX3RoaXMuc3RhcnRUaWNrUmVjdElkO1xuICAgICAgdmFyIGlkID0gcGFyc2VJbnQoZS50YXJnZXQuZ2V0KCduYW1lJykuc3BsaXQoJy0nKVsyXSwgMTApO1xuICAgICAgaWYgKGlkIDwgc3RhcnRUaWNrUmVjdElkKSByZXR1cm47XG4gICAgICB2YXIgc2VsZWN0ZWRUaWNrU3R5bGUgPSBfdGhpcy5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICAgIHZhciB0aWNrUmVjdHMgPSBfdGhpcy50aWNrUmVjdHM7XG4gICAgICB0aWNrUmVjdHNbaWRdLnJlY3QuYXR0cihzZWxlY3RlZFRpY2tTdHlsZSk7XG4gICAgICBfdGhpcy5lbmRUaWNrUmVjdElkID0gaWQ7XG4gICAgICB2YXIgdGlja3NMZW5ndGggPSB0aWNrUmVjdHMubGVuZ3RoO1xuICAgICAgdmFyIHN0YXJ0ID0gc3RhcnRUaWNrUmVjdElkIC8gdGlja3NMZW5ndGg7XG4gICAgICB2YXIgZW5kID0gaWQgLyB0aWNrc0xlbmd0aDtcblxuICAgICAgX3RoaXMuZ3JhcGguZW1pdChWQUxVRV9DSEFOR0UsIHtcbiAgICAgICAgdmFsdWU6IFtzdGFydCwgZW5kXVxuICAgICAgfSk7XG4gICAgfSk7IC8vIHRvb2x0aXBcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IgPSBfYS50b29sdGlwQmFja2dyb3VuZENvbG9yLFxuICAgICAgICB0b29sdGlwRm9tYXR0ZXIgPSBfYS50b29sdGlwRm9tYXR0ZXIsXG4gICAgICAgIGNhbnZhcyA9IF9hLmNhbnZhcztcblxuICAgIHZhciB0b29sdGlwID0gbmV3IFRpbWVCYXJUb29sdGlwKHtcbiAgICAgIGNvbnRhaW5lcjogY2FudmFzLmdldCgnY29udGFpbmVyJyksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3JcbiAgICB9KTtcbiAgICB2YXIgdGlja1JlY3RzID0gdGhpcy50aWNrUmVjdHM7XG4gICAgdGlja1JlY3RzLmZvckVhY2goZnVuY3Rpb24gKHRpY2tSZWN0KSB7XG4gICAgICB2YXIgcGlja1JlY3QgPSB0aWNrUmVjdC5waWNrUmVjdDtcbiAgICAgIHBpY2tSZWN0Lm9uKCdtb3VzZWVudGVyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIHJlY3QgPSBlLnRhcmdldDtcbiAgICAgICAgaWYgKHJlY3QuZ2V0KCd0eXBlJykgIT09ICdyZWN0JykgcmV0dXJuO1xuICAgICAgICB2YXIgaWQgPSBwYXJzZUludChyZWN0LmdldCgnbmFtZScpLnNwbGl0KCctJylbMl0sIDEwKTtcbiAgICAgICAgdmFyIGNsaWVudFBvaW50ID0gY2FudmFzLmdldENsaWVudEJ5UG9pbnQodGlja1JlY3RzW2lkXS54LCB0aWNrUmVjdHNbaWRdLnkpO1xuICAgICAgICB0b29sdGlwLnNob3coe1xuICAgICAgICAgIHg6IHRpY2tSZWN0c1tpZF0ueCxcbiAgICAgICAgICB5OiB0aWNrUmVjdHNbaWRdLnksXG4gICAgICAgICAgY2xpZW50WDogY2xpZW50UG9pbnQueCxcbiAgICAgICAgICBjbGllbnRZOiBjbGllbnRQb2ludC55LFxuICAgICAgICAgIHRleHQ6IHRvb2x0aXBGb21hdHRlciA/IHRvb2x0aXBGb21hdHRlcih0aWNrUmVjdHNbaWRdLnZhbHVlKSA6IHRpY2tSZWN0c1tpZF0udmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHBpY2tSZWN0Lm9uKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdG9vbHRpcC5oaWRlKCk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8gcGxheSBjb250cm9sbGVyIGV2ZW50c1xuXG4gICAgdmFyIGdyb3VwID0gdGhpcy5ncm91cDsgLy8g5pKt5pS+5Yy65oyJ6ZKu5o6n5Yi2XG5cbiAgICAvKiog5pKt5pS+L+aaguWBnOS6i+S7tiAqL1xuXG4gICAgZ3JvdXAub24oUExBWV9QQVVTRV9CVE4gKyBcIjpjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5pc1BsYXkgPSAhX3RoaXMuaXNQbGF5O1xuXG4gICAgICBfdGhpcy5jaGFuZ2VQbGF5U3RhdHVzKCk7XG4gICAgfSk7IC8vIOWkhOeQhuWJjei/m+S4gOatpeeahOS6i+S7tlxuXG4gICAgZ3JvdXAub24oTkVYVF9TVEVQX0JUTiArIFwiOmNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKDEpO1xuICAgIH0pOyAvLyDlpITnkIblkI7pgIDkuIDmraXnmoTkuovku7ZcblxuICAgIGdyb3VwLm9uKFBSRV9TVEVQX0JUTiArIFwiOmNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKC0xKTtcbiAgICB9KTtcbiAgICBncm91cC5vbihUSU1FQkFSX0NPTkZJR19DSEFOR0UsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIHR5cGUgPSBfYS50eXBlLFxuICAgICAgICAgIHNwZWVkID0gX2Euc3BlZWQ7XG4gICAgICBfdGhpcy5jdXJyZW50U3BlZWQgPSBzcGVlZDtcbiAgICB9KTtcbiAgfTtcblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLmNoYW5nZVBsYXlTdGF0dXMgPSBmdW5jdGlvbiAoaXNTeW5jKSB7XG4gICAgaWYgKGlzU3luYyA9PT0gdm9pZCAwKSB7XG4gICAgICBpc1N5bmMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbGxlckJ0bkdyb3VwLnBsYXlCdXR0b24udXBkYXRlKHtcbiAgICAgIGlzUGxheTogdGhpcy5pc1BsYXlcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzUGxheSkge1xuICAgICAgLy8g5byA5aeL5pKt5pS+XG4gICAgICB0aGlzLnBsYXlIYW5kbGVyID0gdGhpcy5zdGFydFBsYXkoKTtcbiAgICAgIHRoaXMuZ3JhcGguZW1pdChUSU1FTElORV9TVEFSVCwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOe7k+adn+aSreaUvlxuICAgICAgaWYgKHRoaXMucGxheUhhbmRsZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5wbGF5SGFuZGxlcik7XG5cbiAgICAgICAgaWYgKGlzU3luYykge1xuICAgICAgICAgIHRoaXMuZ3JhcGguZW1pdChUSU1FTElORV9FTkQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIFRpbWVCYXJTbGljZS5wcm90b3R5cGUuc3RhcnRQbGF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzcGVlZCA9IF90aGlzLmN1cnJlbnRTcGVlZDsgLy8g5LiA5YiG6ZKf5Yi35paw5LiA5qyhXG5cbiAgICAgIGlmIChfdGhpcy5mcmFtZUNvdW50ICUgKDYwIC8gc3BlZWQpID09PSAwKSB7XG4gICAgICAgIF90aGlzLmZyYW1lQ291bnQgPSAwO1xuXG4gICAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKDEpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5mcmFtZUNvdW50Kys7XG5cbiAgICAgIGlmIChfdGhpcy5pc1BsYXkpIHtcbiAgICAgICAgX3RoaXMucGxheUhhbmRsZXIgPSBfdGhpcy5zdGFydFBsYXkoKTtcbiAgICAgIH1cbiAgICB9KSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICBUaW1lQmFyU2xpY2UucHJvdG90eXBlLnVwZGF0ZVN0YXJ0RW5kID0gZnVuY3Rpb24gKHNpZ24pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRpY2tSZWN0cyA9IHRoaXMudGlja1JlY3RzO1xuICAgIHZhciB0aWNrc0xlbmd0aCA9IHRpY2tSZWN0cy5sZW5ndGg7XG4gICAgdmFyIHVuc2VsZWN0ZWRUaWNrU3R5bGUgPSB0aGlzLnVuc2VsZWN0ZWRUaWNrU3R5bGU7XG4gICAgdmFyIHNlbGVjdGVkVGlja1N0eWxlID0gdGhpcy5zZWxlY3RlZFRpY2tTdHlsZTtcbiAgICB2YXIgcHJldmlvdXNFbmRUaWNrUmVjdElkID0gc2VsZi5lbmRUaWNrUmVjdElkO1xuXG4gICAgaWYgKHNpZ24gPiAwKSB7XG4gICAgICBzZWxmLmVuZFRpY2tSZWN0SWQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdGlja1JlY3RzW3NlbGYuZW5kVGlja1JlY3RJZF0ucmVjdC5hdHRyKHVuc2VsZWN0ZWRUaWNrU3R5bGUpO1xuICAgICAgc2VsZi5lbmRUaWNrUmVjdElkLS07XG4gICAgfSAvLyDoi6XmraTml7Ygc3RhcnQg5LiOIGVuZCDkuI3lkIzvvIzojIPlm7TliY3ov5sv5ZCO6YCAL+aSreaUvlxuXG5cbiAgICBpZiAocHJldmlvdXNFbmRUaWNrUmVjdElkICE9PSBzZWxmLnN0YXJ0VGlja1JlY3RJZCkge1xuICAgICAgaWYgKHNlbGYuZW5kVGlja1JlY3RJZCA8IHNlbGYuc3RhcnRUaWNrUmVjdElkKSB7XG4gICAgICAgIHNlbGYuc3RhcnRUaWNrUmVjdElkID0gc2VsZi5lbmRUaWNrUmVjdElkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlkKbliJnmmK/ljZXluKfnmoTliY3ov5sv5ZCO6YCAL+aSreaUvlxuICAgICAgZm9yICh2YXIgaSA9IHNlbGYuc3RhcnRUaWNrUmVjdElkOyBpIDw9IHNlbGYuZW5kVGlja1JlY3RJZCAtIDE7IGkrKykge1xuICAgICAgICB0aWNrUmVjdHNbaV0ucmVjdC5hdHRyKHVuc2VsZWN0ZWRUaWNrU3R5bGUpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnN0YXJ0VGlja1JlY3RJZCA9IHNlbGYuZW5kVGlja1JlY3RJZDtcbiAgICB9XG5cbiAgICBpZiAodGlja1JlY3RzW3NlbGYuZW5kVGlja1JlY3RJZF0pIHtcbiAgICAgIHRpY2tSZWN0c1tzZWxmLmVuZFRpY2tSZWN0SWRdLnJlY3QuYXR0cihzZWxlY3RlZFRpY2tTdHlsZSk7XG4gICAgICB2YXIgc3RhcnQgPSBzZWxmLnN0YXJ0VGlja1JlY3RJZCAvIHRpY2tzTGVuZ3RoO1xuICAgICAgdmFyIGVuZCA9IHNlbGYuZW5kVGlja1JlY3RJZCAvIHRpY2tzTGVuZ3RoO1xuICAgICAgdGhpcy5ncmFwaC5lbWl0KFZBTFVFX0NIQU5HRSwge1xuICAgICAgICB2YWx1ZTogW3N0YXJ0LCBlbmRdXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgVGltZUJhclNsaWNlLnByb3RvdHlwZS5kZXN0b3J5ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGgub2ZmKFZBTFVFX0NIQU5HRSk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5zbGljZUdyb3VwO1xuICAgIGdyb3VwLm9mZignY2xpY2snKTtcbiAgICBncm91cC5vZmYoJ2RyYWdzdGFydCcpO1xuICAgIGdyb3VwLm9mZignZHJhZ292ZXInKTtcbiAgICBncm91cC5vZmYoJ2Ryb3AnKTtcbiAgICB0aGlzLnRpY2tSZWN0cy5mb3JFYWNoKGZ1bmN0aW9uICh0aWNrUmVjdCkge1xuICAgICAgdmFyIHBpY2tSZWN0ID0gdGlja1JlY3QucGlja1JlY3Q7XG4gICAgICBwaWNrUmVjdC5vZmYoJ21vdXNlZW50ZXInKTtcbiAgICAgIHBpY2tSZWN0Lm9mZignbW91c2VsZWF2ZScpO1xuICAgIH0pO1xuICAgIHRoaXMudGlja1JlY3RzLmxlbmd0aCA9IDA7XG4gICAgZ3JvdXAub2ZmKFBMQVlfUEFVU0VfQlROICsgXCI6Y2xpY2tcIik7XG4gICAgZ3JvdXAub2ZmKE5FWFRfU1RFUF9CVE4gKyBcIjpjbGlja1wiKTtcbiAgICBncm91cC5vZmYoUFJFX1NURVBfQlROICsgXCI6Y2xpY2tcIik7XG4gICAgZ3JvdXAub2ZmKFRJTUVCQVJfQ09ORklHX0NIQU5HRSk7XG4gICAgdGhpcy5zbGljZUdyb3VwLmRlc3Ryb3koKTtcbiAgfTtcblxuICByZXR1cm4gVGltZUJhclNsaWNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBUaW1lQmFyU2xpY2U7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarSlice.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarTooltip.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarTooltip.js ***! \******************************************************************************************/ /*! exports provided: BACKGROUND_STYLE, ARROW_STYLE, TEXT_STYLE, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BACKGROUND_STYLE\", function() { return BACKGROUND_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ARROW_STYLE\", function() { return ARROW_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_STYLE\", function() { return TEXT_STYLE; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n\n\nvar BACKGROUND_STYLE = {\n opacity: 0.5,\n fill: '#000'\n};\nvar ARROW_STYLE = {\n opacity: 0.5,\n fill: '#000',\n r: 5\n};\nvar TEXT_STYLE = {\n fill: '#fff',\n fontSize: 12\n};\n/**\n * 缩略趋势图\n */\n\nvar TimeBarTooltip =\n/** @class */\nfunction () {\n function TimeBarTooltip(cfg) {\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n container = cfg.container,\n text = cfg.text,\n _c = cfg.padding,\n padding = _c === void 0 ? [4, 4, 4, 4] : _c,\n _d = cfg.className,\n className = _d === void 0 ? 'g6-component-timebar-tooltip' : _d,\n _e = cfg.backgroundColor,\n backgroundColor = _e === void 0 ? '#000' : _e,\n _f = cfg.textColor,\n textColor = _f === void 0 ? '#fff' : _f,\n _g = cfg.opacity,\n opacity = _g === void 0 ? 0.8 : _g,\n _h = cfg.fontSize,\n fontSize = _h === void 0 ? 12 : _h;\n this.container = container;\n this.className = className;\n this.backgroundColor = backgroundColor;\n this.textColor = textColor;\n this.x = x;\n this.y = y;\n this.text = text;\n this.padding = padding;\n this.opacity = opacity;\n this.fontSize = fontSize;\n this.render();\n }\n /**\n * 首次渲染\n * @private\n */\n\n\n TimeBarTooltip.prototype.render = function () {\n var self = this;\n var className = self.className,\n x = self.x,\n y = self.y,\n backgroundColor = self.backgroundColor,\n textColor = self.textColor,\n text = self.text,\n padding = self.padding,\n opacity = self.opacity,\n fontSize = self.fontSize;\n var parentNode = self.container;\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"createDom\"])(\"
\");\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(parentNode)) {\n parentNode = document.getElementById(parentNode);\n }\n\n parentNode.appendChild(container);\n self.parentHeight = parentNode.offsetHeight;\n self.parentWidth = parentNode.offsetWidth;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(container, {\n visibility: 'hidden',\n top: 0,\n left: 0\n });\n var background = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"createDom\"])(\"\\n
\");\n background.innerHTML = text;\n container.appendChild(background);\n self.backgroundDOM = background;\n var arrow = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"createDom\"])(\"
\");\n container.appendChild(arrow);\n self.arrowDOM = arrow;\n self.container = container;\n };\n\n TimeBarTooltip.prototype.show = function (cfg) {\n var self = this;\n var text = cfg.text,\n x = cfg.x,\n y = cfg.y,\n clientX = cfg.clientX,\n clientY = cfg.clientY;\n self.backgroundDOM.innerHTML = text;\n var backgroundWidth = self.backgroundDOM.offsetWidth;\n var backgroundHeight = self.backgroundDOM.offsetHeight;\n var arrowWidth = self.arrowDOM.offsetWidth;\n var arrowHeight = self.arrowDOM.offsetHeight;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.container, {\n top: -backgroundHeight - arrowHeight + \"px\",\n left: x + \"px\",\n visibility: 'visible'\n });\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.backgroundDOM, {\n marginLeft: -backgroundWidth / 2 + \"px\"\n });\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.arrowDOM, {\n marginLeft: -arrowWidth / 2 + \"px\",\n top: backgroundHeight + \"px\"\n });\n var left = x - backgroundWidth / 2;\n var right = x + backgroundWidth / 2;\n\n if (left < 0) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.backgroundDOM, {\n marginLeft: -backgroundWidth / 2 - left + \"px\"\n });\n } else if (right > self.parentWidth) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(self.backgroundDOM, {\n marginLeft: -backgroundWidth / 2 - right + self.parentWidth + 12 + \"px\"\n });\n }\n };\n\n TimeBarTooltip.prototype.hide = function () {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"modifyCSS\"])(this.container, {\n top: 0,\n left: 0,\n visibility: 'hidden'\n });\n };\n\n return TimeBarTooltip;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeBarTooltip);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90aW1lQmFyVG9vbHRpcC5qcz9lOGE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzQztBQUNnQjtBQUMvQztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQVMsNERBQTRELG9CQUFvQixxQkFBcUI7O0FBRWxJLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixnRUFBUyx5Q0FBeUMsb0JBQW9CLDJDQUEyQywrQkFBK0Isb0JBQW9CLG9CQUFvQixxQkFBcUIsMEJBQTBCO0FBQzVQO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnRUFBUyxpQ0FBaUMsWUFBWSxhQUFhLG9DQUFvQyxxQ0FBcUM7QUFDNUo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLGdFQUFTO0FBQ2I7QUFDQSxLQUFLO0FBQ0wsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLE1BQU0sZ0VBQVM7QUFDZjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsTUFBTSxnRUFBUztBQUNmO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw2RUFBYyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL3RpbWVCYXJUb29sdGlwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZURvbSwgbW9kaWZ5Q1NTIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuZXhwb3J0IHZhciBCQUNLR1JPVU5EX1NUWUxFID0ge1xuICBvcGFjaXR5OiAwLjUsXG4gIGZpbGw6ICcjMDAwJ1xufTtcbmV4cG9ydCB2YXIgQVJST1dfU1RZTEUgPSB7XG4gIG9wYWNpdHk6IDAuNSxcbiAgZmlsbDogJyMwMDAnLFxuICByOiA1XG59O1xuZXhwb3J0IHZhciBURVhUX1NUWUxFID0ge1xuICBmaWxsOiAnI2ZmZicsXG4gIGZvbnRTaXplOiAxMlxufTtcbi8qKlxuICog57yp55Wl6LaL5Yq/5Zu+XG4gKi9cblxudmFyIFRpbWVCYXJUb29sdGlwID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGltZUJhclRvb2x0aXAoY2ZnKSB7XG4gICAgdmFyIF9hID0gY2ZnLngsXG4gICAgICAgIHggPSBfYSA9PT0gdm9pZCAwID8gMCA6IF9hLFxuICAgICAgICBfYiA9IGNmZy55LFxuICAgICAgICB5ID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYixcbiAgICAgICAgY29udGFpbmVyID0gY2ZnLmNvbnRhaW5lcixcbiAgICAgICAgdGV4dCA9IGNmZy50ZXh0LFxuICAgICAgICBfYyA9IGNmZy5wYWRkaW5nLFxuICAgICAgICBwYWRkaW5nID0gX2MgPT09IHZvaWQgMCA/IFs0LCA0LCA0LCA0XSA6IF9jLFxuICAgICAgICBfZCA9IGNmZy5jbGFzc05hbWUsXG4gICAgICAgIGNsYXNzTmFtZSA9IF9kID09PSB2b2lkIDAgPyAnZzYtY29tcG9uZW50LXRpbWViYXItdG9vbHRpcCcgOiBfZCxcbiAgICAgICAgX2UgPSBjZmcuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBfZSA9PT0gdm9pZCAwID8gJyMwMDAnIDogX2UsXG4gICAgICAgIF9mID0gY2ZnLnRleHRDb2xvcixcbiAgICAgICAgdGV4dENvbG9yID0gX2YgPT09IHZvaWQgMCA/ICcjZmZmJyA6IF9mLFxuICAgICAgICBfZyA9IGNmZy5vcGFjaXR5LFxuICAgICAgICBvcGFjaXR5ID0gX2cgPT09IHZvaWQgMCA/IDAuOCA6IF9nLFxuICAgICAgICBfaCA9IGNmZy5mb250U2l6ZSxcbiAgICAgICAgZm9udFNpemUgPSBfaCA9PT0gdm9pZCAwID8gMTIgOiBfaDtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjtcbiAgICB0aGlzLnRleHRDb2xvciA9IHRleHRDb2xvcjtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLnBhZGRpbmcgPSBwYWRkaW5nO1xuICAgIHRoaXMub3BhY2l0eSA9IG9wYWNpdHk7XG4gICAgdGhpcy5mb250U2l6ZSA9IGZvbnRTaXplO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cbiAgLyoqXG4gICAqIOmmluasoea4suafk1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuXG4gIFRpbWVCYXJUb29sdGlwLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjbGFzc05hbWUgPSBzZWxmLmNsYXNzTmFtZSxcbiAgICAgICAgeCA9IHNlbGYueCxcbiAgICAgICAgeSA9IHNlbGYueSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gc2VsZi5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIHRleHRDb2xvciA9IHNlbGYudGV4dENvbG9yLFxuICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0LFxuICAgICAgICBwYWRkaW5nID0gc2VsZi5wYWRkaW5nLFxuICAgICAgICBvcGFjaXR5ID0gc2VsZi5vcGFjaXR5LFxuICAgICAgICBmb250U2l6ZSA9IHNlbGYuZm9udFNpemU7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBzZWxmLmNvbnRhaW5lcjtcbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz0nXCIgKyBjbGFzc05hbWUgKyBcIicgc3R5bGU9XFxcInBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IGZpdC1jb250ZW50OyBoZWlnaHQ6IGZpdC1jb250ZW50OyBvcGFjaXR5OiBcIiArIG9wYWNpdHkgKyBcIlxcXCI+PC9kaXY+XCIpO1xuXG4gICAgaWYgKGlzU3RyaW5nKHBhcmVudE5vZGUpKSB7XG4gICAgICBwYXJlbnROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGFyZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuICAgIHNlbGYucGFyZW50SGVpZ2h0ID0gcGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQ7XG4gICAgc2VsZi5wYXJlbnRXaWR0aCA9IHBhcmVudE5vZGUub2Zmc2V0V2lkdGg7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwge1xuICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwXG4gICAgfSk7XG4gICAgdmFyIGJhY2tncm91bmQgPSBjcmVhdGVEb20oXCJcXG4gICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgYmFja2dyb3VuZC1jb2xvcjogXCIgKyBiYWNrZ3JvdW5kQ29sb3IgKyBcIjsgZm9udC1zaXplOiBcIiArIGZvbnRTaXplICsgXCJweDsgYm9yZGVyLXJhZGl1czogNHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7IGhlaWdodDogZml0LWNvbnRlbnQ7IGNvbG9yOiBcIiArIHRleHRDb2xvciArIFwiOyBwYWRkaW5nOiBcIiArIHBhZGRpbmdbMF0gKyBcInB4IFwiICsgcGFkZGluZ1sxXSArIFwicHggXCIgKyBwYWRkaW5nWzJdICsgXCJweCBcIiArIHBhZGRpbmdbM10gKyBcInB4Jz48L2Rpdj5cIik7XG4gICAgYmFja2dyb3VuZC5pbm5lckhUTUwgPSB0ZXh0O1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kKTtcbiAgICBzZWxmLmJhY2tncm91bmRET00gPSBiYWNrZ3JvdW5kO1xuICAgIHZhciBhcnJvdyA9IGNyZWF0ZURvbShcIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDBweDsgaGVpZ2h0OiAwcHg7IGJvcmRlci1sZWZ0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDogNXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOiAxMHB4IHNvbGlkIFwiICsgYmFja2dyb3VuZENvbG9yICsgXCInPjwvZGl2PlwiKTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYXJyb3cpO1xuICAgIHNlbGYuYXJyb3dET00gPSBhcnJvdztcbiAgICBzZWxmLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgfTtcblxuICBUaW1lQmFyVG9vbHRpcC5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHRleHQgPSBjZmcudGV4dCxcbiAgICAgICAgeCA9IGNmZy54LFxuICAgICAgICB5ID0gY2ZnLnksXG4gICAgICAgIGNsaWVudFggPSBjZmcuY2xpZW50WCxcbiAgICAgICAgY2xpZW50WSA9IGNmZy5jbGllbnRZO1xuICAgIHNlbGYuYmFja2dyb3VuZERPTS5pbm5lckhUTUwgPSB0ZXh0O1xuICAgIHZhciBiYWNrZ3JvdW5kV2lkdGggPSBzZWxmLmJhY2tncm91bmRET00ub2Zmc2V0V2lkdGg7XG4gICAgdmFyIGJhY2tncm91bmRIZWlnaHQgPSBzZWxmLmJhY2tncm91bmRET00ub2Zmc2V0SGVpZ2h0O1xuICAgIHZhciBhcnJvd1dpZHRoID0gc2VsZi5hcnJvd0RPTS5vZmZzZXRXaWR0aDtcbiAgICB2YXIgYXJyb3dIZWlnaHQgPSBzZWxmLmFycm93RE9NLm9mZnNldEhlaWdodDtcbiAgICBtb2RpZnlDU1Moc2VsZi5jb250YWluZXIsIHtcbiAgICAgIHRvcDogLWJhY2tncm91bmRIZWlnaHQgLSBhcnJvd0hlaWdodCArIFwicHhcIixcbiAgICAgIGxlZnQ6IHggKyBcInB4XCIsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICBtb2RpZnlDU1Moc2VsZi5iYWNrZ3JvdW5kRE9NLCB7XG4gICAgICBtYXJnaW5MZWZ0OiAtYmFja2dyb3VuZFdpZHRoIC8gMiArIFwicHhcIlxuICAgIH0pO1xuICAgIG1vZGlmeUNTUyhzZWxmLmFycm93RE9NLCB7XG4gICAgICBtYXJnaW5MZWZ0OiAtYXJyb3dXaWR0aCAvIDIgKyBcInB4XCIsXG4gICAgICB0b3A6IGJhY2tncm91bmRIZWlnaHQgKyBcInB4XCJcbiAgICB9KTtcbiAgICB2YXIgbGVmdCA9IHggLSBiYWNrZ3JvdW5kV2lkdGggLyAyO1xuICAgIHZhciByaWdodCA9IHggKyBiYWNrZ3JvdW5kV2lkdGggLyAyO1xuXG4gICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICBtb2RpZnlDU1Moc2VsZi5iYWNrZ3JvdW5kRE9NLCB7XG4gICAgICAgIG1hcmdpbkxlZnQ6IC1iYWNrZ3JvdW5kV2lkdGggLyAyIC0gbGVmdCArIFwicHhcIlxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyaWdodCA+IHNlbGYucGFyZW50V2lkdGgpIHtcbiAgICAgIG1vZGlmeUNTUyhzZWxmLmJhY2tncm91bmRET00sIHtcbiAgICAgICAgbWFyZ2luTGVmdDogLWJhY2tncm91bmRXaWR0aCAvIDIgLSByaWdodCArIHNlbGYucGFyZW50V2lkdGggKyAxMiArIFwicHhcIlxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIFRpbWVCYXJUb29sdGlwLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKCkge1xuICAgIG1vZGlmeUNTUyh0aGlzLmNvbnRhaW5lciwge1xuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIFRpbWVCYXJUb29sdGlwO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBUaW1lQmFyVG9vbHRpcDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeBarTooltip.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeButton.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeButton.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js\");\n/**\n * 基于 G 的按钮组件\n */\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\nvar Button =\n/** @class */\nfunction () {\n function Button(cfg) {\n this.config = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])({}, cfg);\n this.init();\n }\n\n Button.prototype.update = function (cfg) {\n this.config = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"deepMix\"])({}, this.config, cfg);\n this.updateElement();\n this.renderMarker();\n };\n\n Button.prototype.init = function () {\n this.initElement();\n this.renderMarker();\n };\n\n Button.prototype.initElement = function () {\n var _a = this.config,\n group = _a.group,\n style = _a.style;\n var _b = style.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = style.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = style.offsetY,\n offsetY = _d === void 0 ? 0 : _d;\n var x = this.config.x + offsetX;\n var y = this.config.y + offsetY;\n var buttonGroup = group.addGroup({\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n this.startMarkerGroup = buttonGroup.addGroup({\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n this.circle = group.addShape('circle', {\n attrs: __assign({\n x: x,\n y: y,\n r: this.config.r * scale\n }, style),\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n this.startMarker = this.startMarkerGroup.addShape('path', {\n attrs: {\n path: this.getStartMarkerPath(x, y, scale),\n fill: style.stroke || '#aaa'\n }\n });\n this.pauseMarkerGroup = buttonGroup.addGroup({\n name: _constant__WEBPACK_IMPORTED_MODULE_1__[\"PLAY_PAUSE_BTN\"]\n });\n var width = 0.25 * this.config.r * scale;\n var height = 0.5 * this.config.r * Math.sqrt(3) * scale;\n this.pauseLeftMarker = this.pauseMarkerGroup.addShape('rect', {\n attrs: {\n x: x - 0.375 * this.config.r * scale,\n y: y - height / 2,\n width: width,\n height: height,\n fill: style.stroke || '#aaa',\n lineWidth: 0\n }\n });\n this.pauseRightMarker = this.pauseMarkerGroup.addShape('rect', {\n attrs: {\n x: x + 1 / 8 * this.config.r * scale,\n y: y - height / 2,\n width: width,\n height: height,\n fill: style.stroke || '#aaa',\n lineWidth: 0\n }\n });\n };\n\n Button.prototype.updateElement = function () {\n var _a = this.config.style,\n _b = _a.scale,\n scale = _b === void 0 ? 1 : _b,\n _c = _a.offsetX,\n offsetX = _c === void 0 ? 0 : _c,\n _d = _a.offsetY,\n offsetY = _d === void 0 ? 0 : _d;\n var x = this.config.x + offsetX;\n var y = this.config.y + offsetY;\n this.circle.attr('x', x);\n this.circle.attr('y', y);\n this.circle.attr('r', this.config.r * scale);\n this.startMarker.attr('path', this.getStartMarkerPath(x, y, scale));\n var width = 0.25 * this.config.r * scale;\n var height = 0.5 * this.config.r * Math.sqrt(3) * scale;\n this.pauseLeftMarker.attr('x', x - (1 / 4 + 1 / 8) * this.config.r * scale);\n this.pauseLeftMarker.attr('y', y - height / 2);\n this.pauseLeftMarker.attr('width', width);\n this.pauseLeftMarker.attr('height', height);\n this.pauseRightMarker.attr('x', x + 1 / 8 * this.config.r * scale);\n this.pauseRightMarker.attr('y', y - height / 2);\n this.pauseRightMarker.attr('width', width);\n this.pauseRightMarker.attr('height', height);\n };\n\n Button.prototype.renderMarker = function () {\n if (this.config.isPlay) {\n this.startMarkerGroup.hide();\n this.pauseMarkerGroup.show();\n } else {\n this.startMarkerGroup.show();\n this.pauseMarkerGroup.hide();\n }\n };\n /** 获取播放键 marker path */\n\n\n Button.prototype.getStartMarkerPath = function (x, y, scale) {\n var sideLength = 0.5 * this.config.r * Math.sqrt(3) * scale;\n return [['M', x - sideLength / Math.sqrt(3) / 2, y - sideLength / 2], ['L', x + sideLength / Math.sqrt(3), y], ['L', x - sideLength / Math.sqrt(3) / 2, y + sideLength / 2]];\n };\n\n return Button;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Button);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90aW1lQnV0dG9uLmpzPzExZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFcUM7QUFDTzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMERBQU8sR0FBRztBQUM1QjtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDBEQUFPLEdBQUc7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBYztBQUMxQixLQUFLO0FBQ0w7QUFDQSxZQUFZLHdEQUFjO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFlBQVksd0RBQWM7QUFDMUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxZQUFZLHdEQUFjO0FBQzFCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMscUVBQU0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90aW1lQnV0dG9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDln7rkuo4gRyDnmoTmjInpkq7nu4Tku7ZcbiAqL1xudmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuXG5pbXBvcnQgeyBkZWVwTWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBQTEFZX1BBVVNFX0JUTiB9IGZyb20gJy4vY29uc3RhbnQnO1xuXG52YXIgQnV0dG9uID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnV0dG9uKGNmZykge1xuICAgIHRoaXMuY29uZmlnID0gZGVlcE1peCh7fSwgY2ZnKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIEJ1dHRvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHRoaXMuY29uZmlnID0gZGVlcE1peCh7fSwgdGhpcy5jb25maWcsIGNmZyk7XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KCk7XG4gICAgdGhpcy5yZW5kZXJNYXJrZXIoKTtcbiAgfTtcblxuICBCdXR0b24ucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0RWxlbWVudCgpO1xuICAgIHRoaXMucmVuZGVyTWFya2VyKCk7XG4gIH07XG5cbiAgQnV0dG9uLnByb3RvdHlwZS5pbml0RWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgZ3JvdXAgPSBfYS5ncm91cCxcbiAgICAgICAgc3R5bGUgPSBfYS5zdHlsZTtcbiAgICB2YXIgX2IgPSBzdHlsZS5zY2FsZSxcbiAgICAgICAgc2NhbGUgPSBfYiA9PT0gdm9pZCAwID8gMSA6IF9iLFxuICAgICAgICBfYyA9IHN0eWxlLm9mZnNldFgsXG4gICAgICAgIG9mZnNldFggPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jLFxuICAgICAgICBfZCA9IHN0eWxlLm9mZnNldFksXG4gICAgICAgIG9mZnNldFkgPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kO1xuICAgIHZhciB4ID0gdGhpcy5jb25maWcueCArIG9mZnNldFg7XG4gICAgdmFyIHkgPSB0aGlzLmNvbmZpZy55ICsgb2Zmc2V0WTtcbiAgICB2YXIgYnV0dG9uR3JvdXAgPSBncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiBQTEFZX1BBVVNFX0JUTlxuICAgIH0pO1xuICAgIHRoaXMuc3RhcnRNYXJrZXJHcm91cCA9IGJ1dHRvbkdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6IFBMQVlfUEFVU0VfQlROXG4gICAgfSk7XG4gICAgdGhpcy5jaXJjbGUgPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgcjogdGhpcy5jb25maWcuciAqIHNjYWxlXG4gICAgICB9LCBzdHlsZSksXG4gICAgICBuYW1lOiBQTEFZX1BBVVNFX0JUTlxuICAgIH0pO1xuICAgIHRoaXMuc3RhcnRNYXJrZXIgPSB0aGlzLnN0YXJ0TWFya2VyR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwYXRoOiB0aGlzLmdldFN0YXJ0TWFya2VyUGF0aCh4LCB5LCBzY2FsZSksXG4gICAgICAgIGZpbGw6IHN0eWxlLnN0cm9rZSB8fCAnI2FhYSdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBhdXNlTWFya2VyR3JvdXAgPSBidXR0b25Hcm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiBQTEFZX1BBVVNFX0JUTlxuICAgIH0pO1xuICAgIHZhciB3aWR0aCA9IDAuMjUgKiB0aGlzLmNvbmZpZy5yICogc2NhbGU7XG4gICAgdmFyIGhlaWdodCA9IDAuNSAqIHRoaXMuY29uZmlnLnIgKiBNYXRoLnNxcnQoMykgKiBzY2FsZTtcbiAgICB0aGlzLnBhdXNlTGVmdE1hcmtlciA9IHRoaXMucGF1c2VNYXJrZXJHcm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IHggLSAwLjM3NSAqIHRoaXMuY29uZmlnLnIgKiBzY2FsZSxcbiAgICAgICAgeTogeSAtIGhlaWdodCAvIDIsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGZpbGw6IHN0eWxlLnN0cm9rZSB8fCAnI2FhYScsXG4gICAgICAgIGxpbmVXaWR0aDogMFxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucGF1c2VSaWdodE1hcmtlciA9IHRoaXMucGF1c2VNYXJrZXJHcm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IHggKyAxIC8gOCAqIHRoaXMuY29uZmlnLnIgKiBzY2FsZSxcbiAgICAgICAgeTogeSAtIGhlaWdodCAvIDIsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGZpbGw6IHN0eWxlLnN0cm9rZSB8fCAnI2FhYScsXG4gICAgICAgIGxpbmVXaWR0aDogMFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIEJ1dHRvbi5wcm90b3R5cGUudXBkYXRlRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX2EgPSB0aGlzLmNvbmZpZy5zdHlsZSxcbiAgICAgICAgX2IgPSBfYS5zY2FsZSxcbiAgICAgICAgc2NhbGUgPSBfYiA9PT0gdm9pZCAwID8gMSA6IF9iLFxuICAgICAgICBfYyA9IF9hLm9mZnNldFgsXG4gICAgICAgIG9mZnNldFggPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jLFxuICAgICAgICBfZCA9IF9hLm9mZnNldFksXG4gICAgICAgIG9mZnNldFkgPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kO1xuICAgIHZhciB4ID0gdGhpcy5jb25maWcueCArIG9mZnNldFg7XG4gICAgdmFyIHkgPSB0aGlzLmNvbmZpZy55ICsgb2Zmc2V0WTtcbiAgICB0aGlzLmNpcmNsZS5hdHRyKCd4JywgeCk7XG4gICAgdGhpcy5jaXJjbGUuYXR0cigneScsIHkpO1xuICAgIHRoaXMuY2lyY2xlLmF0dHIoJ3InLCB0aGlzLmNvbmZpZy5yICogc2NhbGUpO1xuICAgIHRoaXMuc3RhcnRNYXJrZXIuYXR0cigncGF0aCcsIHRoaXMuZ2V0U3RhcnRNYXJrZXJQYXRoKHgsIHksIHNjYWxlKSk7XG4gICAgdmFyIHdpZHRoID0gMC4yNSAqIHRoaXMuY29uZmlnLnIgKiBzY2FsZTtcbiAgICB2YXIgaGVpZ2h0ID0gMC41ICogdGhpcy5jb25maWcuciAqIE1hdGguc3FydCgzKSAqIHNjYWxlO1xuICAgIHRoaXMucGF1c2VMZWZ0TWFya2VyLmF0dHIoJ3gnLCB4IC0gKDEgLyA0ICsgMSAvIDgpICogdGhpcy5jb25maWcuciAqIHNjYWxlKTtcbiAgICB0aGlzLnBhdXNlTGVmdE1hcmtlci5hdHRyKCd5JywgeSAtIGhlaWdodCAvIDIpO1xuICAgIHRoaXMucGF1c2VMZWZ0TWFya2VyLmF0dHIoJ3dpZHRoJywgd2lkdGgpO1xuICAgIHRoaXMucGF1c2VMZWZ0TWFya2VyLmF0dHIoJ2hlaWdodCcsIGhlaWdodCk7XG4gICAgdGhpcy5wYXVzZVJpZ2h0TWFya2VyLmF0dHIoJ3gnLCB4ICsgMSAvIDggKiB0aGlzLmNvbmZpZy5yICogc2NhbGUpO1xuICAgIHRoaXMucGF1c2VSaWdodE1hcmtlci5hdHRyKCd5JywgeSAtIGhlaWdodCAvIDIpO1xuICAgIHRoaXMucGF1c2VSaWdodE1hcmtlci5hdHRyKCd3aWR0aCcsIHdpZHRoKTtcbiAgICB0aGlzLnBhdXNlUmlnaHRNYXJrZXIuYXR0cignaGVpZ2h0JywgaGVpZ2h0KTtcbiAgfTtcblxuICBCdXR0b24ucHJvdG90eXBlLnJlbmRlck1hcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuaXNQbGF5KSB7XG4gICAgICB0aGlzLnN0YXJ0TWFya2VyR3JvdXAuaGlkZSgpO1xuICAgICAgdGhpcy5wYXVzZU1hcmtlckdyb3VwLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydE1hcmtlckdyb3VwLnNob3coKTtcbiAgICAgIHRoaXMucGF1c2VNYXJrZXJHcm91cC5oaWRlKCk7XG4gICAgfVxuICB9O1xuICAvKiog6I635Y+W5pKt5pS+6ZSuIG1hcmtlciBwYXRoICovXG5cblxuICBCdXR0b24ucHJvdG90eXBlLmdldFN0YXJ0TWFya2VyUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBzY2FsZSkge1xuICAgIHZhciBzaWRlTGVuZ3RoID0gMC41ICogdGhpcy5jb25maWcuciAqIE1hdGguc3FydCgzKSAqIHNjYWxlO1xuICAgIHJldHVybiBbWydNJywgeCAtIHNpZGVMZW5ndGggLyBNYXRoLnNxcnQoMykgLyAyLCB5IC0gc2lkZUxlbmd0aCAvIDJdLCBbJ0wnLCB4ICsgc2lkZUxlbmd0aCAvIE1hdGguc3FydCgzKSwgeV0sIFsnTCcsIHggLSBzaWRlTGVuZ3RoIC8gTWF0aC5zcXJ0KDMpIC8gMiwgeSArIHNpZGVMZW5ndGggLyAyXV07XG4gIH07XG5cbiAgcmV0dXJuIEJ1dHRvbjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/timeButton.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trend.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trend.js ***! \*********************************************************************************/ /*! exports provided: LINE_STYLE, AREA_STYLE, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINE_STYLE\", function() { return LINE_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AREA_STYLE\", function() { return AREA_STYLE; });\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/path.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\nvar LINE_STYLE = {\n stroke: '#C5C5C5',\n strokeOpacity: 0.85\n};\nvar AREA_STYLE = {\n fill: '#CACED4',\n opacity: 0.85\n};\n/**\n * 缩略趋势图\n */\n\nvar Trend =\n/** @class */\nfunction () {\n function Trend(cfg) {\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 200 : _c,\n _d = cfg.height,\n height = _d === void 0 ? 26 : _d,\n _e = cfg.smooth,\n smooth = _e === void 0 ? true : _e,\n _f = cfg.isArea,\n isArea = _f === void 0 ? false : _f,\n _g = cfg.data,\n data = _g === void 0 ? [] : _g,\n lineStyle = cfg.lineStyle,\n areaStyle = cfg.areaStyle,\n group = cfg.group,\n _h = cfg.interval,\n interval = _h === void 0 ? null : _h;\n this.group = group;\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.data = data;\n this.smooth = smooth;\n this.isArea = isArea;\n this.lineStyle = Object.assign({}, LINE_STYLE, lineStyle);\n this.areaStyle = Object.assign({}, AREA_STYLE, areaStyle);\n this.intervalConfig = interval;\n this.renderLine();\n }\n /**\n * 构造\n * @private\n */\n\n\n Trend.prototype.renderLine = function () {\n var _a = this,\n x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height,\n barWidth = _a.barWidth,\n data = _a.data,\n smooth = _a.smooth,\n isArea = _a.isArea,\n lineStyle = _a.lineStyle,\n areaStyle = _a.areaStyle;\n\n var trendGroup = this.group.addGroup({\n name: 'trend-group'\n });\n\n if (data) {\n var path = Object(_path__WEBPACK_IMPORTED_MODULE_0__[\"dataToPath\"])(data, width, height, smooth); // 线\n\n trendGroup.addShape('path', {\n attrs: __assign({\n path: path\n }, lineStyle)\n }); // 在 line 的基础上,绘制面积图\n\n if (isArea) {\n var areaPath = Object(_path__WEBPACK_IMPORTED_MODULE_0__[\"linePathToAreaPath\"])(path, width, height, data);\n trendGroup.addShape('path', {\n attrs: __assign({\n path: areaPath\n }, areaStyle)\n });\n }\n } // 绘制柱状图📊\n\n\n if (this.intervalConfig) {\n trendGroup.addShape('path', {\n attrs: __assign({\n path: Object(_path__WEBPACK_IMPORTED_MODULE_0__[\"dataToRectPath\"])(this.intervalConfig.data, width, height, this.intervalConfig.style.barWidth)\n }, this.intervalConfig.style)\n });\n } // 统一移动到对应的位置\n\n\n trendGroup.move(x, y);\n };\n\n Trend.prototype.destory = function () {\n this.group.destroy();\n };\n\n return Trend;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Trend);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90cmVuZC5qcz9jOTU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBZSxTQUFJLElBQUksU0FBSTtBQUMzQjtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFd0U7QUFDakU7QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLGlCQUFpQix3REFBVSw4QkFBOEI7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7O0FBRVQ7QUFDQSx1QkFBdUIsZ0VBQWtCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNERBQWM7QUFDOUIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90cmVuZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgZGF0YVRvUGF0aCwgbGluZVBhdGhUb0FyZWFQYXRoLCBkYXRhVG9SZWN0UGF0aCB9IGZyb20gJy4vcGF0aCc7XG5leHBvcnQgdmFyIExJTkVfU1RZTEUgPSB7XG4gIHN0cm9rZTogJyNDNUM1QzUnLFxuICBzdHJva2VPcGFjaXR5OiAwLjg1XG59O1xuZXhwb3J0IHZhciBBUkVBX1NUWUxFID0ge1xuICBmaWxsOiAnI0NBQ0VENCcsXG4gIG9wYWNpdHk6IDAuODVcbn07XG4vKipcbiAqIOe8qeeVpei2i+WKv+WbvlxuICovXG5cbnZhciBUcmVuZCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRyZW5kKGNmZykge1xuICAgIHZhciBfYSA9IGNmZy54LFxuICAgICAgICB4ID0gX2EgPT09IHZvaWQgMCA/IDAgOiBfYSxcbiAgICAgICAgX2IgPSBjZmcueSxcbiAgICAgICAgeSA9IF9iID09PSB2b2lkIDAgPyAwIDogX2IsXG4gICAgICAgIF9jID0gY2ZnLndpZHRoLFxuICAgICAgICB3aWR0aCA9IF9jID09PSB2b2lkIDAgPyAyMDAgOiBfYyxcbiAgICAgICAgX2QgPSBjZmcuaGVpZ2h0LFxuICAgICAgICBoZWlnaHQgPSBfZCA9PT0gdm9pZCAwID8gMjYgOiBfZCxcbiAgICAgICAgX2UgPSBjZmcuc21vb3RoLFxuICAgICAgICBzbW9vdGggPSBfZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9lLFxuICAgICAgICBfZiA9IGNmZy5pc0FyZWEsXG4gICAgICAgIGlzQXJlYSA9IF9mID09PSB2b2lkIDAgPyBmYWxzZSA6IF9mLFxuICAgICAgICBfZyA9IGNmZy5kYXRhLFxuICAgICAgICBkYXRhID0gX2cgPT09IHZvaWQgMCA/IFtdIDogX2csXG4gICAgICAgIGxpbmVTdHlsZSA9IGNmZy5saW5lU3R5bGUsXG4gICAgICAgIGFyZWFTdHlsZSA9IGNmZy5hcmVhU3R5bGUsXG4gICAgICAgIGdyb3VwID0gY2ZnLmdyb3VwLFxuICAgICAgICBfaCA9IGNmZy5pbnRlcnZhbCxcbiAgICAgICAgaW50ZXJ2YWwgPSBfaCA9PT0gdm9pZCAwID8gbnVsbCA6IF9oO1xuICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5zbW9vdGggPSBzbW9vdGg7XG4gICAgdGhpcy5pc0FyZWEgPSBpc0FyZWE7XG4gICAgdGhpcy5saW5lU3R5bGUgPSBPYmplY3QuYXNzaWduKHt9LCBMSU5FX1NUWUxFLCBsaW5lU3R5bGUpO1xuICAgIHRoaXMuYXJlYVN0eWxlID0gT2JqZWN0LmFzc2lnbih7fSwgQVJFQV9TVFlMRSwgYXJlYVN0eWxlKTtcbiAgICB0aGlzLmludGVydmFsQ29uZmlnID0gaW50ZXJ2YWw7XG4gICAgdGhpcy5yZW5kZXJMaW5lKCk7XG4gIH1cbiAgLyoqXG4gICAqIOaehOmAoFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuXG4gIFRyZW5kLnByb3RvdHlwZS5yZW5kZXJMaW5lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIHggPSBfYS54LFxuICAgICAgICB5ID0gX2EueSxcbiAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX2EuaGVpZ2h0LFxuICAgICAgICBiYXJXaWR0aCA9IF9hLmJhcldpZHRoLFxuICAgICAgICBkYXRhID0gX2EuZGF0YSxcbiAgICAgICAgc21vb3RoID0gX2Euc21vb3RoLFxuICAgICAgICBpc0FyZWEgPSBfYS5pc0FyZWEsXG4gICAgICAgIGxpbmVTdHlsZSA9IF9hLmxpbmVTdHlsZSxcbiAgICAgICAgYXJlYVN0eWxlID0gX2EuYXJlYVN0eWxlO1xuXG4gICAgdmFyIHRyZW5kR3JvdXAgPSB0aGlzLmdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIG5hbWU6ICd0cmVuZC1ncm91cCdcbiAgICB9KTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICB2YXIgcGF0aCA9IGRhdGFUb1BhdGgoZGF0YSwgd2lkdGgsIGhlaWdodCwgc21vb3RoKTsgLy8g57q/XG5cbiAgICAgIHRyZW5kR3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgcGF0aDogcGF0aFxuICAgICAgICB9LCBsaW5lU3R5bGUpXG4gICAgICB9KTsgLy8g5ZyoIGxpbmUg55qE5Z+656GA5LiK77yM57uY5Yi26Z2i56ev5Zu+XG5cbiAgICAgIGlmIChpc0FyZWEpIHtcbiAgICAgICAgdmFyIGFyZWFQYXRoID0gbGluZVBhdGhUb0FyZWFQYXRoKHBhdGgsIHdpZHRoLCBoZWlnaHQsIGRhdGEpO1xuICAgICAgICB0cmVuZEdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICBwYXRoOiBhcmVhUGF0aFxuICAgICAgICAgIH0sIGFyZWFTdHlsZSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSAvLyDnu5jliLbmn7Hnirblm77wn5OKXG5cblxuICAgIGlmICh0aGlzLmludGVydmFsQ29uZmlnKSB7XG4gICAgICB0cmVuZEdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHBhdGg6IGRhdGFUb1JlY3RQYXRoKHRoaXMuaW50ZXJ2YWxDb25maWcuZGF0YSwgd2lkdGgsIGhlaWdodCwgdGhpcy5pbnRlcnZhbENvbmZpZy5zdHlsZS5iYXJXaWR0aClcbiAgICAgICAgfSwgdGhpcy5pbnRlcnZhbENvbmZpZy5zdHlsZSlcbiAgICAgIH0pO1xuICAgIH0gLy8g57uf5LiA56e75Yqo5Yiw5a+55bqU55qE5L2N572uXG5cblxuICAgIHRyZW5kR3JvdXAubW92ZSh4LCB5KTtcbiAgfTtcblxuICBUcmVuZC5wcm90b3R5cGUuZGVzdG9yeSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyb3VwLmRlc3Ryb3koKTtcbiAgfTtcblxuICByZXR1cm4gVHJlbmQ7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFRyZW5kOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trend.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trendTimeBar.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trendTimeBar.js ***! \****************************************************************************************/ /*! exports provided: BACKGROUND_STYLE, FOREGROUND_STYLE, DEFAULT_HANDLER_WIDTH, HANDLER_STYLE, TEXT_STYLE, TICK_LABEL_STYLE, TICK_LINE_STYLE, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BACKGROUND_STYLE\", function() { return BACKGROUND_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FOREGROUND_STYLE\", function() { return FOREGROUND_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_HANDLER_WIDTH\", function() { return DEFAULT_HANDLER_WIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HANDLER_STYLE\", function() { return HANDLER_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_STYLE\", function() { return TEXT_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TICK_LABEL_STYLE\", function() { return TICK_LABEL_STYLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TICK_LINE_STYLE\", function() { return TICK_LINE_STYLE; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _trend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./trend */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trend.js\");\n/* harmony import */ var _handler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./handler */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/handler.js\");\n/* harmony import */ var _controllerBtn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controllerBtn */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/controllerBtn.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/constant.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\n/**\n * 一些默认的样式配置\n */\n\nvar BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.05\n};\nvar SIMPLE_BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.15,\n radius: 5\n};\nvar FOREGROUND_STYLE = {\n fill: '#5B8FF9',\n opacity: 0.3,\n cursor: 'grab'\n};\nvar DEFAULT_HANDLER_WIDTH = 2;\nvar HANDLER_STYLE = {\n width: DEFAULT_HANDLER_WIDTH,\n height: 24\n};\nvar TEXT_STYLE = {\n textBaseline: 'middle',\n fill: '#000',\n opacity: 0.45\n};\nvar TICK_LABEL_STYLE = {\n textAlign: 'center',\n textBaseline: 'top',\n fill: '#607889',\n opacity: 0.35\n};\nvar TICK_LINE_STYLE = {\n lineWidth: 1,\n stroke: '#ccc'\n};\n\nvar TrendTimeBar =\n/** @class */\nfunction () {\n function TrendTimeBar(cfg) {\n var _this = this;\n\n this.prevX = 0;\n\n this.onMouseDown = function (handler) {\n return function (e) {\n // 1. 记录点击的滑块\n _this.currentHandler = handler;\n var event = e.originalEvent; // 2. 存储当前点击位置\n\n event.stopPropagation();\n event.preventDefault(); // 兼容移动端获取数据\n\n _this.prevX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(event, 'touches.0.pageX', event.pageX); // 3. 开始滑动的时候,绑定 move 和 up 事件\n\n var containerDOM = _this.canvas.get('container');\n\n containerDOM.addEventListener('mousemove', _this.onMouseMove);\n containerDOM.addEventListener('mouseup', _this.onMouseUp);\n containerDOM.addEventListener('mouseleave', _this.onMouseUp); // 移动端事件\n\n containerDOM.addEventListener('touchmove', _this.onMouseMove);\n containerDOM.addEventListener('touchend', _this.onMouseUp);\n containerDOM.addEventListener('touchcancel', _this.onMouseUp);\n };\n };\n\n this.onMouseMove = function (e) {\n // 滑动过程中,计算偏移,更新滑块,然后 emit 数据出去\n e.stopPropagation();\n e.preventDefault();\n var x = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(e, 'touches.0.pageX', e.pageX); // 横向的 slider 只处理 x\n\n var offsetX = x - _this.prevX;\n\n var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width); // 更新 start end range 范围\n\n\n _this.updateStartEnd(offsetXRange); // 更新 ui\n\n\n _this.updateUI();\n\n _this.prevX = x;\n };\n\n this.onMouseUp = function () {\n // 结束之后,取消绑定的事件\n if (_this.currentHandler) {\n _this.currentHandler = undefined;\n }\n\n var containerDOM = _this.canvas.get('container');\n\n if (containerDOM) {\n containerDOM.removeEventListener('mousemove', _this.onMouseMove);\n containerDOM.removeEventListener('mouseup', _this.onMouseUp); // 防止滑动到 canvas 外部之后,状态丢失\n\n containerDOM.removeEventListener('mouseleave', _this.onMouseUp); // 移动端事件\n\n containerDOM.removeEventListener('touchmove', _this.onMouseMove);\n containerDOM.removeEventListener('touchend', _this.onMouseUp);\n containerDOM.removeEventListener('touchcancel', _this.onMouseUp);\n }\n };\n\n var _a = cfg.x,\n x = _a === void 0 ? 0 : _a,\n _b = cfg.y,\n y = _b === void 0 ? 0 : _b,\n _c = cfg.width,\n width = _c === void 0 ? 100 : _c,\n height = cfg.height,\n _d = cfg.padding,\n padding = _d === void 0 ? 10 : _d,\n trendCfg = cfg.trendCfg,\n _e = cfg.controllerCfg,\n controllerCfg = _e === void 0 ? {\n speed: 1\n } : _e,\n _f = cfg.backgroundStyle,\n backgroundStyle = _f === void 0 ? {} : _f,\n _g = cfg.foregroundStyle,\n foregroundStyle = _g === void 0 ? {} : _g,\n _h = cfg.handlerStyle,\n handlerStyle = _h === void 0 ? {} : _h,\n _j = cfg.textStyle,\n textStyle = _j === void 0 ? {} : _j,\n // 缩略轴的初始位置\n _k = cfg.start,\n // 缩略轴的初始位置\n start = _k === void 0 ? 0 : _k,\n _l = cfg.end,\n end = _l === void 0 ? 1 : _l,\n _m = cfg.minText,\n minText = _m === void 0 ? '' : _m,\n _o = cfg.maxText,\n maxText = _o === void 0 ? '' : _o,\n group = cfg.group,\n graph = cfg.graph,\n canvas = cfg.canvas,\n _p = cfg.tick,\n tick = _p === void 0 ? {\n tickLabelStyle: {},\n tickLineStyle: {},\n tickLabelFormatter: function tickLabelFormatter(d) {\n return d;\n },\n ticks: []\n } : _p,\n type = cfg.type;\n this.graph = graph;\n this.canvas = canvas;\n this.group = group;\n this.timeBarType = type; // position size\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.padding = padding;\n this.ticks = tick.ticks;\n this.trendCfg = trendCfg;\n this.controllerCfg = controllerCfg;\n this.currentSpeed = controllerCfg.speed || 1;\n this.tickLabelFormatter = tick.tickLabelFormatter; // style\n\n if (type === 'trend') {\n this.backgroundStyle = __assign(__assign({}, BACKGROUND_STYLE), backgroundStyle);\n } else if (type === 'simple') {\n this.backgroundStyle = __assign(__assign({}, SIMPLE_BACKGROUND_STYLE), backgroundStyle);\n }\n\n this.foregroundStyle = __assign(__assign({}, FOREGROUND_STYLE), foregroundStyle);\n this.handlerStyle = __assign(__assign({}, HANDLER_STYLE), handlerStyle);\n this.textStyle = __assign(__assign({}, TEXT_STYLE), textStyle);\n this.tickLabelStyle = __assign(__assign({}, TICK_LABEL_STYLE), tick.tickLabelStyle);\n this.tickLineStyle = __assign(__assign({}, TICK_LINE_STYLE), tick.tickLineStyle);\n this.currentMode = 'range'; // 初始信息\n\n this.start = start;\n this.end = end;\n this.minText = minText;\n this.maxText = maxText; // 初始化 fontFamily,如果有浏览器,取 body 上的字体,防止文字更新时局部渲染造成的重影\n\n this.fontFamily = typeof window !== 'undefined' ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif';\n this.renderSlider();\n }\n /**\n * 更新配置\n * @param cfg\n */\n\n\n TrendTimeBar.prototype.update = function (cfg) {\n var x = cfg.x,\n y = cfg.y,\n width = cfg.width,\n height = cfg.height,\n minText = cfg.minText,\n maxText = cfg.maxText,\n start = cfg.start,\n end = cfg.end; // start、end 只能是 0~1 范围\n\n this.start = Math.min(1, Math.max(start, 0));\n this.end = Math.min(1, Math.max(end, 0)); // 如果传了则更新,没有传则不更新\n // @ts-ignore\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(this, {\n x: x,\n y: y,\n width: width,\n height: height,\n minText: minText,\n maxText: maxText\n }); // 更新 ui,不自动绘制\n\n this.updateUI();\n };\n\n TrendTimeBar.prototype.setText = function (minText, maxText) {\n this.minTextShape.attr('text', minText);\n this.maxTextShape.attr('text', maxText);\n };\n /**\n * 初始化组件结构\n * @private\n */\n\n\n TrendTimeBar.prototype.renderSlider = function () {\n var _this = this;\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n timeBarType = _a.timeBarType; // 趋势图数据\n\n\n if (timeBarType === 'trend' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"size\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.trendCfg, 'data'))) {\n var trendComponent = new _trend__WEBPACK_IMPORTED_MODULE_1__[\"default\"](__assign(__assign({\n x: this.x,\n y: this.y,\n width: width,\n height: height\n }, this.trendCfg), {\n group: this.group\n }));\n this.trendComponent = trendComponent;\n }\n\n var sliderGroup = this.group.addGroup({\n name: 'slider-group'\n }); // 1. 背景\n\n sliderGroup.addShape('rect', {\n attrs: __assign({\n x: 0,\n y: 0,\n width: width,\n height: height\n }, this.backgroundStyle)\n });\n var textGroup = this.group.addGroup(); // 2. 左右文字\n\n if (timeBarType === 'trend') {\n this.minTextShape = textGroup.addShape('text', {\n attrs: __assign({\n x: 0,\n y: height / 2 + this.y,\n textAlign: 'right',\n text: this.minText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, this.textStyle),\n capture: false\n });\n this.maxTextShape = textGroup.addShape('text', {\n attrs: __assign({\n y: height / 2 + this.y,\n textAlign: 'left',\n text: this.maxText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, this.textStyle),\n capture: false\n });\n } else {\n this.minTextShape = textGroup.addShape('text', {\n attrs: __assign({\n x: 0,\n y: this.y - 10,\n textAlign: 'center',\n text: this.minText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, this.textStyle),\n capture: false\n });\n this.maxTextShape = textGroup.addShape('text', {\n attrs: __assign({\n y: this.y - 10,\n textAlign: 'center',\n text: this.maxText,\n silent: false,\n fontFamily: this.fontFamily || 'Arial, sans-serif'\n }, this.textStyle),\n capture: false\n });\n } // 3. 前景 选中背景框\n\n\n this.foregroundShape = this.group.addGroup().addShape('rect', {\n attrs: __assign({\n x: 0,\n y: this.y,\n height: height\n }, this.foregroundStyle)\n });\n this.foregroundShape.on('mousedown', function (e) {\n e.target.attr('cursor', 'grabbing');\n });\n this.foregroundShape.on('mouseup', function (e) {\n e.target.attr('cursor', _this.foregroundStyle.cursor || 'grab');\n }); // 滑块相关的大小信息\n\n var handlerWidth = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'width', 2);\n var handlerHeight = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'height', 24);\n var minHandleGroup = this.group.addGroup({\n name: 'minHandlerShape'\n }); // 4. 左右滑块\n\n this.minHandlerShape = new _handler__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n name: 'minHandlerShape',\n group: minHandleGroup,\n type: timeBarType,\n x: this.x,\n y: this.y,\n width: handlerWidth,\n height: handlerHeight,\n style: this.handlerStyle\n });\n var maxHandleGroup = this.group.addGroup({\n name: 'maxHandlerShape'\n });\n this.maxHandlerShape = new _handler__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n name: 'maxHandlerShape',\n group: maxHandleGroup,\n type: timeBarType,\n x: this.x,\n y: this.y,\n width: handlerWidth,\n height: handlerHeight,\n style: this.handlerStyle\n }); // 缩略图下面的时间刻度\n\n var tickData = this.ticks;\n var interval = width / (tickData.length - 1);\n this.tickPosList = [];\n\n if (this.textList && this.textList.length) {\n this.textList.forEach(function (text) {\n text.destroy();\n });\n }\n\n var lastX = -Infinity;\n this.textList = tickData.map(function (data, index) {\n _this.tickPosList.push(_this.x + index * interval);\n\n var label;\n\n if (_this.tickLabelFormatter) {\n label = _this.tickLabelFormatter(data);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(label) && label) {\n // return true\n label = data.date;\n }\n } else {\n label = data.date;\n } // 文本刻度\n\n\n var text = _this.group.addShape('text', {\n attrs: __assign({\n x: _this.x + index * interval,\n y: _this.y + height + 5,\n text: label,\n fontFamily: _this.fontFamily || 'Arial, sans-serif'\n }, _this.tickLabelStyle)\n }); // 文本刻度上面的竖线\n\n\n var line = _this.group.addShape('line', {\n attrs: __assign({\n x1: _this.x + index * interval,\n y1: _this.y + height + 2,\n x2: _this.x + index * interval,\n y2: _this.y + height + 6\n }, _this.tickLineStyle)\n });\n\n line.toBack();\n var bbox = text.getBBox(); // 抽样,标签与标签间距不小于 10\n\n if (bbox.minX > lastX) {\n text.show();\n line.show();\n lastX = bbox.minX + bbox.width + 10;\n } else {\n text.hide();\n line.hide();\n }\n\n return text;\n }); // 渲染播放、快进和后退的控制按钮\n\n this.controllerBtnGroup = new _controllerBtn__WEBPACK_IMPORTED_MODULE_3__[\"default\"](__assign({\n group: this.group,\n x: this.x,\n y: this.y + height + 25,\n width: width,\n height: 35\n }, this.controllerCfg)); // 初始化 minText 和 maxText,方便计算它们的 bbox\n\n this.updateStartEnd(0); // 根据 start end 更新 ui 的位置信息\n\n this.updateUI(); // 移动到对应的位置\n\n sliderGroup.move(this.x, this.y); // 绑定事件鼠标事件\n\n this.bindEvents();\n };\n /**\n * 绑定事件:\n * - 点击\n * - 滑动\n * - 拖拽\n * - 滚动\n * @private\n */\n\n\n TrendTimeBar.prototype.bindEvents = function () {\n var _this = this; // 1. 左滑块的滑动\n\n\n var minHandleShapeGroup = this.group.find(function (group) {\n return group.get('name') === 'minHandlerShape';\n });\n\n if (minHandleShapeGroup) {\n minHandleShapeGroup.on('minHandlerShape-handler:mousedown', this.onMouseDown(this.minHandlerShape));\n minHandleShapeGroup.on('minHandlerShape-handler:touchstart', this.onMouseDown(this.minHandlerShape));\n }\n\n var maxHandleShapeGroup = this.group.find(function (group) {\n return group.get('name') === 'maxHandlerShape';\n }); // 2. 右滑块的滑动\n\n if (maxHandleShapeGroup) {\n maxHandleShapeGroup.on('maxHandlerShape-handler:mousedown', this.onMouseDown(this.maxHandlerShape));\n maxHandleShapeGroup.on('maxHandlerShape-handler:touchstart', this.onMouseDown(this.maxHandlerShape));\n } // 3. 前景选中区域\n\n\n this.foregroundShape.on('mousedown', this.onMouseDown(this.foregroundShape));\n this.foregroundShape.on('touchstart', this.onMouseDown(this.foregroundShape)); // 播放区按钮控制\n\n /** 播放/暂停事件 */\n\n this.group.on(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PLAY_PAUSE_BTN\"] + \":click\", function () {\n _this.isPlay = !_this.isPlay;\n _this.currentHandler = _this.maxHandlerShape;\n\n _this.changePlayStatus();\n }); // 处理前进一步的事件\n\n this.group.on(_constant__WEBPACK_IMPORTED_MODULE_4__[\"NEXT_STEP_BTN\"] + \":click\", function () {\n _this.currentHandler = _this.maxHandlerShape;\n\n _this.updateStartEnd(0.01);\n\n _this.updateUI();\n }); // 处理后退一步的事件\n\n this.group.on(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PRE_STEP_BTN\"] + \":click\", function () {\n _this.currentHandler = _this.maxHandlerShape;\n\n _this.updateStartEnd(-0.01);\n\n _this.updateUI();\n });\n this.group.on(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMEBAR_CONFIG_CHANGE\"], function (_a) {\n var type = _a.type,\n speed = _a.speed;\n _this.currentSpeed = speed;\n _this.currentMode = type;\n\n if (type === 'single') {\n _this.minHandlerShape.hide();\n\n _this.foregroundShape.hide();\n\n _this.minTextShape.hide();\n } else if (type === 'range') {\n _this.minHandlerShape.show();\n\n _this.foregroundShape.show();\n\n _this.minTextShape.show();\n }\n });\n };\n /** 输入当前圆点位置,输出离哪个 tick 的位置最近 */\n\n\n TrendTimeBar.prototype.adjustTickIndex = function (timeSelectX) {\n for (var i = 0; i < this.tickPosList.length - 1; i++) {\n if (this.tickPosList[i] <= timeSelectX && timeSelectX <= this.tickPosList[i + 1]) {\n return Math.abs(this.tickPosList[i] - timeSelectX) < Math.abs(timeSelectX - this.tickPosList[i + 1]) ? i : i + 1;\n }\n }\n\n return 0;\n };\n /**\n * 调整 offsetRange,因为一些范围的限制\n * @param offsetRange\n */\n\n\n TrendTimeBar.prototype.adjustOffsetRange = function (offsetRange) {\n // 针对不同的滑动组件,处理的方式不同\n switch (this.currentHandler) {\n case this.minHandlerShape:\n {\n var min = 0 - this.start;\n var max = 1 - this.start;\n return Math.min(max, Math.max(min, offsetRange));\n }\n\n case this.maxHandlerShape:\n {\n var min = 0 - this.end;\n var max = 1 - this.end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n\n case this.foregroundShape:\n {\n var min = 0 - this.start;\n var max = 1 - this.end;\n return Math.min(max, Math.max(min, offsetRange));\n }\n\n default:\n return 0;\n }\n };\n /**\n * 更新起始、结束的控制块位置、文本、范围值(原始值)\n * @param offsetRange\n */\n\n\n TrendTimeBar.prototype.updateStartEnd = function (offsetRange) {\n var minData = this.ticks[this.adjustTickIndex(this.start * this.width)];\n var maxData = this.ticks[this.adjustTickIndex(this.end * this.width)];\n\n if (!this.currentHandler) {\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n return;\n } // 操作不同的组件,反馈不一样\n\n\n switch (this.currentHandler) {\n case this.minHandlerShape:\n // 拖动最小滑块时使用当前最大值设置最大值的文本,以便恢复到默认值\n this.maxText = this.maxTextShape.attr('text');\n this.start += offsetRange;\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n break;\n\n case this.maxHandlerShape:\n // 拖动最大滑块时使用当前最小值设置最小值的文本,以便恢复到默认值\n this.minText = this.minTextShape.attr('text');\n this.end += offsetRange;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n break;\n\n case this.foregroundShape:\n this.start += offsetRange;\n this.end += offsetRange;\n this.minText = this.tickLabelFormatter ? this.tickLabelFormatter(minData) : minData.date;\n this.maxText = this.tickLabelFormatter ? this.tickLabelFormatter(maxData) : maxData.date;\n break;\n\n default:\n break;\n }\n };\n /**\n * 根据移动的比例来更新 ui,更新范围(0-1 范围的比例值)\n * @private\n */\n\n\n TrendTimeBar.prototype.updateUI = function () {\n var _this = this;\n\n if (this.start < 0) {\n this.start = 0;\n }\n\n if (this.end > 1) {\n this.end = 1;\n }\n\n var min = this.x + this.start * this.width;\n var max = this.x + this.end * this.width; // 1. foreground\n\n this.foregroundShape.attr('x', min);\n this.foregroundShape.attr('width', max - min); // 滑块相关的大小信息\n\n var handlerWidth = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'width', DEFAULT_HANDLER_WIDTH); // 设置文本\n\n this.setText(this.minText, this.maxText);\n\n var _a = this.dodgeText([min, max]),\n minAttrs = _a[0],\n maxAttrs = _a[1]; // 2. 左侧滑块和文字位置\n\n\n this.minHandlerShape.setX(min - handlerWidth / 2);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(minAttrs, function (v, k) {\n return _this.minTextShape.attr(k, v);\n }); // 3. 右侧滑块和文字位置\n\n this.maxHandlerShape.setX(max - handlerWidth / 2);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(maxAttrs, function (v, k) {\n return _this.maxTextShape.attr(k, v);\n });\n\n if (this.currentMode === 'range') {\n // 因为存储的 start、end 可能不一定是按大小存储的,所以排序一下,对外是 end >= start\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [this.start, this.end].sort()\n });\n } else if (this.currentMode === 'single') {\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"], {\n value: [this.end, this.end]\n });\n }\n };\n /**\n * 调整 text 的位置,自动躲避\n * 根据位置,调整返回新的位置\n * @param range\n */\n\n\n TrendTimeBar.prototype.dodgeText = function (range) {\n var _a, _b;\n\n var TEXTPADDING = 2;\n var handlerWidth = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"get\"])(this.handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n var minTextShape = this.minTextShape;\n var maxTextShape = this.maxTextShape;\n var min = range[0],\n max = range[1];\n var sorted = false; // 如果交换了位置,则对应的 min max 也交换\n\n if (min > max) {\n _a = [max, min], min = _a[0], max = _a[1];\n _b = [maxTextShape, minTextShape], minTextShape = _b[0], maxTextShape = _b[1];\n sorted = true;\n } // 避让规则,优先显示在两侧,只有显示不下的时候,才显示在中间\n\n\n var minBBox = minTextShape.getBBox();\n var maxBBox = maxTextShape.getBBox();\n var minAttrs = null;\n var maxAttrs = null;\n\n if (this.timeBarType === 'trend') {\n minAttrs = min - minBBox.width < this.x + TEXTPADDING ? {\n x: min + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'left'\n } : {\n x: min - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'right'\n };\n maxAttrs = max + maxBBox.width > this.x + this.width ? {\n x: max - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'right'\n } : {\n x: max + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'left'\n };\n } else if (this.timeBarType === 'simple') {\n minAttrs = minBBox.width > min - TEXTPADDING ? {\n x: min + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'center'\n } : {\n x: min - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'center'\n };\n maxAttrs = maxBBox.width > this.width - max - TEXTPADDING ? {\n x: max - handlerWidth / 2 - TEXTPADDING,\n textAlign: 'center'\n } : {\n x: max + handlerWidth / 2 + TEXTPADDING,\n textAlign: 'center'\n };\n }\n\n return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs];\n };\n\n TrendTimeBar.prototype.startPlay = function () {\n var _this = this;\n\n return typeof window !== 'undefined' ? window.requestAnimationFrame(function () {\n var _a = _this,\n ticks = _a.ticks,\n width = _a.width;\n var speed = _this.currentSpeed;\n var tickInterval = width / ticks.length;\n var offsetX = tickInterval / ((10 - speed) * 1000 / 60);\n\n var offsetXRange = _this.adjustOffsetRange(offsetX / _this.width);\n\n _this.updateStartEnd(offsetXRange);\n\n _this.updateUI();\n\n if (_this.isPlay) {\n _this.playHandler = _this.startPlay();\n }\n }) : undefined;\n };\n\n TrendTimeBar.prototype.changePlayStatus = function (isSync) {\n if (isSync === void 0) {\n isSync = true;\n }\n\n this.controllerBtnGroup.playButton.update({\n isPlay: this.isPlay\n });\n\n if (this.isPlay) {\n // 开始播放\n this.playHandler = this.startPlay();\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMELINE_START\"], null);\n } else {\n // 结束播放\n if (this.playHandler) {\n if (typeof window !== 'undefined') window.cancelAnimationFrame(this.playHandler);\n\n if (isSync) {\n this.graph.emit(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMELINE_END\"], null);\n }\n }\n }\n };\n\n TrendTimeBar.prototype.destory = function () {\n this.graph.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"VALUE_CHANGE\"]);\n var group = this.group;\n var minHandleShapeGroup = group.find(function (g) {\n return g.get('name') === 'minHandlerShape';\n });\n\n if (minHandleShapeGroup) {\n minHandleShapeGroup.off('minHandlerShape-handler:mousedown');\n minHandleShapeGroup.off('minHandlerShape-handler:touchstart');\n minHandleShapeGroup.destroy();\n }\n\n var maxHandleShapeGroup = group.find(function (g) {\n return g.get('name') === 'maxHandlerShape';\n }); // 2. 右滑块的滑动\n\n if (maxHandleShapeGroup) {\n maxHandleShapeGroup.off('maxHandlerShape-handler:mousedown');\n maxHandleShapeGroup.off('maxHandlerShape-handler:touchstart');\n maxHandleShapeGroup.destroy();\n } // 3. 前景选中区域\n\n\n this.foregroundShape.off('mousedown');\n this.foregroundShape.off('touchstart');\n this.foregroundShape.destroy();\n group.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PLAY_PAUSE_BTN\"] + \":click\");\n group.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"NEXT_STEP_BTN\"] + \":click\");\n group.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"PRE_STEP_BTN\"] + \":click\");\n group.off(_constant__WEBPACK_IMPORTED_MODULE_4__[\"TIMEBAR_CONFIG_CHANGE\"]);\n group.destroy();\n\n if (this.trendComponent) {\n this.trendComponent.destory();\n }\n };\n\n return TrendTimeBar;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TrendTimeBar);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdGltZUJhci90cmVuZFRpbWVCYXIuanM/MjVjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQWUsU0FBSSxJQUFJLFNBQUk7QUFDM0I7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRXFEO0FBQ3pCO0FBQ0k7QUFDTTtBQUNNO0FBQ2dHO0FBQzVJO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLCtCQUErQjs7QUFFL0Isc0JBQXNCLHNEQUFHLHdDQUF3Qzs7QUFFakU7O0FBRUE7QUFDQTtBQUNBLHFFQUFxRTs7QUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsc0RBQUcsZ0NBQWdDOztBQUVqRDs7QUFFQSx3RUFBd0U7OztBQUd4RSx5Q0FBeUM7OztBQUd6Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHFFQUFxRTs7QUFFckUsd0VBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBLGlEQUFpRDtBQUNqRCxLQUFLO0FBQ0wsaURBQWlEO0FBQ2pEOztBQUVBLCtDQUErQztBQUMvQyw0Q0FBNEM7QUFDNUMseUNBQXlDO0FBQ3pDLDhDQUE4QztBQUM5Qyw2Q0FBNkM7QUFDN0MsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBLDZDQUE2QztBQUM3Qzs7QUFFQSxJQUFJLHlEQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7OztBQUdyQyxtQ0FBbUMsdURBQUksQ0FBQyxzREFBRztBQUMzQywrQkFBK0IsOENBQUs7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHVCQUF1QixzREFBRztBQUMxQix3QkFBd0Isc0RBQUc7QUFDM0I7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCwrQkFBK0IsZ0RBQU87QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLCtCQUErQixnREFBTztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsYUFBYSwyREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTyxFQUFFOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGtDQUFrQyxzREFBYTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyx1QkFBdUI7O0FBRTVCLDJCQUEyQjs7QUFFM0Isb0JBQW9COztBQUVwQixxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLHFCQUFxQjs7O0FBR3JCO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSxrRkFBa0Y7O0FBRWxGOztBQUVBLGtCQUFrQix3REFBYztBQUNoQztBQUNBOztBQUVBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGtCQUFrQix1REFBYTtBQUMvQjs7QUFFQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxrQkFBa0Isc0RBQVk7QUFDOUI7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsa0JBQWtCLCtEQUFxQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7O0FBR0E7QUFDQSxtQkFBbUIsaUNBQWlDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0Esa0RBQWtEOztBQUVsRCx1QkFBdUIsc0RBQUcsb0RBQW9EOztBQUU5RTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCOzs7QUFHekI7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxzQkFBc0Isc0RBQVk7QUFDbEM7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLHNCQUFzQixzREFBWTtBQUNsQztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixzREFBRztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0RBQWM7QUFDcEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQixzREFBWTtBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixzREFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQWM7QUFDNUIsY0FBYyx1REFBYTtBQUMzQixjQUFjLHNEQUFZO0FBQzFCLGNBQWMsK0RBQXFCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYywyRUFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGx1Z2luQDAuNS4wQEBhbnR2L2c2LXBsdWdpbi9lcy90aW1lQmFyL3RyZW5kVGltZUJhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9IHRoaXMgJiYgdGhpcy5fX2Fzc2lnbiB8fCBmdW5jdGlvbiAoKSB7XG4gIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodCkge1xuICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgcCBpbiBzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxuaW1wb3J0IHsgZ2V0LCBzaXplLCBhc3NpZ24sIGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBUcmVuZCBmcm9tICcuL3RyZW5kJztcbmltcG9ydCBIYW5kbGVyIGZyb20gJy4vaGFuZGxlcic7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IENvbnRyb2xsZXJCdG4gZnJvbSAnLi9jb250cm9sbGVyQnRuJztcbmltcG9ydCB7IFZBTFVFX0NIQU5HRSwgVElNRUxJTkVfU1RBUlQsIFRJTUVCQVJfQ09ORklHX0NIQU5HRSwgUExBWV9QQVVTRV9CVE4sIE5FWFRfU1RFUF9CVE4sIFBSRV9TVEVQX0JUTiwgVElNRUxJTkVfRU5EIH0gZnJvbSAnLi9jb25zdGFudCc7XG4vKipcbiAqIOS4gOS6m+m7mOiupOeahOagt+W8j+mFjee9rlxuICovXG5cbmV4cG9ydCB2YXIgQkFDS0dST1VORF9TVFlMRSA9IHtcbiAgZmlsbDogJyM0MTYxODAnLFxuICBvcGFjaXR5OiAwLjA1XG59O1xudmFyIFNJTVBMRV9CQUNLR1JPVU5EX1NUWUxFID0ge1xuICBmaWxsOiAnIzQxNjE4MCcsXG4gIG9wYWNpdHk6IDAuMTUsXG4gIHJhZGl1czogNVxufTtcbmV4cG9ydCB2YXIgRk9SRUdST1VORF9TVFlMRSA9IHtcbiAgZmlsbDogJyM1QjhGRjknLFxuICBvcGFjaXR5OiAwLjMsXG4gIGN1cnNvcjogJ2dyYWInXG59O1xuZXhwb3J0IHZhciBERUZBVUxUX0hBTkRMRVJfV0lEVEggPSAyO1xuZXhwb3J0IHZhciBIQU5ETEVSX1NUWUxFID0ge1xuICB3aWR0aDogREVGQVVMVF9IQU5ETEVSX1dJRFRILFxuICBoZWlnaHQ6IDI0XG59O1xuZXhwb3J0IHZhciBURVhUX1NUWUxFID0ge1xuICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICBmaWxsOiAnIzAwMCcsXG4gIG9wYWNpdHk6IDAuNDVcbn07XG5leHBvcnQgdmFyIFRJQ0tfTEFCRUxfU1RZTEUgPSB7XG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHRleHRCYXNlbGluZTogJ3RvcCcsXG4gIGZpbGw6ICcjNjA3ODg5JyxcbiAgb3BhY2l0eTogMC4zNVxufTtcbmV4cG9ydCB2YXIgVElDS19MSU5FX1NUWUxFID0ge1xuICBsaW5lV2lkdGg6IDEsXG4gIHN0cm9rZTogJyNjY2MnXG59O1xuXG52YXIgVHJlbmRUaW1lQmFyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVHJlbmRUaW1lQmFyKGNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnByZXZYID0gMDtcblxuICAgIHRoaXMub25Nb3VzZURvd24gPSBmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIDEuIOiusOW9leeCueWHu+eahOa7keWdl1xuICAgICAgICBfdGhpcy5jdXJyZW50SGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHZhciBldmVudCA9IGUub3JpZ2luYWxFdmVudDsgLy8gMi4g5a2Y5YKo5b2T5YmN54K55Ye75L2N572uXG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIOWFvOWuueenu+WKqOerr+iOt+WPluaVsOaNrlxuXG4gICAgICAgIF90aGlzLnByZXZYID0gZ2V0KGV2ZW50LCAndG91Y2hlcy4wLnBhZ2VYJywgZXZlbnQucGFnZVgpOyAvLyAzLiDlvIDlp4vmu5HliqjnmoTml7blgJnvvIznu5HlrpogbW92ZSDlkowgdXAg5LqL5Lu2XG5cbiAgICAgICAgdmFyIGNvbnRhaW5lckRPTSA9IF90aGlzLmNhbnZhcy5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBfdGhpcy5vbk1vdXNlTW92ZSk7XG4gICAgICAgIGNvbnRhaW5lckRPTS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgX3RoaXMub25Nb3VzZVVwKTtcbiAgICAgICAgY29udGFpbmVyRE9NLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBfdGhpcy5vbk1vdXNlVXApOyAvLyDnp7vliqjnq6/kuovku7ZcblxuICAgICAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgX3RoaXMub25Nb3VzZU1vdmUpO1xuICAgICAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBfdGhpcy5vbk1vdXNlVXApO1xuICAgICAgICBjb250YWluZXJET00uYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hjYW5jZWwnLCBfdGhpcy5vbk1vdXNlVXApO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdGhpcy5vbk1vdXNlTW92ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAvLyDmu5Hliqjov4fnqIvkuK3vvIzorqHnrpflgY/np7vvvIzmm7TmlrDmu5HlnZfvvIznhLblkI4gZW1pdCDmlbDmja7lh7rljrtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB2YXIgeCA9IGdldChlLCAndG91Y2hlcy4wLnBhZ2VYJywgZS5wYWdlWCk7IC8vIOaoquWQkeeahCBzbGlkZXIg5Y+q5aSE55CGIHhcblxuICAgICAgdmFyIG9mZnNldFggPSB4IC0gX3RoaXMucHJldlg7XG5cbiAgICAgIHZhciBvZmZzZXRYUmFuZ2UgPSBfdGhpcy5hZGp1c3RPZmZzZXRSYW5nZShvZmZzZXRYIC8gX3RoaXMud2lkdGgpOyAvLyDmm7TmlrAgc3RhcnQgZW5kIHJhbmdlIOiMg+WbtFxuXG5cbiAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKG9mZnNldFhSYW5nZSk7IC8vIOabtOaWsCB1aVxuXG5cbiAgICAgIF90aGlzLnVwZGF0ZVVJKCk7XG5cbiAgICAgIF90aGlzLnByZXZYID0geDtcbiAgICB9O1xuXG4gICAgdGhpcy5vbk1vdXNlVXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyDnu5PmnZ/kuYvlkI7vvIzlj5bmtojnu5HlrprnmoTkuovku7ZcbiAgICAgIGlmIChfdGhpcy5jdXJyZW50SGFuZGxlcikge1xuICAgICAgICBfdGhpcy5jdXJyZW50SGFuZGxlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRhaW5lckRPTSA9IF90aGlzLmNhbnZhcy5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgICBpZiAoY29udGFpbmVyRE9NKSB7XG4gICAgICAgIGNvbnRhaW5lckRPTS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBfdGhpcy5vbk1vdXNlTW92ZSk7XG4gICAgICAgIGNvbnRhaW5lckRPTS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgX3RoaXMub25Nb3VzZVVwKTsgLy8g6Ziy5q2i5ruR5Yqo5YiwIGNhbnZhcyDlpJbpg6jkuYvlkI7vvIznirbmgIHkuKLlpLFcblxuICAgICAgICBjb250YWluZXJET00ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIF90aGlzLm9uTW91c2VVcCk7IC8vIOenu+WKqOerr+S6i+S7tlxuXG4gICAgICAgIGNvbnRhaW5lckRPTS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBfdGhpcy5vbk1vdXNlTW92ZSk7XG4gICAgICAgIGNvbnRhaW5lckRPTS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIF90aGlzLm9uTW91c2VVcCk7XG4gICAgICAgIGNvbnRhaW5lckRPTS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIF90aGlzLm9uTW91c2VVcCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBfYSA9IGNmZy54LFxuICAgICAgICB4ID0gX2EgPT09IHZvaWQgMCA/IDAgOiBfYSxcbiAgICAgICAgX2IgPSBjZmcueSxcbiAgICAgICAgeSA9IF9iID09PSB2b2lkIDAgPyAwIDogX2IsXG4gICAgICAgIF9jID0gY2ZnLndpZHRoLFxuICAgICAgICB3aWR0aCA9IF9jID09PSB2b2lkIDAgPyAxMDAgOiBfYyxcbiAgICAgICAgaGVpZ2h0ID0gY2ZnLmhlaWdodCxcbiAgICAgICAgX2QgPSBjZmcucGFkZGluZyxcbiAgICAgICAgcGFkZGluZyA9IF9kID09PSB2b2lkIDAgPyAxMCA6IF9kLFxuICAgICAgICB0cmVuZENmZyA9IGNmZy50cmVuZENmZyxcbiAgICAgICAgX2UgPSBjZmcuY29udHJvbGxlckNmZyxcbiAgICAgICAgY29udHJvbGxlckNmZyA9IF9lID09PSB2b2lkIDAgPyB7XG4gICAgICBzcGVlZDogMVxuICAgIH0gOiBfZSxcbiAgICAgICAgX2YgPSBjZmcuYmFja2dyb3VuZFN0eWxlLFxuICAgICAgICBiYWNrZ3JvdW5kU3R5bGUgPSBfZiA9PT0gdm9pZCAwID8ge30gOiBfZixcbiAgICAgICAgX2cgPSBjZmcuZm9yZWdyb3VuZFN0eWxlLFxuICAgICAgICBmb3JlZ3JvdW5kU3R5bGUgPSBfZyA9PT0gdm9pZCAwID8ge30gOiBfZyxcbiAgICAgICAgX2ggPSBjZmcuaGFuZGxlclN0eWxlLFxuICAgICAgICBoYW5kbGVyU3R5bGUgPSBfaCA9PT0gdm9pZCAwID8ge30gOiBfaCxcbiAgICAgICAgX2ogPSBjZmcudGV4dFN0eWxlLFxuICAgICAgICB0ZXh0U3R5bGUgPSBfaiA9PT0gdm9pZCAwID8ge30gOiBfaixcbiAgICAgICAgLy8g57yp55Wl6L2055qE5Yid5aeL5L2N572uXG4gICAgX2sgPSBjZmcuc3RhcnQsXG4gICAgICAgIC8vIOe8qeeVpei9tOeahOWIneWni+S9jee9rlxuICAgIHN0YXJ0ID0gX2sgPT09IHZvaWQgMCA/IDAgOiBfayxcbiAgICAgICAgX2wgPSBjZmcuZW5kLFxuICAgICAgICBlbmQgPSBfbCA9PT0gdm9pZCAwID8gMSA6IF9sLFxuICAgICAgICBfbSA9IGNmZy5taW5UZXh0LFxuICAgICAgICBtaW5UZXh0ID0gX20gPT09IHZvaWQgMCA/ICcnIDogX20sXG4gICAgICAgIF9vID0gY2ZnLm1heFRleHQsXG4gICAgICAgIG1heFRleHQgPSBfbyA9PT0gdm9pZCAwID8gJycgOiBfbyxcbiAgICAgICAgZ3JvdXAgPSBjZmcuZ3JvdXAsXG4gICAgICAgIGdyYXBoID0gY2ZnLmdyYXBoLFxuICAgICAgICBjYW52YXMgPSBjZmcuY2FudmFzLFxuICAgICAgICBfcCA9IGNmZy50aWNrLFxuICAgICAgICB0aWNrID0gX3AgPT09IHZvaWQgMCA/IHtcbiAgICAgIHRpY2tMYWJlbFN0eWxlOiB7fSxcbiAgICAgIHRpY2tMaW5lU3R5bGU6IHt9LFxuICAgICAgdGlja0xhYmVsRm9ybWF0dGVyOiBmdW5jdGlvbiB0aWNrTGFiZWxGb3JtYXR0ZXIoZCkge1xuICAgICAgICByZXR1cm4gZDtcbiAgICAgIH0sXG4gICAgICB0aWNrczogW11cbiAgICB9IDogX3AsXG4gICAgICAgIHR5cGUgPSBjZmcudHlwZTtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMudGltZUJhclR5cGUgPSB0eXBlOyAvLyBwb3NpdGlvbiBzaXplXG5cbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMucGFkZGluZyA9IHBhZGRpbmc7XG4gICAgdGhpcy50aWNrcyA9IHRpY2sudGlja3M7XG4gICAgdGhpcy50cmVuZENmZyA9IHRyZW5kQ2ZnO1xuICAgIHRoaXMuY29udHJvbGxlckNmZyA9IGNvbnRyb2xsZXJDZmc7XG4gICAgdGhpcy5jdXJyZW50U3BlZWQgPSBjb250cm9sbGVyQ2ZnLnNwZWVkIHx8IDE7XG4gICAgdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIgPSB0aWNrLnRpY2tMYWJlbEZvcm1hdHRlcjsgLy8gc3R5bGVcblxuICAgIGlmICh0eXBlID09PSAndHJlbmQnKSB7XG4gICAgICB0aGlzLmJhY2tncm91bmRTdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBCQUNLR1JPVU5EX1NUWUxFKSwgYmFja2dyb3VuZFN0eWxlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7XG4gICAgICB0aGlzLmJhY2tncm91bmRTdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBTSU1QTEVfQkFDS0dST1VORF9TVFlMRSksIGJhY2tncm91bmRTdHlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JlZ3JvdW5kU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgRk9SRUdST1VORF9TVFlMRSksIGZvcmVncm91bmRTdHlsZSk7XG4gICAgdGhpcy5oYW5kbGVyU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgSEFORExFUl9TVFlMRSksIGhhbmRsZXJTdHlsZSk7XG4gICAgdGhpcy50ZXh0U3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgVEVYVF9TVFlMRSksIHRleHRTdHlsZSk7XG4gICAgdGhpcy50aWNrTGFiZWxTdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBUSUNLX0xBQkVMX1NUWUxFKSwgdGljay50aWNrTGFiZWxTdHlsZSk7XG4gICAgdGhpcy50aWNrTGluZVN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIFRJQ0tfTElORV9TVFlMRSksIHRpY2sudGlja0xpbmVTdHlsZSk7XG4gICAgdGhpcy5jdXJyZW50TW9kZSA9ICdyYW5nZSc7IC8vIOWIneWni+S/oeaBr1xuXG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMubWluVGV4dCA9IG1pblRleHQ7XG4gICAgdGhpcy5tYXhUZXh0ID0gbWF4VGV4dDsgLy8g5Yid5aeL5YyWIGZvbnRGYW1pbHnvvIzlpoLmnpzmnInmtY/op4jlmajvvIzlj5YgYm9keSDkuIrnmoTlrZfkvZPvvIzpmLLmraLmloflrZfmm7TmlrDml7blsYDpg6jmuLLmn5PpgKDmiJDnmoTph43lvbFcblxuICAgIHRoaXMuZm9udEZhbWlseSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1mYW1pbHknKSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnIDogJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB0aGlzLnJlbmRlclNsaWRlcigpO1xuICB9XG4gIC8qKlxuICAgKiDmm7TmlrDphY3nva5cbiAgICogQHBhcmFtIGNmZ1xuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciB4ID0gY2ZnLngsXG4gICAgICAgIHkgPSBjZmcueSxcbiAgICAgICAgd2lkdGggPSBjZmcud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGNmZy5oZWlnaHQsXG4gICAgICAgIG1pblRleHQgPSBjZmcubWluVGV4dCxcbiAgICAgICAgbWF4VGV4dCA9IGNmZy5tYXhUZXh0LFxuICAgICAgICBzdGFydCA9IGNmZy5zdGFydCxcbiAgICAgICAgZW5kID0gY2ZnLmVuZDsgLy8gc3RhcnTjgIFlbmQg5Y+q6IO95pivIDB+MSDojIPlm7RcblxuICAgIHRoaXMuc3RhcnQgPSBNYXRoLm1pbigxLCBNYXRoLm1heChzdGFydCwgMCkpO1xuICAgIHRoaXMuZW5kID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoZW5kLCAwKSk7IC8vIOWmguaenOS8oOS6huWImeabtOaWsO+8jOayoeacieS8oOWImeS4jeabtOaWsFxuICAgIC8vIEB0cy1pZ25vcmVcblxuICAgIGFzc2lnbih0aGlzLCB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgbWluVGV4dDogbWluVGV4dCxcbiAgICAgIG1heFRleHQ6IG1heFRleHRcbiAgICB9KTsgLy8g5pu05pawIHVp77yM5LiN6Ieq5Yqo57uY5Yi2XG5cbiAgICB0aGlzLnVwZGF0ZVVJKCk7XG4gIH07XG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5zZXRUZXh0ID0gZnVuY3Rpb24gKG1pblRleHQsIG1heFRleHQpIHtcbiAgICB0aGlzLm1pblRleHRTaGFwZS5hdHRyKCd0ZXh0JywgbWluVGV4dCk7XG4gICAgdGhpcy5tYXhUZXh0U2hhcGUuYXR0cigndGV4dCcsIG1heFRleHQpO1xuICB9O1xuICAvKipcbiAgICog5Yid5aeL5YyW57uE5Lu257uT5p6EXG4gICAqIEBwcml2YXRlXG4gICAqL1xuXG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5yZW5kZXJTbGlkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIHdpZHRoID0gX2Eud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF9hLmhlaWdodCxcbiAgICAgICAgdGltZUJhclR5cGUgPSBfYS50aW1lQmFyVHlwZTsgLy8g6LaL5Yq/5Zu+5pWw5o2uXG5cblxuICAgIGlmICh0aW1lQmFyVHlwZSA9PT0gJ3RyZW5kJyAmJiBzaXplKGdldCh0aGlzLnRyZW5kQ2ZnLCAnZGF0YScpKSkge1xuICAgICAgdmFyIHRyZW5kQ29tcG9uZW50ID0gbmV3IFRyZW5kKF9fYXNzaWduKF9fYXNzaWduKHtcbiAgICAgICAgeDogdGhpcy54LFxuICAgICAgICB5OiB0aGlzLnksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0sIHRoaXMudHJlbmRDZmcpLCB7XG4gICAgICAgIGdyb3VwOiB0aGlzLmdyb3VwXG4gICAgICB9KSk7XG4gICAgICB0aGlzLnRyZW5kQ29tcG9uZW50ID0gdHJlbmRDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgdmFyIHNsaWRlckdyb3VwID0gdGhpcy5ncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAnc2xpZGVyLWdyb3VwJ1xuICAgIH0pOyAvLyAxLiDog4zmma9cblxuICAgIHNsaWRlckdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSwgdGhpcy5iYWNrZ3JvdW5kU3R5bGUpXG4gICAgfSk7XG4gICAgdmFyIHRleHRHcm91cCA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoKTsgLy8gMi4g5bem5Y+z5paH5a2XXG5cbiAgICBpZiAodGltZUJhclR5cGUgPT09ICd0cmVuZCcpIHtcbiAgICAgIHRoaXMubWluVGV4dFNoYXBlID0gdGV4dEdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogaGVpZ2h0IC8gMiArIHRoaXMueSxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXG4gICAgICAgICAgdGV4dDogdGhpcy5taW5UZXh0LFxuICAgICAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgICAgfSwgdGhpcy50ZXh0U3R5bGUpLFxuICAgICAgICBjYXB0dXJlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICB0aGlzLm1heFRleHRTaGFwZSA9IHRleHRHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyICsgdGhpcy55LFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgIHRleHQ6IHRoaXMubWF4VGV4dCxcbiAgICAgICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZm9udEZhbWlseSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICAgIH0sIHRoaXMudGV4dFN0eWxlKSxcbiAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1pblRleHRTaGFwZSA9IHRleHRHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHRoaXMueSAtIDEwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgdGV4dDogdGhpcy5taW5UZXh0LFxuICAgICAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgICAgfSwgdGhpcy50ZXh0U3R5bGUpLFxuICAgICAgICBjYXB0dXJlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICB0aGlzLm1heFRleHRTaGFwZSA9IHRleHRHcm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB5OiB0aGlzLnkgLSAxMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgIHRleHQ6IHRoaXMubWF4VGV4dCxcbiAgICAgICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZm9udEZhbWlseSB8fCAnQXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICAgIH0sIHRoaXMudGV4dFN0eWxlKSxcbiAgICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0gLy8gMy4g5YmN5pmvIOmAieS4reiDjOaZr+ahhlxuXG5cbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZSA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoKS5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IHRoaXMueSxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0sIHRoaXMuZm9yZWdyb3VuZFN0eWxlKVxuICAgIH0pO1xuICAgIHRoaXMuZm9yZWdyb3VuZFNoYXBlLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZS50YXJnZXQuYXR0cignY3Vyc29yJywgJ2dyYWJiaW5nJyk7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JlZ3JvdW5kU2hhcGUub24oJ21vdXNldXAnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZS50YXJnZXQuYXR0cignY3Vyc29yJywgX3RoaXMuZm9yZWdyb3VuZFN0eWxlLmN1cnNvciB8fCAnZ3JhYicpO1xuICAgIH0pOyAvLyDmu5HlnZfnm7jlhbPnmoTlpKflsI/kv6Hmga9cblxuICAgIHZhciBoYW5kbGVyV2lkdGggPSBnZXQodGhpcy5oYW5kbGVyU3R5bGUsICd3aWR0aCcsIDIpO1xuICAgIHZhciBoYW5kbGVySGVpZ2h0ID0gZ2V0KHRoaXMuaGFuZGxlclN0eWxlLCAnaGVpZ2h0JywgMjQpO1xuICAgIHZhciBtaW5IYW5kbGVHcm91cCA9IHRoaXMuZ3JvdXAuYWRkR3JvdXAoe1xuICAgICAgbmFtZTogJ21pbkhhbmRsZXJTaGFwZSdcbiAgICB9KTsgLy8gNC4g5bem5Y+z5ruR5Z2XXG5cbiAgICB0aGlzLm1pbkhhbmRsZXJTaGFwZSA9IG5ldyBIYW5kbGVyKHtcbiAgICAgIG5hbWU6ICdtaW5IYW5kbGVyU2hhcGUnLFxuICAgICAgZ3JvdXA6IG1pbkhhbmRsZUdyb3VwLFxuICAgICAgdHlwZTogdGltZUJhclR5cGUsXG4gICAgICB4OiB0aGlzLngsXG4gICAgICB5OiB0aGlzLnksXG4gICAgICB3aWR0aDogaGFuZGxlcldpZHRoLFxuICAgICAgaGVpZ2h0OiBoYW5kbGVySGVpZ2h0LFxuICAgICAgc3R5bGU6IHRoaXMuaGFuZGxlclN0eWxlXG4gICAgfSk7XG4gICAgdmFyIG1heEhhbmRsZUdyb3VwID0gdGhpcy5ncm91cC5hZGRHcm91cCh7XG4gICAgICBuYW1lOiAnbWF4SGFuZGxlclNoYXBlJ1xuICAgIH0pO1xuICAgIHRoaXMubWF4SGFuZGxlclNoYXBlID0gbmV3IEhhbmRsZXIoe1xuICAgICAgbmFtZTogJ21heEhhbmRsZXJTaGFwZScsXG4gICAgICBncm91cDogbWF4SGFuZGxlR3JvdXAsXG4gICAgICB0eXBlOiB0aW1lQmFyVHlwZSxcbiAgICAgIHg6IHRoaXMueCxcbiAgICAgIHk6IHRoaXMueSxcbiAgICAgIHdpZHRoOiBoYW5kbGVyV2lkdGgsXG4gICAgICBoZWlnaHQ6IGhhbmRsZXJIZWlnaHQsXG4gICAgICBzdHlsZTogdGhpcy5oYW5kbGVyU3R5bGVcbiAgICB9KTsgLy8g57yp55Wl5Zu+5LiL6Z2i55qE5pe26Ze05Yi75bqmXG5cbiAgICB2YXIgdGlja0RhdGEgPSB0aGlzLnRpY2tzO1xuICAgIHZhciBpbnRlcnZhbCA9IHdpZHRoIC8gKHRpY2tEYXRhLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMudGlja1Bvc0xpc3QgPSBbXTtcblxuICAgIGlmICh0aGlzLnRleHRMaXN0ICYmIHRoaXMudGV4dExpc3QubGVuZ3RoKSB7XG4gICAgICB0aGlzLnRleHRMaXN0LmZvckVhY2goZnVuY3Rpb24gKHRleHQpIHtcbiAgICAgICAgdGV4dC5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgbGFzdFggPSAtSW5maW5pdHk7XG4gICAgdGhpcy50ZXh0TGlzdCA9IHRpY2tEYXRhLm1hcChmdW5jdGlvbiAoZGF0YSwgaW5kZXgpIHtcbiAgICAgIF90aGlzLnRpY2tQb3NMaXN0LnB1c2goX3RoaXMueCArIGluZGV4ICogaW50ZXJ2YWwpO1xuXG4gICAgICB2YXIgbGFiZWw7XG5cbiAgICAgIGlmIChfdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIpIHtcbiAgICAgICAgbGFiZWwgPSBfdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIoZGF0YSk7XG5cbiAgICAgICAgaWYgKCFpc1N0cmluZyhsYWJlbCkgJiYgbGFiZWwpIHtcbiAgICAgICAgICAvLyByZXR1cm4gdHJ1ZVxuICAgICAgICAgIGxhYmVsID0gZGF0YS5kYXRlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbCA9IGRhdGEuZGF0ZTtcbiAgICAgIH0gLy8g5paH5pys5Yi75bqmXG5cblxuICAgICAgdmFyIHRleHQgPSBfdGhpcy5ncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiBfdGhpcy54ICsgaW5kZXggKiBpbnRlcnZhbCxcbiAgICAgICAgICB5OiBfdGhpcy55ICsgaGVpZ2h0ICsgNSxcbiAgICAgICAgICB0ZXh0OiBsYWJlbCxcbiAgICAgICAgICBmb250RmFtaWx5OiBfdGhpcy5mb250RmFtaWx5IHx8ICdBcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgICAgfSwgX3RoaXMudGlja0xhYmVsU3R5bGUpXG4gICAgICB9KTsgLy8g5paH5pys5Yi75bqm5LiK6Z2i55qE56uW57q/XG5cblxuICAgICAgdmFyIGxpbmUgPSBfdGhpcy5ncm91cC5hZGRTaGFwZSgnbGluZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4MTogX3RoaXMueCArIGluZGV4ICogaW50ZXJ2YWwsXG4gICAgICAgICAgeTE6IF90aGlzLnkgKyBoZWlnaHQgKyAyLFxuICAgICAgICAgIHgyOiBfdGhpcy54ICsgaW5kZXggKiBpbnRlcnZhbCxcbiAgICAgICAgICB5MjogX3RoaXMueSArIGhlaWdodCArIDZcbiAgICAgICAgfSwgX3RoaXMudGlja0xpbmVTdHlsZSlcbiAgICAgIH0pO1xuXG4gICAgICBsaW5lLnRvQmFjaygpO1xuICAgICAgdmFyIGJib3ggPSB0ZXh0LmdldEJCb3goKTsgLy8g5oq95qC377yM5qCH562+5LiO5qCH562+6Ze06Led5LiN5bCP5LqOIDEwXG5cbiAgICAgIGlmIChiYm94Lm1pblggPiBsYXN0WCkge1xuICAgICAgICB0ZXh0LnNob3coKTtcbiAgICAgICAgbGluZS5zaG93KCk7XG4gICAgICAgIGxhc3RYID0gYmJveC5taW5YICsgYmJveC53aWR0aCArIDEwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dC5oaWRlKCk7XG4gICAgICAgIGxpbmUuaGlkZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9KTsgLy8g5riy5p+T5pKt5pS+44CB5b+r6L+b5ZKM5ZCO6YCA55qE5o6n5Yi25oyJ6ZKuXG5cbiAgICB0aGlzLmNvbnRyb2xsZXJCdG5Hcm91cCA9IG5ldyBDb250cm9sbGVyQnRuKF9fYXNzaWduKHtcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgeDogdGhpcy54LFxuICAgICAgeTogdGhpcy55ICsgaGVpZ2h0ICsgMjUsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IDM1XG4gICAgfSwgdGhpcy5jb250cm9sbGVyQ2ZnKSk7IC8vIOWIneWni+WMliBtaW5UZXh0IOWSjCBtYXhUZXh077yM5pa55L6/6K6h566X5a6D5Lus55qEIGJib3hcblxuICAgIHRoaXMudXBkYXRlU3RhcnRFbmQoMCk7IC8vIOagueaNriBzdGFydCBlbmQg5pu05pawIHVpIOeahOS9jee9ruS/oeaBr1xuXG4gICAgdGhpcy51cGRhdGVVSSgpOyAvLyDnp7vliqjliLDlr7nlupTnmoTkvY3nva5cblxuICAgIHNsaWRlckdyb3VwLm1vdmUodGhpcy54LCB0aGlzLnkpOyAvLyDnu5Hlrprkuovku7bpvKDmoIfkuovku7ZcblxuICAgIHRoaXMuYmluZEV2ZW50cygpO1xuICB9O1xuICAvKipcbiAgICog57uR5a6a5LqL5Lu277yaXG4gICAqICAtIOeCueWHu1xuICAgKiAgLSDmu5HliqhcbiAgICogIC0g5ouW5ou9XG4gICAqICAtIOa7muWKqFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUuYmluZEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyAxLiDlt6bmu5HlnZfnmoTmu5HliqhcblxuXG4gICAgdmFyIG1pbkhhbmRsZVNoYXBlR3JvdXAgPSB0aGlzLmdyb3VwLmZpbmQoZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICByZXR1cm4gZ3JvdXAuZ2V0KCduYW1lJykgPT09ICdtaW5IYW5kbGVyU2hhcGUnO1xuICAgIH0pO1xuXG4gICAgaWYgKG1pbkhhbmRsZVNoYXBlR3JvdXApIHtcbiAgICAgIG1pbkhhbmRsZVNoYXBlR3JvdXAub24oJ21pbkhhbmRsZXJTaGFwZS1oYW5kbGVyOm1vdXNlZG93bicsIHRoaXMub25Nb3VzZURvd24odGhpcy5taW5IYW5kbGVyU2hhcGUpKTtcbiAgICAgIG1pbkhhbmRsZVNoYXBlR3JvdXAub24oJ21pbkhhbmRsZXJTaGFwZS1oYW5kbGVyOnRvdWNoc3RhcnQnLCB0aGlzLm9uTW91c2VEb3duKHRoaXMubWluSGFuZGxlclNoYXBlKSk7XG4gICAgfVxuXG4gICAgdmFyIG1heEhhbmRsZVNoYXBlR3JvdXAgPSB0aGlzLmdyb3VwLmZpbmQoZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICByZXR1cm4gZ3JvdXAuZ2V0KCduYW1lJykgPT09ICdtYXhIYW5kbGVyU2hhcGUnO1xuICAgIH0pOyAvLyAyLiDlj7Pmu5HlnZfnmoTmu5HliqhcblxuICAgIGlmIChtYXhIYW5kbGVTaGFwZUdyb3VwKSB7XG4gICAgICBtYXhIYW5kbGVTaGFwZUdyb3VwLm9uKCdtYXhIYW5kbGVyU2hhcGUtaGFuZGxlcjptb3VzZWRvd24nLCB0aGlzLm9uTW91c2VEb3duKHRoaXMubWF4SGFuZGxlclNoYXBlKSk7XG4gICAgICBtYXhIYW5kbGVTaGFwZUdyb3VwLm9uKCdtYXhIYW5kbGVyU2hhcGUtaGFuZGxlcjp0b3VjaHN0YXJ0JywgdGhpcy5vbk1vdXNlRG93bih0aGlzLm1heEhhbmRsZXJTaGFwZSkpO1xuICAgIH0gLy8gMy4g5YmN5pmv6YCJ5Lit5Yy65Z+fXG5cblxuICAgIHRoaXMuZm9yZWdyb3VuZFNoYXBlLm9uKCdtb3VzZWRvd24nLCB0aGlzLm9uTW91c2VEb3duKHRoaXMuZm9yZWdyb3VuZFNoYXBlKSk7XG4gICAgdGhpcy5mb3JlZ3JvdW5kU2hhcGUub24oJ3RvdWNoc3RhcnQnLCB0aGlzLm9uTW91c2VEb3duKHRoaXMuZm9yZWdyb3VuZFNoYXBlKSk7IC8vIOaSreaUvuWMuuaMiemSruaOp+WItlxuXG4gICAgLyoqIOaSreaUvi/mmoLlgZzkuovku7YgKi9cblxuICAgIHRoaXMuZ3JvdXAub24oUExBWV9QQVVTRV9CVE4gKyBcIjpjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5pc1BsYXkgPSAhX3RoaXMuaXNQbGF5O1xuICAgICAgX3RoaXMuY3VycmVudEhhbmRsZXIgPSBfdGhpcy5tYXhIYW5kbGVyU2hhcGU7XG5cbiAgICAgIF90aGlzLmNoYW5nZVBsYXlTdGF0dXMoKTtcbiAgICB9KTsgLy8g5aSE55CG5YmN6L+b5LiA5q2l55qE5LqL5Lu2XG5cbiAgICB0aGlzLmdyb3VwLm9uKE5FWFRfU1RFUF9CVE4gKyBcIjpjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jdXJyZW50SGFuZGxlciA9IF90aGlzLm1heEhhbmRsZXJTaGFwZTtcblxuICAgICAgX3RoaXMudXBkYXRlU3RhcnRFbmQoMC4wMSk7XG5cbiAgICAgIF90aGlzLnVwZGF0ZVVJKCk7XG4gICAgfSk7IC8vIOWkhOeQhuWQjumAgOS4gOatpeeahOS6i+S7tlxuXG4gICAgdGhpcy5ncm91cC5vbihQUkVfU1RFUF9CVE4gKyBcIjpjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jdXJyZW50SGFuZGxlciA9IF90aGlzLm1heEhhbmRsZXJTaGFwZTtcblxuICAgICAgX3RoaXMudXBkYXRlU3RhcnRFbmQoLTAuMDEpO1xuXG4gICAgICBfdGhpcy51cGRhdGVVSSgpO1xuICAgIH0pO1xuICAgIHRoaXMuZ3JvdXAub24oVElNRUJBUl9DT05GSUdfQ0hBTkdFLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgIHZhciB0eXBlID0gX2EudHlwZSxcbiAgICAgICAgICBzcGVlZCA9IF9hLnNwZWVkO1xuICAgICAgX3RoaXMuY3VycmVudFNwZWVkID0gc3BlZWQ7XG4gICAgICBfdGhpcy5jdXJyZW50TW9kZSA9IHR5cGU7XG5cbiAgICAgIGlmICh0eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICBfdGhpcy5taW5IYW5kbGVyU2hhcGUuaGlkZSgpO1xuXG4gICAgICAgIF90aGlzLmZvcmVncm91bmRTaGFwZS5oaWRlKCk7XG5cbiAgICAgICAgX3RoaXMubWluVGV4dFNoYXBlLmhpZGUoKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBfdGhpcy5taW5IYW5kbGVyU2hhcGUuc2hvdygpO1xuXG4gICAgICAgIF90aGlzLmZvcmVncm91bmRTaGFwZS5zaG93KCk7XG5cbiAgICAgICAgX3RoaXMubWluVGV4dFNoYXBlLnNob3coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoqIOi+k+WFpeW9k+WJjeWchueCueS9jee9ru+8jOi+k+WHuuemu+WTquS4qiB0aWNrIOeahOS9jee9ruacgOi/kSAqL1xuXG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5hZGp1c3RUaWNrSW5kZXggPSBmdW5jdGlvbiAodGltZVNlbGVjdFgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudGlja1Bvc0xpc3QubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBpZiAodGhpcy50aWNrUG9zTGlzdFtpXSA8PSB0aW1lU2VsZWN0WCAmJiB0aW1lU2VsZWN0WCA8PSB0aGlzLnRpY2tQb3NMaXN0W2kgKyAxXSkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy50aWNrUG9zTGlzdFtpXSAtIHRpbWVTZWxlY3RYKSA8IE1hdGguYWJzKHRpbWVTZWxlY3RYIC0gdGhpcy50aWNrUG9zTGlzdFtpICsgMV0pID8gaSA6IGkgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9O1xuICAvKipcbiAgICog6LCD5pW0IG9mZnNldFJhbmdl77yM5Zug5Li65LiA5Lqb6IyD5Zu055qE6ZmQ5Yi2XG4gICAqIEBwYXJhbSBvZmZzZXRSYW5nZVxuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUuYWRqdXN0T2Zmc2V0UmFuZ2UgPSBmdW5jdGlvbiAob2Zmc2V0UmFuZ2UpIHtcbiAgICAvLyDpkojlr7nkuI3lkIznmoTmu5Hliqjnu4Tku7bvvIzlpITnkIbnmoTmlrnlvI/kuI3lkIxcbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudEhhbmRsZXIpIHtcbiAgICAgIGNhc2UgdGhpcy5taW5IYW5kbGVyU2hhcGU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbWluID0gMCAtIHRoaXMuc3RhcnQ7XG4gICAgICAgICAgdmFyIG1heCA9IDEgLSB0aGlzLnN0YXJ0O1xuICAgICAgICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgb2Zmc2V0UmFuZ2UpKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIHRoaXMubWF4SGFuZGxlclNoYXBlOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIG1pbiA9IDAgLSB0aGlzLmVuZDtcbiAgICAgICAgICB2YXIgbWF4ID0gMSAtIHRoaXMuZW5kO1xuICAgICAgICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgb2Zmc2V0UmFuZ2UpKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIHRoaXMuZm9yZWdyb3VuZFNoYXBlOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIG1pbiA9IDAgLSB0aGlzLnN0YXJ0O1xuICAgICAgICAgIHZhciBtYXggPSAxIC0gdGhpcy5lbmQ7XG4gICAgICAgICAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCBvZmZzZXRSYW5nZSkpO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOi1t+Wni+OAgee7k+adn+eahOaOp+WItuWdl+S9jee9ruOAgeaWh+acrOOAgeiMg+WbtOWAvO+8iOWOn+Wni+WAvO+8iVxuICAgKiBAcGFyYW0gb2Zmc2V0UmFuZ2VcbiAgICovXG5cblxuICBUcmVuZFRpbWVCYXIucHJvdG90eXBlLnVwZGF0ZVN0YXJ0RW5kID0gZnVuY3Rpb24gKG9mZnNldFJhbmdlKSB7XG4gICAgdmFyIG1pbkRhdGEgPSB0aGlzLnRpY2tzW3RoaXMuYWRqdXN0VGlja0luZGV4KHRoaXMuc3RhcnQgKiB0aGlzLndpZHRoKV07XG4gICAgdmFyIG1heERhdGEgPSB0aGlzLnRpY2tzW3RoaXMuYWRqdXN0VGlja0luZGV4KHRoaXMuZW5kICogdGhpcy53aWR0aCldO1xuXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRIYW5kbGVyKSB7XG4gICAgICB0aGlzLm1pblRleHQgPSB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlciA/IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyKG1pbkRhdGEpIDogbWluRGF0YS5kYXRlO1xuICAgICAgdGhpcy5tYXhUZXh0ID0gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIgPyB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlcihtYXhEYXRhKSA6IG1heERhdGEuZGF0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIOaTjeS9nOS4jeWQjOeahOe7hOS7tu+8jOWPjemmiOS4jeS4gOagt1xuXG5cbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudEhhbmRsZXIpIHtcbiAgICAgIGNhc2UgdGhpcy5taW5IYW5kbGVyU2hhcGU6XG4gICAgICAgIC8vIOaLluWKqOacgOWwj+a7keWdl+aXtuS9v+eUqOW9k+WJjeacgOWkp+WAvOiuvue9ruacgOWkp+WAvOeahOaWh+acrO+8jOS7peS+v+aBouWkjeWIsOm7mOiupOWAvFxuICAgICAgICB0aGlzLm1heFRleHQgPSB0aGlzLm1heFRleHRTaGFwZS5hdHRyKCd0ZXh0Jyk7XG4gICAgICAgIHRoaXMuc3RhcnQgKz0gb2Zmc2V0UmFuZ2U7XG4gICAgICAgIHRoaXMubWluVGV4dCA9IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyID8gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIobWluRGF0YSkgOiBtaW5EYXRhLmRhdGU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIHRoaXMubWF4SGFuZGxlclNoYXBlOlxuICAgICAgICAvLyDmi5bliqjmnIDlpKfmu5HlnZfml7bkvb/nlKjlvZPliY3mnIDlsI/lgLzorr7nva7mnIDlsI/lgLznmoTmlofmnKzvvIzku6Xkvr/mgaLlpI3liLDpu5jorqTlgLxcbiAgICAgICAgdGhpcy5taW5UZXh0ID0gdGhpcy5taW5UZXh0U2hhcGUuYXR0cigndGV4dCcpO1xuICAgICAgICB0aGlzLmVuZCArPSBvZmZzZXRSYW5nZTtcbiAgICAgICAgdGhpcy5tYXhUZXh0ID0gdGhpcy50aWNrTGFiZWxGb3JtYXR0ZXIgPyB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlcihtYXhEYXRhKSA6IG1heERhdGEuZGF0ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgdGhpcy5mb3JlZ3JvdW5kU2hhcGU6XG4gICAgICAgIHRoaXMuc3RhcnQgKz0gb2Zmc2V0UmFuZ2U7XG4gICAgICAgIHRoaXMuZW5kICs9IG9mZnNldFJhbmdlO1xuICAgICAgICB0aGlzLm1pblRleHQgPSB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlciA/IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyKG1pbkRhdGEpIDogbWluRGF0YS5kYXRlO1xuICAgICAgICB0aGlzLm1heFRleHQgPSB0aGlzLnRpY2tMYWJlbEZvcm1hdHRlciA/IHRoaXMudGlja0xhYmVsRm9ybWF0dGVyKG1heERhdGEpIDogbWF4RGF0YS5kYXRlO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2u56e75Yqo55qE5q+U5L6L5p2l5pu05pawIHVp77yM5pu05paw6IyD5Zu077yIMC0xIOiMg+WbtOeahOavlOS+i+WAvO+8iVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUudXBkYXRlVUkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLnN0YXJ0IDwgMCkge1xuICAgICAgdGhpcy5zdGFydCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5kID4gMSkge1xuICAgICAgdGhpcy5lbmQgPSAxO1xuICAgIH1cblxuICAgIHZhciBtaW4gPSB0aGlzLnggKyB0aGlzLnN0YXJ0ICogdGhpcy53aWR0aDtcbiAgICB2YXIgbWF4ID0gdGhpcy54ICsgdGhpcy5lbmQgKiB0aGlzLndpZHRoOyAvLyAxLiBmb3JlZ3JvdW5kXG5cbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5hdHRyKCd4JywgbWluKTtcbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5hdHRyKCd3aWR0aCcsIG1heCAtIG1pbik7IC8vIOa7keWdl+ebuOWFs+eahOWkp+Wwj+S/oeaBr1xuXG4gICAgdmFyIGhhbmRsZXJXaWR0aCA9IGdldCh0aGlzLmhhbmRsZXJTdHlsZSwgJ3dpZHRoJywgREVGQVVMVF9IQU5ETEVSX1dJRFRIKTsgLy8g6K6+572u5paH5pysXG5cbiAgICB0aGlzLnNldFRleHQodGhpcy5taW5UZXh0LCB0aGlzLm1heFRleHQpO1xuXG4gICAgdmFyIF9hID0gdGhpcy5kb2RnZVRleHQoW21pbiwgbWF4XSksXG4gICAgICAgIG1pbkF0dHJzID0gX2FbMF0sXG4gICAgICAgIG1heEF0dHJzID0gX2FbMV07IC8vIDIuIOW3puS+p+a7keWdl+WSjOaWh+Wtl+S9jee9rlxuXG5cbiAgICB0aGlzLm1pbkhhbmRsZXJTaGFwZS5zZXRYKG1pbiAtIGhhbmRsZXJXaWR0aCAvIDIpO1xuICAgIGVhY2gobWluQXR0cnMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICByZXR1cm4gX3RoaXMubWluVGV4dFNoYXBlLmF0dHIoaywgdik7XG4gICAgfSk7IC8vIDMuIOWPs+S+p+a7keWdl+WSjOaWh+Wtl+S9jee9rlxuXG4gICAgdGhpcy5tYXhIYW5kbGVyU2hhcGUuc2V0WChtYXggLSBoYW5kbGVyV2lkdGggLyAyKTtcbiAgICBlYWNoKG1heEF0dHJzLCBmdW5jdGlvbiAodiwgaykge1xuICAgICAgcmV0dXJuIF90aGlzLm1heFRleHRTaGFwZS5hdHRyKGssIHYpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudE1vZGUgPT09ICdyYW5nZScpIHtcbiAgICAgIC8vIOWboOS4uuWtmOWCqOeahCBzdGFydOOAgWVuZCDlj6/og73kuI3kuIDlrprmmK/mjInlpKflsI/lrZjlgqjnmoTvvIzmiYDku6XmjpLluo/kuIDkuIvvvIzlr7nlpJbmmK8gZW5kID49IHN0YXJ0XG4gICAgICB0aGlzLmdyYXBoLmVtaXQoVkFMVUVfQ0hBTkdFLCB7XG4gICAgICAgIHZhbHVlOiBbdGhpcy5zdGFydCwgdGhpcy5lbmRdLnNvcnQoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRNb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5ncmFwaC5lbWl0KFZBTFVFX0NIQU5HRSwge1xuICAgICAgICB2YWx1ZTogW3RoaXMuZW5kLCB0aGlzLmVuZF1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOiwg+aVtCB0ZXh0IOeahOS9jee9ru+8jOiHquWKqOi6sumBv1xuICAgKiDmoLnmja7kvY3nva7vvIzosIPmlbTov5Tlm57mlrDnmoTkvY3nva5cbiAgICogQHBhcmFtIHJhbmdlXG4gICAqL1xuXG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5kb2RnZVRleHQgPSBmdW5jdGlvbiAocmFuZ2UpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIFRFWFRQQURESU5HID0gMjtcbiAgICB2YXIgaGFuZGxlcldpZHRoID0gZ2V0KHRoaXMuaGFuZGxlclN0eWxlLCAnd2lkdGgnLCBERUZBVUxUX0hBTkRMRVJfV0lEVEgpO1xuICAgIHZhciBtaW5UZXh0U2hhcGUgPSB0aGlzLm1pblRleHRTaGFwZTtcbiAgICB2YXIgbWF4VGV4dFNoYXBlID0gdGhpcy5tYXhUZXh0U2hhcGU7XG4gICAgdmFyIG1pbiA9IHJhbmdlWzBdLFxuICAgICAgICBtYXggPSByYW5nZVsxXTtcbiAgICB2YXIgc29ydGVkID0gZmFsc2U7IC8vIOWmguaenOS6pOaNouS6huS9jee9ru+8jOWImeWvueW6lOeahCBtaW4gbWF4IOS5n+S6pOaNolxuXG4gICAgaWYgKG1pbiA+IG1heCkge1xuICAgICAgX2EgPSBbbWF4LCBtaW5dLCBtaW4gPSBfYVswXSwgbWF4ID0gX2FbMV07XG4gICAgICBfYiA9IFttYXhUZXh0U2hhcGUsIG1pblRleHRTaGFwZV0sIG1pblRleHRTaGFwZSA9IF9iWzBdLCBtYXhUZXh0U2hhcGUgPSBfYlsxXTtcbiAgICAgIHNvcnRlZCA9IHRydWU7XG4gICAgfSAvLyDpgb/orqnop4TliJnvvIzkvJjlhYjmmL7npLrlnKjkuKTkvqfvvIzlj6rmnInmmL7npLrkuI3kuIvnmoTml7blgJnvvIzmiY3mmL7npLrlnKjkuK3pl7RcblxuXG4gICAgdmFyIG1pbkJCb3ggPSBtaW5UZXh0U2hhcGUuZ2V0QkJveCgpO1xuICAgIHZhciBtYXhCQm94ID0gbWF4VGV4dFNoYXBlLmdldEJCb3goKTtcbiAgICB2YXIgbWluQXR0cnMgPSBudWxsO1xuICAgIHZhciBtYXhBdHRycyA9IG51bGw7XG5cbiAgICBpZiAodGhpcy50aW1lQmFyVHlwZSA9PT0gJ3RyZW5kJykge1xuICAgICAgbWluQXR0cnMgPSBtaW4gLSBtaW5CQm94LndpZHRoIDwgdGhpcy54ICsgVEVYVFBBRERJTkcgPyB7XG4gICAgICAgIHg6IG1pbiArIGhhbmRsZXJXaWR0aCAvIDIgKyBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcbiAgICAgIH0gOiB7XG4gICAgICAgIHg6IG1pbiAtIGhhbmRsZXJXaWR0aCAvIDIgLSBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICB9O1xuICAgICAgbWF4QXR0cnMgPSBtYXggKyBtYXhCQm94LndpZHRoID4gdGhpcy54ICsgdGhpcy53aWR0aCA/IHtcbiAgICAgICAgeDogbWF4IC0gaGFuZGxlcldpZHRoIC8gMiAtIFRFWFRQQURESU5HLFxuICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgIH0gOiB7XG4gICAgICAgIHg6IG1heCArIGhhbmRsZXJXaWR0aCAvIDIgKyBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLnRpbWVCYXJUeXBlID09PSAnc2ltcGxlJykge1xuICAgICAgbWluQXR0cnMgPSBtaW5CQm94LndpZHRoID4gbWluIC0gVEVYVFBBRERJTkcgPyB7XG4gICAgICAgIHg6IG1pbiArIGhhbmRsZXJXaWR0aCAvIDIgKyBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgfSA6IHtcbiAgICAgICAgeDogbWluIC0gaGFuZGxlcldpZHRoIC8gMiAtIFRFWFRQQURESU5HLFxuICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICB9O1xuICAgICAgbWF4QXR0cnMgPSBtYXhCQm94LndpZHRoID4gdGhpcy53aWR0aCAtIG1heCAtIFRFWFRQQURESU5HID8ge1xuICAgICAgICB4OiBtYXggLSBoYW5kbGVyV2lkdGggLyAyIC0gVEVYVFBBRERJTkcsXG4gICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgIH0gOiB7XG4gICAgICAgIHg6IG1heCArIGhhbmRsZXJXaWR0aCAvIDIgKyBURVhUUEFERElORyxcbiAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNvcnRlZCA/IFttaW5BdHRycywgbWF4QXR0cnNdIDogW21heEF0dHJzLCBtaW5BdHRyc107XG4gIH07XG5cbiAgVHJlbmRUaW1lQmFyLnByb3RvdHlwZS5zdGFydFBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9hID0gX3RoaXMsXG4gICAgICAgICAgdGlja3MgPSBfYS50aWNrcyxcbiAgICAgICAgICB3aWR0aCA9IF9hLndpZHRoO1xuICAgICAgdmFyIHNwZWVkID0gX3RoaXMuY3VycmVudFNwZWVkO1xuICAgICAgdmFyIHRpY2tJbnRlcnZhbCA9IHdpZHRoIC8gdGlja3MubGVuZ3RoO1xuICAgICAgdmFyIG9mZnNldFggPSB0aWNrSW50ZXJ2YWwgLyAoKDEwIC0gc3BlZWQpICogMTAwMCAvIDYwKTtcblxuICAgICAgdmFyIG9mZnNldFhSYW5nZSA9IF90aGlzLmFkanVzdE9mZnNldFJhbmdlKG9mZnNldFggLyBfdGhpcy53aWR0aCk7XG5cbiAgICAgIF90aGlzLnVwZGF0ZVN0YXJ0RW5kKG9mZnNldFhSYW5nZSk7XG5cbiAgICAgIF90aGlzLnVwZGF0ZVVJKCk7XG5cbiAgICAgIGlmIChfdGhpcy5pc1BsYXkpIHtcbiAgICAgICAgX3RoaXMucGxheUhhbmRsZXIgPSBfdGhpcy5zdGFydFBsYXkoKTtcbiAgICAgIH1cbiAgICB9KSA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICBUcmVuZFRpbWVCYXIucHJvdG90eXBlLmNoYW5nZVBsYXlTdGF0dXMgPSBmdW5jdGlvbiAoaXNTeW5jKSB7XG4gICAgaWYgKGlzU3luYyA9PT0gdm9pZCAwKSB7XG4gICAgICBpc1N5bmMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbGxlckJ0bkdyb3VwLnBsYXlCdXR0b24udXBkYXRlKHtcbiAgICAgIGlzUGxheTogdGhpcy5pc1BsYXlcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzUGxheSkge1xuICAgICAgLy8g5byA5aeL5pKt5pS+XG4gICAgICB0aGlzLnBsYXlIYW5kbGVyID0gdGhpcy5zdGFydFBsYXkoKTtcbiAgICAgIHRoaXMuZ3JhcGguZW1pdChUSU1FTElORV9TVEFSVCwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOe7k+adn+aSreaUvlxuICAgICAgaWYgKHRoaXMucGxheUhhbmRsZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5wbGF5SGFuZGxlcik7XG5cbiAgICAgICAgaWYgKGlzU3luYykge1xuICAgICAgICAgIHRoaXMuZ3JhcGguZW1pdChUSU1FTElORV9FTkQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIFRyZW5kVGltZUJhci5wcm90b3R5cGUuZGVzdG9yeSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoLm9mZihWQUxVRV9DSEFOR0UpO1xuICAgIHZhciBncm91cCA9IHRoaXMuZ3JvdXA7XG4gICAgdmFyIG1pbkhhbmRsZVNoYXBlR3JvdXAgPSBncm91cC5maW5kKGZ1bmN0aW9uIChnKSB7XG4gICAgICByZXR1cm4gZy5nZXQoJ25hbWUnKSA9PT0gJ21pbkhhbmRsZXJTaGFwZSc7XG4gICAgfSk7XG5cbiAgICBpZiAobWluSGFuZGxlU2hhcGVHcm91cCkge1xuICAgICAgbWluSGFuZGxlU2hhcGVHcm91cC5vZmYoJ21pbkhhbmRsZXJTaGFwZS1oYW5kbGVyOm1vdXNlZG93bicpO1xuICAgICAgbWluSGFuZGxlU2hhcGVHcm91cC5vZmYoJ21pbkhhbmRsZXJTaGFwZS1oYW5kbGVyOnRvdWNoc3RhcnQnKTtcbiAgICAgIG1pbkhhbmRsZVNoYXBlR3JvdXAuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHZhciBtYXhIYW5kbGVTaGFwZUdyb3VwID0gZ3JvdXAuZmluZChmdW5jdGlvbiAoZykge1xuICAgICAgcmV0dXJuIGcuZ2V0KCduYW1lJykgPT09ICdtYXhIYW5kbGVyU2hhcGUnO1xuICAgIH0pOyAvLyAyLiDlj7Pmu5HlnZfnmoTmu5HliqhcblxuICAgIGlmIChtYXhIYW5kbGVTaGFwZUdyb3VwKSB7XG4gICAgICBtYXhIYW5kbGVTaGFwZUdyb3VwLm9mZignbWF4SGFuZGxlclNoYXBlLWhhbmRsZXI6bW91c2Vkb3duJyk7XG4gICAgICBtYXhIYW5kbGVTaGFwZUdyb3VwLm9mZignbWF4SGFuZGxlclNoYXBlLWhhbmRsZXI6dG91Y2hzdGFydCcpO1xuICAgICAgbWF4SGFuZGxlU2hhcGVHcm91cC5kZXN0cm95KCk7XG4gICAgfSAvLyAzLiDliY3mma/pgInkuK3ljLrln59cblxuXG4gICAgdGhpcy5mb3JlZ3JvdW5kU2hhcGUub2ZmKCdtb3VzZWRvd24nKTtcbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5vZmYoJ3RvdWNoc3RhcnQnKTtcbiAgICB0aGlzLmZvcmVncm91bmRTaGFwZS5kZXN0cm95KCk7XG4gICAgZ3JvdXAub2ZmKFBMQVlfUEFVU0VfQlROICsgXCI6Y2xpY2tcIik7XG4gICAgZ3JvdXAub2ZmKE5FWFRfU1RFUF9CVE4gKyBcIjpjbGlja1wiKTtcbiAgICBncm91cC5vZmYoUFJFX1NURVBfQlROICsgXCI6Y2xpY2tcIik7XG4gICAgZ3JvdXAub2ZmKFRJTUVCQVJfQ09ORklHX0NIQU5HRSk7XG4gICAgZ3JvdXAuZGVzdHJveSgpO1xuXG4gICAgaWYgKHRoaXMudHJlbmRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudHJlbmRDb21wb25lbnQuZGVzdG9yeSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gVHJlbmRUaW1lQmFyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBUcmVuZFRpbWVCYXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/timeBar/trendTimeBar.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/toolBar/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/toolBar/index.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! insert-css */ \"./node_modules/_insert-css@2.0.0@insert-css/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(insert_css__WEBPACK_IMPORTED_MODULE_3__);\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\nvar DELTA = 0.05;\ntypeof document !== 'undefined' && insert_css__WEBPACK_IMPORTED_MODULE_3___default()(\"\\n .g6-component-toolbar {\\n position: absolute;\\n list-style-type: none;\\n padding: 6px;\\n left: 0px;\\n top: 0px;\\n background-color: rgba(255, 255, 255, 0.9);\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n margin: 0;\\n }\\n .g6-component-toolbar li {\\n float: left;\\n text-align: center;\\n width: 35px;\\n height: 24px;\\n cursor: pointer;\\n\\t\\tlist-style-type:none;\\n list-style: none;\\n margin-left: 0px;\\n }\\n .g6-component-toolbar li .icon {\\n opacity: 0.7;\\n }\\n .g6-component-toolbar li .icon:hover {\\n opacity: 1;\\n }\\n\");\n\nvar getEventPath = function getEventPath(evt) {\n if (!evt) {\n return [];\n }\n\n if (evt.composedPath) {\n return evt.composedPath();\n }\n\n var path = [];\n var el = evt.target;\n\n while (el) {\n path.push(el);\n\n if (el.tagName === 'HTML') {\n path.push(document, window);\n return path;\n }\n\n el = el.parentElement;\n }\n\n return path;\n};\n\nvar ToolBar =\n/** @class */\nfunction (_super) {\n __extends(ToolBar, _super);\n\n function ToolBar(config) {\n return _super.call(this, config) || this;\n }\n\n ToolBar.prototype.getDefaultCfgs = function () {\n return {\n handleClick: undefined,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(graph) {\n return \"\\n
    \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
  • \\n \\n \\n \\n
  • \\n
\\n \";\n },\n zoomSensitivity: 2\n };\n };\n\n ToolBar.prototype.init = function () {\n var _this = this;\n\n var graph = this.get('graph');\n var getContent = this.get('getContent');\n var toolBar = getContent(graph);\n var toolBarDOM = toolBar;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(toolBar)) {\n toolBarDOM = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(toolBar);\n }\n\n var className = this.get('className');\n toolBarDOM.setAttribute('class', className || 'g6-component-toolbar');\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.appendChild(toolBarDOM);\n this.set('toolBar', toolBarDOM);\n var handleClick = this.get('handleClick');\n toolBarDOM.addEventListener('click', function (evt) {\n var current = getEventPath(evt).filter(function (p) {\n return p.nodeName === 'LI';\n });\n\n if (current.length === 0) {\n return;\n }\n\n var code = current[0].getAttribute('code');\n\n if (!code) {\n return;\n }\n\n if (handleClick) {\n handleClick(code, graph);\n } else {\n _this.handleDefaultOperator(code, graph);\n }\n });\n var pos = this.get('position');\n\n if (pos) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(toolBarDOM, {\n top: pos.y + \"px\",\n left: pos.x + \"px\"\n });\n }\n\n this.bindUndoRedo();\n };\n\n ToolBar.prototype.bindUndoRedo = function () {\n var graph = this.get('graph');\n var undoDom = document.querySelector('.g6-component-toolbar li[code=\"undo\"]');\n var undoDomIcon = document.querySelector('.g6-component-toolbar li[code=\"undo\"] svg');\n var redoDom = document.querySelector('.g6-component-toolbar li[code=\"redo\"]');\n var redoDomIcon = document.querySelector('.g6-component-toolbar li[code=\"redo\"] svg');\n\n if (!undoDom || !undoDomIcon || !redoDom || !redoDomIcon) {\n return;\n }\n\n graph.on('stackchange', function (evt) {\n var undoStack = evt.undoStack,\n redoStack = evt.redoStack;\n var undoStackLen = undoStack.length;\n var redoStackLen = redoStack.length; // undo 不可用\n\n if (undoStackLen === 1) {\n undoDom.setAttribute('style', 'cursor: not-allowed');\n undoDomIcon.setAttribute('style', 'opacity: 0.4');\n } else {\n undoDom.removeAttribute('style');\n undoDomIcon.removeAttribute('style');\n } // redo 不可用\n\n\n if (redoStackLen === 0) {\n redoDom.setAttribute('style', 'cursor: not-allowed');\n redoDomIcon.setAttribute('style', 'opacity: 0.4');\n } else {\n redoDom.removeAttribute('style');\n redoDomIcon.removeAttribute('style');\n }\n });\n };\n /**\n * undo 操作\n */\n\n\n ToolBar.prototype.undo = function () {\n var graph = this.get('graph');\n var undoStack = graph.getUndoStack();\n\n if (!undoStack || undoStack.length === 1) {\n return;\n }\n\n var currentData = undoStack.pop();\n\n if (currentData) {\n var action = currentData.action;\n graph.pushStack(action, Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(currentData.data), 'redo');\n var data_1 = currentData.data.before;\n\n if (action === 'add') {\n data_1 = currentData.data.after;\n }\n\n if (!data_1) return;\n\n switch (action) {\n case 'visible':\n {\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n\n if (model.visible) {\n graph.showItem(item, false);\n } else {\n graph.hideItem(item, false);\n }\n });\n });\n break;\n }\n\n case 'render':\n case 'update':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateItem(model.id, model, false);\n });\n });\n break;\n\n case 'changedata':\n graph.changeData(data_1, false);\n break;\n\n case 'delete':\n {\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n var itemType = model.itemType;\n delete model.itemType;\n graph.addItem(itemType, model, false);\n });\n });\n break;\n }\n\n case 'add':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n });\n break;\n\n case 'updateComboTree':\n Object.keys(data_1).forEach(function (key) {\n var array = data_1[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n break;\n\n default:\n }\n }\n };\n /**\n * redo 操作\n */\n\n\n ToolBar.prototype.redo = function () {\n var graph = this.get('graph');\n var redoStack = graph.getRedoStack();\n\n if (!redoStack || redoStack.length === 0) {\n return;\n }\n\n var currentData = redoStack.pop();\n\n if (currentData) {\n var action = currentData.action;\n var data_2 = currentData.data.after;\n graph.pushStack(action, Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(currentData.data));\n\n if (action === 'delete') {\n data_2 = currentData.data.before;\n }\n\n if (!data_2) return;\n\n switch (action) {\n case 'visible':\n {\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var item = graph.findById(model.id);\n\n if (model.visible) {\n graph.showItem(item, false);\n } else {\n graph.hideItem(item, false);\n }\n });\n });\n break;\n }\n\n case 'render':\n case 'update':\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateItem(model.id, model, false);\n });\n });\n break;\n\n case 'changedata':\n graph.changeData(data_2, false);\n break;\n\n case 'delete':\n if (data_2.edges) {\n data_2.edges.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n\n if (data_2.nodes) {\n data_2.nodes.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n\n if (data_2.combos) {\n data_2.combos.forEach(function (model) {\n graph.removeItem(model.id, false);\n });\n }\n\n break;\n\n case 'add':\n {\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n var itemType = model.itemType;\n delete model.itemType;\n graph.addItem(itemType, model, false);\n });\n });\n break;\n }\n\n case 'updateComboTree':\n Object.keys(data_2).forEach(function (key) {\n var array = data_2[key];\n if (!array) return;\n array.forEach(function (model) {\n graph.updateComboTree(model.id, model.parentId, false);\n });\n });\n break;\n\n default:\n }\n }\n };\n /**\n * 根据 Toolbar 上不同类型对图进行操作\n * @param code 操作类型编码\n * @param graph Graph 实例\n */\n\n\n ToolBar.prototype.handleDefaultOperator = function (code, graph) {\n var currentZoom = graph.getZoom();\n\n switch (code) {\n case 'redo':\n this.redo();\n break;\n\n case 'undo':\n this.undo();\n break;\n\n case 'zoomOut':\n {\n var ratioOut = 1 / (1 - DELTA * this.get('zoomSensitivity'));\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n\n if (ratioOut * currentZoom > maxZoom) {\n return;\n }\n\n graph.zoomTo(currentZoom * ratioOut);\n break;\n }\n\n case 'zoomIn':\n {\n var ratioIn = 1 - DELTA * this.get('zoomSensitivity');\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n\n if (ratioIn * currentZoom < minZoom) {\n return;\n }\n\n graph.zoomTo(currentZoom * ratioIn);\n break;\n }\n\n case 'realZoom':\n graph.zoomTo(1);\n break;\n\n case 'autoZoom':\n graph.fitView([20, 20]);\n break;\n\n default:\n }\n };\n\n ToolBar.prototype.destroy = function () {\n var toolBar = this.get('toolBar');\n\n if (toolBar) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(toolBar);\n }\n\n var handleClick = this.get('handleClick');\n\n if (handleClick) {\n toolBar.removeEventListener('click', handleClick);\n }\n };\n\n return ToolBar;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ToolBar);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdG9vbEJhci9pbmRleC5qcz9jN2MxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFcUQ7QUFDVDtBQUNsQjtBQUNRO0FBQ25DO0FBQ0EsbUNBQW1DLGlEQUFTLDZCQUE2Qix5QkFBeUIsNEJBQTRCLG1CQUFtQixnQkFBZ0IsZUFBZSxpREFBaUQsZ0NBQWdDLHlCQUF5QixzQkFBc0IscUJBQXFCLGdCQUFnQixLQUFLLDhCQUE4QixrQkFBa0IseUJBQXlCLGtCQUFrQixtQkFBbUIsc0JBQXNCLDJCQUEyQix1QkFBdUIsdUJBQXVCLEtBQUssb0NBQW9DLG1CQUFtQixLQUFLLDBDQUEwQyxpQkFBaUIsS0FBSzs7QUFFeHFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCLG1CQUFtQixnRUFBUztBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsTUFBTSxnRUFBUztBQUNmO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDhCQUE4Qix3REFBSztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix3REFBSzs7QUFFbkM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFVBQVUsMkRBQVE7QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLHNFQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL3Rvb2xCYXIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG5pbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCB7IGNsb25lLCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgaW5zZXJ0Q3NzIGZyb20gJ2luc2VydC1jc3MnO1xudmFyIERFTFRBID0gMC4wNTtcbnR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaW5zZXJ0Q3NzKFwiXFxuICAuZzYtY29tcG9uZW50LXRvb2xiYXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcXG4gICAgcGFkZGluZzogNnB4O1xcbiAgICBsZWZ0OiAwcHg7XFxuICAgIHRvcDogMHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgZm9udC1zaXplOiAxMnB4O1xcbiAgICBjb2xvcjogIzU0NTQ1NDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcbiAgLmc2LWNvbXBvbmVudC10b29sYmFyIGxpIHtcXG4gICAgZmxvYXQ6IGxlZnQ7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgd2lkdGg6IDM1cHg7XFxuICAgIGhlaWdodDogMjRweDtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcdFxcdGxpc3Qtc3R5bGUtdHlwZTpub25lO1xcbiAgICBsaXN0LXN0eWxlOiBub25lO1xcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xcbiAgfVxcbiAgLmc2LWNvbXBvbmVudC10b29sYmFyIGxpIC5pY29uIHtcXG4gICAgb3BhY2l0eTogMC43O1xcbiAgfVxcbiAgLmc2LWNvbXBvbmVudC10b29sYmFyIGxpIC5pY29uOmhvdmVyIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG5cIik7XG5cbnZhciBnZXRFdmVudFBhdGggPSBmdW5jdGlvbiBnZXRFdmVudFBhdGgoZXZ0KSB7XG4gIGlmICghZXZ0KSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaWYgKGV2dC5jb21wb3NlZFBhdGgpIHtcbiAgICByZXR1cm4gZXZ0LmNvbXBvc2VkUGF0aCgpO1xuICB9XG5cbiAgdmFyIHBhdGggPSBbXTtcbiAgdmFyIGVsID0gZXZ0LnRhcmdldDtcblxuICB3aGlsZSAoZWwpIHtcbiAgICBwYXRoLnB1c2goZWwpO1xuXG4gICAgaWYgKGVsLnRhZ05hbWUgPT09ICdIVE1MJykge1xuICAgICAgcGF0aC5wdXNoKGRvY3VtZW50LCB3aW5kb3cpO1xuICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG52YXIgVG9vbEJhciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhUb29sQmFyLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIFRvb2xCYXIoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIFRvb2xCYXIucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGVDbGljazogdW5kZWZpbmVkLFxuICAgICAgLy8g5oyH5a6a6I+c5Y2V5YaF5a6577yMZnVuY3Rpb24oZSkgey4uLn1cbiAgICAgIGdldENvbnRlbnQ6IGZ1bmN0aW9uIGdldENvbnRlbnQoZ3JhcGgpIHtcbiAgICAgICAgcmV0dXJuIFwiXFxuICAgICAgICAgIDx1bCBjbGFzcz0nZzYtY29tcG9uZW50LXRvb2xiYXInPlxcbiAgICAgICAgICAgIDxsaSBjb2RlPSdyZWRvJz5cXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XFxcImljb25cXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDI0IDEwMjRcXFwiIHZlcnNpb249XFxcIjEuMVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjRcXFwiIGhlaWdodD1cXFwiMjRcXFwiPlxcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVxcXCJNMjU2IDY4Mi42NjY2NjdjMC0xMDIuNzQxMzMzIDY2LjczMDY2Ny0yMTMuMzMzMzMzIDIxMy4zMzMzMzMtMjEzLjMzMzMzNCAxMDcuMDA4IDAgMTkwLjc2MjY2NyA1Ni41NzYgMjMwLjU3MDY2NyAxMjUuMzU0NjY3TDYxMS45NjggNjgyLjY2NjY2N0g4NTMuMzMzMzMzdi0yNDEuMzY1MzM0bC05MS41NjI2NjYgOTEuNTYyNjY3QzcwNC43NjggNDQ4LjQ2OTMzMyA2MDEuMTMwNjY3IDM4NCA0NjkuMzMzMzMzIDM4NGMtMTk2LjA5NiAwLTI5OC42NjY2NjcgMTUwLjIyOTMzMy0yOTguNjY2NjY2IDI5OC42NjY2NjdoODUuMzMzMzMzelxcXCIgZmlsbD1cXFwiXFxcIiBwLWlkPVxcXCIyMDQxXFxcIj48L3BhdGg+XFxuICAgICAgICAgICAgICA8L3N2Zz5cXG4gICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgIDxsaSBjb2RlPSd1bmRvJz5cXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XFxcImljb25cXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDI0IDEwMjRcXFwiIHZlcnNpb249XFxcIjEuMVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjRcXFwiIGhlaWdodD1cXFwiMjRcXFwiPlxcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVxcXCJNMTcwLjY2NjY2NyA2ODIuNjY2NjY3aDI0MS4zNjUzMzNsLTg3LjkzNi04Ny45Nzg2NjdDMzYzLjkwNCA1MjUuOTA5MzMzIDQ0Ny42NTg2NjcgNDY5LjMzMzMzMyA1NTQuNjY2NjY3IDQ2OS4zMzMzMzNjMTQ2LjYwMjY2NyAwIDIxMy4zMzMzMzMgMTEwLjU5MiAyMTMuMzMzMzMzIDIxMy4zMzMzMzRoODUuMzMzMzMzYzAtMTQ4LjQzNzMzMy0xMDIuNTcwNjY3LTI5OC42NjY2NjctMjk4LjY2NjY2Ni0yOTguNjY2NjY3LTEzMS43OTczMzMgMC0yMzUuMzkyIDY0LjQ2OTMzMy0yOTIuNDggMTQ4LjgyMTMzM0wxNzAuNjY2NjY3IDQ0MS4zMDEzMzNWNjgyLjY2NjY2N3pcXFwiIGZpbGw9XFxcIlxcXCIgcC1pZD1cXFwiMjc2NFxcXCI+PC9wYXRoPlxcbiAgICAgICAgICAgICAgPC9zdmc+XFxuICAgICAgICAgICAgPC9saT5cXG4gICAgICAgICAgICA8bGkgIGNvZGU9J3pvb21PdXQnPlxcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cXFwiaWNvblxcXCIgdmlld0JveD1cXFwiMCAwIDEwMjQgMTAyNFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyNFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XFxcIk02NTguNDMyIDQyOC43MzZhMzMuMjE2IDMzLjIxNiAwIDAgMS0zMy4xNTIgMzMuMTUySDUyNS44MjR2OTkuNDU2YTMzLjIxNiAzMy4yMTYgMCAwIDEtNjYuMzA0IDBWNDYxLjg4OEgzNjAuMDY0YTMzLjE1MiAzMy4xNTIgMCAwIDEgMC02Ni4zMDRINDU5LjUyVjI5Ni4xMjhhMzMuMTUyIDMzLjE1MiAwIDAgMSA2Ni4zMDQgMFYzOTUuNTJINjI1LjI4YzE4LjI0IDAgMzMuMTUyIDE0Ljg0OCAzMy4xNTIgMzMuMTUyeiBtMjk5Ljc3NiA1MjEuNzkyYTQzLjMyOCA0My4zMjggMCAwIDEtNjAuODY0LTYuOTEybC0xODkuMjQ4LTIyMC45OTJhMzYyLjM2OCAzNjIuMzY4IDAgMCAxLTIxNS4zNiA3MC44NDggMzY0LjggMzY0LjggMCAxIDEgMzY0LjgtMzY0LjczNiAzNjMuMDcyIDM2My4wNzIgMCAwIDEtODYuOTEyIDIzNS45NjhsMTkyLjM4NCAyMjQuNjRhNDMuMzkyIDQzLjM5MiAwIDAgMS00LjggNjEuMTg0eiBtLTQ2NS41MzYtMjIzLjM2YTI5OC44MTYgMjk4LjgxNiAwIDAgMCAyOTguNDMyLTI5OC40MzIgMjk4LjgxNiAyOTguODE2IDAgMCAwLTI5OC40MzItMjk4LjQzMkEyOTguODE2IDI5OC44MTYgMCAwIDAgMTk0LjI0IDQyOC44YTI5OC44MTYgMjk4LjgxNiAwIDAgMCAyOTguNDMyIDI5OC40MzJ6XFxcIj48L3BhdGg+XFxuICAgICAgICAgICAgICA8L3N2Zz5cXG4gICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgIDxsaSBjb2RlPSd6b29tSW4nPlxcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cXFwiaWNvblxcXCIgdmlld0JveD1cXFwiMCAwIDEwMjQgMTAyNFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyNFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XFxcIk02MzkuOTM2IDQxNmEzMiAzMiAwIDAgMS0zMiAzMmgtMjU2YTMyIDMyIDAgMCAxIDAtNjRoMjU2YTMyIDMyIDAgMCAxIDMyIDMyeiBtMjg5LjI4IDUwMy41NTJhNDEuNzkyIDQxLjc5MiAwIDAgMS01OC43NTItNi42NTZsLTE4Mi42NTYtMjEzLjI0OEEzNDkuNzYgMzQ5Ljc2IDAgMCAxIDQ4MCA3NjggMzUyIDM1MiAwIDEgMSA4MzIgNDE2YTM1MC40IDM1MC40IDAgMCAxLTgzLjg0IDIyNy43MTJsMTg1LjY2NCAyMTYuNzY4YTQxLjg1NiA0MS44NTYgMCAwIDEtNC42MDggNTkuMDcyek00NzkuOTM2IDcwNGMxNTguNzg0IDAgMjg4LTEyOS4yMTYgMjg4LTI4OFM2MzguNzIgMTI4IDQ3OS45MzYgMTI4YTI4OC4zMiAyODguMzIgMCAwIDAtMjg4IDI4OGMwIDE1OC43ODQgMTI5LjIxNiAyODggMjg4IDI4OHpcXFwiIHAtaWQ9XFxcIjM4NTNcXFwiPjwvcGF0aD5cXG4gICAgICAgICAgICAgIDwvc3ZnPlxcbiAgICAgICAgICAgIDwvbGk+XFxuICAgICAgICAgICAgPGxpIGNvZGU9J3JlYWxab29tJz5cXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XFxcImljb25cXFwiIHZpZXdCb3g9XFxcIjAgMCAxMDI0IDEwMjRcXFwiIHZlcnNpb249XFxcIjEuMVxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMjRcXFwiPlxcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVxcXCJNMzg0IDMyMHYzODRIMzIwVjMyMGg2NHogbTI1NiAwdjM4NEg1NzZWMzIwaDY0ek01MTIgNTc2djY0SDQ0OFY1NzZoNjR6IG0wLTE5MnY2NEg0NDhWMzg0aDY0eiBtMzU1Ljk2OCA1NzZIOTIuMDMyQTI4LjE2IDI4LjE2IDAgMCAxIDY0IDkzMS45NjhWMjguMDMyQzY0IDEyLjYwOCA3Ni42MDggMCA5NS4xNjggMGg2MTAuMzY4TDg5NiAxOTJ2NzM5Ljk2OGEyOC4xNiAyOC4xNiAwIDAgMS0yOC4wMzIgMjguMDMyek03MDQgNjR2MTI4aDEyOGwtMTI4LTEyOHogbTEyOCAxOTJoLTE5MC40NjRWNjRIMTI4djgzMmg3MDRWMjU2elxcXCI+PC9wYXRoPlxcbiAgICAgICAgICAgICAgPC9zdmc+XFxuICAgICAgICAgICAgPC9saT5cXG4gICAgICAgICAgICA8bGkgY29kZT0nYXV0b1pvb20nPlxcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cXFwiaWNvblxcXCIgdmlld0JveD1cXFwiMCAwIDEwMjQgMTAyNFxcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCI+XFxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XFxcIk02ODQuMjg4IDMwNS4yOGwwLjEyOC0wLjY0LTAuMTI4LTAuNjRWOTkuNzEyYzAtMTkuODQgMTUuNTUyLTM1LjkwNCAzNC40OTYtMzUuNzEyYTM1LjA3MiAzNS4wNzIgMCAwIDEgMzQuNTYgMzUuNzc2djE3MS4wMDhoMTcwLjk0NGMxOS42NDggMCAzNS44NCAxNS40ODggMzUuNzEyIDM0LjQzMmEzNS4wNzIgMzUuMDcyIDAgMCAxLTM1Ljg0IDM0LjQ5NmgtMjA0LjE2bC0wLjY0LTAuMTI4YTMyLjc2OCAzMi43NjggMCAwIDEtMjAuODY0LTcuNTUyYy0xLjM0NC0xLjAyNC0yLjgxNi0xLjY2NC0zLjk2OC0yLjgxNi0wLjM4NC0wLjMyLTAuNTEyLTAuNzY4LTAuODMyLTEuMDg4YTMzLjQ3MiAzMy40NzIgMCAwIDEtOS40MDgtMjIuODQ4ek0zMDUuMjggNjRhMzUuMDcyIDM1LjA3MiAwIDAgMC0zNC41NiAzNS43NzZ2MTcxLjAwOEg5OS43NzZBMzUuMDcyIDM1LjA3MiAwIDAgMCA2NCAzMDUuMjE2YzAgMTguOTQ0IDE1Ljg3MiAzNC40OTYgMzUuODQgMzQuNDk2aDIwNC4xNmwwLjY0LTAuMTI4YTMyLjg5NiAzMi44OTYgMCAwIDAgMjAuODY0LTcuNTUyYzEuMzQ0LTEuMDI0IDIuODE2LTEuNjY0IDMuOTA0LTIuODE2IDAuMzg0LTAuMzIgMC41MTItMC43NjggMC43NjgtMS4wODhhMzMuMDI0IDMzLjAyNCAwIDAgMCA5LjUzNi0yMi44NDhsLTAuMTI4LTAuNjQgMC4xMjgtMC43MDRWOTkuNzEyQTM1LjAwOCAzNS4wMDggMCAwIDAgMzA1LjIxNiA2NHogbTYxOC45NDQgNjIwLjI4OGgtMjA0LjE2bC0wLjY0IDAuMTI4LTAuNTEyLTAuMTI4Yy03LjgwOCAwLTE0LjcyIDMuMi0yMC40OCA3LjY4LTEuMjggMS4wMjQtMi43NTIgMS42NjQtMy44NCAyLjc1Mi0wLjM4NCAwLjMyLTAuNTEyIDAuNzY4LTAuODMyIDEuMDg4YTMzLjY2NCAzMy42NjQgMCAwIDAtOS40MDggMjIuOTEybDAuMTI4IDAuNjQtMC4xMjggMC43MDR2MjA0LjI4OGMwIDE5LjcxMiAxNS41NTIgMzUuOTA0IDM0LjQ5NiAzNS43MTJhMzUuMDcyIDM1LjA3MiAwIDAgMCAzNC41Ni0zNS43NzZWNzUzLjI4aDE3MC45NDRjMTkuNjQ4IDAgMzUuODQtMTUuNDg4IDM1LjcxMi0zNC40MzJhMzUuMDcyIDM1LjA3MiAwIDAgMC0zNS44NC0zNC40OTZ6IG0tNTkzLjkyIDExLjUyYy0wLjI1Ni0wLjMyLTAuMzg0LTAuNzY4LTAuNzY4LTEuMDg4LTEuMDg4LTEuMDg4LTIuNTYtMS43MjgtMy44NC0yLjY4OGEzMy4wODggMzMuMDg4IDAgMCAwLTIwLjQ4LTcuNjhsLTAuNTEyIDAuMDY0LTAuNjQtMC4xMjhIOTkuODRhMzUuMDcyIDM1LjA3MiAwIDAgMC0zNS44NCAzNC40OTYgMzUuMDcyIDM1LjA3MiAwIDAgMCAzNS43MTIgMzQuNDMySDI3MC43MnYxNzEuMDA4YzAgMTkuODQgMTUuNTUyIDM1Ljg0IDM0LjU2IDM1Ljc3NmEzNS4wMDggMzUuMDA4IDAgMCAwIDM0LjQzMi0zNS43MTJWNzIwbC0wLjEyOC0wLjY0IDAuMTI4LTAuNzA0YTMzLjM0NCAzMy4zNDQgMCAwIDAtOS40NzItMjIuODQ4ek01MTIgMzc0LjE0NGExMzcuOTIgMTM3LjkyIDAgMSAwIDAuMTI4IDI3NS44NEExMzcuOTIgMTM3LjkyIDAgMCAwIDUxMiAzNzQuMDh6XFxcIj48L3BhdGg+XFxuICAgICAgICAgICAgICA8L3N2Zz5cXG4gICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICA8L3VsPlxcbiAgICAgICAgXCI7XG4gICAgICB9LFxuICAgICAgem9vbVNlbnNpdGl2aXR5OiAyXG4gICAgfTtcbiAgfTtcblxuICBUb29sQmFyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgZ2V0Q29udGVudCA9IHRoaXMuZ2V0KCdnZXRDb250ZW50Jyk7XG4gICAgdmFyIHRvb2xCYXIgPSBnZXRDb250ZW50KGdyYXBoKTtcbiAgICB2YXIgdG9vbEJhckRPTSA9IHRvb2xCYXI7XG5cbiAgICBpZiAoaXNTdHJpbmcodG9vbEJhcikpIHtcbiAgICAgIHRvb2xCYXJET00gPSBjcmVhdGVEb20odG9vbEJhcik7XG4gICAgfVxuXG4gICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMuZ2V0KCdjbGFzc05hbWUnKTtcbiAgICB0b29sQmFyRE9NLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBjbGFzc05hbWUgfHwgJ2c2LWNvbXBvbmVudC10b29sYmFyJyk7XG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIgPSB0aGlzLmdldCgnZ3JhcGgnKS5nZXQoJ2NvbnRhaW5lcicpO1xuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXIpO1xuICAgIH1cblxuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0b29sQmFyRE9NKTtcbiAgICB0aGlzLnNldCgndG9vbEJhcicsIHRvb2xCYXJET00pO1xuICAgIHZhciBoYW5kbGVDbGljayA9IHRoaXMuZ2V0KCdoYW5kbGVDbGljaycpO1xuICAgIHRvb2xCYXJET00uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIgY3VycmVudCA9IGdldEV2ZW50UGF0aChldnQpLmZpbHRlcihmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gcC5ub2RlTmFtZSA9PT0gJ0xJJztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY3VycmVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29kZSA9IGN1cnJlbnRbMF0uZ2V0QXR0cmlidXRlKCdjb2RlJyk7XG5cbiAgICAgIGlmICghY29kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChoYW5kbGVDbGljaykge1xuICAgICAgICBoYW5kbGVDbGljayhjb2RlLCBncmFwaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5oYW5kbGVEZWZhdWx0T3BlcmF0b3IoY29kZSwgZ3JhcGgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBwb3MgPSB0aGlzLmdldCgncG9zaXRpb24nKTtcblxuICAgIGlmIChwb3MpIHtcbiAgICAgIG1vZGlmeUNTUyh0b29sQmFyRE9NLCB7XG4gICAgICAgIHRvcDogcG9zLnkgKyBcInB4XCIsXG4gICAgICAgIGxlZnQ6IHBvcy54ICsgXCJweFwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJpbmRVbmRvUmVkbygpO1xuICB9O1xuXG4gIFRvb2xCYXIucHJvdG90eXBlLmJpbmRVbmRvUmVkbyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgdW5kb0RvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nNi1jb21wb25lbnQtdG9vbGJhciBsaVtjb2RlPVwidW5kb1wiXScpO1xuICAgIHZhciB1bmRvRG9tSWNvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nNi1jb21wb25lbnQtdG9vbGJhciBsaVtjb2RlPVwidW5kb1wiXSBzdmcnKTtcbiAgICB2YXIgcmVkb0RvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nNi1jb21wb25lbnQtdG9vbGJhciBsaVtjb2RlPVwicmVkb1wiXScpO1xuICAgIHZhciByZWRvRG9tSWNvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5nNi1jb21wb25lbnQtdG9vbGJhciBsaVtjb2RlPVwicmVkb1wiXSBzdmcnKTtcblxuICAgIGlmICghdW5kb0RvbSB8fCAhdW5kb0RvbUljb24gfHwgIXJlZG9Eb20gfHwgIXJlZG9Eb21JY29uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ3JhcGgub24oJ3N0YWNrY2hhbmdlJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgdmFyIHVuZG9TdGFjayA9IGV2dC51bmRvU3RhY2ssXG4gICAgICAgICAgcmVkb1N0YWNrID0gZXZ0LnJlZG9TdGFjaztcbiAgICAgIHZhciB1bmRvU3RhY2tMZW4gPSB1bmRvU3RhY2subGVuZ3RoO1xuICAgICAgdmFyIHJlZG9TdGFja0xlbiA9IHJlZG9TdGFjay5sZW5ndGg7IC8vIHVuZG8g5LiN5Y+v55SoXG5cbiAgICAgIGlmICh1bmRvU3RhY2tMZW4gPT09IDEpIHtcbiAgICAgICAgdW5kb0RvbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2N1cnNvcjogbm90LWFsbG93ZWQnKTtcbiAgICAgICAgdW5kb0RvbUljb24uc2V0QXR0cmlidXRlKCdzdHlsZScsICdvcGFjaXR5OiAwLjQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVuZG9Eb20ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xuICAgICAgICB1bmRvRG9tSWNvbi5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICB9IC8vIHJlZG8g5LiN5Y+v55SoXG5cblxuICAgICAgaWYgKHJlZG9TdGFja0xlbiA9PT0gMCkge1xuICAgICAgICByZWRvRG9tLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnY3Vyc29yOiBub3QtYWxsb3dlZCcpO1xuICAgICAgICByZWRvRG9tSWNvbi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ29wYWNpdHk6IDAuNCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkb0RvbS5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgIHJlZG9Eb21JY29uLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIHVuZG8g5pON5L2cXG4gICAqL1xuXG5cbiAgVG9vbEJhci5wcm90b3R5cGUudW5kbyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgdW5kb1N0YWNrID0gZ3JhcGguZ2V0VW5kb1N0YWNrKCk7XG5cbiAgICBpZiAoIXVuZG9TdGFjayB8fCB1bmRvU3RhY2subGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnREYXRhID0gdW5kb1N0YWNrLnBvcCgpO1xuXG4gICAgaWYgKGN1cnJlbnREYXRhKSB7XG4gICAgICB2YXIgYWN0aW9uID0gY3VycmVudERhdGEuYWN0aW9uO1xuICAgICAgZ3JhcGgucHVzaFN0YWNrKGFjdGlvbiwgY2xvbmUoY3VycmVudERhdGEuZGF0YSksICdyZWRvJyk7XG4gICAgICB2YXIgZGF0YV8xID0gY3VycmVudERhdGEuZGF0YS5iZWZvcmU7XG5cbiAgICAgIGlmIChhY3Rpb24gPT09ICdhZGQnKSB7XG4gICAgICAgIGRhdGFfMSA9IGN1cnJlbnREYXRhLmRhdGEuYWZ0ZXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGF0YV8xKSByZXR1cm47XG5cbiAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMVtrZXldO1xuICAgICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBncmFwaC5maW5kQnlJZChtb2RlbC5pZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAobW9kZWwudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgZ3JhcGguc2hvd0l0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBncmFwaC5oaWRlSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3JlbmRlcic6XG4gICAgICAgIGNhc2UgJ3VwZGF0ZSc6XG4gICAgICAgICAgT2JqZWN0LmtleXMoZGF0YV8xKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMVtrZXldO1xuICAgICAgICAgICAgaWYgKCFhcnJheSkgcmV0dXJuO1xuICAgICAgICAgICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgZ3JhcGgudXBkYXRlSXRlbShtb2RlbC5pZCwgbW9kZWwsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NoYW5nZWRhdGEnOlxuICAgICAgICAgIGdyYXBoLmNoYW5nZURhdGEoZGF0YV8xLCBmYWxzZSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICB2YXIgYXJyYXkgPSBkYXRhXzFba2V5XTtcbiAgICAgICAgICAgICAgaWYgKCFhcnJheSkgcmV0dXJuO1xuICAgICAgICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtVHlwZSA9IG1vZGVsLml0ZW1UeXBlO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBtb2RlbC5pdGVtVHlwZTtcbiAgICAgICAgICAgICAgICBncmFwaC5hZGRJdGVtKGl0ZW1UeXBlLCBtb2RlbCwgZmFsc2UpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgICAgT2JqZWN0LmtleXMoZGF0YV8xKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMVtrZXldO1xuICAgICAgICAgICAgaWYgKCFhcnJheSkgcmV0dXJuO1xuICAgICAgICAgICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgZ3JhcGgucmVtb3ZlSXRlbShtb2RlbC5pZCwgZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAndXBkYXRlQ29tYm9UcmVlJzpcbiAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGFycmF5ID0gZGF0YV8xW2tleV07XG4gICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUobW9kZWwuaWQsIG1vZGVsLnBhcmVudElkLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIHJlZG8g5pON5L2cXG4gICAqL1xuXG5cbiAgVG9vbEJhci5wcm90b3R5cGUucmVkbyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgcmVkb1N0YWNrID0gZ3JhcGguZ2V0UmVkb1N0YWNrKCk7XG5cbiAgICBpZiAoIXJlZG9TdGFjayB8fCByZWRvU3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnREYXRhID0gcmVkb1N0YWNrLnBvcCgpO1xuXG4gICAgaWYgKGN1cnJlbnREYXRhKSB7XG4gICAgICB2YXIgYWN0aW9uID0gY3VycmVudERhdGEuYWN0aW9uO1xuICAgICAgdmFyIGRhdGFfMiA9IGN1cnJlbnREYXRhLmRhdGEuYWZ0ZXI7XG4gICAgICBncmFwaC5wdXNoU3RhY2soYWN0aW9uLCBjbG9uZShjdXJyZW50RGF0YS5kYXRhKSk7XG5cbiAgICAgIGlmIChhY3Rpb24gPT09ICdkZWxldGUnKSB7XG4gICAgICAgIGRhdGFfMiA9IGN1cnJlbnREYXRhLmRhdGEuYmVmb3JlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWRhdGFfMikgcmV0dXJuO1xuXG4gICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhXzIpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICB2YXIgYXJyYXkgPSBkYXRhXzJba2V5XTtcbiAgICAgICAgICAgICAgaWYgKCFhcnJheSkgcmV0dXJuO1xuICAgICAgICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZ3JhcGguZmluZEJ5SWQobW9kZWwuaWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1vZGVsLnZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgIGdyYXBoLnNob3dJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZ3JhcGguaGlkZUl0ZW0oaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlICdyZW5kZXInOlxuICAgICAgICBjYXNlICd1cGRhdGUnOlxuICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgYXJyYXkgPSBkYXRhXzJba2V5XTtcbiAgICAgICAgICAgIGlmICghYXJyYXkpIHJldHVybjtcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgIGdyYXBoLnVwZGF0ZUl0ZW0obW9kZWwuaWQsIG1vZGVsLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjaGFuZ2VkYXRhJzpcbiAgICAgICAgICBncmFwaC5jaGFuZ2VEYXRhKGRhdGFfMiwgZmFsc2UpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgaWYgKGRhdGFfMi5lZGdlcykge1xuICAgICAgICAgICAgZGF0YV8yLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgIGdyYXBoLnJlbW92ZUl0ZW0obW9kZWwuaWQsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkYXRhXzIubm9kZXMpIHtcbiAgICAgICAgICAgIGRhdGFfMi5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICBncmFwaC5yZW1vdmVJdGVtKG1vZGVsLmlkLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZGF0YV8yLmNvbWJvcykge1xuICAgICAgICAgICAgZGF0YV8yLmNvbWJvcy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICBncmFwaC5yZW1vdmVJdGVtKG1vZGVsLmlkLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhZGQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFfMikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciBhcnJheSA9IGRhdGFfMltrZXldO1xuICAgICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1UeXBlID0gbW9kZWwuaXRlbVR5cGU7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG1vZGVsLml0ZW1UeXBlO1xuICAgICAgICAgICAgICAgIGdyYXBoLmFkZEl0ZW0oaXRlbVR5cGUsIG1vZGVsLCBmYWxzZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAndXBkYXRlQ29tYm9UcmVlJzpcbiAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhXzIpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIGFycmF5ID0gZGF0YV8yW2tleV07XG4gICAgICAgICAgICBpZiAoIWFycmF5KSByZXR1cm47XG4gICAgICAgICAgICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUobW9kZWwuaWQsIG1vZGVsLnBhcmVudElkLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBUb29sYmFyIOS4iuS4jeWQjOexu+Wei+WvueWbvui/m+ihjOaTjeS9nFxuICAgKiBAcGFyYW0gY29kZSDmk43kvZznsbvlnovnvJbnoIFcbiAgICogQHBhcmFtIGdyYXBoIEdyYXBoIOWunuS+i1xuICAgKi9cblxuXG4gIFRvb2xCYXIucHJvdG90eXBlLmhhbmRsZURlZmF1bHRPcGVyYXRvciA9IGZ1bmN0aW9uIChjb2RlLCBncmFwaCkge1xuICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAncmVkbyc6XG4gICAgICAgIHRoaXMucmVkbygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndW5kbyc6XG4gICAgICAgIHRoaXMudW5kbygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnem9vbU91dCc6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgcmF0aW9PdXQgPSAxIC8gKDEgLSBERUxUQSAqIHRoaXMuZ2V0KCd6b29tU2Vuc2l0aXZpdHknKSk7XG4gICAgICAgICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpIHx8IGdyYXBoLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgICAgICAgaWYgKHJhdGlvT3V0ICogY3VycmVudFpvb20gPiBtYXhab29tKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JhcGguem9vbVRvKGN1cnJlbnRab29tICogcmF0aW9PdXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ3pvb21Jbic6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgcmF0aW9JbiA9IDEgLSBERUxUQSAqIHRoaXMuZ2V0KCd6b29tU2Vuc2l0aXZpdHknKTtcbiAgICAgICAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgZ3JhcGguZ2V0KCdtaW5ab29tJyk7XG5cbiAgICAgICAgICBpZiAocmF0aW9JbiAqIGN1cnJlbnRab29tIDwgbWluWm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGdyYXBoLnpvb21UbyhjdXJyZW50Wm9vbSAqIHJhdGlvSW4pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlYWxab29tJzpcbiAgICAgICAgZ3JhcGguem9vbVRvKDEpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYXV0b1pvb20nOlxuICAgICAgICBncmFwaC5maXRWaWV3KFsyMCwgMjBdKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9O1xuXG4gIFRvb2xCYXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRvb2xCYXIgPSB0aGlzLmdldCgndG9vbEJhcicpO1xuXG4gICAgaWYgKHRvb2xCYXIpIHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgnY29udGFpbmVyJyk7XG5cbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdncmFwaCcpLmdldCgnY29udGFpbmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1N0cmluZyhjb250YWluZXIpKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0b29sQmFyKTtcbiAgICB9XG5cbiAgICB2YXIgaGFuZGxlQ2xpY2sgPSB0aGlzLmdldCgnaGFuZGxlQ2xpY2snKTtcblxuICAgIGlmIChoYW5kbGVDbGljaykge1xuICAgICAgdG9vbEJhci5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFRvb2xCYXI7XG59KEJhc2UpO1xuXG5leHBvcnQgZGVmYXVsdCBUb29sQmFyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/toolBar/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/tooltip/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/tooltip/index.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! insert-css */ \"./node_modules/_insert-css@2.0.0@insert-css/index.js\");\n/* harmony import */ var insert_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(insert_css__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/base.js\");\nvar __extends = undefined && undefined.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\n\n\n\n\ntypeof document !== 'undefined' && insert_css__WEBPACK_IMPORTED_MODULE_2___default()(\"\\n .g6-component-tooltip {\\n border: 1px solid #e2e2e2;\\n border-radius: 4px;\\n font-size: 12px;\\n color: #545454;\\n background-color: rgba(255, 255, 255, 0.9);\\n padding: 10px 8px;\\n box-shadow: rgb(174, 174, 174) 0px 0px 10px;\\n }\\n .tooltip-type {\\n padding: 0;\\n margin: 0;\\n }\\n .tooltip-id {\\n color: #531dab;\\n }\\n\");\n\nvar Tooltip =\n/** @class */\nfunction (_super) {\n __extends(Tooltip, _super);\n\n function Tooltip(config) {\n return _super.call(this, config) || this;\n }\n\n Tooltip.prototype.getDefaultCfgs = function () {\n return {\n offsetX: 6,\n offsetY: 6,\n // 指定菜单内容,function(e) {...}\n getContent: function getContent(e) {\n return \"\\n

\\u7C7B\\u578B\\uFF1A\" + e.item.getType() + \"

\\n ID\\uFF1A\" + e.item.getID() + \"\\n \";\n },\n shouldBegin: function shouldBegin(e) {\n return true;\n },\n itemTypes: ['node', 'edge', 'combo'],\n trigger: 'mouseenter',\n fixToNode: undefined\n };\n }; // class-methods-use-this\n\n\n Tooltip.prototype.getEvents = function () {\n if (this.get('trigger') === 'click') {\n return {\n 'node:click': 'onClick',\n 'edge:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onMouseLeave',\n afterremoveitem: 'onMouseLeave',\n contextmenu: 'onMouseLeave',\n drag: 'onMouseLeave'\n };\n }\n\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n 'combo:mouseenter': 'onMouseEnter',\n 'combo:mouseleave': 'onMouseLeave',\n 'combo:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave',\n contextmenu: 'onMouseLeave',\n 'node:drag': 'onMouseLeave'\n };\n };\n\n Tooltip.prototype.init = function () {\n var self = this;\n var className = self.get('className') || 'g6-component-tooltip';\n var tooltip = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"
\");\n var container = self.get('container');\n\n if (!container) {\n container = self.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n position: 'absolute',\n visibility: 'hidden',\n display: 'none'\n });\n container.appendChild(tooltip);\n\n if (self.get('trigger') !== 'click') {\n tooltip.addEventListener('mouseenter', function (e) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'visible',\n display: 'unset'\n });\n });\n tooltip.addEventListener('mouseleave', function (e) {\n self.hideTooltip();\n });\n }\n\n self.set('tooltip', tooltip);\n };\n\n Tooltip.prototype.onClick = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var item = e.item;\n var graph = this.get('graph'); // 若与上一次同一 item,隐藏该 tooltip\n\n if (this.currentTarget === item) {\n this.currentTarget = null;\n this.hideTooltip();\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'hide'\n });\n } else {\n this.currentTarget = item;\n this.showTooltip(e);\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n }\n };\n\n Tooltip.prototype.onMouseEnter = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var item = e.item;\n var graph = this.get('graph');\n this.currentTarget = item;\n this.showTooltip(e);\n graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n };\n\n Tooltip.prototype.onMouseMove = function (e) {\n var itemTypes = this.get('itemTypes');\n if (e.item && e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n\n this.showTooltip(e);\n };\n\n Tooltip.prototype.onMouseLeave = function () {\n this.hideTooltip();\n var graph = this.get('graph');\n graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n };\n\n Tooltip.prototype.showTooltip = function (e) {\n if (!e.item) {\n return;\n }\n\n var itemTypes = this.get('itemTypes');\n if (e.item.getType && itemTypes.indexOf(e.item.getType()) === -1) return;\n var container = this.get('tooltip');\n var getContent = this.get('getContent');\n var tooltip = getContent(e);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(tooltip)) {\n container.innerHTML = tooltip;\n } else {\n container.innerHTML = tooltip.outerHTML;\n }\n\n this.updatePosition(e);\n };\n\n Tooltip.prototype.hideTooltip = function () {\n var tooltip = this.get('tooltip');\n\n if (tooltip) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'hidden',\n display: 'none'\n });\n }\n };\n\n Tooltip.prototype.updatePosition = function (e) {\n var shouldBegin = this.get('shouldBegin');\n var tooltip = this.get('tooltip');\n\n if (!shouldBegin(e)) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'hidden',\n display: 'none'\n });\n return;\n }\n\n var graph = this.get('graph');\n var width = graph.get('width');\n var height = graph.get('height');\n var offsetX = this.get('offsetX') || 0;\n var offsetY = this.get('offsetY') || 0; // const mousePos = graph.getPointByClient(e.clientX, e.clientY);\n\n var point = graph.getPointByClient(e.clientX, e.clientY);\n var fixToNode = this.get('fixToNode');\n var item = e.item;\n\n if (item.getType && item.getType() === 'node' && fixToNode && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(fixToNode) && fixToNode.length >= 2) {\n var itemBBox = item.getBBox();\n point = {\n x: itemBBox.minX + itemBBox.width * fixToNode[0],\n y: itemBBox.minY + itemBBox.height * fixToNode[1]\n };\n }\n\n var _a = graph.getCanvasByPoint(point.x, point.y),\n x = _a.x,\n y = _a.y;\n\n var graphContainer = graph.getContainer();\n var res = {\n x: x + graphContainer.offsetLeft + offsetX,\n y: y + graphContainer.offsetTop + offsetY\n }; // 先修改为 visible 方可正确计算 bbox\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n visibility: 'visible',\n display: 'unset'\n });\n var bbox = tooltip.getBoundingClientRect();\n\n if (x + bbox.width + offsetX > width) {\n res.x -= bbox.width + offsetX;\n }\n\n if (y + bbox.height + offsetY > height) {\n res.y -= bbox.height + offsetY;\n }\n\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(tooltip, {\n left: res.x + \"px\",\n top: res.y + \"px\"\n });\n };\n\n Tooltip.prototype.hide = function () {\n this.onMouseLeave();\n };\n\n Tooltip.prototype.destroy = function () {\n var tooltip = this.get('tooltip');\n\n if (tooltip) {\n var container = this.get('container');\n\n if (!container) {\n container = this.get('graph').get('container');\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(container)) {\n container = document.getElementById(container);\n }\n\n container.removeChild(tooltip);\n }\n };\n\n return Tooltip;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tooltip);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBsdWdpbkAwLjUuMEBAYW50di9nNi1wbHVnaW4vZXMvdG9vbHRpcC9pbmRleC5qcz9hZjRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFcUQ7QUFDUDtBQUNaO0FBQ1I7QUFDM0IsbUNBQW1DLGlEQUFTLDZCQUE2QixnQ0FBZ0MseUJBQXlCLHNCQUFzQixxQkFBcUIsaURBQWlELHdCQUF3QixrREFBa0QsS0FBSyxtQkFBbUIsaUJBQWlCLGdCQUFnQixLQUFLLGlCQUFpQixxQkFBcUIsS0FBSzs7QUFFalo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGdFQUFTO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUEsSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsUUFBUSxnRUFBUztBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGdFQUFTO0FBQ2Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0sZ0VBQVM7QUFDZjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQSxrRUFBa0UsMERBQU87QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sSUFBSSxnRUFBUztBQUNiO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLHNFQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wbHVnaW5AMC41LjBAQGFudHYvZzYtcGx1Z2luL2VzL3Rvb2x0aXAvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19leHRlbmRzID0gdGhpcyAmJiB0aGlzLl9fZXh0ZW5kcyB8fCBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG5pbXBvcnQgeyBtb2RpZnlDU1MsIGNyZWF0ZURvbSB9IGZyb20gJ0BhbnR2L2RvbS11dGlsJztcbmltcG9ydCB7IGlzQXJyYXksIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgaW5zZXJ0Q3NzIGZyb20gJ2luc2VydC1jc3MnO1xuaW1wb3J0IEJhc2UgZnJvbSAnLi4vYmFzZSc7XG50eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGluc2VydENzcyhcIlxcbiAgLmc2LWNvbXBvbmVudC10b29sdGlwIHtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBmb250LXNpemU6IDEycHg7XFxuICAgIGNvbG9yOiAjNTQ1NDU0O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XFxuICAgIHBhZGRpbmc6IDEwcHggOHB4O1xcbiAgICBib3gtc2hhZG93OiByZ2IoMTc0LCAxNzQsIDE3NCkgMHB4IDBweCAxMHB4O1xcbiAgfVxcbiAgLnRvb2x0aXAtdHlwZSB7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG4gIC50b29sdGlwLWlkIHtcXG4gICAgY29sb3I6ICM1MzFkYWI7XFxuICB9XFxuXCIpO1xuXG52YXIgVG9vbHRpcCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhUb29sdGlwLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIFRvb2x0aXAoY29uZmlnKSB7XG4gICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgfVxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmdldERlZmF1bHRDZmdzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBvZmZzZXRYOiA2LFxuICAgICAgb2Zmc2V0WTogNixcbiAgICAgIC8vIOaMh+WumuiPnOWNleWGheWuue+8jGZ1bmN0aW9uKGUpIHsuLi59XG4gICAgICBnZXRDb250ZW50OiBmdW5jdGlvbiBnZXRDb250ZW50KGUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFxuICAgICAgICAgIDxoNCBjbGFzcz0ndG9vbHRpcC10eXBlJz5cXHU3QzdCXFx1NTc4QlxcdUZGMUFcIiArIGUuaXRlbS5nZXRUeXBlKCkgKyBcIjwvaDQ+XFxuICAgICAgICAgIDxzcGFuIGNsYXNzPSd0b29sdGlwLWlkJz5JRFxcdUZGMUFcIiArIGUuaXRlbS5nZXRJRCgpICsgXCI8L3NwYW4+XFxuICAgICAgICBcIjtcbiAgICAgIH0sXG4gICAgICBzaG91bGRCZWdpbjogZnVuY3Rpb24gc2hvdWxkQmVnaW4oZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBpdGVtVHlwZXM6IFsnbm9kZScsICdlZGdlJywgJ2NvbWJvJ10sXG4gICAgICB0cmlnZ2VyOiAnbW91c2VlbnRlcicsXG4gICAgICBmaXhUb05vZGU6IHVuZGVmaW5lZFxuICAgIH07XG4gIH07IC8vIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcblxuXG4gIFRvb2x0aXAucHJvdG90eXBlLmdldEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5nZXQoJ3RyaWdnZXInKSA9PT0gJ2NsaWNrJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdlZGdlOmNsaWNrJzogJ29uQ2xpY2snLFxuICAgICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICAgYWZ0ZXJyZW1vdmVpdGVtOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICAgY29udGV4dG1lbnU6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgICBkcmFnOiAnb25Nb3VzZUxlYXZlJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ25vZGU6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ25vZGU6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgICdlZGdlOm1vdXNlZW50ZXInOiAnb25Nb3VzZUVudGVyJyxcbiAgICAgICdlZGdlOm1vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdlZGdlOm1vdXNlbW92ZSc6ICdvbk1vdXNlTW92ZScsXG4gICAgICAnY29tYm86bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ2NvbWJvOm1vdXNlbGVhdmUnOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdjb21ibzptb3VzZW1vdmUnOiAnb25Nb3VzZU1vdmUnLFxuICAgICAgYWZ0ZXJyZW1vdmVpdGVtOiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgIGNvbnRleHRtZW51OiAnb25Nb3VzZUxlYXZlJyxcbiAgICAgICdub2RlOmRyYWcnOiAnb25Nb3VzZUxlYXZlJ1xuICAgIH07XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHNlbGYuZ2V0KCdjbGFzc05hbWUnKSB8fCAnZzYtY29tcG9uZW50LXRvb2x0aXAnO1xuICAgIHZhciB0b29sdGlwID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cIiArIGNsYXNzTmFtZSArIFwiPjwvZGl2PlwiKTtcbiAgICB2YXIgY29udGFpbmVyID0gc2VsZi5nZXQoJ2NvbnRhaW5lcicpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lciA9IHNlbGYuZ2V0KCdncmFwaCcpLmdldCgnY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgbW9kaWZ5Q1NTKHRvb2x0aXAsIHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICB9KTtcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodG9vbHRpcCk7XG5cbiAgICBpZiAoc2VsZi5nZXQoJ3RyaWdnZXInKSAhPT0gJ2NsaWNrJykge1xuICAgICAgdG9vbHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgbW9kaWZ5Q1NTKHRvb2x0aXAsIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICAgICAgZGlzcGxheTogJ3Vuc2V0J1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdG9vbHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgc2VsZi5oaWRlVG9vbHRpcCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VsZi5zZXQoJ3Rvb2x0aXAnLCB0b29sdGlwKTtcbiAgfTtcblxuICBUb29sdGlwLnByb3RvdHlwZS5vbkNsaWNrID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaXRlbVR5cGVzID0gdGhpcy5nZXQoJ2l0ZW1UeXBlcycpO1xuICAgIGlmIChlLml0ZW0gJiYgZS5pdGVtLmdldFR5cGUgJiYgaXRlbVR5cGVzLmluZGV4T2YoZS5pdGVtLmdldFR5cGUoKSkgPT09IC0xKSByZXR1cm47XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7IC8vIOiLpeS4juS4iuS4gOasoeWQjOS4gCBpdGVt77yM6ZqQ6JeP6K+lIHRvb2x0aXBcblxuICAgIGlmICh0aGlzLmN1cnJlbnRUYXJnZXQgPT09IGl0ZW0pIHtcbiAgICAgIHRoaXMuY3VycmVudFRhcmdldCA9IG51bGw7XG4gICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgICBncmFwaC5lbWl0KCd0b29sdGlwY2hhbmdlJywge1xuICAgICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICAgIGFjdGlvbjogJ2hpZGUnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gaXRlbTtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSk7XG4gICAgICBncmFwaC5lbWl0KCd0b29sdGlwY2hhbmdlJywge1xuICAgICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICAgIGFjdGlvbjogJ3Nob3cnXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUub25Nb3VzZUVudGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaXRlbVR5cGVzID0gdGhpcy5nZXQoJ2l0ZW1UeXBlcycpO1xuICAgIGlmIChlLml0ZW0gJiYgZS5pdGVtLmdldFR5cGUgJiYgaXRlbVR5cGVzLmluZGV4T2YoZS5pdGVtLmdldFR5cGUoKSkgPT09IC0xKSByZXR1cm47XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5nZXQoJ2dyYXBoJyk7XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gaXRlbTtcbiAgICB0aGlzLnNob3dUb29sdGlwKGUpO1xuICAgIGdyYXBoLmVtaXQoJ3Rvb2x0aXBjaGFuZ2UnLCB7XG4gICAgICBpdGVtOiBlLml0ZW0sXG4gICAgICBhY3Rpb246ICdzaG93J1xuICAgIH0pO1xuICB9O1xuXG4gIFRvb2x0aXAucHJvdG90eXBlLm9uTW91c2VNb3ZlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaXRlbVR5cGVzID0gdGhpcy5nZXQoJ2l0ZW1UeXBlcycpO1xuICAgIGlmIChlLml0ZW0gJiYgZS5pdGVtLmdldFR5cGUgJiYgaXRlbVR5cGVzLmluZGV4T2YoZS5pdGVtLmdldFR5cGUoKSkgPT09IC0xKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudFRhcmdldCB8fCBlLml0ZW0gIT09IHRoaXMuY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSk7XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUub25Nb3VzZUxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICBncmFwaC5lbWl0KCd0b29sdGlwY2hhbmdlJywge1xuICAgICAgaXRlbTogdGhpcy5jdXJyZW50VGFyZ2V0LFxuICAgICAgYWN0aW9uOiAnaGlkZSdcbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuICB9O1xuXG4gIFRvb2x0aXAucHJvdG90eXBlLnNob3dUb29sdGlwID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoIWUuaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBpdGVtVHlwZXMgPSB0aGlzLmdldCgnaXRlbVR5cGVzJyk7XG4gICAgaWYgKGUuaXRlbS5nZXRUeXBlICYmIGl0ZW1UeXBlcy5pbmRleE9mKGUuaXRlbS5nZXRUeXBlKCkpID09PSAtMSkgcmV0dXJuO1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmdldCgndG9vbHRpcCcpO1xuICAgIHZhciBnZXRDb250ZW50ID0gdGhpcy5nZXQoJ2dldENvbnRlbnQnKTtcbiAgICB2YXIgdG9vbHRpcCA9IGdldENvbnRlbnQoZSk7XG5cbiAgICBpZiAoaXNTdHJpbmcodG9vbHRpcCkpIHtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSB0b29sdGlwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gdG9vbHRpcC5vdXRlckhUTUw7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbihlKTtcbiAgfTtcblxuICBUb29sdGlwLnByb3RvdHlwZS5oaWRlVG9vbHRpcCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdG9vbHRpcCA9IHRoaXMuZ2V0KCd0b29sdGlwJyk7XG5cbiAgICBpZiAodG9vbHRpcCkge1xuICAgICAgbW9kaWZ5Q1NTKHRvb2x0aXAsIHtcbiAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIFRvb2x0aXAucHJvdG90eXBlLnVwZGF0ZVBvc2l0aW9uID0gZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgc2hvdWxkQmVnaW4gPSB0aGlzLmdldCgnc2hvdWxkQmVnaW4nKTtcbiAgICB2YXIgdG9vbHRpcCA9IHRoaXMuZ2V0KCd0b29sdGlwJyk7XG5cbiAgICBpZiAoIXNob3VsZEJlZ2luKGUpKSB7XG4gICAgICBtb2RpZnlDU1ModG9vbHRpcCwge1xuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdldCgnZ3JhcGgnKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIG9mZnNldFggPSB0aGlzLmdldCgnb2Zmc2V0WCcpIHx8IDA7XG4gICAgdmFyIG9mZnNldFkgPSB0aGlzLmdldCgnb2Zmc2V0WScpIHx8IDA7IC8vIGNvbnN0IG1vdXNlUG9zID0gZ3JhcGguZ2V0UG9pbnRCeUNsaWVudChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG5cbiAgICB2YXIgcG9pbnQgPSBncmFwaC5nZXRQb2ludEJ5Q2xpZW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcbiAgICB2YXIgZml4VG9Ob2RlID0gdGhpcy5nZXQoJ2ZpeFRvTm9kZScpO1xuICAgIHZhciBpdGVtID0gZS5pdGVtO1xuXG4gICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ25vZGUnICYmIGZpeFRvTm9kZSAmJiBpc0FycmF5KGZpeFRvTm9kZSkgJiYgZml4VG9Ob2RlLmxlbmd0aCA+PSAyKSB7XG4gICAgICB2YXIgaXRlbUJCb3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgIHBvaW50ID0ge1xuICAgICAgICB4OiBpdGVtQkJveC5taW5YICsgaXRlbUJCb3gud2lkdGggKiBmaXhUb05vZGVbMF0sXG4gICAgICAgIHk6IGl0ZW1CQm94Lm1pblkgKyBpdGVtQkJveC5oZWlnaHQgKiBmaXhUb05vZGVbMV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIF9hID0gZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChwb2ludC54LCBwb2ludC55KSxcbiAgICAgICAgeCA9IF9hLngsXG4gICAgICAgIHkgPSBfYS55O1xuXG4gICAgdmFyIGdyYXBoQ29udGFpbmVyID0gZ3JhcGguZ2V0Q29udGFpbmVyKCk7XG4gICAgdmFyIHJlcyA9IHtcbiAgICAgIHg6IHggKyBncmFwaENvbnRhaW5lci5vZmZzZXRMZWZ0ICsgb2Zmc2V0WCxcbiAgICAgIHk6IHkgKyBncmFwaENvbnRhaW5lci5vZmZzZXRUb3AgKyBvZmZzZXRZXG4gICAgfTsgLy8g5YWI5L+u5pS55Li6IHZpc2libGUg5pa55Y+v5q2j56Gu6K6h566XIGJib3hcblxuICAgIG1vZGlmeUNTUyh0b29sdGlwLCB7XG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICBkaXNwbGF5OiAndW5zZXQnXG4gICAgfSk7XG4gICAgdmFyIGJib3ggPSB0b29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHggKyBiYm94LndpZHRoICsgb2Zmc2V0WCA+IHdpZHRoKSB7XG4gICAgICByZXMueCAtPSBiYm94LndpZHRoICsgb2Zmc2V0WDtcbiAgICB9XG5cbiAgICBpZiAoeSArIGJib3guaGVpZ2h0ICsgb2Zmc2V0WSA+IGhlaWdodCkge1xuICAgICAgcmVzLnkgLT0gYmJveC5oZWlnaHQgKyBvZmZzZXRZO1xuICAgIH1cblxuICAgIG1vZGlmeUNTUyh0b29sdGlwLCB7XG4gICAgICBsZWZ0OiByZXMueCArIFwicHhcIixcbiAgICAgIHRvcDogcmVzLnkgKyBcInB4XCJcbiAgICB9KTtcbiAgfTtcblxuICBUb29sdGlwLnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMub25Nb3VzZUxlYXZlKCk7XG4gIH07XG5cbiAgVG9vbHRpcC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdG9vbHRpcCA9IHRoaXMuZ2V0KCd0b29sdGlwJyk7XG5cbiAgICBpZiAodG9vbHRpcCkge1xuICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcblxuICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyID0gdGhpcy5nZXQoJ2dyYXBoJykuZ2V0KCdjb250YWluZXInKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKHRvb2x0aXApO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gVG9vbHRpcDtcbn0oQmFzZSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRvb2x0aXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-plugin@0.5.0@@antv/g6-plugin/es/tooltip/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js": /*!***********************************************************!*\ !*** ./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js ***! \***********************************************************/ /*! exports provided: G6GraphEvent, G6Event, Node, Edge, Combo, Hull, registerNode, registerCombo, AbstractGraph, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, Graph, TreeGraph, Util, Layout, TreeLayout, registerLayout, Global, Minimap, Grid, Bundling, Menu, Fisheye, Algorithm, ToolBar, Tooltip, TimeBar, ImageMinimap, EdgeFilterLens, SnapLine, Legend, Arrow, Marker, Shape, default, version */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-pc */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Node\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Edge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Combo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Hull\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerCombo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"AbstractGraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerEdge\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerBehavior\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"AbstractLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"AbstractEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"BaseGlobal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Graph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeGraph\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"TreeGraph\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Util\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TreeLayout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"TreeLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Global\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Global\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Minimap\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Minimap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Grid\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Bundling\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Bundling\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Menu\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Menu\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Fisheye\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Fisheye\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Algorithm\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Algorithm\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ToolBar\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"ToolBar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Tooltip\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Tooltip\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeBar\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"TimeBar\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ImageMinimap\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"ImageMinimap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EdgeFilterLens\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"EdgeFilterLens\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SnapLine\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"SnapLine\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Legend\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Legend\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Marker\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"Shape\"]; });\n\n\n_antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"default\"].version = '4.5.0';\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_antv_g6_pc__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nvar version = '4.5.0';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2QDQuNS4wQEBhbnR2L2c2L2VzL2luZGV4LmpzP2FhZDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUM3QixtREFBRTtBQUMwQjtBQUNiLGtIQUFFLEVBQUM7QUFDWCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzZANC41LjBAQGFudHYvZzYvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRzYgZnJvbSAnQGFudHYvZzYtcGMnO1xuRzYudmVyc2lvbiA9ICc0LjUuMCc7XG5leHBvcnQgKiBmcm9tICdAYW50di9nNi1wYyc7XG5leHBvcnQgZGVmYXVsdCBHNjtcbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICc0LjUuMCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_hierarchy@0.6.8@@antv/hierarchy/build/hierarchy.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_hierarchy@0.6.8@@antv/hierarchy/build/hierarchy.js ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 31);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Array.isArray ? Array.isArray(value) : Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Array');\n});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArrayLike);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(13);\n\n\n\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n\n var rst;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n\n if (rst === false) {\n break;\n }\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__[\"a\" /* default */])(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (each);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Function');\n});\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar toString = {}.toString;\n\nvar isType = function (value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isType);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\n\n\nvar isNumber = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Number');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNumber);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNil);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _require = __webpack_require__(33),\n mix = _require.mix;\n\nmodule.exports = {\n assign: mix\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(str, 'String');\n});\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_type__ = __webpack_require__(4);\n\n\n\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__[\"a\" /* default */])(value) || !Object(__WEBPACK_IMPORTED_MODULE_1__is_type__[\"a\" /* default */])(value, 'Object')) {\n return false;\n }\n\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n\n var proto = value;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(value) === proto;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isPlainObject);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(value)) return '';\n return value.toString();\n});\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hierarchy = __webpack_require__(18);\n\nvar Layout = /*#__PURE__*/function () {\n function Layout(root, options) {\n if (options === void 0) {\n options = {};\n }\n\n var me = this;\n me.options = options;\n me.rootNode = hierarchy(root, options);\n }\n\n var _proto = Layout.prototype;\n\n _proto.execute = function execute() {\n throw new Error('please override this method');\n };\n\n return Layout;\n}();\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\n\nvar contains = function (arr, value) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return false;\n }\n\n return arr.indexOf(value) > -1;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (contains);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n\n\n\nvar filter = function (arr, func) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(arr)) {\n return arr;\n }\n\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (value, index) {\n if (func(value, index)) {\n result.push(value);\n }\n });\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (filter);\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isObjectLike);\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mix;\n// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\n\nfunction mix(dist, src1, src2, src3) {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar separateTree = __webpack_require__(30);\n\nvar VALID_DIRECTIONS = ['LR', // left to right\n'RL', // right to left\n'TB', // top to bottom\n'BT', // bottom to top\n'H', // horizontal\n'V' // vertical\n];\nvar HORIZONTAL_DIRECTIONS = ['LR', 'RL', 'H'];\n\nvar isHorizontal = function isHorizontal(direction) {\n return HORIZONTAL_DIRECTIONS.indexOf(direction) > -1;\n};\n\nvar DEFAULT_DIRECTION = VALID_DIRECTIONS[0];\n\nmodule.exports = function (root, options, layoutAlgrithm) {\n var direction = options.direction || DEFAULT_DIRECTION;\n options.isHorizontal = isHorizontal(direction);\n\n if (direction && VALID_DIRECTIONS.indexOf(direction) === -1) {\n throw new TypeError(\"Invalid direction: \" + direction);\n }\n\n if (direction === VALID_DIRECTIONS[0]) {\n // LR\n layoutAlgrithm(root, options);\n } else if (direction === VALID_DIRECTIONS[1]) {\n // RL\n layoutAlgrithm(root, options);\n root.right2left();\n } else if (direction === VALID_DIRECTIONS[2]) {\n // TB\n layoutAlgrithm(root, options);\n } else if (direction === VALID_DIRECTIONS[3]) {\n // BT\n layoutAlgrithm(root, options);\n root.bottom2top();\n } else if (direction === VALID_DIRECTIONS[4] || direction === VALID_DIRECTIONS[5]) {\n // H or V\n // separate into left and right trees\n var _separateTree = separateTree(root, options),\n left = _separateTree.left,\n right = _separateTree.right; // do layout for left and right trees\n\n\n layoutAlgrithm(left, options);\n layoutAlgrithm(right, options);\n options.isHorizontal ? left.right2left() : left.bottom2top(); // combine left and right trees\n\n right.translate(left.x - right.x, left.y - right.y); // translate root\n\n root.x = left.x;\n root.y = right.y;\n var bb = root.getBoundingBox();\n\n if (options.isHorizontal) {\n if (bb.top < 0) {\n root.translate(0, -bb.top);\n }\n } else {\n if (bb.left < 0) {\n root.translate(-bb.left, 0);\n }\n }\n } // fixed root position, default value is true\n\n\n var fixedRoot = options.fixedRoot;\n if (fixedRoot === undefined) fixedRoot = true;\n\n if (fixedRoot) {\n root.translate(-(root.x + root.width / 2 + root.hgap), -(root.y + root.height / 2 + root.vgap));\n }\n\n return root;\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-cond-assign */\nvar util = __webpack_require__(7);\n\nvar PEM = 18;\nvar DEFAULT_HEIGHT = PEM * 2;\nvar DEFAULT_GAP = PEM;\nvar DEFAULT_OPTIONS = {\n getId: function getId(d) {\n return d.id || d.name;\n },\n getPreH: function getPreH(d) {\n return d.preH || 0;\n },\n getPreV: function getPreV(d) {\n return d.preV || 0;\n },\n getHGap: function getHGap(d) {\n return d.hgap || DEFAULT_GAP;\n },\n getVGap: function getVGap(d) {\n return d.vgap || DEFAULT_GAP;\n },\n getChildren: function getChildren(d) {\n return d.children;\n },\n getHeight: function getHeight(d) {\n return d.height || DEFAULT_HEIGHT;\n },\n getWidth: function getWidth(d) {\n var label = d.label || ' ';\n return d.width || label.split('').length * PEM; // FIXME DO NOT get width like this\n }\n};\n\nfunction Node(data, options) {\n var me = this;\n me.vgap = me.hgap = 0;\n if (data instanceof Node) return data;\n me.data = data;\n /*\n * Gaps: filling space between nodes\n * (x, y) ----------------------\n * | vgap |\n * | -------------------- h\n * | h | | e\n * | g | | i\n * | a | | g\n * | p | | h\n * | --------------------- t\n * | |\n * -----------width------------\n */\n\n var hgap = options.getHGap(data);\n var vgap = options.getVGap(data);\n me.preH = options.getPreH(data);\n me.preV = options.getPreV(data);\n me.width = options.getWidth(data);\n me.height = options.getHeight(data);\n me.width += me.preH;\n me.height += me.preV;\n me.id = options.getId(data);\n me.x = me.y = 0;\n me.depth = 0;\n\n if (!me.children) {\n me.children = [];\n }\n\n me.addGap(hgap, vgap);\n return me;\n}\n\nutil.assign(Node.prototype, {\n isRoot: function isRoot() {\n return this.depth === 0;\n },\n isLeaf: function isLeaf() {\n return this.children.length === 0;\n },\n addGap: function addGap(hgap, vgap) {\n var me = this;\n me.hgap += hgap;\n me.vgap += vgap;\n me.width += 2 * hgap;\n me.height += 2 * vgap;\n },\n eachNode: function eachNode(callback) {\n // Depth First traverse\n var me = this;\n var nodes = [me];\n var current;\n\n while (current = nodes.shift()) {\n callback(current);\n nodes = current.children.concat(nodes);\n }\n },\n DFTraverse: function DFTraverse(callback) {\n // Depth First traverse\n this.eachNode(callback);\n },\n BFTraverse: function BFTraverse(callback) {\n // Breadth First traverse\n var me = this;\n var nodes = [me];\n var current;\n\n while (current = nodes.shift()) {\n callback(current);\n nodes = nodes.concat(current.children);\n }\n },\n getBoundingBox: function getBoundingBox() {\n // BBox for just one tree node\n var bb = {\n left: Number.MAX_VALUE,\n top: Number.MAX_VALUE,\n width: 0,\n height: 0\n };\n this.eachNode(function (node) {\n bb.left = Math.min(bb.left, node.x);\n bb.top = Math.min(bb.top, node.y);\n bb.width = Math.max(bb.width, node.x + node.width);\n bb.height = Math.max(bb.height, node.y + node.height);\n });\n return bb;\n },\n // translate\n translate: function translate(tx, ty) {\n if (tx === void 0) {\n tx = 0;\n }\n\n if (ty === void 0) {\n ty = 0;\n }\n\n this.eachNode(function (node) {\n node.x += tx;\n node.y += ty;\n node.x += node.preH;\n node.y += node.preV;\n });\n },\n right2left: function right2left() {\n var me = this;\n var bb = me.getBoundingBox();\n me.eachNode(function (node) {\n node.x = node.x - (node.x - bb.left) * 2 - node.width; // node.x = - node.x;\n });\n me.translate(bb.width, 0);\n },\n bottom2top: function bottom2top() {\n var me = this;\n var bb = me.getBoundingBox();\n me.eachNode(function (node) {\n node.y = node.y - (node.y - bb.top) * 2 - node.height; // node.y = - node.y;\n });\n me.translate(0, bb.height);\n }\n});\n\nfunction hierarchy(data, options, isolated) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n var root = new Node(data, options);\n var nodes = [root];\n var node;\n\n if (!isolated && !data.collapsed) {\n while (node = nodes.shift()) {\n if (!node.data.collapsed) {\n var children = options.getChildren(node.data);\n var length = children ? children.length : 0;\n node.children = new Array(length);\n\n if (children && length) {\n for (var i = 0; i < length; i++) {\n var child = new Node(children[i], options);\n node.children[i] = child;\n nodes.push(child);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n }\n }\n\n return root;\n}\n\nmodule.exports = hierarchy;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys__ = __webpack_require__(20);\n\n\n\nfunction isMatch(obj, attrs) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys__[\"a\" /* default */])(attrs);\n\n var length = _keys.length;\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(obj)) return !length;\n\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n\n return true;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isMatch);\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n\nvar keys = Object.keys ? function (obj) {\n return Object.keys(obj);\n} : function (obj) {\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(obj, function (value, key) {\n if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (keys);\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\nvar splice = Array.prototype.splice;\n\nvar pullAt = function pullAt(arr, indexes) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return [];\n }\n\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n\n return arr;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (pullAt);\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each__ = __webpack_require__(2);\n\n\n\nvar uniq = function (arr) {\n var resultArr = [];\n Object(__WEBPACK_IMPORTED_MODULE_1__each__[\"a\" /* default */])(arr, function (item) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__contains__[\"a\" /* default */])(resultArr, item)) {\n resultArr.push(item);\n }\n });\n return resultArr;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (uniq);\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__group_by__ = __webpack_require__(24);\n\n\n\n\nvar groupToMap = function (data, condition) {\n if (!condition) {\n return {\n 0: data\n };\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(condition)) {\n var paramsCondition_1 = Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n\n for (var i = 0, l = paramsCondition_1.length; i < l; i++) {\n unique += row[paramsCondition_1[i]] && row[paramsCondition_1[i]].toString();\n }\n\n return unique;\n };\n }\n\n var groups = Object(__WEBPACK_IMPORTED_MODULE_2__group_by__[\"a\" /* default */])(data, condition);\n return groups;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (groupToMap);\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction groupBy(data, condition) {\n if (!condition || !Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(data)) {\n return {};\n }\n\n var result = {}; // 兼容方法和 字符串的写法\n\n var predicate = Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(condition) ? condition : function (item) {\n return item[condition];\n };\n var key;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(data, function (item) {\n key = predicate(item);\n\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [item];\n }\n });\n return result;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (groupBy);\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, key) {\n return obj.hasOwnProperty(key);\n});\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n // @ts-ignore\n\nvar values = Object.values ? function (obj) {\n return Object.values(obj);\n} : function (obj) {\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(obj, function (value, key) {\n if (!(Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (values);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar toString = {}.toString;\n\nvar getType = function (value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getType);\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar objectProto = Object.prototype;\n\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = typeof Ctor === 'function' && Ctor.prototype || objectProto;\n return value === proto;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isPrototype);\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object_like__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_string__ = __webpack_require__(8);\n\n\n\n\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n\n if (!value || !other) {\n return false;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_string__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_2__is_string__[\"a\" /* default */])(other)) {\n return false;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(other)) {\n if (value.length !== other.length) {\n return false;\n }\n\n var rst = true;\n\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n\n if (!rst) {\n break;\n }\n }\n\n return rst;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_0__is_object_like__[\"a\" /* default */])(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n\n var rst = true;\n\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n\n if (!rst) {\n break;\n }\n }\n\n return rst;\n }\n\n return false;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isEqual);\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hierarchy = __webpack_require__(18);\n\nmodule.exports = function (root, options) {\n // separate into left and right trees\n var left = hierarchy(root.data, options, true); // root only\n\n var right = hierarchy(root.data, options, true); // root only\n // automatically\n\n var treeSize = root.children.length;\n var rightTreeSize = Math.round(treeSize / 2); // separate left and right tree by meta data\n\n var getSide = options.getSide || function (child, index) {\n if (index < rightTreeSize) {\n return 'right';\n }\n\n return 'left';\n };\n\n for (var i = 0; i < treeSize; i++) {\n var child = root.children[i];\n var side = getSide(child, i);\n\n if (side === 'right') {\n right.children.push(child);\n } else {\n left.children.push(child);\n }\n }\n\n left.eachNode(function (node) {\n if (!node.isRoot()) {\n node.side = 'left';\n }\n });\n right.eachNode(function (node) {\n if (!node.isRoot()) {\n node.side = 'right';\n }\n });\n return {\n left: left,\n right: right\n };\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hierarchy = {\n compactBox: __webpack_require__(32),\n dendrogram: __webpack_require__(114),\n indented: __webpack_require__(116),\n mindmap: __webpack_require__(118)\n};\nmodule.exports = hierarchy;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar nonLayeredTidyTree = __webpack_require__(113);\n\nvar doTreeLayout = __webpack_require__(17);\n\nvar util = __webpack_require__(7);\n\nvar CompactBoxTreeLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(CompactBoxTreeLayout, _TreeLayout);\n\n function CompactBoxTreeLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = CompactBoxTreeLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n return doTreeLayout(me.rootNode, me.options, nonLayeredTidyTree);\n };\n\n return CompactBoxTreeLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction compactBoxLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new CompactBoxTreeLayout(root, options).execute();\n}\n\nmodule.exports = compactBoxLayout;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_0__contains__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference__ = __webpack_require__(34);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_1__difference__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__find__ = __webpack_require__(35);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_2__find__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__find_index__ = __webpack_require__(36);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_3__find_index__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__first_value__ = __webpack_require__(37);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"firstValue\", function() { return __WEBPACK_IMPORTED_MODULE_4__first_value__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten__ = __webpack_require__(38);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_5__flatten__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__flatten_deep__ = __webpack_require__(39);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flattenDeep\", function() { return __WEBPACK_IMPORTED_MODULE_6__flatten_deep__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__get_range__ = __webpack_require__(40);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"getRange\", function() { return __WEBPACK_IMPORTED_MODULE_7__get_range__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__pull__ = __webpack_require__(41);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pull\", function() { return __WEBPACK_IMPORTED_MODULE_8__pull__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__pull_at__ = __webpack_require__(21);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pullAt\", function() { return __WEBPACK_IMPORTED_MODULE_9__pull_at__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reduce__ = __webpack_require__(42);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_10__reduce__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__remove__ = __webpack_require__(43);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return __WEBPACK_IMPORTED_MODULE_11__remove__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__sort_by__ = __webpack_require__(44);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_12__sort_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__union__ = __webpack_require__(45);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_13__union__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__uniq__ = __webpack_require__(22);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_14__uniq__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__values_of_key__ = __webpack_require__(46);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"valuesOfKey\", function() { return __WEBPACK_IMPORTED_MODULE_15__values_of_key__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__head__ = __webpack_require__(47);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_16__head__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__last__ = __webpack_require__(48);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_17__last__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__starts_with__ = __webpack_require__(49);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"startsWith\", function() { return __WEBPACK_IMPORTED_MODULE_18__starts_with__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__ends_with__ = __webpack_require__(50);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"endsWith\", function() { return __WEBPACK_IMPORTED_MODULE_19__ends_with__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__filter__ = __webpack_require__(14);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_20__filter__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__every__ = __webpack_require__(51);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_21__every__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__some__ = __webpack_require__(52);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_22__some__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__group__ = __webpack_require__(53);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"group\", function() { return __WEBPACK_IMPORTED_MODULE_23__group__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__group_by__ = __webpack_require__(24);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_24__group_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__group_to_map__ = __webpack_require__(23);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupToMap\", function() { return __WEBPACK_IMPORTED_MODULE_25__group_to_map__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__ = __webpack_require__(54);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"getWrapBehavior\", function() { return __WEBPACK_IMPORTED_MODULE_26__get_wrap_behavior__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__ = __webpack_require__(55);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapBehavior\", function() { return __WEBPACK_IMPORTED_MODULE_27__wrap_behavior__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__number2color__ = __webpack_require__(56);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"number2color\", function() { return __WEBPACK_IMPORTED_MODULE_28__number2color__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__parse_radius__ = __webpack_require__(57);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return __WEBPACK_IMPORTED_MODULE_29__parse_radius__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__clamp__ = __webpack_require__(58);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clamp\", function() { return __WEBPACK_IMPORTED_MODULE_30__clamp__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__fixed_base__ = __webpack_require__(59);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"fixedBase\", function() { return __WEBPACK_IMPORTED_MODULE_31__fixed_base__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__is_decimal__ = __webpack_require__(60);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDecimal\", function() { return __WEBPACK_IMPORTED_MODULE_32__is_decimal__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__is_even__ = __webpack_require__(61);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEven\", function() { return __WEBPACK_IMPORTED_MODULE_33__is_even__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__is_integer__ = __webpack_require__(62);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isInteger\", function() { return __WEBPACK_IMPORTED_MODULE_34__is_integer__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__is_negative__ = __webpack_require__(63);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNegative\", function() { return __WEBPACK_IMPORTED_MODULE_35__is_negative__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__is_number_equal__ = __webpack_require__(64);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return __WEBPACK_IMPORTED_MODULE_36__is_number_equal__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__is_odd__ = __webpack_require__(65);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isOdd\", function() { return __WEBPACK_IMPORTED_MODULE_37__is_odd__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__is_positive__ = __webpack_require__(66);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isPositive\", function() { return __WEBPACK_IMPORTED_MODULE_38__is_positive__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__max_by__ = __webpack_require__(67);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"maxBy\", function() { return __WEBPACK_IMPORTED_MODULE_39__max_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__min_by__ = __webpack_require__(68);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"minBy\", function() { return __WEBPACK_IMPORTED_MODULE_40__min_by__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__mod__ = __webpack_require__(69);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return __WEBPACK_IMPORTED_MODULE_41__mod__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__to_degree__ = __webpack_require__(70);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toDegree\", function() { return __WEBPACK_IMPORTED_MODULE_42__to_degree__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__to_integer__ = __webpack_require__(71);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toInteger\", function() { return __WEBPACK_IMPORTED_MODULE_43__to_integer__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__to_radian__ = __webpack_require__(72);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return __WEBPACK_IMPORTED_MODULE_44__to_radian__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__for_in__ = __webpack_require__(73);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"forIn\", function() { return __WEBPACK_IMPORTED_MODULE_45__for_in__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__has__ = __webpack_require__(25);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_46__has__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__has_key__ = __webpack_require__(74);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"hasKey\", function() { return __WEBPACK_IMPORTED_MODULE_47__has_key__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__has_value__ = __webpack_require__(75);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"hasValue\", function() { return __WEBPACK_IMPORTED_MODULE_48__has_value__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__keys__ = __webpack_require__(20);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_49__keys__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__is_match__ = __webpack_require__(19);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_50__is_match__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__values__ = __webpack_require__(26);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_51__values__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__lower_case__ = __webpack_require__(76);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lowerCase\", function() { return __WEBPACK_IMPORTED_MODULE_52__lower_case__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__lower_first__ = __webpack_require__(77);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lowerFirst\", function() { return __WEBPACK_IMPORTED_MODULE_53__lower_first__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__substitute__ = __webpack_require__(78);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"substitute\", function() { return __WEBPACK_IMPORTED_MODULE_54__substitute__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__upper_case__ = __webpack_require__(79);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"upperCase\", function() { return __WEBPACK_IMPORTED_MODULE_55__upper_case__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__upper_first__ = __webpack_require__(80);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return __WEBPACK_IMPORTED_MODULE_56__upper_first__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__get_type__ = __webpack_require__(27);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return __WEBPACK_IMPORTED_MODULE_57__get_type__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__is_arguments__ = __webpack_require__(81);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_58__is_arguments__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__is_array__ = __webpack_require__(0);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_59__is_array__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__is_array_like__ = __webpack_require__(1);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArrayLike\", function() { return __WEBPACK_IMPORTED_MODULE_60__is_array_like__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__is_boolean__ = __webpack_require__(82);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_61__is_boolean__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__is_date__ = __webpack_require__(83);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_62__is_date__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__is_error__ = __webpack_require__(84);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_63__is_error__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__is_function__ = __webpack_require__(3);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_64__is_function__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__is_finite__ = __webpack_require__(85);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_65__is_finite__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__is_nil__ = __webpack_require__(6);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return __WEBPACK_IMPORTED_MODULE_66__is_nil__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__is_null__ = __webpack_require__(86);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_67__is_null__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__is_number__ = __webpack_require__(5);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_68__is_number__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__is_object__ = __webpack_require__(13);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_69__is_object__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__is_object_like__ = __webpack_require__(15);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObjectLike\", function() { return __WEBPACK_IMPORTED_MODULE_70__is_object_like__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__is_plain_object__ = __webpack_require__(9);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return __WEBPACK_IMPORTED_MODULE_71__is_plain_object__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__is_prototype__ = __webpack_require__(28);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isPrototype\", function() { return __WEBPACK_IMPORTED_MODULE_72__is_prototype__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__ = __webpack_require__(87);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_73__is_reg_exp__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__is_string__ = __webpack_require__(8);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_74__is_string__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__is_type__ = __webpack_require__(4);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return __WEBPACK_IMPORTED_MODULE_75__is_type__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__is_undefined__ = __webpack_require__(88);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_76__is_undefined__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__is_element__ = __webpack_require__(89);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_77__is_element__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__ = __webpack_require__(90);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return __WEBPACK_IMPORTED_MODULE_78__request_animation_frame__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__ = __webpack_require__(91);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return __WEBPACK_IMPORTED_MODULE_79__clear_animation_frame__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__augment__ = __webpack_require__(92);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"augment\", function() { return __WEBPACK_IMPORTED_MODULE_80__augment__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__clone__ = __webpack_require__(93);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_81__clone__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__debounce__ = __webpack_require__(94);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_82__debounce__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__memoize__ = __webpack_require__(95);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_83__memoize__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__deep_mix__ = __webpack_require__(96);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"deepMix\", function() { return __WEBPACK_IMPORTED_MODULE_84__deep_mix__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__each__ = __webpack_require__(2);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_85__each__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__extend__ = __webpack_require__(97);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_86__extend__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__index_of__ = __webpack_require__(98);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_87__index_of__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__is_empty__ = __webpack_require__(99);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_88__is_empty__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__is_equal__ = __webpack_require__(29);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_89__is_equal__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__is_equal_with__ = __webpack_require__(100);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqualWith\", function() { return __WEBPACK_IMPORTED_MODULE_90__is_equal_with__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__map__ = __webpack_require__(101);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_91__map__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__map_values__ = __webpack_require__(102);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mapValues\", function() { return __WEBPACK_IMPORTED_MODULE_92__map_values__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__mix__ = __webpack_require__(16);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_93__mix__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__get__ = __webpack_require__(103);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_94__get__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__set__ = __webpack_require__(104);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return __WEBPACK_IMPORTED_MODULE_95__set__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__pick__ = __webpack_require__(105);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_96__pick__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__throttle__ = __webpack_require__(106);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_97__throttle__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__to_array__ = __webpack_require__(107);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_98__to_array__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__to_string__ = __webpack_require__(10);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return __WEBPACK_IMPORTED_MODULE_99__to_string__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__unique_id__ = __webpack_require__(108);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_100__unique_id__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__noop__ = __webpack_require__(109);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_101__noop__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__identity__ = __webpack_require__(110);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_102__identity__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__size__ = __webpack_require__(111);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_103__size__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__cache__ = __webpack_require__(112);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"Cache\", function() { return __WEBPACK_IMPORTED_MODULE_104__cache__[\"a\"]; });\n// array\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // event\n\n\n // format\n\n\n // math\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // object\n\n\n\n\n\n\n\n // string\n\n\n\n\n\n // type\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // other\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // 不知道为什么,需要把这个 export,不然 ts 会报类型错误\n\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains__ = __webpack_require__(12);\n\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\n\nvar difference = function (arr, values) {\n if (values === void 0) {\n values = [];\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter__[\"a\" /* default */])(arr, function (value) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__contains__[\"a\" /* default */])(values, value);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (difference);\n\n/***/ }),\n/* 35 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_match__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_plain_object__ = __webpack_require__(9);\n\n\n\n\n\nfunction find(arr, predicate) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_array__[\"a\" /* default */])(arr)) return null;\n\n var _predicate;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_function__[\"a\" /* default */])(predicate)) {\n _predicate = predicate;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__is_plain_object__[\"a\" /* default */])(predicate)) {\n _predicate = function (a) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__is_match__[\"a\" /* default */])(a, predicate);\n };\n }\n\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n\n return null;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (find);\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) {\n fromIndex = 0;\n }\n\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n\n return -1;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (findIndex);\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n\n\n\nvar firstValue = function (data, name) {\n var rst = null;\n\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(value)) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n\n break;\n }\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (firstValue);\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\n\nvar flatten = function (arr) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr)) {\n return [];\n }\n\n var rst = [];\n\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (flatten);\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\n\nvar flattenDeep = function (arr, result) {\n if (result === void 0) {\n result = [];\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr)) {\n result.push(arr);\n } else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (flattenDeep);\n\n/***/ }),\n/* 40 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(14);\n\n\n\nvar getRange = function (values) {\n // 存在 NaN 时,min,max 判定会出问题\n values = Object(__WEBPACK_IMPORTED_MODULE_1__filter__[\"a\" /* default */])(values, function (v) {\n return !isNaN(v);\n });\n\n if (!values.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0\n };\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(values[0])) {\n var tmp = [];\n\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n\n values = tmp;\n }\n\n var max = Math.max.apply(null, values);\n var min = Math.min.apply(null, values);\n return {\n min: min,\n max: max\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getRange);\n\n/***/ }),\n/* 41 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\n\nvar pull = function (arr) {\n var values = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n\n return arr;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (pull);\n\n/***/ }),\n/* 42 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_plain_object__ = __webpack_require__(9);\n\n\n\n\nvar reduce = function (arr, fn, init) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(arr) && !Object(__WEBPACK_IMPORTED_MODULE_2__is_plain_object__[\"a\" /* default */])(arr)) {\n return arr;\n }\n\n var result = init;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (reduce);\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pull_at__ = __webpack_require__(21);\n\n\n\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return result;\n }\n\n var i = -1;\n var indexes = [];\n var length = arr.length;\n\n while (++i < length) {\n var value = arr[i];\n\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_1__pull_at__[\"a\" /* default */])(arr, indexes);\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (remove);\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\n\nfunction sortBy(arr, key) {\n var comparer;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(key)) {\n comparer = function (a, b) {\n return key(a) - key(b);\n };\n } else {\n var keys_1 = [];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(key)) {\n keys_1.push(key);\n } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(key)) {\n keys_1 = key;\n }\n\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n\n if (a[prop] > b[prop]) {\n return 1;\n }\n\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n\n return 0;\n };\n }\n\n arr.sort(comparer);\n return arr;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (sortBy);\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__uniq__ = __webpack_require__(22);\n\n\nvar union = function () {\n var sources = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__uniq__[\"a\" /* default */])([].concat.apply([], sources));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (union);\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_nil__ = __webpack_require__(6);\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (data, name) {\n var rst = [];\n var tmpMap = {};\n data.forEach(function (obj) {\n var value = obj[name];\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_2__is_nil__[\"a\" /* default */])(value)) {\n // flatten\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(value)) {\n value = [value];\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(value, function (val) {\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n });\n }\n });\n return rst;\n});\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = head;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\nfunction head(o) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(o)) {\n return o[0];\n }\n\n return undefined;\n}\n\n/***/ }),\n/* 48 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = last;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\nfunction last(o) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n\n return undefined;\n}\n\n/***/ }),\n/* 49 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n\n\n\nfunction startsWith(arr, e) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(arr) ? arr[0] === e : false;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (startsWith);\n\n/***/ }),\n/* 50 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n\n\n\nfunction endsWith(arr, e) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(arr) || Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(arr) ? arr[arr.length - 1] === e : false;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (endsWith);\n\n/***/ }),\n/* 51 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i)) return false;\n }\n\n return true;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (every);\n\n/***/ }),\n/* 52 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i)) return true;\n }\n\n return false;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (some);\n\n/***/ }),\n/* 53 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_to_map__ = __webpack_require__(23);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n\n var groups = Object(__WEBPACK_IMPORTED_MODULE_0__group_to_map__[\"a\" /* default */])(data, condition);\n var array = [];\n\n for (var i in groups) {\n array.push(groups[i]);\n }\n\n return array;\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (getWrapBehavior);\n\n/***/ }),\n/* 55 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n\n var method = function (e) {\n obj[action](e);\n };\n\n obj['_wrap_' + action] = method;\n return method;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (wrapBehavior);\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar numColorCache = {};\n\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n\n if (!color) {\n var str = num.toString(16);\n\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n\n color = '#' + str;\n numColorCache[num] = color;\n }\n\n return color;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (numberToColor);\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n\nfunction parseRadius(radius) {\n var r1 = 0,\n r2 = 0,\n r3 = 0,\n r4 = 0;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (parseRadius);\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar clamp = function (a, min, max) {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n\n return a;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (clamp);\n\n/***/ }),\n/* 59 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n\n if (index === -1) {\n return Math.round(v);\n }\n\n var length = str.substr(index + 1).length;\n\n if (length > 20) {\n length = 20;\n }\n\n return parseFloat(v.toFixed(length));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (fixedBase);\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isDecimal = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 1 !== 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isDecimal);\n\n/***/ }),\n/* 61 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isEven = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 2 === 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isEven);\n\n/***/ }),\n/* 62 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 1 === 0;\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (isInteger);\n\n/***/ }),\n/* 63 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isNegative = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num < 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNegative);\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNumberEqual;\nvar PRECISION = 0.00001; // numbers less than this is considered as 0\n\nfunction isNumberEqual(a, b, precision) {\n if (precision === void 0) {\n precision = PRECISION;\n }\n\n return Math.abs(a - b) < precision;\n}\n;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isOdd = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num % 2 !== 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isOdd);\n\n/***/ }),\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n\n\nvar isPositive = function (num) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(num) && num > 0;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isPositive);\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (arr, fn) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(arr)) {\n return undefined;\n }\n\n var max = arr[0];\n var maxData;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n maxData = fn(arr[0]);\n } else {\n maxData = arr[0][fn];\n }\n\n var data;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (val) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n\n if (data > maxData) {\n max = val;\n maxData = data;\n }\n });\n return max;\n});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_function__ = __webpack_require__(3);\n\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (arr, fn) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array__[\"a\" /* default */])(arr)) {\n return undefined;\n }\n\n var min = arr[0];\n var minData;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n minData = fn(arr[0]);\n } else {\n minData = arr[0][fn];\n }\n\n var data;\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (val) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__is_function__[\"a\" /* default */])(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n\n if (data < minData) {\n min = val;\n minData = data;\n }\n });\n return min;\n});\n\n/***/ }),\n/* 69 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar mod = function (n, m) {\n return (n % m + m) % m;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (mod);\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar DEGREE = 180 / Math.PI;\n\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (toDegree);\n\n/***/ }),\n/* 71 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (parseInt);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar RADIAN = Math.PI / 180;\n\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (toRadian);\n\n/***/ }),\n/* 73 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */]);\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has__ = __webpack_require__(25);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__has__[\"a\" /* default */]);\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__contains__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values__ = __webpack_require__(26);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__contains__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_1__values__[\"a\" /* default */])(obj), value);\n});\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar lowerCase = function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(str).toLowerCase();\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (lowerCase);\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar lowerFirst = function (value) {\n var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (lowerFirst);\n\n/***/ }),\n/* 78 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n return o[name] === undefined ? '' : o[name];\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (substitute);\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar upperCase = function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(str).toUpperCase();\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (upperCase);\n\n/***/ }),\n/* 80 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__to_string__ = __webpack_require__(10);\n\n\nvar upperFirst = function (value) {\n var str = Object(__WEBPACK_IMPORTED_MODULE_0__to_string__[\"a\" /* default */])(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (upperFirst);\n\n/***/ }),\n/* 81 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\n\nvar isArguments = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Arguments');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArguments);\n\n/***/ }),\n/* 82 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\n\nvar isBoolean = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Boolean');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isBoolean);\n\n/***/ }),\n/* 83 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n\nvar isDate = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Date');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isDate);\n\n/***/ }),\n/* 84 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\n\nvar isError = function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(value, 'Error');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isError);\n\n/***/ }),\n/* 85 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_number__ = __webpack_require__(5);\n/**\n * 判断是否为有限数\n * @return {Boolean}\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_number__[\"a\" /* default */])(value) && isFinite(value);\n});\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isNull = function (value) {\n return value === null;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isNull);\n\n/***/ }),\n/* 87 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_type__ = __webpack_require__(4);\n\n\nvar isRegExp = function (str) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_type__[\"a\" /* default */])(str, 'RegExp');\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isRegExp);\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar isUndefined = function (value) {\n return value === undefined;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isUndefined);\n\n/***/ }),\n/* 89 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function (o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isElement);\n\n/***/ }),\n/* 90 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = requestAnimationFrame;\nfunction requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame || window.webkitRequestAnimationFrame || // @ts-ignore\n window.mozRequestAnimationFrame || // @ts-ignore\n window.msRequestAnimationFrame || function (f) {\n return setTimeout(f, 16);\n };\n\n return method(fn);\n}\n;\n\n/***/ }),\n/* 91 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = cancelAnimationFrame;\nfunction cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || // @ts-ignore\n window.mozCancelAnimationFrame || // @ts-ignore\n window.msCancelAnimationFrame || clearTimeout;\n method(handler);\n}\n;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n\n\nvar augment = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var c = args[0];\n\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(obj)) {\n obj = obj.prototype;\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(c.prototype, obj);\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (augment);\n\n/***/ }),\n/* 93 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n\n\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var rst;\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(obj)) {\n rst = [];\n\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (clone);\n\n/***/ }),\n/* 94 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function () {\n timeout = null;\n\n if (!immediate) {\n func.apply(context, args);\n }\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (debounce);\n\n/***/ }),\n/* 95 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3);\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (f, resolver) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__[\"a\" /* default */])(f)) {\n throw new TypeError('Expected a function');\n }\n\n var memoized = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n\n\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = f.apply(this, args); // 缓存起来\n\n cache.set(key, result);\n return result;\n };\n\n memoized.cache = new Map();\n return memoized;\n});\n\n/***/ }),\n/* 96 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(9);\n\n\nvar MAX_MIX_LEVEL = 5;\n\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n\n if (value !== null && Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__[\"a\" /* default */])(value)) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__[\"a\" /* default */])(dist[key])) {\n dist[key] = {};\n }\n\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (Object(__WEBPACK_IMPORTED_MODULE_0__is_array__[\"a\" /* default */])(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n} // todo 重写\n\n\nvar deepMix = function (rst) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n\n return rst;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (deepMix);\n\n/***/ }),\n/* 97 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mix__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_function__ = __webpack_require__(3);\n\n\n\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_function__[\"a\" /* default */])(superclass)) {\n overrides = superclass;\n superclass = subclass;\n\n subclass = function () {};\n }\n\n var create = Object.create ? function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } : function (proto, c) {\n function Tmp() {}\n\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n\n subclass.prototype = Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(superObj, subclass.prototype); // 指定子类的prototype\n\n subclass.superclass = create(superclass.prototype, superclass);\n Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(superObj, overrides);\n Object(__WEBPACK_IMPORTED_MODULE_0__mix__[\"a\" /* default */])(subclass, staticOverrides);\n return subclass;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (extend);\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\n\nvar indexOf = function (arr, obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(arr)) {\n return -1;\n }\n\n var m = Array.prototype.indexOf;\n\n if (m) {\n return m.call(arr, obj);\n }\n\n var index = -1;\n\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n\n return index;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (indexOf);\n\n/***/ }),\n/* 99 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__get_type__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__is_prototype__ = __webpack_require__(28);\n\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(value)) {\n return true;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(value)) {\n return !value.length;\n }\n\n var type = Object(__WEBPACK_IMPORTED_MODULE_2__get_type__[\"a\" /* default */])(value);\n\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_3__is_prototype__[\"a\" /* default */])(value)) {\n return !Object.keys(value).length;\n }\n\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n\n return true;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isEmpty);\n\n/***/ }),\n/* 100 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_function__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_equal__ = __webpack_require__(29);\n\n\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value, other, fn) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_function__[\"a\" /* default */])(fn)) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__is_equal__[\"a\" /* default */])(value, other);\n }\n\n return !!fn(value, other);\n});\n\n/***/ }),\n/* 101 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n\n\n\nvar map = function (arr, func) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(arr)) {\n // @ts-ignore\n return arr;\n }\n\n var result = [];\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(arr, function (value, index) {\n result.push(func(value, index));\n });\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (map);\n\n/***/ }),\n/* 102 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_object__ = __webpack_require__(13);\n\n\n\nvar identity = function (v) {\n return v;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (object, func) {\n if (func === void 0) {\n func = identity;\n }\n\n var r = {};\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_object__[\"a\" /* default */])(object) && !Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n\n return r;\n});\n\n/***/ }),\n/* 103 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_string__ = __webpack_require__(8);\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = Object(__WEBPACK_IMPORTED_MODULE_0__is_string__[\"a\" /* default */])(key) ? key.split('.') : key;\n\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n\n return obj === undefined || p < keyArr.length ? defaultValue : obj;\n});\n\n/***/ }),\n/* 104 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_object__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_string__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__is_number__ = __webpack_require__(5);\n\n\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj, path, value) {\n var o = obj;\n var keyArr = Object(__WEBPACK_IMPORTED_MODULE_1__is_string__[\"a\" /* default */])(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__is_object__[\"a\" /* default */])(o[key])) {\n o[key] = Object(__WEBPACK_IMPORTED_MODULE_2__is_number__[\"a\" /* default */])(keyArr[idx + 1]) ? [] : {};\n }\n\n o = o[key];\n } else {\n o[key] = value;\n }\n });\n return obj;\n});\n\n/***/ }),\n/* 105 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__each__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_plain_object__ = __webpack_require__(9);\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (object, keys) {\n if (object === null || !Object(__WEBPACK_IMPORTED_MODULE_1__is_plain_object__[\"a\" /* default */])(object)) {\n return {};\n }\n\n var result = {};\n Object(__WEBPACK_IMPORTED_MODULE_0__each__[\"a\" /* default */])(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n\n/***/ }),\n/* 106 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n});\n\n/***/ }),\n/* 107 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_array_like__ = __webpack_require__(1);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (value) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__is_array_like__[\"a\" /* default */])(value) ? Array.prototype.slice.call(value) : [];\n});\n\n/***/ }),\n/* 108 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar map = {};\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (prefix) {\n prefix = prefix || 'g';\n\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n\n return prefix + map[prefix];\n});\n\n/***/ }),\n/* 109 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function () {});\n\n/***/ }),\n/* 110 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (v) {\n return v;\n});\n\n/***/ }),\n/* 111 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = size;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__is_nil__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__is_array_like__ = __webpack_require__(1);\n\n\nfunction size(o) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__is_nil__[\"a\" /* default */])(o)) {\n return 0;\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__is_array_like__[\"a\" /* default */])(o)) {\n return o.length;\n }\n\n return Object.keys(o).length;\n}\n\n/***/ }),\n/* 112 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * k-v 存储\n */\nvar default_1 =\n/** @class */\nfunction () {\n function default_1() {\n this.map = {};\n }\n\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n\n default_1.prototype.clear = function () {\n this.map = {};\n };\n\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n\n return default_1;\n}();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (default_1);\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports) {\n\n// wrap tree node\nfunction WrappedTree(w, h, y, c) {\n if (c === void 0) {\n c = [];\n }\n\n var me = this; // size\n\n me.w = w || 0;\n me.h = h || 0; // position\n\n me.y = y || 0;\n me.x = 0; // children\n\n me.c = c || [];\n me.cs = c.length; // modified\n\n me.prelim = 0;\n me.mod = 0;\n me.shift = 0;\n me.change = 0; // left/right tree\n\n me.tl = null;\n me.tr = null; // extreme left/right tree\n\n me.el = null;\n me.er = null; // modified left/right tree\n\n me.msel = 0;\n me.mser = 0;\n}\n\nWrappedTree.fromNode = function (root, isHorizontal) {\n if (!root) return null;\n var children = [];\n root.children.forEach(function (child) {\n children.push(WrappedTree.fromNode(child, isHorizontal));\n });\n if (isHorizontal) return new WrappedTree(root.height, root.width, root.x, children);\n return new WrappedTree(root.width, root.height, root.y, children);\n}; // node utils\n\n\nfunction moveRight(node, move, isHorizontal) {\n if (isHorizontal) {\n node.y += move;\n } else {\n node.x += move;\n }\n\n node.children.forEach(function (child) {\n moveRight(child, move, isHorizontal);\n });\n}\n\nfunction getMin(node, isHorizontal) {\n var res = isHorizontal ? node.y : node.x;\n node.children.forEach(function (child) {\n res = Math.min(getMin(child, isHorizontal), res);\n });\n return res;\n}\n\nfunction normalize(node, isHorizontal) {\n var min = getMin(node, isHorizontal);\n moveRight(node, -min, isHorizontal);\n}\n\nfunction convertBack(converted\n/* WrappedTree */\n, root\n/* TreeNode */\n, isHorizontal) {\n if (isHorizontal) {\n root.y = converted.x;\n } else {\n root.x = converted.x;\n }\n\n converted.c.forEach(function (child, i) {\n convertBack(child, root.children[i], isHorizontal);\n });\n}\n\nfunction layer(node, isHorizontal, d) {\n if (d === void 0) {\n d = 0;\n }\n\n if (isHorizontal) {\n node.x = d;\n d += node.width;\n } else {\n node.y = d;\n d += node.height;\n }\n\n node.children.forEach(function (child) {\n layer(child, isHorizontal, d);\n });\n}\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n var isHorizontal = options.isHorizontal;\n\n function firstWalk(t) {\n if (t.cs === 0) {\n setExtremes(t);\n return;\n }\n\n firstWalk(t.c[0]);\n var ih = updateIYL(bottom(t.c[0].el), 0, null);\n\n for (var i = 1; i < t.cs; ++i) {\n firstWalk(t.c[i]);\n var min = bottom(t.c[i].er);\n separate(t, i, ih);\n ih = updateIYL(min, i, ih);\n }\n\n positionRoot(t);\n setExtremes(t);\n }\n\n function setExtremes(t) {\n if (t.cs === 0) {\n t.el = t;\n t.er = t;\n t.msel = t.mser = 0;\n } else {\n t.el = t.c[0].el;\n t.msel = t.c[0].msel;\n t.er = t.c[t.cs - 1].er;\n t.mser = t.c[t.cs - 1].mser;\n }\n }\n\n function separate(t, i, ih) {\n var sr = t.c[i - 1];\n var mssr = sr.mod;\n var cl = t.c[i];\n var mscl = cl.mod;\n\n while (sr !== null && cl !== null) {\n if (bottom(sr) > ih.low) ih = ih.nxt;\n var dist = mssr + sr.prelim + sr.w - (mscl + cl.prelim);\n\n if (dist > 0) {\n mscl += dist;\n moveSubtree(t, i, ih.index, dist);\n }\n\n var sy = bottom(sr);\n var cy = bottom(cl);\n\n if (sy <= cy) {\n sr = nextRightContour(sr);\n if (sr !== null) mssr += sr.mod;\n }\n\n if (sy >= cy) {\n cl = nextLeftContour(cl);\n if (cl !== null) mscl += cl.mod;\n }\n }\n\n if (!sr && !!cl) {\n setLeftThread(t, i, cl, mscl);\n } else if (!!sr && !cl) {\n setRightThread(t, i, sr, mssr);\n }\n }\n\n function moveSubtree(t, i, si, dist) {\n t.c[i].mod += dist;\n t.c[i].msel += dist;\n t.c[i].mser += dist;\n distributeExtra(t, i, si, dist);\n }\n\n function nextLeftContour(t) {\n return t.cs === 0 ? t.tl : t.c[0];\n }\n\n function nextRightContour(t) {\n return t.cs === 0 ? t.tr : t.c[t.cs - 1];\n }\n\n function bottom(t) {\n return t.y + t.h;\n }\n\n function setLeftThread(t, i, cl, modsumcl) {\n var li = t.c[0].el;\n li.tl = cl;\n var diff = modsumcl - cl.mod - t.c[0].msel;\n li.mod += diff;\n li.prelim -= diff;\n t.c[0].el = t.c[i].el;\n t.c[0].msel = t.c[i].msel;\n }\n\n function setRightThread(t, i, sr, modsumsr) {\n var ri = t.c[i].er;\n ri.tr = sr;\n var diff = modsumsr - sr.mod - t.c[i].mser;\n ri.mod += diff;\n ri.prelim -= diff;\n t.c[i].er = t.c[i - 1].er;\n t.c[i].mser = t.c[i - 1].mser;\n }\n\n function positionRoot(t) {\n t.prelim = (t.c[0].prelim + t.c[0].mod + t.c[t.cs - 1].mod + t.c[t.cs - 1].prelim + t.c[t.cs - 1].w) / 2 - t.w / 2;\n }\n\n function secondWalk(t, modsum) {\n modsum += t.mod;\n t.x = t.prelim + modsum;\n addChildSpacing(t);\n\n for (var i = 0; i < t.cs; i++) {\n secondWalk(t.c[i], modsum);\n }\n }\n\n function distributeExtra(t, i, si, dist) {\n if (si !== i - 1) {\n var nr = i - si;\n t.c[si + 1].shift += dist / nr;\n t.c[i].shift -= dist / nr;\n t.c[i].change -= dist - dist / nr;\n }\n }\n\n function addChildSpacing(t) {\n var d = 0;\n var modsumdelta = 0;\n\n for (var i = 0; i < t.cs; i++) {\n d += t.c[i].shift;\n modsumdelta += d + t.c[i].change;\n t.c[i].mod += modsumdelta;\n }\n }\n\n function updateIYL(low, index, ih) {\n while (ih !== null && low >= ih.low) {\n ih = ih.nxt;\n }\n\n return {\n low: low,\n index: index,\n nxt: ih\n };\n } // do layout\n\n\n layer(root, isHorizontal);\n var wt = WrappedTree.fromNode(root, isHorizontal);\n firstWalk(wt);\n secondWalk(wt, 0);\n convertBack(wt, root, isHorizontal);\n normalize(root, isHorizontal);\n return root;\n};\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar dendrogram = __webpack_require__(115);\n\nvar doTreeLayout = __webpack_require__(17);\n\nvar util = __webpack_require__(7);\n\nvar DendrogramLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(DendrogramLayout, _TreeLayout);\n\n function DendrogramLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = DendrogramLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n me.rootNode.width = 0;\n return doTreeLayout(me.rootNode, me.options, dendrogram);\n };\n\n return DendrogramLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction dendrogramLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new DendrogramLayout(root, options).execute();\n}\n\nmodule.exports = dendrogramLayout;\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// wrap tree node\n// TODO considering size\nvar util = __webpack_require__(7);\n\nfunction WrappedTree(height, children) {\n if (height === void 0) {\n height = 0;\n }\n\n if (children === void 0) {\n children = [];\n }\n\n var me = this;\n me.x = me.y = 0;\n me.leftChild = me.rightChild = null;\n me.height = 0;\n me.children = children;\n}\n\nvar DEFAULT_OPTIONS = {\n isHorizontal: true,\n nodeSep: 20,\n nodeSize: 20,\n rankSep: 200,\n subTreeSep: 10\n};\n\nfunction convertBack(converted\n/* WrappedTree */\n, root\n/* TreeNode */\n, isHorizontal) {\n if (isHorizontal) {\n root.x = converted.x;\n root.y = converted.y;\n } else {\n root.x = converted.y;\n root.y = converted.x;\n }\n\n converted.children.forEach(function (child, i) {\n convertBack(child, root.children[i], isHorizontal);\n });\n}\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n var maxDepth = 0;\n\n function wrappedTreeFromNode(n) {\n if (!n) return null;\n n.width = 0;\n\n if (n.depth && n.depth > maxDepth) {\n maxDepth = n.depth; // get the max depth\n }\n\n var children = n.children;\n var childrenCount = children.length;\n var t = new WrappedTree(n.height, []);\n children.forEach(function (child, i) {\n var childWT = wrappedTreeFromNode(child);\n t.children.push(childWT);\n\n if (i === 0) {\n // t.leftChild = childWT.leftChild ? childWT.leftChild : childWT\n t.leftChild = childWT;\n }\n\n if (i === childrenCount - 1) {\n // t.rightChild = childWT.rightChild ? childWT.rightChild : childWT\n t.rightChild = childWT;\n }\n });\n t.originNode = n;\n t.isLeaf = n.isLeaf();\n return t;\n }\n\n function getDrawingDepth(t) {\n if (t.isLeaf || t.children.length === 0) {\n t.drawingDepth = maxDepth;\n } else {\n var depths = t.children.map(function (child) {\n return getDrawingDepth(child);\n });\n var minChildDepth = Math.min.apply(null, depths);\n t.drawingDepth = minChildDepth - 1;\n }\n\n return t.drawingDepth;\n }\n\n var prevLeaf;\n\n function position(t) {\n t.x = t.drawingDepth * options.rankSep;\n\n if (t.isLeaf) {\n t.y = 0;\n\n if (prevLeaf) {\n t.y = prevLeaf.y + prevLeaf.height + options.nodeSep;\n\n if (t.originNode.parent !== prevLeaf.originNode.parent) {\n t.y += options.subTreeSep;\n }\n }\n\n prevLeaf = t;\n } else {\n t.children.forEach(function (child) {\n position(child);\n });\n t.y = (t.leftChild.y + t.rightChild.y) / 2;\n }\n } // wrap node\n\n\n var wt = wrappedTreeFromNode(root); // get depth for drawing\n\n getDrawingDepth(wt); // get position\n\n position(wt); // get x, y\n\n convertBack(wt, root, options.isHorizontal);\n return root;\n};\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar indentedTree = __webpack_require__(117);\n\nvar separateTree = __webpack_require__(30);\n\nvar util = __webpack_require__(7);\n\nvar VALID_DIRECTIONS = ['LR', // left to right\n'RL', // right to left\n'H' // horizontal\n];\nvar DEFAULT_DIRECTION = VALID_DIRECTIONS[0];\n\nvar IndentedLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(IndentedLayout, _TreeLayout);\n\n function IndentedLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = IndentedLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n var options = me.options;\n var root = me.rootNode;\n options.isHorizontal = true; // default indent 20 and sink first children;\n\n var _options$indent = options.indent,\n indent = _options$indent === void 0 ? 20 : _options$indent,\n _options$dropCap = options.dropCap,\n dropCap = _options$dropCap === void 0 ? true : _options$dropCap;\n var direction = options.direction || DEFAULT_DIRECTION;\n\n if (direction && VALID_DIRECTIONS.indexOf(direction) === -1) {\n throw new TypeError(\"Invalid direction: \" + direction);\n }\n\n if (direction === VALID_DIRECTIONS[0]) {\n // LR\n indentedTree(root, indent, dropCap);\n } else if (direction === VALID_DIRECTIONS[1]) {\n // RL\n indentedTree(root, indent, dropCap);\n root.right2left();\n } else if (direction === VALID_DIRECTIONS[2]) {\n // H\n // separate into left and right trees\n var _separateTree = separateTree(root, options),\n left = _separateTree.left,\n right = _separateTree.right;\n\n indentedTree(left, indent, dropCap);\n left.right2left();\n indentedTree(right, indent, dropCap);\n var bbox = left.getBoundingBox();\n right.translate(bbox.width, 0);\n root.x = right.x - root.width / 2;\n }\n\n return root;\n };\n\n return IndentedLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction indentedLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new IndentedLayout(root, options).execute();\n}\n\nmodule.exports = indentedLayout;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\nfunction positionNode(node, previousNode, indent, dropCap) {\n // caculate the node's horizontal offset DX, dx's type might be number or function\n var displacementX = typeof indent === 'function' ? indent(node) : indent * node.depth;\n\n if (!dropCap) {\n try {\n if (node.id === node.parent.children[0].id) {\n node.x += displacementX;\n node.y = previousNode ? previousNode.y : 0;\n return;\n }\n } catch (e) {// skip to normal when a node has no parent\n }\n }\n\n node.x += displacementX;\n node.y = previousNode ? previousNode.y + previousNode.height : 0;\n return;\n}\n\nmodule.exports = function (root, indent, dropCap) {\n var previousNode = null;\n root.eachNode(function (node) {\n positionNode(node, previousNode, indent, dropCap);\n previousNode = node;\n });\n};\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar TreeLayout = __webpack_require__(11);\n\nvar mindmap = __webpack_require__(119);\n\nvar doTreeLayout = __webpack_require__(17);\n\nvar util = __webpack_require__(7);\n\nvar MindmapLayout = /*#__PURE__*/function (_TreeLayout) {\n _inheritsLoose(MindmapLayout, _TreeLayout);\n\n function MindmapLayout() {\n return _TreeLayout.apply(this, arguments) || this;\n }\n\n var _proto = MindmapLayout.prototype;\n\n _proto.execute = function execute() {\n var me = this;\n return doTreeLayout(me.rootNode, me.options, mindmap);\n };\n\n return MindmapLayout;\n}(TreeLayout);\n\nvar DEFAULT_OPTIONS = {};\n\nfunction mindmapLayout(root, options) {\n options = util.assign({}, DEFAULT_OPTIONS, options);\n return new MindmapLayout(root, options).execute();\n}\n\nmodule.exports = mindmapLayout;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(7);\n\nfunction secondWalk(node, options) {\n var totalHeight = 0;\n\n if (!node.children.length) {\n totalHeight = node.height;\n } else {\n node.children.forEach(function (c) {\n totalHeight += secondWalk(c, options);\n });\n }\n\n node._subTreeSep = options.getSubTreeSep(node.data);\n node.totalHeight = Math.max(node.height, totalHeight) + 2 * node._subTreeSep;\n return node.totalHeight;\n}\n\nfunction thirdWalk(node) {\n var children = node.children;\n var len = children.length;\n\n if (len) {\n children.forEach(function (c) {\n thirdWalk(c);\n });\n var first = children[0];\n var last = children[len - 1];\n var childrenHeight = last.y - first.y + last.height;\n var childrenTotalHeight = 0;\n children.forEach(function (child) {\n childrenTotalHeight += child.totalHeight;\n });\n\n if (childrenHeight > node.height) {\n // 当子节点总高度大于父节点高度\n node.y = first.y + childrenHeight / 2 - node.height / 2;\n } else if (children.length !== 1 || node.height > childrenTotalHeight) {\n // 多于一个子节点或者父节点大于所有子节点的总高度\n var offset = node.y + (node.height - childrenHeight) / 2 - first.y;\n children.forEach(function (c) {\n c.translate(0, offset);\n });\n } else {\n // 只有一个子节点\n node.y = (first.y + first.height / 2 + last.y + last.height / 2) / 2 - node.height / 2;\n }\n }\n}\n\nvar DEFAULT_OPTIONS = {\n getSubTreeSep: function getSubTreeSep() {\n return 0;\n }\n};\n\nmodule.exports = function (root, options) {\n if (options === void 0) {\n options = {};\n }\n\n options = util.assign({}, DEFAULT_OPTIONS, options);\n root.parent = {\n x: 0,\n width: 0,\n height: 0,\n y: 0\n }; // first walk\n\n root.BFTraverse(function (node) {\n node.x = node.parent.x + node.parent.width; // simply get x\n });\n root.parent = null; // second walk\n\n secondWalk(root, options); // assign sub tree totalHeight\n // adjusting\n // separating nodes\n\n root.startY = 0;\n root.y = root.totalHeight / 2 - root.height / 2;\n root.eachNode(function (node) {\n var children = node.children;\n var len = children.length;\n\n if (len) {\n var first = children[0];\n first.startY = node.startY + node._subTreeSep;\n\n if (len === 1) {\n first.y = node.y + node.height / 2 - first.height / 2;\n } else {\n first.y = first.startY + first.totalHeight / 2 - first.height / 2;\n\n for (var i = 1; i < len; i++) {\n var c = children[i];\n c.startY = children[i - 1].startY + children[i - 1].totalHeight;\n c.y = c.startY + c.totalHeight / 2 - c.height / 2;\n }\n }\n }\n }); // third walk\n\n thirdWalk(root);\n};\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=hierarchy.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2hpZXJhcmNoeUAwLjYuOEBAYW50di9oaWVyYXJjaHkvYnVpbGQvaGllcmFyY2h5LmpzP2RjYTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxJQUFJLElBQXlEO0FBQzdEO0FBQ0EsTUFBTSxFQUswQjtBQUNoQyxDQUFDO0FBQ0Qsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDBCQUEwQixFQUFFO0FBQy9ELHlDQUF5QyxlQUFlO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsK0RBQStEO0FBQzdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsMENBQTBDLFNBQVM7QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxFQUFFO0FBQ2QsWUFBWSxRQUFRO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixhQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOzs7QUFHcEM7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakUsd0RBQXdEOztBQUV4RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVELEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RDtBQUM1RCxLQUFLO0FBQ0w7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsWUFBWTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsWUFBWTtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsbURBQW1ELE9BQU87QUFDMUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCOztBQUVsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1CQUFtQixrQkFBa0I7QUFDckM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1CQUFtQixzQkFBc0I7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxpREFBaUQ7O0FBRWpELGtEQUFrRDtBQUNsRDs7QUFFQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsY0FBYztBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUEsK0NBQStDLDBEQUEwRCwyQ0FBMkMsaUNBQWlDOztBQUVyTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDBEQUEwRCxjQUFjO0FBQ3hFO0FBQ0Esb0dBQW9HLHFEQUFxRCxFQUFFO0FBQzNKLG9HQUFvRyxxREFBcUQsRUFBRTtBQUMzSjtBQUNBLHNHQUFzRyx1REFBdUQsRUFBRTtBQUMvSjtBQUNBLGdHQUFnRyxpREFBaUQsRUFBRTtBQUNuSjtBQUNBLHFHQUFxRyx1REFBdUQsRUFBRTtBQUM5SjtBQUNBLHNHQUFzRyx3REFBd0QsRUFBRTtBQUNoSztBQUNBLG1HQUFtRyxvREFBb0QsRUFBRTtBQUN6SjtBQUNBLHVHQUF1Ryx5REFBeUQsRUFBRTtBQUNsSztBQUNBLG9HQUFvRyxzREFBc0QsRUFBRTtBQUM1SjtBQUNBLGdHQUFnRyxpREFBaUQsRUFBRTtBQUNuSjtBQUNBLGtHQUFrRyxvREFBb0QsRUFBRTtBQUN4SjtBQUNBLGtHQUFrRyxvREFBb0QsRUFBRTtBQUN4SjtBQUNBLGtHQUFrRyxvREFBb0QsRUFBRTtBQUN4SjtBQUNBLGtHQUFrRyxxREFBcUQsRUFBRTtBQUN6SjtBQUNBLGlHQUFpRyxtREFBbUQsRUFBRTtBQUN0SjtBQUNBLGdHQUFnRyxrREFBa0QsRUFBRTtBQUNwSjtBQUNBLHVHQUF1RywyREFBMkQsRUFBRTtBQUNwSztBQUNBLGdHQUFnRyxrREFBa0QsRUFBRTtBQUNwSjtBQUNBLGdHQUFnRyxrREFBa0QsRUFBRTtBQUNwSjtBQUNBLHNHQUFzRyx5REFBeUQsRUFBRTtBQUNqSztBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLGtHQUFrRyxvREFBb0QsRUFBRTtBQUN4SjtBQUNBLGlHQUFpRyxtREFBbUQsRUFBRTtBQUN0SjtBQUNBLGdHQUFnRyxrREFBa0QsRUFBRTtBQUNwSjtBQUNBLGlHQUFpRyxtREFBbUQsRUFBRTtBQUN0SjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLHNHQUFzRywwREFBMEQsRUFBRTtBQUNsSztBQUNBLDJHQUEyRywrREFBK0QsRUFBRTtBQUM1SztBQUNBLHdHQUF3RywyREFBMkQsRUFBRTtBQUNySztBQUNBLHdHQUF3RywwREFBMEQsRUFBRTtBQUNwSztBQUNBLHVHQUF1RywwREFBMEQsRUFBRTtBQUNuSztBQUNBLGlHQUFpRyxtREFBbUQsRUFBRTtBQUN0SjtBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLGtHQUFrRyxxREFBcUQsRUFBRTtBQUN6SjtBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLHNHQUFzRyx5REFBeUQsRUFBRTtBQUNqSztBQUNBLHlHQUF5Ryw2REFBNkQsRUFBRTtBQUN4SztBQUNBLGlHQUFpRyxvREFBb0QsRUFBRTtBQUN2SjtBQUNBLHNHQUFzRyx5REFBeUQsRUFBRTtBQUNqSztBQUNBLGlHQUFpRyxvREFBb0QsRUFBRTtBQUN2SjtBQUNBLGlHQUFpRyxvREFBb0QsRUFBRTtBQUN2SjtBQUNBLCtGQUErRixpREFBaUQsRUFBRTtBQUNsSjtBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLGlHQUFpRyxvREFBb0QsRUFBRTtBQUN2SjtBQUNBLCtGQUErRixpREFBaUQsRUFBRTtBQUNsSjtBQUNBLGtHQUFrRyxxREFBcUQsRUFBRTtBQUN6SjtBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLGdHQUFnRyxrREFBa0QsRUFBRTtBQUNwSjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLGtHQUFrRyxvREFBb0QsRUFBRTtBQUN4SjtBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLHNHQUFzRyx5REFBeUQsRUFBRTtBQUNqSztBQUNBLHNHQUFzRyx3REFBd0QsRUFBRTtBQUNoSztBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLHNHQUFzRyx5REFBeUQsRUFBRTtBQUNqSztBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLHVHQUF1RywwREFBMEQsRUFBRTtBQUNuSztBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLHVHQUF1RywyREFBMkQsRUFBRTtBQUNwSztBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLGtHQUFrRyxxREFBcUQsRUFBRTtBQUN6SjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLHNHQUFzRyx5REFBeUQsRUFBRTtBQUNqSztBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLGlHQUFpRyxvREFBb0QsRUFBRTtBQUN2SjtBQUNBLGtHQUFrRyxxREFBcUQsRUFBRTtBQUN6SjtBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLHdHQUF3Ryw0REFBNEQsRUFBRTtBQUN0SztBQUNBLHlHQUF5Ryw2REFBNkQsRUFBRTtBQUN4SztBQUNBLHVHQUF1RywwREFBMEQsRUFBRTtBQUNuSztBQUNBLG9HQUFvRyx3REFBd0QsRUFBRTtBQUM5SjtBQUNBLG9HQUFvRyx1REFBdUQsRUFBRTtBQUM3SjtBQUNBLGtHQUFrRyxxREFBcUQsRUFBRTtBQUN6SjtBQUNBLHVHQUF1RywwREFBMEQsRUFBRTtBQUNuSztBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLGlIQUFpSCxxRUFBcUUsRUFBRTtBQUN4TDtBQUNBLCtHQUErRyxtRUFBbUUsRUFBRTtBQUNwTDtBQUNBLG1HQUFtRyxxREFBcUQsRUFBRTtBQUMxSjtBQUNBLGlHQUFpRyxtREFBbUQsRUFBRTtBQUN0SjtBQUNBLG9HQUFvRyxzREFBc0QsRUFBRTtBQUM1SjtBQUNBLG1HQUFtRyxxREFBcUQsRUFBRTtBQUMxSjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLGdHQUFnRyxrREFBa0QsRUFBRTtBQUNwSjtBQUNBLGtHQUFrRyxvREFBb0QsRUFBRTtBQUN4SjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBLHVHQUF1RywyREFBMkQsRUFBRTtBQUNwSztBQUNBLCtGQUErRixpREFBaUQsRUFBRTtBQUNsSjtBQUNBLHFHQUFxRyx3REFBd0QsRUFBRTtBQUMvSjtBQUNBLCtGQUErRixpREFBaUQsRUFBRTtBQUNsSixrR0FBa0csaURBQWlELEVBQUU7QUFDcko7QUFDQSwrRkFBK0YsaURBQWlELEVBQUU7QUFDbEo7QUFDQSwrRkFBK0YsaURBQWlELEVBQUU7QUFDbEo7QUFDQSxnR0FBZ0csa0RBQWtELEVBQUU7QUFDcEo7QUFDQSxvR0FBb0csc0RBQXNELEVBQUU7QUFDNUo7QUFDQSxtR0FBbUcsc0RBQXNELEVBQUU7QUFDM0o7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxvR0FBb0csd0RBQXdELEVBQUU7QUFDOUo7QUFDQSxnR0FBZ0csbURBQW1ELEVBQUU7QUFDcko7QUFDQSxvR0FBb0csdURBQXVELEVBQUU7QUFDN0o7QUFDQSxnR0FBZ0csbURBQW1ELEVBQUU7QUFDcko7QUFDQSxpR0FBaUcsb0RBQW9ELEVBQUU7QUFDdko7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBOzs7QUFHQTs7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7Ozs7Ozs7O0FBUUE7Ozs7OztBQU1BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7Ozs7QUFJQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsWUFBWSxNQUFNO0FBQ2xCO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBTUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLGdCQUFnQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTs7QUFFQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixZQUFZLE1BQU07QUFDbEI7QUFDQTtBQUNBLGtDQUFrQztBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsWUFBWSxNQUFNO0FBQ2xCO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLG1CQUFtQjtBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLFNBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw0QkFBNEIsT0FBTztBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsWUFBWSxFQUFFO0FBQ2Q7QUFDQTtBQUNBLG1CQUFtQixTQUFTLEdBQUcsU0FBUztBQUN4QztBQUNBLCtCQUErQixZQUFZLEVBQUU7QUFDN0MsVUFBVTtBQUNWO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsWUFBWSxFQUFFO0FBQ2Q7QUFDQTtBQUNBLG1CQUFtQixTQUFTLEdBQUcsU0FBUztBQUN4QztBQUNBLCtCQUErQixZQUFZLEVBQUU7QUFDN0MsVUFBVTtBQUNWO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsS0FBSyxLQUFLO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7O0FBRUEsa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBOztBQUVBOztBQUVBLGlCQUFpQixpQkFBaUI7QUFDbEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLG1DQUFtQyxPQUFPO0FBQzFDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7OztBQUdEO0FBQ0E7O0FBRUEsa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBOztBQUVBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEOztBQUV4RCxtSEFBbUg7O0FBRW5IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBS0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLHVFQUF1RTs7QUFFdkUsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0I7O0FBRWhCO0FBQ0EsZ0JBQWdCOztBQUVoQjtBQUNBLFdBQVc7O0FBRVg7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQSxlQUFlOztBQUVmO0FBQ0EsZUFBZTs7QUFFZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUEsK0NBQStDLDBEQUEwRCwyQ0FBMkMsaUNBQWlDOztBQUVyTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gscUNBQXFDOztBQUVyQyxzQkFBc0I7O0FBRXRCLGVBQWU7O0FBRWY7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBLCtDQUErQywwREFBMEQsMkNBQTJDLGlDQUFpQzs7QUFFckw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxZQUFZO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSwrQ0FBK0MsMERBQTBELDJDQUEyQyxpQ0FBaUM7O0FBRXJMOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQSwrQ0FBK0M7QUFDL0MsR0FBRztBQUNILHFCQUFxQjs7QUFFckIsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSx1QkFBdUIsU0FBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2hpZXJhcmNoeUAwLjYuOEBAYW50di9oaWVyYXJjaHkvYnVpbGQvaGllcmFyY2h5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiSGllcmFyY2h5XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkhpZXJhcmNoeVwiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMzEpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5ID8gQXJyYXkuaXNBcnJheSh2YWx1ZSkgOiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCAnQXJyYXknKTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNBcnJheUxpa2UgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgLyoqXG4gICAqIGlzQXJyYXlMaWtlKFsxLCAyLCAzXSkgPT4gdHJ1ZVxuICAgKiBpc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKSA9PiB0cnVlXG4gICAqIGlzQXJyYXlMaWtlKCdhYmMnKSA9PiB0cnVlXG4gICAqIGlzQXJyYXlMaWtlKEZ1bmN0aW9uKSA9PiBmYWxzZVxuICAgKi9cbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiBpc0Zpbml0ZSh2YWx1ZS5sZW5ndGgpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0FycmF5TGlrZSk7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblxuXG5cbmZ1bmN0aW9uIGVhY2goZWxlbWVudHMsIGZ1bmMpIHtcbiAgaWYgKCFlbGVtZW50cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciByc3Q7XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGVsZW1lbnRzKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlbGVtZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgcnN0ID0gZnVuYyhlbGVtZW50c1tpXSwgaSk7XG5cbiAgICAgIGlmIChyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZWxlbWVudHMpKSB7XG4gICAgZm9yICh2YXIgayBpbiBlbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnRzLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgIHJzdCA9IGZ1bmMoZWxlbWVudHNba10sIGspO1xuXG4gICAgICAgIGlmIChyc3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChlYWNoKTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qKlxuICog5piv5ZCm5Li65Ye95pWwXG4gKiBAcGFyYW0gIHsqfSBmbiDlr7nosaFcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICDmmK/lkKblh73mlbBcbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ0Z1bmN0aW9uJyk7XG59KTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciBpc1R5cGUgPSBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCAnICsgdHlwZSArICddJztcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNUeXBlKTtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qKlxuICog5Yik5pat5piv5ZCm5pWw5a2XXG4gKiBAcmV0dXJuIHtCb29sZWFufSDmmK/lkKbmlbDlrZdcbiAqL1xuXG5cbnZhciBpc051bWJlciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ051bWJlcicpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc051bWJlcik7XG5cbi8qKiovIH0pLFxuLyogNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8vIGlzRmluaXRlLFxudmFyIGlzTmlsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIC8qKlxuICAgKiBpc05pbChudWxsKSA9PiB0cnVlXG4gICAqIGlzTmlsKCkgPT4gdHJ1ZVxuICAgKi9cbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzTmlsKTtcblxuLyoqKi8gfSksXG4vKiA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpLFxuICAgIG1peCA9IF9yZXF1aXJlLm1peDtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzc2lnbjogbWl4XG59O1xuXG4vKioqLyB9KSxcbi8qIDggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoc3RyLCAnU3RyaW5nJyk7XG59KTtcblxuLyoqKi8gfSksXG4vKiA5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfb2JqZWN0X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxuXG5cbnZhciBpc1BsYWluT2JqZWN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIC8qKlxuICAgKiBpc09iamVjdExpa2UobmV3IEZvbykgPT4gZmFsc2VcbiAgICogaXNPYmplY3RMaWtlKFsxLCAyLCAzXSkgPT4gZmFsc2VcbiAgICogaXNPYmplY3RMaWtlKHsgeDogMCwgeTogMCB9KSA9PiB0cnVlXG4gICAqIGlzT2JqZWN0TGlrZShPYmplY3QuY3JlYXRlKG51bGwpKSA9PiB0cnVlXG4gICAqL1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX29iamVjdF9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSB8fCAhT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ09iamVjdCcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBwcm90byA9IHZhbHVlO1xuXG4gIHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pICE9PSBudWxsKSB7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT09IHByb3RvO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc1BsYWluT2JqZWN0KTtcblxuLyoqKi8gfSksXG4vKiAxMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkpIHJldHVybiAnJztcbiAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaGllcmFyY2h5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cbnZhciBMYXlvdXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYXlvdXQocm9vdCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG5cbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIG1lLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIG1lLnJvb3ROb2RlID0gaGllcmFyY2h5KHJvb3QsIG9wdGlvbnMpO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IExheW91dC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmV4ZWN1dGUgPSBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcigncGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kJyk7XG4gIH07XG5cbiAgcmV0dXJuIExheW91dDtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogMTIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5cbnZhciBjb250YWlucyA9IGZ1bmN0aW9uIChhcnIsIHZhbHVlKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFyci5pbmRleE9mKHZhbHVlKSA+IC0xO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChjb250YWlucyk7XG5cbi8qKiovIH0pLFxuLyogMTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAvKipcbiAgICogaXNPYmplY3Qoe30pID0+IHRydWVcbiAgICogaXNPYmplY3QoWzEsIDIsIDNdKSA9PiB0cnVlXG4gICAqIGlzT2JqZWN0KEZ1bmN0aW9uKSA9PiB0cnVlXG4gICAqIGlzT2JqZWN0KG51bGwpID0+IGZhbHNlXG4gICAqL1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbic7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5cblxudmFyIGZpbHRlciA9IGZ1bmN0aW9uIChhcnIsIGZ1bmMpIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHtcbiAgICByZXR1cm4gYXJyO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgIGlmIChmdW5jKHZhbHVlLCBpbmRleCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmaWx0ZXIpO1xuXG4vKioqLyB9KSxcbi8qIDE1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0TGlrZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAvKipcbiAgICogaXNPYmplY3RMaWtlKHt9KSA9PiB0cnVlXG4gICAqIGlzT2JqZWN0TGlrZShbMSwgMiwgM10pID0+IHRydWVcbiAgICogaXNPYmplY3RMaWtlKEZ1bmN0aW9uKSA9PiBmYWxzZVxuICAgKiBpc09iamVjdExpa2UobnVsbCkgPT4gZmFsc2VcbiAgICovXG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc09iamVjdExpa2UpO1xuXG4vKioqLyB9KSxcbi8qIDE2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSBtaXg7XG4vLyBGSVhNRTogTXV0YWJsZSBwYXJhbSBzaG91bGQgYmUgZm9yYmlkZGVuIGluIHN0YXRpYyBsYW5nLlxuZnVuY3Rpb24gX21peChkaXN0LCBvYmopIHtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgIT09ICdjb25zdHJ1Y3RvcicgJiYgb2JqW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGlzdFtrZXldID0gb2JqW2tleV07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1peChkaXN0LCBzcmMxLCBzcmMyLCBzcmMzKSB7XG4gIGlmIChzcmMxKSBfbWl4KGRpc3QsIHNyYzEpO1xuICBpZiAoc3JjMikgX21peChkaXN0LCBzcmMyKTtcbiAgaWYgKHNyYzMpIF9taXgoZGlzdCwgc3JjMyk7XG4gIHJldHVybiBkaXN0O1xufVxuXG4vKioqLyB9KSxcbi8qIDE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBzZXBhcmF0ZVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblxudmFyIFZBTElEX0RJUkVDVElPTlMgPSBbJ0xSJywgLy8gbGVmdCB0byByaWdodFxuJ1JMJywgLy8gcmlnaHQgdG8gbGVmdFxuJ1RCJywgLy8gdG9wIHRvIGJvdHRvbVxuJ0JUJywgLy8gYm90dG9tIHRvIHRvcFxuJ0gnLCAvLyBob3Jpem9udGFsXG4nVicgLy8gdmVydGljYWxcbl07XG52YXIgSE9SSVpPTlRBTF9ESVJFQ1RJT05TID0gWydMUicsICdSTCcsICdIJ107XG5cbnZhciBpc0hvcml6b250YWwgPSBmdW5jdGlvbiBpc0hvcml6b250YWwoZGlyZWN0aW9uKSB7XG4gIHJldHVybiBIT1JJWk9OVEFMX0RJUkVDVElPTlMuaW5kZXhPZihkaXJlY3Rpb24pID4gLTE7XG59O1xuXG52YXIgREVGQVVMVF9ESVJFQ1RJT04gPSBWQUxJRF9ESVJFQ1RJT05TWzBdO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyb290LCBvcHRpb25zLCBsYXlvdXRBbGdyaXRobSkge1xuICB2YXIgZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb24gfHwgREVGQVVMVF9ESVJFQ1RJT047XG4gIG9wdGlvbnMuaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsKGRpcmVjdGlvbik7XG5cbiAgaWYgKGRpcmVjdGlvbiAmJiBWQUxJRF9ESVJFQ1RJT05TLmluZGV4T2YoZGlyZWN0aW9uKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBkaXJlY3Rpb246IFwiICsgZGlyZWN0aW9uKTtcbiAgfVxuXG4gIGlmIChkaXJlY3Rpb24gPT09IFZBTElEX0RJUkVDVElPTlNbMF0pIHtcbiAgICAvLyBMUlxuICAgIGxheW91dEFsZ3JpdGhtKHJvb3QsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1sxXSkge1xuICAgIC8vIFJMXG4gICAgbGF5b3V0QWxncml0aG0ocm9vdCwgb3B0aW9ucyk7XG4gICAgcm9vdC5yaWdodDJsZWZ0KCk7XG4gIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBWQUxJRF9ESVJFQ1RJT05TWzJdKSB7XG4gICAgLy8gVEJcbiAgICBsYXlvdXRBbGdyaXRobShyb290LCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFZBTElEX0RJUkVDVElPTlNbM10pIHtcbiAgICAvLyBCVFxuICAgIGxheW91dEFsZ3JpdGhtKHJvb3QsIG9wdGlvbnMpO1xuICAgIHJvb3QuYm90dG9tMnRvcCgpO1xuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1s0XSB8fCBkaXJlY3Rpb24gPT09IFZBTElEX0RJUkVDVElPTlNbNV0pIHtcbiAgICAvLyBIIG9yIFZcbiAgICAvLyBzZXBhcmF0ZSBpbnRvIGxlZnQgYW5kIHJpZ2h0IHRyZWVzXG4gICAgdmFyIF9zZXBhcmF0ZVRyZWUgPSBzZXBhcmF0ZVRyZWUocm9vdCwgb3B0aW9ucyksXG4gICAgICAgIGxlZnQgPSBfc2VwYXJhdGVUcmVlLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX3NlcGFyYXRlVHJlZS5yaWdodDsgLy8gZG8gbGF5b3V0IGZvciBsZWZ0IGFuZCByaWdodCB0cmVlc1xuXG5cbiAgICBsYXlvdXRBbGdyaXRobShsZWZ0LCBvcHRpb25zKTtcbiAgICBsYXlvdXRBbGdyaXRobShyaWdodCwgb3B0aW9ucyk7XG4gICAgb3B0aW9ucy5pc0hvcml6b250YWwgPyBsZWZ0LnJpZ2h0MmxlZnQoKSA6IGxlZnQuYm90dG9tMnRvcCgpOyAvLyBjb21iaW5lIGxlZnQgYW5kIHJpZ2h0IHRyZWVzXG5cbiAgICByaWdodC50cmFuc2xhdGUobGVmdC54IC0gcmlnaHQueCwgbGVmdC55IC0gcmlnaHQueSk7IC8vIHRyYW5zbGF0ZSByb290XG5cbiAgICByb290LnggPSBsZWZ0Lng7XG4gICAgcm9vdC55ID0gcmlnaHQueTtcbiAgICB2YXIgYmIgPSByb290LmdldEJvdW5kaW5nQm94KCk7XG5cbiAgICBpZiAob3B0aW9ucy5pc0hvcml6b250YWwpIHtcbiAgICAgIGlmIChiYi50b3AgPCAwKSB7XG4gICAgICAgIHJvb3QudHJhbnNsYXRlKDAsIC1iYi50b3ApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoYmIubGVmdCA8IDApIHtcbiAgICAgICAgcm9vdC50cmFuc2xhdGUoLWJiLmxlZnQsIDApO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmaXhlZCByb290IHBvc2l0aW9uLCBkZWZhdWx0IHZhbHVlIGlzIHRydWVcblxuXG4gIHZhciBmaXhlZFJvb3QgPSBvcHRpb25zLmZpeGVkUm9vdDtcbiAgaWYgKGZpeGVkUm9vdCA9PT0gdW5kZWZpbmVkKSBmaXhlZFJvb3QgPSB0cnVlO1xuXG4gIGlmIChmaXhlZFJvb3QpIHtcbiAgICByb290LnRyYW5zbGF0ZSgtKHJvb3QueCArIHJvb3Qud2lkdGggLyAyICsgcm9vdC5oZ2FwKSwgLShyb290LnkgKyByb290LmhlaWdodCAvIDIgKyByb290LnZnYXApKTtcbiAgfVxuXG4gIHJldHVybiByb290O1xufTtcblxuLyoqKi8gfSksXG4vKiAxOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqL1xudmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgUEVNID0gMTg7XG52YXIgREVGQVVMVF9IRUlHSFQgPSBQRU0gKiAyO1xudmFyIERFRkFVTFRfR0FQID0gUEVNO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgZ2V0SWQ6IGZ1bmN0aW9uIGdldElkKGQpIHtcbiAgICByZXR1cm4gZC5pZCB8fCBkLm5hbWU7XG4gIH0sXG4gIGdldFByZUg6IGZ1bmN0aW9uIGdldFByZUgoZCkge1xuICAgIHJldHVybiBkLnByZUggfHwgMDtcbiAgfSxcbiAgZ2V0UHJlVjogZnVuY3Rpb24gZ2V0UHJlVihkKSB7XG4gICAgcmV0dXJuIGQucHJlViB8fCAwO1xuICB9LFxuICBnZXRIR2FwOiBmdW5jdGlvbiBnZXRIR2FwKGQpIHtcbiAgICByZXR1cm4gZC5oZ2FwIHx8IERFRkFVTFRfR0FQO1xuICB9LFxuICBnZXRWR2FwOiBmdW5jdGlvbiBnZXRWR2FwKGQpIHtcbiAgICByZXR1cm4gZC52Z2FwIHx8IERFRkFVTFRfR0FQO1xuICB9LFxuICBnZXRDaGlsZHJlbjogZnVuY3Rpb24gZ2V0Q2hpbGRyZW4oZCkge1xuICAgIHJldHVybiBkLmNoaWxkcmVuO1xuICB9LFxuICBnZXRIZWlnaHQ6IGZ1bmN0aW9uIGdldEhlaWdodChkKSB7XG4gICAgcmV0dXJuIGQuaGVpZ2h0IHx8IERFRkFVTFRfSEVJR0hUO1xuICB9LFxuICBnZXRXaWR0aDogZnVuY3Rpb24gZ2V0V2lkdGgoZCkge1xuICAgIHZhciBsYWJlbCA9IGQubGFiZWwgfHwgJyAnO1xuICAgIHJldHVybiBkLndpZHRoIHx8IGxhYmVsLnNwbGl0KCcnKS5sZW5ndGggKiBQRU07IC8vIEZJWE1FIERPIE5PVCBnZXQgd2lkdGggbGlrZSB0aGlzXG4gIH1cbn07XG5cbmZ1bmN0aW9uIE5vZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgbWUgPSB0aGlzO1xuICBtZS52Z2FwID0gbWUuaGdhcCA9IDA7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTm9kZSkgcmV0dXJuIGRhdGE7XG4gIG1lLmRhdGEgPSBkYXRhO1xuICAvKlxuICAgKiBHYXBzOiBmaWxsaW5nIHNwYWNlIGJldHdlZW4gbm9kZXNcbiAgICogKHgsIHkpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogfCAgICAgICAgICAgIHZnYXAgICAgICAgICAgICB8XG4gICAqIHwgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgaFxuICAgKiB8IGggfCAgICAgICAgICAgICAgICAgICAgfCAgIGVcbiAgICogfCBnIHwgICAgICAgICAgICAgICAgICAgIHwgICBpXG4gICAqIHwgYSB8ICAgICAgICAgICAgICAgICAgICB8ICAgZ1xuICAgKiB8IHAgfCAgICAgICAgICAgICAgICAgICAgfCAgIGhcbiAgICogfCAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICB0XG4gICAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKiAgLS0tLS0tLS0tLS13aWR0aC0tLS0tLS0tLS0tLVxuICAgKi9cblxuICB2YXIgaGdhcCA9IG9wdGlvbnMuZ2V0SEdhcChkYXRhKTtcbiAgdmFyIHZnYXAgPSBvcHRpb25zLmdldFZHYXAoZGF0YSk7XG4gIG1lLnByZUggPSBvcHRpb25zLmdldFByZUgoZGF0YSk7XG4gIG1lLnByZVYgPSBvcHRpb25zLmdldFByZVYoZGF0YSk7XG4gIG1lLndpZHRoID0gb3B0aW9ucy5nZXRXaWR0aChkYXRhKTtcbiAgbWUuaGVpZ2h0ID0gb3B0aW9ucy5nZXRIZWlnaHQoZGF0YSk7XG4gIG1lLndpZHRoICs9IG1lLnByZUg7XG4gIG1lLmhlaWdodCArPSBtZS5wcmVWO1xuICBtZS5pZCA9IG9wdGlvbnMuZ2V0SWQoZGF0YSk7XG4gIG1lLnggPSBtZS55ID0gMDtcbiAgbWUuZGVwdGggPSAwO1xuXG4gIGlmICghbWUuY2hpbGRyZW4pIHtcbiAgICBtZS5jaGlsZHJlbiA9IFtdO1xuICB9XG5cbiAgbWUuYWRkR2FwKGhnYXAsIHZnYXApO1xuICByZXR1cm4gbWU7XG59XG5cbnV0aWwuYXNzaWduKE5vZGUucHJvdG90eXBlLCB7XG4gIGlzUm9vdDogZnVuY3Rpb24gaXNSb290KCkge1xuICAgIHJldHVybiB0aGlzLmRlcHRoID09PSAwO1xuICB9LFxuICBpc0xlYWY6IGZ1bmN0aW9uIGlzTGVhZigpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH0sXG4gIGFkZEdhcDogZnVuY3Rpb24gYWRkR2FwKGhnYXAsIHZnYXApIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIG1lLmhnYXAgKz0gaGdhcDtcbiAgICBtZS52Z2FwICs9IHZnYXA7XG4gICAgbWUud2lkdGggKz0gMiAqIGhnYXA7XG4gICAgbWUuaGVpZ2h0ICs9IDIgKiB2Z2FwO1xuICB9LFxuICBlYWNoTm9kZTogZnVuY3Rpb24gZWFjaE5vZGUoY2FsbGJhY2spIHtcbiAgICAvLyBEZXB0aCBGaXJzdCB0cmF2ZXJzZVxuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgdmFyIG5vZGVzID0gW21lXTtcbiAgICB2YXIgY3VycmVudDtcblxuICAgIHdoaWxlIChjdXJyZW50ID0gbm9kZXMuc2hpZnQoKSkge1xuICAgICAgY2FsbGJhY2soY3VycmVudCk7XG4gICAgICBub2RlcyA9IGN1cnJlbnQuY2hpbGRyZW4uY29uY2F0KG5vZGVzKTtcbiAgICB9XG4gIH0sXG4gIERGVHJhdmVyc2U6IGZ1bmN0aW9uIERGVHJhdmVyc2UoY2FsbGJhY2spIHtcbiAgICAvLyBEZXB0aCBGaXJzdCB0cmF2ZXJzZVxuICAgIHRoaXMuZWFjaE5vZGUoY2FsbGJhY2spO1xuICB9LFxuICBCRlRyYXZlcnNlOiBmdW5jdGlvbiBCRlRyYXZlcnNlKGNhbGxiYWNrKSB7XG4gICAgLy8gQnJlYWR0aCBGaXJzdCB0cmF2ZXJzZVxuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgdmFyIG5vZGVzID0gW21lXTtcbiAgICB2YXIgY3VycmVudDtcblxuICAgIHdoaWxlIChjdXJyZW50ID0gbm9kZXMuc2hpZnQoKSkge1xuICAgICAgY2FsbGJhY2soY3VycmVudCk7XG4gICAgICBub2RlcyA9IG5vZGVzLmNvbmNhdChjdXJyZW50LmNoaWxkcmVuKTtcbiAgICB9XG4gIH0sXG4gIGdldEJvdW5kaW5nQm94OiBmdW5jdGlvbiBnZXRCb3VuZGluZ0JveCgpIHtcbiAgICAvLyBCQm94IGZvciBqdXN0IG9uZSB0cmVlIG5vZGVcbiAgICB2YXIgYmIgPSB7XG4gICAgICBsZWZ0OiBOdW1iZXIuTUFYX1ZBTFVFLFxuICAgICAgdG9wOiBOdW1iZXIuTUFYX1ZBTFVFLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICAgIHRoaXMuZWFjaE5vZGUoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGJiLmxlZnQgPSBNYXRoLm1pbihiYi5sZWZ0LCBub2RlLngpO1xuICAgICAgYmIudG9wID0gTWF0aC5taW4oYmIudG9wLCBub2RlLnkpO1xuICAgICAgYmIud2lkdGggPSBNYXRoLm1heChiYi53aWR0aCwgbm9kZS54ICsgbm9kZS53aWR0aCk7XG4gICAgICBiYi5oZWlnaHQgPSBNYXRoLm1heChiYi5oZWlnaHQsIG5vZGUueSArIG5vZGUuaGVpZ2h0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYmI7XG4gIH0sXG4gIC8vIHRyYW5zbGF0ZVxuICB0cmFuc2xhdGU6IGZ1bmN0aW9uIHRyYW5zbGF0ZSh0eCwgdHkpIHtcbiAgICBpZiAodHggPT09IHZvaWQgMCkge1xuICAgICAgdHggPSAwO1xuICAgIH1cblxuICAgIGlmICh0eSA9PT0gdm9pZCAwKSB7XG4gICAgICB0eSA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5lYWNoTm9kZShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgbm9kZS54ICs9IHR4O1xuICAgICAgbm9kZS55ICs9IHR5O1xuICAgICAgbm9kZS54ICs9IG5vZGUucHJlSDtcbiAgICAgIG5vZGUueSArPSBub2RlLnByZVY7XG4gICAgfSk7XG4gIH0sXG4gIHJpZ2h0MmxlZnQ6IGZ1bmN0aW9uIHJpZ2h0MmxlZnQoKSB7XG4gICAgdmFyIG1lID0gdGhpcztcbiAgICB2YXIgYmIgPSBtZS5nZXRCb3VuZGluZ0JveCgpO1xuICAgIG1lLmVhY2hOb2RlKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBub2RlLnggPSBub2RlLnggLSAobm9kZS54IC0gYmIubGVmdCkgKiAyIC0gbm9kZS53aWR0aDsgLy8gbm9kZS54ID0gLSBub2RlLng7XG4gICAgfSk7XG4gICAgbWUudHJhbnNsYXRlKGJiLndpZHRoLCAwKTtcbiAgfSxcbiAgYm90dG9tMnRvcDogZnVuY3Rpb24gYm90dG9tMnRvcCgpIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIHZhciBiYiA9IG1lLmdldEJvdW5kaW5nQm94KCk7XG4gICAgbWUuZWFjaE5vZGUoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIG5vZGUueSA9IG5vZGUueSAtIChub2RlLnkgLSBiYi50b3ApICogMiAtIG5vZGUuaGVpZ2h0OyAvLyBub2RlLnkgPSAtIG5vZGUueTtcbiAgICB9KTtcbiAgICBtZS50cmFuc2xhdGUoMCwgYmIuaGVpZ2h0KTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGhpZXJhcmNoeShkYXRhLCBvcHRpb25zLCBpc29sYXRlZCkge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgb3B0aW9ucyA9IHV0aWwuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpO1xuICB2YXIgcm9vdCA9IG5ldyBOb2RlKGRhdGEsIG9wdGlvbnMpO1xuICB2YXIgbm9kZXMgPSBbcm9vdF07XG4gIHZhciBub2RlO1xuXG4gIGlmICghaXNvbGF0ZWQgJiYgIWRhdGEuY29sbGFwc2VkKSB7XG4gICAgd2hpbGUgKG5vZGUgPSBub2Rlcy5zaGlmdCgpKSB7XG4gICAgICBpZiAoIW5vZGUuZGF0YS5jb2xsYXBzZWQpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gb3B0aW9ucy5nZXRDaGlsZHJlbihub2RlLmRhdGEpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gY2hpbGRyZW4gPyBjaGlsZHJlbi5sZW5ndGggOiAwO1xuICAgICAgICBub2RlLmNoaWxkcmVuID0gbmV3IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgICAgaWYgKGNoaWxkcmVuICYmIGxlbmd0aCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IG5ldyBOb2RlKGNoaWxkcmVuW2ldLCBvcHRpb25zKTtcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW5baV0gPSBjaGlsZDtcbiAgICAgICAgICAgIG5vZGVzLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgY2hpbGQucGFyZW50ID0gbm9kZTtcbiAgICAgICAgICAgIGNoaWxkLmRlcHRoID0gbm9kZS5kZXB0aCArIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJvb3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGllcmFyY2h5O1xuXG4vKioqLyB9KSxcbi8qIDE5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fa2V5c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG5cblxuXG5mdW5jdGlvbiBpc01hdGNoKG9iaiwgYXR0cnMpIHtcbiAgdmFyIF9rZXlzID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fa2V5c19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhdHRycyk7XG5cbiAgdmFyIGxlbmd0aCA9IF9rZXlzLmxlbmd0aDtcbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmopKSByZXR1cm4gIWxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGtleSA9IF9rZXlzW2ldO1xuXG4gICAgaWYgKGF0dHJzW2tleV0gIT09IG9ialtrZXldIHx8ICEoa2V5IGluIG9iaikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc01hdGNoKTtcblxuLyoqKi8gfSksXG4vKiAyMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuXG52YXIga2V5cyA9IE9iamVjdC5rZXlzID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKTtcbn0gOiBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmosIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgaWYgKCEoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob2JqKSAmJiBrZXkgPT09ICdwcm90b3R5cGUnKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoa2V5cyk7XG5cbi8qKiovIH0pLFxuLyogMjEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG52YXIgc3BsaWNlID0gQXJyYXkucHJvdG90eXBlLnNwbGljZTtcblxudmFyIHB1bGxBdCA9IGZ1bmN0aW9uIHB1bGxBdChhcnIsIGluZGV4ZXMpIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYXJyID8gaW5kZXhlcy5sZW5ndGggOiAwO1xuICB2YXIgbGFzdCA9IGxlbmd0aCAtIDE7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIHByZXZpb3VzID0gdm9pZCAwO1xuICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcblxuICAgIGlmIChsZW5ndGggPT09IGxhc3QgfHwgaW5kZXggIT09IHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgc3BsaWNlLmNhbGwoYXJyLCBpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFycjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAocHVsbEF0KTtcblxuLyoqKi8gfSksXG4vKiAyMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnRhaW5zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cblxuXG52YXIgdW5pcSA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgdmFyIHJlc3VsdEFyciA9IFtdO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnRhaW5zX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHJlc3VsdEFyciwgaXRlbSkpIHtcbiAgICAgIHJlc3VsdEFyci5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHRBcnI7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHVuaXEpO1xuXG4vKioqLyB9KSxcbi8qIDIzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2dyb3VwX2J5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTtcblxuXG5cblxudmFyIGdyb3VwVG9NYXAgPSBmdW5jdGlvbiAoZGF0YSwgY29uZGl0aW9uKSB7XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIDA6IGRhdGFcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShjb25kaXRpb24pKSB7XG4gICAgdmFyIHBhcmFtc0NvbmRpdGlvbl8xID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoY29uZGl0aW9uKSA/IGNvbmRpdGlvbiA6IGNvbmRpdGlvbi5yZXBsYWNlKC9cXHMrL2csICcnKS5zcGxpdCgnKicpO1xuXG4gICAgY29uZGl0aW9uID0gZnVuY3Rpb24gKHJvdykge1xuICAgICAgdmFyIHVuaXF1ZSA9ICdfJzsgLy8g6YG/5YWN5Ye6546w5pWw5a2X5L2c5Li6S2V555qE5oOF5Ya177yM5Lya6L+b6KGM5oyJ54Wn5pWw5a2X55qE5o6S5bqPXG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFyYW1zQ29uZGl0aW9uXzEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHVuaXF1ZSArPSByb3dbcGFyYW1zQ29uZGl0aW9uXzFbaV1dICYmIHJvd1twYXJhbXNDb25kaXRpb25fMVtpXV0udG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVuaXF1ZTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGdyb3VwcyA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2dyb3VwX2J5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGRhdGEsIGNvbmRpdGlvbik7XG4gIHJldHVybiBncm91cHM7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGdyb3VwVG9NYXApO1xuXG4vKioqLyB9KSxcbi8qIDI0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBncm91cEJ5KGRhdGEsIGNvbmRpdGlvbikge1xuICBpZiAoIWNvbmRpdGlvbiB8fCAhT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZGF0YSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB2YXIgcmVzdWx0ID0ge307IC8vIOWFvOWuueaWueazleWSjCDlrZfnrKbkuLLnmoTlhpnms5VcblxuICB2YXIgcHJlZGljYXRlID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoY29uZGl0aW9uKSA/IGNvbmRpdGlvbiA6IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW1bY29uZGl0aW9uXTtcbiAgfTtcbiAgdmFyIGtleTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShkYXRhLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGtleSA9IHByZWRpY2F0ZShpdGVtKTtcblxuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgcmVzdWx0W2tleV0ucHVzaChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSBbaXRlbV07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChncm91cEJ5KTtcblxuLyoqKi8gfSksXG4vKiAyNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoa2V5KTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG4gLy8gQHRzLWlnbm9yZVxuXG52YXIgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqKTtcbn0gOiBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmosIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgaWYgKCEoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob2JqKSAmJiBrZXkgPT09ICdwcm90b3R5cGUnKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh2YWx1ZXMpO1xuXG4vKioqLyB9KSxcbi8qIDI3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciBnZXRUeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKS5yZXBsYWNlKC9eXFxbb2JqZWN0IC8sICcnKS5yZXBsYWNlKC9dJC8sICcnKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZ2V0VHlwZSk7XG5cbi8qKiovIH0pLFxuLyogMjggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG52YXIgaXNQcm90b3R5cGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcjtcbiAgdmFyIHByb3RvID0gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUgfHwgb2JqZWN0UHJvdG87XG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzUHJvdG90eXBlKTtcblxuLyoqKi8gfSksXG4vKiAyOSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX29iamVjdF9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cblxuXG5cbnZhciBpc0VxdWFsID0gZnVuY3Rpb24gKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIXZhbHVlIHx8ICFvdGhlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19zdHJpbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpIHx8IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvdGhlcikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgfHwgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvdGhlcikpIHtcbiAgICBpZiAodmFsdWUubGVuZ3RoICE9PSBvdGhlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgcnN0ID0gdHJ1ZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJzdCA9IGlzRXF1YWwodmFsdWVbaV0sIG90aGVyW2ldKTtcblxuICAgICAgaWYgKCFyc3QpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJzdDtcbiAgfVxuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19vYmplY3RfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgfHwgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfb2JqZWN0X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob3RoZXIpKSB7XG4gICAgdmFyIHZhbHVlS2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICB2YXIgb3RoZXJLZXlzID0gT2JqZWN0LmtleXMob3RoZXIpO1xuXG4gICAgaWYgKHZhbHVlS2V5cy5sZW5ndGggIT09IG90aGVyS2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgcnN0ID0gdHJ1ZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByc3QgPSBpc0VxdWFsKHZhbHVlW3ZhbHVlS2V5c1tpXV0sIG90aGVyW3ZhbHVlS2V5c1tpXV0pO1xuXG4gICAgICBpZiAoIXJzdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcnN0O1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0VxdWFsKTtcblxuLyoqKi8gfSksXG4vKiAzMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgaGllcmFyY2h5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHJvb3QsIG9wdGlvbnMpIHtcbiAgLy8gc2VwYXJhdGUgaW50byBsZWZ0IGFuZCByaWdodCB0cmVlc1xuICB2YXIgbGVmdCA9IGhpZXJhcmNoeShyb290LmRhdGEsIG9wdGlvbnMsIHRydWUpOyAvLyByb290IG9ubHlcblxuICB2YXIgcmlnaHQgPSBoaWVyYXJjaHkocm9vdC5kYXRhLCBvcHRpb25zLCB0cnVlKTsgLy8gcm9vdCBvbmx5XG4gIC8vIGF1dG9tYXRpY2FsbHlcblxuICB2YXIgdHJlZVNpemUgPSByb290LmNoaWxkcmVuLmxlbmd0aDtcbiAgdmFyIHJpZ2h0VHJlZVNpemUgPSBNYXRoLnJvdW5kKHRyZWVTaXplIC8gMik7IC8vIHNlcGFyYXRlIGxlZnQgYW5kIHJpZ2h0IHRyZWUgYnkgbWV0YSBkYXRhXG5cbiAgdmFyIGdldFNpZGUgPSBvcHRpb25zLmdldFNpZGUgfHwgZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xuICAgIGlmIChpbmRleCA8IHJpZ2h0VHJlZVNpemUpIHtcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIH1cblxuICAgIHJldHVybiAnbGVmdCc7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlU2l6ZTsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gcm9vdC5jaGlsZHJlbltpXTtcbiAgICB2YXIgc2lkZSA9IGdldFNpZGUoY2hpbGQsIGkpO1xuXG4gICAgaWYgKHNpZGUgPT09ICdyaWdodCcpIHtcbiAgICAgIHJpZ2h0LmNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0LmNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfVxuXG4gIGxlZnQuZWFjaE5vZGUoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUuaXNSb290KCkpIHtcbiAgICAgIG5vZGUuc2lkZSA9ICdsZWZ0JztcbiAgICB9XG4gIH0pO1xuICByaWdodC5lYWNoTm9kZShmdW5jdGlvbiAobm9kZSkge1xuICAgIGlmICghbm9kZS5pc1Jvb3QoKSkge1xuICAgICAgbm9kZS5zaWRlID0gJ3JpZ2h0JztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGxlZnQ6IGxlZnQsXG4gICAgcmlnaHQ6IHJpZ2h0XG4gIH07XG59O1xuXG4vKioqLyB9KSxcbi8qIDMxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoaWVyYXJjaHkgPSB7XG4gIGNvbXBhY3RCb3g6IF9fd2VicGFja19yZXF1aXJlX18oMzIpLFxuICBkZW5kcm9ncmFtOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNCksXG4gIGluZGVudGVkOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNiksXG4gIG1pbmRtYXA6IF9fd2VicGFja19yZXF1aXJlX18oMTE4KVxufTtcbm1vZHVsZS5leHBvcnRzID0gaGllcmFyY2h5O1xuXG4vKioqLyB9KSxcbi8qIDMyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpOyBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzczsgc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgVHJlZUxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgbm9uTGF5ZXJlZFRpZHlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTMpO1xuXG52YXIgZG9UcmVlTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cbnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxudmFyIENvbXBhY3RCb3hUcmVlTGF5b3V0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfVHJlZUxheW91dCkge1xuICBfaW5oZXJpdHNMb29zZShDb21wYWN0Qm94VHJlZUxheW91dCwgX1RyZWVMYXlvdXQpO1xuXG4gIGZ1bmN0aW9uIENvbXBhY3RCb3hUcmVlTGF5b3V0KCkge1xuICAgIHJldHVybiBfVHJlZUxheW91dC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gQ29tcGFjdEJveFRyZWVMYXlvdXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5leGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZSgpIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIHJldHVybiBkb1RyZWVMYXlvdXQobWUucm9vdE5vZGUsIG1lLm9wdGlvbnMsIG5vbkxheWVyZWRUaWR5VHJlZSk7XG4gIH07XG5cbiAgcmV0dXJuIENvbXBhY3RCb3hUcmVlTGF5b3V0O1xufShUcmVlTGF5b3V0KTtcblxudmFyIERFRkFVTFRfT1BUSU9OUyA9IHt9O1xuXG5mdW5jdGlvbiBjb21wYWN0Qm94TGF5b3V0KHJvb3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IHV0aWwuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpO1xuICByZXR1cm4gbmV3IENvbXBhY3RCb3hUcmVlTGF5b3V0KHJvb3QsIG9wdGlvbnMpLmV4ZWN1dGUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wYWN0Qm94TGF5b3V0O1xuXG4vKioqLyB9KSxcbi8qIDMzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19leHBvcnRzX18sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fY29udGFpbnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiY29udGFpbnNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnRhaW5zX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImluY2x1ZGVzXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb250YWluc19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19kaWZmZXJlbmNlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImRpZmZlcmVuY2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2RpZmZlcmVuY2VfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZmluZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJmaW5kXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19maW5kX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX2ZpbmRfaW5kZXhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZmluZEluZGV4XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19maW5kX2luZGV4X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2ZpcnN0X3ZhbHVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImZpcnN0VmFsdWVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2ZpcnN0X3ZhbHVlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2ZsYXR0ZW5fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZmxhdHRlblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fZmxhdHRlbl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19mbGF0dGVuX2RlZXBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZmxhdHRlbkRlZXBcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX2ZsYXR0ZW5fZGVlcF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19nZXRfcmFuZ2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZ2V0UmFuZ2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfX2dldF9yYW5nZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X19wdWxsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInB1bGxcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX3B1bGxfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fcHVsbF9hdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJwdWxsQXRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX3B1bGxfYXRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfX3JlZHVjZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJyZWR1Y2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX19yZWR1Y2VfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX3JlbW92ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJyZW1vdmVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX19yZW1vdmVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfX3NvcnRfYnlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwic29ydEJ5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fc29ydF9ieV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xM19fdW5pb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidW5pb25cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX191bmlvbl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fdW5pcV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ1bmlxXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fdW5pcV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNV9fdmFsdWVzX29mX2tleV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2YWx1ZXNPZktleVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfX3ZhbHVlc19vZl9rZXlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTZfX2hlYWRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaGVhZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTZfX2hlYWRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTdfX2xhc3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibGFzdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTdfX2xhc3RfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMThfX3N0YXJ0c193aXRoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInN0YXJ0c1dpdGhcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE4X19zdGFydHNfd2l0aF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOV9fZW5kc193aXRoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImVuZHNXaXRoXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOV9fZW5kc193aXRoX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIwX19maWx0ZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZmlsdGVyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMF9fZmlsdGVyX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIxX19ldmVyeV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJldmVyeVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjFfX2V2ZXJ5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIyX19zb21lX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInNvbWVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIyX19zb21lX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIzX19ncm91cF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Myk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJncm91cFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjNfX2dyb3VwX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI0X19ncm91cF9ieV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJncm91cEJ5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNF9fZ3JvdXBfYnlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjVfX2dyb3VwX3RvX21hcF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJncm91cFRvTWFwXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNV9fZ3JvdXBfdG9fbWFwX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X19nZXRfd3JhcF9iZWhhdmlvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJnZXRXcmFwQmVoYXZpb3JcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X19nZXRfd3JhcF9iZWhhdmlvcl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yN19fd3JhcF9iZWhhdmlvcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ3cmFwQmVoYXZpb3JcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI3X193cmFwX2JlaGF2aW9yX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI4X19udW1iZXIyY29sb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTYpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibnVtYmVyMmNvbG9yXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOF9fbnVtYmVyMmNvbG9yX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI5X19wYXJzZV9yYWRpdXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwicGFyc2VSYWRpdXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI5X19wYXJzZV9yYWRpdXNfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzBfX2NsYW1wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImNsYW1wXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMF9fY2xhbXBfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfX2ZpeGVkX2Jhc2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZml4ZWRCYXNlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMV9fZml4ZWRfYmFzZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMl9faXNfZGVjaW1hbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0RlY2ltYWxcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMyX19pc19kZWNpbWFsX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMzX19pc19ldmVuX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzRXZlblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzNfX2lzX2V2ZW5fX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzRfX2lzX2ludGVnZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNJbnRlZ2VyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNF9faXNfaW50ZWdlcl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNV9faXNfbmVnYXRpdmVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNOZWdhdGl2ZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzVfX2lzX25lZ2F0aXZlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM2X19pc19udW1iZXJfZXF1YWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNOdW1iZXJFcXVhbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzZfX2lzX251bWJlcl9lcXVhbF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zN19faXNfb2RkX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzT2RkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zN19faXNfb2RkX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM4X19pc19wb3NpdGl2ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc1Bvc2l0aXZlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zOF9faXNfcG9zaXRpdmVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzlfX21heF9ieV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJtYXhCeVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzlfX21heF9ieV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80MF9fbWluX2J5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIm1pbkJ5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80MF9fbWluX2J5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQxX19tb2RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibW9kXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80MV9fbW9kX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQyX190b19kZWdyZWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidG9EZWdyZWVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQyX190b19kZWdyZWVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDNfX3RvX2ludGVnZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidG9JbnRlZ2VyXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80M19fdG9faW50ZWdlcl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80NF9fdG9fcmFkaWFuX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInRvUmFkaWFuXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80NF9fdG9fcmFkaWFuX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ1X19mb3JfaW5fXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZm9ySW5cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ1X19mb3JfaW5fX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDZfX2hhc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJoYXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ2X19oYXNfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDdfX2hhc19rZXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaGFzS2V5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80N19faGFzX2tleV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80OF9faGFzX3ZhbHVlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImhhc1ZhbHVlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80OF9faGFzX3ZhbHVlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ5X19rZXlzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImtleXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ5X19rZXlzX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUwX19pc19tYXRjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc01hdGNoXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81MF9faXNfbWF0Y2hfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTFfX3ZhbHVlc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ2YWx1ZXNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUxX192YWx1ZXNfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTJfX2xvd2VyX2Nhc2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzYpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibG93ZXJDYXNlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81Ml9fbG93ZXJfY2FzZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81M19fbG93ZXJfZmlyc3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNzcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibG93ZXJGaXJzdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTNfX2xvd2VyX2ZpcnN0X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU0X19zdWJzdGl0dXRlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc4KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInN1YnN0aXR1dGVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU0X19zdWJzdGl0dXRlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU1X191cHBlcl9jYXNlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInVwcGVyQ2FzZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTVfX3VwcGVyX2Nhc2VfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTZfX3VwcGVyX2ZpcnN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInVwcGVyRmlyc3RcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU2X191cHBlcl9maXJzdF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81N19fZ2V0X3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZ2V0VHlwZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTdfX2dldF90eXBlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU4X19pc19hcmd1bWVudHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNBcmd1bWVudHNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU4X19pc19hcmd1bWVudHNfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTlfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNBcnJheVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTlfX2lzX2FycmF5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYwX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNBcnJheUxpa2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYwX19pc19hcnJheV9saWtlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYxX19pc19ib29sZWFuX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzQm9vbGVhblwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjFfX2lzX2Jvb2xlYW5fX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjJfX2lzX2RhdGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODMpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNEYXRlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82Ml9faXNfZGF0ZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82M19faXNfZXJyb3JfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODQpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNFcnJvclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjNfX2lzX2Vycm9yX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY0X19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzRnVuY3Rpb25cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY0X19pc19mdW5jdGlvbl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82NV9faXNfZmluaXRlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzRmluaXRlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82NV9faXNfZmluaXRlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY2X19pc19uaWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc05pbFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjZfX2lzX25pbF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82N19faXNfbnVsbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc051bGxcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY3X19pc19udWxsX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY4X19pc19udW1iZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc051bWJlclwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjhfX2lzX251bWJlcl9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82OV9faXNfb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzT2JqZWN0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82OV9faXNfb2JqZWN0X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzcwX19pc19vYmplY3RfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc09iamVjdExpa2VcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzcwX19pc19vYmplY3RfbGlrZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83MV9faXNfcGxhaW5fb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNQbGFpbk9iamVjdFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzFfX2lzX3BsYWluX29iamVjdF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83Ml9faXNfcHJvdG90eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzUHJvdG90eXBlXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83Ml9faXNfcHJvdG90eXBlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzczX19pc19yZWdfZXhwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzUmVnRXhwXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83M19faXNfcmVnX2V4cF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83NF9faXNfc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNTdHJpbmdcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc0X19pc19zdHJpbmdfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzVfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc1R5cGVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc1X19pc190eXBlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc2X19pc191bmRlZmluZWRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNVbmRlZmluZWRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzc2X19pc191bmRlZmluZWRfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzdfX2lzX2VsZW1lbnRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODkpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNFbGVtZW50XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83N19faXNfZWxlbWVudF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83OF9fcmVxdWVzdF9hbmltYXRpb25fZnJhbWVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83OF9fcmVxdWVzdF9hbmltYXRpb25fZnJhbWVfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNzlfX2NsZWFyX2FuaW1hdGlvbl9mcmFtZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJjbGVhckFuaW1hdGlvbkZyYW1lXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83OV9fY2xlYXJfYW5pbWF0aW9uX2ZyYW1lX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzgwX19hdWdtZW50X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImF1Z21lbnRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzgwX19hdWdtZW50X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzgxX19jbG9uZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Myk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJjbG9uZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODFfX2Nsb25lX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzgyX19kZWJvdW5jZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJkZWJvdW5jZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODJfX2RlYm91bmNlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzgzX19tZW1vaXplX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIm1lbW9pemVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzgzX19tZW1vaXplX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg0X19kZWVwX21peF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJkZWVwTWl4XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84NF9fZGVlcF9taXhfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODVfX2VhY2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJlYWNoXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84NV9fZWFjaF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84Nl9fZXh0ZW5kX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk3KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImV4dGVuZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODZfX2V4dGVuZF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84N19faW5kZXhfb2ZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOTgpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaW5kZXhPZlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODdfX2luZGV4X29mX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg4X19pc19lbXB0eV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpc0VtcHR5XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84OF9faXNfZW1wdHlfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfODlfX2lzX2VxdWFsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImlzRXF1YWxcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzg5X19pc19lcXVhbF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85MF9faXNfZXF1YWxfd2l0aF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiaXNFcXVhbFdpdGhcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkwX19pc19lcXVhbF93aXRoX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkxX19tYXBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIm1hcFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTFfX21hcF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85Ml9fbWFwX3ZhbHVlc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDIpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwibWFwVmFsdWVzXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85Ml9fbWFwX3ZhbHVlc19fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85M19fbWl4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIm1peFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTNfX21peF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJhc3NpZ25cIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzkzX19taXhfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTRfX2dldF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDMpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwiZ2V0XCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85NF9fZ2V0X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzk1X19zZXRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTA0KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInNldFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTVfX3NldF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85Nl9fcGlja19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDUpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwicGlja1wiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTZfX3BpY2tfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTdfX3Rocm90dGxlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJ0aHJvdHRsZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOTdfX3Rocm90dGxlX19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzk4X190b19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDcpO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidG9BcnJheVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOThfX3RvX2FycmF5X19bXCJhXCJdOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzk5X190b19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuLyogaGFybW9ueSByZWV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIFwidG9TdHJpbmdcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzk5X190b19zdHJpbmdfX1tcImFcIl07IH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTAwX191bmlxdWVfaWRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTA4KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInVuaXF1ZUlkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDBfX3VuaXF1ZV9pZF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDFfX25vb3BfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTA5KTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcIm5vb3BcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwMV9fbm9vcF9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDJfX2lkZW50aXR5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMCk7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJpZGVudGl0eVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTAyX19pZGVudGl0eV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDNfX3NpemVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTExKTtcbi8qIGhhcm1vbnkgcmVleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcInNpemVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwM19fc2l6ZV9fW1wiYVwiXTsgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMDRfX2NhY2hlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMik7XG4vKiBoYXJtb255IHJlZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJDYWNoZVwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTA0X19jYWNoZV9fW1wiYVwiXTsgfSk7XG4vLyBhcnJheVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gLy8gZXZlbnRcblxuXG4gLy8gZm9ybWF0XG5cblxuIC8vIG1hdGhcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAvLyBvYmplY3RcblxuXG5cblxuXG5cblxuIC8vIHN0cmluZ1xuXG5cblxuXG5cbiAvLyB0eXBlXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuIC8vIG90aGVyXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gLy8g5LiN55+l6YGT5Li65LuA5LmI77yM6ZyA6KaB5oqK6L+Z5LiqIGV4cG9ydO+8jOS4jeeEtiB0cyDkvJrmiqXnsbvlnovplJnor69cblxuXG5cbi8qKiovIH0pLFxuLyogMzQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19maWx0ZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udGFpbnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKiBkaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTsgIC8vID0+IFsxXVxuICovXG5cbnZhciBkaWZmZXJlbmNlID0gZnVuY3Rpb24gKGFyciwgdmFsdWVzKSB7XG4gIGlmICh2YWx1ZXMgPT09IHZvaWQgMCkge1xuICAgIHZhbHVlcyA9IFtdO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2ZpbHRlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiAhT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fY29udGFpbnNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWVzLCB2YWx1ZSk7XG4gIH0pO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChkaWZmZXJlbmNlKTtcblxuLyoqKi8gfSksXG4vKiAzNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfbWF0Y2hfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19pc19wbGFpbl9vYmplY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cblxuXG5cblxuZnVuY3Rpb24gZmluZChhcnIsIHByZWRpY2F0ZSkge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikpIHJldHVybiBudWxsO1xuXG4gIHZhciBfcHJlZGljYXRlO1xuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShwcmVkaWNhdGUpKSB7XG4gICAgX3ByZWRpY2F0ZSA9IHByZWRpY2F0ZTtcbiAgfVxuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19pc19wbGFpbl9vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkocHJlZGljYXRlKSkge1xuICAgIF9wcmVkaWNhdGUgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX21hdGNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGEsIHByZWRpY2F0ZSk7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChfcHJlZGljYXRlKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChfcHJlZGljYXRlKGFycltpXSkpIHtcbiAgICAgICAgcmV0dXJuIGFycltpXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmaW5kKTtcblxuLyoqKi8gfSksXG4vKiAzNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmZ1bmN0aW9uIGZpbmRJbmRleChhcnIsIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gIGlmIChmcm9tSW5kZXggPT09IHZvaWQgMCkge1xuICAgIGZyb21JbmRleCA9IDA7XG4gIH1cblxuICBmb3IgKHZhciBpID0gZnJvbUluZGV4OyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJbaV0sIGkpKSB7XG4gICAgICAvLyDmib7liLDnu4jmraLlvqrnjq9cbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmaW5kSW5kZXgpO1xuXG4vKioqLyB9KSxcbi8qIDM3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG52YXIgZmlyc3RWYWx1ZSA9IGZ1bmN0aW9uIChkYXRhLCBuYW1lKSB7XG4gIHZhciByc3QgPSBudWxsO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBvYmogPSBkYXRhW2ldO1xuICAgIHZhciB2YWx1ZSA9IG9ialtuYW1lXTtcblxuICAgIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkge1xuICAgICAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkge1xuICAgICAgICByc3QgPSB2YWx1ZVswXTsgLy8gdG9kbyDov5nph4zmmK/lkKblupTor6Xkvb/nlKjpgJLlvZLvvIzosIPnlKggZmlyc3RWYWx1ZSBA57ud5LqRXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByc3QgPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJzdDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZmlyc3RWYWx1ZSk7XG5cbi8qKiovIH0pLFxuLyogMzggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTsgIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAqL1xuXG52YXIgZmxhdHRlbiA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIHJzdCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgcnN0ID0gcnN0LmNvbmNhdChhcnJbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJzdDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZmxhdHRlbik7XG5cbi8qKiovIH0pLFxuLyogMzkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHBhcmFtIHtBcnJheX0gcmVzdWx0IFRoZSBhcnJheSB0byByZXR1cm4uXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogZmxhdHRlbkRlZXAoWzEsIFsyLCBbMywgWzRdXSwgNV1dKTsgIC8vID0+IFsxLCAyLCAzLCA0LCA1XVxuICovXG5cbnZhciBmbGF0dGVuRGVlcCA9IGZ1bmN0aW9uIChhcnIsIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSB2b2lkIDApIHtcbiAgICByZXN1bHQgPSBbXTtcbiAgfVxuXG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIHJlc3VsdC5wdXNoKGFycik7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGZsYXR0ZW5EZWVwKGFycltpXSwgcmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmbGF0dGVuRGVlcCk7XG5cbi8qKiovIH0pLFxuLyogNDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2ZpbHRlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cblxuXG52YXIgZ2V0UmFuZ2UgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gIC8vIOWtmOWcqCBOYU4g5pe277yMbWluLG1heCDliKTlrprkvJrlh7rpl67pophcbiAgdmFsdWVzID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fZmlsdGVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlcywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gIWlzTmFOKHYpO1xuICB9KTtcblxuICBpZiAoIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAvLyDlpoLmnpzmsqHmnInmlbDlgLzliJnnm7TmjqXov5Tlm54wXG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbjogMCxcbiAgICAgIG1heDogMFxuICAgIH07XG4gIH1cblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWVzWzBdKSkge1xuICAgIHZhciB0bXAgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0bXAgPSB0bXAuY29uY2F0KHZhbHVlc1tpXSk7XG4gICAgfVxuXG4gICAgdmFsdWVzID0gdG1wO1xuICB9XG5cbiAgdmFyIG1heCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHZhbHVlcyk7XG4gIHZhciBtaW4gPSBNYXRoLm1pbi5hcHBseShudWxsLCB2YWx1ZXMpO1xuICByZXR1cm4ge1xuICAgIG1pbjogbWluLFxuICAgIG1heDogbWF4XG4gIH07XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGdldFJhbmdlKTtcblxuLyoqKi8gfSksXG4vKiA0MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBhcnJQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG52YXIgc3BsaWNlID0gYXJyUHJvdG90eXBlLnNwbGljZTtcbnZhciBpbmRleE9mID0gYXJyUHJvdG90eXBlLmluZGV4T2Y7XG5cbnZhciBwdWxsID0gZnVuY3Rpb24gKGFycikge1xuICB2YXIgdmFsdWVzID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICB2YWx1ZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICB2YXIgZnJvbUluZGV4ID0gLTE7XG5cbiAgICB3aGlsZSAoKGZyb21JbmRleCA9IGluZGV4T2YuY2FsbChhcnIsIHZhbHVlKSkgPiAtMSkge1xuICAgICAgc3BsaWNlLmNhbGwoYXJyLCBmcm9tSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcnI7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHB1bGwpO1xuXG4vKioqLyB9KSxcbi8qIDQyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfcGxhaW5fb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXG5cblxuXG52YXIgcmVkdWNlID0gZnVuY3Rpb24gKGFyciwgZm4sIGluaXQpIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpICYmICFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19wbGFpbl9vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIHJldHVybiBhcnI7XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gaW5pdDtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIsIGZ1bmN0aW9uIChkYXRhLCBpKSB7XG4gICAgcmVzdWx0ID0gZm4ocmVzdWx0LCBkYXRhLCBpKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHJlZHVjZSk7XG5cbi8qKiovIH0pLFxuLyogNDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fcHVsbF9hdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cblxuXG52YXIgcmVtb3ZlID0gZnVuY3Rpb24gKGFyciwgcHJlZGljYXRlKSB7XG4gIC8qKlxuICAgKiBjb25zdCBhcnIgPSBbMSwgMiwgMywgNF1cbiAgICogY29uc3QgZXZlbnMgPSByZW1vdmUoYXJyLCBuID0+IG4gJSAyID09IDApXG4gICAqIGNvbnNvbGUubG9nKGFycikgLy8gPT4gWzEsIDNdXG4gICAqIGNvbnNvbGUubG9nKGV2ZW5zKSAvLyA9PiBbMiwgNF1cbiAgICovXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaSA9IC0xO1xuICB2YXIgaW5kZXhlcyA9IFtdO1xuICB2YXIgbGVuZ3RoID0gYXJyLmxlbmd0aDtcblxuICB3aGlsZSAoKytpIDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyW2ldO1xuXG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaSwgYXJyKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgaW5kZXhlcy5wdXNoKGkpO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3B1bGxfYXRfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyLCBpbmRleGVzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAocmVtb3ZlKTtcblxuLyoqKi8gfSksXG4vKiA0NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblxuXG5cbmZ1bmN0aW9uIHNvcnRCeShhcnIsIGtleSkge1xuICB2YXIgY29tcGFyZXI7XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGtleSkpIHtcbiAgICBjb21wYXJlciA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4ga2V5KGEpIC0ga2V5KGIpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdmFyIGtleXNfMSA9IFtdO1xuXG4gICAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShrZXkpKSB7XG4gICAgICBrZXlzXzEucHVzaChrZXkpO1xuICAgIH0gZWxzZSBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoa2V5KSkge1xuICAgICAga2V5c18xID0ga2V5O1xuICAgIH1cblxuICAgIGNvbXBhcmVyID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c18xLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBwcm9wID0ga2V5c18xW2ldO1xuXG4gICAgICAgIGlmIChhW3Byb3BdID4gYltwcm9wXSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFbcHJvcF0gPCBiW3Byb3BdKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gIH1cblxuICBhcnIuc29ydChjb21wYXJlcik7XG4gIHJldHVybiBhcnI7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoc29ydEJ5KTtcblxuLyoqKi8gfSksXG4vKiA0NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3VuaXFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXG5cbnZhciB1bmlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNvdXJjZXMgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIHNvdXJjZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX191bmlxX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKFtdLmNvbmNhdC5hcHBseShbXSwgc291cmNlcykpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh1bmlvbik7XG5cbi8qKiovIH0pLFxuLyogNDYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19uaWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChkYXRhLCBuYW1lKSB7XG4gIHZhciByc3QgPSBbXTtcbiAgdmFyIHRtcE1hcCA9IHt9O1xuICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciB2YWx1ZSA9IG9ialtuYW1lXTtcblxuICAgIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkge1xuICAgICAgLy8gZmxhdHRlblxuICAgICAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgIC8vIHVuaXF1ZVxuICAgICAgICBpZiAoIXRtcE1hcFt2YWxdKSB7XG4gICAgICAgICAgcnN0LnB1c2godmFsKTtcbiAgICAgICAgICB0bXBNYXBbdmFsXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByc3Q7XG59KTtcblxuLyoqKi8gfSksXG4vKiA0NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gaGVhZDtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbmZ1bmN0aW9uIGhlYWQobykge1xuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvKSkge1xuICAgIHJldHVybiBvWzBdO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqKi8gfSksXG4vKiA0OCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gbGFzdDtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cbmZ1bmN0aW9uIGxhc3Qobykge1xuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvKSkge1xuICAgIHZhciBhcnIgPSBvO1xuICAgIHJldHVybiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqKi8gfSksXG4vKiA0OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXG5cblxuZnVuY3Rpb24gc3RhcnRzV2l0aChhcnIsIGUpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikgfHwgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFycikgPyBhcnJbMF0gPT09IGUgOiBmYWxzZTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChzdGFydHNXaXRoKTtcblxuLyoqKi8gfSksXG4vKiA1MCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXG5cblxuZnVuY3Rpb24gZW5kc1dpdGgoYXJyLCBlKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpIHx8IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpID8gYXJyW2Fyci5sZW5ndGggLSAxXSA9PT0gZSA6IGZhbHNlO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGVuZHNXaXRoKTtcblxuLyoqKi8gfSksXG4vKiA1MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICog5Y+q6KaB5pyJ5LiA5Liq5LiN5ruh6Laz5p2h5Lu25bCx6L+U5ZueIGZhbHNlXG4gKiBAcGFyYW0gYXJyXG4gKiBAcGFyYW0gZnVuY1xuICovXG52YXIgZXZlcnkgPSBmdW5jdGlvbiAoYXJyLCBmdW5jKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFmdW5jKGFycltpXSwgaSkpIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChldmVyeSk7XG5cbi8qKiovIH0pLFxuLyogNTIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIOWPquimgeacieS4gOS4qua7oei2s+adoeS7tuWwsei/lOWbniB0cnVlXG4gKiBAcGFyYW0gYXJyXG4gKiBAcGFyYW0gZnVuY1xuICovXG52YXIgc29tZSA9IGZ1bmN0aW9uIChhcnIsIGZ1bmMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnVuYyhhcnJbaV0sIGkpKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoc29tZSk7XG5cbi8qKiovIH0pLFxuLyogNTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19ncm91cF90b19tYXBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChkYXRhLCBjb25kaXRpb24pIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAvLyDmsqHmnInmnaHku7bvvIzliJnoh6rouqvmlLnmiJDmlbDnu4RcbiAgICByZXR1cm4gW2RhdGFdO1xuICB9XG5cbiAgdmFyIGdyb3VwcyA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2dyb3VwX3RvX21hcF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShkYXRhLCBjb25kaXRpb24pO1xuICB2YXIgYXJyYXkgPSBbXTtcblxuICBmb3IgKHZhciBpIGluIGdyb3Vwcykge1xuICAgIGFycmF5LnB1c2goZ3JvdXBzW2ldKTtcbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDU0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiDojrflj5blsIHoo4XnmoTkuovku7ZcbiAqIEBwcm90ZWN0ZWRcbiAqIEBwYXJhbSAge09iamVjdH0gb2JqICAg5a+56LGhXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGFjdGlvbiDkuovku7blkI3np7BcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSAgICAgICAg6L+U5Zue5LqL5Lu25aSE55CG5Ye95pWwXG4gKi9cbmZ1bmN0aW9uIGdldFdyYXBCZWhhdmlvcihvYmosIGFjdGlvbikge1xuICByZXR1cm4gb2JqWydfd3JhcF8nICsgYWN0aW9uXTtcbn1cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChnZXRXcmFwQmVoYXZpb3IpO1xuXG4vKioqLyB9KSxcbi8qIDU1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiDlsIHoo4Xkuovku7bvvIzkvr/kuo7kvb/nlKjkuIrkuIvmlod0aGlzLOWSjOS+v+S6juino+mZpOS6i+S7tuaXtuS9v+eUqFxuICogQHByb3RlY3RlZFxuICogQHBhcmFtICB7T2JqZWN0fSBvYmogICDlr7nosaFcbiAqIEBwYXJhbSAge1N0cmluZ30gYWN0aW9uIOS6i+S7tuWQjeensFxuICogQHJldHVybiB7RnVuY3Rpb259ICAgICAgICDov5Tlm57kuovku7blpITnkIblh73mlbBcbiAqL1xuZnVuY3Rpb24gd3JhcEJlaGF2aW9yKG9iaiwgYWN0aW9uKSB7XG4gIGlmIChvYmpbJ193cmFwXycgKyBhY3Rpb25dKSB7XG4gICAgcmV0dXJuIG9ialsnX3dyYXBfJyArIGFjdGlvbl07XG4gIH1cblxuICB2YXIgbWV0aG9kID0gZnVuY3Rpb24gKGUpIHtcbiAgICBvYmpbYWN0aW9uXShlKTtcbiAgfTtcblxuICBvYmpbJ193cmFwXycgKyBhY3Rpb25dID0gbWV0aG9kO1xuICByZXR1cm4gbWV0aG9kO1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHdyYXBCZWhhdmlvcik7XG5cbi8qKiovIH0pLFxuLyogNTYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgbnVtQ29sb3JDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBudW1iZXJUb0NvbG9yKG51bSkge1xuICAvLyDlop7liqDnvJPlrZhcbiAgdmFyIGNvbG9yID0gbnVtQ29sb3JDYWNoZVtudW1dO1xuXG4gIGlmICghY29sb3IpIHtcbiAgICB2YXIgc3RyID0gbnVtLnRvU3RyaW5nKDE2KTtcblxuICAgIGZvciAodmFyIGkgPSBzdHIubGVuZ3RoOyBpIDwgNjsgaSsrKSB7XG4gICAgICBzdHIgPSAnMCcgKyBzdHI7XG4gICAgfVxuXG4gICAgY29sb3IgPSAnIycgKyBzdHI7XG4gICAgbnVtQ29sb3JDYWNoZVtudW1dID0gY29sb3I7XG4gIH1cblxuICByZXR1cm4gY29sb3I7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAobnVtYmVyVG9Db2xvcik7XG5cbi8qKiovIH0pLFxuLyogNTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5mdW5jdGlvbiBwYXJzZVJhZGl1cyhyYWRpdXMpIHtcbiAgdmFyIHIxID0gMCxcbiAgICAgIHIyID0gMCxcbiAgICAgIHIzID0gMCxcbiAgICAgIHI0ID0gMDtcblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkocmFkaXVzKSkge1xuICAgIGlmIChyYWRpdXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1c1swXTtcbiAgICB9IGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHIxID0gcjMgPSByYWRpdXNbMF07XG4gICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgIH0gZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgfSBlbHNlIHtcbiAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgcjIgPSByYWRpdXNbMV07XG4gICAgICByMyA9IHJhZGl1c1syXTtcbiAgICAgIHI0ID0gcmFkaXVzWzNdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByMSA9IHIyID0gcjMgPSByNCA9IHJhZGl1cztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcjE6IHIxLFxuICAgIHIyOiByMixcbiAgICByMzogcjMsXG4gICAgcjQ6IHI0XG4gIH07XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAocGFyc2VSYWRpdXMpO1xuXG4vKioqLyB9KSxcbi8qIDU4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIGNsYW1wID0gZnVuY3Rpb24gKGEsIG1pbiwgbWF4KSB7XG4gIGlmIChhIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfSBlbHNlIGlmIChhID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBhO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChjbGFtcCk7XG5cbi8qKiovIH0pLFxuLyogNTkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZml4ZWRCYXNlID0gZnVuY3Rpb24gKHYsIGJhc2UpIHtcbiAgdmFyIHN0ciA9IGJhc2UudG9TdHJpbmcoKTtcbiAgdmFyIGluZGV4ID0gc3RyLmluZGV4T2YoJy4nKTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodik7XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gc3RyLnN1YnN0cihpbmRleCArIDEpLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoID4gMjApIHtcbiAgICBsZW5ndGggPSAyMDtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUZsb2F0KHYudG9GaXhlZChsZW5ndGgpKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZml4ZWRCYXNlKTtcblxuLyoqKi8gfSksXG4vKiA2MCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuXG52YXIgaXNEZWNpbWFsID0gZnVuY3Rpb24gKG51bSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG51bSkgJiYgbnVtICUgMSAhPT0gMDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNEZWNpbWFsKTtcblxuLyoqKi8gfSksXG4vKiA2MSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuXG52YXIgaXNFdmVuID0gZnVuY3Rpb24gKG51bSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG51bSkgJiYgbnVtICUgMiA9PT0gMDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNFdmVuKTtcblxuLyoqKi8gfSksXG4vKiA2MiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxudmFyIGlzSW50ZWdlciA9IE51bWJlci5pc0ludGVnZXIgPyBOdW1iZXIuaXNJbnRlZ2VyIDogZnVuY3Rpb24gKG51bSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG51bSkgJiYgbnVtICUgMSA9PT0gMDtcbn07XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzSW50ZWdlcik7XG5cbi8qKiovIH0pLFxuLyogNjMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cblxudmFyIGlzTmVnYXRpdmUgPSBmdW5jdGlvbiAobnVtKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19udW1iZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkobnVtKSAmJiBudW0gPCAwO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc05lZ2F0aXZlKTtcblxuLyoqKi8gfSksXG4vKiA2NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gaXNOdW1iZXJFcXVhbDtcbnZhciBQUkVDSVNJT04gPSAwLjAwMDAxOyAvLyBudW1iZXJzIGxlc3MgdGhhbiB0aGlzIGlzIGNvbnNpZGVyZWQgYXMgMFxuXG5mdW5jdGlvbiBpc051bWJlckVxdWFsKGEsIGIsIHByZWNpc2lvbikge1xuICBpZiAocHJlY2lzaW9uID09PSB2b2lkIDApIHtcbiAgICBwcmVjaXNpb24gPSBQUkVDSVNJT047XG4gIH1cblxuICByZXR1cm4gTWF0aC5hYnMoYSAtIGIpIDwgcHJlY2lzaW9uO1xufVxuO1xuXG4vKioqLyB9KSxcbi8qIDY1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5cbnZhciBpc09kZCA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShudW0pICYmIG51bSAlIDIgIT09IDA7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzT2RkKTtcblxuLyoqKi8gfSksXG4vKiA2NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblxuXG52YXIgaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShudW0pICYmIG51bSA+IDA7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzUG9zaXRpdmUpO1xuXG4vKioqLyB9KSxcbi8qIDY3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm4geyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICpcbiAqIG1heEJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMiB9XG4gKlxuICogbWF4Qnkob2JqZWN0cywgJ24nKTtcbiAqIC8vID0+IHsgJ24nOiAyIH1cbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChhcnIsIGZuKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgbWF4ID0gYXJyWzBdO1xuICB2YXIgbWF4RGF0YTtcblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZm4pKSB7XG4gICAgbWF4RGF0YSA9IGZuKGFyclswXSk7XG4gIH0gZWxzZSB7XG4gICAgbWF4RGF0YSA9IGFyclswXVtmbl07XG4gIH1cblxuICB2YXIgZGF0YTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZm4pKSB7XG4gICAgICBkYXRhID0gZm4odmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YSA9IHZhbFtmbl07XG4gICAgfVxuXG4gICAgaWYgKGRhdGEgPiBtYXhEYXRhKSB7XG4gICAgICBtYXggPSB2YWw7XG4gICAgICBtYXhEYXRhID0gZGF0YTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbWF4O1xufSk7XG5cbi8qKiovIH0pLFxuLyogNjggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybiB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDEgfSwgeyAnbic6IDIgfV07XG4gKlxuICogbWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAqIC8vID0+IHsgJ24nOiAxIH1cbiAqXG4gKiBtaW5CeShvYmplY3RzLCAnbicpO1xuICogLy8gPT4geyAnbic6IDEgfVxuICovXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKGFyciwgZm4pIHtcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHZhciBtaW4gPSBhcnJbMF07XG4gIHZhciBtaW5EYXRhO1xuXG4gIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShmbikpIHtcbiAgICBtaW5EYXRhID0gZm4oYXJyWzBdKTtcbiAgfSBlbHNlIHtcbiAgICBtaW5EYXRhID0gYXJyWzBdW2ZuXTtcbiAgfVxuXG4gIHZhciBkYXRhO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKHZhbCkge1xuICAgIGlmIChPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShmbikpIHtcbiAgICAgIGRhdGEgPSBmbih2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhID0gdmFsW2ZuXTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YSA8IG1pbkRhdGEpIHtcbiAgICAgIG1pbiA9IHZhbDtcbiAgICAgIG1pbkRhdGEgPSBkYXRhO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtaW47XG59KTtcblxuLyoqKi8gfSksXG4vKiA2OSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBtb2QgPSBmdW5jdGlvbiAobiwgbSkge1xuICByZXR1cm4gKG4gJSBtICsgbSkgJSBtO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChtb2QpO1xuXG4vKioqLyB9KSxcbi8qIDcwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIERFR1JFRSA9IDE4MCAvIE1hdGguUEk7XG5cbnZhciB0b0RlZ3JlZSA9IGZ1bmN0aW9uIChyYWRpYW4pIHtcbiAgcmV0dXJuIERFR1JFRSAqIHJhZGlhbjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAodG9EZWdyZWUpO1xuXG4vKioqLyB9KSxcbi8qIDcxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChwYXJzZUludCk7XG5cbi8qKiovIH0pLFxuLyogNzIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgUkFESUFOID0gTWF0aC5QSSAvIDE4MDtcblxudmFyIHRvUmFkaWFuID0gZnVuY3Rpb24gKGRlZ3JlZSkge1xuICByZXR1cm4gUkFESUFOICogZGVncmVlO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh0b1JhZGlhbik7XG5cbi8qKiovIH0pLFxuLyogNzMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKTtcblxuLyoqKi8gfSksXG4vKiA3NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hhc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oYXNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSk7XG5cbi8qKiovIH0pLFxuLyogNzUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19jb250YWluc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX192YWx1ZXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKG9iaiwgdmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2NvbnRhaW5zX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX3ZhbHVlc19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmopLCB2YWx1ZSk7XG59KTtcblxuLyoqKi8gfSksXG4vKiA3NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3RvX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cblxudmFyIGxvd2VyQ2FzZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3RvX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdHIpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGxvd2VyQ2FzZSk7XG5cbi8qKiovIH0pLFxuLyogNzcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX190b19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cbnZhciBsb3dlckZpcnN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBzdHIgPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX190b19zdHJpbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpO1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAobG93ZXJGaXJzdCk7XG5cbi8qKiovIH0pLFxuLyogNzggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBzdWJzdGl0dXRlKHN0ciwgbykge1xuICBpZiAoIXN0ciB8fCAhbykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcXFw/XFx7KFtee31dKylcXH0vZywgZnVuY3Rpb24gKG1hdGNoLCBuYW1lKSB7XG4gICAgaWYgKG1hdGNoLmNoYXJBdCgwKSA9PT0gJ1xcXFwnKSB7XG4gICAgICByZXR1cm4gbWF0Y2guc2xpY2UoMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9bbmFtZV0gPT09IHVuZGVmaW5lZCA/ICcnIDogb1tuYW1lXTtcbiAgfSk7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoc3Vic3RpdHV0ZSk7XG5cbi8qKiovIH0pLFxuLyogNzkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX190b19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cbnZhciB1cHBlckNhc2UgPSBmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX190b19zdHJpbmdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoc3RyKS50b1VwcGVyQ2FzZSgpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9ICh1cHBlckNhc2UpO1xuXG4vKioqLyB9KSxcbi8qIDgwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdG9fc3RyaW5nX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblxuXG52YXIgdXBwZXJGaXJzdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgc3RyID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fdG9fc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKTtcbiAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKHVwcGVyRmlyc3QpO1xuXG4vKioqLyB9KSxcbi8qIDgxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qKlxuICog5piv5ZCm5piv5Y+C5pWw57G75Z6LXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIOa1i+ivleeahOWAvFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuXG5cbnZhciBpc0FyZ3VtZW50cyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ0FyZ3VtZW50cycpO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0FyZ3VtZW50cyk7XG5cbi8qKiovIH0pLFxuLyogODIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc190eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyoqXG4gKiDmmK/lkKbmmK/luIPlsJTnsbvlnotcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsdWUg5rWL6K+V55qE5YC8XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5cblxudmFyIGlzQm9vbGVhbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ0Jvb2xlYW4nKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNCb29sZWFuKTtcblxuLyoqKi8gfSksXG4vKiA4MyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cblxudmFyIGlzRGF0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ0RhdGUnKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNEYXRlKTtcblxuLyoqKi8gfSksXG4vKiA4NCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG4vKipcbiAqIOaYr+WQpuaYr+WPguaVsOexu+Wei1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSDmtYvor5XnmoTlgLxcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cblxuXG52YXIgaXNFcnJvciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSwgJ0Vycm9yJyk7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGlzRXJyb3IpO1xuXG4vKioqLyB9KSxcbi8qIDg1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbnVtYmVyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyoqXG4gKiDliKTmlq3mmK/lkKbkuLrmnInpmZDmlbBcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX251bWJlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh2YWx1ZSkgJiYgaXNGaW5pdGUodmFsdWUpO1xufSk7XG5cbi8qKiovIH0pLFxuLyogODYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNOdWxsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNOdWxsKTtcblxuLyoqKi8gfSksXG4vKiA4NyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cblxudmFyIGlzUmVnRXhwID0gZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfdHlwZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdHIsICdSZWdFeHAnKTtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNSZWdFeHApO1xuXG4vKioqLyB9KSxcbi8qIDg4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIGlzVW5kZWZpbmVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc1VuZGVmaW5lZCk7XG5cbi8qKiovIH0pLFxuLyogODkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIOWIpOaWreaYr+WQpkhUTUzlhYPntKBcbiAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpkhUTUzlhYPntKBcbiAqL1xudmFyIGlzRWxlbWVudCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBvIGluc3RhbmNlb2YgRWxlbWVudCB8fCBvIGluc3RhbmNlb2YgSFRNTERvY3VtZW50O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChpc0VsZW1lbnQpO1xuXG4vKioqLyB9KSxcbi8qIDkwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5mdW5jdGlvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pIHtcbiAgdmFyIG1ldGhvZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCAvLyBAdHMtaWdub3JlXG4gIHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgLy8gQHRzLWlnbm9yZVxuICB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgZnVuY3Rpb24gKGYpIHtcbiAgICByZXR1cm4gc2V0VGltZW91dChmLCAxNik7XG4gIH07XG5cbiAgcmV0dXJuIG1ldGhvZChmbik7XG59XG47XG5cbi8qKiovIH0pLFxuLyogOTEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGV4cG9ydCAoaW1tdXRhYmxlKSAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IGNhbmNlbEFuaW1hdGlvbkZyYW1lO1xuZnVuY3Rpb24gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaGFuZGxlcikge1xuICB2YXIgbWV0aG9kID0gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSB8fCAvLyBAdHMtaWdub3JlXG4gIHdpbmRvdy5tb3pDYW5jZWxBbmltYXRpb25GcmFtZSB8fCAvLyBAdHMtaWdub3JlXG4gIHdpbmRvdy5tc0NhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IGNsZWFyVGltZW91dDtcbiAgbWV0aG9kKGhhbmRsZXIpO1xufVxuO1xuXG4vKioqLyB9KSxcbi8qIDkyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fbWl4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG5cblxudmFyIGF1Z21lbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhcmdzID0gW107XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICB2YXIgYyA9IGFyZ3NbMF07XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG9iaiA9IGFyZ3NbaV07XG5cbiAgICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob2JqKSkge1xuICAgICAgb2JqID0gb2JqLnByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19taXhfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYy5wcm90b3R5cGUsIG9iaik7XG4gIH1cbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoYXVnbWVudCk7XG5cbi8qKiovIH0pLFxuLyogOTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG52YXIgY2xvbmUgPSBmdW5jdGlvbiAob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIHJzdDtcblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob2JqKSkge1xuICAgIHJzdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodHlwZW9mIG9ialtpXSA9PT0gJ29iamVjdCcgJiYgb2JqW2ldICE9IG51bGwpIHtcbiAgICAgICAgcnN0W2ldID0gY2xvbmUob2JqW2ldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdFtpXSA9IG9ialtpXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcnN0ID0ge307XG5cbiAgICBmb3IgKHZhciBrIGluIG9iaikge1xuICAgICAgaWYgKHR5cGVvZiBvYmpba10gPT09ICdvYmplY3QnICYmIG9ialtrXSAhPSBudWxsKSB7XG4gICAgICAgIHJzdFtrXSA9IGNsb25lKG9ialtrXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByc3Rba10gPSBvYmpba107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJzdDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoY2xvbmUpO1xuXG4vKioqLyB9KSxcbi8qIDk0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7XG4gIHZhciB0aW1lb3V0O1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjb250ZXh0ID0gdGhpcyxcbiAgICAgICAgYXJncyA9IGFyZ3VtZW50cztcblxuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuXG4gICAgaWYgKGNhbGxOb3cpIHtcbiAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgfVxuICB9O1xufVxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGRlYm91bmNlKTtcblxuLyoqKi8gfSksXG4vKiA5NSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2Z1bmN0aW9uX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXG4vKipcbiAqIF8ubWVtb2l6ZShjYWxDb2xvcik7XG4gKiBfLm1lbW9pemUoY2FsQ29sb3IsICguLi5hcmdzKSA9PiBhcmdzWzBdKTtcbiAqIEBwYXJhbSBmXG4gKiBAcGFyYW0gcmVzb2x2ZXJcbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChmLCByZXNvbHZlcikge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2Z1bmN0aW9uX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGYpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gW107XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH0gLy8g5L2/55So5pa55rOV5p6E6YCgIGtlee+8jOWmguaenOS4jeWtmOWcqCByZXNvbHZlcu+8jOWImeebtOaOpeWPluesrOS4gOS4quWPguaVsOS9nOS4uiBrZXlcblxuXG4gICAgdmFyIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdO1xuICAgIHZhciBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IGYuYXBwbHkodGhpcywgYXJncyk7IC8vIOe8k+WtmOi1t+adpVxuXG4gICAgY2FjaGUuc2V0KGtleSwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IE1hcCgpO1xuICByZXR1cm4gbWVtb2l6ZWQ7XG59KTtcblxuLyoqKi8gfSksXG4vKiA5NiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfcGxhaW5fb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXG5cbnZhciBNQVhfTUlYX0xFVkVMID0gNTtcblxuZnVuY3Rpb24gX2RlZXBNaXgoZGlzdCwgc3JjLCBsZXZlbCwgbWF4TGV2ZWwpIHtcbiAgbGV2ZWwgPSBsZXZlbCB8fCAwO1xuICBtYXhMZXZlbCA9IG1heExldmVsIHx8IE1BWF9NSVhfTEVWRUw7XG5cbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzcmMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgdmFyIHZhbHVlID0gc3JjW2tleV07XG5cbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19wbGFpbl9vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgICAgIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfcGxhaW5fb2JqZWN0X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGRpc3Rba2V5XSkpIHtcbiAgICAgICAgICBkaXN0W2tleV0gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZXZlbCA8IG1heExldmVsKSB7XG4gICAgICAgICAgX2RlZXBNaXgoZGlzdFtrZXldLCB2YWx1ZSwgbGV2ZWwgKyAxLCBtYXhMZXZlbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlzdFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgICAgIGRpc3Rba2V5XSA9IFtdO1xuICAgICAgICBkaXN0W2tleV0gPSBkaXN0W2tleV0uY29uY2F0KHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkaXN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8gdG9kbyDph43lhplcblxuXG52YXIgZGVlcE1peCA9IGZ1bmN0aW9uIChyc3QpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcblxuICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBfZGVlcE1peChyc3QsIGFyZ3NbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJzdDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZGVlcE1peCk7XG5cbi8qKiovIH0pLFxuLyogOTcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19taXhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblxuXG52YXIgZXh0ZW5kID0gZnVuY3Rpb24gKHN1YmNsYXNzLCBzdXBlcmNsYXNzLCBvdmVycmlkZXMsIHN0YXRpY092ZXJyaWRlcykge1xuICAvLyDlpoLmnpzlj6rmj5DkvpvniLbnsbvmnoTpgKDlh73mlbDvvIzliJnoh6rliqjnlJ/miJDlrZDnsbvmnoTpgKDlh73mlbBcbiAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19mdW5jdGlvbl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdXBlcmNsYXNzKSkge1xuICAgIG92ZXJyaWRlcyA9IHN1cGVyY2xhc3M7XG4gICAgc3VwZXJjbGFzcyA9IHN1YmNsYXNzO1xuXG4gICAgc3ViY2xhc3MgPSBmdW5jdGlvbiAoKSB7fTtcbiAgfVxuXG4gIHZhciBjcmVhdGUgPSBPYmplY3QuY3JlYXRlID8gZnVuY3Rpb24gKHByb3RvLCBjKSB7XG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG8sIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBjXG4gICAgICB9XG4gICAgfSk7XG4gIH0gOiBmdW5jdGlvbiAocHJvdG8sIGMpIHtcbiAgICBmdW5jdGlvbiBUbXAoKSB7fVxuXG4gICAgVG1wLnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciBvID0gbmV3IFRtcCgpO1xuICAgIG8uY29uc3RydWN0b3IgPSBjO1xuICAgIHJldHVybiBvO1xuICB9O1xuICB2YXIgc3VwZXJPYmogPSBjcmVhdGUoc3VwZXJjbGFzcy5wcm90b3R5cGUsIHN1YmNsYXNzKTsgLy8gbmV3IHN1cGVyY2xhc3MoKSwvL+WunuS+i+WMlueItuexu+S9nOS4uuWtkOexu+eahHByb3RvdHlwZVxuXG4gIHN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX21peF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdXBlck9iaiwgc3ViY2xhc3MucHJvdG90eXBlKTsgLy8g5oyH5a6a5a2Q57G755qEcHJvdG90eXBlXG5cbiAgc3ViY2xhc3Muc3VwZXJjbGFzcyA9IGNyZWF0ZShzdXBlcmNsYXNzLnByb3RvdHlwZSwgc3VwZXJjbGFzcyk7XG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX21peF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShzdXBlck9iaiwgb3ZlcnJpZGVzKTtcbiAgT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fbWl4X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHN1YmNsYXNzLCBzdGF0aWNPdmVycmlkZXMpO1xuICByZXR1cm4gc3ViY2xhc3M7XG59O1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGV4dGVuZCk7XG5cbi8qKiovIH0pLFxuLyogOTggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5cbnZhciBpbmRleE9mID0gZnVuY3Rpb24gKGFyciwgb2JqKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShhcnIpKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgdmFyIG0gPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcblxuICBpZiAobSkge1xuICAgIHJldHVybiBtLmNhbGwoYXJyLCBvYmopO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyW2ldID09PSBvYmopIHtcbiAgICAgIGluZGV4ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaW5kZXhPZik7XG5cbi8qKiovIH0pLFxuLyogOTkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19uaWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19hcnJheV9saWtlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fZ2V0X3R5cGVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19faXNfcHJvdG90eXBlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblxuXG5cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAvKipcbiAgICogaXNFbXB0eShudWxsKSA9PiB0cnVlXG4gICAqIGlzRW1wdHkoKSA9PiB0cnVlXG4gICAqIGlzRW1wdHkodHJ1ZSkgPT4gdHJ1ZVxuICAgKiBpc0VtcHR5KDEpID0+IHRydWVcbiAgICogaXNFbXB0eShbMSwgMiwgM10pID0+IGZhbHNlXG4gICAqIGlzRW1wdHkoJ2FiYycpID0+IGZhbHNlXG4gICAqIGlzRW1wdHkoeyBhOiAxIH0pID0+IGZhbHNlXG4gICAqL1xuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gIH1cblxuICB2YXIgdHlwZSA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2dldF90eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKTtcblxuICBpZiAodHlwZSA9PT0gJ01hcCcgfHwgdHlwZSA9PT0gJ1NldCcpIHtcbiAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gIH1cblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19faXNfcHJvdG90eXBlX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlKSkge1xuICAgIHJldHVybiAhT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aDtcbiAgfVxuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoaXNFbXB0eSk7XG5cbi8qKiovIH0pLFxuLyogMTAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfZnVuY3Rpb25fXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19lcXVhbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5cblxuLyoqXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gKlxuICogaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTsgIC8vID0+IHRydWVcbiAqL1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2YWx1ZSwgb3RoZXIsIGZuKSB7XG4gIGlmICghT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfZnVuY3Rpb25fX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoZm4pKSB7XG4gICAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2VxdWFsX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKHZhbHVlLCBvdGhlcik7XG4gIH1cblxuICByZXR1cm4gISFmbih2YWx1ZSwgb3RoZXIpO1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fZWFjaF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblxuXG52YXIgbWFwID0gZnVuY3Rpb24gKGFyciwgZnVuYykge1xuICBpZiAoIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoYXJyKSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gYXJyO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGFyciwgZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgIHJlc3VsdC5wdXNoKGZ1bmModmFsdWUsIGluZGV4KSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChtYXApO1xuXG4vKioqLyB9KSxcbi8qIDEwMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX29iamVjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cblxuXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAodikge1xuICByZXR1cm4gdjtcbn07XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKG9iamVjdCwgZnVuYykge1xuICBpZiAoZnVuYyA9PT0gdm9pZCAwKSB7XG4gICAgZnVuYyA9IGlkZW50aXR5O1xuICB9XG5cbiAgdmFyIHIgPSB7fTtcblxuICBpZiAoT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfb2JqZWN0X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iamVjdCkgJiYgIU9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvYmplY3QpKSB7XG4gICAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJba2V5XSA9IGZ1bmMob2JqZWN0W2tleV0sIGtleSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcjtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEwMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX3N0cmluZ19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblxuLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L2Rsdi9ibG9iL21hc3Rlci9pbmRleC5qc1xuICogQHBhcmFtIG9ialxuICogQHBhcmFtIGtleVxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZVxuICovXG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSAoZnVuY3Rpb24gKG9iaiwga2V5LCBkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIHAgPSAwO1xuICB2YXIga2V5QXJyID0gT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfc3RyaW5nX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKGtleSkgPyBrZXkuc3BsaXQoJy4nKSA6IGtleTtcblxuICB3aGlsZSAob2JqICYmIHAgPCBrZXlBcnIubGVuZ3RoKSB7XG4gICAgb2JqID0gb2JqW2tleUFycltwKytdXTtcbiAgfVxuXG4gIHJldHVybiBvYmogPT09IHVuZGVmaW5lZCB8fCBwIDwga2V5QXJyLmxlbmd0aCA/IGRlZmF1bHRWYWx1ZSA6IG9iajtcbn0pO1xuXG4vKioqLyB9KSxcbi8qIDEwNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX29iamVjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19pc19zdHJpbmdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19udW1iZXJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cblxuXG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kZXZlbG9waXQvZGx2L2Jsb2IvbWFzdGVyL2luZGV4LmpzXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0gcGF0aFxuICogQHBhcmFtIHZhbHVlXG4gKi9cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAob2JqLCBwYXRoLCB2YWx1ZSkge1xuICB2YXIgbyA9IG9iajtcbiAgdmFyIGtleUFyciA9IE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX3N0cmluZ19fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShwYXRoKSA/IHBhdGguc3BsaXQoJy4nKSA6IHBhdGg7XG4gIGtleUFyci5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGlkeCkge1xuICAgIC8vIOS4jeaYr+acgOWQjuS4gOS4qlxuICAgIGlmIChpZHggPCBrZXlBcnIubGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKCFPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19pc19vYmplY3RfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkob1trZXldKSkge1xuICAgICAgICBvW2tleV0gPSBPYmplY3QoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19pc19udW1iZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoa2V5QXJyW2lkeCArIDFdKSA/IFtdIDoge307XG4gICAgICB9XG5cbiAgICAgIG8gPSBvW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvYmo7XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19lYWNoX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfcGxhaW5fb2JqZWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChvYmplY3QsIGtleXMpIHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCAhT2JqZWN0KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfcGxhaW5fb2JqZWN0X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKG9iamVjdCkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB2YXIgcmVzdWx0ID0ge307XG4gIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2VhY2hfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoa2V5cywgZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBvYmplY3Rba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgdGltZW91dCwgY29udGV4dCwgYXJncywgcmVzdWx0O1xuICB2YXIgcHJldmlvdXMgPSAwO1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcblxuICB2YXIgbGF0ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcHJldmlvdXMgPSBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlID8gMCA6IERhdGUubm93KCk7XG4gICAgdGltZW91dCA9IG51bGw7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICBpZiAoIXRpbWVvdXQpIGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgfTtcblxuICB2YXIgdGhyb3R0bGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkgcHJldmlvdXMgPSBub3c7XG4gICAgdmFyIHJlbWFpbmluZyA9IHdhaXQgLSAobm93IC0gcHJldmlvdXMpO1xuICAgIGNvbnRleHQgPSB0aGlzO1xuICAgIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgICBpZiAocmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gd2FpdCkge1xuICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcHJldmlvdXMgPSBub3c7XG4gICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgfSBlbHNlIGlmICghdGltZW91dCAmJiBvcHRpb25zLnRyYWlsaW5nICE9PSBmYWxzZSkge1xuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHJlbWFpbmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB0aHJvdHRsZWQuY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICBwcmV2aW91cyA9IDA7XG4gICAgdGltZW91dCA9IGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgfTtcblxuICByZXR1cm4gdGhyb3R0bGVkO1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTA3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfYXJyYXlfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiYVwiXSA9IChmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodmFsdWUpID8gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodmFsdWUpIDogW107XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMDggKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgbWFwID0ge307XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgcHJlZml4ID0gcHJlZml4IHx8ICdnJztcblxuICBpZiAoIW1hcFtwcmVmaXhdKSB7XG4gICAgbWFwW3ByZWZpeF0gPSAxO1xuICB9IGVsc2Uge1xuICAgIG1hcFtwcmVmaXhdICs9IDE7XG4gIH1cblxuICByZXR1cm4gcHJlZml4ICsgbWFwW3ByZWZpeF07XG59KTtcblxuLyoqKi8gfSksXG4vKiAxMDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICgpIHt9KTtcblxuLyoqKi8gfSksXG4vKiAxMTAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGZ1bmN0aW9uICh2KSB7XG4gIHJldHVybiB2O1xufSk7XG5cbi8qKiovIH0pLFxuLyogMTExICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSBzaXplO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faXNfbmlsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faXNfYXJyYXlfbGlrZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblxuXG5mdW5jdGlvbiBzaXplKG8pIHtcbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2lzX25pbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKShvKSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYgKE9iamVjdChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2lzX2FycmF5X2xpa2VfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkobykpIHtcbiAgICByZXR1cm4gby5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmtleXMobykubGVuZ3RoO1xufVxuXG4vKioqLyB9KSxcbi8qIDExMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogay12IOWtmOWCqFxuICovXG52YXIgZGVmYXVsdF8xID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmYXVsdF8xKCkge1xuICAgIHRoaXMubWFwID0ge307XG4gIH1cblxuICBkZWZhdWx0XzEucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBba2V5XSAhPT0gdW5kZWZpbmVkO1xuICB9O1xuXG4gIGRlZmF1bHRfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSwgZGVmKSB7XG4gICAgdmFyIHYgPSB0aGlzLm1hcFtrZXldO1xuICAgIHJldHVybiB2ID09PSB1bmRlZmluZWQgPyBkZWYgOiB2O1xuICB9O1xuXG4gIGRlZmF1bHRfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLm1hcFtrZXldID0gdmFsdWU7XG4gIH07XG5cbiAgZGVmYXVsdF8xLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLm1hcCA9IHt9O1xuICB9O1xuXG4gIGRlZmF1bHRfMS5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtrZXldO1xuICB9O1xuXG4gIGRlZmF1bHRfMS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tYXApLmxlbmd0aDtcbiAgfTtcblxuICByZXR1cm4gZGVmYXVsdF8xO1xufSgpO1xuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gKGRlZmF1bHRfMSk7XG5cbi8qKiovIH0pLFxuLyogMTEzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIHdyYXAgdHJlZSBub2RlXG5mdW5jdGlvbiBXcmFwcGVkVHJlZSh3LCBoLCB5LCBjKSB7XG4gIGlmIChjID09PSB2b2lkIDApIHtcbiAgICBjID0gW107XG4gIH1cblxuICB2YXIgbWUgPSB0aGlzOyAvLyBzaXplXG5cbiAgbWUudyA9IHcgfHwgMDtcbiAgbWUuaCA9IGggfHwgMDsgLy8gcG9zaXRpb25cblxuICBtZS55ID0geSB8fCAwO1xuICBtZS54ID0gMDsgLy8gY2hpbGRyZW5cblxuICBtZS5jID0gYyB8fCBbXTtcbiAgbWUuY3MgPSBjLmxlbmd0aDsgLy8gbW9kaWZpZWRcblxuICBtZS5wcmVsaW0gPSAwO1xuICBtZS5tb2QgPSAwO1xuICBtZS5zaGlmdCA9IDA7XG4gIG1lLmNoYW5nZSA9IDA7IC8vIGxlZnQvcmlnaHQgdHJlZVxuXG4gIG1lLnRsID0gbnVsbDtcbiAgbWUudHIgPSBudWxsOyAvLyBleHRyZW1lIGxlZnQvcmlnaHQgdHJlZVxuXG4gIG1lLmVsID0gbnVsbDtcbiAgbWUuZXIgPSBudWxsOyAvLyBtb2RpZmllZCBsZWZ0L3JpZ2h0IHRyZWVcblxuICBtZS5tc2VsID0gMDtcbiAgbWUubXNlciA9IDA7XG59XG5cbldyYXBwZWRUcmVlLmZyb21Ob2RlID0gZnVuY3Rpb24gKHJvb3QsIGlzSG9yaXpvbnRhbCkge1xuICBpZiAoIXJvb3QpIHJldHVybiBudWxsO1xuICB2YXIgY2hpbGRyZW4gPSBbXTtcbiAgcm9vdC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGNoaWxkcmVuLnB1c2goV3JhcHBlZFRyZWUuZnJvbU5vZGUoY2hpbGQsIGlzSG9yaXpvbnRhbCkpO1xuICB9KTtcbiAgaWYgKGlzSG9yaXpvbnRhbCkgcmV0dXJuIG5ldyBXcmFwcGVkVHJlZShyb290LmhlaWdodCwgcm9vdC53aWR0aCwgcm9vdC54LCBjaGlsZHJlbik7XG4gIHJldHVybiBuZXcgV3JhcHBlZFRyZWUocm9vdC53aWR0aCwgcm9vdC5oZWlnaHQsIHJvb3QueSwgY2hpbGRyZW4pO1xufTsgLy8gbm9kZSB1dGlsc1xuXG5cbmZ1bmN0aW9uIG1vdmVSaWdodChub2RlLCBtb3ZlLCBpc0hvcml6b250YWwpIHtcbiAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgIG5vZGUueSArPSBtb3ZlO1xuICB9IGVsc2Uge1xuICAgIG5vZGUueCArPSBtb3ZlO1xuICB9XG5cbiAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIG1vdmVSaWdodChjaGlsZCwgbW92ZSwgaXNIb3Jpem9udGFsKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE1pbihub2RlLCBpc0hvcml6b250YWwpIHtcbiAgdmFyIHJlcyA9IGlzSG9yaXpvbnRhbCA/IG5vZGUueSA6IG5vZGUueDtcbiAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJlcyA9IE1hdGgubWluKGdldE1pbihjaGlsZCwgaXNIb3Jpem9udGFsKSwgcmVzKTtcbiAgfSk7XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZShub2RlLCBpc0hvcml6b250YWwpIHtcbiAgdmFyIG1pbiA9IGdldE1pbihub2RlLCBpc0hvcml6b250YWwpO1xuICBtb3ZlUmlnaHQobm9kZSwgLW1pbiwgaXNIb3Jpem9udGFsKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEJhY2soY29udmVydGVkXG4vKiBXcmFwcGVkVHJlZSAqL1xuLCByb290XG4vKiBUcmVlTm9kZSAqL1xuLCBpc0hvcml6b250YWwpIHtcbiAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgIHJvb3QueSA9IGNvbnZlcnRlZC54O1xuICB9IGVsc2Uge1xuICAgIHJvb3QueCA9IGNvbnZlcnRlZC54O1xuICB9XG5cbiAgY29udmVydGVkLmMuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQsIGkpIHtcbiAgICBjb252ZXJ0QmFjayhjaGlsZCwgcm9vdC5jaGlsZHJlbltpXSwgaXNIb3Jpem9udGFsKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGxheWVyKG5vZGUsIGlzSG9yaXpvbnRhbCwgZCkge1xuICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgZCA9IDA7XG4gIH1cblxuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgbm9kZS54ID0gZDtcbiAgICBkICs9IG5vZGUud2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS55ID0gZDtcbiAgICBkICs9IG5vZGUuaGVpZ2h0O1xuICB9XG5cbiAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGxheWVyKGNoaWxkLCBpc0hvcml6b250YWwsIGQpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIGlzSG9yaXpvbnRhbCA9IG9wdGlvbnMuaXNIb3Jpem9udGFsO1xuXG4gIGZ1bmN0aW9uIGZpcnN0V2Fsayh0KSB7XG4gICAgaWYgKHQuY3MgPT09IDApIHtcbiAgICAgIHNldEV4dHJlbWVzKHQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZpcnN0V2Fsayh0LmNbMF0pO1xuICAgIHZhciBpaCA9IHVwZGF0ZUlZTChib3R0b20odC5jWzBdLmVsKSwgMCwgbnVsbCk7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHQuY3M7ICsraSkge1xuICAgICAgZmlyc3RXYWxrKHQuY1tpXSk7XG4gICAgICB2YXIgbWluID0gYm90dG9tKHQuY1tpXS5lcik7XG4gICAgICBzZXBhcmF0ZSh0LCBpLCBpaCk7XG4gICAgICBpaCA9IHVwZGF0ZUlZTChtaW4sIGksIGloKTtcbiAgICB9XG5cbiAgICBwb3NpdGlvblJvb3QodCk7XG4gICAgc2V0RXh0cmVtZXModCk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFeHRyZW1lcyh0KSB7XG4gICAgaWYgKHQuY3MgPT09IDApIHtcbiAgICAgIHQuZWwgPSB0O1xuICAgICAgdC5lciA9IHQ7XG4gICAgICB0Lm1zZWwgPSB0Lm1zZXIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0LmVsID0gdC5jWzBdLmVsO1xuICAgICAgdC5tc2VsID0gdC5jWzBdLm1zZWw7XG4gICAgICB0LmVyID0gdC5jW3QuY3MgLSAxXS5lcjtcbiAgICAgIHQubXNlciA9IHQuY1t0LmNzIC0gMV0ubXNlcjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzZXBhcmF0ZSh0LCBpLCBpaCkge1xuICAgIHZhciBzciA9IHQuY1tpIC0gMV07XG4gICAgdmFyIG1zc3IgPSBzci5tb2Q7XG4gICAgdmFyIGNsID0gdC5jW2ldO1xuICAgIHZhciBtc2NsID0gY2wubW9kO1xuXG4gICAgd2hpbGUgKHNyICE9PSBudWxsICYmIGNsICE9PSBudWxsKSB7XG4gICAgICBpZiAoYm90dG9tKHNyKSA+IGloLmxvdykgaWggPSBpaC5ueHQ7XG4gICAgICB2YXIgZGlzdCA9IG1zc3IgKyBzci5wcmVsaW0gKyBzci53IC0gKG1zY2wgKyBjbC5wcmVsaW0pO1xuXG4gICAgICBpZiAoZGlzdCA+IDApIHtcbiAgICAgICAgbXNjbCArPSBkaXN0O1xuICAgICAgICBtb3ZlU3VidHJlZSh0LCBpLCBpaC5pbmRleCwgZGlzdCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzeSA9IGJvdHRvbShzcik7XG4gICAgICB2YXIgY3kgPSBib3R0b20oY2wpO1xuXG4gICAgICBpZiAoc3kgPD0gY3kpIHtcbiAgICAgICAgc3IgPSBuZXh0UmlnaHRDb250b3VyKHNyKTtcbiAgICAgICAgaWYgKHNyICE9PSBudWxsKSBtc3NyICs9IHNyLm1vZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHN5ID49IGN5KSB7XG4gICAgICAgIGNsID0gbmV4dExlZnRDb250b3VyKGNsKTtcbiAgICAgICAgaWYgKGNsICE9PSBudWxsKSBtc2NsICs9IGNsLm1vZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXNyICYmICEhY2wpIHtcbiAgICAgIHNldExlZnRUaHJlYWQodCwgaSwgY2wsIG1zY2wpO1xuICAgIH0gZWxzZSBpZiAoISFzciAmJiAhY2wpIHtcbiAgICAgIHNldFJpZ2h0VGhyZWFkKHQsIGksIHNyLCBtc3NyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlU3VidHJlZSh0LCBpLCBzaSwgZGlzdCkge1xuICAgIHQuY1tpXS5tb2QgKz0gZGlzdDtcbiAgICB0LmNbaV0ubXNlbCArPSBkaXN0O1xuICAgIHQuY1tpXS5tc2VyICs9IGRpc3Q7XG4gICAgZGlzdHJpYnV0ZUV4dHJhKHQsIGksIHNpLCBkaXN0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHRMZWZ0Q29udG91cih0KSB7XG4gICAgcmV0dXJuIHQuY3MgPT09IDAgPyB0LnRsIDogdC5jWzBdO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV4dFJpZ2h0Q29udG91cih0KSB7XG4gICAgcmV0dXJuIHQuY3MgPT09IDAgPyB0LnRyIDogdC5jW3QuY3MgLSAxXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJvdHRvbSh0KSB7XG4gICAgcmV0dXJuIHQueSArIHQuaDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldExlZnRUaHJlYWQodCwgaSwgY2wsIG1vZHN1bWNsKSB7XG4gICAgdmFyIGxpID0gdC5jWzBdLmVsO1xuICAgIGxpLnRsID0gY2w7XG4gICAgdmFyIGRpZmYgPSBtb2RzdW1jbCAtIGNsLm1vZCAtIHQuY1swXS5tc2VsO1xuICAgIGxpLm1vZCArPSBkaWZmO1xuICAgIGxpLnByZWxpbSAtPSBkaWZmO1xuICAgIHQuY1swXS5lbCA9IHQuY1tpXS5lbDtcbiAgICB0LmNbMF0ubXNlbCA9IHQuY1tpXS5tc2VsO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0UmlnaHRUaHJlYWQodCwgaSwgc3IsIG1vZHN1bXNyKSB7XG4gICAgdmFyIHJpID0gdC5jW2ldLmVyO1xuICAgIHJpLnRyID0gc3I7XG4gICAgdmFyIGRpZmYgPSBtb2RzdW1zciAtIHNyLm1vZCAtIHQuY1tpXS5tc2VyO1xuICAgIHJpLm1vZCArPSBkaWZmO1xuICAgIHJpLnByZWxpbSAtPSBkaWZmO1xuICAgIHQuY1tpXS5lciA9IHQuY1tpIC0gMV0uZXI7XG4gICAgdC5jW2ldLm1zZXIgPSB0LmNbaSAtIDFdLm1zZXI7XG4gIH1cblxuICBmdW5jdGlvbiBwb3NpdGlvblJvb3QodCkge1xuICAgIHQucHJlbGltID0gKHQuY1swXS5wcmVsaW0gKyB0LmNbMF0ubW9kICsgdC5jW3QuY3MgLSAxXS5tb2QgKyB0LmNbdC5jcyAtIDFdLnByZWxpbSArIHQuY1t0LmNzIC0gMV0udykgLyAyIC0gdC53IC8gMjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlY29uZFdhbGsodCwgbW9kc3VtKSB7XG4gICAgbW9kc3VtICs9IHQubW9kO1xuICAgIHQueCA9IHQucHJlbGltICsgbW9kc3VtO1xuICAgIGFkZENoaWxkU3BhY2luZyh0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5jczsgaSsrKSB7XG4gICAgICBzZWNvbmRXYWxrKHQuY1tpXSwgbW9kc3VtKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkaXN0cmlidXRlRXh0cmEodCwgaSwgc2ksIGRpc3QpIHtcbiAgICBpZiAoc2kgIT09IGkgLSAxKSB7XG4gICAgICB2YXIgbnIgPSBpIC0gc2k7XG4gICAgICB0LmNbc2kgKyAxXS5zaGlmdCArPSBkaXN0IC8gbnI7XG4gICAgICB0LmNbaV0uc2hpZnQgLT0gZGlzdCAvIG5yO1xuICAgICAgdC5jW2ldLmNoYW5nZSAtPSBkaXN0IC0gZGlzdCAvIG5yO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZENoaWxkU3BhY2luZyh0KSB7XG4gICAgdmFyIGQgPSAwO1xuICAgIHZhciBtb2RzdW1kZWx0YSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHQuY3M7IGkrKykge1xuICAgICAgZCArPSB0LmNbaV0uc2hpZnQ7XG4gICAgICBtb2RzdW1kZWx0YSArPSBkICsgdC5jW2ldLmNoYW5nZTtcbiAgICAgIHQuY1tpXS5tb2QgKz0gbW9kc3VtZGVsdGE7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlSVlMKGxvdywgaW5kZXgsIGloKSB7XG4gICAgd2hpbGUgKGloICE9PSBudWxsICYmIGxvdyA+PSBpaC5sb3cpIHtcbiAgICAgIGloID0gaWgubnh0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsb3c6IGxvdyxcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIG54dDogaWhcbiAgICB9O1xuICB9IC8vIGRvIGxheW91dFxuXG5cbiAgbGF5ZXIocm9vdCwgaXNIb3Jpem9udGFsKTtcbiAgdmFyIHd0ID0gV3JhcHBlZFRyZWUuZnJvbU5vZGUocm9vdCwgaXNIb3Jpem9udGFsKTtcbiAgZmlyc3RXYWxrKHd0KTtcbiAgc2Vjb25kV2Fsayh3dCwgMCk7XG4gIGNvbnZlcnRCYWNrKHd0LCByb290LCBpc0hvcml6b250YWwpO1xuICBub3JtYWxpemUocm9vdCwgaXNIb3Jpem9udGFsKTtcbiAgcmV0dXJuIHJvb3Q7XG59O1xuXG4vKioqLyB9KSxcbi8qIDExNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZShzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTsgc3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViQ2xhc3M7IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIFRyZWVMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblxudmFyIGRlbmRyb2dyYW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSk7XG5cbnZhciBkb1RyZWVMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblxudmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgRGVuZHJvZ3JhbUxheW91dCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1RyZWVMYXlvdXQpIHtcbiAgX2luaGVyaXRzTG9vc2UoRGVuZHJvZ3JhbUxheW91dCwgX1RyZWVMYXlvdXQpO1xuXG4gIGZ1bmN0aW9uIERlbmRyb2dyYW1MYXlvdXQoKSB7XG4gICAgcmV0dXJuIF9UcmVlTGF5b3V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBEZW5kcm9ncmFtTGF5b3V0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uZXhlY3V0ZSA9IGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgdmFyIG1lID0gdGhpcztcbiAgICBtZS5yb290Tm9kZS53aWR0aCA9IDA7XG4gICAgcmV0dXJuIGRvVHJlZUxheW91dChtZS5yb290Tm9kZSwgbWUub3B0aW9ucywgZGVuZHJvZ3JhbSk7XG4gIH07XG5cbiAgcmV0dXJuIERlbmRyb2dyYW1MYXlvdXQ7XG59KFRyZWVMYXlvdXQpO1xuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge307XG5cbmZ1bmN0aW9uIGRlbmRyb2dyYW1MYXlvdXQocm9vdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gdXRpbC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHJldHVybiBuZXcgRGVuZHJvZ3JhbUxheW91dChyb290LCBvcHRpb25zKS5leGVjdXRlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVuZHJvZ3JhbUxheW91dDtcblxuLyoqKi8gfSksXG4vKiAxMTUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuLy8gd3JhcCB0cmVlIG5vZGVcbi8vIFRPRE8gY29uc2lkZXJpbmcgc2l6ZVxudmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG5mdW5jdGlvbiBXcmFwcGVkVHJlZShoZWlnaHQsIGNoaWxkcmVuKSB7XG4gIGlmIChoZWlnaHQgPT09IHZvaWQgMCkge1xuICAgIGhlaWdodCA9IDA7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IHZvaWQgMCkge1xuICAgIGNoaWxkcmVuID0gW107XG4gIH1cblxuICB2YXIgbWUgPSB0aGlzO1xuICBtZS54ID0gbWUueSA9IDA7XG4gIG1lLmxlZnRDaGlsZCA9IG1lLnJpZ2h0Q2hpbGQgPSBudWxsO1xuICBtZS5oZWlnaHQgPSAwO1xuICBtZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xufVxuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBpc0hvcml6b250YWw6IHRydWUsXG4gIG5vZGVTZXA6IDIwLFxuICBub2RlU2l6ZTogMjAsXG4gIHJhbmtTZXA6IDIwMCxcbiAgc3ViVHJlZVNlcDogMTBcbn07XG5cbmZ1bmN0aW9uIGNvbnZlcnRCYWNrKGNvbnZlcnRlZFxuLyogV3JhcHBlZFRyZWUgKi9cbiwgcm9vdFxuLyogVHJlZU5vZGUgKi9cbiwgaXNIb3Jpem9udGFsKSB7XG4gIGlmIChpc0hvcml6b250YWwpIHtcbiAgICByb290LnggPSBjb252ZXJ0ZWQueDtcbiAgICByb290LnkgPSBjb252ZXJ0ZWQueTtcbiAgfSBlbHNlIHtcbiAgICByb290LnggPSBjb252ZXJ0ZWQueTtcbiAgICByb290LnkgPSBjb252ZXJ0ZWQueDtcbiAgfVxuXG4gIGNvbnZlcnRlZC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaSkge1xuICAgIGNvbnZlcnRCYWNrKGNoaWxkLCByb290LmNoaWxkcmVuW2ldLCBpc0hvcml6b250YWwpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgb3B0aW9ucyA9IHV0aWwuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpO1xuICB2YXIgbWF4RGVwdGggPSAwO1xuXG4gIGZ1bmN0aW9uIHdyYXBwZWRUcmVlRnJvbU5vZGUobikge1xuICAgIGlmICghbikgcmV0dXJuIG51bGw7XG4gICAgbi53aWR0aCA9IDA7XG5cbiAgICBpZiAobi5kZXB0aCAmJiBuLmRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgIG1heERlcHRoID0gbi5kZXB0aDsgLy8gZ2V0IHRoZSBtYXggZGVwdGhcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBuLmNoaWxkcmVuO1xuICAgIHZhciBjaGlsZHJlbkNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoO1xuICAgIHZhciB0ID0gbmV3IFdyYXBwZWRUcmVlKG4uaGVpZ2h0LCBbXSk7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQsIGkpIHtcbiAgICAgIHZhciBjaGlsZFdUID0gd3JhcHBlZFRyZWVGcm9tTm9kZShjaGlsZCk7XG4gICAgICB0LmNoaWxkcmVuLnB1c2goY2hpbGRXVCk7XG5cbiAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgIC8vIHQubGVmdENoaWxkID0gY2hpbGRXVC5sZWZ0Q2hpbGQgPyBjaGlsZFdULmxlZnRDaGlsZCA6IGNoaWxkV1RcbiAgICAgICAgdC5sZWZ0Q2hpbGQgPSBjaGlsZFdUO1xuICAgICAgfVxuXG4gICAgICBpZiAoaSA9PT0gY2hpbGRyZW5Db3VudCAtIDEpIHtcbiAgICAgICAgLy8gdC5yaWdodENoaWxkID0gY2hpbGRXVC5yaWdodENoaWxkID8gY2hpbGRXVC5yaWdodENoaWxkIDogY2hpbGRXVFxuICAgICAgICB0LnJpZ2h0Q2hpbGQgPSBjaGlsZFdUO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHQub3JpZ2luTm9kZSA9IG47XG4gICAgdC5pc0xlYWYgPSBuLmlzTGVhZigpO1xuICAgIHJldHVybiB0O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RHJhd2luZ0RlcHRoKHQpIHtcbiAgICBpZiAodC5pc0xlYWYgfHwgdC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHQuZHJhd2luZ0RlcHRoID0gbWF4RGVwdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkZXB0aHMgPSB0LmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIGdldERyYXdpbmdEZXB0aChjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBtaW5DaGlsZERlcHRoID0gTWF0aC5taW4uYXBwbHkobnVsbCwgZGVwdGhzKTtcbiAgICAgIHQuZHJhd2luZ0RlcHRoID0gbWluQ2hpbGREZXB0aCAtIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQuZHJhd2luZ0RlcHRoO1xuICB9XG5cbiAgdmFyIHByZXZMZWFmO1xuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uKHQpIHtcbiAgICB0LnggPSB0LmRyYXdpbmdEZXB0aCAqIG9wdGlvbnMucmFua1NlcDtcblxuICAgIGlmICh0LmlzTGVhZikge1xuICAgICAgdC55ID0gMDtcblxuICAgICAgaWYgKHByZXZMZWFmKSB7XG4gICAgICAgIHQueSA9IHByZXZMZWFmLnkgKyBwcmV2TGVhZi5oZWlnaHQgKyBvcHRpb25zLm5vZGVTZXA7XG5cbiAgICAgICAgaWYgKHQub3JpZ2luTm9kZS5wYXJlbnQgIT09IHByZXZMZWFmLm9yaWdpbk5vZGUucGFyZW50KSB7XG4gICAgICAgICAgdC55ICs9IG9wdGlvbnMuc3ViVHJlZVNlcDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmV2TGVhZiA9IHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgcG9zaXRpb24oY2hpbGQpO1xuICAgICAgfSk7XG4gICAgICB0LnkgPSAodC5sZWZ0Q2hpbGQueSArIHQucmlnaHRDaGlsZC55KSAvIDI7XG4gICAgfVxuICB9IC8vIHdyYXAgbm9kZVxuXG5cbiAgdmFyIHd0ID0gd3JhcHBlZFRyZWVGcm9tTm9kZShyb290KTsgLy8gZ2V0IGRlcHRoIGZvciBkcmF3aW5nXG5cbiAgZ2V0RHJhd2luZ0RlcHRoKHd0KTsgLy8gZ2V0IHBvc2l0aW9uXG5cbiAgcG9zaXRpb24od3QpOyAvLyBnZXQgeCwgeVxuXG4gIGNvbnZlcnRCYWNrKHd0LCByb290LCBvcHRpb25zLmlzSG9yaXpvbnRhbCk7XG4gIHJldHVybiByb290O1xufTtcblxuLyoqKi8gfSksXG4vKiAxMTYgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7IHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOyBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBUcmVlTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbnZhciBpbmRlbnRlZFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNyk7XG5cbnZhciBzZXBhcmF0ZVRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblxudmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXG52YXIgVkFMSURfRElSRUNUSU9OUyA9IFsnTFInLCAvLyBsZWZ0IHRvIHJpZ2h0XG4nUkwnLCAvLyByaWdodCB0byBsZWZ0XG4nSCcgLy8gaG9yaXpvbnRhbFxuXTtcbnZhciBERUZBVUxUX0RJUkVDVElPTiA9IFZBTElEX0RJUkVDVElPTlNbMF07XG5cbnZhciBJbmRlbnRlZExheW91dCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1RyZWVMYXlvdXQpIHtcbiAgX2luaGVyaXRzTG9vc2UoSW5kZW50ZWRMYXlvdXQsIF9UcmVlTGF5b3V0KTtcblxuICBmdW5jdGlvbiBJbmRlbnRlZExheW91dCgpIHtcbiAgICByZXR1cm4gX1RyZWVMYXlvdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IEluZGVudGVkTGF5b3V0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uZXhlY3V0ZSA9IGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgdmFyIG1lID0gdGhpcztcbiAgICB2YXIgb3B0aW9ucyA9IG1lLm9wdGlvbnM7XG4gICAgdmFyIHJvb3QgPSBtZS5yb290Tm9kZTtcbiAgICBvcHRpb25zLmlzSG9yaXpvbnRhbCA9IHRydWU7IC8vIGRlZmF1bHQgaW5kZW50IDIwIGFuZCBzaW5rIGZpcnN0IGNoaWxkcmVuO1xuXG4gICAgdmFyIF9vcHRpb25zJGluZGVudCA9IG9wdGlvbnMuaW5kZW50LFxuICAgICAgICBpbmRlbnQgPSBfb3B0aW9ucyRpbmRlbnQgPT09IHZvaWQgMCA/IDIwIDogX29wdGlvbnMkaW5kZW50LFxuICAgICAgICBfb3B0aW9ucyRkcm9wQ2FwID0gb3B0aW9ucy5kcm9wQ2FwLFxuICAgICAgICBkcm9wQ2FwID0gX29wdGlvbnMkZHJvcENhcCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGRyb3BDYXA7XG4gICAgdmFyIGRpcmVjdGlvbiA9IG9wdGlvbnMuZGlyZWN0aW9uIHx8IERFRkFVTFRfRElSRUNUSU9OO1xuXG4gICAgaWYgKGRpcmVjdGlvbiAmJiBWQUxJRF9ESVJFQ1RJT05TLmluZGV4T2YoZGlyZWN0aW9uKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGRpcmVjdGlvbjogXCIgKyBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24gPT09IFZBTElEX0RJUkVDVElPTlNbMF0pIHtcbiAgICAgIC8vIExSXG4gICAgICBpbmRlbnRlZFRyZWUocm9vdCwgaW5kZW50LCBkcm9wQ2FwKTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gVkFMSURfRElSRUNUSU9OU1sxXSkge1xuICAgICAgLy8gUkxcbiAgICAgIGluZGVudGVkVHJlZShyb290LCBpbmRlbnQsIGRyb3BDYXApO1xuICAgICAgcm9vdC5yaWdodDJsZWZ0KCk7XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFZBTElEX0RJUkVDVElPTlNbMl0pIHtcbiAgICAgIC8vIEhcbiAgICAgIC8vIHNlcGFyYXRlIGludG8gbGVmdCBhbmQgcmlnaHQgdHJlZXNcbiAgICAgIHZhciBfc2VwYXJhdGVUcmVlID0gc2VwYXJhdGVUcmVlKHJvb3QsIG9wdGlvbnMpLFxuICAgICAgICAgIGxlZnQgPSBfc2VwYXJhdGVUcmVlLmxlZnQsXG4gICAgICAgICAgcmlnaHQgPSBfc2VwYXJhdGVUcmVlLnJpZ2h0O1xuXG4gICAgICBpbmRlbnRlZFRyZWUobGVmdCwgaW5kZW50LCBkcm9wQ2FwKTtcbiAgICAgIGxlZnQucmlnaHQybGVmdCgpO1xuICAgICAgaW5kZW50ZWRUcmVlKHJpZ2h0LCBpbmRlbnQsIGRyb3BDYXApO1xuICAgICAgdmFyIGJib3ggPSBsZWZ0LmdldEJvdW5kaW5nQm94KCk7XG4gICAgICByaWdodC50cmFuc2xhdGUoYmJveC53aWR0aCwgMCk7XG4gICAgICByb290LnggPSByaWdodC54IC0gcm9vdC53aWR0aCAvIDI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH07XG5cbiAgcmV0dXJuIEluZGVudGVkTGF5b3V0O1xufShUcmVlTGF5b3V0KTtcblxudmFyIERFRkFVTFRfT1BUSU9OUyA9IHt9O1xuXG5mdW5jdGlvbiBpbmRlbnRlZExheW91dChyb290LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSB1dGlsLmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBvcHRpb25zKTtcbiAgcmV0dXJuIG5ldyBJbmRlbnRlZExheW91dChyb290LCBvcHRpb25zKS5leGVjdXRlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZW50ZWRMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogMTE3ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmZ1bmN0aW9uIHBvc2l0aW9uTm9kZShub2RlLCBwcmV2aW91c05vZGUsIGluZGVudCwgZHJvcENhcCkge1xuICAvLyAgY2FjdWxhdGUgdGhlIG5vZGUncyBob3Jpem9udGFsIG9mZnNldCBEWCwgZHgncyB0eXBlIG1pZ2h0IGJlIG51bWJlciBvciBmdW5jdGlvblxuICB2YXIgZGlzcGxhY2VtZW50WCA9IHR5cGVvZiBpbmRlbnQgPT09ICdmdW5jdGlvbicgPyBpbmRlbnQobm9kZSkgOiBpbmRlbnQgKiBub2RlLmRlcHRoO1xuXG4gIGlmICghZHJvcENhcCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAobm9kZS5pZCA9PT0gbm9kZS5wYXJlbnQuY2hpbGRyZW5bMF0uaWQpIHtcbiAgICAgICAgbm9kZS54ICs9IGRpc3BsYWNlbWVudFg7XG4gICAgICAgIG5vZGUueSA9IHByZXZpb3VzTm9kZSA/IHByZXZpb3VzTm9kZS55IDogMDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHsvLyBza2lwIHRvIG5vcm1hbCB3aGVuIGEgbm9kZSBoYXMgbm8gcGFyZW50XG4gICAgfVxuICB9XG5cbiAgbm9kZS54ICs9IGRpc3BsYWNlbWVudFg7XG4gIG5vZGUueSA9IHByZXZpb3VzTm9kZSA/IHByZXZpb3VzTm9kZS55ICsgcHJldmlvdXNOb2RlLmhlaWdodCA6IDA7XG4gIHJldHVybjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgaW5kZW50LCBkcm9wQ2FwKSB7XG4gIHZhciBwcmV2aW91c05vZGUgPSBudWxsO1xuICByb290LmVhY2hOb2RlKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcG9zaXRpb25Ob2RlKG5vZGUsIHByZXZpb3VzTm9kZSwgaW5kZW50LCBkcm9wQ2FwKTtcbiAgICBwcmV2aW91c05vZGUgPSBub2RlO1xuICB9KTtcbn07XG5cbi8qKiovIH0pLFxuLyogMTE4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpOyBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzczsgc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgVHJlZUxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG52YXIgbWluZG1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMTE5KTtcblxudmFyIGRvVHJlZUxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xuXG52YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cbnZhciBNaW5kbWFwTGF5b3V0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfVHJlZUxheW91dCkge1xuICBfaW5oZXJpdHNMb29zZShNaW5kbWFwTGF5b3V0LCBfVHJlZUxheW91dCk7XG5cbiAgZnVuY3Rpb24gTWluZG1hcExheW91dCgpIHtcbiAgICByZXR1cm4gX1RyZWVMYXlvdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IE1pbmRtYXBMYXlvdXQucHJvdG90eXBlO1xuXG4gIF9wcm90by5leGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZSgpIHtcbiAgICB2YXIgbWUgPSB0aGlzO1xuICAgIHJldHVybiBkb1RyZWVMYXlvdXQobWUucm9vdE5vZGUsIG1lLm9wdGlvbnMsIG1pbmRtYXApO1xuICB9O1xuXG4gIHJldHVybiBNaW5kbWFwTGF5b3V0O1xufShUcmVlTGF5b3V0KTtcblxudmFyIERFRkFVTFRfT1BUSU9OUyA9IHt9O1xuXG5mdW5jdGlvbiBtaW5kbWFwTGF5b3V0KHJvb3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IHV0aWwuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMpO1xuICByZXR1cm4gbmV3IE1pbmRtYXBMYXlvdXQocm9vdCwgb3B0aW9ucykuZXhlY3V0ZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbmRtYXBMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogMTE5ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblxuZnVuY3Rpb24gc2Vjb25kV2Fsayhub2RlLCBvcHRpb25zKSB7XG4gIHZhciB0b3RhbEhlaWdodCA9IDA7XG5cbiAgaWYgKCFub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHRvdGFsSGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICB0b3RhbEhlaWdodCArPSBzZWNvbmRXYWxrKGMsIG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgbm9kZS5fc3ViVHJlZVNlcCA9IG9wdGlvbnMuZ2V0U3ViVHJlZVNlcChub2RlLmRhdGEpO1xuICBub2RlLnRvdGFsSGVpZ2h0ID0gTWF0aC5tYXgobm9kZS5oZWlnaHQsIHRvdGFsSGVpZ2h0KSArIDIgKiBub2RlLl9zdWJUcmVlU2VwO1xuICByZXR1cm4gbm9kZS50b3RhbEhlaWdodDtcbn1cblxuZnVuY3Rpb24gdGhpcmRXYWxrKG5vZGUpIHtcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICBpZiAobGVuKSB7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgdGhpcmRXYWxrKGMpO1xuICAgIH0pO1xuICAgIHZhciBmaXJzdCA9IGNoaWxkcmVuWzBdO1xuICAgIHZhciBsYXN0ID0gY2hpbGRyZW5bbGVuIC0gMV07XG4gICAgdmFyIGNoaWxkcmVuSGVpZ2h0ID0gbGFzdC55IC0gZmlyc3QueSArIGxhc3QuaGVpZ2h0O1xuICAgIHZhciBjaGlsZHJlblRvdGFsSGVpZ2h0ID0gMDtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgY2hpbGRyZW5Ub3RhbEhlaWdodCArPSBjaGlsZC50b3RhbEhlaWdodDtcbiAgICB9KTtcblxuICAgIGlmIChjaGlsZHJlbkhlaWdodCA+IG5vZGUuaGVpZ2h0KSB7XG4gICAgICAvLyDlvZPlrZDoioLngrnmgLvpq5jluqblpKfkuo7niLboioLngrnpq5jluqZcbiAgICAgIG5vZGUueSA9IGZpcnN0LnkgKyBjaGlsZHJlbkhlaWdodCAvIDIgLSBub2RlLmhlaWdodCAvIDI7XG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDEgfHwgbm9kZS5oZWlnaHQgPiBjaGlsZHJlblRvdGFsSGVpZ2h0KSB7XG4gICAgICAvLyDlpJrkuo7kuIDkuKrlrZDoioLngrnmiJbogIXniLboioLngrnlpKfkuo7miYDmnInlrZDoioLngrnnmoTmgLvpq5jluqZcbiAgICAgIHZhciBvZmZzZXQgPSBub2RlLnkgKyAobm9kZS5oZWlnaHQgLSBjaGlsZHJlbkhlaWdodCkgLyAyIC0gZmlyc3QueTtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgYy50cmFuc2xhdGUoMCwgb2Zmc2V0KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlj6rmnInkuIDkuKrlrZDoioLngrlcbiAgICAgIG5vZGUueSA9IChmaXJzdC55ICsgZmlyc3QuaGVpZ2h0IC8gMiArIGxhc3QueSArIGxhc3QuaGVpZ2h0IC8gMikgLyAyIC0gbm9kZS5oZWlnaHQgLyAyO1xuICAgIH1cbiAgfVxufVxuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBnZXRTdWJUcmVlU2VwOiBmdW5jdGlvbiBnZXRTdWJUcmVlU2VwKCkge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChyb290LCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBvcHRpb25zID0gdXRpbC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyk7XG4gIHJvb3QucGFyZW50ID0ge1xuICAgIHg6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIHk6IDBcbiAgfTsgLy8gZmlyc3Qgd2Fsa1xuXG4gIHJvb3QuQkZUcmF2ZXJzZShmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGUueCA9IG5vZGUucGFyZW50LnggKyBub2RlLnBhcmVudC53aWR0aDsgLy8gc2ltcGx5IGdldCB4XG4gIH0pO1xuICByb290LnBhcmVudCA9IG51bGw7IC8vIHNlY29uZCB3YWxrXG5cbiAgc2Vjb25kV2Fsayhyb290LCBvcHRpb25zKTsgLy8gYXNzaWduIHN1YiB0cmVlIHRvdGFsSGVpZ2h0XG4gIC8vIGFkanVzdGluZ1xuICAvLyBzZXBhcmF0aW5nIG5vZGVzXG5cbiAgcm9vdC5zdGFydFkgPSAwO1xuICByb290LnkgPSByb290LnRvdGFsSGVpZ2h0IC8gMiAtIHJvb3QuaGVpZ2h0IC8gMjtcbiAgcm9vdC5lYWNoTm9kZShmdW5jdGlvbiAobm9kZSkge1xuICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG4gICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgIGlmIChsZW4pIHtcbiAgICAgIHZhciBmaXJzdCA9IGNoaWxkcmVuWzBdO1xuICAgICAgZmlyc3Quc3RhcnRZID0gbm9kZS5zdGFydFkgKyBub2RlLl9zdWJUcmVlU2VwO1xuXG4gICAgICBpZiAobGVuID09PSAxKSB7XG4gICAgICAgIGZpcnN0LnkgPSBub2RlLnkgKyBub2RlLmhlaWdodCAvIDIgLSBmaXJzdC5oZWlnaHQgLyAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyc3QueSA9IGZpcnN0LnN0YXJ0WSArIGZpcnN0LnRvdGFsSGVpZ2h0IC8gMiAtIGZpcnN0LmhlaWdodCAvIDI7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIHZhciBjID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgYy5zdGFydFkgPSBjaGlsZHJlbltpIC0gMV0uc3RhcnRZICsgY2hpbGRyZW5baSAtIDFdLnRvdGFsSGVpZ2h0O1xuICAgICAgICAgIGMueSA9IGMuc3RhcnRZICsgYy50b3RhbEhlaWdodCAvIDIgLSBjLmhlaWdodCAvIDI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pOyAvLyB0aGlyZCB3YWxrXG5cbiAgdGhpcmRXYWxrKHJvb3QpO1xufTtcblxuLyoqKi8gfSlcbi8qKioqKiovIF0pO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oaWVyYXJjaHkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_hierarchy@0.6.8@@antv/hierarchy/build/hierarchy.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/index.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/index.js ***! \***************************************************************************/ /*! exports provided: registerLayout, unRegisterLayout, getLayoutByName, Layout, Layouts, GridLayout, RandomLayout, GForceLayout, ForceLayout, CircularLayout, DagreLayout, RadialLayout, ConcentricLayout, MDSLayout, FruchtermanLayout, FruchtermanGPULayout, GForceGPULayout, ComboForceLayout, ForceAtlas2Layout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _registy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registy */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/registy/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return _registy__WEBPACK_IMPORTED_MODULE_0__[\"registerLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unRegisterLayout\", function() { return _registy__WEBPACK_IMPORTED_MODULE_0__[\"unRegisterLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayoutByName\", function() { return _registy__WEBPACK_IMPORTED_MODULE_0__[\"getLayoutByName\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layout */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layouts\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"Layouts\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GridLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"GridLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RandomLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"RandomLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"GForceLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ForceLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CircularLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"CircularLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DagreLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"DagreLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"RadialLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConcentricLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ConcentricLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MDSLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"MDSLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"FruchtermanLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanGPULayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"FruchtermanGPULayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceGPULayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"GForceGPULayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComboForceLayout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ComboForceLayout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceAtlas2Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_1__[\"ForceAtlas2Layout\"]; });\n\n\n// register layout\n\n// layout, layout types file, worker\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9pbmRleC5qcz82MTEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBOEU7QUFDOUU7QUFDNkQ7QUFDN0Q7QUFDeUI7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyTGF5b3V0LCB1blJlZ2lzdGVyTGF5b3V0LCBnZXRMYXlvdXRCeU5hbWUgfSBmcm9tIFwiLi9yZWdpc3R5XCI7XG4vLyByZWdpc3RlciBsYXlvdXRcbmV4cG9ydCB7IHJlZ2lzdGVyTGF5b3V0LCB1blJlZ2lzdGVyTGF5b3V0LCBnZXRMYXlvdXRCeU5hbWUgfTtcbi8vIGxheW91dCwgbGF5b3V0IHR5cGVzIGZpbGUsIHdvcmtlclxuZXhwb3J0ICogZnJvbSBcIi4vbGF5b3V0XCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js ***! \*********************************************************************************/ /*! exports provided: Base */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return Base; });\nclass Base {\n constructor() {\n this.nodes = [];\n this.edges = [];\n this.combos = [];\n this.positions = [];\n this.destroyed = false;\n this.onLayoutEnd = () => { };\n }\n layout(data) {\n this.init(data);\n return this.execute(true);\n }\n init(data) {\n this.nodes = data.nodes || [];\n this.edges = data.edges || [];\n this.combos = data.combos || [];\n }\n execute(reloadData) { }\n executeWithWorker() { }\n getDefaultCfg() {\n return {};\n }\n updateCfg(cfg) {\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n getType() {\n return 'base';\n }\n destroy() {\n this.nodes = null;\n this.edges = null;\n this.combos = null;\n this.positions = null;\n this.destroyed = true;\n }\n}\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvYmFzZS5qcz80ZGNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jb21ib3MgPSBbXTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICB9XG4gICAgbGF5b3V0KGRhdGEpIHtcbiAgICAgICAgdGhpcy5pbml0KGRhdGEpO1xuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlKHRydWUpO1xuICAgIH1cbiAgICBpbml0KGRhdGEpIHtcbiAgICAgICAgdGhpcy5ub2RlcyA9IGRhdGEubm9kZXMgfHwgW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBkYXRhLmVkZ2VzIHx8IFtdO1xuICAgICAgICB0aGlzLmNvbWJvcyA9IGRhdGEuY29tYm9zIHx8IFtdO1xuICAgIH1cbiAgICBleGVjdXRlKHJlbG9hZERhdGEpIHsgfVxuICAgIGV4ZWN1dGVXaXRoV29ya2VyKCkgeyB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICB1cGRhdGVDZmcoY2ZnKSB7XG4gICAgICAgIGlmIChjZmcpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgY2ZnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gJ2Jhc2UnO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5vZGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lZGdlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuY29tYm9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/circular.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/circular.js ***! \*************************************************************************************/ /*! exports provided: CircularLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CircularLayout\", function() { return CircularLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\nfunction initHierarchy(nodes, edges, nodeMap, directed) {\n nodes.forEach((_, i) => {\n nodes[i].children = [];\n nodes[i].parent = [];\n });\n if (directed) {\n edges.forEach((e) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n let sourceIdx = 0;\n if (source) {\n sourceIdx = nodeMap[source];\n }\n let targetIdx = 0;\n if (target) {\n targetIdx = nodeMap[target];\n }\n const child = nodes[sourceIdx].children;\n const parent = nodes[targetIdx].parent;\n child.push(nodes[targetIdx].id);\n parent.push(nodes[sourceIdx].id);\n });\n }\n else {\n edges.forEach((e) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n let sourceIdx = 0;\n if (source) {\n sourceIdx = nodeMap[source];\n }\n let targetIdx = 0;\n if (target) {\n targetIdx = nodeMap[target];\n }\n const sourceChildren = nodes[sourceIdx].children;\n const targetChildren = nodes[targetIdx].children;\n sourceChildren.push(nodes[targetIdx].id);\n targetChildren.push(nodes[sourceIdx].id);\n });\n }\n}\nfunction connect(a, b, edges) {\n const m = edges.length;\n for (let i = 0; i < m; i++) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'target');\n if ((a.id === source && b.id === target) ||\n (b.id === source && a.id === target)) {\n return true;\n }\n }\n return false;\n}\nfunction compareDegree(a, b) {\n const aDegree = a.degree;\n const bDegree = b.degree;\n if (aDegree < bDegree) {\n return -1;\n }\n if (aDegree > bDegree) {\n return 1;\n }\n return 0;\n}\n/**\n * 圆形布局\n */\nclass CircularLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 固定半径,若设置了 radius,则 startRadius 与 endRadius 不起效 */\n this.radius = null;\n /** 起始半径 */\n this.startRadius = null;\n /** 终止半径 */\n this.endRadius = null;\n /** 起始角度 */\n this.startAngle = 0;\n /** 终止角度 */\n this.endAngle = 2 * Math.PI;\n /** 是否顺时针 */\n this.clockwise = true;\n /** 节点在环上分成段数(几个段将均匀分布),在 endRadius - startRadius != 0 时生效 */\n this.divisions = 1;\n /** 节点在环上排序的依据,可选: 'topology', 'degree', 'null' */\n this.ordering = null;\n /** how many 2*pi from first to last nodes */\n this.angleRatio = 1;\n this.nodes = [];\n this.edges = [];\n this.nodeMap = {};\n this.degrees = [];\n this.width = 300;\n this.height = 300;\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n radius: null,\n startRadius: null,\n endRadius: null,\n startAngle: 0,\n endAngle: 2 * Math.PI,\n clockwise: true,\n divisions: 1,\n ordering: null,\n angleRatio: 1\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n if (n === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (n === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n let radius = self.radius;\n let startRadius = self.startRadius;\n let endRadius = self.endRadius;\n const divisions = self.divisions;\n const startAngle = self.startAngle;\n const endAngle = self.endAngle;\n const angleStep = (endAngle - startAngle) / n;\n // layout\n const nodeMap = {};\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n const degrees = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getDegree\"])(nodes.length, nodeMap, edges);\n self.degrees = degrees;\n if (!radius && !startRadius && !endRadius) {\n radius = self.height > self.width ? self.width / 2 : self.height / 2;\n }\n else if (!startRadius && endRadius) {\n startRadius = endRadius;\n }\n else if (startRadius && !endRadius) {\n endRadius = startRadius;\n }\n const angleRatio = self.angleRatio;\n const astep = angleStep * angleRatio;\n const ordering = self.ordering;\n let layoutNodes = [];\n if (ordering === \"topology\") {\n // layout according to the topology\n layoutNodes = self.topologyOrdering();\n }\n else if (ordering === \"topology-directed\") {\n // layout according to the topology\n layoutNodes = self.topologyOrdering(true);\n }\n else if (ordering === \"degree\") {\n // layout according to the descent order of degrees\n layoutNodes = self.degreeOrdering();\n }\n else {\n // layout according to the original order in the data.nodes\n layoutNodes = nodes;\n }\n const clockwise = self.clockwise;\n const divN = Math.ceil(n / divisions); // node number in each division\n for (let i = 0; i < n; ++i) {\n let r = radius;\n if (!r && startRadius !== null && endRadius !== null) {\n r = startRadius + (i * (endRadius - startRadius)) / (n - 1);\n }\n if (!r) {\n r = 10 + (i * 100) / (n - 1);\n }\n let angle = startAngle +\n (i % divN) * astep +\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n if (!clockwise) {\n angle =\n endAngle -\n (i % divN) * astep -\n ((2 * Math.PI) / divisions) * Math.floor(i / divN);\n }\n layoutNodes[i].x = center[0] + Math.cos(angle) * r;\n layoutNodes[i].y = center[1] + Math.sin(angle) * r;\n layoutNodes[i].weight = degrees[i];\n }\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes: layoutNodes,\n edges: this.edges\n };\n }\n /**\n * 根据节点的拓扑结构排序\n * @return {array} orderedNodes 排序后的结果\n */\n topologyOrdering(directed = false) {\n const self = this;\n const degrees = self.degrees;\n const edges = self.edges;\n const nodes = self.nodes;\n const cnodes = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(nodes);\n const nodeMap = self.nodeMap;\n const orderedCNodes = [cnodes[0]];\n const resNodes = [nodes[0]];\n const pickFlags = [];\n const n = nodes.length;\n pickFlags[0] = true;\n initHierarchy(cnodes, edges, nodeMap, directed);\n let k = 0;\n cnodes.forEach((cnode, i) => {\n if (i !== 0) {\n if ((i === n - 1 ||\n degrees[i] !== degrees[i + 1] ||\n connect(orderedCNodes[k], cnode, edges)) &&\n !pickFlags[i]) {\n orderedCNodes.push(cnode);\n resNodes.push(nodes[nodeMap[cnode.id]]);\n pickFlags[i] = true;\n k++;\n }\n else {\n const children = orderedCNodes[k].children;\n let foundChild = false;\n for (let j = 0; j < children.length; j++) {\n const childIdx = nodeMap[children[j]];\n if (degrees[childIdx] === degrees[i] && !pickFlags[childIdx]) {\n orderedCNodes.push(cnodes[childIdx]);\n resNodes.push(nodes[nodeMap[cnodes[childIdx].id]]);\n pickFlags[childIdx] = true;\n foundChild = true;\n break;\n }\n }\n let ii = 0;\n while (!foundChild) {\n if (!pickFlags[ii]) {\n orderedCNodes.push(cnodes[ii]);\n resNodes.push(nodes[nodeMap[cnodes[ii].id]]);\n pickFlags[ii] = true;\n foundChild = true;\n }\n ii++;\n if (ii === n) {\n break;\n }\n }\n }\n }\n });\n return resNodes;\n }\n /**\n * 根据节点度数大小排序\n * @return {array} orderedNodes 排序后的结果\n */\n degreeOrdering() {\n const self = this;\n const nodes = self.nodes;\n const orderedNodes = [];\n const degrees = self.degrees;\n nodes.forEach((node, i) => {\n node.degree = degrees[i];\n orderedNodes.push(node);\n });\n orderedNodes.sort(compareDegree);\n return orderedNodes;\n }\n getType() {\n return \"circular\";\n }\n}\n//# sourceMappingURL=circular.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvY2lyY3VsYXIuanM/YTE0YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzhCO0FBQzhCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwyQkFBMkIsNkRBQWU7QUFDMUMsMkJBQTJCLDZEQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNkRBQWU7QUFDMUMsMkJBQTJCLDZEQUFlO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCLHVCQUF1Qiw2REFBZTtBQUN0Qyx1QkFBdUIsNkRBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sNkJBQTZCLDBDQUFJO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esd0JBQXdCLHVEQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbURBQUs7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMscUJBQXFCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2NpcmN1bGFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IHJhbmRvbSBsYXlvdXRcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuL2Jhc2VcIjtcbmltcG9ydCB7IGdldERlZ3JlZSwgY2xvbmUsIGdldEVkZ2VUZXJtaW5hbCB9IGZyb20gXCIuLi91dGlsXCI7XG5mdW5jdGlvbiBpbml0SGllcmFyY2h5KG5vZGVzLCBlZGdlcywgbm9kZU1hcCwgZGlyZWN0ZWQpIHtcbiAgICBub2Rlcy5mb3JFYWNoKChfLCBpKSA9PiB7XG4gICAgICAgIG5vZGVzW2ldLmNoaWxkcmVuID0gW107XG4gICAgICAgIG5vZGVzW2ldLnBhcmVudCA9IFtdO1xuICAgIH0pO1xuICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICBlZGdlcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGxldCBzb3VyY2VJZHggPSAwO1xuICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHNvdXJjZUlkeCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0YXJnZXRJZHggPSAwO1xuICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldElkeCA9IG5vZGVNYXBbdGFyZ2V0XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZXNbc291cmNlSWR4XS5jaGlsZHJlbjtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGVzW3RhcmdldElkeF0ucGFyZW50O1xuICAgICAgICAgICAgY2hpbGQucHVzaChub2Rlc1t0YXJnZXRJZHhdLmlkKTtcbiAgICAgICAgICAgIHBhcmVudC5wdXNoKG5vZGVzW3NvdXJjZUlkeF0uaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgbGV0IHNvdXJjZUlkeCA9IDA7XG4gICAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlSWR4ID0gbm9kZU1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRhcmdldElkeCA9IDA7XG4gICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0SWR4ID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc291cmNlQ2hpbGRyZW4gPSBub2Rlc1tzb3VyY2VJZHhdLmNoaWxkcmVuO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q2hpbGRyZW4gPSBub2Rlc1t0YXJnZXRJZHhdLmNoaWxkcmVuO1xuICAgICAgICAgICAgc291cmNlQ2hpbGRyZW4ucHVzaChub2Rlc1t0YXJnZXRJZHhdLmlkKTtcbiAgICAgICAgICAgIHRhcmdldENoaWxkcmVuLnB1c2gobm9kZXNbc291cmNlSWR4XS5pZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbm5lY3QoYSwgYiwgZWRnZXMpIHtcbiAgICBjb25zdCBtID0gZWRnZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlZGdlc1tpXSwgJ3NvdXJjZScpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZWRnZXNbaV0sICd0YXJnZXQnKTtcbiAgICAgICAgaWYgKChhLmlkID09PSBzb3VyY2UgJiYgYi5pZCA9PT0gdGFyZ2V0KSB8fFxuICAgICAgICAgICAgKGIuaWQgPT09IHNvdXJjZSAmJiBhLmlkID09PSB0YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBjb21wYXJlRGVncmVlKGEsIGIpIHtcbiAgICBjb25zdCBhRGVncmVlID0gYS5kZWdyZWU7XG4gICAgY29uc3QgYkRlZ3JlZSA9IGIuZGVncmVlO1xuICAgIGlmIChhRGVncmVlIDwgYkRlZ3JlZSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChhRGVncmVlID4gYkRlZ3JlZSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG4vKipcbiAqIOWchuW9ouW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgQ2lyY3VsYXJMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiDlm7rlrprljYrlvoTvvIzoi6Xorr7nva7kuoYgcmFkaXVz77yM5YiZIHN0YXJ0UmFkaXVzIOS4jiBlbmRSYWRpdXMg5LiN6LW35pWIICovXG4gICAgICAgIHRoaXMucmFkaXVzID0gbnVsbDtcbiAgICAgICAgLyoqIOi1t+Wni+WNiuW+hCAqL1xuICAgICAgICB0aGlzLnN0YXJ0UmFkaXVzID0gbnVsbDtcbiAgICAgICAgLyoqIOe7iOatouWNiuW+hCAqL1xuICAgICAgICB0aGlzLmVuZFJhZGl1cyA9IG51bGw7XG4gICAgICAgIC8qKiDotbflp4vop5LluqYgKi9cbiAgICAgICAgdGhpcy5zdGFydEFuZ2xlID0gMDtcbiAgICAgICAgLyoqIOe7iOatouinkuW6piAqL1xuICAgICAgICB0aGlzLmVuZEFuZ2xlID0gMiAqIE1hdGguUEk7XG4gICAgICAgIC8qKiDmmK/lkKbpobrml7bpkoggKi9cbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSB0cnVlO1xuICAgICAgICAvKiog6IqC54K55Zyo546v5LiK5YiG5oiQ5q615pWw77yI5Yeg5Liq5q615bCG5Z2H5YyA5YiG5biD77yJ77yM5ZyoIGVuZFJhZGl1cyAtIHN0YXJ0UmFkaXVzICE9IDAg5pe255Sf5pWIICovXG4gICAgICAgIHRoaXMuZGl2aXNpb25zID0gMTtcbiAgICAgICAgLyoqIOiKgueCueWcqOeOr+S4iuaOkuW6j+eahOS+neaNru+8jOWPr+mAiTogJ3RvcG9sb2d5JywgJ2RlZ3JlZScsICdudWxsJyAqL1xuICAgICAgICB0aGlzLm9yZGVyaW5nID0gbnVsbDtcbiAgICAgICAgLyoqIGhvdyBtYW55IDIqcGkgZnJvbSBmaXJzdCB0byBsYXN0IG5vZGVzICovXG4gICAgICAgIHRoaXMuYW5nbGVSYXRpbyA9IDE7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgICAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICAgICAgdGhpcy5kZWdyZWVzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJhZGl1czogbnVsbCxcbiAgICAgICAgICAgIHN0YXJ0UmFkaXVzOiBudWxsLFxuICAgICAgICAgICAgZW5kUmFkaXVzOiBudWxsLFxuICAgICAgICAgICAgc3RhcnRBbmdsZTogMCxcbiAgICAgICAgICAgIGVuZEFuZ2xlOiAyICogTWF0aC5QSSxcbiAgICAgICAgICAgIGNsb2Nrd2lzZTogdHJ1ZSxcbiAgICAgICAgICAgIGRpdmlzaW9uczogMSxcbiAgICAgICAgICAgIG9yZGVyaW5nOiBudWxsLFxuICAgICAgICAgICAgYW5nbGVSYXRpbzogMVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXM7XG4gICAgICAgIGNvbnN0IG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5jZW50ZXIpIHtcbiAgICAgICAgICAgIHNlbGYuY2VudGVyID0gW3NlbGYud2lkdGggLyAyLCBzZWxmLmhlaWdodCAvIDJdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBpZiAobiA9PT0gMSkge1xuICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBjZW50ZXJbMV07XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJhZGl1cyA9IHNlbGYucmFkaXVzO1xuICAgICAgICBsZXQgc3RhcnRSYWRpdXMgPSBzZWxmLnN0YXJ0UmFkaXVzO1xuICAgICAgICBsZXQgZW5kUmFkaXVzID0gc2VsZi5lbmRSYWRpdXM7XG4gICAgICAgIGNvbnN0IGRpdmlzaW9ucyA9IHNlbGYuZGl2aXNpb25zO1xuICAgICAgICBjb25zdCBzdGFydEFuZ2xlID0gc2VsZi5zdGFydEFuZ2xlO1xuICAgICAgICBjb25zdCBlbmRBbmdsZSA9IHNlbGYuZW5kQW5nbGU7XG4gICAgICAgIGNvbnN0IGFuZ2xlU3RlcCA9IChlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpIC8gbjtcbiAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLm5vZGVNYXAgPSBub2RlTWFwO1xuICAgICAgICBjb25zdCBkZWdyZWVzID0gZ2V0RGVncmVlKG5vZGVzLmxlbmd0aCwgbm9kZU1hcCwgZWRnZXMpO1xuICAgICAgICBzZWxmLmRlZ3JlZXMgPSBkZWdyZWVzO1xuICAgICAgICBpZiAoIXJhZGl1cyAmJiAhc3RhcnRSYWRpdXMgJiYgIWVuZFJhZGl1cykge1xuICAgICAgICAgICAgcmFkaXVzID0gc2VsZi5oZWlnaHQgPiBzZWxmLndpZHRoID8gc2VsZi53aWR0aCAvIDIgOiBzZWxmLmhlaWdodCAvIDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXN0YXJ0UmFkaXVzICYmIGVuZFJhZGl1cykge1xuICAgICAgICAgICAgc3RhcnRSYWRpdXMgPSBlbmRSYWRpdXM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhcnRSYWRpdXMgJiYgIWVuZFJhZGl1cykge1xuICAgICAgICAgICAgZW5kUmFkaXVzID0gc3RhcnRSYWRpdXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5nbGVSYXRpbyA9IHNlbGYuYW5nbGVSYXRpbztcbiAgICAgICAgY29uc3QgYXN0ZXAgPSBhbmdsZVN0ZXAgKiBhbmdsZVJhdGlvO1xuICAgICAgICBjb25zdCBvcmRlcmluZyA9IHNlbGYub3JkZXJpbmc7XG4gICAgICAgIGxldCBsYXlvdXROb2RlcyA9IFtdO1xuICAgICAgICBpZiAob3JkZXJpbmcgPT09IFwidG9wb2xvZ3lcIikge1xuICAgICAgICAgICAgLy8gbGF5b3V0IGFjY29yZGluZyB0byB0aGUgdG9wb2xvZ3lcbiAgICAgICAgICAgIGxheW91dE5vZGVzID0gc2VsZi50b3BvbG9neU9yZGVyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3JkZXJpbmcgPT09IFwidG9wb2xvZ3ktZGlyZWN0ZWRcIikge1xuICAgICAgICAgICAgLy8gbGF5b3V0IGFjY29yZGluZyB0byB0aGUgdG9wb2xvZ3lcbiAgICAgICAgICAgIGxheW91dE5vZGVzID0gc2VsZi50b3BvbG9neU9yZGVyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9yZGVyaW5nID09PSBcImRlZ3JlZVwiKSB7XG4gICAgICAgICAgICAvLyBsYXlvdXQgYWNjb3JkaW5nIHRvIHRoZSBkZXNjZW50IG9yZGVyIG9mIGRlZ3JlZXNcbiAgICAgICAgICAgIGxheW91dE5vZGVzID0gc2VsZi5kZWdyZWVPcmRlcmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gbGF5b3V0IGFjY29yZGluZyB0byB0aGUgb3JpZ2luYWwgb3JkZXIgaW4gdGhlIGRhdGEubm9kZXNcbiAgICAgICAgICAgIGxheW91dE5vZGVzID0gbm9kZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xvY2t3aXNlID0gc2VsZi5jbG9ja3dpc2U7XG4gICAgICAgIGNvbnN0IGRpdk4gPSBNYXRoLmNlaWwobiAvIGRpdmlzaW9ucyk7IC8vIG5vZGUgbnVtYmVyIGluIGVhY2ggZGl2aXNpb25cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgICAgIGxldCByID0gcmFkaXVzO1xuICAgICAgICAgICAgaWYgKCFyICYmIHN0YXJ0UmFkaXVzICE9PSBudWxsICYmIGVuZFJhZGl1cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHIgPSBzdGFydFJhZGl1cyArIChpICogKGVuZFJhZGl1cyAtIHN0YXJ0UmFkaXVzKSkgLyAobiAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgICAgICAgciA9IDEwICsgKGkgKiAxMDApIC8gKG4gLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhbmdsZSA9IHN0YXJ0QW5nbGUgK1xuICAgICAgICAgICAgICAgIChpICUgZGl2TikgKiBhc3RlcCArXG4gICAgICAgICAgICAgICAgKCgyICogTWF0aC5QSSkgLyBkaXZpc2lvbnMpICogTWF0aC5mbG9vcihpIC8gZGl2Tik7XG4gICAgICAgICAgICBpZiAoIWNsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIGFuZ2xlID1cbiAgICAgICAgICAgICAgICAgICAgZW5kQW5nbGUgLVxuICAgICAgICAgICAgICAgICAgICAgICAgKGkgJSBkaXZOKSAqIGFzdGVwIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICgoMiAqIE1hdGguUEkpIC8gZGl2aXNpb25zKSAqIE1hdGguZmxvb3IoaSAvIGRpdk4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGF5b3V0Tm9kZXNbaV0ueCA9IGNlbnRlclswXSArIE1hdGguY29zKGFuZ2xlKSAqIHI7XG4gICAgICAgICAgICBsYXlvdXROb2Rlc1tpXS55ID0gY2VudGVyWzFdICsgTWF0aC5zaW4oYW5nbGUpICogcjtcbiAgICAgICAgICAgIGxheW91dE5vZGVzW2ldLndlaWdodCA9IGRlZ3JlZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogbGF5b3V0Tm9kZXMsXG4gICAgICAgICAgICBlZGdlczogdGhpcy5lZGdlc1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmoLnmja7oioLngrnnmoTmi5PmiZHnu5PmnoTmjpLluo9cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gb3JkZXJlZE5vZGVzIOaOkuW6j+WQjueahOe7k+aenFxuICAgICAqL1xuICAgIHRvcG9sb2d5T3JkZXJpbmcoZGlyZWN0ZWQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZGVncmVlcyA9IHNlbGYuZGVncmVlcztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNub2RlcyA9IGNsb25lKG5vZGVzKTtcbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHNlbGYubm9kZU1hcDtcbiAgICAgICAgY29uc3Qgb3JkZXJlZENOb2RlcyA9IFtjbm9kZXNbMF1dO1xuICAgICAgICBjb25zdCByZXNOb2RlcyA9IFtub2Rlc1swXV07XG4gICAgICAgIGNvbnN0IHBpY2tGbGFncyA9IFtdO1xuICAgICAgICBjb25zdCBuID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBwaWNrRmxhZ3NbMF0gPSB0cnVlO1xuICAgICAgICBpbml0SGllcmFyY2h5KGNub2RlcywgZWRnZXMsIG5vZGVNYXAsIGRpcmVjdGVkKTtcbiAgICAgICAgbGV0IGsgPSAwO1xuICAgICAgICBjbm9kZXMuZm9yRWFjaCgoY25vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKChpID09PSBuIC0gMSB8fFxuICAgICAgICAgICAgICAgICAgICBkZWdyZWVzW2ldICE9PSBkZWdyZWVzW2kgKyAxXSB8fFxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0KG9yZGVyZWRDTm9kZXNba10sIGNub2RlLCBlZGdlcykpICYmXG4gICAgICAgICAgICAgICAgICAgICFwaWNrRmxhZ3NbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJlZENOb2Rlcy5wdXNoKGNub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzTm9kZXMucHVzaChub2Rlc1tub2RlTWFwW2Nub2RlLmlkXV0pO1xuICAgICAgICAgICAgICAgICAgICBwaWNrRmxhZ3NbaV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBrKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG9yZGVyZWRDTm9kZXNba10uY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZENoaWxkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkSWR4ID0gbm9kZU1hcFtjaGlsZHJlbltqXV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVncmVlc1tjaGlsZElkeF0gPT09IGRlZ3JlZXNbaV0gJiYgIXBpY2tGbGFnc1tjaGlsZElkeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkQ05vZGVzLnB1c2goY25vZGVzW2NoaWxkSWR4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzTm9kZXMucHVzaChub2Rlc1tub2RlTWFwW2Nub2Rlc1tjaGlsZElkeF0uaWRdXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja0ZsYWdzW2NoaWxkSWR4XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDaGlsZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGlpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFmb3VuZENoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBpY2tGbGFnc1tpaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkQ05vZGVzLnB1c2goY25vZGVzW2lpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzTm9kZXMucHVzaChub2Rlc1tub2RlTWFwW2Nub2Rlc1tpaV0uaWRdXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja0ZsYWdzW2lpXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDaGlsZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlpID09PSBuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzTm9kZXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOagueaNruiKgueCueW6puaVsOWkp+Wwj+aOkuW6j1xuICAgICAqIEByZXR1cm4ge2FycmF5fSBvcmRlcmVkTm9kZXMg5o6S5bqP5ZCO55qE57uT5p6cXG4gICAgICovXG4gICAgZGVncmVlT3JkZXJpbmcoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IG9yZGVyZWROb2RlcyA9IFtdO1xuICAgICAgICBjb25zdCBkZWdyZWVzID0gc2VsZi5kZWdyZWVzO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICBub2RlLmRlZ3JlZSA9IGRlZ3JlZXNbaV07XG4gICAgICAgICAgICBvcmRlcmVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9yZGVyZWROb2Rlcy5zb3J0KGNvbXBhcmVEZWdyZWUpO1xuICAgICAgICByZXR1cm4gb3JkZXJlZE5vZGVzO1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJjaXJjdWxhclwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNpcmN1bGFyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/circular.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/comboForce.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/comboForce.js ***! \***************************************************************************************/ /*! exports provided: ComboForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ComboForceLayout\", function() { return ComboForceLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/**\n * @fileOverview Combo force layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n/**\n * force layout for graph with combos\n */\nclass ComboForceLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 100;\n /** 重力大小,影响图的紧凑程度 */\n this.gravity = 10;\n /** 群组中心力大小 */\n this.comboGravity = 10;\n /** 默认边长度 */\n this.linkDistance = 10;\n /** 每次迭代位移的衰减相关参数 */\n this.alpha = 1;\n this.alphaMin = 0.001;\n this.alphaDecay = 1 - Math.pow(this.alphaMin, (1 / 300));\n this.alphaTarget = 0;\n /** 节点运动速度衰减参数 */\n this.velocityDecay = 0.6;\n /** 边引力大小 */\n this.edgeStrength = 0.6;\n /** 节点引力大小 */\n this.nodeStrength = 30;\n /** 是否开启防止重叠 */\n this.preventOverlap = false;\n /** 是否开启节点之间的防止重叠 */\n this.preventNodeOverlap = false;\n /** 是否开启 Combo 之间的防止重叠 */\n this.preventComboOverlap = false;\n /** 防止重叠的碰撞力大小 */\n this.collideStrength = undefined;\n /** 防止重叠的碰撞力大小 */\n this.nodeCollideStrength = 0.5;\n /** 防止重叠的碰撞力大小 */\n this.comboCollideStrength = 0.5;\n /** Combo 最小间距,防止重叠时的间隙 */\n this.comboSpacing = 20;\n /** Combo 内部的 padding */\n this.comboPadding = 10;\n /** 优化计算斥力的速度,两节点间距超过 optimizeRangeFactor * width 则不再计算斥力和重叠斥力 */\n this.optimizeRangeFactor = 1;\n /** 每次迭代的回调函数 */\n this.onTick = () => { };\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n /** 根据边两端节点层级差距的调整引力系数的因子,取值范围 [0, 1]。层级差距越大,引力越小 */\n this.depthAttractiveForceScale = 1;\n /** 根据边两端节点层级差距的调整斥力系数的因子,取值范围 [1, Infinity]。层级差距越大,斥力越大 */\n this.depthRepulsiveForceScale = 2;\n /** 内部计算参数 */\n this.nodes = [];\n this.edges = [];\n this.combos = [];\n this.comboTrees = [];\n this.width = 300;\n this.height = 300;\n this.bias = [];\n this.nodeMap = {};\n this.oriComboMap = {};\n this.indexMap = {};\n this.comboMap = {};\n this.previousLayouted = false;\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 100,\n center: [0, 0],\n gravity: 10,\n speed: 1,\n comboGravity: 30,\n preventOverlap: false,\n preventComboOverlap: true,\n preventNodeOverlap: true,\n nodeSpacing: undefined,\n collideStrength: undefined,\n nodeCollideStrength: 0.5,\n comboCollideStrength: 0.5,\n comboSpacing: 20,\n comboPadding: 10,\n edgeStrength: 0.6,\n nodeStrength: 30,\n linkDistance: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n self.comboTree = {\n id: \"comboTreeRoot\",\n depth: -1,\n children: self.comboTrees\n };\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n self.initVals();\n // layout\n self.run();\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n }\n run() {\n const self = this;\n const nodes = self.nodes;\n const maxIteration = self.previousLayouted\n ? self.maxIteration / 5\n : self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const center = self.center;\n const velocityDecay = self.velocityDecay;\n // init the positions to make the nodes with same combo gather around the combo\n const comboMap = self.comboMap;\n if (!self.previousLayouted)\n self.initPos(comboMap);\n // iterate\n for (let i = 0; i < maxIteration; i++) {\n const displacements = [];\n nodes.forEach((_, j) => {\n displacements[j] = { x: 0, y: 0 };\n });\n self.applyCalculate(displacements);\n // gravity for combos\n self.applyComboCenterForce(displacements);\n // move\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n n.x += displacements[j].x * velocityDecay;\n n.y += displacements[j].y * velocityDecay;\n });\n self.alpha += (self.alphaTarget - self.alpha) * self.alphaDecay;\n self.onTick();\n }\n // move to center\n const meanCenter = [0, 0];\n nodes.forEach((n) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n meanCenter[0] += n.x;\n meanCenter[1] += n.y;\n });\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n const centerOffset = [center[0] - meanCenter[0], center[1] - meanCenter[1]];\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n n.x += centerOffset[0];\n n.y += centerOffset[1];\n });\n // arrange the empty combo\n self.combos.forEach((combo) => {\n const mapped = comboMap[combo.id];\n if (mapped && mapped.empty) {\n combo.x = mapped.cx || combo.x;\n combo.y = mapped.cy || combo.y;\n }\n });\n self.previousLayouted = true;\n }\n initVals() {\n const self = this;\n const edges = self.edges;\n const nodes = self.nodes;\n const combos = self.combos;\n const count = {};\n const nodeMap = {};\n const indexMap = {};\n nodes.forEach((node, i) => {\n nodeMap[node.id] = node;\n indexMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.indexMap = indexMap;\n const oriComboMap = {};\n combos.forEach((combo) => {\n oriComboMap[combo.id] = combo;\n });\n self.oriComboMap = oriComboMap;\n self.comboMap = self.getComboMap();\n const preventOverlap = self.preventOverlap;\n self.preventComboOverlap = self.preventComboOverlap || preventOverlap;\n self.preventNodeOverlap = self.preventNodeOverlap || preventOverlap;\n const collideStrength = self.collideStrength;\n if (collideStrength) {\n self.comboCollideStrength = collideStrength;\n self.nodeCollideStrength = collideStrength;\n }\n self.comboCollideStrength = self.comboCollideStrength\n ? self.comboCollideStrength\n : 0;\n self.nodeCollideStrength = self.nodeCollideStrength\n ? self.nodeCollideStrength\n : 0;\n // get edge bias\n for (let i = 0; i < edges.length; ++i) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'target');\n if (count[source])\n count[source]++;\n else\n count[source] = 1;\n if (count[target])\n count[target]++;\n else\n count[target] = 1;\n }\n const bias = [];\n for (let i = 0; i < edges.length; ++i) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edges[i], 'target');\n bias[i] = count[source] / (count[source] + count[target]);\n }\n this.bias = bias;\n const nodeSize = self.nodeSize;\n const nodeSpacing = self.nodeSpacing;\n let nodeSizeFunc;\n let nodeSpacingFunc;\n // nodeSpacing to function\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n this.nodeSpacing = nodeSpacingFunc;\n // nodeSize to function\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res / 2;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res / 2;\n }\n return d.size / 2;\n }\n return 10;\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n return nodeSize(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius;\n }\n else {\n // number type\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius;\n }\n this.nodeSize = nodeSizeFunc;\n // comboSpacing to function\n const comboSpacing = self.comboSpacing;\n let comboSpacingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(comboSpacing)) {\n comboSpacingFunc = () => comboSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comboSpacing)) {\n comboSpacingFunc = comboSpacing;\n }\n else {\n // null type\n comboSpacingFunc = () => 0;\n }\n this.comboSpacing = comboSpacingFunc;\n // comboPadding to function\n const comboPadding = self.comboPadding;\n let comboPaddingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(comboPadding)) {\n comboPaddingFunc = () => comboPadding;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(comboPadding)) {\n comboPaddingFunc = () => Math.max.apply(null, comboPadding);\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(comboPadding)) {\n comboPaddingFunc = comboPadding;\n }\n else {\n // null type\n comboPaddingFunc = () => 0;\n }\n this.comboPadding = comboPaddingFunc;\n // linkDistance to function\n let linkDistance = this.linkDistance;\n let linkDistanceFunc;\n if (!linkDistance) {\n linkDistance = 10;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(linkDistance)) {\n linkDistanceFunc = (d) => {\n return linkDistance;\n };\n }\n else {\n linkDistanceFunc = linkDistance;\n }\n this.linkDistance = linkDistanceFunc;\n // linkStrength to function\n let edgeStrength = this.edgeStrength;\n let edgeStrengthFunc;\n if (!edgeStrength) {\n edgeStrength = 1;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(edgeStrength)) {\n edgeStrengthFunc = (d) => {\n return edgeStrength;\n };\n }\n else {\n edgeStrengthFunc = edgeStrength;\n }\n this.edgeStrength = edgeStrengthFunc;\n // nodeStrength to function\n let nodeStrength = this.nodeStrength;\n let nodeStrengthFunc;\n if (!nodeStrength) {\n nodeStrength = 30;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(nodeStrength)) {\n nodeStrengthFunc = (d) => {\n return nodeStrength;\n };\n }\n else {\n nodeStrengthFunc = nodeStrength;\n }\n this.nodeStrength = nodeStrengthFunc;\n }\n initPos(comboMap) {\n const self = this;\n const nodes = self.nodes;\n nodes.forEach((node, i) => {\n const comboId = node.comboId;\n const combo = comboMap[comboId];\n if (comboId && combo) {\n node.x = combo.cx + 100 / (i + 1);\n node.y = combo.cy + 100 / (i + 1);\n }\n else {\n node.x = 100 / (i + 1);\n node.y = 100 / (i + 1);\n }\n });\n }\n getComboMap() {\n const self = this;\n const nodeMap = self.nodeMap;\n const indexMap = self.indexMap;\n const comboTrees = self.comboTrees;\n const oriComboMap = self.oriComboMap;\n const comboMap = {};\n (comboTrees || []).forEach((ctree) => {\n const treeChildren = [];\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\")\n return true; // skip it\n if (!oriComboMap[treeNode.id])\n return true; // means it is hidden, skip it\n if (comboMap[treeNode.id] === undefined) {\n const combo = {\n id: treeNode.id,\n name: treeNode.id,\n cx: 0,\n cy: 0,\n count: 0,\n depth: self.oriComboMap[treeNode.id].depth || 0,\n children: []\n };\n comboMap[treeNode.id] = combo;\n }\n const children = treeNode.children;\n if (children) {\n children.forEach((child) => {\n if (!comboMap[child.id] && !nodeMap[child.id])\n return true; // means it is hidden\n treeChildren.push(child);\n });\n }\n const c = comboMap[treeNode.id];\n c.cx = 0;\n c.cy = 0;\n // In order to layout the empty combo, add a virtual node to it\n if (treeChildren.length === 0) {\n c.empty = true;\n const oriCombo = oriComboMap[treeNode.id];\n const idx = Object.keys(nodeMap).length;\n const virtualNodeId = `${treeNode.id}-visual-child-${idx}`;\n const vnode = {\n id: virtualNodeId,\n x: oriCombo.x,\n y: oriCombo.y,\n depth: c.depth + 1,\n itemType: \"node\"\n };\n self.nodes.push(vnode);\n nodeMap[virtualNodeId] = vnode;\n indexMap[virtualNodeId] = idx;\n c.cx = oriCombo.x;\n c.cy = oriCombo.y;\n treeChildren.push(vnode);\n }\n treeChildren.forEach((child) => {\n c.count++;\n if (child.itemType !== \"node\") {\n const childCombo = comboMap[child.id];\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cx))\n c.cx += childCombo.cx;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cy))\n c.cy += childCombo.cy;\n return;\n }\n const node = nodeMap[child.id];\n // means the node is hidden, skip it\n if (!node)\n return;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x)) {\n c.cx += node.x;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y)) {\n c.cy += node.y;\n }\n });\n c.cx /= c.count;\n c.cy /= c.count;\n c.children = treeChildren;\n return true;\n });\n });\n return comboMap;\n }\n applyComboCenterForce(displacements) {\n const self = this;\n const gravity = self.gravity;\n const comboGravity = self.comboGravity || gravity;\n const alpha = this.alpha;\n const comboTrees = self.comboTrees;\n const indexMap = self.indexMap;\n const nodeMap = self.nodeMap;\n const comboMap = self.comboMap;\n (comboTrees || []).forEach((ctree) => {\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\")\n return true; // skip it\n const combo = comboMap[treeNode.id];\n // means the combo is hidden, skip it\n if (!combo)\n return true;\n const c = comboMap[treeNode.id];\n // higher depth the combo, larger the gravity\n const gravityScale = ((c.depth + 1) / 10) * 0.5;\n // apply combo center force for all the descend nodes in this combo\n // and update the center position and count for this combo\n const comboX = c.cx;\n const comboY = c.cy;\n c.cx = 0;\n c.cy = 0;\n c.children.forEach((child) => {\n if (child.itemType !== \"node\") {\n const childCombo = comboMap[child.id];\n if (childCombo && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cx))\n c.cx += childCombo.cx;\n if (childCombo && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(childCombo.cy))\n c.cy += childCombo.cy;\n return;\n }\n const node = nodeMap[child.id];\n const vecX = (node.x - comboX) || 0.005;\n const vecY = (node.y - comboY) || 0.005;\n const l = Math.sqrt(vecX * vecX + vecY * vecY);\n const childIdx = indexMap[node.id];\n const params = ((comboGravity * alpha) / l) * gravityScale;\n displacements[childIdx].x -= vecX * params;\n displacements[childIdx].y -= vecY * params;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n c.cx += node.x;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n c.cy += node.y;\n });\n c.cx /= c.count;\n c.cy /= c.count;\n return true;\n });\n });\n }\n applyCalculate(displacements) {\n const self = this;\n const comboMap = self.comboMap;\n const nodes = self.nodes;\n // store the vx, vy, and distance to reduce dulplicate calculation\n const vecMap = {};\n nodes.forEach((v, i) => {\n nodes.forEach((u, j) => {\n if (i < j)\n return;\n const vx = (v.x - u.x) || 0.005;\n const vy = (v.y - u.y) || 0.005;\n let vl2 = vx * vx + vy * vy;\n const vl = Math.sqrt(vl2);\n if (vl2 < 1)\n vl2 = vl;\n vecMap[`${v.id}-${u.id}`] = { vx, vy, vl2, vl };\n vecMap[`${u.id}-${v.id}`] = { vl2, vl, vx: -vx, vy: -vy };\n });\n });\n // get the sizes of the combos\n self.updateComboSizes(comboMap);\n self.calRepulsive(displacements, vecMap);\n self.calAttractive(displacements, vecMap);\n const preventComboOverlap = self.preventComboOverlap;\n if (preventComboOverlap)\n self.comboNonOverlapping(displacements, comboMap);\n }\n /**\n * Update the sizes of the combos according to their children\n * Used for combos nonoverlap, but not re-render the combo shapes\n */\n updateComboSizes(comboMap) {\n const self = this;\n const comboTrees = self.comboTrees;\n const nodeMap = self.nodeMap;\n const nodeSize = self.nodeSize;\n const comboSpacing = self.comboSpacing;\n const comboPadding = self.comboPadding;\n (comboTrees || []).forEach((ctree) => {\n const treeChildren = [];\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(ctree, (treeNode) => {\n if (treeNode.itemType === \"node\")\n return true; // skip it\n const c = comboMap[treeNode.id];\n // means the combo is hidden, skip it\n if (!c)\n return false;\n const children = treeNode.children;\n if (children) {\n children.forEach((child) => {\n // means the combo is hidden.\n if (!comboMap[child.id] && !nodeMap[child.id])\n return;\n treeChildren.push(child);\n });\n }\n c.minX = Infinity;\n c.minY = Infinity;\n c.maxX = -Infinity;\n c.maxY = -Infinity;\n treeChildren.forEach((child) => {\n if (child.itemType !== \"node\")\n return true; // skip it\n const node = nodeMap[child.id];\n if (!node)\n return true; // means it is hidden\n const r = nodeSize(node);\n const nodeMinX = node.x - r;\n const nodeMinY = node.y - r;\n const nodeMaxX = node.x + r;\n const nodeMaxY = node.y + r;\n if (c.minX > nodeMinX)\n c.minX = nodeMinX;\n if (c.minY > nodeMinY)\n c.minY = nodeMinY;\n if (c.maxX < nodeMaxX)\n c.maxX = nodeMaxX;\n if (c.maxY < nodeMaxY)\n c.maxY = nodeMaxY;\n });\n let minSize = self.oriComboMap[treeNode.id].size || 10;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(minSize))\n minSize = minSize[0];\n const maxLength = Math.max(c.maxX - c.minX, c.maxY - c.minY, minSize);\n c.r = maxLength / 2 + comboSpacing(c) / 2 + comboPadding(c);\n return true;\n });\n });\n }\n /**\n * prevent the overlappings among combos\n */\n comboNonOverlapping(displacements, comboMap) {\n const self = this;\n const comboTree = self.comboTree;\n const comboCollideStrength = self.comboCollideStrength;\n const indexMap = self.indexMap;\n const nodeMap = self.nodeMap;\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"traverseTreeUp\"])(comboTree, (treeNode) => {\n if (!comboMap[treeNode.id] &&\n !nodeMap[treeNode.id] &&\n treeNode.id !== \"comboTreeRoot\") {\n return false;\n } // means it is hidden\n const children = treeNode.children;\n // 同个子树下的子 combo 间两两对比\n if (children && children.length > 1) {\n children.forEach((v, i) => {\n if (v.itemType === \"node\")\n return false; // skip it\n const cv = comboMap[v.id];\n if (!cv)\n return; // means it is hidden, skip it\n children.forEach((u, j) => {\n if (i <= j)\n return false;\n if (u.itemType === \"node\")\n return false; // skip it\n const cu = comboMap[u.id];\n if (!cu)\n return false; // means it is hidden, skip it\n const vx = (cv.cx - cu.cx) || 0.005;\n const vy = (cv.cy - cu.cy) || 0.005;\n const l = vx * vx + vy * vy;\n const rv = cv.r || 1;\n const ru = cu.r || 1;\n const r = rv + ru;\n const ru2 = ru * ru;\n const rv2 = rv * rv;\n // overlapping\n if (l < r * r) {\n const vnodes = v.children;\n if (!vnodes || vnodes.length === 0)\n return false; // skip it\n const unodes = u.children;\n if (!unodes || unodes.length === 0)\n return false; // skip it\n const sqrtl = Math.sqrt(l);\n const ll = ((r - sqrtl) / sqrtl) * comboCollideStrength;\n const xl = vx * ll;\n const yl = vy * ll;\n const rratio = ru2 / (rv2 + ru2);\n const irratio = 1 - rratio;\n // 两兄弟 combo 的子节点上施加斥力\n vnodes.forEach((vn) => {\n if (vn.itemType !== \"node\")\n return false; // skip it\n if (!nodeMap[vn.id])\n return; // means it is hidden, skip it\n const vindex = indexMap[vn.id];\n unodes.forEach((un) => {\n if (un.itemType !== \"node\")\n return false;\n if (!nodeMap[un.id])\n return false; // means it is hidden, skip it\n const uindex = indexMap[un.id];\n displacements[vindex].x += xl * rratio;\n displacements[vindex].y += yl * rratio;\n displacements[uindex].x -= xl * irratio;\n displacements[uindex].y -= yl * irratio;\n });\n });\n }\n });\n });\n }\n return true;\n });\n }\n /**\n * Calculate the repulsive force between each node pair\n * @param displacements The array stores the displacements for nodes\n * @param vecMap The map stores vector between each node pair\n */\n calRepulsive(displacements, vecMap) {\n const self = this;\n const nodes = self.nodes;\n const max = self.width * self.optimizeRangeFactor;\n const nodeStrength = self.nodeStrength;\n const alpha = self.alpha;\n const nodeCollideStrength = self.nodeCollideStrength;\n const preventNodeOverlap = self.preventNodeOverlap;\n const nodeSizeFunc = self.nodeSize;\n const nodeSpacingFunc = self.nodeSpacing;\n const scale = self.depthRepulsiveForceScale;\n const center = self.center;\n nodes.forEach((v, i) => {\n if (!v.x || !v.y)\n return;\n // center gravity\n if (center) {\n const gravity = self.gravity;\n const vecX = (v.x - center[0]) || 0.005;\n const vecY = (v.y - center[1]) || 0.005;\n const l = Math.sqrt(vecX * vecX + vecY * vecY);\n displacements[i].x -= (vecX * gravity * alpha) / l;\n displacements[i].y -= (vecY * gravity * alpha) / l;\n }\n nodes.forEach((u, j) => {\n if (i === j) {\n return;\n }\n if (!u.x || !u.y)\n return;\n const { vl2, vl } = vecMap[`${v.id}-${u.id}`];\n if (vl > max)\n return;\n const { vx, vy } = vecMap[`${v.id}-${u.id}`];\n let depthDiff = Math.log(Math.abs(u.depth - v.depth) / 10) + 1 || 1;\n depthDiff = depthDiff < 1 ? 1 : depthDiff;\n if (u.comboId !== v.comboId)\n depthDiff += 1;\n const depthParam = depthDiff ? Math.pow(scale, depthDiff) : 1;\n const params = ((nodeStrength(u) * alpha) / vl2) * depthParam;\n displacements[i].x += vx * params;\n displacements[i].y += vy * params;\n // prevent node overlappings\n if (i < j && preventNodeOverlap) {\n const ri = (nodeSizeFunc(v) + nodeSpacingFunc(v)) || 1;\n const rj = (nodeSizeFunc(u) + nodeSpacingFunc(u)) || 1;\n const r = ri + rj;\n if (vl2 < r * r) {\n const ll = ((r - vl) / vl) * nodeCollideStrength;\n const rj2 = rj * rj;\n let rratio = rj2 / (ri * ri + rj2);\n const xl = vx * ll;\n const yl = vy * ll;\n displacements[i].x += xl * rratio;\n displacements[i].y += yl * rratio;\n rratio = 1 - rratio;\n displacements[j].x -= xl * rratio;\n displacements[j].y -= yl * rratio;\n }\n }\n });\n });\n }\n /**\n * Calculate the attractive force between the node pair with edge\n * @param displacements The array stores the displacements for nodes\n * @param vecMap The map stores vector between each node pair\n */\n calAttractive(displacements, vecMap) {\n const self = this;\n const edges = self.edges;\n const linkDistance = self.linkDistance;\n const alpha = self.alpha;\n const edgeStrength = self.edgeStrength;\n const bias = self.bias;\n const scale = self.depthAttractiveForceScale;\n edges.forEach((e, i) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n if (!source || !target || source === target)\n return;\n const uIndex = self.indexMap[source];\n const vIndex = self.indexMap[target];\n const u = self.nodeMap[source];\n const v = self.nodeMap[target];\n if (!u || !v)\n return;\n let depthDiff = u.depth === v.depth ? 0 : Math.log(Math.abs(u.depth - v.depth) / 10);\n if (u.comboId === v.comboId) {\n depthDiff = depthDiff / 2;\n }\n let depthParam = depthDiff ? Math.pow(scale, depthDiff) : 1;\n if (u.comboId !== v.comboId && depthParam === 1) {\n depthParam = scale / 2;\n }\n else if (u.comboId === v.comboId) {\n depthParam = 2;\n }\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.y) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.y)) {\n return;\n }\n const { vl, vx, vy } = vecMap[`${target}-${source}`];\n const l = ((vl - linkDistance(e)) / vl) * alpha * edgeStrength(e) * depthParam;\n const vecX = vx * l;\n const vecY = vy * l;\n const b = bias[i];\n displacements[vIndex].x -= vecX * b;\n displacements[vIndex].y -= vecY * b;\n displacements[uIndex].x += vecX * (1 - b);\n displacements[uIndex].y += vecY * (1 - b);\n });\n }\n getType() {\n return \"comboForce\";\n }\n}\n//# sourceMappingURL=comboForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvY29tYm9Gb3JjZS5qcz9jMjRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDOEI7QUFDcUU7QUFDbkc7QUFDQTtBQUNBO0FBQ08sK0JBQStCLDBDQUFJO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRLFVBQVUsc0RBQVE7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxVQUFVLHNEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxVQUFVLHNEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0RBQVE7QUFDcEI7QUFDQTtBQUNBLGlCQUFpQix3REFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixxREFBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0RBQVE7QUFDcEI7QUFDQTtBQUNBLGlCQUFpQix3REFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0RBQVE7QUFDcEI7QUFDQTtBQUNBLGlCQUFpQixxREFBTztBQUN4QjtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw0REFBYztBQUMxQjtBQUNBLGdDQUFnQztBQUNoQztBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsWUFBWSxnQkFBZ0IsSUFBSTtBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVE7QUFDcEM7QUFDQSw0QkFBNEIsc0RBQVE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQTtBQUNBLHdCQUF3QixzREFBUTtBQUNoQztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDREQUFjO0FBQzFCO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLHNEQUFRO0FBQ2xEO0FBQ0EsMENBQTBDLHNEQUFRO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQSx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLEtBQUssR0FBRyxLQUFLLE1BQU07QUFDN0MsMEJBQTBCLEtBQUssR0FBRyxLQUFLLE1BQU07QUFDN0MsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDREQUFjO0FBQzFCO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLG9CQUFvQixxREFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDREQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixVQUFVLGFBQWEsS0FBSyxHQUFHLEtBQUs7QUFDM0Q7QUFDQTtBQUNBLHVCQUF1QixTQUFTLGFBQWEsS0FBSyxHQUFHLEtBQUs7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDZEQUFlO0FBQzFDLDJCQUEyQiw2REFBZTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxVQUFVLHNEQUFRLFVBQVUsc0RBQVEsVUFBVSxzREFBUTtBQUMvRTtBQUNBO0FBQ0EsbUJBQW1CLGFBQWEsYUFBYSxPQUFPLEdBQUcsT0FBTztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9jb21ib0ZvcmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IENvbWJvIGZvcmNlIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOdW1iZXIsIGlzRnVuY3Rpb24sIHRyYXZlcnNlVHJlZVVwLCBpc09iamVjdCwgZ2V0RWRnZVRlcm1pbmFsIH0gZnJvbSBcIi4uL3V0aWxcIjtcbi8qKlxuICogZm9yY2UgbGF5b3V0IGZvciBncmFwaCB3aXRoIGNvbWJvc1xuICovXG5leHBvcnQgY2xhc3MgQ29tYm9Gb3JjZUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOW4g+WxgOS4reW/gyAqL1xuICAgICAgICB0aGlzLmNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOacgOWkp+i/reS7o+aVsCAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDEwMDtcbiAgICAgICAgLyoqIOmHjeWKm+Wkp+Wwj++8jOW9seWTjeWbvueahOe0p+WHkeeoi+W6piAqL1xuICAgICAgICB0aGlzLmdyYXZpdHkgPSAxMDtcbiAgICAgICAgLyoqIOe+pOe7hOS4reW/g+WKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmNvbWJvR3Jhdml0eSA9IDEwO1xuICAgICAgICAvKiog6buY6K6k6L656ZW/5bqmICovXG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gMTA7XG4gICAgICAgIC8qKiDmr4/mrKHov63ku6PkvY3np7vnmoToobDlh4/nm7jlhbPlj4LmlbAgKi9cbiAgICAgICAgdGhpcy5hbHBoYSA9IDE7XG4gICAgICAgIHRoaXMuYWxwaGFNaW4gPSAwLjAwMTtcbiAgICAgICAgdGhpcy5hbHBoYURlY2F5ID0gMSAtIE1hdGgucG93KHRoaXMuYWxwaGFNaW4sICgxIC8gMzAwKSk7XG4gICAgICAgIHRoaXMuYWxwaGFUYXJnZXQgPSAwO1xuICAgICAgICAvKiog6IqC54K56L+Q5Yqo6YCf5bqm6KGw5YeP5Y+C5pWwICovXG4gICAgICAgIHRoaXMudmVsb2NpdHlEZWNheSA9IDAuNjtcbiAgICAgICAgLyoqIOi+ueW8leWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmVkZ2VTdHJlbmd0aCA9IDAuNjtcbiAgICAgICAgLyoqIOiKgueCueW8leWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLm5vZGVTdHJlbmd0aCA9IDMwO1xuICAgICAgICAvKiog5piv5ZCm5byA5ZCv6Ziy5q2i6YeN5Y+gICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIOaYr+WQpuW8gOWQr+iKgueCueS5i+mXtOeahOmYsuatoumHjeWPoCAqL1xuICAgICAgICB0aGlzLnByZXZlbnROb2RlT3ZlcmxhcCA9IGZhbHNlO1xuICAgICAgICAvKiog5piv5ZCm5byA5ZCvIENvbWJvIOS5i+mXtOeahOmYsuatoumHjeWPoCAqL1xuICAgICAgICB0aGlzLnByZXZlbnRDb21ib092ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIOmYsuatoumHjeWPoOeahOeisOaSnuWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLmNvbGxpZGVTdHJlbmd0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgLyoqIOmYsuatoumHjeWPoOeahOeisOaSnuWKm+Wkp+WwjyAqL1xuICAgICAgICB0aGlzLm5vZGVDb2xsaWRlU3RyZW5ndGggPSAwLjU7XG4gICAgICAgIC8qKiDpmLLmraLph43lj6DnmoTnorDmkp7lipvlpKflsI8gKi9cbiAgICAgICAgdGhpcy5jb21ib0NvbGxpZGVTdHJlbmd0aCA9IDAuNTtcbiAgICAgICAgLyoqIENvbWJvIOacgOWwj+mXtOi3ne+8jOmYsuatoumHjeWPoOaXtueahOmXtOmamSAqL1xuICAgICAgICB0aGlzLmNvbWJvU3BhY2luZyA9IDIwO1xuICAgICAgICAvKiogQ29tYm8g5YaF6YOo55qEIHBhZGRpbmcgKi9cbiAgICAgICAgdGhpcy5jb21ib1BhZGRpbmcgPSAxMDtcbiAgICAgICAgLyoqIOS8mOWMluiuoeeul+aWpeWKm+eahOmAn+W6pu+8jOS4pOiKgueCuemXtOi3nei2hei/hyBvcHRpbWl6ZVJhbmdlRmFjdG9yICogd2lkdGgg5YiZ5LiN5YaN6K6h566X5pal5Yqb5ZKM6YeN5Y+g5pal5YqbICovXG4gICAgICAgIHRoaXMub3B0aW1pemVSYW5nZUZhY3RvciA9IDE7XG4gICAgICAgIC8qKiDmr4/mrKHov63ku6PnmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vblRpY2sgPSAoKSA9PiB7IH07XG4gICAgICAgIC8qKiDov63ku6Pnu5PmnZ/nmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICAgICAgLyoqIOagueaNrui+ueS4pOerr+iKgueCueWxgue6p+W3rui3neeahOiwg+aVtOW8leWKm+ezu+aVsOeahOWboOWtkO+8jOWPluWAvOiMg+WbtCBbMCwgMV3jgILlsYLnuqflt67ot53otorlpKfvvIzlvJXlipvotorlsI8gKi9cbiAgICAgICAgdGhpcy5kZXB0aEF0dHJhY3RpdmVGb3JjZVNjYWxlID0gMTtcbiAgICAgICAgLyoqIOagueaNrui+ueS4pOerr+iKgueCueWxgue6p+W3rui3neeahOiwg+aVtOaWpeWKm+ezu+aVsOeahOWboOWtkO+8jOWPluWAvOiMg+WbtCBbMSwgSW5maW5pdHld44CC5bGC57qn5beu6Led6LaK5aSn77yM5pal5Yqb6LaK5aSnICovXG4gICAgICAgIHRoaXMuZGVwdGhSZXB1bHNpdmVGb3JjZVNjYWxlID0gMjtcbiAgICAgICAgLyoqIOWGhemDqOiuoeeul+WPguaVsCAqL1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jb21ib3MgPSBbXTtcbiAgICAgICAgdGhpcy5jb21ib1RyZWVzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLmJpYXMgPSBbXTtcbiAgICAgICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgICAgIHRoaXMub3JpQ29tYm9NYXAgPSB7fTtcbiAgICAgICAgdGhpcy5pbmRleE1hcCA9IHt9O1xuICAgICAgICB0aGlzLmNvbWJvTWFwID0ge307XG4gICAgICAgIHRoaXMucHJldmlvdXNMYXlvdXRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1heEl0ZXJhdGlvbjogMTAwLFxuICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sXG4gICAgICAgICAgICBncmF2aXR5OiAxMCxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICAgICAgY29tYm9HcmF2aXR5OiAzMCxcbiAgICAgICAgICAgIHByZXZlbnRPdmVybGFwOiBmYWxzZSxcbiAgICAgICAgICAgIHByZXZlbnRDb21ib092ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICBwcmV2ZW50Tm9kZU92ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICBub2RlU3BhY2luZzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29sbGlkZVN0cmVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2RlQ29sbGlkZVN0cmVuZ3RoOiAwLjUsXG4gICAgICAgICAgICBjb21ib0NvbGxpZGVTdHJlbmd0aDogMC41LFxuICAgICAgICAgICAgY29tYm9TcGFjaW5nOiAyMCxcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZzogMTAsXG4gICAgICAgICAgICBlZGdlU3RyZW5ndGg6IDAuNixcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aDogMzAsXG4gICAgICAgICAgICBsaW5rRGlzdGFuY2U6IDEwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBzZWxmLmNvbWJvVHJlZSA9IHtcbiAgICAgICAgICAgIGlkOiBcImNvbWJvVHJlZVJvb3RcIixcbiAgICAgICAgICAgIGRlcHRoOiAtMSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBzZWxmLmNvbWJvVHJlZXNcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBub2Rlc1swXS54ID0gY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmluaXRWYWxzKCk7XG4gICAgICAgIC8vIGxheW91dFxuICAgICAgICBzZWxmLnJ1bigpO1xuICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICB9XG4gICAgcnVuKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBtYXhJdGVyYXRpb24gPSBzZWxmLnByZXZpb3VzTGF5b3V0ZWRcbiAgICAgICAgICAgID8gc2VsZi5tYXhJdGVyYXRpb24gLyA1XG4gICAgICAgICAgICA6IHNlbGYubWF4SXRlcmF0aW9uO1xuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIGNvbnN0IHZlbG9jaXR5RGVjYXkgPSBzZWxmLnZlbG9jaXR5RGVjYXk7XG4gICAgICAgIC8vIGluaXQgdGhlIHBvc2l0aW9ucyB0byBtYWtlIHRoZSBub2RlcyB3aXRoIHNhbWUgY29tYm8gZ2F0aGVyIGFyb3VuZCB0aGUgY29tYm9cbiAgICAgICAgY29uc3QgY29tYm9NYXAgPSBzZWxmLmNvbWJvTWFwO1xuICAgICAgICBpZiAoIXNlbGYucHJldmlvdXNMYXlvdXRlZClcbiAgICAgICAgICAgIHNlbGYuaW5pdFBvcyhjb21ib01hcCk7XG4gICAgICAgIC8vIGl0ZXJhdGVcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJdGVyYXRpb247IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxhY2VtZW50cyA9IFtdO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgoXywgaikgPT4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0gPSB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5hcHBseUNhbGN1bGF0ZShkaXNwbGFjZW1lbnRzKTtcbiAgICAgICAgICAgIC8vIGdyYXZpdHkgZm9yIGNvbWJvc1xuICAgICAgICAgICAgc2VsZi5hcHBseUNvbWJvQ2VudGVyRm9yY2UoZGlzcGxhY2VtZW50cyk7XG4gICAgICAgICAgICAvLyBtb3ZlXG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuLCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbi54ICs9IGRpc3BsYWNlbWVudHNbal0ueCAqIHZlbG9jaXR5RGVjYXk7XG4gICAgICAgICAgICAgICAgbi55ICs9IGRpc3BsYWNlbWVudHNbal0ueSAqIHZlbG9jaXR5RGVjYXk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYuYWxwaGEgKz0gKHNlbGYuYWxwaGFUYXJnZXQgLSBzZWxmLmFscGhhKSAqIHNlbGYuYWxwaGFEZWNheTtcbiAgICAgICAgICAgIHNlbGYub25UaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbW92ZSB0byBjZW50ZXJcbiAgICAgICAgY29uc3QgbWVhbkNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIG1lYW5DZW50ZXJbMF0gKz0gbi54O1xuICAgICAgICAgICAgbWVhbkNlbnRlclsxXSArPSBuLnk7XG4gICAgICAgIH0pO1xuICAgICAgICBtZWFuQ2VudGVyWzBdIC89IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgbWVhbkNlbnRlclsxXSAvPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGNlbnRlck9mZnNldCA9IFtjZW50ZXJbMF0gLSBtZWFuQ2VudGVyWzBdLCBjZW50ZXJbMV0gLSBtZWFuQ2VudGVyWzFdXTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobiwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIG4ueCArPSBjZW50ZXJPZmZzZXRbMF07XG4gICAgICAgICAgICBuLnkgKz0gY2VudGVyT2Zmc2V0WzFdO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gYXJyYW5nZSB0aGUgZW1wdHkgY29tYm9cbiAgICAgICAgc2VsZi5jb21ib3MuZm9yRWFjaCgoY29tYm8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbWJvTWFwW2NvbWJvLmlkXTtcbiAgICAgICAgICAgIGlmIChtYXBwZWQgJiYgbWFwcGVkLmVtcHR5KSB7XG4gICAgICAgICAgICAgICAgY29tYm8ueCA9IG1hcHBlZC5jeCB8fCBjb21iby54O1xuICAgICAgICAgICAgICAgIGNvbWJvLnkgPSBtYXBwZWQuY3kgfHwgY29tYm8ueTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYucHJldmlvdXNMYXlvdXRlZCA9IHRydWU7XG4gICAgfVxuICAgIGluaXRWYWxzKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNvbWJvcyA9IHNlbGYuY29tYm9zO1xuICAgICAgICBjb25zdCBjb3VudCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgICAgIGNvbnN0IGluZGV4TWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgaW5kZXhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ub2RlTWFwID0gbm9kZU1hcDtcbiAgICAgICAgc2VsZi5pbmRleE1hcCA9IGluZGV4TWFwO1xuICAgICAgICBjb25zdCBvcmlDb21ib01hcCA9IHt9O1xuICAgICAgICBjb21ib3MuZm9yRWFjaCgoY29tYm8pID0+IHtcbiAgICAgICAgICAgIG9yaUNvbWJvTWFwW2NvbWJvLmlkXSA9IGNvbWJvO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5vcmlDb21ib01hcCA9IG9yaUNvbWJvTWFwO1xuICAgICAgICBzZWxmLmNvbWJvTWFwID0gc2VsZi5nZXRDb21ib01hcCgpO1xuICAgICAgICBjb25zdCBwcmV2ZW50T3ZlcmxhcCA9IHNlbGYucHJldmVudE92ZXJsYXA7XG4gICAgICAgIHNlbGYucHJldmVudENvbWJvT3ZlcmxhcCA9IHNlbGYucHJldmVudENvbWJvT3ZlcmxhcCB8fCBwcmV2ZW50T3ZlcmxhcDtcbiAgICAgICAgc2VsZi5wcmV2ZW50Tm9kZU92ZXJsYXAgPSBzZWxmLnByZXZlbnROb2RlT3ZlcmxhcCB8fCBwcmV2ZW50T3ZlcmxhcDtcbiAgICAgICAgY29uc3QgY29sbGlkZVN0cmVuZ3RoID0gc2VsZi5jb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgIGlmIChjb2xsaWRlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGYuY29tYm9Db2xsaWRlU3RyZW5ndGggPSBjb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgICAgICBzZWxmLm5vZGVDb2xsaWRlU3RyZW5ndGggPSBjb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5jb21ib0NvbGxpZGVTdHJlbmd0aCA9IHNlbGYuY29tYm9Db2xsaWRlU3RyZW5ndGhcbiAgICAgICAgICAgID8gc2VsZi5jb21ib0NvbGxpZGVTdHJlbmd0aFxuICAgICAgICAgICAgOiAwO1xuICAgICAgICBzZWxmLm5vZGVDb2xsaWRlU3RyZW5ndGggPSBzZWxmLm5vZGVDb2xsaWRlU3RyZW5ndGhcbiAgICAgICAgICAgID8gc2VsZi5ub2RlQ29sbGlkZVN0cmVuZ3RoXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIC8vIGdldCBlZGdlIGJpYXNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2VzW2ldLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZWRnZXNbaV0sICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGlmIChjb3VudFtzb3VyY2VdKVxuICAgICAgICAgICAgICAgIGNvdW50W3NvdXJjZV0rKztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjb3VudFtzb3VyY2VdID0gMTtcbiAgICAgICAgICAgIGlmIChjb3VudFt0YXJnZXRdKVxuICAgICAgICAgICAgICAgIGNvdW50W3RhcmdldF0rKztcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjb3VudFt0YXJnZXRdID0gMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiaWFzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlZGdlc1tpXSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2VzW2ldLCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICBiaWFzW2ldID0gY291bnRbc291cmNlXSAvIChjb3VudFtzb3VyY2VdICsgY291bnRbdGFyZ2V0XSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaWFzID0gYmlhcztcbiAgICAgICAgY29uc3Qgbm9kZVNpemUgPSBzZWxmLm5vZGVTaXplO1xuICAgICAgICBjb25zdCBub2RlU3BhY2luZyA9IHNlbGYubm9kZVNwYWNpbmc7XG4gICAgICAgIGxldCBub2RlU2l6ZUZ1bmM7XG4gICAgICAgIGxldCBub2RlU3BhY2luZ0Z1bmM7XG4gICAgICAgIC8vIG5vZGVTcGFjaW5nIHRvIGZ1bmN0aW9uXG4gICAgICAgIGlmIChpc051bWJlcihub2RlU3BhY2luZykpIHtcbiAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IG5vZGVTcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSBub2RlU3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2RlU3BhY2luZyA9IG5vZGVTcGFjaW5nRnVuYztcbiAgICAgICAgLy8gbm9kZVNpemUgdG8gZnVuY3Rpb25cbiAgICAgICAgaWYgKCFub2RlU2l6ZSkge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGQuc2l6ZVswXSA+IGQuc2l6ZVsxXSA/IGQuc2l6ZVswXSA6IGQuc2l6ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemUud2lkdGggPiBkLnNpemUuaGVpZ2h0ID8gZC5zaXplLndpZHRoIDogZC5zaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnNpemUgLyAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMTA7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNpemUpKSB7XG4gICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlU2l6ZShkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhcmdlciA9IG5vZGVTaXplWzBdID4gbm9kZVNpemVbMV0gPyBub2RlU2l6ZVswXSA6IG5vZGVTaXplWzFdO1xuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gbGFyZ2VyIC8gMjtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiByYWRpdXM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBudW1iZXIgdHlwZVxuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gbm9kZVNpemUgLyAyO1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHJhZGl1cztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vZGVTaXplID0gbm9kZVNpemVGdW5jO1xuICAgICAgICAvLyBjb21ib1NwYWNpbmcgdG8gZnVuY3Rpb25cbiAgICAgICAgY29uc3QgY29tYm9TcGFjaW5nID0gc2VsZi5jb21ib1NwYWNpbmc7XG4gICAgICAgIGxldCBjb21ib1NwYWNpbmdGdW5jO1xuICAgICAgICBpZiAoaXNOdW1iZXIoY29tYm9TcGFjaW5nKSkge1xuICAgICAgICAgICAgY29tYm9TcGFjaW5nRnVuYyA9ICgpID0+IGNvbWJvU3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNvbWJvU3BhY2luZykpIHtcbiAgICAgICAgICAgIGNvbWJvU3BhY2luZ0Z1bmMgPSBjb21ib1NwYWNpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBudWxsIHR5cGVcbiAgICAgICAgICAgIGNvbWJvU3BhY2luZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tYm9TcGFjaW5nID0gY29tYm9TcGFjaW5nRnVuYztcbiAgICAgICAgLy8gY29tYm9QYWRkaW5nIHRvIGZ1bmN0aW9uXG4gICAgICAgIGNvbnN0IGNvbWJvUGFkZGluZyA9IHNlbGYuY29tYm9QYWRkaW5nO1xuICAgICAgICBsZXQgY29tYm9QYWRkaW5nRnVuYztcbiAgICAgICAgaWYgKGlzTnVtYmVyKGNvbWJvUGFkZGluZykpIHtcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZ0Z1bmMgPSAoKSA9PiBjb21ib1BhZGRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShjb21ib1BhZGRpbmcpKSB7XG4gICAgICAgICAgICBjb21ib1BhZGRpbmdGdW5jID0gKCkgPT4gTWF0aC5tYXguYXBwbHkobnVsbCwgY29tYm9QYWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKGNvbWJvUGFkZGluZykpIHtcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZ0Z1bmMgPSBjb21ib1BhZGRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBudWxsIHR5cGVcbiAgICAgICAgICAgIGNvbWJvUGFkZGluZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tYm9QYWRkaW5nID0gY29tYm9QYWRkaW5nRnVuYztcbiAgICAgICAgLy8gbGlua0Rpc3RhbmNlIHRvIGZ1bmN0aW9uXG4gICAgICAgIGxldCBsaW5rRGlzdGFuY2UgPSB0aGlzLmxpbmtEaXN0YW5jZTtcbiAgICAgICAgbGV0IGxpbmtEaXN0YW5jZUZ1bmM7XG4gICAgICAgIGlmICghbGlua0Rpc3RhbmNlKSB7XG4gICAgICAgICAgICBsaW5rRGlzdGFuY2UgPSAxMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1iZXIobGlua0Rpc3RhbmNlKSkge1xuICAgICAgICAgICAgbGlua0Rpc3RhbmNlRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmtEaXN0YW5jZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsaW5rRGlzdGFuY2VGdW5jID0gbGlua0Rpc3RhbmNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gbGlua0Rpc3RhbmNlRnVuYztcbiAgICAgICAgLy8gbGlua1N0cmVuZ3RoIHRvIGZ1bmN0aW9uXG4gICAgICAgIGxldCBlZGdlU3RyZW5ndGggPSB0aGlzLmVkZ2VTdHJlbmd0aDtcbiAgICAgICAgbGV0IGVkZ2VTdHJlbmd0aEZ1bmM7XG4gICAgICAgIGlmICghZWRnZVN0cmVuZ3RoKSB7XG4gICAgICAgICAgICBlZGdlU3RyZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihlZGdlU3RyZW5ndGgpKSB7XG4gICAgICAgICAgICBlZGdlU3RyZW5ndGhGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRnZVN0cmVuZ3RoO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVkZ2VTdHJlbmd0aEZ1bmMgPSBlZGdlU3RyZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lZGdlU3RyZW5ndGggPSBlZGdlU3RyZW5ndGhGdW5jO1xuICAgICAgICAvLyBub2RlU3RyZW5ndGggdG8gZnVuY3Rpb25cbiAgICAgICAgbGV0IG5vZGVTdHJlbmd0aCA9IHRoaXMubm9kZVN0cmVuZ3RoO1xuICAgICAgICBsZXQgbm9kZVN0cmVuZ3RoRnVuYztcbiAgICAgICAgaWYgKCFub2RlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aCA9IDMwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihub2RlU3RyZW5ndGgpKSB7XG4gICAgICAgICAgICBub2RlU3RyZW5ndGhGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0cmVuZ3RoO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aEZ1bmMgPSBub2RlU3RyZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2RlU3RyZW5ndGggPSBub2RlU3RyZW5ndGhGdW5jO1xuICAgIH1cbiAgICBpbml0UG9zKGNvbWJvTWFwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbWJvSWQgPSBub2RlLmNvbWJvSWQ7XG4gICAgICAgICAgICBjb25zdCBjb21ibyA9IGNvbWJvTWFwW2NvbWJvSWRdO1xuICAgICAgICAgICAgaWYgKGNvbWJvSWQgJiYgY29tYm8pIHtcbiAgICAgICAgICAgICAgICBub2RlLnggPSBjb21iby5jeCArIDEwMCAvIChpICsgMSk7XG4gICAgICAgICAgICAgICAgbm9kZS55ID0gY29tYm8uY3kgKyAxMDAgLyAoaSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS54ID0gMTAwIC8gKGkgKyAxKTtcbiAgICAgICAgICAgICAgICBub2RlLnkgPSAxMDAgLyAoaSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0Q29tYm9NYXAoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlTWFwID0gc2VsZi5ub2RlTWFwO1xuICAgICAgICBjb25zdCBpbmRleE1hcCA9IHNlbGYuaW5kZXhNYXA7XG4gICAgICAgIGNvbnN0IGNvbWJvVHJlZXMgPSBzZWxmLmNvbWJvVHJlZXM7XG4gICAgICAgIGNvbnN0IG9yaUNvbWJvTWFwID0gc2VsZi5vcmlDb21ib01hcDtcbiAgICAgICAgY29uc3QgY29tYm9NYXAgPSB7fTtcbiAgICAgICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goKGN0cmVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmVlQ2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCAodHJlZU5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJlZU5vZGUuaXRlbVR5cGUgPT09IFwibm9kZVwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgIGlmICghb3JpQ29tYm9NYXBbdHJlZU5vZGUuaWRdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gbWVhbnMgaXQgaXMgaGlkZGVuLCBza2lwIGl0XG4gICAgICAgICAgICAgICAgaWYgKGNvbWJvTWFwW3RyZWVOb2RlLmlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbWJvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRyZWVOb2RlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJlZU5vZGUuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogc2VsZi5vcmlDb21ib01hcFt0cmVlTm9kZS5pZF0uZGVwdGggfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb21ib01hcFt0cmVlTm9kZS5pZF0gPSBjb21ibztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlTm9kZS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29tYm9NYXBbY2hpbGQuaWRdICYmICFub2RlTWFwW2NoaWxkLmlkXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gbWVhbnMgaXQgaXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlQ2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjID0gY29tYm9NYXBbdHJlZU5vZGUuaWRdO1xuICAgICAgICAgICAgICAgIGMuY3ggPSAwO1xuICAgICAgICAgICAgICAgIGMuY3kgPSAwO1xuICAgICAgICAgICAgICAgIC8vIEluIG9yZGVyIHRvIGxheW91dCB0aGUgZW1wdHkgY29tYm8sIGFkZCBhIHZpcnR1YWwgbm9kZSB0byBpdFxuICAgICAgICAgICAgICAgIGlmICh0cmVlQ2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGMuZW1wdHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlDb21ibyA9IG9yaUNvbWJvTWFwW3RyZWVOb2RlLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gT2JqZWN0LmtleXMobm9kZU1hcCkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXJ0dWFsTm9kZUlkID0gYCR7dHJlZU5vZGUuaWR9LXZpc3VhbC1jaGlsZC0ke2lkeH1gO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2bm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB2aXJ0dWFsTm9kZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgeDogb3JpQ29tYm8ueCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IG9yaUNvbWJvLnksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogYy5kZXB0aCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtVHlwZTogXCJub2RlXCJcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5ub2Rlcy5wdXNoKHZub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgbm9kZU1hcFt2aXJ0dWFsTm9kZUlkXSA9IHZub2RlO1xuICAgICAgICAgICAgICAgICAgICBpbmRleE1hcFt2aXJ0dWFsTm9kZUlkXSA9IGlkeDtcbiAgICAgICAgICAgICAgICAgICAgYy5jeCA9IG9yaUNvbWJvLng7XG4gICAgICAgICAgICAgICAgICAgIGMuY3kgPSBvcmlDb21iby55O1xuICAgICAgICAgICAgICAgICAgICB0cmVlQ2hpbGRyZW4ucHVzaCh2bm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyZWVDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjLmNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSAhPT0gXCJub2RlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ29tYm8gPSBjb21ib01hcFtjaGlsZC5pZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIoY2hpbGRDb21iby5jeCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5jeCArPSBjaGlsZENvbWJvLmN4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGNoaWxkQ29tYm8uY3kpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY3kgKz0gY2hpbGRDb21iby5jeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZU1hcFtjaGlsZC5pZF07XG4gICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoZSBub2RlIGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlLngpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmN4ICs9IG5vZGUueDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIobm9kZS55KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYy5jeSArPSBub2RlLnk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjLmN4IC89IGMuY291bnQ7XG4gICAgICAgICAgICAgICAgYy5jeSAvPSBjLmNvdW50O1xuICAgICAgICAgICAgICAgIGMuY2hpbGRyZW4gPSB0cmVlQ2hpbGRyZW47XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb21ib01hcDtcbiAgICB9XG4gICAgYXBwbHlDb21ib0NlbnRlckZvcmNlKGRpc3BsYWNlbWVudHMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGdyYXZpdHkgPSBzZWxmLmdyYXZpdHk7XG4gICAgICAgIGNvbnN0IGNvbWJvR3Jhdml0eSA9IHNlbGYuY29tYm9HcmF2aXR5IHx8IGdyYXZpdHk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gdGhpcy5hbHBoYTtcbiAgICAgICAgY29uc3QgY29tYm9UcmVlcyA9IHNlbGYuY29tYm9UcmVlcztcbiAgICAgICAgY29uc3QgaW5kZXhNYXAgPSBzZWxmLmluZGV4TWFwO1xuICAgICAgICBjb25zdCBub2RlTWFwID0gc2VsZi5ub2RlTWFwO1xuICAgICAgICBjb25zdCBjb21ib01hcCA9IHNlbGYuY29tYm9NYXA7XG4gICAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKChjdHJlZSkgPT4ge1xuICAgICAgICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsICh0cmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0cmVlTm9kZS5pdGVtVHlwZSA9PT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgY29uc3QgY29tYm8gPSBjb21ib01hcFt0cmVlTm9kZS5pZF07XG4gICAgICAgICAgICAgICAgLy8gbWVhbnMgdGhlIGNvbWJvIGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgIGlmICghY29tYm8pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBjb21ib01hcFt0cmVlTm9kZS5pZF07XG4gICAgICAgICAgICAgICAgLy8gaGlnaGVyIGRlcHRoIHRoZSBjb21ibywgbGFyZ2VyIHRoZSBncmF2aXR5XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Jhdml0eVNjYWxlID0gKChjLmRlcHRoICsgMSkgLyAxMCkgKiAwLjU7XG4gICAgICAgICAgICAgICAgLy8gYXBwbHkgY29tYm8gY2VudGVyIGZvcmNlIGZvciBhbGwgdGhlIGRlc2NlbmQgbm9kZXMgaW4gdGhpcyBjb21ib1xuICAgICAgICAgICAgICAgIC8vIGFuZCB1cGRhdGUgdGhlIGNlbnRlciBwb3NpdGlvbiBhbmQgY291bnQgZm9yIHRoaXMgY29tYm9cbiAgICAgICAgICAgICAgICBjb25zdCBjb21ib1ggPSBjLmN4O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbWJvWSA9IGMuY3k7XG4gICAgICAgICAgICAgICAgYy5jeCA9IDA7XG4gICAgICAgICAgICAgICAgYy5jeSA9IDA7XG4gICAgICAgICAgICAgICAgYy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuaXRlbVR5cGUgIT09IFwibm9kZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZENvbWJvID0gY29tYm9NYXBbY2hpbGQuaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQ29tYm8gJiYgaXNOdW1iZXIoY2hpbGRDb21iby5jeCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5jeCArPSBjaGlsZENvbWJvLmN4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkQ29tYm8gJiYgaXNOdW1iZXIoY2hpbGRDb21iby5jeSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5jeSArPSBjaGlsZENvbWJvLmN5O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2RlTWFwW2NoaWxkLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjWCA9IChub2RlLnggLSBjb21ib1gpIHx8IDAuMDA1O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZWNZID0gKG5vZGUueSAtIGNvbWJvWSkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSBNYXRoLnNxcnQodmVjWCAqIHZlY1ggKyB2ZWNZICogdmVjWSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkSWR4ID0gaW5kZXhNYXBbbm9kZS5pZF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9ICgoY29tYm9HcmF2aXR5ICogYWxwaGEpIC8gbCkgKiBncmF2aXR5U2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbY2hpbGRJZHhdLnggLT0gdmVjWCAqIHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tjaGlsZElkeF0ueSAtPSB2ZWNZICogcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY3ggKz0gbm9kZS54O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY3kgKz0gbm9kZS55O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGMuY3ggLz0gYy5jb3VudDtcbiAgICAgICAgICAgICAgICBjLmN5IC89IGMuY291bnQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFwcGx5Q2FsY3VsYXRlKGRpc3BsYWNlbWVudHMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGNvbWJvTWFwID0gc2VsZi5jb21ib01hcDtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICAvLyBzdG9yZSB0aGUgdngsIHZ5LCBhbmQgZGlzdGFuY2UgdG8gcmVkdWNlIGR1bHBsaWNhdGUgY2FsY3VsYXRpb25cbiAgICAgICAgY29uc3QgdmVjTWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKHUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IGopXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB2eCA9ICh2LnggLSB1LngpIHx8IDAuMDA1O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZ5ID0gKHYueSAtIHUueSkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgbGV0IHZsMiA9IHZ4ICogdnggKyB2eSAqIHZ5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZsID0gTWF0aC5zcXJ0KHZsMik7XG4gICAgICAgICAgICAgICAgaWYgKHZsMiA8IDEpXG4gICAgICAgICAgICAgICAgICAgIHZsMiA9IHZsO1xuICAgICAgICAgICAgICAgIHZlY01hcFtgJHt2LmlkfS0ke3UuaWR9YF0gPSB7IHZ4LCB2eSwgdmwyLCB2bCB9O1xuICAgICAgICAgICAgICAgIHZlY01hcFtgJHt1LmlkfS0ke3YuaWR9YF0gPSB7IHZsMiwgdmwsIHZ4OiAtdngsIHZ5OiAtdnkgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gZ2V0IHRoZSBzaXplcyBvZiB0aGUgY29tYm9zXG4gICAgICAgIHNlbGYudXBkYXRlQ29tYm9TaXplcyhjb21ib01hcCk7XG4gICAgICAgIHNlbGYuY2FsUmVwdWxzaXZlKGRpc3BsYWNlbWVudHMsIHZlY01hcCk7XG4gICAgICAgIHNlbGYuY2FsQXR0cmFjdGl2ZShkaXNwbGFjZW1lbnRzLCB2ZWNNYXApO1xuICAgICAgICBjb25zdCBwcmV2ZW50Q29tYm9PdmVybGFwID0gc2VsZi5wcmV2ZW50Q29tYm9PdmVybGFwO1xuICAgICAgICBpZiAocHJldmVudENvbWJvT3ZlcmxhcClcbiAgICAgICAgICAgIHNlbGYuY29tYm9Ob25PdmVybGFwcGluZyhkaXNwbGFjZW1lbnRzLCBjb21ib01hcCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgc2l6ZXMgb2YgdGhlIGNvbWJvcyBhY2NvcmRpbmcgdG8gdGhlaXIgY2hpbGRyZW5cbiAgICAgKiBVc2VkIGZvciBjb21ib3Mgbm9ub3ZlcmxhcCwgYnV0IG5vdCByZS1yZW5kZXIgdGhlIGNvbWJvIHNoYXBlc1xuICAgICAqL1xuICAgIHVwZGF0ZUNvbWJvU2l6ZXMoY29tYm9NYXApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGNvbWJvVHJlZXMgPSBzZWxmLmNvbWJvVHJlZXM7XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSBzZWxmLm5vZGVNYXA7XG4gICAgICAgIGNvbnN0IG5vZGVTaXplID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgY29uc3QgY29tYm9TcGFjaW5nID0gc2VsZi5jb21ib1NwYWNpbmc7XG4gICAgICAgIGNvbnN0IGNvbWJvUGFkZGluZyA9IHNlbGYuY29tYm9QYWRkaW5nO1xuICAgICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaCgoY3RyZWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRyZWVDaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsICh0cmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0cmVlTm9kZS5pdGVtVHlwZSA9PT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGNvbWJvTWFwW3RyZWVOb2RlLmlkXTtcbiAgICAgICAgICAgICAgICAvLyBtZWFucyB0aGUgY29tYm8gaXMgaGlkZGVuLCBza2lwIGl0XG4gICAgICAgICAgICAgICAgaWYgKCFjKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlTm9kZS5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHRoZSBjb21ibyBpcyBoaWRkZW4uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbWJvTWFwW2NoaWxkLmlkXSAmJiAhbm9kZU1hcFtjaGlsZC5pZF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYy5taW5YID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgYy5taW5ZID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgYy5tYXhYID0gLUluZmluaXR5O1xuICAgICAgICAgICAgICAgIGMubWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgICAgICB0cmVlQ2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLml0ZW1UeXBlICE9PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2RlTWFwW2NoaWxkLmlkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIG1lYW5zIGl0IGlzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gbm9kZVNpemUobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNaW5YID0gbm9kZS54IC0gcjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZU1pblkgPSBub2RlLnkgLSByO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlTWF4WCA9IG5vZGUueCArIHI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVNYXhZID0gbm9kZS55ICsgcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMubWluWCA+IG5vZGVNaW5YKVxuICAgICAgICAgICAgICAgICAgICAgICAgYy5taW5YID0gbm9kZU1pblg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjLm1pblkgPiBub2RlTWluWSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGMubWluWSA9IG5vZGVNaW5ZO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYy5tYXhYIDwgbm9kZU1heFgpXG4gICAgICAgICAgICAgICAgICAgICAgICBjLm1heFggPSBub2RlTWF4WDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGMubWF4WSA8IG5vZGVNYXhZKVxuICAgICAgICAgICAgICAgICAgICAgICAgYy5tYXhZID0gbm9kZU1heFk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbGV0IG1pblNpemUgPSBzZWxmLm9yaUNvbWJvTWFwW3RyZWVOb2RlLmlkXS5zaXplIHx8IDEwO1xuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KG1pblNpemUpKVxuICAgICAgICAgICAgICAgICAgICBtaW5TaXplID0gbWluU2l6ZVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heChjLm1heFggLSBjLm1pblgsIGMubWF4WSAtIGMubWluWSwgbWluU2l6ZSk7XG4gICAgICAgICAgICAgICAgYy5yID0gbWF4TGVuZ3RoIC8gMiArIGNvbWJvU3BhY2luZyhjKSAvIDIgKyBjb21ib1BhZGRpbmcoYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHByZXZlbnQgdGhlIG92ZXJsYXBwaW5ncyBhbW9uZyBjb21ib3NcbiAgICAgKi9cbiAgICBjb21ib05vbk92ZXJsYXBwaW5nKGRpc3BsYWNlbWVudHMsIGNvbWJvTWFwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBjb21ib1RyZWUgPSBzZWxmLmNvbWJvVHJlZTtcbiAgICAgICAgY29uc3QgY29tYm9Db2xsaWRlU3RyZW5ndGggPSBzZWxmLmNvbWJvQ29sbGlkZVN0cmVuZ3RoO1xuICAgICAgICBjb25zdCBpbmRleE1hcCA9IHNlbGYuaW5kZXhNYXA7XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSBzZWxmLm5vZGVNYXA7XG4gICAgICAgIHRyYXZlcnNlVHJlZVVwKGNvbWJvVHJlZSwgKHRyZWVOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbWJvTWFwW3RyZWVOb2RlLmlkXSAmJlxuICAgICAgICAgICAgICAgICFub2RlTWFwW3RyZWVOb2RlLmlkXSAmJlxuICAgICAgICAgICAgICAgIHRyZWVOb2RlLmlkICE9PSBcImNvbWJvVHJlZVJvb3RcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0gLy8gbWVhbnMgaXQgaXMgaGlkZGVuXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRyZWVOb2RlLmNoaWxkcmVuO1xuICAgICAgICAgICAgLy8g5ZCM5Liq5a2Q5qCR5LiL55qE5a2QIGNvbWJvIOmXtOS4pOS4pOWvueavlFxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2Lml0ZW1UeXBlID09PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdiA9IGNvbWJvTWFwW3YuaWRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWN2KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBtZWFucyBpdCBpcyBoaWRkZW4sIHNraXAgaXRcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgodSwgaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gailcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodS5pdGVtVHlwZSA9PT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdSA9IGNvbWJvTWFwW3UuaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG1lYW5zIGl0IGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnggPSAoY3YuY3ggLSBjdS5jeCkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2eSA9IChjdi5jeSAtIGN1LmN5KSB8fCAwLjAwNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSB2eCAqIHZ4ICsgdnkgKiB2eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ2ID0gY3YuciB8fCAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcnUgPSBjdS5yIHx8IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcnYgKyBydTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ1MiA9IHJ1ICogcnU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBydjIgPSBydiAqIHJ2O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxhcHBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIDwgciAqIHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2bm9kZXMgPSB2LmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdm5vZGVzIHx8IHZub2Rlcy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVub2RlcyA9IHUuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bm9kZXMgfHwgdW5vZGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBza2lwIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3FydGwgPSBNYXRoLnNxcnQobCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGwgPSAoKHIgLSBzcXJ0bCkgLyBzcXJ0bCkgKiBjb21ib0NvbGxpZGVTdHJlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4bCA9IHZ4ICogbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeWwgPSB2eSAqIGxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJyYXRpbyA9IHJ1MiAvIChydjIgKyBydTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlycmF0aW8gPSAxIC0gcnJhdGlvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS4pOWFhOW8nyBjb21ibyDnmoTlrZDoioLngrnkuIrmlr3liqDmlqXliptcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bm9kZXMuZm9yRWFjaCgodm4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZuLml0ZW1UeXBlICE9PSBcIm5vZGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGVNYXBbdm4uaWRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBtZWFucyBpdCBpcyBoaWRkZW4sIHNraXAgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmluZGV4ID0gaW5kZXhNYXBbdm4uaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bm9kZXMuZm9yRWFjaCgodW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bi5pdGVtVHlwZSAhPT0gXCJub2RlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlTWFwW3VuLmlkXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG1lYW5zIGl0IGlzIGhpZGRlbiwgc2tpcCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWluZGV4ID0gaW5kZXhNYXBbdW4uaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t2aW5kZXhdLnggKz0geGwgKiBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3ZpbmRleF0ueSArPSB5bCAqIHJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdWluZGV4XS54IC09IHhsICogaXJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdWluZGV4XS55IC09IHlsICogaXJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIHJlcHVsc2l2ZSBmb3JjZSBiZXR3ZWVuIGVhY2ggbm9kZSBwYWlyXG4gICAgICogQHBhcmFtIGRpc3BsYWNlbWVudHMgVGhlIGFycmF5IHN0b3JlcyB0aGUgZGlzcGxhY2VtZW50cyBmb3Igbm9kZXNcbiAgICAgKiBAcGFyYW0gdmVjTWFwIFRoZSBtYXAgc3RvcmVzIHZlY3RvciBiZXR3ZWVuIGVhY2ggbm9kZSBwYWlyXG4gICAgICovXG4gICAgY2FsUmVwdWxzaXZlKGRpc3BsYWNlbWVudHMsIHZlY01hcCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBtYXggPSBzZWxmLndpZHRoICogc2VsZi5vcHRpbWl6ZVJhbmdlRmFjdG9yO1xuICAgICAgICBjb25zdCBub2RlU3RyZW5ndGggPSBzZWxmLm5vZGVTdHJlbmd0aDtcbiAgICAgICAgY29uc3QgYWxwaGEgPSBzZWxmLmFscGhhO1xuICAgICAgICBjb25zdCBub2RlQ29sbGlkZVN0cmVuZ3RoID0gc2VsZi5ub2RlQ29sbGlkZVN0cmVuZ3RoO1xuICAgICAgICBjb25zdCBwcmV2ZW50Tm9kZU92ZXJsYXAgPSBzZWxmLnByZXZlbnROb2RlT3ZlcmxhcDtcbiAgICAgICAgY29uc3Qgbm9kZVNpemVGdW5jID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgY29uc3Qgbm9kZVNwYWNpbmdGdW5jID0gc2VsZi5ub2RlU3BhY2luZztcbiAgICAgICAgY29uc3Qgc2NhbGUgPSBzZWxmLmRlcHRoUmVwdWxzaXZlRm9yY2VTY2FsZTtcbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICghdi54IHx8ICF2LnkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gY2VudGVyIGdyYXZpdHlcbiAgICAgICAgICAgIGlmIChjZW50ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncmF2aXR5ID0gc2VsZi5ncmF2aXR5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlY1ggPSAodi54IC0gY2VudGVyWzBdKSB8fCAwLjAwNTtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZWNZID0gKHYueSAtIGNlbnRlclsxXSkgfHwgMC4wMDU7XG4gICAgICAgICAgICAgICAgY29uc3QgbCA9IE1hdGguc3FydCh2ZWNYICogdmVjWCArIHZlY1kgKiB2ZWNZKTtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnggLT0gKHZlY1ggKiBncmF2aXR5ICogYWxwaGEpIC8gbDtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnkgLT0gKHZlY1kgKiBncmF2aXR5ICogYWxwaGEpIC8gbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKHUsIGopID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdS54IHx8ICF1LnkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHZsMiwgdmwgfSA9IHZlY01hcFtgJHt2LmlkfS0ke3UuaWR9YF07XG4gICAgICAgICAgICAgICAgaWYgKHZsID4gbWF4KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2eCwgdnkgfSA9IHZlY01hcFtgJHt2LmlkfS0ke3UuaWR9YF07XG4gICAgICAgICAgICAgICAgbGV0IGRlcHRoRGlmZiA9IE1hdGgubG9nKE1hdGguYWJzKHUuZGVwdGggLSB2LmRlcHRoKSAvIDEwKSArIDEgfHwgMTtcbiAgICAgICAgICAgICAgICBkZXB0aERpZmYgPSBkZXB0aERpZmYgPCAxID8gMSA6IGRlcHRoRGlmZjtcbiAgICAgICAgICAgICAgICBpZiAodS5jb21ib0lkICE9PSB2LmNvbWJvSWQpXG4gICAgICAgICAgICAgICAgICAgIGRlcHRoRGlmZiArPSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcHRoUGFyYW0gPSBkZXB0aERpZmYgPyBNYXRoLnBvdyhzY2FsZSwgZGVwdGhEaWZmKSA6IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gKChub2RlU3RyZW5ndGgodSkgKiBhbHBoYSkgLyB2bDIpICogZGVwdGhQYXJhbTtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldLnggKz0gdnggKiBwYXJhbXM7XG4gICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tpXS55ICs9IHZ5ICogcGFyYW1zO1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnQgbm9kZSBvdmVybGFwcGluZ3NcbiAgICAgICAgICAgICAgICBpZiAoaSA8IGogJiYgcHJldmVudE5vZGVPdmVybGFwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpID0gKG5vZGVTaXplRnVuYyh2KSArIG5vZGVTcGFjaW5nRnVuYyh2KSkgfHwgMTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmogPSAobm9kZVNpemVGdW5jKHUpICsgbm9kZVNwYWNpbmdGdW5jKHUpKSB8fCAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcmkgKyByajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZsMiA8IHIgKiByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbCA9ICgociAtIHZsKSAvIHZsKSAqIG5vZGVDb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByajIgPSByaiAqIHJqO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJyYXRpbyA9IHJqMiAvIChyaSAqIHJpICsgcmoyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhsID0gdnggKiBsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHlsID0gdnkgKiBsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbaV0ueCArPSB4bCAqIHJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbaV0ueSArPSB5bCAqIHJyYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJyYXRpbyA9IDEgLSBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2pdLnggLT0geGwgKiBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2pdLnkgLT0geWwgKiBycmF0aW87XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSB0aGUgYXR0cmFjdGl2ZSBmb3JjZSBiZXR3ZWVuIHRoZSBub2RlIHBhaXIgd2l0aCBlZGdlXG4gICAgICogQHBhcmFtIGRpc3BsYWNlbWVudHMgVGhlIGFycmF5IHN0b3JlcyB0aGUgZGlzcGxhY2VtZW50cyBmb3Igbm9kZXNcbiAgICAgKiBAcGFyYW0gdmVjTWFwIFRoZSBtYXAgc3RvcmVzIHZlY3RvciBiZXR3ZWVuIGVhY2ggbm9kZSBwYWlyXG4gICAgICovXG4gICAgY2FsQXR0cmFjdGl2ZShkaXNwbGFjZW1lbnRzLCB2ZWNNYXApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgY29uc3QgbGlua0Rpc3RhbmNlID0gc2VsZi5saW5rRGlzdGFuY2U7XG4gICAgICAgIGNvbnN0IGFscGhhID0gc2VsZi5hbHBoYTtcbiAgICAgICAgY29uc3QgZWRnZVN0cmVuZ3RoID0gc2VsZi5lZGdlU3RyZW5ndGg7XG4gICAgICAgIGNvbnN0IGJpYXMgPSBzZWxmLmJpYXM7XG4gICAgICAgIGNvbnN0IHNjYWxlID0gc2VsZi5kZXB0aEF0dHJhY3RpdmVGb3JjZVNjYWxlO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKChlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIGlmICghc291cmNlIHx8ICF0YXJnZXQgfHwgc291cmNlID09PSB0YXJnZXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgdUluZGV4ID0gc2VsZi5pbmRleE1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdkluZGV4ID0gc2VsZi5pbmRleE1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgY29uc3QgdSA9IHNlbGYubm9kZU1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdiA9IHNlbGYubm9kZU1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgaWYgKCF1IHx8ICF2KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGxldCBkZXB0aERpZmYgPSB1LmRlcHRoID09PSB2LmRlcHRoID8gMCA6IE1hdGgubG9nKE1hdGguYWJzKHUuZGVwdGggLSB2LmRlcHRoKSAvIDEwKTtcbiAgICAgICAgICAgIGlmICh1LmNvbWJvSWQgPT09IHYuY29tYm9JZCkge1xuICAgICAgICAgICAgICAgIGRlcHRoRGlmZiA9IGRlcHRoRGlmZiAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZGVwdGhQYXJhbSA9IGRlcHRoRGlmZiA/IE1hdGgucG93KHNjYWxlLCBkZXB0aERpZmYpIDogMTtcbiAgICAgICAgICAgIGlmICh1LmNvbWJvSWQgIT09IHYuY29tYm9JZCAmJiBkZXB0aFBhcmFtID09PSAxKSB7XG4gICAgICAgICAgICAgICAgZGVwdGhQYXJhbSA9IHNjYWxlIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHUuY29tYm9JZCA9PT0gdi5jb21ib0lkKSB7XG4gICAgICAgICAgICAgICAgZGVwdGhQYXJhbSA9IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzTnVtYmVyKHYueCkgfHwgIWlzTnVtYmVyKHUueCkgfHwgIWlzTnVtYmVyKHYueSkgfHwgIWlzTnVtYmVyKHUueSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHZsLCB2eCwgdnkgfSA9IHZlY01hcFtgJHt0YXJnZXR9LSR7c291cmNlfWBdO1xuICAgICAgICAgICAgY29uc3QgbCA9ICgodmwgLSBsaW5rRGlzdGFuY2UoZSkpIC8gdmwpICogYWxwaGEgKiBlZGdlU3RyZW5ndGgoZSkgKiBkZXB0aFBhcmFtO1xuICAgICAgICAgICAgY29uc3QgdmVjWCA9IHZ4ICogbDtcbiAgICAgICAgICAgIGNvbnN0IHZlY1kgPSB2eSAqIGw7XG4gICAgICAgICAgICBjb25zdCBiID0gYmlhc1tpXTtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdkluZGV4XS54IC09IHZlY1ggKiBiO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1t2SW5kZXhdLnkgLT0gdmVjWSAqIGI7XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3VJbmRleF0ueCArPSB2ZWNYICogKDEgLSBiKTtcbiAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbdUluZGV4XS55ICs9IHZlY1kgKiAoMSAtIGIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiY29tYm9Gb3JjZVwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbWJvRm9yY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/comboForce.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/concentric.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/concentric.js ***! \***************************************************************************************/ /*! exports provided: ConcentricLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConcentricLayout\", function() { return ConcentricLayout; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview concentric layout\n * @author shiwu.wyy@antfin.com\n * this algorithm refers to - https://github.com/cytoscape/cytoscape.js/\n */\n\n\n/**\n * 同心圆布局\n */\nclass ConcentricLayout extends _base__WEBPACK_IMPORTED_MODULE_1__[\"Base\"] {\n constructor(options) {\n super();\n this.nodeSize = 30;\n /** min spacing between outside of nodes (used for radius adjustment) */\n this.minNodeSpacing = 10;\n /** prevents node overlap, may overflow boundingBox if not enough space */\n this.preventOverlap = false;\n /** whether levels have an equal radial distance betwen them, may cause bounding box overflow */\n this.equidistant = false;\n /** where nodes start in radians */\n this.startAngle = (3 / 2) * Math.PI;\n /** whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) */\n this.clockwise = true;\n /** 根据 sortBy 指定的属性进行排布,数值高的放在中心,如果是 sortBy 则会计算节点度数,度数最高的放在中心 */\n this.sortBy = \"degree\";\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n nodeSize: 30,\n minNodeSpacing: 10,\n preventOverlap: false,\n sweep: undefined,\n equidistant: false,\n startAngle: (3 / 2) * Math.PI,\n clockwise: true,\n maxLevelDiff: undefined,\n sortBy: \"degree\"\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n if (n === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (n === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const layoutNodes = [];\n let maxNodeSize;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(self.nodeSize)) {\n maxNodeSize = Math.max(self.nodeSize[0], self.nodeSize[1]);\n }\n else {\n maxNodeSize = self.nodeSize;\n }\n nodes.forEach((node) => {\n layoutNodes.push(node);\n let nodeSize = maxNodeSize;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node.size)) {\n nodeSize = Math.max(node.size[0], node.size[1]);\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(node.size)) {\n nodeSize = node.size;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(node.size)) {\n nodeSize = Math.max(node.size.width, node.size.height);\n }\n maxNodeSize = Math.max(maxNodeSize, nodeSize);\n });\n self.clockwise =\n self.counterclockwise !== undefined\n ? !self.counterclockwise\n : self.clockwise;\n // layout\n const nodeMap = {};\n const indexMap = {};\n layoutNodes.forEach((node, i) => {\n nodeMap[node.id] = node;\n indexMap[node.id] = i;\n });\n // get the node degrees\n if (self.sortBy === \"degree\" ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(self.sortBy) ||\n layoutNodes[0][self.sortBy] === undefined) {\n self.sortBy = \"degree\";\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(nodes[0].degree)) {\n const values = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getDegree\"])(nodes.length, indexMap, edges);\n layoutNodes.forEach((node, i) => {\n node.degree = values[i];\n });\n }\n }\n // sort nodes by value\n layoutNodes.sort((n1, n2) => n2[self.sortBy] - n1[self.sortBy]);\n self.maxValueNode = layoutNodes[0];\n self.maxLevelDiff =\n self.maxLevelDiff || self.maxValueNode[self.sortBy] / 4;\n // put the values into levels\n const levels = [[]];\n let currentLevel = levels[0];\n layoutNodes.forEach((node) => {\n if (currentLevel.length > 0) {\n const diff = Math.abs(currentLevel[0][self.sortBy] - node[self.sortBy]);\n if (self.maxLevelDiff && diff >= self.maxLevelDiff) {\n currentLevel = [];\n levels.push(currentLevel);\n }\n }\n currentLevel.push(node);\n });\n // create positions for levels\n let minDist = maxNodeSize + self.minNodeSpacing; // min dist between nodes\n if (!self.preventOverlap) {\n // then strictly constrain to bb\n const firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n const maxR = Math.min(self.width, self.height) / 2 - minDist;\n const rStep = maxR / (levels.length + (firstLvlHasMulti ? 1 : 0));\n minDist = Math.min(minDist, rStep);\n }\n // find the metrics for each level\n let r = 0;\n levels.forEach((level) => {\n let sweep = self.sweep;\n if (sweep === undefined) {\n sweep = 2 * Math.PI - (2 * Math.PI) / level.length;\n }\n const dTheta = (level.dTheta = sweep / Math.max(1, level.length - 1));\n // calculate the radius\n if (level.length > 1 && self.preventOverlap) {\n // but only if more than one node (can't overlap)\n const dcos = Math.cos(dTheta) - Math.cos(0);\n const dsin = Math.sin(dTheta) - Math.sin(0);\n const rMin = Math.sqrt((minDist * minDist) / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n r = Math.max(rMin, r);\n }\n level.r = r;\n r += minDist;\n });\n if (self.equidistant) {\n let rDeltaMax = 0;\n let rr = 0;\n for (let i = 0; i < levels.length; i++) {\n const level = levels[i];\n const rDelta = level.r - rr;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n rr = 0;\n levels.forEach((level, i) => {\n if (i === 0) {\n rr = level.r;\n }\n level.r = rr;\n rr += rDeltaMax;\n });\n }\n // calculate the node positions\n levels.forEach((level) => {\n const dTheta = level.dTheta;\n const rr = level.r;\n level.forEach((node, j) => {\n const theta = self.startAngle + (self.clockwise ? 1 : -1) * dTheta * j;\n node.x = center[0] + rr * Math.cos(theta);\n node.y = center[1] + rr * Math.sin(theta);\n });\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n getType() {\n return \"concentric\";\n }\n}\n//# sourceMappingURL=concentric.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvY29uY2VudHJpYy5qcz8wMjNiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMyRTtBQUM3QztBQUM5QjtBQUNBO0FBQ0E7QUFDTywrQkFBK0IsMENBQUk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHFEQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBLHFCQUFxQixzREFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QiwrQkFBK0IsdURBQVM7QUFDeEM7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEZBQTBGO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixtQkFBbUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9jb25jZW50cmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGNvbmNlbnRyaWMgbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKiB0aGlzIGFsZ29yaXRobSByZWZlcnMgdG8gPGN5dG9zY2FwZS5qcz4gLSBodHRwczovL2dpdGh1Yi5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS5qcy9cbiAqL1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzQXJyYXksIGlzTnVtYmVyLCBnZXREZWdyZWUsIGlzT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi9iYXNlXCI7XG4vKipcbiAqIOWQjOW/g+WchuW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgQ29uY2VudHJpY0xheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5ub2RlU2l6ZSA9IDMwO1xuICAgICAgICAvKiogbWluIHNwYWNpbmcgYmV0d2VlbiBvdXRzaWRlIG9mIG5vZGVzICh1c2VkIGZvciByYWRpdXMgYWRqdXN0bWVudCkgKi9cbiAgICAgICAgdGhpcy5taW5Ob2RlU3BhY2luZyA9IDEwO1xuICAgICAgICAvKiogcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZSAqL1xuICAgICAgICB0aGlzLnByZXZlbnRPdmVybGFwID0gZmFsc2U7XG4gICAgICAgIC8qKiB3aGV0aGVyIGxldmVscyBoYXZlIGFuIGVxdWFsIHJhZGlhbCBkaXN0YW5jZSBiZXR3ZW4gdGhlbSwgbWF5IGNhdXNlIGJvdW5kaW5nIGJveCBvdmVyZmxvdyAqL1xuICAgICAgICB0aGlzLmVxdWlkaXN0YW50ID0gZmFsc2U7XG4gICAgICAgIC8qKiB3aGVyZSBub2RlcyBzdGFydCBpbiByYWRpYW5zICovXG4gICAgICAgIHRoaXMuc3RhcnRBbmdsZSA9ICgzIC8gMikgKiBNYXRoLlBJO1xuICAgICAgICAvKiogd2hldGhlciB0aGUgbGF5b3V0IHNob3VsZCBnbyBjbG9ja3dpc2UgKHRydWUpIG9yIGNvdW50ZXJjbG9ja3dpc2UvYW50aWNsb2Nrd2lzZSAoZmFsc2UpICovXG4gICAgICAgIHRoaXMuY2xvY2t3aXNlID0gdHJ1ZTtcbiAgICAgICAgLyoqIOagueaNriBzb3J0Qnkg5oyH5a6a55qE5bGe5oCn6L+b6KGM5o6S5biD77yM5pWw5YC86auY55qE5pS+5Zyo5Lit5b+D77yM5aaC5p6c5pivIHNvcnRCeSDliJnkvJrorqHnrpfoioLngrnluqbmlbDvvIzluqbmlbDmnIDpq5jnmoTmlL7lnKjkuK3lv4MgKi9cbiAgICAgICAgdGhpcy5zb3J0QnkgPSBcImRlZ3JlZVwiO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIC8qKiDov63ku6Pnu5PmnZ/nmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy5vbkxheW91dEVuZCA9ICgpID0+IHsgfTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlU2l6ZTogMzAsXG4gICAgICAgICAgICBtaW5Ob2RlU3BhY2luZzogMTAsXG4gICAgICAgICAgICBwcmV2ZW50T3ZlcmxhcDogZmFsc2UsXG4gICAgICAgICAgICBzd2VlcDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXF1aWRpc3RhbnQ6IGZhbHNlLFxuICAgICAgICAgICAgc3RhcnRBbmdsZTogKDMgLyAyKSAqIE1hdGguUEksXG4gICAgICAgICAgICBjbG9ja3dpc2U6IHRydWUsXG4gICAgICAgICAgICBtYXhMZXZlbERpZmY6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvcnRCeTogXCJkZWdyZWVcIlxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXM7XG4gICAgICAgIGNvbnN0IG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5jZW50ZXIpIHtcbiAgICAgICAgICAgIHNlbGYuY2VudGVyID0gW3NlbGYud2lkdGggLyAyLCBzZWxmLmhlaWdodCAvIDJdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBpZiAobiA9PT0gMSkge1xuICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBjZW50ZXJbMV07XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5b3V0Tm9kZXMgPSBbXTtcbiAgICAgICAgbGV0IG1heE5vZGVTaXplO1xuICAgICAgICBpZiAoaXNBcnJheShzZWxmLm5vZGVTaXplKSkge1xuICAgICAgICAgICAgbWF4Tm9kZVNpemUgPSBNYXRoLm1heChzZWxmLm5vZGVTaXplWzBdLCBzZWxmLm5vZGVTaXplWzFdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1heE5vZGVTaXplID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBsYXlvdXROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgbGV0IG5vZGVTaXplID0gbWF4Tm9kZVNpemU7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNpemUgPSBNYXRoLm1heChub2RlLnNpemVbMF0sIG5vZGUuc2l6ZVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc051bWJlcihub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNpemUgPSBub2RlLnNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc09iamVjdChub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNpemUgPSBNYXRoLm1heChub2RlLnNpemUud2lkdGgsIG5vZGUuc2l6ZS5oZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF4Tm9kZVNpemUgPSBNYXRoLm1heChtYXhOb2RlU2l6ZSwgbm9kZVNpemUpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5jbG9ja3dpc2UgPVxuICAgICAgICAgICAgc2VsZi5jb3VudGVyY2xvY2t3aXNlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/ICFzZWxmLmNvdW50ZXJjbG9ja3dpc2VcbiAgICAgICAgICAgICAgICA6IHNlbGYuY2xvY2t3aXNlO1xuICAgICAgICAvLyBsYXlvdXRcbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICBjb25zdCBpbmRleE1hcCA9IHt9O1xuICAgICAgICBsYXlvdXROb2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgICAgICAgICAgIGluZGV4TWFwW25vZGUuaWRdID0gaTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGdldCB0aGUgbm9kZSBkZWdyZWVzXG4gICAgICAgIGlmIChzZWxmLnNvcnRCeSA9PT0gXCJkZWdyZWVcIiB8fFxuICAgICAgICAgICAgIWlzU3RyaW5nKHNlbGYuc29ydEJ5KSB8fFxuICAgICAgICAgICAgbGF5b3V0Tm9kZXNbMF1bc2VsZi5zb3J0QnldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNlbGYuc29ydEJ5ID0gXCJkZWdyZWVcIjtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZXNbMF0uZGVncmVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IGdldERlZ3JlZShub2Rlcy5sZW5ndGgsIGluZGV4TWFwLCBlZGdlcyk7XG4gICAgICAgICAgICAgICAgbGF5b3V0Tm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBub2RlLmRlZ3JlZSA9IHZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzb3J0IG5vZGVzIGJ5IHZhbHVlXG4gICAgICAgIGxheW91dE5vZGVzLnNvcnQoKG4xLCBuMikgPT4gbjJbc2VsZi5zb3J0QnldIC0gbjFbc2VsZi5zb3J0QnldKTtcbiAgICAgICAgc2VsZi5tYXhWYWx1ZU5vZGUgPSBsYXlvdXROb2Rlc1swXTtcbiAgICAgICAgc2VsZi5tYXhMZXZlbERpZmYgPVxuICAgICAgICAgICAgc2VsZi5tYXhMZXZlbERpZmYgfHwgc2VsZi5tYXhWYWx1ZU5vZGVbc2VsZi5zb3J0QnldIC8gNDtcbiAgICAgICAgLy8gcHV0IHRoZSB2YWx1ZXMgaW50byBsZXZlbHNcbiAgICAgICAgY29uc3QgbGV2ZWxzID0gW1tdXTtcbiAgICAgICAgbGV0IGN1cnJlbnRMZXZlbCA9IGxldmVsc1swXTtcbiAgICAgICAgbGF5b3V0Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRMZXZlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGN1cnJlbnRMZXZlbFswXVtzZWxmLnNvcnRCeV0gLSBub2RlW3NlbGYuc29ydEJ5XSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYubWF4TGV2ZWxEaWZmICYmIGRpZmYgPj0gc2VsZi5tYXhMZXZlbERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudExldmVsID0gW107XG4gICAgICAgICAgICAgICAgICAgIGxldmVscy5wdXNoKGN1cnJlbnRMZXZlbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudExldmVsLnB1c2gobm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjcmVhdGUgcG9zaXRpb25zIGZvciBsZXZlbHNcbiAgICAgICAgbGV0IG1pbkRpc3QgPSBtYXhOb2RlU2l6ZSArIHNlbGYubWluTm9kZVNwYWNpbmc7IC8vIG1pbiBkaXN0IGJldHdlZW4gbm9kZXNcbiAgICAgICAgaWYgKCFzZWxmLnByZXZlbnRPdmVybGFwKSB7XG4gICAgICAgICAgICAvLyB0aGVuIHN0cmljdGx5IGNvbnN0cmFpbiB0byBiYlxuICAgICAgICAgICAgY29uc3QgZmlyc3RMdmxIYXNNdWx0aSA9IGxldmVscy5sZW5ndGggPiAwICYmIGxldmVsc1swXS5sZW5ndGggPiAxO1xuICAgICAgICAgICAgY29uc3QgbWF4UiA9IE1hdGgubWluKHNlbGYud2lkdGgsIHNlbGYuaGVpZ2h0KSAvIDIgLSBtaW5EaXN0O1xuICAgICAgICAgICAgY29uc3QgclN0ZXAgPSBtYXhSIC8gKGxldmVscy5sZW5ndGggKyAoZmlyc3RMdmxIYXNNdWx0aSA/IDEgOiAwKSk7XG4gICAgICAgICAgICBtaW5EaXN0ID0gTWF0aC5taW4obWluRGlzdCwgclN0ZXApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZpbmQgdGhlIG1ldHJpY3MgZm9yIGVhY2ggbGV2ZWxcbiAgICAgICAgbGV0IHIgPSAwO1xuICAgICAgICBsZXZlbHMuZm9yRWFjaCgobGV2ZWwpID0+IHtcbiAgICAgICAgICAgIGxldCBzd2VlcCA9IHNlbGYuc3dlZXA7XG4gICAgICAgICAgICBpZiAoc3dlZXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN3ZWVwID0gMiAqIE1hdGguUEkgLSAoMiAqIE1hdGguUEkpIC8gbGV2ZWwubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZFRoZXRhID0gKGxldmVsLmRUaGV0YSA9IHN3ZWVwIC8gTWF0aC5tYXgoMSwgbGV2ZWwubGVuZ3RoIC0gMSkpO1xuICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSByYWRpdXNcbiAgICAgICAgICAgIGlmIChsZXZlbC5sZW5ndGggPiAxICYmIHNlbGYucHJldmVudE92ZXJsYXApIHtcbiAgICAgICAgICAgICAgICAvLyBidXQgb25seSBpZiBtb3JlIHRoYW4gb25lIG5vZGUgKGNhbid0IG92ZXJsYXApXG4gICAgICAgICAgICAgICAgY29uc3QgZGNvcyA9IE1hdGguY29zKGRUaGV0YSkgLSBNYXRoLmNvcygwKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkc2luID0gTWF0aC5zaW4oZFRoZXRhKSAtIE1hdGguc2luKDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJNaW4gPSBNYXRoLnNxcnQoKG1pbkRpc3QgKiBtaW5EaXN0KSAvIChkY29zICogZGNvcyArIGRzaW4gKiBkc2luKSk7IC8vIHMudC4gbm8gbm9kZXMgb3ZlcmxhcHBpbmdcbiAgICAgICAgICAgICAgICByID0gTWF0aC5tYXgock1pbiwgcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXZlbC5yID0gcjtcbiAgICAgICAgICAgIHIgKz0gbWluRGlzdDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZWxmLmVxdWlkaXN0YW50KSB7XG4gICAgICAgICAgICBsZXQgckRlbHRhTWF4ID0gMDtcbiAgICAgICAgICAgIGxldCByciA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxldmVscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxldmVsID0gbGV2ZWxzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJEZWx0YSA9IGxldmVsLnIgLSBycjtcbiAgICAgICAgICAgICAgICByRGVsdGFNYXggPSBNYXRoLm1heChyRGVsdGFNYXgsIHJEZWx0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByciA9IDA7XG4gICAgICAgICAgICBsZXZlbHMuZm9yRWFjaCgobGV2ZWwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByciA9IGxldmVsLnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldmVsLnIgPSBycjtcbiAgICAgICAgICAgICAgICByciArPSByRGVsdGFNYXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIG5vZGUgcG9zaXRpb25zXG4gICAgICAgIGxldmVscy5mb3JFYWNoKChsZXZlbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZFRoZXRhID0gbGV2ZWwuZFRoZXRhO1xuICAgICAgICAgICAgY29uc3QgcnIgPSBsZXZlbC5yO1xuICAgICAgICAgICAgbGV2ZWwuZm9yRWFjaCgobm9kZSwgaikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoZXRhID0gc2VsZi5zdGFydEFuZ2xlICsgKHNlbGYuY2xvY2t3aXNlID8gMSA6IC0xKSAqIGRUaGV0YSAqIGo7XG4gICAgICAgICAgICAgICAgbm9kZS54ID0gY2VudGVyWzBdICsgcnIgKiBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICAgICAgICAgICAgbm9kZS55ID0gY2VudGVyWzFdICsgcnIgKiBNYXRoLnNpbih0aGV0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICBlZGdlc1xuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJjb25jZW50cmljXCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uY2VudHJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/concentric.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/constants.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/constants.js ***! \**************************************************************************************/ /*! exports provided: LAYOUT_MESSAGE */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LAYOUT_MESSAGE\", function() { return LAYOUT_MESSAGE; });\n/** layout message type */\nconst LAYOUT_MESSAGE = {\n // run layout\n RUN: \"LAYOUT_RUN\",\n // layout ended with success\n END: \"LAYOUT_END\",\n // layout error\n ERROR: \"LAYOUT_ERROR\",\n // layout tick, used in force directed layout\n TICK: \"LAYOUT_TICK\",\n GPURUN: \"GPU_LAYOUT_RUN\",\n GPUEND: \"GPU_LAYOUT_END\"\n};\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvY29uc3RhbnRzLmpzPzdhYTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvY29uc3RhbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIGxheW91dCBtZXNzYWdlIHR5cGUgKi9cbmV4cG9ydCBjb25zdCBMQVlPVVRfTUVTU0FHRSA9IHtcbiAgICAvLyBydW4gbGF5b3V0XG4gICAgUlVOOiBcIkxBWU9VVF9SVU5cIixcbiAgICAvLyBsYXlvdXQgZW5kZWQgd2l0aCBzdWNjZXNzXG4gICAgRU5EOiBcIkxBWU9VVF9FTkRcIixcbiAgICAvLyBsYXlvdXQgZXJyb3JcbiAgICBFUlJPUjogXCJMQVlPVVRfRVJST1JcIixcbiAgICAvLyBsYXlvdXQgdGljaywgdXNlZCBpbiBmb3JjZSBkaXJlY3RlZCBsYXlvdXRcbiAgICBUSUNLOiBcIkxBWU9VVF9USUNLXCIsXG4gICAgR1BVUlVOOiBcIkdQVV9MQVlPVVRfUlVOXCIsXG4gICAgR1BVRU5EOiBcIkdQVV9MQVlPVVRfRU5EXCJcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb25zdGFudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/constants.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/dagre.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/dagre.js ***! \**********************************************************************************/ /*! exports provided: DagreLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DagreLayout\", function() { return DagreLayout; });\n/* harmony import */ var dagrejs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagrejs */ \"./node_modules/_dagrejs@0.2.1@dagrejs/index.js\");\n/* harmony import */ var dagrejs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dagrejs__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n/**\n * 层次布局\n */\nclass DagreLayout extends _base__WEBPACK_IMPORTED_MODULE_2__[\"Base\"] {\n constructor(options) {\n super();\n /** layout 方向, 可选 TB, BT, LR, RL */\n this.rankdir = \"TB\";\n /** 节点水平间距(px) */\n this.nodesep = 50;\n /** 每一层节点之间间距 */\n this.ranksep = 50;\n /** 是否保留布局连线的控制点 */\n this.controlPoints = false;\n /** 每层节点是否根据节点数据中的 comboId 进行排序,以防止同层 combo 重叠 */\n this.sortByCombo = false;\n /** 是否保留每条边上的dummy node */\n this.edgeLabelSpace = true;\n /** 是否按照给定的节点顺序排序 */\n this.keepNodeOrder = false;\n this.nodes = [];\n this.edges = [];\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.layoutNode = (nodeId) => {\n const self = this;\n const { nodes } = self;\n const node = nodes.find(node => node.id === nodeId);\n if (node) {\n const layout = node.layout !== false;\n return layout;\n }\n return true;\n };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n rankdir: \"TB\",\n align: undefined,\n nodeSize: undefined,\n nodesepFunc: undefined,\n ranksepFunc: undefined,\n nodesep: 50,\n ranksep: 50,\n controlPoints: false, // 是否保留布局连线的控制点\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const { nodes, nodeSize, rankdir, combos } = self;\n if (!nodes)\n return;\n const edges = self.edges || [];\n const g = new dagrejs__WEBPACK_IMPORTED_MODULE_0___default.a.graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n let nodeSizeFunc;\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d.size)) {\n return d.size;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(d.size)) {\n return [d.size.width || 40, d.size.height || 40];\n }\n return [d.size, d.size];\n }\n return [40, 40];\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(nodeSize)) {\n nodeSizeFunc = () => nodeSize;\n }\n else {\n nodeSizeFunc = () => [nodeSize, nodeSize];\n }\n let horisep = getFunc(self.nodesepFunc, self.nodesep, 50);\n let vertisep = getFunc(self.ranksepFunc, self.ranksep, 50);\n if (rankdir === \"LR\" || rankdir === \"RL\") {\n horisep = getFunc(self.ranksepFunc, self.ranksep, 50);\n vertisep = getFunc(self.nodesepFunc, self.nodesep, 50);\n }\n g.setDefaultEdgeLabel(() => ({}));\n g.setGraph(self);\n const comboMap = {};\n nodes.filter((node) => node.layout !== false).forEach((node) => {\n const size = nodeSizeFunc(node);\n const verti = vertisep(node);\n const hori = horisep(node);\n const width = size[0] + 2 * hori;\n const height = size[1] + 2 * verti;\n const layer = node.layer;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(layer)) {\n // 如果有layer属性,加入到node的label中\n g.setNode(node.id, { width, height, layer });\n }\n else {\n g.setNode(node.id, { width, height });\n }\n if (this.sortByCombo && node.comboId) {\n if (!comboMap[node.comboId]) {\n comboMap[node.comboId] = true;\n g.setNode(node.comboId, {});\n }\n g.setParent(node.id, node.comboId);\n }\n });\n if (this.sortByCombo && combos) {\n combos.forEach((combo) => {\n if (!combo.parentId)\n return;\n if (!comboMap[combo.parentId]) {\n comboMap[combo.parentId] = true;\n g.setNode(combo.parentId, {});\n }\n g.setParent(combo.id, combo.parentId);\n });\n }\n edges.forEach((edge) => {\n // dagrejs Wiki https://github.com/dagrejs/dagre/wiki#configuring-the-layout\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'target');\n if (this.layoutNode(source) && this.layoutNode(target)) {\n g.setEdge(source, target, {\n weight: edge.weight || 1,\n });\n }\n });\n // 考虑增量图中的原始图\n let prevGraph = undefined;\n if (self.preset) {\n prevGraph = new dagrejs__WEBPACK_IMPORTED_MODULE_0___default.a.graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n self.preset.nodes.forEach((node) => {\n prevGraph === null || prevGraph === void 0 ? void 0 : prevGraph.setNode(node.id, node);\n });\n }\n dagrejs__WEBPACK_IMPORTED_MODULE_0___default.a.layout(g, {\n prevGraph,\n edgeLabelSpace: self.edgeLabelSpace,\n keepNodeOrder: self.keepNodeOrder,\n nodeOrder: self.nodeOrder,\n });\n let coord;\n g.nodes().forEach((node) => {\n coord = g.node(node);\n const i = nodes.findIndex((it) => it.id === node);\n if (!nodes[i])\n return;\n nodes[i].x = coord.x;\n nodes[i].y = coord.y;\n // @ts-ignore: pass layer order to data for increment layout use\n nodes[i]._order = coord._order;\n });\n g.edges().forEach((edge) => {\n coord = g.edge(edge);\n const i = edges.findIndex((it) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(it, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(it, 'target');\n return source === edge.v && target === edge.w;\n });\n if ((self.edgeLabelSpace) && self.controlPoints && edges[i].type !== \"loop\") {\n edges[i].controlPoints = coord.points.slice(1, coord.points.length - 1);\n }\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges,\n };\n }\n getType() {\n return \"dagre\";\n }\n}\nfunction getFunc(func, value, defaultValue) {\n let resultFunc;\n if (func) {\n resultFunc = func;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n resultFunc = () => value;\n }\n else {\n resultFunc = () => defaultValue;\n }\n return resultFunc;\n}\n//# sourceMappingURL=dagre.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZGFncmUuanM/MjlhNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QjtBQUMyQztBQUN6QztBQUM5QjtBQUNBO0FBQ0E7QUFDTywwQkFBMEIsMENBQUk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1DQUFtQztBQUNsRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsOENBQUs7QUFDM0I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixxREFBTztBQUMvQjtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFEQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFRO0FBQ3hCO0FBQ0Esb0NBQW9DLHVCQUF1QjtBQUMzRDtBQUNBO0FBQ0Esb0NBQW9DLGdCQUFnQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDZEQUFlO0FBQzFDLDJCQUEyQiw2REFBZTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFLO0FBQ2pDO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFFBQVEsOENBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsNkRBQWU7QUFDOUMsK0JBQStCLDZEQUFlO0FBQzlDO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9kYWdyZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyByYW5kb20gbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKi9cbmltcG9ydCBkYWdyZSBmcm9tIFwiZGFncmVqc1wiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOdW1iZXIsIGlzT2JqZWN0LCBnZXRFZGdlVGVybWluYWwgfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuL2Jhc2VcIjtcbi8qKlxuICog5bGC5qyh5biD5bGAXG4gKi9cbmV4cG9ydCBjbGFzcyBEYWdyZUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIGxheW91dCDmlrnlkJEsIOWPr+mAiSBUQiwgQlQsIExSLCBSTCAqL1xuICAgICAgICB0aGlzLnJhbmtkaXIgPSBcIlRCXCI7XG4gICAgICAgIC8qKiDoioLngrnmsLTlubPpl7Tot50ocHgpICovXG4gICAgICAgIHRoaXMubm9kZXNlcCA9IDUwO1xuICAgICAgICAvKiog5q+P5LiA5bGC6IqC54K55LmL6Ze06Ze06LedICovXG4gICAgICAgIHRoaXMucmFua3NlcCA9IDUwO1xuICAgICAgICAvKiog5piv5ZCm5L+d55WZ5biD5bGA6L+e57q/55qE5o6n5Yi254K5ICovXG4gICAgICAgIHRoaXMuY29udHJvbFBvaW50cyA9IGZhbHNlO1xuICAgICAgICAvKiog5q+P5bGC6IqC54K55piv5ZCm5qC55o2u6IqC54K55pWw5o2u5Lit55qEIGNvbWJvSWQg6L+b6KGM5o6S5bqP77yM5Lul6Ziy5q2i5ZCM5bGCIGNvbWJvIOmHjeWPoCAqL1xuICAgICAgICB0aGlzLnNvcnRCeUNvbWJvID0gZmFsc2U7XG4gICAgICAgIC8qKiDmmK/lkKbkv53nlZnmr4/mnaHovrnkuIrnmoRkdW1teSBub2RlICovXG4gICAgICAgIHRoaXMuZWRnZUxhYmVsU3BhY2UgPSB0cnVlO1xuICAgICAgICAvKiog5piv5ZCm5oyJ54Wn57uZ5a6a55qE6IqC54K56aG65bqP5o6S5bqPICovXG4gICAgICAgIHRoaXMua2VlcE5vZGVPcmRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICB0aGlzLmxheW91dE5vZGUgPSAobm9kZUlkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IHsgbm9kZXMgfSA9IHNlbGY7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IG5vZGVJZCk7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxheW91dCA9IG5vZGUubGF5b3V0ICE9PSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGF5b3V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmFua2RpcjogXCJUQlwiLFxuICAgICAgICAgICAgYWxpZ246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5vZGVTaXplOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2Rlc2VwRnVuYzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmFua3NlcEZ1bmM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5vZGVzZXA6IDUwLFxuICAgICAgICAgICAgcmFua3NlcDogNTAsXG4gICAgICAgICAgICBjb250cm9sUG9pbnRzOiBmYWxzZSwgLy8g5piv5ZCm5L+d55WZ5biD5bGA6L+e57q/55qE5o6n5Yi254K5XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG5vZGVzLCBub2RlU2l6ZSwgcmFua2RpciwgY29tYm9zIH0gPSBzZWxmO1xuICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXMgfHwgW107XG4gICAgICAgIGNvbnN0IGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgICAgICAgICAgbXVsdGlncmFwaDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbXBvdW5kOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG5vZGVTaXplRnVuYztcbiAgICAgICAgaWYgKCFub2RlU2l6ZSkge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnNpemU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbZC5zaXplLndpZHRoIHx8IDQwLCBkLnNpemUuaGVpZ2h0IHx8IDQwXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2Quc2l6ZSwgZC5zaXplXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFs0MCwgNDBdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0FycmF5KG5vZGVTaXplKSkge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKCkgPT4gbm9kZVNpemU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoKSA9PiBbbm9kZVNpemUsIG5vZGVTaXplXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaG9yaXNlcCA9IGdldEZ1bmMoc2VsZi5ub2Rlc2VwRnVuYywgc2VsZi5ub2Rlc2VwLCA1MCk7XG4gICAgICAgIGxldCB2ZXJ0aXNlcCA9IGdldEZ1bmMoc2VsZi5yYW5rc2VwRnVuYywgc2VsZi5yYW5rc2VwLCA1MCk7XG4gICAgICAgIGlmIChyYW5rZGlyID09PSBcIkxSXCIgfHwgcmFua2RpciA9PT0gXCJSTFwiKSB7XG4gICAgICAgICAgICBob3Jpc2VwID0gZ2V0RnVuYyhzZWxmLnJhbmtzZXBGdW5jLCBzZWxmLnJhbmtzZXAsIDUwKTtcbiAgICAgICAgICAgIHZlcnRpc2VwID0gZ2V0RnVuYyhzZWxmLm5vZGVzZXBGdW5jLCBzZWxmLm5vZGVzZXAsIDUwKTtcbiAgICAgICAgfVxuICAgICAgICBnLnNldERlZmF1bHRFZGdlTGFiZWwoKCkgPT4gKHt9KSk7XG4gICAgICAgIGcuc2V0R3JhcGgoc2VsZik7XG4gICAgICAgIGNvbnN0IGNvbWJvTWFwID0ge307XG4gICAgICAgIG5vZGVzLmZpbHRlcigobm9kZSkgPT4gbm9kZS5sYXlvdXQgIT09IGZhbHNlKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaXplID0gbm9kZVNpemVGdW5jKG5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdmVydGkgPSB2ZXJ0aXNlcChub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGhvcmkgPSBob3Jpc2VwKG5vZGUpO1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBzaXplWzBdICsgMiAqIGhvcmk7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBzaXplWzFdICsgMiAqIHZlcnRpO1xuICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSBub2RlLmxheWVyO1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGxheWVyKSkge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOaciWxheWVy5bGe5oCn77yM5Yqg5YWl5Yiwbm9kZeeahGxhYmVs5LitXG4gICAgICAgICAgICAgICAgZy5zZXROb2RlKG5vZGUuaWQsIHsgd2lkdGgsIGhlaWdodCwgbGF5ZXIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnLnNldE5vZGUobm9kZS5pZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc29ydEJ5Q29tYm8gJiYgbm9kZS5jb21ib0lkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjb21ib01hcFtub2RlLmNvbWJvSWRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJvTWFwW25vZGUuY29tYm9JZF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBnLnNldE5vZGUobm9kZS5jb21ib0lkLCB7fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGcuc2V0UGFyZW50KG5vZGUuaWQsIG5vZGUuY29tYm9JZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zb3J0QnlDb21ibyAmJiBjb21ib3MpIHtcbiAgICAgICAgICAgIGNvbWJvcy5mb3JFYWNoKChjb21ibykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29tYm8ucGFyZW50SWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbWJvTWFwW2NvbWJvLnBhcmVudElkXSkge1xuICAgICAgICAgICAgICAgICAgICBjb21ib01hcFtjb21iby5wYXJlbnRJZF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBnLnNldE5vZGUoY29tYm8ucGFyZW50SWQsIHt9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZy5zZXRQYXJlbnQoY29tYm8uaWQsIGNvbWJvLnBhcmVudElkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgICAgICAgIC8vIGRhZ3JlanMgV2lraSBodHRwczovL2dpdGh1Yi5jb20vZGFncmVqcy9kYWdyZS93aWtpI2NvbmZpZ3VyaW5nLXRoZS1sYXlvdXRcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlZGdlLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZWRnZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0Tm9kZShzb3VyY2UpICYmIHRoaXMubGF5b3V0Tm9kZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgZy5zZXRFZGdlKHNvdXJjZSwgdGFyZ2V0LCB7XG4gICAgICAgICAgICAgICAgICAgIHdlaWdodDogZWRnZS53ZWlnaHQgfHwgMSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOiAg+iZkeWinumHj+WbvuS4reeahOWOn+Wni+WbvlxuICAgICAgICBsZXQgcHJldkdyYXBoID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoc2VsZi5wcmVzZXQpIHtcbiAgICAgICAgICAgIHByZXZHcmFwaCA9IG5ldyBkYWdyZS5ncmFwaGxpYi5HcmFwaCh7XG4gICAgICAgICAgICAgICAgbXVsdGlncmFwaDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb21wb3VuZDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZi5wcmVzZXQubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHByZXZHcmFwaCA9PT0gbnVsbCB8fCBwcmV2R3JhcGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IHByZXZHcmFwaC5zZXROb2RlKG5vZGUuaWQsIG5vZGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZGFncmUubGF5b3V0KGcsIHtcbiAgICAgICAgICAgIHByZXZHcmFwaCxcbiAgICAgICAgICAgIGVkZ2VMYWJlbFNwYWNlOiBzZWxmLmVkZ2VMYWJlbFNwYWNlLFxuICAgICAgICAgICAga2VlcE5vZGVPcmRlcjogc2VsZi5rZWVwTm9kZU9yZGVyLFxuICAgICAgICAgICAgbm9kZU9yZGVyOiBzZWxmLm5vZGVPcmRlcixcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBjb29yZDtcbiAgICAgICAgZy5ub2RlcygpLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvb3JkID0gZy5ub2RlKG5vZGUpO1xuICAgICAgICAgICAgY29uc3QgaSA9IG5vZGVzLmZpbmRJbmRleCgoaXQpID0+IGl0LmlkID09PSBub2RlKTtcbiAgICAgICAgICAgIGlmICghbm9kZXNbaV0pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbm9kZXNbaV0ueCA9IGNvb3JkLng7XG4gICAgICAgICAgICBub2Rlc1tpXS55ID0gY29vcmQueTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmU6IHBhc3MgbGF5ZXIgb3JkZXIgdG8gZGF0YSBmb3IgaW5jcmVtZW50IGxheW91dCB1c2VcbiAgICAgICAgICAgIG5vZGVzW2ldLl9vcmRlciA9IGNvb3JkLl9vcmRlcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGcuZWRnZXMoKS5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICAgICAgICBjb29yZCA9IGcuZWRnZShlZGdlKTtcbiAgICAgICAgICAgIGNvbnN0IGkgPSBlZGdlcy5maW5kSW5kZXgoKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGl0LCAnc291cmNlJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGl0LCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSA9PT0gZWRnZS52ICYmIHRhcmdldCA9PT0gZWRnZS53O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoKHNlbGYuZWRnZUxhYmVsU3BhY2UpICYmIHNlbGYuY29udHJvbFBvaW50cyAmJiBlZGdlc1tpXS50eXBlICE9PSBcImxvb3BcIikge1xuICAgICAgICAgICAgICAgIGVkZ2VzW2ldLmNvbnRyb2xQb2ludHMgPSBjb29yZC5wb2ludHMuc2xpY2UoMSwgY29vcmQucG9pbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJkYWdyZVwiO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldEZ1bmMoZnVuYywgdmFsdWUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIGxldCByZXN1bHRGdW5jO1xuICAgIGlmIChmdW5jKSB7XG4gICAgICAgIHJlc3VsdEZ1bmMgPSBmdW5jO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0RnVuYyA9ICgpID0+IHZhbHVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0RnVuYyA9ICgpID0+IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdEZ1bmM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYWdyZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/dagre.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force-in-a-box.js": /*!*************************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force-in-a-box.js ***! \*************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return forceInABox; });\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-force */ \"./node_modules/_d3-force@2.1.1@d3-force/src/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n\n\n// https://github.com/john-guerra/forceInABox/blob/master/src/forceInABox.js\nfunction forceInABox() {\n function constant(_) {\n return () => _;\n }\n let groupBy = (d) => {\n return d.cluster;\n };\n let forceNodeSize = constant(1);\n let forceCharge = constant(-1);\n let forceLinkDistance = constant(100);\n let forceLinkStrength = constant(0.1);\n let offset = [0, 0];\n let nodes = [];\n let nodesMap = {};\n let links = [];\n let centerX = 100;\n let centerY = 100;\n let foci = {\n none: {\n x: 0,\n y: 0,\n },\n };\n let templateNodes = [];\n let templateForce;\n let template = 'force';\n let enableGrouping = true;\n let strength = 0.1;\n function force(alpha) {\n if (!enableGrouping) {\n return force;\n }\n templateForce.tick();\n getFocisFromTemplate();\n for (let i = 0, n = nodes.length, node, k = alpha * strength; i < n; ++i) {\n node = nodes[i];\n node.vx += (foci[groupBy(node)].x - node.x) * k;\n node.vy += (foci[groupBy(node)].y - node.y) * k;\n }\n }\n function initialize() {\n if (!nodes)\n return;\n initializeWithForce();\n }\n function initializeWithForce() {\n if (!nodes || !nodes.length) {\n return;\n }\n if (groupBy(nodes[0]) === undefined) {\n throw Error(\"Couldnt find the grouping attribute for the nodes. Make sure to set it up with forceInABox.groupBy('clusterAttr') before calling .links()\");\n }\n // checkLinksAsObjects();\n const net = getGroupsGraph();\n templateForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceSimulation\"](net.nodes)\n .force('x', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceX\"](centerX).strength(0.1))\n .force('y', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceY\"](centerY).strength(0.1))\n .force('collide', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCollide\"]((d) => d.r).iterations(4))\n .force('charge', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceManyBody\"]().strength(forceCharge))\n .force('links', d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"](net.nodes.length ? net.links : [])\n .distance(forceLinkDistance)\n .strength(forceLinkStrength));\n templateNodes = templateForce.nodes();\n getFocisFromTemplate();\n }\n function getGroupsGraph() {\n const gnodes = [];\n const glinks = [];\n const dNodes = {};\n let clustersList = [];\n let clustersCounts = {};\n let clustersLinks = [];\n clustersCounts = computeClustersNodeCounts(nodes);\n clustersLinks = computeClustersLinkCounts(links);\n clustersList = Object.keys(clustersCounts);\n clustersList.forEach((key, index) => {\n const val = clustersCounts[key];\n // Uses approx meta-node size\n gnodes.push({\n id: key,\n size: val.count,\n r: Math.sqrt(val.sumforceNodeSize / Math.PI),\n });\n dNodes[key] = index;\n });\n clustersLinks.forEach((l) => {\n const sourceTerminal = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'source');\n const targetTerminal = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'target');\n const source = dNodes[sourceTerminal];\n const target = dNodes[targetTerminal];\n if (source !== undefined && target !== undefined) {\n glinks.push({\n source,\n target,\n count: l.count,\n });\n }\n });\n return {\n nodes: gnodes,\n links: glinks,\n };\n }\n function computeClustersNodeCounts(nodes) {\n const clustersCounts = {};\n nodes.forEach((d) => {\n const key = groupBy(d);\n if (!clustersCounts[key]) {\n clustersCounts[key] = {\n count: 0,\n sumforceNodeSize: 0,\n };\n }\n });\n nodes.forEach((d) => {\n const key = groupBy(d);\n const nodeSize = forceNodeSize(d);\n const tmpCount = clustersCounts[key];\n tmpCount.count = tmpCount.count + 1;\n tmpCount.sumforceNodeSize =\n tmpCount.sumforceNodeSize + Math.PI * (nodeSize * nodeSize) * 1.3;\n clustersCounts[key] = tmpCount;\n });\n return clustersCounts;\n }\n function computeClustersLinkCounts(links) {\n const dClusterLinks = {};\n const clusterLinks = [];\n links.forEach((l) => {\n const key = getLinkKey(l);\n let count = 0;\n if (dClusterLinks[key] !== undefined) {\n count = dClusterLinks[key];\n }\n count += 1;\n dClusterLinks[key] = count;\n });\n const entries = Object.entries(dClusterLinks);\n entries.forEach(([key, count]) => {\n const source = key.split('~')[0];\n const target = key.split('~')[1];\n if (source !== undefined && target !== undefined) {\n clusterLinks.push({\n source,\n target,\n count,\n });\n }\n });\n return clusterLinks;\n }\n function getFocisFromTemplate() {\n foci = {\n none: {\n x: 0,\n y: 0,\n },\n };\n templateNodes.forEach((d) => {\n foci[d.id] = {\n x: d.x - offset[0],\n y: d.y - offset[1],\n };\n });\n return foci;\n }\n function getLinkKey(l) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(l, 'target');\n const sourceID = groupBy(nodesMap[source]);\n const targetID = groupBy(nodesMap[target]);\n return sourceID <= targetID\n ? `${sourceID}~${targetID}`\n : `${targetID}~${sourceID}`;\n }\n function genNodesMap(nodes) {\n nodesMap = {};\n nodes.forEach((node) => {\n nodesMap[node.id] = node;\n });\n }\n function setTemplate(x) {\n if (!arguments.length)\n return template;\n template = x;\n initialize();\n return force;\n }\n function setGroupBy(x) {\n if (!arguments.length)\n return groupBy;\n if (typeof x === 'string') {\n groupBy = (d) => {\n return d[x];\n };\n return force;\n }\n groupBy = x;\n return force;\n }\n function setEnableGrouping(x) {\n if (!arguments.length)\n return enableGrouping;\n enableGrouping = x;\n return force;\n }\n function setStrength(x) {\n if (!arguments.length)\n return strength;\n strength = x;\n return force;\n }\n function setCenterX(_) {\n if (arguments.length) {\n centerX = _;\n return force;\n }\n return centerX;\n }\n function setCenterY(_) {\n if (arguments.length) {\n centerY = _;\n return force;\n }\n return centerY;\n }\n function setNodes(_) {\n if (arguments.length) {\n genNodesMap(_ || []);\n nodes = _ || [];\n return force;\n }\n return nodes;\n }\n function setLinks(_) {\n if (arguments.length) {\n links = _ || [];\n initialize();\n return force;\n }\n return links;\n }\n function setForceNodeSize(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceNodeSize = _;\n }\n else {\n forceNodeSize = constant(+_);\n }\n initialize();\n return force;\n }\n return forceNodeSize;\n }\n function setForceCharge(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceCharge = _;\n }\n else {\n forceCharge = constant(+_);\n }\n initialize();\n return force;\n }\n return forceCharge;\n }\n function setForceLinkDistance(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceLinkDistance = _;\n }\n else {\n forceLinkDistance = constant(+_);\n }\n initialize();\n return force;\n }\n return forceLinkDistance;\n }\n function setForceLinkStrength(_) {\n if (arguments.length) {\n if (typeof _ === 'function') {\n forceLinkStrength = _;\n }\n else {\n forceLinkStrength = constant(+_);\n }\n initialize();\n return force;\n }\n return forceLinkStrength;\n }\n function setOffset(_) {\n if (arguments.length) {\n offset = _;\n return force;\n }\n return offset;\n }\n force.initialize = (_) => {\n nodes = _;\n initialize();\n };\n force.template = setTemplate;\n force.groupBy = setGroupBy;\n force.enableGrouping = setEnableGrouping;\n force.strength = setStrength;\n force.centerX = setCenterX;\n force.centerY = setCenterY;\n force.nodes = setNodes;\n force.links = setLinks;\n force.forceNodeSize = setForceNodeSize;\n // Legacy support\n force.nodeSize = force.forceNodeSize;\n force.forceCharge = setForceCharge;\n force.forceLinkDistance = setForceLinkDistance;\n force.forceLinkStrength = setForceLinkStrength;\n force.offset = setOffset;\n force.getFocis = getFocisFromTemplate;\n return force;\n}\n//# sourceMappingURL=force-in-a-box.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvZm9yY2UtaW4tYS1ib3guanM/NjEwYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNTO0FBQzdDO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSxPQUFPO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHdEQUNJO0FBQzVCLHdCQUF3QiwrQ0FBYztBQUN0Qyx3QkFBd0IsK0NBQWM7QUFDdEMsOEJBQThCLHFEQUFvQjtBQUNsRCw2QkFBNkIsc0RBQXFCO0FBQ2xELDRCQUE0QixrREFDTjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBLG1DQUFtQyw2REFBZTtBQUNsRCxtQ0FBbUMsNkRBQWU7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkRBQWU7QUFDdEMsdUJBQXVCLDZEQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTLEdBQUcsU0FBUztBQUN0QyxpQkFBaUIsU0FBUyxHQUFHLFNBQVM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvZm9yY2UtaW4tYS1ib3guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkM0ZvcmNlIGZyb20gJ2QzLWZvcmNlJztcbmltcG9ydCB7IGdldEVkZ2VUZXJtaW5hbCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2pvaG4tZ3VlcnJhL2ZvcmNlSW5BQm94L2Jsb2IvbWFzdGVyL3NyYy9mb3JjZUluQUJveC5qc1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9yY2VJbkFCb3goKSB7XG4gICAgZnVuY3Rpb24gY29uc3RhbnQoXykge1xuICAgICAgICByZXR1cm4gKCkgPT4gXztcbiAgICB9XG4gICAgbGV0IGdyb3VwQnkgPSAoZCkgPT4ge1xuICAgICAgICByZXR1cm4gZC5jbHVzdGVyO1xuICAgIH07XG4gICAgbGV0IGZvcmNlTm9kZVNpemUgPSBjb25zdGFudCgxKTtcbiAgICBsZXQgZm9yY2VDaGFyZ2UgPSBjb25zdGFudCgtMSk7XG4gICAgbGV0IGZvcmNlTGlua0Rpc3RhbmNlID0gY29uc3RhbnQoMTAwKTtcbiAgICBsZXQgZm9yY2VMaW5rU3RyZW5ndGggPSBjb25zdGFudCgwLjEpO1xuICAgIGxldCBvZmZzZXQgPSBbMCwgMF07XG4gICAgbGV0IG5vZGVzID0gW107XG4gICAgbGV0IG5vZGVzTWFwID0ge307XG4gICAgbGV0IGxpbmtzID0gW107XG4gICAgbGV0IGNlbnRlclggPSAxMDA7XG4gICAgbGV0IGNlbnRlclkgPSAxMDA7XG4gICAgbGV0IGZvY2kgPSB7XG4gICAgICAgIG5vbmU6IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHRlbXBsYXRlTm9kZXMgPSBbXTtcbiAgICBsZXQgdGVtcGxhdGVGb3JjZTtcbiAgICBsZXQgdGVtcGxhdGUgPSAnZm9yY2UnO1xuICAgIGxldCBlbmFibGVHcm91cGluZyA9IHRydWU7XG4gICAgbGV0IHN0cmVuZ3RoID0gMC4xO1xuICAgIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgICAgIGlmICghZW5hYmxlR3JvdXBpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICB0ZW1wbGF0ZUZvcmNlLnRpY2soKTtcbiAgICAgICAgZ2V0Rm9jaXNGcm9tVGVtcGxhdGUoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGUsIGsgPSBhbHBoYSAqIHN0cmVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgICBub2RlLnZ4ICs9IChmb2NpW2dyb3VwQnkobm9kZSldLnggLSBub2RlLngpICogaztcbiAgICAgICAgICAgIG5vZGUudnkgKz0gKGZvY2lbZ3JvdXBCeShub2RlKV0ueSAtIG5vZGUueSkgKiBrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgICAgIGlmICghbm9kZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRpYWxpemVXaXRoRm9yY2UoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZVdpdGhGb3JjZSgpIHtcbiAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdyb3VwQnkobm9kZXNbMF0pID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiQ291bGRudCBmaW5kIHRoZSBncm91cGluZyBhdHRyaWJ1dGUgZm9yIHRoZSBub2Rlcy4gTWFrZSBzdXJlIHRvIHNldCBpdCB1cCB3aXRoIGZvcmNlSW5BQm94Lmdyb3VwQnkoJ2NsdXN0ZXJBdHRyJykgYmVmb3JlIGNhbGxpbmcgLmxpbmtzKClcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2tMaW5rc0FzT2JqZWN0cygpO1xuICAgICAgICBjb25zdCBuZXQgPSBnZXRHcm91cHNHcmFwaCgpO1xuICAgICAgICB0ZW1wbGF0ZUZvcmNlID0gZDNGb3JjZVxuICAgICAgICAgICAgLmZvcmNlU2ltdWxhdGlvbihuZXQubm9kZXMpXG4gICAgICAgICAgICAuZm9yY2UoJ3gnLCBkM0ZvcmNlLmZvcmNlWChjZW50ZXJYKS5zdHJlbmd0aCgwLjEpKVxuICAgICAgICAgICAgLmZvcmNlKCd5JywgZDNGb3JjZS5mb3JjZVkoY2VudGVyWSkuc3RyZW5ndGgoMC4xKSlcbiAgICAgICAgICAgIC5mb3JjZSgnY29sbGlkZScsIGQzRm9yY2UuZm9yY2VDb2xsaWRlKChkKSA9PiBkLnIpLml0ZXJhdGlvbnMoNCkpXG4gICAgICAgICAgICAuZm9yY2UoJ2NoYXJnZScsIGQzRm9yY2UuZm9yY2VNYW55Qm9keSgpLnN0cmVuZ3RoKGZvcmNlQ2hhcmdlKSlcbiAgICAgICAgICAgIC5mb3JjZSgnbGlua3MnLCBkM0ZvcmNlXG4gICAgICAgICAgICAuZm9yY2VMaW5rKG5ldC5ub2Rlcy5sZW5ndGggPyBuZXQubGlua3MgOiBbXSlcbiAgICAgICAgICAgIC5kaXN0YW5jZShmb3JjZUxpbmtEaXN0YW5jZSlcbiAgICAgICAgICAgIC5zdHJlbmd0aChmb3JjZUxpbmtTdHJlbmd0aCkpO1xuICAgICAgICB0ZW1wbGF0ZU5vZGVzID0gdGVtcGxhdGVGb3JjZS5ub2RlcygpO1xuICAgICAgICBnZXRGb2Npc0Zyb21UZW1wbGF0ZSgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRHcm91cHNHcmFwaCgpIHtcbiAgICAgICAgY29uc3QgZ25vZGVzID0gW107XG4gICAgICAgIGNvbnN0IGdsaW5rcyA9IFtdO1xuICAgICAgICBjb25zdCBkTm9kZXMgPSB7fTtcbiAgICAgICAgbGV0IGNsdXN0ZXJzTGlzdCA9IFtdO1xuICAgICAgICBsZXQgY2x1c3RlcnNDb3VudHMgPSB7fTtcbiAgICAgICAgbGV0IGNsdXN0ZXJzTGlua3MgPSBbXTtcbiAgICAgICAgY2x1c3RlcnNDb3VudHMgPSBjb21wdXRlQ2x1c3RlcnNOb2RlQ291bnRzKG5vZGVzKTtcbiAgICAgICAgY2x1c3RlcnNMaW5rcyA9IGNvbXB1dGVDbHVzdGVyc0xpbmtDb3VudHMobGlua3MpO1xuICAgICAgICBjbHVzdGVyc0xpc3QgPSBPYmplY3Qua2V5cyhjbHVzdGVyc0NvdW50cyk7XG4gICAgICAgIGNsdXN0ZXJzTGlzdC5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSBjbHVzdGVyc0NvdW50c1trZXldO1xuICAgICAgICAgICAgLy8gVXNlcyBhcHByb3ggbWV0YS1ub2RlIHNpemVcbiAgICAgICAgICAgIGdub2Rlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgICAgICAgIHNpemU6IHZhbC5jb3VudCxcbiAgICAgICAgICAgICAgICByOiBNYXRoLnNxcnQodmFsLnN1bWZvcmNlTm9kZVNpemUgLyBNYXRoLlBJKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZE5vZGVzW2tleV0gPSBpbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsdXN0ZXJzTGlua3MuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlVGVybWluYWwgPSBnZXRFZGdlVGVybWluYWwobCwgJ3NvdXJjZScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0VGVybWluYWwgPSBnZXRFZGdlVGVybWluYWwobCwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZE5vZGVzW3NvdXJjZVRlcm1pbmFsXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGROb2Rlc1t0YXJnZXRUZXJtaW5hbF07XG4gICAgICAgICAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgdGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBnbGlua3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjb3VudDogbC5jb3VudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlczogZ25vZGVzLFxuICAgICAgICAgICAgbGlua3M6IGdsaW5rcyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29tcHV0ZUNsdXN0ZXJzTm9kZUNvdW50cyhub2Rlcykge1xuICAgICAgICBjb25zdCBjbHVzdGVyc0NvdW50cyA9IHt9O1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBncm91cEJ5KGQpO1xuICAgICAgICAgICAgaWYgKCFjbHVzdGVyc0NvdW50c1trZXldKSB7XG4gICAgICAgICAgICAgICAgY2x1c3RlcnNDb3VudHNba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHN1bWZvcmNlTm9kZVNpemU6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdyb3VwQnkoZCk7XG4gICAgICAgICAgICBjb25zdCBub2RlU2l6ZSA9IGZvcmNlTm9kZVNpemUoZCk7XG4gICAgICAgICAgICBjb25zdCB0bXBDb3VudCA9IGNsdXN0ZXJzQ291bnRzW2tleV07XG4gICAgICAgICAgICB0bXBDb3VudC5jb3VudCA9IHRtcENvdW50LmNvdW50ICsgMTtcbiAgICAgICAgICAgIHRtcENvdW50LnN1bWZvcmNlTm9kZVNpemUgPVxuICAgICAgICAgICAgICAgIHRtcENvdW50LnN1bWZvcmNlTm9kZVNpemUgKyBNYXRoLlBJICogKG5vZGVTaXplICogbm9kZVNpemUpICogMS4zO1xuICAgICAgICAgICAgY2x1c3RlcnNDb3VudHNba2V5XSA9IHRtcENvdW50O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsdXN0ZXJzQ291bnRzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb21wdXRlQ2x1c3RlcnNMaW5rQ291bnRzKGxpbmtzKSB7XG4gICAgICAgIGNvbnN0IGRDbHVzdGVyTGlua3MgPSB7fTtcbiAgICAgICAgY29uc3QgY2x1c3RlckxpbmtzID0gW107XG4gICAgICAgIGxpbmtzLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldExpbmtLZXkobCk7XG4gICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgaWYgKGRDbHVzdGVyTGlua3Nba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY291bnQgPSBkQ2x1c3RlckxpbmtzW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudCArPSAxO1xuICAgICAgICAgICAgZENsdXN0ZXJMaW5rc1trZXldID0gY291bnQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZENsdXN0ZXJMaW5rcyk7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoW2tleSwgY291bnRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBrZXkuc3BsaXQoJ34nKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGtleS5zcGxpdCgnficpWzFdO1xuICAgICAgICAgICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkICYmIHRhcmdldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY2x1c3RlckxpbmtzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgY291bnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2x1c3RlckxpbmtzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRGb2Npc0Zyb21UZW1wbGF0ZSgpIHtcbiAgICAgICAgZm9jaSA9IHtcbiAgICAgICAgICAgIG5vbmU6IHtcbiAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0ZW1wbGF0ZU5vZGVzLmZvckVhY2goKGQpID0+IHtcbiAgICAgICAgICAgIGZvY2lbZC5pZF0gPSB7XG4gICAgICAgICAgICAgICAgeDogZC54IC0gb2Zmc2V0WzBdLFxuICAgICAgICAgICAgICAgIHk6IGQueSAtIG9mZnNldFsxXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZm9jaTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0TGlua0tleShsKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChsLCAnc291cmNlJyk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChsLCAndGFyZ2V0Jyk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUlEID0gZ3JvdXBCeShub2Rlc01hcFtzb3VyY2VdKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SUQgPSBncm91cEJ5KG5vZGVzTWFwW3RhcmdldF0pO1xuICAgICAgICByZXR1cm4gc291cmNlSUQgPD0gdGFyZ2V0SURcbiAgICAgICAgICAgID8gYCR7c291cmNlSUR9fiR7dGFyZ2V0SUR9YFxuICAgICAgICAgICAgOiBgJHt0YXJnZXRJRH1+JHtzb3VyY2VJRH1gO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZW5Ob2Rlc01hcChub2Rlcykge1xuICAgICAgICBub2Rlc01hcCA9IHt9O1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2Rlc01hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRUZW1wbGF0ZSh4KSB7XG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgICAgICAgdGVtcGxhdGUgPSB4O1xuICAgICAgICBpbml0aWFsaXplKCk7XG4gICAgICAgIHJldHVybiBmb3JjZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0R3JvdXBCeSh4KSB7XG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBncm91cEJ5O1xuICAgICAgICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBncm91cEJ5ID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZFt4XTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXBCeSA9IHg7XG4gICAgICAgIHJldHVybiBmb3JjZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0RW5hYmxlR3JvdXBpbmcoeCkge1xuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gZW5hYmxlR3JvdXBpbmc7XG4gICAgICAgIGVuYWJsZUdyb3VwaW5nID0geDtcbiAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRTdHJlbmd0aCh4KSB7XG4gICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBzdHJlbmd0aDtcbiAgICAgICAgc3RyZW5ndGggPSB4O1xuICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldENlbnRlclgoXykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2VudGVyWCA9IF87XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNlbnRlclg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldENlbnRlclkoXykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2VudGVyWSA9IF87XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNlbnRlclk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldE5vZGVzKF8pIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGdlbk5vZGVzTWFwKF8gfHwgW10pO1xuICAgICAgICAgICAgbm9kZXMgPSBfIHx8IFtdO1xuICAgICAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0TGlua3MoXykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgbGlua3MgPSBfIHx8IFtdO1xuICAgICAgICAgICAgaW5pdGlhbGl6ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaW5rcztcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Rm9yY2VOb2RlU2l6ZShfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIF8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3JjZU5vZGVTaXplID0gXztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcmNlTm9kZVNpemUgPSBjb25zdGFudCgrXyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbml0aWFsaXplKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmNlTm9kZVNpemU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldEZvcmNlQ2hhcmdlKF8pIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgXyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvcmNlQ2hhcmdlID0gXztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcmNlQ2hhcmdlID0gY29uc3RhbnQoK18pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5pdGlhbGl6ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JjZUNoYXJnZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Rm9yY2VMaW5rRGlzdGFuY2UoXykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBfID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZm9yY2VMaW5rRGlzdGFuY2UgPSBfO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yY2VMaW5rRGlzdGFuY2UgPSBjb25zdGFudCgrXyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbml0aWFsaXplKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9yY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmNlTGlua0Rpc3RhbmNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRGb3JjZUxpbmtTdHJlbmd0aChfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIF8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3JjZUxpbmtTdHJlbmd0aCA9IF87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JjZUxpbmtTdHJlbmd0aCA9IGNvbnN0YW50KCtfKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluaXRpYWxpemUoKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JjZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9yY2VMaW5rU3RyZW5ndGg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldE9mZnNldChfKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfO1xuICAgICAgICAgICAgcmV0dXJuIGZvcmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICAgIGZvcmNlLmluaXRpYWxpemUgPSAoXykgPT4ge1xuICAgICAgICBub2RlcyA9IF87XG4gICAgICAgIGluaXRpYWxpemUoKTtcbiAgICB9O1xuICAgIGZvcmNlLnRlbXBsYXRlID0gc2V0VGVtcGxhdGU7XG4gICAgZm9yY2UuZ3JvdXBCeSA9IHNldEdyb3VwQnk7XG4gICAgZm9yY2UuZW5hYmxlR3JvdXBpbmcgPSBzZXRFbmFibGVHcm91cGluZztcbiAgICBmb3JjZS5zdHJlbmd0aCA9IHNldFN0cmVuZ3RoO1xuICAgIGZvcmNlLmNlbnRlclggPSBzZXRDZW50ZXJYO1xuICAgIGZvcmNlLmNlbnRlclkgPSBzZXRDZW50ZXJZO1xuICAgIGZvcmNlLm5vZGVzID0gc2V0Tm9kZXM7XG4gICAgZm9yY2UubGlua3MgPSBzZXRMaW5rcztcbiAgICBmb3JjZS5mb3JjZU5vZGVTaXplID0gc2V0Rm9yY2VOb2RlU2l6ZTtcbiAgICAvLyBMZWdhY3kgc3VwcG9ydFxuICAgIGZvcmNlLm5vZGVTaXplID0gZm9yY2UuZm9yY2VOb2RlU2l6ZTtcbiAgICBmb3JjZS5mb3JjZUNoYXJnZSA9IHNldEZvcmNlQ2hhcmdlO1xuICAgIGZvcmNlLmZvcmNlTGlua0Rpc3RhbmNlID0gc2V0Rm9yY2VMaW5rRGlzdGFuY2U7XG4gICAgZm9yY2UuZm9yY2VMaW5rU3RyZW5ndGggPSBzZXRGb3JjZUxpbmtTdHJlbmd0aDtcbiAgICBmb3JjZS5vZmZzZXQgPSBzZXRPZmZzZXQ7XG4gICAgZm9yY2UuZ2V0Rm9jaXMgPSBnZXRGb2Npc0Zyb21UZW1wbGF0ZTtcbiAgICByZXR1cm4gZm9yY2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JjZS1pbi1hLWJveC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force-in-a-box.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force.js ***! \****************************************************************************************/ /*! exports provided: ForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return ForceLayout; });\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-force */ \"./node_modules/_d3-force@2.1.1@d3-force/src/index.js\");\n/* harmony import */ var _force_in_a_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./force-in-a-box */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force-in-a-box.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/constants.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n\n\n/**\n * 经典力导布局 force-directed\n */\nclass ForceLayout extends _base__WEBPACK_IMPORTED_MODULE_3__[\"Base\"] {\n constructor(options) {\n super();\n /** 向心力作用点 */\n this.center = [0, 0];\n /** 节点作用力 */\n this.nodeStrength = null;\n /** 边的作用力, 默认为根据节点的入度出度自适应 */\n this.edgeStrength = null;\n /** 是否防止节点相互覆盖 */\n this.preventOverlap = false;\n /** 聚类节点作用力 */\n this.clusterNodeStrength = null;\n /** 聚类边作用力 */\n this.clusterEdgeStrength = null;\n /** 聚类边长度 */\n this.clusterEdgeDistance = null;\n /** 聚类节点大小 / 直径,直径越大,越分散 */\n this.clusterNodeSize = null;\n /** 用于 foci 的力 */\n this.clusterFociStrength = null;\n /** 默认边长度 */\n this.linkDistance = 50;\n /** 迭代阈值的衰减率 [0, 1],0.028 对应最大迭代数为 300 */\n this.alphaDecay = 0.028;\n /** 停止迭代的阈值 */\n this.alphaMin = 0.001;\n /** 当前阈值 */\n this.alpha = 0.3;\n /** 防止重叠的力强度 */\n this.collideStrength = 1;\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n this.workerEnabled = false;\n this.tick = () => { };\n /** 布局完成回调 */\n this.onLayoutEnd = () => { };\n /** 是否正在布局 */\n this.ticking = undefined;\n if (options) {\n this.updateCfg(options);\n }\n }\n getDefaultCfg() {\n return {\n center: [0, 0],\n nodeStrength: null,\n edgeStrength: null,\n preventOverlap: false,\n nodeSize: undefined,\n nodeSpacing: undefined,\n linkDistance: 50,\n forceSimulation: null,\n alphaDecay: 0.028,\n alphaMin: 0.001,\n alpha: 0.3,\n collideStrength: 1,\n clustering: false,\n clusterNodeStrength: -1,\n clusterEdgeStrength: 0.1,\n clusterEdgeDistance: 100,\n clusterFociStrength: 0.8,\n clusterNodeSize: 10,\n tick() { },\n onLayoutEnd() { },\n // 是否启用web worker。前提是在web worker里执行布局,否则无效\n workerEnabled: false\n };\n }\n /**\n * 初始化\n * @param {object} data 数据\n */\n init(data) {\n const self = this;\n self.nodes = data.nodes || [];\n const edges = data.edges || [];\n self.edges = edges.map((edge) => {\n const res = {};\n const expectKeys = [\"targetNode\", \"sourceNode\", \"startPoint\", \"endPoint\"];\n Object.keys(edge).forEach((key) => {\n if (!(expectKeys.indexOf(key) > -1)) {\n res[key] = edge[key];\n }\n });\n return res;\n });\n self.ticking = false;\n }\n /**\n * 执行布局\n */\n execute(reloadData) {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n // 如果正在布局,忽略布局请求\n if (self.ticking) {\n return;\n }\n let simulation = self.forceSimulation;\n const alphaMin = self.alphaMin;\n const alphaDecay = self.alphaDecay;\n const alpha = self.alpha;\n if (!simulation) {\n try {\n // 定义节点的力\n const nodeForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceManyBody\"]();\n if (self.nodeStrength) {\n nodeForce.strength(self.nodeStrength);\n }\n simulation = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceSimulation\"]().nodes(nodes);\n if (self.clustering) {\n const clusterForce = Object(_force_in_a_box__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n clusterForce\n .centerX(self.center[0])\n .centerY(self.center[1])\n .template(\"force\")\n .strength(self.clusterFociStrength);\n if (edges) {\n clusterForce.links(edges);\n }\n if (nodes) {\n clusterForce.nodes(nodes);\n }\n clusterForce\n .forceLinkDistance(self.clusterEdgeDistance)\n .forceLinkStrength(self.clusterEdgeStrength)\n .forceCharge(self.clusterNodeStrength)\n .forceNodeSize(self.clusterNodeSize);\n self.clusterForce = clusterForce;\n simulation.force(\"group\", clusterForce);\n }\n simulation\n .force(\"center\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCenter\"](self.center[0], self.center[1]))\n .force(\"charge\", nodeForce)\n .alpha(alpha)\n .alphaDecay(alphaDecay)\n .alphaMin(alphaMin);\n if (self.preventOverlap) {\n self.overlapProcess(simulation);\n }\n // 如果有边,定义边的力\n if (edges) {\n // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据\n const edgeForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"]()\n .id((d) => d.id)\n .links(edges);\n if (self.edgeStrength) {\n edgeForce.strength(self.edgeStrength);\n }\n if (self.linkDistance) {\n edgeForce.distance(self.linkDistance);\n }\n self.edgeForce = edgeForce;\n simulation.force(\"link\", edgeForce);\n }\n if (self.workerEnabled && !isInWorker()) {\n // 如果不是运行在web worker里,不用web worker布局\n self.workerEnabled = false;\n console.warn(\"workerEnabled option is only supported when running in web worker.\");\n }\n if (!self.workerEnabled) {\n simulation\n .on(\"tick\", () => {\n self.tick();\n })\n .on(\"end\", () => {\n self.ticking = false;\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n });\n self.ticking = true;\n }\n else {\n // worker is enabled\n simulation.stop();\n const totalTicks = getSimulationTicks(simulation);\n for (let currentTick = 1; currentTick <= totalTicks; currentTick++) {\n simulation.tick();\n // currentTick starts from 1.\n postMessage({\n nodes,\n currentTick,\n totalTicks,\n type: _constants__WEBPACK_IMPORTED_MODULE_4__[\"LAYOUT_MESSAGE\"].TICK\n }, undefined);\n }\n self.ticking = false;\n }\n self.forceSimulation = simulation;\n self.ticking = true;\n }\n catch (e) {\n self.ticking = false;\n console.warn(e);\n }\n }\n else {\n if (reloadData) {\n if (self.clustering && self.clusterForce) {\n self.clusterForce.nodes(nodes);\n self.clusterForce.links(edges);\n }\n simulation.nodes(nodes);\n if (edges && self.edgeForce)\n self.edgeForce.links(edges);\n else if (edges && !self.edgeForce) {\n // d3 的 forceLayout 会重新生成边的数据模型,为了避免污染源数据\n const edgeForce = d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceLink\"]()\n .id((d) => d.id)\n .links(edges);\n if (self.edgeStrength) {\n edgeForce.strength(self.edgeStrength);\n }\n if (self.linkDistance) {\n edgeForce.distance(self.linkDistance);\n }\n self.edgeForce = edgeForce;\n simulation.force(\"link\", edgeForce);\n }\n }\n if (self.preventOverlap) {\n self.overlapProcess(simulation);\n }\n simulation.alpha(alpha).restart();\n this.ticking = true;\n }\n }\n /**\n * 防止重叠\n * @param {object} simulation 力模拟模型\n */\n overlapProcess(simulation) {\n const self = this;\n const nodeSize = self.nodeSize;\n const nodeSpacing = self.nodeSpacing;\n let nodeSizeFunc;\n let nodeSpacingFunc;\n const collideStrength = self.collideStrength;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res / 2 + nodeSpacingFunc(d);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res / 2 + nodeSpacingFunc(d);\n }\n return d.size / 2 + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n const size = nodeSize(d);\n return size + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(nodeSize)) {\n const larger = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n const radius = larger / 2;\n nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(nodeSize)) {\n const radius = nodeSize / 2;\n nodeSizeFunc = (d) => radius + nodeSpacingFunc(d);\n }\n else {\n nodeSizeFunc = () => 10;\n }\n // forceCollide's parameter is a radius\n simulation.force(\"collisionForce\", d3_force__WEBPACK_IMPORTED_MODULE_0__[\"forceCollide\"](nodeSizeFunc).strength(collideStrength));\n }\n /**\n * 更新布局配置,但不执行布局\n * @param {object} cfg 需要更新的配置项\n */\n updateCfg(cfg) {\n const self = this;\n if (self.ticking) {\n self.forceSimulation.stop();\n self.ticking = false;\n }\n self.forceSimulation = null;\n Object.assign(self, cfg);\n }\n destroy() {\n const self = this;\n if (self.ticking) {\n self.forceSimulation.stop();\n self.ticking = false;\n }\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n}\n// Return total ticks of d3-force simulation\nfunction getSimulationTicks(simulation) {\n const alphaMin = simulation.alphaMin();\n const alphaTarget = simulation.alphaTarget();\n const alpha = simulation.alpha();\n const totalTicksFloat = Math.log((alphaMin - alphaTarget) / (alpha - alphaTarget)) /\n Math.log(1 - simulation.alphaDecay());\n const totalTicks = Math.ceil(totalTicksFloat);\n return totalTicks;\n}\n// 判断是否运行在web worker里\nfunction isInWorker() {\n // eslint-disable-next-line no-undef\n return (typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope);\n}\n//# sourceMappingURL=force.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvZm9yY2UuanM/NzI1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ29DO0FBQ087QUFDMEI7QUFDdEM7QUFDZTtBQUM5QztBQUNBO0FBQ0E7QUFDTywwQkFBMEIsMENBQUk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLEVBQUU7QUFDdEIsMkJBQTJCLEVBQUU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLHNEQUFxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsd0RBQXVCO0FBQ3BEO0FBQ0EseUNBQXlDLCtEQUFXO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsb0RBQW1CO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGtEQUNKO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLDJCQUEyQjtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MseURBQWM7QUFDaEQseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLGtEQUNKO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscURBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxREFBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxREFBb0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvZm9yY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgcmFuZG9tIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgKiBhcyBkM0ZvcmNlIGZyb20gXCJkMy1mb3JjZVwiO1xuaW1wb3J0IGZvcmNlSW5BQm94IGZyb20gXCIuL2ZvcmNlLWluLWEtYm94XCI7XG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc051bWJlciwgaXNPYmplY3QgfSBmcm9tIFwiLi4vLi4vdXRpbFwiO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuLi9iYXNlXCI7XG5pbXBvcnQgeyBMQVlPVVRfTUVTU0FHRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbi8qKlxuICog57uP5YW45Yqb5a+85biD5bGAIGZvcmNlLWRpcmVjdGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBGb3JjZUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOWQkeW/g+WKm+S9nOeUqOeCuSAqL1xuICAgICAgICB0aGlzLmNlbnRlciA9IFswLCAwXTtcbiAgICAgICAgLyoqIOiKgueCueS9nOeUqOWKmyAqL1xuICAgICAgICB0aGlzLm5vZGVTdHJlbmd0aCA9IG51bGw7XG4gICAgICAgIC8qKiDovrnnmoTkvZznlKjlipssIOm7mOiupOS4uuagueaNruiKgueCueeahOWFpeW6puWHuuW6puiHqumAguW6lCAqL1xuICAgICAgICB0aGlzLmVkZ2VTdHJlbmd0aCA9IG51bGw7XG4gICAgICAgIC8qKiDmmK/lkKbpmLLmraLoioLngrnnm7jkupLopobnm5YgKi9cbiAgICAgICAgdGhpcy5wcmV2ZW50T3ZlcmxhcCA9IGZhbHNlO1xuICAgICAgICAvKiog6IGa57G76IqC54K55L2c55So5YqbICovXG4gICAgICAgIHRoaXMuY2x1c3Rlck5vZGVTdHJlbmd0aCA9IG51bGw7XG4gICAgICAgIC8qKiDogZrnsbvovrnkvZznlKjlipsgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyRWRnZVN0cmVuZ3RoID0gbnVsbDtcbiAgICAgICAgLyoqIOiBmuexu+i+uemVv+W6piAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJFZGdlRGlzdGFuY2UgPSBudWxsO1xuICAgICAgICAvKiog6IGa57G76IqC54K55aSn5bCPIC8g55u05b6E77yM55u05b6E6LaK5aSn77yM6LaK5YiG5pWjICovXG4gICAgICAgIHRoaXMuY2x1c3Rlck5vZGVTaXplID0gbnVsbDtcbiAgICAgICAgLyoqIOeUqOS6jiBmb2NpIOeahOWKmyAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJGb2NpU3RyZW5ndGggPSBudWxsO1xuICAgICAgICAvKiog6buY6K6k6L656ZW/5bqmICovXG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gNTA7XG4gICAgICAgIC8qKiDov63ku6PpmIjlgLznmoToobDlh4/njocgWzAsIDFd77yMMC4wMjgg5a+55bqU5pyA5aSn6L+t5Luj5pWw5Li6IDMwMCAqL1xuICAgICAgICB0aGlzLmFscGhhRGVjYXkgPSAwLjAyODtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOmYiOWAvCAqL1xuICAgICAgICB0aGlzLmFscGhhTWluID0gMC4wMDE7XG4gICAgICAgIC8qKiDlvZPliY3pmIjlgLwgKi9cbiAgICAgICAgdGhpcy5hbHBoYSA9IDAuMztcbiAgICAgICAgLyoqIOmYsuatoumHjeWPoOeahOWKm+W8uuW6piAqL1xuICAgICAgICB0aGlzLmNvbGxpZGVTdHJlbmd0aCA9IDE7XG4gICAgICAgIC8qKiDmmK/lkKblkK/nlKh3ZWIgd29ya2Vy44CC5YmN5o+Q5piv5Zyod2ViIHdvcmtlcumHjOaJp+ihjOW4g+WxgO+8jOWQpuWImeaXoOaViFx0Ki9cbiAgICAgICAgdGhpcy53b3JrZXJFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGljayA9ICgpID0+IHsgfTtcbiAgICAgICAgLyoqIOW4g+WxgOWujOaIkOWbnuiwgyAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICAvKiog5piv5ZCm5q2j5Zyo5biD5bGAICovXG4gICAgICAgIHRoaXMudGlja2luZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjZW50ZXI6IFswLCAwXSxcbiAgICAgICAgICAgIG5vZGVTdHJlbmd0aDogbnVsbCxcbiAgICAgICAgICAgIGVkZ2VTdHJlbmd0aDogbnVsbCxcbiAgICAgICAgICAgIHByZXZlbnRPdmVybGFwOiBmYWxzZSxcbiAgICAgICAgICAgIG5vZGVTaXplOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2RlU3BhY2luZzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGlua0Rpc3RhbmNlOiA1MCxcbiAgICAgICAgICAgIGZvcmNlU2ltdWxhdGlvbjogbnVsbCxcbiAgICAgICAgICAgIGFscGhhRGVjYXk6IDAuMDI4LFxuICAgICAgICAgICAgYWxwaGFNaW46IDAuMDAxLFxuICAgICAgICAgICAgYWxwaGE6IDAuMyxcbiAgICAgICAgICAgIGNvbGxpZGVTdHJlbmd0aDogMSxcbiAgICAgICAgICAgIGNsdXN0ZXJpbmc6IGZhbHNlLFxuICAgICAgICAgICAgY2x1c3Rlck5vZGVTdHJlbmd0aDogLTEsXG4gICAgICAgICAgICBjbHVzdGVyRWRnZVN0cmVuZ3RoOiAwLjEsXG4gICAgICAgICAgICBjbHVzdGVyRWRnZURpc3RhbmNlOiAxMDAsXG4gICAgICAgICAgICBjbHVzdGVyRm9jaVN0cmVuZ3RoOiAwLjgsXG4gICAgICAgICAgICBjbHVzdGVyTm9kZVNpemU6IDEwLFxuICAgICAgICAgICAgdGljaygpIHsgfSxcbiAgICAgICAgICAgIG9uTGF5b3V0RW5kKCkgeyB9LFxuICAgICAgICAgICAgLy8g5piv5ZCm5ZCv55Sod2ViIHdvcmtlcuOAguWJjeaPkOaYr+WcqHdlYiB3b3JrZXLph4zmiafooYzluIPlsYDvvIzlkKbliJnml6DmlYhcbiAgICAgICAgICAgIHdvcmtlckVuYWJsZWQ6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWIneWni+WMllxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIOaVsOaNrlxuICAgICAqL1xuICAgIGluaXQoZGF0YSkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgc2VsZi5ub2RlcyA9IGRhdGEubm9kZXMgfHwgW107XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gZGF0YS5lZGdlcyB8fCBbXTtcbiAgICAgICAgc2VsZi5lZGdlcyA9IGVkZ2VzLm1hcCgoZWRnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgICAgICBjb25zdCBleHBlY3RLZXlzID0gW1widGFyZ2V0Tm9kZVwiLCBcInNvdXJjZU5vZGVcIiwgXCJzdGFydFBvaW50XCIsIFwiZW5kUG9pbnRcIl07XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhlZGdlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIShleHBlY3RLZXlzLmluZGV4T2Yoa2V5KSA+IC0xKSkge1xuICAgICAgICAgICAgICAgICAgICByZXNba2V5XSA9IGVkZ2Vba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLnRpY2tpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZShyZWxvYWREYXRhKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgLy8g5aaC5p6c5q2j5Zyo5biD5bGA77yM5b+955Wl5biD5bGA6K+35rGCXG4gICAgICAgIGlmIChzZWxmLnRpY2tpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2ltdWxhdGlvbiA9IHNlbGYuZm9yY2VTaW11bGF0aW9uO1xuICAgICAgICBjb25zdCBhbHBoYU1pbiA9IHNlbGYuYWxwaGFNaW47XG4gICAgICAgIGNvbnN0IGFscGhhRGVjYXkgPSBzZWxmLmFscGhhRGVjYXk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gc2VsZi5hbHBoYTtcbiAgICAgICAgaWYgKCFzaW11bGF0aW9uKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIOWumuS5ieiKgueCueeahOWKm1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVGb3JjZSA9IGQzRm9yY2UuZm9yY2VNYW55Qm9keSgpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm5vZGVTdHJlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBub2RlRm9yY2Uuc3RyZW5ndGgoc2VsZi5ub2RlU3RyZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzaW11bGF0aW9uID0gZDNGb3JjZS5mb3JjZVNpbXVsYXRpb24oKS5ub2Rlcyhub2Rlcyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2x1c3RlcmluZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbHVzdGVyRm9yY2UgPSBmb3JjZUluQUJveCgpO1xuICAgICAgICAgICAgICAgICAgICBjbHVzdGVyRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jZW50ZXJYKHNlbGYuY2VudGVyWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNlbnRlclkoc2VsZi5jZW50ZXJbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGVtcGxhdGUoXCJmb3JjZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0cmVuZ3RoKHNlbGYuY2x1c3RlckZvY2lTdHJlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlckZvcmNlLmxpbmtzKGVkZ2VzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJGb3JjZS5ub2Rlcyhub2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2x1c3RlckZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yY2VMaW5rRGlzdGFuY2Uoc2VsZi5jbHVzdGVyRWRnZURpc3RhbmNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvcmNlTGlua1N0cmVuZ3RoKHNlbGYuY2x1c3RlckVkZ2VTdHJlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JjZUNoYXJnZShzZWxmLmNsdXN0ZXJOb2RlU3RyZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yY2VOb2RlU2l6ZShzZWxmLmNsdXN0ZXJOb2RlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2x1c3RlckZvcmNlID0gY2x1c3RlckZvcmNlO1xuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uLmZvcmNlKFwiZ3JvdXBcIiwgY2x1c3RlckZvcmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2ltdWxhdGlvblxuICAgICAgICAgICAgICAgICAgICAuZm9yY2UoXCJjZW50ZXJcIiwgZDNGb3JjZS5mb3JjZUNlbnRlcihzZWxmLmNlbnRlclswXSwgc2VsZi5jZW50ZXJbMV0pKVxuICAgICAgICAgICAgICAgICAgICAuZm9yY2UoXCJjaGFyZ2VcIiwgbm9kZUZvcmNlKVxuICAgICAgICAgICAgICAgICAgICAuYWxwaGEoYWxwaGEpXG4gICAgICAgICAgICAgICAgICAgIC5hbHBoYURlY2F5KGFscGhhRGVjYXkpXG4gICAgICAgICAgICAgICAgICAgIC5hbHBoYU1pbihhbHBoYU1pbik7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucHJldmVudE92ZXJsYXApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5vdmVybGFwUHJvY2VzcyhzaW11bGF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5pyJ6L6577yM5a6a5LmJ6L6555qE5YqbXG4gICAgICAgICAgICAgICAgaWYgKGVkZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGQzIOeahCBmb3JjZUxheW91dCDkvJrph43mlrDnlJ/miJDovrnnmoTmlbDmja7mqKHlnovvvIzkuLrkuobpgb/lhY3msaHmn5PmupDmlbDmja5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRnZUZvcmNlID0gZDNGb3JjZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvcmNlTGluaygpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaWQoKGQpID0+IGQuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAubGlua3MoZWRnZXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5lZGdlU3RyZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VGb3JjZS5zdHJlbmd0aChzZWxmLmVkZ2VTdHJlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYubGlua0Rpc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGdlRm9yY2UuZGlzdGFuY2Uoc2VsZi5saW5rRGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZWRnZUZvcmNlID0gZWRnZUZvcmNlO1xuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uLmZvcmNlKFwibGlua1wiLCBlZGdlRm9yY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZi53b3JrZXJFbmFibGVkICYmICFpc0luV29ya2VyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5LiN5piv6L+Q6KGM5Zyod2ViIHdvcmtlcumHjO+8jOS4jeeUqHdlYiB3b3JrZXLluIPlsYBcbiAgICAgICAgICAgICAgICAgICAgc2VsZi53b3JrZXJFbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIndvcmtlckVuYWJsZWQgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gcnVubmluZyBpbiB3ZWIgd29ya2VyLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxmLndvcmtlckVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLm9uKFwidGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYudGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyB3b3JrZXIgaXMgZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxUaWNrcyA9IGdldFNpbXVsYXRpb25UaWNrcyhzaW11bGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY3VycmVudFRpY2sgPSAxOyBjdXJyZW50VGljayA8PSB0b3RhbFRpY2tzOyBjdXJyZW50VGljaysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uLnRpY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRUaWNrIHN0YXJ0cyBmcm9tIDEuXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRpY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxUaWNrcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5USUNLXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYudGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxmLmZvcmNlU2ltdWxhdGlvbiA9IHNpbXVsYXRpb247XG4gICAgICAgICAgICAgICAgc2VsZi50aWNraW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi50aWNraW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJlbG9hZERhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5jbHVzdGVyaW5nICYmIHNlbGYuY2x1c3RlckZvcmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2x1c3RlckZvcmNlLm5vZGVzKG5vZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jbHVzdGVyRm9yY2UubGlua3MoZWRnZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzaW11bGF0aW9uLm5vZGVzKG5vZGVzKTtcbiAgICAgICAgICAgICAgICBpZiAoZWRnZXMgJiYgc2VsZi5lZGdlRm9yY2UpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZWRnZUZvcmNlLmxpbmtzKGVkZ2VzKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlZGdlcyAmJiAhc2VsZi5lZGdlRm9yY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZDMg55qEIGZvcmNlTGF5b3V0IOS8mumHjeaWsOeUn+aIkOi+ueeahOaVsOaNruaooeWei++8jOS4uuS6humBv+WFjeaxoeafk+a6kOaVsOaNrlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlZGdlRm9yY2UgPSBkM0ZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yY2VMaW5rKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pZCgoZCkgPT4gZC5pZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5saW5rcyhlZGdlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmVkZ2VTdHJlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUZvcmNlLnN0cmVuZ3RoKHNlbGYuZWRnZVN0cmVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5saW5rRGlzdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VGb3JjZS5kaXN0YW5jZShzZWxmLmxpbmtEaXN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lZGdlRm9yY2UgPSBlZGdlRm9yY2U7XG4gICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb24uZm9yY2UoXCJsaW5rXCIsIGVkZ2VGb3JjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGYucHJldmVudE92ZXJsYXApIHtcbiAgICAgICAgICAgICAgICBzZWxmLm92ZXJsYXBQcm9jZXNzKHNpbXVsYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2ltdWxhdGlvbi5hbHBoYShhbHBoYSkucmVzdGFydCgpO1xuICAgICAgICAgICAgdGhpcy50aWNraW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDpmLLmraLph43lj6BcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gc2ltdWxhdGlvbiDlipvmqKHmi5/mqKHlnotcbiAgICAgKi9cbiAgICBvdmVybGFwUHJvY2VzcyhzaW11bGF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlU2l6ZSA9IHNlbGYubm9kZVNpemU7XG4gICAgICAgIGNvbnN0IG5vZGVTcGFjaW5nID0gc2VsZi5ub2RlU3BhY2luZztcbiAgICAgICAgbGV0IG5vZGVTaXplRnVuYztcbiAgICAgICAgbGV0IG5vZGVTcGFjaW5nRnVuYztcbiAgICAgICAgY29uc3QgY29sbGlkZVN0cmVuZ3RoID0gc2VsZi5jb2xsaWRlU3RyZW5ndGg7XG4gICAgICAgIGlmIChpc051bWJlcihub2RlU3BhY2luZykpIHtcbiAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IG5vZGVTcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSBub2RlU3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub2RlU2l6ZSkge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZC5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGQuc2l6ZVswXSA+IGQuc2l6ZVsxXSA/IGQuc2l6ZVswXSA6IGQuc2l6ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgLyAyICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemUud2lkdGggPiBkLnNpemUuaGVpZ2h0ID8gZC5zaXplLndpZHRoIDogZC5zaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgLyAyICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnNpemUgLyAyICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMTAgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNpemUpKSB7XG4gICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpemUgPSBub2RlU2l6ZShkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheShub2RlU2l6ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhcmdlciA9IG5vZGVTaXplWzBdID4gbm9kZVNpemVbMV0gPyBub2RlU2l6ZVswXSA6IG5vZGVTaXplWzFdO1xuICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gbGFyZ2VyIC8gMjtcbiAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiByYWRpdXMgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIobm9kZVNpemUpKSB7XG4gICAgICAgICAgICBjb25zdCByYWRpdXMgPSBub2RlU2l6ZSAvIDI7XG4gICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4gcmFkaXVzICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKCkgPT4gMTA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9yY2VDb2xsaWRlJ3MgcGFyYW1ldGVyIGlzIGEgcmFkaXVzXG4gICAgICAgIHNpbXVsYXRpb24uZm9yY2UoXCJjb2xsaXNpb25Gb3JjZVwiLCBkM0ZvcmNlLmZvcmNlQ29sbGlkZShub2RlU2l6ZUZ1bmMpLnN0cmVuZ3RoKGNvbGxpZGVTdHJlbmd0aCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmm7TmlrDluIPlsYDphY3nva7vvIzkvYbkuI3miafooYzluIPlsYBcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOmcgOimgeabtOaWsOeahOmFjee9rumhuVxuICAgICAqL1xuICAgIHVwZGF0ZUNmZyhjZmcpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChzZWxmLnRpY2tpbmcpIHtcbiAgICAgICAgICAgIHNlbGYuZm9yY2VTaW11bGF0aW9uLnN0b3AoKTtcbiAgICAgICAgICAgIHNlbGYudGlja2luZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNlbGYuZm9yY2VTaW11bGF0aW9uID0gbnVsbDtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihzZWxmLCBjZmcpO1xuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHNlbGYudGlja2luZykge1xuICAgICAgICAgICAgc2VsZi5mb3JjZVNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgICAgICAgc2VsZi50aWNraW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5ub2RlcyA9IG51bGw7XG4gICAgICAgIHNlbGYuZWRnZXMgPSBudWxsO1xuICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxufVxuLy8gUmV0dXJuIHRvdGFsIHRpY2tzIG9mIGQzLWZvcmNlIHNpbXVsYXRpb25cbmZ1bmN0aW9uIGdldFNpbXVsYXRpb25UaWNrcyhzaW11bGF0aW9uKSB7XG4gICAgY29uc3QgYWxwaGFNaW4gPSBzaW11bGF0aW9uLmFscGhhTWluKCk7XG4gICAgY29uc3QgYWxwaGFUYXJnZXQgPSBzaW11bGF0aW9uLmFscGhhVGFyZ2V0KCk7XG4gICAgY29uc3QgYWxwaGEgPSBzaW11bGF0aW9uLmFscGhhKCk7XG4gICAgY29uc3QgdG90YWxUaWNrc0Zsb2F0ID0gTWF0aC5sb2coKGFscGhhTWluIC0gYWxwaGFUYXJnZXQpIC8gKGFscGhhIC0gYWxwaGFUYXJnZXQpKSAvXG4gICAgICAgIE1hdGgubG9nKDEgLSBzaW11bGF0aW9uLmFscGhhRGVjYXkoKSk7XG4gICAgY29uc3QgdG90YWxUaWNrcyA9IE1hdGguY2VpbCh0b3RhbFRpY2tzRmxvYXQpO1xuICAgIHJldHVybiB0b3RhbFRpY2tzO1xufVxuLy8g5Yik5pat5piv5ZCm6L+Q6KGM5Zyod2ViIHdvcmtlcumHjFxuZnVuY3Rpb24gaXNJbldvcmtlcigpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICByZXR1cm4gKHR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICAgICAgICBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9yY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/index.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/index.js ***! \****************************************************************************************/ /*! exports provided: ForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _force__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./force */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/force.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return _force__WEBPACK_IMPORTED_MODULE_0__[\"ForceLayout\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2UvaW5kZXguanM/YzIyZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QjtBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9yY2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/body.js": /*!*********************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/body.js ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Body; });\n// represents a body(a point mass) and its position\nclass Body {\n constructor(params) {\n /**\n * the id of this body, the same with the node id\n * @type {number}\n */\n this.id = params.id || 0;\n /**\n * the position of this body\n * @type {number}\n */\n this.rx = params.rx;\n /**\n * the position of this body\n * @type {number}\n */\n this.ry = params.ry;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fx = 0;\n /**\n * the force acting on this body\n * @type {number}\n */\n this.fy = 0;\n /**\n * the mass of this body, =1 for a node\n * @type {number}\n */\n this.mass = params.mass;\n /**\n * the degree of the node represented by this body\n * @type {number}\n */\n this.degree = params.degree;\n /**\n * the parameter for repulsive force, = kr\n * @type {number}\n */\n this.g = params.g || 0;\n }\n // returns the euclidean distance\n distanceTo(bo) {\n const dx = this.rx - bo.rx;\n const dy = this.ry - bo.ry;\n return Math.hypot(dx, dy);\n }\n setPos(x, y) {\n this.rx = x;\n this.ry = y;\n }\n // resets the forces\n resetForce() {\n this.fx = 0;\n this.fy = 0;\n }\n addForce(b) {\n const dx = b.rx - this.rx;\n const dy = b.ry - this.ry;\n let dist = Math.hypot(dx, dy);\n dist = dist < 0.0001 ? 0.0001 : dist;\n // the repulsive defined by force atlas 2\n const F = (this.g * (this.degree + 1) * (b.degree + 1)) / dist;\n this.fx += F * dx / dist;\n this.fy += F * dy / dist;\n }\n // if quad contains this body\n in(quad) {\n return quad.contains(this.rx, this.ry);\n }\n // returns a new body\n add(bo) {\n const nenwMass = this.mass + bo.mass;\n const x = (this.rx * this.mass + bo.rx * bo.mass) / nenwMass;\n const y = (this.ry * this.mass + bo.ry * bo.mass) / nenwMass;\n const dg = this.degree + bo.degree;\n const params = {\n rx: x,\n ry: y,\n mass: nenwMass,\n degree: dg\n };\n return new Body(params);\n }\n}\n//# sourceMappingURL=body.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvYm9keS5qcz80Y2FhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9ib2R5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmVwcmVzZW50cyBhIGJvZHkoYSBwb2ludCBtYXNzKSBhbmQgaXRzIHBvc2l0aW9uXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5IHtcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBpZCBvZiB0aGlzIGJvZHksIHRoZSBzYW1lIHdpdGggdGhlIG5vZGUgaWRcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmlkID0gcGFyYW1zLmlkIHx8IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgcG9zaXRpb24gb2YgdGhpcyBib2R5XG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yeCA9IHBhcmFtcy5yeDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBwb3NpdGlvbiBvZiB0aGlzIGJvZHlcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJ5ID0gcGFyYW1zLnJ5O1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIGZvcmNlIGFjdGluZyBvbiB0aGlzIGJvZHlcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmZ4ID0gMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBmb3JjZSBhY3Rpbmcgb24gdGhpcyBib2R5XG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5meSA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgbWFzcyBvZiB0aGlzIGJvZHksID0xIGZvciBhIG5vZGVcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1hc3MgPSBwYXJhbXMubWFzcztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBkZWdyZWUgb2YgdGhlIG5vZGUgcmVwcmVzZW50ZWQgYnkgdGhpcyBib2R5XG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWdyZWUgPSBwYXJhbXMuZGVncmVlO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIHBhcmFtZXRlciBmb3IgcmVwdWxzaXZlIGZvcmNlLCA9IGtyXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5nID0gcGFyYW1zLmcgfHwgMDtcbiAgICB9XG4gICAgLy8gcmV0dXJucyB0aGUgZXVjbGlkZWFuIGRpc3RhbmNlXG4gICAgZGlzdGFuY2VUbyhibykge1xuICAgICAgICBjb25zdCBkeCA9IHRoaXMucnggLSBiby5yeDtcbiAgICAgICAgY29uc3QgZHkgPSB0aGlzLnJ5IC0gYm8ucnk7XG4gICAgICAgIHJldHVybiBNYXRoLmh5cG90KGR4LCBkeSk7XG4gICAgfVxuICAgIHNldFBvcyh4LCB5KSB7XG4gICAgICAgIHRoaXMucnggPSB4O1xuICAgICAgICB0aGlzLnJ5ID0geTtcbiAgICB9XG4gICAgLy8gcmVzZXRzIHRoZSBmb3JjZXNcbiAgICByZXNldEZvcmNlKCkge1xuICAgICAgICB0aGlzLmZ4ID0gMDtcbiAgICAgICAgdGhpcy5meSA9IDA7XG4gICAgfVxuICAgIGFkZEZvcmNlKGIpIHtcbiAgICAgICAgY29uc3QgZHggPSBiLnJ4IC0gdGhpcy5yeDtcbiAgICAgICAgY29uc3QgZHkgPSBiLnJ5IC0gdGhpcy5yeTtcbiAgICAgICAgbGV0IGRpc3QgPSBNYXRoLmh5cG90KGR4LCBkeSk7XG4gICAgICAgIGRpc3QgPSBkaXN0IDwgMC4wMDAxID8gMC4wMDAxIDogZGlzdDtcbiAgICAgICAgLy8gdGhlIHJlcHVsc2l2ZSBkZWZpbmVkIGJ5IGZvcmNlIGF0bGFzIDJcbiAgICAgICAgY29uc3QgRiA9ICh0aGlzLmcgKiAodGhpcy5kZWdyZWUgKyAxKSAqIChiLmRlZ3JlZSArIDEpKSAvIGRpc3Q7XG4gICAgICAgIHRoaXMuZnggKz0gRiAqIGR4IC8gZGlzdDtcbiAgICAgICAgdGhpcy5meSArPSBGICogZHkgLyBkaXN0O1xuICAgIH1cbiAgICAvLyBpZiBxdWFkIGNvbnRhaW5zIHRoaXMgYm9keVxuICAgIGluKHF1YWQpIHtcbiAgICAgICAgcmV0dXJuIHF1YWQuY29udGFpbnModGhpcy5yeCwgdGhpcy5yeSk7XG4gICAgfVxuICAgIC8vIHJldHVybnMgYSBuZXcgYm9keVxuICAgIGFkZChibykge1xuICAgICAgICBjb25zdCBuZW53TWFzcyA9IHRoaXMubWFzcyArIGJvLm1hc3M7XG4gICAgICAgIGNvbnN0IHggPSAodGhpcy5yeCAqIHRoaXMubWFzcyArIGJvLnJ4ICogYm8ubWFzcykgLyBuZW53TWFzcztcbiAgICAgICAgY29uc3QgeSA9ICh0aGlzLnJ5ICogdGhpcy5tYXNzICsgYm8ucnkgKiBiby5tYXNzKSAvIG5lbndNYXNzO1xuICAgICAgICBjb25zdCBkZyA9IHRoaXMuZGVncmVlICsgYm8uZGVncmVlO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICByeDogeCxcbiAgICAgICAgICAgIHJ5OiB5LFxuICAgICAgICAgICAgbWFzczogbmVud01hc3MsXG4gICAgICAgICAgICBkZWdyZWU6IGRnXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgQm9keShwYXJhbXMpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvZHkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/body.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/index.js": /*!**********************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/index.js ***! \**********************************************************************************************/ /*! exports provided: ForceAtlas2Layout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ForceAtlas2Layout\", function() { return ForceAtlas2Layout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _body__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./body */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/body.js\");\n/* harmony import */ var _quad__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./quad */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quad.js\");\n/* harmony import */ var _quadTree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./quadTree */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quadTree.js\");\n\n\n\n\n\nclass ForceAtlas2Layout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 宽度 */\n this.width = 300;\n /** 高度 */\n this.height = 300;\n this.nodes = [];\n this.edges = [];\n /**\n * the parameter for repulsive forces,\n * it will scale the layout but won't change the layout\n * larger the kr, looser the layout\n * @type {number}\n */\n this.kr = 5;\n /**\n * the parameter for gravity forces\n * @type {number}\n */\n this.kg = 1;\n /**\n * modes:\n * 'normal' for normal using\n * 'linlog' for compact clusters.\n * @type {string}\n */\n this.mode = 'normal';\n /**\n * whether preventing the node overlapping\n * @type {boolean}\n */\n this.preventOverlap = false;\n /**\n * whether active the dissuade hub mode\n * true: grant authorities (nodes with a high indegree)\n * a more central position than hubs (nodes with a high outdegree)\n * @type {boolean}\n */\n this.dissuadeHubs = false;\n /**\n * whether active the barnes hut optimization on computing repulsive forces\n * @type {boolean}\n */\n this.barnesHut = undefined;\n /**\n * the max iteration number\n * @type {number}\n */\n this.maxIteration = 0;\n /**\n * control the global velocity\n * defualt: 0.1(gephi)\n * @type {number}\n */\n this.ks = 0.1;\n /**\n * the max global velocity\n * @type {number}\n */\n this.ksmax = 10;\n /**\n * the tolerance for the global swinging\n * @type {number}\n */\n this.tao = 0.1;\n /**\n * the function of layout complete listener, display the legend and minimap after layout\n * @type {function}\n */\n this.onLayoutEnd = () => { };\n /**\n * activate prune or not.\n * prune the leaves during most iterations, layout the leaves in the last 50 iteraitons.\n * if prune === '', it will be activated when the nodes number > 100\n * note that it will reduce the quality of the layout\n * @type {boolean}\n */\n this.prune = undefined;\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {};\n }\n // execute the layout\n execute() {\n const self = this;\n const { nodes, onLayoutEnd, prune, } = self;\n let maxIteration = self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n // the whidth of each nodes\n const sizes = [];\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n const node = nodes[i];\n let nodeWidth = 10;\n let nodeHeight = 10;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.size)) {\n nodeWidth = node.size;\n nodeHeight = node.size;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(node.size)) {\n if (!isNaN(node.size[0]))\n nodeWidth = node.size[0];\n if (!isNaN(node.size[1]))\n nodeHeight = node.size[1];\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(node.size)) {\n nodeWidth = node.size.width;\n nodeHeight = node.size.height;\n }\n if (self.getWidth && !isNaN(self.getWidth(node)))\n nodeHeight = self.getWidth(node);\n if (self.getHeight && !isNaN(self.getHeight(node)))\n nodeWidth = self.getHeight(node);\n const maxSize = Math.max(nodeWidth, nodeHeight);\n sizes.push(maxSize);\n }\n if (self.barnesHut === undefined && nodeNum > 250)\n self.barnesHut = true;\n if (self.prune === undefined && nodeNum > 100)\n self.prune = true;\n if (this.maxIteration === 0 && !self.prune) {\n maxIteration = 250;\n if (nodeNum <= 200 && nodeNum > 100)\n maxIteration = 1000;\n else if (nodeNum > 200)\n maxIteration = 1200;\n this.maxIteration = maxIteration;\n }\n else if (this.maxIteration === 0 && prune) {\n maxIteration = 100;\n if (nodeNum <= 200 && nodeNum > 100)\n maxIteration = 500;\n else if (nodeNum > 200)\n maxIteration = 950;\n this.maxIteration = maxIteration;\n }\n if (!self.kr) {\n self.kr = 50;\n if (nodeNum > 100 && nodeNum <= 500)\n self.kr = 20;\n else if (nodeNum > 500)\n self.kr = 1;\n }\n if (!self.kg) {\n self.kg = 20;\n if (nodeNum > 100 && nodeNum <= 500)\n self.kg = 10;\n else if (nodeNum > 500)\n self.kg = 1;\n }\n this.nodes = self.updateNodesByForces(sizes);\n onLayoutEnd();\n }\n updateNodesByForces(sizes) {\n const self = this;\n const { edges, maxIteration } = self;\n let nodes = self.nodes;\n const nonLoopEdges = edges.filter((edge) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'target');\n return source !== target;\n });\n const size = nodes.length;\n const esize = nonLoopEdges.length;\n const degrees = [];\n const idMap = {};\n const edgeEndsIdMap = {};\n // tslint:disable-next-line\n const Es = [];\n for (let i = 0; i < size; i += 1) {\n idMap[nodes[i].id] = i;\n degrees[i] = 0;\n if (nodes[i].x === undefined || isNaN(nodes[i].x)) {\n nodes[i].x = Math.random() * 1000;\n }\n if (nodes[i].y === undefined || isNaN(nodes[i].y)) {\n nodes[i].y = Math.random() * 1000;\n }\n Es.push({ x: nodes[i].x, y: nodes[i].y });\n }\n for (let i = 0; i < esize; i += 1) {\n let node1;\n let node2;\n let sIdx = 0;\n let tIdx = 0;\n for (let j = 0; j < size; j += 1) {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(nonLoopEdges[i], 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(nonLoopEdges[i], 'target');\n if (nodes[j].id === source) {\n node1 = nodes[j];\n sIdx = j;\n }\n else if (nodes[j].id === target) {\n node2 = nodes[j];\n tIdx = j;\n }\n edgeEndsIdMap[i] = { sourceIdx: sIdx, targetIdx: tIdx };\n }\n if (node1)\n degrees[idMap[node1.id]] += 1;\n if (node2)\n degrees[idMap[node2.id]] += 1;\n }\n let iteration = maxIteration;\n nodes = this.iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes);\n // if prune, place the leaves around their parents, and then re-layout for several iterations.\n if (self.prune) {\n for (let j = 0; j < esize; j += 1) {\n if (degrees[edgeEndsIdMap[j].sourceIdx] <= 1) {\n nodes[edgeEndsIdMap[j].sourceIdx].x = nodes[edgeEndsIdMap[j].targetIdx].x;\n nodes[edgeEndsIdMap[j].sourceIdx].y = nodes[edgeEndsIdMap[j].targetIdx].y;\n }\n else if (degrees[edgeEndsIdMap[j].targetIdx] <= 1) {\n nodes[edgeEndsIdMap[j].targetIdx].x = nodes[edgeEndsIdMap[j].sourceIdx].x;\n nodes[edgeEndsIdMap[j].targetIdx].y = nodes[edgeEndsIdMap[j].sourceIdx].y;\n }\n }\n self.prune = false;\n self.barnesHut = false;\n iteration = 100;\n nodes = this.iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes);\n }\n return nodes;\n }\n iterate(iteration, idMap, edgeEndsIdMap, esize, degrees, sizes) {\n const self = this;\n let { nodes } = self;\n const { kr, preventOverlap } = self;\n const { barnesHut } = self;\n const nodeNum = nodes.length;\n let sg = 0;\n const krPrime = 100;\n let iter = iteration;\n const prevoIter = 50;\n let forces = [];\n const preForces = [];\n const bodies = [];\n for (let i = 0; i < nodeNum; i += 1) {\n forces[2 * i] = 0;\n forces[2 * i + 1] = 0;\n if (barnesHut) {\n const params = {\n id: i,\n rx: nodes[i].x,\n ry: nodes[i].y,\n mass: 1,\n g: kr,\n degree: degrees[i]\n };\n bodies[i] = new _body__WEBPACK_IMPORTED_MODULE_2__[\"default\"](params);\n }\n }\n while (iter > 0) {\n for (let i = 0; i < nodeNum; i += 1) {\n preForces[2 * i] = forces[2 * i];\n preForces[2 * i + 1] = forces[2 * i + 1];\n forces[2 * i] = 0;\n forces[2 * i + 1] = 0;\n }\n // attractive forces, existing on every actual edge\n forces = this.getAttrForces(iter, prevoIter, esize, idMap, edgeEndsIdMap, degrees, sizes, forces);\n // repulsive forces and Gravity, existing on every node pair\n // if preventOverlap, using the no-optimized method in the last prevoIter instead.\n if (barnesHut && ((preventOverlap && iter > prevoIter) || !preventOverlap)) {\n forces = this.getOptRepGraForces(forces, bodies, degrees);\n }\n else {\n forces = this.getRepGraForces(iter, prevoIter, forces, krPrime, sizes, degrees);\n }\n // update the positions\n const res = this.updatePos(forces, preForces, sg, degrees);\n nodes = res.nodes;\n sg = res.sg;\n iter--;\n if (self.tick)\n self.tick();\n }\n return nodes;\n }\n getAttrForces(iter, prevoIter, esize, idMap, edgeEndsIdMap, degrees, sizes, forces) {\n const self = this;\n const { nodes, preventOverlap, dissuadeHubs, mode, prune } = self;\n for (let i = 0; i < esize; i += 1) {\n const sourceNode = nodes[edgeEndsIdMap[i].sourceIdx];\n const sourceIdx = edgeEndsIdMap[i].sourceIdx;\n const targetNode = nodes[edgeEndsIdMap[i].targetIdx];\n const targetIdx = edgeEndsIdMap[i].targetIdx;\n if (prune && (degrees[sourceIdx] <= 1 || degrees[targetIdx] <= 1))\n continue;\n const dir = [targetNode.x - sourceNode.x, targetNode.y - sourceNode.y];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n if (preventOverlap && iter < prevoIter)\n eucliDis = eucliDis - sizes[sourceIdx] - sizes[targetIdx];\n let Fa1 = eucliDis; // tslint:disable-line\n let Fa2 = Fa1; // tslint:disable-line\n if (mode === 'linlog') {\n Fa1 = Math.log(1 + eucliDis);\n Fa2 = Fa1;\n }\n if (dissuadeHubs) {\n Fa1 = eucliDis / degrees[sourceIdx];\n Fa2 = eucliDis / degrees[targetIdx];\n }\n if (preventOverlap && iter < prevoIter && eucliDis <= 0) {\n Fa1 = 0;\n Fa2 = 0;\n }\n else if (preventOverlap && iter < prevoIter && eucliDis > 0) {\n Fa1 = eucliDis;\n Fa2 = eucliDis;\n }\n forces[2 * idMap[sourceNode.id]] += Fa1 * dir[0];\n forces[2 * idMap[targetNode.id]] -= Fa2 * dir[0];\n forces[2 * idMap[sourceNode.id] + 1] += Fa1 * dir[1];\n forces[2 * idMap[targetNode.id] + 1] -= Fa2 * dir[1];\n }\n return forces;\n }\n getRepGraForces(iter, prevoIter, forces, krPrime, sizes, degrees) {\n const self = this;\n const { nodes, preventOverlap, kr, kg, center, prune } = self;\n const nodeNum = nodes.length;\n for (let i = 0; i < nodeNum; i += 1) {\n for (let j = i + 1; j < nodeNum; j += 1) {\n if (prune && (degrees[i] <= 1 || degrees[j] <= 1))\n continue;\n const dir = [nodes[j].x - nodes[i].x, nodes[j].y - nodes[i].y];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n if (preventOverlap && iter < prevoIter)\n eucliDis = eucliDis - sizes[i] - sizes[j];\n let Fr = kr * (degrees[i] + 1) * (degrees[j] + 1) / eucliDis; // tslint:disable-line\n if (preventOverlap && iter < prevoIter && eucliDis < 0) {\n Fr = krPrime * (degrees[i] + 1) * (degrees[j] + 1);\n }\n else if (preventOverlap && iter < prevoIter && eucliDis === 0) {\n Fr = 0;\n }\n else if (preventOverlap && iter < prevoIter && eucliDis > 0) {\n Fr = kr * (degrees[i] + 1) * (degrees[j] + 1) / eucliDis;\n }\n forces[2 * i] -= Fr * dir[0];\n forces[2 * j] += Fr * dir[0];\n forces[2 * i + 1] -= Fr * dir[1];\n forces[2 * j + 1] += Fr * dir[1];\n }\n // gravity\n const dir = [nodes[i].x - center[0], nodes[i].y - center[1]];\n const eucliDis = Math.hypot(dir[0], dir[1]);\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const Fg = kg * (degrees[i] + 1); // tslint:disable-line\n forces[2 * i] -= Fg * dir[0];\n forces[2 * i + 1] -= Fg * dir[1];\n }\n return forces;\n }\n getOptRepGraForces(forces, bodies, degrees) {\n const self = this;\n const { nodes, kg, center, prune } = self;\n const nodeNum = nodes.length;\n let minx = 9e10;\n let maxx = -9e10;\n let miny = 9e10;\n let maxy = -9e10;\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n bodies[i].setPos(nodes[i].x, nodes[i].y);\n if (nodes[i].x >= maxx)\n maxx = nodes[i].x;\n if (nodes[i].x <= minx)\n minx = nodes[i].x;\n if (nodes[i].y >= maxy)\n maxy = nodes[i].y;\n if (nodes[i].y <= miny)\n miny = nodes[i].y;\n }\n const width = Math.max(maxx - minx, maxy - miny);\n const quadParams = {\n xmid: (maxx + minx) / 2,\n ymid: (maxy + miny) / 2,\n length: width,\n massCenter: center,\n mass: nodeNum\n };\n const quad = new _quad__WEBPACK_IMPORTED_MODULE_3__[\"default\"](quadParams);\n const quadTree = new _quadTree__WEBPACK_IMPORTED_MODULE_4__[\"default\"](quad);\n // build the tree, insert the nodes(quads) into the tree\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n if (bodies[i].in(quad))\n quadTree.insert(bodies[i]);\n }\n // update the repulsive forces and the gravity.\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n bodies[i].resetForce();\n quadTree.updateForce(bodies[i]);\n forces[2 * i] -= bodies[i].fx;\n forces[2 * i + 1] -= bodies[i].fy;\n // gravity\n const dir = [nodes[i].x - center[0], nodes[i].y - center[1]];\n let eucliDis = Math.hypot(dir[0], dir[1]);\n eucliDis = eucliDis < 0.0001 ? 0.0001 : eucliDis;\n dir[0] = dir[0] / eucliDis;\n dir[1] = dir[1] / eucliDis;\n const Fg = kg * (degrees[i] + 1); // tslint:disable-line\n forces[2 * i] -= Fg * dir[0];\n forces[2 * i + 1] -= Fg * dir[1];\n }\n return forces;\n }\n updatePos(forces, preForces, sg, degrees) {\n const self = this;\n const { nodes, ks, tao, prune, ksmax } = self;\n const nodeNum = nodes.length;\n const swgns = [];\n const trans = [];\n // swg(G) and tra(G)\n let swgG = 0;\n let traG = 0;\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n const minus = [forces[2 * i] - preForces[2 * i],\n forces[2 * i + 1] - preForces[2 * i + 1]\n ];\n const minusNorm = Math.hypot(minus[0], minus[1]);\n const add = [forces[2 * i] + preForces[2 * i],\n forces[2 * i + 1] + preForces[2 * i + 1]\n ];\n const addNorm = Math.hypot(add[0], add[1]);\n swgns[i] = minusNorm;\n trans[i] = addNorm / 2;\n swgG += (degrees[i] + 1) * swgns[i];\n traG += (degrees[i] + 1) * trans[i];\n }\n const preSG = sg;\n sg = tao * traG / swgG; // tslint:disable-line\n if (preSG !== 0) {\n sg = sg > (1.5 * preSG) ? (1.5 * preSG) : sg; // tslint:disable-line\n }\n // update the node positions\n for (let i = 0; i < nodeNum; i += 1) {\n if (prune && (degrees[i] <= 1))\n continue;\n let sn = ks * sg / (1 + sg * Math.sqrt(swgns[i]));\n let absForce = Math.hypot(forces[2 * i], forces[2 * i + 1]);\n absForce = absForce < 0.0001 ? 0.0001 : absForce;\n const max = ksmax / absForce;\n sn = sn > max ? max : sn;\n const dnx = sn * forces[2 * i];\n const dny = sn * forces[2 * i + 1];\n nodes[i].x += dnx;\n nodes[i].y += dny;\n }\n return { nodes, sg };\n }\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvaW5kZXguanM/MjBlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQjtBQUMyQztBQUNoRDtBQUNBO0FBQ1E7QUFDM0IsZ0NBQWdDLDBDQUFJO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZCQUE2QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixhQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0JBQXNCO0FBQ3JDO0FBQ0E7QUFDQSwyQkFBMkIsNkRBQWU7QUFDMUMsMkJBQTJCLDZEQUFlO0FBQzFDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFVBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwrQkFBK0I7QUFDcEQ7QUFDQSx1QkFBdUIsV0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixVQUFVO0FBQ3JDLCtCQUErQiw2REFBZTtBQUM5QywrQkFBK0IsNkRBQWU7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixXQUFXO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixlQUFlLHFCQUFxQjtBQUNwQyxlQUFlLFlBQVk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixhQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsNkNBQUk7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGFBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBbUQ7QUFDbEUsdUJBQXVCLFdBQVc7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0IsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwrQ0FBK0M7QUFDOUQ7QUFDQSx1QkFBdUIsYUFBYTtBQUNwQywrQkFBK0IsYUFBYTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUFBNkU7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDJCQUEyQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGFBQWE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw2Q0FBSTtBQUM3Qiw2QkFBNkIsaURBQVE7QUFDckM7QUFDQSx1QkFBdUIsYUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsYUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtCQUErQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsYUFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsdUJBQXVCLGFBQWE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi4vYmFzZVwiO1xuaW1wb3J0IHsgZ2V0RWRnZVRlcm1pbmFsLCBpc0FycmF5LCBpc051bWJlciwgaXNPYmplY3QgfSBmcm9tIFwiLi4vLi4vdXRpbFwiO1xuaW1wb3J0IEJvZHkgZnJvbSAnLi9ib2R5JztcbmltcG9ydCBRdWFkIGZyb20gJy4vcXVhZCc7XG5pbXBvcnQgUXVhZFRyZWUgZnJvbSAnLi9xdWFkVHJlZSc7XG5leHBvcnQgY2xhc3MgRm9yY2VBdGxhczJMYXlvdXQgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8qKiDluIPlsYDkuK3lv4MgKi9cbiAgICAgICAgdGhpcy5jZW50ZXIgPSBbMCwgMF07XG4gICAgICAgIC8qKiDlrr3luqYgKi9cbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgLyoqIOmrmOW6piAqL1xuICAgICAgICB0aGlzLmhlaWdodCA9IDMwMDtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgcGFyYW1ldGVyIGZvciByZXB1bHNpdmUgZm9yY2VzLFxuICAgICAgICAgKiBpdCB3aWxsIHNjYWxlIHRoZSBsYXlvdXQgYnV0IHdvbid0IGNoYW5nZSB0aGUgbGF5b3V0XG4gICAgICAgICAqIGxhcmdlciB0aGUga3IsIGxvb3NlciB0aGUgbGF5b3V0XG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5rciA9IDU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgcGFyYW1ldGVyIGZvciBncmF2aXR5IGZvcmNlc1xuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMua2cgPSAxO1xuICAgICAgICAvKipcbiAgICAgICAgICogbW9kZXM6XG4gICAgICAgICAqICdub3JtYWwnIGZvciBub3JtYWwgdXNpbmdcbiAgICAgICAgICogJ2xpbmxvZycgZm9yIGNvbXBhY3QgY2x1c3RlcnMuXG4gICAgICAgICAqIEB0eXBlICB7c3RyaW5nfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tb2RlID0gJ25vcm1hbCc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aGV0aGVyIHByZXZlbnRpbmcgdGhlIG5vZGUgb3ZlcmxhcHBpbmdcbiAgICAgICAgICogQHR5cGUgIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5wcmV2ZW50T3ZlcmxhcCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogd2hldGhlciBhY3RpdmUgdGhlIGRpc3N1YWRlIGh1YiBtb2RlXG4gICAgICAgICAqIHRydWU6IGdyYW50IGF1dGhvcml0aWVzIChub2RlcyB3aXRoIGEgaGlnaCBpbmRlZ3JlZSlcbiAgICAgICAgICogYSBtb3JlIGNlbnRyYWwgcG9zaXRpb24gdGhhbiBodWJzIChub2RlcyB3aXRoIGEgaGlnaCBvdXRkZWdyZWUpXG4gICAgICAgICAqIEB0eXBlICB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGlzc3VhZGVIdWJzID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aGV0aGVyIGFjdGl2ZSB0aGUgYmFybmVzIGh1dCBvcHRpbWl6YXRpb24gb24gY29tcHV0aW5nIHJlcHVsc2l2ZSBmb3JjZXNcbiAgICAgICAgICogQHR5cGUgIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5iYXJuZXNIdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgbWF4IGl0ZXJhdGlvbiBudW1iZXJcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjb250cm9sIHRoZSBnbG9iYWwgdmVsb2NpdHlcbiAgICAgICAgICogZGVmdWFsdDogMC4xKGdlcGhpKVxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMua3MgPSAwLjE7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgbWF4IGdsb2JhbCB2ZWxvY2l0eVxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMua3NtYXggPSAxMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSB0b2xlcmFuY2UgZm9yIHRoZSBnbG9iYWwgc3dpbmdpbmdcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRhbyA9IDAuMTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBmdW5jdGlvbiBvZiBsYXlvdXQgY29tcGxldGUgbGlzdGVuZXIsIGRpc3BsYXkgdGhlIGxlZ2VuZCBhbmQgbWluaW1hcCBhZnRlciBsYXlvdXRcbiAgICAgICAgICogQHR5cGUgIHtmdW5jdGlvbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub25MYXlvdXRFbmQgPSAoKSA9PiB7IH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhY3RpdmF0ZSBwcnVuZSBvciBub3QuXG4gICAgICAgICAqIHBydW5lIHRoZSBsZWF2ZXMgZHVyaW5nIG1vc3QgaXRlcmF0aW9ucywgbGF5b3V0IHRoZSBsZWF2ZXMgaW4gdGhlIGxhc3QgNTAgaXRlcmFpdG9ucy5cbiAgICAgICAgICogaWYgcHJ1bmUgPT09ICcnLCBpdCB3aWxsIGJlIGFjdGl2YXRlZCB3aGVuIHRoZSBub2RlcyBudW1iZXIgPiAxMDBcbiAgICAgICAgICogbm90ZSB0aGF0IGl0IHdpbGwgcmVkdWNlIHRoZSBxdWFsaXR5IG9mIHRoZSBsYXlvdXRcbiAgICAgICAgICogQHR5cGUgIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5wcnVuZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgLy8gZXhlY3V0ZSB0aGUgbGF5b3V0XG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbm9kZXMsIG9uTGF5b3V0RW5kLCBwcnVuZSwgfSA9IHNlbGY7XG4gICAgICAgIGxldCBtYXhJdGVyYXRpb24gPSBzZWxmLm1heEl0ZXJhdGlvbjtcbiAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSB3aGlkdGggb2YgZWFjaCBub2Rlc1xuICAgICAgICBjb25zdCBzaXplcyA9IFtdO1xuICAgICAgICBjb25zdCBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVOdW07IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IG5vZGVXaWR0aCA9IDEwO1xuICAgICAgICAgICAgbGV0IG5vZGVIZWlnaHQgPSAxMDtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVdpZHRoID0gbm9kZS5zaXplO1xuICAgICAgICAgICAgICAgIG5vZGVIZWlnaHQgPSBub2RlLnNpemU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBcnJheShub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05hTihub2RlLnNpemVbMF0pKVxuICAgICAgICAgICAgICAgICAgICBub2RlV2lkdGggPSBub2RlLnNpemVbMF07XG4gICAgICAgICAgICAgICAgaWYgKCFpc05hTihub2RlLnNpemVbMV0pKVxuICAgICAgICAgICAgICAgICAgICBub2RlSGVpZ2h0ID0gbm9kZS5zaXplWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNPYmplY3Qobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVXaWR0aCA9IG5vZGUuc2l6ZS53aWR0aDtcbiAgICAgICAgICAgICAgICBub2RlSGVpZ2h0ID0gbm9kZS5zaXplLmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxmLmdldFdpZHRoICYmICFpc05hTihzZWxmLmdldFdpZHRoKG5vZGUpKSlcbiAgICAgICAgICAgICAgICBub2RlSGVpZ2h0ID0gc2VsZi5nZXRXaWR0aChub2RlKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmdldEhlaWdodCAmJiAhaXNOYU4oc2VsZi5nZXRIZWlnaHQobm9kZSkpKVxuICAgICAgICAgICAgICAgIG5vZGVXaWR0aCA9IHNlbGYuZ2V0SGVpZ2h0KG5vZGUpO1xuICAgICAgICAgICAgY29uc3QgbWF4U2l6ZSA9IE1hdGgubWF4KG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgICAgICAgICBzaXplcy5wdXNoKG1heFNpemUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxmLmJhcm5lc0h1dCA9PT0gdW5kZWZpbmVkICYmIG5vZGVOdW0gPiAyNTApXG4gICAgICAgICAgICBzZWxmLmJhcm5lc0h1dCA9IHRydWU7XG4gICAgICAgIGlmIChzZWxmLnBydW5lID09PSB1bmRlZmluZWQgJiYgbm9kZU51bSA+IDEwMClcbiAgICAgICAgICAgIHNlbGYucHJ1bmUgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5tYXhJdGVyYXRpb24gPT09IDAgJiYgIXNlbGYucHJ1bmUpIHtcbiAgICAgICAgICAgIG1heEl0ZXJhdGlvbiA9IDI1MDtcbiAgICAgICAgICAgIGlmIChub2RlTnVtIDw9IDIwMCAmJiBub2RlTnVtID4gMTAwKVxuICAgICAgICAgICAgICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlTnVtID4gMjAwKVxuICAgICAgICAgICAgICAgIG1heEl0ZXJhdGlvbiA9IDEyMDA7XG4gICAgICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IG1heEl0ZXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLm1heEl0ZXJhdGlvbiA9PT0gMCAmJiBwcnVuZSkge1xuICAgICAgICAgICAgbWF4SXRlcmF0aW9uID0gMTAwO1xuICAgICAgICAgICAgaWYgKG5vZGVOdW0gPD0gMjAwICYmIG5vZGVOdW0gPiAxMDApXG4gICAgICAgICAgICAgICAgbWF4SXRlcmF0aW9uID0gNTAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobm9kZU51bSA+IDIwMClcbiAgICAgICAgICAgICAgICBtYXhJdGVyYXRpb24gPSA5NTA7XG4gICAgICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IG1heEl0ZXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYua3IpIHtcbiAgICAgICAgICAgIHNlbGYua3IgPSA1MDtcbiAgICAgICAgICAgIGlmIChub2RlTnVtID4gMTAwICYmIG5vZGVOdW0gPD0gNTAwKVxuICAgICAgICAgICAgICAgIHNlbGYua3IgPSAyMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVOdW0gPiA1MDApXG4gICAgICAgICAgICAgICAgc2VsZi5rciA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmtnKSB7XG4gICAgICAgICAgICBzZWxmLmtnID0gMjA7XG4gICAgICAgICAgICBpZiAobm9kZU51bSA+IDEwMCAmJiBub2RlTnVtIDw9IDUwMClcbiAgICAgICAgICAgICAgICBzZWxmLmtnID0gMTA7XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlTnVtID4gNTAwKVxuICAgICAgICAgICAgICAgIHNlbGYua2cgPSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9kZXMgPSBzZWxmLnVwZGF0ZU5vZGVzQnlGb3JjZXMoc2l6ZXMpO1xuICAgICAgICBvbkxheW91dEVuZCgpO1xuICAgIH1cbiAgICB1cGRhdGVOb2Rlc0J5Rm9yY2VzKHNpemVzKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IGVkZ2VzLCBtYXhJdGVyYXRpb24gfSA9IHNlbGY7XG4gICAgICAgIGxldCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IG5vbkxvb3BFZGdlcyA9IGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGVkZ2UsICdzb3VyY2UnKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChlZGdlLCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlICE9PSB0YXJnZXQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzaXplID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBjb25zdCBlc2l6ZSA9IG5vbkxvb3BFZGdlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRlZ3JlZXMgPSBbXTtcbiAgICAgICAgY29uc3QgaWRNYXAgPSB7fTtcbiAgICAgICAgY29uc3QgZWRnZUVuZHNJZE1hcCA9IHt9O1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgY29uc3QgRXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlkTWFwW25vZGVzW2ldLmlkXSA9IGk7XG4gICAgICAgICAgICBkZWdyZWVzW2ldID0gMDtcbiAgICAgICAgICAgIGlmIChub2Rlc1tpXS54ID09PSB1bmRlZmluZWQgfHwgaXNOYU4obm9kZXNbaV0ueCkpIHtcbiAgICAgICAgICAgICAgICBub2Rlc1tpXS54ID0gTWF0aC5yYW5kb20oKSAqIDEwMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZXNbaV0ueSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKG5vZGVzW2ldLnkpKSB7XG4gICAgICAgICAgICAgICAgbm9kZXNbaV0ueSA9IE1hdGgucmFuZG9tKCkgKiAxMDAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRXMucHVzaCh7IHg6IG5vZGVzW2ldLngsIHk6IG5vZGVzW2ldLnkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlc2l6ZTsgaSArPSAxKSB7XG4gICAgICAgICAgICBsZXQgbm9kZTE7XG4gICAgICAgICAgICBsZXQgbm9kZTI7XG4gICAgICAgICAgICBsZXQgc0lkeCA9IDA7XG4gICAgICAgICAgICBsZXQgdElkeCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNpemU7IGogKz0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChub25Mb29wRWRnZXNbaV0sICdzb3VyY2UnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwobm9uTG9vcEVkZ2VzW2ldLCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVzW2pdLmlkID09PSBzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTEgPSBub2Rlc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgc0lkeCA9IGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVzW2pdLmlkID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTIgPSBub2Rlc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgdElkeCA9IGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVkZ2VFbmRzSWRNYXBbaV0gPSB7IHNvdXJjZUlkeDogc0lkeCwgdGFyZ2V0SWR4OiB0SWR4IH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZTEpXG4gICAgICAgICAgICAgICAgZGVncmVlc1tpZE1hcFtub2RlMS5pZF1dICs9IDE7XG4gICAgICAgICAgICBpZiAobm9kZTIpXG4gICAgICAgICAgICAgICAgZGVncmVlc1tpZE1hcFtub2RlMi5pZF1dICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGl0ZXJhdGlvbiA9IG1heEl0ZXJhdGlvbjtcbiAgICAgICAgbm9kZXMgPSB0aGlzLml0ZXJhdGUoaXRlcmF0aW9uLCBpZE1hcCwgZWRnZUVuZHNJZE1hcCwgZXNpemUsIGRlZ3JlZXMsIHNpemVzKTtcbiAgICAgICAgLy8gaWYgcHJ1bmUsIHBsYWNlIHRoZSBsZWF2ZXMgYXJvdW5kIHRoZWlyIHBhcmVudHMsIGFuZCB0aGVuIHJlLWxheW91dCBmb3Igc2V2ZXJhbCBpdGVyYXRpb25zLlxuICAgICAgICBpZiAoc2VsZi5wcnVuZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBlc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlZ3JlZXNbZWRnZUVuZHNJZE1hcFtqXS5zb3VyY2VJZHhdIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbZWRnZUVuZHNJZE1hcFtqXS5zb3VyY2VJZHhdLnggPSBub2Rlc1tlZGdlRW5kc0lkTWFwW2pdLnRhcmdldElkeF0ueDtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXNbZWRnZUVuZHNJZE1hcFtqXS5zb3VyY2VJZHhdLnkgPSBub2Rlc1tlZGdlRW5kc0lkTWFwW2pdLnRhcmdldElkeF0ueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVncmVlc1tlZGdlRW5kc0lkTWFwW2pdLnRhcmdldElkeF0gPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1tlZGdlRW5kc0lkTWFwW2pdLnRhcmdldElkeF0ueCA9IG5vZGVzW2VkZ2VFbmRzSWRNYXBbal0uc291cmNlSWR4XS54O1xuICAgICAgICAgICAgICAgICAgICBub2Rlc1tlZGdlRW5kc0lkTWFwW2pdLnRhcmdldElkeF0ueSA9IG5vZGVzW2VkZ2VFbmRzSWRNYXBbal0uc291cmNlSWR4XS55O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYucHJ1bmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlbGYuYmFybmVzSHV0ID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVyYXRpb24gPSAxMDA7XG4gICAgICAgICAgICBub2RlcyA9IHRoaXMuaXRlcmF0ZShpdGVyYXRpb24sIGlkTWFwLCBlZGdlRW5kc0lkTWFwLCBlc2l6ZSwgZGVncmVlcywgc2l6ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG4gICAgaXRlcmF0ZShpdGVyYXRpb24sIGlkTWFwLCBlZGdlRW5kc0lkTWFwLCBlc2l6ZSwgZGVncmVlcywgc2l6ZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGxldCB7IG5vZGVzIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCB7IGtyLCBwcmV2ZW50T3ZlcmxhcCB9ID0gc2VsZjtcbiAgICAgICAgY29uc3QgeyBiYXJuZXNIdXQgfSA9IHNlbGY7XG4gICAgICAgIGNvbnN0IG5vZGVOdW0gPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGxldCBzZyA9IDA7XG4gICAgICAgIGNvbnN0IGtyUHJpbWUgPSAxMDA7XG4gICAgICAgIGxldCBpdGVyID0gaXRlcmF0aW9uO1xuICAgICAgICBjb25zdCBwcmV2b0l0ZXIgPSA1MDtcbiAgICAgICAgbGV0IGZvcmNlcyA9IFtdO1xuICAgICAgICBjb25zdCBwcmVGb3JjZXMgPSBbXTtcbiAgICAgICAgY29uc3QgYm9kaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZU51bTsgaSArPSAxKSB7XG4gICAgICAgICAgICBmb3JjZXNbMiAqIGldID0gMDtcbiAgICAgICAgICAgIGZvcmNlc1syICogaSArIDFdID0gMDtcbiAgICAgICAgICAgIGlmIChiYXJuZXNIdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpLFxuICAgICAgICAgICAgICAgICAgICByeDogbm9kZXNbaV0ueCxcbiAgICAgICAgICAgICAgICAgICAgcnk6IG5vZGVzW2ldLnksXG4gICAgICAgICAgICAgICAgICAgIG1hc3M6IDEsXG4gICAgICAgICAgICAgICAgICAgIGc6IGtyLFxuICAgICAgICAgICAgICAgICAgICBkZWdyZWU6IGRlZ3JlZXNbaV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJvZGllc1tpXSA9IG5ldyBCb2R5KHBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGl0ZXIgPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVOdW07IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIHByZUZvcmNlc1syICogaV0gPSBmb3JjZXNbMiAqIGldO1xuICAgICAgICAgICAgICAgIHByZUZvcmNlc1syICogaSArIDFdID0gZm9yY2VzWzIgKiBpICsgMV07XG4gICAgICAgICAgICAgICAgZm9yY2VzWzIgKiBpXSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yY2VzWzIgKiBpICsgMV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYXR0cmFjdGl2ZSBmb3JjZXMsIGV4aXN0aW5nIG9uIGV2ZXJ5IGFjdHVhbCBlZGdlXG4gICAgICAgICAgICBmb3JjZXMgPSB0aGlzLmdldEF0dHJGb3JjZXMoaXRlciwgcHJldm9JdGVyLCBlc2l6ZSwgaWRNYXAsIGVkZ2VFbmRzSWRNYXAsIGRlZ3JlZXMsIHNpemVzLCBmb3JjZXMpO1xuICAgICAgICAgICAgLy8gcmVwdWxzaXZlIGZvcmNlcyBhbmQgR3Jhdml0eSwgZXhpc3Rpbmcgb24gZXZlcnkgbm9kZSBwYWlyXG4gICAgICAgICAgICAvLyBpZiBwcmV2ZW50T3ZlcmxhcCwgdXNpbmcgdGhlIG5vLW9wdGltaXplZCBtZXRob2QgaW4gdGhlIGxhc3QgcHJldm9JdGVyIGluc3RlYWQuXG4gICAgICAgICAgICBpZiAoYmFybmVzSHV0ICYmICgocHJldmVudE92ZXJsYXAgJiYgaXRlciA+IHByZXZvSXRlcikgfHwgIXByZXZlbnRPdmVybGFwKSkge1xuICAgICAgICAgICAgICAgIGZvcmNlcyA9IHRoaXMuZ2V0T3B0UmVwR3JhRm9yY2VzKGZvcmNlcywgYm9kaWVzLCBkZWdyZWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcmNlcyA9IHRoaXMuZ2V0UmVwR3JhRm9yY2VzKGl0ZXIsIHByZXZvSXRlciwgZm9yY2VzLCBrclByaW1lLCBzaXplcywgZGVncmVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHBvc2l0aW9uc1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy51cGRhdGVQb3MoZm9yY2VzLCBwcmVGb3JjZXMsIHNnLCBkZWdyZWVzKTtcbiAgICAgICAgICAgIG5vZGVzID0gcmVzLm5vZGVzO1xuICAgICAgICAgICAgc2cgPSByZXMuc2c7XG4gICAgICAgICAgICBpdGVyLS07XG4gICAgICAgICAgICBpZiAoc2VsZi50aWNrKVxuICAgICAgICAgICAgICAgIHNlbGYudGljaygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlcztcbiAgICB9XG4gICAgZ2V0QXR0ckZvcmNlcyhpdGVyLCBwcmV2b0l0ZXIsIGVzaXplLCBpZE1hcCwgZWRnZUVuZHNJZE1hcCwgZGVncmVlcywgc2l6ZXMsIGZvcmNlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBub2RlcywgcHJldmVudE92ZXJsYXAsIGRpc3N1YWRlSHVicywgbW9kZSwgcHJ1bmUgfSA9IHNlbGY7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXNpemU7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlTm9kZSA9IG5vZGVzW2VkZ2VFbmRzSWRNYXBbaV0uc291cmNlSWR4XTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUlkeCA9IGVkZ2VFbmRzSWRNYXBbaV0uc291cmNlSWR4O1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IG5vZGVzW2VkZ2VFbmRzSWRNYXBbaV0udGFyZ2V0SWR4XTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldElkeCA9IGVkZ2VFbmRzSWRNYXBbaV0udGFyZ2V0SWR4O1xuICAgICAgICAgICAgaWYgKHBydW5lICYmIChkZWdyZWVzW3NvdXJjZUlkeF0gPD0gMSB8fCBkZWdyZWVzW3RhcmdldElkeF0gPD0gMSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCBkaXIgPSBbdGFyZ2V0Tm9kZS54IC0gc291cmNlTm9kZS54LCB0YXJnZXROb2RlLnkgLSBzb3VyY2VOb2RlLnldO1xuICAgICAgICAgICAgbGV0IGV1Y2xpRGlzID0gTWF0aC5oeXBvdChkaXJbMF0sIGRpclsxXSk7XG4gICAgICAgICAgICBldWNsaURpcyA9IGV1Y2xpRGlzIDwgMC4wMDAxID8gMC4wMDAxIDogZXVjbGlEaXM7XG4gICAgICAgICAgICBkaXJbMF0gPSBkaXJbMF0gLyBldWNsaURpcztcbiAgICAgICAgICAgIGRpclsxXSA9IGRpclsxXSAvIGV1Y2xpRGlzO1xuICAgICAgICAgICAgaWYgKHByZXZlbnRPdmVybGFwICYmIGl0ZXIgPCBwcmV2b0l0ZXIpXG4gICAgICAgICAgICAgICAgZXVjbGlEaXMgPSBldWNsaURpcyAtIHNpemVzW3NvdXJjZUlkeF0gLSBzaXplc1t0YXJnZXRJZHhdO1xuICAgICAgICAgICAgbGV0IEZhMSA9IGV1Y2xpRGlzOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgICAgICBsZXQgRmEyID0gRmExOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gJ2xpbmxvZycpIHtcbiAgICAgICAgICAgICAgICBGYTEgPSBNYXRoLmxvZygxICsgZXVjbGlEaXMpO1xuICAgICAgICAgICAgICAgIEZhMiA9IEZhMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkaXNzdWFkZUh1YnMpIHtcbiAgICAgICAgICAgICAgICBGYTEgPSBldWNsaURpcyAvIGRlZ3JlZXNbc291cmNlSWR4XTtcbiAgICAgICAgICAgICAgICBGYTIgPSBldWNsaURpcyAvIGRlZ3JlZXNbdGFyZ2V0SWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmV2ZW50T3ZlcmxhcCAmJiBpdGVyIDwgcHJldm9JdGVyICYmIGV1Y2xpRGlzIDw9IDApIHtcbiAgICAgICAgICAgICAgICBGYTEgPSAwO1xuICAgICAgICAgICAgICAgIEZhMiA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcmV2ZW50T3ZlcmxhcCAmJiBpdGVyIDwgcHJldm9JdGVyICYmIGV1Y2xpRGlzID4gMCkge1xuICAgICAgICAgICAgICAgIEZhMSA9IGV1Y2xpRGlzO1xuICAgICAgICAgICAgICAgIEZhMiA9IGV1Y2xpRGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yY2VzWzIgKiBpZE1hcFtzb3VyY2VOb2RlLmlkXV0gKz0gRmExICogZGlyWzBdO1xuICAgICAgICAgICAgZm9yY2VzWzIgKiBpZE1hcFt0YXJnZXROb2RlLmlkXV0gLT0gRmEyICogZGlyWzBdO1xuICAgICAgICAgICAgZm9yY2VzWzIgKiBpZE1hcFtzb3VyY2VOb2RlLmlkXSArIDFdICs9IEZhMSAqIGRpclsxXTtcbiAgICAgICAgICAgIGZvcmNlc1syICogaWRNYXBbdGFyZ2V0Tm9kZS5pZF0gKyAxXSAtPSBGYTIgKiBkaXJbMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmNlcztcbiAgICB9XG4gICAgZ2V0UmVwR3JhRm9yY2VzKGl0ZXIsIHByZXZvSXRlciwgZm9yY2VzLCBrclByaW1lLCBzaXplcywgZGVncmVlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBub2RlcywgcHJldmVudE92ZXJsYXAsIGtyLCBrZywgY2VudGVyLCBwcnVuZSB9ID0gc2VsZjtcbiAgICAgICAgY29uc3Qgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5vZGVOdW07IGogKz0gMSkge1xuICAgICAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tpXSA8PSAxIHx8IGRlZ3JlZXNbal0gPD0gMSkpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpciA9IFtub2Rlc1tqXS54IC0gbm9kZXNbaV0ueCwgbm9kZXNbal0ueSAtIG5vZGVzW2ldLnldO1xuICAgICAgICAgICAgICAgIGxldCBldWNsaURpcyA9IE1hdGguaHlwb3QoZGlyWzBdLCBkaXJbMV0pO1xuICAgICAgICAgICAgICAgIGV1Y2xpRGlzID0gZXVjbGlEaXMgPCAwLjAwMDEgPyAwLjAwMDEgOiBldWNsaURpcztcbiAgICAgICAgICAgICAgICBkaXJbMF0gPSBkaXJbMF0gLyBldWNsaURpcztcbiAgICAgICAgICAgICAgICBkaXJbMV0gPSBkaXJbMV0gLyBldWNsaURpcztcbiAgICAgICAgICAgICAgICBpZiAocHJldmVudE92ZXJsYXAgJiYgaXRlciA8IHByZXZvSXRlcilcbiAgICAgICAgICAgICAgICAgICAgZXVjbGlEaXMgPSBldWNsaURpcyAtIHNpemVzW2ldIC0gc2l6ZXNbal07XG4gICAgICAgICAgICAgICAgbGV0IEZyID0ga3IgKiAoZGVncmVlc1tpXSArIDEpICogKGRlZ3JlZXNbal0gKyAxKSAvIGV1Y2xpRGlzOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgICAgICAgICAgaWYgKHByZXZlbnRPdmVybGFwICYmIGl0ZXIgPCBwcmV2b0l0ZXIgJiYgZXVjbGlEaXMgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIEZyID0ga3JQcmltZSAqIChkZWdyZWVzW2ldICsgMSkgKiAoZGVncmVlc1tqXSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmV2ZW50T3ZlcmxhcCAmJiBpdGVyIDwgcHJldm9JdGVyICYmIGV1Y2xpRGlzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIEZyID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJldmVudE92ZXJsYXAgJiYgaXRlciA8IHByZXZvSXRlciAmJiBldWNsaURpcyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgRnIgPSBrciAqIChkZWdyZWVzW2ldICsgMSkgKiAoZGVncmVlc1tqXSArIDEpIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvcmNlc1syICogaV0gLT0gRnIgKiBkaXJbMF07XG4gICAgICAgICAgICAgICAgZm9yY2VzWzIgKiBqXSArPSBGciAqIGRpclswXTtcbiAgICAgICAgICAgICAgICBmb3JjZXNbMiAqIGkgKyAxXSAtPSBGciAqIGRpclsxXTtcbiAgICAgICAgICAgICAgICBmb3JjZXNbMiAqIGogKyAxXSArPSBGciAqIGRpclsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGdyYXZpdHlcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IFtub2Rlc1tpXS54IC0gY2VudGVyWzBdLCBub2Rlc1tpXS55IC0gY2VudGVyWzFdXTtcbiAgICAgICAgICAgIGNvbnN0IGV1Y2xpRGlzID0gTWF0aC5oeXBvdChkaXJbMF0sIGRpclsxXSk7XG4gICAgICAgICAgICBkaXJbMF0gPSBkaXJbMF0gLyBldWNsaURpcztcbiAgICAgICAgICAgIGRpclsxXSA9IGRpclsxXSAvIGV1Y2xpRGlzO1xuICAgICAgICAgICAgY29uc3QgRmcgPSBrZyAqIChkZWdyZWVzW2ldICsgMSk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmVcbiAgICAgICAgICAgIGZvcmNlc1syICogaV0gLT0gRmcgKiBkaXJbMF07XG4gICAgICAgICAgICBmb3JjZXNbMiAqIGkgKyAxXSAtPSBGZyAqIGRpclsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9yY2VzO1xuICAgIH1cbiAgICBnZXRPcHRSZXBHcmFGb3JjZXMoZm9yY2VzLCBib2RpZXMsIGRlZ3JlZXMpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbm9kZXMsIGtnLCBjZW50ZXIsIHBydW5lIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBsZXQgbWlueCA9IDllMTA7XG4gICAgICAgIGxldCBtYXh4ID0gLTllMTA7XG4gICAgICAgIGxldCBtaW55ID0gOWUxMDtcbiAgICAgICAgbGV0IG1heHkgPSAtOWUxMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tpXSA8PSAxKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGJvZGllc1tpXS5zZXRQb3Mobm9kZXNbaV0ueCwgbm9kZXNbaV0ueSk7XG4gICAgICAgICAgICBpZiAobm9kZXNbaV0ueCA+PSBtYXh4KVxuICAgICAgICAgICAgICAgIG1heHggPSBub2Rlc1tpXS54O1xuICAgICAgICAgICAgaWYgKG5vZGVzW2ldLnggPD0gbWlueClcbiAgICAgICAgICAgICAgICBtaW54ID0gbm9kZXNbaV0ueDtcbiAgICAgICAgICAgIGlmIChub2Rlc1tpXS55ID49IG1heHkpXG4gICAgICAgICAgICAgICAgbWF4eSA9IG5vZGVzW2ldLnk7XG4gICAgICAgICAgICBpZiAobm9kZXNbaV0ueSA8PSBtaW55KVxuICAgICAgICAgICAgICAgIG1pbnkgPSBub2Rlc1tpXS55O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgobWF4eCAtIG1pbngsIG1heHkgLSBtaW55KTtcbiAgICAgICAgY29uc3QgcXVhZFBhcmFtcyA9IHtcbiAgICAgICAgICAgIHhtaWQ6IChtYXh4ICsgbWlueCkgLyAyLFxuICAgICAgICAgICAgeW1pZDogKG1heHkgKyBtaW55KSAvIDIsXG4gICAgICAgICAgICBsZW5ndGg6IHdpZHRoLFxuICAgICAgICAgICAgbWFzc0NlbnRlcjogY2VudGVyLFxuICAgICAgICAgICAgbWFzczogbm9kZU51bVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBxdWFkID0gbmV3IFF1YWQocXVhZFBhcmFtcyk7XG4gICAgICAgIGNvbnN0IHF1YWRUcmVlID0gbmV3IFF1YWRUcmVlKHF1YWQpO1xuICAgICAgICAvLyBidWlsZCB0aGUgdHJlZSwgaW5zZXJ0IHRoZSBub2RlcyhxdWFkcykgaW50byB0aGUgdHJlZVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVOdW07IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKHBydW5lICYmIChkZWdyZWVzW2ldIDw9IDEpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGJvZGllc1tpXS5pbihxdWFkKSlcbiAgICAgICAgICAgICAgICBxdWFkVHJlZS5pbnNlcnQoYm9kaWVzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB1cGRhdGUgdGhlIHJlcHVsc2l2ZSBmb3JjZXMgYW5kIHRoZSBncmF2aXR5LlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVOdW07IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKHBydW5lICYmIChkZWdyZWVzW2ldIDw9IDEpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgYm9kaWVzW2ldLnJlc2V0Rm9yY2UoKTtcbiAgICAgICAgICAgIHF1YWRUcmVlLnVwZGF0ZUZvcmNlKGJvZGllc1tpXSk7XG4gICAgICAgICAgICBmb3JjZXNbMiAqIGldIC09IGJvZGllc1tpXS5meDtcbiAgICAgICAgICAgIGZvcmNlc1syICogaSArIDFdIC09IGJvZGllc1tpXS5meTtcbiAgICAgICAgICAgIC8vIGdyYXZpdHlcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IFtub2Rlc1tpXS54IC0gY2VudGVyWzBdLCBub2Rlc1tpXS55IC0gY2VudGVyWzFdXTtcbiAgICAgICAgICAgIGxldCBldWNsaURpcyA9IE1hdGguaHlwb3QoZGlyWzBdLCBkaXJbMV0pO1xuICAgICAgICAgICAgZXVjbGlEaXMgPSBldWNsaURpcyA8IDAuMDAwMSA/IDAuMDAwMSA6IGV1Y2xpRGlzO1xuICAgICAgICAgICAgZGlyWzBdID0gZGlyWzBdIC8gZXVjbGlEaXM7XG4gICAgICAgICAgICBkaXJbMV0gPSBkaXJbMV0gLyBldWNsaURpcztcbiAgICAgICAgICAgIGNvbnN0IEZnID0ga2cgKiAoZGVncmVlc1tpXSArIDEpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgICAgICBmb3JjZXNbMiAqIGldIC09IEZnICogZGlyWzBdO1xuICAgICAgICAgICAgZm9yY2VzWzIgKiBpICsgMV0gLT0gRmcgKiBkaXJbMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmNlcztcbiAgICB9XG4gICAgdXBkYXRlUG9zKGZvcmNlcywgcHJlRm9yY2VzLCBzZywgZGVncmVlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBub2Rlcywga3MsIHRhbywgcHJ1bmUsIGtzbWF4IH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICBjb25zdCBzd2ducyA9IFtdO1xuICAgICAgICBjb25zdCB0cmFucyA9IFtdO1xuICAgICAgICAvLyBzd2coRykgYW5kIHRyYShHKVxuICAgICAgICBsZXQgc3dnRyA9IDA7XG4gICAgICAgIGxldCB0cmFHID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTnVtOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChwcnVuZSAmJiAoZGVncmVlc1tpXSA8PSAxKSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IG1pbnVzID0gW2ZvcmNlc1syICogaV0gLSBwcmVGb3JjZXNbMiAqIGldLFxuICAgICAgICAgICAgICAgIGZvcmNlc1syICogaSArIDFdIC0gcHJlRm9yY2VzWzIgKiBpICsgMV1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25zdCBtaW51c05vcm0gPSBNYXRoLmh5cG90KG1pbnVzWzBdLCBtaW51c1sxXSk7XG4gICAgICAgICAgICBjb25zdCBhZGQgPSBbZm9yY2VzWzIgKiBpXSArIHByZUZvcmNlc1syICogaV0sXG4gICAgICAgICAgICAgICAgZm9yY2VzWzIgKiBpICsgMV0gKyBwcmVGb3JjZXNbMiAqIGkgKyAxXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNvbnN0IGFkZE5vcm0gPSBNYXRoLmh5cG90KGFkZFswXSwgYWRkWzFdKTtcbiAgICAgICAgICAgIHN3Z25zW2ldID0gbWludXNOb3JtO1xuICAgICAgICAgICAgdHJhbnNbaV0gPSBhZGROb3JtIC8gMjtcbiAgICAgICAgICAgIHN3Z0cgKz0gKGRlZ3JlZXNbaV0gKyAxKSAqIHN3Z25zW2ldO1xuICAgICAgICAgICAgdHJhRyArPSAoZGVncmVlc1tpXSArIDEpICogdHJhbnNbaV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJlU0cgPSBzZztcbiAgICAgICAgc2cgPSB0YW8gKiB0cmFHIC8gc3dnRzsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICAgICAgICBpZiAocHJlU0cgIT09IDApIHtcbiAgICAgICAgICAgIHNnID0gc2cgPiAoMS41ICogcHJlU0cpID8gKDEuNSAqIHByZVNHKSA6IHNnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICAgIH1cbiAgICAgICAgLy8gdXBkYXRlIHRoZSBub2RlIHBvc2l0aW9uc1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVOdW07IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKHBydW5lICYmIChkZWdyZWVzW2ldIDw9IDEpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHNuID0ga3MgKiBzZyAvICgxICsgc2cgKiBNYXRoLnNxcnQoc3dnbnNbaV0pKTtcbiAgICAgICAgICAgIGxldCBhYnNGb3JjZSA9IE1hdGguaHlwb3QoZm9yY2VzWzIgKiBpXSwgZm9yY2VzWzIgKiBpICsgMV0pO1xuICAgICAgICAgICAgYWJzRm9yY2UgPSBhYnNGb3JjZSA8IDAuMDAwMSA/IDAuMDAwMSA6IGFic0ZvcmNlO1xuICAgICAgICAgICAgY29uc3QgbWF4ID0ga3NtYXggLyBhYnNGb3JjZTtcbiAgICAgICAgICAgIHNuID0gc24gPiBtYXggPyBtYXggOiBzbjtcbiAgICAgICAgICAgIGNvbnN0IGRueCA9IHNuICogZm9yY2VzWzIgKiBpXTtcbiAgICAgICAgICAgIGNvbnN0IGRueSA9IHNuICogZm9yY2VzWzIgKiBpICsgMV07XG4gICAgICAgICAgICBub2Rlc1tpXS54ICs9IGRueDtcbiAgICAgICAgICAgIG5vZGVzW2ldLnkgKz0gZG55O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG5vZGVzLCBzZyB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quad.js": /*!*********************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quad.js ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Quad; });\nclass Quad {\n constructor(params) {\n /**\n * the center position of this quad\n * @type {number}\n */\n this.xmid = params.xmid;\n /**\n * the center position of this quad\n * @type {number}\n */\n this.ymid = params.ymid;\n /**\n * the length of this quad\n * @type {number}\n */\n this.length = params.length;\n /**\n * the mass center of this quad\n * @type {number}\n */\n this.massCenter = params.massCenter || [0, 0];\n /**\n * the mass of this quad\n * @type {number}\n */\n this.mass = params.mass || 1;\n }\n getLength() {\n return this.length;\n }\n contains(x, y) {\n const halfLen = this.length / 2;\n return (x <= this.xmid + halfLen &&\n x >= this.xmid - halfLen &&\n y <= this.ymid + halfLen &&\n y >= this.ymid - halfLen);\n }\n // northwest quadrant\n // tslint:disable-next-line\n NW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const NW = new Quad(params);\n return NW;\n }\n // northeast\n // tslint:disable-next-line\n NE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid + this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const NE = new Quad(params);\n return NE;\n }\n // southwest\n // tslint:disable-next-line\n SW() {\n const x = this.xmid - this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const SW = new Quad(params);\n return SW;\n }\n // southeast\n // tslint:disable-next-line\n SE() {\n const x = this.xmid + this.length / 4;\n const y = this.ymid - this.length / 4;\n const len = this.length / 2;\n const params = {\n xmid: x,\n ymid: y,\n length: len\n };\n const SE = new Quad(params);\n return SE;\n }\n}\n//# sourceMappingURL=quad.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvcXVhZC5qcz8wMDZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2ZvcmNlQXRsYXMyL3F1YWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBRdWFkIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBjZW50ZXIgcG9zaXRpb24gb2YgdGhpcyBxdWFkXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy54bWlkID0gcGFyYW1zLnhtaWQ7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgY2VudGVyIHBvc2l0aW9uIG9mIHRoaXMgcXVhZFxuICAgICAgICAgKiBAdHlwZSAge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMueW1pZCA9IHBhcmFtcy55bWlkO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIGxlbmd0aCBvZiB0aGlzIHF1YWRcbiAgICAgICAgICogQHR5cGUgIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmxlbmd0aCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0aGUgbWFzcyBjZW50ZXIgb2YgdGhpcyBxdWFkXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXNzQ2VudGVyID0gcGFyYW1zLm1hc3NDZW50ZXIgfHwgWzAsIDBdO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhlIG1hc3Mgb2YgdGhpcyBxdWFkXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXNzID0gcGFyYW1zLm1hc3MgfHwgMTtcbiAgICB9XG4gICAgZ2V0TGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnRhaW5zKHgsIHkpIHtcbiAgICAgICAgY29uc3QgaGFsZkxlbiA9IHRoaXMubGVuZ3RoIC8gMjtcbiAgICAgICAgcmV0dXJuICh4IDw9IHRoaXMueG1pZCArIGhhbGZMZW4gJiZcbiAgICAgICAgICAgIHggPj0gdGhpcy54bWlkIC0gaGFsZkxlbiAmJlxuICAgICAgICAgICAgeSA8PSB0aGlzLnltaWQgKyBoYWxmTGVuICYmXG4gICAgICAgICAgICB5ID49IHRoaXMueW1pZCAtIGhhbGZMZW4pO1xuICAgIH1cbiAgICAvLyBub3J0aHdlc3QgcXVhZHJhbnRcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBOVygpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMueG1pZCAtIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueW1pZCArIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGggLyAyO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB4bWlkOiB4LFxuICAgICAgICAgICAgeW1pZDogeSxcbiAgICAgICAgICAgIGxlbmd0aDogbGVuXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IE5XID0gbmV3IFF1YWQocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIE5XO1xuICAgIH1cbiAgICAvLyBub3J0aGVhc3RcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBORSgpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMueG1pZCArIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueW1pZCArIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGggLyAyO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB4bWlkOiB4LFxuICAgICAgICAgICAgeW1pZDogeSxcbiAgICAgICAgICAgIGxlbmd0aDogbGVuXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IE5FID0gbmV3IFF1YWQocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIE5FO1xuICAgIH1cbiAgICAvLyBzb3V0aHdlc3RcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBTVygpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMueG1pZCAtIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueW1pZCAtIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGggLyAyO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB4bWlkOiB4LFxuICAgICAgICAgICAgeW1pZDogeSxcbiAgICAgICAgICAgIGxlbmd0aDogbGVuXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFNXID0gbmV3IFF1YWQocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIFNXO1xuICAgIH1cbiAgICAvLyBzb3V0aGVhc3RcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBTRSgpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMueG1pZCArIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMueW1pZCAtIHRoaXMubGVuZ3RoIC8gNDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGggLyAyO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB4bWlkOiB4LFxuICAgICAgICAgICAgeW1pZDogeSxcbiAgICAgICAgICAgIGxlbmd0aDogbGVuXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IFNFID0gbmV3IFF1YWQocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIFNFO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1YWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quad.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quadTree.js": /*!*************************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quadTree.js ***! \*************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return QuadTree; });\n/**\n * @fileOverview quadTree\n * @author shiwu.wyy@antfin.com\n */\nclass QuadTree {\n // each quadtree represents a quadrant and an aggregate body\n // that represents all bodies inside the quadrant\n constructor(param) {\n /**\n * (aggregated) body in this quad\n * @type {object}\n */\n this.body = null;\n /**\n * tree representing the northwest quadrant\n * @type {object}\n */\n this.quad = null;\n this.NW = null;\n this.NE = null;\n this.SW = null;\n this.SE = null;\n /**\n * threshold\n * @type {number}\n */\n this.theta = 0.5;\n if (param != null)\n this.quad = param;\n }\n // insert a body(node) into the tree\n insert(bo) {\n // if this node does not contain a body, put the new body bo here\n if (this.body == null) {\n this.body = bo;\n return;\n }\n // internal node\n if (!this._isExternal()) {\n // update mass info\n this.body = this.body.add(bo);\n // insert body into quadrant\n this._putBody(bo);\n }\n else { // external node\n // divide this region into four children\n if (this.quad) {\n this.NW = new QuadTree(this.quad.NW());\n this.NE = new QuadTree(this.quad.NE());\n this.SW = new QuadTree(this.quad.SW());\n this.SE = new QuadTree(this.quad.SE());\n }\n // insert this body and bo\n this._putBody(this.body);\n this._putBody(bo);\n // update the mass info\n this.body = this.body.add(bo);\n }\n }\n // inserts bo into a quad\n // tslint:disable-next-line\n _putBody(bo) {\n if (!this.quad)\n return;\n if (bo.in(this.quad.NW()) && this.NW)\n this.NW.insert(bo);\n else if (bo.in(this.quad.NE()) && this.NE)\n this.NE.insert(bo);\n else if (bo.in(this.quad.SW()) && this.SW)\n this.SW.insert(bo);\n else if (bo.in(this.quad.SE()) && this.SE)\n this.SE.insert(bo);\n }\n // tslint:disable-next-line\n _isExternal() {\n // four children are null\n return (this.NW == null && this.NE == null && this.SW == null && this.SE == null);\n }\n // update the forces\n updateForce(bo) {\n if (this.body == null || bo === this.body) {\n return;\n }\n // if the current node is external\n if (this._isExternal())\n bo.addForce(this.body);\n // internal nodes\n else {\n const s = this.quad ? this.quad.getLength() : 0;\n const d = this.body.distanceTo(bo);\n // b is far enough\n if ((s / d) < this.theta)\n bo.addForce(this.body);\n else {\n this.NW && this.NW.updateForce(bo);\n this.NE && this.NE.updateForce(bo);\n this.SW && this.SW.updateForce(bo);\n this.SE && this.SE.updateForce(bo);\n }\n }\n }\n}\n//# sourceMappingURL=quadTree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZm9yY2VBdGxhczIvcXVhZFRyZWUuanM/NWQyNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9mb3JjZUF0bGFzMi9xdWFkVHJlZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBxdWFkVHJlZVxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBRdWFkVHJlZSB7XG4gICAgLy8gZWFjaCBxdWFkdHJlZSByZXByZXNlbnRzIGEgcXVhZHJhbnQgYW5kIGFuIGFnZ3JlZ2F0ZSBib2R5XG4gICAgLy8gdGhhdCByZXByZXNlbnRzIGFsbCBib2RpZXMgaW5zaWRlIHRoZSBxdWFkcmFudFxuICAgIGNvbnN0cnVjdG9yKHBhcmFtKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiAoYWdncmVnYXRlZCkgYm9keSBpbiB0aGlzIHF1YWRcbiAgICAgICAgICogQHR5cGUgIHtvYmplY3R9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJvZHkgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogdHJlZSByZXByZXNlbnRpbmcgdGhlIG5vcnRod2VzdCBxdWFkcmFudFxuICAgICAgICAgKiBAdHlwZSAge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucXVhZCA9IG51bGw7XG4gICAgICAgIHRoaXMuTlcgPSBudWxsO1xuICAgICAgICB0aGlzLk5FID0gbnVsbDtcbiAgICAgICAgdGhpcy5TVyA9IG51bGw7XG4gICAgICAgIHRoaXMuU0UgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogdGhyZXNob2xkXG4gICAgICAgICAqIEB0eXBlICB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy50aGV0YSA9IDAuNTtcbiAgICAgICAgaWYgKHBhcmFtICE9IG51bGwpXG4gICAgICAgICAgICB0aGlzLnF1YWQgPSBwYXJhbTtcbiAgICB9XG4gICAgLy8gaW5zZXJ0IGEgYm9keShub2RlKSBpbnRvIHRoZSB0cmVlXG4gICAgaW5zZXJ0KGJvKSB7XG4gICAgICAgIC8vIGlmIHRoaXMgbm9kZSBkb2VzIG5vdCBjb250YWluIGEgYm9keSwgcHV0IHRoZSBuZXcgYm9keSBibyBoZXJlXG4gICAgICAgIGlmICh0aGlzLmJvZHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5ID0gYm87XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW50ZXJuYWwgbm9kZVxuICAgICAgICBpZiAoIXRoaXMuX2lzRXh0ZXJuYWwoKSkge1xuICAgICAgICAgICAgLy8gdXBkYXRlIG1hc3MgaW5mb1xuICAgICAgICAgICAgdGhpcy5ib2R5ID0gdGhpcy5ib2R5LmFkZChibyk7XG4gICAgICAgICAgICAvLyBpbnNlcnQgYm9keSBpbnRvIHF1YWRyYW50XG4gICAgICAgICAgICB0aGlzLl9wdXRCb2R5KGJvKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLy8gZXh0ZXJuYWwgbm9kZVxuICAgICAgICAgICAgLy8gZGl2aWRlIHRoaXMgcmVnaW9uIGludG8gZm91ciBjaGlsZHJlblxuICAgICAgICAgICAgaWYgKHRoaXMucXVhZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuTlcgPSBuZXcgUXVhZFRyZWUodGhpcy5xdWFkLk5XKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuTkUgPSBuZXcgUXVhZFRyZWUodGhpcy5xdWFkLk5FKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuU1cgPSBuZXcgUXVhZFRyZWUodGhpcy5xdWFkLlNXKCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuU0UgPSBuZXcgUXVhZFRyZWUodGhpcy5xdWFkLlNFKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaW5zZXJ0IHRoaXMgYm9keSBhbmQgYm9cbiAgICAgICAgICAgIHRoaXMuX3B1dEJvZHkodGhpcy5ib2R5KTtcbiAgICAgICAgICAgIHRoaXMuX3B1dEJvZHkoYm8pO1xuICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBtYXNzIGluZm9cbiAgICAgICAgICAgIHRoaXMuYm9keSA9IHRoaXMuYm9keS5hZGQoYm8pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGluc2VydHMgYm8gaW50byBhIHF1YWRcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBfcHV0Qm9keShibykge1xuICAgICAgICBpZiAoIXRoaXMucXVhZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGJvLmluKHRoaXMucXVhZC5OVygpKSAmJiB0aGlzLk5XKVxuICAgICAgICAgICAgdGhpcy5OVy5pbnNlcnQoYm8pO1xuICAgICAgICBlbHNlIGlmIChiby5pbih0aGlzLnF1YWQuTkUoKSkgJiYgdGhpcy5ORSlcbiAgICAgICAgICAgIHRoaXMuTkUuaW5zZXJ0KGJvKTtcbiAgICAgICAgZWxzZSBpZiAoYm8uaW4odGhpcy5xdWFkLlNXKCkpICYmIHRoaXMuU1cpXG4gICAgICAgICAgICB0aGlzLlNXLmluc2VydChibyk7XG4gICAgICAgIGVsc2UgaWYgKGJvLmluKHRoaXMucXVhZC5TRSgpKSAmJiB0aGlzLlNFKVxuICAgICAgICAgICAgdGhpcy5TRS5pbnNlcnQoYm8pO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBfaXNFeHRlcm5hbCgpIHtcbiAgICAgICAgLy8gZm91ciBjaGlsZHJlbiBhcmUgbnVsbFxuICAgICAgICByZXR1cm4gKHRoaXMuTlcgPT0gbnVsbCAmJiB0aGlzLk5FID09IG51bGwgJiYgdGhpcy5TVyA9PSBudWxsICYmIHRoaXMuU0UgPT0gbnVsbCk7XG4gICAgfVxuICAgIC8vIHVwZGF0ZSB0aGUgZm9yY2VzXG4gICAgdXBkYXRlRm9yY2UoYm8pIHtcbiAgICAgICAgaWYgKHRoaXMuYm9keSA9PSBudWxsIHx8IGJvID09PSB0aGlzLmJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0aGUgY3VycmVudCBub2RlIGlzIGV4dGVybmFsXG4gICAgICAgIGlmICh0aGlzLl9pc0V4dGVybmFsKCkpXG4gICAgICAgICAgICBiby5hZGRGb3JjZSh0aGlzLmJvZHkpO1xuICAgICAgICAvLyBpbnRlcm5hbCBub2Rlc1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLnF1YWQgPyB0aGlzLnF1YWQuZ2V0TGVuZ3RoKCkgOiAwO1xuICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuYm9keS5kaXN0YW5jZVRvKGJvKTtcbiAgICAgICAgICAgIC8vIGIgaXMgZmFyIGVub3VnaFxuICAgICAgICAgICAgaWYgKChzIC8gZCkgPCB0aGlzLnRoZXRhKVxuICAgICAgICAgICAgICAgIGJvLmFkZEZvcmNlKHRoaXMuYm9keSk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLk5XICYmIHRoaXMuTlcudXBkYXRlRm9yY2UoYm8pO1xuICAgICAgICAgICAgICAgIHRoaXMuTkUgJiYgdGhpcy5ORS51cGRhdGVGb3JjZShibyk7XG4gICAgICAgICAgICAgICAgdGhpcy5TVyAmJiB0aGlzLlNXLnVwZGF0ZUZvcmNlKGJvKTtcbiAgICAgICAgICAgICAgICB0aGlzLlNFICYmIHRoaXMuU0UudXBkYXRlRm9yY2UoYm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVhZFRyZWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/quadTree.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/fruchterman.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/fruchterman.js ***! \****************************************************************************************/ /*! exports provided: FruchtermanLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanLayout\", function() { return FruchtermanLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\n\nconst SPEED_DIVISOR = 800;\n/**\n * fruchterman 布局\n */\nclass FruchtermanLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 是否启动 worker */\n this.workerEnabled = false;\n /** 重力大小,影响图的紧凑程度 */\n this.gravity = 10;\n /** 速度 */\n this.speed = 5;\n /** 是否产生聚类力 */\n this.clustering = false;\n /** 聚类力大小 */\n this.clusterGravity = 10;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n /** 每次迭代结束的回调函数 */\n this.tick = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 1000,\n gravity: 10,\n speed: 1,\n clustering: false,\n clusterGravity: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n var _a, _b;\n const self = this;\n const nodes = self.nodes;\n if (self.timeInterval !== undefined && typeof window !== \"undefined\") {\n window.clearInterval(self.timeInterval);\n }\n if (!nodes || nodes.length === 0) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n (_b = self.onLayoutEnd) === null || _b === void 0 ? void 0 : _b.call(self);\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * this.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n return self.run();\n }\n run() {\n var _a;\n const self = this;\n const nodes = self.nodes;\n if (!nodes)\n return;\n const { edges, maxIteration, workerEnabled } = self;\n const clustering = self.clustering;\n const clusterMap = {};\n if (clustering) {\n nodes.forEach((n) => {\n if (clusterMap[n.cluster] === undefined) {\n const cluster = {\n name: n.cluster,\n cx: 0,\n cy: 0,\n count: 0\n };\n clusterMap[n.cluster] = cluster;\n }\n const c = clusterMap[n.cluster];\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x)) {\n c.cx += n.x;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y)) {\n c.cy += n.y;\n }\n c.count++;\n });\n for (const key in clusterMap) {\n clusterMap[key].cx /= clusterMap[key].count;\n clusterMap[key].cy /= clusterMap[key].count;\n }\n }\n if (workerEnabled) {\n for (let i = 0; i < maxIteration; i++) {\n self.runOneStep(clusterMap);\n }\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n }\n else {\n if (typeof window === \"undefined\")\n return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n var _a;\n self.runOneStep(clusterMap);\n iter++;\n if (iter >= maxIteration) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n return {\n nodes,\n edges\n };\n }\n runOneStep(clusterMap) {\n var _a;\n const self = this;\n const nodes = self.nodes;\n if (!nodes)\n return;\n const { edges, center, gravity, speed, clustering } = self;\n const area = self.height * self.width;\n const maxDisplace = Math.sqrt(area) / 10;\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const displacements = [];\n nodes.forEach((_, j) => {\n displacements[j] = { x: 0, y: 0 };\n });\n self.applyCalculate(nodes, edges, displacements, k, k2);\n // gravity for clusters\n if (clustering) {\n const clusterGravity = self.clusterGravity || gravity;\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n const c = clusterMap[n.cluster];\n const distLength = Math.sqrt((n.x - c.cx) * (n.x - c.cx) + (n.y - c.cy) * (n.y - c.cy));\n const gravityForce = k * clusterGravity;\n displacements[j].x -= (gravityForce * (n.x - c.cx)) / distLength;\n displacements[j].y -= (gravityForce * (n.y - c.cy)) / distLength;\n });\n for (const key in clusterMap) {\n clusterMap[key].cx = 0;\n clusterMap[key].cy = 0;\n clusterMap[key].count = 0;\n }\n nodes.forEach((n) => {\n const c = clusterMap[n.cluster];\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x)) {\n c.cx += n.x;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y)) {\n c.cy += n.y;\n }\n c.count++;\n });\n for (const key in clusterMap) {\n clusterMap[key].cx /= clusterMap[key].count;\n clusterMap[key].cy /= clusterMap[key].count;\n }\n }\n // gravity\n nodes.forEach((n, j) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n const gravityForce = 0.01 * k * gravity;\n displacements[j].x -= gravityForce * (n.x - center[0]);\n displacements[j].y -= gravityForce * (n.y - center[1]);\n });\n // move\n nodes.forEach((n, j) => {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.fy)) {\n n.x = n.fx;\n n.y = n.fy;\n return;\n }\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(n.y))\n return;\n const distLength = Math.sqrt(displacements[j].x * displacements[j].x +\n displacements[j].y * displacements[j].y);\n if (distLength > 0) {\n // && !n.isFixed()\n const limitedDist = Math.min(maxDisplace * (speed / SPEED_DIVISOR), distLength);\n n.x += (displacements[j].x / distLength) * limitedDist;\n n.y += (displacements[j].y / distLength) * limitedDist;\n }\n });\n (_a = self.tick) === null || _a === void 0 ? void 0 : _a.call(self);\n }\n applyCalculate(nodes, edges, displacements, k, k2) {\n const self = this;\n self.calRepulsive(nodes, displacements, k2);\n if (edges)\n self.calAttractive(edges, displacements, k);\n }\n calRepulsive(nodes, displacements, k2) {\n nodes.forEach((v, i) => {\n displacements[i] = { x: 0, y: 0 };\n nodes.forEach((u, j) => {\n if (i === j) {\n return;\n }\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.x) ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.x) ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.y) ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.y)) {\n return;\n }\n let vecX = v.x - u.x;\n let vecY = v.y - u.y;\n let vecLengthSqr = vecX * vecX + vecY * vecY;\n if (vecLengthSqr === 0) {\n vecLengthSqr = 1;\n const sign = i > j ? 1 : -1;\n vecX = 0.01 * sign;\n vecY = 0.01 * sign;\n }\n const common = k2 / vecLengthSqr;\n displacements[i].x += vecX * common;\n displacements[i].y += vecY * common;\n });\n });\n }\n calAttractive(edges, displacements, k) {\n edges.forEach((e) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n if (!source || !target)\n return;\n const uIndex = this.nodeIdxMap[source];\n const vIndex = this.nodeIdxMap[target];\n if (uIndex === vIndex) {\n return;\n }\n const u = this.nodeMap[source];\n const v = this.nodeMap[target];\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.x) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(v.y) || !Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(u.y)) {\n return;\n }\n const vecX = v.x - u.x;\n const vecY = v.y - u.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY);\n const common = (vecLength * vecLength) / k;\n displacements[vIndex].x -= (vecX / vecLength) * common;\n displacements[vIndex].y -= (vecY / vecLength) * common;\n displacements[uIndex].x += (vecX / vecLength) * common;\n displacements[uIndex].y += (vecY / vecLength) * common;\n });\n }\n stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n getType() {\n return \"fruchterman\";\n }\n}\n//# sourceMappingURL=fruchterman.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZnJ1Y2h0ZXJtYW4uanM/ZGI3NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzhCO0FBQ3NCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ08sZ0NBQWdDLDBDQUFJO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxQ0FBcUM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzREFBUTtBQUM1QjtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0Q0FBNEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRLFVBQVUsc0RBQVE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQSxvQkFBb0Isc0RBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLFVBQVUsc0RBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixzREFBUSxVQUFVLHNEQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLFVBQVUsc0RBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCLHFCQUFxQixzREFBUTtBQUM3QixxQkFBcUIsc0RBQVE7QUFDN0IscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw2REFBZTtBQUMxQywyQkFBMkIsNkRBQWU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLFVBQVUsc0RBQVEsVUFBVSxzREFBUSxVQUFVLHNEQUFRO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2ZydWNodGVybWFuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGZydWNodGVybWFuIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgZ2V0RWRnZVRlcm1pbmFsLCBpc051bWJlciB9IGZyb20gXCIuLi91dGlsXCI7XG5jb25zdCBTUEVFRF9ESVZJU09SID0gODAwO1xuLyoqXG4gKiBmcnVjaHRlcm1hbiDluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIEZydWNodGVybWFuTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5YGc5q2i6L+t5Luj55qE5pyA5aSn6L+t5Luj5pWwICovXG4gICAgICAgIHRoaXMubWF4SXRlcmF0aW9uID0gMTAwMDtcbiAgICAgICAgLyoqIOaYr+WQpuWQr+WKqCB3b3JrZXIgKi9cbiAgICAgICAgdGhpcy53b3JrZXJFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIC8qKiDph43lipvlpKflsI/vvIzlvbHlk43lm77nmoTntKflh5HnqIvluqYgKi9cbiAgICAgICAgdGhpcy5ncmF2aXR5ID0gMTA7XG4gICAgICAgIC8qKiDpgJ/luqYgKi9cbiAgICAgICAgdGhpcy5zcGVlZCA9IDU7XG4gICAgICAgIC8qKiDmmK/lkKbkuqfnlJ/ogZrnsbvlipsgKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIC8qKiDogZrnsbvlipvlpKflsI8gKi9cbiAgICAgICAgdGhpcy5jbHVzdGVyR3Jhdml0eSA9IDEwO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMubm9kZU1hcCA9IHt9O1xuICAgICAgICB0aGlzLm5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICAvKiog5q+P5qyh6L+t5Luj57uT5p2f55qE5Zue6LCD5Ye95pWwICovXG4gICAgICAgIHRoaXMudGljayA9ICgpID0+IHsgfTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhJdGVyYXRpb246IDEwMDAsXG4gICAgICAgICAgICBncmF2aXR5OiAxMCxcbiAgICAgICAgICAgIHNwZWVkOiAxLFxuICAgICAgICAgICAgY2x1c3RlcmluZzogZmFsc2UsXG4gICAgICAgICAgICBjbHVzdGVyR3Jhdml0eTogMTBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgaWYgKHNlbGYudGltZUludGVydmFsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoc2VsZi50aW1lSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAoX2EgPSBzZWxmLm9uTGF5b3V0RW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzZWxmKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmNlbnRlcikge1xuICAgICAgICAgICAgc2VsZi5jZW50ZXIgPSBbc2VsZi53aWR0aCAvIDIsIHNlbGYuaGVpZ2h0IC8gMl07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgKF9iID0gc2VsZi5vbkxheW91dEVuZCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoc2VsZik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICBjb25zdCBub2RlSWR4TWFwID0ge307XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICBub2RlLnggPSBNYXRoLnJhbmRvbSgpICogdGhpcy53aWR0aDtcbiAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS55KSlcbiAgICAgICAgICAgICAgICBub2RlLnkgPSBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgICAgICAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5ub2RlTWFwID0gbm9kZU1hcDtcbiAgICAgICAgc2VsZi5ub2RlSWR4TWFwID0gbm9kZUlkeE1hcDtcbiAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgIHJldHVybiBzZWxmLnJ1bigpO1xuICAgIH1cbiAgICBydW4oKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgaWYgKCFub2RlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBlZGdlcywgbWF4SXRlcmF0aW9uLCB3b3JrZXJFbmFibGVkIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBjbHVzdGVyaW5nID0gc2VsZi5jbHVzdGVyaW5nO1xuICAgICAgICBjb25zdCBjbHVzdGVyTWFwID0ge307XG4gICAgICAgIGlmIChjbHVzdGVyaW5nKSB7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJNYXBbbi5jbHVzdGVyXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsdXN0ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuLmNsdXN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY2x1c3Rlck1hcFtuLmNsdXN0ZXJdID0gY2x1c3RlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGNsdXN0ZXJNYXBbbi5jbHVzdGVyXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXIobi54KSkge1xuICAgICAgICAgICAgICAgICAgICBjLmN4ICs9IG4ueDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG4ueSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5jeSArPSBuLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGMuY291bnQrKztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2x1c3Rlck1hcCkge1xuICAgICAgICAgICAgICAgIGNsdXN0ZXJNYXBba2V5XS5jeCAvPSBjbHVzdGVyTWFwW2tleV0uY291bnQ7XG4gICAgICAgICAgICAgICAgY2x1c3Rlck1hcFtrZXldLmN5IC89IGNsdXN0ZXJNYXBba2V5XS5jb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAod29ya2VyRW5hYmxlZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJdGVyYXRpb247IGkrKykge1xuICAgICAgICAgICAgICAgIHNlbGYucnVuT25lU3RlcChjbHVzdGVyTWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChfYSA9IHNlbGYub25MYXlvdXRFbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHNlbGYpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbGV0IGl0ZXIgPSAwO1xuICAgICAgICAgICAgLy8gaW50ZXJ2YWwgZm9yIHJlbmRlciB0aGUgcmVzdWx0IGFmdGVyIGVhY2ggaXRlcmF0aW9uXG4gICAgICAgICAgICB0aGlzLnRpbWVJbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHNlbGYucnVuT25lU3RlcChjbHVzdGVyTWFwKTtcbiAgICAgICAgICAgICAgICBpdGVyKys7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZXIgPj0gbWF4SXRlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IHNlbGYub25MYXlvdXRFbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHNlbGYpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzZWxmLnRpbWVJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgICAgZWRnZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcnVuT25lU3RlcChjbHVzdGVyTWFwKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgaWYgKCFub2RlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBlZGdlcywgY2VudGVyLCBncmF2aXR5LCBzcGVlZCwgY2x1c3RlcmluZyB9ID0gc2VsZjtcbiAgICAgICAgY29uc3QgYXJlYSA9IHNlbGYuaGVpZ2h0ICogc2VsZi53aWR0aDtcbiAgICAgICAgY29uc3QgbWF4RGlzcGxhY2UgPSBNYXRoLnNxcnQoYXJlYSkgLyAxMDtcbiAgICAgICAgY29uc3QgazIgPSBhcmVhIC8gKG5vZGVzLmxlbmd0aCArIDEpO1xuICAgICAgICBjb25zdCBrID0gTWF0aC5zcXJ0KGsyKTtcbiAgICAgICAgY29uc3QgZGlzcGxhY2VtZW50cyA9IFtdO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChfLCBqKSA9PiB7XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2pdID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLmFwcGx5Q2FsY3VsYXRlKG5vZGVzLCBlZGdlcywgZGlzcGxhY2VtZW50cywgaywgazIpO1xuICAgICAgICAvLyBncmF2aXR5IGZvciBjbHVzdGVyc1xuICAgICAgICBpZiAoY2x1c3RlcmluZykge1xuICAgICAgICAgICAgY29uc3QgY2x1c3RlckdyYXZpdHkgPSBzZWxmLmNsdXN0ZXJHcmF2aXR5IHx8IGdyYXZpdHk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChuLCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGNsdXN0ZXJNYXBbbi5jbHVzdGVyXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXN0TGVuZ3RoID0gTWF0aC5zcXJ0KChuLnggLSBjLmN4KSAqIChuLnggLSBjLmN4KSArIChuLnkgLSBjLmN5KSAqIChuLnkgLSBjLmN5KSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Jhdml0eUZvcmNlID0gayAqIGNsdXN0ZXJHcmF2aXR5O1xuICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbal0ueCAtPSAoZ3Jhdml0eUZvcmNlICogKG4ueCAtIGMuY3gpKSAvIGRpc3RMZW5ndGg7XG4gICAgICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tqXS55IC09IChncmF2aXR5Rm9yY2UgKiAobi55IC0gYy5jeSkpIC8gZGlzdExlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY2x1c3Rlck1hcCkge1xuICAgICAgICAgICAgICAgIGNsdXN0ZXJNYXBba2V5XS5jeCA9IDA7XG4gICAgICAgICAgICAgICAgY2x1c3Rlck1hcFtrZXldLmN5ID0gMDtcbiAgICAgICAgICAgICAgICBjbHVzdGVyTWFwW2tleV0uY291bnQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBjbHVzdGVyTWFwW24uY2x1c3Rlcl07XG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG4ueCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5jeCArPSBuLng7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc051bWJlcihuLnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGMuY3kgKz0gbi55O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjLmNvdW50Kys7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGNsdXN0ZXJNYXApIHtcbiAgICAgICAgICAgICAgICBjbHVzdGVyTWFwW2tleV0uY3ggLz0gY2x1c3Rlck1hcFtrZXldLmNvdW50O1xuICAgICAgICAgICAgICAgIGNsdXN0ZXJNYXBba2V5XS5jeSAvPSBjbHVzdGVyTWFwW2tleV0uY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZ3Jhdml0eVxuICAgICAgICBub2Rlcy5mb3JFYWNoKChuLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG4ueCkgfHwgIWlzTnVtYmVyKG4ueSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgZ3Jhdml0eUZvcmNlID0gMC4wMSAqIGsgKiBncmF2aXR5O1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tqXS54IC09IGdyYXZpdHlGb3JjZSAqIChuLnggLSBjZW50ZXJbMF0pO1xuICAgICAgICAgICAgZGlzcGxhY2VtZW50c1tqXS55IC09IGdyYXZpdHlGb3JjZSAqIChuLnkgLSBjZW50ZXJbMV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gbW92ZVxuICAgICAgICBub2Rlcy5mb3JFYWNoKChuLCBqKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIobi5meCkgJiYgaXNOdW1iZXIobi5meSkpIHtcbiAgICAgICAgICAgICAgICBuLnggPSBuLmZ4O1xuICAgICAgICAgICAgICAgIG4ueSA9IG4uZnk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc051bWJlcihuLngpIHx8ICFpc051bWJlcihuLnkpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RMZW5ndGggPSBNYXRoLnNxcnQoZGlzcGxhY2VtZW50c1tqXS54ICogZGlzcGxhY2VtZW50c1tqXS54ICtcbiAgICAgICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2pdLnkgKiBkaXNwbGFjZW1lbnRzW2pdLnkpO1xuICAgICAgICAgICAgaWYgKGRpc3RMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gJiYgIW4uaXNGaXhlZCgpXG4gICAgICAgICAgICAgICAgY29uc3QgbGltaXRlZERpc3QgPSBNYXRoLm1pbihtYXhEaXNwbGFjZSAqIChzcGVlZCAvIFNQRUVEX0RJVklTT1IpLCBkaXN0TGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBuLnggKz0gKGRpc3BsYWNlbWVudHNbal0ueCAvIGRpc3RMZW5ndGgpICogbGltaXRlZERpc3Q7XG4gICAgICAgICAgICAgICAgbi55ICs9IChkaXNwbGFjZW1lbnRzW2pdLnkgLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgKF9hID0gc2VsZi50aWNrKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzZWxmKTtcbiAgICB9XG4gICAgYXBwbHlDYWxjdWxhdGUobm9kZXMsIGVkZ2VzLCBkaXNwbGFjZW1lbnRzLCBrLCBrMikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgc2VsZi5jYWxSZXB1bHNpdmUobm9kZXMsIGRpc3BsYWNlbWVudHMsIGsyKTtcbiAgICAgICAgaWYgKGVkZ2VzKVxuICAgICAgICAgICAgc2VsZi5jYWxBdHRyYWN0aXZlKGVkZ2VzLCBkaXNwbGFjZW1lbnRzLCBrKTtcbiAgICB9XG4gICAgY2FsUmVwdWxzaXZlKG5vZGVzLCBkaXNwbGFjZW1lbnRzLCBrMikge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW2ldID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKCh1LCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyKHYueCkgfHxcbiAgICAgICAgICAgICAgICAgICAgIWlzTnVtYmVyKHUueCkgfHxcbiAgICAgICAgICAgICAgICAgICAgIWlzTnVtYmVyKHYueSkgfHxcbiAgICAgICAgICAgICAgICAgICAgIWlzTnVtYmVyKHUueSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgdmVjWCA9IHYueCAtIHUueDtcbiAgICAgICAgICAgICAgICBsZXQgdmVjWSA9IHYueSAtIHUueTtcbiAgICAgICAgICAgICAgICBsZXQgdmVjTGVuZ3RoU3FyID0gdmVjWCAqIHZlY1ggKyB2ZWNZICogdmVjWTtcbiAgICAgICAgICAgICAgICBpZiAodmVjTGVuZ3RoU3FyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZlY0xlbmd0aFNxciA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ24gPSBpID4gaiA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICAgICAgdmVjWCA9IDAuMDEgKiBzaWduO1xuICAgICAgICAgICAgICAgICAgICB2ZWNZID0gMC4wMSAqIHNpZ247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1vbiA9IGsyIC8gdmVjTGVuZ3RoU3FyO1xuICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbaV0ueCArPSB2ZWNYICogY29tbW9uO1xuICAgICAgICAgICAgICAgIGRpc3BsYWNlbWVudHNbaV0ueSArPSB2ZWNZICogY29tbW9uO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYWxBdHRyYWN0aXZlKGVkZ2VzLCBkaXNwbGFjZW1lbnRzLCBrKSB7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgaWYgKCFzb3VyY2UgfHwgIXRhcmdldClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCB1SW5kZXggPSB0aGlzLm5vZGVJZHhNYXBbc291cmNlXTtcbiAgICAgICAgICAgIGNvbnN0IHZJbmRleCA9IHRoaXMubm9kZUlkeE1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgaWYgKHVJbmRleCA9PT0gdkluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdSA9IHRoaXMubm9kZU1hcFtzb3VyY2VdO1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMubm9kZU1hcFt0YXJnZXRdO1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcih2LngpIHx8ICFpc051bWJlcih1LngpIHx8ICFpc051bWJlcih2LnkpIHx8ICFpc051bWJlcih1LnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdmVjWCA9IHYueCAtIHUueDtcbiAgICAgICAgICAgIGNvbnN0IHZlY1kgPSB2LnkgLSB1Lnk7XG4gICAgICAgICAgICBjb25zdCB2ZWNMZW5ndGggPSBNYXRoLnNxcnQodmVjWCAqIHZlY1ggKyB2ZWNZICogdmVjWSk7XG4gICAgICAgICAgICBjb25zdCBjb21tb24gPSAodmVjTGVuZ3RoICogdmVjTGVuZ3RoKSAvIGs7XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3ZJbmRleF0ueCAtPSAodmVjWCAvIHZlY0xlbmd0aCkgKiBjb21tb247XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3ZJbmRleF0ueSAtPSAodmVjWSAvIHZlY0xlbmd0aCkgKiBjb21tb247XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3VJbmRleF0ueCArPSAodmVjWCAvIHZlY0xlbmd0aCkgKiBjb21tb247XG4gICAgICAgICAgICBkaXNwbGFjZW1lbnRzW3VJbmRleF0ueSArPSAodmVjWSAvIHZlY0xlbmd0aCkgKiBjb21tb247XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy50aW1lSW50ZXJ2YWwgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBzZWxmLnN0b3AoKTtcbiAgICAgICAgc2VsZi50aWNrID0gbnVsbDtcbiAgICAgICAgc2VsZi5ub2RlcyA9IG51bGw7XG4gICAgICAgIHNlbGYuZWRnZXMgPSBudWxsO1xuICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICAgIGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiBcImZydWNodGVybWFuXCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnJ1Y2h0ZXJtYW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/fruchterman.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gForce.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gForce.js ***! \***********************************************************************************/ /*! exports provided: GForceLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GForceLayout\", function() { return GForceLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\n\n\nconst proccessToFunc = (value, defaultV) => {\n let func;\n if (!value) {\n func = (d) => {\n return defaultV || 1;\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n func = (d) => {\n return value;\n };\n }\n else {\n func = value;\n }\n return func;\n};\n/**\n * graphin 中的 force 布局\n */\nclass GForceLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 是否启动 worker */\n this.workerEnabled = false;\n /** 弹簧引力系数 */\n this.edgeStrength = 200;\n /** 斥力系数 */\n this.nodeStrength = 1000;\n /** 库伦系数 */\n this.coulombDisScale = 0.005;\n /** 阻尼系数 */\n this.damping = 0.9;\n /** 最大速度 */\n this.maxSpeed = 1000;\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n this.minMovement = 0.5;\n /** 迭代中衰减 */\n this.interval = 0.02;\n /** 斥力的一个系数 */\n this.factor = 1;\n /** 理想边长 */\n this.linkDistance = 1;\n /** 重力大小 */\n this.gravity = 10;\n /** 是否防止重叠 */\n this.preventOverlap = true;\n /** 每次迭代结束的回调函数 */\n this.tick = () => { };\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 500,\n gravity: 10,\n enableTick: true\n };\n }\n /**\n * 执行布局\n */\n execute() {\n var _a, _b;\n const self = this;\n const nodes = self.nodes;\n if (self.timeInterval !== undefined && typeof window !== \"undefined\") {\n window.clearInterval(self.timeInterval);\n }\n if (!nodes || nodes.length === 0) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n (_b = self.onLayoutEnd) === null || _b === void 0 ? void 0 : _b.call(self);\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * self.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n self.linkDistance = proccessToFunc(self.linkDistance, 1);\n self.nodeStrength = proccessToFunc(self.nodeStrength, 1);\n self.edgeStrength = proccessToFunc(self.edgeStrength, 1);\n // node size function\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n if (self.preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res + nodeSpacingFunc(d);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res + nodeSpacingFunc(d);\n }\n return d.size + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n return res + nodeSpacingFunc(d);\n };\n }\n else {\n nodeSizeFunc = (d) => nodeSize + nodeSpacingFunc(d);\n }\n }\n self.nodeSize = nodeSizeFunc;\n const edges = self.edges;\n self.degrees = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getDegree\"])(nodes.length, self.nodeIdxMap, edges);\n if (!self.getMass) {\n self.getMass = (d) => {\n const mass = self.degrees[self.nodeIdxMap[d.id]] || 1;\n return mass;\n };\n }\n // layout\n self.run();\n }\n run() {\n var _a;\n const self = this;\n const { maxIteration, nodes, workerEnabled, minMovement } = self;\n if (!nodes)\n return;\n if (workerEnabled) {\n for (let i = 0; i < maxIteration; i++) {\n const previousPos = self.runOneStep(i);\n if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {\n break;\n }\n }\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n }\n else {\n if (typeof window === \"undefined\")\n return;\n let iter = 0;\n // interval for render the result after each iteration\n this.timeInterval = window.setInterval(() => {\n var _a, _b;\n if (!nodes)\n return;\n const previousPos = self.runOneStep(iter) || [];\n if (self.reachMoveThreshold(nodes, previousPos, minMovement)) {\n (_a = self.onLayoutEnd) === null || _a === void 0 ? void 0 : _a.call(self);\n window.clearInterval(self.timeInterval);\n }\n iter++;\n if (iter >= maxIteration) {\n (_b = self.onLayoutEnd) === null || _b === void 0 ? void 0 : _b.call(self);\n window.clearInterval(self.timeInterval);\n }\n }, 0);\n }\n }\n reachMoveThreshold(nodes, previousPos, minMovement) {\n // whether to stop the iteration\n let movement = 0;\n nodes.forEach((node, j) => {\n const vx = node.x - previousPos[j].x;\n const vy = node.y - previousPos[j].y;\n movement += Math.sqrt(vx * vx + vy * vy);\n });\n movement /= nodes.length;\n return movement < minMovement;\n }\n runOneStep(iter) {\n var _a;\n const self = this;\n const { nodes, edges } = self;\n const accArray = [];\n const velArray = [];\n if (!nodes)\n return;\n nodes.forEach((_, i) => {\n accArray[2 * i] = 0;\n accArray[2 * i + 1] = 0;\n velArray[2 * i] = 0;\n velArray[2 * i + 1] = 0;\n });\n self.calRepulsive(accArray, nodes);\n if (edges)\n self.calAttractive(accArray, edges);\n self.calGravity(accArray, nodes);\n const stepInterval = Math.max(0.02, self.interval - iter * 0.002);\n self.updateVelocity(accArray, velArray, stepInterval, nodes);\n const previousPos = [];\n nodes.forEach((node) => {\n previousPos.push({\n x: node.x,\n y: node.y\n });\n });\n self.updatePosition(velArray, stepInterval, nodes);\n (_a = self.tick) === null || _a === void 0 ? void 0 : _a.call(self);\n return previousPos;\n }\n calRepulsive(accArray, nodes) {\n const self = this;\n // const nodes = self.nodes;\n const getMass = self.getMass;\n const nodeStrength = self.nodeStrength;\n const factor = self.factor;\n const coulombDisScale = self.coulombDisScale;\n const preventOverlap = self.preventOverlap;\n const nodeSize = self.nodeSize;\n nodes.forEach((ni, i) => {\n const massi = getMass ? getMass(ni) : 1;\n nodes.forEach((nj, j) => {\n if (i >= j)\n return;\n // if (!accArray[j]) accArray[j] = 0;\n const vecX = ni.x - nj.x;\n const vecY = ni.y - nj.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY) + 0.01;\n const nVecLength = (vecLength + 0.1) * coulombDisScale;\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const param = (((nodeStrength(ni) + nodeStrength(nj)) / 2) * factor) /\n (nVecLength * nVecLength);\n const massj = getMass ? getMass(nj) : 1;\n accArray[2 * i] += (direX * param);\n accArray[2 * i + 1] += (direY * param);\n accArray[2 * j] -= (direX * param);\n accArray[2 * j + 1] -= (direY * param);\n if (preventOverlap && vecLength < (nodeSize(ni) + nodeSize(nj)) / 2) {\n const paramOverlap = (nodeStrength(ni) + nodeStrength(nj)) / 2 / (vecLength * vecLength);\n accArray[2 * i] += (direX * paramOverlap) / massi;\n accArray[2 * i + 1] += (direY * paramOverlap) / massi;\n accArray[2 * j] -= (direX * paramOverlap) / massj;\n accArray[2 * j + 1] -= (direY * paramOverlap) / massj;\n }\n });\n });\n }\n calAttractive(accArray, edges) {\n const self = this;\n // const edges = self.edges;\n const nodeMap = self.nodeMap;\n const nodeIdxMap = self.nodeIdxMap;\n const linkDistance = self.linkDistance;\n const edgeStrength = self.edgeStrength;\n const getMass = self.getMass;\n edges.forEach((edge, i) => {\n const source = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'source');\n const target = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(edge, 'target');\n const sourceNode = nodeMap[source];\n const targetNode = nodeMap[target];\n const vecX = targetNode.x - sourceNode.x;\n const vecY = targetNode.y - sourceNode.y;\n const vecLength = Math.sqrt(vecX * vecX + vecY * vecY) + 0.01;\n const direX = vecX / vecLength;\n const direY = vecY / vecLength;\n const length = linkDistance(edge) || 1;\n const diff = length - vecLength;\n const param = diff * edgeStrength(edge);\n const sourceIdx = nodeIdxMap[source];\n const targetIdx = nodeIdxMap[target];\n const massSource = getMass ? getMass(sourceNode) : 1;\n const massTarget = getMass ? getMass(targetNode) : 1;\n accArray[2 * sourceIdx] -= (direX * param) / massSource;\n accArray[2 * sourceIdx + 1] -= (direY * param) / massSource;\n accArray[2 * targetIdx] += (direX * param) / massTarget;\n accArray[2 * targetIdx + 1] += (direY * param) / massTarget;\n });\n }\n calGravity(accArray, nodes) {\n const self = this;\n // const nodes = self.nodes;\n const center = self.center;\n const defaultGravity = self.gravity;\n const degrees = self.degrees;\n const nodeLength = nodes.length;\n for (let i = 0; i < nodeLength; i++) {\n const node = nodes[i];\n let vecX = node.x - center[0];\n let vecY = node.y - center[1];\n let gravity = defaultGravity;\n if (self.getCenter) {\n const customCenterOpt = self.getCenter(node, degrees[i]);\n if (customCenterOpt &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenterOpt[0]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenterOpt[1]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenterOpt[2])) {\n vecX = node.x - customCenterOpt[0];\n vecY = node.y - customCenterOpt[1];\n gravity = customCenterOpt[2];\n }\n }\n if (!gravity)\n continue;\n accArray[2 * i] -= gravity * vecX;\n accArray[2 * i + 1] -= gravity * vecY;\n }\n }\n updateVelocity(accArray, velArray, stepInterval, nodes) {\n const self = this;\n const param = stepInterval * self.damping;\n // const nodes = self.nodes;\n nodes.forEach((node, i) => {\n let vx = accArray[2 * i] * param || 0.01;\n let vy = accArray[2 * i + 1] * param || 0.01;\n const vLength = Math.sqrt(vx * vx + vy * vy);\n if (vLength > self.maxSpeed) {\n const param2 = self.maxSpeed / vLength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n velArray[2 * i] = vx;\n velArray[2 * i + 1] = vy;\n });\n }\n updatePosition(velArray, stepInterval, nodes) {\n nodes.forEach((node, i) => {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fy)) {\n node.x = node.fx;\n node.y = node.fy;\n return;\n }\n const distX = velArray[2 * i] * stepInterval;\n const distY = velArray[2 * i + 1] * stepInterval;\n node.x += distX;\n node.y += distY;\n });\n }\n stop() {\n if (this.timeInterval && typeof window !== \"undefined\") {\n window.clearInterval(this.timeInterval);\n }\n }\n destroy() {\n const self = this;\n self.stop();\n self.tick = null;\n self.nodes = null;\n self.edges = null;\n self.destroyed = true;\n }\n getType() {\n return \"gForce\";\n }\n}\n//# sourceMappingURL=gForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ0ZvcmNlLmpzPzU0ZmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM4QjtBQUNnRTtBQUM5RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sMkJBQTJCLDBDQUFJO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFRO0FBQ3hCO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxREFBTztBQUNuQztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixxREFBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHVEQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0RBQWtEO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixrQkFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxlQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDZEQUFlO0FBQzFDLDJCQUEyQiw2REFBZTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0RBQVE7QUFDNUIsb0JBQW9CLHNEQUFRO0FBQzVCLG9CQUFvQixzREFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUSxhQUFhLHNEQUFRO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ0ZvcmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IGZydWNodGVybWFuIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBCYXNlIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzRnVuY3Rpb24sIGlzQXJyYXksIGdldERlZ3JlZSwgaXNPYmplY3QsIGdldEVkZ2VUZXJtaW5hbCB9IGZyb20gXCIuLi91dGlsXCI7XG5jb25zdCBwcm9jY2Vzc1RvRnVuYyA9ICh2YWx1ZSwgZGVmYXVsdFYpID0+IHtcbiAgICBsZXQgZnVuYztcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIGZ1bmMgPSAoZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWIHx8IDE7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICBmdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZ1bmMgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmM7XG59O1xuLyoqXG4gKiBncmFwaGluIOS4reeahCBmb3JjZSDluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIEdGb3JjZUxheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOWBnOatoui/reS7o+eahOacgOWkp+i/reS7o+aVsCAqL1xuICAgICAgICB0aGlzLm1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gICAgICAgIC8qKiDmmK/lkKblkK/liqggd29ya2VyICovXG4gICAgICAgIHRoaXMud29ya2VyRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAvKiog5by557Cn5byV5Yqb57O75pWwICovXG4gICAgICAgIHRoaXMuZWRnZVN0cmVuZ3RoID0gMjAwO1xuICAgICAgICAvKiog5pal5Yqb57O75pWwICovXG4gICAgICAgIHRoaXMubm9kZVN0cmVuZ3RoID0gMTAwMDtcbiAgICAgICAgLyoqIOW6k+S8puezu+aVsCAqL1xuICAgICAgICB0aGlzLmNvdWxvbWJEaXNTY2FsZSA9IDAuMDA1O1xuICAgICAgICAvKiog6Zi75bC857O75pWwICovXG4gICAgICAgIHRoaXMuZGFtcGluZyA9IDAuOTtcbiAgICAgICAgLyoqIOacgOWkp+mAn+W6piAqL1xuICAgICAgICB0aGlzLm1heFNwZWVkID0gMTAwMDtcbiAgICAgICAgLyoqIOS4gOasoei/reS7o+eahOW5s+Wdh+enu+WKqOi3neemu+Wwj+S6juivpeWAvOaXtuWBnOatoui/reS7oyAqL1xuICAgICAgICB0aGlzLm1pbk1vdmVtZW50ID0gMC41O1xuICAgICAgICAvKiog6L+t5Luj5Lit6KGw5YePICovXG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSAwLjAyO1xuICAgICAgICAvKiog5pal5Yqb55qE5LiA5Liq57O75pWwICovXG4gICAgICAgIHRoaXMuZmFjdG9yID0gMTtcbiAgICAgICAgLyoqIOeQhuaDs+i+uemVvyAqL1xuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZSA9IDE7XG4gICAgICAgIC8qKiDph43lipvlpKflsI8gKi9cbiAgICAgICAgdGhpcy5ncmF2aXR5ID0gMTA7XG4gICAgICAgIC8qKiDmmK/lkKbpmLLmraLph43lj6AgKi9cbiAgICAgICAgdGhpcy5wcmV2ZW50T3ZlcmxhcCA9IHRydWU7XG4gICAgICAgIC8qKiDmr4/mrKHov63ku6Pnu5PmnZ/nmoTlm57osIPlh73mlbAgKi9cbiAgICAgICAgdGhpcy50aWNrID0gKCkgPT4geyB9O1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMubm9kZU1hcCA9IHt9O1xuICAgICAgICB0aGlzLm5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhJdGVyYXRpb246IDUwMCxcbiAgICAgICAgICAgIGdyYXZpdHk6IDEwLFxuICAgICAgICAgICAgZW5hYmxlVGljazogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBpZiAoc2VsZi50aW1lSW50ZXJ2YWwgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzZWxmLnRpbWVJbnRlcnZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIChfYSA9IHNlbGYub25MYXlvdXRFbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHNlbGYpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi53aWR0aCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLmhlaWdodCAmJiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuY2VudGVyKSB7XG4gICAgICAgICAgICBzZWxmLmNlbnRlciA9IFtzZWxmLndpZHRoIC8gMiwgc2VsZi5oZWlnaHQgLyAyXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBjZW50ZXJbMV07XG4gICAgICAgICAgICAoX2IgPSBzZWxmLm9uTGF5b3V0RW5kKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChzZWxmKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLngpKVxuICAgICAgICAgICAgICAgIG5vZGUueCA9IE1hdGgucmFuZG9tKCkgKiBzZWxmLndpZHRoO1xuICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLnkpKVxuICAgICAgICAgICAgICAgIG5vZGUueSA9IE1hdGgucmFuZG9tKCkgKiBzZWxmLmhlaWdodDtcbiAgICAgICAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICAgICAgICAgICAgbm9kZUlkeE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLm5vZGVNYXAgPSBub2RlTWFwO1xuICAgICAgICBzZWxmLm5vZGVJZHhNYXAgPSBub2RlSWR4TWFwO1xuICAgICAgICBzZWxmLmxpbmtEaXN0YW5jZSA9IHByb2NjZXNzVG9GdW5jKHNlbGYubGlua0Rpc3RhbmNlLCAxKTtcbiAgICAgICAgc2VsZi5ub2RlU3RyZW5ndGggPSBwcm9jY2Vzc1RvRnVuYyhzZWxmLm5vZGVTdHJlbmd0aCwgMSk7XG4gICAgICAgIHNlbGYuZWRnZVN0cmVuZ3RoID0gcHJvY2Nlc3NUb0Z1bmMoc2VsZi5lZGdlU3RyZW5ndGgsIDEpO1xuICAgICAgICAvLyBub2RlIHNpemUgZnVuY3Rpb25cbiAgICAgICAgY29uc3Qgbm9kZVNpemUgPSBzZWxmLm5vZGVTaXplO1xuICAgICAgICBsZXQgbm9kZVNpemVGdW5jO1xuICAgICAgICBpZiAoc2VsZi5wcmV2ZW50T3ZlcmxhcCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZVNwYWNpbmcgPSBzZWxmLm5vZGVTcGFjaW5nO1xuICAgICAgICAgICAgbGV0IG5vZGVTcGFjaW5nRnVuYztcbiAgICAgICAgICAgIGlmIChpc051bWJlcihub2RlU3BhY2luZykpIHtcbiAgICAgICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSAoKSA9PiBub2RlU3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24obm9kZVNwYWNpbmcpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNwYWNpbmdGdW5jID0gbm9kZVNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSAoKSA9PiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFub2RlU2l6ZSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkLnNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemVbMF0gPiBkLnNpemVbMV0gPyBkLnNpemVbMF0gOiBkLnNpemVbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gZC5zaXplLndpZHRoID4gZC5zaXplLmhlaWdodCA/IGQuc2l6ZS53aWR0aCA6IGQuc2l6ZS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkLnNpemUgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEwICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KG5vZGVTaXplKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5vZGVTaXplWzBdID4gbm9kZVNpemVbMV0gPyBub2RlU2l6ZVswXSA6IG5vZGVTaXplWzFdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlU2l6ZUZ1bmMgPSAoZCkgPT4gbm9kZVNpemUgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5ub2RlU2l6ZSA9IG5vZGVTaXplRnVuYztcbiAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBzZWxmLmRlZ3JlZXMgPSBnZXREZWdyZWUobm9kZXMubGVuZ3RoLCBzZWxmLm5vZGVJZHhNYXAsIGVkZ2VzKTtcbiAgICAgICAgaWYgKCFzZWxmLmdldE1hc3MpIHtcbiAgICAgICAgICAgIHNlbGYuZ2V0TWFzcyA9IChkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFzcyA9IHNlbGYuZGVncmVlc1tzZWxmLm5vZGVJZHhNYXBbZC5pZF1dIHx8IDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hc3M7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIGxheW91dFxuICAgICAgICBzZWxmLnJ1bigpO1xuICAgIH1cbiAgICBydW4oKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbWF4SXRlcmF0aW9uLCBub2Rlcywgd29ya2VyRW5hYmxlZCwgbWluTW92ZW1lbnQgfSA9IHNlbGY7XG4gICAgICAgIGlmICghbm9kZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh3b3JrZXJFbmFibGVkKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heEl0ZXJhdGlvbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQb3MgPSBzZWxmLnJ1bk9uZVN0ZXAoaSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucmVhY2hNb3ZlVGhyZXNob2xkKG5vZGVzLCBwcmV2aW91c1BvcywgbWluTW92ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChfYSA9IHNlbGYub25MYXlvdXRFbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHNlbGYpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgbGV0IGl0ZXIgPSAwO1xuICAgICAgICAgICAgLy8gaW50ZXJ2YWwgZm9yIHJlbmRlciB0aGUgcmVzdWx0IGFmdGVyIGVhY2ggaXRlcmF0aW9uXG4gICAgICAgICAgICB0aGlzLnRpbWVJbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQb3MgPSBzZWxmLnJ1bk9uZVN0ZXAoaXRlcikgfHwgW107XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucmVhY2hNb3ZlVGhyZXNob2xkKG5vZGVzLCBwcmV2aW91c1BvcywgbWluTW92ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IHNlbGYub25MYXlvdXRFbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHNlbGYpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChzZWxmLnRpbWVJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZXIrKztcbiAgICAgICAgICAgICAgICBpZiAoaXRlciA+PSBtYXhJdGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgKF9iID0gc2VsZi5vbkxheW91dEVuZCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoc2VsZik7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHNlbGYudGltZUludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFjaE1vdmVUaHJlc2hvbGQobm9kZXMsIHByZXZpb3VzUG9zLCBtaW5Nb3ZlbWVudCkge1xuICAgICAgICAvLyB3aGV0aGVyIHRvIHN0b3AgdGhlIGl0ZXJhdGlvblxuICAgICAgICBsZXQgbW92ZW1lbnQgPSAwO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBqKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2eCA9IG5vZGUueCAtIHByZXZpb3VzUG9zW2pdLng7XG4gICAgICAgICAgICBjb25zdCB2eSA9IG5vZGUueSAtIHByZXZpb3VzUG9zW2pdLnk7XG4gICAgICAgICAgICBtb3ZlbWVudCArPSBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xuICAgICAgICB9KTtcbiAgICAgICAgbW92ZW1lbnQgLz0gbm9kZXMubGVuZ3RoO1xuICAgICAgICByZXR1cm4gbW92ZW1lbnQgPCBtaW5Nb3ZlbWVudDtcbiAgICB9XG4gICAgcnVuT25lU3RlcChpdGVyKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgbm9kZXMsIGVkZ2VzIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBhY2NBcnJheSA9IFtdO1xuICAgICAgICBjb25zdCB2ZWxBcnJheSA9IFtdO1xuICAgICAgICBpZiAoIW5vZGVzKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChfLCBpKSA9PiB7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogaV0gPSAwO1xuICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGkgKyAxXSA9IDA7XG4gICAgICAgICAgICB2ZWxBcnJheVsyICogaV0gPSAwO1xuICAgICAgICAgICAgdmVsQXJyYXlbMiAqIGkgKyAxXSA9IDA7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLmNhbFJlcHVsc2l2ZShhY2NBcnJheSwgbm9kZXMpO1xuICAgICAgICBpZiAoZWRnZXMpXG4gICAgICAgICAgICBzZWxmLmNhbEF0dHJhY3RpdmUoYWNjQXJyYXksIGVkZ2VzKTtcbiAgICAgICAgc2VsZi5jYWxHcmF2aXR5KGFjY0FycmF5LCBub2Rlcyk7XG4gICAgICAgIGNvbnN0IHN0ZXBJbnRlcnZhbCA9IE1hdGgubWF4KDAuMDIsIHNlbGYuaW50ZXJ2YWwgLSBpdGVyICogMC4wMDIpO1xuICAgICAgICBzZWxmLnVwZGF0ZVZlbG9jaXR5KGFjY0FycmF5LCB2ZWxBcnJheSwgc3RlcEludGVydmFsLCBub2Rlcyk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUG9zID0gW107XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIHByZXZpb3VzUG9zLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IG5vZGUueCxcbiAgICAgICAgICAgICAgICB5OiBub2RlLnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi51cGRhdGVQb3NpdGlvbih2ZWxBcnJheSwgc3RlcEludGVydmFsLCBub2Rlcyk7XG4gICAgICAgIChfYSA9IHNlbGYudGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc2VsZik7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1BvcztcbiAgICB9XG4gICAgY2FsUmVwdWxzaXZlKGFjY0FycmF5LCBub2Rlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgLy8gY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBnZXRNYXNzID0gc2VsZi5nZXRNYXNzO1xuICAgICAgICBjb25zdCBub2RlU3RyZW5ndGggPSBzZWxmLm5vZGVTdHJlbmd0aDtcbiAgICAgICAgY29uc3QgZmFjdG9yID0gc2VsZi5mYWN0b3I7XG4gICAgICAgIGNvbnN0IGNvdWxvbWJEaXNTY2FsZSA9IHNlbGYuY291bG9tYkRpc1NjYWxlO1xuICAgICAgICBjb25zdCBwcmV2ZW50T3ZlcmxhcCA9IHNlbGYucHJldmVudE92ZXJsYXA7XG4gICAgICAgIGNvbnN0IG5vZGVTaXplID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobmksIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hc3NpID0gZ2V0TWFzcyA/IGdldE1hc3MobmkpIDogMTtcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5qLCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gailcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIGlmICghYWNjQXJyYXlbal0pIGFjY0FycmF5W2pdID0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZWNYID0gbmkueCAtIG5qLng7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVjWSA9IG5pLnkgLSBuai55O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlY0xlbmd0aCA9IE1hdGguc3FydCh2ZWNYICogdmVjWCArIHZlY1kgKiB2ZWNZKSArIDAuMDE7XG4gICAgICAgICAgICAgICAgY29uc3QgblZlY0xlbmd0aCA9ICh2ZWNMZW5ndGggKyAwLjEpICogY291bG9tYkRpc1NjYWxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVYID0gdmVjWCAvIHZlY0xlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXJlWSA9IHZlY1kgLyB2ZWNMZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSAoKChub2RlU3RyZW5ndGgobmkpICsgbm9kZVN0cmVuZ3RoKG5qKSkgLyAyKSAqIGZhY3RvcikgL1xuICAgICAgICAgICAgICAgICAgICAoblZlY0xlbmd0aCAqIG5WZWNMZW5ndGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hc3NqID0gZ2V0TWFzcyA/IGdldE1hc3MobmopIDogMTtcbiAgICAgICAgICAgICAgICBhY2NBcnJheVsyICogaV0gKz0gKGRpcmVYICogcGFyYW0pO1xuICAgICAgICAgICAgICAgIGFjY0FycmF5WzIgKiBpICsgMV0gKz0gKGRpcmVZICogcGFyYW0pO1xuICAgICAgICAgICAgICAgIGFjY0FycmF5WzIgKiBqXSAtPSAoZGlyZVggKiBwYXJhbSk7XG4gICAgICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGogKyAxXSAtPSAoZGlyZVkgKiBwYXJhbSk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZlbnRPdmVybGFwICYmIHZlY0xlbmd0aCA8IChub2RlU2l6ZShuaSkgKyBub2RlU2l6ZShuaikpIC8gMikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbU92ZXJsYXAgPSAobm9kZVN0cmVuZ3RoKG5pKSArIG5vZGVTdHJlbmd0aChuaikpIC8gMiAvICh2ZWNMZW5ndGggKiB2ZWNMZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBhY2NBcnJheVsyICogaV0gKz0gKGRpcmVYICogcGFyYW1PdmVybGFwKSAvIG1hc3NpO1xuICAgICAgICAgICAgICAgICAgICBhY2NBcnJheVsyICogaSArIDFdICs9IChkaXJlWSAqIHBhcmFtT3ZlcmxhcCkgLyBtYXNzaTtcbiAgICAgICAgICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGpdIC09IChkaXJlWCAqIHBhcmFtT3ZlcmxhcCkgLyBtYXNzajtcbiAgICAgICAgICAgICAgICAgICAgYWNjQXJyYXlbMiAqIGogKyAxXSAtPSAoZGlyZVkgKiBwYXJhbU92ZXJsYXApIC8gbWFzc2o7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYWxBdHRyYWN0aXZlKGFjY0FycmF5LCBlZGdlcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgLy8gY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICBjb25zdCBub2RlTWFwID0gc2VsZi5ub2RlTWFwO1xuICAgICAgICBjb25zdCBub2RlSWR4TWFwID0gc2VsZi5ub2RlSWR4TWFwO1xuICAgICAgICBjb25zdCBsaW5rRGlzdGFuY2UgPSBzZWxmLmxpbmtEaXN0YW5jZTtcbiAgICAgICAgY29uc3QgZWRnZVN0cmVuZ3RoID0gc2VsZi5lZGdlU3RyZW5ndGg7XG4gICAgICAgIGNvbnN0IGdldE1hc3MgPSBzZWxmLmdldE1hc3M7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlZGdlLCAnc291cmNlJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZWRnZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlTm9kZSA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSBub2RlTWFwW3RhcmdldF07XG4gICAgICAgICAgICBjb25zdCB2ZWNYID0gdGFyZ2V0Tm9kZS54IC0gc291cmNlTm9kZS54O1xuICAgICAgICAgICAgY29uc3QgdmVjWSA9IHRhcmdldE5vZGUueSAtIHNvdXJjZU5vZGUueTtcbiAgICAgICAgICAgIGNvbnN0IHZlY0xlbmd0aCA9IE1hdGguc3FydCh2ZWNYICogdmVjWCArIHZlY1kgKiB2ZWNZKSArIDAuMDE7XG4gICAgICAgICAgICBjb25zdCBkaXJlWCA9IHZlY1ggLyB2ZWNMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBkaXJlWSA9IHZlY1kgLyB2ZWNMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5rRGlzdGFuY2UoZWRnZSkgfHwgMTtcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBsZW5ndGggLSB2ZWNMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBwYXJhbSA9IGRpZmYgKiBlZGdlU3RyZW5ndGgoZWRnZSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VJZHggPSBub2RlSWR4TWFwW3NvdXJjZV07XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRJZHggPSBub2RlSWR4TWFwW3RhcmdldF07XG4gICAgICAgICAgICBjb25zdCBtYXNzU291cmNlID0gZ2V0TWFzcyA/IGdldE1hc3Moc291cmNlTm9kZSkgOiAxO1xuICAgICAgICAgICAgY29uc3QgbWFzc1RhcmdldCA9IGdldE1hc3MgPyBnZXRNYXNzKHRhcmdldE5vZGUpIDogMTtcbiAgICAgICAgICAgIGFjY0FycmF5WzIgKiBzb3VyY2VJZHhdIC09IChkaXJlWCAqIHBhcmFtKSAvIG1hc3NTb3VyY2U7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogc291cmNlSWR4ICsgMV0gLT0gKGRpcmVZICogcGFyYW0pIC8gbWFzc1NvdXJjZTtcbiAgICAgICAgICAgIGFjY0FycmF5WzIgKiB0YXJnZXRJZHhdICs9IChkaXJlWCAqIHBhcmFtKSAvIG1hc3NUYXJnZXQ7XG4gICAgICAgICAgICBhY2NBcnJheVsyICogdGFyZ2V0SWR4ICsgMV0gKz0gKGRpcmVZICogcGFyYW0pIC8gbWFzc1RhcmdldDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhbEdyYXZpdHkoYWNjQXJyYXksIG5vZGVzKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICAvLyBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBjb25zdCBkZWZhdWx0R3Jhdml0eSA9IHNlbGYuZ3Jhdml0eTtcbiAgICAgICAgY29uc3QgZGVncmVlcyA9IHNlbGYuZGVncmVlcztcbiAgICAgICAgY29uc3Qgbm9kZUxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICAgIGxldCB2ZWNYID0gbm9kZS54IC0gY2VudGVyWzBdO1xuICAgICAgICAgICAgbGV0IHZlY1kgPSBub2RlLnkgLSBjZW50ZXJbMV07XG4gICAgICAgICAgICBsZXQgZ3Jhdml0eSA9IGRlZmF1bHRHcmF2aXR5O1xuICAgICAgICAgICAgaWYgKHNlbGYuZ2V0Q2VudGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tQ2VudGVyT3B0ID0gc2VsZi5nZXRDZW50ZXIobm9kZSwgZGVncmVlc1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1c3RvbUNlbnRlck9wdCAmJlxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihjdXN0b21DZW50ZXJPcHRbMF0pICYmXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKGN1c3RvbUNlbnRlck9wdFsxXSkgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNOdW1iZXIoY3VzdG9tQ2VudGVyT3B0WzJdKSkge1xuICAgICAgICAgICAgICAgICAgICB2ZWNYID0gbm9kZS54IC0gY3VzdG9tQ2VudGVyT3B0WzBdO1xuICAgICAgICAgICAgICAgICAgICB2ZWNZID0gbm9kZS55IC0gY3VzdG9tQ2VudGVyT3B0WzFdO1xuICAgICAgICAgICAgICAgICAgICBncmF2aXR5ID0gY3VzdG9tQ2VudGVyT3B0WzJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZ3Jhdml0eSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGFjY0FycmF5WzIgKiBpXSAtPSBncmF2aXR5ICogdmVjWDtcbiAgICAgICAgICAgIGFjY0FycmF5WzIgKiBpICsgMV0gLT0gZ3Jhdml0eSAqIHZlY1k7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXBkYXRlVmVsb2NpdHkoYWNjQXJyYXksIHZlbEFycmF5LCBzdGVwSW50ZXJ2YWwsIG5vZGVzKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBwYXJhbSA9IHN0ZXBJbnRlcnZhbCAqIHNlbGYuZGFtcGluZztcbiAgICAgICAgLy8gY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICBsZXQgdnggPSBhY2NBcnJheVsyICogaV0gKiBwYXJhbSB8fCAwLjAxO1xuICAgICAgICAgICAgbGV0IHZ5ID0gYWNjQXJyYXlbMiAqIGkgKyAxXSAqIHBhcmFtIHx8IDAuMDE7XG4gICAgICAgICAgICBjb25zdCB2TGVuZ3RoID0gTWF0aC5zcXJ0KHZ4ICogdnggKyB2eSAqIHZ5KTtcbiAgICAgICAgICAgIGlmICh2TGVuZ3RoID4gc2VsZi5tYXhTcGVlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtMiA9IHNlbGYubWF4U3BlZWQgLyB2TGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZ4ID0gcGFyYW0yICogdng7XG4gICAgICAgICAgICAgICAgdnkgPSBwYXJhbTIgKiB2eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZlbEFycmF5WzIgKiBpXSA9IHZ4O1xuICAgICAgICAgICAgdmVsQXJyYXlbMiAqIGkgKyAxXSA9IHZ5O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdXBkYXRlUG9zaXRpb24odmVsQXJyYXksIHN0ZXBJbnRlcnZhbCwgbm9kZXMpIHtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGUuZngpICYmIGlzTnVtYmVyKG5vZGUuZnkpKSB7XG4gICAgICAgICAgICAgICAgbm9kZS54ID0gbm9kZS5meDtcbiAgICAgICAgICAgICAgICBub2RlLnkgPSBub2RlLmZ5O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRpc3RYID0gdmVsQXJyYXlbMiAqIGldICogc3RlcEludGVydmFsO1xuICAgICAgICAgICAgY29uc3QgZGlzdFkgPSB2ZWxBcnJheVsyICogaSArIDFdICogc3RlcEludGVydmFsO1xuICAgICAgICAgICAgbm9kZS54ICs9IGRpc3RYO1xuICAgICAgICAgICAgbm9kZS55ICs9IGRpc3RZO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZUludGVydmFsICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZUludGVydmFsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgc2VsZi5zdG9wKCk7XG4gICAgICAgIHNlbGYudGljayA9IG51bGw7XG4gICAgICAgIHNlbGYubm9kZXMgPSBudWxsO1xuICAgICAgICBzZWxmLmVkZ2VzID0gbnVsbDtcbiAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJnRm9yY2VcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nRm9yY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gForce.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchterman.js": /*!********************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchterman.js ***! \********************************************************************************************/ /*! exports provided: FruchtermanGPULayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanGPULayout\", function() { return FruchtermanGPULayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js\");\n/* harmony import */ var _util_gpu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/gpu */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/gpu.js\");\n/* harmony import */ var _fruchtermanShader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fruchtermanShader */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchtermanShader.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/constants.js\");\n// @ts-nocheck\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n// @ts-ignore\n\n// compile at runtime in dev mode\n\n// use compiled bundle in prod mode\n\n\n/**\n * fruchterman 布局\n */\nclass FruchtermanGPULayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 重力大小,影响图的紧凑程度 */\n this.gravity = 10;\n /** 速度 */\n this.speed = 1;\n /** 是否产生聚类力 */\n this.clustering = false;\n /** 根据哪个字段聚类 */\n this.clusterField = \"cluster\";\n /** 聚类力大小 */\n this.clusterGravity = 10;\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n this.workerEnabled = false;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 1000,\n gravity: 10,\n speed: 1,\n clustering: false,\n clusterGravity: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * this.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n yield self.run();\n });\n }\n executeWithWorker(canvas, ctx) {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * this.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * this.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n // layout\n yield self.run(canvas, ctx);\n });\n }\n run(canvas, ctx) {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const maxIteration = self.maxIteration;\n const center = self.center;\n const area = self.height * self.width;\n let maxDisplace = Math.sqrt(area) / 10;\n const k2 = area / (nodes.length + 1);\n const k = Math.sqrt(k2);\n const speed = self.speed;\n const clustering = self.clustering;\n const { array: attributeArray, count: clusterCount } = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"attributesToTextureData\"])([self.clusterField], nodes);\n // pushing the fx and fy\n nodes.forEach((node, i) => {\n let fx = 0;\n let fy = 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fy)) {\n fx = node.fx || 0.001;\n fy = node.fy || 0.001;\n }\n attributeArray[4 * i + 1] = fx;\n attributeArray[4 * i + 2] = fy;\n });\n const numParticles = nodes.length;\n const { maxEdgePerVetex, array: nodesEdgesArray } = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"buildTextureData\"])(nodes, edges);\n const workerEnabled = self.workerEnabled;\n let world;\n if (workerEnabled) {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n canvas,\n engineOptions: {\n supportCompute: true\n }\n });\n }\n else {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n engineOptions: {\n supportCompute: true\n }\n });\n }\n // compile at runtime in dev mode\n // const compiler = new Compiler()\n // const fruchtermanBundle = compiler.compileBundle(fruchtermanCode)\n // const clusterBundle = compiler.compileBundle(clusterCode)\n // use compiled bundle in prod mode\n // console.log(fruchtermanBundle.toString())\n // console.log(clusterBundle.toString())\n const onLayoutEnd = self.onLayoutEnd;\n const clusterCenters = [];\n for (let i = 0; i < clusterCount; i++) {\n clusterCenters.push(0, 0, 0, 0);\n }\n const kernelFruchterman = world\n .createKernel(_fruchtermanShader__WEBPACK_IMPORTED_MODULE_4__[\"fruchtermanBundle\"])\n .setDispatch([numParticles, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_K: k,\n u_K2: k2,\n u_Gravity: self.gravity,\n u_ClusterGravity: self.clusterGravity || self.gravity || 1,\n u_Speed: speed,\n u_MaxDisplace: maxDisplace,\n u_Clustering: clustering ? 1 : 0,\n u_Center: center,\n u_AttributeArray: attributeArray,\n u_ClusterCenters: clusterCenters,\n MAX_EDGE_PER_VERTEX: maxEdgePerVetex,\n VERTEX_COUNT: numParticles\n });\n let kernelCluster;\n if (clustering) {\n kernelCluster = world\n .createKernel(_fruchtermanShader__WEBPACK_IMPORTED_MODULE_4__[\"clusterBundle\"])\n .setDispatch([clusterCount, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_NodeAttributes: attributeArray,\n u_ClusterCenters: clusterCenters,\n VERTEX_COUNT: numParticles,\n CLUSTER_COUNT: clusterCount\n });\n }\n const execute = () => __awaiter(this, void 0, void 0, function* () {\n for (let i = 0; i < maxIteration; i++) {\n // eslint-disable-next-line no-await-in-loop\n yield kernelFruchterman.execute();\n if (clustering) {\n kernelCluster.setBinding({\n u_Data: kernelFruchterman\n });\n // eslint-disable-next-line no-await-in-loop\n yield kernelCluster.execute();\n kernelFruchterman.setBinding({\n u_ClusterCenters: kernelCluster\n });\n }\n kernelFruchterman.setBinding({\n u_MaxDisplace: maxDisplace *= 0.99\n });\n }\n const finalParticleData = yield kernelFruchterman.getOutput();\n if (canvas) {\n // 传递数据给主线程\n ctx.postMessage({\n type: _constants__WEBPACK_IMPORTED_MODULE_5__[\"LAYOUT_MESSAGE\"].GPUEND,\n vertexEdgeData: finalParticleData\n // edgeIndexBufferData,\n });\n }\n else {\n nodes.forEach((node, i) => {\n const x = finalParticleData[4 * i];\n const y = finalParticleData[4 * i + 1];\n node.x = x;\n node.y = y;\n });\n }\n if (onLayoutEnd)\n onLayoutEnd();\n });\n yield execute();\n });\n }\n getType() {\n return \"fruchterman-gpu\";\n }\n}\n//# sourceMappingURL=fruchterman.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ3B1L2ZydWNodGVybWFuLmpzPzljY2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBSSxJQUFJLFNBQUk7QUFDN0IsMkJBQTJCLCtEQUErRCxnQkFBZ0IsRUFBRSxFQUFFO0FBQzlHO0FBQ0EsbUNBQW1DLE1BQU0sNkJBQTZCLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDakcsa0NBQWtDLE1BQU0saUNBQWlDLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDcEcsK0JBQStCLHFGQUFxRjtBQUNwSDtBQUNBLEtBQUs7QUFDTDtBQUMrQjtBQUNPO0FBQ3RDO0FBQ3VDO0FBQ3ZDO0FBQzJFO0FBQzNFO0FBQ3VFO0FBQ3pCO0FBQzlDO0FBQ0E7QUFDQTtBQUNPLG1DQUFtQywwQ0FBSTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZDQUE2QyxHQUFHLHlFQUF1QjtBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzREFBUSxhQUFhLHNEQUFRO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxtQkFBbUIsMENBQTBDLEdBQUcsa0VBQWdCO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvREFBSztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0Esd0JBQXdCLG9EQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixrQkFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9FQUFpQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGdFQUFhO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSwrQkFBK0Isa0JBQWtCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIseURBQWM7QUFDNUM7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2dwdS9mcnVjaHRlcm1hbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1ub2NoZWNrXG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgZnJ1Y2h0ZXJtYW4gbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKi9cbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuLi9iYXNlXCI7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gXCIuLi8uLi91dGlsXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBXb3JsZCB9IGZyb20gXCJAYW50di9nLXdlYmdwdVwiO1xuLy8gY29tcGlsZSBhdCBydW50aW1lIGluIGRldiBtb2RlXG5pbXBvcnQgeyBidWlsZFRleHR1cmVEYXRhLCBhdHRyaWJ1dGVzVG9UZXh0dXJlRGF0YSB9IGZyb20gXCIuLi8uLi91dGlsL2dwdVwiO1xuLy8gdXNlIGNvbXBpbGVkIGJ1bmRsZSBpbiBwcm9kIG1vZGVcbmltcG9ydCB7IGZydWNodGVybWFuQnVuZGxlLCBjbHVzdGVyQnVuZGxlIH0gZnJvbSBcIi4vZnJ1Y2h0ZXJtYW5TaGFkZXJcIjtcbmltcG9ydCB7IExBWU9VVF9NRVNTQUdFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuLyoqXG4gKiBmcnVjaHRlcm1hbiDluIPlsYBcbiAqL1xuZXhwb3J0IGNsYXNzIEZydWNodGVybWFuR1BVTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5YGc5q2i6L+t5Luj55qE5pyA5aSn6L+t5Luj5pWwICovXG4gICAgICAgIHRoaXMubWF4SXRlcmF0aW9uID0gMTAwMDtcbiAgICAgICAgLyoqIOmHjeWKm+Wkp+Wwj++8jOW9seWTjeWbvueahOe0p+WHkeeoi+W6piAqL1xuICAgICAgICB0aGlzLmdyYXZpdHkgPSAxMDtcbiAgICAgICAgLyoqIOmAn+W6piAqL1xuICAgICAgICB0aGlzLnNwZWVkID0gMTtcbiAgICAgICAgLyoqIOaYr+WQpuS6p+eUn+iBmuexu+WKmyAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgLyoqIOagueaNruWTquS4quWtl+auteiBmuexuyAqL1xuICAgICAgICB0aGlzLmNsdXN0ZXJGaWVsZCA9IFwiY2x1c3RlclwiO1xuICAgICAgICAvKiog6IGa57G75Yqb5aSn5bCPICovXG4gICAgICAgIHRoaXMuY2x1c3RlckdyYXZpdHkgPSAxMDtcbiAgICAgICAgLyoqIOaYr+WQpuWQr+eUqHdlYiB3b3JrZXLjgILliY3mj5DmmK/lnKh3ZWIgd29ya2Vy6YeM5omn6KGM5biD5bGA77yM5ZCm5YiZ5peg5pWIXHQqL1xuICAgICAgICB0aGlzLndvcmtlckVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gMzAwO1xuICAgICAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICAgICAgdGhpcy5ub2RlSWR4TWFwID0ge307XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF4SXRlcmF0aW9uOiAxMDAwLFxuICAgICAgICAgICAgZ3Jhdml0eTogMTAsXG4gICAgICAgICAgICBzcGVlZDogMSxcbiAgICAgICAgICAgIGNsdXN0ZXJpbmc6IGZhbHNlLFxuICAgICAgICAgICAgY2x1c3RlckdyYXZpdHk6IDEwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWxmLmNlbnRlcikge1xuICAgICAgICAgICAgICAgIHNlbGYuY2VudGVyID0gW3NlbGYud2lkdGggLyAyLCBzZWxmLmhlaWdodCAvIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkeE1hcCA9IHt9O1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZS54ID0gTWF0aC5yYW5kb20oKSAqIHRoaXMud2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLnkpKVxuICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgbm9kZUlkeE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYubm9kZU1hcCA9IG5vZGVNYXA7XG4gICAgICAgICAgICBzZWxmLm5vZGVJZHhNYXAgPSBub2RlSWR4TWFwO1xuICAgICAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgICAgICB5aWVsZCBzZWxmLnJ1bigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXhlY3V0ZVdpdGhXb3JrZXIoY2FudmFzLCBjdHgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBub2Rlc1swXS54ID0gY2VudGVyWzBdO1xuICAgICAgICAgICAgICAgIG5vZGVzWzBdLnkgPSBjZW50ZXJbMV07XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkeE1hcCA9IHt9O1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZS54ID0gTWF0aC5yYW5kb20oKSAqIHRoaXMud2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLnkpKVxuICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgbm9kZUlkeE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYubm9kZU1hcCA9IG5vZGVNYXA7XG4gICAgICAgICAgICBzZWxmLm5vZGVJZHhNYXAgPSBub2RlSWR4TWFwO1xuICAgICAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgICAgICB5aWVsZCBzZWxmLnJ1bihjYW52YXMsIGN0eCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBydW4oY2FudmFzLCBjdHgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICAgICAgY29uc3QgZWRnZXMgPSBzZWxmLmVkZ2VzO1xuICAgICAgICAgICAgY29uc3QgbWF4SXRlcmF0aW9uID0gc2VsZi5tYXhJdGVyYXRpb247XG4gICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgICAgIGNvbnN0IGFyZWEgPSBzZWxmLmhlaWdodCAqIHNlbGYud2lkdGg7XG4gICAgICAgICAgICBsZXQgbWF4RGlzcGxhY2UgPSBNYXRoLnNxcnQoYXJlYSkgLyAxMDtcbiAgICAgICAgICAgIGNvbnN0IGsyID0gYXJlYSAvIChub2Rlcy5sZW5ndGggKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBNYXRoLnNxcnQoazIpO1xuICAgICAgICAgICAgY29uc3Qgc3BlZWQgPSBzZWxmLnNwZWVkO1xuICAgICAgICAgICAgY29uc3QgY2x1c3RlcmluZyA9IHNlbGYuY2x1c3RlcmluZztcbiAgICAgICAgICAgIGNvbnN0IHsgYXJyYXk6IGF0dHJpYnV0ZUFycmF5LCBjb3VudDogY2x1c3RlckNvdW50IH0gPSBhdHRyaWJ1dGVzVG9UZXh0dXJlRGF0YShbc2VsZi5jbHVzdGVyRmllbGRdLCBub2Rlcyk7XG4gICAgICAgICAgICAvLyBwdXNoaW5nIHRoZSBmeCBhbmQgZnlcbiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZnggPSAwO1xuICAgICAgICAgICAgICAgIGxldCBmeSA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGUuZngpICYmIGlzTnVtYmVyKG5vZGUuZnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ4ID0gbm9kZS5meCB8fCAwLjAwMTtcbiAgICAgICAgICAgICAgICAgICAgZnkgPSBub2RlLmZ5IHx8IDAuMDAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVBcnJheVs0ICogaSArIDFdID0gZng7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlQXJyYXlbNCAqIGkgKyAyXSA9IGZ5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBudW1QYXJ0aWNsZXMgPSBub2Rlcy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCB7IG1heEVkZ2VQZXJWZXRleCwgYXJyYXk6IG5vZGVzRWRnZXNBcnJheSB9ID0gYnVpbGRUZXh0dXJlRGF0YShub2RlcywgZWRnZXMpO1xuICAgICAgICAgICAgY29uc3Qgd29ya2VyRW5hYmxlZCA9IHNlbGYud29ya2VyRW5hYmxlZDtcbiAgICAgICAgICAgIGxldCB3b3JsZDtcbiAgICAgICAgICAgIGlmICh3b3JrZXJFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgd29ybGQgPSBXb3JsZC5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICBjYW52YXMsXG4gICAgICAgICAgICAgICAgICAgIGVuZ2luZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRDb21wdXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHdvcmxkID0gV29ybGQuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydENvbXB1dGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29tcGlsZSBhdCBydW50aW1lIGluIGRldiBtb2RlXG4gICAgICAgICAgICAvLyBjb25zdCBjb21waWxlciA9IG5ldyBDb21waWxlcigpXG4gICAgICAgICAgICAvLyBjb25zdCBmcnVjaHRlcm1hbkJ1bmRsZSA9IGNvbXBpbGVyLmNvbXBpbGVCdW5kbGUoZnJ1Y2h0ZXJtYW5Db2RlKVxuICAgICAgICAgICAgLy8gY29uc3QgY2x1c3RlckJ1bmRsZSA9IGNvbXBpbGVyLmNvbXBpbGVCdW5kbGUoY2x1c3RlckNvZGUpXG4gICAgICAgICAgICAvLyB1c2UgY29tcGlsZWQgYnVuZGxlIGluIHByb2QgbW9kZVxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZnJ1Y2h0ZXJtYW5CdW5kbGUudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNsdXN0ZXJCdW5kbGUudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIGNvbnN0IG9uTGF5b3V0RW5kID0gc2VsZi5vbkxheW91dEVuZDtcbiAgICAgICAgICAgIGNvbnN0IGNsdXN0ZXJDZW50ZXJzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsdXN0ZXJDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY2x1c3RlckNlbnRlcnMucHVzaCgwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGtlcm5lbEZydWNodGVybWFuID0gd29ybGRcbiAgICAgICAgICAgICAgICAuY3JlYXRlS2VybmVsKGZydWNodGVybWFuQnVuZGxlKVxuICAgICAgICAgICAgICAgIC5zZXREaXNwYXRjaChbbnVtUGFydGljbGVzLCAxLCAxXSlcbiAgICAgICAgICAgICAgICAuc2V0QmluZGluZyh7XG4gICAgICAgICAgICAgICAgdV9EYXRhOiBub2Rlc0VkZ2VzQXJyYXksXG4gICAgICAgICAgICAgICAgdV9LOiBrLFxuICAgICAgICAgICAgICAgIHVfSzI6IGsyLFxuICAgICAgICAgICAgICAgIHVfR3Jhdml0eTogc2VsZi5ncmF2aXR5LFxuICAgICAgICAgICAgICAgIHVfQ2x1c3RlckdyYXZpdHk6IHNlbGYuY2x1c3RlckdyYXZpdHkgfHwgc2VsZi5ncmF2aXR5IHx8IDEsXG4gICAgICAgICAgICAgICAgdV9TcGVlZDogc3BlZWQsXG4gICAgICAgICAgICAgICAgdV9NYXhEaXNwbGFjZTogbWF4RGlzcGxhY2UsXG4gICAgICAgICAgICAgICAgdV9DbHVzdGVyaW5nOiBjbHVzdGVyaW5nID8gMSA6IDAsXG4gICAgICAgICAgICAgICAgdV9DZW50ZXI6IGNlbnRlcixcbiAgICAgICAgICAgICAgICB1X0F0dHJpYnV0ZUFycmF5OiBhdHRyaWJ1dGVBcnJheSxcbiAgICAgICAgICAgICAgICB1X0NsdXN0ZXJDZW50ZXJzOiBjbHVzdGVyQ2VudGVycyxcbiAgICAgICAgICAgICAgICBNQVhfRURHRV9QRVJfVkVSVEVYOiBtYXhFZGdlUGVyVmV0ZXgsXG4gICAgICAgICAgICAgICAgVkVSVEVYX0NPVU5UOiBudW1QYXJ0aWNsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IGtlcm5lbENsdXN0ZXI7XG4gICAgICAgICAgICBpZiAoY2x1c3RlcmluZykge1xuICAgICAgICAgICAgICAgIGtlcm5lbENsdXN0ZXIgPSB3b3JsZFxuICAgICAgICAgICAgICAgICAgICAuY3JlYXRlS2VybmVsKGNsdXN0ZXJCdW5kbGUpXG4gICAgICAgICAgICAgICAgICAgIC5zZXREaXNwYXRjaChbY2x1c3RlckNvdW50LCAxLCAxXSlcbiAgICAgICAgICAgICAgICAgICAgLnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgICAgICB1X0RhdGE6IG5vZGVzRWRnZXNBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgdV9Ob2RlQXR0cmlidXRlczogYXR0cmlidXRlQXJyYXksXG4gICAgICAgICAgICAgICAgICAgIHVfQ2x1c3RlckNlbnRlcnM6IGNsdXN0ZXJDZW50ZXJzLFxuICAgICAgICAgICAgICAgICAgICBWRVJURVhfQ09VTlQ6IG51bVBhcnRpY2xlcyxcbiAgICAgICAgICAgICAgICAgICAgQ0xVU1RFUl9DT1VOVDogY2x1c3RlckNvdW50XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleGVjdXRlID0gKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4SXRlcmF0aW9uOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICAgICAgICAgICAgeWllbGQga2VybmVsRnJ1Y2h0ZXJtYW4uZXhlY3V0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlcmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsQ2x1c3Rlci5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X0RhdGE6IGtlcm5lbEZydWNodGVybWFuXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBrZXJuZWxDbHVzdGVyLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbEZydWNodGVybWFuLnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfQ2x1c3RlckNlbnRlcnM6IGtlcm5lbENsdXN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGtlcm5lbEZydWNodGVybWFuLnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdV9NYXhEaXNwbGFjZTogbWF4RGlzcGxhY2UgKj0gMC45OVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmluYWxQYXJ0aWNsZURhdGEgPSB5aWVsZCBrZXJuZWxGcnVjaHRlcm1hbi5nZXRPdXRwdXQoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOS8oOmAkuaVsOaNrue7meS4u+e6v+eoi1xuICAgICAgICAgICAgICAgICAgICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogTEFZT1VUX01FU1NBR0UuR1BVRU5ELFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4RWRnZURhdGE6IGZpbmFsUGFydGljbGVEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlZGdlSW5kZXhCdWZmZXJEYXRhLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBmaW5hbFBhcnRpY2xlRGF0YVs0ICogaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZmluYWxQYXJ0aWNsZURhdGFbNCAqIGkgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUueCA9IHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSB5O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICBvbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB5aWVsZCBleGVjdXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJmcnVjaHRlcm1hbi1ncHVcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mcnVjaHRlcm1hbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchterman.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchtermanShader.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchtermanShader.js ***! \**************************************************************************************************/ /*! exports provided: fruchtermanCode, fruchtermanBundle, clusterCode, clusterBundle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fruchtermanCode\", function() { return fruchtermanCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fruchtermanBundle\", function() { return fruchtermanBundle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterCode\", function() { return clusterCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterBundle\", function() { return clusterBundle; });\nconst fruchtermanCode = `\nimport { globalInvocationID } from 'g-webgpu';\nconst MAX_EDGE_PER_VERTEX;\nconst VERTEX_COUNT;\n@numthreads(1, 1, 1)\nclass Fruchterman {\n @in @out\n u_Data: vec4[];\n @in\n u_K: float;\n @in\n u_K2: float;\n \n @in\n u_Center: vec2;\n @in\n u_Gravity: float;\n @in\n u_ClusterGravity: float;\n @in\n u_Speed: float;\n @in\n u_MaxDisplace: float;\n @in\n u_Clustering: float;\n @in\n u_AttributeArray: vec4[];\n @in\n u_ClusterCenters: vec4[];\n calcRepulsive(i: int, currentNode: vec4): vec2 {\n let dx = 0, dy = 0;\n for (let j = 0; j < VERTEX_COUNT; j++) {\n if (i != j) {\n const nextNode = this.u_Data[j];\n const xDist = currentNode[0] - nextNode[0];\n const yDist = currentNode[1] - nextNode[1];\n const dist = (xDist * xDist + yDist * yDist) + 0.01;\n let param = this.u_K2 / dist;\n \n if (dist > 0.0) {\n dx += param * xDist;\n dy += param * yDist;\n if (xDist == 0 && yDist == 0) {\n const sign = i < j ? 1 : -1;\n dx += param * sign;\n dy += param * sign;\n }\n }\n }\n }\n return [dx, dy];\n }\n calcGravity(currentNode: vec4, nodeAttributes: vec4): vec2 { // \n let dx = 0, dy = 0;\n const vx = currentNode[0] - this.u_Center[0];\n const vy = currentNode[1] - this.u_Center[1];\n const gf = 0.01 * this.u_K * this.u_Gravity;\n dx = gf * vx;\n dy = gf * vy;\n if (this.u_Clustering == 1) {\n const clusterIdx = int(nodeAttributes[0]);\n const center = this.u_ClusterCenters[clusterIdx];\n const cvx = currentNode[0] - center[0];\n const cvy = currentNode[1] - center[1];\n const dist = sqrt(cvx * cvx + cvy * cvy) + 0.01;\n const parma = this.u_K * this.u_ClusterGravity / dist;\n dx += parma * cvx;\n dy += parma * cvy;\n }\n return [dx, dy];\n }\n calcAttractive(i: int, currentNode: vec4): vec2 {\n let dx = 0, dy = 0;\n const arr_offset = int(floor(currentNode[2] + 0.5));\n const length = int(floor(currentNode[3] + 0.5));\n const node_buffer: vec4;\n for (let p = 0; p < MAX_EDGE_PER_VERTEX; p++) {\n if (p >= length) break;\n const arr_idx = arr_offset + p;\n // when arr_idx % 4 == 0 update currentNodedx_buffer\n const buf_offset = arr_idx - arr_idx / 4 * 4;\n if (p == 0 || buf_offset == 0) {\n node_buffer = this.u_Data[int(arr_idx / 4)];\n }\n const float_j = buf_offset == 0 ? node_buffer[0] :\n buf_offset == 1 ? node_buffer[1] :\n buf_offset == 2 ? node_buffer[2] :\n node_buffer[3];\n const nextNode = this.u_Data[int(float_j)];\n const xDist = currentNode[0] - nextNode[0];\n const yDist = currentNode[1] - nextNode[1];\n const dist = sqrt(xDist * xDist + yDist * yDist) + 0.01;\n let attractiveF = dist / this.u_K;\n \n if (dist > 0.0) {\n dx -= xDist * attractiveF;\n dy -= yDist * attractiveF;\n if (xDist == 0 && yDist == 0) {\n const sign = i < int(float_j) ? 1 : -1;\n dx -= sign * attractiveF;\n dy -= sign * attractiveF;\n }\n }\n }\n return [dx, dy];\n }\n @main\n compute() {\n const i = globalInvocationID.x;\n const currentNode = this.u_Data[i];\n let dx = 0, dy = 0;\n if (i >= VERTEX_COUNT) {\n this.u_Data[i] = currentNode;\n return;\n }\n\n // [gravity, fx, fy, 0]\n const nodeAttributes = this.u_AttributeArray[i];\n\n if (nodeAttributes[1] != 0 && nodeAttributes[2] != 0) {\n // the node is fixed\n this.u_Data[i] = [\n nodeAttributes[1],\n nodeAttributes[2],\n currentNode[2],\n currentNode[3]\n ];\n return;\n }\n\n // repulsive\n const repulsive = this.calcRepulsive(i, currentNode);\n dx += repulsive[0];\n dy += repulsive[1];\n // attractive\n const attractive = this.calcAttractive(i, currentNode);\n dx += attractive[0];\n dy += attractive[1];\n // gravity\n const gravity = this.calcGravity(currentNode, nodeAttributes);\n dx -= gravity[0];\n dy -= gravity[1];\n // speed\n dx *= this.u_Speed;\n dy *= this.u_Speed;\n\n // move\n const distLength = sqrt(dx * dx + dy * dy);\n if (distLength > 0.0) {\n const limitedDist = min(this.u_MaxDisplace * this.u_Speed, distLength);\n this.u_Data[i] = [\n currentNode[0] + dx / distLength * limitedDist,\n currentNode[1] + dy / distLength * limitedDist,\n currentNode[2],\n currentNode[3]\n ];\n }\n }\n}\n`;\nconst fruchtermanBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\ntype GWebGPUParams = [[block]] struct {\\\\n [[offset 0]] u_K : f32;\\\\n [[offset 4]] u_K2 : f32;\\\\n [[offset 8]] u_Center : vec2;\\\\n [[offset 16]] u_Gravity : f32;\\\\n [[offset 20]] u_ClusterGravity : f32;\\\\n [[offset 24]] u_Speed : f32;\\\\n [[offset 28]] u_MaxDisplace : f32;\\\\n [[offset 32]] u_Clustering : f32;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUUniformParams : GWebGPUParams;\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_AttributeArray : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\ntype GWebGPUBuffer2 = [[block]] struct {\\\\n [[offset 0]] u_ClusterCenters : [[stride 16]] array>;\\\\n};\\\\n[[binding 3, set 0]] var gWebGPUBuffer2 : GWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn calcRepulsive(i : i32, currentNode : vec4) -> vec2 {var dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {if (i != j) {var nextNode : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nvar xDist : f32 = currentNode.x - nextNode.x;\\\\nvar yDist : f32 = currentNode.y - nextNode.y;\\\\nvar dist : f32 = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nvar param : f32 = gWebGPUUniformParams.u_K2 / dist;\\\\nif (dist > 0.0) {dx = dx + param * xDist;\\\\ndy = dy + param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {var sign : f32 = select(1.0, -1.0, i < j);\\\\ndx = dx + param * std::sign;\\\\ndy = dy + param * std::sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nfn calcGravity(currentNode : vec4, nodeAttributes : vec4) -> vec2 {var dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nvar vx : f32 = currentNode.x - gWebGPUUniformParams.u_Center.x;\\\\nvar vy : f32 = currentNode.y - gWebGPUUniformParams.u_Center.y;\\\\nvar gf : f32 = (0.01 * gWebGPUUniformParams.u_K) * gWebGPUUniformParams.u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (gWebGPUUniformParams.u_Clustering == 1.0) {var clusterIdx : i32 = i32(nodeAttributes.x);\\\\nvar center : vec4 = gWebGPUBuffer2.u_ClusterCenters[clusterIdx];\\\\nvar cvx : f32 = currentNode.x - center.x;\\\\nvar cvy : f32 = currentNode.y - center.y;\\\\nvar dist : f32 = std::sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nvar parma : f32 = (gWebGPUUniformParams.u_K * gWebGPUUniformParams.u_ClusterGravity) / dist;\\\\ndx = dx + parma * cvx;\\\\ndy = dy + parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nfn calcAttractive(i : i32, currentNode : vec4) -> vec2 {var dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nvar arr_offset : i32 = i32(std::floor(currentNode.z + 0.5));\\\\nvar length : i32 = i32(std::floor(currentNode.w + 0.5));\\\\nvar node_buffer : vec4;\\\\nfor (var p : i32 = 0; p < __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX; p = p + 1) {if (p >= length) {break;}\\\\nvar arr_idx : i32 = arr_offset + i32(p);\\\\nvar buf_offset : i32 = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[i32(arr_idx / 4)];}\\\\nvar float_j : f32 = select(node_buffer.x, select(node_buffer.y, select(node_buffer.z, node_buffer.w, buf_offset == 2), buf_offset == 1), buf_offset == 0);\\\\nvar nextNode : vec4 = gWebGPUBuffer0.u_Data[i32(float_j)];\\\\nvar xDist : f32 = currentNode.x - nextNode.x;\\\\nvar yDist : f32 = currentNode.y - nextNode.y;\\\\nvar dist : f32 = std::sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nvar attractiveF : f32 = dist / gWebGPUUniformParams.u_K;\\\\nif (dist > 0.0) {dx = dx - xDist * attractiveF;\\\\ndy = dy - yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {var sign : f32 = select(1.0, -1.0, i < i32(float_j));\\\\ndx = dx - std::sign * attractiveF;\\\\ndy = dy - std::sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nfn main() -> void {var i : i32 = globalInvocationID.x;\\\\nvar currentNode : vec4 = gWebGPUBuffer0.u_Data[i];\\\\nvar dx : f32 = 0.0;\\\\nvar dy : f32 = 0.0;\\\\nif (i >= __DefineValuePlaceholder__VERTEX_COUNT) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvar nodeAttributes : vec4 = gWebGPUBuffer1.u_AttributeArray[i];\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w);\\\\nreturn ;}\\\\nvar repulsive : vec2 = calcRepulsive(i, currentNode);\\\\ndx = dx + repulsive.x;\\\\ndy = dy + repulsive.y;\\\\nvar attractive : vec2 = calcAttractive(i, currentNode);\\\\ndx = dx + attractive.x;\\\\ndy = dy + attractive.y;\\\\nvar gravity : vec2 = calcGravity(currentNode, nodeAttributes);\\\\ndx = dx - gravity.x;\\\\ndy = dy - gravity.y;\\\\ndx = dx * gWebGPUUniformParams.u_Speed;\\\\ndy = dy * gWebGPUUniformParams.u_Speed;\\\\nvar distLength : f32 = std::sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {var limitedDist : f32 = std::min(gWebGPUUniformParams.u_MaxDisplace * gWebGPUUniformParams.u_Speed, distLength);\\\\ngWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w);}\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\nlayout(std140, set = 0, binding = 0) uniform GWebGPUParams {\\\\n float u_K;\\\\n float u_K2;\\\\n vec2 u_Center;\\\\n float u_Gravity;\\\\n float u_ClusterGravity;\\\\n float u_Speed;\\\\n float u_MaxDisplace;\\\\n float u_Clustering;\\\\n} gWebGPUUniformParams;\\\\nlayout(std430, set = 0, binding = 1) buffer GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer readonly GWebGPUBuffer1 {\\\\n vec4 u_AttributeArray[];\\\\n} gWebGPUBuffer1;\\\\n\\\\nlayout(std430, set = 0, binding = 3) buffer readonly GWebGPUBuffer2 {\\\\n vec4 u_ClusterCenters[];\\\\n} gWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {float dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = gWebGPUBuffer0.u_Data[j];\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat param = gWebGPUUniformParams.u_K2 / dist;\\\\nif (dist > 0.0) {dx += param * xDist;\\\\ndy += param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < j) ? (1.0) : (-1.0);\\\\ndx += param * sign;\\\\ndy += param * sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcGravity(vec4 currentNode, vec4 nodeAttributes) {float dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfloat vx = currentNode.x - gWebGPUUniformParams.u_Center.x;\\\\nfloat vy = currentNode.y - gWebGPUUniformParams.u_Center.y;\\\\nfloat gf = (0.01 * gWebGPUUniformParams.u_K) * gWebGPUUniformParams.u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (gWebGPUUniformParams.u_Clustering == 1.0) {int clusterIdx = int(nodeAttributes.x);\\\\nvec4 center = gWebGPUBuffer2.u_ClusterCenters[clusterIdx];\\\\nfloat cvx = currentNode.x - center.x;\\\\nfloat cvy = currentNode.y - center.y;\\\\nfloat dist = sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nfloat parma = (gWebGPUUniformParams.u_K * gWebGPUUniformParams.u_ClusterGravity) / dist;\\\\ndx += parma * cvx;\\\\ndy += parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcAttractive(int i, vec4 currentNode) {float dx = 0.0;\\\\nfloat dy = 0.0;\\\\nint arr_offset = int(floor(currentNode.z + 0.5));\\\\nint length = int(floor(currentNode.w + 0.5));\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + int(p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[int(arr_idx / 4)];}\\\\nfloat float_j = (buf_offset == 0) ? (node_buffer.x) : ((buf_offset == 1) ? (node_buffer.y) : ((buf_offset == 2) ? (node_buffer.z) : (node_buffer.w)));\\\\nvec4 nextNode = gWebGPUBuffer0.u_Data[int(float_j)];\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat attractiveF = dist / gWebGPUUniformParams.u_K;\\\\nif (dist > 0.0) {dx -= xDist * attractiveF;\\\\ndy -= yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < int(float_j)) ? (1.0) : (-1.0);\\\\ndx -= sign * attractiveF;\\\\ndy -= sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nvoid main() {int i = globalInvocationID.x;\\\\nvec4 currentNode = gWebGPUBuffer0.u_Data[i];\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nif (i >= VERTEX_COUNT) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvec4 nodeAttributes = gWebGPUBuffer1.u_AttributeArray[i];\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w);\\\\nreturn ;}\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\ndx += repulsive.x;\\\\ndy += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode);\\\\ndx += attractive.x;\\\\ndy += attractive.y;\\\\nvec2 gravity = calcGravity(currentNode, nodeAttributes);\\\\ndx -= gravity.x;\\\\ndy -= gravity.y;\\\\ndx *= gWebGPUUniformParams.u_Speed;\\\\ndy *= gWebGPUUniformParams.u_Speed;\\\\nfloat distLength = sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {float limitedDist = min(gWebGPUUniformParams.u_MaxDisplace * gWebGPUUniformParams.u_Speed, distLength);\\\\ngWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w);}}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_K;\\\\nuniform float u_K2;\\\\nuniform vec2 u_Center;\\\\nuniform float u_Gravity;\\\\nuniform float u_ClusterGravity;\\\\nuniform float u_Speed;\\\\nuniform float u_MaxDisplace;\\\\nuniform float u_Clustering;\\\\nuniform sampler2D u_AttributeArray;\\\\nuniform vec2 u_AttributeArraySize;\\\\nvec4 getDatau_AttributeArray(vec2 address2D) {\\\\n return vec4(texture2D(u_AttributeArray, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AttributeArray(float address1D) {\\\\n return getDatau_AttributeArray(addrTranslation_1Dto2D(address1D, u_AttributeArraySize));\\\\n}\\\\nvec4 getDatau_AttributeArray(int address1D) {\\\\n return getDatau_AttributeArray(float(address1D));\\\\n}\\\\nuniform sampler2D u_ClusterCenters;\\\\nuniform vec2 u_ClusterCentersSize;\\\\nvec4 getDatau_ClusterCenters(vec2 address2D) {\\\\n return vec4(texture2D(u_ClusterCenters, address2D).rgba);\\\\n}\\\\nvec4 getDatau_ClusterCenters(float address1D) {\\\\n return getDatau_ClusterCenters(addrTranslation_1Dto2D(address1D, u_ClusterCentersSize));\\\\n}\\\\nvec4 getDatau_ClusterCenters(int address1D) {\\\\n return getDatau_ClusterCenters(float(address1D));\\\\n}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = getDatau_Data(j);\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = ((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat param = u_K2 / dist;\\\\nif (dist > 0.0) {dx += param * xDist;\\\\ndy += param * yDist;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < j) ? (1.0) : (-1.0);\\\\ndx += param * sign;\\\\ndy += param * sign;}}}}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcGravity(vec4 currentNode, vec4 nodeAttributes) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nfloat vx = currentNode.x - u_Center.x;\\\\nfloat vy = currentNode.y - u_Center.y;\\\\nfloat gf = (0.01 * u_K) * u_Gravity;\\\\ndx = gf * vx;\\\\ndy = gf * vy;\\\\nif (u_Clustering == 1.0) {int clusterIdx = int(nodeAttributes.x);\\\\nvec4 center = getDatau_ClusterCenters(clusterIdx);\\\\nfloat cvx = currentNode.x - center.x;\\\\nfloat cvy = currentNode.y - center.y;\\\\nfloat dist = sqrt((cvx * cvx) + (cvy * cvy)) + 0.01;\\\\nfloat parma = (u_K * u_ClusterGravity) / dist;\\\\ndx += parma * cvx;\\\\ndy += parma * cvy;}\\\\nreturn vec2(dx, dy);}\\\\nvec2 calcAttractive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nint arr_offset = int(floor(currentNode.z + 0.5));\\\\nint length = int(floor(currentNode.w + 0.5));\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + int(p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = getDatau_Data(int(arr_idx / 4));}\\\\nfloat float_j = (buf_offset == 0) ? (node_buffer.x) : ((buf_offset == 1) ? (node_buffer.y) : ((buf_offset == 2) ? (node_buffer.z) : (node_buffer.w)));\\\\nvec4 nextNode = getDatau_Data(int(float_j));\\\\nfloat xDist = currentNode.x - nextNode.x;\\\\nfloat yDist = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((xDist * xDist) + (yDist * yDist)) + 0.01;\\\\nfloat attractiveF = dist / u_K;\\\\nif (dist > 0.0) {dx -= xDist * attractiveF;\\\\ndy -= yDist * attractiveF;\\\\nif ((xDist == 0.0) && (yDist == 0.0)) {float sign = (i < int(float_j)) ? (1.0) : (-1.0);\\\\ndx -= sign * attractiveF;\\\\ndy -= sign * attractiveF;}}}\\\\nreturn vec2(dx, dy);}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 currentNode = getDatau_Data(i);\\\\nfloat dx = 0.0;\\\\nfloat dy = 0.0;\\\\nif (i >= VERTEX_COUNT) {gl_FragColor = vec4(currentNode);\\\\nreturn ;}\\\\nvec4 nodeAttributes = getDatau_AttributeArray(i);\\\\nif ((nodeAttributes.y != 0.0) && (nodeAttributes.z != 0.0)) {gl_FragColor = vec4(vec4(nodeAttributes.y, nodeAttributes.z, currentNode.z, currentNode.w));\\\\nreturn ;}\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\ndx += repulsive.x;\\\\ndy += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode);\\\\ndx += attractive.x;\\\\ndy += attractive.y;\\\\nvec2 gravity = calcGravity(currentNode, nodeAttributes);\\\\ndx -= gravity.x;\\\\ndy -= gravity.y;\\\\ndx *= u_Speed;\\\\ndy *= u_Speed;\\\\nfloat distLength = sqrt((dx * dx) + (dy * dy));\\\\nif (distLength > 0.0) {float limitedDist = min(u_MaxDisplace * u_Speed, distLength);\\\\ngl_FragColor = vec4(vec4(currentNode.x + ((dx / distLength) * limitedDist), currentNode.y + ((dy / distLength) * limitedDist), currentNode.z, currentNode.w));}if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"MAX_EDGE_PER_VERTEX\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_K\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_K2\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Center\",\"type\":\"vec2\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Gravity\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterGravity\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Speed\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_MaxDisplace\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_Clustering\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AttributeArray\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterCenters\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_Data\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\nconst clusterCode = `\nimport { globalInvocationID } from 'g-webgpu';\nconst VERTEX_COUNT;\nconst CLUSTER_COUNT;\n@numthreads(1, 1, 1)\nclass CalcCenter {\n @in\n u_Data: vec4[];\n @in\n u_NodeAttributes: vec4[]; // [[clusterIdx, 0, 0, 0], ...]\n @in @out\n u_ClusterCenters: vec4[]; // [[cx, cy, nodeCount, clusterIdx], ...]\n @main\n compute() {\n const i = globalInvocationID.x;\n const center = this.u_ClusterCenters[i];\n let sumx = 0;\n let sumy = 0;\n let count = 0;\n for (let j = 0; j < VERTEX_COUNT; j++) {\n const attributes = this.u_NodeAttributes[j];\n const clusterIdx = int(attributes[0]);\n const vertex = this.u_Data[j];\n if (clusterIdx == i) {\n sumx += vertex.x;\n sumy += vertex.y;\n count += 1;\n }\n }\n this.u_ClusterCenters[i] = [\n sumx / count,\n sumy / count,\n count,\n i\n ];\n }\n}\n`;\nconst clusterBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\n\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_NodeAttributes : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\ntype GWebGPUBuffer2 = [[block]] struct {\\\\n [[offset 0]] u_ClusterCenters : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer2 : GWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn main() -> void {var i : i32 = globalInvocationID.x;\\\\nvar center : vec4 = gWebGPUBuffer2.u_ClusterCenters[i];\\\\nvar sumx : f32 = 0.0;\\\\nvar sumy : f32 = 0.0;\\\\nvar count : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {var attributes : vec4 = gWebGPUBuffer1.u_NodeAttributes[j];\\\\nvar clusterIdx : i32 = i32(attributes.x);\\\\nvar vertex : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nif (clusterIdx == i) {sumx = sumx + vertex.x;\\\\nsumy = sumy + vertex.y;\\\\ncount = count + 1.0;}}\\\\ngWebGPUBuffer2.u_ClusterCenters[i] = vec4(sumx / count, sumy / count, count, i);\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\n\\\\nlayout(std430, set = 0, binding = 0) buffer readonly GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 1) buffer readonly GWebGPUBuffer1 {\\\\n vec4 u_NodeAttributes[];\\\\n} gWebGPUBuffer1;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer GWebGPUBuffer2 {\\\\n vec4 u_ClusterCenters[];\\\\n} gWebGPUBuffer2;\\\\n\\\\n\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define CLUSTER_COUNT __DefineValuePlaceholder__CLUSTER_COUNT\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\nvoid main() {int i = globalInvocationID.x;\\\\nvec4 center = gWebGPUBuffer2.u_ClusterCenters[i];\\\\nfloat sumx = 0.0;\\\\nfloat sumy = 0.0;\\\\nfloat count = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 attributes = gWebGPUBuffer1.u_NodeAttributes[j];\\\\nint clusterIdx = int(attributes.x);\\\\nvec4 vertex = gWebGPUBuffer0.u_Data[j];\\\\nif (clusterIdx == i) {sumx += vertex.x;\\\\nsumy += vertex.y;\\\\ncount += 1.0;}}\\\\ngWebGPUBuffer2.u_ClusterCenters[i] = vec4(sumx / count, sumy / count, count, i);}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define CLUSTER_COUNT __DefineValuePlaceholder__CLUSTER_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform sampler2D u_NodeAttributes;\\\\nuniform vec2 u_NodeAttributesSize;\\\\nvec4 getDatau_NodeAttributes(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributes, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributes(float address1D) {\\\\n return getDatau_NodeAttributes(addrTranslation_1Dto2D(address1D, u_NodeAttributesSize));\\\\n}\\\\nvec4 getDatau_NodeAttributes(int address1D) {\\\\n return getDatau_NodeAttributes(float(address1D));\\\\n}\\\\nuniform sampler2D u_ClusterCenters;\\\\nuniform vec2 u_ClusterCentersSize;\\\\nvec4 getDatau_ClusterCenters(vec2 address2D) {\\\\n return vec4(texture2D(u_ClusterCenters, address2D).rgba);\\\\n}\\\\nvec4 getDatau_ClusterCenters(float address1D) {\\\\n return getDatau_ClusterCenters(addrTranslation_1Dto2D(address1D, u_ClusterCentersSize));\\\\n}\\\\nvec4 getDatau_ClusterCenters(int address1D) {\\\\n return getDatau_ClusterCenters(float(address1D));\\\\n}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 center = getDatau_ClusterCenters(i);\\\\nfloat sumx = 0.0;\\\\nfloat sumy = 0.0;\\\\nfloat count = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 attributes = getDatau_NodeAttributes(j);\\\\nint clusterIdx = int(attributes.x);\\\\nvec4 vertex = getDatau_Data(j);\\\\nif (clusterIdx == i) {sumx += vertex.x;\\\\nsumy += vertex.y;\\\\ncount += 1.0;}}\\\\ngl_FragColor = vec4(vec4(sumx / count, sumy / count, count, i));if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"CLUSTER_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributes\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_ClusterCenters\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_ClusterCenters\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n//# sourceMappingURL=fruchtermanShader.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ3B1L2ZydWNodGVybWFuU2hhZGVyLmpzPzI3YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1AsUUFBUSxxQkFBcUI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5QkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyw0QkFBNEIsV0FBVyx5Q0FBeUMsMkNBQTJDLHlEQUF5RCw4RUFBOEUsbUVBQW1FLCtEQUErRCx5RUFBeUUsbUVBQW1FLHVFQUF1RSw2Q0FBNkMsNEJBQTRCLDZCQUE2Qix1Q0FBdUMsbUNBQW1DLDBDQUEwQyxpQ0FBaUMsdUNBQXVDLHNDQUFzQyxLQUFLLDBFQUEwRSwyQ0FBMkMsMERBQTBELEtBQUssNEVBQTRFLDJDQUEyQyxvRUFBb0UsS0FBSyw0RUFBNEUsMkNBQTJDLG9FQUFvRSxLQUFLLDRFQUE0RSx1SEFBdUgsbUJBQW1CLHNCQUFzQix3QkFBd0IsNENBQTRDLGFBQWEsYUFBYSxvREFBb0QsZ0RBQWdELGdEQUFnRCwrREFBK0Qsc0RBQXNELG9CQUFvQix3QkFBd0IsMkJBQTJCLDBDQUEwQywwQ0FBMEMsK0JBQStCLG1DQUFtQyw2QkFBNkIscUZBQXFGLG1CQUFtQixzQkFBc0Isa0VBQWtFLGtFQUFrRSxxRkFBcUYsZ0JBQWdCLGdCQUFnQixrREFBa0QsNkNBQTZDLHdFQUF3RSw0Q0FBNEMsNENBQTRDLGdFQUFnRSwrRkFBK0YseUJBQXlCLDBCQUEwQiw2QkFBNkIscUVBQXFFLG1CQUFtQixzQkFBc0IsK0RBQStELDJEQUEyRCwrQkFBK0Isd0JBQXdCLG1EQUFtRCxhQUFhLGtCQUFrQixPQUFPLDJDQUEyQyx3REFBd0QsdUNBQXVDLHVEQUF1RCw2SkFBNkosa0VBQWtFLGdEQUFnRCxnREFBZ0Qsd0VBQXdFLDJEQUEyRCxvQkFBb0IsOEJBQThCLGlDQUFpQywwQ0FBMEMscURBQXFELHFDQUFxQyx3Q0FBd0MsNkJBQTZCLHNCQUFzQixtQ0FBbUMsMERBQTBELHNCQUFzQixzQkFBc0IscURBQXFELHVDQUF1QyxZQUFZLHVFQUF1RSxnRUFBZ0UsdUdBQXVHLFlBQVksNkRBQTZELHlCQUF5Qix5QkFBeUIsK0RBQStELDBCQUEwQiwwQkFBMEIsc0VBQXNFLHVCQUF1Qix1QkFBdUIsMENBQTBDLDBDQUEwQywyREFBMkQsMEJBQTBCLGdIQUFnSCw2S0FBNkssV0FBVywrQ0FBK0MsbURBQW1ELHVDQUF1Qyw4REFBOEQsc0NBQXNDLDZDQUE2Qyx5REFBeUQsaURBQWlELDJEQUEyRCxrRUFBa0UsZUFBZSxnQkFBZ0IsbUJBQW1CLHFCQUFxQiw0QkFBNEIsbUJBQW1CLHlCQUF5Qix3QkFBd0IsSUFBSSxzQkFBc0IsaUVBQWlFLG1CQUFtQixJQUFJLGdCQUFnQiw0RUFBNEUsNkJBQTZCLElBQUksZ0JBQWdCLDRFQUE0RSw2QkFBNkIsSUFBSSxnQkFBZ0IsdU9BQXVPLGlGQUFpRixlQUFlLGtCQUFrQixrQkFBa0Isa0JBQWtCLE9BQU8sYUFBYSx5Q0FBeUMsNENBQTRDLDRDQUE0QywyREFBMkQsa0RBQWtELG9CQUFvQixvQkFBb0IsdUJBQXVCLDBDQUEwQyxzQ0FBc0Msc0JBQXNCLDBCQUEwQix3QkFBd0IsNERBQTRELGVBQWUsa0JBQWtCLDhEQUE4RCw4REFBOEQsaUZBQWlGLGdCQUFnQixnQkFBZ0Isa0RBQWtELHVDQUF1Qyw2REFBNkQsd0NBQXdDLHdDQUF3Qyx1REFBdUQsMkZBQTJGLHFCQUFxQixzQkFBc0Isd0JBQXdCLGlEQUFpRCxlQUFlLGtCQUFrQixvREFBb0QsZ0RBQWdELG9CQUFvQixrQkFBa0IseUJBQXlCLE9BQU8sa0JBQWtCLE9BQU8scUNBQXFDLGtEQUFrRCx1Q0FBdUMsdURBQXVELHlKQUF5Six1REFBdUQsNENBQTRDLDRDQUE0QywrREFBK0QsdURBQXVELG9CQUFvQiwwQkFBMEIsNkJBQTZCLDBDQUEwQyxpREFBaUQsNEJBQTRCLCtCQUErQix3QkFBd0IsZ0JBQWdCLDZCQUE2QiwrQ0FBK0Msa0JBQWtCLGtCQUFrQiwyQkFBMkIsdUNBQXVDLFlBQVksNERBQTRELGdFQUFnRSxrR0FBa0csWUFBWSxrREFBa0QscUJBQXFCLHFCQUFxQixvREFBb0Qsc0JBQXNCLHNCQUFzQiwyREFBMkQsbUJBQW1CLG1CQUFtQixzQ0FBc0Msc0NBQXNDLGtEQUFrRCwwQkFBMEIsdUdBQXVHLHlLQUF5Syw4Q0FBOEMsK0RBQStELDRFQUE0RSxxREFBcUQsOERBQThELElBQUksdUJBQXVCLDRDQUE0QyxrQ0FBa0MsMkJBQTJCLGdDQUFnQyx1Q0FBdUMsNEtBQTRLLDJCQUEyQix1Q0FBdUMsb0RBQW9ELElBQUksd0NBQXdDLHlFQUF5RSxJQUFJLHNDQUFzQyw0Q0FBNEMsSUFBSSxxQkFBcUIsc0JBQXNCLHlCQUF5QiwyQkFBMkIsa0NBQWtDLHlCQUF5QiwrQkFBK0IsOEJBQThCLHNDQUFzQyxxQ0FBcUMsaURBQWlELDhEQUE4RCxJQUFJLGtEQUFrRCw2RkFBNkYsSUFBSSxnREFBZ0Qsc0RBQXNELElBQUksc0NBQXNDLHFDQUFxQyxpREFBaUQsOERBQThELElBQUksa0RBQWtELDZGQUE2RixJQUFJLGdEQUFnRCxzREFBc0QsSUFBSSxnREFBZ0Qsd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyxrQkFBa0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLGlDQUFpQyw0Q0FBNEMsNENBQTRDLDJEQUEyRCw2QkFBNkIsb0JBQW9CLG9CQUFvQix1QkFBdUIsMENBQTBDLHNDQUFzQyxzQkFBc0IsMEJBQTBCLHdCQUF3Qiw0REFBNEQsd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyxrQkFBa0Isa0JBQWtCLHlDQUF5Qyx5Q0FBeUMsdUNBQXVDLGdCQUFnQixnQkFBZ0IsNkJBQTZCLHVDQUF1QyxxREFBcUQsd0NBQXdDLHdDQUF3Qyx1REFBdUQsaURBQWlELHFCQUFxQixzQkFBc0Isd0JBQXdCLGlEQUFpRCx3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLGtCQUFrQixrQkFBa0Isb0RBQW9ELGdEQUFnRCxvQkFBb0Isa0JBQWtCLHlCQUF5QixPQUFPLGtCQUFrQixPQUFPLHFDQUFxQyxrREFBa0QsdUNBQXVDLCtDQUErQyx5SkFBeUosK0NBQStDLDRDQUE0Qyw0Q0FBNEMsK0RBQStELGtDQUFrQyxvQkFBb0IsMEJBQTBCLDZCQUE2QiwwQ0FBMEMsaURBQWlELDRCQUE0QiwrQkFBK0Isd0JBQXdCLGdCQUFnQix3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLGdDQUFnQyx1Q0FBdUMsa0JBQWtCLGtCQUFrQiwyQkFBMkIsaUNBQWlDLFlBQVksb0RBQW9ELGdFQUFnRSw0RkFBNEYsWUFBWSxrREFBa0QscUJBQXFCLHFCQUFxQixvREFBb0Qsc0JBQXNCLHNCQUFzQiwyREFBMkQsbUJBQW1CLG1CQUFtQixpQkFBaUIsaUJBQWlCLGtEQUFrRCwwQkFBMEIsNkRBQTZELGtLQUFrSyxtQkFBbUIsdUNBQXVDLEtBQUssS0FBSyxZQUFZLG9GQUFvRiwyREFBMkQsRUFBRSxvREFBb0QsZUFBZSxvSEFBb0gsRUFBRSxvR0FBb0csRUFBRSxxR0FBcUcsRUFBRSw2R0FBNkcsRUFBRSwwR0FBMEcsRUFBRSxpSEFBaUgsRUFBRSx3R0FBd0csRUFBRSw4R0FBOEcsRUFBRSw2R0FBNkcsRUFBRSw2SEFBNkgsRUFBRSw2SEFBNkgsb0NBQW9DLHdDQUF3QyxzQkFBc0I7QUFDaHlzQjtBQUNQLFFBQVEscUJBQXFCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyx3QkFBd0IsV0FBVyx5Q0FBeUMsMkNBQTJDLHlEQUF5RCw4RUFBOEUsbUVBQW1FLCtEQUErRCx5RUFBeUUsbUVBQW1FLHVFQUF1RSxpREFBaUQsMERBQTBELEtBQUssNEVBQTRFLDJDQUEyQyxvRUFBb0UsS0FBSyw0RUFBNEUsMkNBQTJDLG9FQUFvRSxLQUFLLDRFQUE0RSxpREFBaUQsbUNBQW1DLCtEQUErRCx3QkFBd0Isd0JBQXdCLHlCQUF5Qix3QkFBd0IsNENBQTRDLGFBQWEsZ0VBQWdFLDRDQUE0QyxxREFBcUQseUJBQXlCLHVCQUF1QiwwQkFBMEIseUJBQXlCLHdGQUF3RixXQUFXLCtDQUErQyxtREFBbUQsdUNBQXVDLDhEQUE4RCxzQ0FBc0MsNkNBQTZDLHlEQUF5RCxpREFBaUQsMkRBQTJELCtFQUErRSxtQkFBbUIsSUFBSSxnQkFBZ0IsNEVBQTRFLDZCQUE2QixJQUFJLGdCQUFnQixvRUFBb0UsNkJBQTZCLElBQUksZ0JBQWdCLDJOQUEyTix5QkFBeUIsNkJBQTZCLG9EQUFvRCxvQkFBb0Isb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLE9BQU8scURBQXFELHNDQUFzQywwQ0FBMEMseUJBQXlCLGlCQUFpQixvQkFBb0Isa0JBQWtCLG9GQUFvRiw4Q0FBOEMsK0RBQStELDRFQUE0RSxxREFBcUQsOERBQThELElBQUksdUJBQXVCLDRDQUE0QyxrQ0FBa0MsMkJBQTJCLGdDQUFnQyx1Q0FBdUMsZ0tBQWdLLDJCQUEyQix1Q0FBdUMsb0RBQW9ELElBQUksd0NBQXdDLHlFQUF5RSxJQUFJLHNDQUFzQyw0Q0FBNEMsSUFBSSxzQ0FBc0MscUNBQXFDLGlEQUFpRCw4REFBOEQsSUFBSSxrREFBa0QsNkZBQTZGLElBQUksZ0RBQWdELHNEQUFzRCxJQUFJLHNDQUFzQyxxQ0FBcUMsaURBQWlELDhEQUE4RCxJQUFJLGtEQUFrRCw2RkFBNkYsSUFBSSxnREFBZ0Qsc0RBQXNELElBQUksZ0JBQWdCLHdDQUF3Qyx3Q0FBd0MseUtBQXlLLHlHQUF5RyxrTUFBa00sd0ZBQXdGLCtIQUErSCxrSkFBa0osK0ZBQStGLDhFQUE4RSxzS0FBc0ssZ0NBQWdDLDRDQUE0QyxvQkFBb0Isb0JBQW9CLHFCQUFxQixrQkFBa0Isa0JBQWtCLE9BQU8sNkNBQTZDLHNDQUFzQyxrQ0FBa0MseUJBQXlCLGlCQUFpQixvQkFBb0Isa0JBQWtCLG1FQUFtRSxtQkFBbUIsdUNBQXVDLEtBQUssS0FBSyxZQUFZLG9GQUFvRixvREFBb0QsRUFBRSxxREFBcUQsZUFBZSxtSEFBbUgsRUFBRSw2SEFBNkgsRUFBRSw4SEFBOEgsb0NBQW9DLGtEQUFrRCxzQkFBc0I7QUFDamlQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2dwdS9mcnVjaHRlcm1hblNoYWRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmcnVjaHRlcm1hbkNvZGUgPSBgXG5pbXBvcnQgeyBnbG9iYWxJbnZvY2F0aW9uSUQgfSBmcm9tICdnLXdlYmdwdSc7XG5jb25zdCBNQVhfRURHRV9QRVJfVkVSVEVYO1xuY29uc3QgVkVSVEVYX0NPVU5UO1xuQG51bXRocmVhZHMoMSwgMSwgMSlcbmNsYXNzIEZydWNodGVybWFuIHtcbiAgQGluIEBvdXRcbiAgdV9EYXRhOiB2ZWM0W107XG4gIEBpblxuICB1X0s6IGZsb2F0O1xuICBAaW5cbiAgdV9LMjogZmxvYXQ7XG4gIFxuICBAaW5cbiAgdV9DZW50ZXI6IHZlYzI7XG4gIEBpblxuICB1X0dyYXZpdHk6IGZsb2F0O1xuICBAaW5cbiAgdV9DbHVzdGVyR3Jhdml0eTogZmxvYXQ7XG4gIEBpblxuICB1X1NwZWVkOiBmbG9hdDtcbiAgQGluXG4gIHVfTWF4RGlzcGxhY2U6IGZsb2F0O1xuICBAaW5cbiAgdV9DbHVzdGVyaW5nOiBmbG9hdDtcbiAgQGluXG4gIHVfQXR0cmlidXRlQXJyYXk6IHZlYzRbXTtcbiAgQGluXG4gIHVfQ2x1c3RlckNlbnRlcnM6IHZlYzRbXTtcbiAgY2FsY1JlcHVsc2l2ZShpOiBpbnQsIGN1cnJlbnROb2RlOiB2ZWM0KTogdmVjMiB7XG4gICAgbGV0IGR4ID0gMCwgZHkgPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHtcbiAgICAgIGlmIChpICE9IGopIHtcbiAgICAgICAgY29uc3QgbmV4dE5vZGUgPSB0aGlzLnVfRGF0YVtqXTtcbiAgICAgICAgY29uc3QgeERpc3QgPSBjdXJyZW50Tm9kZVswXSAtIG5leHROb2RlWzBdO1xuICAgICAgICBjb25zdCB5RGlzdCA9IGN1cnJlbnROb2RlWzFdIC0gbmV4dE5vZGVbMV07XG4gICAgICAgIGNvbnN0IGRpc3QgPSAoeERpc3QgKiB4RGlzdCArIHlEaXN0ICogeURpc3QpICsgMC4wMTtcbiAgICAgICAgbGV0IHBhcmFtID0gdGhpcy51X0syIC8gZGlzdDtcbiAgICAgICAgXG4gICAgICAgIGlmIChkaXN0ID4gMC4wKSB7XG4gICAgICAgICAgZHggKz0gcGFyYW0gKiB4RGlzdDtcbiAgICAgICAgICBkeSArPSBwYXJhbSAqIHlEaXN0O1xuICAgICAgICAgIGlmICh4RGlzdCA9PSAwICYmIHlEaXN0ID09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ24gPSBpIDwgaiA/IDEgOiAtMTtcbiAgICAgICAgICAgIGR4ICs9IHBhcmFtICogc2lnbjtcbiAgICAgICAgICAgIGR5ICs9IHBhcmFtICogc2lnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtkeCwgZHldO1xuICB9XG4gIGNhbGNHcmF2aXR5KGN1cnJlbnROb2RlOiB2ZWM0LCBub2RlQXR0cmlidXRlczogdmVjNCk6IHZlYzIgeyAvLyBcbiAgICBsZXQgZHggPSAwLCBkeSA9IDA7XG4gICAgY29uc3QgdnggPSBjdXJyZW50Tm9kZVswXSAtIHRoaXMudV9DZW50ZXJbMF07XG4gICAgY29uc3QgdnkgPSBjdXJyZW50Tm9kZVsxXSAtIHRoaXMudV9DZW50ZXJbMV07XG4gICAgY29uc3QgZ2YgPSAwLjAxICogdGhpcy51X0sgKiB0aGlzLnVfR3Jhdml0eTtcbiAgICBkeCA9IGdmICogdng7XG4gICAgZHkgPSBnZiAqIHZ5O1xuICAgIGlmICh0aGlzLnVfQ2x1c3RlcmluZyA9PSAxKSB7XG4gICAgICBjb25zdCBjbHVzdGVySWR4ID0gaW50KG5vZGVBdHRyaWJ1dGVzWzBdKTtcbiAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMudV9DbHVzdGVyQ2VudGVyc1tjbHVzdGVySWR4XTtcbiAgICAgIGNvbnN0IGN2eCA9IGN1cnJlbnROb2RlWzBdIC0gY2VudGVyWzBdO1xuICAgICAgY29uc3QgY3Z5ID0gY3VycmVudE5vZGVbMV0gLSBjZW50ZXJbMV07XG4gICAgICBjb25zdCBkaXN0ID0gc3FydChjdnggKiBjdnggKyBjdnkgKiBjdnkpICsgMC4wMTtcbiAgICAgIGNvbnN0IHBhcm1hID0gdGhpcy51X0sgKiB0aGlzLnVfQ2x1c3RlckdyYXZpdHkgLyBkaXN0O1xuICAgICAgZHggKz0gcGFybWEgKiBjdng7XG4gICAgICBkeSArPSBwYXJtYSAqIGN2eTtcbiAgICB9XG4gICAgcmV0dXJuIFtkeCwgZHldO1xuICB9XG4gIGNhbGNBdHRyYWN0aXZlKGk6IGludCwgY3VycmVudE5vZGU6IHZlYzQpOiB2ZWMyIHtcbiAgICBsZXQgZHggPSAwLCBkeSA9IDA7XG4gICAgY29uc3QgYXJyX29mZnNldCA9IGludChmbG9vcihjdXJyZW50Tm9kZVsyXSArIDAuNSkpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGludChmbG9vcihjdXJyZW50Tm9kZVszXSArIDAuNSkpO1xuICAgIGNvbnN0IG5vZGVfYnVmZmVyOiB2ZWM0O1xuICAgIGZvciAobGV0IHAgPSAwOyBwIDwgTUFYX0VER0VfUEVSX1ZFUlRFWDsgcCsrKSB7XG4gICAgICBpZiAocCA+PSBsZW5ndGgpIGJyZWFrO1xuICAgICAgY29uc3QgYXJyX2lkeCA9IGFycl9vZmZzZXQgKyBwO1xuICAgICAgLy8gd2hlbiBhcnJfaWR4ICUgNCA9PSAwIHVwZGF0ZSBjdXJyZW50Tm9kZWR4X2J1ZmZlclxuICAgICAgY29uc3QgYnVmX29mZnNldCA9IGFycl9pZHggLSBhcnJfaWR4IC8gNCAqIDQ7XG4gICAgICBpZiAocCA9PSAwIHx8IGJ1Zl9vZmZzZXQgPT0gMCkge1xuICAgICAgICBub2RlX2J1ZmZlciA9IHRoaXMudV9EYXRhW2ludChhcnJfaWR4IC8gNCldO1xuICAgICAgfVxuICAgICAgY29uc3QgZmxvYXRfaiA9IGJ1Zl9vZmZzZXQgPT0gMCA/IG5vZGVfYnVmZmVyWzBdIDpcbiAgICAgICAgICAgICAgICAgICAgICBidWZfb2Zmc2V0ID09IDEgPyBub2RlX2J1ZmZlclsxXSA6XG4gICAgICAgICAgICAgICAgICAgICAgYnVmX29mZnNldCA9PSAyID8gbm9kZV9idWZmZXJbMl0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVfYnVmZmVyWzNdO1xuICAgICAgY29uc3QgbmV4dE5vZGUgPSB0aGlzLnVfRGF0YVtpbnQoZmxvYXRfaildO1xuICAgICAgY29uc3QgeERpc3QgPSBjdXJyZW50Tm9kZVswXSAtIG5leHROb2RlWzBdO1xuICAgICAgY29uc3QgeURpc3QgPSBjdXJyZW50Tm9kZVsxXSAtIG5leHROb2RlWzFdO1xuICAgICAgY29uc3QgZGlzdCA9IHNxcnQoeERpc3QgKiB4RGlzdCArIHlEaXN0ICogeURpc3QpICsgMC4wMTtcbiAgICAgIGxldCBhdHRyYWN0aXZlRiA9IGRpc3QgLyB0aGlzLnVfSztcbiAgICBcbiAgICAgIGlmIChkaXN0ID4gMC4wKSB7XG4gICAgICAgIGR4IC09IHhEaXN0ICogYXR0cmFjdGl2ZUY7XG4gICAgICAgIGR5IC09IHlEaXN0ICogYXR0cmFjdGl2ZUY7XG4gICAgICAgIGlmICh4RGlzdCA9PSAwICYmIHlEaXN0ID09IDApIHtcbiAgICAgICAgICBjb25zdCBzaWduID0gaSA8IGludChmbG9hdF9qKSA/IDEgOiAtMTtcbiAgICAgICAgICBkeCAtPSBzaWduICogYXR0cmFjdGl2ZUY7XG4gICAgICAgICAgZHkgLT0gc2lnbiAqIGF0dHJhY3RpdmVGO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbZHgsIGR5XTtcbiAgfVxuICBAbWFpblxuICBjb21wdXRlKCkge1xuICAgIGNvbnN0IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudV9EYXRhW2ldO1xuICAgIGxldCBkeCA9IDAsIGR5ID0gMDtcbiAgICBpZiAoaSA+PSBWRVJURVhfQ09VTlQpIHtcbiAgICAgIHRoaXMudV9EYXRhW2ldID0gY3VycmVudE5vZGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gW2dyYXZpdHksIGZ4LCBmeSwgMF1cbiAgICBjb25zdCBub2RlQXR0cmlidXRlcyA9IHRoaXMudV9BdHRyaWJ1dGVBcnJheVtpXTtcblxuICAgIGlmIChub2RlQXR0cmlidXRlc1sxXSAhPSAwICYmIG5vZGVBdHRyaWJ1dGVzWzJdICE9IDApIHtcbiAgICAgIC8vIHRoZSBub2RlIGlzIGZpeGVkXG4gICAgICB0aGlzLnVfRGF0YVtpXSA9IFtcbiAgICAgICAgbm9kZUF0dHJpYnV0ZXNbMV0sXG4gICAgICAgIG5vZGVBdHRyaWJ1dGVzWzJdLFxuICAgICAgICBjdXJyZW50Tm9kZVsyXSxcbiAgICAgICAgY3VycmVudE5vZGVbM11cbiAgICAgIF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmVwdWxzaXZlXG4gICAgY29uc3QgcmVwdWxzaXZlID0gdGhpcy5jYWxjUmVwdWxzaXZlKGksIGN1cnJlbnROb2RlKTtcbiAgICBkeCArPSByZXB1bHNpdmVbMF07XG4gICAgZHkgKz0gcmVwdWxzaXZlWzFdO1xuICAgIC8vIGF0dHJhY3RpdmVcbiAgICBjb25zdCBhdHRyYWN0aXZlID0gdGhpcy5jYWxjQXR0cmFjdGl2ZShpLCBjdXJyZW50Tm9kZSk7XG4gICAgZHggKz0gYXR0cmFjdGl2ZVswXTtcbiAgICBkeSArPSBhdHRyYWN0aXZlWzFdO1xuICAgIC8vIGdyYXZpdHlcbiAgICBjb25zdCBncmF2aXR5ID0gdGhpcy5jYWxjR3Jhdml0eShjdXJyZW50Tm9kZSwgbm9kZUF0dHJpYnV0ZXMpO1xuICAgIGR4IC09IGdyYXZpdHlbMF07XG4gICAgZHkgLT0gZ3Jhdml0eVsxXTtcbiAgICAvLyBzcGVlZFxuICAgIGR4ICo9IHRoaXMudV9TcGVlZDtcbiAgICBkeSAqPSB0aGlzLnVfU3BlZWQ7XG5cbiAgICAvLyBtb3ZlXG4gICAgY29uc3QgZGlzdExlbmd0aCA9IHNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgIGlmIChkaXN0TGVuZ3RoID4gMC4wKSB7XG4gICAgICBjb25zdCBsaW1pdGVkRGlzdCA9IG1pbih0aGlzLnVfTWF4RGlzcGxhY2UgKiB0aGlzLnVfU3BlZWQsIGRpc3RMZW5ndGgpO1xuICAgICAgdGhpcy51X0RhdGFbaV0gPSBbXG4gICAgICAgIGN1cnJlbnROb2RlWzBdICsgZHggLyBkaXN0TGVuZ3RoICogbGltaXRlZERpc3QsXG4gICAgICAgIGN1cnJlbnROb2RlWzFdICsgZHkgLyBkaXN0TGVuZ3RoICogbGltaXRlZERpc3QsXG4gICAgICAgIGN1cnJlbnROb2RlWzJdLFxuICAgICAgICBjdXJyZW50Tm9kZVszXVxuICAgICAgXTtcbiAgICB9XG4gIH1cbn1cbmA7XG5leHBvcnQgY29uc3QgZnJ1Y2h0ZXJtYW5CdW5kbGUgPSBge1wic2hhZGVyc1wiOntcIldHU0xcIjpcImltcG9ydCBcXFxcXCJHTFNMLnN0ZC40NTBcXFxcXCIgYXMgc3RkO1xcXFxuXFxcXG5cXFxcbiMgdmFyIGdXZWJHUFVEZWJ1ZyA6IGJvb2wgPSBmYWxzZTtcXFxcbiMgdmFyIGdXZWJHUFVEZWJ1Z091dHB1dCA6IHZlYzQ8ZjMyPiA9IHZlYzQ8ZjMyPigwLjApO1xcXFxuXFxcXG5bW2J1aWx0aW4gZ2xvYmFsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGdsb2JhbEludm9jYXRpb25JRCA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfc2l6ZV1dIHZhcjxpbj4gd29ya0dyb3VwU2l6ZSA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfaWRdXSB2YXI8aW4+IHdvcmtHcm91cElEIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGxvY2FsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gbnVtX3dvcmtfZ3JvdXBzXV0gdmFyPGluPiBudW1Xb3JrR3JvdXBzIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWR4XV0gdmFyPGluPiBsb2NhbEludm9jYXRpb25JbmRleCA6IHUzMjtcXFxcblxcXFxudHlwZSBHV2ViR1BVUGFyYW1zID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0sgOiBmMzI7XFxcXG4gIFtbb2Zmc2V0IDRdXSB1X0syIDogZjMyO1xcXFxuICBbW29mZnNldCA4XV0gdV9DZW50ZXIgOiB2ZWMyPGYzMj47XFxcXG4gIFtbb2Zmc2V0IDE2XV0gdV9HcmF2aXR5IDogZjMyO1xcXFxuICBbW29mZnNldCAyMF1dIHVfQ2x1c3RlckdyYXZpdHkgOiBmMzI7XFxcXG4gIFtbb2Zmc2V0IDI0XV0gdV9TcGVlZCA6IGYzMjtcXFxcbiAgW1tvZmZzZXQgMjhdXSB1X01heERpc3BsYWNlIDogZjMyO1xcXFxuICBbW29mZnNldCAzMl1dIHVfQ2x1c3RlcmluZyA6IGYzMjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMCwgc2V0IDBdXSB2YXI8dW5pZm9ybT4gZ1dlYkdQVVVuaWZvcm1QYXJhbXMgOiBHV2ViR1BVUGFyYW1zO1xcXFxudHlwZSBHV2ViR1BVQnVmZmVyMCA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9EYXRhIDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyAxLCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjAgOiBHV2ViR1BVQnVmZmVyMDtcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjEgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfQXR0cmlidXRlQXJyYXkgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDIsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMSA6IEdXZWJHUFVCdWZmZXIxO1xcXFxudHlwZSBHV2ViR1BVQnVmZmVyMiA9IFtbYmxvY2tdXSBzdHJ1Y3Qge1xcXFxuICBbW29mZnNldCAwXV0gdV9DbHVzdGVyQ2VudGVycyA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMywgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIyIDogR1dlYkdQVUJ1ZmZlcjI7XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuZm4gY2FsY1JlcHVsc2l2ZShpIDogaTMyLCBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPikgLT4gdmVjMjxmMzI+IHt2YXIgZHggOiBmMzIgPSAwLjA7XFxcXG52YXIgZHkgOiBmMzIgPSAwLjA7XFxcXG5mb3IgKHZhciBqIDogaTMyID0gMDsgaiA8IF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UOyBqID0gaiArIDEpIHtpZiAoaSAhPSBqKSB7dmFyIG5leHROb2RlIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2pdO1xcXFxudmFyIHhEaXN0IDogZjMyID0gY3VycmVudE5vZGUueCAtIG5leHROb2RlLng7XFxcXG52YXIgeURpc3QgOiBmMzIgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbnZhciBkaXN0IDogZjMyID0gKCh4RGlzdCAqIHhEaXN0KSArICh5RGlzdCAqIHlEaXN0KSkgKyAwLjAxO1xcXFxudmFyIHBhcmFtIDogZjMyID0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9LMiAvIGRpc3Q7XFxcXG5pZiAoZGlzdCA+IDAuMCkge2R4ID0gZHggKyBwYXJhbSAqIHhEaXN0O1xcXFxuZHkgPSBkeSArIHBhcmFtICogeURpc3Q7XFxcXG5pZiAoKHhEaXN0ID09IDAuMCkgJiYgKHlEaXN0ID09IDAuMCkpIHt2YXIgc2lnbiA6IGYzMiA9IHNlbGVjdCgxLjAsIC0xLjAsIGkgPCBqKTtcXFxcbmR4ID0gZHggKyBwYXJhbSAqIHN0ZDo6c2lnbjtcXFxcbmR5ID0gZHkgKyBwYXJhbSAqIHN0ZDo6c2lnbjt9fX19XFxcXG5yZXR1cm4gdmVjMjxmMzI+KGR4LCBkeSk7fVxcXFxuZm4gY2FsY0dyYXZpdHkoY3VycmVudE5vZGUgOiB2ZWM0PGYzMj4sIG5vZGVBdHRyaWJ1dGVzIDogdmVjNDxmMzI+KSAtPiB2ZWMyPGYzMj4ge3ZhciBkeCA6IGYzMiA9IDAuMDtcXFxcbnZhciBkeSA6IGYzMiA9IDAuMDtcXFxcbnZhciB2eCA6IGYzMiA9IGN1cnJlbnROb2RlLnggLSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0NlbnRlci54O1xcXFxudmFyIHZ5IDogZjMyID0gY3VycmVudE5vZGUueSAtIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfQ2VudGVyLnk7XFxcXG52YXIgZ2YgOiBmMzIgPSAoMC4wMSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfSykgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0dyYXZpdHk7XFxcXG5keCA9IGdmICogdng7XFxcXG5keSA9IGdmICogdnk7XFxcXG5pZiAoZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9DbHVzdGVyaW5nID09IDEuMCkge3ZhciBjbHVzdGVySWR4IDogaTMyID0gaTMyKG5vZGVBdHRyaWJ1dGVzLngpO1xcXFxudmFyIGNlbnRlciA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIyLnVfQ2x1c3RlckNlbnRlcnNbY2x1c3RlcklkeF07XFxcXG52YXIgY3Z4IDogZjMyID0gY3VycmVudE5vZGUueCAtIGNlbnRlci54O1xcXFxudmFyIGN2eSA6IGYzMiA9IGN1cnJlbnROb2RlLnkgLSBjZW50ZXIueTtcXFxcbnZhciBkaXN0IDogZjMyID0gc3RkOjpzcXJ0KChjdnggKiBjdngpICsgKGN2eSAqIGN2eSkpICsgMC4wMTtcXFxcbnZhciBwYXJtYSA6IGYzMiA9IChnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0sgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0NsdXN0ZXJHcmF2aXR5KSAvIGRpc3Q7XFxcXG5keCA9IGR4ICsgcGFybWEgKiBjdng7XFxcXG5keSA9IGR5ICsgcGFybWEgKiBjdnk7fVxcXFxucmV0dXJuIHZlYzI8ZjMyPihkeCwgZHkpO31cXFxcbmZuIGNhbGNBdHRyYWN0aXZlKGkgOiBpMzIsIGN1cnJlbnROb2RlIDogdmVjNDxmMzI+KSAtPiB2ZWMyPGYzMj4ge3ZhciBkeCA6IGYzMiA9IDAuMDtcXFxcbnZhciBkeSA6IGYzMiA9IDAuMDtcXFxcbnZhciBhcnJfb2Zmc2V0IDogaTMyID0gaTMyKHN0ZDo6Zmxvb3IoY3VycmVudE5vZGUueiArIDAuNSkpO1xcXFxudmFyIGxlbmd0aCA6IGkzMiA9IGkzMihzdGQ6OmZsb29yKGN1cnJlbnROb2RlLncgKyAwLjUpKTtcXFxcbnZhciBub2RlX2J1ZmZlciA6IHZlYzQ8ZjMyPjtcXFxcbmZvciAodmFyIHAgOiBpMzIgPSAwOyBwIDwgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19NQVhfRURHRV9QRVJfVkVSVEVYOyBwID0gcCArIDEpIHtpZiAocCA+PSBsZW5ndGgpIHticmVhazt9XFxcXG52YXIgYXJyX2lkeCA6IGkzMiA9IGFycl9vZmZzZXQgKyBpMzIocCk7XFxcXG52YXIgYnVmX29mZnNldCA6IGkzMiA9IGFycl9pZHggLSAoKGFycl9pZHggLyA0KSAqIDQpO1xcXFxuaWYgKChwID09IDApIHx8IChidWZfb2Zmc2V0ID09IDApKSB7bm9kZV9idWZmZXIgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaTMyKGFycl9pZHggLyA0KV07fVxcXFxudmFyIGZsb2F0X2ogOiBmMzIgPSBzZWxlY3Qobm9kZV9idWZmZXIueCwgc2VsZWN0KG5vZGVfYnVmZmVyLnksIHNlbGVjdChub2RlX2J1ZmZlci56LCBub2RlX2J1ZmZlci53LCBidWZfb2Zmc2V0ID09IDIpLCBidWZfb2Zmc2V0ID09IDEpLCBidWZfb2Zmc2V0ID09IDApO1xcXFxudmFyIG5leHROb2RlIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2kzMihmbG9hdF9qKV07XFxcXG52YXIgeERpc3QgOiBmMzIgPSBjdXJyZW50Tm9kZS54IC0gbmV4dE5vZGUueDtcXFxcbnZhciB5RGlzdCA6IGYzMiA9IGN1cnJlbnROb2RlLnkgLSBuZXh0Tm9kZS55O1xcXFxudmFyIGRpc3QgOiBmMzIgPSBzdGQ6OnNxcnQoKHhEaXN0ICogeERpc3QpICsgKHlEaXN0ICogeURpc3QpKSArIDAuMDE7XFxcXG52YXIgYXR0cmFjdGl2ZUYgOiBmMzIgPSBkaXN0IC8gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9LO1xcXFxuaWYgKGRpc3QgPiAwLjApIHtkeCA9IGR4IC0geERpc3QgKiBhdHRyYWN0aXZlRjtcXFxcbmR5ID0gZHkgLSB5RGlzdCAqIGF0dHJhY3RpdmVGO1xcXFxuaWYgKCh4RGlzdCA9PSAwLjApICYmICh5RGlzdCA9PSAwLjApKSB7dmFyIHNpZ24gOiBmMzIgPSBzZWxlY3QoMS4wLCAtMS4wLCBpIDwgaTMyKGZsb2F0X2opKTtcXFxcbmR4ID0gZHggLSBzdGQ6OnNpZ24gKiBhdHRyYWN0aXZlRjtcXFxcbmR5ID0gZHkgLSBzdGQ6OnNpZ24gKiBhdHRyYWN0aXZlRjt9fX1cXFxcbnJldHVybiB2ZWMyPGYzMj4oZHgsIGR5KTt9XFxcXG5mbiBtYWluKCkgLT4gdm9pZCB7dmFyIGkgOiBpMzIgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZhciBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXTtcXFxcbnZhciBkeCA6IGYzMiA9IDAuMDtcXFxcbnZhciBkeSA6IGYzMiA9IDAuMDtcXFxcbmlmIChpID49IF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UKSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gY3VycmVudE5vZGU7XFxcXG5yZXR1cm4gO31cXFxcbnZhciBub2RlQXR0cmlidXRlcyA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIxLnVfQXR0cmlidXRlQXJyYXlbaV07XFxcXG5pZiAoKG5vZGVBdHRyaWJ1dGVzLnkgIT0gMC4wKSAmJiAobm9kZUF0dHJpYnV0ZXMueiAhPSAwLjApKSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gdmVjNDxmMzI+KG5vZGVBdHRyaWJ1dGVzLnksIG5vZGVBdHRyaWJ1dGVzLnosIGN1cnJlbnROb2RlLnosIGN1cnJlbnROb2RlLncpO1xcXFxucmV0dXJuIDt9XFxcXG52YXIgcmVwdWxzaXZlIDogdmVjMjxmMzI+ID0gY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5keCA9IGR4ICsgcmVwdWxzaXZlLng7XFxcXG5keSA9IGR5ICsgcmVwdWxzaXZlLnk7XFxcXG52YXIgYXR0cmFjdGl2ZSA6IHZlYzI8ZjMyPiA9IGNhbGNBdHRyYWN0aXZlKGksIGN1cnJlbnROb2RlKTtcXFxcbmR4ID0gZHggKyBhdHRyYWN0aXZlLng7XFxcXG5keSA9IGR5ICsgYXR0cmFjdGl2ZS55O1xcXFxudmFyIGdyYXZpdHkgOiB2ZWMyPGYzMj4gPSBjYWxjR3Jhdml0eShjdXJyZW50Tm9kZSwgbm9kZUF0dHJpYnV0ZXMpO1xcXFxuZHggPSBkeCAtIGdyYXZpdHkueDtcXFxcbmR5ID0gZHkgLSBncmF2aXR5Lnk7XFxcXG5keCA9IGR4ICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9TcGVlZDtcXFxcbmR5ID0gZHkgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X1NwZWVkO1xcXFxudmFyIGRpc3RMZW5ndGggOiBmMzIgPSBzdGQ6OnNxcnQoKGR4ICogZHgpICsgKGR5ICogZHkpKTtcXFxcbmlmIChkaXN0TGVuZ3RoID4gMC4wKSB7dmFyIGxpbWl0ZWREaXN0IDogZjMyID0gc3RkOjptaW4oZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9NYXhEaXNwbGFjZSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfU3BlZWQsIGRpc3RMZW5ndGgpO1xcXFxuZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gdmVjNDxmMzI+KGN1cnJlbnROb2RlLnggKyAoKGR4IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdCksIGN1cnJlbnROb2RlLnkgKyAoKGR5IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdCksIGN1cnJlbnROb2RlLnosIGN1cnJlbnROb2RlLncpO31cXFxcbnJldHVybjt9XFxcXG5cXFxcbmVudHJ5X3BvaW50IGNvbXB1dGUgYXMgXFxcXFwibWFpblxcXFxcIiA9IG1haW47XFxcXG5cIixcIkdMU0w0NTBcIjpcIlxcXFxuXFxcXG5cXFxcbmJvb2wgZ1dlYkdQVURlYnVnID0gZmFsc2U7XFxcXG52ZWM0IGdXZWJHUFVEZWJ1Z091dHB1dCA9IHZlYzQoMC4wKTtcXFxcblxcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gaXZlYzMoZ2xfR2xvYmFsSW52b2NhdGlvbklEKTtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLDEsMSk7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKGdsX1dvcmtHcm91cElEKTtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMoZ2xfTG9jYWxJbnZvY2F0aW9uSUQpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKGdsX051bVdvcmtHcm91cHMpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gaW50KGdsX0xvY2FsSW52b2NhdGlvbkluZGV4KTtcXFxcblxcXFxubGF5b3V0KHN0ZDE0MCwgc2V0ID0gMCwgYmluZGluZyA9IDApIHVuaWZvcm0gR1dlYkdQVVBhcmFtcyB7XFxcXG4gIGZsb2F0IHVfSztcXFxcbiAgZmxvYXQgdV9LMjtcXFxcbiAgdmVjMiB1X0NlbnRlcjtcXFxcbiAgZmxvYXQgdV9HcmF2aXR5O1xcXFxuICBmbG9hdCB1X0NsdXN0ZXJHcmF2aXR5O1xcXFxuICBmbG9hdCB1X1NwZWVkO1xcXFxuICBmbG9hdCB1X01heERpc3BsYWNlO1xcXFxuICBmbG9hdCB1X0NsdXN0ZXJpbmc7XFxcXG59IGdXZWJHUFVVbmlmb3JtUGFyYW1zO1xcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDEpIGJ1ZmZlciAgIEdXZWJHUFVCdWZmZXIwIHtcXFxcbiAgdmVjNCB1X0RhdGFbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjA7XFxcXG5cXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAyKSBidWZmZXIgcmVhZG9ubHkgIEdXZWJHUFVCdWZmZXIxIHtcXFxcbiAgdmVjNCB1X0F0dHJpYnV0ZUFycmF5W107XFxcXG59IGdXZWJHUFVCdWZmZXIxO1xcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMykgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMiB7XFxcXG4gIHZlYzQgdV9DbHVzdGVyQ2VudGVyc1tdO1xcXFxufSBnV2ViR1BVQnVmZmVyMjtcXFxcblxcXFxuXFxcXG5cXFxcbiNkZWZpbmUgTUFYX0VER0VfUEVSX1ZFUlRFWCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX01BWF9FREdFX1BFUl9WRVJURVhcXFxcbiNkZWZpbmUgVkVSVEVYX0NPVU5UIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UXFxcXG5sYXlvdXQgKFxcXFxuICBsb2NhbF9zaXplX3ggPSAxLFxcXFxuICBsb2NhbF9zaXplX3kgPSAxLFxcXFxuICBsb2NhbF9zaXplX3ogPSAxXFxcXG4pIGluO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbnZlYzIgY2FsY1JlcHVsc2l2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSkge2Zsb2F0IGR4ID0gMC4wO1xcXFxuZmxvYXQgZHkgPSAwLjA7XFxcXG5mb3IgKGludCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7aWYgKGkgIT0gaikge3ZlYzQgbmV4dE5vZGUgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbal07XFxcXG5mbG9hdCB4RGlzdCA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxuZmxvYXQgeURpc3QgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbmZsb2F0IGRpc3QgPSAoKHhEaXN0ICogeERpc3QpICsgKHlEaXN0ICogeURpc3QpKSArIDAuMDE7XFxcXG5mbG9hdCBwYXJhbSA9IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfSzIgLyBkaXN0O1xcXFxuaWYgKGRpc3QgPiAwLjApIHtkeCArPSBwYXJhbSAqIHhEaXN0O1xcXFxuZHkgKz0gcGFyYW0gKiB5RGlzdDtcXFxcbmlmICgoeERpc3QgPT0gMC4wKSAmJiAoeURpc3QgPT0gMC4wKSkge2Zsb2F0IHNpZ24gPSAoaSA8IGopID8gKDEuMCkgOiAoLTEuMCk7XFxcXG5keCArPSBwYXJhbSAqIHNpZ247XFxcXG5keSArPSBwYXJhbSAqIHNpZ247fX19fVxcXFxucmV0dXJuIHZlYzIoZHgsIGR5KTt9XFxcXG52ZWMyIGNhbGNHcmF2aXR5KHZlYzQgY3VycmVudE5vZGUsIHZlYzQgbm9kZUF0dHJpYnV0ZXMpIHtmbG9hdCBkeCA9IDAuMDtcXFxcbmZsb2F0IGR5ID0gMC4wO1xcXFxuZmxvYXQgdnggPSBjdXJyZW50Tm9kZS54IC0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9DZW50ZXIueDtcXFxcbmZsb2F0IHZ5ID0gY3VycmVudE5vZGUueSAtIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfQ2VudGVyLnk7XFxcXG5mbG9hdCBnZiA9ICgwLjAxICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9LKSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfR3Jhdml0eTtcXFxcbmR4ID0gZ2YgKiB2eDtcXFxcbmR5ID0gZ2YgKiB2eTtcXFxcbmlmIChnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0NsdXN0ZXJpbmcgPT0gMS4wKSB7aW50IGNsdXN0ZXJJZHggPSBpbnQobm9kZUF0dHJpYnV0ZXMueCk7XFxcXG52ZWM0IGNlbnRlciA9IGdXZWJHUFVCdWZmZXIyLnVfQ2x1c3RlckNlbnRlcnNbY2x1c3RlcklkeF07XFxcXG5mbG9hdCBjdnggPSBjdXJyZW50Tm9kZS54IC0gY2VudGVyLng7XFxcXG5mbG9hdCBjdnkgPSBjdXJyZW50Tm9kZS55IC0gY2VudGVyLnk7XFxcXG5mbG9hdCBkaXN0ID0gc3FydCgoY3Z4ICogY3Z4KSArIChjdnkgKiBjdnkpKSArIDAuMDE7XFxcXG5mbG9hdCBwYXJtYSA9IChnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0sgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0NsdXN0ZXJHcmF2aXR5KSAvIGRpc3Q7XFxcXG5keCArPSBwYXJtYSAqIGN2eDtcXFxcbmR5ICs9IHBhcm1hICogY3Z5O31cXFxcbnJldHVybiB2ZWMyKGR4LCBkeSk7fVxcXFxudmVjMiBjYWxjQXR0cmFjdGl2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSkge2Zsb2F0IGR4ID0gMC4wO1xcXFxuZmxvYXQgZHkgPSAwLjA7XFxcXG5pbnQgYXJyX29mZnNldCA9IGludChmbG9vcihjdXJyZW50Tm9kZS56ICsgMC41KSk7XFxcXG5pbnQgbGVuZ3RoID0gaW50KGZsb29yKGN1cnJlbnROb2RlLncgKyAwLjUpKTtcXFxcbnZlYzQgbm9kZV9idWZmZXI7XFxcXG5mb3IgKGludCBwID0gMDsgcCA8IE1BWF9FREdFX1BFUl9WRVJURVg7IHArKykge2lmIChwID49IGxlbmd0aCkge2JyZWFrO31cXFxcbmludCBhcnJfaWR4ID0gYXJyX29mZnNldCArIGludChwKTtcXFxcbmludCBidWZfb2Zmc2V0ID0gYXJyX2lkeCAtICgoYXJyX2lkeCAvIDQpICogNCk7XFxcXG5pZiAoKHAgPT0gMCkgfHwgKGJ1Zl9vZmZzZXQgPT0gMCkpIHtub2RlX2J1ZmZlciA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpbnQoYXJyX2lkeCAvIDQpXTt9XFxcXG5mbG9hdCBmbG9hdF9qID0gKGJ1Zl9vZmZzZXQgPT0gMCkgPyAobm9kZV9idWZmZXIueCkgOiAoKGJ1Zl9vZmZzZXQgPT0gMSkgPyAobm9kZV9idWZmZXIueSkgOiAoKGJ1Zl9vZmZzZXQgPT0gMikgPyAobm9kZV9idWZmZXIueikgOiAobm9kZV9idWZmZXIudykpKTtcXFxcbnZlYzQgbmV4dE5vZGUgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaW50KGZsb2F0X2opXTtcXFxcbmZsb2F0IHhEaXN0ID0gY3VycmVudE5vZGUueCAtIG5leHROb2RlLng7XFxcXG5mbG9hdCB5RGlzdCA9IGN1cnJlbnROb2RlLnkgLSBuZXh0Tm9kZS55O1xcXFxuZmxvYXQgZGlzdCA9IHNxcnQoKHhEaXN0ICogeERpc3QpICsgKHlEaXN0ICogeURpc3QpKSArIDAuMDE7XFxcXG5mbG9hdCBhdHRyYWN0aXZlRiA9IGRpc3QgLyBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X0s7XFxcXG5pZiAoZGlzdCA+IDAuMCkge2R4IC09IHhEaXN0ICogYXR0cmFjdGl2ZUY7XFxcXG5keSAtPSB5RGlzdCAqIGF0dHJhY3RpdmVGO1xcXFxuaWYgKCh4RGlzdCA9PSAwLjApICYmICh5RGlzdCA9PSAwLjApKSB7ZmxvYXQgc2lnbiA9IChpIDwgaW50KGZsb2F0X2opKSA/ICgxLjApIDogKC0xLjApO1xcXFxuZHggLT0gc2lnbiAqIGF0dHJhY3RpdmVGO1xcXFxuZHkgLT0gc2lnbiAqIGF0dHJhY3RpdmVGO319fVxcXFxucmV0dXJuIHZlYzIoZHgsIGR5KTt9XFxcXG52b2lkIG1haW4oKSB7aW50IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZlYzQgY3VycmVudE5vZGUgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV07XFxcXG5mbG9hdCBkeCA9IDAuMDtcXFxcbmZsb2F0IGR5ID0gMC4wO1xcXFxuaWYgKGkgPj0gVkVSVEVYX0NPVU5UKSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gY3VycmVudE5vZGU7XFxcXG5yZXR1cm4gO31cXFxcbnZlYzQgbm9kZUF0dHJpYnV0ZXMgPSBnV2ViR1BVQnVmZmVyMS51X0F0dHJpYnV0ZUFycmF5W2ldO1xcXFxuaWYgKChub2RlQXR0cmlidXRlcy55ICE9IDAuMCkgJiYgKG5vZGVBdHRyaWJ1dGVzLnogIT0gMC4wKSkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQobm9kZUF0dHJpYnV0ZXMueSwgbm9kZUF0dHJpYnV0ZXMueiwgY3VycmVudE5vZGUueiwgY3VycmVudE5vZGUudyk7XFxcXG5yZXR1cm4gO31cXFxcbnZlYzIgcmVwdWxzaXZlID0gY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5keCArPSByZXB1bHNpdmUueDtcXFxcbmR5ICs9IHJlcHVsc2l2ZS55O1xcXFxudmVjMiBhdHRyYWN0aXZlID0gY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUpO1xcXFxuZHggKz0gYXR0cmFjdGl2ZS54O1xcXFxuZHkgKz0gYXR0cmFjdGl2ZS55O1xcXFxudmVjMiBncmF2aXR5ID0gY2FsY0dyYXZpdHkoY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzKTtcXFxcbmR4IC09IGdyYXZpdHkueDtcXFxcbmR5IC09IGdyYXZpdHkueTtcXFxcbmR4ICo9IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfU3BlZWQ7XFxcXG5keSAqPSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X1NwZWVkO1xcXFxuZmxvYXQgZGlzdExlbmd0aCA9IHNxcnQoKGR4ICogZHgpICsgKGR5ICogZHkpKTtcXFxcbmlmIChkaXN0TGVuZ3RoID4gMC4wKSB7ZmxvYXQgbGltaXRlZERpc3QgPSBtaW4oZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9NYXhEaXNwbGFjZSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfU3BlZWQsIGRpc3RMZW5ndGgpO1xcXFxuZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gdmVjNChjdXJyZW50Tm9kZS54ICsgKChkeCAvIGRpc3RMZW5ndGgpICogbGltaXRlZERpc3QpLCBjdXJyZW50Tm9kZS55ICsgKChkeSAvIGRpc3RMZW5ndGgpICogbGltaXRlZERpc3QpLCBjdXJyZW50Tm9kZS56LCBjdXJyZW50Tm9kZS53KTt9fVxcXFxuXCIsXCJHTFNMMTAwXCI6XCJcXFxcblxcXFxuZmxvYXQgZXBzaWxvbiA9IDAuMDAwMDE7XFxcXG52ZWMyIGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoZmxvYXQgYWRkcmVzczFELCB2ZWMyIHRleFNpemUpIHtcXFxcbiAgdmVjMiBjb252X2NvbnN0ID0gdmVjMigxLjAgLyB0ZXhTaXplLngsIDEuMCAvICh0ZXhTaXplLnggKiB0ZXhTaXplLnkpKTtcXFxcbiAgdmVjMiBub3JtQWRkcjJEID0gZmxvYXQoYWRkcmVzczFEKSAqIGNvbnZfY29uc3Q7XFxcXG4gIHJldHVybiB2ZWMyKGZyYWN0KG5vcm1BZGRyMkQueCArIGVwc2lsb24pLCBub3JtQWRkcjJELnkpO1xcXFxufVxcXFxuXFxcXG52b2lkIGJhcnJpZXIoKSB7fVxcXFxuICBcXFxcblxcXFxudW5pZm9ybSB2ZWMyIHVfT3V0cHV0VGV4dHVyZVNpemU7XFxcXG51bmlmb3JtIGludCB1X091dHB1dFRleGVsQ291bnQ7XFxcXG52YXJ5aW5nIHZlYzIgdl9UZXhDb29yZDtcXFxcblxcXFxuYm9vbCBnV2ViR1BVRGVidWcgPSBmYWxzZTtcXFxcbnZlYzQgZ1dlYkdQVURlYnVnT3V0cHV0ID0gdmVjNCgwLjApO1xcXFxuXFxcXG4jZGVmaW5lIE1BWF9FREdFX1BFUl9WRVJURVggX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19NQVhfRURHRV9QRVJfVkVSVEVYXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxuXFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0RhdGE7XFxcXG51bmlmb3JtIHZlYzIgdV9EYXRhU2l6ZTtcXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YSh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9EYXRhLCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGZsb2F0IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfRGF0YShhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9EYXRhU2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGludCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIGZsb2F0IHVfSztcXFxcbnVuaWZvcm0gZmxvYXQgdV9LMjtcXFxcbnVuaWZvcm0gdmVjMiB1X0NlbnRlcjtcXFxcbnVuaWZvcm0gZmxvYXQgdV9HcmF2aXR5O1xcXFxudW5pZm9ybSBmbG9hdCB1X0NsdXN0ZXJHcmF2aXR5O1xcXFxudW5pZm9ybSBmbG9hdCB1X1NwZWVkO1xcXFxudW5pZm9ybSBmbG9hdCB1X01heERpc3BsYWNlO1xcXFxudW5pZm9ybSBmbG9hdCB1X0NsdXN0ZXJpbmc7XFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0F0dHJpYnV0ZUFycmF5O1xcXFxudW5pZm9ybSB2ZWMyIHVfQXR0cmlidXRlQXJyYXlTaXplO1xcXFxudmVjNCBnZXREYXRhdV9BdHRyaWJ1dGVBcnJheSh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9BdHRyaWJ1dGVBcnJheSwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQXR0cmlidXRlQXJyYXkoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9BdHRyaWJ1dGVBcnJheShhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9BdHRyaWJ1dGVBcnJheVNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQXR0cmlidXRlQXJyYXkoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQXR0cmlidXRlQXJyYXkoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0NsdXN0ZXJDZW50ZXJzO1xcXFxudW5pZm9ybSB2ZWMyIHVfQ2x1c3RlckNlbnRlcnNTaXplO1xcXFxudmVjNCBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9DbHVzdGVyQ2VudGVycywgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyhhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9DbHVzdGVyQ2VudGVyc1NpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG52ZWMyIGNhbGNSZXB1bHNpdmUoaW50IGksIHZlYzQgY3VycmVudE5vZGUpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuZmxvYXQgZHggPSAwLjA7XFxcXG5mbG9hdCBkeSA9IDAuMDtcXFxcbmZvciAoaW50IGogPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHtpZiAoaSAhPSBqKSB7dmVjNCBuZXh0Tm9kZSA9IGdldERhdGF1X0RhdGEoaik7XFxcXG5mbG9hdCB4RGlzdCA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxuZmxvYXQgeURpc3QgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbmZsb2F0IGRpc3QgPSAoKHhEaXN0ICogeERpc3QpICsgKHlEaXN0ICogeURpc3QpKSArIDAuMDE7XFxcXG5mbG9hdCBwYXJhbSA9IHVfSzIgLyBkaXN0O1xcXFxuaWYgKGRpc3QgPiAwLjApIHtkeCArPSBwYXJhbSAqIHhEaXN0O1xcXFxuZHkgKz0gcGFyYW0gKiB5RGlzdDtcXFxcbmlmICgoeERpc3QgPT0gMC4wKSAmJiAoeURpc3QgPT0gMC4wKSkge2Zsb2F0IHNpZ24gPSAoaSA8IGopID8gKDEuMCkgOiAoLTEuMCk7XFxcXG5keCArPSBwYXJhbSAqIHNpZ247XFxcXG5keSArPSBwYXJhbSAqIHNpZ247fX19fVxcXFxucmV0dXJuIHZlYzIoZHgsIGR5KTt9XFxcXG52ZWMyIGNhbGNHcmF2aXR5KHZlYzQgY3VycmVudE5vZGUsIHZlYzQgbm9kZUF0dHJpYnV0ZXMpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuZmxvYXQgZHggPSAwLjA7XFxcXG5mbG9hdCBkeSA9IDAuMDtcXFxcbmZsb2F0IHZ4ID0gY3VycmVudE5vZGUueCAtIHVfQ2VudGVyLng7XFxcXG5mbG9hdCB2eSA9IGN1cnJlbnROb2RlLnkgLSB1X0NlbnRlci55O1xcXFxuZmxvYXQgZ2YgPSAoMC4wMSAqIHVfSykgKiB1X0dyYXZpdHk7XFxcXG5keCA9IGdmICogdng7XFxcXG5keSA9IGdmICogdnk7XFxcXG5pZiAodV9DbHVzdGVyaW5nID09IDEuMCkge2ludCBjbHVzdGVySWR4ID0gaW50KG5vZGVBdHRyaWJ1dGVzLngpO1xcXFxudmVjNCBjZW50ZXIgPSBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyhjbHVzdGVySWR4KTtcXFxcbmZsb2F0IGN2eCA9IGN1cnJlbnROb2RlLnggLSBjZW50ZXIueDtcXFxcbmZsb2F0IGN2eSA9IGN1cnJlbnROb2RlLnkgLSBjZW50ZXIueTtcXFxcbmZsb2F0IGRpc3QgPSBzcXJ0KChjdnggKiBjdngpICsgKGN2eSAqIGN2eSkpICsgMC4wMTtcXFxcbmZsb2F0IHBhcm1hID0gKHVfSyAqIHVfQ2x1c3RlckdyYXZpdHkpIC8gZGlzdDtcXFxcbmR4ICs9IHBhcm1hICogY3Z4O1xcXFxuZHkgKz0gcGFybWEgKiBjdnk7fVxcXFxucmV0dXJuIHZlYzIoZHgsIGR5KTt9XFxcXG52ZWMyIGNhbGNBdHRyYWN0aXZlKGludCBpLCB2ZWM0IGN1cnJlbnROb2RlKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmZsb2F0IGR4ID0gMC4wO1xcXFxuZmxvYXQgZHkgPSAwLjA7XFxcXG5pbnQgYXJyX29mZnNldCA9IGludChmbG9vcihjdXJyZW50Tm9kZS56ICsgMC41KSk7XFxcXG5pbnQgbGVuZ3RoID0gaW50KGZsb29yKGN1cnJlbnROb2RlLncgKyAwLjUpKTtcXFxcbnZlYzQgbm9kZV9idWZmZXI7XFxcXG5mb3IgKGludCBwID0gMDsgcCA8IE1BWF9FREdFX1BFUl9WRVJURVg7IHArKykge2lmIChwID49IGxlbmd0aCkge2JyZWFrO31cXFxcbmludCBhcnJfaWR4ID0gYXJyX29mZnNldCArIGludChwKTtcXFxcbmludCBidWZfb2Zmc2V0ID0gYXJyX2lkeCAtICgoYXJyX2lkeCAvIDQpICogNCk7XFxcXG5pZiAoKHAgPT0gMCkgfHwgKGJ1Zl9vZmZzZXQgPT0gMCkpIHtub2RlX2J1ZmZlciA9IGdldERhdGF1X0RhdGEoaW50KGFycl9pZHggLyA0KSk7fVxcXFxuZmxvYXQgZmxvYXRfaiA9IChidWZfb2Zmc2V0ID09IDApID8gKG5vZGVfYnVmZmVyLngpIDogKChidWZfb2Zmc2V0ID09IDEpID8gKG5vZGVfYnVmZmVyLnkpIDogKChidWZfb2Zmc2V0ID09IDIpID8gKG5vZGVfYnVmZmVyLnopIDogKG5vZGVfYnVmZmVyLncpKSk7XFxcXG52ZWM0IG5leHROb2RlID0gZ2V0RGF0YXVfRGF0YShpbnQoZmxvYXRfaikpO1xcXFxuZmxvYXQgeERpc3QgPSBjdXJyZW50Tm9kZS54IC0gbmV4dE5vZGUueDtcXFxcbmZsb2F0IHlEaXN0ID0gY3VycmVudE5vZGUueSAtIG5leHROb2RlLnk7XFxcXG5mbG9hdCBkaXN0ID0gc3FydCgoeERpc3QgKiB4RGlzdCkgKyAoeURpc3QgKiB5RGlzdCkpICsgMC4wMTtcXFxcbmZsb2F0IGF0dHJhY3RpdmVGID0gZGlzdCAvIHVfSztcXFxcbmlmIChkaXN0ID4gMC4wKSB7ZHggLT0geERpc3QgKiBhdHRyYWN0aXZlRjtcXFxcbmR5IC09IHlEaXN0ICogYXR0cmFjdGl2ZUY7XFxcXG5pZiAoKHhEaXN0ID09IDAuMCkgJiYgKHlEaXN0ID09IDAuMCkpIHtmbG9hdCBzaWduID0gKGkgPCBpbnQoZmxvYXRfaikpID8gKDEuMCkgOiAoLTEuMCk7XFxcXG5keCAtPSBzaWduICogYXR0cmFjdGl2ZUY7XFxcXG5keSAtPSBzaWduICogYXR0cmFjdGl2ZUY7fX19XFxcXG5yZXR1cm4gdmVjMihkeCwgZHkpO31cXFxcbnZvaWQgbWFpbigpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuaW50IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZlYzQgY3VycmVudE5vZGUgPSBnZXREYXRhdV9EYXRhKGkpO1xcXFxuZmxvYXQgZHggPSAwLjA7XFxcXG5mbG9hdCBkeSA9IDAuMDtcXFxcbmlmIChpID49IFZFUlRFWF9DT1VOVCkge2dsX0ZyYWdDb2xvciA9IHZlYzQoY3VycmVudE5vZGUpO1xcXFxucmV0dXJuIDt9XFxcXG52ZWM0IG5vZGVBdHRyaWJ1dGVzID0gZ2V0RGF0YXVfQXR0cmlidXRlQXJyYXkoaSk7XFxcXG5pZiAoKG5vZGVBdHRyaWJ1dGVzLnkgIT0gMC4wKSAmJiAobm9kZUF0dHJpYnV0ZXMueiAhPSAwLjApKSB7Z2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWM0KG5vZGVBdHRyaWJ1dGVzLnksIG5vZGVBdHRyaWJ1dGVzLnosIGN1cnJlbnROb2RlLnosIGN1cnJlbnROb2RlLncpKTtcXFxcbnJldHVybiA7fVxcXFxudmVjMiByZXB1bHNpdmUgPSBjYWxjUmVwdWxzaXZlKGksIGN1cnJlbnROb2RlKTtcXFxcbmR4ICs9IHJlcHVsc2l2ZS54O1xcXFxuZHkgKz0gcmVwdWxzaXZlLnk7XFxcXG52ZWMyIGF0dHJhY3RpdmUgPSBjYWxjQXR0cmFjdGl2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5keCArPSBhdHRyYWN0aXZlLng7XFxcXG5keSArPSBhdHRyYWN0aXZlLnk7XFxcXG52ZWMyIGdyYXZpdHkgPSBjYWxjR3Jhdml0eShjdXJyZW50Tm9kZSwgbm9kZUF0dHJpYnV0ZXMpO1xcXFxuZHggLT0gZ3Jhdml0eS54O1xcXFxuZHkgLT0gZ3Jhdml0eS55O1xcXFxuZHggKj0gdV9TcGVlZDtcXFxcbmR5ICo9IHVfU3BlZWQ7XFxcXG5mbG9hdCBkaXN0TGVuZ3RoID0gc3FydCgoZHggKiBkeCkgKyAoZHkgKiBkeSkpO1xcXFxuaWYgKGRpc3RMZW5ndGggPiAwLjApIHtmbG9hdCBsaW1pdGVkRGlzdCA9IG1pbih1X01heERpc3BsYWNlICogdV9TcGVlZCwgZGlzdExlbmd0aCk7XFxcXG5nbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzQoY3VycmVudE5vZGUueCArICgoZHggLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0KSwgY3VycmVudE5vZGUueSArICgoZHkgLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0KSwgY3VycmVudE5vZGUueiwgY3VycmVudE5vZGUudykpO31pZiAoZ1dlYkdQVURlYnVnKSB7XFxcXG4gIGdsX0ZyYWdDb2xvciA9IGdXZWJHUFVEZWJ1Z091dHB1dDtcXFxcbn19XFxcXG5cIn0sXCJjb250ZXh0XCI6e1wibmFtZVwiOlwiXCIsXCJkaXNwYXRjaFwiOlsxLDEsMV0sXCJ0aHJlYWRHcm91cFNpemVcIjpbMSwxLDFdLFwibWF4SXRlcmF0aW9uXCI6MSxcImRlZmluZXNcIjpbe1wibmFtZVwiOlwiTUFYX0VER0VfUEVSX1ZFUlRFWFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInJ1bnRpbWVcIjp0cnVlfSx7XCJuYW1lXCI6XCJWRVJURVhfQ09VTlRcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJydW50aW1lXCI6dHJ1ZX1dLFwidW5pZm9ybXNcIjpbe1wibmFtZVwiOlwidV9EYXRhXCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOmZhbHNlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfS1wiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfSzJcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0NlbnRlclwiLFwidHlwZVwiOlwidmVjMjxmMzI+XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0dyYXZpdHlcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0NsdXN0ZXJHcmF2aXR5XCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9TcGVlZFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfTWF4RGlzcGxhY2VcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0NsdXN0ZXJpbmdcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X0F0dHJpYnV0ZUFycmF5XCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9DbHVzdGVyQ2VudGVyc1wiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19XSxcImdsb2JhbERlY2xhcmF0aW9uc1wiOltdLFwib3V0cHV0XCI6e1wibmFtZVwiOlwidV9EYXRhXCIsXCJzaXplXCI6WzEsMV0sXCJsZW5ndGhcIjoxfSxcIm5lZWRQaW5ncG9uZ1wiOnRydWV9fWA7XG5leHBvcnQgY29uc3QgY2x1c3RlckNvZGUgPSBgXG5pbXBvcnQgeyBnbG9iYWxJbnZvY2F0aW9uSUQgfSBmcm9tICdnLXdlYmdwdSc7XG5jb25zdCBWRVJURVhfQ09VTlQ7XG5jb25zdCBDTFVTVEVSX0NPVU5UO1xuQG51bXRocmVhZHMoMSwgMSwgMSlcbmNsYXNzIENhbGNDZW50ZXIge1xuICBAaW5cbiAgdV9EYXRhOiB2ZWM0W107XG4gIEBpblxuICB1X05vZGVBdHRyaWJ1dGVzOiB2ZWM0W107IC8vIFtbY2x1c3RlcklkeCwgMCwgMCwgMF0sIC4uLl1cbiAgQGluIEBvdXRcbiAgdV9DbHVzdGVyQ2VudGVyczogdmVjNFtdOyAvLyBbW2N4LCBjeSwgbm9kZUNvdW50LCBjbHVzdGVySWR4XSwgLi4uXVxuICBAbWFpblxuICBjb21wdXRlKCkge1xuICAgIGNvbnN0IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcbiAgICBjb25zdCBjZW50ZXIgPSB0aGlzLnVfQ2x1c3RlckNlbnRlcnNbaV07XG4gICAgbGV0IHN1bXggPSAwO1xuICAgIGxldCBzdW15ID0gMDtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgVkVSVEVYX0NPVU5UOyBqKyspIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLnVfTm9kZUF0dHJpYnV0ZXNbal07XG4gICAgICBjb25zdCBjbHVzdGVySWR4ID0gaW50KGF0dHJpYnV0ZXNbMF0pO1xuICAgICAgY29uc3QgdmVydGV4ID0gdGhpcy51X0RhdGFbal07XG4gICAgICBpZiAoY2x1c3RlcklkeCA9PSBpKSB7XG4gICAgICAgIHN1bXggKz0gdmVydGV4Lng7XG4gICAgICAgIHN1bXkgKz0gdmVydGV4Lnk7XG4gICAgICAgIGNvdW50ICs9IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudV9DbHVzdGVyQ2VudGVyc1tpXSA9IFtcbiAgICAgIHN1bXggLyBjb3VudCxcbiAgICAgIHN1bXkgLyBjb3VudCxcbiAgICAgIGNvdW50LFxuICAgICAgaVxuICAgIF07XG4gIH1cbn1cbmA7XG5leHBvcnQgY29uc3QgY2x1c3RlckJ1bmRsZSA9IGB7XCJzaGFkZXJzXCI6e1wiV0dTTFwiOlwiaW1wb3J0IFxcXFxcIkdMU0wuc3RkLjQ1MFxcXFxcIiBhcyBzdGQ7XFxcXG5cXFxcblxcXFxuIyB2YXIgZ1dlYkdQVURlYnVnIDogYm9vbCA9IGZhbHNlO1xcXFxuIyB2YXIgZ1dlYkdQVURlYnVnT3V0cHV0IDogdmVjNDxmMzI+ID0gdmVjNDxmMzI+KDAuMCk7XFxcXG5cXFxcbltbYnVpbHRpbiBnbG9iYWxfaW52b2NhdGlvbl9pZF1dIHZhcjxpbj4gZ2xvYmFsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gd29ya19ncm91cF9zaXplXV0gdmFyPGluPiB3b3JrR3JvdXBTaXplIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gd29ya19ncm91cF9pZF1dIHZhcjxpbj4gd29ya0dyb3VwSUQgOiB2ZWMzPHUzMj47XFxcXG5bW2J1aWx0aW4gbG9jYWxfaW52b2NhdGlvbl9pZF1dIHZhcjxpbj4gbG9jYWxJbnZvY2F0aW9uSUQgOiB2ZWMzPHUzMj47XFxcXG4jIFtbYnVpbHRpbiBudW1fd29ya19ncm91cHNdXSB2YXI8aW4+IG51bVdvcmtHcm91cHMgOiB2ZWMzPHUzMj47XFxcXG5bW2J1aWx0aW4gbG9jYWxfaW52b2NhdGlvbl9pZHhdXSB2YXI8aW4+IGxvY2FsSW52b2NhdGlvbkluZGV4IDogdTMyO1xcXFxuXFxcXG5cXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjAgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfRGF0YSA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMCwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIwIDogR1dlYkdQVUJ1ZmZlcjA7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIxID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X05vZGVBdHRyaWJ1dGVzIDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyAxLCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjEgOiBHV2ViR1BVQnVmZmVyMTtcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjIgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfQ2x1c3RlckNlbnRlcnMgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDIsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMiA6IEdXZWJHUFVCdWZmZXIyO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuZm4gbWFpbigpIC0+IHZvaWQge3ZhciBpIDogaTMyID0gZ2xvYmFsSW52b2NhdGlvbklELng7XFxcXG52YXIgY2VudGVyIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjIudV9DbHVzdGVyQ2VudGVyc1tpXTtcXFxcbnZhciBzdW14IDogZjMyID0gMC4wO1xcXFxudmFyIHN1bXkgOiBmMzIgPSAwLjA7XFxcXG52YXIgY291bnQgOiBmMzIgPSAwLjA7XFxcXG5mb3IgKHZhciBqIDogaTMyID0gMDsgaiA8IF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UOyBqID0gaiArIDEpIHt2YXIgYXR0cmlidXRlcyA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIxLnVfTm9kZUF0dHJpYnV0ZXNbal07XFxcXG52YXIgY2x1c3RlcklkeCA6IGkzMiA9IGkzMihhdHRyaWJ1dGVzLngpO1xcXFxudmFyIHZlcnRleCA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtqXTtcXFxcbmlmIChjbHVzdGVySWR4ID09IGkpIHtzdW14ID0gc3VteCArIHZlcnRleC54O1xcXFxuc3VteSA9IHN1bXkgKyB2ZXJ0ZXgueTtcXFxcbmNvdW50ID0gY291bnQgKyAxLjA7fX1cXFxcbmdXZWJHUFVCdWZmZXIyLnVfQ2x1c3RlckNlbnRlcnNbaV0gPSB2ZWM0PGYzMj4oc3VteCAvIGNvdW50LCBzdW15IC8gY291bnQsIGNvdW50LCBpKTtcXFxcbnJldHVybjt9XFxcXG5cXFxcbmVudHJ5X3BvaW50IGNvbXB1dGUgYXMgXFxcXFwibWFpblxcXFxcIiA9IG1haW47XFxcXG5cIixcIkdMU0w0NTBcIjpcIlxcXFxuXFxcXG5cXFxcbmJvb2wgZ1dlYkdQVURlYnVnID0gZmFsc2U7XFxcXG52ZWM0IGdXZWJHUFVEZWJ1Z091dHB1dCA9IHZlYzQoMC4wKTtcXFxcblxcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gaXZlYzMoZ2xfR2xvYmFsSW52b2NhdGlvbklEKTtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLDEsMSk7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKGdsX1dvcmtHcm91cElEKTtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMoZ2xfTG9jYWxJbnZvY2F0aW9uSUQpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKGdsX051bVdvcmtHcm91cHMpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gaW50KGdsX0xvY2FsSW52b2NhdGlvbkluZGV4KTtcXFxcblxcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMCkgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMCB7XFxcXG4gIHZlYzQgdV9EYXRhW107XFxcXG59IGdXZWJHUFVCdWZmZXIwO1xcXFxuXFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMSkgYnVmZmVyIHJlYWRvbmx5ICBHV2ViR1BVQnVmZmVyMSB7XFxcXG4gIHZlYzQgdV9Ob2RlQXR0cmlidXRlc1tdO1xcXFxufSBnV2ViR1BVQnVmZmVyMTtcXFxcblxcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDIpIGJ1ZmZlciAgIEdXZWJHUFVCdWZmZXIyIHtcXFxcbiAgdmVjNCB1X0NsdXN0ZXJDZW50ZXJzW107XFxcXG59IGdXZWJHUFVCdWZmZXIyO1xcXFxuXFxcXG5cXFxcblxcXFxuI2RlZmluZSBWRVJURVhfQ09VTlQgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19WRVJURVhfQ09VTlRcXFxcbiNkZWZpbmUgQ0xVU1RFUl9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX0NMVVNURVJfQ09VTlRcXFxcbmxheW91dCAoXFxcXG4gIGxvY2FsX3NpemVfeCA9IDEsXFxcXG4gIGxvY2FsX3NpemVfeSA9IDEsXFxcXG4gIGxvY2FsX3NpemVfeiA9IDFcXFxcbikgaW47XFxcXG5cXFxcblxcXFxuXFxcXG52b2lkIG1haW4oKSB7aW50IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZlYzQgY2VudGVyID0gZ1dlYkdQVUJ1ZmZlcjIudV9DbHVzdGVyQ2VudGVyc1tpXTtcXFxcbmZsb2F0IHN1bXggPSAwLjA7XFxcXG5mbG9hdCBzdW15ID0gMC4wO1xcXFxuZmxvYXQgY291bnQgPSAwLjA7XFxcXG5mb3IgKGludCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7dmVjNCBhdHRyaWJ1dGVzID0gZ1dlYkdQVUJ1ZmZlcjEudV9Ob2RlQXR0cmlidXRlc1tqXTtcXFxcbmludCBjbHVzdGVySWR4ID0gaW50KGF0dHJpYnV0ZXMueCk7XFxcXG52ZWM0IHZlcnRleCA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtqXTtcXFxcbmlmIChjbHVzdGVySWR4ID09IGkpIHtzdW14ICs9IHZlcnRleC54O1xcXFxuc3VteSArPSB2ZXJ0ZXgueTtcXFxcbmNvdW50ICs9IDEuMDt9fVxcXFxuZ1dlYkdQVUJ1ZmZlcjIudV9DbHVzdGVyQ2VudGVyc1tpXSA9IHZlYzQoc3VteCAvIGNvdW50LCBzdW15IC8gY291bnQsIGNvdW50LCBpKTt9XFxcXG5cIixcIkdMU0wxMDBcIjpcIlxcXFxuXFxcXG5mbG9hdCBlcHNpbG9uID0gMC4wMDAwMTtcXFxcbnZlYzIgYWRkclRyYW5zbGF0aW9uXzFEdG8yRChmbG9hdCBhZGRyZXNzMUQsIHZlYzIgdGV4U2l6ZSkge1xcXFxuICB2ZWMyIGNvbnZfY29uc3QgPSB2ZWMyKDEuMCAvIHRleFNpemUueCwgMS4wIC8gKHRleFNpemUueCAqIHRleFNpemUueSkpO1xcXFxuICB2ZWMyIG5vcm1BZGRyMkQgPSBmbG9hdChhZGRyZXNzMUQpICogY29udl9jb25zdDtcXFxcbiAgcmV0dXJuIHZlYzIoZnJhY3Qobm9ybUFkZHIyRC54ICsgZXBzaWxvbiksIG5vcm1BZGRyMkQueSk7XFxcXG59XFxcXG5cXFxcbnZvaWQgYmFycmllcigpIHt9XFxcXG4gIFxcXFxuXFxcXG51bmlmb3JtIHZlYzIgdV9PdXRwdXRUZXh0dXJlU2l6ZTtcXFxcbnVuaWZvcm0gaW50IHVfT3V0cHV0VGV4ZWxDb3VudDtcXFxcbnZhcnlpbmcgdmVjMiB2X1RleENvb3JkO1xcXFxuXFxcXG5ib29sIGdXZWJHUFVEZWJ1ZyA9IGZhbHNlO1xcXFxudmVjNCBnV2ViR1BVRGVidWdPdXRwdXQgPSB2ZWM0KDAuMCk7XFxcXG5cXFxcbiNkZWZpbmUgVkVSVEVYX0NPVU5UIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UXFxcXG4jZGVmaW5lIENMVVNURVJfQ09VTlQgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19DTFVTVEVSX0NPVU5UXFxcXG5cXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfRGF0YTtcXFxcbnVuaWZvcm0gdmVjMiB1X0RhdGFTaXplO1xcXFxudmVjNCBnZXREYXRhdV9EYXRhKHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X0RhdGEsIGFkZHJlc3MyRCkucmdiYSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X0RhdGEoZmxvYXQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9EYXRhKGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X0RhdGFTaXplKSk7XFxcXG59XFxcXG52ZWM0IGdldERhdGF1X0RhdGEoaW50IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfRGF0YShmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfTm9kZUF0dHJpYnV0ZXM7XFxcXG51bmlmb3JtIHZlYzIgdV9Ob2RlQXR0cmlidXRlc1NpemU7XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVzKHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X05vZGVBdHRyaWJ1dGVzLCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9Ob2RlQXR0cmlidXRlcyhmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X05vZGVBdHRyaWJ1dGVzKGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X05vZGVBdHRyaWJ1dGVzU2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9Ob2RlQXR0cmlidXRlcyhpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9Ob2RlQXR0cmlidXRlcyhmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfQ2x1c3RlckNlbnRlcnM7XFxcXG51bmlmb3JtIHZlYzIgdV9DbHVzdGVyQ2VudGVyc1NpemU7XFxcXG52ZWM0IGdldERhdGF1X0NsdXN0ZXJDZW50ZXJzKHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X0NsdXN0ZXJDZW50ZXJzLCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyhmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0NsdXN0ZXJDZW50ZXJzKGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X0NsdXN0ZXJDZW50ZXJzU2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyhpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9DbHVzdGVyQ2VudGVycyhmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnZvaWQgbWFpbigpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuaW50IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcXFxcbnZlYzQgY2VudGVyID0gZ2V0RGF0YXVfQ2x1c3RlckNlbnRlcnMoaSk7XFxcXG5mbG9hdCBzdW14ID0gMC4wO1xcXFxuZmxvYXQgc3VteSA9IDAuMDtcXFxcbmZsb2F0IGNvdW50ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge3ZlYzQgYXR0cmlidXRlcyA9IGdldERhdGF1X05vZGVBdHRyaWJ1dGVzKGopO1xcXFxuaW50IGNsdXN0ZXJJZHggPSBpbnQoYXR0cmlidXRlcy54KTtcXFxcbnZlYzQgdmVydGV4ID0gZ2V0RGF0YXVfRGF0YShqKTtcXFxcbmlmIChjbHVzdGVySWR4ID09IGkpIHtzdW14ICs9IHZlcnRleC54O1xcXFxuc3VteSArPSB2ZXJ0ZXgueTtcXFxcbmNvdW50ICs9IDEuMDt9fVxcXFxuZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWM0KHN1bXggLyBjb3VudCwgc3VteSAvIGNvdW50LCBjb3VudCwgaSkpO2lmIChnV2ViR1BVRGVidWcpIHtcXFxcbiAgZ2xfRnJhZ0NvbG9yID0gZ1dlYkdQVURlYnVnT3V0cHV0O1xcXFxufX1cXFxcblwifSxcImNvbnRleHRcIjp7XCJuYW1lXCI6XCJcIixcImRpc3BhdGNoXCI6WzEsMSwxXSxcInRocmVhZEdyb3VwU2l6ZVwiOlsxLDEsMV0sXCJtYXhJdGVyYXRpb25cIjoxLFwiZGVmaW5lc1wiOlt7XCJuYW1lXCI6XCJWRVJURVhfQ09VTlRcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJydW50aW1lXCI6dHJ1ZX0se1wibmFtZVwiOlwiQ0xVU1RFUl9DT1VOVFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInJ1bnRpbWVcIjp0cnVlfV0sXCJ1bmlmb3Jtc1wiOlt7XCJuYW1lXCI6XCJ1X0RhdGFcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X05vZGVBdHRyaWJ1dGVzXCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9DbHVzdGVyQ2VudGVyc1wiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjpmYWxzZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfV0sXCJnbG9iYWxEZWNsYXJhdGlvbnNcIjpbXSxcIm91dHB1dFwiOntcIm5hbWVcIjpcInVfQ2x1c3RlckNlbnRlcnNcIixcInNpemVcIjpbMSwxXSxcImxlbmd0aFwiOjF9LFwibmVlZFBpbmdwb25nXCI6dHJ1ZX19YDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZydWNodGVybWFuU2hhZGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchtermanShader.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForce.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForce.js ***! \***************************************************************************************/ /*! exports provided: GForceGPULayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GForceGPULayout\", function() { return GForceGPULayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js\");\n/* harmony import */ var _util_gpu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/gpu */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/gpu.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/math.js\");\n/* harmony import */ var _gForceShader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./gForceShader */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForceShader.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/constants.js\");\n// @ts-nocheck\n/**\n * @fileOverview fruchterman layout\n * @author shiwu.wyy@antfin.com\n */\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n// @ts-ignore\n\n\n\n\n\n/**\n * graphin 中的 force 布局\n */\nclass GForceGPULayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 弹簧引力系数 */\n this.edgeStrength = 200;\n /** 斥力系数 */\n this.nodeStrength = 1000;\n /** 库伦系数 */\n this.coulombDisScale = 0.005;\n /** 阻尼系数 */\n this.damping = 0.9;\n /** 最大速度 */\n this.maxSpeed = 1000;\n /** 一次迭代的平均移动距离小于该值时停止迭代 */\n this.minMovement = 0.5;\n /** 迭代中衰减 */\n this.interval = 0.02;\n /** 斥力的一个系数 */\n this.factor = 1;\n /** 理想边长 */\n this.linkDistance = 1;\n /** 重力大小 */\n this.gravity = 10;\n /** 是否启用web worker。前提是在web worker里执行布局,否则无效\t*/\n this.workerEnabled = false;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.nodeMap = {};\n this.nodeIdxMap = {};\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 2000,\n gravity: 10,\n clustering: false,\n clusterGravity: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * self.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n self.nodeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.nodeStrength, 1);\n self.edgeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.edgeStrength, 1);\n // layout\n yield self.run();\n });\n }\n executeWithWorker(canvas, ctx) {\n const self = this;\n const nodes = self.nodes;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n return;\n }\n const nodeMap = {};\n const nodeIdxMap = {};\n nodes.forEach((node, i) => {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.x))\n node.x = Math.random() * self.width;\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.y))\n node.y = Math.random() * self.height;\n nodeMap[node.id] = node;\n nodeIdxMap[node.id] = i;\n });\n self.nodeMap = nodeMap;\n self.nodeIdxMap = nodeIdxMap;\n self.nodeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.nodeStrength, 1);\n self.edgeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.edgeStrength, 1);\n // layout\n self.run(canvas, ctx);\n }\n run(canvas, ctx) {\n return __awaiter(this, void 0, void 0, function* () {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const maxIteration = self.maxIteration;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const numParticles = nodes.length;\n self.linkDistance = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.linkDistance);\n self.edgeStrength = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"proccessToFunc\"])(self.edgeStrength);\n const { maxEdgePerVetex, array: nodesEdgesArray } = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"buildTextureDataWithTwoEdgeAttr\"])(nodes, edges, self.linkDistance, self.edgeStrength);\n // init degree for mass\n self.degrees = Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"getDegree\"])(nodes.length, self.nodeIdxMap, edges);\n const masses = [];\n const nodeStrengths = [];\n const centerXs = [];\n const centerYs = [];\n const centerGravities = [];\n const fxs = [];\n const fys = [];\n if (!self.getMass) {\n self.getMass = (d) => {\n return self.degrees[self.nodeIdxMap[d.id]] || 1;\n };\n }\n const gravity = self.gravity;\n const center = self.center;\n nodes.forEach((node, i) => {\n masses.push(self.getMass(node));\n nodeStrengths.push(self.nodeStrength(node));\n if (!self.degrees[i])\n self.degrees[i] = 0;\n let nodeGravity = [center[0], center[1], gravity];\n if (self.getCenter) {\n const customCenter = self.getCenter(node, self.degrees[i]);\n if (customCenter &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenter[0]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenter[1]) &&\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(customCenter[2])) {\n nodeGravity = customCenter;\n }\n }\n centerXs.push(nodeGravity[0]);\n centerYs.push(nodeGravity[1]);\n centerGravities.push(nodeGravity[2]);\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fx) && Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(node.fy)) {\n fxs.push(node.fx || 0.001);\n fys.push(node.fy || 0.001);\n }\n else {\n fxs.push(0);\n fys.push(0);\n }\n });\n // 每个节点的额外属性占两个数组各一格,nodeAttributeArray1 中是:mass, degree, nodeSterngth, 0\n const nodeAttributeArray1 = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"arrayToTextureData\"])([\n masses,\n self.degrees,\n nodeStrengths,\n fxs\n ]);\n // nodeAttributeArray2 中是:centerX, centerY, gravity, 0,\n const nodeAttributeArray2 = Object(_util_gpu__WEBPACK_IMPORTED_MODULE_3__[\"arrayToTextureData\"])([\n centerXs,\n centerYs,\n centerGravities,\n fys\n ]);\n const workerEnabled = self.workerEnabled;\n let world;\n if (workerEnabled) {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n canvas,\n engineOptions: {\n supportCompute: true\n }\n });\n }\n else {\n world = _antv_g_webgpu__WEBPACK_IMPORTED_MODULE_2__[\"World\"].create({\n engineOptions: {\n supportCompute: true\n }\n });\n }\n // TODO: 最终的预编译代码放入到 gForceShader.ts 中直接引入,不再需要下面三行\n // const compiler = new Compiler();\n // const gForceBundle = compiler.compileBundle(gForceCode);\n // console.log(gForceBundle.toString());\n const onLayoutEnd = self.onLayoutEnd;\n const initPreviousData = [];\n nodesEdgesArray.forEach((value) => {\n initPreviousData.push(value);\n });\n for (let i = 0; i < 4; i++) {\n initPreviousData.push(0);\n }\n const kernelGForce = world\n .createKernel(_gForceShader__WEBPACK_IMPORTED_MODULE_5__[\"gForceBundle\"])\n .setDispatch([numParticles, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n u_damping: self.damping,\n u_maxSpeed: self.maxSpeed,\n u_minMovement: self.minMovement,\n u_coulombDisScale: self.coulombDisScale,\n u_factor: self.factor,\n u_NodeAttributeArray1: nodeAttributeArray1,\n u_NodeAttributeArray2: nodeAttributeArray2,\n MAX_EDGE_PER_VERTEX: maxEdgePerVetex,\n VERTEX_COUNT: numParticles,\n u_AveMovement: initPreviousData,\n u_interval: self.interval // 每次迭代更新,首次设置为 interval,在 onIterationCompleted 中更新\n });\n // const aveMovementBundle = compiler.compileBundle(aveMovementCode);\n // console.log(aveMovementBundle.toString());\n const kernelAveMovement = world\n .createKernel(_gForceShader__WEBPACK_IMPORTED_MODULE_5__[\"aveMovementBundle\"])\n .setDispatch([1, 1, 1])\n .setBinding({\n u_Data: nodesEdgesArray,\n VERTEX_COUNT: numParticles,\n u_AveMovement: [0, 0, 0, 0]\n });\n // 执行迭代\n // let midRes = nodesEdgesArray;\n const execute = () => __awaiter(this, void 0, void 0, function* () {\n for (let i = 0; i < maxIteration; i++) {\n // TODO: 似乎都来自 kernelGForce 是一个引用\n // 当前坐标作为下一次迭代的 PreviousData\n // if (i > 0) {\n // kernelAveMovement.setBinding({\n // u_PreviousData: kernelGForce\n // });\n // }\n // eslint-disable-next-line no-await-in-loop\n yield kernelGForce.execute();\n // midRes = await kernelGForce.getOutput();\n // 每次迭代完成后\n // 计算平均位移,用于提前终止迭代\n kernelAveMovement.setBinding({\n u_Data: kernelGForce\n });\n // eslint-disable-next-line no-await-in-loop\n yield kernelAveMovement.execute();\n // 更新衰减函数\n const stepInterval = Math.max(0.02, self.interval - i * 0.002);\n kernelGForce.setBinding({\n u_interval: stepInterval,\n u_AveMovement: kernelAveMovement\n });\n }\n const finalParticleData = yield kernelGForce.getOutput();\n // 所有迭代完成后\n if (canvas) {\n // 传递数据给主线程\n ctx.postMessage({\n type: _constants__WEBPACK_IMPORTED_MODULE_6__[\"LAYOUT_MESSAGE\"].GPUEND,\n vertexEdgeData: finalParticleData\n // edgeIndexBufferData,\n });\n }\n else {\n nodes.forEach((node, i) => {\n const x = finalParticleData[4 * i];\n const y = finalParticleData[4 * i + 1];\n node.x = x;\n node.y = y;\n });\n }\n if (onLayoutEnd)\n onLayoutEnd();\n });\n yield execute();\n });\n }\n getType() {\n return \"gForce-gpu\";\n }\n}\n//# sourceMappingURL=gForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ3B1L2dGb3JjZS5qcz9mOTcwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsU0FBSSxJQUFJLFNBQUk7QUFDN0IsMkJBQTJCLCtEQUErRCxnQkFBZ0IsRUFBRSxFQUFFO0FBQzlHO0FBQ0EsbUNBQW1DLE1BQU0sNkJBQTZCLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDakcsa0NBQWtDLE1BQU0saUNBQWlDLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDcEcsK0JBQStCLHFGQUFxRjtBQUNwSDtBQUNBLEtBQUs7QUFDTDtBQUMrQjtBQUNPO0FBQ3RDO0FBQ3VDO0FBQzhEO0FBQ3pEO0FBQ3FCO0FBQ25CO0FBQzlDO0FBQ0E7QUFDQTtBQUNPLDhCQUE4QiwwQ0FBSTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsZ0NBQWdDLGdFQUFjO0FBQzlDLGdDQUFnQyxnRUFBYztBQUM5QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsNEJBQTRCLGdFQUFjO0FBQzFDLDRCQUE0QixnRUFBYztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxnRUFBYztBQUM5QyxnQ0FBZ0MsZ0VBQWM7QUFDOUMsbUJBQW1CLDBDQUEwQyxHQUFHLGlGQUErQjtBQUMvRjtBQUNBLDJCQUEyQiw0REFBUztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFRO0FBQ2hDLHdCQUF3QixzREFBUTtBQUNoQyx3QkFBd0Isc0RBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFRLGFBQWEsc0RBQVE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSx3Q0FBd0Msb0VBQWtCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxvRUFBa0I7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvREFBSztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0Esd0JBQXdCLG9EQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsMkJBQTJCLE9BQU87QUFDbEM7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDBEQUFZO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLCtEQUFpQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixrQkFBa0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix5REFBYztBQUM1QztBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ3B1L2dGb3JjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1ub2NoZWNrXG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgZnJ1Y2h0ZXJtYW4gbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKi9cbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuLi9iYXNlXCI7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gXCIuLi8uLi91dGlsXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBXb3JsZCB9IGZyb20gXCJAYW50di9nLXdlYmdwdVwiO1xuaW1wb3J0IHsgcHJvY2Nlc3NUb0Z1bmMsIGJ1aWxkVGV4dHVyZURhdGFXaXRoVHdvRWRnZUF0dHIsIGFycmF5VG9UZXh0dXJlRGF0YSB9IGZyb20gXCIuLi8uLi91dGlsL2dwdVwiO1xuaW1wb3J0IHsgZ2V0RGVncmVlIH0gZnJvbSBcIi4uLy4uL3V0aWwvbWF0aFwiO1xuaW1wb3J0IHsgZ0ZvcmNlQnVuZGxlLCBhdmVNb3ZlbWVudEJ1bmRsZSB9IGZyb20gXCIuL2dGb3JjZVNoYWRlclwiO1xuaW1wb3J0IHsgTEFZT1VUX01FU1NBR0UgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG4vKipcbiAqIGdyYXBoaW4g5Lit55qEIGZvcmNlIOW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgR0ZvcmNlR1BVTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5YGc5q2i6L+t5Luj55qE5pyA5aSn6L+t5Luj5pWwICovXG4gICAgICAgIHRoaXMubWF4SXRlcmF0aW9uID0gMTAwMDtcbiAgICAgICAgLyoqIOW8ueewp+W8leWKm+ezu+aVsCAqL1xuICAgICAgICB0aGlzLmVkZ2VTdHJlbmd0aCA9IDIwMDtcbiAgICAgICAgLyoqIOaWpeWKm+ezu+aVsCAqL1xuICAgICAgICB0aGlzLm5vZGVTdHJlbmd0aCA9IDEwMDA7XG4gICAgICAgIC8qKiDlupPkvKbns7vmlbAgKi9cbiAgICAgICAgdGhpcy5jb3Vsb21iRGlzU2NhbGUgPSAwLjAwNTtcbiAgICAgICAgLyoqIOmYu+WwvOezu+aVsCAqL1xuICAgICAgICB0aGlzLmRhbXBpbmcgPSAwLjk7XG4gICAgICAgIC8qKiDmnIDlpKfpgJ/luqYgKi9cbiAgICAgICAgdGhpcy5tYXhTcGVlZCA9IDEwMDA7XG4gICAgICAgIC8qKiDkuIDmrKHov63ku6PnmoTlubPlnYfnp7vliqjot53nprvlsI/kuo7or6XlgLzml7blgZzmraLov63ku6MgKi9cbiAgICAgICAgdGhpcy5taW5Nb3ZlbWVudCA9IDAuNTtcbiAgICAgICAgLyoqIOi/reS7o+S4reihsOWHjyAqL1xuICAgICAgICB0aGlzLmludGVydmFsID0gMC4wMjtcbiAgICAgICAgLyoqIOaWpeWKm+eahOS4gOS4quezu+aVsCAqL1xuICAgICAgICB0aGlzLmZhY3RvciA9IDE7XG4gICAgICAgIC8qKiDnkIbmg7Povrnplb8gKi9cbiAgICAgICAgdGhpcy5saW5rRGlzdGFuY2UgPSAxO1xuICAgICAgICAvKiog6YeN5Yqb5aSn5bCPICovXG4gICAgICAgIHRoaXMuZ3Jhdml0eSA9IDEwO1xuICAgICAgICAvKiog5piv5ZCm5ZCv55Sod2ViIHdvcmtlcuOAguWJjeaPkOaYr+WcqHdlYiB3b3JrZXLph4zmiafooYzluIPlsYDvvIzlkKbliJnml6DmlYhcdCovXG4gICAgICAgIHRoaXMud29ya2VyRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMubm9kZU1hcCA9IHt9O1xuICAgICAgICB0aGlzLm5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhJdGVyYXRpb246IDIwMDAsXG4gICAgICAgICAgICBncmF2aXR5OiAxMCxcbiAgICAgICAgICAgIGNsdXN0ZXJpbmc6IGZhbHNlLFxuICAgICAgICAgICAgY2x1c3RlckdyYXZpdHk6IDEwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWxmLmNlbnRlcikge1xuICAgICAgICAgICAgICAgIHNlbGYuY2VudGVyID0gW3NlbGYud2lkdGggLyAyLCBzZWxmLmhlaWdodCAvIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2VudGVyID0gc2VsZi5jZW50ZXI7XG4gICAgICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGNlbnRlclswXTtcbiAgICAgICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkeE1hcCA9IHt9O1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXIobm9kZS54KSlcbiAgICAgICAgICAgICAgICAgICAgbm9kZS54ID0gTWF0aC5yYW5kb20oKSAqIHNlbGYud2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcihub2RlLnkpKVxuICAgICAgICAgICAgICAgICAgICBub2RlLnkgPSBNYXRoLnJhbmRvbSgpICogc2VsZi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgbm9kZUlkeE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNlbGYubm9kZU1hcCA9IG5vZGVNYXA7XG4gICAgICAgICAgICBzZWxmLm5vZGVJZHhNYXAgPSBub2RlSWR4TWFwO1xuICAgICAgICAgICAgc2VsZi5ub2RlU3RyZW5ndGggPSBwcm9jY2Vzc1RvRnVuYyhzZWxmLm5vZGVTdHJlbmd0aCwgMSk7XG4gICAgICAgICAgICBzZWxmLmVkZ2VTdHJlbmd0aCA9IHByb2NjZXNzVG9GdW5jKHNlbGYuZWRnZVN0cmVuZ3RoLCAxKTtcbiAgICAgICAgICAgIC8vIGxheW91dFxuICAgICAgICAgICAgeWllbGQgc2VsZi5ydW4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV4ZWN1dGVXaXRoV29ya2VyKGNhbnZhcywgY3R4KSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBpZiAoIW5vZGVzIHx8IG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIG5vZGVzWzBdLnggPSBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1swXS55ID0gY2VudGVyWzFdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICAgICAgY29uc3Qgbm9kZUlkeE1hcCA9IHt9O1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG5vZGUueCkpXG4gICAgICAgICAgICAgICAgbm9kZS54ID0gTWF0aC5yYW5kb20oKSAqIHNlbGYud2lkdGg7XG4gICAgICAgICAgICBpZiAoIWlzTnVtYmVyKG5vZGUueSkpXG4gICAgICAgICAgICAgICAgbm9kZS55ID0gTWF0aC5yYW5kb20oKSAqIHNlbGYuaGVpZ2h0O1xuICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgICAgICAgICBub2RlSWR4TWFwW25vZGUuaWRdID0gaTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYubm9kZU1hcCA9IG5vZGVNYXA7XG4gICAgICAgIHNlbGYubm9kZUlkeE1hcCA9IG5vZGVJZHhNYXA7XG4gICAgICAgIHNlbGYubm9kZVN0cmVuZ3RoID0gcHJvY2Nlc3NUb0Z1bmMoc2VsZi5ub2RlU3RyZW5ndGgsIDEpO1xuICAgICAgICBzZWxmLmVkZ2VTdHJlbmd0aCA9IHByb2NjZXNzVG9GdW5jKHNlbGYuZWRnZVN0cmVuZ3RoLCAxKTtcbiAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgIHNlbGYucnVuKGNhbnZhcywgY3R4KTtcbiAgICB9XG4gICAgcnVuKGNhbnZhcywgY3R4KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgICAgIGNvbnN0IG1heEl0ZXJhdGlvbiA9IHNlbGYubWF4SXRlcmF0aW9uO1xuICAgICAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLndpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG51bVBhcnRpY2xlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIHNlbGYubGlua0Rpc3RhbmNlID0gcHJvY2Nlc3NUb0Z1bmMoc2VsZi5saW5rRGlzdGFuY2UpO1xuICAgICAgICAgICAgc2VsZi5lZGdlU3RyZW5ndGggPSBwcm9jY2Vzc1RvRnVuYyhzZWxmLmVkZ2VTdHJlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCB7IG1heEVkZ2VQZXJWZXRleCwgYXJyYXk6IG5vZGVzRWRnZXNBcnJheSB9ID0gYnVpbGRUZXh0dXJlRGF0YVdpdGhUd29FZGdlQXR0cihub2RlcywgZWRnZXMsIHNlbGYubGlua0Rpc3RhbmNlLCBzZWxmLmVkZ2VTdHJlbmd0aCk7XG4gICAgICAgICAgICAvLyBpbml0IGRlZ3JlZSBmb3IgbWFzc1xuICAgICAgICAgICAgc2VsZi5kZWdyZWVzID0gZ2V0RGVncmVlKG5vZGVzLmxlbmd0aCwgc2VsZi5ub2RlSWR4TWFwLCBlZGdlcyk7XG4gICAgICAgICAgICBjb25zdCBtYXNzZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVTdHJlbmd0aHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclhzID0gW107XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJZcyA9IFtdO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyR3Jhdml0aWVzID0gW107XG4gICAgICAgICAgICBjb25zdCBmeHMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGZ5cyA9IFtdO1xuICAgICAgICAgICAgaWYgKCFzZWxmLmdldE1hc3MpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmdldE1hc3MgPSAoZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWdyZWVzW3NlbGYubm9kZUlkeE1hcFtkLmlkXV0gfHwgMTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ3Jhdml0eSA9IHNlbGYuZ3Jhdml0eTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIG1hc3Nlcy5wdXNoKHNlbGYuZ2V0TWFzcyhub2RlKSk7XG4gICAgICAgICAgICAgICAgbm9kZVN0cmVuZ3Rocy5wdXNoKHNlbGYubm9kZVN0cmVuZ3RoKG5vZGUpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGYuZGVncmVlc1tpXSlcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWdyZWVzW2ldID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbm9kZUdyYXZpdHkgPSBbY2VudGVyWzBdLCBjZW50ZXJbMV0sIGdyYXZpdHldO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmdldENlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21DZW50ZXIgPSBzZWxmLmdldENlbnRlcihub2RlLCBzZWxmLmRlZ3JlZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VzdG9tQ2VudGVyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpc051bWJlcihjdXN0b21DZW50ZXJbMF0pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpc051bWJlcihjdXN0b21DZW50ZXJbMV0pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpc051bWJlcihjdXN0b21DZW50ZXJbMl0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlR3Jhdml0eSA9IGN1c3RvbUNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjZW50ZXJYcy5wdXNoKG5vZGVHcmF2aXR5WzBdKTtcbiAgICAgICAgICAgICAgICBjZW50ZXJZcy5wdXNoKG5vZGVHcmF2aXR5WzFdKTtcbiAgICAgICAgICAgICAgICBjZW50ZXJHcmF2aXRpZXMucHVzaChub2RlR3Jhdml0eVsyXSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGUuZngpICYmIGlzTnVtYmVyKG5vZGUuZnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZ4cy5wdXNoKG5vZGUuZnggfHwgMC4wMDEpO1xuICAgICAgICAgICAgICAgICAgICBmeXMucHVzaChub2RlLmZ5IHx8IDAuMDAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZ4cy5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICBmeXMucHVzaCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIOavj+S4quiKgueCueeahOmineWkluWxnuaAp+WNoOS4pOS4quaVsOe7hOWQhOS4gOagvO+8jG5vZGVBdHRyaWJ1dGVBcnJheTEg5Lit5piv77yabWFzcywgZGVncmVlLCBub2RlU3Rlcm5ndGgsIDBcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBdHRyaWJ1dGVBcnJheTEgPSBhcnJheVRvVGV4dHVyZURhdGEoW1xuICAgICAgICAgICAgICAgIG1hc3NlcyxcbiAgICAgICAgICAgICAgICBzZWxmLmRlZ3JlZXMsXG4gICAgICAgICAgICAgICAgbm9kZVN0cmVuZ3RocyxcbiAgICAgICAgICAgICAgICBmeHNcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgLy8gbm9kZUF0dHJpYnV0ZUFycmF5MiDkuK3mmK/vvJpjZW50ZXJYLCBjZW50ZXJZLCBncmF2aXR5LCAwLFxuICAgICAgICAgICAgY29uc3Qgbm9kZUF0dHJpYnV0ZUFycmF5MiA9IGFycmF5VG9UZXh0dXJlRGF0YShbXG4gICAgICAgICAgICAgICAgY2VudGVyWHMsXG4gICAgICAgICAgICAgICAgY2VudGVyWXMsXG4gICAgICAgICAgICAgICAgY2VudGVyR3Jhdml0aWVzLFxuICAgICAgICAgICAgICAgIGZ5c1xuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBjb25zdCB3b3JrZXJFbmFibGVkID0gc2VsZi53b3JrZXJFbmFibGVkO1xuICAgICAgICAgICAgbGV0IHdvcmxkO1xuICAgICAgICAgICAgaWYgKHdvcmtlckVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB3b3JsZCA9IFdvcmxkLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGNhbnZhcyxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydENvbXB1dGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgd29ybGQgPSBXb3JsZC5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICBlbmdpbmVPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0Q29tcHV0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPOiDmnIDnu4jnmoTpooTnvJbor5Hku6PnoIHmlL7lhaXliLAgZ0ZvcmNlU2hhZGVyLnRzIOS4reebtOaOpeW8leWFpe+8jOS4jeWGjemcgOimgeS4i+mdouS4ieihjFxuICAgICAgICAgICAgLy8gY29uc3QgY29tcGlsZXIgPSBuZXcgQ29tcGlsZXIoKTtcbiAgICAgICAgICAgIC8vIGNvbnN0IGdGb3JjZUJ1bmRsZSA9IGNvbXBpbGVyLmNvbXBpbGVCdW5kbGUoZ0ZvcmNlQ29kZSk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhnRm9yY2VCdW5kbGUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBjb25zdCBvbkxheW91dEVuZCA9IHNlbGYub25MYXlvdXRFbmQ7XG4gICAgICAgICAgICBjb25zdCBpbml0UHJldmlvdXNEYXRhID0gW107XG4gICAgICAgICAgICBub2Rlc0VkZ2VzQXJyYXkuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpbml0UHJldmlvdXNEYXRhLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGluaXRQcmV2aW91c0RhdGEucHVzaCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGtlcm5lbEdGb3JjZSA9IHdvcmxkXG4gICAgICAgICAgICAgICAgLmNyZWF0ZUtlcm5lbChnRm9yY2VCdW5kbGUpXG4gICAgICAgICAgICAgICAgLnNldERpc3BhdGNoKFtudW1QYXJ0aWNsZXMsIDEsIDFdKVxuICAgICAgICAgICAgICAgIC5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICB1X0RhdGE6IG5vZGVzRWRnZXNBcnJheSxcbiAgICAgICAgICAgICAgICB1X2RhbXBpbmc6IHNlbGYuZGFtcGluZyxcbiAgICAgICAgICAgICAgICB1X21heFNwZWVkOiBzZWxmLm1heFNwZWVkLFxuICAgICAgICAgICAgICAgIHVfbWluTW92ZW1lbnQ6IHNlbGYubWluTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgdV9jb3Vsb21iRGlzU2NhbGU6IHNlbGYuY291bG9tYkRpc1NjYWxlLFxuICAgICAgICAgICAgICAgIHVfZmFjdG9yOiBzZWxmLmZhY3RvcixcbiAgICAgICAgICAgICAgICB1X05vZGVBdHRyaWJ1dGVBcnJheTE6IG5vZGVBdHRyaWJ1dGVBcnJheTEsXG4gICAgICAgICAgICAgICAgdV9Ob2RlQXR0cmlidXRlQXJyYXkyOiBub2RlQXR0cmlidXRlQXJyYXkyLFxuICAgICAgICAgICAgICAgIE1BWF9FREdFX1BFUl9WRVJURVg6IG1heEVkZ2VQZXJWZXRleCxcbiAgICAgICAgICAgICAgICBWRVJURVhfQ09VTlQ6IG51bVBhcnRpY2xlcyxcbiAgICAgICAgICAgICAgICB1X0F2ZU1vdmVtZW50OiBpbml0UHJldmlvdXNEYXRhLFxuICAgICAgICAgICAgICAgIHVfaW50ZXJ2YWw6IHNlbGYuaW50ZXJ2YWwgLy8g5q+P5qyh6L+t5Luj5pu05paw77yM6aaW5qyh6K6+572u5Li6IGludGVydmFs77yM5ZyoIG9uSXRlcmF0aW9uQ29tcGxldGVkIOS4reabtOaWsFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBjb25zdCBhdmVNb3ZlbWVudEJ1bmRsZSA9IGNvbXBpbGVyLmNvbXBpbGVCdW5kbGUoYXZlTW92ZW1lbnRDb2RlKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGF2ZU1vdmVtZW50QnVuZGxlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgY29uc3Qga2VybmVsQXZlTW92ZW1lbnQgPSB3b3JsZFxuICAgICAgICAgICAgICAgIC5jcmVhdGVLZXJuZWwoYXZlTW92ZW1lbnRCdW5kbGUpXG4gICAgICAgICAgICAgICAgLnNldERpc3BhdGNoKFsxLCAxLCAxXSlcbiAgICAgICAgICAgICAgICAuc2V0QmluZGluZyh7XG4gICAgICAgICAgICAgICAgdV9EYXRhOiBub2Rlc0VkZ2VzQXJyYXksXG4gICAgICAgICAgICAgICAgVkVSVEVYX0NPVU5UOiBudW1QYXJ0aWNsZXMsXG4gICAgICAgICAgICAgICAgdV9BdmVNb3ZlbWVudDogWzAsIDAsIDAsIDBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIOaJp+ihjOi/reS7o1xuICAgICAgICAgICAgLy8gbGV0IG1pZFJlcyA9IG5vZGVzRWRnZXNBcnJheTtcbiAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGUgPSAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhJdGVyYXRpb247IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiDkvLzkuY7pg73mnaXoh6oga2VybmVsR0ZvcmNlIOaYr+S4gOS4quW8leeUqFxuICAgICAgICAgICAgICAgICAgICAvLyDlvZPliY3lnZDmoIfkvZzkuLrkuIvkuIDmrKHov63ku6PnmoQgUHJldmlvdXNEYXRhXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgIGtlcm5lbEF2ZU1vdmVtZW50LnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgdV9QcmV2aW91c0RhdGE6IGtlcm5lbEdGb3JjZVxuICAgICAgICAgICAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGtlcm5lbEdGb3JjZS5leGVjdXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIG1pZFJlcyA9IGF3YWl0IGtlcm5lbEdGb3JjZS5nZXRPdXRwdXQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8g5q+P5qyh6L+t5Luj5a6M5oiQ5ZCOXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+W5s+Wdh+S9jeenu++8jOeUqOS6juaPkOWJjee7iOatoui/reS7o1xuICAgICAgICAgICAgICAgICAgICBrZXJuZWxBdmVNb3ZlbWVudC5zZXRCaW5kaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVfRGF0YToga2VybmVsR0ZvcmNlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgICAgICAgICAgICB5aWVsZCBrZXJuZWxBdmVNb3ZlbWVudC5leGVjdXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIOabtOaWsOihsOWHj+WHveaVsFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGVwSW50ZXJ2YWwgPSBNYXRoLm1heCgwLjAyLCBzZWxmLmludGVydmFsIC0gaSAqIDAuMDAyKTtcbiAgICAgICAgICAgICAgICAgICAga2VybmVsR0ZvcmNlLnNldEJpbmRpbmcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnRlcnZhbDogc3RlcEludGVydmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdV9BdmVNb3ZlbWVudDoga2VybmVsQXZlTW92ZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsUGFydGljbGVEYXRhID0geWllbGQga2VybmVsR0ZvcmNlLmdldE91dHB1dCgpO1xuICAgICAgICAgICAgICAgIC8vIOaJgOaciei/reS7o+WujOaIkOWQjlxuICAgICAgICAgICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5Lyg6YCS5pWw5o2u57uZ5Li757q/56iLXG4gICAgICAgICAgICAgICAgICAgIGN0eC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBMQVlPVVRfTUVTU0FHRS5HUFVFTkQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhFZGdlRGF0YTogZmluYWxQYXJ0aWNsZURhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkZ2VJbmRleEJ1ZmZlckRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeCA9IGZpbmFsUGFydGljbGVEYXRhWzQgKiBpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBmaW5hbFBhcnRpY2xlRGF0YVs0ICogaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS54ID0geDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUueSA9IHk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgICAgIG9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHlpZWxkIGV4ZWN1dGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiBcImdGb3JjZS1ncHVcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nRm9yY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForce.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForceShader.js": /*!*********************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForceShader.js ***! \*********************************************************************************************/ /*! exports provided: gForceCode, gForceBundle, aveMovementCode, aveMovementBundle */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gForceCode\", function() { return gForceCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gForceBundle\", function() { return gForceBundle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"aveMovementCode\", function() { return aveMovementCode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"aveMovementBundle\", function() { return aveMovementBundle; });\nconst gForceCode = `\nimport { globalInvocationID } from 'g-webgpu';\n\nconst MAX_EDGE_PER_VERTEX;\nconst VERTEX_COUNT;\nconst SHIFT_20 = 1048576;\n\n@numthreads(1, 1, 1)\nclass GGForce {\n @in @out\n u_Data: vec4[];\n\n @in\n u_damping: float;\n \n @in\n u_maxSpeed: float;\n\n @in\n u_minMovement: float;\n\n @in\n u_AveMovement: vec4[];\n\n @in\n u_coulombDisScale: float;\n\n @in\n u_factor: float;\n\n @in\n u_NodeAttributeArray1: vec4[];\n\n @in\n u_NodeAttributeArray2: vec4[];\n\n @in\n u_interval: float;\n\n unpack_float(packedValue: float): ivec2 {\n const packedIntValue = int(packedValue);\n const v0 = packedIntValue / SHIFT_20;\n return [v0, packedIntValue - v0 * SHIFT_20];\n }\n\n calcRepulsive(i: int, currentNode: vec4): vec2 {\n let ax = 0, ay = 0;\n for (let j: int = 0; j < VERTEX_COUNT; j++) {\n if (i != j) {\n const nextNode = this.u_Data[j];\n const vx = currentNode[0] - nextNode[0];\n const vy = currentNode[1] - nextNode[1];\n const dist = sqrt(vx * vx + vy * vy) + 0.01;\n const n_dist = (dist + 0.1) * this.u_coulombDisScale;\n const direx = vx / dist;\n const direy = vy / dist;\n const attributesi = this.u_NodeAttributeArray1[i];\n const attributesj = this.u_NodeAttributeArray1[j];\n const massi = attributesi[0];\n const nodeStrengthi = attributesi[2];\n const nodeStrengthj = attributesj[2];\n const nodeStrength = (nodeStrengthi + nodeStrengthj) / 2;\n // const param = nodeStrength * this.u_factor / (n_dist * n_dist * massi);\n const param = nodeStrength * this.u_factor / (n_dist * n_dist);\n ax += direx * param;\n ay += direy * param;\n }\n }\n return [ax, ay];\n }\n\n calcGravity(i: int, currentNode: vec4, attributes2: vec4): vec2 {\n // note: attributes2 = [centerX, centerY, gravity, 0]\n\n const vx = currentNode[0] - attributes2[0];\n const vy = currentNode[1] - attributes2[1];\n \n const ax = vx * attributes2[2];\n const ay = vy * attributes2[2];\n \n return [ax, ay];\n }\n\n calcAttractive(i: int, currentNode: vec4, attributes1: vec4): vec2 {\n // note: attributes1 = [mass, degree, nodeSterngth, 0]\n\n const mass = attributes1[0];\n let ax = 0, ay = 0;\n // const arr_offset = int(floor(currentNode[2] + 0.5));\n // const length = int(floor(currentNode[3] + 0.5));\n\n const compressed = this.unpack_float(currentNode[2]);\n const length = compressed[0];\n const arr_offset = compressed[1];\n\n const node_buffer: vec4;\n for (let p: int = 0; p < MAX_EDGE_PER_VERTEX; p++) {\n if (p >= length) break;\n const arr_idx = arr_offset + 4 * p; // i 节点的第 p 条边开始的小格子位置\n const buf_offset = arr_idx - arr_idx / 4 * 4;\n if (p == 0 || buf_offset == 0) {\n node_buffer = this.u_Data[int(arr_idx / 4)]; // 大格子,大格子位置=小个子位置 / 4,\n }\n\n let float_j: float = node_buffer[0];\n\n const nextNode = this.u_Data[int(float_j)];\n const vx = nextNode[0] - currentNode[0];\n const vy = nextNode[1] - currentNode[1];\n const dist = sqrt(vx * vx + vy * vy) + 0.01;\n const direx = vx / dist;\n const direy = vy / dist;\n const edgeLength = node_buffer[1];\n const edgeStrength = node_buffer[2];\n const diff: float = edgeLength - dist;//edgeLength\n // const param = diff * this.u_stiffness / mass; //\n const param = diff * edgeStrength / mass; // \n ax -= direx * param;\n ay -= direy * param;\n }\n return [ax, ay];\n }\n\n @main\n compute() {\n const i = globalInvocationID.x;\n const currentNode = this.u_Data[i];\n const movement = u_AveMovement[0];\n let ax = 0, ay = 0;\n\n if (i >= VERTEX_COUNT || movement.x < u_minMovement) {\n this.u_Data[i] = currentNode;\n return;\n }\n\n // 每个节点属性占两个数组中各一格\n // [mass, degree, nodeStrength, fx]\n const nodeAttributes1 = this.u_NodeAttributeArray1[i];\n // [centerX, centerY, centerGravity, fy]\n const nodeAttributes2 = this.u_NodeAttributeArray2[i];\n\n // repulsive\n const repulsive = this.calcRepulsive(i, currentNode);\n ax += repulsive[0];\n ay += repulsive[1];\n\n // attractive\n const attractive = this.calcAttractive(i, currentNode, nodeAttributes1);\n ax += attractive[0];\n ay += attractive[1];\n\n // gravity\n const gravity = this.calcGravity(i, currentNode, nodeAttributes2);\n ax -= gravity[0];\n ay -= gravity[1];\n\n // speed\n const param = this.u_interval * this.u_damping;\n let vx = ax * param;\n let vy = ay * param;\n const vlength = sqrt(vx * vx + vy * vy) + 0.0001;\n if (vlength > this.u_maxSpeed) {\n const param2 = this.u_maxSpeed / vlength;\n vx = param2 * vx;\n vy = param2 * vy;\n }\n\n // move\n if (nodeAttributes1[3] != 0 && nodeAttributes2[3] != 0) {\n this.u_Data[i] = [\n nodeAttributes1[3],\n nodeAttributes2[3],\n currentNode[2],\n 0\n ];\n } else {\n const distx = vx * this.u_interval;\n const disty = vy * this.u_interval;\n const distLength = sqrt(distx * distx + disty * disty);\n this.u_Data[i] = [\n currentNode[0] + distx,\n currentNode[1] + disty,\n currentNode[2],\n distLength\n ];\n }\n \n // the avarage move distance\n // need to share memory\n \n }\n}\n`;\nconst gForceBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\ntype GWebGPUParams = [[block]] struct {\\\\n [[offset 0]] u_damping : f32;\\\\n [[offset 4]] u_maxSpeed : f32;\\\\n [[offset 8]] u_minMovement : f32;\\\\n \\\\n [[offset 12]] u_coulombDisScale : f32;\\\\n [[offset 16]] u_factor : f32;\\\\n \\\\n \\\\n [[offset 20]] u_interval : f32;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUUniformParams : GWebGPUParams;\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_AveMovement : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\ntype GWebGPUBuffer2 = [[block]] struct {\\\\n [[offset 0]] u_NodeAttributeArray1 : [[stride 16]] array>;\\\\n};\\\\n[[binding 3, set 0]] var gWebGPUBuffer2 : GWebGPUBuffer2;\\\\ntype GWebGPUBuffer3 = [[block]] struct {\\\\n [[offset 0]] u_NodeAttributeArray2 : [[stride 16]] array>;\\\\n};\\\\n[[binding 4, set 0]] var gWebGPUBuffer3 : GWebGPUBuffer3;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn unpack_float(packedValue : f32) -> vec2 {var packedIntValue : i32 = i32(packedValue);\\\\nvar v0 : i32 = packedIntValue / 1048576;\\\\nreturn vec2(v0, packedIntValue - (v0 * 1048576));}\\\\nfn calcRepulsive(i : i32, currentNode : vec4) -> vec2 {var ax : f32 = 0.0;\\\\nvar ay : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {if (i != j) {var nextNode : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nvar vx : f32 = currentNode.x - nextNode.x;\\\\nvar vy : f32 = currentNode.y - nextNode.y;\\\\nvar dist : f32 = std::sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nvar n_dist : f32 = (dist + 0.1) * gWebGPUUniformParams.u_coulombDisScale;\\\\nvar direx : f32 = vx / dist;\\\\nvar direy : f32 = vy / dist;\\\\nvar attributesi : vec4 = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvar attributesj : vec4 = gWebGPUBuffer2.u_NodeAttributeArray1[j];\\\\nvar massi : f32 = attributesi.x;\\\\nvar nodeStrengthi : f32 = attributesi.z;\\\\nvar nodeStrengthj : f32 = attributesj.z;\\\\nvar nodeStrength : f32 = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nvar param : f32 = (nodeStrength * gWebGPUUniformParams.u_factor) / (n_dist * n_dist);\\\\nax = ax + direx * param;\\\\nay = ay + direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nfn calcGravity(i : i32, currentNode : vec4, attributes2 : vec4) -> vec2 {var vx : f32 = currentNode.x - attributes2.x;\\\\nvar vy : f32 = currentNode.y - attributes2.y;\\\\nvar ax : f32 = vx * attributes2.z;\\\\nvar ay : f32 = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nfn calcAttractive(i : i32, currentNode : vec4, attributes1 : vec4) -> vec2 {var mass : f32 = attributes1.x;\\\\nvar ax : f32 = 0.0;\\\\nvar ay : f32 = 0.0;\\\\nvar compressed : vec2 = unpack_float(currentNode.z);\\\\nvar length : i32 = compressed.x;\\\\nvar arr_offset : i32 = compressed.y;\\\\nvar node_buffer : vec4;\\\\nfor (var p : i32 = 0; p < __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX; p = p + 1) {if (p >= length) {break;}\\\\nvar arr_idx : i32 = arr_offset + (4 * p);\\\\nvar buf_offset : i32 = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[i32(arr_idx / 4)];}\\\\nvar float_j : f32 = node_buffer.x;\\\\nvar nextNode : vec4 = gWebGPUBuffer0.u_Data[i32(float_j)];\\\\nvar vx : f32 = nextNode.x - currentNode.x;\\\\nvar vy : f32 = nextNode.y - currentNode.y;\\\\nvar dist : f32 = std::sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nvar direx : f32 = vx / dist;\\\\nvar direy : f32 = vy / dist;\\\\nvar edgeLength : f32 = node_buffer.y;\\\\nvar edgeStrength : f32 = node_buffer.z;\\\\nvar diff : f32 = edgeLength - dist;\\\\nvar param : f32 = (diff * edgeStrength) / mass;\\\\nax = ax - direx * param;\\\\nay = ay - direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nfn main() -> void {var i : i32 = globalInvocationID.x;\\\\nvar currentNode : vec4 = gWebGPUBuffer0.u_Data[i];\\\\nvar movement : vec4 = gWebGPUBuffer1.u_AveMovement[0];\\\\nvar ax : f32 = 0.0;\\\\nvar ay : f32 = 0.0;\\\\nif ((i >= __DefineValuePlaceholder__VERTEX_COUNT) || (movement.x < gWebGPUUniformParams.u_minMovement)) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvar nodeAttributes1 : vec4 = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvar nodeAttributes2 : vec4 = gWebGPUBuffer3.u_NodeAttributeArray2[i];\\\\nvar repulsive : vec2 = calcRepulsive(i, currentNode);\\\\nax = ax + repulsive.x;\\\\nay = ay + repulsive.y;\\\\nvar attractive : vec2 = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax = ax + attractive.x;\\\\nay = ay + attractive.y;\\\\nvar gravity : vec2 = calcGravity(i, currentNode, nodeAttributes2);\\\\nax = ax - gravity.x;\\\\nay = ay - gravity.y;\\\\nvar param : f32 = gWebGPUUniformParams.u_interval * gWebGPUUniformParams.u_damping;\\\\nvar vx : f32 = ax * param;\\\\nvar vy : f32 = ay * param;\\\\nvar vlength : f32 = std::sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > gWebGPUUniformParams.u_maxSpeed) {var param2 : f32 = gWebGPUUniformParams.u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nvar distx : f32 = vx * gWebGPUUniformParams.u_interval;\\\\nvar disty : f32 = vy * gWebGPUUniformParams.u_interval;\\\\nvar distLength : f32 = std::sqrt((distx * distx) + (disty * disty));\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0);}else {gWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength);}\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\nlayout(std140, set = 0, binding = 0) uniform GWebGPUParams {\\\\n float u_damping;\\\\n float u_maxSpeed;\\\\n float u_minMovement;\\\\n \\\\n float u_coulombDisScale;\\\\n float u_factor;\\\\n \\\\n \\\\n float u_interval;\\\\n} gWebGPUUniformParams;\\\\nlayout(std430, set = 0, binding = 1) buffer GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer readonly GWebGPUBuffer1 {\\\\n vec4 u_AveMovement[];\\\\n} gWebGPUBuffer1;\\\\n\\\\nlayout(std430, set = 0, binding = 3) buffer readonly GWebGPUBuffer2 {\\\\n vec4 u_NodeAttributeArray1[];\\\\n} gWebGPUBuffer2;\\\\n\\\\nlayout(std430, set = 0, binding = 4) buffer readonly GWebGPUBuffer3 {\\\\n vec4 u_NodeAttributeArray2[];\\\\n} gWebGPUBuffer3;\\\\n\\\\n\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define SHIFT_20 1048576.0\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nivec2 unpack_float(float packedValue) {int packedIntValue = int(packedValue);\\\\nint v0 = packedIntValue / int(SHIFT_20);\\\\nreturn ivec2(v0, packedIntValue - (v0 * int(SHIFT_20)));}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {float ax = 0.0;\\\\nfloat ay = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = gWebGPUBuffer0.u_Data[j];\\\\nfloat vx = currentNode.x - nextNode.x;\\\\nfloat vy = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat n_dist = (dist + 0.1) * gWebGPUUniformParams.u_coulombDisScale;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nvec4 attributesi = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvec4 attributesj = gWebGPUBuffer2.u_NodeAttributeArray1[j];\\\\nfloat massi = attributesi.x;\\\\nfloat nodeStrengthi = attributesi.z;\\\\nfloat nodeStrengthj = attributesj.z;\\\\nfloat nodeStrength = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nfloat param = (nodeStrength * gWebGPUUniformParams.u_factor) / (n_dist * n_dist);\\\\nax += direx * param;\\\\nay += direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcGravity(int i, vec4 currentNode, vec4 attributes2) {float vx = currentNode.x - attributes2.x;\\\\nfloat vy = currentNode.y - attributes2.y;\\\\nfloat ax = vx * attributes2.z;\\\\nfloat ay = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcAttractive(int i, vec4 currentNode, vec4 attributes1) {float mass = attributes1.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nivec2 compressed = unpack_float(currentNode.z);\\\\nint length = compressed.x;\\\\nint arr_offset = compressed.y;\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + (4 * p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = gWebGPUBuffer0.u_Data[int(arr_idx / 4)];}\\\\nfloat float_j = node_buffer.x;\\\\nvec4 nextNode = gWebGPUBuffer0.u_Data[int(float_j)];\\\\nfloat vx = nextNode.x - currentNode.x;\\\\nfloat vy = nextNode.y - currentNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nfloat edgeLength = node_buffer.y;\\\\nfloat edgeStrength = node_buffer.z;\\\\nfloat diff = edgeLength - dist;\\\\nfloat param = (diff * edgeStrength) / mass;\\\\nax -= direx * param;\\\\nay -= direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nvoid main() {int i = globalInvocationID.x;\\\\nvec4 currentNode = gWebGPUBuffer0.u_Data[i];\\\\nvec4 movement = gWebGPUBuffer1.u_AveMovement[0];\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nif ((i >= VERTEX_COUNT) || (movement.x < gWebGPUUniformParams.u_minMovement)) {gWebGPUBuffer0.u_Data[i] = currentNode;\\\\nreturn ;}\\\\nvec4 nodeAttributes1 = gWebGPUBuffer2.u_NodeAttributeArray1[i];\\\\nvec4 nodeAttributes2 = gWebGPUBuffer3.u_NodeAttributeArray2[i];\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\nax += repulsive.x;\\\\nay += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax += attractive.x;\\\\nay += attractive.y;\\\\nvec2 gravity = calcGravity(i, currentNode, nodeAttributes2);\\\\nax -= gravity.x;\\\\nay -= gravity.y;\\\\nfloat param = gWebGPUUniformParams.u_interval * gWebGPUUniformParams.u_damping;\\\\nfloat vx = ax * param;\\\\nfloat vy = ay * param;\\\\nfloat vlength = sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > gWebGPUUniformParams.u_maxSpeed) {float param2 = gWebGPUUniformParams.u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nfloat distx = vx * gWebGPUUniformParams.u_interval;\\\\nfloat disty = vy * gWebGPUUniformParams.u_interval;\\\\nfloat distLength = sqrt((distx * distx) + (disty * disty));\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gWebGPUBuffer0.u_Data[i] = vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0);}else {gWebGPUBuffer0.u_Data[i] = vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength);}}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define MAX_EDGE_PER_VERTEX __DefineValuePlaceholder__MAX_EDGE_PER_VERTEX\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n#define SHIFT_20 1048576.0\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_damping;\\\\nuniform float u_maxSpeed;\\\\nuniform float u_minMovement;\\\\nuniform sampler2D u_AveMovement;\\\\nuniform vec2 u_AveMovementSize;\\\\nvec4 getDatau_AveMovement(vec2 address2D) {\\\\n return vec4(texture2D(u_AveMovement, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AveMovement(float address1D) {\\\\n return getDatau_AveMovement(addrTranslation_1Dto2D(address1D, u_AveMovementSize));\\\\n}\\\\nvec4 getDatau_AveMovement(int address1D) {\\\\n return getDatau_AveMovement(float(address1D));\\\\n}\\\\nuniform float u_coulombDisScale;\\\\nuniform float u_factor;\\\\nuniform sampler2D u_NodeAttributeArray1;\\\\nuniform vec2 u_NodeAttributeArray1Size;\\\\nvec4 getDatau_NodeAttributeArray1(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributeArray1, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributeArray1(float address1D) {\\\\n return getDatau_NodeAttributeArray1(addrTranslation_1Dto2D(address1D, u_NodeAttributeArray1Size));\\\\n}\\\\nvec4 getDatau_NodeAttributeArray1(int address1D) {\\\\n return getDatau_NodeAttributeArray1(float(address1D));\\\\n}\\\\nuniform sampler2D u_NodeAttributeArray2;\\\\nuniform vec2 u_NodeAttributeArray2Size;\\\\nvec4 getDatau_NodeAttributeArray2(vec2 address2D) {\\\\n return vec4(texture2D(u_NodeAttributeArray2, address2D).rgba);\\\\n}\\\\nvec4 getDatau_NodeAttributeArray2(float address1D) {\\\\n return getDatau_NodeAttributeArray2(addrTranslation_1Dto2D(address1D, u_NodeAttributeArray2Size));\\\\n}\\\\nvec4 getDatau_NodeAttributeArray2(int address1D) {\\\\n return getDatau_NodeAttributeArray2(float(address1D));\\\\n}\\\\nuniform float u_interval;\\\\nivec2 unpack_float(float packedValue) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint packedIntValue = int(packedValue);\\\\nint v0 = packedIntValue / int(SHIFT_20);\\\\nreturn ivec2(v0, packedIntValue - (v0 * int(SHIFT_20)));}\\\\nvec2 calcRepulsive(int i, vec4 currentNode) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {if (i != j) {vec4 nextNode = getDatau_Data(j);\\\\nfloat vx = currentNode.x - nextNode.x;\\\\nfloat vy = currentNode.y - nextNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat n_dist = (dist + 0.1) * u_coulombDisScale;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nvec4 attributesi = getDatau_NodeAttributeArray1(i);\\\\nvec4 attributesj = getDatau_NodeAttributeArray1(j);\\\\nfloat massi = attributesi.x;\\\\nfloat nodeStrengthi = attributesi.z;\\\\nfloat nodeStrengthj = attributesj.z;\\\\nfloat nodeStrength = (nodeStrengthi + nodeStrengthj) / 2.0;\\\\nfloat param = (nodeStrength * u_factor) / (n_dist * n_dist);\\\\nax += direx * param;\\\\nay += direy * param;}}\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcGravity(int i, vec4 currentNode, vec4 attributes2) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat vx = currentNode.x - attributes2.x;\\\\nfloat vy = currentNode.y - attributes2.y;\\\\nfloat ax = vx * attributes2.z;\\\\nfloat ay = vy * attributes2.z;\\\\nreturn vec2(ax, ay);}\\\\nvec2 calcAttractive(int i, vec4 currentNode, vec4 attributes1) {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat mass = attributes1.x;\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nivec2 compressed = unpack_float(currentNode.z);\\\\nint length = compressed.x;\\\\nint arr_offset = compressed.y;\\\\nvec4 node_buffer;\\\\nfor (int p = 0; p < MAX_EDGE_PER_VERTEX; p++) {if (p >= length) {break;}\\\\nint arr_idx = arr_offset + (4 * p);\\\\nint buf_offset = arr_idx - ((arr_idx / 4) * 4);\\\\nif ((p == 0) || (buf_offset == 0)) {node_buffer = getDatau_Data(int(arr_idx / 4));}\\\\nfloat float_j = node_buffer.x;\\\\nvec4 nextNode = getDatau_Data(int(float_j));\\\\nfloat vx = nextNode.x - currentNode.x;\\\\nfloat vy = nextNode.y - currentNode.y;\\\\nfloat dist = sqrt((vx * vx) + (vy * vy)) + 0.01;\\\\nfloat direx = vx / dist;\\\\nfloat direy = vy / dist;\\\\nfloat edgeLength = node_buffer.y;\\\\nfloat edgeStrength = node_buffer.z;\\\\nfloat diff = edgeLength - dist;\\\\nfloat param = (diff * edgeStrength) / mass;\\\\nax -= direx * param;\\\\nay -= direy * param;}\\\\nreturn vec2(ax, ay);}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nint i = globalInvocationID.x;\\\\nvec4 currentNode = getDatau_Data(i);\\\\nvec4 movement = getDatau_AveMovement(0.0);\\\\nfloat ax = 0.0;\\\\nfloat ay = 0.0;\\\\nif ((i >= VERTEX_COUNT) || (movement.x < u_minMovement)) {gl_FragColor = vec4(currentNode);\\\\nreturn ;}\\\\nvec4 nodeAttributes1 = getDatau_NodeAttributeArray1(i);\\\\nvec4 nodeAttributes2 = getDatau_NodeAttributeArray2(i);\\\\nvec2 repulsive = calcRepulsive(i, currentNode);\\\\nax += repulsive.x;\\\\nay += repulsive.y;\\\\nvec2 attractive = calcAttractive(i, currentNode, nodeAttributes1);\\\\nax += attractive.x;\\\\nay += attractive.y;\\\\nvec2 gravity = calcGravity(i, currentNode, nodeAttributes2);\\\\nax -= gravity.x;\\\\nay -= gravity.y;\\\\nfloat param = u_interval * u_damping;\\\\nfloat vx = ax * param;\\\\nfloat vy = ay * param;\\\\nfloat vlength = sqrt((vx * vx) + (vy * vy)) + 0.0001;\\\\nif (vlength > u_maxSpeed) {float param2 = u_maxSpeed / vlength;\\\\nvx = param2 * vx;\\\\nvy = param2 * vy;}\\\\nfloat distx = vx * u_interval;\\\\nfloat disty = vy * u_interval;\\\\nfloat distLength = sqrt((distx * distx) + (disty * disty));\\\\nif ((nodeAttributes1.w != 0.0) && (nodeAttributes2.w != 0.0)) {gl_FragColor = vec4(vec4(nodeAttributes1.w, nodeAttributes2.w, currentNode.z, 0.0));}else {gl_FragColor = vec4(vec4(currentNode.x + distx, currentNode.y + disty, currentNode.z, distLength));}if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"MAX_EDGE_PER_VERTEX\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true},{\"name\":\"SHIFT_20\",\"type\":\"Float\",\"value\":1048576,\"runtime\":false}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_damping\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_maxSpeed\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_minMovement\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AveMovement\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_coulombDisScale\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_factor\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributeArray1\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_NodeAttributeArray2\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_interval\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_Data\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\nconst aveMovementCode = `\nconst VERTEX_COUNT;\n@numthreads(1, 1, 1)\nclass CalcAveMovement {\n @in\n u_Data: vec4[];\n @in\n u_iter: float;\n @in @out\n u_AveMovement: vec4[];\n @main\n compute() {\n let movement = 0;\n for (let j: int = 0; j < VERTEX_COUNT; j++) {\n const vertex = this.u_Data[j];\n movement += vertex[3];\n }\n movement = movement / float(VERTEX_COUNT);\n this.u_AveMovement[0] = [movement, 0, 0, 0];\n }\n}\n`;\nconst aveMovementBundle = `{\"shaders\":{\"WGSL\":\"import \\\\\"GLSL.std.450\\\\\" as std;\\\\n\\\\n\\\\n# var gWebGPUDebug : bool = false;\\\\n# var gWebGPUDebugOutput : vec4 = vec4(0.0);\\\\n\\\\n[[builtin global_invocation_id]] var globalInvocationID : vec3;\\\\n# [[builtin work_group_size]] var workGroupSize : vec3;\\\\n# [[builtin work_group_id]] var workGroupID : vec3;\\\\n[[builtin local_invocation_id]] var localInvocationID : vec3;\\\\n# [[builtin num_work_groups]] var numWorkGroups : vec3;\\\\n[[builtin local_invocation_idx]] var localInvocationIndex : u32;\\\\n\\\\ntype GWebGPUParams = [[block]] struct {\\\\n [[offset 0]] u_iter : f32;\\\\n};\\\\n[[binding 0, set 0]] var gWebGPUUniformParams : GWebGPUParams;\\\\ntype GWebGPUBuffer0 = [[block]] struct {\\\\n [[offset 0]] u_Data : [[stride 16]] array>;\\\\n};\\\\n[[binding 1, set 0]] var gWebGPUBuffer0 : GWebGPUBuffer0;\\\\ntype GWebGPUBuffer1 = [[block]] struct {\\\\n [[offset 0]] u_AveMovement : [[stride 16]] array>;\\\\n};\\\\n[[binding 2, set 0]] var gWebGPUBuffer1 : GWebGPUBuffer1;\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\nfn main() -> void {var movement : f32 = 0.0;\\\\nfor (var j : i32 = 0; j < __DefineValuePlaceholder__VERTEX_COUNT; j = j + 1) {var vertex : vec4 = gWebGPUBuffer0.u_Data[j];\\\\nmovement = movement + vertex.w;}\\\\nmovement = movement / f32(__DefineValuePlaceholder__VERTEX_COUNT);\\\\ngWebGPUBuffer1.u_AveMovement[0] = vec4(movement, 0.0, 0.0, 0.0);\\\\nreturn;}\\\\n\\\\nentry_point compute as \\\\\"main\\\\\" = main;\\\\n\",\"GLSL450\":\"\\\\n\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\nivec3 globalInvocationID = ivec3(gl_GlobalInvocationID);\\\\nivec3 workGroupSize = ivec3(1,1,1);\\\\nivec3 workGroupID = ivec3(gl_WorkGroupID);\\\\nivec3 localInvocationID = ivec3(gl_LocalInvocationID);\\\\nivec3 numWorkGroups = ivec3(gl_NumWorkGroups);\\\\nint localInvocationIndex = int(gl_LocalInvocationIndex);\\\\n\\\\nlayout(std140, set = 0, binding = 0) uniform GWebGPUParams {\\\\n float u_iter;\\\\n} gWebGPUUniformParams;\\\\nlayout(std430, set = 0, binding = 1) buffer readonly GWebGPUBuffer0 {\\\\n vec4 u_Data[];\\\\n} gWebGPUBuffer0;\\\\n\\\\nlayout(std430, set = 0, binding = 2) buffer GWebGPUBuffer1 {\\\\n vec4 u_AveMovement[];\\\\n} gWebGPUBuffer1;\\\\n\\\\n\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\nlayout (\\\\n local_size_x = 1,\\\\n local_size_y = 1,\\\\n local_size_z = 1\\\\n) in;\\\\n\\\\n\\\\n\\\\nvoid main() {float movement = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 vertex = gWebGPUBuffer0.u_Data[j];\\\\nmovement += vertex.w;}\\\\nmovement = movement / float(VERTEX_COUNT);\\\\ngWebGPUBuffer1.u_AveMovement[0] = vec4(movement, 0.0, 0.0, 0.0);}\\\\n\",\"GLSL100\":\"\\\\n\\\\nfloat epsilon = 0.00001;\\\\nvec2 addrTranslation_1Dto2D(float address1D, vec2 texSize) {\\\\n vec2 conv_const = vec2(1.0 / texSize.x, 1.0 / (texSize.x * texSize.y));\\\\n vec2 normAddr2D = float(address1D) * conv_const;\\\\n return vec2(fract(normAddr2D.x + epsilon), normAddr2D.y);\\\\n}\\\\n\\\\nvoid barrier() {}\\\\n \\\\n\\\\nuniform vec2 u_OutputTextureSize;\\\\nuniform int u_OutputTexelCount;\\\\nvarying vec2 v_TexCoord;\\\\n\\\\nbool gWebGPUDebug = false;\\\\nvec4 gWebGPUDebugOutput = vec4(0.0);\\\\n\\\\n#define VERTEX_COUNT __DefineValuePlaceholder__VERTEX_COUNT\\\\n\\\\nuniform sampler2D u_Data;\\\\nuniform vec2 u_DataSize;\\\\nvec4 getDatau_Data(vec2 address2D) {\\\\n return vec4(texture2D(u_Data, address2D).rgba);\\\\n}\\\\nvec4 getDatau_Data(float address1D) {\\\\n return getDatau_Data(addrTranslation_1Dto2D(address1D, u_DataSize));\\\\n}\\\\nvec4 getDatau_Data(int address1D) {\\\\n return getDatau_Data(float(address1D));\\\\n}\\\\nuniform float u_iter;\\\\nuniform sampler2D u_AveMovement;\\\\nuniform vec2 u_AveMovementSize;\\\\nvec4 getDatau_AveMovement(vec2 address2D) {\\\\n return vec4(texture2D(u_AveMovement, address2D).rgba);\\\\n}\\\\nvec4 getDatau_AveMovement(float address1D) {\\\\n return getDatau_AveMovement(addrTranslation_1Dto2D(address1D, u_AveMovementSize));\\\\n}\\\\nvec4 getDatau_AveMovement(int address1D) {\\\\n return getDatau_AveMovement(float(address1D));\\\\n}\\\\nvoid main() {\\\\nivec3 workGroupSize = ivec3(1, 1, 1);\\\\nivec3 numWorkGroups = ivec3(1, 1, 1); \\\\nint globalInvocationIndex = int(floor(v_TexCoord.x * u_OutputTextureSize.x))\\\\n + int(floor(v_TexCoord.y * u_OutputTextureSize.y)) * int(u_OutputTextureSize.x);\\\\nint workGroupIDLength = globalInvocationIndex / (workGroupSize.x * workGroupSize.y * workGroupSize.z);\\\\nivec3 workGroupID = ivec3(workGroupIDLength / numWorkGroups.y / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.z, workGroupIDLength / numWorkGroups.x / numWorkGroups.y);\\\\nint localInvocationIDZ = globalInvocationIndex / (workGroupSize.x * workGroupSize.y);\\\\nint localInvocationIDY = (globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y) / workGroupSize.x;\\\\nint localInvocationIDX = globalInvocationIndex - localInvocationIDZ * workGroupSize.x * workGroupSize.y - localInvocationIDY * workGroupSize.x;\\\\nivec3 localInvocationID = ivec3(localInvocationIDX, localInvocationIDY, localInvocationIDZ);\\\\nivec3 globalInvocationID = workGroupID * workGroupSize + localInvocationID;\\\\nint localInvocationIndex = localInvocationID.z * workGroupSize.x * workGroupSize.y\\\\n + localInvocationID.y * workGroupSize.x + localInvocationID.x;\\\\nfloat movement = 0.0;\\\\nfor (int j = 0; j < VERTEX_COUNT; j++) {vec4 vertex = getDatau_Data(j);\\\\nmovement += vertex.w;}\\\\nmovement = movement / float(VERTEX_COUNT);\\\\ngl_FragColor = vec4(vec4(movement, 0.0, 0.0, 0.0));if (gWebGPUDebug) {\\\\n gl_FragColor = gWebGPUDebugOutput;\\\\n}}\\\\n\"},\"context\":{\"name\":\"\",\"dispatch\":[1,1,1],\"threadGroupSize\":[1,1,1],\"maxIteration\":1,\"defines\":[{\"name\":\"VERTEX_COUNT\",\"type\":\"Float\",\"runtime\":true}],\"uniforms\":[{\"name\":\"u_Data\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_iter\",\"type\":\"Float\",\"storageClass\":\"Uniform\",\"readonly\":true,\"writeonly\":false,\"size\":[1,1]},{\"name\":\"u_AveMovement\",\"type\":\"vec4[]\",\"storageClass\":\"StorageBuffer\",\"readonly\":false,\"writeonly\":false,\"size\":[1,1]}],\"globalDeclarations\":[],\"output\":{\"name\":\"u_AveMovement\",\"size\":[1,1],\"length\":1},\"needPingpong\":true}}`;\n//# sourceMappingURL=gForceShader.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ3B1L2dGb3JjZVNoYWRlci5qcz9kZTNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQLFFBQVEscUJBQXFCOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLHlCQUF5QjtBQUNqRDtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUMsc0RBQXNEO0FBQ3RELCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTyx1QkFBdUIsV0FBVyx5Q0FBeUMsMkNBQTJDLHlEQUF5RCw4RUFBOEUsbUVBQW1FLCtEQUErRCx5RUFBeUUsbUVBQW1FLHVFQUF1RSw2Q0FBNkMsa0NBQWtDLG1DQUFtQyxzQ0FBc0MsZ0RBQWdELGtDQUFrQyw4Q0FBOEMsS0FBSywwRUFBMEUsMkNBQTJDLDBEQUEwRCxLQUFLLDRFQUE0RSwyQ0FBMkMsaUVBQWlFLEtBQUssNEVBQTRFLDJDQUEyQyx5RUFBeUUsS0FBSyw0RUFBNEUsMkNBQTJDLHlFQUF5RSxLQUFLLDRFQUE0RSx1R0FBdUcsNENBQTRDLDJDQUEyQywwREFBMEQsb0VBQW9FLG1CQUFtQixzQkFBc0Isd0JBQXdCLDRDQUE0QyxhQUFhLGFBQWEsb0RBQW9ELDZDQUE2Qyw2Q0FBNkMsNERBQTRELDRFQUE0RSwrQkFBK0IsK0JBQStCLHlFQUF5RSx5RUFBeUUsbUNBQW1DLDJDQUEyQywyQ0FBMkMsa0VBQWtFLHdGQUF3RiwyQkFBMkIsNkJBQTZCLDZCQUE2QiwyRkFBMkYsNkNBQTZDLGdEQUFnRCxxQ0FBcUMscUNBQXFDLDZCQUE2Qiw4RkFBOEYsK0JBQStCLHNCQUFzQixzQkFBc0IsNERBQTRELG1DQUFtQyx1Q0FBdUMsK0JBQStCLHdCQUF3QixtREFBbUQsYUFBYSxrQkFBa0IsT0FBTyw0Q0FBNEMsd0RBQXdELHVDQUF1Qyx1REFBdUQscUNBQXFDLGtFQUFrRSw2Q0FBNkMsNkNBQTZDLDREQUE0RCwrQkFBK0IsK0JBQStCLHdDQUF3QywwQ0FBMEMsc0NBQXNDLGtEQUFrRCwyQkFBMkIsNEJBQTRCLDZCQUE2QixzQkFBc0IsbUNBQW1DLDBEQUEwRCw4REFBOEQsc0JBQXNCLHNCQUFzQiw0R0FBNEcsdUNBQXVDLFlBQVksNkVBQTZFLDZFQUE2RSw2REFBNkQseUJBQXlCLHlCQUF5QixnRkFBZ0YsMEJBQTBCLDBCQUEwQiwwRUFBMEUsdUJBQXVCLHVCQUF1QixzRkFBc0YsNkJBQTZCLDZCQUE2QixpRUFBaUUsbURBQW1ELDZEQUE2RCxvQkFBb0IscUJBQXFCLDBEQUEwRCwwREFBMEQsdUVBQXVFLGtFQUFrRSxnR0FBZ0csTUFBTSwrR0FBK0csV0FBVywrQ0FBK0MsbURBQW1ELHVDQUF1Qyw4REFBOEQsc0NBQXNDLDZDQUE2Qyx5REFBeUQsaURBQWlELDJEQUEyRCxrRUFBa0UscUJBQXFCLHNCQUFzQix5QkFBeUIsa0NBQWtDLG9CQUFvQixnQ0FBZ0MsSUFBSSxzQkFBc0IsaUVBQWlFLG1CQUFtQixJQUFJLGdCQUFnQiw0RUFBNEUsMEJBQTBCLElBQUksZ0JBQWdCLDRFQUE0RSxrQ0FBa0MsSUFBSSxnQkFBZ0IsNEVBQTRFLGtDQUFrQyxJQUFJLGdCQUFnQixvUUFBb1Esd0VBQXdFLHNDQUFzQywyQ0FBMkMsNERBQTRELGdEQUFnRCxlQUFlLGtCQUFrQixrQkFBa0Isa0JBQWtCLE9BQU8sYUFBYSx5Q0FBeUMseUNBQXlDLHlDQUF5QyxtREFBbUQsd0VBQXdFLDJCQUEyQiwyQkFBMkIsOERBQThELDhEQUE4RCwrQkFBK0IsdUNBQXVDLHVDQUF1Qyw4REFBOEQsb0ZBQW9GLHVCQUF1Qix5QkFBeUIsd0JBQXdCLGdFQUFnRSx5Q0FBeUMsNENBQTRDLGlDQUFpQyxpQ0FBaUMsd0JBQXdCLG1FQUFtRSwyQkFBMkIsa0JBQWtCLGtCQUFrQixrREFBa0QsNkJBQTZCLGlDQUFpQyxvQkFBb0Isa0JBQWtCLHlCQUF5QixPQUFPLGtCQUFrQixPQUFPLHNDQUFzQyxrREFBa0QsdUNBQXVDLHVEQUF1RCxpQ0FBaUMsdURBQXVELHlDQUF5Qyx5Q0FBeUMsbURBQW1ELDJCQUEyQiwyQkFBMkIsb0NBQW9DLHNDQUFzQyxrQ0FBa0MsOENBQThDLHVCQUF1Qix3QkFBd0Isd0JBQXdCLGdCQUFnQiw2QkFBNkIsK0NBQStDLG1EQUFtRCxrQkFBa0Isa0JBQWtCLGtGQUFrRix1Q0FBdUMsWUFBWSxrRUFBa0Usa0VBQWtFLGtEQUFrRCxxQkFBcUIscUJBQXFCLHFFQUFxRSxzQkFBc0Isc0JBQXNCLCtEQUErRCxtQkFBbUIsbUJBQW1CLGtGQUFrRix5QkFBeUIseUJBQXlCLHdEQUF3RCxtREFBbUQseURBQXlELG9CQUFvQixxQkFBcUIsc0RBQXNELHNEQUFzRCw4REFBOEQsa0VBQWtFLDJGQUEyRixNQUFNLDJHQUEyRyw4Q0FBOEMsK0RBQStELDRFQUE0RSxxREFBcUQsOERBQThELElBQUksdUJBQXVCLDRDQUE0QyxrQ0FBa0MsMkJBQTJCLGdDQUFnQyx1Q0FBdUMseU1BQXlNLDJCQUEyQix1Q0FBdUMsb0RBQW9ELElBQUksd0NBQXdDLHlFQUF5RSxJQUFJLHNDQUFzQyw0Q0FBNEMsSUFBSSwyQkFBMkIsNEJBQTRCLCtCQUErQixtQ0FBbUMsa0NBQWtDLDhDQUE4QywyREFBMkQsSUFBSSwrQ0FBK0MsdUZBQXVGLElBQUksNkNBQTZDLG1EQUFtRCxJQUFJLG1DQUFtQywwQkFBMEIsMkNBQTJDLDBDQUEwQyxzREFBc0QsbUVBQW1FLElBQUksdURBQXVELHVHQUF1RyxJQUFJLHFEQUFxRCwyREFBMkQsSUFBSSwyQ0FBMkMsMENBQTBDLHNEQUFzRCxtRUFBbUUsSUFBSSx1REFBdUQsdUdBQXVHLElBQUkscURBQXFELDJEQUEyRCxJQUFJLDRCQUE0QiwwQ0FBMEMsd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyx5Q0FBeUMsMkNBQTJDLDREQUE0RCxnREFBZ0Qsd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyxrQkFBa0Isa0JBQWtCLGtCQUFrQixrQkFBa0IsT0FBTyxhQUFhLGlDQUFpQyx5Q0FBeUMseUNBQXlDLG1EQUFtRCxtREFBbUQsMkJBQTJCLDJCQUEyQixzREFBc0Qsc0RBQXNELCtCQUErQix1Q0FBdUMsdUNBQXVDLDhEQUE4RCwrREFBK0QsdUJBQXVCLHlCQUF5Qix3QkFBd0IsZ0VBQWdFLHdDQUF3Qyx3Q0FBd0MseUtBQXlLLHlHQUF5RyxrTUFBa00sd0ZBQXdGLCtIQUErSCxrSkFBa0osK0ZBQStGLDhFQUE4RSxzS0FBc0ssNENBQTRDLDRDQUE0QyxpQ0FBaUMsaUNBQWlDLHdCQUF3QixtRUFBbUUsd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyw4QkFBOEIsa0JBQWtCLGtCQUFrQixrREFBa0QsNkJBQTZCLGlDQUFpQyxvQkFBb0Isa0JBQWtCLHlCQUF5QixPQUFPLGtCQUFrQixPQUFPLHNDQUFzQyxrREFBa0QsdUNBQXVDLCtDQUErQyxpQ0FBaUMsK0NBQStDLHlDQUF5Qyx5Q0FBeUMsbURBQW1ELDJCQUEyQiwyQkFBMkIsb0NBQW9DLHNDQUFzQyxrQ0FBa0MsOENBQThDLHVCQUF1Qix3QkFBd0Isd0JBQXdCLGdCQUFnQix3Q0FBd0Msd0NBQXdDLHlLQUF5Syx5R0FBeUcsa01BQWtNLHdGQUF3RiwrSEFBK0gsa0pBQWtKLCtGQUErRiw4RUFBOEUsc0tBQXNLLGdDQUFnQyx1Q0FBdUMsNkNBQTZDLGtCQUFrQixrQkFBa0IsNkRBQTZELGlDQUFpQyxZQUFZLDBEQUEwRCwwREFBMEQsa0RBQWtELHFCQUFxQixxQkFBcUIscUVBQXFFLHNCQUFzQixzQkFBc0IsK0RBQStELG1CQUFtQixtQkFBbUIsd0NBQXdDLHlCQUF5Qix5QkFBeUIsd0RBQXdELDhCQUE4QixvQ0FBb0Msb0JBQW9CLHFCQUFxQixpQ0FBaUMsaUNBQWlDLDhEQUE4RCxrRUFBa0UscUZBQXFGLE1BQU0sb0dBQW9HLG1CQUFtQix1Q0FBdUMsS0FBSyxLQUFLLFlBQVksb0ZBQW9GLDJEQUEyRCxFQUFFLG9EQUFvRCxFQUFFLGlFQUFpRSxlQUFlLG9IQUFvSCxFQUFFLDBHQUEwRyxFQUFFLDJHQUEyRyxFQUFFLDhHQUE4RyxFQUFFLDBIQUEwSCxFQUFFLGtIQUFrSCxFQUFFLHlHQUF5RyxFQUFFLGtJQUFrSSxFQUFFLGtJQUFrSSxFQUFFLDJHQUEyRyxvQ0FBb0Msd0NBQXdDLHNCQUFzQjtBQUN4aHlCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sNEJBQTRCLFdBQVcseUNBQXlDLDJDQUEyQyx5REFBeUQsOEVBQThFLG1FQUFtRSwrREFBK0QseUVBQXlFLG1FQUFtRSx1RUFBdUUsNkNBQTZDLCtCQUErQixLQUFLLDBFQUEwRSwyQ0FBMkMsMERBQTBELEtBQUssNEVBQTRFLDJDQUEyQyxpRUFBaUUsS0FBSyw0RUFBNEUsOENBQThDLHlCQUF5Qix3QkFBd0IsNENBQTRDLGFBQWEsa0RBQWtELG1DQUFtQyxxRUFBcUUsd0VBQXdFLFdBQVcsK0NBQStDLG1EQUFtRCx1Q0FBdUMsOERBQThELHNDQUFzQyw2Q0FBNkMseURBQXlELGlEQUFpRCwyREFBMkQsa0VBQWtFLGtCQUFrQixJQUFJLHNCQUFzQix5RUFBeUUsbUJBQW1CLElBQUksZ0JBQWdCLG9FQUFvRSwwQkFBMEIsSUFBSSxnQkFBZ0IsMkpBQTJKLHlCQUF5QixxQkFBcUIsa0JBQWtCLGtCQUFrQixPQUFPLHVDQUF1Qyx5QkFBeUIsNkNBQTZDLG9FQUFvRSw4Q0FBOEMsK0RBQStELDRFQUE0RSxxREFBcUQsOERBQThELElBQUksdUJBQXVCLDRDQUE0QyxrQ0FBa0MsMkJBQTJCLGdDQUFnQyx1Q0FBdUMsZ0dBQWdHLDJCQUEyQix1Q0FBdUMsb0RBQW9ELElBQUksd0NBQXdDLHlFQUF5RSxJQUFJLHNDQUFzQyw0Q0FBNEMsSUFBSSx3QkFBd0IsbUNBQW1DLGtDQUFrQyw4Q0FBOEMsMkRBQTJELElBQUksK0NBQStDLHVGQUF1RixJQUFJLDZDQUE2QyxtREFBbUQsSUFBSSxnQkFBZ0Isd0NBQXdDLHdDQUF3Qyx5S0FBeUsseUdBQXlHLGtNQUFrTSx3RkFBd0YsK0hBQStILGtKQUFrSiwrRkFBK0YsOEVBQThFLHNLQUFzSyx3QkFBd0Isa0JBQWtCLGtCQUFrQixPQUFPLCtCQUErQix5QkFBeUIsNkNBQTZDLHNEQUFzRCxtQkFBbUIsdUNBQXVDLEtBQUssS0FBSyxZQUFZLG9GQUFvRixvREFBb0QsZUFBZSxtSEFBbUgsRUFBRSx1R0FBdUcsRUFBRSwySEFBMkgsb0NBQW9DLCtDQUErQyxzQkFBc0I7QUFDaG5NIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2dwdS9nRm9yY2VTaGFkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZ0ZvcmNlQ29kZSA9IGBcbmltcG9ydCB7IGdsb2JhbEludm9jYXRpb25JRCB9IGZyb20gJ2ctd2ViZ3B1JztcblxuY29uc3QgTUFYX0VER0VfUEVSX1ZFUlRFWDtcbmNvbnN0IFZFUlRFWF9DT1VOVDtcbmNvbnN0IFNISUZUXzIwID0gMTA0ODU3NjtcblxuQG51bXRocmVhZHMoMSwgMSwgMSlcbmNsYXNzIEdHRm9yY2Uge1xuICBAaW4gQG91dFxuICB1X0RhdGE6IHZlYzRbXTtcblxuICBAaW5cbiAgdV9kYW1waW5nOiBmbG9hdDtcbiAgXG4gIEBpblxuICB1X21heFNwZWVkOiBmbG9hdDtcblxuICBAaW5cbiAgdV9taW5Nb3ZlbWVudDogZmxvYXQ7XG5cbiAgQGluXG4gIHVfQXZlTW92ZW1lbnQ6IHZlYzRbXTtcblxuICBAaW5cbiAgdV9jb3Vsb21iRGlzU2NhbGU6IGZsb2F0O1xuXG4gIEBpblxuICB1X2ZhY3RvcjogZmxvYXQ7XG5cbiAgQGluXG4gIHVfTm9kZUF0dHJpYnV0ZUFycmF5MTogdmVjNFtdO1xuXG4gIEBpblxuICB1X05vZGVBdHRyaWJ1dGVBcnJheTI6IHZlYzRbXTtcblxuICBAaW5cbiAgdV9pbnRlcnZhbDogZmxvYXQ7XG5cbiAgdW5wYWNrX2Zsb2F0KHBhY2tlZFZhbHVlOiBmbG9hdCk6IGl2ZWMyIHtcbiAgICBjb25zdCBwYWNrZWRJbnRWYWx1ZSA9IGludChwYWNrZWRWYWx1ZSk7XG4gICAgY29uc3QgdjAgPSBwYWNrZWRJbnRWYWx1ZSAvIFNISUZUXzIwO1xuICAgIHJldHVybiBbdjAsIHBhY2tlZEludFZhbHVlIC0gdjAgKiBTSElGVF8yMF07XG4gIH1cblxuICBjYWxjUmVwdWxzaXZlKGk6IGludCwgY3VycmVudE5vZGU6IHZlYzQpOiB2ZWMyIHtcbiAgICBsZXQgYXggPSAwLCBheSA9IDA7XG4gICAgZm9yIChsZXQgajogaW50ID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7XG4gICAgICBpZiAoaSAhPSBqKSB7XG4gICAgICAgIGNvbnN0IG5leHROb2RlID0gdGhpcy51X0RhdGFbal07XG4gICAgICAgIGNvbnN0IHZ4ID0gY3VycmVudE5vZGVbMF0gLSBuZXh0Tm9kZVswXTtcbiAgICAgICAgY29uc3QgdnkgPSBjdXJyZW50Tm9kZVsxXSAtIG5leHROb2RlWzFdO1xuICAgICAgICBjb25zdCBkaXN0ID0gc3FydCh2eCAqIHZ4ICsgdnkgKiB2eSkgKyAwLjAxO1xuICAgICAgICBjb25zdCBuX2Rpc3QgPSAoZGlzdCArIDAuMSkgKiB0aGlzLnVfY291bG9tYkRpc1NjYWxlO1xuICAgICAgICBjb25zdCBkaXJleCA9IHZ4IC8gZGlzdDtcbiAgICAgICAgY29uc3QgZGlyZXkgPSB2eSAvIGRpc3Q7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXNpID0gdGhpcy51X05vZGVBdHRyaWJ1dGVBcnJheTFbaV07XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXNqID0gdGhpcy51X05vZGVBdHRyaWJ1dGVBcnJheTFbal07XG4gICAgICAgIGNvbnN0IG1hc3NpID0gYXR0cmlidXRlc2lbMF07XG4gICAgICAgIGNvbnN0IG5vZGVTdHJlbmd0aGkgPSBhdHRyaWJ1dGVzaVsyXTtcbiAgICAgICAgY29uc3Qgbm9kZVN0cmVuZ3RoaiA9IGF0dHJpYnV0ZXNqWzJdO1xuICAgICAgICBjb25zdCBub2RlU3RyZW5ndGggPSAobm9kZVN0cmVuZ3RoaSArIG5vZGVTdHJlbmd0aGopIC8gMjtcbiAgICAgICAgLy8gY29uc3QgcGFyYW0gPSBub2RlU3RyZW5ndGggKiB0aGlzLnVfZmFjdG9yIC8gKG5fZGlzdCAqIG5fZGlzdCAqIG1hc3NpKTtcbiAgICAgICAgY29uc3QgcGFyYW0gPSBub2RlU3RyZW5ndGggKiB0aGlzLnVfZmFjdG9yIC8gKG5fZGlzdCAqIG5fZGlzdCk7XG4gICAgICAgIGF4ICs9IGRpcmV4ICogcGFyYW07XG4gICAgICAgIGF5ICs9IGRpcmV5ICogcGFyYW07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYXgsIGF5XTtcbiAgfVxuXG4gIGNhbGNHcmF2aXR5KGk6IGludCwgY3VycmVudE5vZGU6IHZlYzQsIGF0dHJpYnV0ZXMyOiB2ZWM0KTogdmVjMiB7XG4gICAgLy8gbm90ZTogYXR0cmlidXRlczIgPSBbY2VudGVyWCwgY2VudGVyWSwgZ3Jhdml0eSwgMF1cblxuICAgIGNvbnN0IHZ4ID0gY3VycmVudE5vZGVbMF0gLSBhdHRyaWJ1dGVzMlswXTtcbiAgICBjb25zdCB2eSA9IGN1cnJlbnROb2RlWzFdIC0gYXR0cmlidXRlczJbMV07XG4gICAgXG4gICAgY29uc3QgYXggPSB2eCAqIGF0dHJpYnV0ZXMyWzJdO1xuICAgIGNvbnN0IGF5ID0gdnkgKiBhdHRyaWJ1dGVzMlsyXTtcbiAgICBcbiAgICByZXR1cm4gW2F4LCBheV07XG4gIH1cblxuICBjYWxjQXR0cmFjdGl2ZShpOiBpbnQsIGN1cnJlbnROb2RlOiB2ZWM0LCBhdHRyaWJ1dGVzMTogdmVjNCk6IHZlYzIge1xuICAgIC8vIG5vdGU6IGF0dHJpYnV0ZXMxID0gW21hc3MsIGRlZ3JlZSwgbm9kZVN0ZXJuZ3RoLCAwXVxuXG4gICAgY29uc3QgbWFzcyA9IGF0dHJpYnV0ZXMxWzBdO1xuICAgIGxldCBheCA9IDAsIGF5ID0gMDtcbiAgICAvLyBjb25zdCBhcnJfb2Zmc2V0ID0gaW50KGZsb29yKGN1cnJlbnROb2RlWzJdICsgMC41KSk7XG4gICAgLy8gY29uc3QgbGVuZ3RoID0gaW50KGZsb29yKGN1cnJlbnROb2RlWzNdICsgMC41KSk7XG5cbiAgICBjb25zdCBjb21wcmVzc2VkID0gdGhpcy51bnBhY2tfZmxvYXQoY3VycmVudE5vZGVbMl0pO1xuICAgIGNvbnN0IGxlbmd0aCA9IGNvbXByZXNzZWRbMF07XG4gICAgY29uc3QgYXJyX29mZnNldCA9IGNvbXByZXNzZWRbMV07XG5cbiAgICBjb25zdCBub2RlX2J1ZmZlcjogdmVjNDtcbiAgICBmb3IgKGxldCBwOiBpbnQgPSAwOyBwIDwgTUFYX0VER0VfUEVSX1ZFUlRFWDsgcCsrKSB7XG4gICAgICBpZiAocCA+PSBsZW5ndGgpIGJyZWFrO1xuICAgICAgY29uc3QgYXJyX2lkeCA9IGFycl9vZmZzZXQgKyA0ICogcDsgLy8gaSDoioLngrnnmoTnrKwgcCDmnaHovrnlvIDlp4vnmoTlsI/moLzlrZDkvY3nva5cbiAgICAgIGNvbnN0IGJ1Zl9vZmZzZXQgPSBhcnJfaWR4IC0gYXJyX2lkeCAvIDQgKiA0O1xuICAgICAgaWYgKHAgPT0gMCB8fCBidWZfb2Zmc2V0ID09IDApIHtcbiAgICAgICAgbm9kZV9idWZmZXIgPSB0aGlzLnVfRGF0YVtpbnQoYXJyX2lkeCAvIDQpXTsgLy8g5aSn5qC85a2Q77yM5aSn5qC85a2Q5L2N572uPeWwj+S4quWtkOS9jee9riAvIDTvvIxcbiAgICAgIH1cblxuICAgICAgbGV0IGZsb2F0X2o6IGZsb2F0ID0gbm9kZV9idWZmZXJbMF07XG5cbiAgICAgIGNvbnN0IG5leHROb2RlID0gdGhpcy51X0RhdGFbaW50KGZsb2F0X2opXTtcbiAgICAgIGNvbnN0IHZ4ID0gbmV4dE5vZGVbMF0gLSBjdXJyZW50Tm9kZVswXTtcbiAgICAgIGNvbnN0IHZ5ID0gbmV4dE5vZGVbMV0gLSBjdXJyZW50Tm9kZVsxXTtcbiAgICAgIGNvbnN0IGRpc3QgPSBzcXJ0KHZ4ICogdnggKyB2eSAqIHZ5KSArIDAuMDE7XG4gICAgICBjb25zdCBkaXJleCA9IHZ4IC8gZGlzdDtcbiAgICAgIGNvbnN0IGRpcmV5ID0gdnkgLyBkaXN0O1xuICAgICAgY29uc3QgZWRnZUxlbmd0aCA9IG5vZGVfYnVmZmVyWzFdO1xuICAgICAgY29uc3QgZWRnZVN0cmVuZ3RoID0gbm9kZV9idWZmZXJbMl07XG4gICAgICBjb25zdCBkaWZmOiBmbG9hdCA9IGVkZ2VMZW5ndGggLSBkaXN0Oy8vZWRnZUxlbmd0aFxuICAgICAgLy8gY29uc3QgcGFyYW0gPSBkaWZmICogdGhpcy51X3N0aWZmbmVzcyAvIG1hc3M7IC8vXG4gICAgICBjb25zdCBwYXJhbSA9IGRpZmYgKiBlZGdlU3RyZW5ndGggLyBtYXNzOyAvLyBcbiAgICAgIGF4IC09IGRpcmV4ICogcGFyYW07XG4gICAgICBheSAtPSBkaXJleSAqIHBhcmFtO1xuICAgIH1cbiAgICByZXR1cm4gW2F4LCBheV07XG4gIH1cblxuICBAbWFpblxuICBjb21wdXRlKCkge1xuICAgIGNvbnN0IGkgPSBnbG9iYWxJbnZvY2F0aW9uSUQueDtcbiAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudV9EYXRhW2ldO1xuICAgIGNvbnN0IG1vdmVtZW50ID0gdV9BdmVNb3ZlbWVudFswXTtcbiAgICBsZXQgYXggPSAwLCBheSA9IDA7XG5cbiAgICBpZiAoaSA+PSBWRVJURVhfQ09VTlQgfHwgbW92ZW1lbnQueCA8IHVfbWluTW92ZW1lbnQpIHtcbiAgICAgIHRoaXMudV9EYXRhW2ldID0gY3VycmVudE5vZGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5q+P5Liq6IqC54K55bGe5oCn5Y2g5Lik5Liq5pWw57uE5Lit5ZCE5LiA5qC8XG4gICAgLy8gW21hc3MsIGRlZ3JlZSwgbm9kZVN0cmVuZ3RoLCBmeF1cbiAgICBjb25zdCBub2RlQXR0cmlidXRlczEgPSB0aGlzLnVfTm9kZUF0dHJpYnV0ZUFycmF5MVtpXTtcbiAgICAvLyBbY2VudGVyWCwgY2VudGVyWSwgY2VudGVyR3Jhdml0eSwgZnldXG4gICAgY29uc3Qgbm9kZUF0dHJpYnV0ZXMyID0gdGhpcy51X05vZGVBdHRyaWJ1dGVBcnJheTJbaV07XG5cbiAgICAvLyByZXB1bHNpdmVcbiAgICBjb25zdCByZXB1bHNpdmUgPSB0aGlzLmNhbGNSZXB1bHNpdmUoaSwgY3VycmVudE5vZGUpO1xuICAgIGF4ICs9IHJlcHVsc2l2ZVswXTtcbiAgICBheSArPSByZXB1bHNpdmVbMV07XG5cbiAgICAvLyBhdHRyYWN0aXZlXG4gICAgY29uc3QgYXR0cmFjdGl2ZSA9IHRoaXMuY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMSk7XG4gICAgYXggKz0gYXR0cmFjdGl2ZVswXTtcbiAgICBheSArPSBhdHRyYWN0aXZlWzFdO1xuXG4gICAgLy8gZ3Jhdml0eVxuICAgIGNvbnN0IGdyYXZpdHkgPSB0aGlzLmNhbGNHcmF2aXR5KGksIGN1cnJlbnROb2RlLCBub2RlQXR0cmlidXRlczIpO1xuICAgIGF4IC09IGdyYXZpdHlbMF07XG4gICAgYXkgLT0gZ3Jhdml0eVsxXTtcblxuICAgIC8vIHNwZWVkXG4gICAgY29uc3QgcGFyYW0gPSB0aGlzLnVfaW50ZXJ2YWwgKiB0aGlzLnVfZGFtcGluZztcbiAgICBsZXQgdnggPSBheCAqIHBhcmFtO1xuICAgIGxldCB2eSA9IGF5ICogcGFyYW07XG4gICAgY29uc3Qgdmxlbmd0aCA9IHNxcnQodnggKiB2eCArIHZ5ICogdnkpICsgMC4wMDAxO1xuICAgIGlmICh2bGVuZ3RoID4gdGhpcy51X21heFNwZWVkKSB7XG4gICAgICBjb25zdCBwYXJhbTIgPSB0aGlzLnVfbWF4U3BlZWQgLyB2bGVuZ3RoO1xuICAgICAgdnggPSBwYXJhbTIgKiB2eDtcbiAgICAgIHZ5ID0gcGFyYW0yICogdnk7XG4gICAgfVxuXG4gICAgLy8gbW92ZVxuICAgIGlmIChub2RlQXR0cmlidXRlczFbM10gIT0gMCAmJiBub2RlQXR0cmlidXRlczJbM10gIT0gMCkge1xuICAgICAgdGhpcy51X0RhdGFbaV0gPSBbXG4gICAgICAgIG5vZGVBdHRyaWJ1dGVzMVszXSxcbiAgICAgICAgbm9kZUF0dHJpYnV0ZXMyWzNdLFxuICAgICAgICBjdXJyZW50Tm9kZVsyXSxcbiAgICAgICAgMFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGlzdHggPSB2eCAqIHRoaXMudV9pbnRlcnZhbDtcbiAgICAgIGNvbnN0IGRpc3R5ID0gdnkgKiB0aGlzLnVfaW50ZXJ2YWw7XG4gICAgICBjb25zdCBkaXN0TGVuZ3RoID0gc3FydChkaXN0eCAqIGRpc3R4ICsgZGlzdHkgKiBkaXN0eSk7XG4gICAgICB0aGlzLnVfRGF0YVtpXSA9IFtcbiAgICAgICAgY3VycmVudE5vZGVbMF0gKyBkaXN0eCxcbiAgICAgICAgY3VycmVudE5vZGVbMV0gKyBkaXN0eSxcbiAgICAgICAgY3VycmVudE5vZGVbMl0sXG4gICAgICAgIGRpc3RMZW5ndGhcbiAgICAgIF07XG4gICAgfVxuICAgIFxuICAgIC8vIHRoZSBhdmFyYWdlIG1vdmUgZGlzdGFuY2VcbiAgICAvLyBuZWVkIHRvIHNoYXJlIG1lbW9yeVxuICAgIFxuICB9XG59XG5gO1xuZXhwb3J0IGNvbnN0IGdGb3JjZUJ1bmRsZSA9IGB7XCJzaGFkZXJzXCI6e1wiV0dTTFwiOlwiaW1wb3J0IFxcXFxcIkdMU0wuc3RkLjQ1MFxcXFxcIiBhcyBzdGQ7XFxcXG5cXFxcblxcXFxuIyB2YXIgZ1dlYkdQVURlYnVnIDogYm9vbCA9IGZhbHNlO1xcXFxuIyB2YXIgZ1dlYkdQVURlYnVnT3V0cHV0IDogdmVjNDxmMzI+ID0gdmVjNDxmMzI+KDAuMCk7XFxcXG5cXFxcbltbYnVpbHRpbiBnbG9iYWxfaW52b2NhdGlvbl9pZF1dIHZhcjxpbj4gZ2xvYmFsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gd29ya19ncm91cF9zaXplXV0gdmFyPGluPiB3b3JrR3JvdXBTaXplIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gd29ya19ncm91cF9pZF1dIHZhcjxpbj4gd29ya0dyb3VwSUQgOiB2ZWMzPHUzMj47XFxcXG5bW2J1aWx0aW4gbG9jYWxfaW52b2NhdGlvbl9pZF1dIHZhcjxpbj4gbG9jYWxJbnZvY2F0aW9uSUQgOiB2ZWMzPHUzMj47XFxcXG4jIFtbYnVpbHRpbiBudW1fd29ya19ncm91cHNdXSB2YXI8aW4+IG51bVdvcmtHcm91cHMgOiB2ZWMzPHUzMj47XFxcXG5bW2J1aWx0aW4gbG9jYWxfaW52b2NhdGlvbl9pZHhdXSB2YXI8aW4+IGxvY2FsSW52b2NhdGlvbkluZGV4IDogdTMyO1xcXFxuXFxcXG50eXBlIEdXZWJHUFVQYXJhbXMgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfZGFtcGluZyA6IGYzMjtcXFxcbiAgW1tvZmZzZXQgNF1dIHVfbWF4U3BlZWQgOiBmMzI7XFxcXG4gIFtbb2Zmc2V0IDhdXSB1X21pbk1vdmVtZW50IDogZjMyO1xcXFxuICBcXFxcbiAgW1tvZmZzZXQgMTJdXSB1X2NvdWxvbWJEaXNTY2FsZSA6IGYzMjtcXFxcbiAgW1tvZmZzZXQgMTZdXSB1X2ZhY3RvciA6IGYzMjtcXFxcbiAgXFxcXG4gIFxcXFxuICBbW29mZnNldCAyMF1dIHVfaW50ZXJ2YWwgOiBmMzI7XFxcXG59O1xcXFxuW1tiaW5kaW5nIDAsIHNldCAwXV0gdmFyPHVuaWZvcm0+IGdXZWJHUFVVbmlmb3JtUGFyYW1zIDogR1dlYkdQVVBhcmFtcztcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjAgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfRGF0YSA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMSwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIwIDogR1dlYkdQVUJ1ZmZlcjA7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIxID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0F2ZU1vdmVtZW50IDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyAyLCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjEgOiBHV2ViR1BVQnVmZmVyMTtcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjIgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfTm9kZUF0dHJpYnV0ZUFycmF5MSA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMywgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIyIDogR1dlYkdQVUJ1ZmZlcjI7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIzID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X05vZGVBdHRyaWJ1dGVBcnJheTIgOiBbW3N0cmlkZSAxNl1dIGFycmF5PHZlYzQ8ZjMyPj47XFxcXG59O1xcXFxuW1tiaW5kaW5nIDQsIHNldCAwXV0gdmFyPHN0b3JhZ2VfYnVmZmVyPiBnV2ViR1BVQnVmZmVyMyA6IEdXZWJHUFVCdWZmZXIzO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbmZuIHVucGFja19mbG9hdChwYWNrZWRWYWx1ZSA6IGYzMikgLT4gdmVjMjxpMzI+IHt2YXIgcGFja2VkSW50VmFsdWUgOiBpMzIgPSBpMzIocGFja2VkVmFsdWUpO1xcXFxudmFyIHYwIDogaTMyID0gcGFja2VkSW50VmFsdWUgLyAxMDQ4NTc2O1xcXFxucmV0dXJuIHZlYzI8aTMyPih2MCwgcGFja2VkSW50VmFsdWUgLSAodjAgKiAxMDQ4NTc2KSk7fVxcXFxuZm4gY2FsY1JlcHVsc2l2ZShpIDogaTMyLCBjdXJyZW50Tm9kZSA6IHZlYzQ8ZjMyPikgLT4gdmVjMjxmMzI+IHt2YXIgYXggOiBmMzIgPSAwLjA7XFxcXG52YXIgYXkgOiBmMzIgPSAwLjA7XFxcXG5mb3IgKHZhciBqIDogaTMyID0gMDsgaiA8IF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UOyBqID0gaiArIDEpIHtpZiAoaSAhPSBqKSB7dmFyIG5leHROb2RlIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2pdO1xcXFxudmFyIHZ4IDogZjMyID0gY3VycmVudE5vZGUueCAtIG5leHROb2RlLng7XFxcXG52YXIgdnkgOiBmMzIgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbnZhciBkaXN0IDogZjMyID0gc3RkOjpzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAxO1xcXFxudmFyIG5fZGlzdCA6IGYzMiA9IChkaXN0ICsgMC4xKSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfY291bG9tYkRpc1NjYWxlO1xcXFxudmFyIGRpcmV4IDogZjMyID0gdnggLyBkaXN0O1xcXFxudmFyIGRpcmV5IDogZjMyID0gdnkgLyBkaXN0O1xcXFxudmFyIGF0dHJpYnV0ZXNpIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjIudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2ldO1xcXFxudmFyIGF0dHJpYnV0ZXNqIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjIudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2pdO1xcXFxudmFyIG1hc3NpIDogZjMyID0gYXR0cmlidXRlc2kueDtcXFxcbnZhciBub2RlU3RyZW5ndGhpIDogZjMyID0gYXR0cmlidXRlc2kuejtcXFxcbnZhciBub2RlU3RyZW5ndGhqIDogZjMyID0gYXR0cmlidXRlc2ouejtcXFxcbnZhciBub2RlU3RyZW5ndGggOiBmMzIgPSAobm9kZVN0cmVuZ3RoaSArIG5vZGVTdHJlbmd0aGopIC8gMi4wO1xcXFxudmFyIHBhcmFtIDogZjMyID0gKG5vZGVTdHJlbmd0aCAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfZmFjdG9yKSAvIChuX2Rpc3QgKiBuX2Rpc3QpO1xcXFxuYXggPSBheCArIGRpcmV4ICogcGFyYW07XFxcXG5heSA9IGF5ICsgZGlyZXkgKiBwYXJhbTt9fVxcXFxucmV0dXJuIHZlYzI8ZjMyPihheCwgYXkpO31cXFxcbmZuIGNhbGNHcmF2aXR5KGkgOiBpMzIsIGN1cnJlbnROb2RlIDogdmVjNDxmMzI+LCBhdHRyaWJ1dGVzMiA6IHZlYzQ8ZjMyPikgLT4gdmVjMjxmMzI+IHt2YXIgdnggOiBmMzIgPSBjdXJyZW50Tm9kZS54IC0gYXR0cmlidXRlczIueDtcXFxcbnZhciB2eSA6IGYzMiA9IGN1cnJlbnROb2RlLnkgLSBhdHRyaWJ1dGVzMi55O1xcXFxudmFyIGF4IDogZjMyID0gdnggKiBhdHRyaWJ1dGVzMi56O1xcXFxudmFyIGF5IDogZjMyID0gdnkgKiBhdHRyaWJ1dGVzMi56O1xcXFxucmV0dXJuIHZlYzI8ZjMyPihheCwgYXkpO31cXFxcbmZuIGNhbGNBdHRyYWN0aXZlKGkgOiBpMzIsIGN1cnJlbnROb2RlIDogdmVjNDxmMzI+LCBhdHRyaWJ1dGVzMSA6IHZlYzQ8ZjMyPikgLT4gdmVjMjxmMzI+IHt2YXIgbWFzcyA6IGYzMiA9IGF0dHJpYnV0ZXMxLng7XFxcXG52YXIgYXggOiBmMzIgPSAwLjA7XFxcXG52YXIgYXkgOiBmMzIgPSAwLjA7XFxcXG52YXIgY29tcHJlc3NlZCA6IHZlYzI8aTMyPiA9IHVucGFja19mbG9hdChjdXJyZW50Tm9kZS56KTtcXFxcbnZhciBsZW5ndGggOiBpMzIgPSBjb21wcmVzc2VkLng7XFxcXG52YXIgYXJyX29mZnNldCA6IGkzMiA9IGNvbXByZXNzZWQueTtcXFxcbnZhciBub2RlX2J1ZmZlciA6IHZlYzQ8ZjMyPjtcXFxcbmZvciAodmFyIHAgOiBpMzIgPSAwOyBwIDwgX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19NQVhfRURHRV9QRVJfVkVSVEVYOyBwID0gcCArIDEpIHtpZiAocCA+PSBsZW5ndGgpIHticmVhazt9XFxcXG52YXIgYXJyX2lkeCA6IGkzMiA9IGFycl9vZmZzZXQgKyAoNCAqIHApO1xcXFxudmFyIGJ1Zl9vZmZzZXQgOiBpMzIgPSBhcnJfaWR4IC0gKChhcnJfaWR4IC8gNCkgKiA0KTtcXFxcbmlmICgocCA9PSAwKSB8fCAoYnVmX29mZnNldCA9PSAwKSkge25vZGVfYnVmZmVyID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2kzMihhcnJfaWR4IC8gNCldO31cXFxcbnZhciBmbG9hdF9qIDogZjMyID0gbm9kZV9idWZmZXIueDtcXFxcbnZhciBuZXh0Tm9kZSA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpMzIoZmxvYXRfaildO1xcXFxudmFyIHZ4IDogZjMyID0gbmV4dE5vZGUueCAtIGN1cnJlbnROb2RlLng7XFxcXG52YXIgdnkgOiBmMzIgPSBuZXh0Tm9kZS55IC0gY3VycmVudE5vZGUueTtcXFxcbnZhciBkaXN0IDogZjMyID0gc3RkOjpzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAxO1xcXFxudmFyIGRpcmV4IDogZjMyID0gdnggLyBkaXN0O1xcXFxudmFyIGRpcmV5IDogZjMyID0gdnkgLyBkaXN0O1xcXFxudmFyIGVkZ2VMZW5ndGggOiBmMzIgPSBub2RlX2J1ZmZlci55O1xcXFxudmFyIGVkZ2VTdHJlbmd0aCA6IGYzMiA9IG5vZGVfYnVmZmVyLno7XFxcXG52YXIgZGlmZiA6IGYzMiA9IGVkZ2VMZW5ndGggLSBkaXN0O1xcXFxudmFyIHBhcmFtIDogZjMyID0gKGRpZmYgKiBlZGdlU3RyZW5ndGgpIC8gbWFzcztcXFxcbmF4ID0gYXggLSBkaXJleCAqIHBhcmFtO1xcXFxuYXkgPSBheSAtIGRpcmV5ICogcGFyYW07fVxcXFxucmV0dXJuIHZlYzI8ZjMyPihheCwgYXkpO31cXFxcbmZuIG1haW4oKSAtPiB2b2lkIHt2YXIgaSA6IGkzMiA9IGdsb2JhbEludm9jYXRpb25JRC54O1xcXFxudmFyIGN1cnJlbnROb2RlIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldO1xcXFxudmFyIG1vdmVtZW50IDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjEudV9BdmVNb3ZlbWVudFswXTtcXFxcbnZhciBheCA6IGYzMiA9IDAuMDtcXFxcbnZhciBheSA6IGYzMiA9IDAuMDtcXFxcbmlmICgoaSA+PSBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVCkgfHwgKG1vdmVtZW50LnggPCBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X21pbk1vdmVtZW50KSkge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IGN1cnJlbnROb2RlO1xcXFxucmV0dXJuIDt9XFxcXG52YXIgbm9kZUF0dHJpYnV0ZXMxIDogdmVjNDxmMzI+ID0gZ1dlYkdQVUJ1ZmZlcjIudV9Ob2RlQXR0cmlidXRlQXJyYXkxW2ldO1xcXFxudmFyIG5vZGVBdHRyaWJ1dGVzMiA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIzLnVfTm9kZUF0dHJpYnV0ZUFycmF5MltpXTtcXFxcbnZhciByZXB1bHNpdmUgOiB2ZWMyPGYzMj4gPSBjYWxjUmVwdWxzaXZlKGksIGN1cnJlbnROb2RlKTtcXFxcbmF4ID0gYXggKyByZXB1bHNpdmUueDtcXFxcbmF5ID0gYXkgKyByZXB1bHNpdmUueTtcXFxcbnZhciBhdHRyYWN0aXZlIDogdmVjMjxmMzI+ID0gY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMSk7XFxcXG5heCA9IGF4ICsgYXR0cmFjdGl2ZS54O1xcXFxuYXkgPSBheSArIGF0dHJhY3RpdmUueTtcXFxcbnZhciBncmF2aXR5IDogdmVjMjxmMzI+ID0gY2FsY0dyYXZpdHkoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMik7XFxcXG5heCA9IGF4IC0gZ3Jhdml0eS54O1xcXFxuYXkgPSBheSAtIGdyYXZpdHkueTtcXFxcbnZhciBwYXJhbSA6IGYzMiA9IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfaW50ZXJ2YWwgKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2RhbXBpbmc7XFxcXG52YXIgdnggOiBmMzIgPSBheCAqIHBhcmFtO1xcXFxudmFyIHZ5IDogZjMyID0gYXkgKiBwYXJhbTtcXFxcbnZhciB2bGVuZ3RoIDogZjMyID0gc3RkOjpzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAwMDE7XFxcXG5pZiAodmxlbmd0aCA+IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfbWF4U3BlZWQpIHt2YXIgcGFyYW0yIDogZjMyID0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9tYXhTcGVlZCAvIHZsZW5ndGg7XFxcXG52eCA9IHBhcmFtMiAqIHZ4O1xcXFxudnkgPSBwYXJhbTIgKiB2eTt9XFxcXG52YXIgZGlzdHggOiBmMzIgPSB2eCAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfaW50ZXJ2YWw7XFxcXG52YXIgZGlzdHkgOiBmMzIgPSB2eSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfaW50ZXJ2YWw7XFxcXG52YXIgZGlzdExlbmd0aCA6IGYzMiA9IHN0ZDo6c3FydCgoZGlzdHggKiBkaXN0eCkgKyAoZGlzdHkgKiBkaXN0eSkpO1xcXFxuaWYgKChub2RlQXR0cmlidXRlczEudyAhPSAwLjApICYmIChub2RlQXR0cmlidXRlczIudyAhPSAwLjApKSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gdmVjNDxmMzI+KG5vZGVBdHRyaWJ1dGVzMS53LCBub2RlQXR0cmlidXRlczIudywgY3VycmVudE5vZGUueiwgMC4wKTt9ZWxzZSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gdmVjNDxmMzI+KGN1cnJlbnROb2RlLnggKyBkaXN0eCwgY3VycmVudE5vZGUueSArIGRpc3R5LCBjdXJyZW50Tm9kZS56LCBkaXN0TGVuZ3RoKTt9XFxcXG5yZXR1cm47fVxcXFxuXFxcXG5lbnRyeV9wb2ludCBjb21wdXRlIGFzIFxcXFxcIm1haW5cXFxcXCIgPSBtYWluO1xcXFxuXCIsXCJHTFNMNDUwXCI6XCJcXFxcblxcXFxuXFxcXG5ib29sIGdXZWJHUFVEZWJ1ZyA9IGZhbHNlO1xcXFxudmVjNCBnV2ViR1BVRGVidWdPdXRwdXQgPSB2ZWM0KDAuMCk7XFxcXG5cXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IGl2ZWMzKGdsX0dsb2JhbEludm9jYXRpb25JRCk7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwxLDEpO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyhnbF9Xb3JrR3JvdXBJRCk7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGdsX0xvY2FsSW52b2NhdGlvbklEKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMyhnbF9OdW1Xb3JrR3JvdXBzKTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGludChnbF9Mb2NhbEludm9jYXRpb25JbmRleCk7XFxcXG5cXFxcbmxheW91dChzdGQxNDAsIHNldCA9IDAsIGJpbmRpbmcgPSAwKSB1bmlmb3JtIEdXZWJHUFVQYXJhbXMge1xcXFxuICBmbG9hdCB1X2RhbXBpbmc7XFxcXG4gIGZsb2F0IHVfbWF4U3BlZWQ7XFxcXG4gIGZsb2F0IHVfbWluTW92ZW1lbnQ7XFxcXG4gIFxcXFxuICBmbG9hdCB1X2NvdWxvbWJEaXNTY2FsZTtcXFxcbiAgZmxvYXQgdV9mYWN0b3I7XFxcXG4gIFxcXFxuICBcXFxcbiAgZmxvYXQgdV9pbnRlcnZhbDtcXFxcbn0gZ1dlYkdQVVVuaWZvcm1QYXJhbXM7XFxcXG5sYXlvdXQoc3RkNDMwLCBzZXQgPSAwLCBiaW5kaW5nID0gMSkgYnVmZmVyICAgR1dlYkdQVUJ1ZmZlcjAge1xcXFxuICB2ZWM0IHVfRGF0YVtdO1xcXFxufSBnV2ViR1BVQnVmZmVyMDtcXFxcblxcXFxubGF5b3V0KHN0ZDQzMCwgc2V0ID0gMCwgYmluZGluZyA9IDIpIGJ1ZmZlciByZWFkb25seSAgR1dlYkdQVUJ1ZmZlcjEge1xcXFxuICB2ZWM0IHVfQXZlTW92ZW1lbnRbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjE7XFxcXG5cXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAzKSBidWZmZXIgcmVhZG9ubHkgIEdXZWJHUFVCdWZmZXIyIHtcXFxcbiAgdmVjNCB1X05vZGVBdHRyaWJ1dGVBcnJheTFbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjI7XFxcXG5cXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSA0KSBidWZmZXIgcmVhZG9ubHkgIEdXZWJHUFVCdWZmZXIzIHtcXFxcbiAgdmVjNCB1X05vZGVBdHRyaWJ1dGVBcnJheTJbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjM7XFxcXG5cXFxcblxcXFxuXFxcXG4jZGVmaW5lIE1BWF9FREdFX1BFUl9WRVJURVggX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX19NQVhfRURHRV9QRVJfVkVSVEVYXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxuI2RlZmluZSBTSElGVF8yMCAxMDQ4NTc2LjBcXFxcbmxheW91dCAoXFxcXG4gIGxvY2FsX3NpemVfeCA9IDEsXFxcXG4gIGxvY2FsX3NpemVfeSA9IDEsXFxcXG4gIGxvY2FsX3NpemVfeiA9IDFcXFxcbikgaW47XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbml2ZWMyIHVucGFja19mbG9hdChmbG9hdCBwYWNrZWRWYWx1ZSkge2ludCBwYWNrZWRJbnRWYWx1ZSA9IGludChwYWNrZWRWYWx1ZSk7XFxcXG5pbnQgdjAgPSBwYWNrZWRJbnRWYWx1ZSAvIGludChTSElGVF8yMCk7XFxcXG5yZXR1cm4gaXZlYzIodjAsIHBhY2tlZEludFZhbHVlIC0gKHYwICogaW50KFNISUZUXzIwKSkpO31cXFxcbnZlYzIgY2FsY1JlcHVsc2l2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSkge2Zsb2F0IGF4ID0gMC4wO1xcXFxuZmxvYXQgYXkgPSAwLjA7XFxcXG5mb3IgKGludCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7aWYgKGkgIT0gaikge3ZlYzQgbmV4dE5vZGUgPSBnV2ViR1BVQnVmZmVyMC51X0RhdGFbal07XFxcXG5mbG9hdCB2eCA9IGN1cnJlbnROb2RlLnggLSBuZXh0Tm9kZS54O1xcXFxuZmxvYXQgdnkgPSBjdXJyZW50Tm9kZS55IC0gbmV4dE5vZGUueTtcXFxcbmZsb2F0IGRpc3QgPSBzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAxO1xcXFxuZmxvYXQgbl9kaXN0ID0gKGRpc3QgKyAwLjEpICogZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9jb3Vsb21iRGlzU2NhbGU7XFxcXG5mbG9hdCBkaXJleCA9IHZ4IC8gZGlzdDtcXFxcbmZsb2F0IGRpcmV5ID0gdnkgLyBkaXN0O1xcXFxudmVjNCBhdHRyaWJ1dGVzaSA9IGdXZWJHUFVCdWZmZXIyLnVfTm9kZUF0dHJpYnV0ZUFycmF5MVtpXTtcXFxcbnZlYzQgYXR0cmlidXRlc2ogPSBnV2ViR1BVQnVmZmVyMi51X05vZGVBdHRyaWJ1dGVBcnJheTFbal07XFxcXG5mbG9hdCBtYXNzaSA9IGF0dHJpYnV0ZXNpLng7XFxcXG5mbG9hdCBub2RlU3RyZW5ndGhpID0gYXR0cmlidXRlc2kuejtcXFxcbmZsb2F0IG5vZGVTdHJlbmd0aGogPSBhdHRyaWJ1dGVzai56O1xcXFxuZmxvYXQgbm9kZVN0cmVuZ3RoID0gKG5vZGVTdHJlbmd0aGkgKyBub2RlU3RyZW5ndGhqKSAvIDIuMDtcXFxcbmZsb2F0IHBhcmFtID0gKG5vZGVTdHJlbmd0aCAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfZmFjdG9yKSAvIChuX2Rpc3QgKiBuX2Rpc3QpO1xcXFxuYXggKz0gZGlyZXggKiBwYXJhbTtcXFxcbmF5ICs9IGRpcmV5ICogcGFyYW07fX1cXFxcbnJldHVybiB2ZWMyKGF4LCBheSk7fVxcXFxudmVjMiBjYWxjR3Jhdml0eShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSwgdmVjNCBhdHRyaWJ1dGVzMikge2Zsb2F0IHZ4ID0gY3VycmVudE5vZGUueCAtIGF0dHJpYnV0ZXMyLng7XFxcXG5mbG9hdCB2eSA9IGN1cnJlbnROb2RlLnkgLSBhdHRyaWJ1dGVzMi55O1xcXFxuZmxvYXQgYXggPSB2eCAqIGF0dHJpYnV0ZXMyLno7XFxcXG5mbG9hdCBheSA9IHZ5ICogYXR0cmlidXRlczIuejtcXFxcbnJldHVybiB2ZWMyKGF4LCBheSk7fVxcXFxudmVjMiBjYWxjQXR0cmFjdGl2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSwgdmVjNCBhdHRyaWJ1dGVzMSkge2Zsb2F0IG1hc3MgPSBhdHRyaWJ1dGVzMS54O1xcXFxuZmxvYXQgYXggPSAwLjA7XFxcXG5mbG9hdCBheSA9IDAuMDtcXFxcbml2ZWMyIGNvbXByZXNzZWQgPSB1bnBhY2tfZmxvYXQoY3VycmVudE5vZGUueik7XFxcXG5pbnQgbGVuZ3RoID0gY29tcHJlc3NlZC54O1xcXFxuaW50IGFycl9vZmZzZXQgPSBjb21wcmVzc2VkLnk7XFxcXG52ZWM0IG5vZGVfYnVmZmVyO1xcXFxuZm9yIChpbnQgcCA9IDA7IHAgPCBNQVhfRURHRV9QRVJfVkVSVEVYOyBwKyspIHtpZiAocCA+PSBsZW5ndGgpIHticmVhazt9XFxcXG5pbnQgYXJyX2lkeCA9IGFycl9vZmZzZXQgKyAoNCAqIHApO1xcXFxuaW50IGJ1Zl9vZmZzZXQgPSBhcnJfaWR4IC0gKChhcnJfaWR4IC8gNCkgKiA0KTtcXFxcbmlmICgocCA9PSAwKSB8fCAoYnVmX29mZnNldCA9PSAwKSkge25vZGVfYnVmZmVyID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ludChhcnJfaWR4IC8gNCldO31cXFxcbmZsb2F0IGZsb2F0X2ogPSBub2RlX2J1ZmZlci54O1xcXFxudmVjNCBuZXh0Tm9kZSA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpbnQoZmxvYXRfaildO1xcXFxuZmxvYXQgdnggPSBuZXh0Tm9kZS54IC0gY3VycmVudE5vZGUueDtcXFxcbmZsb2F0IHZ5ID0gbmV4dE5vZGUueSAtIGN1cnJlbnROb2RlLnk7XFxcXG5mbG9hdCBkaXN0ID0gc3FydCgodnggKiB2eCkgKyAodnkgKiB2eSkpICsgMC4wMTtcXFxcbmZsb2F0IGRpcmV4ID0gdnggLyBkaXN0O1xcXFxuZmxvYXQgZGlyZXkgPSB2eSAvIGRpc3Q7XFxcXG5mbG9hdCBlZGdlTGVuZ3RoID0gbm9kZV9idWZmZXIueTtcXFxcbmZsb2F0IGVkZ2VTdHJlbmd0aCA9IG5vZGVfYnVmZmVyLno7XFxcXG5mbG9hdCBkaWZmID0gZWRnZUxlbmd0aCAtIGRpc3Q7XFxcXG5mbG9hdCBwYXJhbSA9IChkaWZmICogZWRnZVN0cmVuZ3RoKSAvIG1hc3M7XFxcXG5heCAtPSBkaXJleCAqIHBhcmFtO1xcXFxuYXkgLT0gZGlyZXkgKiBwYXJhbTt9XFxcXG5yZXR1cm4gdmVjMihheCwgYXkpO31cXFxcbnZvaWQgbWFpbigpIHtpbnQgaSA9IGdsb2JhbEludm9jYXRpb25JRC54O1xcXFxudmVjNCBjdXJyZW50Tm9kZSA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXTtcXFxcbnZlYzQgbW92ZW1lbnQgPSBnV2ViR1BVQnVmZmVyMS51X0F2ZU1vdmVtZW50WzBdO1xcXFxuZmxvYXQgYXggPSAwLjA7XFxcXG5mbG9hdCBheSA9IDAuMDtcXFxcbmlmICgoaSA+PSBWRVJURVhfQ09VTlQpIHx8IChtb3ZlbWVudC54IDwgZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9taW5Nb3ZlbWVudCkpIHtnV2ViR1BVQnVmZmVyMC51X0RhdGFbaV0gPSBjdXJyZW50Tm9kZTtcXFxcbnJldHVybiA7fVxcXFxudmVjNCBub2RlQXR0cmlidXRlczEgPSBnV2ViR1BVQnVmZmVyMi51X05vZGVBdHRyaWJ1dGVBcnJheTFbaV07XFxcXG52ZWM0IG5vZGVBdHRyaWJ1dGVzMiA9IGdXZWJHUFVCdWZmZXIzLnVfTm9kZUF0dHJpYnV0ZUFycmF5MltpXTtcXFxcbnZlYzIgcmVwdWxzaXZlID0gY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5heCArPSByZXB1bHNpdmUueDtcXFxcbmF5ICs9IHJlcHVsc2l2ZS55O1xcXFxudmVjMiBhdHRyYWN0aXZlID0gY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMSk7XFxcXG5heCArPSBhdHRyYWN0aXZlLng7XFxcXG5heSArPSBhdHRyYWN0aXZlLnk7XFxcXG52ZWMyIGdyYXZpdHkgPSBjYWxjR3Jhdml0eShpLCBjdXJyZW50Tm9kZSwgbm9kZUF0dHJpYnV0ZXMyKTtcXFxcbmF4IC09IGdyYXZpdHkueDtcXFxcbmF5IC09IGdyYXZpdHkueTtcXFxcbmZsb2F0IHBhcmFtID0gZ1dlYkdQVVVuaWZvcm1QYXJhbXMudV9pbnRlcnZhbCAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfZGFtcGluZztcXFxcbmZsb2F0IHZ4ID0gYXggKiBwYXJhbTtcXFxcbmZsb2F0IHZ5ID0gYXkgKiBwYXJhbTtcXFxcbmZsb2F0IHZsZW5ndGggPSBzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAwMDE7XFxcXG5pZiAodmxlbmd0aCA+IGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfbWF4U3BlZWQpIHtmbG9hdCBwYXJhbTIgPSBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X21heFNwZWVkIC8gdmxlbmd0aDtcXFxcbnZ4ID0gcGFyYW0yICogdng7XFxcXG52eSA9IHBhcmFtMiAqIHZ5O31cXFxcbmZsb2F0IGRpc3R4ID0gdnggKiBnV2ViR1BVVW5pZm9ybVBhcmFtcy51X2ludGVydmFsO1xcXFxuZmxvYXQgZGlzdHkgPSB2eSAqIGdXZWJHUFVVbmlmb3JtUGFyYW1zLnVfaW50ZXJ2YWw7XFxcXG5mbG9hdCBkaXN0TGVuZ3RoID0gc3FydCgoZGlzdHggKiBkaXN0eCkgKyAoZGlzdHkgKiBkaXN0eSkpO1xcXFxuaWYgKChub2RlQXR0cmlidXRlczEudyAhPSAwLjApICYmIChub2RlQXR0cmlidXRlczIudyAhPSAwLjApKSB7Z1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2ldID0gdmVjNChub2RlQXR0cmlidXRlczEudywgbm9kZUF0dHJpYnV0ZXMyLncsIGN1cnJlbnROb2RlLnosIDAuMCk7fWVsc2Uge2dXZWJHUFVCdWZmZXIwLnVfRGF0YVtpXSA9IHZlYzQoY3VycmVudE5vZGUueCArIGRpc3R4LCBjdXJyZW50Tm9kZS55ICsgZGlzdHksIGN1cnJlbnROb2RlLnosIGRpc3RMZW5ndGgpO319XFxcXG5cIixcIkdMU0wxMDBcIjpcIlxcXFxuXFxcXG5mbG9hdCBlcHNpbG9uID0gMC4wMDAwMTtcXFxcbnZlYzIgYWRkclRyYW5zbGF0aW9uXzFEdG8yRChmbG9hdCBhZGRyZXNzMUQsIHZlYzIgdGV4U2l6ZSkge1xcXFxuICB2ZWMyIGNvbnZfY29uc3QgPSB2ZWMyKDEuMCAvIHRleFNpemUueCwgMS4wIC8gKHRleFNpemUueCAqIHRleFNpemUueSkpO1xcXFxuICB2ZWMyIG5vcm1BZGRyMkQgPSBmbG9hdChhZGRyZXNzMUQpICogY29udl9jb25zdDtcXFxcbiAgcmV0dXJuIHZlYzIoZnJhY3Qobm9ybUFkZHIyRC54ICsgZXBzaWxvbiksIG5vcm1BZGRyMkQueSk7XFxcXG59XFxcXG5cXFxcbnZvaWQgYmFycmllcigpIHt9XFxcXG4gIFxcXFxuXFxcXG51bmlmb3JtIHZlYzIgdV9PdXRwdXRUZXh0dXJlU2l6ZTtcXFxcbnVuaWZvcm0gaW50IHVfT3V0cHV0VGV4ZWxDb3VudDtcXFxcbnZhcnlpbmcgdmVjMiB2X1RleENvb3JkO1xcXFxuXFxcXG5ib29sIGdXZWJHUFVEZWJ1ZyA9IGZhbHNlO1xcXFxudmVjNCBnV2ViR1BVRGVidWdPdXRwdXQgPSB2ZWM0KDAuMCk7XFxcXG5cXFxcbiNkZWZpbmUgTUFYX0VER0VfUEVSX1ZFUlRFWCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX01BWF9FREdFX1BFUl9WRVJURVhcXFxcbiNkZWZpbmUgVkVSVEVYX0NPVU5UIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UXFxcXG4jZGVmaW5lIFNISUZUXzIwIDEwNDg1NzYuMFxcXFxuXFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0RhdGE7XFxcXG51bmlmb3JtIHZlYzIgdV9EYXRhU2l6ZTtcXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YSh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9EYXRhLCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGZsb2F0IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfRGF0YShhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9EYXRhU2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGludCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIGZsb2F0IHVfZGFtcGluZztcXFxcbnVuaWZvcm0gZmxvYXQgdV9tYXhTcGVlZDtcXFxcbnVuaWZvcm0gZmxvYXQgdV9taW5Nb3ZlbWVudDtcXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfQXZlTW92ZW1lbnQ7XFxcXG51bmlmb3JtIHZlYzIgdV9BdmVNb3ZlbWVudFNpemU7XFxcXG52ZWM0IGdldERhdGF1X0F2ZU1vdmVtZW50KHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X0F2ZU1vdmVtZW50LCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9BdmVNb3ZlbWVudChmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0F2ZU1vdmVtZW50KGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X0F2ZU1vdmVtZW50U2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9BdmVNb3ZlbWVudChpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9BdmVNb3ZlbWVudChmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnVuaWZvcm0gZmxvYXQgdV9jb3Vsb21iRGlzU2NhbGU7XFxcXG51bmlmb3JtIGZsb2F0IHVfZmFjdG9yO1xcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9Ob2RlQXR0cmlidXRlQXJyYXkxO1xcXFxudW5pZm9ybSB2ZWMyIHVfTm9kZUF0dHJpYnV0ZUFycmF5MVNpemU7XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTEodmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfTm9kZUF0dHJpYnV0ZUFycmF5MSwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MShmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTEoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfTm9kZUF0dHJpYnV0ZUFycmF5MVNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MShpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkxKGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudW5pZm9ybSBzYW1wbGVyMkQgdV9Ob2RlQXR0cmlidXRlQXJyYXkyO1xcXFxudW5pZm9ybSB2ZWMyIHVfTm9kZUF0dHJpYnV0ZUFycmF5MlNpemU7XFxcXG52ZWM0IGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTIodmVjMiBhZGRyZXNzMkQpIHtcXFxcbiAgcmV0dXJuIHZlYzQodGV4dHVyZTJEKHVfTm9kZUF0dHJpYnV0ZUFycmF5MiwgYWRkcmVzczJEKS5yZ2JhKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MihmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X05vZGVBdHRyaWJ1dGVBcnJheTIoYWRkclRyYW5zbGF0aW9uXzFEdG8yRChhZGRyZXNzMUQsIHVfTm9kZUF0dHJpYnV0ZUFycmF5MlNpemUpKTtcXFxcbn1cXFxcbnZlYzQgZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MihpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkyKGZsb2F0KGFkZHJlc3MxRCkpO1xcXFxufVxcXFxudW5pZm9ybSBmbG9hdCB1X2ludGVydmFsO1xcXFxuaXZlYzIgdW5wYWNrX2Zsb2F0KGZsb2F0IHBhY2tlZFZhbHVlKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmludCBwYWNrZWRJbnRWYWx1ZSA9IGludChwYWNrZWRWYWx1ZSk7XFxcXG5pbnQgdjAgPSBwYWNrZWRJbnRWYWx1ZSAvIGludChTSElGVF8yMCk7XFxcXG5yZXR1cm4gaXZlYzIodjAsIHBhY2tlZEludFZhbHVlIC0gKHYwICogaW50KFNISUZUXzIwKSkpO31cXFxcbnZlYzIgY2FsY1JlcHVsc2l2ZShpbnQgaSwgdmVjNCBjdXJyZW50Tm9kZSkge1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsIDEsIDEpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKDEsIDEsIDEpOyAgICAgXFxcXG5pbnQgZ2xvYmFsSW52b2NhdGlvbkluZGV4ID0gaW50KGZsb29yKHZfVGV4Q29vcmQueCAqIHVfT3V0cHV0VGV4dHVyZVNpemUueCkpXFxcXG4gICsgaW50KGZsb29yKHZfVGV4Q29vcmQueSAqIHVfT3V0cHV0VGV4dHVyZVNpemUueSkpICogaW50KHVfT3V0cHV0VGV4dHVyZVNpemUueCk7XFxcXG5pbnQgd29ya0dyb3VwSURMZW5ndGggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55ICogd29ya0dyb3VwU2l6ZS56KTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMod29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnkgLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURaID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURZID0gKGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSkgLyB3b3JrR3JvdXBTaXplLng7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURYID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55IC0gbG9jYWxJbnZvY2F0aW9uSURZICogd29ya0dyb3VwU2l6ZS54O1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhsb2NhbEludm9jYXRpb25JRFgsIGxvY2FsSW52b2NhdGlvbklEWSwgbG9jYWxJbnZvY2F0aW9uSURaKTtcXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IHdvcmtHcm91cElEICogd29ya0dyb3VwU2l6ZSArIGxvY2FsSW52b2NhdGlvbklEO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gbG9jYWxJbnZvY2F0aW9uSUQueiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueVxcXFxuICAgICAgICAgICAgICAgICsgbG9jYWxJbnZvY2F0aW9uSUQueSAqIHdvcmtHcm91cFNpemUueCArIGxvY2FsSW52b2NhdGlvbklELng7XFxcXG5mbG9hdCBheCA9IDAuMDtcXFxcbmZsb2F0IGF5ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge2lmIChpICE9IGopIHt2ZWM0IG5leHROb2RlID0gZ2V0RGF0YXVfRGF0YShqKTtcXFxcbmZsb2F0IHZ4ID0gY3VycmVudE5vZGUueCAtIG5leHROb2RlLng7XFxcXG5mbG9hdCB2eSA9IGN1cnJlbnROb2RlLnkgLSBuZXh0Tm9kZS55O1xcXFxuZmxvYXQgZGlzdCA9IHNxcnQoKHZ4ICogdngpICsgKHZ5ICogdnkpKSArIDAuMDE7XFxcXG5mbG9hdCBuX2Rpc3QgPSAoZGlzdCArIDAuMSkgKiB1X2NvdWxvbWJEaXNTY2FsZTtcXFxcbmZsb2F0IGRpcmV4ID0gdnggLyBkaXN0O1xcXFxuZmxvYXQgZGlyZXkgPSB2eSAvIGRpc3Q7XFxcXG52ZWM0IGF0dHJpYnV0ZXNpID0gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MShpKTtcXFxcbnZlYzQgYXR0cmlidXRlc2ogPSBnZXREYXRhdV9Ob2RlQXR0cmlidXRlQXJyYXkxKGopO1xcXFxuZmxvYXQgbWFzc2kgPSBhdHRyaWJ1dGVzaS54O1xcXFxuZmxvYXQgbm9kZVN0cmVuZ3RoaSA9IGF0dHJpYnV0ZXNpLno7XFxcXG5mbG9hdCBub2RlU3RyZW5ndGhqID0gYXR0cmlidXRlc2ouejtcXFxcbmZsb2F0IG5vZGVTdHJlbmd0aCA9IChub2RlU3RyZW5ndGhpICsgbm9kZVN0cmVuZ3RoaikgLyAyLjA7XFxcXG5mbG9hdCBwYXJhbSA9IChub2RlU3RyZW5ndGggKiB1X2ZhY3RvcikgLyAobl9kaXN0ICogbl9kaXN0KTtcXFxcbmF4ICs9IGRpcmV4ICogcGFyYW07XFxcXG5heSArPSBkaXJleSAqIHBhcmFtO319XFxcXG5yZXR1cm4gdmVjMihheCwgYXkpO31cXFxcbnZlYzIgY2FsY0dyYXZpdHkoaW50IGksIHZlYzQgY3VycmVudE5vZGUsIHZlYzQgYXR0cmlidXRlczIpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuZmxvYXQgdnggPSBjdXJyZW50Tm9kZS54IC0gYXR0cmlidXRlczIueDtcXFxcbmZsb2F0IHZ5ID0gY3VycmVudE5vZGUueSAtIGF0dHJpYnV0ZXMyLnk7XFxcXG5mbG9hdCBheCA9IHZ4ICogYXR0cmlidXRlczIuejtcXFxcbmZsb2F0IGF5ID0gdnkgKiBhdHRyaWJ1dGVzMi56O1xcXFxucmV0dXJuIHZlYzIoYXgsIGF5KTt9XFxcXG52ZWMyIGNhbGNBdHRyYWN0aXZlKGludCBpLCB2ZWM0IGN1cnJlbnROb2RlLCB2ZWM0IGF0dHJpYnV0ZXMxKSB7XFxcXG5pdmVjMyB3b3JrR3JvdXBTaXplID0gaXZlYzMoMSwgMSwgMSk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoMSwgMSwgMSk7ICAgICBcXFxcbmludCBnbG9iYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZmxvb3Iodl9UZXhDb29yZC54ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS54KSlcXFxcbiAgKyBpbnQoZmxvb3Iodl9UZXhDb29yZC55ICogdV9PdXRwdXRUZXh0dXJlU2l6ZS55KSkgKiBpbnQodV9PdXRwdXRUZXh0dXJlU2l6ZS54KTtcXFxcbmludCB3b3JrR3JvdXBJRExlbmd0aCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgKiB3b3JrR3JvdXBTaXplLnopO1xcXFxuaXZlYzMgd29ya0dyb3VwSUQgPSBpdmVjMyh3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueSAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFogPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KTtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFkgPSAoZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55KSAvIHdvcmtHcm91cFNpemUueDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JRFggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkgLSBsb2NhbEludm9jYXRpb25JRFkgKiB3b3JrR3JvdXBTaXplLng7XFxcXG5pdmVjMyBsb2NhbEludm9jYXRpb25JRCA9IGl2ZWMzKGxvY2FsSW52b2NhdGlvbklEWCwgbG9jYWxJbnZvY2F0aW9uSURZLCBsb2NhbEludm9jYXRpb25JRFopO1xcXFxuaXZlYzMgZ2xvYmFsSW52b2NhdGlvbklEID0gd29ya0dyb3VwSUQgKiB3b3JrR3JvdXBTaXplICsgbG9jYWxJbnZvY2F0aW9uSUQ7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBsb2NhbEludm9jYXRpb25JRC56ICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55XFxcXG4gICAgICAgICAgICAgICAgKyBsb2NhbEludm9jYXRpb25JRC55ICogd29ya0dyb3VwU2l6ZS54ICsgbG9jYWxJbnZvY2F0aW9uSUQueDtcXFxcbmZsb2F0IG1hc3MgPSBhdHRyaWJ1dGVzMS54O1xcXFxuZmxvYXQgYXggPSAwLjA7XFxcXG5mbG9hdCBheSA9IDAuMDtcXFxcbml2ZWMyIGNvbXByZXNzZWQgPSB1bnBhY2tfZmxvYXQoY3VycmVudE5vZGUueik7XFxcXG5pbnQgbGVuZ3RoID0gY29tcHJlc3NlZC54O1xcXFxuaW50IGFycl9vZmZzZXQgPSBjb21wcmVzc2VkLnk7XFxcXG52ZWM0IG5vZGVfYnVmZmVyO1xcXFxuZm9yIChpbnQgcCA9IDA7IHAgPCBNQVhfRURHRV9QRVJfVkVSVEVYOyBwKyspIHtpZiAocCA+PSBsZW5ndGgpIHticmVhazt9XFxcXG5pbnQgYXJyX2lkeCA9IGFycl9vZmZzZXQgKyAoNCAqIHApO1xcXFxuaW50IGJ1Zl9vZmZzZXQgPSBhcnJfaWR4IC0gKChhcnJfaWR4IC8gNCkgKiA0KTtcXFxcbmlmICgocCA9PSAwKSB8fCAoYnVmX29mZnNldCA9PSAwKSkge25vZGVfYnVmZmVyID0gZ2V0RGF0YXVfRGF0YShpbnQoYXJyX2lkeCAvIDQpKTt9XFxcXG5mbG9hdCBmbG9hdF9qID0gbm9kZV9idWZmZXIueDtcXFxcbnZlYzQgbmV4dE5vZGUgPSBnZXREYXRhdV9EYXRhKGludChmbG9hdF9qKSk7XFxcXG5mbG9hdCB2eCA9IG5leHROb2RlLnggLSBjdXJyZW50Tm9kZS54O1xcXFxuZmxvYXQgdnkgPSBuZXh0Tm9kZS55IC0gY3VycmVudE5vZGUueTtcXFxcbmZsb2F0IGRpc3QgPSBzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAxO1xcXFxuZmxvYXQgZGlyZXggPSB2eCAvIGRpc3Q7XFxcXG5mbG9hdCBkaXJleSA9IHZ5IC8gZGlzdDtcXFxcbmZsb2F0IGVkZ2VMZW5ndGggPSBub2RlX2J1ZmZlci55O1xcXFxuZmxvYXQgZWRnZVN0cmVuZ3RoID0gbm9kZV9idWZmZXIuejtcXFxcbmZsb2F0IGRpZmYgPSBlZGdlTGVuZ3RoIC0gZGlzdDtcXFxcbmZsb2F0IHBhcmFtID0gKGRpZmYgKiBlZGdlU3RyZW5ndGgpIC8gbWFzcztcXFxcbmF4IC09IGRpcmV4ICogcGFyYW07XFxcXG5heSAtPSBkaXJleSAqIHBhcmFtO31cXFxcbnJldHVybiB2ZWMyKGF4LCBheSk7fVxcXFxudm9pZCBtYWluKCkge1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsIDEsIDEpO1xcXFxuaXZlYzMgbnVtV29ya0dyb3VwcyA9IGl2ZWMzKDEsIDEsIDEpOyAgICAgXFxcXG5pbnQgZ2xvYmFsSW52b2NhdGlvbkluZGV4ID0gaW50KGZsb29yKHZfVGV4Q29vcmQueCAqIHVfT3V0cHV0VGV4dHVyZVNpemUueCkpXFxcXG4gICsgaW50KGZsb29yKHZfVGV4Q29vcmQueSAqIHVfT3V0cHV0VGV4dHVyZVNpemUueSkpICogaW50KHVfT3V0cHV0VGV4dHVyZVNpemUueCk7XFxcXG5pbnQgd29ya0dyb3VwSURMZW5ndGggPSBnbG9iYWxJbnZvY2F0aW9uSW5kZXggLyAod29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55ICogd29ya0dyb3VwU2l6ZS56KTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMod29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnkgLyBudW1Xb3JrR3JvdXBzLnosIHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy54IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURaID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURZID0gKGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSkgLyB3b3JrR3JvdXBTaXplLng7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSURYID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC0gbG9jYWxJbnZvY2F0aW9uSURaICogd29ya0dyb3VwU2l6ZS54ICogd29ya0dyb3VwU2l6ZS55IC0gbG9jYWxJbnZvY2F0aW9uSURZICogd29ya0dyb3VwU2l6ZS54O1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhsb2NhbEludm9jYXRpb25JRFgsIGxvY2FsSW52b2NhdGlvbklEWSwgbG9jYWxJbnZvY2F0aW9uSURaKTtcXFxcbml2ZWMzIGdsb2JhbEludm9jYXRpb25JRCA9IHdvcmtHcm91cElEICogd29ya0dyb3VwU2l6ZSArIGxvY2FsSW52b2NhdGlvbklEO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbkluZGV4ID0gbG9jYWxJbnZvY2F0aW9uSUQueiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueVxcXFxuICAgICAgICAgICAgICAgICsgbG9jYWxJbnZvY2F0aW9uSUQueSAqIHdvcmtHcm91cFNpemUueCArIGxvY2FsSW52b2NhdGlvbklELng7XFxcXG5pbnQgaSA9IGdsb2JhbEludm9jYXRpb25JRC54O1xcXFxudmVjNCBjdXJyZW50Tm9kZSA9IGdldERhdGF1X0RhdGEoaSk7XFxcXG52ZWM0IG1vdmVtZW50ID0gZ2V0RGF0YXVfQXZlTW92ZW1lbnQoMC4wKTtcXFxcbmZsb2F0IGF4ID0gMC4wO1xcXFxuZmxvYXQgYXkgPSAwLjA7XFxcXG5pZiAoKGkgPj0gVkVSVEVYX0NPVU5UKSB8fCAobW92ZW1lbnQueCA8IHVfbWluTW92ZW1lbnQpKSB7Z2xfRnJhZ0NvbG9yID0gdmVjNChjdXJyZW50Tm9kZSk7XFxcXG5yZXR1cm4gO31cXFxcbnZlYzQgbm9kZUF0dHJpYnV0ZXMxID0gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MShpKTtcXFxcbnZlYzQgbm9kZUF0dHJpYnV0ZXMyID0gZ2V0RGF0YXVfTm9kZUF0dHJpYnV0ZUFycmF5MihpKTtcXFxcbnZlYzIgcmVwdWxzaXZlID0gY2FsY1JlcHVsc2l2ZShpLCBjdXJyZW50Tm9kZSk7XFxcXG5heCArPSByZXB1bHNpdmUueDtcXFxcbmF5ICs9IHJlcHVsc2l2ZS55O1xcXFxudmVjMiBhdHRyYWN0aXZlID0gY2FsY0F0dHJhY3RpdmUoaSwgY3VycmVudE5vZGUsIG5vZGVBdHRyaWJ1dGVzMSk7XFxcXG5heCArPSBhdHRyYWN0aXZlLng7XFxcXG5heSArPSBhdHRyYWN0aXZlLnk7XFxcXG52ZWMyIGdyYXZpdHkgPSBjYWxjR3Jhdml0eShpLCBjdXJyZW50Tm9kZSwgbm9kZUF0dHJpYnV0ZXMyKTtcXFxcbmF4IC09IGdyYXZpdHkueDtcXFxcbmF5IC09IGdyYXZpdHkueTtcXFxcbmZsb2F0IHBhcmFtID0gdV9pbnRlcnZhbCAqIHVfZGFtcGluZztcXFxcbmZsb2F0IHZ4ID0gYXggKiBwYXJhbTtcXFxcbmZsb2F0IHZ5ID0gYXkgKiBwYXJhbTtcXFxcbmZsb2F0IHZsZW5ndGggPSBzcXJ0KCh2eCAqIHZ4KSArICh2eSAqIHZ5KSkgKyAwLjAwMDE7XFxcXG5pZiAodmxlbmd0aCA+IHVfbWF4U3BlZWQpIHtmbG9hdCBwYXJhbTIgPSB1X21heFNwZWVkIC8gdmxlbmd0aDtcXFxcbnZ4ID0gcGFyYW0yICogdng7XFxcXG52eSA9IHBhcmFtMiAqIHZ5O31cXFxcbmZsb2F0IGRpc3R4ID0gdnggKiB1X2ludGVydmFsO1xcXFxuZmxvYXQgZGlzdHkgPSB2eSAqIHVfaW50ZXJ2YWw7XFxcXG5mbG9hdCBkaXN0TGVuZ3RoID0gc3FydCgoZGlzdHggKiBkaXN0eCkgKyAoZGlzdHkgKiBkaXN0eSkpO1xcXFxuaWYgKChub2RlQXR0cmlidXRlczEudyAhPSAwLjApICYmIChub2RlQXR0cmlidXRlczIudyAhPSAwLjApKSB7Z2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWM0KG5vZGVBdHRyaWJ1dGVzMS53LCBub2RlQXR0cmlidXRlczIudywgY3VycmVudE5vZGUueiwgMC4wKSk7fWVsc2Uge2dsX0ZyYWdDb2xvciA9IHZlYzQodmVjNChjdXJyZW50Tm9kZS54ICsgZGlzdHgsIGN1cnJlbnROb2RlLnkgKyBkaXN0eSwgY3VycmVudE5vZGUueiwgZGlzdExlbmd0aCkpO31pZiAoZ1dlYkdQVURlYnVnKSB7XFxcXG4gIGdsX0ZyYWdDb2xvciA9IGdXZWJHUFVEZWJ1Z091dHB1dDtcXFxcbn19XFxcXG5cIn0sXCJjb250ZXh0XCI6e1wibmFtZVwiOlwiXCIsXCJkaXNwYXRjaFwiOlsxLDEsMV0sXCJ0aHJlYWRHcm91cFNpemVcIjpbMSwxLDFdLFwibWF4SXRlcmF0aW9uXCI6MSxcImRlZmluZXNcIjpbe1wibmFtZVwiOlwiTUFYX0VER0VfUEVSX1ZFUlRFWFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInJ1bnRpbWVcIjp0cnVlfSx7XCJuYW1lXCI6XCJWRVJURVhfQ09VTlRcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJydW50aW1lXCI6dHJ1ZX0se1wibmFtZVwiOlwiU0hJRlRfMjBcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJ2YWx1ZVwiOjEwNDg1NzYsXCJydW50aW1lXCI6ZmFsc2V9XSxcInVuaWZvcm1zXCI6W3tcIm5hbWVcIjpcInVfRGF0YVwiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjpmYWxzZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X2RhbXBpbmdcIixcInR5cGVcIjpcIkZsb2F0XCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlVuaWZvcm1cIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X21heFNwZWVkXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9taW5Nb3ZlbWVudFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfQXZlTW92ZW1lbnRcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6dHJ1ZSxcIndyaXRlb25seVwiOmZhbHNlLFwic2l6ZVwiOlsxLDFdfSx7XCJuYW1lXCI6XCJ1X2NvdWxvbWJEaXNTY2FsZVwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfZmFjdG9yXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwic3RvcmFnZUNsYXNzXCI6XCJVbmlmb3JtXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9Ob2RlQXR0cmlidXRlQXJyYXkxXCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9Ob2RlQXR0cmlidXRlQXJyYXkyXCIsXCJ0eXBlXCI6XCJ2ZWM0PGYzMj5bXVwiLFwic3RvcmFnZUNsYXNzXCI6XCJTdG9yYWdlQnVmZmVyXCIsXCJyZWFkb25seVwiOnRydWUsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX0se1wibmFtZVwiOlwidV9pbnRlcnZhbFwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19XSxcImdsb2JhbERlY2xhcmF0aW9uc1wiOltdLFwib3V0cHV0XCI6e1wibmFtZVwiOlwidV9EYXRhXCIsXCJzaXplXCI6WzEsMV0sXCJsZW5ndGhcIjoxfSxcIm5lZWRQaW5ncG9uZ1wiOnRydWV9fWA7XG5leHBvcnQgY29uc3QgYXZlTW92ZW1lbnRDb2RlID0gYFxuY29uc3QgVkVSVEVYX0NPVU5UO1xuQG51bXRocmVhZHMoMSwgMSwgMSlcbmNsYXNzIENhbGNBdmVNb3ZlbWVudCB7XG4gIEBpblxuICB1X0RhdGE6IHZlYzRbXTtcbiAgQGluXG4gIHVfaXRlcjogZmxvYXQ7XG4gIEBpbiBAb3V0XG4gIHVfQXZlTW92ZW1lbnQ6IHZlYzRbXTtcbiAgQG1haW5cbiAgY29tcHV0ZSgpIHtcbiAgICBsZXQgbW92ZW1lbnQgPSAwO1xuICAgIGZvciAobGV0IGo6IGludCA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge1xuICAgICAgY29uc3QgdmVydGV4ID0gdGhpcy51X0RhdGFbal07XG4gICAgICBtb3ZlbWVudCArPSB2ZXJ0ZXhbM107XG4gICAgfVxuICAgIG1vdmVtZW50ID0gbW92ZW1lbnQgLyBmbG9hdChWRVJURVhfQ09VTlQpO1xuICAgIHRoaXMudV9BdmVNb3ZlbWVudFswXSA9IFttb3ZlbWVudCwgMCwgMCwgMF07XG4gIH1cbn1cbmA7XG5leHBvcnQgY29uc3QgYXZlTW92ZW1lbnRCdW5kbGUgPSBge1wic2hhZGVyc1wiOntcIldHU0xcIjpcImltcG9ydCBcXFxcXCJHTFNMLnN0ZC40NTBcXFxcXCIgYXMgc3RkO1xcXFxuXFxcXG5cXFxcbiMgdmFyIGdXZWJHUFVEZWJ1ZyA6IGJvb2wgPSBmYWxzZTtcXFxcbiMgdmFyIGdXZWJHUFVEZWJ1Z091dHB1dCA6IHZlYzQ8ZjMyPiA9IHZlYzQ8ZjMyPigwLjApO1xcXFxuXFxcXG5bW2J1aWx0aW4gZ2xvYmFsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGdsb2JhbEludm9jYXRpb25JRCA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfc2l6ZV1dIHZhcjxpbj4gd29ya0dyb3VwU2l6ZSA6IHZlYzM8dTMyPjtcXFxcbiMgW1tidWlsdGluIHdvcmtfZ3JvdXBfaWRdXSB2YXI8aW4+IHdvcmtHcm91cElEIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWRdXSB2YXI8aW4+IGxvY2FsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+O1xcXFxuIyBbW2J1aWx0aW4gbnVtX3dvcmtfZ3JvdXBzXV0gdmFyPGluPiBudW1Xb3JrR3JvdXBzIDogdmVjMzx1MzI+O1xcXFxuW1tidWlsdGluIGxvY2FsX2ludm9jYXRpb25faWR4XV0gdmFyPGluPiBsb2NhbEludm9jYXRpb25JbmRleCA6IHUzMjtcXFxcblxcXFxudHlwZSBHV2ViR1BVUGFyYW1zID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X2l0ZXIgOiBmMzI7XFxcXG59O1xcXFxuW1tiaW5kaW5nIDAsIHNldCAwXV0gdmFyPHVuaWZvcm0+IGdXZWJHUFVVbmlmb3JtUGFyYW1zIDogR1dlYkdQVVBhcmFtcztcXFxcbnR5cGUgR1dlYkdQVUJ1ZmZlcjAgPSBbW2Jsb2NrXV0gc3RydWN0IHtcXFxcbiAgW1tvZmZzZXQgMF1dIHVfRGF0YSA6IFtbc3RyaWRlIDE2XV0gYXJyYXk8dmVjNDxmMzI+PjtcXFxcbn07XFxcXG5bW2JpbmRpbmcgMSwgc2V0IDBdXSB2YXI8c3RvcmFnZV9idWZmZXI+IGdXZWJHUFVCdWZmZXIwIDogR1dlYkdQVUJ1ZmZlcjA7XFxcXG50eXBlIEdXZWJHUFVCdWZmZXIxID0gW1tibG9ja11dIHN0cnVjdCB7XFxcXG4gIFtbb2Zmc2V0IDBdXSB1X0F2ZU1vdmVtZW50IDogW1tzdHJpZGUgMTZdXSBhcnJheTx2ZWM0PGYzMj4+O1xcXFxufTtcXFxcbltbYmluZGluZyAyLCBzZXQgMF1dIHZhcjxzdG9yYWdlX2J1ZmZlcj4gZ1dlYkdQVUJ1ZmZlcjEgOiBHV2ViR1BVQnVmZmVyMTtcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5mbiBtYWluKCkgLT4gdm9pZCB7dmFyIG1vdmVtZW50IDogZjMyID0gMC4wO1xcXFxuZm9yICh2YXIgaiA6IGkzMiA9IDA7IGogPCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVDsgaiA9IGogKyAxKSB7dmFyIHZlcnRleCA6IHZlYzQ8ZjMyPiA9IGdXZWJHUFVCdWZmZXIwLnVfRGF0YVtqXTtcXFxcbm1vdmVtZW50ID0gbW92ZW1lbnQgKyB2ZXJ0ZXgudzt9XFxcXG5tb3ZlbWVudCA9IG1vdmVtZW50IC8gZjMyKF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UKTtcXFxcbmdXZWJHUFVCdWZmZXIxLnVfQXZlTW92ZW1lbnRbMF0gPSB2ZWM0PGYzMj4obW92ZW1lbnQsIDAuMCwgMC4wLCAwLjApO1xcXFxucmV0dXJuO31cXFxcblxcXFxuZW50cnlfcG9pbnQgY29tcHV0ZSBhcyBcXFxcXCJtYWluXFxcXFwiID0gbWFpbjtcXFxcblwiLFwiR0xTTDQ1MFwiOlwiXFxcXG5cXFxcblxcXFxuYm9vbCBnV2ViR1BVRGVidWcgPSBmYWxzZTtcXFxcbnZlYzQgZ1dlYkdQVURlYnVnT3V0cHV0ID0gdmVjNCgwLjApO1xcXFxuXFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhnbF9HbG9iYWxJbnZvY2F0aW9uSUQpO1xcXFxuaXZlYzMgd29ya0dyb3VwU2l6ZSA9IGl2ZWMzKDEsMSwxKTtcXFxcbml2ZWMzIHdvcmtHcm91cElEID0gaXZlYzMoZ2xfV29ya0dyb3VwSUQpO1xcXFxuaXZlYzMgbG9jYWxJbnZvY2F0aW9uSUQgPSBpdmVjMyhnbF9Mb2NhbEludm9jYXRpb25JRCk7XFxcXG5pdmVjMyBudW1Xb3JrR3JvdXBzID0gaXZlYzMoZ2xfTnVtV29ya0dyb3Vwcyk7XFxcXG5pbnQgbG9jYWxJbnZvY2F0aW9uSW5kZXggPSBpbnQoZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXgpO1xcXFxuXFxcXG5sYXlvdXQoc3RkMTQwLCBzZXQgPSAwLCBiaW5kaW5nID0gMCkgdW5pZm9ybSBHV2ViR1BVUGFyYW1zIHtcXFxcbiAgZmxvYXQgdV9pdGVyO1xcXFxufSBnV2ViR1BVVW5pZm9ybVBhcmFtcztcXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAxKSBidWZmZXIgcmVhZG9ubHkgIEdXZWJHUFVCdWZmZXIwIHtcXFxcbiAgdmVjNCB1X0RhdGFbXTtcXFxcbn0gZ1dlYkdQVUJ1ZmZlcjA7XFxcXG5cXFxcbmxheW91dChzdGQ0MzAsIHNldCA9IDAsIGJpbmRpbmcgPSAyKSBidWZmZXIgICBHV2ViR1BVQnVmZmVyMSB7XFxcXG4gIHZlYzQgdV9BdmVNb3ZlbWVudFtdO1xcXFxufSBnV2ViR1BVQnVmZmVyMTtcXFxcblxcXFxuXFxcXG5cXFxcbiNkZWZpbmUgVkVSVEVYX0NPVU5UIF9fRGVmaW5lVmFsdWVQbGFjZWhvbGRlcl9fVkVSVEVYX0NPVU5UXFxcXG5sYXlvdXQgKFxcXFxuICBsb2NhbF9zaXplX3ggPSAxLFxcXFxuICBsb2NhbF9zaXplX3kgPSAxLFxcXFxuICBsb2NhbF9zaXplX3ogPSAxXFxcXG4pIGluO1xcXFxuXFxcXG5cXFxcblxcXFxudm9pZCBtYWluKCkge2Zsb2F0IG1vdmVtZW50ID0gMC4wO1xcXFxuZm9yIChpbnQgaiA9IDA7IGogPCBWRVJURVhfQ09VTlQ7IGorKykge3ZlYzQgdmVydGV4ID0gZ1dlYkdQVUJ1ZmZlcjAudV9EYXRhW2pdO1xcXFxubW92ZW1lbnQgKz0gdmVydGV4Lnc7fVxcXFxubW92ZW1lbnQgPSBtb3ZlbWVudCAvIGZsb2F0KFZFUlRFWF9DT1VOVCk7XFxcXG5nV2ViR1BVQnVmZmVyMS51X0F2ZU1vdmVtZW50WzBdID0gdmVjNChtb3ZlbWVudCwgMC4wLCAwLjAsIDAuMCk7fVxcXFxuXCIsXCJHTFNMMTAwXCI6XCJcXFxcblxcXFxuZmxvYXQgZXBzaWxvbiA9IDAuMDAwMDE7XFxcXG52ZWMyIGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoZmxvYXQgYWRkcmVzczFELCB2ZWMyIHRleFNpemUpIHtcXFxcbiAgdmVjMiBjb252X2NvbnN0ID0gdmVjMigxLjAgLyB0ZXhTaXplLngsIDEuMCAvICh0ZXhTaXplLnggKiB0ZXhTaXplLnkpKTtcXFxcbiAgdmVjMiBub3JtQWRkcjJEID0gZmxvYXQoYWRkcmVzczFEKSAqIGNvbnZfY29uc3Q7XFxcXG4gIHJldHVybiB2ZWMyKGZyYWN0KG5vcm1BZGRyMkQueCArIGVwc2lsb24pLCBub3JtQWRkcjJELnkpO1xcXFxufVxcXFxuXFxcXG52b2lkIGJhcnJpZXIoKSB7fVxcXFxuICBcXFxcblxcXFxudW5pZm9ybSB2ZWMyIHVfT3V0cHV0VGV4dHVyZVNpemU7XFxcXG51bmlmb3JtIGludCB1X091dHB1dFRleGVsQ291bnQ7XFxcXG52YXJ5aW5nIHZlYzIgdl9UZXhDb29yZDtcXFxcblxcXFxuYm9vbCBnV2ViR1BVRGVidWcgPSBmYWxzZTtcXFxcbnZlYzQgZ1dlYkdQVURlYnVnT3V0cHV0ID0gdmVjNCgwLjApO1xcXFxuXFxcXG4jZGVmaW5lIFZFUlRFWF9DT1VOVCBfX0RlZmluZVZhbHVlUGxhY2Vob2xkZXJfX1ZFUlRFWF9DT1VOVFxcXFxuXFxcXG51bmlmb3JtIHNhbXBsZXIyRCB1X0RhdGE7XFxcXG51bmlmb3JtIHZlYzIgdV9EYXRhU2l6ZTtcXFxcbnZlYzQgZ2V0RGF0YXVfRGF0YSh2ZWMyIGFkZHJlc3MyRCkge1xcXFxuICByZXR1cm4gdmVjNCh0ZXh0dXJlMkQodV9EYXRhLCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGZsb2F0IGFkZHJlc3MxRCkge1xcXFxuICByZXR1cm4gZ2V0RGF0YXVfRGF0YShhZGRyVHJhbnNsYXRpb25fMUR0bzJEKGFkZHJlc3MxRCwgdV9EYXRhU2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9EYXRhKGludCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0RhdGEoZmxvYXQoYWRkcmVzczFEKSk7XFxcXG59XFxcXG51bmlmb3JtIGZsb2F0IHVfaXRlcjtcXFxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfQXZlTW92ZW1lbnQ7XFxcXG51bmlmb3JtIHZlYzIgdV9BdmVNb3ZlbWVudFNpemU7XFxcXG52ZWM0IGdldERhdGF1X0F2ZU1vdmVtZW50KHZlYzIgYWRkcmVzczJEKSB7XFxcXG4gIHJldHVybiB2ZWM0KHRleHR1cmUyRCh1X0F2ZU1vdmVtZW50LCBhZGRyZXNzMkQpLnJnYmEpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9BdmVNb3ZlbWVudChmbG9hdCBhZGRyZXNzMUQpIHtcXFxcbiAgcmV0dXJuIGdldERhdGF1X0F2ZU1vdmVtZW50KGFkZHJUcmFuc2xhdGlvbl8xRHRvMkQoYWRkcmVzczFELCB1X0F2ZU1vdmVtZW50U2l6ZSkpO1xcXFxufVxcXFxudmVjNCBnZXREYXRhdV9BdmVNb3ZlbWVudChpbnQgYWRkcmVzczFEKSB7XFxcXG4gIHJldHVybiBnZXREYXRhdV9BdmVNb3ZlbWVudChmbG9hdChhZGRyZXNzMUQpKTtcXFxcbn1cXFxcbnZvaWQgbWFpbigpIHtcXFxcbml2ZWMzIHdvcmtHcm91cFNpemUgPSBpdmVjMygxLCAxLCAxKTtcXFxcbml2ZWMzIG51bVdvcmtHcm91cHMgPSBpdmVjMygxLCAxLCAxKTsgICAgIFxcXFxuaW50IGdsb2JhbEludm9jYXRpb25JbmRleCA9IGludChmbG9vcih2X1RleENvb3JkLnggKiB1X091dHB1dFRleHR1cmVTaXplLngpKVxcXFxuICArIGludChmbG9vcih2X1RleENvb3JkLnkgKiB1X091dHB1dFRleHR1cmVTaXplLnkpKSAqIGludCh1X091dHB1dFRleHR1cmVTaXplLngpO1xcXFxuaW50IHdvcmtHcm91cElETGVuZ3RoID0gZ2xvYmFsSW52b2NhdGlvbkluZGV4IC8gKHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAqIHdvcmtHcm91cFNpemUueik7XFxcXG5pdmVjMyB3b3JrR3JvdXBJRCA9IGl2ZWMzKHdvcmtHcm91cElETGVuZ3RoIC8gbnVtV29ya0dyb3Vwcy55IC8gbnVtV29ya0dyb3Vwcy56LCB3b3JrR3JvdXBJRExlbmd0aCAvIG51bVdvcmtHcm91cHMueCAvIG51bVdvcmtHcm91cHMueiwgd29ya0dyb3VwSURMZW5ndGggLyBudW1Xb3JrR3JvdXBzLnggLyBudW1Xb3JrR3JvdXBzLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWiA9IGdsb2JhbEludm9jYXRpb25JbmRleCAvICh3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpO1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWSA9IChnbG9iYWxJbnZvY2F0aW9uSW5kZXggLSBsb2NhbEludm9jYXRpb25JRFogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnkpIC8gd29ya0dyb3VwU2l6ZS54O1xcXFxuaW50IGxvY2FsSW52b2NhdGlvbklEWCA9IGdsb2JhbEludm9jYXRpb25JbmRleCAtIGxvY2FsSW52b2NhdGlvbklEWiAqIHdvcmtHcm91cFNpemUueCAqIHdvcmtHcm91cFNpemUueSAtIGxvY2FsSW52b2NhdGlvbklEWSAqIHdvcmtHcm91cFNpemUueDtcXFxcbml2ZWMzIGxvY2FsSW52b2NhdGlvbklEID0gaXZlYzMobG9jYWxJbnZvY2F0aW9uSURYLCBsb2NhbEludm9jYXRpb25JRFksIGxvY2FsSW52b2NhdGlvbklEWik7XFxcXG5pdmVjMyBnbG9iYWxJbnZvY2F0aW9uSUQgPSB3b3JrR3JvdXBJRCAqIHdvcmtHcm91cFNpemUgKyBsb2NhbEludm9jYXRpb25JRDtcXFxcbmludCBsb2NhbEludm9jYXRpb25JbmRleCA9IGxvY2FsSW52b2NhdGlvbklELnogKiB3b3JrR3JvdXBTaXplLnggKiB3b3JrR3JvdXBTaXplLnlcXFxcbiAgICAgICAgICAgICAgICArIGxvY2FsSW52b2NhdGlvbklELnkgKiB3b3JrR3JvdXBTaXplLnggKyBsb2NhbEludm9jYXRpb25JRC54O1xcXFxuZmxvYXQgbW92ZW1lbnQgPSAwLjA7XFxcXG5mb3IgKGludCBqID0gMDsgaiA8IFZFUlRFWF9DT1VOVDsgaisrKSB7dmVjNCB2ZXJ0ZXggPSBnZXREYXRhdV9EYXRhKGopO1xcXFxubW92ZW1lbnQgKz0gdmVydGV4Lnc7fVxcXFxubW92ZW1lbnQgPSBtb3ZlbWVudCAvIGZsb2F0KFZFUlRFWF9DT1VOVCk7XFxcXG5nbF9GcmFnQ29sb3IgPSB2ZWM0KHZlYzQobW92ZW1lbnQsIDAuMCwgMC4wLCAwLjApKTtpZiAoZ1dlYkdQVURlYnVnKSB7XFxcXG4gIGdsX0ZyYWdDb2xvciA9IGdXZWJHUFVEZWJ1Z091dHB1dDtcXFxcbn19XFxcXG5cIn0sXCJjb250ZXh0XCI6e1wibmFtZVwiOlwiXCIsXCJkaXNwYXRjaFwiOlsxLDEsMV0sXCJ0aHJlYWRHcm91cFNpemVcIjpbMSwxLDFdLFwibWF4SXRlcmF0aW9uXCI6MSxcImRlZmluZXNcIjpbe1wibmFtZVwiOlwiVkVSVEVYX0NPVU5UXCIsXCJ0eXBlXCI6XCJGbG9hdFwiLFwicnVudGltZVwiOnRydWV9XSxcInVuaWZvcm1zXCI6W3tcIm5hbWVcIjpcInVfRGF0YVwiLFwidHlwZVwiOlwidmVjNDxmMzI+W11cIixcInN0b3JhZ2VDbGFzc1wiOlwiU3RvcmFnZUJ1ZmZlclwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfaXRlclwiLFwidHlwZVwiOlwiRmxvYXRcIixcInN0b3JhZ2VDbGFzc1wiOlwiVW5pZm9ybVwiLFwicmVhZG9ubHlcIjp0cnVlLFwid3JpdGVvbmx5XCI6ZmFsc2UsXCJzaXplXCI6WzEsMV19LHtcIm5hbWVcIjpcInVfQXZlTW92ZW1lbnRcIixcInR5cGVcIjpcInZlYzQ8ZjMyPltdXCIsXCJzdG9yYWdlQ2xhc3NcIjpcIlN0b3JhZ2VCdWZmZXJcIixcInJlYWRvbmx5XCI6ZmFsc2UsXCJ3cml0ZW9ubHlcIjpmYWxzZSxcInNpemVcIjpbMSwxXX1dLFwiZ2xvYmFsRGVjbGFyYXRpb25zXCI6W10sXCJvdXRwdXRcIjp7XCJuYW1lXCI6XCJ1X0F2ZU1vdmVtZW50XCIsXCJzaXplXCI6WzEsMV0sXCJsZW5ndGhcIjoxfSxcIm5lZWRQaW5ncG9uZ1wiOnRydWV9fWA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nRm9yY2VTaGFkZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForceShader.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/grid.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/grid.js ***! \*********************************************************************************/ /*! exports provided: GridLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GridLayout\", function() { return GridLayout; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview grid layout\n * @author shiwu.wyy@antfin.com\n * this algorithm refers to - https://github.com/cytoscape/cytoscape.js/\n */\n\n\n/**\n * 网格布局\n */\nclass GridLayout extends _base__WEBPACK_IMPORTED_MODULE_1__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局起始点 */\n this.begin = [0, 0];\n /** prevents node overlap, may overflow boundingBox if not enough space */\n this.preventOverlap = true;\n /** extra spacing around nodes when preventOverlap: true */\n this.preventOverlapPadding = 10;\n /** uses all available space on false, uses minimal space on true */\n this.condense = false;\n /** a sorting function to order the nodes; e.g. function(a, b){ return a.datapublic ('weight') - b.data('weight') } */\n this.sortBy = \"degree\";\n this.nodeSize = 30;\n this.nodes = [];\n this.edges = [];\n this.width = 300;\n this.height = 300;\n this.row = 0;\n this.col = 0;\n this.cellWidth = 0;\n this.cellHeight = 0;\n this.cellUsed = {};\n this.id2manPos = {};\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n begin: [0, 0],\n preventOverlap: true,\n preventOverlapPadding: 10,\n condense: false,\n rows: undefined,\n cols: undefined,\n position: undefined,\n sortBy: \"degree\",\n nodeSize: 30\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges;\n const n = nodes.length;\n const begin = self.begin;\n if (n === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n if (n === 1) {\n nodes[0].x = begin[0];\n nodes[0].y = begin[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges,\n };\n }\n const layoutNodes = [];\n nodes.forEach((node) => {\n layoutNodes.push(node);\n });\n const nodeIdxMap = {};\n layoutNodes.forEach((node, i) => {\n nodeIdxMap[node.id] = i;\n });\n if (self.sortBy === \"degree\" ||\n !Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(self.sortBy) ||\n layoutNodes[0][self.sortBy] === undefined) {\n self.sortBy = \"degree\";\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNaN\"])(nodes[0].degree)) {\n const values = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getDegree\"])(layoutNodes.length, nodeIdxMap, edges);\n layoutNodes.forEach((node, i) => {\n node.degree = values[i];\n });\n }\n }\n // sort nodes by value\n layoutNodes.sort((n1, n2) => n2[self.sortBy] - n1[self.sortBy]);\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n const oRows = self.rows;\n const oCols = self.cols != null ? self.cols : self.columns;\n self.cells = n;\n // if rows or columns were set in self, use those values\n if (oRows != null && oCols != null) {\n self.rows = oRows;\n self.cols = oCols;\n }\n else if (oRows != null && oCols == null) {\n self.rows = oRows;\n self.cols = Math.ceil(self.cells / self.rows);\n }\n else if (oRows == null && oCols != null) {\n self.cols = oCols;\n self.rows = Math.ceil(self.cells / self.cols);\n }\n else {\n // otherwise use the automatic values and adjust accordingly\t // otherwise use the automatic values and adjust accordingly\n // width/height * splits^2 = cells where splits is number of times to split width\n self.splits = Math.sqrt((self.cells * self.height) / self.width);\n self.rows = Math.round(self.splits);\n self.cols = Math.round((self.width / self.height) * self.splits);\n }\n if (self.cols * self.rows > self.cells) {\n // otherwise use the automatic values and adjust accordingly\n // if rounding was up, see if we can reduce rows or columns\n const sm = self.small();\n const lg = self.large();\n // reducing the small side takes away the most cells, so try it first\n if ((sm - 1) * lg >= self.cells) {\n self.small(sm - 1);\n }\n else if ((lg - 1) * sm >= self.cells) {\n self.large(lg - 1);\n }\n }\n else {\n // if rounding was too low, add rows or columns\n while (self.cols * self.rows < self.cells) {\n const sm = self.small();\n const lg = self.large();\n // try to add to larger side first (adds less in multiplication)\n if ((lg + 1) * sm >= self.cells) {\n self.large(lg + 1);\n }\n else {\n self.small(sm + 1);\n }\n }\n }\n self.cellWidth = self.width / self.cols;\n self.cellHeight = self.height / self.rows;\n if (self.condense) {\n self.cellWidth = 0;\n self.cellHeight = 0;\n }\n if (self.preventOverlap) {\n layoutNodes.forEach((node) => {\n if (!node.x || !node.y) {\n // for bb\n node.x = 0;\n node.y = 0;\n }\n let nodew;\n let nodeh;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(node.size)) {\n nodew = node.size[0];\n nodeh = node.size[1];\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(node.size)) {\n nodew = node.size;\n nodeh = node.size;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(node.size)) {\n nodew = node.size.width;\n nodeh = node.size.height;\n }\n if (nodew === undefined || nodeh === undefined) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(self.nodeSize)) {\n nodew = self.nodeSize[0];\n nodeh = self.nodeSize[1];\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(self.nodeSize)) {\n nodew = self.nodeSize;\n nodeh = self.nodeSize;\n }\n else {\n nodew = 30;\n nodeh = 30;\n }\n }\n const p = self.preventOverlapPadding;\n const w = nodew + p;\n const h = nodeh + p;\n self.cellWidth = Math.max(self.cellWidth, w);\n self.cellHeight = Math.max(self.cellHeight, h);\n });\n }\n self.cellUsed = {}; // e.g. 'c-0-2' => true\n // to keep track of current cell position\n self.row = 0;\n self.col = 0;\n // get a cache of all the manual positions\n self.id2manPos = {};\n for (let i = 0; i < layoutNodes.length; i++) {\n const node = layoutNodes[i];\n let rcPos;\n if (self.position) {\n rcPos = self.position(node);\n }\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n const pos = {\n row: rcPos.row,\n col: rcPos.col\n };\n if (pos.col === undefined) {\n // find unused col\n pos.col = 0;\n while (self.used(pos.row, pos.col)) {\n pos.col++;\n }\n }\n else if (pos.row === undefined) {\n // find unused row\n pos.row = 0;\n while (self.used(pos.row, pos.col)) {\n pos.row++;\n }\n }\n self.id2manPos[node.id] = pos;\n self.use(pos.row, pos.col);\n }\n self.getPos(node);\n }\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n edges,\n nodes: layoutNodes\n };\n }\n small(val) {\n const self = this;\n let res;\n const rows = self.rows || 5;\n const cols = self.cols || 5;\n if (val == null) {\n res = Math.min(rows, cols);\n }\n else {\n const min = Math.min(rows, cols);\n if (min === self.rows) {\n self.rows = val;\n }\n else {\n self.cols = val;\n }\n }\n return res;\n }\n large(val) {\n const self = this;\n let res;\n const rows = self.rows || 5;\n const cols = self.cols || 5;\n if (val == null) {\n res = Math.max(rows, cols);\n }\n else {\n const max = Math.max(rows, cols);\n if (max === self.rows) {\n self.rows = val;\n }\n else {\n self.cols = val;\n }\n }\n return res;\n }\n used(row, col) {\n const self = this;\n return self.cellUsed[`c-${row}-${col}`] || false;\n }\n use(row, col) {\n const self = this;\n self.cellUsed[`c-${row}-${col}`] = true;\n }\n moveToNextCell() {\n const self = this;\n const cols = self.cols || 5;\n self.col++;\n if (self.col >= cols) {\n self.col = 0;\n self.row++;\n }\n }\n getPos(node) {\n const self = this;\n const begin = self.begin;\n const cellWidth = self.cellWidth;\n const cellHeight = self.cellHeight;\n let x;\n let y;\n // see if we have a manual position set\n const rcPos = self.id2manPos[node.id];\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + begin[0];\n y = rcPos.row * cellHeight + cellHeight / 2 + begin[1];\n }\n else {\n // otherwise set automatically\n while (self.used(self.row, self.col)) {\n self.moveToNextCell();\n }\n x = self.col * cellWidth + cellWidth / 2 + begin[0];\n y = self.row * cellHeight + cellHeight / 2 + begin[1];\n self.use(self.row, self.col);\n self.moveToNextCell();\n }\n node.x = x;\n node.y = y;\n }\n getType() {\n return \"grid\";\n }\n}\n//# sourceMappingURL=grid.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvZ3JpZC5qcz81MzdhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNrRjtBQUNwRDtBQUM5QjtBQUNBO0FBQ0E7QUFDTyx5QkFBeUIsMENBQUk7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QscUJBQXFCLG9EQUFvRDtBQUMzSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsYUFBYSxzREFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFLO0FBQ3JCLCtCQUErQix1REFBUztBQUN4QztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxREFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHNEQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHFEQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixzREFBUTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHdCQUF3QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLElBQUksR0FBRyxJQUFJO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixJQUFJLEdBQUcsSUFBSTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2dyaWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgZ3JpZCBsYXlvdXRcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqIHRoaXMgYWxnb3JpdGhtIHJlZmVycyB0byA8Y3l0b3NjYXBlLmpzPiAtIGh0dHBzOi8vZ2l0aHViLmNvbS9jeXRvc2NhcGUvY3l0b3NjYXBlLmpzL1xuICovXG5pbXBvcnQgeyBpc1N0cmluZywgaXNBcnJheSwgaXNOdW1iZXIsIGdldERlZ3JlZSwgaXNOYU4sIGlzT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi9iYXNlXCI7XG4vKipcbiAqIOe9keagvOW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgR3JpZExheW91dCBleHRlbmRzIEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIOW4g+WxgOi1t+Wni+eCuSAqL1xuICAgICAgICB0aGlzLmJlZ2luID0gWzAsIDBdO1xuICAgICAgICAvKiogcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZSAqL1xuICAgICAgICB0aGlzLnByZXZlbnRPdmVybGFwID0gdHJ1ZTtcbiAgICAgICAgLyoqIGV4dHJhIHNwYWNpbmcgYXJvdW5kIG5vZGVzIHdoZW4gcHJldmVudE92ZXJsYXA6IHRydWUgKi9cbiAgICAgICAgdGhpcy5wcmV2ZW50T3ZlcmxhcFBhZGRpbmcgPSAxMDtcbiAgICAgICAgLyoqIHVzZXMgYWxsIGF2YWlsYWJsZSBzcGFjZSBvbiBmYWxzZSwgdXNlcyBtaW5pbWFsIHNwYWNlIG9uIHRydWUgKi9cbiAgICAgICAgdGhpcy5jb25kZW5zZSA9IGZhbHNlO1xuICAgICAgICAvKiogYSBzb3J0aW5nIGZ1bmN0aW9uIHRvIG9yZGVyIHRoZSBub2RlczsgZS5nLiBmdW5jdGlvbihhLCBiKXsgcmV0dXJuIGEuZGF0YXB1YmxpYyAoJ3dlaWdodCcpIC0gYi5kYXRhKCd3ZWlnaHQnKSB9ICovXG4gICAgICAgIHRoaXMuc29ydEJ5ID0gXCJkZWdyZWVcIjtcbiAgICAgICAgdGhpcy5ub2RlU2l6ZSA9IDMwO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy53aWR0aCA9IDMwMDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMucm93ID0gMDtcbiAgICAgICAgdGhpcy5jb2wgPSAwO1xuICAgICAgICB0aGlzLmNlbGxXaWR0aCA9IDA7XG4gICAgICAgIHRoaXMuY2VsbEhlaWdodCA9IDA7XG4gICAgICAgIHRoaXMuY2VsbFVzZWQgPSB7fTtcbiAgICAgICAgdGhpcy5pZDJtYW5Qb3MgPSB7fTtcbiAgICAgICAgLyoqIOi/reS7o+e7k+adn+eahOWbnuiwg+WHveaVsCAqL1xuICAgICAgICB0aGlzLm9uTGF5b3V0RW5kID0gKCkgPT4geyB9O1xuICAgICAgICB0aGlzLnVwZGF0ZUNmZyhvcHRpb25zKTtcbiAgICB9XG4gICAgZ2V0RGVmYXVsdENmZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJlZ2luOiBbMCwgMF0sXG4gICAgICAgICAgICBwcmV2ZW50T3ZlcmxhcDogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZlbnRPdmVybGFwUGFkZGluZzogMTAsXG4gICAgICAgICAgICBjb25kZW5zZTogZmFsc2UsXG4gICAgICAgICAgICByb3dzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb2xzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwb3NpdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc29ydEJ5OiBcImRlZ3JlZVwiLFxuICAgICAgICAgICAgbm9kZVNpemU6IDMwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGNvbnN0IGVkZ2VzID0gc2VsZi5lZGdlcztcbiAgICAgICAgY29uc3QgbiA9IG5vZGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYmVnaW4gPSBzZWxmLmJlZ2luO1xuICAgICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgICAgICBlZGdlc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA9PT0gMSkge1xuICAgICAgICAgICAgbm9kZXNbMF0ueCA9IGJlZ2luWzBdO1xuICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGJlZ2luWzFdO1xuICAgICAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgICAgICBlZGdlcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5b3V0Tm9kZXMgPSBbXTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbGF5b3V0Tm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG5vZGVJZHhNYXAgPSB7fTtcbiAgICAgICAgbGF5b3V0Tm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZUlkeE1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2VsZi5zb3J0QnkgPT09IFwiZGVncmVlXCIgfHxcbiAgICAgICAgICAgICFpc1N0cmluZyhzZWxmLnNvcnRCeSkgfHxcbiAgICAgICAgICAgIGxheW91dE5vZGVzWzBdW3NlbGYuc29ydEJ5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZWxmLnNvcnRCeSA9IFwiZGVncmVlXCI7XG4gICAgICAgICAgICBpZiAoaXNOYU4obm9kZXNbMF0uZGVncmVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IGdldERlZ3JlZShsYXlvdXROb2Rlcy5sZW5ndGgsIG5vZGVJZHhNYXAsIGVkZ2VzKTtcbiAgICAgICAgICAgICAgICBsYXlvdXROb2Rlcy5mb3JFYWNoKChub2RlLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuZGVncmVlID0gdmFsdWVzW2ldO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHNvcnQgbm9kZXMgYnkgdmFsdWVcbiAgICAgICAgbGF5b3V0Tm9kZXMuc29ydCgobjEsIG4yKSA9PiBuMltzZWxmLnNvcnRCeV0gLSBuMVtzZWxmLnNvcnRCeV0pO1xuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb1Jvd3MgPSBzZWxmLnJvd3M7XG4gICAgICAgIGNvbnN0IG9Db2xzID0gc2VsZi5jb2xzICE9IG51bGwgPyBzZWxmLmNvbHMgOiBzZWxmLmNvbHVtbnM7XG4gICAgICAgIHNlbGYuY2VsbHMgPSBuO1xuICAgICAgICAvLyBpZiByb3dzIG9yIGNvbHVtbnMgd2VyZSBzZXQgaW4gc2VsZiwgdXNlIHRob3NlIHZhbHVlc1xuICAgICAgICBpZiAob1Jvd3MgIT0gbnVsbCAmJiBvQ29scyAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZWxmLnJvd3MgPSBvUm93cztcbiAgICAgICAgICAgIHNlbGYuY29scyA9IG9Db2xzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9Sb3dzICE9IG51bGwgJiYgb0NvbHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgc2VsZi5yb3dzID0gb1Jvd3M7XG4gICAgICAgICAgICBzZWxmLmNvbHMgPSBNYXRoLmNlaWwoc2VsZi5jZWxscyAvIHNlbGYucm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob1Jvd3MgPT0gbnVsbCAmJiBvQ29scyAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZWxmLmNvbHMgPSBvQ29scztcbiAgICAgICAgICAgIHNlbGYucm93cyA9IE1hdGguY2VpbChzZWxmLmNlbGxzIC8gc2VsZi5jb2xzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSB1c2UgdGhlIGF1dG9tYXRpYyB2YWx1ZXMgYW5kIGFkanVzdCBhY2NvcmRpbmdseVx0ICAgICAgLy8gb3RoZXJ3aXNlIHVzZSB0aGUgYXV0b21hdGljIHZhbHVlcyBhbmQgYWRqdXN0IGFjY29yZGluZ2x5XG4gICAgICAgICAgICAvLyB3aWR0aC9oZWlnaHQgKiBzcGxpdHNeMiA9IGNlbGxzIHdoZXJlIHNwbGl0cyBpcyBudW1iZXIgb2YgdGltZXMgdG8gc3BsaXQgd2lkdGhcbiAgICAgICAgICAgIHNlbGYuc3BsaXRzID0gTWF0aC5zcXJ0KChzZWxmLmNlbGxzICogc2VsZi5oZWlnaHQpIC8gc2VsZi53aWR0aCk7XG4gICAgICAgICAgICBzZWxmLnJvd3MgPSBNYXRoLnJvdW5kKHNlbGYuc3BsaXRzKTtcbiAgICAgICAgICAgIHNlbGYuY29scyA9IE1hdGgucm91bmQoKHNlbGYud2lkdGggLyBzZWxmLmhlaWdodCkgKiBzZWxmLnNwbGl0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGYuY29scyAqIHNlbGYucm93cyA+IHNlbGYuY2VsbHMpIHtcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSB1c2UgdGhlIGF1dG9tYXRpYyB2YWx1ZXMgYW5kIGFkanVzdCBhY2NvcmRpbmdseVxuICAgICAgICAgICAgLy8gaWYgcm91bmRpbmcgd2FzIHVwLCBzZWUgaWYgd2UgY2FuIHJlZHVjZSByb3dzIG9yIGNvbHVtbnNcbiAgICAgICAgICAgIGNvbnN0IHNtID0gc2VsZi5zbWFsbCgpO1xuICAgICAgICAgICAgY29uc3QgbGcgPSBzZWxmLmxhcmdlKCk7XG4gICAgICAgICAgICAvLyByZWR1Y2luZyB0aGUgc21hbGwgc2lkZSB0YWtlcyBhd2F5IHRoZSBtb3N0IGNlbGxzLCBzbyB0cnkgaXQgZmlyc3RcbiAgICAgICAgICAgIGlmICgoc20gLSAxKSAqIGxnID49IHNlbGYuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnNtYWxsKHNtIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgobGcgLSAxKSAqIHNtID49IHNlbGYuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmxhcmdlKGxnIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiByb3VuZGluZyB3YXMgdG9vIGxvdywgYWRkIHJvd3Mgb3IgY29sdW1uc1xuICAgICAgICAgICAgd2hpbGUgKHNlbGYuY29scyAqIHNlbGYucm93cyA8IHNlbGYuY2VsbHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbSA9IHNlbGYuc21hbGwoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsZyA9IHNlbGYubGFyZ2UoKTtcbiAgICAgICAgICAgICAgICAvLyB0cnkgdG8gYWRkIHRvIGxhcmdlciBzaWRlIGZpcnN0IChhZGRzIGxlc3MgaW4gbXVsdGlwbGljYXRpb24pXG4gICAgICAgICAgICAgICAgaWYgKChsZyArIDEpICogc20gPj0gc2VsZi5jZWxscykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmxhcmdlKGxnICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnNtYWxsKHNtICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlbGYuY2VsbFdpZHRoID0gc2VsZi53aWR0aCAvIHNlbGYuY29scztcbiAgICAgICAgc2VsZi5jZWxsSGVpZ2h0ID0gc2VsZi5oZWlnaHQgLyBzZWxmLnJvd3M7XG4gICAgICAgIGlmIChzZWxmLmNvbmRlbnNlKSB7XG4gICAgICAgICAgICBzZWxmLmNlbGxXaWR0aCA9IDA7XG4gICAgICAgICAgICBzZWxmLmNlbGxIZWlnaHQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxmLnByZXZlbnRPdmVybGFwKSB7XG4gICAgICAgICAgICBsYXlvdXROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLnggfHwgIW5vZGUueSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYmJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS54ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS55ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IG5vZGV3O1xuICAgICAgICAgICAgICAgIGxldCBub2RlaDtcbiAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShub2RlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGV3ID0gbm9kZS5zaXplWzBdO1xuICAgICAgICAgICAgICAgICAgICBub2RlaCA9IG5vZGUuc2l6ZVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIobm9kZS5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICBub2RldyA9IG5vZGUuc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgbm9kZWggPSBub2RlLnNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG5vZGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXcgPSBub2RlLnNpemUud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVoID0gbm9kZS5zaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5vZGV3ID09PSB1bmRlZmluZWQgfHwgbm9kZWggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShzZWxmLm5vZGVTaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXcgPSBzZWxmLm5vZGVTaXplWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZWggPSBzZWxmLm5vZGVTaXplWzFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKHNlbGYubm9kZVNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RldyA9IHNlbGYubm9kZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlaCA9IHNlbGYubm9kZVNpemU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RldyA9IDMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZWggPSAzMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBwID0gc2VsZi5wcmV2ZW50T3ZlcmxhcFBhZGRpbmc7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IG5vZGV3ICsgcDtcbiAgICAgICAgICAgICAgICBjb25zdCBoID0gbm9kZWggKyBwO1xuICAgICAgICAgICAgICAgIHNlbGYuY2VsbFdpZHRoID0gTWF0aC5tYXgoc2VsZi5jZWxsV2lkdGgsIHcpO1xuICAgICAgICAgICAgICAgIHNlbGYuY2VsbEhlaWdodCA9IE1hdGgubWF4KHNlbGYuY2VsbEhlaWdodCwgaCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmNlbGxVc2VkID0ge307IC8vIGUuZy4gJ2MtMC0yJyA9PiB0cnVlXG4gICAgICAgIC8vIHRvIGtlZXAgdHJhY2sgb2YgY3VycmVudCBjZWxsIHBvc2l0aW9uXG4gICAgICAgIHNlbGYucm93ID0gMDtcbiAgICAgICAgc2VsZi5jb2wgPSAwO1xuICAgICAgICAvLyBnZXQgYSBjYWNoZSBvZiBhbGwgdGhlIG1hbnVhbCBwb3NpdGlvbnNcbiAgICAgICAgc2VsZi5pZDJtYW5Qb3MgPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXlvdXROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGxheW91dE5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IHJjUG9zO1xuICAgICAgICAgICAgaWYgKHNlbGYucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICByY1BvcyA9IHNlbGYucG9zaXRpb24obm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmNQb3MgJiYgKHJjUG9zLnJvdyAhPT0gdW5kZWZpbmVkIHx8IHJjUG9zLmNvbCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgIC8vIG11c3QgaGF2ZSBhdCBsZWFzdCByb3cgb3IgY29sIGRlZidkXG4gICAgICAgICAgICAgICAgY29uc3QgcG9zID0ge1xuICAgICAgICAgICAgICAgICAgICByb3c6IHJjUG9zLnJvdyxcbiAgICAgICAgICAgICAgICAgICAgY29sOiByY1Bvcy5jb2xcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChwb3MuY29sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZmluZCB1bnVzZWQgY29sXG4gICAgICAgICAgICAgICAgICAgIHBvcy5jb2wgPSAwO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc2VsZi51c2VkKHBvcy5yb3csIHBvcy5jb2wpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3MuY29sKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocG9zLnJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgdW51c2VkIHJvd1xuICAgICAgICAgICAgICAgICAgICBwb3Mucm93ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNlbGYudXNlZChwb3Mucm93LCBwb3MuY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnJvdysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYuaWQybWFuUG9zW25vZGUuaWRdID0gcG9zO1xuICAgICAgICAgICAgICAgIHNlbGYudXNlKHBvcy5yb3csIHBvcy5jb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZi5nZXRQb3Mobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGYub25MYXlvdXRFbmQpXG4gICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlZGdlcyxcbiAgICAgICAgICAgIG5vZGVzOiBsYXlvdXROb2Rlc1xuICAgICAgICB9O1xuICAgIH1cbiAgICBzbWFsbCh2YWwpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBzZWxmLnJvd3MgfHwgNTtcbiAgICAgICAgY29uc3QgY29scyA9IHNlbGYuY29scyB8fCA1O1xuICAgICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHJlcyA9IE1hdGgubWluKHJvd3MsIGNvbHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWluID0gTWF0aC5taW4ocm93cywgY29scyk7XG4gICAgICAgICAgICBpZiAobWluID09PSBzZWxmLnJvd3MpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnJvd3MgPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNvbHMgPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgbGFyZ2UodmFsKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgcmVzO1xuICAgICAgICBjb25zdCByb3dzID0gc2VsZi5yb3dzIHx8IDU7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBzZWxmLmNvbHMgfHwgNTtcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXMgPSBNYXRoLm1heChyb3dzLCBjb2xzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHJvd3MsIGNvbHMpO1xuICAgICAgICAgICAgaWYgKG1heCA9PT0gc2VsZi5yb3dzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5yb3dzID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jb2xzID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIHVzZWQocm93LCBjb2wpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBzZWxmLmNlbGxVc2VkW2BjLSR7cm93fS0ke2NvbH1gXSB8fCBmYWxzZTtcbiAgICB9XG4gICAgdXNlKHJvdywgY29sKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBzZWxmLmNlbGxVc2VkW2BjLSR7cm93fS0ke2NvbH1gXSA9IHRydWU7XG4gICAgfVxuICAgIG1vdmVUb05leHRDZWxsKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgY29scyA9IHNlbGYuY29scyB8fCA1O1xuICAgICAgICBzZWxmLmNvbCsrO1xuICAgICAgICBpZiAoc2VsZi5jb2wgPj0gY29scykge1xuICAgICAgICAgICAgc2VsZi5jb2wgPSAwO1xuICAgICAgICAgICAgc2VsZi5yb3crKztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRQb3Mobm9kZSkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYmVnaW4gPSBzZWxmLmJlZ2luO1xuICAgICAgICBjb25zdCBjZWxsV2lkdGggPSBzZWxmLmNlbGxXaWR0aDtcbiAgICAgICAgY29uc3QgY2VsbEhlaWdodCA9IHNlbGYuY2VsbEhlaWdodDtcbiAgICAgICAgbGV0IHg7XG4gICAgICAgIGxldCB5O1xuICAgICAgICAvLyBzZWUgaWYgd2UgaGF2ZSBhIG1hbnVhbCBwb3NpdGlvbiBzZXRcbiAgICAgICAgY29uc3QgcmNQb3MgPSBzZWxmLmlkMm1hblBvc1tub2RlLmlkXTtcbiAgICAgICAgaWYgKHJjUG9zKSB7XG4gICAgICAgICAgICB4ID0gcmNQb3MuY29sICogY2VsbFdpZHRoICsgY2VsbFdpZHRoIC8gMiArIGJlZ2luWzBdO1xuICAgICAgICAgICAgeSA9IHJjUG9zLnJvdyAqIGNlbGxIZWlnaHQgKyBjZWxsSGVpZ2h0IC8gMiArIGJlZ2luWzFdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHNldCBhdXRvbWF0aWNhbGx5XG4gICAgICAgICAgICB3aGlsZSAoc2VsZi51c2VkKHNlbGYucm93LCBzZWxmLmNvbCkpIHtcbiAgICAgICAgICAgICAgICBzZWxmLm1vdmVUb05leHRDZWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4ID0gc2VsZi5jb2wgKiBjZWxsV2lkdGggKyBjZWxsV2lkdGggLyAyICsgYmVnaW5bMF07XG4gICAgICAgICAgICB5ID0gc2VsZi5yb3cgKiBjZWxsSGVpZ2h0ICsgY2VsbEhlaWdodCAvIDIgKyBiZWdpblsxXTtcbiAgICAgICAgICAgIHNlbGYudXNlKHNlbGYucm93LCBzZWxmLmNvbCk7XG4gICAgICAgICAgICBzZWxmLm1vdmVUb05leHRDZWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS54ID0geDtcbiAgICAgICAgbm9kZS55ID0geTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwiZ3JpZFwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyaWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/grid.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/index.js ***! \**********************************************************************************/ /*! exports provided: Layout, Layouts, GridLayout, RandomLayout, GForceLayout, ForceLayout, CircularLayout, DagreLayout, RadialLayout, ConcentricLayout, MDSLayout, FruchtermanLayout, FruchtermanGPULayout, GForceGPULayout, ComboForceLayout, ForceAtlas2Layout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./grid */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/grid.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GridLayout\", function() { return _grid__WEBPACK_IMPORTED_MODULE_0__[\"GridLayout\"]; });\n\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./random */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/random.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RandomLayout\", function() { return _random__WEBPACK_IMPORTED_MODULE_1__[\"RandomLayout\"]; });\n\n/* harmony import */ var _gForce__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gForce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceLayout\", function() { return _gForce__WEBPACK_IMPORTED_MODULE_2__[\"GForceLayout\"]; });\n\n/* harmony import */ var _force__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./force */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceLayout\", function() { return _force__WEBPACK_IMPORTED_MODULE_3__[\"ForceLayout\"]; });\n\n/* harmony import */ var _circular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./circular */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/circular.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CircularLayout\", function() { return _circular__WEBPACK_IMPORTED_MODULE_4__[\"CircularLayout\"]; });\n\n/* harmony import */ var _dagre__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dagre */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/dagre.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DagreLayout\", function() { return _dagre__WEBPACK_IMPORTED_MODULE_5__[\"DagreLayout\"]; });\n\n/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./radial */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return _radial__WEBPACK_IMPORTED_MODULE_6__[\"RadialLayout\"]; });\n\n/* harmony import */ var _concentric__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./concentric */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/concentric.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConcentricLayout\", function() { return _concentric__WEBPACK_IMPORTED_MODULE_7__[\"ConcentricLayout\"]; });\n\n/* harmony import */ var _mds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mds */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/mds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MDSLayout\", function() { return _mds__WEBPACK_IMPORTED_MODULE_8__[\"MDSLayout\"]; });\n\n/* harmony import */ var _fruchterman__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./fruchterman */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/fruchterman.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanLayout\", function() { return _fruchterman__WEBPACK_IMPORTED_MODULE_9__[\"FruchtermanLayout\"]; });\n\n/* harmony import */ var _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./gpu/fruchterman */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchterman.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FruchtermanGPULayout\", function() { return _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_10__[\"FruchtermanGPULayout\"]; });\n\n/* harmony import */ var _gpu_gForce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./gpu/gForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GForceGPULayout\", function() { return _gpu_gForce__WEBPACK_IMPORTED_MODULE_11__[\"GForceGPULayout\"]; });\n\n/* harmony import */ var _comboForce__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./comboForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/comboForce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComboForceLayout\", function() { return _comboForce__WEBPACK_IMPORTED_MODULE_12__[\"ComboForceLayout\"]; });\n\n/* harmony import */ var _forceAtlas2__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./forceAtlas2 */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ForceAtlas2Layout\", function() { return _forceAtlas2__WEBPACK_IMPORTED_MODULE_13__[\"ForceAtlas2Layout\"]; });\n\n/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./layout */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return _layout__WEBPACK_IMPORTED_MODULE_14__[\"Layout\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Layouts\", function() { return _layout__WEBPACK_IMPORTED_MODULE_14__[\"Layouts\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./types */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/types.js\");\n/* empty/unused harmony star reexport */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// layout\n\n// types file\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvaW5kZXguanM/NTNlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUFvQztBQUNJO0FBQ0E7QUFDRjtBQUNNO0FBQ047QUFDRTtBQUNRO0FBQ2Q7QUFDZ0I7QUFDTztBQUNWO0FBQ0M7QUFDRTtBQUNQO0FBQ2hCO0FBQzNCO0FBQ3VPO0FBQ3ZPO0FBQ3dCO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JpZExheW91dCB9IGZyb20gXCIuL2dyaWRcIjtcbmltcG9ydCB7IFJhbmRvbUxheW91dCB9IGZyb20gXCIuL3JhbmRvbVwiO1xuaW1wb3J0IHsgR0ZvcmNlTGF5b3V0IH0gZnJvbSBcIi4vZ0ZvcmNlXCI7XG5pbXBvcnQgeyBGb3JjZUxheW91dCB9IGZyb20gXCIuL2ZvcmNlXCI7XG5pbXBvcnQgeyBDaXJjdWxhckxheW91dCB9IGZyb20gXCIuL2NpcmN1bGFyXCI7XG5pbXBvcnQgeyBEYWdyZUxheW91dCB9IGZyb20gXCIuL2RhZ3JlXCI7XG5pbXBvcnQgeyBSYWRpYWxMYXlvdXQgfSBmcm9tIFwiLi9yYWRpYWxcIjtcbmltcG9ydCB7IENvbmNlbnRyaWNMYXlvdXQgfSBmcm9tIFwiLi9jb25jZW50cmljXCI7XG5pbXBvcnQgeyBNRFNMYXlvdXQgfSBmcm9tIFwiLi9tZHNcIjtcbmltcG9ydCB7IEZydWNodGVybWFuTGF5b3V0IH0gZnJvbSBcIi4vZnJ1Y2h0ZXJtYW5cIjtcbmltcG9ydCB7IEZydWNodGVybWFuR1BVTGF5b3V0IH0gZnJvbSBcIi4vZ3B1L2ZydWNodGVybWFuXCI7XG5pbXBvcnQgeyBHRm9yY2VHUFVMYXlvdXQgfSBmcm9tIFwiLi9ncHUvZ0ZvcmNlXCI7XG5pbXBvcnQgeyBDb21ib0ZvcmNlTGF5b3V0IH0gZnJvbSBcIi4vY29tYm9Gb3JjZVwiO1xuaW1wb3J0IHsgRm9yY2VBdGxhczJMYXlvdXQgfSBmcm9tIFwiLi9mb3JjZUF0bGFzMlwiO1xuaW1wb3J0IHsgTGF5b3V0LCBMYXlvdXRzIH0gZnJvbSBcIi4vbGF5b3V0XCI7XG5leHBvcnQgeyBMYXlvdXQsIExheW91dHMgfTtcbi8vIGxheW91dFxuZXhwb3J0IHsgR3JpZExheW91dCwgUmFuZG9tTGF5b3V0LCBHRm9yY2VMYXlvdXQsIEZvcmNlTGF5b3V0LCBDaXJjdWxhckxheW91dCwgRGFncmVMYXlvdXQsIFJhZGlhbExheW91dCwgQ29uY2VudHJpY0xheW91dCwgTURTTGF5b3V0LCBGcnVjaHRlcm1hbkxheW91dCwgRnJ1Y2h0ZXJtYW5HUFVMYXlvdXQsIEdGb3JjZUdQVUxheW91dCwgQ29tYm9Gb3JjZUxheW91dCwgRm9yY2VBdGxhczJMYXlvdXQsIH07XG4vLyB0eXBlcyBmaWxlXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/layout.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/layout.js ***! \***********************************************************************************/ /*! exports provided: Layout, Layouts */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Layout\", function() { return Layout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Layouts\", function() { return Layouts; });\n/* harmony import */ var _registy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../registy */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/registy/index.js\");\n/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./grid */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/grid.js\");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./random */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/random.js\");\n/* harmony import */ var _gForce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./gForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gForce.js\");\n/* harmony import */ var _force__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./force */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/force/index.js\");\n/* harmony import */ var _circular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./circular */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/circular.js\");\n/* harmony import */ var _dagre__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dagre */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/dagre.js\");\n/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./radial */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/index.js\");\n/* harmony import */ var _concentric__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./concentric */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/concentric.js\");\n/* harmony import */ var _mds__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./mds */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/mds.js\");\n/* harmony import */ var _fruchterman__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./fruchterman */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/fruchterman.js\");\n/* harmony import */ var _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./gpu/fruchterman */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/fruchterman.js\");\n/* harmony import */ var _gpu_gForce__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./gpu/gForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/gpu/gForce.js\");\n/* harmony import */ var _comboForce__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./comboForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/comboForce.js\");\n/* harmony import */ var _forceAtlas2__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./forceAtlas2 */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/forceAtlas2/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass Layout {\n constructor(options) {\n const layoutClass = Object(_registy__WEBPACK_IMPORTED_MODULE_0__[\"getLayoutByName\"])(options.type);\n this.layoutInstance = new layoutClass(options);\n }\n layout(data) {\n return this.layoutInstance.layout(data);\n }\n updateCfg(cfg) {\n this.layoutInstance.updateCfg(cfg);\n }\n init(data) {\n this.layoutInstance.init(data);\n }\n execute() {\n this.layoutInstance.execute();\n }\n getDefaultCfg() {\n return this.layoutInstance.getDefaultCfg();\n }\n destroy() {\n return this.layoutInstance.destroy();\n }\n}\n// FIXME\n// FOR G6\n// tslint:disable-next-line\nconst Layouts = {\n force: _force__WEBPACK_IMPORTED_MODULE_4__[\"ForceLayout\"],\n fruchterman: _fruchterman__WEBPACK_IMPORTED_MODULE_10__[\"FruchtermanLayout\"],\n forceAtlas2: _forceAtlas2__WEBPACK_IMPORTED_MODULE_14__[\"ForceAtlas2Layout\"],\n gForce: _gForce__WEBPACK_IMPORTED_MODULE_3__[\"GForceLayout\"],\n dagre: _dagre__WEBPACK_IMPORTED_MODULE_6__[\"DagreLayout\"],\n circular: _circular__WEBPACK_IMPORTED_MODULE_5__[\"CircularLayout\"],\n radial: _radial__WEBPACK_IMPORTED_MODULE_7__[\"RadialLayout\"],\n concentric: _concentric__WEBPACK_IMPORTED_MODULE_8__[\"ConcentricLayout\"],\n grid: _grid__WEBPACK_IMPORTED_MODULE_1__[\"GridLayout\"],\n mds: _mds__WEBPACK_IMPORTED_MODULE_9__[\"MDSLayout\"],\n comboForce: _comboForce__WEBPACK_IMPORTED_MODULE_13__[\"ComboForceLayout\"],\n random: _random__WEBPACK_IMPORTED_MODULE_2__[\"RandomLayout\"],\n 'gForce-gpu': _gpu_gForce__WEBPACK_IMPORTED_MODULE_12__[\"GForceGPULayout\"],\n 'fruchterman-gpu': _gpu_fruchterman__WEBPACK_IMPORTED_MODULE_11__[\"FruchtermanGPULayout\"],\n};\n//# sourceMappingURL=layout.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvbGF5b3V0LmpzPzE3OTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1Q7QUFDSTtBQUNBO0FBQ0Y7QUFDTTtBQUNOO0FBQ0U7QUFDUTtBQUNkO0FBQ2dCO0FBQ087QUFDVjtBQUNDO0FBQ0U7QUFDM0M7QUFDUDtBQUNBLDRCQUE0QixnRUFBZTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLFdBQVcsa0RBQVc7QUFDdEIsaUJBQWlCLCtEQUFpQjtBQUNsQyxpQkFBaUIsK0RBQWlCO0FBQ2xDLFlBQVksb0RBQVk7QUFDeEIsV0FBVyxrREFBVztBQUN0QixjQUFjLHdEQUFjO0FBQzVCLFlBQVksb0RBQVk7QUFDeEIsZ0JBQWdCLDREQUFnQjtBQUNoQyxVQUFVLGdEQUFVO0FBQ3BCLFNBQVMsOENBQVM7QUFDbEIsZ0JBQWdCLDZEQUFnQjtBQUNoQyxZQUFZLG9EQUFZO0FBQ3hCLGtCQUFrQiw0REFBZTtBQUNqQyx1QkFBdUIsc0VBQW9CO0FBQzNDO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TGF5b3V0QnlOYW1lIH0gZnJvbSBcIi4uL3JlZ2lzdHlcIjtcbmltcG9ydCB7IEdyaWRMYXlvdXQgfSBmcm9tIFwiLi9ncmlkXCI7XG5pbXBvcnQgeyBSYW5kb21MYXlvdXQgfSBmcm9tIFwiLi9yYW5kb21cIjtcbmltcG9ydCB7IEdGb3JjZUxheW91dCB9IGZyb20gXCIuL2dGb3JjZVwiO1xuaW1wb3J0IHsgRm9yY2VMYXlvdXQgfSBmcm9tIFwiLi9mb3JjZVwiO1xuaW1wb3J0IHsgQ2lyY3VsYXJMYXlvdXQgfSBmcm9tIFwiLi9jaXJjdWxhclwiO1xuaW1wb3J0IHsgRGFncmVMYXlvdXQgfSBmcm9tIFwiLi9kYWdyZVwiO1xuaW1wb3J0IHsgUmFkaWFsTGF5b3V0IH0gZnJvbSBcIi4vcmFkaWFsXCI7XG5pbXBvcnQgeyBDb25jZW50cmljTGF5b3V0IH0gZnJvbSBcIi4vY29uY2VudHJpY1wiO1xuaW1wb3J0IHsgTURTTGF5b3V0IH0gZnJvbSBcIi4vbWRzXCI7XG5pbXBvcnQgeyBGcnVjaHRlcm1hbkxheW91dCB9IGZyb20gXCIuL2ZydWNodGVybWFuXCI7XG5pbXBvcnQgeyBGcnVjaHRlcm1hbkdQVUxheW91dCB9IGZyb20gXCIuL2dwdS9mcnVjaHRlcm1hblwiO1xuaW1wb3J0IHsgR0ZvcmNlR1BVTGF5b3V0IH0gZnJvbSBcIi4vZ3B1L2dGb3JjZVwiO1xuaW1wb3J0IHsgQ29tYm9Gb3JjZUxheW91dCB9IGZyb20gXCIuL2NvbWJvRm9yY2VcIjtcbmltcG9ydCB7IEZvcmNlQXRsYXMyTGF5b3V0IH0gZnJvbSBcIi4vZm9yY2VBdGxhczJcIjtcbmV4cG9ydCBjbGFzcyBMYXlvdXQge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbGF5b3V0Q2xhc3MgPSBnZXRMYXlvdXRCeU5hbWUob3B0aW9ucy50eXBlKTtcbiAgICAgICAgdGhpcy5sYXlvdXRJbnN0YW5jZSA9IG5ldyBsYXlvdXRDbGFzcyhvcHRpb25zKTtcbiAgICB9XG4gICAgbGF5b3V0KGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0SW5zdGFuY2UubGF5b3V0KGRhdGEpO1xuICAgIH1cbiAgICB1cGRhdGVDZmcoY2ZnKSB7XG4gICAgICAgIHRoaXMubGF5b3V0SW5zdGFuY2UudXBkYXRlQ2ZnKGNmZyk7XG4gICAgfVxuICAgIGluaXQoZGF0YSkge1xuICAgICAgICB0aGlzLmxheW91dEluc3RhbmNlLmluaXQoZGF0YSk7XG4gICAgfVxuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIHRoaXMubGF5b3V0SW5zdGFuY2UuZXhlY3V0ZSgpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRJbnN0YW5jZS5nZXREZWZhdWx0Q2ZnKCk7XG4gICAgfVxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dEluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICB9XG59XG4vLyBGSVhNRVxuLy8gRk9SIEc2XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbmV4cG9ydCBjb25zdCBMYXlvdXRzID0ge1xuICAgIGZvcmNlOiBGb3JjZUxheW91dCxcbiAgICBmcnVjaHRlcm1hbjogRnJ1Y2h0ZXJtYW5MYXlvdXQsXG4gICAgZm9yY2VBdGxhczI6IEZvcmNlQXRsYXMyTGF5b3V0LFxuICAgIGdGb3JjZTogR0ZvcmNlTGF5b3V0LFxuICAgIGRhZ3JlOiBEYWdyZUxheW91dCxcbiAgICBjaXJjdWxhcjogQ2lyY3VsYXJMYXlvdXQsXG4gICAgcmFkaWFsOiBSYWRpYWxMYXlvdXQsXG4gICAgY29uY2VudHJpYzogQ29uY2VudHJpY0xheW91dCxcbiAgICBncmlkOiBHcmlkTGF5b3V0LFxuICAgIG1kczogTURTTGF5b3V0LFxuICAgIGNvbWJvRm9yY2U6IENvbWJvRm9yY2VMYXlvdXQsXG4gICAgcmFuZG9tOiBSYW5kb21MYXlvdXQsXG4gICAgJ2dGb3JjZS1ncHUnOiBHRm9yY2VHUFVMYXlvdXQsXG4gICAgJ2ZydWNodGVybWFuLWdwdSc6IEZydWNodGVybWFuR1BVTGF5b3V0LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxheW91dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/layout.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/mds.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/mds.js ***! \********************************************************************************/ /*! exports provided: MDSLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MDSLayout\", function() { return MDSLayout; });\n/* harmony import */ var ml_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ml-matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview MDS layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n/**\n * mds 布局\n */\nclass MDSLayout extends _base__WEBPACK_IMPORTED_MODULE_2__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 边长度 */\n this.linkDistance = 50;\n this.nodes = [];\n this.edges = [];\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n center: [0, 0],\n linkDistance: 50\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const { nodes, edges = [] } = self;\n const center = self.center;\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const linkDistance = self.linkDistance;\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getAdjMatrix\"])({ nodes, edges }, false);\n const distances = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"floydWarshall\"])(adjMatrix);\n self.handleInfinity(distances);\n // scale the ideal edge length acoording to linkDistance\n const scaledD = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"scaleMatrix\"])(distances, linkDistance);\n self.scaledDistances = scaledD;\n // get positions by MDS\n const positions = self.runMDS();\n self.positions = positions;\n positions.forEach((p, i) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n /**\n * mds 算法\n * @return {array} positions 计算后的节点位置数组\n */\n runMDS() {\n const self = this;\n const dimension = 2;\n const distances = self.scaledDistances;\n // square distances\n const M = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul(ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].pow(distances, 2), -0.5);\n // double centre the rows/columns\n const rowMeans = M.mean(\"row\");\n const colMeans = M.mean(\"column\");\n const totalMean = M.mean();\n M.add(totalMean)\n .subRowVector(rowMeans)\n .subColumnVector(colMeans);\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"SingularValueDecomposition\"](M);\n const eigenValues = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row) => {\n return ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul([row], [eigenValues])\n .toJSON()[0]\n .splice(0, dimension);\n });\n }\n handleInfinity(distances) {\n let maxDistance = -999999;\n distances.forEach((row) => {\n row.forEach((value) => {\n if (value === Infinity) {\n return;\n }\n if (maxDistance < value) {\n maxDistance = value;\n }\n });\n });\n distances.forEach((row, i) => {\n row.forEach((value, j) => {\n if (value === Infinity) {\n distances[i][j] = maxDistance;\n }\n });\n });\n }\n getType() {\n return \"mds\";\n }\n}\n//# sourceMappingURL=mds.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvbWRzLmpzPzRjYmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzJFO0FBQ1I7QUFDckM7QUFDOUI7QUFDQTtBQUNBO0FBQ08sd0JBQXdCLDBDQUFJO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwwREFBWSxFQUFFLGVBQWU7QUFDdkQsMEJBQTBCLDJEQUFhO0FBQ3ZDO0FBQ0E7QUFDQSx3QkFBd0IseURBQVc7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGdEQUFRLEtBQUssZ0RBQVE7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9FQUEwQjtBQUNsRCw0QkFBNEIsZ0RBQVE7QUFDcEM7QUFDQSxtQkFBbUIsZ0RBQVE7QUFDM0I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvbWRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IE1EUyBsYXlvdXRcbiAqIEBhdXRob3Igc2hpd3Uud3l5QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0IHsgTWF0cml4IGFzIE1MTWF0cml4LCBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiB9IGZyb20gXCJtbC1tYXRyaXhcIjtcbmltcG9ydCB7IGZsb3lkV2Fyc2hhbGwsIGdldEFkak1hdHJpeCwgc2NhbGVNYXRyaXggfSBmcm9tIFwiLi4vdXRpbFwiO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuL2Jhc2VcIjtcbi8qKlxuICogbWRzIOW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgTURTTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5biD5bGA5Lit5b+DICovXG4gICAgICAgIHRoaXMuY2VudGVyID0gWzAsIDBdO1xuICAgICAgICAvKiog6L656ZW/5bqmICovXG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gNTA7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgICAgICAvKiog6L+t5Luj57uT5p2f55qE5Zue6LCD5Ye95pWwICovXG4gICAgICAgIHRoaXMub25MYXlvdXRFbmQgPSAoKSA9PiB7IH07XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sXG4gICAgICAgICAgICBsaW5rRGlzdGFuY2U6IDUwXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaJp+ihjOW4g+WxgFxuICAgICAqL1xuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB7IG5vZGVzLCBlZGdlcyA9IFtdIH0gPSBzZWxmO1xuICAgICAgICBjb25zdCBjZW50ZXIgPSBzZWxmLmNlbnRlcjtcbiAgICAgICAgaWYgKCFub2RlcyB8fCBub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBub2Rlc1swXS54ID0gY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaW5rRGlzdGFuY2UgPSBzZWxmLmxpbmtEaXN0YW5jZTtcbiAgICAgICAgLy8gdGhlIGdyYXBoLXRoZW9yZXRpYyBkaXN0YW5jZSAoc2hvcnRlc3QgcGF0aCBkaXN0YW5jZSkgbWF0cml4XG4gICAgICAgIGNvbnN0IGFkak1hdHJpeCA9IGdldEFkak1hdHJpeCh7IG5vZGVzLCBlZGdlcyB9LCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlcyA9IGZsb3lkV2Fyc2hhbGwoYWRqTWF0cml4KTtcbiAgICAgICAgc2VsZi5oYW5kbGVJbmZpbml0eShkaXN0YW5jZXMpO1xuICAgICAgICAvLyBzY2FsZSB0aGUgaWRlYWwgZWRnZSBsZW5ndGggYWNvb3JkaW5nIHRvIGxpbmtEaXN0YW5jZVxuICAgICAgICBjb25zdCBzY2FsZWREID0gc2NhbGVNYXRyaXgoZGlzdGFuY2VzLCBsaW5rRGlzdGFuY2UpO1xuICAgICAgICBzZWxmLnNjYWxlZERpc3RhbmNlcyA9IHNjYWxlZEQ7XG4gICAgICAgIC8vIGdldCBwb3NpdGlvbnMgYnkgTURTXG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHNlbGYucnVuTURTKCk7XG4gICAgICAgIHNlbGYucG9zaXRpb25zID0gcG9zaXRpb25zO1xuICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgocCwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZXNbaV0ueCA9IHBbMF0gKyBjZW50ZXJbMF07XG4gICAgICAgICAgICBub2Rlc1tpXS55ID0gcFsxXSArIGNlbnRlclsxXTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgc2VsZi5vbkxheW91dEVuZCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZXMsXG4gICAgICAgICAgICBlZGdlc1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBtZHMg566X5rOVXG4gICAgICogQHJldHVybiB7YXJyYXl9IHBvc2l0aW9ucyDorqHnrpflkI7nmoToioLngrnkvY3nva7mlbDnu4RcbiAgICAgKi9cbiAgICBydW5NRFMoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSAyO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBzZWxmLnNjYWxlZERpc3RhbmNlcztcbiAgICAgICAgLy8gc3F1YXJlIGRpc3RhbmNlc1xuICAgICAgICBjb25zdCBNID0gTUxNYXRyaXgubXVsKE1MTWF0cml4LnBvdyhkaXN0YW5jZXMsIDIpLCAtMC41KTtcbiAgICAgICAgLy8gZG91YmxlIGNlbnRyZSB0aGUgcm93cy9jb2x1bW5zXG4gICAgICAgIGNvbnN0IHJvd01lYW5zID0gTS5tZWFuKFwicm93XCIpO1xuICAgICAgICBjb25zdCBjb2xNZWFucyA9IE0ubWVhbihcImNvbHVtblwiKTtcbiAgICAgICAgY29uc3QgdG90YWxNZWFuID0gTS5tZWFuKCk7XG4gICAgICAgIE0uYWRkKHRvdGFsTWVhbilcbiAgICAgICAgICAgIC5zdWJSb3dWZWN0b3Iocm93TWVhbnMpXG4gICAgICAgICAgICAuc3ViQ29sdW1uVmVjdG9yKGNvbE1lYW5zKTtcbiAgICAgICAgLy8gdGFrZSB0aGUgU1ZEIG9mIHRoZSBkb3VibGUgY2VudHJlZCBtYXRyaXgsIGFuZCByZXR1cm4gdGhlXG4gICAgICAgIC8vIHBvaW50cyBmcm9tIGl0XG4gICAgICAgIGNvbnN0IHJldCA9IG5ldyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbihNKTtcbiAgICAgICAgY29uc3QgZWlnZW5WYWx1ZXMgPSBNTE1hdHJpeC5zcXJ0KHJldC5kaWFnb25hbE1hdHJpeCkuZGlhZ29uYWwoKTtcbiAgICAgICAgcmV0dXJuIHJldC5sZWZ0U2luZ3VsYXJWZWN0b3JzLnRvSlNPTigpLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gTUxNYXRyaXgubXVsKFtyb3ddLCBbZWlnZW5WYWx1ZXNdKVxuICAgICAgICAgICAgICAgIC50b0pTT04oKVswXVxuICAgICAgICAgICAgICAgIC5zcGxpY2UoMCwgZGltZW5zaW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUluZmluaXR5KGRpc3RhbmNlcykge1xuICAgICAgICBsZXQgbWF4RGlzdGFuY2UgPSAtOTk5OTk5O1xuICAgICAgICBkaXN0YW5jZXMuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1heERpc3RhbmNlIDwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4RGlzdGFuY2UgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRpc3RhbmNlcy5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKCh2YWx1ZSwgaikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2VzW2ldW2pdID0gbWF4RGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gXCJtZHNcIjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/mds.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/index.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/index.js ***! \*****************************************************************************************/ /*! exports provided: RadialLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _radial__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./radial */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return _radial__WEBPACK_IMPORTED_MODULE_0__[\"RadialLayout\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFkaWFsL2luZGV4LmpzPzIzOTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUI7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFkaWFsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yYWRpYWwnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/mds.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/mds.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MDS; });\n/* harmony import */ var ml_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ml-matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/index.js\");\n\nclass MDS {\n constructor(params) {\n this.distances = params.distances;\n this.dimension = params.dimension || 2;\n this.linkDistance = params.linkDistance;\n }\n layout() {\n const self = this;\n const { dimension, distances, linkDistance } = self;\n try {\n // square distances\n const M = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul(ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].pow(distances, 2), -0.5);\n // double centre the rows/columns\n const rowMeans = M.mean('row');\n const colMeans = M.mean('column');\n const totalMean = M.mean();\n M.add(totalMean).subRowVector(rowMeans).subColumnVector(colMeans);\n // take the SVD of the double centred matrix, and return the\n // points from it\n const ret = new ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"SingularValueDecomposition\"](M);\n const eigenValues = ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].sqrt(ret.diagonalMatrix).diagonal();\n return ret.leftSingularVectors.toJSON().map((row) => {\n return ml_matrix__WEBPACK_IMPORTED_MODULE_0__[\"Matrix\"].mul([row], [eigenValues]).toJSON()[0].splice(0, dimension);\n });\n }\n catch (_a) {\n const res = [];\n for (let i = 0; i < distances.length; i++) {\n const x = Math.random() * linkDistance;\n const y = Math.random() * linkDistance;\n res.push([x, y]);\n }\n return res;\n }\n }\n}\n//# sourceMappingURL=mds.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFkaWFsL21kcy5qcz85NmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEyRTtBQUM1RDtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxQ0FBcUM7QUFDcEQ7QUFDQTtBQUNBLHNCQUFzQixnREFBUSxLQUFLLGdEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG9FQUEwQjtBQUN0RCxnQ0FBZ0MsZ0RBQVE7QUFDeEM7QUFDQSx1QkFBdUIsZ0RBQVE7QUFDL0IsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixzQkFBc0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L3JhZGlhbC9tZHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRyaXggYXMgTUxNYXRyaXgsIFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIH0gZnJvbSAnbWwtbWF0cml4JztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1EUyB7XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VzID0gcGFyYW1zLmRpc3RhbmNlcztcbiAgICAgICAgdGhpcy5kaW1lbnNpb24gPSBwYXJhbXMuZGltZW5zaW9uIHx8IDI7XG4gICAgICAgIHRoaXMubGlua0Rpc3RhbmNlID0gcGFyYW1zLmxpbmtEaXN0YW5jZTtcbiAgICB9XG4gICAgbGF5b3V0KCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgeyBkaW1lbnNpb24sIGRpc3RhbmNlcywgbGlua0Rpc3RhbmNlIH0gPSBzZWxmO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gc3F1YXJlIGRpc3RhbmNlc1xuICAgICAgICAgICAgY29uc3QgTSA9IE1MTWF0cml4Lm11bChNTE1hdHJpeC5wb3coZGlzdGFuY2VzLCAyKSwgLTAuNSk7XG4gICAgICAgICAgICAvLyBkb3VibGUgY2VudHJlIHRoZSByb3dzL2NvbHVtbnNcbiAgICAgICAgICAgIGNvbnN0IHJvd01lYW5zID0gTS5tZWFuKCdyb3cnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbE1lYW5zID0gTS5tZWFuKCdjb2x1bW4nKTtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsTWVhbiA9IE0ubWVhbigpO1xuICAgICAgICAgICAgTS5hZGQodG90YWxNZWFuKS5zdWJSb3dWZWN0b3Iocm93TWVhbnMpLnN1YkNvbHVtblZlY3Rvcihjb2xNZWFucyk7XG4gICAgICAgICAgICAvLyB0YWtlIHRoZSBTVkQgb2YgdGhlIGRvdWJsZSBjZW50cmVkIG1hdHJpeCwgYW5kIHJldHVybiB0aGVcbiAgICAgICAgICAgIC8vIHBvaW50cyBmcm9tIGl0XG4gICAgICAgICAgICBjb25zdCByZXQgPSBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24oTSk7XG4gICAgICAgICAgICBjb25zdCBlaWdlblZhbHVlcyA9IE1MTWF0cml4LnNxcnQocmV0LmRpYWdvbmFsTWF0cml4KS5kaWFnb25hbCgpO1xuICAgICAgICAgICAgcmV0dXJuIHJldC5sZWZ0U2luZ3VsYXJWZWN0b3JzLnRvSlNPTigpLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1MTWF0cml4Lm11bChbcm93XSwgW2VpZ2VuVmFsdWVzXSkudG9KU09OKClbMF0uc3BsaWNlKDAsIGRpbWVuc2lvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaXN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gTWF0aC5yYW5kb20oKSAqIGxpbmtEaXN0YW5jZTtcbiAgICAgICAgICAgICAgICBjb25zdCB5ID0gTWF0aC5yYW5kb20oKSAqIGxpbmtEaXN0YW5jZTtcbiAgICAgICAgICAgICAgICByZXMucHVzaChbeCwgeV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1kcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/mds.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radial.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radial.js ***! \******************************************************************************************/ /*! exports provided: RadialLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RadialLayout\", function() { return RadialLayout; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _mds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mds */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/mds.js\");\n/* harmony import */ var _radialNonoverlapForce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./radialNonoverlapForce */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radialNonoverlapForce.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n\n\n\nfunction getWeightMatrix(M) {\n const rows = M.length;\n const cols = M[0].length;\n const result = [];\n for (let i = 0; i < rows; i++) {\n const row = [];\n for (let j = 0; j < cols; j++) {\n if (M[i][j] !== 0) {\n row.push(1 / (M[i][j] * M[i][j]));\n }\n else {\n row.push(0);\n }\n }\n result.push(row);\n }\n return result;\n}\nfunction getIndexById(array, id) {\n let index = -1;\n array.forEach((a, i) => {\n if (a.id === id) {\n index = i;\n }\n });\n return index;\n}\nfunction getEDistance(p1, p2) {\n return Math.sqrt((p1[0] - p2[0]) * (p1[0] - p2[0]) + (p1[1] - p2[1]) * (p1[1] - p2[1]));\n}\n/**\n * 辐射状布局\n */\nclass RadialLayout extends _base__WEBPACK_IMPORTED_MODULE_1__[\"Base\"] {\n constructor(options) {\n super();\n /** 停止迭代的最大迭代数 */\n this.maxIteration = 1000;\n /** 中心点,默认为数据中第一个点 */\n this.focusNode = null;\n /** 每一圈半径 */\n this.unitRadius = null;\n /** 默认边长度 */\n this.linkDistance = 50;\n /** 是否防止重叠 */\n this.preventOverlap = false;\n /** 是否必须是严格的 radial 布局,即每一层的节点严格布局在一个环上。preventOverlap 为 true 时生效 */\n this.strictRadial = true;\n /** 防止重叠步骤的最大迭代次数 */\n this.maxPreventOverlapIteration = 200;\n this.sortStrength = 10;\n this.nodes = [];\n this.edges = [];\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n maxIteration: 1000,\n focusNode: null,\n unitRadius: null,\n linkDistance: 50,\n preventOverlap: false,\n nodeSize: undefined,\n nodeSpacing: undefined,\n strictRadial: true,\n maxPreventOverlapIteration: 200,\n sortBy: undefined,\n sortStrength: 10\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const edges = self.edges || [];\n if (!nodes || nodes.length === 0) {\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (!self.center) {\n self.center = [self.width / 2, self.height / 2];\n }\n const center = self.center;\n if (nodes.length === 1) {\n nodes[0].x = center[0];\n nodes[0].y = center[1];\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return;\n }\n const linkDistance = self.linkDistance;\n // layout\n let focusNode = null;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(self.focusNode)) {\n let found = false;\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].id === self.focusNode) {\n focusNode = nodes[i];\n self.focusNode = focusNode;\n found = true;\n i = nodes.length;\n }\n }\n if (!found) {\n focusNode = null;\n }\n }\n else {\n focusNode = self.focusNode;\n }\n // default focus node\n if (!focusNode) {\n focusNode = nodes[0];\n self.focusNode = focusNode;\n }\n // the index of the focusNode in data\n const focusIndex = getIndexById(nodes, focusNode.id);\n self.focusIndex = focusIndex;\n // the graph-theoretic distance (shortest path distance) matrix\n const adjMatrix = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getAdjMatrix\"])({ nodes, edges }, false);\n const D = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"floydWarshall\"])(adjMatrix);\n const maxDistance = self.maxToFocus(D, focusIndex);\n // replace first node in unconnected component to the circle at (maxDistance + 1)\n self.handleInfinity(D, focusIndex, maxDistance + 1);\n self.distances = D;\n // the shortest path distance from each node to focusNode\n const focusNodeD = D[focusIndex];\n const width = self.width || 500;\n const height = self.height || 500;\n let semiWidth = width - center[0] > center[0] ? center[0] : width - center[0];\n let semiHeight = height - center[1] > center[1] ? center[1] : height - center[1];\n if (semiWidth === 0) {\n semiWidth = width / 2;\n }\n if (semiHeight === 0) {\n semiHeight = height / 2;\n }\n // the maxRadius of the graph\n const maxRadius = semiHeight > semiWidth ? semiWidth : semiHeight;\n const maxD = Math.max(...focusNodeD);\n // the radius for each nodes away from focusNode\n const radii = [];\n focusNodeD.forEach((value, i) => {\n if (!self.unitRadius) {\n self.unitRadius = maxRadius / maxD;\n }\n radii[i] = value * self.unitRadius;\n });\n self.radii = radii;\n const eIdealD = self.eIdealDisMatrix();\n // const eIdealD = scaleMatrix(D, linkDistance);\n self.eIdealDistances = eIdealD;\n // the weight matrix, Wij = 1 / dij^(-2)\n const W = getWeightMatrix(eIdealD);\n self.weights = W;\n // the initial positions from mds\n const mds = new _mds__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({ linkDistance, distances: eIdealD });\n let positions = mds.layout();\n positions.forEach((p) => {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNaN\"])(p[0])) {\n p[0] = Math.random() * linkDistance;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNaN\"])(p[1])) {\n p[1] = Math.random() * linkDistance;\n }\n });\n self.positions = positions;\n positions.forEach((p, i) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n // move the graph to origin, centered at focusNode\n positions.forEach((p) => {\n p[0] -= positions[focusIndex][0];\n p[1] -= positions[focusIndex][1];\n });\n self.run();\n const preventOverlap = self.preventOverlap;\n const nodeSize = self.nodeSize;\n let nodeSizeFunc;\n const strictRadial = self.strictRadial;\n // stagger the overlapped nodes\n if (preventOverlap) {\n const nodeSpacing = self.nodeSpacing;\n let nodeSpacingFunc;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(nodeSpacing)) {\n nodeSpacingFunc = () => nodeSpacing;\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(nodeSpacing)) {\n nodeSpacingFunc = nodeSpacing;\n }\n else {\n nodeSpacingFunc = () => 0;\n }\n if (!nodeSize) {\n nodeSizeFunc = (d) => {\n if (d.size) {\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(d.size)) {\n const res = d.size[0] > d.size[1] ? d.size[0] : d.size[1];\n return res + nodeSpacingFunc(d);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(d.size)) {\n const res = d.size.width > d.size.height ? d.size.width : d.size.height;\n return res + nodeSpacingFunc(d);\n }\n return d.size + nodeSpacingFunc(d);\n }\n return 10 + nodeSpacingFunc(d);\n };\n }\n else if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(nodeSize)) {\n nodeSizeFunc = (d) => {\n const res = nodeSize[0] > nodeSize[1] ? nodeSize[0] : nodeSize[1];\n return res + nodeSpacingFunc(d);\n };\n }\n else {\n nodeSizeFunc = (d) => nodeSize + nodeSpacingFunc(d);\n }\n const nonoverlapForceParams = {\n nodes,\n nodeSizeFunc,\n adjMatrix,\n positions,\n radii,\n height,\n width,\n strictRadial,\n focusID: focusIndex,\n iterations: self.maxPreventOverlapIteration || 200,\n k: positions.length / 4.5\n };\n const nonoverlapForce = new _radialNonoverlapForce__WEBPACK_IMPORTED_MODULE_3__[\"default\"](nonoverlapForceParams);\n positions = nonoverlapForce.layout();\n }\n // move the graph to center\n positions.forEach((p, i) => {\n nodes[i].x = p[0] + center[0];\n nodes[i].y = p[1] + center[1];\n });\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges\n };\n }\n run() {\n const self = this;\n const maxIteration = self.maxIteration;\n const positions = self.positions || [];\n const W = self.weights || [];\n const eIdealDis = self.eIdealDistances || [];\n const radii = self.radii || [];\n for (let i = 0; i <= maxIteration; i++) {\n const param = i / maxIteration;\n self.oneIteration(param, positions, radii, eIdealDis, W);\n }\n }\n oneIteration(param, positions, radii, D, W) {\n const self = this;\n const vparam = 1 - param;\n const focusIndex = self.focusIndex;\n positions.forEach((v, i) => {\n // v\n const originDis = getEDistance(v, [0, 0]);\n const reciODis = originDis === 0 ? 0 : 1 / originDis;\n if (i === focusIndex) {\n return;\n }\n let xMolecule = 0;\n let yMolecule = 0;\n let denominator = 0;\n positions.forEach((u, j) => {\n // u\n if (i === j) {\n return;\n }\n // the euclidean distance between v and u\n const edis = getEDistance(v, u);\n const reciEdis = edis === 0 ? 0 : 1 / edis;\n const idealDis = D[j][i];\n // same for x and y\n denominator += W[i][j];\n // x\n xMolecule += W[i][j] * (u[0] + idealDis * (v[0] - u[0]) * reciEdis);\n // y\n yMolecule += W[i][j] * (u[1] + idealDis * (v[1] - u[1]) * reciEdis);\n });\n const reciR = radii[i] === 0 ? 0 : 1 / radii[i];\n denominator *= vparam;\n denominator += param * reciR * reciR;\n // x\n xMolecule *= vparam;\n xMolecule += param * reciR * v[0] * reciODis;\n v[0] = xMolecule / denominator;\n // y\n yMolecule *= vparam;\n yMolecule += param * reciR * v[1] * reciODis;\n v[1] = yMolecule / denominator;\n });\n }\n eIdealDisMatrix() {\n const self = this;\n const nodes = self.nodes;\n if (!nodes)\n return [];\n const D = self.distances;\n const linkDis = self.linkDistance;\n const radii = self.radii || [];\n const unitRadius = self.unitRadius || 50;\n const result = [];\n if (D) {\n D.forEach((row, i) => {\n const newRow = [];\n row.forEach((v, j) => {\n if (i === j) {\n newRow.push(0);\n }\n else if (radii[i] === radii[j]) {\n // i and j are on the same circle\n if (self.sortBy === \"data\") {\n // sort the nodes on the same circle according to the ordering of the data\n newRow.push((v * (Math.abs(i - j) * self.sortStrength)) /\n (radii[i] / unitRadius));\n }\n else if (self.sortBy) {\n // sort the nodes on the same circle according to the attributes\n let iValue = nodes[i][self.sortBy] || 0;\n let jValue = nodes[j][self.sortBy] || 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(iValue)) {\n iValue = iValue.charCodeAt(0);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(jValue)) {\n jValue = jValue.charCodeAt(0);\n }\n newRow.push((v * (Math.abs(iValue - jValue) * self.sortStrength)) /\n (radii[i] / unitRadius));\n }\n else {\n newRow.push((v * linkDis) / (radii[i] / unitRadius));\n }\n }\n else {\n // i and j are on different circle\n // i and j are on different circle\n const link = (linkDis + unitRadius) / 2;\n newRow.push(v * link);\n }\n });\n result.push(newRow);\n });\n }\n return result;\n }\n handleInfinity(matrix, focusIndex, step) {\n const length = matrix.length;\n // 遍历 matrix 中遍历 focus 对应行\n for (let i = 0; i < length; i++) {\n // matrix 关注点对应行的 Inf 项\n if (matrix[focusIndex][i] === Infinity) {\n matrix[focusIndex][i] = step;\n matrix[i][focusIndex] = step;\n // 遍历 matrix 中的 i 行,i 行中非 Inf 项若在 focus 行为 Inf,则替换 focus 行的那个 Inf\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] !== Infinity && matrix[focusIndex][j] === Infinity) {\n matrix[focusIndex][j] = step + matrix[i][j];\n matrix[j][focusIndex] = step + matrix[i][j];\n }\n }\n }\n }\n // 处理其他行的 Inf。根据该行对应点与 focus 距离以及 Inf 项点 与 focus 距离,决定替换值\n for (let i = 0; i < length; i++) {\n if (i === focusIndex) {\n continue;\n }\n for (let j = 0; j < length; j++) {\n if (matrix[i][j] === Infinity) {\n let minus = Math.abs(matrix[focusIndex][i] - matrix[focusIndex][j]);\n minus = minus === 0 ? 1 : minus;\n matrix[i][j] = minus;\n }\n }\n }\n }\n maxToFocus(matrix, focusIndex) {\n let max = 0;\n for (let i = 0; i < matrix[focusIndex].length; i++) {\n if (matrix[focusIndex][i] === Infinity) {\n continue;\n }\n max = matrix[focusIndex][i] > max ? matrix[focusIndex][i] : max;\n }\n return max;\n }\n getType() {\n return \"radial\";\n }\n}\n//# sourceMappingURL=radial.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFkaWFsL3JhZGlhbC5qcz8yYjg5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ21IO0FBQ3BGO0FBQ1A7QUFDb0M7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBLHVCQUF1QixVQUFVO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLDJCQUEyQiwwQ0FBSTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzREFBUTtBQUNwQjtBQUNBLDJCQUEyQixrQkFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwwREFBWSxFQUFFLGVBQWU7QUFDdkQsa0JBQWtCLDJEQUFhO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0Q0FBRyxFQUFFLG1DQUFtQztBQUNoRTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFLO0FBQ3JCO0FBQ0E7QUFDQSxnQkFBZ0IsbURBQUs7QUFDckI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQTtBQUNBLHFCQUFxQix3REFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHFEQUFPO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzREFBUTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHFEQUFPO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyw4REFBcUI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQVE7QUFDeEM7QUFDQTtBQUNBLGdDQUFnQyxzREFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixZQUFZO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsWUFBWTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQkFBK0I7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L3JhZGlhbC9yYWRpYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgcmFuZG9tIGxheW91dFxuICogQGF1dGhvciBzaGl3dS53eXlAYW50ZmluLmNvbVxuICovXG5pbXBvcnQgeyBpc05hTiwgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzU3RyaW5nLCBmbG95ZFdhcnNoYWxsLCBnZXRBZGpNYXRyaXgsIGlzT2JqZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxcIjtcbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi4vYmFzZVwiO1xuaW1wb3J0IE1EUyBmcm9tIFwiLi9tZHNcIjtcbmltcG9ydCBSYWRpYWxOb25vdmVybGFwRm9yY2UgZnJvbSBcIi4vcmFkaWFsTm9ub3ZlcmxhcEZvcmNlXCI7XG5mdW5jdGlvbiBnZXRXZWlnaHRNYXRyaXgoTSkge1xuICAgIGNvbnN0IHJvd3MgPSBNLmxlbmd0aDtcbiAgICBjb25zdCBjb2xzID0gTVswXS5sZW5ndGg7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICAgICAgICBpZiAoTVtpXVtqXSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJvdy5wdXNoKDEgLyAoTVtpXVtqXSAqIE1baV1bal0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvdy5wdXNoKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5wdXNoKHJvdyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWQoYXJyYXksIGlkKSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgYXJyYXkuZm9yRWFjaCgoYSwgaSkgPT4ge1xuICAgICAgICBpZiAoYS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpbmRleDtcbn1cbmZ1bmN0aW9uIGdldEVEaXN0YW5jZShwMSwgcDIpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KChwMVswXSAtIHAyWzBdKSAqIChwMVswXSAtIHAyWzBdKSArIChwMVsxXSAtIHAyWzFdKSAqIChwMVsxXSAtIHAyWzFdKSk7XG59XG4vKipcbiAqIOi+kOWwhOeKtuW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgUmFkaWFsTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5YGc5q2i6L+t5Luj55qE5pyA5aSn6L+t5Luj5pWwICovXG4gICAgICAgIHRoaXMubWF4SXRlcmF0aW9uID0gMTAwMDtcbiAgICAgICAgLyoqIOS4reW/g+eCue+8jOm7mOiupOS4uuaVsOaNruS4reesrOS4gOS4queCuSAqL1xuICAgICAgICB0aGlzLmZvY3VzTm9kZSA9IG51bGw7XG4gICAgICAgIC8qKiDmr4/kuIDlnIjljYrlvoQgKi9cbiAgICAgICAgdGhpcy51bml0UmFkaXVzID0gbnVsbDtcbiAgICAgICAgLyoqIOm7mOiupOi+uemVv+W6piAqL1xuICAgICAgICB0aGlzLmxpbmtEaXN0YW5jZSA9IDUwO1xuICAgICAgICAvKiog5piv5ZCm6Ziy5q2i6YeN5Y+gICovXG4gICAgICAgIHRoaXMucHJldmVudE92ZXJsYXAgPSBmYWxzZTtcbiAgICAgICAgLyoqIOaYr+WQpuW/hemhu+aYr+S4peagvOeahCByYWRpYWwg5biD5bGA77yM5Y2z5q+P5LiA5bGC55qE6IqC54K55Lil5qC85biD5bGA5Zyo5LiA5Liq546v5LiK44CCcHJldmVudE92ZXJsYXAg5Li6IHRydWUg5pe255Sf5pWIICovXG4gICAgICAgIHRoaXMuc3RyaWN0UmFkaWFsID0gdHJ1ZTtcbiAgICAgICAgLyoqIOmYsuatoumHjeWPoOatpemqpOeahOacgOWkp+i/reS7o+asoeaVsCAqL1xuICAgICAgICB0aGlzLm1heFByZXZlbnRPdmVybGFwSXRlcmF0aW9uID0gMjAwO1xuICAgICAgICB0aGlzLnNvcnRTdHJlbmd0aCA9IDEwO1xuICAgICAgICB0aGlzLm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICAgICAgdGhpcy51cGRhdGVDZmcob3B0aW9ucyk7XG4gICAgfVxuICAgIGdldERlZmF1bHRDZmcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXhJdGVyYXRpb246IDEwMDAsXG4gICAgICAgICAgICBmb2N1c05vZGU6IG51bGwsXG4gICAgICAgICAgICB1bml0UmFkaXVzOiBudWxsLFxuICAgICAgICAgICAgbGlua0Rpc3RhbmNlOiA1MCxcbiAgICAgICAgICAgIHByZXZlbnRPdmVybGFwOiBmYWxzZSxcbiAgICAgICAgICAgIG5vZGVTaXplOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2RlU3BhY2luZzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc3RyaWN0UmFkaWFsOiB0cnVlLFxuICAgICAgICAgICAgbWF4UHJldmVudE92ZXJsYXBJdGVyYXRpb246IDIwMCxcbiAgICAgICAgICAgIHNvcnRCeTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc29ydFN0cmVuZ3RoOiAxMFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiafooYzluIPlsYBcbiAgICAgKi9cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHNlbGYuZWRnZXMgfHwgW107XG4gICAgICAgIGlmICghbm9kZXMgfHwgbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgICAgICBzZWxmLm9uTGF5b3V0RW5kKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxmLndpZHRoICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYud2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlbGYuaGVpZ2h0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHNlbGYuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5jZW50ZXIpIHtcbiAgICAgICAgICAgIHNlbGYuY2VudGVyID0gW3NlbGYud2lkdGggLyAyLCBzZWxmLmhlaWdodCAvIDJdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBub2Rlc1swXS54ID0gY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbMF0ueSA9IGNlbnRlclsxXTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uTGF5b3V0RW5kKVxuICAgICAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaW5rRGlzdGFuY2UgPSBzZWxmLmxpbmtEaXN0YW5jZTtcbiAgICAgICAgLy8gbGF5b3V0XG4gICAgICAgIGxldCBmb2N1c05vZGUgPSBudWxsO1xuICAgICAgICBpZiAoaXNTdHJpbmcoc2VsZi5mb2N1c05vZGUpKSB7XG4gICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZXNbaV0uaWQgPT09IHNlbGYuZm9jdXNOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzTm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmZvY3VzTm9kZSA9IGZvY3VzTm9kZTtcbiAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpID0gbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICBmb2N1c05vZGUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9jdXNOb2RlID0gc2VsZi5mb2N1c05vZGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVmYXVsdCBmb2N1cyBub2RlXG4gICAgICAgIGlmICghZm9jdXNOb2RlKSB7XG4gICAgICAgICAgICBmb2N1c05vZGUgPSBub2Rlc1swXTtcbiAgICAgICAgICAgIHNlbGYuZm9jdXNOb2RlID0gZm9jdXNOb2RlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSBpbmRleCBvZiB0aGUgZm9jdXNOb2RlIGluIGRhdGFcbiAgICAgICAgY29uc3QgZm9jdXNJbmRleCA9IGdldEluZGV4QnlJZChub2RlcywgZm9jdXNOb2RlLmlkKTtcbiAgICAgICAgc2VsZi5mb2N1c0luZGV4ID0gZm9jdXNJbmRleDtcbiAgICAgICAgLy8gdGhlIGdyYXBoLXRoZW9yZXRpYyBkaXN0YW5jZSAoc2hvcnRlc3QgcGF0aCBkaXN0YW5jZSkgbWF0cml4XG4gICAgICAgIGNvbnN0IGFkak1hdHJpeCA9IGdldEFkak1hdHJpeCh7IG5vZGVzLCBlZGdlcyB9LCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IEQgPSBmbG95ZFdhcnNoYWxsKGFkak1hdHJpeCk7XG4gICAgICAgIGNvbnN0IG1heERpc3RhbmNlID0gc2VsZi5tYXhUb0ZvY3VzKEQsIGZvY3VzSW5kZXgpO1xuICAgICAgICAvLyByZXBsYWNlIGZpcnN0IG5vZGUgaW4gdW5jb25uZWN0ZWQgY29tcG9uZW50IHRvIHRoZSBjaXJjbGUgYXQgKG1heERpc3RhbmNlICsgMSlcbiAgICAgICAgc2VsZi5oYW5kbGVJbmZpbml0eShELCBmb2N1c0luZGV4LCBtYXhEaXN0YW5jZSArIDEpO1xuICAgICAgICBzZWxmLmRpc3RhbmNlcyA9IEQ7XG4gICAgICAgIC8vIHRoZSBzaG9ydGVzdCBwYXRoIGRpc3RhbmNlIGZyb20gZWFjaCBub2RlIHRvIGZvY3VzTm9kZVxuICAgICAgICBjb25zdCBmb2N1c05vZGVEID0gRFtmb2N1c0luZGV4XTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBzZWxmLndpZHRoIHx8IDUwMDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gc2VsZi5oZWlnaHQgfHwgNTAwO1xuICAgICAgICBsZXQgc2VtaVdpZHRoID0gd2lkdGggLSBjZW50ZXJbMF0gPiBjZW50ZXJbMF0gPyBjZW50ZXJbMF0gOiB3aWR0aCAtIGNlbnRlclswXTtcbiAgICAgICAgbGV0IHNlbWlIZWlnaHQgPSBoZWlnaHQgLSBjZW50ZXJbMV0gPiBjZW50ZXJbMV0gPyBjZW50ZXJbMV0gOiBoZWlnaHQgLSBjZW50ZXJbMV07XG4gICAgICAgIGlmIChzZW1pV2lkdGggPT09IDApIHtcbiAgICAgICAgICAgIHNlbWlXaWR0aCA9IHdpZHRoIC8gMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VtaUhlaWdodCA9PT0gMCkge1xuICAgICAgICAgICAgc2VtaUhlaWdodCA9IGhlaWdodCAvIDI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIG1heFJhZGl1cyBvZiB0aGUgZ3JhcGhcbiAgICAgICAgY29uc3QgbWF4UmFkaXVzID0gc2VtaUhlaWdodCA+IHNlbWlXaWR0aCA/IHNlbWlXaWR0aCA6IHNlbWlIZWlnaHQ7XG4gICAgICAgIGNvbnN0IG1heEQgPSBNYXRoLm1heCguLi5mb2N1c05vZGVEKTtcbiAgICAgICAgLy8gdGhlIHJhZGl1cyBmb3IgZWFjaCBub2RlcyBhd2F5IGZyb20gZm9jdXNOb2RlXG4gICAgICAgIGNvbnN0IHJhZGlpID0gW107XG4gICAgICAgIGZvY3VzTm9kZUQuZm9yRWFjaCgodmFsdWUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICghc2VsZi51bml0UmFkaXVzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi51bml0UmFkaXVzID0gbWF4UmFkaXVzIC8gbWF4RDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJhZGlpW2ldID0gdmFsdWUgKiBzZWxmLnVuaXRSYWRpdXM7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLnJhZGlpID0gcmFkaWk7XG4gICAgICAgIGNvbnN0IGVJZGVhbEQgPSBzZWxmLmVJZGVhbERpc01hdHJpeCgpO1xuICAgICAgICAvLyBjb25zdCBlSWRlYWxEID0gc2NhbGVNYXRyaXgoRCwgbGlua0Rpc3RhbmNlKTtcbiAgICAgICAgc2VsZi5lSWRlYWxEaXN0YW5jZXMgPSBlSWRlYWxEO1xuICAgICAgICAvLyB0aGUgd2VpZ2h0IG1hdHJpeCwgV2lqID0gMSAvIGRpal4oLTIpXG4gICAgICAgIGNvbnN0IFcgPSBnZXRXZWlnaHRNYXRyaXgoZUlkZWFsRCk7XG4gICAgICAgIHNlbGYud2VpZ2h0cyA9IFc7XG4gICAgICAgIC8vIHRoZSBpbml0aWFsIHBvc2l0aW9ucyBmcm9tIG1kc1xuICAgICAgICBjb25zdCBtZHMgPSBuZXcgTURTKHsgbGlua0Rpc3RhbmNlLCBkaXN0YW5jZXM6IGVJZGVhbEQgfSk7XG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSBtZHMubGF5b3V0KCk7XG4gICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOYU4ocFswXSkpIHtcbiAgICAgICAgICAgICAgICBwWzBdID0gTWF0aC5yYW5kb20oKSAqIGxpbmtEaXN0YW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc05hTihwWzFdKSkge1xuICAgICAgICAgICAgICAgIHBbMV0gPSBNYXRoLnJhbmRvbSgpICogbGlua0Rpc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2VsZi5wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKChwLCBpKSA9PiB7XG4gICAgICAgICAgICBub2Rlc1tpXS54ID0gcFswXSArIGNlbnRlclswXTtcbiAgICAgICAgICAgIG5vZGVzW2ldLnkgPSBwWzFdICsgY2VudGVyWzFdO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gbW92ZSB0aGUgZ3JhcGggdG8gb3JpZ2luLCBjZW50ZXJlZCBhdCBmb2N1c05vZGVcbiAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgICAgIHBbMF0gLT0gcG9zaXRpb25zW2ZvY3VzSW5kZXhdWzBdO1xuICAgICAgICAgICAgcFsxXSAtPSBwb3NpdGlvbnNbZm9jdXNJbmRleF1bMV07XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLnJ1bigpO1xuICAgICAgICBjb25zdCBwcmV2ZW50T3ZlcmxhcCA9IHNlbGYucHJldmVudE92ZXJsYXA7XG4gICAgICAgIGNvbnN0IG5vZGVTaXplID0gc2VsZi5ub2RlU2l6ZTtcbiAgICAgICAgbGV0IG5vZGVTaXplRnVuYztcbiAgICAgICAgY29uc3Qgc3RyaWN0UmFkaWFsID0gc2VsZi5zdHJpY3RSYWRpYWw7XG4gICAgICAgIC8vIHN0YWdnZXIgdGhlIG92ZXJsYXBwZWQgbm9kZXNcbiAgICAgICAgaWYgKHByZXZlbnRPdmVybGFwKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlU3BhY2luZyA9IHNlbGYubm9kZVNwYWNpbmc7XG4gICAgICAgICAgICBsZXQgbm9kZVNwYWNpbmdGdW5jO1xuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKG5vZGVTcGFjaW5nKSkge1xuICAgICAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IG5vZGVTcGFjaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbihub2RlU3BhY2luZykpIHtcbiAgICAgICAgICAgICAgICBub2RlU3BhY2luZ0Z1bmMgPSBub2RlU3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVTcGFjaW5nRnVuYyA9ICgpID0+IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW5vZGVTaXplKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQuc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZC5zaXplKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGQuc2l6ZVswXSA+IGQuc2l6ZVsxXSA/IGQuc2l6ZVswXSA6IGQuc2l6ZVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KGQuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBkLnNpemUud2lkdGggPiBkLnNpemUuaGVpZ2h0ID8gZC5zaXplLndpZHRoIDogZC5zaXplLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzICsgbm9kZVNwYWNpbmdGdW5jKGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQuc2l6ZSArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTAgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkobm9kZVNpemUpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVNpemVGdW5jID0gKGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gbm9kZVNpemVbMF0gPiBub2RlU2l6ZVsxXSA/IG5vZGVTaXplWzBdIDogbm9kZVNpemVbMV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMgKyBub2RlU3BhY2luZ0Z1bmMoZCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVTaXplRnVuYyA9IChkKSA9PiBub2RlU2l6ZSArIG5vZGVTcGFjaW5nRnVuYyhkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vbm92ZXJsYXBGb3JjZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgICAgICBub2RlU2l6ZUZ1bmMsXG4gICAgICAgICAgICAgICAgYWRqTWF0cml4LFxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICByYWRpaSxcbiAgICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgc3RyaWN0UmFkaWFsLFxuICAgICAgICAgICAgICAgIGZvY3VzSUQ6IGZvY3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgaXRlcmF0aW9uczogc2VsZi5tYXhQcmV2ZW50T3ZlcmxhcEl0ZXJhdGlvbiB8fCAyMDAsXG4gICAgICAgICAgICAgICAgazogcG9zaXRpb25zLmxlbmd0aCAvIDQuNVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IG5vbm92ZXJsYXBGb3JjZSA9IG5ldyBSYWRpYWxOb25vdmVybGFwRm9yY2Uobm9ub3ZlcmxhcEZvcmNlUGFyYW1zKTtcbiAgICAgICAgICAgIHBvc2l0aW9ucyA9IG5vbm92ZXJsYXBGb3JjZS5sYXlvdXQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtb3ZlIHRoZSBncmFwaCB0byBjZW50ZXJcbiAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKHAsIGkpID0+IHtcbiAgICAgICAgICAgIG5vZGVzW2ldLnggPSBwWzBdICsgY2VudGVyWzBdO1xuICAgICAgICAgICAgbm9kZXNbaV0ueSA9IHBbMV0gKyBjZW50ZXJbMV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgICAgZWRnZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcnVuKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgbWF4SXRlcmF0aW9uID0gc2VsZi5tYXhJdGVyYXRpb247XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHNlbGYucG9zaXRpb25zIHx8IFtdO1xuICAgICAgICBjb25zdCBXID0gc2VsZi53ZWlnaHRzIHx8IFtdO1xuICAgICAgICBjb25zdCBlSWRlYWxEaXMgPSBzZWxmLmVJZGVhbERpc3RhbmNlcyB8fCBbXTtcbiAgICAgICAgY29uc3QgcmFkaWkgPSBzZWxmLnJhZGlpIHx8IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBtYXhJdGVyYXRpb247IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBpIC8gbWF4SXRlcmF0aW9uO1xuICAgICAgICAgICAgc2VsZi5vbmVJdGVyYXRpb24ocGFyYW0sIHBvc2l0aW9ucywgcmFkaWksIGVJZGVhbERpcywgVyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25lSXRlcmF0aW9uKHBhcmFtLCBwb3NpdGlvbnMsIHJhZGlpLCBELCBXKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB2cGFyYW0gPSAxIC0gcGFyYW07XG4gICAgICAgIGNvbnN0IGZvY3VzSW5kZXggPSBzZWxmLmZvY3VzSW5kZXg7XG4gICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICAvLyB2XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5EaXMgPSBnZXRFRGlzdGFuY2UodiwgWzAsIDBdKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY2lPRGlzID0gb3JpZ2luRGlzID09PSAwID8gMCA6IDEgLyBvcmlnaW5EaXM7XG4gICAgICAgICAgICBpZiAoaSA9PT0gZm9jdXNJbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB4TW9sZWN1bGUgPSAwO1xuICAgICAgICAgICAgbGV0IHlNb2xlY3VsZSA9IDA7XG4gICAgICAgICAgICBsZXQgZGVub21pbmF0b3IgPSAwO1xuICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goKHUsIGopID0+IHtcbiAgICAgICAgICAgICAgICAvLyB1XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB0aGUgZXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdiBhbmQgdVxuICAgICAgICAgICAgICAgIGNvbnN0IGVkaXMgPSBnZXRFRGlzdGFuY2UodiwgdSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjaUVkaXMgPSBlZGlzID09PSAwID8gMCA6IDEgLyBlZGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZWFsRGlzID0gRFtqXVtpXTtcbiAgICAgICAgICAgICAgICAvLyBzYW1lIGZvciB4IGFuZCB5XG4gICAgICAgICAgICAgICAgZGVub21pbmF0b3IgKz0gV1tpXVtqXTtcbiAgICAgICAgICAgICAgICAvLyB4XG4gICAgICAgICAgICAgICAgeE1vbGVjdWxlICs9IFdbaV1bal0gKiAodVswXSArIGlkZWFsRGlzICogKHZbMF0gLSB1WzBdKSAqIHJlY2lFZGlzKTtcbiAgICAgICAgICAgICAgICAvLyB5XG4gICAgICAgICAgICAgICAgeU1vbGVjdWxlICs9IFdbaV1bal0gKiAodVsxXSArIGlkZWFsRGlzICogKHZbMV0gLSB1WzFdKSAqIHJlY2lFZGlzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVjaVIgPSByYWRpaVtpXSA9PT0gMCA/IDAgOiAxIC8gcmFkaWlbaV07XG4gICAgICAgICAgICBkZW5vbWluYXRvciAqPSB2cGFyYW07XG4gICAgICAgICAgICBkZW5vbWluYXRvciArPSBwYXJhbSAqIHJlY2lSICogcmVjaVI7XG4gICAgICAgICAgICAvLyB4XG4gICAgICAgICAgICB4TW9sZWN1bGUgKj0gdnBhcmFtO1xuICAgICAgICAgICAgeE1vbGVjdWxlICs9IHBhcmFtICogcmVjaVIgKiB2WzBdICogcmVjaU9EaXM7XG4gICAgICAgICAgICB2WzBdID0geE1vbGVjdWxlIC8gZGVub21pbmF0b3I7XG4gICAgICAgICAgICAvLyB5XG4gICAgICAgICAgICB5TW9sZWN1bGUgKj0gdnBhcmFtO1xuICAgICAgICAgICAgeU1vbGVjdWxlICs9IHBhcmFtICogcmVjaVIgKiB2WzFdICogcmVjaU9EaXM7XG4gICAgICAgICAgICB2WzFdID0geU1vbGVjdWxlIC8gZGVub21pbmF0b3I7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlSWRlYWxEaXNNYXRyaXgoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGYubm9kZXM7XG4gICAgICAgIGlmICghbm9kZXMpXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGNvbnN0IEQgPSBzZWxmLmRpc3RhbmNlcztcbiAgICAgICAgY29uc3QgbGlua0RpcyA9IHNlbGYubGlua0Rpc3RhbmNlO1xuICAgICAgICBjb25zdCByYWRpaSA9IHNlbGYucmFkaWkgfHwgW107XG4gICAgICAgIGNvbnN0IHVuaXRSYWRpdXMgPSBzZWxmLnVuaXRSYWRpdXMgfHwgNTA7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAoRCkge1xuICAgICAgICAgICAgRC5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdSb3cgPSBbXTtcbiAgICAgICAgICAgICAgICByb3cuZm9yRWFjaCgodiwgaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Um93LnB1c2goMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmFkaWlbaV0gPT09IHJhZGlpW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpIGFuZCBqIGFyZSBvbiB0aGUgc2FtZSBjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnNvcnRCeSA9PT0gXCJkYXRhXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3J0IHRoZSBub2RlcyBvbiB0aGUgc2FtZSBjaXJjbGUgYWNjb3JkaW5nIHRvIHRoZSBvcmRlcmluZyBvZiB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jvdy5wdXNoKCh2ICogKE1hdGguYWJzKGkgLSBqKSAqIHNlbGYuc29ydFN0cmVuZ3RoKSkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFkaWlbaV0gLyB1bml0UmFkaXVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWxmLnNvcnRCeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvcnQgdGhlIG5vZGVzIG9uIHRoZSBzYW1lIGNpcmNsZSBhY2NvcmRpbmcgdG8gdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaVZhbHVlID0gbm9kZXNbaV1bc2VsZi5zb3J0QnldIHx8IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpWYWx1ZSA9IG5vZGVzW2pdW3NlbGYuc29ydEJ5XSB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhpVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlWYWx1ZSA9IGlWYWx1ZS5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcoalZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqVmFsdWUgPSBqVmFsdWUuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Um93LnB1c2goKHYgKiAoTWF0aC5hYnMoaVZhbHVlIC0galZhbHVlKSAqIHNlbGYuc29ydFN0cmVuZ3RoKSkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFkaWlbaV0gLyB1bml0UmFkaXVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSb3cucHVzaCgodiAqIGxpbmtEaXMpIC8gKHJhZGlpW2ldIC8gdW5pdFJhZGl1cykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaSBhbmQgaiBhcmUgb24gZGlmZmVyZW50IGNpcmNsZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaSBhbmQgaiBhcmUgb24gZGlmZmVyZW50IGNpcmNsZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluayA9IChsaW5rRGlzICsgdW5pdFJhZGl1cykgLyAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3Um93LnB1c2godiAqIGxpbmspO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3Um93KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGhhbmRsZUluZmluaXR5KG1hdHJpeCwgZm9jdXNJbmRleCwgc3RlcCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBtYXRyaXgubGVuZ3RoO1xuICAgICAgICAvLyDpgY3ljoYgbWF0cml4IOS4remBjeWOhiBmb2N1cyDlr7nlupTooYxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgLy8gbWF0cml4IOWFs+azqOeCueWvueW6lOihjOeahCBJbmYg6aG5XG4gICAgICAgICAgICBpZiAobWF0cml4W2ZvY3VzSW5kZXhdW2ldID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIG1hdHJpeFtmb2N1c0luZGV4XVtpXSA9IHN0ZXA7XG4gICAgICAgICAgICAgICAgbWF0cml4W2ldW2ZvY3VzSW5kZXhdID0gc3RlcDtcbiAgICAgICAgICAgICAgICAvLyDpgY3ljoYgbWF0cml4IOS4reeahCBpIOihjO+8jGkg6KGM5Lit6Z2eIEluZiDpobnoi6XlnKggZm9jdXMg6KGM5Li6IEluZu+8jOWImeabv+aNoiBmb2N1cyDooYznmoTpgqPkuKogSW5mXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0cml4W2ldW2pdICE9PSBJbmZpbml0eSAmJiBtYXRyaXhbZm9jdXNJbmRleF1bal0gPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXhbZm9jdXNJbmRleF1bal0gPSBzdGVwICsgbWF0cml4W2ldW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4W2pdW2ZvY3VzSW5kZXhdID0gc3RlcCArIG1hdHJpeFtpXVtqXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDlpITnkIblhbbku5booYznmoQgSW5m44CC5qC55o2u6K+l6KGM5a+55bqU54K55LiOIGZvY3VzIOi3neemu+S7peWPiiBJbmYg6aG554K5IOS4jiBmb2N1cyDot53nprvvvIzlhrPlrprmm7/mjaLlgLxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGkgPT09IGZvY3VzSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobWF0cml4W2ldW2pdID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbWludXMgPSBNYXRoLmFicyhtYXRyaXhbZm9jdXNJbmRleF1baV0gLSBtYXRyaXhbZm9jdXNJbmRleF1bal0pO1xuICAgICAgICAgICAgICAgICAgICBtaW51cyA9IG1pbnVzID09PSAwID8gMSA6IG1pbnVzO1xuICAgICAgICAgICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtaW51cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbWF4VG9Gb2N1cyhtYXRyaXgsIGZvY3VzSW5kZXgpIHtcbiAgICAgICAgbGV0IG1heCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4W2ZvY3VzSW5kZXhdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobWF0cml4W2ZvY3VzSW5kZXhdW2ldID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF4ID0gbWF0cml4W2ZvY3VzSW5kZXhdW2ldID4gbWF4ID8gbWF0cml4W2ZvY3VzSW5kZXhdW2ldIDogbWF4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIGdldFR5cGUoKSB7XG4gICAgICAgIHJldHVybiBcInJhZGlhbFwiO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJhZGlhbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radial.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radialNonoverlapForce.js": /*!*********************************************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radialNonoverlapForce.js ***! \*********************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return RadialNonoverlapForce; });\nconst SPEED_DIVISOR = 800;\nclass RadialNonoverlapForce {\n constructor(params) {\n this.disp = [];\n this.positions = params.positions;\n this.adjMatrix = params.adjMatrix;\n this.focusID = params.focusID;\n this.radii = params.radii;\n this.iterations = params.iterations || 10;\n this.height = params.height || 10;\n this.width = params.width || 10;\n this.speed = params.speed || 100;\n this.gravity = params.gravity || 10;\n this.nodeSizeFunc = params.nodeSizeFunc;\n this.k = params.k || 5;\n this.strictRadial = params.strictRadial;\n this.nodes = params.nodes;\n }\n layout() {\n const self = this;\n const positions = self.positions;\n const disp = [];\n const iterations = self.iterations;\n const maxDisplace = self.width / 10;\n self.maxDisplace = maxDisplace;\n self.disp = disp;\n for (let i = 0; i < iterations; i++) {\n positions.forEach((_, k) => {\n disp[k] = { x: 0, y: 0 };\n });\n // 给重叠的节点增加斥力\n self.getRepulsion();\n self.updatePositions();\n }\n return positions;\n }\n getRepulsion() {\n const self = this;\n const positions = self.positions;\n const nodes = self.nodes;\n const disp = self.disp;\n const k = self.k;\n const radii = self.radii || [];\n positions.forEach((v, i) => {\n disp[i] = { x: 0, y: 0 };\n positions.forEach((u, j) => {\n if (i === j) {\n return;\n }\n // v and u are not on the same circle, return\n if (radii[i] !== radii[j]) {\n return;\n }\n let vecx = v[0] - u[0];\n let vecy = v[1] - u[1];\n let vecLength = Math.sqrt(vecx * vecx + vecy * vecy);\n if (vecLength === 0) {\n vecLength = 1;\n const sign = i > j ? 1 : -1;\n vecx = 0.01 * sign;\n vecy = 0.01 * sign;\n }\n // these two nodes overlap\n if (vecLength < self.nodeSizeFunc(nodes[i]) / 2 + self.nodeSizeFunc(nodes[j]) / 2) {\n const common = (k * k) / vecLength;\n disp[i].x += (vecx / vecLength) * common;\n disp[i].y += (vecy / vecLength) * common;\n }\n });\n });\n }\n updatePositions() {\n const self = this;\n const positions = self.positions;\n const disp = self.disp;\n const speed = self.speed;\n const strictRadial = self.strictRadial;\n const f = self.focusID;\n const maxDisplace = self.maxDisplace || self.width / 10;\n if (strictRadial) {\n disp.forEach((di, i) => {\n const vx = positions[i][0] - positions[f][0];\n const vy = positions[i][1] - positions[f][1];\n const vLength = Math.sqrt(vx * vx + vy * vy);\n let vpx = vy / vLength;\n let vpy = -vx / vLength;\n const diLength = Math.sqrt(di.x * di.x + di.y * di.y);\n let alpha = Math.acos((vpx * di.x + vpy * di.y) / diLength);\n if (alpha > Math.PI / 2) {\n alpha -= Math.PI / 2;\n vpx *= -1;\n vpy *= -1;\n }\n const tdispLength = Math.cos(alpha) * diLength;\n di.x = vpx * tdispLength;\n di.y = vpy * tdispLength;\n });\n }\n // move\n const radii = self.radii;\n positions.forEach((n, i) => {\n if (i === f) {\n return;\n }\n const distLength = Math.sqrt(disp[i].x * disp[i].x + disp[i].y * disp[i].y);\n if (distLength > 0 && i !== f) {\n const limitedDist = Math.min(maxDisplace * (speed / SPEED_DIVISOR), distLength);\n n[0] += (disp[i].x / distLength) * limitedDist;\n n[1] += (disp[i].y / distLength) * limitedDist;\n if (strictRadial) {\n let vx = n[0] - positions[f][0];\n let vy = n[1] - positions[f][1];\n const nfDis = Math.sqrt(vx * vx + vy * vy);\n vx = (vx / nfDis) * radii[i];\n vy = (vy / nfDis) * radii[i];\n n[0] = positions[f][0] + vx;\n n[1] = positions[f][1] + vy;\n }\n }\n });\n }\n}\n//# sourceMappingURL=radialNonoverlapForce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFkaWFsL3JhZGlhbE5vbm92ZXJsYXBGb3JjZS5qcz8yMTllIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBLDJCQUEyQjtBQUMzQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL2xheW91dC9yYWRpYWwvcmFkaWFsTm9ub3ZlcmxhcEZvcmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU1BFRURfRElWSVNPUiA9IDgwMDtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhZGlhbE5vbm92ZXJsYXBGb3JjZSB7XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHRoaXMuZGlzcCA9IFtdO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHBhcmFtcy5wb3NpdGlvbnM7XG4gICAgICAgIHRoaXMuYWRqTWF0cml4ID0gcGFyYW1zLmFkak1hdHJpeDtcbiAgICAgICAgdGhpcy5mb2N1c0lEID0gcGFyYW1zLmZvY3VzSUQ7XG4gICAgICAgIHRoaXMucmFkaWkgPSBwYXJhbXMucmFkaWk7XG4gICAgICAgIHRoaXMuaXRlcmF0aW9ucyA9IHBhcmFtcy5pdGVyYXRpb25zIHx8IDEwO1xuICAgICAgICB0aGlzLmhlaWdodCA9IHBhcmFtcy5oZWlnaHQgfHwgMTA7XG4gICAgICAgIHRoaXMud2lkdGggPSBwYXJhbXMud2lkdGggfHwgMTA7XG4gICAgICAgIHRoaXMuc3BlZWQgPSBwYXJhbXMuc3BlZWQgfHwgMTAwO1xuICAgICAgICB0aGlzLmdyYXZpdHkgPSBwYXJhbXMuZ3Jhdml0eSB8fCAxMDtcbiAgICAgICAgdGhpcy5ub2RlU2l6ZUZ1bmMgPSBwYXJhbXMubm9kZVNpemVGdW5jO1xuICAgICAgICB0aGlzLmsgPSBwYXJhbXMuayB8fCA1O1xuICAgICAgICB0aGlzLnN0cmljdFJhZGlhbCA9IHBhcmFtcy5zdHJpY3RSYWRpYWw7XG4gICAgICAgIHRoaXMubm9kZXMgPSBwYXJhbXMubm9kZXM7XG4gICAgfVxuICAgIGxheW91dCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHNlbGYucG9zaXRpb25zO1xuICAgICAgICBjb25zdCBkaXNwID0gW107XG4gICAgICAgIGNvbnN0IGl0ZXJhdGlvbnMgPSBzZWxmLml0ZXJhdGlvbnM7XG4gICAgICAgIGNvbnN0IG1heERpc3BsYWNlID0gc2VsZi53aWR0aCAvIDEwO1xuICAgICAgICBzZWxmLm1heERpc3BsYWNlID0gbWF4RGlzcGxhY2U7XG4gICAgICAgIHNlbGYuZGlzcCA9IGRpc3A7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgoXywgaykgPT4ge1xuICAgICAgICAgICAgICAgIGRpc3Bba10gPSB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8g57uZ6YeN5Y+g55qE6IqC54K55aKe5Yqg5pal5YqbXG4gICAgICAgICAgICBzZWxmLmdldFJlcHVsc2lvbigpO1xuICAgICAgICAgICAgc2VsZi51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9zaXRpb25zO1xuICAgIH1cbiAgICBnZXRSZXB1bHNpb24oKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBzZWxmLnBvc2l0aW9ucztcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxmLm5vZGVzO1xuICAgICAgICBjb25zdCBkaXNwID0gc2VsZi5kaXNwO1xuICAgICAgICBjb25zdCBrID0gc2VsZi5rO1xuICAgICAgICBjb25zdCByYWRpaSA9IHNlbGYucmFkaWkgfHwgW107XG4gICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICBkaXNwW2ldID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgodSwgaikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdiBhbmQgdSBhcmUgbm90IG9uIHRoZSBzYW1lIGNpcmNsZSwgcmV0dXJuXG4gICAgICAgICAgICAgICAgaWYgKHJhZGlpW2ldICE9PSByYWRpaVtqXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCB2ZWN4ID0gdlswXSAtIHVbMF07XG4gICAgICAgICAgICAgICAgbGV0IHZlY3kgPSB2WzFdIC0gdVsxXTtcbiAgICAgICAgICAgICAgICBsZXQgdmVjTGVuZ3RoID0gTWF0aC5zcXJ0KHZlY3ggKiB2ZWN4ICsgdmVjeSAqIHZlY3kpO1xuICAgICAgICAgICAgICAgIGlmICh2ZWNMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmVjTGVuZ3RoID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbiA9IGkgPiBqID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgICAgICB2ZWN4ID0gMC4wMSAqIHNpZ247XG4gICAgICAgICAgICAgICAgICAgIHZlY3kgPSAwLjAxICogc2lnbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhlc2UgdHdvIG5vZGVzIG92ZXJsYXBcbiAgICAgICAgICAgICAgICBpZiAodmVjTGVuZ3RoIDwgc2VsZi5ub2RlU2l6ZUZ1bmMobm9kZXNbaV0pIC8gMiArIHNlbGYubm9kZVNpemVGdW5jKG5vZGVzW2pdKSAvIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbW9uID0gKGsgKiBrKSAvIHZlY0xlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcFtpXS54ICs9ICh2ZWN4IC8gdmVjTGVuZ3RoKSAqIGNvbW1vbjtcbiAgICAgICAgICAgICAgICAgICAgZGlzcFtpXS55ICs9ICh2ZWN5IC8gdmVjTGVuZ3RoKSAqIGNvbW1vbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZVBvc2l0aW9ucygpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHNlbGYucG9zaXRpb25zO1xuICAgICAgICBjb25zdCBkaXNwID0gc2VsZi5kaXNwO1xuICAgICAgICBjb25zdCBzcGVlZCA9IHNlbGYuc3BlZWQ7XG4gICAgICAgIGNvbnN0IHN0cmljdFJhZGlhbCA9IHNlbGYuc3RyaWN0UmFkaWFsO1xuICAgICAgICBjb25zdCBmID0gc2VsZi5mb2N1c0lEO1xuICAgICAgICBjb25zdCBtYXhEaXNwbGFjZSA9IHNlbGYubWF4RGlzcGxhY2UgfHwgc2VsZi53aWR0aCAvIDEwO1xuICAgICAgICBpZiAoc3RyaWN0UmFkaWFsKSB7XG4gICAgICAgICAgICBkaXNwLmZvckVhY2goKGRpLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdnggPSBwb3NpdGlvbnNbaV1bMF0gLSBwb3NpdGlvbnNbZl1bMF07XG4gICAgICAgICAgICAgICAgY29uc3QgdnkgPSBwb3NpdGlvbnNbaV1bMV0gLSBwb3NpdGlvbnNbZl1bMV07XG4gICAgICAgICAgICAgICAgY29uc3Qgdkxlbmd0aCA9IE1hdGguc3FydCh2eCAqIHZ4ICsgdnkgKiB2eSk7XG4gICAgICAgICAgICAgICAgbGV0IHZweCA9IHZ5IC8gdkxlbmd0aDtcbiAgICAgICAgICAgICAgICBsZXQgdnB5ID0gLXZ4IC8gdkxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaUxlbmd0aCA9IE1hdGguc3FydChkaS54ICogZGkueCArIGRpLnkgKiBkaS55KTtcbiAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBNYXRoLmFjb3MoKHZweCAqIGRpLnggKyB2cHkgKiBkaS55KSAvIGRpTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxwaGEgPiBNYXRoLlBJIC8gMikge1xuICAgICAgICAgICAgICAgICAgICBhbHBoYSAtPSBNYXRoLlBJIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgdnB4ICo9IC0xO1xuICAgICAgICAgICAgICAgICAgICB2cHkgKj0gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHRkaXNwTGVuZ3RoID0gTWF0aC5jb3MoYWxwaGEpICogZGlMZW5ndGg7XG4gICAgICAgICAgICAgICAgZGkueCA9IHZweCAqIHRkaXNwTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGRpLnkgPSB2cHkgKiB0ZGlzcExlbmd0aDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1vdmVcbiAgICAgICAgY29uc3QgcmFkaWkgPSBzZWxmLnJhZGlpO1xuICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaCgobiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPT09IGYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkaXN0TGVuZ3RoID0gTWF0aC5zcXJ0KGRpc3BbaV0ueCAqIGRpc3BbaV0ueCArIGRpc3BbaV0ueSAqIGRpc3BbaV0ueSk7XG4gICAgICAgICAgICBpZiAoZGlzdExlbmd0aCA+IDAgJiYgaSAhPT0gZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbWl0ZWREaXN0ID0gTWF0aC5taW4obWF4RGlzcGxhY2UgKiAoc3BlZWQgLyBTUEVFRF9ESVZJU09SKSwgZGlzdExlbmd0aCk7XG4gICAgICAgICAgICAgICAgblswXSArPSAoZGlzcFtpXS54IC8gZGlzdExlbmd0aCkgKiBsaW1pdGVkRGlzdDtcbiAgICAgICAgICAgICAgICBuWzFdICs9IChkaXNwW2ldLnkgLyBkaXN0TGVuZ3RoKSAqIGxpbWl0ZWREaXN0O1xuICAgICAgICAgICAgICAgIGlmIChzdHJpY3RSYWRpYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZ4ID0gblswXSAtIHBvc2l0aW9uc1tmXVswXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZ5ID0gblsxXSAtIHBvc2l0aW9uc1tmXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmZEaXMgPSBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xuICAgICAgICAgICAgICAgICAgICB2eCA9ICh2eCAvIG5mRGlzKSAqIHJhZGlpW2ldO1xuICAgICAgICAgICAgICAgICAgICB2eSA9ICh2eSAvIG5mRGlzKSAqIHJhZGlpW2ldO1xuICAgICAgICAgICAgICAgICAgICBuWzBdID0gcG9zaXRpb25zW2ZdWzBdICsgdng7XG4gICAgICAgICAgICAgICAgICAgIG5bMV0gPSBwb3NpdGlvbnNbZl1bMV0gKyB2eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJhZGlhbE5vbm92ZXJsYXBGb3JjZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/radial/radialNonoverlapForce.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/random.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/random.js ***! \***********************************************************************************/ /*! exports provided: RandomLayout */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RandomLayout\", function() { return RandomLayout; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/**\n * @fileOverview random layout\n * @author shiwu.wyy@antfin.com\n */\n\n/**\n * 随机布局\n */\nclass RandomLayout extends _base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(options) {\n super();\n /** 布局中心 */\n this.center = [0, 0];\n /** 宽度 */\n this.width = 300;\n /** 高度 */\n this.height = 300;\n this.nodes = [];\n this.edges = [];\n /** 迭代结束的回调函数 */\n this.onLayoutEnd = () => { };\n this.updateCfg(options);\n }\n getDefaultCfg() {\n return {\n center: [0, 0],\n width: 300,\n height: 300\n };\n }\n /**\n * 执行布局\n */\n execute() {\n const self = this;\n const nodes = self.nodes;\n const layoutScale = 0.9;\n const center = self.center;\n if (!self.width && typeof window !== \"undefined\") {\n self.width = window.innerWidth;\n }\n if (!self.height && typeof window !== \"undefined\") {\n self.height = window.innerHeight;\n }\n if (nodes) {\n nodes.forEach((node) => {\n node.x = (Math.random() - 0.5) * layoutScale * self.width + center[0];\n node.y = (Math.random() - 0.5) * layoutScale * self.height + center[1];\n });\n }\n if (self.onLayoutEnd)\n self.onLayoutEnd();\n return {\n nodes,\n edges: this.edges\n };\n }\n getType() {\n return \"random\";\n }\n}\n//# sourceMappingURL=random.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvcmFuZG9tLmpzPzg4YmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ08sMkJBQTJCLDBDQUFJO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvbGF5b3V0L3JhbmRvbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyByYW5kb20gbGF5b3V0XG4gKiBAYXV0aG9yIHNoaXd1Lnd5eUBhbnRmaW4uY29tXG4gKi9cbmltcG9ydCB7IEJhc2UgfSBmcm9tIFwiLi9iYXNlXCI7XG4vKipcbiAqIOmaj+acuuW4g+WxgFxuICovXG5leHBvcnQgY2xhc3MgUmFuZG9tTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvKiog5biD5bGA5Lit5b+DICovXG4gICAgICAgIHRoaXMuY2VudGVyID0gWzAsIDBdO1xuICAgICAgICAvKiog5a695bqmICovXG4gICAgICAgIHRoaXMud2lkdGggPSAzMDA7XG4gICAgICAgIC8qKiDpq5jluqYgKi9cbiAgICAgICAgdGhpcy5oZWlnaHQgPSAzMDA7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgICAgICAvKiog6L+t5Luj57uT5p2f55qE5Zue6LCD5Ye95pWwICovXG4gICAgICAgIHRoaXMub25MYXlvdXRFbmQgPSAoKSA9PiB7IH07XG4gICAgICAgIHRoaXMudXBkYXRlQ2ZnKG9wdGlvbnMpO1xuICAgIH1cbiAgICBnZXREZWZhdWx0Q2ZnKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2VudGVyOiBbMCwgMF0sXG4gICAgICAgICAgICB3aWR0aDogMzAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAzMDBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5omn6KGM5biD5bGAXG4gICAgICovXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZi5ub2RlcztcbiAgICAgICAgY29uc3QgbGF5b3V0U2NhbGUgPSAwLjk7XG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHNlbGYuY2VudGVyO1xuICAgICAgICBpZiAoIXNlbGYud2lkdGggJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi53aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VsZi5oZWlnaHQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc2VsZi5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGVzKSB7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgbm9kZS54ID0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogbGF5b3V0U2NhbGUgKiBzZWxmLndpZHRoICsgY2VudGVyWzBdO1xuICAgICAgICAgICAgICAgIG5vZGUueSA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIGxheW91dFNjYWxlICogc2VsZi5oZWlnaHQgKyBjZW50ZXJbMV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZi5vbkxheW91dEVuZClcbiAgICAgICAgICAgIHNlbGYub25MYXlvdXRFbmQoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgICAgZWRnZXM6IHRoaXMuZWRnZXNcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFwicmFuZG9tXCI7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmFuZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/random.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/types.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/types.js ***! \**********************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvdHlwZXMuanM/OTdjMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFVO0FBQ1YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9sYXlvdXQvdHlwZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/types.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/registy/index.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/registy/index.js ***! \***********************************************************************************/ /*! exports provided: registerLayout, unRegisterLayout, getLayoutByName */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerLayout\", function() { return registerLayout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegisterLayout\", function() { return unRegisterLayout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayoutByName\", function() { return getLayoutByName; });\n/* harmony import */ var _layout_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layout/base */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/layout/base.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n\n\nconst map = new Map();\nconst registerLayout = (name, layoutOverride) => {\n if (map.get(name)) {\n console.warn(`The layout with the name ${name} exists already, it will be overridden`);\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(layoutOverride)) {\n // tslint:disable-next-line: max-classes-per-file\n class GLayout extends _layout_base__WEBPACK_IMPORTED_MODULE_0__[\"Base\"] {\n constructor(cfg) {\n super();\n const self = this;\n const props = {};\n const defaultCfg = self.getDefaultCfg();\n Object.assign(props, defaultCfg, layoutOverride, cfg);\n Object.keys(props).forEach((key) => {\n const value = props[key];\n self[key] = value;\n });\n }\n }\n map.set(name, GLayout);\n }\n else {\n map.set(name, layoutOverride);\n }\n return map.get(name);\n};\nconst unRegisterLayout = (name) => {\n if (map.has(name)) {\n map.delete(name);\n }\n};\nconst getLayoutByName = (name) => {\n if (map.has(name)) {\n return map.get(name);\n }\n return null;\n};\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9yZWdpc3R5L2luZGV4LmpzPzJlYzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ0g7QUFDbkM7QUFDTztBQUNQO0FBQ0EsaURBQWlELEtBQUs7QUFDdEQ7QUFDQSxRQUFRLHNEQUFRO0FBQ2hCO0FBQ0EsOEJBQThCLGlEQUFJO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy9yZWdpc3R5L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZSB9IGZyb20gXCIuLi9sYXlvdXQvYmFzZVwiO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tIFwiLi4vdXRpbFwiO1xuY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyTGF5b3V0ID0gKG5hbWUsIGxheW91dE92ZXJyaWRlKSA9PiB7XG4gICAgaWYgKG1hcC5nZXQobmFtZSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUaGUgbGF5b3V0IHdpdGggdGhlIG5hbWUgJHtuYW1lfSBleGlzdHMgYWxyZWFkeSwgaXQgd2lsbCBiZSBvdmVycmlkZGVuYCk7XG4gICAgfVxuICAgIGlmIChpc09iamVjdChsYXlvdXRPdmVycmlkZSkpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtY2xhc3Nlcy1wZXItZmlsZVxuICAgICAgICBjbGFzcyBHTGF5b3V0IGV4dGVuZHMgQmFzZSB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcihjZmcpIHtcbiAgICAgICAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzID0ge307XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdENmZyA9IHNlbGYuZ2V0RGVmYXVsdENmZygpO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocHJvcHMsIGRlZmF1bHRDZmcsIGxheW91dE92ZXJyaWRlLCBjZmcpO1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgICAgICAgICBzZWxmW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtYXAuc2V0KG5hbWUsIEdMYXlvdXQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbWFwLnNldChuYW1lLCBsYXlvdXRPdmVycmlkZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXAuZ2V0KG5hbWUpO1xufTtcbmV4cG9ydCBjb25zdCB1blJlZ2lzdGVyTGF5b3V0ID0gKG5hbWUpID0+IHtcbiAgICBpZiAobWFwLmhhcyhuYW1lKSkge1xuICAgICAgICBtYXAuZGVsZXRlKG5hbWUpO1xuICAgIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0TGF5b3V0QnlOYW1lID0gKG5hbWUpID0+IHtcbiAgICBpZiAobWFwLmhhcyhuYW1lKSkge1xuICAgICAgICByZXR1cm4gbWFwLmdldChuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/registy/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/array.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/array.js ***! \********************************************************************************/ /*! exports provided: isArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return isArray; });\nconst isArray = Array.isArray;\n//# sourceMappingURL=array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL2FycmF5LmpzP2YxYTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL2FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/array.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/function.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/function.js ***! \***********************************************************************************/ /*! exports provided: isFunction */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\nconst isFunction = (val) => typeof val === 'function';\n//# sourceMappingURL=function.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL2Z1bmN0aW9uLmpzP2U4MzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL2Z1bmN0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGlzRnVuY3Rpb24gPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnVuY3Rpb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/function.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/gpu.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/gpu.js ***! \******************************************************************************/ /*! exports provided: proccessToFunc, buildTextureData, buildTextureDataWithTwoEdgeAttr, attributesToTextureData, arrayToTextureData */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"proccessToFunc\", function() { return proccessToFunc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureData\", function() { return buildTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildTextureDataWithTwoEdgeAttr\", function() { return buildTextureDataWithTwoEdgeAttr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"attributesToTextureData\", function() { return attributesToTextureData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arrayToTextureData\", function() { return arrayToTextureData; });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/math.js\");\n\n\n/**\n * 将 number | Function 类型的参数转换为 return number 的 Function\n * @param {number | Function} value 需要被转换的值\n * @param {number} defaultV 返回函数的默认返回值\n * @return {Function} 转换后的函数\n */\nconst proccessToFunc = (value, defaultV) => {\n let func;\n if (!value) {\n func = () => {\n return defaultV || 1;\n };\n }\n else if (Object(___WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(value)) {\n func = () => {\n return value;\n };\n }\n else {\n func = value;\n }\n return func;\n};\n/**\n * 将节点和边数据转换为 GPU 可读的数组。并返回 maxEdgePerVetex,每个节点上最多的边数\n * @param {NodeConfig[]} nodes 需要被转换的值\n * @param {EdgeConfig[]} edges 返回函数的默认返回值\n * @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n */\nconst buildTextureData = (nodes, edges) => {\n const dataArray = [];\n const nodeDict = [];\n const mapIdPos = {};\n let i = 0;\n for (i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n const e = edges[i];\n const source = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n nodeDict[mapIdPos[source]].push(mapIdPos[target]);\n nodeDict[mapIdPos[target]].push(mapIdPos[source]);\n }\n let maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n const offset = dataArray.length;\n const dests = nodeDict[i];\n const len = dests.length;\n dataArray[i * 4 + 2] = offset;\n dataArray[i * 4 + 3] = dests.length;\n maxEdgePerVetex = Math.max(maxEdgePerVetex, dests.length);\n for (let j = 0; j < len; ++j) {\n const dest = dests[j];\n dataArray.push(+dest);\n }\n }\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n maxEdgePerVetex,\n array: new Float32Array(dataArray),\n };\n};\n/**\n* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n* @param {NodeConfig[]} nodes 节点数组\n* @param {EdgeConfig[]} edges 边数组\n* @param {Function} attrs 读取边属性的函数\n* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n*/\n// export const buildTextureDataWithOneEdgeAttr = (nodes: OutNode[], edges: Edge[], attrs: Function): {\n// array: Float32Array,\n// maxEdgePerVetex: number\n// } => {\n// const dataArray = [];\n// const nodeDict: any = [];\n// const mapIdPos: IndexMap = {};\n// let i = 0;\n// for (i = 0; i < nodes.length; i++) {\n// const n = nodes[i];\n// mapIdPos[n.id] = i;\n// dataArray.push(n.x);\n// dataArray.push(n.y);\n// dataArray.push(0);\n// dataArray.push(0);\n// nodeDict.push([]);\n// }\n// for (i = 0; i < edges.length; i++) {\n// const e = edges[i];\n// nodeDict[mapIdPos[e.source]].push(mapIdPos[e.target]);\n// nodeDict[mapIdPos[e.source]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n// nodeDict[mapIdPos[e.target]].push(mapIdPos[e.source]);\n// nodeDict[mapIdPos[e.target]].push(attrs(e)); // 理想边长,后续可以改成每条边不同\n// }\n// let maxEdgePerVetex = 0;\n// for (i = 0; i < nodes.length; i++) {\n// const offset: number = dataArray.length;\n// const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n// const len = dests.length;\n// dataArray[i * 4 + 2] = offset;\n// dataArray[i * 4 + 3] = len / 2; // 第四位存储与该节点相关的所有节点个数\n// maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 2);\n// for (let j = 0; j < len; ++j) {\n// const dest = dests[j];\n// dataArray.push(+dest);\n// }\n// }\n// // 不是 4 的倍数,填充 0\n// while (dataArray.length % 4 !== 0) {\n// dataArray.push(0);\n// }\n// return {\n// array: new Float32Array(dataArray),\n// maxEdgePerVetex\n// }\n// }\n/**\n* 将节点和边数据转换为 GPU 可读的数组,每条边带有一个以上属性。并返回 maxEdgePerVetex,每个节点上最多的边数\n* @param {NodeConfig[]} nodes 节点数组\n* @param {EdgeConfig[]} edges 边数组\n* @param {Function} attrs 读取边属性的函数\n* @return {Object} 转换后的数组及 maxEdgePerVetex 组成的对象\n*/\nconst buildTextureDataWithTwoEdgeAttr = (nodes, edges, attrs1, attrs2) => {\n const dataArray = [];\n const nodeDict = [];\n const mapIdPos = {};\n let i = 0;\n for (i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n mapIdPos[n.id] = i;\n dataArray.push(n.x);\n dataArray.push(n.y);\n dataArray.push(0);\n dataArray.push(0);\n nodeDict.push([]);\n }\n for (i = 0; i < edges.length; i++) {\n const e = edges[i];\n const source = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'source');\n const target = Object(_math__WEBPACK_IMPORTED_MODULE_1__[\"getEdgeTerminal\"])(e, 'target');\n nodeDict[mapIdPos[source]].push(mapIdPos[target]);\n nodeDict[mapIdPos[source]].push(attrs1(e));\n nodeDict[mapIdPos[source]].push(attrs2(e));\n nodeDict[mapIdPos[source]].push(0);\n nodeDict[mapIdPos[target]].push(mapIdPos[source]);\n nodeDict[mapIdPos[target]].push(attrs1(e));\n nodeDict[mapIdPos[target]].push(attrs2(e));\n nodeDict[mapIdPos[target]].push(0);\n }\n let maxEdgePerVetex = 0;\n for (i = 0; i < nodes.length; i++) {\n const offset = dataArray.length;\n const dests = nodeDict[i]; // dest 中节点 id 与边长间隔存储,即一位节点 id,一位边长……\n const len = dests.length;\n // dataArray[i * 4 + 2] = offset;\n // dataArray[i * 4 + 3] = len / 4; // 第四位存储与该节点相关的所有节点个数\n // pack offset & length into float32: offset 20bit, length 12bit\n dataArray[i * 4 + 2] = offset + 1048576 * len / 4;\n dataArray[i * 4 + 3] = 0; // 第四位存储与上一次的距离差值\n maxEdgePerVetex = Math.max(maxEdgePerVetex, len / 4);\n for (let j = 0; j < len; ++j) {\n const dest = dests[j];\n dataArray.push(+dest);\n }\n }\n // 不是 4 的倍数,填充 0\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n return {\n maxEdgePerVetex,\n array: new Float32Array(dataArray),\n };\n};\n/**\n* transform the extended attributes of nodes or edges to a texture array\n* @param {string[]} attributeNames attributes' name to be read from items and put into output array\n* @param {ModelConfig[]} items the items to be read\n* @return {Float32Array} the attributes' value array to be read by GPU\n*/\nconst attributesToTextureData = (attributeNames, items) => {\n const dataArray = [];\n const attributeNum = attributeNames.length;\n const attributteStringMap = {};\n items.forEach((item) => {\n attributeNames.forEach((name, i) => {\n if (attributteStringMap[item[name]] === undefined) {\n attributteStringMap[item[name]] = Object.keys(attributteStringMap).length;\n }\n dataArray.push(attributteStringMap[item[name]]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n });\n return {\n array: new Float32Array(dataArray),\n count: Object.keys(attributteStringMap).length\n };\n};\n/**\n* transform the number array format of extended attributes of nodes or edges to a texture array\n* @param {string[]} attributeNames attributes' name to be read from items and put into output array\n* @return {Float32Array} the attributes' value array to be read by GPU\n*/\nconst arrayToTextureData = (valueArrays) => {\n const dataArray = [];\n const attributeNum = valueArrays.length;\n const itemNum = valueArrays[0].length;\n for (let j = 0; j < itemNum; j++) {\n valueArrays.forEach((valueArray, i) => {\n dataArray.push(valueArray[j]);\n // insure each node's attributes take inter number of grids\n if (i === attributeNum - 1) {\n while (dataArray.length % 4 !== 0) {\n dataArray.push(0);\n }\n }\n });\n }\n return new Float32Array(dataArray);\n};\n//# sourceMappingURL=gpu.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL2dwdS5qcz9jYTU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBOEI7QUFDVztBQUN6QztBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUIsWUFBWSxPQUFPO0FBQ25CLFlBQVksU0FBUztBQUNyQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxrREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCLFlBQVksYUFBYTtBQUN6QixZQUFZLE9BQU87QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrQkFBa0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0JBQWtCO0FBQ2pDO0FBQ0EsdUJBQXVCLDZEQUFlO0FBQ3RDLHVCQUF1Qiw2REFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0JBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixTQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEM7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLHdCQUF3QixTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGtCQUFrQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrQkFBa0I7QUFDakM7QUFDQSx1QkFBdUIsNkRBQWU7QUFDdEMsdUJBQXVCLDZEQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrQkFBa0I7QUFDakM7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0EsdUJBQXVCLFNBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsY0FBYztBQUN6QixXQUFXLGFBQWE7QUFDeEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxhQUFhO0FBQ3hCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvdXRpbC9ncHUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vJztcbmltcG9ydCB7IGdldEVkZ2VUZXJtaW5hbCB9IGZyb20gJy4vbWF0aCc7XG4vKipcbiAqIOWwhiBudW1iZXIgfCBGdW5jdGlvbiDnsbvlnovnmoTlj4LmlbDovazmjaLkuLogcmV0dXJuIG51bWJlciDnmoQgRnVuY3Rpb25cbiAqIEBwYXJhbSAge251bWJlciB8IEZ1bmN0aW9ufSAgdmFsdWUg6ZyA6KaB6KKr6L2s5o2i55qE5YC8XG4gKiBAcGFyYW0gIHtudW1iZXJ9ICBkZWZhdWx0ViDov5Tlm57lh73mlbDnmoTpu5jorqTov5Tlm57lgLxcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSDovazmjaLlkI7nmoTlh73mlbBcbiAqL1xuZXhwb3J0IGNvbnN0IHByb2NjZXNzVG9GdW5jID0gKHZhbHVlLCBkZWZhdWx0VikgPT4ge1xuICAgIGxldCBmdW5jO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgZnVuYyA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0ViB8fCAxO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgZnVuYyA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZ1bmMgPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmM7XG59O1xuLyoqXG4gKiDlsIboioLngrnlkozovrnmlbDmja7ovazmjaLkuLogR1BVIOWPr+ivu+eahOaVsOe7hOOAguW5tui/lOWbniBtYXhFZGdlUGVyVmV0ZXjvvIzmr4/kuKroioLngrnkuIrmnIDlpJrnmoTovrnmlbBcbiAqIEBwYXJhbSAge05vZGVDb25maWdbXX0gIG5vZGVzIOmcgOimgeiiq+i9rOaNoueahOWAvFxuICogQHBhcmFtICB7RWRnZUNvbmZpZ1tdfSAgZWRnZXMg6L+U5Zue5Ye95pWw55qE6buY6K6k6L+U5Zue5YC8XG4gKiBAcmV0dXJuIHtPYmplY3R9IOi9rOaNouWQjueahOaVsOe7hOWPiiBtYXhFZGdlUGVyVmV0ZXgg57uE5oiQ55qE5a+56LGhXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZFRleHR1cmVEYXRhID0gKG5vZGVzLCBlZGdlcykgPT4ge1xuICAgIGNvbnN0IGRhdGFBcnJheSA9IFtdO1xuICAgIGNvbnN0IG5vZGVEaWN0ID0gW107XG4gICAgY29uc3QgbWFwSWRQb3MgPSB7fTtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG4gPSBub2Rlc1tpXTtcbiAgICAgICAgbWFwSWRQb3Nbbi5pZF0gPSBpO1xuICAgICAgICBkYXRhQXJyYXkucHVzaChuLngpO1xuICAgICAgICBkYXRhQXJyYXkucHVzaChuLnkpO1xuICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4gICAgICAgIG5vZGVEaWN0LnB1c2goW10pO1xuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZSA9IGVkZ2VzW2ldO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3NvdXJjZScpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRFZGdlVGVybWluYWwoZSwgJ3RhcmdldCcpO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1tzb3VyY2VdXS5wdXNoKG1hcElkUG9zW3RhcmdldF0pO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1t0YXJnZXRdXS5wdXNoKG1hcElkUG9zW3NvdXJjZV0pO1xuICAgIH1cbiAgICBsZXQgbWF4RWRnZVBlclZldGV4ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gZGF0YUFycmF5Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVzdHMgPSBub2RlRGljdFtpXTtcbiAgICAgICAgY29uc3QgbGVuID0gZGVzdHMubGVuZ3RoO1xuICAgICAgICBkYXRhQXJyYXlbaSAqIDQgKyAyXSA9IG9mZnNldDtcbiAgICAgICAgZGF0YUFycmF5W2kgKiA0ICsgM10gPSBkZXN0cy5sZW5ndGg7XG4gICAgICAgIG1heEVkZ2VQZXJWZXRleCA9IE1hdGgubWF4KG1heEVkZ2VQZXJWZXRleCwgZGVzdHMubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgY29uc3QgZGVzdCA9IGRlc3RzW2pdO1xuICAgICAgICAgICAgZGF0YUFycmF5LnB1c2goK2Rlc3QpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWF4RWRnZVBlclZldGV4LFxuICAgICAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgIH07XG59O1xuLyoqXG4qIOWwhuiKgueCueWSjOi+ueaVsOaNrui9rOaNouS4uiBHUFUg5Y+v6K+755qE5pWw57uE77yM5q+P5p2h6L655bim5pyJ5LiA5Liq5bGe5oCn44CC5bm26L+U5ZueIG1heEVkZ2VQZXJWZXRleO+8jOavj+S4quiKgueCueS4iuacgOWkmueahOi+ueaVsFxuKiBAcGFyYW0gIHtOb2RlQ29uZmlnW119ICBub2RlcyDoioLngrnmlbDnu4RcbiogQHBhcmFtICB7RWRnZUNvbmZpZ1tdfSAgZWRnZXMg6L655pWw57uEXG4qIEBwYXJhbSAge0Z1bmN0aW9ufSAgYXR0cnMg6K+75Y+W6L655bGe5oCn55qE5Ye95pWwXG4qIEByZXR1cm4ge09iamVjdH0g6L2s5o2i5ZCO55qE5pWw57uE5Y+KIG1heEVkZ2VQZXJWZXRleCDnu4TmiJDnmoTlr7nosaFcbiovXG4vLyBleHBvcnQgY29uc3QgYnVpbGRUZXh0dXJlRGF0YVdpdGhPbmVFZGdlQXR0ciA9IChub2RlczogT3V0Tm9kZVtdLCBlZGdlczogRWRnZVtdLCBhdHRyczogRnVuY3Rpb24pOiB7XG4vLyAgIGFycmF5OiBGbG9hdDMyQXJyYXksXG4vLyAgIG1heEVkZ2VQZXJWZXRleDogbnVtYmVyXG4vLyB9ID0+IHtcbi8vICAgY29uc3QgZGF0YUFycmF5ID0gW107XG4vLyAgIGNvbnN0IG5vZGVEaWN0OiBhbnkgPSBbXTtcbi8vICAgY29uc3QgbWFwSWRQb3M6IEluZGV4TWFwID0ge307XG4vLyAgIGxldCBpID0gMDtcbi8vICAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4vLyAgICAgICBjb25zdCBuID0gbm9kZXNbaV07XG4vLyAgICAgICBtYXBJZFBvc1tuLmlkXSA9IGk7XG4vLyAgICAgICBkYXRhQXJyYXkucHVzaChuLngpO1xuLy8gICAgICAgZGF0YUFycmF5LnB1c2gobi55KTtcbi8vICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuLy8gICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4vLyAgICAgICBub2RlRGljdC5wdXNoKFtdKTtcbi8vICAgfVxuLy8gICBmb3IgKGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbi8vICAgICAgIGNvbnN0IGUgPSBlZGdlc1tpXTtcbi8vICAgICAgIG5vZGVEaWN0W21hcElkUG9zW2Uuc291cmNlXV0ucHVzaChtYXBJZFBvc1tlLnRhcmdldF0pO1xuLy8gICAgICAgbm9kZURpY3RbbWFwSWRQb3NbZS5zb3VyY2VdXS5wdXNoKGF0dHJzKGUpKTsgLy8g55CG5oOz6L656ZW/77yM5ZCO57ut5Y+v5Lul5pS55oiQ5q+P5p2h6L655LiN5ZCMXG4vLyAgICAgICBub2RlRGljdFttYXBJZFBvc1tlLnRhcmdldF1dLnB1c2gobWFwSWRQb3NbZS5zb3VyY2VdKTtcbi8vICAgICAgIG5vZGVEaWN0W21hcElkUG9zW2UudGFyZ2V0XV0ucHVzaChhdHRycyhlKSk7IC8vIOeQhuaDs+i+uemVv++8jOWQjue7reWPr+S7peaUueaIkOavj+adoei+ueS4jeWQjFxuLy8gICB9XG4vLyAgIGxldCBtYXhFZGdlUGVyVmV0ZXggPSAwO1xuLy8gICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbi8vICAgICAgIGNvbnN0IG9mZnNldDogbnVtYmVyID0gZGF0YUFycmF5Lmxlbmd0aDtcbi8vICAgICAgIGNvbnN0IGRlc3RzID0gbm9kZURpY3RbaV07IC8vIGRlc3Qg5Lit6IqC54K5IGlkIOS4jui+uemVv+mXtOmalOWtmOWCqO+8jOWNs+S4gOS9jeiKgueCuSBpZO+8jOS4gOS9jei+uemVv+KApuKAplxuLy8gICAgICAgY29uc3QgbGVuID0gZGVzdHMubGVuZ3RoO1xuLy8gICAgICAgZGF0YUFycmF5W2kgKiA0ICsgMl0gPSBvZmZzZXQ7XG4vLyAgICAgICBkYXRhQXJyYXlbaSAqIDQgKyAzXSA9IGxlbiAvIDI7IC8vIOesrOWbm+S9jeWtmOWCqOS4juivpeiKgueCueebuOWFs+eahOaJgOacieiKgueCueS4quaVsFxuLy8gICAgICAgbWF4RWRnZVBlclZldGV4ID0gTWF0aC5tYXgobWF4RWRnZVBlclZldGV4LCBsZW4gLyAyKTtcbi8vICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuOyArK2opIHtcbi8vICAgICAgICAgICBjb25zdCBkZXN0ID0gZGVzdHNbal07XG4vLyAgICAgICAgICAgZGF0YUFycmF5LnB1c2goK2Rlc3QpO1xuLy8gICAgICAgfVxuLy8gICB9XG4vLyAgIC8vIOS4jeaYryA0IOeahOWAjeaVsO+8jOWhq+WFhSAwXG4vLyAgIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuLy8gICAgICAgZGF0YUFycmF5LnB1c2goMCk7XG4vLyAgIH1cbi8vICAgcmV0dXJuIHtcbi8vICAgICAgIGFycmF5OiBuZXcgRmxvYXQzMkFycmF5KGRhdGFBcnJheSksXG4vLyAgICAgICBtYXhFZGdlUGVyVmV0ZXhcbi8vICAgfVxuLy8gfVxuLyoqXG4qIOWwhuiKgueCueWSjOi+ueaVsOaNrui9rOaNouS4uiBHUFUg5Y+v6K+755qE5pWw57uE77yM5q+P5p2h6L655bim5pyJ5LiA5Liq5Lul5LiK5bGe5oCn44CC5bm26L+U5ZueIG1heEVkZ2VQZXJWZXRleO+8jOavj+S4quiKgueCueS4iuacgOWkmueahOi+ueaVsFxuKiBAcGFyYW0gIHtOb2RlQ29uZmlnW119ICBub2RlcyDoioLngrnmlbDnu4RcbiogQHBhcmFtICB7RWRnZUNvbmZpZ1tdfSAgZWRnZXMg6L655pWw57uEXG4qIEBwYXJhbSAge0Z1bmN0aW9ufSAgYXR0cnMg6K+75Y+W6L655bGe5oCn55qE5Ye95pWwXG4qIEByZXR1cm4ge09iamVjdH0g6L2s5o2i5ZCO55qE5pWw57uE5Y+KIG1heEVkZ2VQZXJWZXRleCDnu4TmiJDnmoTlr7nosaFcbiovXG5leHBvcnQgY29uc3QgYnVpbGRUZXh0dXJlRGF0YVdpdGhUd29FZGdlQXR0ciA9IChub2RlcywgZWRnZXMsIGF0dHJzMSwgYXR0cnMyKSA9PiB7XG4gICAgY29uc3QgZGF0YUFycmF5ID0gW107XG4gICAgY29uc3Qgbm9kZURpY3QgPSBbXTtcbiAgICBjb25zdCBtYXBJZFBvcyA9IHt9O1xuICAgIGxldCBpID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbiA9IG5vZGVzW2ldO1xuICAgICAgICBtYXBJZFBvc1tuLmlkXSA9IGk7XG4gICAgICAgIGRhdGFBcnJheS5wdXNoKG4ueCk7XG4gICAgICAgIGRhdGFBcnJheS5wdXNoKG4ueSk7XG4gICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgbm9kZURpY3QucHVzaChbXSk7XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBlID0gZWRnZXNbaV07XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGdldEVkZ2VUZXJtaW5hbChlLCAnc291cmNlJyk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChlLCAndGFyZ2V0Jyk7XG4gICAgICAgIG5vZGVEaWN0W21hcElkUG9zW3NvdXJjZV1dLnB1c2gobWFwSWRQb3NbdGFyZ2V0XSk7XG4gICAgICAgIG5vZGVEaWN0W21hcElkUG9zW3NvdXJjZV1dLnB1c2goYXR0cnMxKGUpKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3Nbc291cmNlXV0ucHVzaChhdHRyczIoZSkpO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1tzb3VyY2VdXS5wdXNoKDApO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1t0YXJnZXRdXS5wdXNoKG1hcElkUG9zW3NvdXJjZV0pO1xuICAgICAgICBub2RlRGljdFttYXBJZFBvc1t0YXJnZXRdXS5wdXNoKGF0dHJzMShlKSk7XG4gICAgICAgIG5vZGVEaWN0W21hcElkUG9zW3RhcmdldF1dLnB1c2goYXR0cnMyKGUpKTtcbiAgICAgICAgbm9kZURpY3RbbWFwSWRQb3NbdGFyZ2V0XV0ucHVzaCgwKTtcbiAgICB9XG4gICAgbGV0IG1heEVkZ2VQZXJWZXRleCA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGRhdGFBcnJheS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRlc3RzID0gbm9kZURpY3RbaV07IC8vIGRlc3Qg5Lit6IqC54K5IGlkIOS4jui+uemVv+mXtOmalOWtmOWCqO+8jOWNs+S4gOS9jeiKgueCuSBpZO+8jOS4gOS9jei+uemVv+KApuKAplxuICAgICAgICBjb25zdCBsZW4gPSBkZXN0cy5sZW5ndGg7XG4gICAgICAgIC8vIGRhdGFBcnJheVtpICogNCArIDJdID0gb2Zmc2V0O1xuICAgICAgICAvLyBkYXRhQXJyYXlbaSAqIDQgKyAzXSA9IGxlbiAvIDQ7IC8vIOesrOWbm+S9jeWtmOWCqOS4juivpeiKgueCueebuOWFs+eahOaJgOacieiKgueCueS4quaVsFxuICAgICAgICAvLyBwYWNrIG9mZnNldCAmIGxlbmd0aCBpbnRvIGZsb2F0MzI6IG9mZnNldCAyMGJpdCwgbGVuZ3RoIDEyYml0XG4gICAgICAgIGRhdGFBcnJheVtpICogNCArIDJdID0gb2Zmc2V0ICsgMTA0ODU3NiAqIGxlbiAvIDQ7XG4gICAgICAgIGRhdGFBcnJheVtpICogNCArIDNdID0gMDsgLy8g56ys5Zub5L2N5a2Y5YKo5LiO5LiK5LiA5qyh55qE6Led56a75beu5YC8XG4gICAgICAgIG1heEVkZ2VQZXJWZXRleCA9IE1hdGgubWF4KG1heEVkZ2VQZXJWZXRleCwgbGVuIC8gNCk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc3QgPSBkZXN0c1tqXTtcbiAgICAgICAgICAgIGRhdGFBcnJheS5wdXNoKCtkZXN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDkuI3mmK8gNCDnmoTlgI3mlbDvvIzloavlhYUgMFxuICAgIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWF4RWRnZVBlclZldGV4LFxuICAgICAgICBhcnJheTogbmV3IEZsb2F0MzJBcnJheShkYXRhQXJyYXkpLFxuICAgIH07XG59O1xuLyoqXG4qIHRyYW5zZm9ybSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlcyBvZiBub2RlcyBvciBlZGdlcyB0byBhIHRleHR1cmUgYXJyYXlcbiogQHBhcmFtICB7c3RyaW5nW119ICBhdHRyaWJ1dGVOYW1lcyBhdHRyaWJ1dGVzJyBuYW1lIHRvIGJlIHJlYWQgZnJvbSBpdGVtcyBhbmQgcHV0IGludG8gb3V0cHV0IGFycmF5XG4qIEBwYXJhbSAge01vZGVsQ29uZmlnW119ICBpdGVtcyB0aGUgaXRlbXMgdG8gYmUgcmVhZFxuKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IHRoZSBhdHRyaWJ1dGVzJyB2YWx1ZSBhcnJheSB0byBiZSByZWFkIGJ5IEdQVVxuKi9cbmV4cG9ydCBjb25zdCBhdHRyaWJ1dGVzVG9UZXh0dXJlRGF0YSA9IChhdHRyaWJ1dGVOYW1lcywgaXRlbXMpID0+IHtcbiAgICBjb25zdCBkYXRhQXJyYXkgPSBbXTtcbiAgICBjb25zdCBhdHRyaWJ1dGVOdW0gPSBhdHRyaWJ1dGVOYW1lcy5sZW5ndGg7XG4gICAgY29uc3QgYXR0cmlidXR0ZVN0cmluZ01hcCA9IHt9O1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgYXR0cmlidXRlTmFtZXMuZm9yRWFjaCgobmFtZSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0dGVTdHJpbmdNYXBbaXRlbVtuYW1lXV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0dGVTdHJpbmdNYXBbaXRlbVtuYW1lXV0gPSBPYmplY3Qua2V5cyhhdHRyaWJ1dHRlU3RyaW5nTWFwKS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhQXJyYXkucHVzaChhdHRyaWJ1dHRlU3RyaW5nTWFwW2l0ZW1bbmFtZV1dKTtcbiAgICAgICAgICAgIC8vIGluc3VyZSBlYWNoIG5vZGUncyBhdHRyaWJ1dGVzIHRha2UgaW50ZXIgbnVtYmVyIG9mIGdyaWRzXG4gICAgICAgICAgICBpZiAoaSA9PT0gYXR0cmlidXRlTnVtIC0gMSkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChkYXRhQXJyYXkubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhQXJyYXkucHVzaCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFycmF5OiBuZXcgRmxvYXQzMkFycmF5KGRhdGFBcnJheSksXG4gICAgICAgIGNvdW50OiBPYmplY3Qua2V5cyhhdHRyaWJ1dHRlU3RyaW5nTWFwKS5sZW5ndGhcbiAgICB9O1xufTtcbi8qKlxuKiB0cmFuc2Zvcm0gdGhlIG51bWJlciBhcnJheSBmb3JtYXQgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvZiBub2RlcyBvciBlZGdlcyB0byBhIHRleHR1cmUgYXJyYXlcbiogQHBhcmFtICB7c3RyaW5nW119ICBhdHRyaWJ1dGVOYW1lcyBhdHRyaWJ1dGVzJyBuYW1lIHRvIGJlIHJlYWQgZnJvbSBpdGVtcyBhbmQgcHV0IGludG8gb3V0cHV0IGFycmF5XG4qIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gdGhlIGF0dHJpYnV0ZXMnIHZhbHVlIGFycmF5IHRvIGJlIHJlYWQgYnkgR1BVXG4qL1xuZXhwb3J0IGNvbnN0IGFycmF5VG9UZXh0dXJlRGF0YSA9ICh2YWx1ZUFycmF5cykgPT4ge1xuICAgIGNvbnN0IGRhdGFBcnJheSA9IFtdO1xuICAgIGNvbnN0IGF0dHJpYnV0ZU51bSA9IHZhbHVlQXJyYXlzLmxlbmd0aDtcbiAgICBjb25zdCBpdGVtTnVtID0gdmFsdWVBcnJheXNbMF0ubGVuZ3RoO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaXRlbU51bTsgaisrKSB7XG4gICAgICAgIHZhbHVlQXJyYXlzLmZvckVhY2goKHZhbHVlQXJyYXksIGkpID0+IHtcbiAgICAgICAgICAgIGRhdGFBcnJheS5wdXNoKHZhbHVlQXJyYXlbal0pO1xuICAgICAgICAgICAgLy8gaW5zdXJlIGVhY2ggbm9kZSdzIGF0dHJpYnV0ZXMgdGFrZSBpbnRlciBudW1iZXIgb2YgZ3JpZHNcbiAgICAgICAgICAgIGlmIChpID09PSBhdHRyaWJ1dGVOdW0gLSAxKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGRhdGFBcnJheS5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFBcnJheS5wdXNoKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KGRhdGFBcnJheSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3B1LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/gpu.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js ***! \********************************************************************************/ /*! exports provided: isString, camelize, isArray, isNumber, isNaN, toNumber, getEdgeTerminal, getDegree, floydWarshall, getAdjMatrix, scaleMatrix, traverseTreeUp, isObject, clone, isFunction */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./string */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _string__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return _string__WEBPACK_IMPORTED_MODULE_0__[\"camelize\"]; });\n\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _array__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"]; });\n\n/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return _number__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return _number__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return _number__WEBPACK_IMPORTED_MODULE_2__[\"toNumber\"]; });\n\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/math.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEdgeTerminal\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"getEdgeTerminal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"getDegree\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"floydWarshall\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"getAdjMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"scaleMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return _math__WEBPACK_IMPORTED_MODULE_3__[\"traverseTreeUp\"]; });\n\n/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./object */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _object__WEBPACK_IMPORTED_MODULE_4__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return _object__WEBPACK_IMPORTED_MODULE_4__[\"clone\"]; });\n\n/* harmony import */ var _function__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./function */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/function.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _function__WEBPACK_IMPORTED_MODULE_5__[\"isFunction\"]; });\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL2luZGV4LmpzPzgwMjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUI7QUFDRDtBQUNDO0FBQ0Y7QUFDRTtBQUNFO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvdXRpbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3RyaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXknO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9tYXRoJztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb24nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/math.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/math.js ***! \*******************************************************************************/ /*! exports provided: getEdgeTerminal, getDegree, floydWarshall, getAdjMatrix, scaleMatrix, traverseTreeUp */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdgeTerminal\", function() { return getEdgeTerminal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return getDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return floydWarshall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return getAdjMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return scaleMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return traverseTreeUp; });\n/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./object */ \"./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/object.js\");\n\nconst getEdgeTerminal = (edge, type) => {\n const terminal = edge[type];\n if (Object(_object__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(terminal)) {\n return terminal.cell;\n }\n return terminal;\n};\nconst getDegree = (n, nodeIdxMap, edges) => {\n const degrees = [];\n for (let i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n if (!edges)\n return degrees;\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n if (source) {\n degrees[nodeIdxMap[source]] += 1;\n }\n if (target) {\n degrees[nodeIdxMap[target]] += 1;\n }\n });\n return degrees;\n};\nconst floydWarshall = (adjMatrix) => {\n // initialize\n const dist = [];\n const size = adjMatrix.length;\n for (let i = 0; i < size; i += 1) {\n dist[i] = [];\n for (let j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n }\n else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n }\n else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n }\n // floyd\n for (let k = 0; k < size; k += 1) {\n for (let i = 0; i < size; i += 1) {\n for (let j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n return dist;\n};\nconst getAdjMatrix = (data, directed) => {\n const { nodes, edges } = data;\n const matrix = [];\n // map node with index in data.nodes\n const nodeMap = {};\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n if (nodes) {\n nodes.forEach((node, i) => {\n nodeMap[node.id] = i;\n const row = [];\n matrix.push(row);\n });\n }\n if (edges) {\n edges.forEach((e) => {\n const source = getEdgeTerminal(e, 'source');\n const target = getEdgeTerminal(e, 'target');\n const sIndex = nodeMap[source];\n const tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n return matrix;\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\nconst scaleMatrix = (matrix, ratio) => {\n const result = [];\n matrix.forEach((row) => {\n const newRow = [];\n row.forEach((v) => {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nconst traverseUp = (data, fn) => {\n if (data && data.children) {\n for (let i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn))\n return;\n }\n }\n if (!fn(data)) {\n return false;\n }\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\nconst traverseTreeUp = (data, fn) => {\n if (typeof fn !== 'function') {\n return;\n }\n traverseUp(data, fn);\n};\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL21hdGguanM/MjMxYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9DO0FBQzdCO0FBQ1A7QUFDQSxRQUFRLHdEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0EsdUJBQXVCLFVBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IsdUJBQXVCLFVBQVU7QUFDakMsMkJBQTJCLFVBQVU7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsV0FBVyxlQUFlO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9sYXlvdXRAMC4xLjE5LWJldGEuNUBAYW50di9sYXlvdXQvZXMvdXRpbC9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL29iamVjdCc7XG5leHBvcnQgY29uc3QgZ2V0RWRnZVRlcm1pbmFsID0gKGVkZ2UsIHR5cGUpID0+IHtcbiAgICBjb25zdCB0ZXJtaW5hbCA9IGVkZ2VbdHlwZV07XG4gICAgaWYgKGlzT2JqZWN0KHRlcm1pbmFsKSkge1xuICAgICAgICByZXR1cm4gdGVybWluYWwuY2VsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlcm1pbmFsO1xufTtcbmV4cG9ydCBjb25zdCBnZXREZWdyZWUgPSAobiwgbm9kZUlkeE1hcCwgZWRnZXMpID0+IHtcbiAgICBjb25zdCBkZWdyZWVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgZGVncmVlc1tpXSA9IDA7XG4gICAgfVxuICAgIGlmICghZWRnZXMpXG4gICAgICAgIHJldHVybiBkZWdyZWVzO1xuICAgIGVkZ2VzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGUsICdzb3VyY2UnKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RWRnZVRlcm1pbmFsKGUsICd0YXJnZXQnKTtcbiAgICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICAgICAgZGVncmVlc1tub2RlSWR4TWFwW3NvdXJjZV1dICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgZGVncmVlc1tub2RlSWR4TWFwW3RhcmdldF1dICs9IDE7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGVncmVlcztcbn07XG5leHBvcnQgY29uc3QgZmxveWRXYXJzaGFsbCA9IChhZGpNYXRyaXgpID0+IHtcbiAgICAvLyBpbml0aWFsaXplXG4gICAgY29uc3QgZGlzdCA9IFtdO1xuICAgIGNvbnN0IHNpemUgPSBhZGpNYXRyaXgubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgICAgIGRpc3RbaV0gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgZGlzdFtpXVtqXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhZGpNYXRyaXhbaV1bal0gPT09IDAgfHwgIWFkak1hdHJpeFtpXVtqXSkge1xuICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSBJbmZpbml0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSBhZGpNYXRyaXhbaV1bal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gZmxveWRcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHNpemU7IGsgKz0gMSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdFtpXVtqXSA+IGRpc3RbaV1ba10gKyBkaXN0W2tdW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3Q7XG59O1xuZXhwb3J0IGNvbnN0IGdldEFkak1hdHJpeCA9IChkYXRhLCBkaXJlY3RlZCkgPT4ge1xuICAgIGNvbnN0IHsgbm9kZXMsIGVkZ2VzIH0gPSBkYXRhO1xuICAgIGNvbnN0IG1hdHJpeCA9IFtdO1xuICAgIC8vIG1hcCBub2RlIHdpdGggaW5kZXggaW4gZGF0YS5ub2Rlc1xuICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBub2RlcyBkYXRhIScpO1xuICAgIH1cbiAgICBpZiAobm9kZXMpIHtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSwgaSkgPT4ge1xuICAgICAgICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICAgICAgICBjb25zdCByb3cgPSBbXTtcbiAgICAgICAgICAgIG1hdHJpeC5wdXNoKHJvdyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZWRnZXMpIHtcbiAgICAgICAgZWRnZXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gZ2V0RWRnZVRlcm1pbmFsKGUsICdzb3VyY2UnKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEVkZ2VUZXJtaW5hbChlLCAndGFyZ2V0Jyk7XG4gICAgICAgICAgICBjb25zdCBzSW5kZXggPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICAgICAgICBjb25zdCB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICAgICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcbiAgICAgICAgICAgIGlmICghZGlyZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59O1xuLyoqXG4gKiBzY2FsZSBtYXRyaXhcbiAqIEBwYXJhbSBtYXRyaXggWyBbXSwgW10sIFtdIF1cbiAqIEBwYXJhbSByYXRpb1xuICovXG5leHBvcnQgY29uc3Qgc2NhbGVNYXRyaXggPSAobWF0cml4LCByYXRpbykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIG1hdHJpeC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Um93ID0gW107XG4gICAgICAgIHJvdy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBuZXdSb3cucHVzaCh2ICogcmF0aW8pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnB1c2gobmV3Um93KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbi8qKlxuICogZGVwdGggZmlyc3QgdHJhdmVyc2UsIGZyb20gbGVhdmVzIHRvIHJvb3QsIGNoaWxkcmVuIGluIGludmVyc2Ugb3JkZXJcbiAqICBpZiB0aGUgZm4gcmV0dXJucyBmYWxzZSwgdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICovXG5jb25zdCB0cmF2ZXJzZVVwID0gKGRhdGEsIGZuKSA9PiB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKGxldCBpID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCF0cmF2ZXJzZVVwKGRhdGEuY2hpbGRyZW5baV0sIGZuKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmbihkYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogZGVwdGggZmlyc3QgdHJhdmVyc2UsIGZyb20gbGVhdmVzIHRvIHJvb3QsIGNoaWxkcmVuIGluIGludmVyc2Ugb3JkZXJcbiAqIGlmIHRoZSBmbiByZXR1cm5zIGZhbHNlLCB0ZXJtaW5hdGUgdGhlIHRyYXZlcnNlXG4gKi9cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZVRyZWVVcCA9IChkYXRhLCBmbikgPT4ge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cmF2ZXJzZVVwKGRhdGEsIGZuKTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/math.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/number.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/number.js ***! \*********************************************************************************/ /*! exports provided: isNumber, isNaN, toNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toNumber\", function() { return toNumber; });\nconst isNumber = (val) => typeof val === 'number';\nconst isNaN = (num) => Number.isNaN(Number(num));\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\n//# sourceMappingURL=number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL251bWJlci5qcz80ZWNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL251bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xuZXhwb3J0IGNvbnN0IGlzTmFOID0gKG51bSkgPT4gTnVtYmVyLmlzTmFOKE51bWJlcihudW0pKTtcbmV4cG9ydCBjb25zdCB0b051bWJlciA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBuID0gcGFyc2VGbG9hdCh2YWwpO1xuICAgIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG47XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bnVtYmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/number.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/object.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/object.js ***! \*********************************************************************************/ /*! exports provided: isObject, clone */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst clone = (target) => {\n if (target === null) {\n return target;\n }\n if (target instanceof Date) {\n return new Date(target.getTime());\n }\n if (target instanceof Array) {\n const cp = [];\n target.forEach((v) => {\n cp.push(v);\n });\n return cp.map((n) => clone(n));\n }\n if (typeof target === 'object' && target !== {}) {\n const cp = Object.assign({}, target);\n Object.keys(cp).forEach((k) => {\n cp[k] = clone(cp[k]);\n });\n return cp;\n }\n return target;\n};\n//# sourceMappingURL=object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL29iamVjdC5qcz83MTRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsbURBQW1EO0FBQ25ELG1DQUFtQztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL29iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWwpID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcbmV4cG9ydCBjb25zdCBjbG9uZSA9ICh0YXJnZXQpID0+IHtcbiAgICBpZiAodGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0YXJnZXQuZ2V0VGltZSgpKTtcbiAgICB9XG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGNvbnN0IGNwID0gW107XG4gICAgICAgIHRhcmdldC5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBjcC5wdXNoKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNwLm1hcCgobikgPT4gY2xvbmUobikpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgdGFyZ2V0ICE9PSB7fSkge1xuICAgICAgICBjb25zdCBjcCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGNwKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBjcFtrXSA9IGNsb25lKGNwW2tdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vYmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/object.js\n"); /***/ }), /***/ "./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/string.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/string.js ***! \*********************************************************************************/ /*! exports provided: isString, camelize */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"camelize\", function() { return camelize; });\nconst isString = (val) => typeof val === 'string';\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\n// export const capitalize = cacheStringFunction(\n// (str: string) => str.charAt(0).toUpperCase() + str.slice(1),\n// )\n//# sourceMappingURL=string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2xheW91dEAwLjEuMTktYmV0YS41QEBhbnR2L2xheW91dC9lcy91dGlsL3N0cmluZy5qcz83YzUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbGF5b3V0QDAuMS4xOS1iZXRhLjVAQGFudHYvbGF5b3V0L2VzL3V0aWwvc3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG5jb25zdCBjYWNoZVN0cmluZ0Z1bmN0aW9uID0gKGZuKSA9PiB7XG4gICAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHJldHVybiAoKHN0cikgPT4ge1xuICAgICAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xuICAgICAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSk7XG4gICAgfSk7XG59O1xuY29uc3QgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbmV4cG9ydCBjb25zdCBjYW1lbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCAoXywgYykgPT4gKGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJykpO1xufSk7XG4vLyBleHBvcnQgY29uc3QgY2FwaXRhbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oXG4vLyAgIChzdHI6IHN0cmluZykgPT4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpLFxuLy8gKVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyaW5nLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_layout@0.1.19-beta.5@@antv/layout/es/util/string.js\n"); /***/ }), /***/ "./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/ext.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/ext.js ***! \****************************************************************************/ /*! exports provided: leftTranslate, leftRotate, leftScale, transform, direction, angleTo, vertical */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftTranslate\", function() { return leftTranslate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftRotate\", function() { return leftRotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftScale\", function() { return leftScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"direction\", function() { return direction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleTo\", function() { return angleTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertical\", function() { return vertical; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\n\nfunction leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromTranslation(transMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, transMat, a);\n}\nfunction leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromRotation(rotateMat, rad);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, rotateMat, a);\n}\nfunction leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromScaling(scaleMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nfunction transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nfunction direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nfunction angleTo(v1, v2, direct) {\n var ang = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nfunction vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n }\n else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}\n//# sourceMappingURL=ext.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X21hdHJpeC11dGlsQDMuMC40QEBhbnR2L21hdHJpeC11dGlsL2VzbS9leHQuanM/NjVkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDdUM7QUFDaEM7QUFDUDtBQUNBLElBQUksOENBQUk7QUFDUixXQUFXLDhDQUFJO0FBQ2Y7QUFDTztBQUNQO0FBQ0EsSUFBSSw4Q0FBSTtBQUNSLFdBQVcsOENBQUk7QUFDZjtBQUNPO0FBQ1A7QUFDQSxJQUFJLDhDQUFJO0FBQ1IsV0FBVyw4Q0FBSTtBQUNmO0FBQ0E7QUFDQSxXQUFXLDhDQUFJO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLHlDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLFlBQVksTUFBTTtBQUNsQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGNBQWMsOENBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9tYXRyaXgtdXRpbEAzLjAuNEBAYW50di9tYXRyaXgtdXRpbC9lc20vZXh0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24g5omp5bGV5pa55rOV77yM5o+Q5L6bIGdsLW1hdHJpeCDkuLrmj5DkvpvnmoTmlrnms5VcbiAqICovXG5pbXBvcnQgeyBtYXQzLCB2ZWMyIH0gZnJvbSAnZ2wtbWF0cml4JztcbmV4cG9ydCBmdW5jdGlvbiBsZWZ0VHJhbnNsYXRlKG91dCwgYSwgdikge1xuICAgIHZhciB0cmFuc01hdCA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgICBtYXQzLmZyb21UcmFuc2xhdGlvbih0cmFuc01hdCwgdik7XG4gICAgcmV0dXJuIG1hdDMubXVsdGlwbHkob3V0LCB0cmFuc01hdCwgYSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbGVmdFJvdGF0ZShvdXQsIGEsIHJhZCkge1xuICAgIHZhciByb3RhdGVNYXQgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgbWF0My5mcm9tUm90YXRpb24ocm90YXRlTWF0LCByYWQpO1xuICAgIHJldHVybiBtYXQzLm11bHRpcGx5KG91dCwgcm90YXRlTWF0LCBhKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsZWZ0U2NhbGUob3V0LCBhLCB2KSB7XG4gICAgdmFyIHNjYWxlTWF0ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIG1hdDMuZnJvbVNjYWxpbmcoc2NhbGVNYXQsIHYpO1xuICAgIHJldHVybiBtYXQzLm11bHRpcGx5KG91dCwgc2NhbGVNYXQsIGEpO1xufVxuZnVuY3Rpb24gbGVmdE11bHRpcGx5KG91dCwgYSwgYTEpIHtcbiAgICByZXR1cm4gbWF0My5tdWx0aXBseShvdXQsIGExLCBhKTtcbn1cbi8qKlxuICog5qC55o2uIGFjdGlvbnMg5p2l5YGaIHRyYW5zZm9ybVxuICogQHBhcmFtIG1cbiAqIEBwYXJhbSBhY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm0obSwgYWN0aW9ucykge1xuICAgIHZhciBtYXRyaXggPSBtID8gW10uY29uY2F0KG0pIDogWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhY3Rpb25zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgbGVmdFRyYW5zbGF0ZShtYXRyaXgsIG1hdHJpeCwgW2FjdGlvblsxXSwgYWN0aW9uWzJdXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICBsZWZ0U2NhbGUobWF0cml4LCBtYXRyaXgsIFthY3Rpb25bMV0sIGFjdGlvblsyXV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncic6XG4gICAgICAgICAgICAgICAgbGVmdFJvdGF0ZShtYXRyaXgsIG1hdHJpeCwgYWN0aW9uWzFdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIGxlZnRNdWx0aXBseShtYXRyaXgsIG1hdHJpeCwgYWN0aW9uWzFdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKlxuICog5ZCR6YePIHYxIOWIsCDlkJHph48gdjIg5aS56KeS55qE5pa55ZCRXG4gKiBAcGFyYW0gIHtBcnJheX0gdjEg5ZCR6YePXG4gKiBAcGFyYW0gIHtBcnJheX0gdjIg5ZCR6YePXG4gKiBAcmV0dXJuIHtCb29sZWFufSA+PSAwIOmhuuaXtumSiCA8IDAg6YCG5pe26ZKIXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3Rpb24odjEsIHYyKSB7XG4gICAgcmV0dXJuIHYxWzBdICogdjJbMV0gLSB2MlswXSAqIHYxWzFdO1xufVxuLyoqXG4gKiDkuoznu7TlkJHph48gdjEg5YiwIHYyIOeahOWkueinklxuICogQHBhcmFtIHYxXG4gKiBAcGFyYW0gdjJcbiAqIEBwYXJhbSBkaXJlY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZ2xlVG8odjEsIHYyLCBkaXJlY3QpIHtcbiAgICB2YXIgYW5nID0gdmVjMi5hbmdsZSh2MSwgdjIpO1xuICAgIHZhciBhbmdsZUxhcmdlVGhhblBJID0gZGlyZWN0aW9uKHYxLCB2MikgPj0gMDtcbiAgICBpZiAoZGlyZWN0KSB7XG4gICAgICAgIGlmIChhbmdsZUxhcmdlVGhhblBJKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5QSSAqIDIgLSBhbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFuZztcbiAgICB9XG4gICAgaWYgKGFuZ2xlTGFyZ2VUaGFuUEkpIHtcbiAgICAgICAgcmV0dXJuIGFuZztcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguUEkgKiAyIC0gYW5nO1xufVxuLyoqXG4gKiDorqHnrpfkuoznu7TlkJHph4/nmoTlnoLnm7TlkJHph49cbiAqIEBwYXJhbSBvdXRcbiAqIEBwYXJhbSB2XG4gKiBAcGFyYW0gZmxhZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVydGljYWwob3V0LCB2LCBmbGFnKSB7XG4gICAgaWYgKGZsYWcpIHtcbiAgICAgICAgb3V0WzBdID0gdlsxXTtcbiAgICAgICAgb3V0WzFdID0gLTEgKiB2WzBdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb3V0WzBdID0gLTEgKiB2WzFdO1xuICAgICAgICBvdXRbMV0gPSB2WzBdO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXh0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/ext.js\n"); /***/ }), /***/ "./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/index.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/index.js ***! \******************************************************************************/ /*! exports provided: mat3, vec2, vec3, ext */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mat3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec2\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"]; });\n\n/* harmony import */ var _ext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ext */ \"./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/ext.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"ext\", function() { return _ext__WEBPACK_IMPORTED_MODULE_1__; });\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X21hdHJpeC11dGlsQDMuMC40QEBhbnR2L21hdHJpeC11dGlsL2VzbS9pbmRleC5qcz9jYmQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ2hCO0FBQ0k7QUFDakMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X21hdHJpeC11dGlsQDMuMC40QEBhbnR2L21hdHJpeC11dGlsL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hdDMsIHZlYzIsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0ICogYXMgZXh0IGZyb20gJy4vZXh0JztcbmV4cG9ydCB7IG1hdDMsIHZlYzIsIHZlYzMsIGV4dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/ext.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/ext.js ***! \***********************************************************************************/ /*! exports provided: leftTranslate, leftRotate, leftScale, transform, direction, angleTo, vertical */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftTranslate\", function() { return leftTranslate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftRotate\", function() { return leftRotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"leftScale\", function() { return leftScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"direction\", function() { return direction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleTo\", function() { return angleTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertical\", function() { return vertical; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\n\nfunction leftTranslate(out, a, v) {\n var transMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromTranslation(transMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, transMat, a);\n}\nfunction leftRotate(out, a, rad) {\n var rotateMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromRotation(rotateMat, rad);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, rotateMat, a);\n}\nfunction leftScale(out, a, v) {\n var scaleMat = [0, 0, 0, 0, 0, 0, 0, 0, 0];\n gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].fromScaling(scaleMat, v);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, scaleMat, a);\n}\nfunction leftMultiply(out, a, a1) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nfunction transform(m, actions) {\n var matrix = m ? [].concat(m) : [1, 0, 0, 0, 1, 0, 0, 0, 1];\n for (var i = 0, len = actions.length; i < len; i++) {\n var action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [action[1], action[2]]);\n break;\n case 's':\n leftScale(matrix, matrix, [action[1], action[2]]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n return matrix;\n}\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nfunction direction(v1, v2) {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nfunction angleTo(v1, v2, direct) {\n var ang = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].angle(v1, v2);\n var angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nfunction vertical(out, v, flag) {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n }\n else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n return out;\n}\n//# sourceMappingURL=ext.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X21hdHJpeC11dGlsQDMuMS4wLWJldGEuM0BAYW50di9tYXRyaXgtdXRpbC9lc20vZXh0LmpzP2I5ZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ3VDO0FBQ2hDO0FBQ1A7QUFDQSxJQUFJLDhDQUFJO0FBQ1IsV0FBVyw4Q0FBSTtBQUNmO0FBQ087QUFDUDtBQUNBLElBQUksOENBQUk7QUFDUixXQUFXLDhDQUFJO0FBQ2Y7QUFDTztBQUNQO0FBQ0EsSUFBSSw4Q0FBSTtBQUNSLFdBQVcsOENBQUk7QUFDZjtBQUNBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBTTtBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxjQUFjLDhDQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfbWF0cml4LXV0aWxAMy4xLjAtYmV0YS4zQEBhbnR2L21hdHJpeC11dGlsL2VzbS9leHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiDmianlsZXmlrnms5XvvIzmj5DkvpsgZ2wtbWF0cml4IOS4uuaPkOS+m+eahOaWueazlVxuICogKi9cbmltcG9ydCB7IG1hdDMsIHZlYzIgfSBmcm9tICdnbC1tYXRyaXgnO1xuZXhwb3J0IGZ1bmN0aW9uIGxlZnRUcmFuc2xhdGUob3V0LCBhLCB2KSB7XG4gICAgdmFyIHRyYW5zTWF0ID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIG1hdDMuZnJvbVRyYW5zbGF0aW9uKHRyYW5zTWF0LCB2KTtcbiAgICByZXR1cm4gbWF0My5tdWx0aXBseShvdXQsIHRyYW5zTWF0LCBhKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsZWZ0Um90YXRlKG91dCwgYSwgcmFkKSB7XG4gICAgdmFyIHJvdGF0ZU1hdCA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgICBtYXQzLmZyb21Sb3RhdGlvbihyb3RhdGVNYXQsIHJhZCk7XG4gICAgcmV0dXJuIG1hdDMubXVsdGlwbHkob3V0LCByb3RhdGVNYXQsIGEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxlZnRTY2FsZShvdXQsIGEsIHYpIHtcbiAgICB2YXIgc2NhbGVNYXQgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgbWF0My5mcm9tU2NhbGluZyhzY2FsZU1hdCwgdik7XG4gICAgcmV0dXJuIG1hdDMubXVsdGlwbHkob3V0LCBzY2FsZU1hdCwgYSk7XG59XG5mdW5jdGlvbiBsZWZ0TXVsdGlwbHkob3V0LCBhLCBhMSkge1xuICAgIHJldHVybiBtYXQzLm11bHRpcGx5KG91dCwgYTEsIGEpO1xufVxuLyoqXG4gKiDmoLnmja4gYWN0aW9ucyDmnaXlgZogdHJhbnNmb3JtXG4gKiBAcGFyYW0gbVxuICogQHBhcmFtIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybShtLCBhY3Rpb25zKSB7XG4gICAgdmFyIG1hdHJpeCA9IG0gPyBbXS5jb25jYXQobSkgOiBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFjdGlvbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICBsZWZ0VHJhbnNsYXRlKG1hdHJpeCwgbWF0cml4LCBbYWN0aW9uWzFdLCBhY3Rpb25bMl1dKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgIGxlZnRTY2FsZShtYXRyaXgsIG1hdHJpeCwgW2FjdGlvblsxXSwgYWN0aW9uWzJdXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyJzpcbiAgICAgICAgICAgICAgICBsZWZ0Um90YXRlKG1hdHJpeCwgbWF0cml4LCBhY3Rpb25bMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgbGVmdE11bHRpcGx5KG1hdHJpeCwgbWF0cml4LCBhY3Rpb25bMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiDlkJHph48gdjEg5YiwIOWQkemHjyB2MiDlpLnop5LnmoTmlrnlkJFcbiAqIEBwYXJhbSAge0FycmF5fSB2MSDlkJHph49cbiAqIEBwYXJhbSAge0FycmF5fSB2MiDlkJHph49cbiAqIEByZXR1cm4ge0Jvb2xlYW59ID49IDAg6aG65pe26ZKIIDwgMCDpgIbml7bpkohcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGlvbih2MSwgdjIpIHtcbiAgICByZXR1cm4gdjFbMF0gKiB2MlsxXSAtIHYyWzBdICogdjFbMV07XG59XG4vKipcbiAqIOS6jOe7tOWQkemHjyB2MSDliLAgdjIg55qE5aS56KeSXG4gKiBAcGFyYW0gdjFcbiAqIEBwYXJhbSB2MlxuICogQHBhcmFtIGRpcmVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5nbGVUbyh2MSwgdjIsIGRpcmVjdCkge1xuICAgIHZhciBhbmcgPSB2ZWMyLmFuZ2xlKHYxLCB2Mik7XG4gICAgdmFyIGFuZ2xlTGFyZ2VUaGFuUEkgPSBkaXJlY3Rpb24odjEsIHYyKSA+PSAwO1xuICAgIGlmIChkaXJlY3QpIHtcbiAgICAgICAgaWYgKGFuZ2xlTGFyZ2VUaGFuUEkpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLlBJICogMiAtIGFuZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYW5nO1xuICAgIH1cbiAgICBpZiAoYW5nbGVMYXJnZVRoYW5QSSkge1xuICAgICAgICByZXR1cm4gYW5nO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5QSSAqIDIgLSBhbmc7XG59XG4vKipcbiAqIOiuoeeul+S6jOe7tOWQkemHj+eahOWeguebtOWQkemHj1xuICogQHBhcmFtIG91dFxuICogQHBhcmFtIHZcbiAqIEBwYXJhbSBmbGFnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJ0aWNhbChvdXQsIHYsIGZsYWcpIHtcbiAgICBpZiAoZmxhZykge1xuICAgICAgICBvdXRbMF0gPSB2WzFdO1xuICAgICAgICBvdXRbMV0gPSAtMSAqIHZbMF07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBvdXRbMF0gPSAtMSAqIHZbMV07XG4gICAgICAgIG91dFsxXSA9IHZbMF07XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1leHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/ext.js\n"); /***/ }), /***/ "./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js ***! \*************************************************************************************/ /*! exports provided: mat3, vec2, vec3, ext */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mat3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec2\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vec3\", function() { return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"]; });\n\n/* harmony import */ var _ext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ext */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/ext.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"ext\", function() { return _ext__WEBPACK_IMPORTED_MODULE_1__; });\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X21hdHJpeC11dGlsQDMuMS4wLWJldGEuM0BAYW50di9tYXRyaXgtdXRpbC9lc20vaW5kZXguanM/ZDcyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNoQjtBQUNJO0FBQ2pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9tYXRyaXgtdXRpbEAzLjEuMC1iZXRhLjNAQGFudHYvbWF0cml4LXV0aWwvZXNtL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0MywgdmVjMiwgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgKiBhcyBleHQgZnJvbSAnLi9leHQnO1xuZXhwb3J0IHsgbWF0MywgdmVjMiwgdmVjMywgZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/catmull-rom-2-bezier.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/catmull-rom-2-bezier.js ***! \******************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.0.4@@antv/matrix-util/esm/index.js\");\n\nfunction smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var hasConstraint = !!constraint;\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n var nextCp0;\n var cp1;\n var cp0;\n if (hasConstraint) {\n min = constraint[0], max = constraint[1];\n for (var i = 0, l = points.length; i < l; i += 1) {\n var point = points[i];\n min = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], min, point);\n max = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], max, point);\n }\n }\n for (var i = 0, len = points.length; i < len; i += 1) {\n var point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n }\n else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n }\n else {\n var prevIdx = [i ? i - 1 : len - 1, i - 1][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n var v = [0, 0];\n v = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].sub(v, nextPoint, prevPoint);\n v = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale(v, v, smooth);\n var d0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].distance(point, prevPoint);\n var d1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n var v1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v, -d0);\n var v2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v, d1);\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v1);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v2);\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], nextCp0, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], nextPoint, point));\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], nextCp0, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], nextPoint, point));\n // 重新计算 cp1 的值\n v1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].sub([0, 0], nextCp0, point);\n v1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v1, -d0 / d1);\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v1);\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], cp1, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], prevPoint, point));\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], cp1, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], prevPoint, point));\n // 重新计算 nextCp0 的值\n v2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].sub([0, 0], point, cp1);\n v2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], v2, d1 / d0);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], point, v2);\n if (hasConstraint) {\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], cp1, min);\n cp1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], cp1, max);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].max([0, 0], nextCp0, min);\n nextCp0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].min([0, 0], nextCp0, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nfunction catmullRom2Bezier(crp, z, constraint) {\n if (z === void 0) { z = false; }\n if (constraint === void 0) { constraint = [\n [0, 0],\n [1, 1],\n ]; }\n var isLoop = !!z;\n var pointList = [];\n for (var i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n var len = pointList.length;\n var d1 = [];\n var cp1;\n var cp2;\n var p;\n for (var i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (catmullRom2Bezier);\n//# sourceMappingURL=catmull-rom-2-bezier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9jYXRtdWxsLXJvbS0yLWJlemllci5qcz84ZjM0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLE9BQU87QUFDakQ7QUFDQSxrQkFBa0Isc0RBQUk7QUFDdEIsa0JBQWtCLHNEQUFJO0FBQ3RCO0FBQ0E7QUFDQSx3Q0FBd0MsU0FBUztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFJO0FBQ3BCLGdCQUFnQixzREFBSTtBQUNwQixxQkFBcUIsc0RBQUk7QUFDekIscUJBQXFCLHNEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUk7QUFDekIscUJBQXFCLHNEQUFJO0FBQ3pCLGtCQUFrQixzREFBSTtBQUN0QixzQkFBc0Isc0RBQUk7QUFDMUI7QUFDQSxzQkFBc0Isc0RBQUksc0JBQXNCLHNEQUFJO0FBQ3BELHNCQUFzQixzREFBSSxzQkFBc0Isc0RBQUk7QUFDcEQ7QUFDQSxpQkFBaUIsc0RBQUk7QUFDckIsaUJBQWlCLHNEQUFJO0FBQ3JCLGtCQUFrQixzREFBSTtBQUN0QjtBQUNBLGtCQUFrQixzREFBSSxrQkFBa0Isc0RBQUk7QUFDNUMsa0JBQWtCLHNEQUFJLGtCQUFrQixzREFBSTtBQUM1QztBQUNBLGlCQUFpQixzREFBSTtBQUNyQixpQkFBaUIsc0RBQUk7QUFDckIsc0JBQXNCLHNEQUFJO0FBQzFCO0FBQ0Esc0JBQXNCLHNEQUFJO0FBQzFCLHNCQUFzQixzREFBSTtBQUMxQiwwQkFBMEIsc0RBQUk7QUFDOUIsMEJBQTBCLHNEQUFJO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsUUFBUTtBQUNuQixXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBLHVCQUF1QixXQUFXO0FBQ2xDLGdDQUFnQztBQUNoQztBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxnRkFBaUIsRUFBQztBQUNqQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfcGF0aC11dGlsQDIuMC4xNUBAYW50di9wYXRoLXV0aWwvZXNtL2NhdG11bGwtcm9tLTItYmV6aWVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVjMiB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmZ1bmN0aW9uIHNtb290aEJlemllcihwb2ludHMsIHNtb290aCwgaXNMb29wLCBjb25zdHJhaW50KSB7XG4gICAgdmFyIGNwcyA9IFtdO1xuICAgIHZhciBoYXNDb25zdHJhaW50ID0gISFjb25zdHJhaW50O1xuICAgIHZhciBwcmV2UG9pbnQ7XG4gICAgdmFyIG5leHRQb2ludDtcbiAgICB2YXIgbWluO1xuICAgIHZhciBtYXg7XG4gICAgdmFyIG5leHRDcDA7XG4gICAgdmFyIGNwMTtcbiAgICB2YXIgY3AwO1xuICAgIGlmIChoYXNDb25zdHJhaW50KSB7XG4gICAgICAgIG1pbiA9IGNvbnN0cmFpbnRbMF0sIG1heCA9IGNvbnN0cmFpbnRbMV07XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkgKz0gMSkge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgbWluID0gdmVjMi5taW4oWzAsIDBdLCBtaW4sIHBvaW50KTtcbiAgICAgICAgICAgIG1heCA9IHZlYzIubWF4KFswLCAwXSwgbWF4LCBwb2ludCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIGlmIChpID09PSAwICYmICFpc0xvb3ApIHtcbiAgICAgICAgICAgIGNwMCA9IHBvaW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGkgPT09IGxlbiAtIDEgJiYgIWlzTG9vcCkge1xuICAgICAgICAgICAgY3AxID0gcG9pbnQ7XG4gICAgICAgICAgICBjcHMucHVzaChjcDApO1xuICAgICAgICAgICAgY3BzLnB1c2goY3AxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBwcmV2SWR4ID0gW2kgPyBpIC0gMSA6IGxlbiAtIDEsIGkgLSAxXVtpc0xvb3AgPyAwIDogMV07XG4gICAgICAgICAgICBwcmV2UG9pbnQgPSBwb2ludHNbcHJldklkeF07XG4gICAgICAgICAgICBuZXh0UG9pbnQgPSBwb2ludHNbaXNMb29wID8gKGkgKyAxKSAlIGxlbiA6IGkgKyAxXTtcbiAgICAgICAgICAgIHZhciB2ID0gWzAsIDBdO1xuICAgICAgICAgICAgdiA9IHZlYzIuc3ViKHYsIG5leHRQb2ludCwgcHJldlBvaW50KTtcbiAgICAgICAgICAgIHYgPSB2ZWMyLnNjYWxlKHYsIHYsIHNtb290aCk7XG4gICAgICAgICAgICB2YXIgZDAgPSB2ZWMyLmRpc3RhbmNlKHBvaW50LCBwcmV2UG9pbnQpO1xuICAgICAgICAgICAgdmFyIGQxID0gdmVjMi5kaXN0YW5jZShwb2ludCwgbmV4dFBvaW50KTtcbiAgICAgICAgICAgIHZhciBzdW0gPSBkMCArIGQxO1xuICAgICAgICAgICAgaWYgKHN1bSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGQwIC89IHN1bTtcbiAgICAgICAgICAgICAgICBkMSAvPSBzdW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdjEgPSB2ZWMyLnNjYWxlKFswLCAwXSwgdiwgLWQwKTtcbiAgICAgICAgICAgIHZhciB2MiA9IHZlYzIuc2NhbGUoWzAsIDBdLCB2LCBkMSk7XG4gICAgICAgICAgICBjcDEgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50LCB2MSk7XG4gICAgICAgICAgICBuZXh0Q3AwID0gdmVjMi5hZGQoWzAsIDBdLCBwb2ludCwgdjIpO1xuICAgICAgICAgICAgLy8g5LiL5LiA5Liq5o6n5Yi254K55b+F6aG75Zyo6L+Z5Liq54K55ZKM5LiL5LiA5Liq54K55LmL6Ze0XG4gICAgICAgICAgICBuZXh0Q3AwID0gdmVjMi5taW4oWzAsIDBdLCBuZXh0Q3AwLCB2ZWMyLm1heChbMCwgMF0sIG5leHRQb2ludCwgcG9pbnQpKTtcbiAgICAgICAgICAgIG5leHRDcDAgPSB2ZWMyLm1heChbMCwgMF0sIG5leHRDcDAsIHZlYzIubWluKFswLCAwXSwgbmV4dFBvaW50LCBwb2ludCkpO1xuICAgICAgICAgICAgLy8g6YeN5paw6K6h566XIGNwMSDnmoTlgLxcbiAgICAgICAgICAgIHYxID0gdmVjMi5zdWIoWzAsIDBdLCBuZXh0Q3AwLCBwb2ludCk7XG4gICAgICAgICAgICB2MSA9IHZlYzIuc2NhbGUoWzAsIDBdLCB2MSwgLWQwIC8gZDEpO1xuICAgICAgICAgICAgY3AxID0gdmVjMi5hZGQoWzAsIDBdLCBwb2ludCwgdjEpO1xuICAgICAgICAgICAgLy8g5LiK5LiA5Liq5o6n5Yi254K55b+F6aG76KaB5Zyo5LiK5LiA5Liq54K55ZKM6L+Z5LiA5Liq54K55LmL6Ze0XG4gICAgICAgICAgICBjcDEgPSB2ZWMyLm1pbihbMCwgMF0sIGNwMSwgdmVjMi5tYXgoWzAsIDBdLCBwcmV2UG9pbnQsIHBvaW50KSk7XG4gICAgICAgICAgICBjcDEgPSB2ZWMyLm1heChbMCwgMF0sIGNwMSwgdmVjMi5taW4oWzAsIDBdLCBwcmV2UG9pbnQsIHBvaW50KSk7XG4gICAgICAgICAgICAvLyDph43mlrDorqHnrpcgbmV4dENwMCDnmoTlgLxcbiAgICAgICAgICAgIHYyID0gdmVjMi5zdWIoWzAsIDBdLCBwb2ludCwgY3AxKTtcbiAgICAgICAgICAgIHYyID0gdmVjMi5zY2FsZShbMCwgMF0sIHYyLCBkMSAvIGQwKTtcbiAgICAgICAgICAgIG5leHRDcDAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50LCB2Mik7XG4gICAgICAgICAgICBpZiAoaGFzQ29uc3RyYWludCkge1xuICAgICAgICAgICAgICAgIGNwMSA9IHZlYzIubWF4KFswLCAwXSwgY3AxLCBtaW4pO1xuICAgICAgICAgICAgICAgIGNwMSA9IHZlYzIubWluKFswLCAwXSwgY3AxLCBtYXgpO1xuICAgICAgICAgICAgICAgIG5leHRDcDAgPSB2ZWMyLm1heChbMCwgMF0sIG5leHRDcDAsIG1pbik7XG4gICAgICAgICAgICAgICAgbmV4dENwMCA9IHZlYzIubWluKFswLCAwXSwgbmV4dENwMCwgbWF4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNwcy5wdXNoKGNwMCk7XG4gICAgICAgICAgICBjcHMucHVzaChjcDEpO1xuICAgICAgICAgICAgY3AwID0gbmV4dENwMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNMb29wKSB7XG4gICAgICAgIGNwcy5wdXNoKGNwcy5zaGlmdCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNwcztcbn1cbi8qKlxuICogY3JlYXRlIGJlemllciBzcGxpbmUgZnJvbSBjYXRtdWxsIHJvbSBzcGxpbmVcbiAqIEBwYXJhbSB7QXJyYXl9IGNycCBDYXRtdWxsIFJvbSBQb2ludHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0geiBTcGxpbmUgaXMgbG9vcFxuICogQHBhcmFtIHtBcnJheX0gY29uc3RyYWludCBDb25zdHJhaW50XG4gKi9cbmZ1bmN0aW9uIGNhdG11bGxSb20yQmV6aWVyKGNycCwgeiwgY29uc3RyYWludCkge1xuICAgIGlmICh6ID09PSB2b2lkIDApIHsgeiA9IGZhbHNlOyB9XG4gICAgaWYgKGNvbnN0cmFpbnQgPT09IHZvaWQgMCkgeyBjb25zdHJhaW50ID0gW1xuICAgICAgICBbMCwgMF0sXG4gICAgICAgIFsxLCAxXSxcbiAgICBdOyB9XG4gICAgdmFyIGlzTG9vcCA9ICEhejtcbiAgICB2YXIgcG9pbnRMaXN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjcnAubGVuZ3RoOyBpIDwgbDsgaSArPSAyKSB7XG4gICAgICAgIHBvaW50TGlzdC5wdXNoKFtjcnBbaV0sIGNycFtpICsgMV1dKTtcbiAgICB9XG4gICAgdmFyIGNvbnRyb2xQb2ludExpc3QgPSBzbW9vdGhCZXppZXIocG9pbnRMaXN0LCAwLjQsIGlzTG9vcCwgY29uc3RyYWludCk7XG4gICAgdmFyIGxlbiA9IHBvaW50TGlzdC5sZW5ndGg7XG4gICAgdmFyIGQxID0gW107XG4gICAgdmFyIGNwMTtcbiAgICB2YXIgY3AyO1xuICAgIHZhciBwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuIC0gMTsgaSArPSAxKSB7XG4gICAgICAgIGNwMSA9IGNvbnRyb2xQb2ludExpc3RbaSAqIDJdO1xuICAgICAgICBjcDIgPSBjb250cm9sUG9pbnRMaXN0W2kgKiAyICsgMV07XG4gICAgICAgIHAgPSBwb2ludExpc3RbaSArIDFdO1xuICAgICAgICBkMS5wdXNoKFsnQycsIGNwMVswXSwgY3AxWzFdLCBjcDJbMF0sIGNwMlsxXSwgcFswXSwgcFsxXV0pO1xuICAgIH1cbiAgICBpZiAoaXNMb29wKSB7XG4gICAgICAgIGNwMSA9IGNvbnRyb2xQb2ludExpc3RbbGVuXTtcbiAgICAgICAgY3AyID0gY29udHJvbFBvaW50TGlzdFtsZW4gKyAxXTtcbiAgICAgICAgcCA9IHBvaW50TGlzdFswXTtcbiAgICAgICAgZDEucHVzaChbJ0MnLCBjcDFbMF0sIGNwMVsxXSwgY3AyWzBdLCBjcDJbMV0sIHBbMF0sIHBbMV1dKTtcbiAgICB9XG4gICAgcmV0dXJuIGQxO1xufVxuZXhwb3J0IGRlZmF1bHQgY2F0bXVsbFJvbTJCZXppZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYXRtdWxsLXJvbS0yLWJlemllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/catmull-rom-2-bezier.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path-by-diff.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path-by-diff.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fillPathByDiff; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment, targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEqual\"])(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nfunction fillPathByDiff(source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n // @ts-ignore\n if (diffMatrix[sourceLen][targetLen] !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n // @ts-ignore\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n // @ts-ignore\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n if (sourceLen < targetLen) {\n for (var i = 0; i < (targetLen - sourceLen); i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n // @ts-ignore\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n // @ts-ignore\n source.push(source[sourceLen - 1]);\n }\n }\n }\n return source;\n}\n//# sourceMappingURL=fill-path-by-diff.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGgtYnktZGlmZi5qcz9iYTk5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkMsc0JBQXNCO0FBQ3RCO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQSxnQkFBZ0IsMERBQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0EsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixnREFBZ0Q7QUFDOUU7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFFBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw2QkFBNkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGgtYnktZGlmZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAYW50di91dGlsJztcbmZ1bmN0aW9uIGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSkge1xuICAgIHZhciB0eXBlID0gbnVsbDtcbiAgICB2YXIgbWluID0gbW9kaWZ5O1xuICAgIGlmIChhZGQgPCBtaW4pIHtcbiAgICAgICAgbWluID0gYWRkO1xuICAgICAgICB0eXBlID0gJ2FkZCc7XG4gICAgfVxuICAgIGlmIChkZWwgPCBtaW4pIHtcbiAgICAgICAgbWluID0gZGVsO1xuICAgICAgICB0eXBlID0gJ2RlbCc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIG1pbjogbWluLFxuICAgIH07XG59XG4vKlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2VcbiAqIOiuoeeul+S4pOadoXBhdGjnmoTnvJbovpHot53nprtcbiAqL1xudmFyIGxldmVuc2h0ZWluRGlzdGFuY2UgPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgdGFyZ2V0TGVuID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICB2YXIgc291cmNlU2VnbWVudCwgdGFyZ2V0U2VnbWVudDtcbiAgICB2YXIgdGVtcCA9IDA7XG4gICAgaWYgKHNvdXJjZUxlbiA9PT0gMCB8fCB0YXJnZXRMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBkaXN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gc291cmNlTGVuOyBpKyspIHtcbiAgICAgICAgZGlzdFtpXSA9IFtdO1xuICAgICAgICBkaXN0W2ldWzBdID0geyBtaW46IGkgfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGFyZ2V0TGVuOyBqKyspIHtcbiAgICAgICAgZGlzdFswXVtqXSA9IHsgbWluOiBqIH07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgIHNvdXJjZVNlZ21lbnQgPSBzb3VyY2VbaSAtIDFdO1xuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICAgICAgdGFyZ2V0U2VnbWVudCA9IHRhcmdldFtqIC0gMV07XG4gICAgICAgICAgICBpZiAoaXNFcXVhbChzb3VyY2VTZWdtZW50LCB0YXJnZXRTZWdtZW50KSkge1xuICAgICAgICAgICAgICAgIHRlbXAgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGVtcCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGVsID0gZGlzdFtpIC0gMV1bal0ubWluICsgMTtcbiAgICAgICAgICAgIHZhciBhZGQgPSBkaXN0W2ldW2ogLSAxXS5taW4gKyAxO1xuICAgICAgICAgICAgdmFyIG1vZGlmeSA9IGRpc3RbaSAtIDFdW2ogLSAxXS5taW4gKyB0ZW1wO1xuICAgICAgICAgICAgZGlzdFtpXVtqXSA9IGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3Q7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmlsbFBhdGhCeURpZmYoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgZGlmZk1hdHJpeCA9IGxldmVuc2h0ZWluRGlzdGFuY2Uoc291cmNlLCB0YXJnZXQpO1xuICAgIHZhciBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoO1xuICAgIHZhciBjaGFuZ2VzID0gW107XG4gICAgdmFyIGluZGV4ID0gMTtcbiAgICB2YXIgbWluUG9zID0gMTtcbiAgICAvLyDlpoLmnpxzb3VyY2Xlkox0YXJnZXTkuI3mmK/lrozlhajkuI3nm7jnrYlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKGRpZmZNYXRyaXhbc291cmNlTGVuXVt0YXJnZXRMZW5dICE9PSBzb3VyY2VMZW4pIHtcbiAgICAgICAgLy8g6I635Y+W5LuOc291cmNl5YiwdGFyZ2V05omA6ZyA5pS55YqoXG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgbWluID0gZGlmZk1hdHJpeFtpXVtpXS5taW47XG4gICAgICAgICAgICBtaW5Qb3MgPSBpO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGluZGV4OyBqIDw9IHRhcmdldExlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1bal0ubWluIDwgbWluKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGRpZmZNYXRyaXhbaV1bal0ubWluO1xuICAgICAgICAgICAgICAgICAgICBtaW5Qb3MgPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4ID0gbWluUG9zO1xuICAgICAgICAgICAgaWYgKGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLnB1c2goeyBpbmRleDogaSAtIDEsIHR5cGU6IGRpZmZNYXRyaXhbaV1baW5kZXhdLnR5cGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5a+5c291cmNl6L+b6KGM5aKe5YigcGF0aFxuICAgICAgICBmb3IgKHZhciBpID0gY2hhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaW5kZXggPSBjaGFuZ2VzW2ldLmluZGV4O1xuICAgICAgICAgICAgaWYgKGNoYW5nZXNbaV0udHlwZSA9PT0gJ2FkZCcpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShpbmRleCwgMCwgW10uY29uY2F0KHNvdXJjZVtpbmRleF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBzb3VyY2Uuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzb3VyY2XlsL7pg6jooaXpvZBcbiAgICBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIGlmIChzb3VyY2VMZW4gPCB0YXJnZXRMZW4pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAodGFyZ2V0TGVuIC0gc291cmNlTGVuKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAneicgfHwgc291cmNlW3NvdXJjZUxlbiAtIDFdWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShzb3VyY2VMZW4gLSAyLCAwLCBzb3VyY2Vbc291cmNlTGVuIC0gMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHNvdXJjZS5wdXNoKHNvdXJjZVtzb3VyY2VMZW4gLSAxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbGwtcGF0aC1ieS1kaWZmLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path-by-diff.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fillPath; });\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [(1 - t) * points[i][0] + t * points[i + 1][0], (1 - t) * points[i][1] + t * points[i + 1][1]];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nfunction splitSegment(start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n}\nfunction fillPath(source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n}\n//# sourceMappingURL=fill-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGguanM/MDhkMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsdUJBQXVCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDJCQUEyQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9maWxsLXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBkZWNhc3RlbGphdShwb2ludHMsIHQpIHtcbiAgICB2YXIgbGVmdCA9IFtdO1xuICAgIHZhciByaWdodCA9IFtdO1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2UocG9pbnRzLCB0KSB7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBsZWZ0LnB1c2gocG9pbnRzWzBdKTtcbiAgICAgICAgICAgIHJpZ2h0LnB1c2gocG9pbnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBtaWRkbGVQb2ludHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQucHVzaChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcG9pbnRzLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQucHVzaChwb2ludHNbaSArIDFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWlkZGxlUG9pbnRzW2ldID0gWygxIC0gdCkgKiBwb2ludHNbaV1bMF0gKyB0ICogcG9pbnRzW2kgKyAxXVswXSwgKDEgLSB0KSAqIHBvaW50c1tpXVsxXSArIHQgKiBwb2ludHNbaSArIDFdWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlY3Vyc2UobWlkZGxlUG9pbnRzLCB0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWN1cnNlKHBvaW50cywgdCk7XG4gICAgfVxuICAgIHJldHVybiB7IGxlZnQ6IGxlZnQsIHJpZ2h0OiByaWdodC5yZXZlcnNlKCkgfTtcbn1cbmZ1bmN0aW9uIHNwbGl0Q3VydmUoc3RhcnQsIGVuZCwgY291bnQpIHtcbiAgICB2YXIgcG9pbnRzID0gW1tzdGFydFsxXSwgc3RhcnRbMl1dXTtcbiAgICBjb3VudCA9IGNvdW50IHx8IDI7XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgaWYgKGVuZFswXSA9PT0gJ0EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs2XSk7XG4gICAgICAgIHBvaW50cy5wdXNoKGVuZFs3XSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ0MnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFs1XSwgZW5kWzZdXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGVuZFswXSA9PT0gJ1MnIHx8IGVuZFswXSA9PT0gJ1EnKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzNdLCBlbmRbNF1dKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbMV0sIGVuZFsyXV0pO1xuICAgIH1cbiAgICB2YXIgbGVmdFNlZ21lbnRzID0gcG9pbnRzO1xuICAgIHZhciB0ID0gMSAvIGNvdW50O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHJ0ID0gdCAvICgxIC0gdCAqIGkpO1xuICAgICAgICB2YXIgc3BsaXQgPSBkZWNhc3RlbGphdShsZWZ0U2VnbWVudHMsIHJ0KTtcbiAgICAgICAgc2VnbWVudHMucHVzaChzcGxpdC5sZWZ0KTtcbiAgICAgICAgbGVmdFNlZ21lbnRzID0gc3BsaXQucmlnaHQ7XG4gICAgfVxuICAgIHNlZ21lbnRzLnB1c2gobGVmdFNlZ21lbnRzKTtcbiAgICB2YXIgcmVzdWx0ID0gc2VnbWVudHMubWFwKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgIHZhciBjbWQgPSBbXTtcbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnQycpO1xuICAgICAgICAgICAgY21kID0gY21kLmNvbmNhdChzZWdtZW50WzJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgY21kLnB1c2goJ1EnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjbWQucHVzaCgnTCcpO1xuICAgICAgICB9XG4gICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFtzZWdtZW50Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgcmV0dXJuIGNtZDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gc3BsaXRTZWdtZW50KHN0YXJ0LCBlbmQsIGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgIHJldHVybiBbW10uY29uY2F0KHN0YXJ0KV07XG4gICAgfVxuICAgIHZhciBzZWdtZW50cyA9IFtdO1xuICAgIGlmIChlbmRbMF0gPT09ICdMJyB8fCBlbmRbMF0gPT09ICdDJyB8fCBlbmRbMF0gPT09ICdRJykge1xuICAgICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmNvbmNhdChzcGxpdEN1cnZlKHN0YXJ0LCBlbmQsIGNvdW50KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGVtcCA9IFtdLmNvbmNhdChzdGFydCk7XG4gICAgICAgIGlmICh0ZW1wWzBdID09PSAnTScpIHtcbiAgICAgICAgICAgIHRlbXBbMF0gPSAnTCc7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHNlZ21lbnRzLnB1c2godGVtcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmlsbFBhdGgoc291cmNlLCB0YXJnZXQpIHtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aCAtIDE7XG4gICAgdmFyIHRhcmdldExlbiA9IHRhcmdldC5sZW5ndGggLSAxO1xuICAgIHZhciByYXRpbyA9IHNvdXJjZUxlbiAvIHRhcmdldExlbjtcbiAgICB2YXIgc2VnbWVudHNUb0ZpbGwgPSBbXTtcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMSAmJiBzb3VyY2VbMF1bMF0gPT09ICdNJykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldExlbiAtIHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgICAgICBzb3VyY2UucHVzaChzb3VyY2VbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0TGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5mbG9vcihyYXRpbyAqIGkpO1xuICAgICAgICBzZWdtZW50c1RvRmlsbFtpbmRleF0gPSAoc2VnbWVudHNUb0ZpbGxbaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG4gICAgdmFyIGZpbGxlZCA9IHNlZ21lbnRzVG9GaWxsLnJlZHVjZShmdW5jdGlvbiAoZmlsbGVkLCBjb3VudCwgaSkge1xuICAgICAgICBpZiAoaSA9PT0gc291cmNlTGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsbGVkLmNvbmNhdChzb3VyY2Vbc291cmNlTGVuXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGxlZC5jb25jYXQoc3BsaXRTZWdtZW50KHNvdXJjZVtpXSwgc291cmNlW2kgKyAxXSwgY291bnQpKTtcbiAgICB9LCBbXSk7XG4gICAgZmlsbGVkLnVuc2hpZnQoc291cmNlWzBdKTtcbiAgICBpZiAodGFyZ2V0W3RhcmdldExlbl0gPT09ICdaJyB8fCB0YXJnZXRbdGFyZ2V0TGVuXSA9PT0gJ3onKSB7XG4gICAgICAgIGZpbGxlZC5wdXNoKCdaJyk7XG4gICAgfVxuICAgIHJldHVybiBmaWxsZWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maWxsLXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/format-path.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/format-path.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatPath; });\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n }\n return result;\n}\nfunction formatPath(fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) { return arr.concat(i); }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) { return arr.concat(i); }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) { return arr.concat(i); }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n}\n//# sourceMappingURL=format-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9mb3JtYXQtcGF0aC5qcz9hMzlkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQWdGLHNCQUFzQixFQUFFO0FBQ3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRkFBZ0Ysc0JBQXNCLEVBQUU7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUFnRixzQkFBc0IsRUFBRTtBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9mb3JtYXQtcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiDmir3lj5ZwYXRoU2VnbWVudOS4reeahOWFs+mUrueCuVxuICogTSxMLEEsUSxILFbkuIDkuKrnq6/ngrlcbiAqIFEsIFPmir3lj5bkuIDkuKrnq6/ngrnvvIzkuIDkuKrmjqfliLbngrlcbiAqIEPmir3lj5bkuIDkuKrnq6/ngrnvvIzkuKTkuKrmjqfliLbngrlcbiAqL1xuZnVuY3Rpb24gX2dldFNlZ21lbnRQb2ludHMoc2VnbWVudCkge1xuICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICBzd2l0Y2ggKHNlZ21lbnRbMF0pIHtcbiAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzZdLCBzZWdtZW50WzddXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFszXSwgc2VnbWVudFs0XV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdUJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQyc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFs1XSwgc2VnbWVudFs2XV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzNdLCBzZWdtZW50WzRdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFszXSwgc2VnbWVudFs0XV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzFdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsxXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICAgIHJldHVybiBwb2ludHM7XG59XG4vLyDlsIbkuKTkuKrngrnlnYfliIbmiJBjb3VudOS4queCuVxuZnVuY3Rpb24gX3NwbGl0UG9pbnRzKHBvaW50cywgZm9ybWVyLCBjb3VudCkge1xuICAgIHZhciByZXN1bHQgPSBbXS5jb25jYXQocG9pbnRzKTtcbiAgICB2YXIgaW5kZXg7XG4gICAgdmFyIHQgPSAxIC8gKGNvdW50ICsgMSk7XG4gICAgdmFyIGZvcm1lckVuZCA9IF9nZXRTZWdtZW50UG9pbnRzKGZvcm1lcilbMF07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xuICAgICAgICB0ICo9IGk7XG4gICAgICAgIGluZGV4ID0gTWF0aC5mbG9vcihwb2ludHMubGVuZ3RoICogdCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmVzdWx0LnVuc2hpZnQoW2Zvcm1lckVuZFswXSAqIHQgKyBwb2ludHNbaW5kZXhdWzBdICogKDEgLSB0KSwgZm9ybWVyRW5kWzFdICogdCArIHBvaW50c1tpbmRleF1bMV0gKiAoMSAtIHQpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQuc3BsaWNlKGluZGV4LCAwLCBbZm9ybWVyRW5kWzBdICogdCArIHBvaW50c1tpbmRleF1bMF0gKiAoMSAtIHQpLCBmb3JtZXJFbmRbMV0gKiB0ICsgcG9pbnRzW2luZGV4XVsxXSAqICgxIC0gdCldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0UGF0aChmcm9tUGF0aCwgdG9QYXRoKSB7XG4gICAgaWYgKGZyb21QYXRoLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBmcm9tUGF0aDtcbiAgICB9XG4gICAgdmFyIHBvaW50cztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZnJvbVBhdGhbaV1bMF0gIT09IHRvUGF0aFtpXVswXSkge1xuICAgICAgICAgICAgLy8g6I635Y+WZnJvbVBhdGjnmoRwYXRoU2VnbWVudOeahOerr+eCue+8jOagueaNrnRvUGF0aOeahOaMh+S7pOWvueWFtuaUuemAoFxuICAgICAgICAgICAgcG9pbnRzID0gX2dldFNlZ21lbnRQb2ludHMoZnJvbVBhdGhbaV0pO1xuICAgICAgICAgICAgc3dpdGNoICh0b1BhdGhbaV1bMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ00nXS5jb25jYXQocG9pbnRzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydMJ10uY29uY2F0KHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFtdLmNvbmNhdCh0b1BhdGhbaV0pO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXVs2XSA9IHBvaW50c1swXVswXTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV1bN10gPSBwb2ludHNbMF1bMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IF9zcGxpdFBvaW50cyhwb2ludHMsIGZyb21QYXRoW2kgLSAxXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnUSddLmNvbmNhdChwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhcnIsIGkpIHsgcmV0dXJuIGFyci5jb25jYXQoaSk7IH0sIFtdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnVCddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ0MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7IHJldHVybiBhcnIuY29uY2F0KGkpOyB9LCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ1MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7IHJldHVybiBhcnIuY29uY2F0KGkpOyB9LCBbXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IHRvUGF0aFtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnJvbVBhdGg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3JtYXQtcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/format-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-arc-params.js": /*!************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-arc-params.js ***! \************************************************************************************/ /*! exports provided: isSamePoint, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSamePoint\", function() { return isSamePoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getArcParams; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=get-arc-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9nZXQtYXJjLXBhcmFtcy5qcz8zYWFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBLG9CQUFvQixzREFBRyxDQUFDLDJEQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfcGF0aC11dGlsQDIuMC4xNUBAYW50di9wYXRoLXV0aWwvZXNtL2dldC1hcmMtcGFyYW1zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kLCB0b1JhZGlhbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLy8g5ZCR6YeP6ZW/5bqmXG5mdW5jdGlvbiB2TWFnKHYpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHZbMF0gKiB2WzBdICsgdlsxXSAqIHZbMV0pO1xufVxuLy8gdS52L3x1fHx2fO+8jOiuoeeul+WkueinkueahOS9meW8puWAvFxuZnVuY3Rpb24gdlJhdGlvKHUsIHYpIHtcbiAgICAvLyDlvZPlrZjlnKjkuIDkuKrlkJHph4/nmoTplb/luqbkuLogMCDml7bvvIzlpLnop5LkuZ/kuLogMO+8jOWNs+WkueinkueahOS9meW8puWAvOS4uiAxXG4gICAgcmV0dXJuIHZNYWcodSkgKiB2TWFnKHYpID8gKHVbMF0gKiB2WzBdICsgdVsxXSAqIHZbMV0pIC8gKHZNYWcodSkgKiB2TWFnKHYpKSA6IDE7XG59XG4vLyDlkJHph4/op5LluqZcbmZ1bmN0aW9uIHZBbmdsZSh1LCB2KSB7XG4gICAgcmV0dXJuICh1WzBdICogdlsxXSA8IHVbMV0gKiB2WzBdID8gLTEgOiAxKSAqIE1hdGguYWNvcyh2UmF0aW8odSwgdikpO1xufVxuLyoqXG4gKiDliKTmlq3kuKTkuKrngrnmmK/lkKbph43lkIjvvIzngrnlnZDmoIfnmoTmoLzlvI/kuLogW3gsIHldXG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludDEg56ys5LiA5Liq54K5XG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludDIg56ys5LqM5Liq54K5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVQb2ludChwb2ludDEsIHBvaW50Mikge1xuICAgIHJldHVybiBwb2ludDFbMF0gPT09IHBvaW50MlswXSAmJiBwb2ludDFbMV0gPT09IHBvaW50MlsxXTtcbn1cbi8vIEEgMDpyeCAxOnJ5IDI6eC1heGlzLXJvdGF0aW9uIDM6bGFyZ2UtYXJjLWZsYWcgNDpzd2VlcC1mbGFnIDU6IHggNjogeVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QXJjUGFyYW1zKHN0YXJ0UG9pbnQsIHBhcmFtcykge1xuICAgIHZhciByeCA9IHBhcmFtc1sxXTtcbiAgICB2YXIgcnkgPSBwYXJhbXNbMl07XG4gICAgdmFyIHhSb3RhdGlvbiA9IG1vZCh0b1JhZGlhbihwYXJhbXNbM10pLCBNYXRoLlBJICogMik7XG4gICAgdmFyIGFyY0ZsYWcgPSBwYXJhbXNbNF07XG4gICAgdmFyIHN3ZWVwRmxhZyA9IHBhcmFtc1s1XTtcbiAgICAvLyDlvKflvaLotbfngrnlnZDmoIdcbiAgICB2YXIgeDEgPSBzdGFydFBvaW50WzBdO1xuICAgIHZhciB5MSA9IHN0YXJ0UG9pbnRbMV07XG4gICAgLy8g5byn5b2i57uI54K55Z2Q5qCHXG4gICAgdmFyIHgyID0gcGFyYW1zWzZdO1xuICAgIHZhciB5MiA9IHBhcmFtc1s3XTtcbiAgICB2YXIgeHAgPSAoTWF0aC5jb3MoeFJvdGF0aW9uKSAqICh4MSAtIHgyKSkgLyAyLjAgKyAoTWF0aC5zaW4oeFJvdGF0aW9uKSAqICh5MSAtIHkyKSkgLyAyLjA7XG4gICAgdmFyIHlwID0gKC0xICogTWF0aC5zaW4oeFJvdGF0aW9uKSAqICh4MSAtIHgyKSkgLyAyLjAgKyAoTWF0aC5jb3MoeFJvdGF0aW9uKSAqICh5MSAtIHkyKSkgLyAyLjA7XG4gICAgdmFyIGxhbWJkYSA9ICh4cCAqIHhwKSAvIChyeCAqIHJ4KSArICh5cCAqIHlwKSAvIChyeSAqIHJ5KTtcbiAgICBpZiAobGFtYmRhID4gMSkge1xuICAgICAgICByeCAqPSBNYXRoLnNxcnQobGFtYmRhKTtcbiAgICAgICAgcnkgKj0gTWF0aC5zcXJ0KGxhbWJkYSk7XG4gICAgfVxuICAgIHZhciBkaWZmID0gcnggKiByeCAqICh5cCAqIHlwKSArIHJ5ICogcnkgKiAoeHAgKiB4cCk7XG4gICAgdmFyIGYgPSBkaWZmID8gTWF0aC5zcXJ0KChyeCAqIHJ4ICogKHJ5ICogcnkpIC0gZGlmZikgLyBkaWZmKSA6IDE7XG4gICAgaWYgKGFyY0ZsYWcgPT09IHN3ZWVwRmxhZykge1xuICAgICAgICBmICo9IC0xO1xuICAgIH1cbiAgICBpZiAoaXNOYU4oZikpIHtcbiAgICAgICAgZiA9IDA7XG4gICAgfVxuICAgIC8vIOaXi+i9rOWJjeeahOi1t+eCueWdkOagh++8jOS4lOW9k+mVv+WNiui9tOWSjOefreWNiui9tOeahOmVv+W6puS4uiAwIOaXtu+8jOWdkOagh+aMiSAoMCwgMCkg5aSE55CGXG4gICAgdmFyIGN4cCA9IHJ5ID8gKGYgKiByeCAqIHlwKSAvIHJ5IDogMDtcbiAgICB2YXIgY3lwID0gcnggPyAoZiAqIC1yeSAqIHhwKSAvIHJ4IDogMDtcbiAgICAvLyDmpK3lnIblnIblv4PlnZDmoIdcbiAgICB2YXIgY3ggPSAoeDEgKyB4MikgLyAyLjAgKyBNYXRoLmNvcyh4Um90YXRpb24pICogY3hwIC0gTWF0aC5zaW4oeFJvdGF0aW9uKSAqIGN5cDtcbiAgICB2YXIgY3kgPSAoeTEgKyB5MikgLyAyLjAgKyBNYXRoLnNpbih4Um90YXRpb24pICogY3hwICsgTWF0aC5jb3MoeFJvdGF0aW9uKSAqIGN5cDtcbiAgICAvLyDotbflp4vngrnnmoTljZXkvY3lkJHph49cbiAgICB2YXIgdSA9IFsoeHAgLSBjeHApIC8gcngsICh5cCAtIGN5cCkgLyByeV07XG4gICAgLy8g57uI5q2i54K555qE5Y2V5L2N5ZCR6YePXG4gICAgdmFyIHYgPSBbKC0xICogeHAgLSBjeHApIC8gcngsICgtMSAqIHlwIC0gY3lwKSAvIHJ5XTtcbiAgICAvLyDorqHnrpfotbflp4vngrnlkozlnIblv4PnmoTov57nur/vvIzkuI4geCDovbTmraPmlrnlkJHnmoTlpLnop5JcbiAgICB2YXIgdGhldGEgPSB2QW5nbGUoWzEsIDBdLCB1KTtcbiAgICAvLyDorqHnrpflnIblvKfotbflp4vngrnlkoznu4jmraLngrnkuI7mpK3lnIblnIblv4Pov57nur/nmoTlpLnop5JcbiAgICB2YXIgZFRoZXRhID0gdkFuZ2xlKHUsIHYpO1xuICAgIGlmICh2UmF0aW8odSwgdikgPD0gLTEpIHtcbiAgICAgICAgZFRoZXRhID0gTWF0aC5QSTtcbiAgICB9XG4gICAgaWYgKHZSYXRpbyh1LCB2KSA+PSAxKSB7XG4gICAgICAgIGRUaGV0YSA9IDA7XG4gICAgfVxuICAgIGlmIChzd2VlcEZsYWcgPT09IDAgJiYgZFRoZXRhID4gMCkge1xuICAgICAgICBkVGhldGEgPSBkVGhldGEgLSAyICogTWF0aC5QSTtcbiAgICB9XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMSAmJiBkVGhldGEgPCAwKSB7XG4gICAgICAgIGRUaGV0YSA9IGRUaGV0YSArIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBjeDogY3gsXG4gICAgICAgIGN5OiBjeSxcbiAgICAgICAgLy8g5byn5b2i55qE6LW354K55ZKM57uI54K555u45ZCM5pe277yM6ZW/6L205ZKM55+t6L2055qE6ZW/5bqm5oyJIDAg5aSE55CGXG4gICAgICAgIHJ4OiBpc1NhbWVQb2ludChzdGFydFBvaW50LCBbeDIsIHkyXSkgPyAwIDogcngsXG4gICAgICAgIHJ5OiBpc1NhbWVQb2ludChzdGFydFBvaW50LCBbeDIsIHkyXSkgPyAwIDogcnksXG4gICAgICAgIHN0YXJ0QW5nbGU6IHRoZXRhLFxuICAgICAgICBlbmRBbmdsZTogdGhldGEgKyBkVGhldGEsXG4gICAgICAgIHhSb3RhdGlvbjogeFJvdGF0aW9uLFxuICAgICAgICBhcmNGbGFnOiBhcmNGbGFnLFxuICAgICAgICBzd2VlcEZsYWc6IHN3ZWVwRmxhZyxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LWFyYy1wYXJhbXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-arc-params.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-line-intersect.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-line-intersect.js ***! \****************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getLineIntersect; });\nvar isBetween = function (value, min, max) { return value >= min && value <= max; };\nfunction getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y,\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y,\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y,\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n var point = null;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) / kross;\n var t = (E.x * D0.y - E.y * D0.x) / kross;\n if (isBetween(s, 0, 1) && isBetween(t, 0, 1)) {\n point = {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y,\n };\n }\n }\n return point;\n}\n;\n//# sourceMappingURL=get-line-intersect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9nZXQtbGluZS1pbnRlcnNlY3QuanM/NzI5MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUEsNENBQTRDLHFDQUFxQztBQUNsRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9nZXQtbGluZS1pbnRlcnNlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNCZXR3ZWVuID0gZnVuY3Rpb24gKHZhbHVlLCBtaW4sIG1heCkgeyByZXR1cm4gdmFsdWUgPj0gbWluICYmIHZhbHVlIDw9IG1heDsgfTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExpbmVJbnRlcnNlY3QocDAsIHAxLCBwMiwgcDMpIHtcbiAgICB2YXIgdG9sZXJhbmNlID0gMC4wMDE7XG4gICAgdmFyIEUgPSB7XG4gICAgICAgIHg6IHAyLnggLSBwMC54LFxuICAgICAgICB5OiBwMi55IC0gcDAueSxcbiAgICB9O1xuICAgIHZhciBEMCA9IHtcbiAgICAgICAgeDogcDEueCAtIHAwLngsXG4gICAgICAgIHk6IHAxLnkgLSBwMC55LFxuICAgIH07XG4gICAgdmFyIEQxID0ge1xuICAgICAgICB4OiBwMy54IC0gcDIueCxcbiAgICAgICAgeTogcDMueSAtIHAyLnksXG4gICAgfTtcbiAgICB2YXIga3Jvc3MgPSBEMC54ICogRDEueSAtIEQwLnkgKiBEMS54O1xuICAgIHZhciBzcXJLcm9zcyA9IGtyb3NzICoga3Jvc3M7XG4gICAgdmFyIHNxckxlbjAgPSBEMC54ICogRDAueCArIEQwLnkgKiBEMC55O1xuICAgIHZhciBzcXJMZW4xID0gRDEueCAqIEQxLnggKyBEMS55ICogRDEueTtcbiAgICB2YXIgcG9pbnQgPSBudWxsO1xuICAgIGlmIChzcXJLcm9zcyA+IHRvbGVyYW5jZSAqIHNxckxlbjAgKiBzcXJMZW4xKSB7XG4gICAgICAgIHZhciBzID0gKEUueCAqIEQxLnkgLSBFLnkgKiBEMS54KSAvIGtyb3NzO1xuICAgICAgICB2YXIgdCA9IChFLnggKiBEMC55IC0gRS55ICogRDAueCkgLyBrcm9zcztcbiAgICAgICAgaWYgKGlzQmV0d2VlbihzLCAwLCAxKSAmJiBpc0JldHdlZW4odCwgMCwgMSkpIHtcbiAgICAgICAgICAgIHBvaW50ID0ge1xuICAgICAgICAgICAgICAgIHg6IHAwLnggKyBzICogRDAueCxcbiAgICAgICAgICAgICAgICB5OiBwMC55ICsgcyAqIEQwLnksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwb2ludDtcbn1cbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1saW5lLWludGVyc2VjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-line-intersect.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js ***! \***************************************************************************/ /*! exports provided: parsePath, catmullRom2Bezier, fillPath, fillPathByDiff, formatPath, pathIntersection, parsePathArray, parsePathString, path2Curve, path2Absolute, reactPath, getArcParams, path2Segments, getLineIntersect, isPolygonsIntersect, isPointInPolygon */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return _parse_path__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _catmull_rom_2_bezier__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmull-rom-2-bezier */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/catmull-rom-2-bezier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"catmullRom2Bezier\", function() { return _catmull_rom_2_bezier__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _fill_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fill-path */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fillPath\", function() { return _fill_path__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _fill_path_by_diff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fill-path-by-diff */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/fill-path-by-diff.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fillPathByDiff\", function() { return _fill_path_by_diff__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _format_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./format-path */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/format-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPath\", function() { return _format_path__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _path_intersection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./path-intersection */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-intersection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pathIntersection\", function() { return _path_intersection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _parse_path_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parse-path-array */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parsePathArray\", function() { return _parse_path_array__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _parse_path_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./parse-path-string */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parsePathString\", function() { return _parse_path_string__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _path_2_curve__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./path-2-curve */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-curve.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path2Curve\", function() { return _path_2_curve__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _path_2_absolute__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./path-2-absolute */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-absolute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path2Absolute\", function() { return _path_2_absolute__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _rect_path__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rect-path */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/rect-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reactPath\", function() { return _rect_path__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _get_arc_params__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./get-arc-params */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-arc-params.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArcParams\", function() { return _get_arc_params__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _path_2_segments__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./path-2-segments */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-segments.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"path2Segments\", function() { return _path_2_segments__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _get_line_intersect__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./get-line-intersect */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-line-intersect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLineIntersect\", function() { return _get_line_intersect__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _is_polygons_intersect__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./is-polygons-intersect */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/is-polygons-intersect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPolygonsIntersect\", function() { return _is_polygons_intersect__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _point_in_polygon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./point-in-polygon */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/point-in-polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPointInPolygon\", function() { return _point_in_polygon__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9pbmRleC5qcz9mZDVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQ2tCO0FBQ3BCO0FBQ2M7QUFDVjtBQUNZO0FBQ0g7QUFDRTtBQUNWO0FBQ007QUFDVjtBQUNRO0FBQ0U7QUFDTTtBQUNNO0FBQ1I7QUFDakUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VQYXRoIH0gZnJvbSAnLi9wYXJzZS1wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2F0bXVsbFJvbTJCZXppZXIgfSBmcm9tICcuL2NhdG11bGwtcm9tLTItYmV6aWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsbFBhdGggfSBmcm9tICcuL2ZpbGwtcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbGxQYXRoQnlEaWZmIH0gZnJvbSAnLi9maWxsLXBhdGgtYnktZGlmZic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZvcm1hdFBhdGggfSBmcm9tICcuL2Zvcm1hdC1wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGF0aEludGVyc2VjdGlvbiB9IGZyb20gJy4vcGF0aC1pbnRlcnNlY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZVBhdGhBcnJheSB9IGZyb20gJy4vcGFyc2UtcGF0aC1hcnJheSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhcnNlUGF0aFN0cmluZyB9IGZyb20gJy4vcGFyc2UtcGF0aC1zdHJpbmcnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXRoMkN1cnZlIH0gZnJvbSAnLi9wYXRoLTItY3VydmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXRoMkFic29sdXRlIH0gZnJvbSAnLi9wYXRoLTItYWJzb2x1dGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWFjdFBhdGggfSBmcm9tICcuL3JlY3QtcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEFyY1BhcmFtcyB9IGZyb20gJy4vZ2V0LWFyYy1wYXJhbXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXRoMlNlZ21lbnRzIH0gZnJvbSAnLi9wYXRoLTItc2VnbWVudHMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRMaW5lSW50ZXJzZWN0IH0gZnJvbSAnLi9nZXQtbGluZS1pbnRlcnNlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1BvbHlnb25zSW50ZXJzZWN0IH0gZnJvbSAnLi9pcy1wb2x5Z29ucy1pbnRlcnNlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1BvaW50SW5Qb2x5Z29uIH0gZnJvbSAnLi9wb2ludC1pbi1wb2x5Z29uJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/is-polygons-intersect.js": /*!*******************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/is-polygons-intersect.js ***! \*******************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isPolygonsIntersect; });\n/* harmony import */ var _point_in_polygon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./point-in-polygon */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/point-in-polygon.js\");\n/* harmony import */ var _get_line_intersect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-line-intersect */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-line-intersect.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\nfunction parseToLines(points) {\n var lines = [];\n var count = points.length;\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n return lines;\n}\nfunction lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(lines, function (l) {\n if (Object(_get_line_intersect__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\nfunction getBBox(points) {\n var xArr = points.map(function (p) { return p[0]; });\n var yArr = points.map(function (p) { return p[1]; });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n}\nfunction intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\nfunction isPolygonsIntersect(points1, points2) {\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n var isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points2, function (point) {\n if (Object(_point_in_polygon__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n // 两个多边形都需要判定\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points1, function (point) {\n if (Object(_point_in_polygon__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\n//# sourceMappingURL=is-polygons-intersect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9pcy1wb2x5Z29ucy1pbnRlcnNlY3QuanM/ZDk5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0U7QUFDbEI7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUixZQUFZLG1FQUFnQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGFBQWEsRUFBRTtBQUN2RCx3Q0FBd0MsYUFBYSxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1IsWUFBWSxpRUFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLFlBQVksaUVBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9wYXRoLXV0aWxAMi4wLjE1QEBhbnR2L3BhdGgtdXRpbC9lc20vaXMtcG9seWdvbnMtaW50ZXJzZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzUG9pbnRJblBvbHlnb24gZnJvbSAnLi9wb2ludC1pbi1wb2x5Z29uJztcbmltcG9ydCBnZXRMaW5lSW50ZXJzZWN0IGZyb20gJy4vZ2V0LWxpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmZ1bmN0aW9uIHBhcnNlVG9MaW5lcyhwb2ludHMpIHtcbiAgICB2YXIgbGluZXMgPSBbXTtcbiAgICB2YXIgY291bnQgPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgbmV4dCA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICAgICAgZnJvbToge1xuICAgICAgICAgICAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgICAgICAgICAgIHk6IHBvaW50WzFdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB4OiBuZXh0WzBdLFxuICAgICAgICAgICAgICAgIHk6IG5leHRbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChsaW5lcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHZhciBmaXJzdCA9IHBvaW50c1swXTtcbiAgICAgICAgdmFyIGxhc3QgPSBwb2ludHNbY291bnQgLSAxXTtcbiAgICAgICAgbGluZXMucHVzaCh7XG4gICAgICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgICAgICAgeDogbGFzdFswXSxcbiAgICAgICAgICAgICAgICB5OiBsYXN0WzFdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG86IHtcbiAgICAgICAgICAgICAgICB4OiBmaXJzdFswXSxcbiAgICAgICAgICAgICAgICB5OiBmaXJzdFsxXVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuZnVuY3Rpb24gbGluZUludGVyc2VjdFBvbHlnb24obGluZXMsIGxpbmUpIHtcbiAgICB2YXIgaXNJbnRlcnNlY3QgPSBmYWxzZTtcbiAgICBlYWNoKGxpbmVzLCBmdW5jdGlvbiAobCkge1xuICAgICAgICBpZiAoZ2V0TGluZUludGVyc2VjdChsLmZyb20sIGwudG8sIGxpbmUuZnJvbSwgbGluZS50bykpIHtcbiAgICAgICAgICAgIGlzSW50ZXJzZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc0ludGVyc2VjdDtcbn1cbmZ1bmN0aW9uIGdldEJCb3gocG9pbnRzKSB7XG4gICAgdmFyIHhBcnIgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwWzBdOyB9KTtcbiAgICB2YXIgeUFyciA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHBbMV07IH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IE1hdGgubWluLmFwcGx5KG51bGwsIHhBcnIpLFxuICAgICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShudWxsLCB4QXJyKSxcbiAgICAgICAgbWluWTogTWF0aC5taW4uYXBwbHkobnVsbCwgeUFyciksXG4gICAgICAgIG1heFk6IE1hdGgubWF4LmFwcGx5KG51bGwsIHlBcnIpXG4gICAgfTtcbn1cbmZ1bmN0aW9uIGludGVyc2VjdEJCb3goYm94MSwgYm94Mikge1xuICAgIHJldHVybiAhKGJveDIubWluWCA+IGJveDEubWF4WCB8fCBib3gyLm1heFggPCBib3gxLm1pblggfHwgYm94Mi5taW5ZID4gYm94MS5tYXhZIHx8IGJveDIubWF4WSA8IGJveDEubWluWSk7XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvaW50czEsIHBvaW50czIpIHtcbiAgICAvLyDnqbrmlbDnu4TvvIzmiJbogIXkuIDkuKrngrnov5Tlm54gZmFsc2VcbiAgICBpZiAocG9pbnRzMS5sZW5ndGggPCAyIHx8IHBvaW50czIubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBiYm94MSA9IGdldEJCb3gocG9pbnRzMSk7XG4gICAgdmFyIGJib3gyID0gZ2V0QkJveChwb2ludHMyKTtcbiAgICAvLyDliKTlrprljIXlm7Tnm5LmmK/lkKbnm7jkuqTvvIzmr5TliKTlrprngrnmmK/lkKblnKjlpJrovrnlvaLlhoXopoHlv6vnmoTlpJrvvIzlj6/ku6XnrZvpgInmjonlpKflpJrmlbDmg4XlhrVcbiAgICBpZiAoIWludGVyc2VjdEJCb3goYmJveDEsIGJib3gyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBpc0luID0gZmFsc2U7XG4gICAgLy8g5Yik5a6a54K55piv5ZCm5Zyo5aSa6L655b2i5YaF6YOo77yM5LiA5pem5pyJ5LiA5Liq54K55Zyo5Y+m5LiA5Liq5aSa6L655b2i5YaF77yM5YiZ6L+U5ZueXG4gICAgZWFjaChwb2ludHMyLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24ocG9pbnRzMSwgcG9pbnRbMF0sIHBvaW50WzFdKSkge1xuICAgICAgICAgICAgaXNJbiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNJbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8g5Lik5Liq5aSa6L655b2i6YO96ZyA6KaB5Yik5a6aXG4gICAgZWFjaChwb2ludHMxLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICAgICAgaWYgKGlzUG9pbnRJblBvbHlnb24ocG9pbnRzMiwgcG9pbnRbMF0sIHBvaW50WzFdKSkge1xuICAgICAgICAgICAgaXNJbiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNJbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGxpbmVzMSA9IHBhcnNlVG9MaW5lcyhwb2ludHMxKTtcbiAgICB2YXIgbGluZXMyID0gcGFyc2VUb0xpbmVzKHBvaW50czIpO1xuICAgIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICAgIGVhY2gobGluZXMyLCBmdW5jdGlvbiAobGluZSkge1xuICAgICAgICBpZiAobGluZUludGVyc2VjdFBvbHlnb24obGluZXMxLCBsaW5lKSkge1xuICAgICAgICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzSW50ZXJzZWN0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtcG9seWdvbnMtaW50ZXJzZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/is-polygons-intersect.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-array.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-array.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return parsePathArray; });\nvar p2s = /,?([a-z]),?/gi;\nfunction parsePathArray(path) {\n return path.join(',').replace(p2s, '$1');\n}\n//# sourceMappingURL=parse-path-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLWFycmF5LmpzPzM2ZDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLWFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHAycyA9IC8sPyhbYS16XSksPy9naTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlUGF0aEFycmF5KHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKCcsJykucmVwbGFjZShwMnMsICckMScpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC1hcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-array.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-string.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-string.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return parsePathString; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nvar PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n// Parses given path string into an array of arrays of path segments\nfunction parsePathString(pathString) {\n if (!pathString) {\n return null;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n return data;\n}\n//# sourceMappingURL=parse-path-string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLXN0cmluZy5qcz85M2M4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLXN0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBTUEFDRVMgPSAnXFx4MDlcXHgwYVxceDBiXFx4MGNcXHgwZFxceDIwXFx4YTBcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwXFx1MjAyOFxcdTIwMjknO1xudmFyIFBBVEhfQ09NTUFORCA9IG5ldyBSZWdFeHAoJyhbYS16XSlbJyArIFNQQUNFUyArICcsXSooKC0/XFxcXGQqXFxcXC4/XFxcXGQqKD86ZVtcXFxcLStdP1xcXFxkKyk/WycgKyBTUEFDRVMgKyAnXSosP1snICsgU1BBQ0VTICsgJ10qKSspJywgJ2lnJyk7XG52YXIgUEFUSF9WQUxVRVMgPSBuZXcgUmVnRXhwKCcoLT9cXFxcZCpcXFxcLj9cXFxcZCooPzplW1xcXFwtK10/XFxcXGQrKT8pWycgKyBTUEFDRVMgKyAnXSosP1snICsgU1BBQ0VTICsgJ10qJywgJ2lnJyk7XG4vLyBQYXJzZXMgZ2l2ZW4gcGF0aCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBhcnJheXMgb2YgcGF0aCBzZWdtZW50c1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VQYXRoU3RyaW5nKHBhdGhTdHJpbmcpIHtcbiAgICBpZiAoIXBhdGhTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHBhdGhTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBwYXRoU3RyaW5nO1xuICAgIH1cbiAgICB2YXIgcGFyYW1Db3VudHMgPSB7XG4gICAgICAgIGE6IDcsXG4gICAgICAgIGM6IDYsXG4gICAgICAgIG86IDIsXG4gICAgICAgIGg6IDEsXG4gICAgICAgIGw6IDIsXG4gICAgICAgIG06IDIsXG4gICAgICAgIHI6IDQsXG4gICAgICAgIHE6IDQsXG4gICAgICAgIHM6IDQsXG4gICAgICAgIHQ6IDIsXG4gICAgICAgIHY6IDEsXG4gICAgICAgIHU6IDMsXG4gICAgICAgIHo6IDAsXG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IFtdO1xuICAgIFN0cmluZyhwYXRoU3RyaW5nKS5yZXBsYWNlKFBBVEhfQ09NTUFORCwgZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgICAgICB2YXIgbmFtZSA9IGIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgYy5yZXBsYWNlKFBBVEhfVkFMVUVTLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgYiAmJiBwYXJhbXMucHVzaCgrYik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ20nICYmIHBhcmFtcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goW2JdLmNvbmNhdChwYXJhbXMuc3BsaWNlKDAsIDIpKSk7XG4gICAgICAgICAgICBuYW1lID0gJ2wnO1xuICAgICAgICAgICAgYiA9IGIgPT09ICdtJyA/ICdsJyA6ICdMJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ28nICYmIHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGRhdGEucHVzaChbYiwgcGFyYW1zWzBdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09ICdyJykge1xuICAgICAgICAgICAgZGF0YS5wdXNoKFtiXS5jb25jYXQocGFyYW1zKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAocGFyYW1zLmxlbmd0aCA+PSBwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChbYl0uY29uY2F0KHBhcmFtcy5zcGxpY2UoMCwgcGFyYW1Db3VudHNbbmFtZV0pKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbUNvdW50c1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC1zdHJpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-string.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nvar regexDot = /[^\\s\\,]+/ig;\nfunction parsePath(p) {\n var path = p || [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n return path;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(path)) {\n path = path.match(regexTags);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(path, function (item, index) {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (parsePath);\n//# sourceMappingURL=parse-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXJzZS1wYXRoLmpzP2FiNmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDZSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9wYXRoLXV0aWxAMi4wLjE1QEBhbnR2L3BhdGgtdXRpbC9lc20vcGFyc2UtcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVhY2gsIGlzQXJyYXksIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgcmVnZXhUYWdzID0gL1tNTEhWUVRDU0FaXShbXk1MSFZRVENTQVpdKikvaWc7XG52YXIgcmVnZXhEb3QgPSAvW15cXHNcXCxdKy9pZztcbmZ1bmN0aW9uIHBhcnNlUGF0aChwKSB7XG4gICAgdmFyIHBhdGggPSBwIHx8IFtdO1xuICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgcGF0aCA9IHBhdGgubWF0Y2gocmVnZXhUYWdzKTtcbiAgICAgICAgZWFjaChwYXRoLCBmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLm1hdGNoKHJlZ2V4RG90KTtcbiAgICAgICAgICAgIGlmIChpdGVtWzBdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFnID0gaXRlbVswXS5jaGFyQXQoMCk7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGl0ZW0uc3BsaWNlKDEsIDAsIGl0ZW1bMF0uc3Vic3RyKDEpKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgaXRlbVswXSA9IHRhZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGVhY2goaXRlbSwgZnVuY3Rpb24gKHN1YiwgaSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oc3ViKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1baV0gPSArc3ViO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcGF0aFtpbmRleF0gPSBpdGVtO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgcGFyc2VQYXRoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UtcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-absolute.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-absolute.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pathToAbsolute; });\n/* harmony import */ var _parse_path_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse-path-string */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path-string.js\");\n\nvar REGEX_MD = /[a-z]/;\nfunction toSymmetry(p, c) {\n return [\n c[0] + (c[0] - p[0]),\n c[1] + (c[1] - p[1]),\n ];\n}\nfunction pathToAbsolute(pathString) {\n var pathArray = Object(_parse_path_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(pathString);\n if (!pathArray || !pathArray.length) {\n return [\n ['M', 0, 0],\n ];\n }\n var needProcess = false; // 如果存在小写的命令或者 V,H,T,S 则需要处理\n for (var i = 0; i < pathArray.length; i++) {\n var cmd = pathArray[i][0];\n // 如果存在相对位置的命令,则中断返回\n if (REGEX_MD.test(cmd) || ['V', 'H', 'T', 'S'].indexOf(cmd) >= 0) {\n needProcess = true;\n break;\n }\n }\n // 如果不存在相对命令,则直接返回\n // 如果在业务上都写绝对路径,这种方式最快,仅做了一次检测\n if (!needProcess) {\n return pathArray;\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n var first = pathArray[0];\n if (first[0] === 'M' || first[0] === 'm') {\n x = +first[1];\n y = +first[2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var pa = pathArray[i];\n var preParams = res[i - 1]; // 取前一个已经处理后的节点,否则会出现问题\n var r = [];\n var cmd = pa[0];\n var upCmd = cmd.toUpperCase();\n if (cmd !== upCmd) {\n r[0] = upCmd;\n switch (upCmd) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n r[1] = mx;\n r[2] = my;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + ((j % 2) ? x : y);\n }\n }\n }\n else { // 如果本来已经大写,则不处理\n r = pathArray[i];\n }\n // 需要在外面统一做,同时处理 V,H,S,T 等特殊指令\n switch (upCmd) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n r = ['L', x, y];\n break;\n case 'V':\n y = r[1];\n r = ['L', x, y];\n break;\n case 'T':\n x = r[1];\n y = r[2];\n // 以 x, y 为中心的,上一个控制点的对称点\n // 需要假设上一个节点的命令为 Q\n var symetricT = toSymmetry([preParams[1], preParams[2]], [preParams[3], preParams[4]]);\n r = ['Q', symetricT[0], symetricT[1], x, y];\n break;\n case 'S':\n x = r[r.length - 2];\n y = r[r.length - 1];\n // 以 x,y 为中心,取上一个控制点,\n // 需要假设上一个线段为 C 或者 S\n var length_1 = preParams.length;\n var symetricS = toSymmetry([preParams[length_1 - 4], preParams[length_1 - 3]], [preParams[length_1 - 2], preParams[length_1 - 1]]);\n r = ['C', symetricS[0], symetricS[1], r[1], r[2], x, y];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n res.push(r);\n }\n return res;\n}\n//# sourceMappingURL=path-2-absolute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItYWJzb2x1dGUuanM/ODI1OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLG9CQUFvQixrRUFBZTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxtREFBbUQsUUFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9wYXRoLXV0aWxAMi4wLjE1QEBhbnR2L3BhdGgtdXRpbC9lc20vcGF0aC0yLWFic29sdXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcnNlUGF0aFN0cmluZyBmcm9tICcuL3BhcnNlLXBhdGgtc3RyaW5nJztcbnZhciBSRUdFWF9NRCA9IC9bYS16XS87XG5mdW5jdGlvbiB0b1N5bW1ldHJ5KHAsIGMpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBjWzBdICsgKGNbMF0gLSBwWzBdKSxcbiAgICAgICAgY1sxXSArIChjWzFdIC0gcFsxXSksXG4gICAgXTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhdGhUb0Fic29sdXRlKHBhdGhTdHJpbmcpIHtcbiAgICB2YXIgcGF0aEFycmF5ID0gcGFyc2VQYXRoU3RyaW5nKHBhdGhTdHJpbmcpO1xuICAgIGlmICghcGF0aEFycmF5IHx8ICFwYXRoQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCAwLCAwXSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIG5lZWRQcm9jZXNzID0gZmFsc2U7IC8vIOWmguaenOWtmOWcqOWwj+WGmeeahOWRveS7pOaIluiAhSBWLEgsVCxTIOWImemcgOimgeWkhOeQhlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjbWQgPSBwYXRoQXJyYXlbaV1bMF07XG4gICAgICAgIC8vIOWmguaenOWtmOWcqOebuOWvueS9jee9rueahOWRveS7pO+8jOWImeS4reaWrei/lOWbnlxuICAgICAgICBpZiAoUkVHRVhfTUQudGVzdChjbWQpIHx8IFsnVicsICdIJywgJ1QnLCAnUyddLmluZGV4T2YoY21kKSA+PSAwKSB7XG4gICAgICAgICAgICBuZWVkUHJvY2VzcyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDlpoLmnpzkuI3lrZjlnKjnm7jlr7nlkb3ku6TvvIzliJnnm7TmjqXov5Tlm55cbiAgICAvLyDlpoLmnpzlnKjkuJrliqHkuIrpg73lhpnnu53lr7not6/lvoTvvIzov5nnp43mlrnlvI/mnIDlv6vvvIzku4XlgZrkuobkuIDmrKHmo4DmtYtcbiAgICBpZiAoIW5lZWRQcm9jZXNzKSB7XG4gICAgICAgIHJldHVybiBwYXRoQXJyYXk7XG4gICAgfVxuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIHZhciBteCA9IDA7XG4gICAgdmFyIG15ID0gMDtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBwYTA7XG4gICAgdmFyIGRvdHM7XG4gICAgdmFyIGZpcnN0ID0gcGF0aEFycmF5WzBdO1xuICAgIGlmIChmaXJzdFswXSA9PT0gJ00nIHx8IGZpcnN0WzBdID09PSAnbScpIHtcbiAgICAgICAgeCA9ICtmaXJzdFsxXTtcbiAgICAgICAgeSA9ICtmaXJzdFsyXTtcbiAgICAgICAgbXggPSB4O1xuICAgICAgICBteSA9IHk7XG4gICAgICAgIHN0YXJ0Kys7XG4gICAgICAgIHJlc1swXSA9IFsnTScsIHgsIHldO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gc3RhcnQsIGlpID0gcGF0aEFycmF5Lmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgdmFyIHBhID0gcGF0aEFycmF5W2ldO1xuICAgICAgICB2YXIgcHJlUGFyYW1zID0gcmVzW2kgLSAxXTsgLy8g5Y+W5YmN5LiA5Liq5bey57uP5aSE55CG5ZCO55qE6IqC54K577yM5ZCm5YiZ5Lya5Ye6546w6Zeu6aKYXG4gICAgICAgIHZhciByID0gW107XG4gICAgICAgIHZhciBjbWQgPSBwYVswXTtcbiAgICAgICAgdmFyIHVwQ21kID0gY21kLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChjbWQgIT09IHVwQ21kKSB7XG4gICAgICAgICAgICByWzBdID0gdXBDbWQ7XG4gICAgICAgICAgICBzd2l0Y2ggKHVwQ21kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSBwYVsxXTtcbiAgICAgICAgICAgICAgICAgICAgclsyXSA9IHBhWzJdO1xuICAgICAgICAgICAgICAgICAgICByWzNdID0gcGFbM107XG4gICAgICAgICAgICAgICAgICAgIHJbNF0gPSBwYVs0XTtcbiAgICAgICAgICAgICAgICAgICAgcls1XSA9IHBhWzVdO1xuICAgICAgICAgICAgICAgICAgICByWzZdID0gK3BhWzZdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgcls3XSA9ICtwYVs3XSArIHk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1YnOlxuICAgICAgICAgICAgICAgICAgICByWzFdID0gK3BhWzFdICsgeTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSArcGFbMV0gKyB4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgbXggPSArcGFbMV0gKyB4O1xuICAgICAgICAgICAgICAgICAgICBteSA9ICtwYVsyXSArIHk7XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSBteDtcbiAgICAgICAgICAgICAgICAgICAgclsyXSA9IG15O1xuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gZm9yIGxpbnRcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMSwgamogPSBwYS5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByW2pdID0gK3BhW2pdICsgKChqICUgMikgPyB4IDogeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLy8g5aaC5p6c5pys5p2l5bey57uP5aSn5YaZ77yM5YiZ5LiN5aSE55CGXG4gICAgICAgICAgICByID0gcGF0aEFycmF5W2ldO1xuICAgICAgICB9XG4gICAgICAgIC8vIOmcgOimgeWcqOWklumdoue7n+S4gOWBmu+8jOWQjOaXtuWkhOeQhiBWLEgsUyxUIOetieeJueauiuaMh+S7pFxuICAgICAgICBzd2l0Y2ggKHVwQ21kKSB7XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICB4ID0gK214O1xuICAgICAgICAgICAgICAgIHkgPSArbXk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICB4ID0gclsxXTtcbiAgICAgICAgICAgICAgICByID0gWydMJywgeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICB5ID0gclsxXTtcbiAgICAgICAgICAgICAgICByID0gWydMJywgeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUJzpcbiAgICAgICAgICAgICAgICB4ID0gclsxXTtcbiAgICAgICAgICAgICAgICB5ID0gclsyXTtcbiAgICAgICAgICAgICAgICAvLyDku6UgeCwgeSDkuLrkuK3lv4PnmoTvvIzkuIrkuIDkuKrmjqfliLbngrnnmoTlr7nnp7DngrlcbiAgICAgICAgICAgICAgICAvLyDpnIDopoHlgYforr7kuIrkuIDkuKroioLngrnnmoTlkb3ku6TkuLogUVxuICAgICAgICAgICAgICAgIHZhciBzeW1ldHJpY1QgPSB0b1N5bW1ldHJ5KFtwcmVQYXJhbXNbMV0sIHByZVBhcmFtc1syXV0sIFtwcmVQYXJhbXNbM10sIHByZVBhcmFtc1s0XV0pO1xuICAgICAgICAgICAgICAgIHIgPSBbJ1EnLCBzeW1ldHJpY1RbMF0sIHN5bWV0cmljVFsxXSwgeCwgeV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICB4ID0gcltyLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgICAgIHkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgLy8g5LulIHgseSDkuLrkuK3lv4PvvIzlj5bkuIrkuIDkuKrmjqfliLbngrnvvIxcbiAgICAgICAgICAgICAgICAvLyDpnIDopoHlgYforr7kuIrkuIDkuKrnur/mrrXkuLogQyDmiJbogIUgU1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGhfMSA9IHByZVBhcmFtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHN5bWV0cmljUyA9IHRvU3ltbWV0cnkoW3ByZVBhcmFtc1tsZW5ndGhfMSAtIDRdLCBwcmVQYXJhbXNbbGVuZ3RoXzEgLSAzXV0sIFtwcmVQYXJhbXNbbGVuZ3RoXzEgLSAyXSwgcHJlUGFyYW1zW2xlbmd0aF8xIC0gMV1dKTtcbiAgICAgICAgICAgICAgICByID0gWydDJywgc3ltZXRyaWNTWzBdLCBzeW1ldHJpY1NbMV0sIHJbMV0sIHJbMl0sIHgsIHldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgbXggPSByW3IubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgbXkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvciBsaW50XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHggPSByW3IubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgeSA9IHJbci5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdGgtMi1hYnNvbHV0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-absolute.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-curve.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-curve.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pathToCurve; });\n/* harmony import */ var _path_2_absolute__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path-2-absolute */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-absolute.js\");\n/* harmony import */ var _process_segment_2_cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./process/segment-2-cubic */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/segment-2-cubic.js\");\n\n\nfunction pathToCurve(path, needZCommandIndexes) {\n if (needZCommandIndexes === void 0) { needZCommandIndexes = false; }\n var pathArray = Object(_path_2_absolute__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(path);\n var params = {\n x1: 0, y1: 0, x2: 0, y2: 0, x: 0, y: 0, qx: null, qy: null,\n };\n var allPathCommands = [];\n var pathCommand = '';\n var ii = pathArray.length;\n var segment;\n var seglen;\n var zCommandIndexes = [];\n for (var i = 0; i < ii; i += 1) {\n if (pathArray[i])\n pathCommand = pathArray[i][0];\n allPathCommands[i] = pathCommand;\n pathArray[i] = Object(_process_segment_2_cubic__WEBPACK_IMPORTED_MODULE_1__[\"segmentToCubic\"])(pathArray[i], params);\n fixArc(pathArray, allPathCommands, i);\n ii = pathArray.length; // solves curveArrays ending in Z\n // keep Z command account for lineJoin\n // @see https://github.com/antvis/util/issues/68\n if (pathCommand === 'Z') {\n zCommandIndexes.push(i);\n }\n segment = pathArray[i];\n seglen = segment.length;\n params.x1 = +segment[seglen - 2];\n params.y1 = +segment[seglen - 1];\n params.x2 = +(segment[seglen - 4]) || params.x1;\n params.y2 = +(segment[seglen - 3]) || params.y1;\n }\n if (needZCommandIndexes) {\n return [pathArray, zCommandIndexes];\n }\n else {\n return pathArray;\n }\n}\nfunction fixArc(pathArray, allPathCommands, i) {\n if (pathArray[i].length > 7) {\n pathArray[i].shift();\n var pi = pathArray[i];\n // const ni = i + 1;\n var ni = i;\n while (pi.length) {\n // if created multiple C:s, their original seg is saved\n allPathCommands[i] = 'A';\n // @ts-ignore\n pathArray.splice(ni += 1, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pathArray.splice(i, 1);\n }\n}\n//# sourceMappingURL=path-2-curve.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItY3VydmUuanM/M2NmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE4QztBQUNhO0FBQzVDO0FBQ2YseUNBQXlDLDZCQUE2QjtBQUN0RSxvQkFBb0IsZ0VBQWE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtFQUFjO0FBQ3JDO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItY3VydmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aDJBYnNvbHV0ZSBmcm9tICcuL3BhdGgtMi1hYnNvbHV0ZSc7XG5pbXBvcnQgeyBzZWdtZW50VG9DdWJpYyB9IGZyb20gJy4vcHJvY2Vzcy9zZWdtZW50LTItY3ViaWMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGF0aFRvQ3VydmUocGF0aCwgbmVlZFpDb21tYW5kSW5kZXhlcykge1xuICAgIGlmIChuZWVkWkNvbW1hbmRJbmRleGVzID09PSB2b2lkIDApIHsgbmVlZFpDb21tYW5kSW5kZXhlcyA9IGZhbHNlOyB9XG4gICAgdmFyIHBhdGhBcnJheSA9IHBhdGgyQWJzb2x1dGUocGF0aCk7XG4gICAgdmFyIHBhcmFtcyA9IHtcbiAgICAgICAgeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDAsIHg6IDAsIHk6IDAsIHF4OiBudWxsLCBxeTogbnVsbCxcbiAgICB9O1xuICAgIHZhciBhbGxQYXRoQ29tbWFuZHMgPSBbXTtcbiAgICB2YXIgcGF0aENvbW1hbmQgPSAnJztcbiAgICB2YXIgaWkgPSBwYXRoQXJyYXkubGVuZ3RoO1xuICAgIHZhciBzZWdtZW50O1xuICAgIHZhciBzZWdsZW47XG4gICAgdmFyIHpDb21tYW5kSW5kZXhlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWk7IGkgKz0gMSkge1xuICAgICAgICBpZiAocGF0aEFycmF5W2ldKVxuICAgICAgICAgICAgcGF0aENvbW1hbmQgPSBwYXRoQXJyYXlbaV1bMF07XG4gICAgICAgIGFsbFBhdGhDb21tYW5kc1tpXSA9IHBhdGhDb21tYW5kO1xuICAgICAgICBwYXRoQXJyYXlbaV0gPSBzZWdtZW50VG9DdWJpYyhwYXRoQXJyYXlbaV0sIHBhcmFtcyk7XG4gICAgICAgIGZpeEFyYyhwYXRoQXJyYXksIGFsbFBhdGhDb21tYW5kcywgaSk7XG4gICAgICAgIGlpID0gcGF0aEFycmF5Lmxlbmd0aDsgLy8gc29sdmVzIGN1cnZlQXJyYXlzIGVuZGluZyBpbiBaXG4gICAgICAgIC8vIGtlZXAgWiBjb21tYW5kIGFjY291bnQgZm9yIGxpbmVKb2luXG4gICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy91dGlsL2lzc3Vlcy82OFxuICAgICAgICBpZiAocGF0aENvbW1hbmQgPT09ICdaJykge1xuICAgICAgICAgICAgekNvbW1hbmRJbmRleGVzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VnbWVudCA9IHBhdGhBcnJheVtpXTtcbiAgICAgICAgc2VnbGVuID0gc2VnbWVudC5sZW5ndGg7XG4gICAgICAgIHBhcmFtcy54MSA9ICtzZWdtZW50W3NlZ2xlbiAtIDJdO1xuICAgICAgICBwYXJhbXMueTEgPSArc2VnbWVudFtzZWdsZW4gLSAxXTtcbiAgICAgICAgcGFyYW1zLngyID0gKyhzZWdtZW50W3NlZ2xlbiAtIDRdKSB8fCBwYXJhbXMueDE7XG4gICAgICAgIHBhcmFtcy55MiA9ICsoc2VnbWVudFtzZWdsZW4gLSAzXSkgfHwgcGFyYW1zLnkxO1xuICAgIH1cbiAgICBpZiAobmVlZFpDb21tYW5kSW5kZXhlcykge1xuICAgICAgICByZXR1cm4gW3BhdGhBcnJheSwgekNvbW1hbmRJbmRleGVzXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXRoQXJyYXk7XG4gICAgfVxufVxuZnVuY3Rpb24gZml4QXJjKHBhdGhBcnJheSwgYWxsUGF0aENvbW1hbmRzLCBpKSB7XG4gICAgaWYgKHBhdGhBcnJheVtpXS5sZW5ndGggPiA3KSB7XG4gICAgICAgIHBhdGhBcnJheVtpXS5zaGlmdCgpO1xuICAgICAgICB2YXIgcGkgPSBwYXRoQXJyYXlbaV07XG4gICAgICAgIC8vIGNvbnN0IG5pID0gaSArIDE7XG4gICAgICAgIHZhciBuaSA9IGk7XG4gICAgICAgIHdoaWxlIChwaS5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGlmIGNyZWF0ZWQgbXVsdGlwbGUgQzpzLCB0aGVpciBvcmlnaW5hbCBzZWcgaXMgc2F2ZWRcbiAgICAgICAgICAgIGFsbFBhdGhDb21tYW5kc1tpXSA9ICdBJztcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBhdGhBcnJheS5zcGxpY2UobmkgKz0gMSwgMCwgWydDJ10uY29uY2F0KHBpLnNwbGljZSgwLCA2KSkpO1xuICAgICAgICB9XG4gICAgICAgIHBhdGhBcnJheS5zcGxpY2UoaSwgMSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC0yLWN1cnZlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-curve.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-segments.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-segments.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getSegments; });\n/* harmony import */ var _get_arc_params__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-arc-params */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/get-arc-params.js\");\n/* harmony import */ var _parse_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse-path */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/parse-path.js\");\n\n\n\n// 点对称\nfunction toSymmetry(point, center) {\n return [center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1])];\n}\nfunction getSegments(path) {\n path = Object(_parse_path__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path);\n var segments = [];\n var currentPoint = null; // 当前图形\n var nextParams = null; // 下一节点的 path 参数\n var startMovePoint = null; // 开始 M 的点,可能会有多个\n var lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n nextParams = path[i + 1];\n var command = params[0];\n // 数学定义上的参数,便于后面的计算\n var segment = {\n command: command,\n prePoint: currentPoint,\n params: params,\n startTangent: null,\n endTangent: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [params[1], params[2]];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n var arcParams = Object(_get_arc_params__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (segments[lastStartMovePointIndex] &&\n Object(_get_arc_params__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(currentPoint, segments[lastStartMovePointIndex].currentPoint)) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n var nextPoint = nextParams ? [nextParams[nextParams.length - 2], nextParams[nextParams.length - 1]] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n var prePoint = segment.prePoint;\n if (['L', 'H', 'V'].includes(command)) {\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n var cp = [params[1], params[2]];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else if (command === 'T') {\n var preSegment = segments[i - 1];\n var cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [prePoint[0] - cp[0], prePoint[1] - cp[1]];\n segment.endTangent = [currentPoint[0] - cp[0], currentPoint[1] - cp[1]];\n }\n else {\n segment.command = 'TL';\n segment.startTangent = [prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1]];\n segment.endTangent = [currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1]];\n }\n }\n else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n var cp1 = [params[1], params[2]];\n var cp2 = [params[3], params[4]];\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n }\n else if (command === 'S') {\n var preSegment = segments[i - 1];\n var cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n var cp2 = [params[1], params[2]];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [prePoint[0] - cp1[0], prePoint[1] - cp1[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [prePoint[0] - cp2[0], prePoint[1] - cp2[1]];\n segment.endTangent = [currentPoint[0] - cp2[0], currentPoint[1] - cp2[1]];\n }\n }\n else if (command === 'A') {\n var d = 0.001;\n var _a = segment['arcParams'] || {}, _b = _a.cx, cx = _b === void 0 ? 0 : _b, _c = _a.cy, cy = _c === void 0 ? 0 : _c, _d = _a.rx, rx = _d === void 0 ? 0 : _d, _e = _a.ry, ry = _e === void 0 ? 0 : _e, _f = _a.sweepFlag, sweepFlag = _f === void 0 ? 0 : _f, _g = _a.startAngle, startAngle = _g === void 0 ? 0 : _g, _h = _a.endAngle, endAngle = _h === void 0 ? 0 : _h;\n if (sweepFlag === 0) {\n d *= -1;\n }\n var dx1 = rx * Math.cos(startAngle - d) + cx;\n var dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [dx1 - startMovePoint[0], dy1 - startMovePoint[1]];\n var dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n var dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [prePoint[0] - dx2, prePoint[1] - dy2];\n }\n segments.push(segment);\n }\n return segments;\n}\n//# sourceMappingURL=path-2-segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLTItc2VnbWVudHMuanM/NmU3YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNHO0FBQ1Y7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLFdBQVcsMkRBQVM7QUFDcEI7QUFDQSw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLDhCQUE4QjtBQUM5QixvQ0FBb0M7QUFDcEM7QUFDQSxtQkFBbUIsV0FBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLCtEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1FQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfcGF0aC11dGlsQDIuMC4xNUBAYW50di9wYXRoLXV0aWwvZXNtL3BhdGgtMi1zZWdtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBcmNQYXJhbXMgZnJvbSAnLi9nZXQtYXJjLXBhcmFtcyc7XG5pbXBvcnQgeyBpc1NhbWVQb2ludCB9IGZyb20gJy4vZ2V0LWFyYy1wYXJhbXMnO1xuaW1wb3J0IHBhcnNlUGF0aCBmcm9tICcuL3BhcnNlLXBhdGgnO1xuLy8g54K55a+556ewXG5mdW5jdGlvbiB0b1N5bW1ldHJ5KHBvaW50LCBjZW50ZXIpIHtcbiAgICByZXR1cm4gW2NlbnRlclswXSArIChjZW50ZXJbMF0gLSBwb2ludFswXSksIGNlbnRlclsxXSArIChjZW50ZXJbMV0gLSBwb2ludFsxXSldO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2VnbWVudHMocGF0aCkge1xuICAgIHBhdGggPSBwYXJzZVBhdGgocGF0aCk7XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgdmFyIGN1cnJlbnRQb2ludCA9IG51bGw7IC8vIOW9k+WJjeWbvuW9olxuICAgIHZhciBuZXh0UGFyYW1zID0gbnVsbDsgLy8g5LiL5LiA6IqC54K555qEIHBhdGgg5Y+C5pWwXG4gICAgdmFyIHN0YXJ0TW92ZVBvaW50ID0gbnVsbDsgLy8g5byA5aeLIE0g55qE54K577yM5Y+v6IO95Lya5pyJ5aSa5LiqXG4gICAgdmFyIGxhc3RTdGFydE1vdmVQb2ludEluZGV4ID0gMDsgLy8g5pyA6L+R5LiA5Liq5byA5aeL54K5IE0g55qE57Si5byVXG4gICAgdmFyIGNvdW50ID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBwYXRoW2ldO1xuICAgICAgICBuZXh0UGFyYW1zID0gcGF0aFtpICsgMV07XG4gICAgICAgIHZhciBjb21tYW5kID0gcGFyYW1zWzBdO1xuICAgICAgICAvLyDmlbDlrablrprkuYnkuIrnmoTlj4LmlbDvvIzkvr/kuo7lkI7pnaLnmoTorqHnrpdcbiAgICAgICAgdmFyIHNlZ21lbnQgPSB7XG4gICAgICAgICAgICBjb21tYW5kOiBjb21tYW5kLFxuICAgICAgICAgICAgcHJlUG9pbnQ6IGN1cnJlbnRQb2ludCxcbiAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgc3RhcnRUYW5nZW50OiBudWxsLFxuICAgICAgICAgICAgZW5kVGFuZ2VudDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBzdGFydE1vdmVQb2ludCA9IFtwYXJhbXNbMV0sIHBhcmFtc1syXV07XG4gICAgICAgICAgICAgICAgbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgdmFyIGFyY1BhcmFtcyA9IGdldEFyY1BhcmFtcyhjdXJyZW50UG9pbnQsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgc2VnbWVudFsnYXJjUGFyYW1zJ10gPSBhcmNQYXJhbXM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tYW5kID09PSAnWicpIHtcbiAgICAgICAgICAgIC8vIOacieS6hiBaIOWQju+8jOW9k+WJjeiKgueCueS7juW8gOWniyBNIOeahOeCueW8gOWni1xuICAgICAgICAgICAgY3VycmVudFBvaW50ID0gc3RhcnRNb3ZlUG9pbnQ7XG4gICAgICAgICAgICAvLyDlpoLmnpzlvZPliY3ngrnnmoTlkb3ku6TkuLogWu+8jOebuOW9k+S6juW9k+WJjeeCueS4uuacgOi/keS4gOS4qiBNIOeCue+8jOWImeS4i+S4gOS4queCueebtOaOpeaMh+WQkeacgOi/keS4gOS4qiBNIOeCueeahOS4i+S4gOS4queCuVxuICAgICAgICAgICAgbmV4dFBhcmFtcyA9IHBhdGhbbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXggKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSBwYXJhbXMubGVuZ3RoO1xuICAgICAgICAgICAgY3VycmVudFBvaW50ID0gW3BhcmFtc1tsZW4gLSAyXSwgcGFyYW1zW2xlbiAtIDFdXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dFBhcmFtcyAmJiBuZXh0UGFyYW1zWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOS4i+S4gOS4queCueeahOWRveS7pOS4uiBa77yM5YiZ5LiL5LiA5Liq54K555u05o6l5oyH5ZCR5pyA6L+R5LiA5LiqIE0g54K5XG4gICAgICAgICAgICBuZXh0UGFyYW1zID0gcGF0aFtsYXN0U3RhcnRNb3ZlUG9pbnRJbmRleF07XG4gICAgICAgICAgICBpZiAoc2VnbWVudHNbbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5LiL5LiA5Liq54K555qE5ZG95Luk5Li6IFrvvIzliJnmnIDov5HkuIDkuKogTSDngrnnmoTliY3kuIDkuKrngrnkuLrlvZPliY3ngrlcbiAgICAgICAgICAgICAgICBzZWdtZW50c1tsYXN0U3RhcnRNb3ZlUG9pbnRJbmRleF0ucHJlUG9pbnQgPSBjdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VnbWVudFsnY3VycmVudFBvaW50J10gPSBjdXJyZW50UG9pbnQ7XG4gICAgICAgIC8vIOWmguaenOW9k+WJjeeCueS4juacgOi/keS4gOS4qiBNIOeCueebuOWQjO+8jOWImeacgOi/keS4gOS4qiBNIOeCueeahOWJjeS4gOS4queCueS4uuW9k+WJjeeCueeahOWJjeS4gOS4queCuVxuICAgICAgICBpZiAoc2VnbWVudHNbbGFzdFN0YXJ0TW92ZVBvaW50SW5kZXhdICYmXG4gICAgICAgICAgICBpc1NhbWVQb2ludChjdXJyZW50UG9pbnQsIHNlZ21lbnRzW2xhc3RTdGFydE1vdmVQb2ludEluZGV4XS5jdXJyZW50UG9pbnQpKSB7XG4gICAgICAgICAgICBzZWdtZW50c1tsYXN0U3RhcnRNb3ZlUG9pbnRJbmRleF0ucHJlUG9pbnQgPSBzZWdtZW50LnByZVBvaW50O1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXh0UG9pbnQgPSBuZXh0UGFyYW1zID8gW25leHRQYXJhbXNbbmV4dFBhcmFtcy5sZW5ndGggLSAyXSwgbmV4dFBhcmFtc1tuZXh0UGFyYW1zLmxlbmd0aCAtIDFdXSA6IG51bGw7XG4gICAgICAgIHNlZ21lbnRbJ25leHRQb2ludCddID0gbmV4dFBvaW50O1xuICAgICAgICAvLyBBZGQgc3RhcnRUYW5nZW50IGFuZCBlbmRUYW5nZW50XG4gICAgICAgIHZhciBwcmVQb2ludCA9IHNlZ21lbnQucHJlUG9pbnQ7XG4gICAgICAgIGlmIChbJ0wnLCAnSCcsICdWJ10uaW5jbHVkZXMoY29tbWFuZCkpIHtcbiAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW3ByZVBvaW50WzBdIC0gY3VycmVudFBvaW50WzBdLCBwcmVQb2ludFsxXSAtIGN1cnJlbnRQb2ludFsxXV07XG4gICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gcHJlUG9pbnRbMF0sIGN1cnJlbnRQb2ludFsxXSAtIHByZVBvaW50WzFdXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kID09PSAnUScpIHtcbiAgICAgICAgICAgIC8vIOS6jOasoei0neWhnuWwlOabsue6v+WPquacieS4gOS4quaOp+WItueCuVxuICAgICAgICAgICAgdmFyIGNwID0gW3BhcmFtc1sxXSwgcGFyYW1zWzJdXTtcbiAgICAgICAgICAgIC8vIOS6jOasoei0neWhnuWwlOabsue6v+eahOe7iOeCueS4uiBjdXJyZW50UG9pbnRcbiAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW3ByZVBvaW50WzBdIC0gY3BbMF0sIHByZVBvaW50WzFdIC0gY3BbMV1dO1xuICAgICAgICAgICAgc2VnbWVudC5lbmRUYW5nZW50ID0gW2N1cnJlbnRQb2ludFswXSAtIGNwWzBdLCBjdXJyZW50UG9pbnRbMV0gLSBjcFsxXV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29tbWFuZCA9PT0gJ1QnKSB7XG4gICAgICAgICAgICB2YXIgcHJlU2VnbWVudCA9IHNlZ21lbnRzW2kgLSAxXTtcbiAgICAgICAgICAgIHZhciBjcCA9IHRvU3ltbWV0cnkocHJlU2VnbWVudC5jdXJyZW50UG9pbnQsIHByZVBvaW50KTtcbiAgICAgICAgICAgIGlmIChwcmVTZWdtZW50LmNvbW1hbmQgPT09ICdRJykge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuY29tbWFuZCA9ICdRJztcbiAgICAgICAgICAgICAgICBzZWdtZW50LnN0YXJ0VGFuZ2VudCA9IFtwcmVQb2ludFswXSAtIGNwWzBdLCBwcmVQb2ludFsxXSAtIGNwWzFdXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gY3BbMF0sIGN1cnJlbnRQb2ludFsxXSAtIGNwWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuY29tbWFuZCA9ICdUTCc7XG4gICAgICAgICAgICAgICAgc2VnbWVudC5zdGFydFRhbmdlbnQgPSBbcHJlUG9pbnRbMF0gLSBjdXJyZW50UG9pbnRbMF0sIHByZVBvaW50WzFdIC0gY3VycmVudFBvaW50WzFdXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gcHJlUG9pbnRbMF0sIGN1cnJlbnRQb2ludFsxXSAtIHByZVBvaW50WzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kID09PSAnQycpIHtcbiAgICAgICAgICAgIC8vIOS4ieasoei0neWhnuWwlOabsue6v+acieS4pOS4quaOp+WItueCuVxuICAgICAgICAgICAgdmFyIGNwMSA9IFtwYXJhbXNbMV0sIHBhcmFtc1syXV07XG4gICAgICAgICAgICB2YXIgY3AyID0gW3BhcmFtc1szXSwgcGFyYW1zWzRdXTtcbiAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW3ByZVBvaW50WzBdIC0gY3AxWzBdLCBwcmVQb2ludFsxXSAtIGNwMVsxXV07XG4gICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gY3AyWzBdLCBjdXJyZW50UG9pbnRbMV0gLSBjcDJbMV1dO1xuICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBsaW5lLCBlZy4gWydDJywgMTAwLCAxMDAsIDEwMCwgMTAwLCAyMDAsIDIwMF1cbiAgICAgICAgICAgIGlmIChzZWdtZW50LnN0YXJ0VGFuZ2VudFswXSA9PT0gMCAmJiBzZWdtZW50LnN0YXJ0VGFuZ2VudFsxXSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuc3RhcnRUYW5nZW50ID0gW2NwMVswXSAtIGNwMlswXSwgY3AxWzFdIC0gY3AyWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWdtZW50LmVuZFRhbmdlbnRbMF0gPT09IDAgJiYgc2VnbWVudC5lbmRUYW5nZW50WzFdID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudC5lbmRUYW5nZW50ID0gW2NwMlswXSAtIGNwMVswXSwgY3AyWzFdIC0gY3AxWzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb21tYW5kID09PSAnUycpIHtcbiAgICAgICAgICAgIHZhciBwcmVTZWdtZW50ID0gc2VnbWVudHNbaSAtIDFdO1xuICAgICAgICAgICAgdmFyIGNwMSA9IHRvU3ltbWV0cnkocHJlU2VnbWVudC5jdXJyZW50UG9pbnQsIHByZVBvaW50KTtcbiAgICAgICAgICAgIHZhciBjcDIgPSBbcGFyYW1zWzFdLCBwYXJhbXNbMl1dO1xuICAgICAgICAgICAgaWYgKHByZVNlZ21lbnQuY29tbWFuZCA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgc2VnbWVudC5jb21tYW5kID0gJ0MnOyAvLyDlsIYgUyDlkb3ku6Tlj5jmjaLkuLogQyDlkb3ku6RcbiAgICAgICAgICAgICAgICBzZWdtZW50LnN0YXJ0VGFuZ2VudCA9IFtwcmVQb2ludFswXSAtIGNwMVswXSwgcHJlUG9pbnRbMV0gLSBjcDFbMV1dO1xuICAgICAgICAgICAgICAgIHNlZ21lbnQuZW5kVGFuZ2VudCA9IFtjdXJyZW50UG9pbnRbMF0gLSBjcDJbMF0sIGN1cnJlbnRQb2ludFsxXSAtIGNwMlsxXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmNvbW1hbmQgPSAnU1EnOyAvLyDlsIYgUyDlkb3ku6Tlj5jmjaLkuLogU1Eg5ZG95LukXG4gICAgICAgICAgICAgICAgc2VnbWVudC5zdGFydFRhbmdlbnQgPSBbcHJlUG9pbnRbMF0gLSBjcDJbMF0sIHByZVBvaW50WzFdIC0gY3AyWzFdXTtcbiAgICAgICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbY3VycmVudFBvaW50WzBdIC0gY3AyWzBdLCBjdXJyZW50UG9pbnRbMV0gLSBjcDJbMV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbW1hbmQgPT09ICdBJykge1xuICAgICAgICAgICAgdmFyIGQgPSAwLjAwMTtcbiAgICAgICAgICAgIHZhciBfYSA9IHNlZ21lbnRbJ2FyY1BhcmFtcyddIHx8IHt9LCBfYiA9IF9hLmN4LCBjeCA9IF9iID09PSB2b2lkIDAgPyAwIDogX2IsIF9jID0gX2EuY3ksIGN5ID0gX2MgPT09IHZvaWQgMCA/IDAgOiBfYywgX2QgPSBfYS5yeCwgcnggPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kLCBfZSA9IF9hLnJ5LCByeSA9IF9lID09PSB2b2lkIDAgPyAwIDogX2UsIF9mID0gX2Euc3dlZXBGbGFnLCBzd2VlcEZsYWcgPSBfZiA9PT0gdm9pZCAwID8gMCA6IF9mLCBfZyA9IF9hLnN0YXJ0QW5nbGUsIHN0YXJ0QW5nbGUgPSBfZyA9PT0gdm9pZCAwID8gMCA6IF9nLCBfaCA9IF9hLmVuZEFuZ2xlLCBlbmRBbmdsZSA9IF9oID09PSB2b2lkIDAgPyAwIDogX2g7XG4gICAgICAgICAgICBpZiAoc3dlZXBGbGFnID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZCAqPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkeDEgPSByeCAqIE1hdGguY29zKHN0YXJ0QW5nbGUgLSBkKSArIGN4O1xuICAgICAgICAgICAgdmFyIGR5MSA9IHJ5ICogTWF0aC5zaW4oc3RhcnRBbmdsZSAtIGQpICsgY3k7XG4gICAgICAgICAgICBzZWdtZW50LnN0YXJ0VGFuZ2VudCA9IFtkeDEgLSBzdGFydE1vdmVQb2ludFswXSwgZHkxIC0gc3RhcnRNb3ZlUG9pbnRbMV1dO1xuICAgICAgICAgICAgdmFyIGR4MiA9IHJ4ICogTWF0aC5jb3Moc3RhcnRBbmdsZSArIGVuZEFuZ2xlICsgZCkgKyBjeDtcbiAgICAgICAgICAgIHZhciBkeTIgPSByeSAqIE1hdGguc2luKHN0YXJ0QW5nbGUgKyBlbmRBbmdsZSAtIGQpICsgY3k7XG4gICAgICAgICAgICBzZWdtZW50LmVuZFRhbmdlbnQgPSBbcHJlUG9pbnRbMF0gLSBkeDIsIHByZVBvaW50WzFdIC0gZHkyXTtcbiAgICAgICAgfVxuICAgICAgICBzZWdtZW50cy5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLTItc2VnbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-segments.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-intersection.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-intersection.js ***! \***************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pathIntersection; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _rect_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect-path */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/rect-path.js\");\n/* harmony import */ var _path_2_curve__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path-2-curve */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-2-curve.js\");\n\n\n\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [-0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [\n [],\n [],\n ];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[1][j] = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x &&\n x <= bbox.x + bbox.width &&\n y >= bbox.y &&\n y <= bbox.y + bbox.height;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: Object(_rect_path__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n // @ts-ignore\n bbox1 = box(bbox1);\n // @ts-ignore\n bbox2 = box(bbox2);\n return isPointInsideBBox(bbox2, bbox1.x, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x) && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = (90 - Math.atan2(mx - nx, my - ny) * 180 / Math.PI);\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n // @ts-ignore\n var bbox1 = bezierBBox(bez1);\n // @ts-ignore\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res++;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n // @ts-ignore\n path1 = Object(_path_2_curve__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path1);\n // @ts-ignore\n path2 = Object(_path_2_curve__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nfunction pathIntersection(path1, path2) {\n // @ts-ignore\n return interPathHelper(path1, path2);\n}\n//# sourceMappingURL=path-intersection.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLWludGVyc2VjdGlvbi5qcz9kYWNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDRjtBQUNLO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsMERBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMERBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsdUJBQXVCLFFBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFVO0FBQ3RCO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wYXRoLWludGVyc2VjdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCByZWN0UGF0aCBmcm9tICcuL3JlY3QtcGF0aCc7XG5pbXBvcnQgcGF0aDJDdXJ2ZSBmcm9tICcuL3BhdGgtMi1jdXJ2ZSc7XG52YXIgYmFzZTMgPSBmdW5jdGlvbiAodCwgcDEsIHAyLCBwMywgcDQpIHtcbiAgICB2YXIgdDEgPSAtMyAqIHAxICsgOSAqIHAyIC0gOSAqIHAzICsgMyAqIHA0O1xuICAgIHZhciB0MiA9IHQgKiB0MSArIDYgKiBwMSAtIDEyICogcDIgKyA2ICogcDM7XG4gICAgcmV0dXJuIHQgKiB0MiAtIDMgKiBwMSArIDMgKiBwMjtcbn07XG52YXIgYmV6bGVuID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgeikge1xuICAgIGlmICh6ID09PSBudWxsKSB7XG4gICAgICAgIHogPSAxO1xuICAgIH1cbiAgICB6ID0geiA+IDEgPyAxIDogeiA8IDAgPyAwIDogejtcbiAgICB2YXIgejIgPSB6IC8gMjtcbiAgICB2YXIgbiA9IDEyO1xuICAgIHZhciBUdmFsdWVzID0gWy0wLjEyNTIsIDAuMTI1MiwgLTAuMzY3OCwgMC4zNjc4LCAtMC41ODczLCAwLjU4NzMsIC0wLjc2OTksIDAuNzY5OSwgLTAuOTA0MSwgMC45MDQxLCAtMC45ODE2LCAwLjk4MTZdO1xuICAgIHZhciBDdmFsdWVzID0gWzAuMjQ5MSwgMC4yNDkxLCAwLjIzMzUsIDAuMjMzNSwgMC4yMDMyLCAwLjIwMzIsIDAuMTYwMSwgMC4xNjAxLCAwLjEwNjksIDAuMTA2OSwgMC4wNDcyLCAwLjA0NzJdO1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIHZhciBjdCA9IHoyICogVHZhbHVlc1tpXSArIHoyO1xuICAgICAgICB2YXIgeGJhc2UgPSBiYXNlMyhjdCwgeDEsIHgyLCB4MywgeDQpO1xuICAgICAgICB2YXIgeWJhc2UgPSBiYXNlMyhjdCwgeTEsIHkyLCB5MywgeTQpO1xuICAgICAgICB2YXIgY29tYiA9IHhiYXNlICogeGJhc2UgKyB5YmFzZSAqIHliYXNlO1xuICAgICAgICBzdW0gKz0gQ3ZhbHVlc1tpXSAqIE1hdGguc3FydChjb21iKTtcbiAgICB9XG4gICAgcmV0dXJuIHoyICogc3VtO1xufTtcbnZhciBjdXJ2ZURpbSA9IGZ1bmN0aW9uICh4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICB2YXIgdHZhbHVlcyA9IFtdO1xuICAgIHZhciBib3VuZHMgPSBbXG4gICAgICAgIFtdLFxuICAgICAgICBbXSxcbiAgICBdO1xuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIHZhciBjO1xuICAgIHZhciB0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBiID0gNiAqIHgwIC0gMTIgKiB4MSArIDYgKiB4MjtcbiAgICAgICAgICAgIGEgPSAtMyAqIHgwICsgOSAqIHgxIC0gOSAqIHgyICsgMyAqIHgzO1xuICAgICAgICAgICAgYyA9IDMgKiB4MSAtIDMgKiB4MDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGIgPSA2ICogeTAgLSAxMiAqIHkxICsgNiAqIHkyO1xuICAgICAgICAgICAgYSA9IC0zICogeTAgKyA5ICogeTEgLSA5ICogeTIgKyAzICogeTM7XG4gICAgICAgICAgICBjID0gMyAqIHkxIC0gMyAqIHkwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhhKSA8IDFlLTEyKSB7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoYikgPCAxZS0xMikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IC1jIC8gYjtcbiAgICAgICAgICAgIGlmICh0ID4gMCAmJiB0IDwgMSkge1xuICAgICAgICAgICAgICAgIHR2YWx1ZXMucHVzaCh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBiMmFjID0gYiAqIGIgLSA0ICogYyAqIGE7XG4gICAgICAgIHZhciBzcXJ0YjJhYyA9IE1hdGguc3FydChiMmFjKTtcbiAgICAgICAgaWYgKGIyYWMgPCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdDEgPSAoLWIgKyBzcXJ0YjJhYykgLyAoMiAqIGEpO1xuICAgICAgICBpZiAodDEgPiAwICYmIHQxIDwgMSkge1xuICAgICAgICAgICAgdHZhbHVlcy5wdXNoKHQxKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdDIgPSAoLWIgLSBzcXJ0YjJhYykgLyAoMiAqIGEpO1xuICAgICAgICBpZiAodDIgPiAwICYmIHQyIDwgMSkge1xuICAgICAgICAgICAgdHZhbHVlcy5wdXNoKHQyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaiA9IHR2YWx1ZXMubGVuZ3RoO1xuICAgIHZhciBqbGVuID0gajtcbiAgICB2YXIgbXQ7XG4gICAgd2hpbGUgKGotLSkge1xuICAgICAgICB0ID0gdHZhbHVlc1tqXTtcbiAgICAgICAgbXQgPSAxIC0gdDtcbiAgICAgICAgYm91bmRzWzBdW2pdID0gKG10ICogbXQgKiBtdCAqIHgwKSArICgzICogbXQgKiBtdCAqIHQgKiB4MSkgKyAoMyAqIG10ICogdCAqIHQgKiB4MikgKyAodCAqIHQgKiB0ICogeDMpO1xuICAgICAgICBib3VuZHNbMV1bal0gPSAobXQgKiBtdCAqIG10ICogeTApICsgKDMgKiBtdCAqIG10ICogdCAqIHkxKSArICgzICogbXQgKiB0ICogdCAqIHkyKSArICh0ICogdCAqIHQgKiB5Myk7XG4gICAgfVxuICAgIGJvdW5kc1swXVtqbGVuXSA9IHgwO1xuICAgIGJvdW5kc1sxXVtqbGVuXSA9IHkwO1xuICAgIGJvdW5kc1swXVtqbGVuICsgMV0gPSB4MztcbiAgICBib3VuZHNbMV1bamxlbiArIDFdID0geTM7XG4gICAgYm91bmRzWzBdLmxlbmd0aCA9IGJvdW5kc1sxXS5sZW5ndGggPSBqbGVuICsgMjtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW46IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWluLmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1pbi5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgICAgICBtYXg6IHtcbiAgICAgICAgICAgIHg6IE1hdGgubWF4LmFwcGx5KDAsIGJvdW5kc1swXSksXG4gICAgICAgICAgICB5OiBNYXRoLm1heC5hcHBseSgwLCBib3VuZHNbMV0pLFxuICAgICAgICB9LFxuICAgIH07XG59O1xudmFyIGludGVyc2VjdCA9IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQpIHtcbiAgICBpZiAoTWF0aC5tYXgoeDEsIHgyKSA8IE1hdGgubWluKHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeDEsIHgyKSA+IE1hdGgubWF4KHgzLCB4NCkgfHxcbiAgICAgICAgTWF0aC5tYXgoeTEsIHkyKSA8IE1hdGgubWluKHkzLCB5NCkgfHxcbiAgICAgICAgTWF0aC5taW4oeTEsIHkyKSA+IE1hdGgubWF4KHkzLCB5NCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbnggPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHgzIC0geDQpIC0gKHgxIC0geDIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgbnkgPSAoeDEgKiB5MiAtIHkxICogeDIpICogKHkzIC0geTQpIC0gKHkxIC0geTIpICogKHgzICogeTQgLSB5MyAqIHg0KTtcbiAgICB2YXIgZGVub21pbmF0b3IgPSAoeDEgLSB4MikgKiAoeTMgLSB5NCkgLSAoeTEgLSB5MikgKiAoeDMgLSB4NCk7XG4gICAgaWYgKCFkZW5vbWluYXRvcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBweCA9IG54IC8gZGVub21pbmF0b3I7XG4gICAgdmFyIHB5ID0gbnkgLyBkZW5vbWluYXRvcjtcbiAgICB2YXIgcHgyID0gK3B4LnRvRml4ZWQoMik7XG4gICAgdmFyIHB5MiA9ICtweS50b0ZpeGVkKDIpO1xuICAgIGlmIChweDIgPCArTWF0aC5taW4oeDEsIHgyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB4MiA+ICtNYXRoLm1heCh4MSwgeDIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHgyIDwgK01hdGgubWluKHgzLCB4NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweDIgPiArTWF0aC5tYXgoeDMsIHg0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA8ICtNYXRoLm1pbih5MSwgeTIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHkyID4gK01hdGgubWF4KHkxLCB5MikudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPCArTWF0aC5taW4oeTMsIHk0KS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA+ICtNYXRoLm1heCh5MywgeTQpLnRvRml4ZWQoMikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBweCxcbiAgICAgICAgeTogcHksXG4gICAgfTtcbn07XG52YXIgaXNQb2ludEluc2lkZUJCb3ggPSBmdW5jdGlvbiAoYmJveCwgeCwgeSkge1xuICAgIHJldHVybiB4ID49IGJib3gueCAmJlxuICAgICAgICB4IDw9IGJib3gueCArIGJib3gud2lkdGggJiZcbiAgICAgICAgeSA+PSBiYm94LnkgJiZcbiAgICAgICAgeSA8PSBiYm94LnkgKyBiYm94LmhlaWdodDtcbn07XG52YXIgYm94ID0gZnVuY3Rpb24gKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICB4ID0geSA9IHdpZHRoID0gaGVpZ2h0ID0gMDtcbiAgICB9XG4gICAgaWYgKHkgPT09IG51bGwpIHtcbiAgICAgICAgeSA9IHgueTtcbiAgICAgICAgd2lkdGggPSB4LndpZHRoO1xuICAgICAgICBoZWlnaHQgPSB4LmhlaWdodDtcbiAgICAgICAgeCA9IHgueDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICB3OiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGg6IGhlaWdodCxcbiAgICAgICAgeDI6IHggKyB3aWR0aCxcbiAgICAgICAgeTI6IHkgKyBoZWlnaHQsXG4gICAgICAgIGN4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgICBjeTogeSArIGhlaWdodCAvIDIsXG4gICAgICAgIHIxOiBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIyOiBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSAvIDIsXG4gICAgICAgIHIwOiBNYXRoLnNxcnQod2lkdGggKiB3aWR0aCArIGhlaWdodCAqIGhlaWdodCkgLyAyLFxuICAgICAgICBwYXRoOiByZWN0UGF0aCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSxcbiAgICAgICAgdmI6IFt4LCB5LCB3aWR0aCwgaGVpZ2h0XS5qb2luKCcgJyksXG4gICAgfTtcbn07XG52YXIgaXNCQm94SW50ZXJzZWN0ID0gZnVuY3Rpb24gKGJib3gxLCBiYm94Mikge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBiYm94MSA9IGJveChiYm94MSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGJib3gyID0gYm94KGJib3gyKTtcbiAgICByZXR1cm4gaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkpIHx8IGlzUG9pbnRJbnNpZGVCQm94KGJib3gyLCBiYm94MS54MiwgYmJveDEueSkgfHwgaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkyKSB8fCBpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueDIsIGJib3gxLnkyKSB8fCBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueSkgfHwgaXNQb2ludEluc2lkZUJCb3goYmJveDEsIGJib3gyLngyLCBiYm94Mi55KSB8fCBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueTIpIHx8IGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54MiwgYmJveDIueTIpIHx8IChiYm94MS54IDwgYmJveDIueDIgJiYgYmJveDEueCA+IGJib3gyLnggfHwgYmJveDIueCA8IGJib3gxLngyICYmIGJib3gyLnggPiBiYm94MS54KSAmJiAoYmJveDEueSA8IGJib3gyLnkyICYmIGJib3gxLnkgPiBiYm94Mi55IHx8IGJib3gyLnkgPCBiYm94MS55MiAmJiBiYm94Mi55ID4gYmJveDEueSk7XG59O1xudmFyIGJlemllckJCb3ggPSBmdW5jdGlvbiAocDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnkpIHtcbiAgICBpZiAoIWlzQXJyYXkocDF4KSkge1xuICAgICAgICBwMXggPSBbcDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnldO1xuICAgIH1cbiAgICB2YXIgYmJveCA9IGN1cnZlRGltLmFwcGx5KG51bGwsIHAxeCk7XG4gICAgcmV0dXJuIGJveChiYm94Lm1pbi54LCBiYm94Lm1pbi55LCBiYm94Lm1heC54IC0gYmJveC5taW4ueCwgYmJveC5tYXgueSAtIGJib3gubWluLnkpO1xufTtcbnZhciBmaW5kRG90c0F0U2VnbWVudCA9IGZ1bmN0aW9uIChwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeSwgdCkge1xuICAgIHZhciB0MSA9IDEgLSB0O1xuICAgIHZhciB0MTMgPSBNYXRoLnBvdyh0MSwgMyk7XG4gICAgdmFyIHQxMiA9IE1hdGgucG93KHQxLCAyKTtcbiAgICB2YXIgdDIgPSB0ICogdDtcbiAgICB2YXIgdDMgPSB0MiAqIHQ7XG4gICAgdmFyIHggPSB0MTMgKiBwMXggKyB0MTIgKiAzICogdCAqIGMxeCArIHQxICogMyAqIHQgKiB0ICogYzJ4ICsgdDMgKiBwMng7XG4gICAgdmFyIHkgPSB0MTMgKiBwMXkgKyB0MTIgKiAzICogdCAqIGMxeSArIHQxICogMyAqIHQgKiB0ICogYzJ5ICsgdDMgKiBwMnk7XG4gICAgdmFyIG14ID0gcDF4ICsgMiAqIHQgKiAoYzF4IC0gcDF4KSArIHQyICogKGMyeCAtIDIgKiBjMXggKyBwMXgpO1xuICAgIHZhciBteSA9IHAxeSArIDIgKiB0ICogKGMxeSAtIHAxeSkgKyB0MiAqIChjMnkgLSAyICogYzF5ICsgcDF5KTtcbiAgICB2YXIgbnggPSBjMXggKyAyICogdCAqIChjMnggLSBjMXgpICsgdDIgKiAocDJ4IC0gMiAqIGMyeCArIGMxeCk7XG4gICAgdmFyIG55ID0gYzF5ICsgMiAqIHQgKiAoYzJ5IC0gYzF5KSArIHQyICogKHAyeSAtIDIgKiBjMnkgKyBjMXkpO1xuICAgIHZhciBheCA9IHQxICogcDF4ICsgdCAqIGMxeDtcbiAgICB2YXIgYXkgPSB0MSAqIHAxeSArIHQgKiBjMXk7XG4gICAgdmFyIGN4ID0gdDEgKiBjMnggKyB0ICogcDJ4O1xuICAgIHZhciBjeSA9IHQxICogYzJ5ICsgdCAqIHAyeTtcbiAgICB2YXIgYWxwaGEgPSAoOTAgLSBNYXRoLmF0YW4yKG14IC0gbngsIG15IC0gbnkpICogMTgwIC8gTWF0aC5QSSk7XG4gICAgLy8gKG14ID4gbnggfHwgbXkgPCBueSkgJiYgKGFscGhhICs9IDE4MCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgbToge1xuICAgICAgICAgICAgeDogbXgsXG4gICAgICAgICAgICB5OiBteSxcbiAgICAgICAgfSxcbiAgICAgICAgbjoge1xuICAgICAgICAgICAgeDogbngsXG4gICAgICAgICAgICB5OiBueSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgIHg6IGF4LFxuICAgICAgICAgICAgeTogYXksXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgICAgeDogY3gsXG4gICAgICAgICAgICB5OiBjeSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxwaGE6IGFscGhhLFxuICAgIH07XG59O1xudmFyIGludGVySGVscGVyID0gZnVuY3Rpb24gKGJlejEsIGJlejIsIGp1c3RDb3VudCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgYmJveDEgPSBiZXppZXJCQm94KGJlejEpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB2YXIgYmJveDIgPSBiZXppZXJCQm94KGJlejIpO1xuICAgIGlmICghaXNCQm94SW50ZXJzZWN0KGJib3gxLCBiYm94MikpIHtcbiAgICAgICAgcmV0dXJuIGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICB9XG4gICAgdmFyIGwxID0gYmV6bGVuLmFwcGx5KDAsIGJlejEpO1xuICAgIHZhciBsMiA9IGJlemxlbi5hcHBseSgwLCBiZXoyKTtcbiAgICB2YXIgbjEgPSB+fihsMSAvIDgpO1xuICAgIHZhciBuMiA9IH5+KGwyIC8gOCk7XG4gICAgdmFyIGRvdHMxID0gW107XG4gICAgdmFyIGRvdHMyID0gW107XG4gICAgdmFyIHh5ID0ge307XG4gICAgdmFyIHJlcyA9IGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4xICsgMTsgaSsrKSB7XG4gICAgICAgIHZhciBkID0gZmluZERvdHNBdFNlZ21lbnQuYXBwbHkoMCwgYmV6MS5jb25jYXQoaSAvIG4xKSk7XG4gICAgICAgIGRvdHMxLnB1c2goe1xuICAgICAgICAgICAgeDogZC54LFxuICAgICAgICAgICAgeTogZC55LFxuICAgICAgICAgICAgdDogaSAvIG4xLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMiArIDE7IGkrKykge1xuICAgICAgICB2YXIgZCA9IGZpbmREb3RzQXRTZWdtZW50LmFwcGx5KDAsIGJlejIuY29uY2F0KGkgLyBuMikpO1xuICAgICAgICBkb3RzMi5wdXNoKHtcbiAgICAgICAgICAgIHg6IGQueCxcbiAgICAgICAgICAgIHk6IGQueSxcbiAgICAgICAgICAgIHQ6IGkgLyBuMixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjE7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4yOyBqKyspIHtcbiAgICAgICAgICAgIHZhciBkaSA9IGRvdHMxW2ldO1xuICAgICAgICAgICAgdmFyIGRpMSA9IGRvdHMxW2kgKyAxXTtcbiAgICAgICAgICAgIHZhciBkaiA9IGRvdHMyW2pdO1xuICAgICAgICAgICAgdmFyIGRqMSA9IGRvdHMyW2ogKyAxXTtcbiAgICAgICAgICAgIHZhciBjaSA9IE1hdGguYWJzKGRpMS54IC0gZGkueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBjaiA9IE1hdGguYWJzKGRqMS54IC0gZGoueCkgPCAwLjAwMSA/ICd5JyA6ICd4JztcbiAgICAgICAgICAgIHZhciBpcyA9IGludGVyc2VjdChkaS54LCBkaS55LCBkaTEueCwgZGkxLnksIGRqLngsIGRqLnksIGRqMS54LCBkajEueSk7XG4gICAgICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoeHlbaXMueC50b0ZpeGVkKDQpXSA9PT0gaXMueS50b0ZpeGVkKDQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB4eVtpcy54LnRvRml4ZWQoNCldID0gaXMueS50b0ZpeGVkKDQpO1xuICAgICAgICAgICAgICAgIHZhciB0MSA9IGRpLnQgKyBNYXRoLmFicygoaXNbY2ldIC0gZGlbY2ldKSAvIChkaTFbY2ldIC0gZGlbY2ldKSkgKiAoZGkxLnQgLSBkaS50KTtcbiAgICAgICAgICAgICAgICB2YXIgdDIgPSBkai50ICsgTWF0aC5hYnMoKGlzW2NqXSAtIGRqW2NqXSkgLyAoZGoxW2NqXSAtIGRqW2NqXSkpICogKGRqMS50IC0gZGoudCk7XG4gICAgICAgICAgICAgICAgaWYgKHQxID49IDAgJiYgdDEgPD0gMSAmJiB0MiA+PSAwICYmIHQyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogaXMueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBpcy55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxOiB0MSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MjogdDIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBpbnRlclBhdGhIZWxwZXIgPSBmdW5jdGlvbiAocGF0aDEsIHBhdGgyLCBqdXN0Q291bnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcGF0aDEgPSBwYXRoMkN1cnZlKHBhdGgxKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcGF0aDIgPSBwYXRoMkN1cnZlKHBhdGgyKTtcbiAgICB2YXIgeDE7XG4gICAgdmFyIHkxO1xuICAgIHZhciB4MjtcbiAgICB2YXIgeTI7XG4gICAgdmFyIHgxbTtcbiAgICB2YXIgeTFtO1xuICAgIHZhciB4Mm07XG4gICAgdmFyIHkybTtcbiAgICB2YXIgYmV6MTtcbiAgICB2YXIgYmV6MjtcbiAgICB2YXIgcmVzID0ganVzdENvdW50ID8gMCA6IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBhdGgxLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgdmFyIHBpID0gcGF0aDFbaV07XG4gICAgICAgIGlmIChwaVswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICB4MSA9IHgxbSA9IHBpWzFdO1xuICAgICAgICAgICAgeTEgPSB5MW0gPSBwaVsyXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwaVswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgYmV6MSA9IFt4MSwgeTFdLmNvbmNhdChwaS5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgeDEgPSBiZXoxWzZdO1xuICAgICAgICAgICAgICAgIHkxID0gYmV6MVs3XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJlejEgPSBbeDEsIHkxLCB4MSwgeTEsIHgxbSwgeTFtLCB4MW0sIHkxbV07XG4gICAgICAgICAgICAgICAgeDEgPSB4MW07XG4gICAgICAgICAgICAgICAgeTEgPSB5MW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBwYXRoMi5sZW5ndGg7IGogPCBqajsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBqID0gcGF0aDJbal07XG4gICAgICAgICAgICAgICAgaWYgKHBqWzBdID09PSAnTScpIHtcbiAgICAgICAgICAgICAgICAgICAgeDIgPSB4Mm0gPSBwalsxXTtcbiAgICAgICAgICAgICAgICAgICAgeTIgPSB5Mm0gPSBwalsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwalswXSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXoyID0gW3gyLCB5Ml0uY29uY2F0KHBqLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHgyID0gYmV6Mls2XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0gYmV6Mls3XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlejIgPSBbeDIsIHkyLCB4MiwgeTIsIHgybSwgeTJtLCB4Mm0sIHkybV07XG4gICAgICAgICAgICAgICAgICAgICAgICB4MiA9IHgybTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkyID0geTJtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRyID0gaW50ZXJIZWxwZXIoYmV6MSwgYmV6MiwganVzdENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGp1c3RDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IGludHI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBpbnRyLmxlbmd0aDsgayA8IGtrOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQxID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLnNlZ21lbnQyID0gajtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLmJlejEgPSBiZXoxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJba10uYmV6MiA9IGJlejI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGludHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGF0aEludGVyc2VjdGlvbihwYXRoMSwgcGF0aDIpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGludGVyUGF0aEhlbHBlcihwYXRoMSwgcGF0aDIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC1pbnRlcnNlY3Rpb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/path-intersection.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/point-in-polygon.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/point-in-polygon.js ***! \**************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isInPolygon; });\n/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=point-in-polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wb2ludC1pbi1wb2x5Z29uLmpzP2U3NmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfcGF0aC11dGlsQDIuMC4xNUBAYW50di9wYXRoLXV0aWwvZXNtL3BvaW50LWluLXBvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5Yik5pat54K55piv5ZCm5Zyo5aSa6L655b2i5YaFXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuLy8g5aSa6L655b2i55qE5bCE57q/5qOA5rWL77yM5Y+C6ICD77yaaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dpbGxpYW1TdW4wMTIyL2FydGljbGUvZGV0YWlscy83Nzk5NDUyNlxudmFyIHRvbGVyYW5jZSA9IDFlLTY7XG4vLyDkuInmgIHlh73mlbDvvIzliKTmlq3kuKTkuKpkb3VibGXlnKhlcHPnsr7luqbkuIvnmoTlpKflsI/lhbPns7tcbmZ1bmN0aW9uIGRjbXAoeCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IHRvbGVyYW5jZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuLy8g5Yik5pat54K5UeaYr+WQpuWcqHAx5ZKMcDLnmoTnur/mrrXkuIpcbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgICBpZiAoKHFbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgPT09IChwMlswXSAtIHAxWzBdKSAqIChxWzFdIC0gcDFbMV0pICYmXG4gICAgICAgIE1hdGgubWluKHAxWzBdLCBwMlswXSkgPD0gcVswXSAmJlxuICAgICAgICBxWzBdIDw9IE1hdGgubWF4KHAxWzBdLCBwMlswXSkgJiZcbiAgICAgICAgTWF0aC5taW4ocDFbMV0sIHAyWzFdKSA8PSBxWzFdICYmXG4gICAgICAgIHFbMV0gPD0gTWF0aC5tYXgocDFbMV0sIHAyWzFdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8g5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5VcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIHZhciBuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBpZiAobiA8PSAyKSB7XG4gICAgICAgIC8vIHN2ZyDkuK3ngrnlsI/kuo4gMyDkuKrml7bvvIzkuI3mmL7npLrvvIzkuZ/ml6Dms5Xooqvmi77lj5ZcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YXIgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG4gICAgICAgIGlmIChvblNlZ21lbnQocDEsIHAyLCBbeCwgeV0pKSB7XG4gICAgICAgICAgICAvLyDngrnlnKjlpJrovrnlvaLkuIDmnaHovrnkuIpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgICAgIC8vIOWQjuS4gOS4quWIpOaWreiiq+a1i+eCuSDlnKgg5bCE57q/5LiO6L655Lqk54K5IOeahOW3pui+uVxuICAgICAgICBpZiAoZGNtcChwMVsxXSAtIHkpID4gMCAhPT0gZGNtcChwMlsxXSAtIHkpID4gMCAmJlxuICAgICAgICAgICAgZGNtcCh4IC0gKCh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pKSAvIChwMVsxXSAtIHAyWzFdKSAtIHAxWzBdKSA8IDApIHtcbiAgICAgICAgICAgIGlzSGl0ID0gIWlzSGl0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc0hpdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvaW50LWluLXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/point-in-polygon.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/arc-2-cubic.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/arc-2-cubic.js ***! \*****************************************************************************************/ /*! exports provided: arcToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"arcToCubic\", function() { return arcToCubic; });\nvar TAU = Math.PI * 2;\nvar mapToEllipse = function (_a, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _a.x, y = _a.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function (ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ];\n};\nvar vectorAngle = function (ux, uy, vx, vy) {\n var sign = (ux * vy - uy * vx < 0) ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function (px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq);\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= (rxsq * pypsq) + (rysq * pxpsq);\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function (_a) {\n var px = _a.px, py = _a.py, cx = _a.cx, cy = _a.cy, rx = _a.rx, ry = _a.ry, _b = _a.xAxisRotation, xAxisRotation = _b === void 0 ? 0 : _b, _c = _a.largeArcFlag, largeArcFlag = _c === void 0 ? 0 : _c, _d = _a.sweepFlag, sweepFlag = _d === void 0 ? 0 : _d;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _e = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp), centerx = _e[0], centery = _e[1], ang1 = _e[2], ang2 = _e[3];\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _a = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery), x1 = _a.x, y1 = _a.y;\n var _b = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery), x2 = _b.x, y2 = _b.y;\n var _c = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery), x = _c.x, y = _c.y;\n return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n });\n};\nfunction arcToCubic(x1, y1, rx, ry, angle, LAF, SF, x2, y2) {\n var curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx: rx,\n ry: ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n return curves.reduce(function (prev, cur) {\n var x1 = cur.x1, y1 = cur.y1, x2 = cur.x2, y2 = cur.y2, x = cur.x, y = cur.y;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, []);\n}\n//# sourceMappingURL=arc-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL2FyYy0yLWN1YmljLmpzPzA3ODgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJDQUEyQztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkNBQTJDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL2FyYy0yLWN1YmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFRBVSA9IE1hdGguUEkgKiAyO1xudmFyIG1hcFRvRWxsaXBzZSA9IGZ1bmN0aW9uIChfYSwgcngsIHJ5LCBjb3NwaGksIHNpbnBoaSwgY2VudGVyeCwgY2VudGVyeSkge1xuICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgeCAqPSByeDtcbiAgICB5ICo9IHJ5O1xuICAgIHZhciB4cCA9IGNvc3BoaSAqIHggLSBzaW5waGkgKiB5O1xuICAgIHZhciB5cCA9IHNpbnBoaSAqIHggKyBjb3NwaGkgKiB5O1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHhwICsgY2VudGVyeCxcbiAgICAgICAgeTogeXAgKyBjZW50ZXJ5XG4gICAgfTtcbn07XG52YXIgYXBwcm94VW5pdEFyYyA9IGZ1bmN0aW9uIChhbmcxLCBhbmcyKSB7XG4gICAgLy8gSWYgOTAgZGVncmVlIGNpcmN1bGFyIGFyYywgdXNlIGEgY29uc3RhbnRcbiAgICAvLyBhcyBkZXJpdmVkIGZyb20gaHR0cDovL3NwZW5jZXJtb3J0ZW5zZW4uY29tL2FydGljbGVzL2Jlemllci1jaXJjbGVcbiAgICB2YXIgYSA9IGFuZzIgPT09IDEuNTcwNzk2MzI2Nzk0ODk2NlxuICAgICAgICA/IDAuNTUxOTE1MDI0NDk0XG4gICAgICAgIDogYW5nMiA9PT0gLTEuNTcwNzk2MzI2Nzk0ODk2NlxuICAgICAgICAgICAgPyAtMC41NTE5MTUwMjQ0OTRcbiAgICAgICAgICAgIDogNCAvIDMgKiBNYXRoLnRhbihhbmcyIC8gNCk7XG4gICAgdmFyIHgxID0gTWF0aC5jb3MoYW5nMSk7XG4gICAgdmFyIHkxID0gTWF0aC5zaW4oYW5nMSk7XG4gICAgdmFyIHgyID0gTWF0aC5jb3MoYW5nMSArIGFuZzIpO1xuICAgIHZhciB5MiA9IE1hdGguc2luKGFuZzEgKyBhbmcyKTtcbiAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgICB4OiB4MSAtIHkxICogYSxcbiAgICAgICAgICAgIHk6IHkxICsgeDEgKiBhXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHg6IHgyICsgeTIgKiBhLFxuICAgICAgICAgICAgeTogeTIgLSB4MiAqIGFcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgeDogeDIsXG4gICAgICAgICAgICB5OiB5MlxuICAgICAgICB9XG4gICAgXTtcbn07XG52YXIgdmVjdG9yQW5nbGUgPSBmdW5jdGlvbiAodXgsIHV5LCB2eCwgdnkpIHtcbiAgICB2YXIgc2lnbiA9ICh1eCAqIHZ5IC0gdXkgKiB2eCA8IDApID8gLTEgOiAxO1xuICAgIHZhciBkb3QgPSB1eCAqIHZ4ICsgdXkgKiB2eTtcbiAgICBpZiAoZG90ID4gMSkge1xuICAgICAgICBkb3QgPSAxO1xuICAgIH1cbiAgICBpZiAoZG90IDwgLTEpIHtcbiAgICAgICAgZG90ID0gLTE7XG4gICAgfVxuICAgIHJldHVybiBzaWduICogTWF0aC5hY29zKGRvdCk7XG59O1xudmFyIGdldEFyY0NlbnRlciA9IGZ1bmN0aW9uIChweCwgcHksIGN4LCBjeSwgcngsIHJ5LCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgc2lucGhpLCBjb3NwaGksIHB4cCwgcHlwKSB7XG4gICAgdmFyIHJ4c3EgPSBNYXRoLnBvdyhyeCwgMik7XG4gICAgdmFyIHJ5c3EgPSBNYXRoLnBvdyhyeSwgMik7XG4gICAgdmFyIHB4cHNxID0gTWF0aC5wb3cocHhwLCAyKTtcbiAgICB2YXIgcHlwc3EgPSBNYXRoLnBvdyhweXAsIDIpO1xuICAgIHZhciByYWRpY2FudCA9IChyeHNxICogcnlzcSkgLSAocnhzcSAqIHB5cHNxKSAtIChyeXNxICogcHhwc3EpO1xuICAgIGlmIChyYWRpY2FudCA8IDApIHtcbiAgICAgICAgcmFkaWNhbnQgPSAwO1xuICAgIH1cbiAgICByYWRpY2FudCAvPSAocnhzcSAqIHB5cHNxKSArIChyeXNxICogcHhwc3EpO1xuICAgIHJhZGljYW50ID0gTWF0aC5zcXJ0KHJhZGljYW50KSAqIChsYXJnZUFyY0ZsYWcgPT09IHN3ZWVwRmxhZyA/IC0xIDogMSk7XG4gICAgdmFyIGNlbnRlcnhwID0gcmFkaWNhbnQgKiByeCAvIHJ5ICogcHlwO1xuICAgIHZhciBjZW50ZXJ5cCA9IHJhZGljYW50ICogLXJ5IC8gcnggKiBweHA7XG4gICAgdmFyIGNlbnRlcnggPSBjb3NwaGkgKiBjZW50ZXJ4cCAtIHNpbnBoaSAqIGNlbnRlcnlwICsgKHB4ICsgY3gpIC8gMjtcbiAgICB2YXIgY2VudGVyeSA9IHNpbnBoaSAqIGNlbnRlcnhwICsgY29zcGhpICogY2VudGVyeXAgKyAocHkgKyBjeSkgLyAyO1xuICAgIHZhciB2eDEgPSAocHhwIC0gY2VudGVyeHApIC8gcng7XG4gICAgdmFyIHZ5MSA9IChweXAgLSBjZW50ZXJ5cCkgLyByeTtcbiAgICB2YXIgdngyID0gKC1weHAgLSBjZW50ZXJ4cCkgLyByeDtcbiAgICB2YXIgdnkyID0gKC1weXAgLSBjZW50ZXJ5cCkgLyByeTtcbiAgICB2YXIgYW5nMSA9IHZlY3RvckFuZ2xlKDEsIDAsIHZ4MSwgdnkxKTtcbiAgICB2YXIgYW5nMiA9IHZlY3RvckFuZ2xlKHZ4MSwgdnkxLCB2eDIsIHZ5Mik7XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMCAmJiBhbmcyID4gMCkge1xuICAgICAgICBhbmcyIC09IFRBVTtcbiAgICB9XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMSAmJiBhbmcyIDwgMCkge1xuICAgICAgICBhbmcyICs9IFRBVTtcbiAgICB9XG4gICAgcmV0dXJuIFtjZW50ZXJ4LCBjZW50ZXJ5LCBhbmcxLCBhbmcyXTtcbn07XG52YXIgYXJjVG9CZXppZXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgcHggPSBfYS5weCwgcHkgPSBfYS5weSwgY3ggPSBfYS5jeCwgY3kgPSBfYS5jeSwgcnggPSBfYS5yeCwgcnkgPSBfYS5yeSwgX2IgPSBfYS54QXhpc1JvdGF0aW9uLCB4QXhpc1JvdGF0aW9uID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYiwgX2MgPSBfYS5sYXJnZUFyY0ZsYWcsIGxhcmdlQXJjRmxhZyA9IF9jID09PSB2b2lkIDAgPyAwIDogX2MsIF9kID0gX2Euc3dlZXBGbGFnLCBzd2VlcEZsYWcgPSBfZCA9PT0gdm9pZCAwID8gMCA6IF9kO1xuICAgIHZhciBjdXJ2ZXMgPSBbXTtcbiAgICBpZiAocnggPT09IDAgfHwgcnkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFt7IHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAwLCB4OiBjeCwgeTogY3kgfV07XG4gICAgfVxuICAgIHZhciBzaW5waGkgPSBNYXRoLnNpbih4QXhpc1JvdGF0aW9uICogVEFVIC8gMzYwKTtcbiAgICB2YXIgY29zcGhpID0gTWF0aC5jb3MoeEF4aXNSb3RhdGlvbiAqIFRBVSAvIDM2MCk7XG4gICAgdmFyIHB4cCA9IGNvc3BoaSAqIChweCAtIGN4KSAvIDIgKyBzaW5waGkgKiAocHkgLSBjeSkgLyAyO1xuICAgIHZhciBweXAgPSAtc2lucGhpICogKHB4IC0gY3gpIC8gMiArIGNvc3BoaSAqIChweSAtIGN5KSAvIDI7XG4gICAgaWYgKHB4cCA9PT0gMCAmJiBweXAgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFt7IHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAwLCB4OiBjeCwgeTogY3kgfV07XG4gICAgfVxuICAgIHJ4ID0gTWF0aC5hYnMocngpO1xuICAgIHJ5ID0gTWF0aC5hYnMocnkpO1xuICAgIHZhciBsYW1iZGEgPSBNYXRoLnBvdyhweHAsIDIpIC8gTWF0aC5wb3cocngsIDIpICtcbiAgICAgICAgTWF0aC5wb3cocHlwLCAyKSAvIE1hdGgucG93KHJ5LCAyKTtcbiAgICBpZiAobGFtYmRhID4gMSkge1xuICAgICAgICByeCAqPSBNYXRoLnNxcnQobGFtYmRhKTtcbiAgICAgICAgcnkgKj0gTWF0aC5zcXJ0KGxhbWJkYSk7XG4gICAgfVxuICAgIHZhciBfZSA9IGdldEFyY0NlbnRlcihweCwgcHksIGN4LCBjeSwgcngsIHJ5LCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZywgc2lucGhpLCBjb3NwaGksIHB4cCwgcHlwKSwgY2VudGVyeCA9IF9lWzBdLCBjZW50ZXJ5ID0gX2VbMV0sIGFuZzEgPSBfZVsyXSwgYW5nMiA9IF9lWzNdO1xuICAgIC8vIElmICdhbmcyJyA9PSA5MC4wMDAwMDAwMDAxLCB0aGVuIGByYXRpb2Agd2lsbCBldmFsdWF0ZSB0b1xuICAgIC8vIDEuMDAwMDAwMDAwMS4gVGhpcyBjYXVzZXMgYHNlZ21lbnRzYCB0byBiZSBncmVhdGVyIHRoYW4gb25lLCB3aGljaCBpcyBhblxuICAgIC8vIHVuZWNlc3Nhcnkgc3BsaXQsIGFuZCBhZGRzIGV4dHJhIHBvaW50cyB0byB0aGUgYmV6aWVyIGN1cnZlLiBUbyBhbGxldmlhdGVcbiAgICAvLyB0aGlzIGlzc3VlLCB3ZSByb3VuZCB0byAxLjAgd2hlbiB0aGUgcmF0aW8gaXMgY2xvc2UgdG8gMS4wLlxuICAgIHZhciByYXRpbyA9IE1hdGguYWJzKGFuZzIpIC8gKFRBVSAvIDQpO1xuICAgIGlmIChNYXRoLmFicygxLjAgLSByYXRpbykgPCAwLjAwMDAwMDEpIHtcbiAgICAgICAgcmF0aW8gPSAxLjA7XG4gICAgfVxuICAgIHZhciBzZWdtZW50cyA9IE1hdGgubWF4KE1hdGguY2VpbChyYXRpbyksIDEpO1xuICAgIGFuZzIgLz0gc2VnbWVudHM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50czsgaSsrKSB7XG4gICAgICAgIGN1cnZlcy5wdXNoKGFwcHJveFVuaXRBcmMoYW5nMSwgYW5nMikpO1xuICAgICAgICBhbmcxICs9IGFuZzI7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZXMubWFwKGZ1bmN0aW9uIChjdXJ2ZSkge1xuICAgICAgICB2YXIgX2EgPSBtYXBUb0VsbGlwc2UoY3VydmVbMF0sIHJ4LCByeSwgY29zcGhpLCBzaW5waGksIGNlbnRlcngsIGNlbnRlcnkpLCB4MSA9IF9hLngsIHkxID0gX2EueTtcbiAgICAgICAgdmFyIF9iID0gbWFwVG9FbGxpcHNlKGN1cnZlWzFdLCByeCwgcnksIGNvc3BoaSwgc2lucGhpLCBjZW50ZXJ4LCBjZW50ZXJ5KSwgeDIgPSBfYi54LCB5MiA9IF9iLnk7XG4gICAgICAgIHZhciBfYyA9IG1hcFRvRWxsaXBzZShjdXJ2ZVsyXSwgcngsIHJ5LCBjb3NwaGksIHNpbnBoaSwgY2VudGVyeCwgY2VudGVyeSksIHggPSBfYy54LCB5ID0gX2MueTtcbiAgICAgICAgcmV0dXJuIHsgeDE6IHgxLCB5MTogeTEsIHgyOiB4MiwgeTI6IHkyLCB4OiB4LCB5OiB5IH07XG4gICAgfSk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGFyY1RvQ3ViaWMoeDEsIHkxLCByeCwgcnksIGFuZ2xlLCBMQUYsIFNGLCB4MiwgeTIpIHtcbiAgICB2YXIgY3VydmVzID0gYXJjVG9CZXppZXIoe1xuICAgICAgICBweDogeDEsXG4gICAgICAgIHB5OiB5MSxcbiAgICAgICAgY3g6IHgyLFxuICAgICAgICBjeTogeTIsXG4gICAgICAgIHJ4OiByeCxcbiAgICAgICAgcnk6IHJ5LFxuICAgICAgICB4QXhpc1JvdGF0aW9uOiBhbmdsZSxcbiAgICAgICAgbGFyZ2VBcmNGbGFnOiBMQUYsXG4gICAgICAgIHN3ZWVwRmxhZzogU0YsXG4gICAgfSk7XG4gICAgcmV0dXJuIGN1cnZlcy5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICB2YXIgeDEgPSBjdXIueDEsIHkxID0gY3VyLnkxLCB4MiA9IGN1ci54MiwgeTIgPSBjdXIueTIsIHggPSBjdXIueCwgeSA9IGN1ci55O1xuICAgICAgICBwcmV2LnB1c2goeDEsIHkxLCB4MiwgeTIsIHgsIHkpO1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmMtMi1jdWJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/arc-2-cubic.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/line-2-cubic.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/line-2-cubic.js ***! \******************************************************************************************/ /*! exports provided: lineToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineToCubic\", function() { return lineToCubic; });\n// export function getPointAtSegLength(p1x: number, p1y: number, c1x: number, c1y: number, c2x: number, c2y: number, p2x: number, p2y: number, t: number) {\n// const t1 = 1 - t;\n// return {\n// x: (t1 ** 3) * p1x\n// + t1 * t1 * 3 * t * c1x\n// + t1 * 3 * t * t * c2x\n// + (t ** 3) * p2x,\n// y: (t1 ** 3) * p1y\n// + t1 * t1 * 3 * t * c1y\n// + t1 * 3 * t * t * c2y\n// + (t ** 3) * p2y,\n// };\n// }\n// export function midPoint(a: number[], b: number[], t: number) {\n// const ax = a[0];\n// const ay = a[1];\n// const bx = b[0];\n// const by = b[1];\n// return [ax + (bx - ax) * t, ay + (by - ay) * t];\n// }\nfunction lineToCubic(x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n // const t = 0.5;\n // const p0 = [x1, y1];\n // const p1 = [x2, y2];\n // const p2 = midPoint(p0, p1, t);\n // const p3 = midPoint(p1, p2, t);\n // const p4 = midPoint(p2, p3, t);\n // const p5 = midPoint(p3, p4, t);\n // const p6 = midPoint(p4, p5, t);\n // const cp1 = getPointAtSegLength.apply(0, p0.concat(p2, p4, p6, t));\n // const cp2 = getPointAtSegLength.apply(0, p6.concat(p5, p3, p1, 0));\n // return [cp1.x, cp1.y, cp2.x, cp2.y, x2, y2];\n}\n//# sourceMappingURL=line-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL2xpbmUtMi1jdWJpYy5qcz82NTdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9wYXRoLXV0aWxAMi4wLjE1QEBhbnR2L3BhdGgtdXRpbC9lc20vcHJvY2Vzcy9saW5lLTItY3ViaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRBdFNlZ0xlbmd0aChwMXg6IG51bWJlciwgcDF5OiBudW1iZXIsIGMxeDogbnVtYmVyLCBjMXk6IG51bWJlciwgYzJ4OiBudW1iZXIsIGMyeTogbnVtYmVyLCBwMng6IG51bWJlciwgcDJ5OiBudW1iZXIsIHQ6IG51bWJlcikge1xuLy8gICBjb25zdCB0MSA9IDEgLSB0O1xuLy8gICByZXR1cm4ge1xuLy8gICAgIHg6ICh0MSAqKiAzKSAqIHAxeFxuLy8gICAgICAgKyB0MSAqIHQxICogMyAqIHQgKiBjMXhcbi8vICAgICAgICsgdDEgKiAzICogdCAqIHQgKiBjMnhcbi8vICAgICAgICsgKHQgKiogMykgKiBwMngsXG4vLyAgICAgeTogKHQxICoqIDMpICogcDF5XG4vLyAgICAgICArIHQxICogdDEgKiAzICogdCAqIGMxeVxuLy8gICAgICAgKyB0MSAqIDMgKiB0ICogdCAqIGMyeVxuLy8gICAgICAgKyAodCAqKiAzKSAqIHAyeSxcbi8vICAgfTtcbi8vIH1cbi8vIGV4cG9ydCBmdW5jdGlvbiBtaWRQb2ludChhOiBudW1iZXJbXSwgYjogbnVtYmVyW10sIHQ6IG51bWJlcikge1xuLy8gICBjb25zdCBheCA9IGFbMF07XG4vLyAgIGNvbnN0IGF5ID0gYVsxXTtcbi8vICAgY29uc3QgYnggPSBiWzBdO1xuLy8gICBjb25zdCBieSA9IGJbMV07XG4vLyAgIHJldHVybiBbYXggKyAoYnggLSBheCkgKiB0LCBheSArIChieSAtIGF5KSAqIHRdO1xuLy8gfVxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVUb0N1YmljKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuIFt4MSwgeTEsIHgyLCB5MiwgeDIsIHkyXTtcbiAgICAvLyBjb25zdCB0ID0gMC41O1xuICAgIC8vIGNvbnN0IHAwID0gW3gxLCB5MV07XG4gICAgLy8gY29uc3QgcDEgPSBbeDIsIHkyXTtcbiAgICAvLyBjb25zdCBwMiA9IG1pZFBvaW50KHAwLCBwMSwgdCk7XG4gICAgLy8gY29uc3QgcDMgPSBtaWRQb2ludChwMSwgcDIsIHQpO1xuICAgIC8vIGNvbnN0IHA0ID0gbWlkUG9pbnQocDIsIHAzLCB0KTtcbiAgICAvLyBjb25zdCBwNSA9IG1pZFBvaW50KHAzLCBwNCwgdCk7XG4gICAgLy8gY29uc3QgcDYgPSBtaWRQb2ludChwNCwgcDUsIHQpO1xuICAgIC8vIGNvbnN0IGNwMSA9IGdldFBvaW50QXRTZWdMZW5ndGguYXBwbHkoMCwgcDAuY29uY2F0KHAyLCBwNCwgcDYsIHQpKTtcbiAgICAvLyBjb25zdCBjcDIgPSBnZXRQb2ludEF0U2VnTGVuZ3RoLmFwcGx5KDAsIHA2LmNvbmNhdChwNSwgcDMsIHAxLCAwKSk7XG4gICAgLy8gcmV0dXJuIFtjcDEueCwgY3AxLnksIGNwMi54LCBjcDIueSwgeDIsIHkyXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUtMi1jdWJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/line-2-cubic.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/quad-2-cubic.js": /*!******************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/quad-2-cubic.js ***! \******************************************************************************************/ /*! exports provided: quadToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadToCubic\", function() { return quadToCubic; });\nfunction quadToCubic(x1, y1, qx, qy, x2, y2) {\n var r13 = 1 / 3;\n var r23 = 2 / 3;\n return [\n r13 * x1 + r23 * qx,\n r13 * y1 + r23 * qy,\n r13 * x2 + r23 * qx,\n r13 * y2 + r23 * qy,\n x2, y2, // x,y\n ];\n}\n//# sourceMappingURL=quad-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL3F1YWQtMi1jdWJpYy5qcz85NmMzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL3F1YWQtMi1jdWJpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBxdWFkVG9DdWJpYyh4MSwgeTEsIHF4LCBxeSwgeDIsIHkyKSB7XG4gICAgdmFyIHIxMyA9IDEgLyAzO1xuICAgIHZhciByMjMgPSAyIC8gMztcbiAgICByZXR1cm4gW1xuICAgICAgICByMTMgKiB4MSArIHIyMyAqIHF4LFxuICAgICAgICByMTMgKiB5MSArIHIyMyAqIHF5LFxuICAgICAgICByMTMgKiB4MiArIHIyMyAqIHF4LFxuICAgICAgICByMTMgKiB5MiArIHIyMyAqIHF5LFxuICAgICAgICB4MiwgeTIsIC8vIHgseVxuICAgIF07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWFkLTItY3ViaWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/quad-2-cubic.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/segment-2-cubic.js": /*!*********************************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/segment-2-cubic.js ***! \*********************************************************************************************/ /*! exports provided: segmentToCubic */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"segmentToCubic\", function() { return segmentToCubic; });\n/* harmony import */ var _arc_2_cubic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc-2-cubic */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/arc-2-cubic.js\");\n/* harmony import */ var _quad_2_cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad-2-cubic */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/quad-2-cubic.js\");\n/* harmony import */ var _line_2_cubic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line-2-cubic */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/line-2-cubic.js\");\n\n\n\nfunction segmentToCubic(segment, params) {\n if ('TQ'.indexOf(segment[0]) < 0) {\n params.qx = null;\n params.qy = null;\n }\n var _a = segment.slice(1), s1 = _a[0], s2 = _a[1];\n switch (segment[0]) {\n case 'M':\n params.x = s1;\n params.y = s2;\n return segment;\n case 'A':\n return ['C'].concat(_arc_2_cubic__WEBPACK_IMPORTED_MODULE_0__[\"arcToCubic\"].apply(0, [params.x1, params.y1].concat(segment.slice(1))));\n case 'Q':\n params.qx = s1;\n params.qy = s2;\n return ['C'].concat(_quad_2_cubic__WEBPACK_IMPORTED_MODULE_1__[\"quadToCubic\"].apply(0, [params.x1, params.y1].concat(segment.slice(1))));\n case 'L':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, segment[1], segment[2]));\n case 'H':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, segment[1], params.y1));\n case 'V':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, params.x1, segment[1]));\n case 'Z':\n // @ts-ignore\n return ['C'].concat(Object(_line_2_cubic__WEBPACK_IMPORTED_MODULE_2__[\"lineToCubic\"])(params.x1, params.y1, params.x, params.y));\n default:\n }\n return segment;\n}\n//# sourceMappingURL=segment-2-cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9wcm9jZXNzL3NlZ21lbnQtMi1jdWJpYy5qcz83MWM0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDRTtBQUNBO0FBQ3RDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx1REFBVTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MseURBQVc7QUFDM0M7QUFDQTtBQUNBLGdDQUFnQyxpRUFBVztBQUMzQztBQUNBO0FBQ0EsZ0NBQWdDLGlFQUFXO0FBQzNDO0FBQ0E7QUFDQSxnQ0FBZ0MsaUVBQVc7QUFDM0M7QUFDQTtBQUNBLGdDQUFnQyxpRUFBVztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9wYXRoLXV0aWxAMi4wLjE1QEBhbnR2L3BhdGgtdXRpbC9lc20vcHJvY2Vzcy9zZWdtZW50LTItY3ViaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcmNUb0N1YmljIH0gZnJvbSAnLi9hcmMtMi1jdWJpYyc7XG5pbXBvcnQgeyBxdWFkVG9DdWJpYyB9IGZyb20gJy4vcXVhZC0yLWN1YmljJztcbmltcG9ydCB7IGxpbmVUb0N1YmljIH0gZnJvbSAnLi9saW5lLTItY3ViaWMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlZ21lbnRUb0N1YmljKHNlZ21lbnQsIHBhcmFtcykge1xuICAgIGlmICgnVFEnLmluZGV4T2Yoc2VnbWVudFswXSkgPCAwKSB7XG4gICAgICAgIHBhcmFtcy5xeCA9IG51bGw7XG4gICAgICAgIHBhcmFtcy5xeSA9IG51bGw7XG4gICAgfVxuICAgIHZhciBfYSA9IHNlZ21lbnQuc2xpY2UoMSksIHMxID0gX2FbMF0sIHMyID0gX2FbMV07XG4gICAgc3dpdGNoIChzZWdtZW50WzBdKSB7XG4gICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgcGFyYW1zLnggPSBzMTtcbiAgICAgICAgICAgIHBhcmFtcy55ID0gczI7XG4gICAgICAgICAgICByZXR1cm4gc2VnbWVudDtcbiAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGFyY1RvQ3ViaWMuYXBwbHkoMCwgW3BhcmFtcy54MSwgcGFyYW1zLnkxXS5jb25jYXQoc2VnbWVudC5zbGljZSgxKSkpKTtcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICBwYXJhbXMucXggPSBzMTtcbiAgICAgICAgICAgIHBhcmFtcy5xeSA9IHMyO1xuICAgICAgICAgICAgcmV0dXJuIFsnQyddLmNvbmNhdChxdWFkVG9DdWJpYy5hcHBseSgwLCBbcGFyYW1zLngxLCBwYXJhbXMueTFdLmNvbmNhdChzZWdtZW50LnNsaWNlKDEpKSkpO1xuICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBbJ0MnXS5jb25jYXQobGluZVRvQ3ViaWMocGFyYW1zLngxLCBwYXJhbXMueTEsIHNlZ21lbnRbMV0sIHNlZ21lbnRbMl0pKTtcbiAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGxpbmVUb0N1YmljKHBhcmFtcy54MSwgcGFyYW1zLnkxLCBzZWdtZW50WzFdLCBwYXJhbXMueTEpKTtcbiAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGxpbmVUb0N1YmljKHBhcmFtcy54MSwgcGFyYW1zLnkxLCBwYXJhbXMueDEsIHNlZ21lbnRbMV0pKTtcbiAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gWydDJ10uY29uY2F0KGxpbmVUb0N1YmljKHBhcmFtcy54MSwgcGFyYW1zLnkxLCBwYXJhbXMueCwgcGFyYW1zLnkpKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWdtZW50LTItY3ViaWMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/process/segment-2-cubic.js\n"); /***/ }), /***/ "./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/rect-path.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/rect-path.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rectPath; });\nfunction rectPath(x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + (+r), y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n return [\n ['M', x, y],\n ['l', w, 0],\n ['l', 0, h],\n ['l', -w, 0],\n ['z'],\n ];\n // res.parsePathArray = parsePathArray;\n}\n//# sourceMappingURL=rect-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9yZWN0LXBhdGguanM/MmNkNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3BhdGgtdXRpbEAyLjAuMTVAQGFudHYvcGF0aC11dGlsL2VzbS9yZWN0LXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0UGF0aCh4LCB5LCB3LCBoLCByKSB7XG4gICAgaWYgKHIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFsnTScsICt4ICsgKCtyKSwgeV0sXG4gICAgICAgICAgICBbJ2wnLCB3IC0gciAqIDIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCBoIC0gciAqIDJdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgLXIsIHJdLFxuICAgICAgICAgICAgWydsJywgciAqIDIgLSB3LCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDAsIDEsIC1yLCAtcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCByICogMiAtIGhdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgLXJdLFxuICAgICAgICAgICAgWyd6J10sXG4gICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIFsnTScsIHgsIHldLFxuICAgICAgICBbJ2wnLCB3LCAwXSxcbiAgICAgICAgWydsJywgMCwgaF0sXG4gICAgICAgIFsnbCcsIC13LCAwXSxcbiAgICAgICAgWyd6J10sXG4gICAgXTtcbiAgICAvLyByZXMucGFyc2VQYXRoQXJyYXkgPSBwYXJzZVBhdGhBcnJheTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlY3QtcGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/rect-path.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _tick_method_register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tick-method/register */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/register.js\");\n\n\nvar Scale = /** @class */ (function () {\n function Scale(cfg) {\n /**\n * 度量的类型\n */\n this.type = 'base';\n /**\n * 是否分类类型的度量\n */\n this.isCategory = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n this.isLinear = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n this.isContinuous = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n this.isIdentity = false;\n this.values = [];\n this.range = [0, 1];\n this.ticks = [];\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n Scale.prototype.translate = function (v) {\n return v;\n };\n /** 重新初始化 */\n Scale.prototype.change = function (cfg) {\n // 覆盖配置项,而不替代\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(this.__cfg__, cfg);\n this.init();\n };\n Scale.prototype.clone = function () {\n return this.constructor(this.__cfg__);\n };\n /** 获取坐标轴需要的ticks */\n Scale.prototype.getTicks = function () {\n var _this = this;\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"map\"])(this.ticks, function (tick, idx) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick;\n }\n return {\n text: _this.getText(tick, idx),\n tickValue: tick,\n value: _this.scale(tick), // scaled\n };\n });\n };\n /** 获取Tick的格式化结果 */\n Scale.prototype.getText = function (value, key) {\n var formatter = this.formatter;\n var res = formatter ? formatter(value, key) : value;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(res) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(res.toString)) {\n return '';\n }\n return res.toString();\n };\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n Scale.prototype.getConfig = function (key) {\n return this.__cfg__[key];\n };\n // scale初始化\n Scale.prototype.init = function () {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"assign\"])(this, this.__cfg__);\n this.setDomain();\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEmpty\"])(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n };\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n Scale.prototype.initCfg = function () { };\n Scale.prototype.setDomain = function () { };\n Scale.prototype.calculateTicks = function () {\n var tickMethod = this.tickMethod;\n var ticks = [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(tickMethod)) {\n var method = Object(_tick_method_register__WEBPACK_IMPORTED_MODULE_1__[\"getTickMethod\"])(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n }\n else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n };\n // range 的最小值\n Scale.prototype.rangeMin = function () {\n return this.range[0];\n };\n // range 的最大值\n Scale.prototype.rangeMax = function () {\n return this.range[1];\n };\n /** 定义域转 0~1 */\n Scale.prototype.calcPercent = function (value, min, max) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n };\n /** 0~1转定义域 */\n Scale.prototype.calcValue = function (percent, min, max) {\n return min + percent * (max - min);\n };\n return Scale;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Scale);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vYmFzZS5qcz80ODc2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFtRztBQUM1QztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFNO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQUc7QUFDbEIsZ0JBQWdCLDJEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQUssVUFBVSw2REFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEseURBQU07QUFDZDtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0MsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEIseUJBQXlCLDJFQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnbiwgaXNFbXB0eSwgaXNGdW5jdGlvbiwgaXNOaWwsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcsIG1hcCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0VGlja01ldGhvZCB9IGZyb20gJy4vdGljay1tZXRob2QvcmVnaXN0ZXInO1xudmFyIFNjYWxlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNjYWxlKGNmZykge1xuICAgICAgICAvKipcbiAgICAgICAgICog5bqm6YeP55qE57G75Z6LXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnR5cGUgPSAnYmFzZSc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbliIbnsbvnsbvlnovnmoTluqbph49cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaXNDYXRlZ29yeSA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICog5piv5ZCm57q/5oCn5bqm6YeP77yM5pyJbGluZWFyLCB0aW1lIOW6pumHj1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pc0xpbmVhciA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICog5piv5ZCm6L+e57ut57G75Z6L55qE5bqm6YeP77yMbGluZWFyLHRpbWUsbG9nLCBwb3csIHF1YW50aWxlLCBxdWFudGl6ZSDpg73mlK/mjIFcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaXNDb250aW51b3VzID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbmmK/luLjph4/nmoTluqbph4/vvIzkvKDlhaXlkozkvKDlh7rkuIDoh7RcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaXNJZGVudGl0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLnJhbmdlID0gWzAsIDFdO1xuICAgICAgICB0aGlzLnRpY2tzID0gW107XG4gICAgICAgIHRoaXMuX19jZmdfXyA9IGNmZztcbiAgICAgICAgdGhpcy5pbml0Q2ZnKCk7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgICAvLyDlr7nkuo7ljp/lp4vlgLznmoTlv4XopoHovazmjaLvvIzlpoLliIbnsbvjgIHml7bpl7TlrZfmrrXpnIDovazmjaLmiJDmlbDlgLzvvIznlKh0cmFuc2Zvcm0vbWFw5ZG95ZCN5Y+v6IO95pu05aW9XG4gICAgU2NhbGUucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH07XG4gICAgLyoqIOmHjeaWsOWIneWni+WMliAqL1xuICAgIFNjYWxlLnByb3RvdHlwZS5jaGFuZ2UgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIC8vIOimhueblumFjee9rumhue+8jOiAjOS4jeabv+S7o1xuICAgICAgICBhc3NpZ24odGhpcy5fX2NmZ19fLCBjZmcpO1xuICAgICAgICB0aGlzLmluaXQoKTtcbiAgICB9O1xuICAgIFNjYWxlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IodGhpcy5fX2NmZ19fKTtcbiAgICB9O1xuICAgIC8qKiDojrflj5blnZDmoIfovbTpnIDopoHnmoR0aWNrcyAqL1xuICAgIFNjYWxlLnByb3RvdHlwZS5nZXRUaWNrcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG1hcCh0aGlzLnRpY2tzLCBmdW5jdGlvbiAodGljaywgaWR4KSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodGljaykpIHtcbiAgICAgICAgICAgICAgICAvLyDku4XlvZPnrKblkIhUaWNr57G75Z6L5pe25omN5pyJ5oSP5LmJXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRleHQ6IF90aGlzLmdldFRleHQodGljaywgaWR4KSxcbiAgICAgICAgICAgICAgICB0aWNrVmFsdWU6IHRpY2ssXG4gICAgICAgICAgICAgICAgdmFsdWU6IF90aGlzLnNjYWxlKHRpY2spLCAvLyBzY2FsZWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqIOiOt+WPllRpY2vnmoTmoLzlvI/ljJbnu5PmnpwgKi9cbiAgICBTY2FsZS5wcm90b3R5cGUuZ2V0VGV4dCA9IGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgIHZhciBmb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlcjtcbiAgICAgICAgdmFyIHJlcyA9IGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWx1ZSwga2V5KSA6IHZhbHVlO1xuICAgICAgICBpZiAoaXNOaWwocmVzKSB8fCAhaXNGdW5jdGlvbihyZXMudG9TdHJpbmcpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcy50b1N0cmluZygpO1xuICAgIH07XG4gICAgLy8g6I635Y+W6YWN572u6aG55Lit55qE5YC877yM5b2T5YmNIHNjYWxlIOS4iueahOWAvOWPr+iDveS8muiiq+S/ruaUuVxuICAgIFNjYWxlLnByb3RvdHlwZS5nZXRDb25maWcgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fY2ZnX19ba2V5XTtcbiAgICB9O1xuICAgIC8vIHNjYWxl5Yid5aeL5YyWXG4gICAgU2NhbGUucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2lnbih0aGlzLCB0aGlzLl9fY2ZnX18pO1xuICAgICAgICB0aGlzLnNldERvbWFpbigpO1xuICAgICAgICBpZiAoaXNFbXB0eSh0aGlzLmdldENvbmZpZygndGlja3MnKSkpIHtcbiAgICAgICAgICAgIHRoaXMudGlja3MgPSB0aGlzLmNhbGN1bGF0ZVRpY2tzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOWtkOexu+S4iuimhuebluafkOS6m+WxnuaAp++8jOS4jeiDveebtOaOpeWcqOexu+S4iuWjsOaYju+8jOWQpuWImeS8muiiq+imhuebllxuICAgIFNjYWxlLnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIFNjYWxlLnByb3RvdHlwZS5zZXREb21haW4gPSBmdW5jdGlvbiAoKSB7IH07XG4gICAgU2NhbGUucHJvdG90eXBlLmNhbGN1bGF0ZVRpY2tzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGlja01ldGhvZCA9IHRoaXMudGlja01ldGhvZDtcbiAgICAgICAgdmFyIHRpY2tzID0gW107XG4gICAgICAgIGlmIChpc1N0cmluZyh0aWNrTWV0aG9kKSkge1xuICAgICAgICAgICAgdmFyIG1ldGhvZCA9IGdldFRpY2tNZXRob2QodGlja01ldGhvZCk7XG4gICAgICAgICAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gbWV0aG9kIHRvIHRvIGNhbGN1bGF0ZSB0aWNrcyEnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpY2tzID0gbWV0aG9kKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24odGlja01ldGhvZCkpIHtcbiAgICAgICAgICAgIHRpY2tzID0gdGlja01ldGhvZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGlja3M7XG4gICAgfTtcbiAgICAvLyByYW5nZSDnmoTmnIDlsI/lgLxcbiAgICBTY2FsZS5wcm90b3R5cGUucmFuZ2VNaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlWzBdO1xuICAgIH07XG4gICAgLy8gcmFuZ2Ug55qE5pyA5aSn5YC8XG4gICAgU2NhbGUucHJvdG90eXBlLnJhbmdlTWF4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZVsxXTtcbiAgICB9O1xuICAgIC8qKiDlrprkuYnln5/ovawgMH4xICovXG4gICAgU2NhbGUucHJvdG90eXBlLmNhbGNQZXJjZW50ID0gZnVuY3Rpb24gKHZhbHVlLCBtaW4sIG1heCkge1xuICAgICAgICBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOYU47XG4gICAgfTtcbiAgICAvKiogMH4x6L2s5a6a5LmJ5Z+fICovXG4gICAgU2NhbGUucHJvdG90eXBlLmNhbGNWYWx1ZSA9IGZ1bmN0aW9uIChwZXJjZW50LCBtaW4sIG1heCkge1xuICAgICAgICByZXR1cm4gbWluICsgcGVyY2VudCAqIChtYXggLSBtaW4pO1xuICAgIH07XG4gICAgcmV0dXJuIFNjYWxlO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IFNjYWxlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/base.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/base.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js\");\n\n\n\n/**\n * 分类度量\n * @class\n */\nvar Category = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Category, _super);\n function Category() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'cat';\n _this.isCategory = true;\n return _this;\n }\n Category.prototype.buildIndexMap = function () {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (var i = 0; i < this.values.length; i++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n };\n Category.prototype.translate = function (value) {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n var idx = this.translateIndexMap.get(value);\n if (idx === undefined) {\n idx = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value) ? value : NaN;\n }\n return idx;\n };\n Category.prototype.scale = function (value) {\n var order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n var percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n };\n Category.prototype.invert = function (scaledValue) {\n var domainRange = this.max - this.min;\n var percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n var idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n };\n Category.prototype.getText = function (value) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var v = value;\n // value为index\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return _super.prototype.getText.apply(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([v], args, false));\n };\n // 复写属性\n Category.prototype.initCfg = function () {\n this.tickMethod = 'cat';\n };\n // 设置 min, max\n Category.prototype.setDomain = function () {\n // 用户有可能设置 min\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.getConfig('min'))) {\n this.min = 0;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.getConfig('max'))) {\n var size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n };\n return Category;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Category);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY2F0ZWdvcnkvYmFzZS5qcz9mYjUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ0o7QUFDbEI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix3QkFBd0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMkRBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQSxvREFBb0QsMkRBQWE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQUs7QUFDakI7QUFDQTtBQUNBLFlBQVksd0RBQUs7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJO0FBQ1MsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9jYXRlZ29yeS9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc05pbCwgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xuLyoqXG4gKiDliIbnsbvluqbph49cbiAqIEBjbGFzc1xuICovXG52YXIgQ2F0ZWdvcnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENhdGVnb3J5LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhdGVnb3J5KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdjYXQnO1xuICAgICAgICBfdGhpcy5pc0NhdGVnb3J5ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDYXRlZ29yeS5wcm90b3R5cGUuYnVpbGRJbmRleE1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRyYW5zbGF0ZUluZGV4TWFwKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUluZGV4TWFwID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgLy8g6YeN5paw5p6E5bu657yT5a2YXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVJbmRleE1hcC5zZXQodGhpcy52YWx1ZXNbaV0sIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDYXRlZ29yeS5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIC8vIOaMiemcgOaehOW7uiBtYXBcbiAgICAgICAgdGhpcy5idWlsZEluZGV4TWFwKCk7XG4gICAgICAgIC8vIOaJvuW+l+WIsFxuICAgICAgICB2YXIgaWR4ID0gdGhpcy50cmFuc2xhdGVJbmRleE1hcC5nZXQodmFsdWUpO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlkeCA9IGlzTnVtYmVyKHZhbHVlKSA/IHZhbHVlIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfTtcbiAgICBDYXRlZ29yeS5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIG9yZGVyID0gdGhpcy50cmFuc2xhdGUodmFsdWUpO1xuICAgICAgICAvLyDliIbnsbvmlbDmja7lhYHorrggMC41IOiMg+WbtOWGheiwg+aVtFxuICAgICAgICAvLyBpZiAob3JkZXIgPCB0aGlzLm1pbiAtIDAuNSB8fCBvcmRlciA+IHRoaXMubWF4ICsgMC41KSB7XG4gICAgICAgIC8vICAgcmV0dXJuIE5hTjtcbiAgICAgICAgLy8gfVxuICAgICAgICB2YXIgcGVyY2VudCA9IHRoaXMuY2FsY1BlcmNlbnQob3JkZXIsIHRoaXMubWluLCB0aGlzLm1heCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGNWYWx1ZShwZXJjZW50LCB0aGlzLnJhbmdlTWluKCksIHRoaXMucmFuZ2VNYXgoKSk7XG4gICAgfTtcbiAgICBDYXRlZ29yeS5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rpb24gKHNjYWxlZFZhbHVlKSB7XG4gICAgICAgIHZhciBkb21haW5SYW5nZSA9IHRoaXMubWF4IC0gdGhpcy5taW47XG4gICAgICAgIHZhciBwZXJjZW50ID0gdGhpcy5jYWxjUGVyY2VudChzY2FsZWRWYWx1ZSwgdGhpcy5yYW5nZU1pbigpLCB0aGlzLnJhbmdlTWF4KCkpO1xuICAgICAgICB2YXIgaWR4ID0gTWF0aC5yb3VuZChkb21haW5SYW5nZSAqIHBlcmNlbnQpICsgdGhpcy5taW47XG4gICAgICAgIGlmIChpZHggPCB0aGlzLm1pbiB8fCBpZHggPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbaWR4XTtcbiAgICB9O1xuICAgIENhdGVnb3J5LnByb3RvdHlwZS5nZXRUZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2ID0gdmFsdWU7XG4gICAgICAgIC8vIHZhbHVl5Li6aW5kZXhcbiAgICAgICAgaWYgKGlzTnVtYmVyKHZhbHVlKSAmJiAhdGhpcy52YWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICB2ID0gdGhpcy52YWx1ZXNbdl07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUuZ2V0VGV4dC5hcHBseSh0aGlzLCBfX3NwcmVhZEFycmF5KFt2XSwgYXJncywgZmFsc2UpKTtcbiAgICB9O1xuICAgIC8vIOWkjeWGmeWxnuaAp1xuICAgIENhdGVnb3J5LnByb3RvdHlwZS5pbml0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnRpY2tNZXRob2QgPSAnY2F0JztcbiAgICB9O1xuICAgIC8vIOiuvue9riBtaW4sIG1heFxuICAgIENhdGVnb3J5LnByb3RvdHlwZS5zZXREb21haW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIOeUqOaIt+acieWPr+iDveiuvue9riBtaW5cbiAgICAgICAgaWYgKGlzTmlsKHRoaXMuZ2V0Q29uZmlnKCdtaW4nKSkpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOaWwodGhpcy5nZXRDb25maWcoJ21heCcpKSkge1xuICAgICAgICAgICAgdmFyIHNpemUgPSB0aGlzLnZhbHVlcy5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLm1heCA9IHNpemUgPiAxID8gc2l6ZSAtIDEgOiBzaXplO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNjYWxlLmluaXQg55qE5pe25YCZ5riF6Zmk57yT5a2YXG4gICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZUluZGV4TWFwKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZUluZGV4TWFwID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ2F0ZWdvcnk7XG59KEJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IENhdGVnb3J5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/time.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/time.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/base.js\");\n\n\n\n\n/**\n * 时间分类度量\n * @class\n */\nvar TimeCat = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(TimeCat, _super);\n function TimeCat() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'timeCat';\n return _this;\n }\n /**\n * @override\n */\n TimeCat.prototype.translate = function (value) {\n value = Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(value);\n var index = this.values.indexOf(value);\n if (index === -1) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value) && value < this.values.length) {\n index = value;\n }\n else {\n index = NaN;\n }\n }\n return index;\n };\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n TimeCat.prototype.getText = function (value, tickIndex) {\n var index = this.translate(value);\n if (index > -1) {\n var result = this.values[index];\n var formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"timeFormat\"])(result, this.mask);\n return result;\n }\n return value;\n };\n TimeCat.prototype.initCfg = function () {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n };\n TimeCat.prototype.setDomain = function () {\n var values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(values, function (v, i) {\n values[i] = Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(v);\n });\n values.sort(function (v1, v2) {\n return v1 - v2;\n });\n _super.prototype.setDomain.call(this);\n };\n return TimeCat;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimeCat);\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY2F0ZWdvcnkvdGltZS5qcz82ZjQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDVTtBQUNXO0FBQ3pCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhEQUFXO0FBQzNCO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSw2REFBVTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWix3QkFBd0IsOERBQVc7QUFDbkMsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFRO0FBQ0ssc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9jYXRlZ29yeS90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgdGltZUZvcm1hdCwgdG9UaW1lU3RhbXAgfSBmcm9tICcuLi91dGlsL3RpbWUnO1xuaW1wb3J0IENhdGVnb3J5IGZyb20gJy4vYmFzZSc7XG4vKipcbiAqIOaXtumXtOWIhuexu+W6pumHj1xuICogQGNsYXNzXG4gKi9cbnZhciBUaW1lQ2F0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUaW1lQ2F0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRpbWVDYXQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3RpbWVDYXQnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIFRpbWVDYXQucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IHRvVGltZVN0YW1wKHZhbHVlKTtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy52YWx1ZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgPCB0aGlzLnZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBOYU47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH07XG4gICAgLyoqXG4gICAgICog55Sx5LqO5pe26Ze057G75Z6L5pWw5o2u6ZyA6KaB6L2s5o2i5LiA5LiL77yM5omA5Lul5aSN5YaZIGdldFRleHRcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBUaW1lQ2F0LnByb3RvdHlwZS5nZXRUZXh0ID0gZnVuY3Rpb24gKHZhbHVlLCB0aWNrSW5kZXgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy50cmFuc2xhdGUodmFsdWUpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMudmFsdWVzW2luZGV4XTtcbiAgICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlcjtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZvcm1hdHRlciA/IGZvcm1hdHRlcihyZXN1bHQsIHRpY2tJbmRleCkgOiB0aW1lRm9ybWF0KHJlc3VsdCwgdGhpcy5tYXNrKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgVGltZUNhdC5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ3RpbWUtY2F0JztcbiAgICAgICAgdGhpcy5tYXNrID0gJ1lZWVktTU0tREQnO1xuICAgICAgICB0aGlzLnRpY2tDb3VudCA9IDc7IC8vIOS4gOiIrOaXtumXtOaVsOaNruS8muaYvuekuiA377yMIDE077yMIDMwIOWkqeeahOaVsOWtl1xuICAgIH07XG4gICAgVGltZUNhdC5wcm90b3R5cGUuc2V0RG9tYWluID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWVzID0gdGhpcy52YWx1ZXM7XG4gICAgICAgIC8vIOmSiOWvueaXtumXtOWIhuexu+exu+Wei++8jOS8muWwhuaXtumXtOe7n+S4gOi9rOaNouS4uuaXtumXtOaIs1xuICAgICAgICBlYWNoKHZhbHVlcywgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIHZhbHVlc1tpXSA9IHRvVGltZVN0YW1wKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFsdWVzLnNvcnQoZnVuY3Rpb24gKHYxLCB2Mikge1xuICAgICAgICAgICAgcmV0dXJuIHYxIC0gdjI7XG4gICAgICAgIH0pO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLnNldERvbWFpbi5jYWxsKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIFRpbWVDYXQ7XG59KENhdGVnb3J5KSk7XG5leHBvcnQgZGVmYXVsdCBUaW1lQ2F0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/time.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js\");\n\n\n\n/**\n * 连续度量的基类\n * @class\n */\nvar Continuous = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Continuous, _super);\n function Continuous() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContinuous = true;\n return _this;\n }\n Continuous.prototype.scale = function (value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(value)) {\n return NaN;\n }\n var rangeMin = this.rangeMin();\n var rangeMax = this.rangeMax();\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return rangeMin;\n }\n var percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n };\n Continuous.prototype.init = function () {\n _super.prototype.init.call(this);\n // init 完成后保证 min, max 包含 ticks 的范围\n var ticks = this.ticks;\n var firstTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks);\n var lastTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.minLimit)) {\n this.min = firstTick;\n }\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.maxLimit)) {\n this.max = lastTick;\n }\n };\n Continuous.prototype.setDomain = function () {\n var _a = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"getRange\"])(this.values), min = _a.min, max = _a.max;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.min)) {\n this.min = min;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n };\n Continuous.prototype.calculateTicks = function () {\n var _this = this;\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) {\n ticks = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"filter\"])(ticks, function (tick) {\n return tick >= _this.min && tick <= _this.max;\n });\n }\n return ticks;\n };\n // 计算原始值值占的百分比\n Continuous.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n return (value - min) / (max - min);\n };\n Continuous.prototype.getInvertPercent = function (value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n };\n return Continuous;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Continuous);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9iYXNlLmpzP2I4ZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDK0I7QUFDdEM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFLO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVEQUFJO0FBQzVCLHVCQUF1Qix1REFBSTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekIsWUFBWSx3REFBSztBQUNqQjtBQUNBO0FBQ0EsWUFBWSx3REFBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHlEQUFNO0FBQzFCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJO0FBQ1MseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9jb250aW51b3VzL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGZpbHRlciwgZ2V0UmFuZ2UsIGhlYWQsIGlzTmlsLCBsYXN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuLi9iYXNlJztcbi8qKlxuICog6L+e57ut5bqm6YeP55qE5Z+657G7XG4gKiBAY2xhc3NcbiAqL1xudmFyIENvbnRpbnVvdXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbnRpbnVvdXMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29udGludW91cygpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmlzQ29udGludW91cyA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ29udGludW91cy5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKGlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmFuZ2VNaW4gPSB0aGlzLnJhbmdlTWluKCk7XG4gICAgICAgIHZhciByYW5nZU1heCA9IHRoaXMucmFuZ2VNYXgoKTtcbiAgICAgICAgdmFyIG1heCA9IHRoaXMubWF4O1xuICAgICAgICB2YXIgbWluID0gdGhpcy5taW47XG4gICAgICAgIGlmIChtYXggPT09IG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHJhbmdlTWluO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwZXJjZW50ID0gdGhpcy5nZXRTY2FsZVBlcmNlbnQodmFsdWUpO1xuICAgICAgICByZXR1cm4gcmFuZ2VNaW4gKyBwZXJjZW50ICogKHJhbmdlTWF4IC0gcmFuZ2VNaW4pO1xuICAgIH07XG4gICAgQ29udGludW91cy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyk7XG4gICAgICAgIC8vIGluaXQg5a6M5oiQ5ZCO5L+d6K+BIG1pbiwgbWF4IOWMheWQqyB0aWNrcyDnmoTojIPlm7RcbiAgICAgICAgdmFyIHRpY2tzID0gdGhpcy50aWNrcztcbiAgICAgICAgdmFyIGZpcnN0VGljayA9IGhlYWQodGlja3MpO1xuICAgICAgICB2YXIgbGFzdFRpY2sgPSBsYXN0KHRpY2tzKTtcbiAgICAgICAgaWYgKGZpcnN0VGljayA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICB0aGlzLm1pbiA9IGZpcnN0VGljaztcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdFRpY2sgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgdGhpcy5tYXggPSBsYXN0VGljaztcbiAgICAgICAgfVxuICAgICAgICAvLyBzdHJpY3QtbGltaXQg5pa55byPXG4gICAgICAgIGlmICghaXNOaWwodGhpcy5taW5MaW1pdCkpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gZmlyc3RUaWNrO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOaWwodGhpcy5tYXhMaW1pdCkpIHtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gbGFzdFRpY2s7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnRpbnVvdXMucHJvdG90eXBlLnNldERvbWFpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0UmFuZ2UodGhpcy52YWx1ZXMpLCBtaW4gPSBfYS5taW4sIG1heCA9IF9hLm1heDtcbiAgICAgICAgaWYgKGlzTmlsKHRoaXMubWluKSkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSBtaW47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTmlsKHRoaXMubWF4KSkge1xuICAgICAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWluID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gbWluO1xuICAgICAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnRpbnVvdXMucHJvdG90eXBlLmNhbGN1bGF0ZVRpY2tzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgdGlja3MgPSBfc3VwZXIucHJvdG90eXBlLmNhbGN1bGF0ZVRpY2tzLmNhbGwodGhpcyk7XG4gICAgICAgIGlmICghdGhpcy5uaWNlKSB7XG4gICAgICAgICAgICB0aWNrcyA9IGZpbHRlcih0aWNrcywgZnVuY3Rpb24gKHRpY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGljayA+PSBfdGhpcy5taW4gJiYgdGljayA8PSBfdGhpcy5tYXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGlja3M7XG4gICAgfTtcbiAgICAvLyDorqHnrpfljp/lp4vlgLzlgLzljaDnmoTnmb7liIbmr5RcbiAgICBDb250aW51b3VzLnByb3RvdHlwZS5nZXRTY2FsZVBlcmNlbnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIG1heCA9IHRoaXMubWF4O1xuICAgICAgICB2YXIgbWluID0gdGhpcy5taW47XG4gICAgICAgIHJldHVybiAodmFsdWUgLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfTtcbiAgICBDb250aW51b3VzLnByb3RvdHlwZS5nZXRJbnZlcnRQZXJjZW50ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiAodmFsdWUgLSB0aGlzLnJhbmdlTWluKCkpIC8gKHRoaXMucmFuZ2VNYXgoKSAtIHRoaXMucmFuZ2VNaW4oKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGludW91cztcbn0oQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgQ29udGludW91cztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/linear.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/linear.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js\");\n\n\n/**\n * 线性度量\n * @class\n */\nvar Linear = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Linear, _super);\n function Linear() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n _this.isLinear = true;\n return _this;\n }\n Linear.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n };\n Linear.prototype.initCfg = function () {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n };\n return Linear;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Linear);\n//# sourceMappingURL=linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9saW5lYXIuanM/YmMyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBVTtBQUNHLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9saW5lYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBDb250aW51b3VzIGZyb20gJy4vYmFzZSc7XG4vKipcbiAqIOe6v+aAp+W6pumHj1xuICogQGNsYXNzXG4gKi9cbnZhciBMaW5lYXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKExpbmVhciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBMaW5lYXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2xpbmVhcic7XG4gICAgICAgIF90aGlzLmlzTGluZWFyID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBMaW5lYXIucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGVyY2VudCA9IHRoaXMuZ2V0SW52ZXJ0UGVyY2VudCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiArIHBlcmNlbnQgKiAodGhpcy5tYXggLSB0aGlzLm1pbik7XG4gICAgfTtcbiAgICBMaW5lYXIucHJvdG90eXBlLmluaXRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMudGlja01ldGhvZCA9ICd3aWxraW5zb24tZXh0ZW5kZWQnO1xuICAgICAgICB0aGlzLm5pY2UgPSBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBMaW5lYXI7XG59KENvbnRpbnVvdXMpKTtcbmV4cG9ydCBkZWZhdWx0IExpbmVhcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmVhci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/linear.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/log.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/log.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js\");\n\n\n\n/**\n * Log 度量,处理非均匀分布\n */\nvar Log = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Log, _super);\n function Log() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'log';\n return _this;\n }\n /**\n * @override\n */\n Log.prototype.invert = function (value) {\n var base = this.base;\n var max = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, this.max);\n var rangeMin = this.rangeMin();\n var range = this.rangeMax() - rangeMin;\n var min;\n var positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, positiveMin / base);\n var appendPercent = (1 / (max - min)) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return (value / appendPercent) * positiveMin;\n }\n }\n else {\n min = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, this.min);\n }\n var percent = (value - rangeMin) / range;\n var tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n };\n Log.prototype.initCfg = function () {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n };\n // 设置\n Log.prototype.setDomain = function () {\n _super.prototype.setDomain.call(this);\n var min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"getLogPositiveMin\"])(this.values, this.base, this.max);\n }\n };\n // 根据当前值获取占比\n Log.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n var base = this.base;\n var positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = (positiveMin * 1) / base;\n }\n var percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, max) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, min));\n }\n else {\n percent = (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, value) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, min)) / (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, max) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"log\"])(base, min));\n }\n return percent;\n };\n return Log;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Log);\n//# sourceMappingURL=log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9sb2cuanM/NGQzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNvQjtBQUN0QjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzREFBRztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNEQUFHO0FBQ3JCLDBEQUEwRDtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isc0RBQUc7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isb0VBQWlCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHNEQUFHLGNBQWMsc0RBQUc7QUFDakU7QUFDQTtBQUNBLHVCQUF1QixzREFBRyxnQkFBZ0Isc0RBQUcsZ0JBQWdCLHNEQUFHLGNBQWMsc0RBQUc7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVU7QUFDRyxrRUFBRyxFQUFDO0FBQ25CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvbG9nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBnZXRMb2dQb3NpdGl2ZU1pbiwgbG9nIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCBDb250aW51b3VzIGZyb20gJy4vYmFzZSc7XG4vKipcbiAqIExvZyDluqbph4/vvIzlpITnkIbpnZ7lnYfljIDliIbluINcbiAqL1xudmFyIExvZyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTG9nLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIExvZygpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAnbG9nJztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBMb2cucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgYmFzZSA9IHRoaXMuYmFzZTtcbiAgICAgICAgdmFyIG1heCA9IGxvZyhiYXNlLCB0aGlzLm1heCk7XG4gICAgICAgIHZhciByYW5nZU1pbiA9IHRoaXMucmFuZ2VNaW4oKTtcbiAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5yYW5nZU1heCgpIC0gcmFuZ2VNaW47XG4gICAgICAgIHZhciBtaW47XG4gICAgICAgIHZhciBwb3NpdGl2ZU1pbiA9IHRoaXMucG9zaXRpdmVNaW47XG4gICAgICAgIGlmIChwb3NpdGl2ZU1pbikge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtaW4gPSBsb2coYmFzZSwgcG9zaXRpdmVNaW4gLyBiYXNlKTtcbiAgICAgICAgICAgIHZhciBhcHBlbmRQZXJjZW50ID0gKDEgLyAobWF4IC0gbWluKSkgKiByYW5nZTsgLy8gMCDliLAgcG9zaXRpdmVNaW7nmoTljaDmr5RcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IGFwcGVuZFBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAvLyDokL3liLAgMCAtIHBvc2l0aXZlTWluIOS5i+mXtFxuICAgICAgICAgICAgICAgIHJldHVybiAodmFsdWUgLyBhcHBlbmRQZXJjZW50KSAqIHBvc2l0aXZlTWluO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWluID0gbG9nKGJhc2UsIHRoaXMubWluKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGVyY2VudCA9ICh2YWx1ZSAtIHJhbmdlTWluKSAvIHJhbmdlO1xuICAgICAgICB2YXIgdG1wID0gcGVyY2VudCAqIChtYXggLSBtaW4pICsgbWluO1xuICAgICAgICByZXR1cm4gTWF0aC5wb3coYmFzZSwgdG1wKTtcbiAgICB9O1xuICAgIExvZy5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ2xvZyc7XG4gICAgICAgIHRoaXMuYmFzZSA9IDEwO1xuICAgICAgICB0aGlzLnRpY2tDb3VudCA9IDY7XG4gICAgICAgIHRoaXMubmljZSA9IHRydWU7XG4gICAgfTtcbiAgICAvLyDorr7nva5cbiAgICBMb2cucHJvdG90eXBlLnNldERvbWFpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5zZXREb21haW4uY2FsbCh0aGlzKTtcbiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluO1xuICAgICAgICBpZiAobWluIDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXaGVuIHlvdSB1c2UgbG9nIHNjYWxlLCB0aGUgbWluaW11bSB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaW4gPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpdmVNaW4gPSBnZXRMb2dQb3NpdGl2ZU1pbih0aGlzLnZhbHVlcywgdGhpcy5iYXNlLCB0aGlzLm1heCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOagueaNruW9k+WJjeWAvOiOt+WPluWNoOavlFxuICAgIExvZy5wcm90b3R5cGUuZ2V0U2NhbGVQZXJjZW50ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBtYXggPSB0aGlzLm1heDtcbiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluO1xuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOWAvOWwj+S6juetieS6jjDvvIzliJnmjInnhacw5aSE55CGXG4gICAgICAgIGlmICh2YWx1ZSA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYmFzZSA9IHRoaXMuYmFzZTtcbiAgICAgICAgdmFyIHBvc2l0aXZlTWluID0gdGhpcy5wb3NpdGl2ZU1pbjtcbiAgICAgICAgLy8g5aaC5p6cbWluID09IDAsIOWImeagueaNruavlDDlpKfnmoTmnIDlsI/lgLzvvIzorqHnrpfmr5TkvovlhbPns7vjgILov5nkuKrmnIDlsI/lgLzkvZzkuLrlnZDmoIfovbTkuIrnmoTnrKzkuozkuKp0aWNr77yM56ys5LiA5Liq5pivMOS9huaYr+S4jeaYvuekulxuICAgICAgICBpZiAocG9zaXRpdmVNaW4pIHtcbiAgICAgICAgICAgIG1pbiA9IChwb3NpdGl2ZU1pbiAqIDEpIC8gYmFzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGVyY2VudDtcbiAgICAgICAgLy8g5aaC5p6c5pWw5YC85bCP5LqO5qyh5bCP5YC877yM6YKj5LmI5bCx6K6h566XIHZhbHVlIC8g5qyh5bCP5YC8IOWNoOaVtOS9k+eahOavlOS+i1xuICAgICAgICBpZiAodmFsdWUgPCBwb3NpdGl2ZU1pbikge1xuICAgICAgICAgICAgcGVyY2VudCA9IHZhbHVlIC8gcG9zaXRpdmVNaW4gLyAobG9nKGJhc2UsIG1heCkgLSBsb2coYmFzZSwgbWluKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZXJjZW50ID0gKGxvZyhiYXNlLCB2YWx1ZSkgLSBsb2coYmFzZSwgbWluKSkgLyAobG9nKGJhc2UsIG1heCkgLSBsb2coYmFzZSwgbWluKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBlcmNlbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gTG9nO1xufShDb250aW51b3VzKSk7XG5leHBvcnQgZGVmYXVsdCBMb2c7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2cuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/log.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/pow.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/pow.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js\");\n\n\n\n/**\n * Pow 度量,处理非均匀分布\n */\nvar Pow = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Pow, _super);\n function Pow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'pow';\n return _this;\n }\n /**\n * @override\n */\n Pow.prototype.invert = function (value) {\n var percent = this.getInvertPercent(value);\n var exponent = this.exponent;\n var max = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, this.max);\n var min = Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, this.min);\n var tmp = percent * (max - min) + min;\n var factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n };\n Pow.prototype.initCfg = function () {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n };\n // 获取度量计算时,value占的定义域百分比\n Pow.prototype.getScalePercent = function (value) {\n var max = this.max;\n var min = this.min;\n if (max === min) {\n return 0;\n }\n var exponent = this.exponent;\n var percent = (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, value) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, min)) / (Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, max) - Object(_util_math__WEBPACK_IMPORTED_MODULE_1__[\"calBase\"])(exponent, min));\n return percent;\n };\n return Pow;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Pow);\n//# sourceMappingURL=pow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9wb3cuanM/Nzk1MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNLO0FBQ1A7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwwREFBTztBQUN6QixrQkFBa0IsMERBQU87QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDBEQUFPLG9CQUFvQiwwREFBTyxvQkFBb0IsMERBQU8sa0JBQWtCLDBEQUFPO0FBQzdHO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBVTtBQUNHLGtFQUFHLEVBQUM7QUFDbkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9wb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGNhbEJhc2UgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IENvbnRpbnVvdXMgZnJvbSAnLi9iYXNlJztcbi8qKlxuICogUG93IOW6pumHj++8jOWkhOeQhumdnuWdh+WMgOWIhuW4g1xuICovXG52YXIgUG93ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQb3csIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG93KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdwb3cnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIFBvdy5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBwZXJjZW50ID0gdGhpcy5nZXRJbnZlcnRQZXJjZW50KHZhbHVlKTtcbiAgICAgICAgdmFyIGV4cG9uZW50ID0gdGhpcy5leHBvbmVudDtcbiAgICAgICAgdmFyIG1heCA9IGNhbEJhc2UoZXhwb25lbnQsIHRoaXMubWF4KTtcbiAgICAgICAgdmFyIG1pbiA9IGNhbEJhc2UoZXhwb25lbnQsIHRoaXMubWluKTtcbiAgICAgICAgdmFyIHRtcCA9IHBlcmNlbnQgKiAobWF4IC0gbWluKSArIG1pbjtcbiAgICAgICAgdmFyIGZhY3RvciA9IHRtcCA+PSAwID8gMSA6IC0xO1xuICAgICAgICByZXR1cm4gTWF0aC5wb3codG1wLCBleHBvbmVudCkgKiBmYWN0b3I7XG4gICAgfTtcbiAgICBQb3cucHJvdG90eXBlLmluaXRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMudGlja01ldGhvZCA9ICdwb3cnO1xuICAgICAgICB0aGlzLmV4cG9uZW50ID0gMjtcbiAgICAgICAgdGhpcy50aWNrQ291bnQgPSA1O1xuICAgICAgICB0aGlzLm5pY2UgPSB0cnVlO1xuICAgIH07XG4gICAgLy8g6I635Y+W5bqm6YeP6K6h566X5pe277yMdmFsdWXljaDnmoTlrprkuYnln5/nmb7liIbmr5RcbiAgICBQb3cucHJvdG90eXBlLmdldFNjYWxlUGVyY2VudCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7XG4gICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbjtcbiAgICAgICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZXhwb25lbnQgPSB0aGlzLmV4cG9uZW50O1xuICAgICAgICB2YXIgcGVyY2VudCA9IChjYWxCYXNlKGV4cG9uZW50LCB2YWx1ZSkgLSBjYWxCYXNlKGV4cG9uZW50LCBtaW4pKSAvIChjYWxCYXNlKGV4cG9uZW50LCBtYXgpIC0gY2FsQmFzZShleHBvbmVudCwgbWluKSk7XG4gICAgICAgIHJldHVybiBwZXJjZW50O1xuICAgIH07XG4gICAgcmV0dXJuIFBvdztcbn0oQ29udGludW91cykpO1xuZXhwb3J0IGRlZmF1bHQgUG93O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG93LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/pow.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantile.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantile.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _quantize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quantize */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantize.js\");\n\n\nvar Quantile = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Quantile, _super);\n function Quantile() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantile';\n return _this;\n }\n Quantile.prototype.initCfg = function () {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n };\n return Quantile;\n}(_quantize__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Quantile);\n//# sourceMappingURL=quantile.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9xdWFudGlsZS5qcz9kYmU0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNBO0FBQ2xDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsaURBQVE7QUFDSyx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL2NvbnRpbnVvdXMvcXVhbnRpbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBRdWFudGl6ZSBmcm9tICcuL3F1YW50aXplJztcbnZhciBRdWFudGlsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUXVhbnRpbGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUXVhbnRpbGUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3F1YW50aWxlJztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBRdWFudGlsZS5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ3F1YW50aWxlJztcbiAgICAgICAgdGhpcy50aWNrQ291bnQgPSA1O1xuICAgICAgICB0aGlzLm5pY2UgPSB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIFF1YW50aWxlO1xufShRdWFudGl6ZSkpO1xuZXhwb3J0IGRlZmF1bHQgUXVhbnRpbGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWFudGlsZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantile.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantize.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantize.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/base.js\");\n\n\n\n/**\n * 分段度量\n */\nvar Quantize = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Quantize, _super);\n function Quantize() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'quantize';\n return _this;\n }\n Quantize.prototype.invert = function (value) {\n var ticks = this.ticks;\n var length = ticks.length;\n var percent = this.getInvertPercent(value);\n var minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks);\n }\n var minTick = ticks[minIndex];\n var nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n var minIndexPercent = minIndex / (length - 1);\n var maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n };\n Quantize.prototype.initCfg = function () {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n };\n Quantize.prototype.calculateTicks = function () {\n var ticks = _super.prototype.calculateTicks.call(this);\n if (!this.nice) { // 如果 nice = false ,补充 min, max\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n };\n // 计算当前值在刻度中的占比\n Quantize.prototype.getScalePercent = function (value) {\n var ticks = this.ticks;\n // 超出左边界\n if (value < Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"head\"])(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"last\"])(ticks)) {\n return 1;\n }\n var minIndex = 0;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(ticks, function (tick, index) {\n if (value >= tick) {\n minIndex = index;\n }\n else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n };\n return Quantize;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Quantize);\n//# sourceMappingURL=quantize.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy9xdWFudGl6ZS5qcz9jNWI1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ1k7QUFDZDtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdURBQUk7QUFDdkI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVEQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixnQkFBZ0IsdURBQUk7QUFDcEI7QUFDQTtBQUNBLGdCQUFnQix1REFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdURBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVEQUFJO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFVO0FBQ0csdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9jb250aW51b3VzL3F1YW50aXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBoZWFkLCBsYXN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgQ29udGludW91cyBmcm9tICcuL2Jhc2UnO1xuLyoqXG4gKiDliIbmrrXluqbph49cbiAqL1xudmFyIFF1YW50aXplID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhRdWFudGl6ZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBRdWFudGl6ZSgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncXVhbnRpemUnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFF1YW50aXplLnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHRpY2tzID0gdGhpcy50aWNrcztcbiAgICAgICAgdmFyIGxlbmd0aCA9IHRpY2tzLmxlbmd0aDtcbiAgICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLmdldEludmVydFBlcmNlbnQodmFsdWUpO1xuICAgICAgICB2YXIgbWluSW5kZXggPSBNYXRoLmZsb29yKHBlcmNlbnQgKiAobGVuZ3RoIC0gMSkpO1xuICAgICAgICAvLyDmnIDlkI7kuIDkuKpcbiAgICAgICAgaWYgKG1pbkluZGV4ID49IGxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0KHRpY2tzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDotoXlh7rlt6bovrnnlYzvvIwg5YiZ5Y+W56ys5LiA5LiqXG4gICAgICAgIGlmIChtaW5JbmRleCA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBoZWFkKHRpY2tzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWluVGljayA9IHRpY2tzW21pbkluZGV4XTtcbiAgICAgICAgdmFyIG5leHRUaWNrID0gdGlja3NbbWluSW5kZXggKyAxXTtcbiAgICAgICAgLy8g5q+U5b2T5YmN5YC85bCP55qEIHRpY2sg5Zyo5bqm6YeP5LiK55qE5Y2g5q+UXG4gICAgICAgIHZhciBtaW5JbmRleFBlcmNlbnQgPSBtaW5JbmRleCAvIChsZW5ndGggLSAxKTtcbiAgICAgICAgdmFyIG1heEluZGV4UGVyY2VudCA9IChtaW5JbmRleCArIDEpIC8gKGxlbmd0aCAtIDEpO1xuICAgICAgICByZXR1cm4gbWluVGljayArIChwZXJjZW50IC0gbWluSW5kZXhQZXJjZW50KSAvIChtYXhJbmRleFBlcmNlbnQgLSBtaW5JbmRleFBlcmNlbnQpICogKG5leHRUaWNrIC0gbWluVGljayk7XG4gICAgfTtcbiAgICBRdWFudGl6ZS5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ3ItcHJldHR5JztcbiAgICAgICAgdGhpcy50aWNrQ291bnQgPSA1O1xuICAgICAgICB0aGlzLm5pY2UgPSB0cnVlO1xuICAgIH07XG4gICAgUXVhbnRpemUucHJvdG90eXBlLmNhbGN1bGF0ZVRpY2tzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGlja3MgPSBfc3VwZXIucHJvdG90eXBlLmNhbGN1bGF0ZVRpY2tzLmNhbGwodGhpcyk7XG4gICAgICAgIGlmICghdGhpcy5uaWNlKSB7IC8vIOWmguaenCBuaWNlID0gZmFsc2UgLOihpeWFhSBtaW4sIG1heFxuICAgICAgICAgICAgaWYgKGxhc3QodGlja3MpICE9PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgICAgIHRpY2tzLnB1c2godGhpcy5tYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhlYWQodGlja3MpICE9PSB0aGlzLm1pbikge1xuICAgICAgICAgICAgICAgIHRpY2tzLnVuc2hpZnQodGhpcy5taW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aWNrcztcbiAgICB9O1xuICAgIC8vIOiuoeeul+W9k+WJjeWAvOWcqOWIu+W6puS4reeahOWNoOavlFxuICAgIFF1YW50aXplLnByb3RvdHlwZS5nZXRTY2FsZVBlcmNlbnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHRpY2tzID0gdGhpcy50aWNrcztcbiAgICAgICAgLy8g6LaF5Ye65bem6L6555WMXG4gICAgICAgIGlmICh2YWx1ZSA8IGhlYWQodGlja3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyDotoXlh7rlj7PovrnnlYxcbiAgICAgICAgaWYgKHZhbHVlID4gbGFzdCh0aWNrcykpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtaW5JbmRleCA9IDA7XG4gICAgICAgIGVhY2godGlja3MsIGZ1bmN0aW9uICh0aWNrLCBpbmRleCkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID49IHRpY2spIHtcbiAgICAgICAgICAgICAgICBtaW5JbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1pbkluZGV4IC8gKHRpY2tzLmxlbmd0aCAtIDEpO1xuICAgIH07XG4gICAgcmV0dXJuIFF1YW50aXplO1xufShDb250aW51b3VzKSk7XG5leHBvcnQgZGVmYXVsdCBRdWFudGl6ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1YW50aXplLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantize.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/time.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/time.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/linear.js\");\n\n\n\n\n/**\n * 时间度量\n * @class\n */\nvar Time = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Time, _super);\n function Time() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n return _this;\n }\n /**\n * @override\n */\n Time.prototype.getText = function (value, index) {\n var numberValue = this.translate(value);\n var formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"timeFormat\"])(numberValue, this.mask);\n };\n /**\n * @override\n */\n Time.prototype.scale = function (value) {\n var v = value;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(v) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isDate\"])(v)) {\n v = this.translate(v);\n }\n return _super.prototype.scale.call(this, v);\n };\n /**\n * 将时间转换成数字\n * @override\n */\n Time.prototype.translate = function (v) {\n return Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(v);\n };\n Time.prototype.initCfg = function () {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n };\n Time.prototype.setDomain = function () {\n var values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n var minConfig = this.getConfig('min');\n var maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(minConfig) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(maxConfig) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n var timeStamps_1 = [];\n var min_1 = Infinity; // 最小值\n var secondMin_1 = min_1; // 次小值\n var max_1 = 0;\n // 使用一个循环,计算min,max,secondMin\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(values, function (v) {\n var timeStamp = Object(_util_time__WEBPACK_IMPORTED_MODULE_2__[\"toTimeStamp\"])(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(\"Invalid Time: \" + v + \" in time scale!\");\n }\n if (min_1 > timeStamp) {\n secondMin_1 = min_1;\n min_1 = timeStamp;\n }\n else if (secondMin_1 > timeStamp) {\n secondMin_1 = timeStamp;\n }\n if (max_1 < timeStamp) {\n max_1 = timeStamp;\n }\n timeStamps_1.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin_1 - min_1;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(minConfig)) {\n this.min = min_1;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(maxConfig)) {\n this.max = max_1;\n }\n }\n };\n return Time;\n}(_linear__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Time);\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy90aW1lLmpzP2UwZWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNtQztBQUNkO0FBQ3pCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCw2REFBVTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRLE9BQU8seURBQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw4REFBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUssZ0JBQWdCLDJEQUFRO0FBQzFDO0FBQ0E7QUFDQSxhQUFhLHdEQUFLLGdCQUFnQiwyREFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCLGdDQUFnQyw4REFBVztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHdEQUFLO0FBQ3JCO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQUs7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywrQ0FBTTtBQUNPLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vY29udGludW91cy90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBpc0RhdGUsIGlzTmlsLCBpc051bWJlciwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHRpbWVGb3JtYXQsIHRvVGltZVN0YW1wIH0gZnJvbSAnLi4vdXRpbC90aW1lJztcbmltcG9ydCBMaW5lYXIgZnJvbSAnLi9saW5lYXInO1xuLyoqXG4gKiDml7bpl7Tluqbph49cbiAqIEBjbGFzc1xuICovXG52YXIgVGltZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGltZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUaW1lKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICd0aW1lJztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBUaW1lLnByb3RvdHlwZS5nZXRUZXh0ID0gZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgICAgICB2YXIgbnVtYmVyVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZSh2YWx1ZSk7XG4gICAgICAgIHZhciBmb3JtYXR0ZXIgPSB0aGlzLmZvcm1hdHRlcjtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcihudW1iZXJWYWx1ZSwgaW5kZXgpIDogdGltZUZvcm1hdChudW1iZXJWYWx1ZSwgdGhpcy5tYXNrKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIFRpbWUucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciB2ID0gdmFsdWU7XG4gICAgICAgIGlmIChpc1N0cmluZyh2KSB8fCBpc0RhdGUodikpIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLnRyYW5zbGF0ZSh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5zY2FsZS5jYWxsKHRoaXMsIHYpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5bCG5pe26Ze06L2s5o2i5oiQ5pWw5a2XXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgVGltZS5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHRvVGltZVN0YW1wKHYpO1xuICAgIH07XG4gICAgVGltZS5wcm90b3R5cGUuaW5pdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy50aWNrTWV0aG9kID0gJ3RpbWUtcHJldHR5JztcbiAgICAgICAgdGhpcy5tYXNrID0gJ1lZWVktTU0tREQnO1xuICAgICAgICB0aGlzLnRpY2tDb3VudCA9IDc7XG4gICAgICAgIHRoaXMubmljZSA9IGZhbHNlO1xuICAgIH07XG4gICAgVGltZS5wcm90b3R5cGUuc2V0RG9tYWluID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWVzID0gdGhpcy52YWx1ZXM7XG4gICAgICAgIC8vIOaYr+WQpuiuvue9ruS6hiBtaW4sIG1heO+8jOiAjOS4jeaYr+ebtOaOpeWPliB0aGlzLm1pbiwgdGhpcy5tYXhcbiAgICAgICAgdmFyIG1pbkNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKCdtaW4nKTtcbiAgICAgICAgdmFyIG1heENvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKCdtYXgnKTtcbiAgICAgICAgLy8g5aaC5p6c6K6+572u5LqGIG1pbixtYXgg5YiZ6L2s5o2i5oiQ5pe26Ze05oizXG4gICAgICAgIGlmICghaXNOaWwobWluQ29uZmlnKSB8fCAhaXNOdW1iZXIobWluQ29uZmlnKSkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSB0aGlzLnRyYW5zbGF0ZSh0aGlzLm1pbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05pbChtYXhDb25maWcpIHx8ICFpc051bWJlcihtYXhDb25maWcpKSB7XG4gICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMudHJhbnNsYXRlKHRoaXMubWF4KTtcbiAgICAgICAgfVxuICAgICAgICAvLyDmsqHmnInorr7nva4gbWluLCBtYXgg5pe2XG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8g6YeN5paw6K6h566X5pyA5aSn5pyA5bCP5YC8XG4gICAgICAgICAgICB2YXIgdGltZVN0YW1wc18xID0gW107XG4gICAgICAgICAgICB2YXIgbWluXzEgPSBJbmZpbml0eTsgLy8g5pyA5bCP5YC8XG4gICAgICAgICAgICB2YXIgc2Vjb25kTWluXzEgPSBtaW5fMTsgLy8g5qyh5bCP5YC8XG4gICAgICAgICAgICB2YXIgbWF4XzEgPSAwO1xuICAgICAgICAgICAgLy8g5L2/55So5LiA5Liq5b6q546v77yM6K6h566XbWluLG1heCxzZWNvbmRNaW5cbiAgICAgICAgICAgIGVhY2godmFsdWVzLCBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICAgIHZhciB0aW1lU3RhbXAgPSB0b1RpbWVTdGFtcCh2KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4odGltZVN0YW1wKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBUaW1lOiBcIiArIHYgKyBcIiBpbiB0aW1lIHNjYWxlIVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1pbl8xID4gdGltZVN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZE1pbl8xID0gbWluXzE7XG4gICAgICAgICAgICAgICAgICAgIG1pbl8xID0gdGltZVN0YW1wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWNvbmRNaW5fMSA+IHRpbWVTdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBzZWNvbmRNaW5fMSA9IHRpbWVTdGFtcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1heF8xIDwgdGltZVN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heF8xID0gdGltZVN0YW1wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lU3RhbXBzXzEucHVzaCh0aW1lU3RhbXApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyDlrZjlnKjlpJrkuKrlgLzml7bvvIzorr7nva7mnIDlsI/pl7Tot51cbiAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWluVGlja0ludGVydmFsID0gc2Vjb25kTWluXzEgLSBtaW5fMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc05pbChtaW5Db25maWcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5taW4gPSBtaW5fMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc05pbChtYXhDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXggPSBtYXhfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFRpbWU7XG59KExpbmVhcikpO1xuZXhwb3J0IGRlZmF1bHQgVGltZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/time.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/factory.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/factory.js ***! \*********************************************************************/ /*! exports provided: Scale, getScale, registerScale */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScale\", function() { return getClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerScale\", function() { return registerClass; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scale\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\nvar map = {};\nfunction getClass(key) {\n return map[key];\n}\nfunction registerClass(key, cls) {\n if (getClass(key)) {\n throw new Error(\"type '\" + key + \"' existed.\");\n }\n map[key] = cls;\n}\n\n//# sourceMappingURL=factory.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vZmFjdG9yeS5qcz9kODhmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN1RTtBQUN2RSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9mYWN0b3J5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNjYWxlIGZyb20gJy4vYmFzZSc7XG52YXIgbWFwID0ge307XG5mdW5jdGlvbiBnZXRDbGFzcyhrZXkpIHtcbiAgICByZXR1cm4gbWFwW2tleV07XG59XG5mdW5jdGlvbiByZWdpc3RlckNsYXNzKGtleSwgY2xzKSB7XG4gICAgaWYgKGdldENsYXNzKGtleSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHlwZSAnXCIgKyBrZXkgKyBcIicgZXhpc3RlZC5cIik7XG4gICAgfVxuICAgIG1hcFtrZXldID0gY2xzO1xufVxuZXhwb3J0IHsgU2NhbGUsIGdldENsYXNzIGFzIGdldFNjYWxlLCByZWdpc3RlckNsYXNzIGFzIHJlZ2lzdGVyU2NhbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhY3RvcnkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/factory.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/identity/index.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/identity/index.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js\");\n\n\n\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nvar Identity = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Identity, _super);\n function Identity() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'identity';\n _this.isIdentity = true;\n return _this;\n }\n Identity.prototype.calculateTicks = function () {\n return this.values;\n };\n Identity.prototype.scale = function (value) {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(value)) {\n return value;\n }\n return this.range[0];\n };\n Identity.prototype.invert = function (value) {\n var range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n };\n return Identity;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Identity);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vaWRlbnRpdHkvaW5kZXguanM/NWU2MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNJO0FBQ1g7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsMkRBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJO0FBQ1MsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9pZGVudGl0eS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBCYXNlIGZyb20gJy4uL2Jhc2UnO1xuLyoqXG4gKiBpZGVudGl0eSBzY2FsZeWOn+WImeS4iuaYr+WumuS5ieWfn+WSjOWAvOWfn+S4gOiHtO+8jHNjYWxlL2ludmVydOaWueazleS5n+aYr+S4gOiHtOeahFxuICog5Y+C6ICDUueahOWunueOsO+8mmh0dHBzOi8vZ2l0aHViLmNvbS9yLWxpYi9zY2FsZXMvYmxvYi9tYXN0ZXIvUi9wYWwtaWRlbnRpdHkuclxuICog5Y+C6ICDZDPnmoTlrp7njrDvvIjlgZrkuobkuIvovazlnovvvInvvJpodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtc2NhbGUvYmxvYi9tYXN0ZXIvc3JjL2lkZW50aXR5LmpzXG4gKi9cbnZhciBJZGVudGl0eSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSWRlbnRpdHksIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSWRlbnRpdHkoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2lkZW50aXR5JztcbiAgICAgICAgX3RoaXMuaXNJZGVudGl0eSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgSWRlbnRpdHkucHJvdG90eXBlLmNhbGN1bGF0ZVRpY2tzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gICAgfTtcbiAgICBJZGVudGl0eS5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8g5aaC5p6c5Lyg5YWl55qE5YC85LiN562J5LqOIGlkZW50aXR5IOeahOWAvO+8jOWImeebtOaOpei/lOWbnu+8jOeUqOS6juS4gOe7tOWbvuaXtueahCBkb2RnZVxuICAgICAgICBpZiAodGhpcy52YWx1ZXNbMF0gIT09IHZhbHVlICYmIGlzTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlWzBdO1xuICAgIH07XG4gICAgSWRlbnRpdHkucHJvdG90eXBlLmludmVydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLnJhbmdlO1xuICAgICAgICBpZiAodmFsdWUgPCByYW5nZVswXSB8fCB2YWx1ZSA+IHJhbmdlWzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlc1swXTtcbiAgICB9O1xuICAgIHJldHVybiBJZGVudGl0eTtcbn0oQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgSWRlbnRpdHk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/identity/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/index.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/index.js ***! \*******************************************************************/ /*! exports provided: Category, Identity, Linear, Log, Pow, Time, TimeCat, Quantile, Quantize, Scale, getScale, registerScale, getTickMethod, registerTickMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Scale\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _category_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./category/base */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Category\", function() { return _category_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _category_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./category/time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/category/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeCat\", function() { return _category_time__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _continuous_linear__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./continuous/linear */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Linear\", function() { return _continuous_linear__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _continuous_log__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./continuous/log */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/log.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Log\", function() { return _continuous_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _continuous_pow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./continuous/pow */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/pow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Pow\", function() { return _continuous_pow__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _continuous_time__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./continuous/time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Time\", function() { return _continuous_time__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _continuous_quantize__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./continuous/quantize */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quantize\", function() { return _continuous_quantize__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _continuous_quantile__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./continuous/quantile */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/continuous/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quantile\", function() { return _continuous_quantile__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _factory__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./factory */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/factory.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScale\", function() { return _factory__WEBPACK_IMPORTED_MODULE_9__[\"getScale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerScale\", function() { return _factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"]; });\n\n/* harmony import */ var _identity_index__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./identity/index */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/identity/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Identity\", function() { return _identity_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _tick_method_index__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./tick-method/index */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTickMethod\", function() { return _tick_method_index__WEBPACK_IMPORTED_MODULE_11__[\"getTickMethod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerTickMethod\", function() { return _tick_method_index__WEBPACK_IMPORTED_MODULE_11__[\"registerTickMethod\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('cat', _category_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('category', _category_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('identity', _identity_index__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('linear', _continuous_linear__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('log', _continuous_log__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('pow', _continuous_pow__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('time', _continuous_time__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('timeCat', _category_time__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('quantize', _continuous_quantize__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nObject(_factory__WEBPACK_IMPORTED_MODULE_9__[\"registerScale\"])('quantile', _continuous_quantile__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vaW5kZXguanM/YzU5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJCO0FBQ1k7QUFDRDtBQUNHO0FBQ047QUFDQTtBQUNFO0FBQ1E7QUFDQTtBQUNPO0FBQ1o7QUFDZ0M7QUFDeEUsOERBQWEsUUFBUSxzREFBUTtBQUM3Qiw4REFBYSxhQUFhLHNEQUFRO0FBQ2xDLDhEQUFhLGFBQWEsd0RBQVE7QUFDbEMsOERBQWEsV0FBVywwREFBTTtBQUM5Qiw4REFBYSxRQUFRLHVEQUFHO0FBQ3hCLDhEQUFhLFFBQVEsdURBQUc7QUFDeEIsOERBQWEsU0FBUyx3REFBSTtBQUMxQiw4REFBYSxZQUFZLHNEQUFPO0FBQ2hDLDhEQUFhLGFBQWEsNERBQVE7QUFDbEMsOERBQWEsYUFBYSw0REFBUTtBQUNxSDtBQUN2SiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTY2FsZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IENhdGVnb3J5IGZyb20gJy4vY2F0ZWdvcnkvYmFzZSc7XG5pbXBvcnQgVGltZUNhdCBmcm9tICcuL2NhdGVnb3J5L3RpbWUnO1xuaW1wb3J0IExpbmVhciBmcm9tICcuL2NvbnRpbnVvdXMvbGluZWFyJztcbmltcG9ydCBMb2cgZnJvbSAnLi9jb250aW51b3VzL2xvZyc7XG5pbXBvcnQgUG93IGZyb20gJy4vY29udGludW91cy9wb3cnO1xuaW1wb3J0IFRpbWUgZnJvbSAnLi9jb250aW51b3VzL3RpbWUnO1xuaW1wb3J0IFF1YW50aXplIGZyb20gJy4vY29udGludW91cy9xdWFudGl6ZSc7XG5pbXBvcnQgUXVhbnRpbGUgZnJvbSAnLi9jb250aW51b3VzL3F1YW50aWxlJztcbmltcG9ydCB7IGdldFNjYWxlLCByZWdpc3RlclNjYWxlIH0gZnJvbSAnLi9mYWN0b3J5JztcbmltcG9ydCBJZGVudGl0eSBmcm9tICcuL2lkZW50aXR5L2luZGV4JztcbmltcG9ydCB7IGdldFRpY2tNZXRob2QsIHJlZ2lzdGVyVGlja01ldGhvZCB9IGZyb20gJy4vdGljay1tZXRob2QvaW5kZXgnO1xucmVnaXN0ZXJTY2FsZSgnY2F0JywgQ2F0ZWdvcnkpO1xucmVnaXN0ZXJTY2FsZSgnY2F0ZWdvcnknLCBDYXRlZ29yeSk7XG5yZWdpc3RlclNjYWxlKCdpZGVudGl0eScsIElkZW50aXR5KTtcbnJlZ2lzdGVyU2NhbGUoJ2xpbmVhcicsIExpbmVhcik7XG5yZWdpc3RlclNjYWxlKCdsb2cnLCBMb2cpO1xucmVnaXN0ZXJTY2FsZSgncG93JywgUG93KTtcbnJlZ2lzdGVyU2NhbGUoJ3RpbWUnLCBUaW1lKTtcbnJlZ2lzdGVyU2NhbGUoJ3RpbWVDYXQnLCBUaW1lQ2F0KTtcbnJlZ2lzdGVyU2NhbGUoJ3F1YW50aXplJywgUXVhbnRpemUpO1xucmVnaXN0ZXJTY2FsZSgncXVhbnRpbGUnLCBRdWFudGlsZSk7XG5leHBvcnQgeyBDYXRlZ29yeSwgSWRlbnRpdHksIExpbmVhciwgTG9nLCBQb3csIFRpbWUsIFRpbWVDYXQsIFF1YW50aWxlLCBRdWFudGl6ZSwgU2NhbGUsIGdldFNjYWxlLCByZWdpc3RlclNjYWxlLCBnZXRUaWNrTWV0aG9kLCByZWdpc3RlclRpY2tNZXRob2QsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/cat.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/cat.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateCatTicks; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_extended__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/extended */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/extended.js\");\n\n\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculateCatTicks(cfg) {\n var values = cfg.values, tickInterval = cfg.tickInterval, tickCount = cfg.tickCount;\n var ticks = values;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(tickInterval)) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"filter\"])(ticks, function (__, i) { return i % tickInterval === 0; });\n }\n var min = cfg.min, max = cfg.max;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(min)) {\n min = 0;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(max)) {\n max = values.length - 1;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(tickCount) && tickCount < max - min) {\n // 简单过滤,部分情况下小数的倍数也可以是整数\n // tslint:disable-next-line: no-shadowed-variable\n var ticks_1 = Object(_util_extended__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickCount, false, [1, 2, 5, 3, 4, 7, 6, 8, 9]).ticks;\n var valid = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"filter\"])(ticks_1, function (tick) { return tick >= min && tick <= max; });\n return valid.map(function (index) { return values[index]; });\n }\n return values.slice(min, max + 1);\n}\n//# sourceMappingURL=cat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvY2F0LmpzP2NkYjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDYjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQixlQUFlLHlEQUFNLDBCQUEwQiwrQkFBK0IsRUFBRTtBQUNoRjtBQUNBO0FBQ0EsUUFBUSx3REFBSztBQUNiO0FBQ0E7QUFDQSxRQUFRLHdEQUFLO0FBQ2I7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTtBQUNBLHNCQUFzQiw4REFBUTtBQUM5QixvQkFBb0IseURBQU0sMkJBQTJCLG1DQUFtQyxFQUFFO0FBQzFGLDJDQUEyQyxzQkFBc0IsRUFBRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC9jYXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXIsIGlzTmlsLCBpc051bWJlciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGV4dGVuZGVkIGZyb20gJy4uL3V0aWwvZXh0ZW5kZWQnO1xuLyoqXG4gKiDorqHnrpfliIbnsbsgdGlja3NcbiAqIEBwYXJhbSBjZmcg5bqm6YeP55qE6YWN572u6aG5XG4gKiBAcmV0dXJucyDorqHnrpflkI7nmoQgdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FsY3VsYXRlQ2F0VGlja3MoY2ZnKSB7XG4gICAgdmFyIHZhbHVlcyA9IGNmZy52YWx1ZXMsIHRpY2tJbnRlcnZhbCA9IGNmZy50aWNrSW50ZXJ2YWwsIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQ7XG4gICAgdmFyIHRpY2tzID0gdmFsdWVzO1xuICAgIGlmIChpc051bWJlcih0aWNrSW50ZXJ2YWwpKSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXIodGlja3MsIGZ1bmN0aW9uIChfXywgaSkgeyByZXR1cm4gaSAlIHRpY2tJbnRlcnZhbCA9PT0gMDsgfSk7XG4gICAgfVxuICAgIHZhciBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4O1xuICAgIGlmIChpc05pbChtaW4pKSB7XG4gICAgICAgIG1pbiA9IDA7XG4gICAgfVxuICAgIGlmIChpc05pbChtYXgpKSB7XG4gICAgICAgIG1heCA9IHZhbHVlcy5sZW5ndGggLSAxO1xuICAgIH1cbiAgICBpZiAoaXNOdW1iZXIodGlja0NvdW50KSAmJiB0aWNrQ291bnQgPCBtYXggLSBtaW4pIHtcbiAgICAgICAgLy8g566A5Y2V6L+H5ruk77yM6YOo5YiG5oOF5Ya15LiL5bCP5pWw55qE5YCN5pWw5Lmf5Y+v5Lul5piv5pW05pWwXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tc2hhZG93ZWQtdmFyaWFibGVcbiAgICAgICAgdmFyIHRpY2tzXzEgPSBleHRlbmRlZChtaW4sIG1heCwgdGlja0NvdW50LCBmYWxzZSwgWzEsIDIsIDUsIDMsIDQsIDcsIDYsIDgsIDldKS50aWNrcztcbiAgICAgICAgdmFyIHZhbGlkID0gZmlsdGVyKHRpY2tzXzEsIGZ1bmN0aW9uICh0aWNrKSB7IHJldHVybiB0aWNrID49IG1pbiAmJiB0aWNrIDw9IG1heDsgfSk7XG4gICAgICAgIHJldHVybiB2YWxpZC5tYXAoZnVuY3Rpb24gKGluZGV4KSB7IHJldHVybiB2YWx1ZXNbaW5kZXhdOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcy5zbGljZShtaW4sIG1heCArIDEpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2F0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/cat.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/d3-linear.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/d3-linear.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return d3LinearTickMethod; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_d3_linear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/d3-linear */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/d3-linear.js\");\n/* harmony import */ var _util_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/interval */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/interval.js\");\n/* harmony import */ var _util_strict_limit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/strict-limit */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/strict-limit.js\");\n\n\n\n\nfunction d3LinearTickMethod(cfg) {\n var min = cfg.min, max = cfg.max, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit;\n var ticks = Object(_util_d3_linear__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(cfg);\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit)) {\n return Object(_util_strict_limit__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(cfg, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks), Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks));\n }\n if (tickInterval) {\n return Object(_util_interval__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n//# sourceMappingURL=d3-linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvZDMtbGluZWFyLmpzP2Y5MDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ047QUFDRDtBQUNPO0FBQ2hDO0FBQ2Y7QUFDQSxnQkFBZ0IsK0RBQVE7QUFDeEIsU0FBUyx3REFBSyxlQUFlLHdEQUFLO0FBQ2xDLGVBQWUsa0VBQVcsTUFBTSx1REFBSSxTQUFTLHVEQUFJO0FBQ2pEO0FBQ0E7QUFDQSxlQUFlLDhEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL2QzLWxpbmVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhlYWQsIGlzTmlsLCBsYXN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgZDNMaW5lYXIgZnJvbSAnLi4vdXRpbC9kMy1saW5lYXInO1xuaW1wb3J0IGludGVydmFsIGZyb20gJy4uL3V0aWwvaW50ZXJ2YWwnO1xuaW1wb3J0IHN0cmljdExpbWl0IGZyb20gJy4uL3V0aWwvc3RyaWN0LWxpbWl0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGQzTGluZWFyVGlja01ldGhvZChjZmcpIHtcbiAgICB2YXIgbWluID0gY2ZnLm1pbiwgbWF4ID0gY2ZnLm1heCwgdGlja0ludGVydmFsID0gY2ZnLnRpY2tJbnRlcnZhbCwgbWluTGltaXQgPSBjZmcubWluTGltaXQsIG1heExpbWl0ID0gY2ZnLm1heExpbWl0O1xuICAgIHZhciB0aWNrcyA9IGQzTGluZWFyKGNmZyk7XG4gICAgaWYgKCFpc05pbChtaW5MaW1pdCkgfHwgIWlzTmlsKG1heExpbWl0KSkge1xuICAgICAgICByZXR1cm4gc3RyaWN0TGltaXQoY2ZnLCBoZWFkKHRpY2tzKSwgbGFzdCh0aWNrcykpO1xuICAgIH1cbiAgICBpZiAodGlja0ludGVydmFsKSB7XG4gICAgICAgIHJldHVybiBpbnRlcnZhbChtaW4sIG1heCwgdGlja0ludGVydmFsKS50aWNrcztcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZDMtbGluZWFyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/d3-linear.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/index.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/index.js ***! \*******************************************************************************/ /*! exports provided: getTickMethod, registerTickMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cat */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/cat.js\");\n/* harmony import */ var _d3_linear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./d3-linear */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/d3-linear.js\");\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/linear.js\");\n/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/log.js\");\n/* harmony import */ var _pow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pow */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/pow.js\");\n/* harmony import */ var _quantile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./quantile */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/quantile.js\");\n/* harmony import */ var _r_prettry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./r-prettry */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/r-prettry.js\");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./register */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/register.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTickMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_7__[\"getTickMethod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerTickMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"]; });\n\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time.js\");\n/* harmony import */ var _time_cat__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./time-cat */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-cat.js\");\n/* harmony import */ var _time_pretty__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./time-pretty */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-pretty.js\");\n\n\n\n\n\n\n\n\n\n\n\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('cat', _cat__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('time-cat', _time_cat__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('wilkinson-extended', _linear__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('r-pretty', _r_prettry__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('time', _time__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('time-pretty', _time_pretty__WEBPACK_IMPORTED_MODULE_10__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('log', _log__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('pow', _pow__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('quantile', _quantile__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_7__[\"registerTickMethod\"])('d3-linear', _d3_linear__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvaW5kZXguanM/ZGM1ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QjtBQUNXO0FBQ0w7QUFDTjtBQUNBO0FBQ1U7QUFDQTtBQUM2QjtBQUNyQztBQUNPO0FBQ007QUFDdkMsb0VBQWtCLFFBQVEsNENBQUc7QUFDN0Isb0VBQWtCLGFBQWEsaURBQU87QUFDdEMsb0VBQWtCLHVCQUF1QiwrQ0FBTTtBQUMvQyxvRUFBa0IsYUFBYSxrREFBTztBQUN0QyxvRUFBa0IsU0FBUyw2Q0FBSTtBQUMvQixvRUFBa0IsZ0JBQWdCLHFEQUFVO0FBQzVDLG9FQUFrQixRQUFRLDRDQUFHO0FBQzdCLG9FQUFrQixRQUFRLDRDQUFHO0FBQzdCLG9FQUFrQixhQUFhLGlEQUFRO0FBQ3ZDLG9FQUFrQixjQUFjLGtEQUFRO0FBQ0s7QUFDN0MiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2F0IGZyb20gJy4vY2F0JztcbmltcG9ydCBkM0xpbmVhciBmcm9tICcuL2QzLWxpbmVhcic7XG5pbXBvcnQgbGluZWFyIGZyb20gJy4vbGluZWFyJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2cnO1xuaW1wb3J0IHBvdyBmcm9tICcuL3Bvdyc7XG5pbXBvcnQgcXVhbnRpbGUgZnJvbSAnLi9xdWFudGlsZSc7XG5pbXBvcnQgclByZXR0eSBmcm9tICcuL3ItcHJldHRyeSc7XG5pbXBvcnQgeyBnZXRUaWNrTWV0aG9kLCByZWdpc3RlclRpY2tNZXRob2QgfSBmcm9tICcuL3JlZ2lzdGVyJztcbmltcG9ydCB0aW1lIGZyb20gJy4vdGltZSc7XG5pbXBvcnQgdGltZUNhdCBmcm9tICcuL3RpbWUtY2F0JztcbmltcG9ydCB0aW1lUHJldHR5IGZyb20gJy4vdGltZS1wcmV0dHknO1xucmVnaXN0ZXJUaWNrTWV0aG9kKCdjYXQnLCBjYXQpO1xucmVnaXN0ZXJUaWNrTWV0aG9kKCd0aW1lLWNhdCcsIHRpbWVDYXQpO1xucmVnaXN0ZXJUaWNrTWV0aG9kKCd3aWxraW5zb24tZXh0ZW5kZWQnLCBsaW5lYXIpO1xucmVnaXN0ZXJUaWNrTWV0aG9kKCdyLXByZXR0eScsIHJQcmV0dHkpO1xucmVnaXN0ZXJUaWNrTWV0aG9kKCd0aW1lJywgdGltZSk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3RpbWUtcHJldHR5JywgdGltZVByZXR0eSk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ2xvZycsIGxvZyk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3BvdycsIHBvdyk7XG5yZWdpc3RlclRpY2tNZXRob2QoJ3F1YW50aWxlJywgcXVhbnRpbGUpO1xucmVnaXN0ZXJUaWNrTWV0aG9kKCdkMy1saW5lYXInLCBkM0xpbmVhcik7XG5leHBvcnQgeyBnZXRUaWNrTWV0aG9kLCByZWdpc3RlclRpY2tNZXRob2QgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/linear.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/linear.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linear; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_extended__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/extended */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/extended.js\");\n/* harmony import */ var _util_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/interval */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/interval.js\");\n/* harmony import */ var _util_strict_limit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/strict-limit */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/strict-limit.js\");\n\n\n\n\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction linear(cfg) {\n var min = cfg.min, max = cfg.max, tickCount = cfg.tickCount, nice = cfg.nice, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit;\n var ticks = Object(_util_extended__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickCount, nice).ticks;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit)) {\n return Object(_util_strict_limit__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(cfg, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks), Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks));\n }\n if (tickInterval) {\n return Object(_util_interval__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n//# sourceMappingURL=linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvbGluZWFyLmpzPzY1MjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ1A7QUFDQTtBQUNPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0EsZ0JBQWdCLDhEQUFRO0FBQ3hCLFNBQVMsd0RBQUssZUFBZSx3REFBSztBQUNsQyxlQUFlLGtFQUFXLE1BQU0sdURBQUksU0FBUyx1REFBSTtBQUNqRDtBQUNBO0FBQ0EsZUFBZSw4REFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC9saW5lYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZWFkLCBpc05pbCwgbGFzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGV4dGVuZGVkIGZyb20gJy4uL3V0aWwvZXh0ZW5kZWQnO1xuaW1wb3J0IGludGVydmFsIGZyb20gJy4uL3V0aWwvaW50ZXJ2YWwnO1xuaW1wb3J0IHN0cmljdExpbWl0IGZyb20gJy4uL3V0aWwvc3RyaWN0LWxpbWl0Jztcbi8qKlxuICog6K6h566X57q/5oCn55qEIHRpY2tz77yM5L2/55SoIHdpbGtpbnNvbiBleHRlbmRlZCDmlrnms5VcbiAqIEBwYXJhbSBjZmcg5bqm6YeP55qE6YWN572u6aG5XG4gKiBAcmV0dXJucyDorqHnrpflkI7nmoQgdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKGNmZykge1xuICAgIHZhciBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4LCB0aWNrQ291bnQgPSBjZmcudGlja0NvdW50LCBuaWNlID0gY2ZnLm5pY2UsIHRpY2tJbnRlcnZhbCA9IGNmZy50aWNrSW50ZXJ2YWwsIG1pbkxpbWl0ID0gY2ZnLm1pbkxpbWl0LCBtYXhMaW1pdCA9IGNmZy5tYXhMaW1pdDtcbiAgICB2YXIgdGlja3MgPSBleHRlbmRlZChtaW4sIG1heCwgdGlja0NvdW50LCBuaWNlKS50aWNrcztcbiAgICBpZiAoIWlzTmlsKG1pbkxpbWl0KSB8fCAhaXNOaWwobWF4TGltaXQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpY3RMaW1pdChjZmcsIGhlYWQodGlja3MpLCBsYXN0KHRpY2tzKSk7XG4gICAgfVxuICAgIGlmICh0aWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgcmV0dXJuIGludGVydmFsKG1pbiwgbWF4LCB0aWNrSW50ZXJ2YWwpLnRpY2tzO1xuICAgIH1cbiAgICByZXR1cm4gdGlja3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lYXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/linear.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/log.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/log.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateLogTicks; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js\");\n\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculateLogTicks(cfg) {\n var base = cfg.base, tickCount = cfg.tickCount, min = cfg.min, max = cfg.max, values = cfg.values;\n var minTick;\n var maxTick = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(base, max);\n if (min > 0) {\n minTick = Math.floor(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(base, min));\n }\n else {\n var positiveMin = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"getLogPositiveMin\"])(values, base, max);\n minTick = Math.floor(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"log\"])(base, positiveMin));\n }\n var count = maxTick - minTick;\n var avg = Math.ceil(count / tickCount);\n var ticks = [];\n for (var i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}\n//# sourceMappingURL=log.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvbG9nLmpzP2YyODYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxrQkFBa0Isc0RBQUc7QUFDckI7QUFDQSw2QkFBNkIsc0RBQUc7QUFDaEM7QUFDQTtBQUNBLDBCQUEwQixvRUFBaUI7QUFDM0MsNkJBQTZCLHNEQUFHO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLG1CQUFtQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvbG9nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9nUG9zaXRpdmVNaW4sIGxvZyB9IGZyb20gJy4uL3V0aWwvbWF0aCc7XG4vKipcbiAqIOiuoeeulyBsb2cg55qEIHRpY2tz77yM6ICD6JmRIG1pbiA9IDAg55qE5Zy65pmvXG4gKiBAcGFyYW0gY2ZnIOW6pumHj+eahOmFjee9rumhuVxuICogQHJldHVybnMg6K6h566X5ZCO55qEIHRpY2tzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbGN1bGF0ZUxvZ1RpY2tzKGNmZykge1xuICAgIHZhciBiYXNlID0gY2ZnLmJhc2UsIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQsIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXgsIHZhbHVlcyA9IGNmZy52YWx1ZXM7XG4gICAgdmFyIG1pblRpY2s7XG4gICAgdmFyIG1heFRpY2sgPSBsb2coYmFzZSwgbWF4KTtcbiAgICBpZiAobWluID4gMCkge1xuICAgICAgICBtaW5UaWNrID0gTWF0aC5mbG9vcihsb2coYmFzZSwgbWluKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgcG9zaXRpdmVNaW4gPSBnZXRMb2dQb3NpdGl2ZU1pbih2YWx1ZXMsIGJhc2UsIG1heCk7XG4gICAgICAgIG1pblRpY2sgPSBNYXRoLmZsb29yKGxvZyhiYXNlLCBwb3NpdGl2ZU1pbikpO1xuICAgIH1cbiAgICB2YXIgY291bnQgPSBtYXhUaWNrIC0gbWluVGljaztcbiAgICB2YXIgYXZnID0gTWF0aC5jZWlsKGNvdW50IC8gdGlja0NvdW50KTtcbiAgICB2YXIgdGlja3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gbWluVGljazsgaSA8IG1heFRpY2sgKyBhdmc7IGkgPSBpICsgYXZnKSB7XG4gICAgICAgIHRpY2tzLnB1c2goTWF0aC5wb3coYmFzZSwgaSkpO1xuICAgIH1cbiAgICBpZiAobWluIDw9IDApIHtcbiAgICAgICAgLy8g5pyA5bCP5YC8IDw9IDAg5pe25pi+56S6IDBcbiAgICAgICAgdGlja3MudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bG9nLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/log.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/pow.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/pow.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculatePowTicks; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js\");\n/* harmony import */ var _util_pretty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/pretty */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty.js\");\n\n\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculatePowTicks(cfg) {\n var exponent = cfg.exponent, tickCount = cfg.tickCount;\n var max = Math.ceil(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"calBase\"])(exponent, cfg.max));\n var min = Math.floor(Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"calBase\"])(exponent, cfg.min));\n var ticks = Object(_util_pretty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickCount).ticks;\n return ticks.map(function (tick) {\n var factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}\n//# sourceMappingURL=pow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvcG93LmpzP2YwZmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDSDtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBLHdCQUF3QiwwREFBTztBQUMvQix5QkFBeUIsMERBQU87QUFDaEMsZ0JBQWdCLDREQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3Bvdy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhbEJhc2UgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHByZXR0eSBmcm9tICcuLi91dGlsL3ByZXR0eSc7XG4vKipcbiAqIOiuoeeulyBQb3cg55qEIHRpY2tzXG4gKiBAcGFyYW0gY2ZnIOW6pumHj+eahOmFjee9rumhuVxuICogQHJldHVybnMg6K6h566X5ZCO55qEIHRpY2tzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbGN1bGF0ZVBvd1RpY2tzKGNmZykge1xuICAgIHZhciBleHBvbmVudCA9IGNmZy5leHBvbmVudCwgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudDtcbiAgICB2YXIgbWF4ID0gTWF0aC5jZWlsKGNhbEJhc2UoZXhwb25lbnQsIGNmZy5tYXgpKTtcbiAgICB2YXIgbWluID0gTWF0aC5mbG9vcihjYWxCYXNlKGV4cG9uZW50LCBjZmcubWluKSk7XG4gICAgdmFyIHRpY2tzID0gcHJldHR5KG1pbiwgbWF4LCB0aWNrQ291bnQpLnRpY2tzO1xuICAgIHJldHVybiB0aWNrcy5tYXAoZnVuY3Rpb24gKHRpY2spIHtcbiAgICAgICAgdmFyIGZhY3RvciA9IHRpY2sgPj0gMCA/IDEgOiAtMTtcbiAgICAgICAgcmV0dXJuIE1hdGgucG93KHRpY2ssIGV4cG9uZW50KSAqIGZhY3RvcjtcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/pow.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/quantile.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/quantile.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateTicks; });\n/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n var idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n }\n else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n }\n else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n }\n else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n }\n else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\nfunction calculateTicks(cfg) {\n var tickCount = cfg.tickCount, values = cfg.values;\n if (!values || !values.length) {\n return [];\n }\n var sorted = values.slice().sort(function (a, b) {\n return a - b;\n });\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n var p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}\n//# sourceMappingURL=quantile.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvcXVhbnRpbGUuanM/NWNhZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL3RpY2stbWV0aG9kL3F1YW50aWxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDorqHnrpflh6DliIbkvY0gaHR0cHM6Ly9naXRodWIuY29tL3NpbXBsZS1zdGF0aXN0aWNzL3NpbXBsZS1zdGF0aXN0aWNzL2Jsb2IvbWFzdGVyL3NyYy9xdWFudGlsZV9zb3J0ZWQuanNcbiAqIEBwYXJhbSB4ICDmlbDnu4RcbiAqIEBwYXJhbSBwICDnmb7liIbmr5RcbiAqL1xuZnVuY3Rpb24gcXVhbnRpbGVTb3J0ZWQoeCwgcCkge1xuICAgIHZhciBpZHggPSB4Lmxlbmd0aCAqIHA7XG4gICAgLyppZiAoeC5sZW5ndGggPT09IDApIHsgLy8g5b2T5YmN5Zy65pmv6L+Z5Lqb5p2h5Lu25LiN5Y+v6IO95ZG95LitXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1YW50aWxlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSB2YWx1ZS4nKTtcbiAgICB9IGVsc2UgaWYgKHAgPCAwIHx8IHAgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1YW50aWxlcyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMScpO1xuICAgIH0gZWxzZSAqL1xuICAgIGlmIChwID09PSAxKSB7XG4gICAgICAgIC8vIElmIHAgaXMgMSwgZGlyZWN0bHkgcmV0dXJuIHRoZSBsYXN0IGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIHhbeC5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgZWxzZSBpZiAocCA9PT0gMCkge1xuICAgICAgICAvLyBJZiBwIGlzIDAsIGRpcmVjdGx5IHJldHVybiB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgICByZXR1cm4geFswXTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaWR4ICUgMSAhPT0gMCkge1xuICAgICAgICAvLyBJZiBwIGlzIG5vdCBpbnRlZ2VyLCByZXR1cm4gdGhlIG5leHQgZWxlbWVudCBpbiBhcnJheVxuICAgICAgICByZXR1cm4geFtNYXRoLmNlaWwoaWR4KSAtIDFdO1xuICAgIH1cbiAgICBlbHNlIGlmICh4Lmxlbmd0aCAlIDIgPT09IDApIHtcbiAgICAgICAgLy8gSWYgdGhlIGxpc3QgaGFzIGV2ZW4tbGVuZ3RoLCB3ZSdsbCB0YWtlIHRoZSBhdmVyYWdlIG9mIHRoaXMgbnVtYmVyXG4gICAgICAgIC8vIGFuZCB0aGUgbmV4dCB2YWx1ZSwgaWYgdGhlcmUgaXMgb25lXG4gICAgICAgIHJldHVybiAoeFtpZHggLSAxXSArIHhbaWR4XSkgLyAyO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gRmluYWxseSwgaW4gdGhlIHNpbXBsZSBjYXNlIG9mIGFuIGludGVnZXIgdmFsdWVcbiAgICAgICAgLy8gd2l0aCBhbiBvZGQtbGVuZ3RoIGxpc3QsIHJldHVybiB0aGUgeCB2YWx1ZSBhdCB0aGUgaW5kZXguXG4gICAgICAgIHJldHVybiB4W2lkeF07XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FsY3VsYXRlVGlja3MoY2ZnKSB7XG4gICAgdmFyIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQsIHZhbHVlcyA9IGNmZy52YWx1ZXM7XG4gICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB2YXIgc29ydGVkID0gdmFsdWVzLnNsaWNlKCkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gICAgdmFyIHRpY2tzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aWNrQ291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcCA9IGkgLyAodGlja0NvdW50IC0gMSk7XG4gICAgICAgIHRpY2tzLnB1c2gocXVhbnRpbGVTb3J0ZWQoc29ydGVkLCBwKSk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1YW50aWxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/quantile.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/r-prettry.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/r-prettry.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return linearPretty; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_interval__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/interval */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/interval.js\");\n/* harmony import */ var _util_pretty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/pretty */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty.js\");\n/* harmony import */ var _util_strict_limit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/strict-limit */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/strict-limit.js\");\n\n\n\n\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction linearPretty(cfg) {\n var min = cfg.min, max = cfg.max, tickCount = cfg.tickCount, tickInterval = cfg.tickInterval, minLimit = cfg.minLimit, maxLimit = cfg.maxLimit;\n var ticks = Object(_util_pretty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(min, max, tickCount).ticks;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit)) {\n return Object(_util_strict_limit__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(cfg, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks), Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks));\n }\n if (tickInterval) {\n return Object(_util_interval__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n//# sourceMappingURL=r-prettry.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2Qvci1wcmV0dHJ5LmpzPzkzNjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ1A7QUFDSjtBQUNXO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0EsZ0JBQWdCLDREQUFNO0FBQ3RCLFNBQVMsd0RBQUssZUFBZSx3REFBSztBQUNsQyxlQUFlLGtFQUFXLE1BQU0sdURBQUksU0FBUyx1REFBSTtBQUNqRDtBQUNBO0FBQ0EsZUFBZSw4REFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC9yLXByZXR0cnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZWFkLCBpc05pbCwgbGFzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGludGVydmFsIGZyb20gJy4uL3V0aWwvaW50ZXJ2YWwnO1xuaW1wb3J0IHByZXR0eSBmcm9tICcuLi91dGlsL3ByZXR0eSc7XG5pbXBvcnQgc3RyaWN0TGltaXQgZnJvbSAnLi4vdXRpbC9zdHJpY3QtbGltaXQnO1xuLyoqXG4gKiDorqHnrpfnur/mgKfnmoQgdGlja3PvvIzkvb/nlKggUidzIHByZXR0eSDmlrnms5VcbiAqIEBwYXJhbSBjZmcg5bqm6YeP55qE6YWN572u6aG5XG4gKiBAcmV0dXJucyDorqHnrpflkI7nmoQgdGlja3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyUHJldHR5KGNmZykge1xuICAgIHZhciBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4LCB0aWNrQ291bnQgPSBjZmcudGlja0NvdW50LCB0aWNrSW50ZXJ2YWwgPSBjZmcudGlja0ludGVydmFsLCBtaW5MaW1pdCA9IGNmZy5taW5MaW1pdCwgbWF4TGltaXQgPSBjZmcubWF4TGltaXQ7XG4gICAgdmFyIHRpY2tzID0gcHJldHR5KG1pbiwgbWF4LCB0aWNrQ291bnQpLnRpY2tzO1xuICAgIGlmICghaXNOaWwobWluTGltaXQpIHx8ICFpc05pbChtYXhMaW1pdCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmljdExpbWl0KGNmZywgaGVhZCh0aWNrcyksIGxhc3QodGlja3MpKTtcbiAgICB9XG4gICAgaWYgKHRpY2tJbnRlcnZhbCkge1xuICAgICAgICByZXR1cm4gaW50ZXJ2YWwobWluLCBtYXgsIHRpY2tJbnRlcnZhbCkudGlja3M7XG4gICAgfVxuICAgIHJldHVybiB0aWNrcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXItcHJldHRyeS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/r-prettry.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/register.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/register.js ***! \**********************************************************************************/ /*! exports provided: getTickMethod, registerTickMethod */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTickMethod\", function() { return getTickMethod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerTickMethod\", function() { return registerTickMethod; });\nvar methodCache = {};\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nfunction getTickMethod(key) {\n return methodCache[key];\n}\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nfunction registerTickMethod(key, method) {\n methodCache[key] = method;\n}\n//# sourceMappingURL=register.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvcmVnaXN0ZXIuanM/MGI4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvcmVnaXN0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWV0aG9kQ2FjaGUgPSB7fTtcbi8qKlxuICog6I635Y+W6K6h566XIHRpY2tzIOeahOaWueazlVxuICogQHBhcmFtIGtleSDplK7lgLxcbiAqIEByZXR1cm5zIOiuoeeulyB0aWNrcyDnmoTmlrnms5VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpY2tNZXRob2Qoa2V5KSB7XG4gICAgcmV0dXJuIG1ldGhvZENhY2hlW2tleV07XG59XG4vKipcbiAqIOazqOWGjOiuoeeulyB0aWNrcyDnmoTmlrnms5VcbiAqIEBwYXJhbSBrZXkg6ZSu5YC8XG4gKiBAcGFyYW0gbWV0aG9kIOaWueazlVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJUaWNrTWV0aG9kKGtleSwgbWV0aG9kKSB7XG4gICAgbWV0aG9kQ2FjaGVba2V5XSA9IG1ldGhvZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlZ2lzdGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/register.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-cat.js": /*!**********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-cat.js ***! \**********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateTimeCatTicks; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _cat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cat */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/cat.js\");\n\n\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction calculateTimeCatTicks(cfg) {\n var ticks = Object(_cat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(cfg);\n var lastValue = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(cfg.values);\n if (lastValue !== Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks)) {\n ticks.push(lastValue);\n }\n return ticks;\n}\n//# sourceMappingURL=time-cat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvdGltZS1jYXQuanM/ODUzOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNMO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmLGdCQUFnQixvREFBUTtBQUN4QixvQkFBb0IsdURBQUk7QUFDeEIsc0JBQXNCLHVEQUFJO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvdGltZS1jYXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgY2F0VGlja3MgZnJvbSAnLi9jYXQnO1xuLyoqXG4gKiDorqHnrpfml7bpl7TliIbnsbvnmoQgdGlja3MsIOS/neWktO+8jOS/neWwvlxuICogQHBhcmFtIGNmZyDluqbph4/nmoTphY3nva7poblcbiAqIEByZXR1cm5zIOiuoeeul+WQjueahCB0aWNrc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYWxjdWxhdGVUaW1lQ2F0VGlja3MoY2ZnKSB7XG4gICAgdmFyIHRpY2tzID0gY2F0VGlja3MoY2ZnKTtcbiAgICB2YXIgbGFzdFZhbHVlID0gbGFzdChjZmcudmFsdWVzKTtcbiAgICBpZiAobGFzdFZhbHVlICE9PSBsYXN0KHRpY2tzKSkge1xuICAgICAgICB0aWNrcy5wdXNoKGxhc3RWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWUtY2F0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-cat.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-pretty.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-pretty.js ***! \*************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return timePretty; });\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js\");\n\nfunction getYear(date) {\n return new Date(date).getFullYear();\n}\nfunction createYear(year) {\n return new Date(year, 0, 1).getTime();\n}\nfunction getMonth(date) {\n return new Date(date).getMonth();\n}\nfunction diffMonth(min, max) {\n var minYear = getYear(min);\n var maxYear = getYear(max);\n var minMonth = getMonth(min);\n var maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + ((maxMonth - minMonth) % 12);\n}\nfunction creatMonth(year, month) {\n return new Date(year, month, 1).getTime();\n}\nfunction diffDay(min, max) {\n return Math.ceil((max - min) / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"DAY\"]);\n}\nfunction diffHour(min, max) {\n return Math.ceil((max - min) / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"HOUR\"]);\n}\nfunction diffMinus(min, max) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nfunction timePretty(cfg) {\n var min = cfg.min, max = cfg.max, minTickInterval = cfg.minTickInterval, tickCount = cfg.tickCount;\n var tickInterval = cfg.tickInterval;\n var ticks = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n var minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"YEAR\"]) {\n var maxYear = getYear(max);\n var yearInterval = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"YEAR\"]);\n for (var i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MONTH\"]) {\n // 大于月时\n var monthInterval = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MONTH\"]);\n var mmMoth = getMonth(min);\n var dMonths = diffMonth(min, max);\n for (var i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"DAY\"]) {\n // 大于天\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var mday = date.getDate();\n var day = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"DAY\"]);\n var ddays = diffDay(min, max);\n for (var i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"HOUR\"]) {\n // 大于小时\n var date = new Date(min);\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var hour = date.getHours();\n var hours = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"HOUR\"]);\n var dHours = diffHour(min, max);\n for (var i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n }\n else if (tickInterval > _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MINUTE\"]) {\n // 大于分钟\n var dMinus = diffMinus(min, max);\n var minutes = Math.ceil(tickInterval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MINUTE\"]);\n for (var i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * _util_time__WEBPACK_IMPORTED_MODULE_0__[\"MINUTE\"]);\n }\n }\n else {\n // 小于分钟\n var interval = tickInterval;\n if (interval < _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]) {\n interval = _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"];\n }\n var minSecond = Math.floor(min / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]) * _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"];\n var dSeconds = Math.ceil((max - min) / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]);\n var seconds = Math.ceil(interval / _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]);\n for (var i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * _util_time__WEBPACK_IMPORTED_MODULE_0__[\"SECOND\"]);\n }\n }\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(\"Notice: current ticks length(\" + ticks.length + \") >= 512, may cause performance issues, even out of memory. Because of the configure \\\"tickInterval\\\"(in milliseconds, current is \" + tickInterval + \") is too small, increase the value to solve the problem!\");\n }\n return ticks;\n}\n//# sourceMappingURL=time-pretty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvdGltZS1wcmV0dHkuanM/NjAwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBc0U7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyw4Q0FBRztBQUN0QztBQUNBO0FBQ0EsbUNBQW1DLCtDQUFJO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsK0NBQUk7QUFDM0I7QUFDQSxvREFBb0QsK0NBQUk7QUFDeEQsNkJBQTZCLDZCQUE2QjtBQUMxRDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQUs7QUFDakM7QUFDQSxxREFBcUQsZ0RBQUs7QUFDMUQ7QUFDQTtBQUNBLHVCQUF1Qiw4QkFBOEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsOENBQUc7QUFDOUM7QUFDQSx1QkFBdUIsaUJBQWlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwrQ0FBSTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsK0NBQUk7QUFDakQ7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixpREFBTTtBQUNsQztBQUNBO0FBQ0EsK0NBQStDLGlEQUFNO0FBQ3JELHVCQUF1Qix1QkFBdUI7QUFDOUMsaUNBQWlDLGlEQUFNO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsaURBQU07QUFDN0IsdUJBQXVCLGlEQUFNO0FBQzdCO0FBQ0EseUNBQXlDLGlEQUFNLElBQUksaURBQU07QUFDekQsK0NBQStDLGlEQUFNO0FBQ3JELDJDQUEyQyxpREFBTTtBQUNqRCx1QkFBdUIsd0JBQXdCO0FBQy9DLHVDQUF1QyxpREFBTTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC90aW1lLXByZXR0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERBWSwgSE9VUiwgTUlOVVRFLCBNT05USCwgU0VDT05ELCBZRUFSIH0gZnJvbSAnLi4vdXRpbC90aW1lJztcbmZ1bmN0aW9uIGdldFllYXIoZGF0ZSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKS5nZXRGdWxsWWVhcigpO1xufVxuZnVuY3Rpb24gY3JlYXRlWWVhcih5ZWFyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDAsIDEpLmdldFRpbWUoKTtcbn1cbmZ1bmN0aW9uIGdldE1vbnRoKGRhdGUpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkuZ2V0TW9udGgoKTtcbn1cbmZ1bmN0aW9uIGRpZmZNb250aChtaW4sIG1heCkge1xuICAgIHZhciBtaW5ZZWFyID0gZ2V0WWVhcihtaW4pO1xuICAgIHZhciBtYXhZZWFyID0gZ2V0WWVhcihtYXgpO1xuICAgIHZhciBtaW5Nb250aCA9IGdldE1vbnRoKG1pbik7XG4gICAgdmFyIG1heE1vbnRoID0gZ2V0TW9udGgobWF4KTtcbiAgICByZXR1cm4gKG1heFllYXIgLSBtaW5ZZWFyKSAqIDEyICsgKChtYXhNb250aCAtIG1pbk1vbnRoKSAlIDEyKTtcbn1cbmZ1bmN0aW9uIGNyZWF0TW9udGgoeWVhciwgbW9udGgpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpLmdldFRpbWUoKTtcbn1cbmZ1bmN0aW9uIGRpZmZEYXkobWluLCBtYXgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKChtYXggLSBtaW4pIC8gREFZKTtcbn1cbmZ1bmN0aW9uIGRpZmZIb3VyKG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgobWF4IC0gbWluKSAvIEhPVVIpO1xufVxuZnVuY3Rpb24gZGlmZk1pbnVzKG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgobWF4IC0gbWluKSAvICg2MCAqIDEwMDApKTtcbn1cbi8qKlxuICog6K6h566XIHRpbWUg55qEIHRpY2tz77yM5a+5IG1vbnRoLCB5ZWFyIOi/m+ihjCBwcmV0dHkg5aSE55CGXG4gKiBAcGFyYW0gY2ZnIOW6pumHj+eahOmFjee9rumhuVxuICogQHJldHVybnMg6K6h566X5ZCO55qEIHRpY2tzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRpbWVQcmV0dHkoY2ZnKSB7XG4gICAgdmFyIG1pbiA9IGNmZy5taW4sIG1heCA9IGNmZy5tYXgsIG1pblRpY2tJbnRlcnZhbCA9IGNmZy5taW5UaWNrSW50ZXJ2YWwsIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQ7XG4gICAgdmFyIHRpY2tJbnRlcnZhbCA9IGNmZy50aWNrSW50ZXJ2YWw7XG4gICAgdmFyIHRpY2tzID0gW107XG4gICAgLy8g5oyH5a6aIHRpY2tJbnRlcnZhbCDlkI4gdGlja0NvdW50IOS4jeeUn+aViO+8jOmcgOimgemHjeaWsOiuoeeul1xuICAgIGlmICghdGlja0ludGVydmFsKSB7XG4gICAgICAgIHRpY2tJbnRlcnZhbCA9IChtYXggLSBtaW4pIC8gdGlja0NvdW50O1xuICAgICAgICAvLyDlpoLmnpzorr7nva7kuobmnIDlsI/pl7Tot53vvIzliJnkvb/nlKjmnIDlsI/pl7Tot51cbiAgICAgICAgaWYgKG1pblRpY2tJbnRlcnZhbCAmJiB0aWNrSW50ZXJ2YWwgPCBtaW5UaWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRpY2tJbnRlcnZhbCA9IG1pblRpY2tJbnRlcnZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgbWluWWVhciA9IGdldFllYXIobWluKTtcbiAgICAvLyDlpoLmnpzpl7Tot53lpKfkuo4gMSDlubTvvIzliJnlsIblvIDlp4vml6XmnJ/ku47mlbTlubTlvIDlp4tcbiAgICBpZiAodGlja0ludGVydmFsID4gWUVBUikge1xuICAgICAgICB2YXIgbWF4WWVhciA9IGdldFllYXIobWF4KTtcbiAgICAgICAgdmFyIHllYXJJbnRlcnZhbCA9IE1hdGguY2VpbCh0aWNrSW50ZXJ2YWwgLyBZRUFSKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IG1pblllYXI7IGkgPD0gbWF4WWVhciArIHllYXJJbnRlcnZhbDsgaSA9IGkgKyB5ZWFySW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRpY2tzLnB1c2goY3JlYXRlWWVhcihpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGlja0ludGVydmFsID4gTU9OVEgpIHtcbiAgICAgICAgLy8g5aSn5LqO5pyI5pe2XG4gICAgICAgIHZhciBtb250aEludGVydmFsID0gTWF0aC5jZWlsKHRpY2tJbnRlcnZhbCAvIE1PTlRIKTtcbiAgICAgICAgdmFyIG1tTW90aCA9IGdldE1vbnRoKG1pbik7XG4gICAgICAgIHZhciBkTW9udGhzID0gZGlmZk1vbnRoKG1pbiwgbWF4KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gZE1vbnRocyArIG1vbnRoSW50ZXJ2YWw7IGkgPSBpICsgbW9udGhJbnRlcnZhbCkge1xuICAgICAgICAgICAgdGlja3MucHVzaChjcmVhdE1vbnRoKG1pblllYXIsIGkgKyBtbU1vdGgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0aWNrSW50ZXJ2YWwgPiBEQVkpIHtcbiAgICAgICAgLy8g5aSn5LqO5aSpXG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUobWluKTtcbiAgICAgICAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgdmFyIG1kYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCh0aWNrSW50ZXJ2YWwgLyBEQVkpO1xuICAgICAgICB2YXIgZGRheXMgPSBkaWZmRGF5KG1pbiwgbWF4KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZGF5cyArIGRheTsgaSA9IGkgKyBkYXkpIHtcbiAgICAgICAgICAgIHRpY2tzLnB1c2gobmV3IERhdGUoeWVhciwgbW9udGgsIG1kYXkgKyBpKS5nZXRUaW1lKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRpY2tJbnRlcnZhbCA+IEhPVVIpIHtcbiAgICAgICAgLy8g5aSn5LqO5bCP5pe2XG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUobWluKTtcbiAgICAgICAgdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgdmFyIGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICB2YXIgaG91ciA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5jZWlsKHRpY2tJbnRlcnZhbCAvIEhPVVIpO1xuICAgICAgICB2YXIgZEhvdXJzID0gZGlmZkhvdXIobWluLCBtYXgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkSG91cnMgKyBob3VyczsgaSA9IGkgKyBob3Vycykge1xuICAgICAgICAgICAgdGlja3MucHVzaChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyICsgaSkuZ2V0VGltZSgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0aWNrSW50ZXJ2YWwgPiBNSU5VVEUpIHtcbiAgICAgICAgLy8g5aSn5LqO5YiG6ZKfXG4gICAgICAgIHZhciBkTWludXMgPSBkaWZmTWludXMobWluLCBtYXgpO1xuICAgICAgICB2YXIgbWludXRlcyA9IE1hdGguY2VpbCh0aWNrSW50ZXJ2YWwgLyBNSU5VVEUpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBkTWludXMgKyBtaW51dGVzOyBpID0gaSArIG1pbnV0ZXMpIHtcbiAgICAgICAgICAgIHRpY2tzLnB1c2gobWluICsgaSAqIE1JTlVURSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIOWwj+S6juWIhumSn1xuICAgICAgICB2YXIgaW50ZXJ2YWwgPSB0aWNrSW50ZXJ2YWw7XG4gICAgICAgIGlmIChpbnRlcnZhbCA8IFNFQ09ORCkge1xuICAgICAgICAgICAgaW50ZXJ2YWwgPSBTRUNPTkQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1pblNlY29uZCA9IE1hdGguZmxvb3IobWluIC8gU0VDT05EKSAqIFNFQ09ORDtcbiAgICAgICAgdmFyIGRTZWNvbmRzID0gTWF0aC5jZWlsKChtYXggLSBtaW4pIC8gU0VDT05EKTtcbiAgICAgICAgdmFyIHNlY29uZHMgPSBNYXRoLmNlaWwoaW50ZXJ2YWwgLyBTRUNPTkQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRTZWNvbmRzICsgc2Vjb25kczsgaSA9IGkgKyBzZWNvbmRzKSB7XG4gICAgICAgICAgICB0aWNrcy5wdXNoKG1pblNlY29uZCArIGkgKiBTRUNPTkQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIOacgOWlveaYr+iDveS7jueul+azleiDveino+WGs+i/meS4qumXrumimO+8jOS9huaYr+WmguaenOaMh+WumuS6hiB0aWNrSW50ZXJ2YWzvvIzorqHnrpcgdGlja3PvvIzkuZ/lj6rog73ov5nkuYjnrpfvvIzmiYDku6VcbiAgICAvLyDmiZPljbDorablkYrmj5DnpLpcbiAgICBpZiAodGlja3MubGVuZ3RoID49IDUxMikge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJOb3RpY2U6IGN1cnJlbnQgdGlja3MgbGVuZ3RoKFwiICsgdGlja3MubGVuZ3RoICsgXCIpID49IDUxMiwgbWF5IGNhdXNlIHBlcmZvcm1hbmNlIGlzc3VlcywgZXZlbiBvdXQgb2YgbWVtb3J5LiBCZWNhdXNlIG9mIHRoZSBjb25maWd1cmUgXFxcInRpY2tJbnRlcnZhbFxcXCIoaW4gbWlsbGlzZWNvbmRzLCBjdXJyZW50IGlzIFwiICsgdGlja0ludGVydmFsICsgXCIpIGlzIHRvbyBzbWFsbCwgaW5jcmVhc2UgdGhlIHZhbHVlIHRvIHNvbHZlIHRoZSBwcm9ibGVtIVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZS1wcmV0dHkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time-pretty.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return calculateTimeTicks; });\n/* harmony import */ var _util_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/time */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js\");\n\nfunction calculateTimeTicks(cfg) {\n var min = cfg.min, max = cfg.max, minTickInterval = cfg.minTickInterval;\n var tickInterval = cfg.tickInterval;\n var tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n }\n else {\n tickInterval = Object(_util_time__WEBPACK_IMPORTED_MODULE_0__[\"getTickInterval\"])(min, max, tickCount)[1];\n var count = (max - min) / tickInterval;\n var ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n var ticks = [];\n for (var i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdGljay1tZXRob2QvdGltZS5qcz85YTVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUErQztBQUNoQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0VBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix3QkFBd0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS90aWNrLW1ldGhvZC90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0VGlja0ludGVydmFsIH0gZnJvbSAnLi4vdXRpbC90aW1lJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbGN1bGF0ZVRpbWVUaWNrcyhjZmcpIHtcbiAgICB2YXIgbWluID0gY2ZnLm1pbiwgbWF4ID0gY2ZnLm1heCwgbWluVGlja0ludGVydmFsID0gY2ZnLm1pblRpY2tJbnRlcnZhbDtcbiAgICB2YXIgdGlja0ludGVydmFsID0gY2ZnLnRpY2tJbnRlcnZhbDtcbiAgICB2YXIgdGlja0NvdW50ID0gY2ZnLnRpY2tDb3VudDtcbiAgICAvLyDmjIflrpogdGlja0ludGVydmFsIOWQjiB0aWNrQ291bnQg5LiN55Sf5pWI77yM6ZyA6KaB6YeN5paw6K6h566XXG4gICAgaWYgKHRpY2tJbnRlcnZhbCkge1xuICAgICAgICB0aWNrQ291bnQgPSBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyB0aWNrSW50ZXJ2YWwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGlja0ludGVydmFsID0gZ2V0VGlja0ludGVydmFsKG1pbiwgbWF4LCB0aWNrQ291bnQpWzFdO1xuICAgICAgICB2YXIgY291bnQgPSAobWF4IC0gbWluKSAvIHRpY2tJbnRlcnZhbDtcbiAgICAgICAgdmFyIHJhdGlvID0gY291bnQgLyB0aWNrQ291bnQ7XG4gICAgICAgIGlmIChyYXRpbyA+IDEpIHtcbiAgICAgICAgICAgIHRpY2tJbnRlcnZhbCA9IHRpY2tJbnRlcnZhbCAqIE1hdGguY2VpbChyYXRpbyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aaC5p6c6K6+572u5LqG5pyA5bCP6Ze06Led77yM5YiZ5L2/55So5pyA5bCP6Ze06LedXG4gICAgICAgIGlmIChtaW5UaWNrSW50ZXJ2YWwgJiYgdGlja0ludGVydmFsIDwgbWluVGlja0ludGVydmFsKSB7XG4gICAgICAgICAgICB0aWNrSW50ZXJ2YWwgPSBtaW5UaWNrSW50ZXJ2YWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHRpY2tzID0gW107XG4gICAgZm9yICh2YXIgaSA9IG1pbjsgaSA8IG1heCArIHRpY2tJbnRlcnZhbDsgaSArPSB0aWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgdGlja3MucHVzaChpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/tick-method/time.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/bisector.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/bisector.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (getter) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function (a, x, _lo, _hi) {\n var lo = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(_lo) ? 0 : _lo;\n var hi = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(_hi) ? a.length : _hi;\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n});\n//# sourceMappingURL=bisector.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9iaXNlY3Rvci5qcz9iYzNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QixpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS91dGlsL2Jpc2VjdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbi8qKlxuICog5LqM5YiG5Y+z5L6n5p+l5om+XG4gKiBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtYXJyYXkvYmxvYi9tYXN0ZXIvc3JjL2Jpc2VjdG9yLmpzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChnZXR0ZXIpIHtcbiAgICAvKipcbiAgICAgKiB4OiDnm67moIflgLxcbiAgICAgKiBsbzog6LW35aeL5L2N572uXG4gICAgICogaGk6IOe7k+adn+S9jee9rlxuICAgICAqL1xuICAgIHJldHVybiBmdW5jdGlvbiAoYSwgeCwgX2xvLCBfaGkpIHtcbiAgICAgICAgdmFyIGxvID0gaXNOaWwoX2xvKSA/IDAgOiBfbG87XG4gICAgICAgIHZhciBoaSA9IGlzTmlsKF9oaSkgPyBhLmxlbmd0aCA6IF9oaTtcbiAgICAgICAgd2hpbGUgKGxvIDwgaGkpIHtcbiAgICAgICAgICAgIHZhciBtaWQgPSAobG8gKyBoaSkgPj4+IDE7XG4gICAgICAgICAgICBpZiAoZ2V0dGVyKGFbbWlkXSkgPiB4KSB7XG4gICAgICAgICAgICAgICAgaGkgPSBtaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvO1xuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaXNlY3Rvci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/bisector.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/d3-linear.js": /*!****************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/d3-linear.js ***! \****************************************************************************/ /*! exports provided: default, D3Linear */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return d3Linear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"D3Linear\", function() { return D3Linear; });\nfunction d3Linear(cfg) {\n var min = cfg.min, max = cfg.max, nice = cfg.nice, tickCount = cfg.tickCount;\n var linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\nvar DEFAULT_COUNT = 5;\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\n// https://github.com/d3/d3-scale\nvar D3Linear = /** @class */ (function () {\n function D3Linear() {\n this._domain = [0, 1];\n }\n D3Linear.prototype.domain = function (domain) {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n };\n D3Linear.prototype.nice = function (count) {\n var _a, _b;\n if (count === void 0) { count = DEFAULT_COUNT; }\n var d = this._domain.slice();\n var i0 = 0;\n var i1 = this._domain.length - 1;\n var start = this._domain[i0];\n var stop = this._domain[i1];\n var step;\n if (stop < start) {\n _a = [stop, start], start = _a[0], stop = _a[1];\n _b = [i1, i0], i0 = _b[0], i1 = _b[1];\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n }\n else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n }\n else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n return this;\n };\n D3Linear.prototype.ticks = function (count) {\n if (count === void 0) { count = DEFAULT_COUNT; }\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n };\n return D3Linear;\n}());\n\nfunction d3ArrayTicks(start, stop, count) {\n var reverse;\n var i = -1;\n var n;\n var ticks;\n var step;\n (stop = +stop), (start = +start), (count = +count);\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if ((reverse = stop < start)) {\n (n = start), (start = stop), (stop = n);\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n }\n else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array((n = Math.ceil(start - stop + 1)));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n if (reverse) {\n ticks.reverse();\n }\n return ticks;\n}\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count);\n var power = Math.floor(Math.log(step) / Math.LN10);\n var error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n//# sourceMappingURL=d3-linear.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9kMy1saW5lYXIuanM/OWE3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsdUJBQXVCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVCQUF1QjtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ21CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfc2NhbGVAMC4zLjE0QEBhbnR2L3NjYWxlL2VzbS91dGlsL2QzLWxpbmVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGQzTGluZWFyKGNmZykge1xuICAgIHZhciBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4LCBuaWNlID0gY2ZnLm5pY2UsIHRpY2tDb3VudCA9IGNmZy50aWNrQ291bnQ7XG4gICAgdmFyIGxpbmVhciA9IG5ldyBEM0xpbmVhcigpO1xuICAgIGxpbmVhci5kb21haW4oW21pbiwgbWF4XSk7XG4gICAgaWYgKG5pY2UpIHtcbiAgICAgICAgbGluZWFyLm5pY2UodGlja0NvdW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVhci50aWNrcyh0aWNrQ291bnQpO1xufVxudmFyIERFRkFVTFRfQ09VTlQgPSA1O1xudmFyIGUxMCA9IE1hdGguc3FydCg1MCk7XG52YXIgZTUgPSBNYXRoLnNxcnQoMTApO1xudmFyIGUyID0gTWF0aC5zcXJ0KDIpO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNjYWxlXG52YXIgRDNMaW5lYXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRDNMaW5lYXIoKSB7XG4gICAgICAgIHRoaXMuX2RvbWFpbiA9IFswLCAxXTtcbiAgICB9XG4gICAgRDNMaW5lYXIucHJvdG90eXBlLmRvbWFpbiA9IGZ1bmN0aW9uIChkb21haW4pIHtcbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgdGhpcy5fZG9tYWluID0gQXJyYXkuZnJvbShkb21haW4sIE51bWJlcik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZG9tYWluLnNsaWNlKCk7XG4gICAgfTtcbiAgICBEM0xpbmVhci5wcm90b3R5cGUubmljZSA9IGZ1bmN0aW9uIChjb3VudCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoY291bnQgPT09IHZvaWQgMCkgeyBjb3VudCA9IERFRkFVTFRfQ09VTlQ7IH1cbiAgICAgICAgdmFyIGQgPSB0aGlzLl9kb21haW4uc2xpY2UoKTtcbiAgICAgICAgdmFyIGkwID0gMDtcbiAgICAgICAgdmFyIGkxID0gdGhpcy5fZG9tYWluLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciBzdGFydCA9IHRoaXMuX2RvbWFpbltpMF07XG4gICAgICAgIHZhciBzdG9wID0gdGhpcy5fZG9tYWluW2kxXTtcbiAgICAgICAgdmFyIHN0ZXA7XG4gICAgICAgIGlmIChzdG9wIDwgc3RhcnQpIHtcbiAgICAgICAgICAgIF9hID0gW3N0b3AsIHN0YXJ0XSwgc3RhcnQgPSBfYVswXSwgc3RvcCA9IF9hWzFdO1xuICAgICAgICAgICAgX2IgPSBbaTEsIGkwXSwgaTAgPSBfYlswXSwgaTEgPSBfYlsxXTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuICAgICAgICBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgICAgIHN0b3AgPSBNYXRoLmNlaWwoc3RvcCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgICAgIHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgICAgICAgIHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgICAgICBkW2kwXSA9IE1hdGguZmxvb3Ioc3RhcnQgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICAgICAgICBkW2kxXSA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgICAgICAgdGhpcy5kb21haW4oZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgICAgICAgIGRbaTBdID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgICAgICAgZFtpMV0gPSBNYXRoLmZsb29yKHN0b3AgKiBzdGVwKSAvIHN0ZXA7XG4gICAgICAgICAgICB0aGlzLmRvbWFpbihkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEQzTGluZWFyLnByb3RvdHlwZS50aWNrcyA9IGZ1bmN0aW9uIChjb3VudCkge1xuICAgICAgICBpZiAoY291bnQgPT09IHZvaWQgMCkgeyBjb3VudCA9IERFRkFVTFRfQ09VTlQ7IH1cbiAgICAgICAgcmV0dXJuIGQzQXJyYXlUaWNrcyh0aGlzLl9kb21haW5bMF0sIHRoaXMuX2RvbWFpblt0aGlzLl9kb21haW4ubGVuZ3RoIC0gMV0sIGNvdW50IHx8IERFRkFVTFRfQ09VTlQpO1xuICAgIH07XG4gICAgcmV0dXJuIEQzTGluZWFyO1xufSgpKTtcbmV4cG9ydCB7IEQzTGluZWFyIH07XG5mdW5jdGlvbiBkM0FycmF5VGlja3Moc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gICAgdmFyIHJldmVyc2U7XG4gICAgdmFyIGkgPSAtMTtcbiAgICB2YXIgbjtcbiAgICB2YXIgdGlja3M7XG4gICAgdmFyIHN0ZXA7XG4gICAgKHN0b3AgPSArc3RvcCksIChzdGFydCA9ICtzdGFydCksIChjb3VudCA9ICtjb3VudCk7XG4gICAgaWYgKHN0YXJ0ID09PSBzdG9wICYmIGNvdW50ID4gMCkge1xuICAgICAgICByZXR1cm4gW3N0YXJ0XTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgaWYgKChyZXZlcnNlID0gc3RvcCA8IHN0YXJ0KSkge1xuICAgICAgICAobiA9IHN0YXJ0KSwgKHN0YXJ0ID0gc3RvcCksIChzdG9wID0gbik7XG4gICAgfVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIGlmICgoc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KSkgPT09IDAgfHwgIWlzRmluaXRlKHN0ZXApKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0IC8gc3RlcCk7XG4gICAgICAgIHN0b3AgPSBNYXRoLmZsb29yKHN0b3AgLyBzdGVwKTtcbiAgICAgICAgdGlja3MgPSBuZXcgQXJyYXkoKG4gPSBNYXRoLmNlaWwoc3RvcCAtIHN0YXJ0ICsgMSkpKTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgICAgICAgIHRpY2tzW2ldID0gKHN0YXJ0ICsgaSkgKiBzdGVwO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IE1hdGguZmxvb3Ioc3RhcnQgKiBzdGVwKTtcbiAgICAgICAgc3RvcCA9IE1hdGguY2VpbChzdG9wICogc3RlcCk7XG4gICAgICAgIHRpY2tzID0gbmV3IEFycmF5KChuID0gTWF0aC5jZWlsKHN0YXJ0IC0gc3RvcCArIDEpKSk7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgICAgICB0aWNrc1tpXSA9IChzdGFydCAtIGkpIC8gc3RlcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICB0aWNrcy5yZXZlcnNlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrcztcbn1cbmZ1bmN0aW9uIHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gICAgdmFyIHN0ZXAgPSAoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KTtcbiAgICB2YXIgcG93ZXIgPSBNYXRoLmZsb29yKE1hdGgubG9nKHN0ZXApIC8gTWF0aC5MTjEwKTtcbiAgICB2YXIgZXJyb3IgPSBzdGVwIC8gTWF0aC5wb3coMTAsIHBvd2VyKTtcbiAgICByZXR1cm4gcG93ZXIgPj0gMFxuICAgICAgICA/IChlcnJvciA+PSBlMTAgPyAxMCA6IGVycm9yID49IGU1ID8gNSA6IGVycm9yID49IGUyID8gMiA6IDEpICogTWF0aC5wb3coMTAsIHBvd2VyKVxuICAgICAgICA6IC1NYXRoLnBvdygxMCwgLXBvd2VyKSAvIChlcnJvciA+PSBlMTAgPyAxMCA6IGVycm9yID49IGU1ID8gNSA6IGVycm9yID49IGUyID8gMiA6IDEpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZDMtbGluZWFyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/d3-linear.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/extended.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/extended.js ***! \***************************************************************************/ /*! exports provided: DEFAULT_Q, ALL_Q, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_Q\", function() { return DEFAULT_Q; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ALL_Q\", function() { return ALL_Q; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return extended; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _pretty_number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pretty-number */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty-number.js\");\n\n\nvar DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\nvar ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\nvar eps = Number.EPSILON * 100;\nfunction mod(n, m) {\n return ((n % m) + m) % m;\n}\nfunction round(n) {\n return Math.round(n * 1e12) / 1e12;\n}\nfunction simplicity(q, Q, j, lmin, lmax, lstep) {\n var n = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"size\"])(Q);\n var i = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"indexOf\"])(Q, q);\n var v = 0;\n var m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\nfunction simplicityMax(q, Q, j) {\n var n = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"size\"])(Q);\n var i = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"indexOf\"])(Q, q);\n var v = 1;\n return 1 - i / (n - 1) - j + v;\n}\nfunction density(k, m, dMin, dMax, lMin, lMax) {\n var r = (k - 1) / (lMax - lMin);\n var rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\nfunction densityMax(k, m) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\nfunction coverage(dMin, dMax, lMin, lMax) {\n var range = dMax - dMin;\n return 1 - (0.5 * (Math.pow((dMax - lMax), 2) + Math.pow((dMin - lMin), 2))) / Math.pow((0.1 * range), 2);\n}\nfunction coverageMax(dMin, dMax, span) {\n var range = dMax - dMin;\n if (span > range) {\n var half = (span - range) / 2;\n return 1 - Math.pow(half, 2) / Math.pow((0.1 * range), 2);\n }\n return 1;\n}\nfunction legibility() {\n return 1;\n}\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nfunction extended(dMin, dMax, n, onlyLoose, Q, w) {\n if (n === void 0) { n = 5; }\n if (onlyLoose === void 0) { onlyLoose = true; }\n if (Q === void 0) { Q = DEFAULT_Q; }\n if (w === void 0) { w = [0.25, 0.2, 0.5, 0.05]; }\n // 处理小于 0 和小数的 tickCount\n var m = n < 0 ? 0 : Math.round(n);\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: [],\n };\n }\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin],\n };\n }\n var best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0,\n };\n var j = 1;\n while (j < Infinity) {\n for (var i = 0; i < Q.length; i += 1) {\n var q = Q[i];\n var sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n var k = 2;\n while (k < Infinity) {\n var dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n var delta = (dMax - dMin) / (k + 1) / j / q;\n var z = Math.ceil(Math.log10(delta));\n while (z < Infinity) {\n var step = j * q * Math.pow(10, z);\n var cm = coverageMax(dMin, dMax, step * (k - 1));\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n var minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n var maxStart = Math.ceil(dMin / step) * j;\n if (minStart <= maxStart) {\n var count = maxStart - minStart;\n for (var i_1 = 0; i_1 <= count; i_1 += 1) {\n var start = minStart + i_1;\n var lMin = start * (step / j);\n var lMax = lMin + step * (k - 1);\n var lStep = step;\n var s = simplicity(q, Q, j, lMin, lMax, lStep);\n var c = coverage(dMin, dMax, lMin, lMax);\n var g = density(k, m, dMin, dMax, lMin, lMax);\n var l = legibility();\n var score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || (lMin <= dMin && lMax >= dMax))) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n // 处理精度问题,保证这三个数没有精度问题\n var lmax = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(best.lmax);\n var lmin = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(best.lmin);\n var lstep = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(best.lstep);\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n var tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n var ticks = new Array(tickCount);\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(lmin);\n for (var i = 1; i < tickCount; i++) {\n ticks[i] = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_1__[\"prettyNumber\"])(ticks[i - 1] + lstep);\n }\n return {\n min: Math.min(dMin, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"head\"])(ticks)),\n max: Math.max(dMax, Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(ticks)),\n ticks: ticks,\n };\n}\n//# sourceMappingURL=extended.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9leHRlbmRlZC5qcz8wNTgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1RDtBQUNSO0FBQ3hDO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQixZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZix1QkFBdUIsT0FBTztBQUM5QiwrQkFBK0Isa0JBQWtCO0FBQ2pELHVCQUF1QixlQUFlO0FBQ3RDLHVCQUF1Qiw0QkFBNEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixjQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxjQUFjO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtRUFBWTtBQUMzQixlQUFlLG1FQUFZO0FBQzNCLGdCQUFnQixtRUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtRUFBWTtBQUMzQixtQkFBbUIsZUFBZTtBQUNsQyxtQkFBbUIsbUVBQVk7QUFDL0I7QUFDQTtBQUNBLDRCQUE0Qix1REFBSTtBQUNoQyw0QkFBNEIsdURBQUk7QUFDaEM7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9leHRlbmRlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhlYWQsIGluZGV4T2YsIHNpemUsIGxhc3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHByZXR0eU51bWJlciB9IGZyb20gJy4vcHJldHR5LW51bWJlcic7XG5leHBvcnQgdmFyIERFRkFVTFRfUSA9IFsxLCA1LCAyLCAyLjUsIDQsIDNdO1xuZXhwb3J0IHZhciBBTExfUSA9IFsxLCA1LCAyLCAyLjUsIDQsIDMsIDEuNSwgNywgNiwgOCwgOV07XG52YXIgZXBzID0gTnVtYmVyLkVQU0lMT04gKiAxMDA7XG5mdW5jdGlvbiBtb2QobiwgbSkge1xuICAgIHJldHVybiAoKG4gJSBtKSArIG0pICUgbTtcbn1cbmZ1bmN0aW9uIHJvdW5kKG4pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChuICogMWUxMikgLyAxZTEyO1xufVxuZnVuY3Rpb24gc2ltcGxpY2l0eShxLCBRLCBqLCBsbWluLCBsbWF4LCBsc3RlcCkge1xuICAgIHZhciBuID0gc2l6ZShRKTtcbiAgICB2YXIgaSA9IGluZGV4T2YoUSwgcSk7XG4gICAgdmFyIHYgPSAwO1xuICAgIHZhciBtID0gbW9kKGxtaW4sIGxzdGVwKTtcbiAgICBpZiAoKG0gPCBlcHMgfHwgbHN0ZXAgLSBtIDwgZXBzKSAmJiBsbWluIDw9IDAgJiYgbG1heCA+PSAwKSB7XG4gICAgICAgIHYgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gMSAtIGkgLyAobiAtIDEpIC0gaiArIHY7XG59XG5mdW5jdGlvbiBzaW1wbGljaXR5TWF4KHEsIFEsIGopIHtcbiAgICB2YXIgbiA9IHNpemUoUSk7XG4gICAgdmFyIGkgPSBpbmRleE9mKFEsIHEpO1xuICAgIHZhciB2ID0gMTtcbiAgICByZXR1cm4gMSAtIGkgLyAobiAtIDEpIC0gaiArIHY7XG59XG5mdW5jdGlvbiBkZW5zaXR5KGssIG0sIGRNaW4sIGRNYXgsIGxNaW4sIGxNYXgpIHtcbiAgICB2YXIgciA9IChrIC0gMSkgLyAobE1heCAtIGxNaW4pO1xuICAgIHZhciBydCA9IChtIC0gMSkgLyAoTWF0aC5tYXgobE1heCwgZE1heCkgLSBNYXRoLm1pbihkTWluLCBsTWluKSk7XG4gICAgcmV0dXJuIDIgLSBNYXRoLm1heChyIC8gcnQsIHJ0IC8gcik7XG59XG5mdW5jdGlvbiBkZW5zaXR5TWF4KGssIG0pIHtcbiAgICBpZiAoayA+PSBtKSB7XG4gICAgICAgIHJldHVybiAyIC0gKGsgLSAxKSAvIChtIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiAxO1xufVxuZnVuY3Rpb24gY292ZXJhZ2UoZE1pbiwgZE1heCwgbE1pbiwgbE1heCkge1xuICAgIHZhciByYW5nZSA9IGRNYXggLSBkTWluO1xuICAgIHJldHVybiAxIC0gKDAuNSAqIChNYXRoLnBvdygoZE1heCAtIGxNYXgpLCAyKSArIE1hdGgucG93KChkTWluIC0gbE1pbiksIDIpKSkgLyBNYXRoLnBvdygoMC4xICogcmFuZ2UpLCAyKTtcbn1cbmZ1bmN0aW9uIGNvdmVyYWdlTWF4KGRNaW4sIGRNYXgsIHNwYW4pIHtcbiAgICB2YXIgcmFuZ2UgPSBkTWF4IC0gZE1pbjtcbiAgICBpZiAoc3BhbiA+IHJhbmdlKSB7XG4gICAgICAgIHZhciBoYWxmID0gKHNwYW4gLSByYW5nZSkgLyAyO1xuICAgICAgICByZXR1cm4gMSAtIE1hdGgucG93KGhhbGYsIDIpIC8gTWF0aC5wb3coKDAuMSAqIHJhbmdlKSwgMik7XG4gICAgfVxuICAgIHJldHVybiAxO1xufVxuZnVuY3Rpb24gbGVnaWJpbGl0eSgpIHtcbiAgICByZXR1cm4gMTtcbn1cbi8qKlxuICogQW4gRXh0ZW5zaW9uIG9mIFdpbGtpbnNvbidzIEFsZ29yaXRobSBmb3IgUG9zaXRpb24gVGljayBMYWJlbHMgb24gQXhlc1xuICogaHR0cHM6Ly93d3cueXVxdWUuY29tL3ByZXZpZXcveXVxdWUvMC8yMDE5L3BkZi8xODUzMTcvMTU0Njk5OTE1MDg1OC00NWMzYjljMi00ZTg2LTQyMjMtYmYxYS04YTczMmU4MTk1ZWQucGRmXG4gKiBAcGFyYW0gZE1pbiDmnIDlsI/lgLxcbiAqIEBwYXJhbSBkTWF4IOacgOWkp+WAvFxuICogQHBhcmFtIG0gdGlja+S4quaVsFxuICogQHBhcmFtIG9ubHlMb29zZSDmmK/lkKblhYHorrjmianlsZVtaW7jgIFtYXjvvIzkuI3nu53lr7nlvLrliLbvvIzkvovlpoJbMywgOTddXG4gKiBAcGFyYW0gUSBuaWNlIG51bWJlcnPpm4blkIhcbiAqIEBwYXJhbSB3IOWbm+S4quS8mOWMlue7hOS7tueahOadg+mHjVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlbmRlZChkTWluLCBkTWF4LCBuLCBvbmx5TG9vc2UsIFEsIHcpIHtcbiAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSA1OyB9XG4gICAgaWYgKG9ubHlMb29zZSA9PT0gdm9pZCAwKSB7IG9ubHlMb29zZSA9IHRydWU7IH1cbiAgICBpZiAoUSA9PT0gdm9pZCAwKSB7IFEgPSBERUZBVUxUX1E7IH1cbiAgICBpZiAodyA9PT0gdm9pZCAwKSB7IHcgPSBbMC4yNSwgMC4yLCAwLjUsIDAuMDVdOyB9XG4gICAgLy8g5aSE55CG5bCP5LqOIDAg5ZKM5bCP5pWw55qEIHRpY2tDb3VudFxuICAgIHZhciBtID0gbiA8IDAgPyAwIDogTWF0aC5yb3VuZChuKTtcbiAgICAvLyBuYW4g5Lmf5Lya5a+86Ie05byC5bi4XG4gICAgaWYgKE51bWJlci5pc05hTihkTWluKSB8fCBOdW1iZXIuaXNOYU4oZE1heCkgfHwgdHlwZW9mIGRNaW4gIT09ICdudW1iZXInIHx8IHR5cGVvZiBkTWF4ICE9PSAnbnVtYmVyJyB8fCAhbSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbWF4OiAwLFxuICAgICAgICAgICAgdGlja3M6IFtdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBqcyDmnoHlpKflgLzmnoHlsI/lgLzpl67popjvvIzlt67lgLzlsI/kuo4gMWUtMTUg5Lya5a+86Ie06K6h566X5Ye66ZSZXG4gICAgaWYgKGRNYXggLSBkTWluIDwgMWUtMTUgfHwgbSA9PT0gMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluOiBkTWluLFxuICAgICAgICAgICAgbWF4OiBkTWF4LFxuICAgICAgICAgICAgdGlja3M6IFtkTWluXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGJlc3QgPSB7XG4gICAgICAgIHNjb3JlOiAtMixcbiAgICAgICAgbG1pbjogMCxcbiAgICAgICAgbG1heDogMCxcbiAgICAgICAgbHN0ZXA6IDAsXG4gICAgfTtcbiAgICB2YXIgaiA9IDE7XG4gICAgd2hpbGUgKGogPCBJbmZpbml0eSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IFEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHZhciBxID0gUVtpXTtcbiAgICAgICAgICAgIHZhciBzbSA9IHNpbXBsaWNpdHlNYXgocSwgUSwgaik7XG4gICAgICAgICAgICBpZiAod1swXSAqIHNtICsgd1sxXSArIHdbMl0gKyB3WzNdIDwgYmVzdC5zY29yZSkge1xuICAgICAgICAgICAgICAgIGogPSBJbmZpbml0eTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBrID0gMjtcbiAgICAgICAgICAgIHdoaWxlIChrIDwgSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZG0gPSBkZW5zaXR5TWF4KGssIG0pO1xuICAgICAgICAgICAgICAgIGlmICh3WzBdICogc20gKyB3WzFdICsgd1syXSAqIGRtICsgd1szXSA8IGJlc3Quc2NvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IChkTWF4IC0gZE1pbikgLyAoayArIDEpIC8gaiAvIHE7XG4gICAgICAgICAgICAgICAgdmFyIHogPSBNYXRoLmNlaWwoTWF0aC5sb2cxMChkZWx0YSkpO1xuICAgICAgICAgICAgICAgIHdoaWxlICh6IDwgSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBqICogcSAqIE1hdGgucG93KDEwLCB6KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNtID0gY292ZXJhZ2VNYXgoZE1pbiwgZE1heCwgc3RlcCAqIChrIC0gMSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAod1swXSAqIHNtICsgd1sxXSAqIGNtICsgd1syXSAqIGRtICsgd1szXSA8IGJlc3Quc2NvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBtaW5TdGFydCA9IE1hdGguZmxvb3IoZE1heCAvIHN0ZXApICogaiAtIChrIC0gMSkgKiBqO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4U3RhcnQgPSBNYXRoLmNlaWwoZE1pbiAvIHN0ZXApICogajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1pblN0YXJ0IDw9IG1heFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBtYXhTdGFydCAtIG1pblN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaV8xID0gMDsgaV8xIDw9IGNvdW50OyBpXzEgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IG1pblN0YXJ0ICsgaV8xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsTWluID0gc3RhcnQgKiAoc3RlcCAvIGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsTWF4ID0gbE1pbiArIHN0ZXAgKiAoayAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsU3RlcCA9IHN0ZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBzaW1wbGljaXR5KHEsIFEsIGosIGxNaW4sIGxNYXgsIGxTdGVwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGNvdmVyYWdlKGRNaW4sIGRNYXgsIGxNaW4sIGxNYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gZGVuc2l0eShrLCBtLCBkTWluLCBkTWF4LCBsTWluLCBsTWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGxlZ2liaWxpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2NvcmUgPSB3WzBdICogcyArIHdbMV0gKiBjICsgd1syXSAqIGcgKyB3WzNdICogbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiBiZXN0LnNjb3JlICYmICghb25seUxvb3NlIHx8IChsTWluIDw9IGRNaW4gJiYgbE1heCA+PSBkTWF4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdC5sbWluID0gbE1pbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdC5sbWF4ID0gbE1heDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdC5sc3RlcCA9IGxTdGVwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0LnNjb3JlID0gc2NvcmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHogKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgayArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGogKz0gMTtcbiAgICB9XG4gICAgLy8g5aSE55CG57K+5bqm6Zeu6aKY77yM5L+d6K+B6L+Z5LiJ5Liq5pWw5rKh5pyJ57K+5bqm6Zeu6aKYXG4gICAgdmFyIGxtYXggPSBwcmV0dHlOdW1iZXIoYmVzdC5sbWF4KTtcbiAgICB2YXIgbG1pbiA9IHByZXR0eU51bWJlcihiZXN0LmxtaW4pO1xuICAgIHZhciBsc3RlcCA9IHByZXR0eU51bWJlcihiZXN0LmxzdGVwKTtcbiAgICAvLyDliqAgcm91bmQg5piv5Li65aSE55CGIGV4dGVuZGVkKDAuOTQsIDEsIDUpXG4gICAgLy8g5L+d6K+B55Sf5oiQ55qEIHRpY2tDb3VudCDmsqHmnInnsr7luqbpl67pophcbiAgICB2YXIgdGlja0NvdW50ID0gTWF0aC5mbG9vcihyb3VuZCgobG1heCAtIGxtaW4pIC8gbHN0ZXApKSArIDE7XG4gICAgdmFyIHRpY2tzID0gbmV3IEFycmF5KHRpY2tDb3VudCk7XG4gICAgLy8g5bCR55So5LmY5rOV77ya6Ziy5q2i5Ye6546wIC0xLjIgKyAxLjIgKiAzID0gMi4zOTk5OTk5OTk5OTk5OTk1IOeahOaDheWGtVxuICAgIHRpY2tzWzBdID0gcHJldHR5TnVtYmVyKGxtaW4pO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGlja0NvdW50OyBpKyspIHtcbiAgICAgICAgdGlja3NbaV0gPSBwcmV0dHlOdW1iZXIodGlja3NbaSAtIDFdICsgbHN0ZXApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBtaW46IE1hdGgubWluKGRNaW4sIGhlYWQodGlja3MpKSxcbiAgICAgICAgbWF4OiBNYXRoLm1heChkTWF4LCBsYXN0KHRpY2tzKSksXG4gICAgICAgIHRpY2tzOiB0aWNrcyxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXh0ZW5kZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/extended.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/interval.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/interval.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return intervalTicks; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nfunction snapMultiple(v, base, snapType) {\n var div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n }\n else if (snapType === 'floor') {\n div = Math.floor(v / base);\n }\n else {\n div = Math.round(v / base);\n }\n return div * base;\n}\nfunction intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n var minTick = snapMultiple(min, interval, 'floor');\n var maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"fixedBase\"])(minTick, interval);\n maxTick = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"fixedBase\"])(maxTick, interval);\n var ticks = [];\n for (var i = minTick; i <= maxTick; i = i + interval) {\n var tickValue = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"fixedBase\"])(i, interval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks: ticks\n };\n}\n//# sourceMappingURL=interval.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9pbnRlcnZhbC5qcz9hMDdkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFTO0FBQ3ZCLGNBQWMsNERBQVM7QUFDdkI7QUFDQSx5QkFBeUIsY0FBYztBQUN2Qyx3QkFBd0IsNERBQVMsY0FBYztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9pbnRlcnZhbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpeGVkQmFzZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuZnVuY3Rpb24gc25hcE11bHRpcGxlKHYsIGJhc2UsIHNuYXBUeXBlKSB7XG4gICAgdmFyIGRpdjtcbiAgICBpZiAoc25hcFR5cGUgPT09ICdjZWlsJykge1xuICAgICAgICBkaXYgPSBNYXRoLmNlaWwodiAvIGJhc2UpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzbmFwVHlwZSA9PT0gJ2Zsb29yJykge1xuICAgICAgICBkaXYgPSBNYXRoLmZsb29yKHYgLyBiYXNlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGRpdiA9IE1hdGgucm91bmQodiAvIGJhc2UpO1xuICAgIH1cbiAgICByZXR1cm4gZGl2ICogYmFzZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGVydmFsVGlja3MobWluLCBtYXgsIGludGVydmFsKSB7XG4gICAgLy8g5Y+Y5oiQIGludGVydmFsIOeahOWAjeaVsFxuICAgIHZhciBtaW5UaWNrID0gc25hcE11bHRpcGxlKG1pbiwgaW50ZXJ2YWwsICdmbG9vcicpO1xuICAgIHZhciBtYXhUaWNrID0gc25hcE11bHRpcGxlKG1heCwgaW50ZXJ2YWwsICdjZWlsJyk7XG4gICAgLy8g57uf5LiA5bCP5pWw5L2N5pWwXG4gICAgbWluVGljayA9IGZpeGVkQmFzZShtaW5UaWNrLCBpbnRlcnZhbCk7XG4gICAgbWF4VGljayA9IGZpeGVkQmFzZShtYXhUaWNrLCBpbnRlcnZhbCk7XG4gICAgdmFyIHRpY2tzID0gW107XG4gICAgZm9yICh2YXIgaSA9IG1pblRpY2s7IGkgPD0gbWF4VGljazsgaSA9IGkgKyBpbnRlcnZhbCkge1xuICAgICAgICB2YXIgdGlja1ZhbHVlID0gZml4ZWRCYXNlKGksIGludGVydmFsKTsgLy8g6Ziy5q2i5rWu54K55pWw5Yqg5rOV5Ye6546w6Zeu6aKYXG4gICAgICAgIHRpY2tzLnB1c2godGlja1ZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluOiBtaW5UaWNrLFxuICAgICAgICBtYXg6IG1heFRpY2ssXG4gICAgICAgIHRpY2tzOiB0aWNrc1xuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcnZhbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/interval.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js ***! \***********************************************************************/ /*! exports provided: calBase, log, getLogPositiveMin, precisionAdd */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calBase\", function() { return calBase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLogPositiveMin\", function() { return getLogPositiveMin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"precisionAdd\", function() { return precisionAdd; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nfunction calBase(a, b) {\n var e = Math.E;\n var value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n }\n else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n return value;\n}\nfunction log(a, b) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\nfunction getLogPositiveMin(values, base, max) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(max)) {\n max = Math.max.apply(null, values);\n }\n var positiveMin = max;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(values, function (value) {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\nfunction digitLength(num) {\n // Get digit length of e\n var eSplit = num.toString().split(/[eE]/);\n var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nfunction precisionAdd(num1, num2) {\n var num1Digits = digitLength(num1);\n var num2Digits = digitLength(num2);\n var baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9tYXRoLmpzPzFjYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ3pDLDZCQUE2QjtBQUM3QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxRQUFRLHdEQUFLO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL3V0aWwvbWF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVhY2gsIGlzTmlsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG4vLyDmsYLku6Vh5Li65qyh5bmC77yM57uT5p6c5Li6YueahOWfuuaVsO+8jOWmgiB4Xl5hID0gYjvmsYJ4XG4vLyDomb3nhLbmlbDlrabkuIogYiDkuI3mlK/mjIHotJ/mlbDvvIzkvYbmmK/ov5nph4zpnIDopoHmlK/mjIEg6LSf5pWwXG5leHBvcnQgZnVuY3Rpb24gY2FsQmFzZShhLCBiKSB7XG4gICAgdmFyIGUgPSBNYXRoLkU7XG4gICAgdmFyIHZhbHVlO1xuICAgIGlmIChiID49IDApIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLnBvdyhlLCBNYXRoLmxvZyhiKSAvIGEpOyAvLyDkvb/nlKjmjaLlupXlhazlvI/msYLlupVcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5wb3coZSwgTWF0aC5sb2coLWIpIC8gYSkgKiAtMTsgLy8g5L2/55So5o2i5bqV5YWs5byP5rGC5bqVXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2coYSwgYikge1xuICAgIGlmIChhID09PSAxKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5sb2coYikgLyBNYXRoLmxvZyhhKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2dQb3NpdGl2ZU1pbih2YWx1ZXMsIGJhc2UsIG1heCkge1xuICAgIGlmIChpc05pbChtYXgpKSB7XG4gICAgICAgIG1heCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHZhbHVlcyk7XG4gICAgfVxuICAgIHZhciBwb3NpdGl2ZU1pbiA9IG1heDtcbiAgICBlYWNoKHZhbHVlcywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCBwb3NpdGl2ZU1pbikge1xuICAgICAgICAgICAgcG9zaXRpdmVNaW4gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwb3NpdGl2ZU1pbiA9PT0gbWF4KSB7XG4gICAgICAgIHBvc2l0aXZlTWluID0gbWF4IC8gYmFzZTtcbiAgICB9XG4gICAgaWYgKHBvc2l0aXZlTWluID4gMSkge1xuICAgICAgICBwb3NpdGl2ZU1pbiA9IDE7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGl2ZU1pbjtcbn1cbmZ1bmN0aW9uIGRpZ2l0TGVuZ3RoKG51bSkge1xuICAgIC8vIEdldCBkaWdpdCBsZW5ndGggb2YgZVxuICAgIHZhciBlU3BsaXQgPSBudW0udG9TdHJpbmcoKS5zcGxpdCgvW2VFXS8pO1xuICAgIHZhciBsZW4gPSAoZVNwbGl0WzBdLnNwbGl0KCcuJylbMV0gfHwgJycpLmxlbmd0aCAtICsoZVNwbGl0WzFdIHx8IDApO1xuICAgIHJldHVybiBsZW4gPiAwID8gbGVuIDogMDtcbn1cbi8qKlxuICog6auY57K+5bqm5Yqg5rOV77yM6Kej5YazIDAuMSArIDAuMiAhPT0gMC4zIOeahOe7j+WFuOmXrumimFxuICpcbiAqIEBwYXJhbSBudW0xIOWKoOaVsFxuICogQHBhcmFtIG51bTIg6KKr5Yqg5pWwXG4gKiBAcmV0dXJuIHtudW1iZXJ9IOi/lOWbnuWAvFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY2lzaW9uQWRkKG51bTEsIG51bTIpIHtcbiAgICB2YXIgbnVtMURpZ2l0cyA9IGRpZ2l0TGVuZ3RoKG51bTEpO1xuICAgIHZhciBudW0yRGlnaXRzID0gZGlnaXRMZW5ndGgobnVtMik7XG4gICAgdmFyIGJhc2VOdW0gPSBNYXRoLnBvdygxMCwgTWF0aC5tYXgobnVtMURpZ2l0cywgbnVtMkRpZ2l0cykpO1xuICAgIHJldHVybiAobnVtMSAqIGJhc2VOdW0gKyBudW0yICogYmFzZU51bSkgLyBiYXNlTnVtO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/math.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty-number.js": /*!********************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty-number.js ***! \********************************************************************************/ /*! exports provided: prettyNumber */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prettyNumber\", function() { return prettyNumber; });\n// 为了解决 js 运算的精度问题\nfunction prettyNumber(n) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}\n//# sourceMappingURL=pretty-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9wcmV0dHktbnVtYmVyLmpzPzM0OWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9wcmV0dHktbnVtYmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5Li65LqG6Kej5YazIGpzIOi/kOeul+eahOeyvuW6pumXrumimFxuZXhwb3J0IGZ1bmN0aW9uIHByZXR0eU51bWJlcihuKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKG4pIDwgMWUtMTUgPyBuIDogcGFyc2VGbG9hdChuLnRvRml4ZWQoMTUpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByZXR0eS1udW1iZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty-number.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pretty; });\n/* harmony import */ var _pretty_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pretty-number */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty-number.js\");\n\nfunction pretty(min, max, m) {\n if (m === void 0) { m = 5; }\n if (min === max) {\n return {\n max: max,\n min: min,\n ticks: [min],\n };\n }\n var n = m < 0 ? 0 : Math.round(m);\n if (n === 0)\n return { max: max, min: min, ticks: [] };\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n var h = 1.5; // high.u.bias\n var h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n var d = max - min;\n var c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n var base = Math.pow(10, Math.floor(Math.log10(c)));\n var unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n var nu = Math.ceil(max / unit);\n var ns = Math.floor(min / unit);\n var hi = Math.max(nu * unit, max);\n var lo = Math.min(ns * unit, min);\n var size = Math.floor((hi - lo) / unit) + 1;\n var ticks = new Array(size);\n for (var i = 0; i < size; i++) {\n ticks[i] = Object(_pretty_number__WEBPACK_IMPORTED_MODULE_0__[\"prettyNumber\"])(lo + i * unit);\n }\n return {\n min: lo,\n max: hi,\n ticks: ticks,\n };\n}\n//# sourceMappingURL=pretty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9wcmV0dHkuanM/MmU5OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBK0M7QUFDaEM7QUFDZix1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQiwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLG1CQUFtQixtRUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL3V0aWwvcHJldHR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJldHR5TnVtYmVyIH0gZnJvbSAnLi9wcmV0dHktbnVtYmVyJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZXR0eShtaW4sIG1heCwgbSkge1xuICAgIGlmIChtID09PSB2b2lkIDApIHsgbSA9IDU7IH1cbiAgICBpZiAobWluID09PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1heDogbWF4LFxuICAgICAgICAgICAgbWluOiBtaW4sXG4gICAgICAgICAgICB0aWNrczogW21pbl0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBuID0gbSA8IDAgPyAwIDogTWF0aC5yb3VuZChtKTtcbiAgICBpZiAobiA9PT0gMClcbiAgICAgICAgcmV0dXJuIHsgbWF4OiBtYXgsIG1pbjogbWluLCB0aWNrczogW10gfTtcbiAgICAvKlxuICAgICAgUiBwcmV0dHk6XG4gICAgICBodHRwczovL3N2bi5yLXByb2plY3Qub3JnL1IvdHJ1bmsvc3JjL2FwcGwvcHJldHR5LmNcbiAgICAgIGh0dHBzOi8vd3d3LnJkb2N1bWVudGF0aW9uLm9yZy9wYWNrYWdlcy9iYXNlL3ZlcnNpb25zLzMuNS4yL3RvcGljcy9wcmV0dHlcbiAgICAgICovXG4gICAgdmFyIGggPSAxLjU7IC8vIGhpZ2gudS5iaWFzXG4gICAgdmFyIGg1ID0gMC41ICsgMS41ICogaDsgLy8gdTUuYmlhc1xuICAgIC8vIOWPjeato+aIkeS5n+S4jeS8muiwg+WPgu+8jOi3s+i/h+aJgOacieWIpOaWreatpemqpFxuICAgIHZhciBkID0gbWF4IC0gbWluO1xuICAgIHZhciBjID0gZCAvIG47XG4gICAgLy8g5b2TZOmdnuW4uOWwj+eahOaXtuWAmeinpuWPke+8jOS9huS8vOS5juayoeS7gOS5iOeUqFxuICAgIC8vIGNvbnN0IG1pbl9uID0gTWF0aC5mbG9vcihuIC8gMyk7XG4gICAgLy8gY29uc3Qgc2hyaW5rX3NtbCA9IE1hdGgucG93KDIsIDUpO1xuICAgIC8vIGlmIChNYXRoLmxvZzEwKGQpIDwgLTIpIHtcbiAgICAvLyAgIGMgPSAoXy5tYXgoWyBNYXRoLmFicyhtYXgpLCBNYXRoLmFicyhtaW4pIF0pICogc2hyaW5rX3NtbCkgLyBtaW5fbjtcbiAgICAvLyB9XG4gICAgdmFyIGJhc2UgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZzEwKGMpKSk7XG4gICAgdmFyIHVuaXQgPSBiYXNlO1xuICAgIGlmICgyICogYmFzZSAtIGMgPCBoICogKGMgLSB1bml0KSkge1xuICAgICAgICB1bml0ID0gMiAqIGJhc2U7XG4gICAgICAgIGlmICg1ICogYmFzZSAtIGMgPCBoNSAqIChjIC0gdW5pdCkpIHtcbiAgICAgICAgICAgIHVuaXQgPSA1ICogYmFzZTtcbiAgICAgICAgICAgIGlmICgxMCAqIGJhc2UgLSBjIDwgaCAqIChjIC0gdW5pdCkpIHtcbiAgICAgICAgICAgICAgICB1bml0ID0gMTAgKiBiYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBudSA9IE1hdGguY2VpbChtYXggLyB1bml0KTtcbiAgICB2YXIgbnMgPSBNYXRoLmZsb29yKG1pbiAvIHVuaXQpO1xuICAgIHZhciBoaSA9IE1hdGgubWF4KG51ICogdW5pdCwgbWF4KTtcbiAgICB2YXIgbG8gPSBNYXRoLm1pbihucyAqIHVuaXQsIG1pbik7XG4gICAgdmFyIHNpemUgPSBNYXRoLmZsb29yKChoaSAtIGxvKSAvIHVuaXQpICsgMTtcbiAgICB2YXIgdGlja3MgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdGlja3NbaV0gPSBwcmV0dHlOdW1iZXIobG8gKyBpICogdW5pdCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pbjogbG8sXG4gICAgICAgIG1heDogaGksXG4gICAgICAgIHRpY2tzOiB0aWNrcyxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJldHR5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/pretty.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/strict-limit.js": /*!*******************************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/strict-limit.js ***! \*******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return strictLimit; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nfunction strictLimit(cfg, defaultMin, defaultMax) {\n var _a;\n var minLimit = cfg.minLimit, maxLimit = cfg.maxLimit, min = cfg.min, max = cfg.max, _b = cfg.tickCount, tickCount = _b === void 0 ? 5 : _b;\n var tickMin = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(minLimit) ? (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(defaultMin) ? min : defaultMin) : minLimit;\n var tickMax = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(maxLimit) ? (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(defaultMax) ? max : defaultMax) : maxLimit;\n if (tickMin > tickMax) {\n _a = [tickMin, tickMax], tickMax = _a[0], tickMin = _a[1];\n }\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n var step = (tickMax - tickMin) / (tickCount - 1);\n var ticks = [];\n for (var i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n return ticks;\n}\n//# sourceMappingURL=strict-limit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9zdHJpY3QtbGltaXQuanM/MjU4NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0Esa0JBQWtCLHdEQUFLLGNBQWMsd0RBQUs7QUFDMUMsa0JBQWtCLHdEQUFLLGNBQWMsd0RBQUs7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC9zdHJpY3QtbGltaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLyoqXG4gKiDmjInnhafnu5nlrprnmoQgbWluTGltaXQvbWF4TGltaXQvdGlja0NvdW50IOWdh+WMgOiuoeeul+WHuuWIu+W6piB0aWNrc1xuICpcbiAqIEBwYXJhbSBjZmcgU2NhbGUg6YWN572u6aG5XG4gKiBAcmV0dXJuIHRpY2tzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0cmljdExpbWl0KGNmZywgZGVmYXVsdE1pbiwgZGVmYXVsdE1heCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgbWluTGltaXQgPSBjZmcubWluTGltaXQsIG1heExpbWl0ID0gY2ZnLm1heExpbWl0LCBtaW4gPSBjZmcubWluLCBtYXggPSBjZmcubWF4LCBfYiA9IGNmZy50aWNrQ291bnQsIHRpY2tDb3VudCA9IF9iID09PSB2b2lkIDAgPyA1IDogX2I7XG4gICAgdmFyIHRpY2tNaW4gPSBpc05pbChtaW5MaW1pdCkgPyAoaXNOaWwoZGVmYXVsdE1pbikgPyBtaW4gOiBkZWZhdWx0TWluKSA6IG1pbkxpbWl0O1xuICAgIHZhciB0aWNrTWF4ID0gaXNOaWwobWF4TGltaXQpID8gKGlzTmlsKGRlZmF1bHRNYXgpID8gbWF4IDogZGVmYXVsdE1heCkgOiBtYXhMaW1pdDtcbiAgICBpZiAodGlja01pbiA+IHRpY2tNYXgpIHtcbiAgICAgICAgX2EgPSBbdGlja01pbiwgdGlja01heF0sIHRpY2tNYXggPSBfYVswXSwgdGlja01pbiA9IF9hWzFdO1xuICAgIH1cbiAgICBpZiAodGlja0NvdW50IDw9IDIpIHtcbiAgICAgICAgcmV0dXJuIFt0aWNrTWluLCB0aWNrTWF4XTtcbiAgICB9XG4gICAgdmFyIHN0ZXAgPSAodGlja01heCAtIHRpY2tNaW4pIC8gKHRpY2tDb3VudCAtIDEpO1xuICAgIHZhciB0aWNrcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlja0NvdW50OyBpKyspIHtcbiAgICAgICAgdGlja3MucHVzaCh0aWNrTWluICsgc3RlcCAqIGkpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja3M7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHJpY3QtbGltaXQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/strict-limit.js\n"); /***/ }), /***/ "./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js ***! \***********************************************************************/ /*! exports provided: timeFormat, toTimeStamp, SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, getTickInterval */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timeFormat\", function() { return timeFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toTimeStamp\", function() { return toTimeStamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SECOND\", function() { return SECOND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MINUTE\", function() { return MINUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HOUR\", function() { return HOUR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DAY\", function() { return DAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MONTH\", function() { return MONTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"YEAR\", function() { return YEAR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTickInterval\", function() { return getTickInterval; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var fecha__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fecha */ \"./node_modules/_fecha@4.2.1@fecha/lib/fecha.js\");\n/* harmony import */ var _bisector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bisector */ \"./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/bisector.js\");\n\n\n\n\nvar FORMAT_METHOD = 'format';\nfunction timeFormat(time, mask) {\n var method = fecha__WEBPACK_IMPORTED_MODULE_1__[FORMAT_METHOD] || fecha__WEBPACK_IMPORTED_MODULE_1__[\"default\"][FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nfunction toTimeStamp(value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n }\n else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isDate\"])(value)) {\n value = value.getTime();\n }\n return value;\n}\nvar SECOND = 1000;\nvar MINUTE = 60 * SECOND;\nvar HOUR = 60 * MINUTE;\nvar DAY = 24 * HOUR;\nvar MONTH = DAY * 31;\nvar YEAR = DAY * 365;\n\nvar intervals = [\n ['HH:mm:ss', SECOND],\n ['HH:mm:ss', SECOND * 10],\n ['HH:mm:ss', SECOND * 30],\n ['HH:mm', MINUTE],\n ['HH:mm', MINUTE * 10],\n ['HH:mm', MINUTE * 30],\n ['HH', HOUR],\n ['HH', HOUR * 6],\n ['HH', HOUR * 12],\n ['YYYY-MM-DD', DAY],\n ['YYYY-MM-DD', DAY * 4],\n ['YYYY-WW', DAY * 7],\n ['YYYY-MM', MONTH],\n ['YYYY-MM', MONTH * 4],\n ['YYYY-MM', MONTH * 6],\n ['YYYY', DAY * 380], // 借鉴echarts,保证每个周期累加时不会碰到恰巧不够的问题\n];\nfunction getTickInterval(min, max, tickCount) {\n var target = (max - min) / tickCount;\n var idx = Object(_bisector__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function (o) { return o[1]; })(intervals, target) - 1;\n var interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n }\n else if (idx >= intervals.length) {\n interval = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"last\"])(intervals);\n }\n return interval;\n}\n//# sourceMappingURL=time.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3NjYWxlQDAuMy4xNEBAYW50di9zY2FsZS9lc20vdXRpbC90aW1lLmpzPzU5NDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7QUFDMUI7QUFDTTtBQUNFO0FBQ2xDO0FBQ087QUFDUCxpQkFBaUIsa0NBQU0sbUJBQW1CLDZDQUFLO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEseURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsY0FBYyx5REFBUSxlQUFlLGFBQWEsRUFBRTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVEQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9zY2FsZUAwLjMuMTRAQGFudHYvc2NhbGUvZXNtL3V0aWwvdGltZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGF0ZSwgaXNTdHJpbmcsIGxhc3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBmZWNoYSBmcm9tICdmZWNoYSc7XG5pbXBvcnQgKiBhcyBmZWNoYTEgZnJvbSAnZmVjaGEnO1xuaW1wb3J0IGJpc2VjdG9yIGZyb20gJy4vYmlzZWN0b3InO1xudmFyIEZPUk1BVF9NRVRIT0QgPSAnZm9ybWF0JztcbmV4cG9ydCBmdW5jdGlvbiB0aW1lRm9ybWF0KHRpbWUsIG1hc2spIHtcbiAgICB2YXIgbWV0aG9kID0gZmVjaGExW0ZPUk1BVF9NRVRIT0RdIHx8IGZlY2hhW0ZPUk1BVF9NRVRIT0RdO1xuICAgIHJldHVybiBtZXRob2QodGltZSwgbWFzayk7XG59XG4vKipcbiAqIOi9rOaNouaIkOaXtumXtOaIs1xuICogQHBhcmFtIHZhbHVlIOaXtumXtOWAvFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9UaW1lU3RhbXAodmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdUJykgPiAwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKS5nZXRUaW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBuZXcgRGF0ZSgnMjAxMC8wMS8xMCcpIOWSjCBuZXcgRGF0ZSgnMjAxMC0wMS0xMCcpIOeahOW3ruWIq+WcqOS6jjpcbiAgICAgICAgICAgIC8vIOWmguaenOS7heacieW5tOaciOaXpeaXtu+8jOWJjeiAheaYr+W4puacieaXtuWMuueahDogRnJpIEphbiAxMCAyMDIwIDAyOjQwOjEzIEdNVCswODAwICjkuK3lm73moIflh4bml7bpl7QpXG4gICAgICAgICAgICAvLyDlkI7ogIXkvJrmoLzlvI/ljJbmiJAgU3VuIEphbiAxMCAyMDEwIDA4OjAwOjAwIEdNVCswODAwICjkuK3lm73moIflh4bml7bpl7QpXG4gICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlLnJlcGxhY2UoLy0vZ2ksICcvJykpLmdldFRpbWUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLmdldFRpbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxudmFyIFNFQ09ORCA9IDEwMDA7XG52YXIgTUlOVVRFID0gNjAgKiBTRUNPTkQ7XG52YXIgSE9VUiA9IDYwICogTUlOVVRFO1xudmFyIERBWSA9IDI0ICogSE9VUjtcbnZhciBNT05USCA9IERBWSAqIDMxO1xudmFyIFlFQVIgPSBEQVkgKiAzNjU7XG5leHBvcnQgeyBTRUNPTkQsIE1JTlVURSwgSE9VUiwgREFZLCBNT05USCwgWUVBUiB9O1xudmFyIGludGVydmFscyA9IFtcbiAgICBbJ0hIOm1tOnNzJywgU0VDT05EXSxcbiAgICBbJ0hIOm1tOnNzJywgU0VDT05EICogMTBdLFxuICAgIFsnSEg6bW06c3MnLCBTRUNPTkQgKiAzMF0sXG4gICAgWydISDptbScsIE1JTlVURV0sXG4gICAgWydISDptbScsIE1JTlVURSAqIDEwXSxcbiAgICBbJ0hIOm1tJywgTUlOVVRFICogMzBdLFxuICAgIFsnSEgnLCBIT1VSXSxcbiAgICBbJ0hIJywgSE9VUiAqIDZdLFxuICAgIFsnSEgnLCBIT1VSICogMTJdLFxuICAgIFsnWVlZWS1NTS1ERCcsIERBWV0sXG4gICAgWydZWVlZLU1NLUREJywgREFZICogNF0sXG4gICAgWydZWVlZLVdXJywgREFZICogN10sXG4gICAgWydZWVlZLU1NJywgTU9OVEhdLFxuICAgIFsnWVlZWS1NTScsIE1PTlRIICogNF0sXG4gICAgWydZWVlZLU1NJywgTU9OVEggKiA2XSxcbiAgICBbJ1lZWVknLCBEQVkgKiAzODBdLCAvLyDlgJ/pibRlY2hhcnRz77yM5L+d6K+B5q+P5Liq5ZGo5pyf57Sv5Yqg5pe25LiN5Lya56Kw5Yiw5oGw5ben5LiN5aSf55qE6Zeu6aKYXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpY2tJbnRlcnZhbChtaW4sIG1heCwgdGlja0NvdW50KSB7XG4gICAgdmFyIHRhcmdldCA9IChtYXggLSBtaW4pIC8gdGlja0NvdW50O1xuICAgIHZhciBpZHggPSBiaXNlY3RvcihmdW5jdGlvbiAobykgeyByZXR1cm4gb1sxXTsgfSkoaW50ZXJ2YWxzLCB0YXJnZXQpIC0gMTtcbiAgICB2YXIgaW50ZXJ2YWwgPSBpbnRlcnZhbHNbaWR4XTtcbiAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgICBpbnRlcnZhbCA9IGludGVydmFsc1swXTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaWR4ID49IGludGVydmFscy5sZW5ndGgpIHtcbiAgICAgICAgaW50ZXJ2YWwgPSBsYXN0KGludGVydmFscyk7XG4gICAgfVxuICAgIHJldHVybiBpbnRlcnZhbDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_scale@0.3.14@@antv/scale/esm/util/time.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/augment.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/augment.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mix */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/mix.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\nvar augment = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var c = args[0];\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n if (Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj)) {\n obj = obj.prototype;\n }\n Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(c.prototype, obj);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (augment);\n//# sourceMappingURL=augment.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2F1Z21lbnQuanM/NmMzMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBd0I7QUFDZTtBQUN2QztBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0EsWUFBWSw0REFBVTtBQUN0QjtBQUNBO0FBQ0EsUUFBUSxvREFBRztBQUNYO0FBQ0E7QUFDZSxzRUFBTyxFQUFDO0FBQ3ZCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9hdWdtZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1peCBmcm9tICcuL21peCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbnZhciBhdWdtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgYyA9IGFyZ3NbMF07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBvYmogPSBhcmdzW2ldO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvYmopKSB7XG4gICAgICAgICAgICBvYmogPSBvYmoucHJvdG90eXBlO1xuICAgICAgICB9XG4gICAgICAgIG1peChjLnByb3RvdHlwZSwgb2JqKTtcbiAgICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgYXVnbWVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWF1Z21lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/augment.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/cache.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/cache.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * k-v 存储\n */\nvar default_1 = /** @class */ (function () {\n function default_1() {\n this.map = {};\n }\n default_1.prototype.has = function (key) {\n return this.map[key] !== undefined;\n };\n default_1.prototype.get = function (key, def) {\n var v = this.map[key];\n return v === undefined ? def : v;\n };\n default_1.prototype.set = function (key, value) {\n this.map[key] = value;\n };\n default_1.prototype.clear = function () {\n this.map = {};\n };\n default_1.prototype.delete = function (key) {\n delete this.map[key];\n };\n default_1.prototype.size = function () {\n return Object.keys(this.map).length;\n };\n return default_1;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (default_1);\n//# sourceMappingURL=cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2NhY2hlLmpzPzBkMTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2Msd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vY2FjaGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGstdiDlrZjlgqhcbiAqL1xudmFyIGRlZmF1bHRfMSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBkZWZhdWx0XzEoKSB7XG4gICAgICAgIHRoaXMubWFwID0ge307XG4gICAgfVxuICAgIGRlZmF1bHRfMS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgZGVmYXVsdF8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBkZWYpIHtcbiAgICAgICAgdmFyIHYgPSB0aGlzLm1hcFtrZXldO1xuICAgICAgICByZXR1cm4gdiA9PT0gdW5kZWZpbmVkID8gZGVmIDogdjtcbiAgICB9O1xuICAgIGRlZmF1bHRfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5tYXBba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gICAgZGVmYXVsdF8xLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tYXAgPSB7fTtcbiAgICB9O1xuICAgIGRlZmF1bHRfMS5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBkZWxldGUgdGhpcy5tYXBba2V5XTtcbiAgICB9O1xuICAgIGRlZmF1bHRfMS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWFwKS5sZW5ndGg7XG4gICAgfTtcbiAgICByZXR1cm4gZGVmYXVsdF8xO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRfMTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNhY2hlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/cache.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/clamp.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/clamp.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar clamp = function (a, min, max) {\n if (a < min) {\n return min;\n }\n else if (a > max) {\n return max;\n }\n return a;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clamp);\n//# sourceMappingURL=clamp.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2NsYW1wLmpzPzJmYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9jbGFtcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjbGFtcCA9IGZ1bmN0aW9uIChhLCBtaW4sIG1heCkge1xuICAgIGlmIChhIDwgbWluKSB7XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGVsc2UgaWYgKGEgPiBtYXgpIHtcbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG4gICAgcmV0dXJuIGE7XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhbXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGFtcC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/clamp.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/clear-animation-frame.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/clear-animation-frame.js ***! \*********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cancelAnimationFrame; });\nfunction cancelAnimationFrame(handler) {\n var method = window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame ||\n clearTimeout;\n method(handler);\n}\n;\n//# sourceMappingURL=clear-animation-frame.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2NsZWFyLWFuaW1hdGlvbi1mcmFtZS5qcz81OTI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2NsZWFyLWFuaW1hdGlvbi1mcmFtZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGhhbmRsZXIpIHtcbiAgICB2YXIgbWV0aG9kID0gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8XG4gICAgICAgIHdpbmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSB8fFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5tb3pDYW5jZWxBbmltYXRpb25GcmFtZSB8fFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5tc0NhbmNlbEFuaW1hdGlvbkZyYW1lIHx8XG4gICAgICAgIGNsZWFyVGltZW91dDtcbiAgICBtZXRob2QoaGFuZGxlcik7XG59XG47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGVhci1hbmltYXRpb24tZnJhbWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/clear-animation-frame.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/clone.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/clone.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\nvar clone = function (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n var rst;\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj)) {\n rst = [];\n for (var i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n }\n else {\n rst[i] = obj[i];\n }\n }\n }\n else {\n rst = {};\n for (var k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n }\n else {\n rst[k] = obj[k];\n }\n }\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clone);\n//# sourceMappingURL=clone.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2Nsb25lLmpzP2QyZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5REFBTztBQUNmO0FBQ0EsdUNBQXVDLE9BQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vY2xvbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbnZhciBjbG9uZSA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHZhciByc3Q7XG4gICAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgICAgICByc3QgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9ialtpXSA9PT0gJ29iamVjdCcgJiYgb2JqW2ldICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByc3RbaV0gPSBjbG9uZShvYmpbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcnN0W2ldID0gb2JqW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByc3QgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2tdID09PSAnb2JqZWN0JyAmJiBvYmpba10gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJzdFtrXSA9IGNsb25lKG9ialtrXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByc3Rba10gPSBvYmpba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJzdDtcbn07XG5leHBvcnQgZGVmYXVsdCBjbG9uZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNsb25lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/clone.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/contains.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/contains.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nvar contains = function (arr, value) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (contains);\n//# sourceMappingURL=contains.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2NvbnRhaW5zLmpzPzY0NTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQztBQUMxQztBQUNBLFNBQVMsOERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDZSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9jb250YWlucy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xudmFyIGNvbnRhaW5zID0gZnVuY3Rpb24gKGFyciwgdmFsdWUpIHtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGFycikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gYXJyLmluZGV4T2YodmFsdWUpID4gLTE7XG59O1xuZXhwb3J0IGRlZmF1bHQgY29udGFpbnM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250YWlucy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/contains.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/debounce.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/debounce.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (debounce);\n//# sourceMappingURL=debounce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2RlYm91bmNlLmpzPzk3ZTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9kZWJvdW5jZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSkge1xuICAgIHZhciB0aW1lb3V0O1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0O1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgICAgICAgaWYgKGNhbGxOb3cpIHtcbiAgICAgICAgICAgIGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgZGVib3VuY2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWJvdW5jZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/debounce.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/deep-mix.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/deep-mix.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js\");\n\n\nvar MAX_MIX_LEVEL = 5;\nfunction _deepMix(dist, src, level, maxLevel) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n var value = src[key];\n if (value !== null && Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n if (!Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n }\n else {\n dist[key] = src[key];\n }\n }\n else if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n }\n else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n// todo 重写\nvar deepMix = function (rst) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (deepMix);\n//# sourceMappingURL=deep-mix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2RlZXAtbWl4LmpzPzdkZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2E7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0VBQWE7QUFDL0MscUJBQXFCLGdFQUFhO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix5REFBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZGVlcC1taXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJy4vaXMtcGxhaW4tb2JqZWN0JztcbnZhciBNQVhfTUlYX0xFVkVMID0gNTtcbmZ1bmN0aW9uIF9kZWVwTWl4KGRpc3QsIHNyYywgbGV2ZWwsIG1heExldmVsKSB7XG4gICAgbGV2ZWwgPSBsZXZlbCB8fCAwO1xuICAgIG1heExldmVsID0gbWF4TGV2ZWwgfHwgTUFYX01JWF9MRVZFTDtcbiAgICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgICAgIGlmIChzcmMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gc3JjW2tleV07XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZGlzdFtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICBkaXN0W2tleV0gPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGxldmVsIDwgbWF4TGV2ZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgX2RlZXBNaXgoZGlzdFtrZXldLCB2YWx1ZSwgbGV2ZWwgKyAxLCBtYXhMZXZlbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkaXN0W2tleV0gPSBzcmNba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpc3Rba2V5XSA9IFtdO1xuICAgICAgICAgICAgICAgIGRpc3Rba2V5XSA9IGRpc3Rba2V5XS5jb25jYXQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGRpc3Rba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8gdG9kbyDph43lhplcbnZhciBkZWVwTWl4ID0gZnVuY3Rpb24gKHJzdCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIF9kZWVwTWl4KHJzdCwgYXJnc1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByc3Q7XG59O1xuZXhwb3J0IGRlZmF1bHQgZGVlcE1peDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlZXAtbWl4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/deep-mix.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/difference.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/difference.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/filter.js\");\n/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contains */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/contains.js\");\n\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nvar difference = function (arr, values) {\n if (values === void 0) { values = []; }\n return Object(_filter__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr, function (value) { return !Object(_contains__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, value); });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (difference);\n//# sourceMappingURL=difference.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2RpZmZlcmVuY2UuanM/Mzg3MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBOEI7QUFDSTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0EsNEJBQTRCLGFBQWE7QUFDekMsV0FBVyx1REFBTSx3QkFBd0IsU0FBUyx5REFBUSxnQkFBZ0IsRUFBRTtBQUM1RTtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2RpZmZlcmVuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmlsdGVyIGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCBjb250YWlucyBmcm9tICcuL2NvbnRhaW5zJztcbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKiBkaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTsgIC8vID0+IFsxXVxuICovXG52YXIgZGlmZmVyZW5jZSA9IGZ1bmN0aW9uIChhcnIsIHZhbHVlcykge1xuICAgIGlmICh2YWx1ZXMgPT09IHZvaWQgMCkgeyB2YWx1ZXMgPSBbXTsgfVxuICAgIHJldHVybiBmaWx0ZXIoYXJyLCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICFjb250YWlucyh2YWx1ZXMsIHZhbHVlKTsgfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgZGlmZmVyZW5jZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRpZmZlcmVuY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/difference.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js\");\n\n\nfunction each(elements, func) {\n if (!elements) {\n return;\n }\n var rst;\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n }\n else if (Object(_is_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (each);\n//# sourceMappingURL=each.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2VhY2guanM/YTU2YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDRTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5REFBTztBQUNmLDhDQUE4QyxTQUFTO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMERBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9lYWNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pcy1vYmplY3QnO1xuZnVuY3Rpb24gZWFjaChlbGVtZW50cywgZnVuYykge1xuICAgIGlmICghZWxlbWVudHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcnN0O1xuICAgIGlmIChpc0FycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZWxlbWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHJzdCA9IGZ1bmMoZWxlbWVudHNbaV0sIGkpO1xuICAgICAgICAgICAgaWYgKHJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChlbGVtZW50cykpIHtcbiAgICAgICAgZm9yICh2YXIgayBpbiBlbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRzLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gZnVuYyhlbGVtZW50c1trXSwgayk7XG4gICAgICAgICAgICAgICAgaWYgKHJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgZWFjaDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVhY2guanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/ends-with.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/ends-with.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n\n\nfunction endsWith(arr, e) {\n return (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr) || Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr)) ? arr[arr.length - 1] === e : false;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (endsWith);\n//# sourceMappingURL=ends-with.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2VuZHMtd2l0aC5qcz9kNmY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ25DO0FBQ0EsWUFBWSx5REFBTyxTQUFTLDBEQUFRO0FBQ3BDO0FBQ2UsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZW5kcy13aXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pcy1zdHJpbmcnO1xuZnVuY3Rpb24gZW5kc1dpdGgoYXJyLCBlKSB7XG4gICAgcmV0dXJuIChpc0FycmF5KGFycikgfHwgaXNTdHJpbmcoYXJyKSkgPyBhcnJbYXJyLmxlbmd0aCAtIDFdID09PSBlIDogZmFsc2U7XG59XG5leHBvcnQgZGVmYXVsdCBlbmRzV2l0aDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVuZHMtd2l0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/ends-with.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/every.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/every.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nvar every = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (!func(arr[i], i))\n return false;\n }\n return true;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (every);\n//# sourceMappingURL=every.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2V2ZXJ5LmpzPzhmMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9ldmVyeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5Y+q6KaB5pyJ5LiA5Liq5LiN5ruh6Laz5p2h5Lu25bCx6L+U5ZueIGZhbHNlXG4gKiBAcGFyYW0gYXJyXG4gKiBAcGFyYW0gZnVuY1xuICovXG52YXIgZXZlcnkgPSBmdW5jdGlvbiAoYXJyLCBmdW5jKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFmdW5jKGFycltpXSwgaSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbmV4cG9ydCBkZWZhdWx0IGV2ZXJ5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXZlcnkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/every.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/extend.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/extend.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mix */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/mix.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\nvar extend = function (subclass, superclass, overrides, staticOverrides) {\n // 如果只提供父类构造函数,则自动生成子类构造函数\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(superclass)) {\n overrides = superclass;\n superclass = subclass;\n subclass = function () { };\n }\n var create = Object.create ?\n function (proto, c) {\n return Object.create(proto, {\n constructor: {\n value: c\n }\n });\n } :\n function (proto, c) {\n function Tmp() { }\n Tmp.prototype = proto;\n var o = new Tmp();\n o.constructor = c;\n return o;\n };\n var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype\n subclass.prototype = Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(superObj, subclass.prototype); // 指定子类的prototype\n subclass.superclass = create(superclass.prototype, superclass);\n Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(superObj, overrides);\n Object(_mix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(subclass, staticOverrides);\n return subclass;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (extend);\n//# sourceMappingURL=extend.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2V4dGVuZC5qcz84MjcwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF3QjtBQUNlO0FBQ3ZDO0FBQ0E7QUFDQSxTQUFTLDREQUFVO0FBQ25CO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQseUJBQXlCLG9EQUFHLCtCQUErQjtBQUMzRDtBQUNBLElBQUksb0RBQUc7QUFDUCxJQUFJLG9EQUFHO0FBQ1A7QUFDQTtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2V4dGVuZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaXggZnJvbSAnLi9taXgnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pcy1mdW5jdGlvbic7XG52YXIgZXh0ZW5kID0gZnVuY3Rpb24gKHN1YmNsYXNzLCBzdXBlcmNsYXNzLCBvdmVycmlkZXMsIHN0YXRpY092ZXJyaWRlcykge1xuICAgIC8vIOWmguaenOWPquaPkOS+m+eItuexu+aehOmAoOWHveaVsO+8jOWImeiHquWKqOeUn+aIkOWtkOexu+aehOmAoOWHveaVsFxuICAgIGlmICghaXNGdW5jdGlvbihzdXBlcmNsYXNzKSkge1xuICAgICAgICBvdmVycmlkZXMgPSBzdXBlcmNsYXNzO1xuICAgICAgICBzdXBlcmNsYXNzID0gc3ViY2xhc3M7XG4gICAgICAgIHN1YmNsYXNzID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIH1cbiAgICB2YXIgY3JlYXRlID0gT2JqZWN0LmNyZWF0ZSA/XG4gICAgICAgIGZ1bmN0aW9uIChwcm90bywgYykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUocHJvdG8sIHtcbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IDpcbiAgICAgICAgZnVuY3Rpb24gKHByb3RvLCBjKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBUbXAoKSB7IH1cbiAgICAgICAgICAgIFRtcC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgICAgIHZhciBvID0gbmV3IFRtcCgpO1xuICAgICAgICAgICAgby5jb25zdHJ1Y3RvciA9IGM7XG4gICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgfTtcbiAgICB2YXIgc3VwZXJPYmogPSBjcmVhdGUoc3VwZXJjbGFzcy5wcm90b3R5cGUsIHN1YmNsYXNzKTsgLy8gbmV3IHN1cGVyY2xhc3MoKSwvL+WunuS+i+WMlueItuexu+S9nOS4uuWtkOexu+eahHByb3RvdHlwZVxuICAgIHN1YmNsYXNzLnByb3RvdHlwZSA9IG1peChzdXBlck9iaiwgc3ViY2xhc3MucHJvdG90eXBlKTsgLy8g5oyH5a6a5a2Q57G755qEcHJvdG90eXBlXG4gICAgc3ViY2xhc3Muc3VwZXJjbGFzcyA9IGNyZWF0ZShzdXBlcmNsYXNzLnByb3RvdHlwZSwgc3VwZXJjbGFzcyk7XG4gICAgbWl4KHN1cGVyT2JqLCBvdmVycmlkZXMpO1xuICAgIG1peChzdWJjbGFzcywgc3RhdGljT3ZlcnJpZGVzKTtcbiAgICByZXR1cm4gc3ViY2xhc3M7XG59O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5kO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXh0ZW5kLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/extend.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/filter.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/filter.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nvar filter = function (arr, func) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (filter);\n//# sourceMappingURL=filter.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpbHRlci5qcz83MThkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMEM7QUFDMUM7QUFDQSxTQUFTLDhEQUFXO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixvQkFBb0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9maWx0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbnZhciBmaWx0ZXIgPSBmdW5jdGlvbiAoYXJyLCBmdW5jKSB7XG4gICAgaWYgKCFpc0FycmF5TGlrZShhcnIpKSB7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXJyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJbaW5kZXhdO1xuICAgICAgICBpZiAoZnVuYyh2YWx1ZSwgaW5kZXgpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmaWx0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maWx0ZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/filter.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/find-index.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/find-index.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nfunction findIndex(arr, predicate, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n for (var i = fromIndex; i < arr.length; i++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n return -1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (findIndex);\n//# sourceMappingURL=find-index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpbmQtaW5kZXguanM/MzAzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0EsK0JBQStCLGVBQWU7QUFDOUMsMkJBQTJCLGdCQUFnQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpbmQtaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBmaW5kSW5kZXgoYXJyLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgIGlmIChmcm9tSW5kZXggPT09IHZvaWQgMCkgeyBmcm9tSW5kZXggPSAwOyB9XG4gICAgZm9yICh2YXIgaSA9IGZyb21JbmRleDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocHJlZGljYXRlKGFycltpXSwgaSkpIHtcbiAgICAgICAgICAgIC8vIOaJvuWIsOe7iOatouW+queOr1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxuZXhwb3J0IGRlZmF1bHQgZmluZEluZGV4O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmluZC1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/find-index.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/find.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/find.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n/* harmony import */ var _is_match__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-match */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-match.js\");\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js\");\n\n\n\n\nfunction find(arr, predicate) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arr))\n return null;\n var _predicate;\n if (Object(_is_function__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(predicate)) {\n _predicate = predicate;\n }\n if (Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(predicate)) {\n _predicate = function (a) { return Object(_is_match__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(a, predicate); };\n }\n if (_predicate) {\n for (var i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (find);\n//# sourceMappingURL=find.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpbmQuanM/NGZlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXVDO0FBQ047QUFDQTtBQUNhO0FBQzlDO0FBQ0EsU0FBUyx5REFBTztBQUNoQjtBQUNBO0FBQ0EsUUFBUSw0REFBVTtBQUNsQjtBQUNBO0FBQ0EsUUFBUSxnRUFBYTtBQUNyQixtQ0FBbUMsUUFBUSx5REFBTyxlQUFlO0FBQ2pFO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZmluZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xuaW1wb3J0IGlzTWF0Y2ggZnJvbSAnLi9pcy1tYXRjaCc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJy4vaXMtcGxhaW4tb2JqZWN0JztcbmZ1bmN0aW9uIGZpbmQoYXJyLCBwcmVkaWNhdGUpIHtcbiAgICBpZiAoIWlzQXJyYXkoYXJyKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgdmFyIF9wcmVkaWNhdGU7XG4gICAgaWYgKGlzRnVuY3Rpb24ocHJlZGljYXRlKSkge1xuICAgICAgICBfcHJlZGljYXRlID0gcHJlZGljYXRlO1xuICAgIH1cbiAgICBpZiAoaXNQbGFpbk9iamVjdChwcmVkaWNhdGUpKSB7XG4gICAgICAgIF9wcmVkaWNhdGUgPSBmdW5jdGlvbiAoYSkgeyByZXR1cm4gaXNNYXRjaChhLCBwcmVkaWNhdGUpOyB9O1xuICAgIH1cbiAgICBpZiAoX3ByZWRpY2F0ZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKF9wcmVkaWNhdGUoYXJyW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcnJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnQgZGVmYXVsdCBmaW5kO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmluZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/find.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/first-value.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/first-value.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\n\nvar firstValue = function (data, name) {\n var rst = null;\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n }\n else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (firstValue);\n//# sourceMappingURL=first-value.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpcnN0LXZhbHVlLmpzPzY0ZTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTZCO0FBQ0k7QUFDakM7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBLGFBQWEsdURBQUs7QUFDbEIsZ0JBQWdCLHlEQUFPO0FBQ3ZCLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSx5RUFBVSxFQUFDO0FBQzFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9maXJzdC12YWx1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc05pbCBmcm9tICcuL2lzLW5pbCc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbnZhciBmaXJzdFZhbHVlID0gZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgICB2YXIgcnN0ID0gbnVsbDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG9iaiA9IGRhdGFbaV07XG4gICAgICAgIHZhciB2YWx1ZSA9IG9ialtuYW1lXTtcbiAgICAgICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJzdCA9IHZhbHVlWzBdOyAvLyB0b2RvIOi/memHjOaYr+WQpuW6lOivpeS9v+eUqOmAkuW9ku+8jOiwg+eUqCBmaXJzdFZhbHVlIEDnu53kupFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJzdCA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJzdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmaXJzdFZhbHVlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zmlyc3QtdmFsdWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/first-value.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/fixed-base.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/fixed-base.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar fixedBase = function (v, base) {\n var str = base.toString();\n var index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n var length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (fixedBase);\n//# sourceMappingURL=fixed-base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpeGVkLWJhc2UuanM/NjI1OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZpeGVkLWJhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZml4ZWRCYXNlID0gZnVuY3Rpb24gKHYsIGJhc2UpIHtcbiAgICB2YXIgc3RyID0gYmFzZS50b1N0cmluZygpO1xuICAgIHZhciBpbmRleCA9IHN0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2KTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IHN0ci5zdWJzdHIoaW5kZXggKyAxKS5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCA+IDIwKSB7XG4gICAgICAgIGxlbmd0aCA9IDIwO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2LnRvRml4ZWQobGVuZ3RoKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgZml4ZWRCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zml4ZWQtYmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/fixed-base.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten-deep.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten-deep.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nvar flattenDeep = function (arr, result) {\n if (result === void 0) { result = []; }\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n result.push(arr);\n }\n else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (flattenDeep);\n//# sourceMappingURL=flatten-deep.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZsYXR0ZW4tZGVlcC5qcz9hOWEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixZQUFZLE1BQU07QUFDbEI7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0EsNEJBQTRCLGFBQWE7QUFDekMsU0FBUyx5REFBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSwwRUFBVyxFQUFDO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9mbGF0dGVuLWRlZXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5Jztcbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyciBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7QXJyYXl9IHJlc3VsdCBUaGUgYXJyYXkgdG8gcmV0dXJuLlxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7ICAvLyA9PiBbMSwgMiwgMywgNCwgNV1cbiAqL1xudmFyIGZsYXR0ZW5EZWVwID0gZnVuY3Rpb24gKGFyciwgcmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSB7IHJlc3VsdCA9IFtdOyB9XG4gICAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYXJyKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBmbGF0dGVuRGVlcChhcnJbaV0sIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmbGF0dGVuRGVlcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZsYXR0ZW4tZGVlcC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten-deep.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nvar flatten = function (arr) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return [];\n }\n var rst = [];\n for (var i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (flatten);\n//# sourceMappingURL=flatten.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2ZsYXR0ZW4uanM/ZTc0ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixZQUFZLE1BQU07QUFDbEI7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsU0FBUyx5REFBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZmxhdHRlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuLyoqXG4gKiBGbGF0dGVucyBgYXJyYXlgIGEgc2luZ2xlIGxldmVsIGRlZXAuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTsgIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAqL1xudmFyIGZsYXR0ZW4gPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB2YXIgcnN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcnN0ID0gcnN0LmNvbmNhdChhcnJbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcnN0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZsYXR0ZW47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mbGF0dGVuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/for-in.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/for-in.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=for-in.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2Zvci1pbi5qcz9mZGZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMEI7QUFDWCw0R0FBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9mb3ItaW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWFjaCBmcm9tICcuL2VhY2gnO1xuZXhwb3J0IGRlZmF1bHQgZWFjaDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvci1pbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/for-in.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-ellipsis-text.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-ellipsis-text.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./to-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\");\n/* harmony import */ var _measure_text_width__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./measure-text-width */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/measure-text-width.js\");\n\n\n\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (text, maxWidth, font, str) {\n if (str === void 0) { str = '...'; }\n var STEP = 16; // 每次 16,调参工程师\n var PLACEHOLDER_WIDTH = Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(str, font);\n var leftText = !Object(_is_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(text) ? Object(_to_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(text) : text;\n var leftWidth = maxWidth;\n var r = []; // 最终的分段字符串\n var currentText;\n var currentWidth;\n if (Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(text, font) <= maxWidth) {\n return text;\n }\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = Object(_measure_text_width__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n if (!leftText) {\n return r.join('');\n }\n }\n return \"\" + r.join('') + str;\n});\n//# sourceMappingURL=get-ellipsis-text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC1lbGxpcHNpcy10ZXh0LmpzPzNlODIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDQTtBQUNnQztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnQjtBQUNoQix5QkFBeUIsYUFBYTtBQUN0QyxrQkFBa0I7QUFDbEIsNEJBQTRCLG1FQUFnQjtBQUM1QyxvQkFBb0IsMERBQVEsU0FBUywwREFBUTtBQUM3QztBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsUUFBUSxtRUFBZ0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtRUFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG1FQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9nZXQtZWxsaXBzaXMtdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1N0cmluZyBmcm9tICcuL2lzLXN0cmluZyc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90by1zdHJpbmcnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBtZWFzdXJlVGV4dFdpZHRoIH0gZnJvbSAnLi9tZWFzdXJlLXRleHQtd2lkdGgnO1xuLyoqXG4gKiDojrflj5bmlofmnKznmoQgLi4uIOaWh+acrOOAglxuICog566X5rOV77yI5YeP5bCR5q+P5qyhIG1lYXN1cmVUZXh0IOeahOmVv+W6pu+8jG1lYXN1cmVUZXh0IOeahOaAp+iDvei3n+Wtl+espuS4suaXtumXtOebuOWFs++8ie+8mlxuICogMS4g5YWI6YCa6L+HIFNURVAg6YCQ5q2l6K6h566X77yM5om+5Yiw5pyA5ZCO5LiA5Liq5bCP5LqOIG1heFdpZHRoIOeahOWtl+espuS4slxuICogMi4g54S25ZCO5a+55pyA5ZCO6L+Z5Liq5a2X56ym5Liy5LqM5YiG6K6h566XXG4gKiBAcGFyYW0gdGV4dCDpnIDopoHorqHnrpfnmoTmlofmnKwsIOeUseS6juWOhuWPsuWOn+WboCDpmaTkuobmlK/mjIFzdHJpbmfvvIzov5jmlK/mjIHnqbrlgLwsbnVtYmVy5ZKM5pWw57uE562JXG4gKiBAcGFyYW0gbWF4V2lkdGgg5pyA5aSn5a695bqmXG4gKiBAcGFyYW0gZm9udCDlrZfkvZNcbiAqIEBwYXJhbSBzdHIg6KaB5pu/5o2i55qE5paH5pysXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAodGV4dCwgbWF4V2lkdGgsIGZvbnQsIHN0cikge1xuICAgIGlmIChzdHIgPT09IHZvaWQgMCkgeyBzdHIgPSAnLi4uJzsgfVxuICAgIHZhciBTVEVQID0gMTY7IC8vIOavj+asoSAxNu+8jOiwg+WPguW3peeoi+W4iFxuICAgIHZhciBQTEFDRUhPTERFUl9XSURUSCA9IG1lYXN1cmVUZXh0V2lkdGgoc3RyLCBmb250KTtcbiAgICB2YXIgbGVmdFRleHQgPSAhaXNTdHJpbmcodGV4dCkgPyB0b1N0cmluZyh0ZXh0KSA6IHRleHQ7XG4gICAgdmFyIGxlZnRXaWR0aCA9IG1heFdpZHRoO1xuICAgIHZhciByID0gW107IC8vIOacgOe7iOeahOWIhuauteWtl+espuS4slxuICAgIHZhciBjdXJyZW50VGV4dDtcbiAgICB2YXIgY3VycmVudFdpZHRoO1xuICAgIGlmIChtZWFzdXJlVGV4dFdpZHRoKHRleHQsIGZvbnQpIDw9IG1heFdpZHRoKSB7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICAvLyDpppblhYjpgJrov4cgc3RlcCDorqHnrpfvvIzmib7lh7rmnIDlpKfnmoTmnKrotoXlh7rplb/luqbnmoRcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgLy8g5pu05paw5a2X56ym5LiyXG4gICAgICAgIGN1cnJlbnRUZXh0ID0gbGVmdFRleHQuc3Vic3RyKDAsIFNURVApO1xuICAgICAgICAvLyDorqHnrpflrr3luqZcbiAgICAgICAgY3VycmVudFdpZHRoID0gbWVhc3VyZVRleHRXaWR0aChjdXJyZW50VGV4dCwgZm9udCk7XG4gICAgICAgIC8vIOi2heWHuuWJqeS9meWuveW6pu+8jOWImeWBnOatolxuICAgICAgICBpZiAoY3VycmVudFdpZHRoICsgUExBQ0VIT0xERVJfV0lEVEggPiBsZWZ0V2lkdGgpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50V2lkdGggPiBsZWZ0V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByLnB1c2goY3VycmVudFRleHQpO1xuICAgICAgICAvLyDmsqHmnInotoXlh7rvvIzliJnorqHnrpfliankvZnlrr3luqZcbiAgICAgICAgbGVmdFdpZHRoIC09IGN1cnJlbnRXaWR0aDtcbiAgICAgICAgbGVmdFRleHQgPSBsZWZ0VGV4dC5zdWJzdHIoU1RFUCk7XG4gICAgICAgIC8vIOWtl+espuS4suaVtOS9k+ayoeaciei2heWHulxuICAgICAgICBpZiAoIWxlZnRUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gci5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDmnIDkuIvnmoTmnIDlkI7kuIDkuKogU1RFUO+8jOS9v+eUqCAxIOmAkuWinu+8iOeUqOS6jOWIhuaViOaenOabtOmrmO+8iVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAvLyDmm7TmlrDlrZfnrKbkuLJcbiAgICAgICAgY3VycmVudFRleHQgPSBsZWZ0VGV4dC5zdWJzdHIoMCwgMSk7XG4gICAgICAgIC8vIOiuoeeul+WuveW6plxuICAgICAgICBjdXJyZW50V2lkdGggPSBtZWFzdXJlVGV4dFdpZHRoKGN1cnJlbnRUZXh0LCBmb250KTtcbiAgICAgICAgLy8g6LaF5Ye65Ymp5L2Z5a695bqm77yM5YiZ5YGc5q2iXG4gICAgICAgIGlmIChjdXJyZW50V2lkdGggKyBQTEFDRUhPTERFUl9XSURUSCA+IGxlZnRXaWR0aCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgci5wdXNoKGN1cnJlbnRUZXh0KTtcbiAgICAgICAgLy8g5rKh5pyJ6LaF5Ye677yM5YiZ6K6h566X5Ymp5L2Z5a695bqmXG4gICAgICAgIGxlZnRXaWR0aCAtPSBjdXJyZW50V2lkdGg7XG4gICAgICAgIGxlZnRUZXh0ID0gbGVmdFRleHQuc3Vic3RyKDEpO1xuICAgICAgICBpZiAoIWxlZnRUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gci5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gXCJcIiArIHIuam9pbignJykgKyBzdHI7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC1lbGxpcHNpcy10ZXh0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-ellipsis-text.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-range.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-range.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _max__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./max */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/max.js\");\n/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./min */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/min.js\");\n\n\n\nvar getRange = function (values) {\n // 存在 NaN 时,min,max 判定会出问题\n var filterValues = values.filter(function (v) { return !isNaN(v); });\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values[0])) {\n var tmp = [];\n for (var i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n var max = Object(_max__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(filterValues);\n var min = Object(_min__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(filterValues);\n return {\n min: min,\n max: max,\n };\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getRange);\n//# sourceMappingURL=get-range.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC1yYW5nZS5qcz9lMTk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ1M7QUFDQTtBQUMxQztBQUNBO0FBQ0EsbURBQW1ELGtCQUFrQixFQUFFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5REFBTztBQUNmO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsb0RBQU07QUFDcEIsY0FBYyxvREFBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZ2V0LXJhbmdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGdldE1heCB9IGZyb20gJy4vbWF4JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgZ2V0TWluIH0gZnJvbSAnLi9taW4nO1xudmFyIGdldFJhbmdlID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIC8vIOWtmOWcqCBOYU4g5pe277yMbWluLG1heCDliKTlrprkvJrlh7rpl67pophcbiAgICB2YXIgZmlsdGVyVmFsdWVzID0gdmFsdWVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gIWlzTmFOKHYpOyB9KTtcbiAgICBpZiAoIWZpbHRlclZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgLy8g5aaC5p6c5rKh5pyJ5pWw5YC85YiZ55u05o6l6L+U5ZueMFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbWF4OiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoaXNBcnJheSh2YWx1ZXNbMF0pKSB7XG4gICAgICAgIHZhciB0bXAgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRtcCA9IHRtcC5jb25jYXQodmFsdWVzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJWYWx1ZXMgPSB0bXA7XG4gICAgfVxuICAgIHZhciBtYXggPSBnZXRNYXgoZmlsdGVyVmFsdWVzKTtcbiAgICB2YXIgbWluID0gZ2V0TWluKGZpbHRlclZhbHVlcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluOiBtaW4sXG4gICAgICAgIG1heDogbWF4LFxuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgZ2V0UmFuZ2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtcmFuZ2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-range.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-type.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-type.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\nvar getType = function (value) {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getType);\n//# sourceMappingURL=get-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC10eXBlLmpzP2I3NjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZ2V0LXR5cGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcbnZhciBnZXRUeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpLnJlcGxhY2UoL15cXFtvYmplY3QgLywgJycpLnJlcGxhY2UoL10kLywgJycpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGdldFR5cGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtdHlwZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-type.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-wrap-behavior.js": /*!*****************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-wrap-behavior.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 获取封装的事件\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction getWrapBehavior(obj, action) {\n return obj['_wrap_' + action];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (getWrapBehavior);\n//# sourceMappingURL=get-wrap-behavior.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC13cmFwLWJlaGF2aW9yLmpzP2ZiZTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksU0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNlLDhFQUFlLEVBQUM7QUFDL0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC13cmFwLWJlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDojrflj5blsIHoo4XnmoTkuovku7ZcbiAqIEBwcm90ZWN0ZWRcbiAqIEBwYXJhbSAge09iamVjdH0gb2JqICAg5a+56LGhXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGFjdGlvbiDkuovku7blkI3np7BcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSAgICAgICAg6L+U5Zue5LqL5Lu25aSE55CG5Ye95pWwXG4gKi9cbmZ1bmN0aW9uIGdldFdyYXBCZWhhdmlvcihvYmosIGFjdGlvbikge1xuICAgIHJldHVybiBvYmpbJ193cmFwXycgKyBhY3Rpb25dO1xufVxuZXhwb3J0IGRlZmF1bHQgZ2V0V3JhcEJlaGF2aW9yO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXdyYXAtYmVoYXZpb3IuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-wrap-behavior.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/get.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/get.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, key, defaultValue) {\n var p = 0;\n var keyArr = Object(_is_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key) ? key.split('.') : key;\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n return (obj === undefined || p < keyArr.length) ? defaultValue : obj;\n});\n//# sourceMappingURL=get.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC5qcz81MzA2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dCO0FBQ2hCO0FBQ0EsaUJBQWlCLDBEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1N0cmluZyBmcm9tICcuL2lzLXN0cmluZyc7XG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kZXZlbG9waXQvZGx2L2Jsb2IvbWFzdGVyL2luZGV4LmpzXG4gKiBAcGFyYW0gb2JqXG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAob2JqLCBrZXksIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBwID0gMDtcbiAgICB2YXIga2V5QXJyID0gaXNTdHJpbmcoa2V5KSA/IGtleS5zcGxpdCgnLicpIDoga2V5O1xuICAgIHdoaWxlIChvYmogJiYgcCA8IGtleUFyci5sZW5ndGgpIHtcbiAgICAgICAgb2JqID0gb2JqW2tleUFycltwKytdXTtcbiAgICB9XG4gICAgcmV0dXJuIChvYmogPT09IHVuZGVmaW5lZCB8fCBwIDwga2V5QXJyLmxlbmd0aCkgPyBkZWZhdWx0VmFsdWUgOiBvYmo7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/get.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-by.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-by.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction groupBy(data, condition) {\n if (!condition || !Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data)) {\n return {};\n }\n var result = {};\n // 兼容方法和 字符串的写法\n var predicate = Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(condition) ? condition : function (item) { return item[condition]; };\n var key;\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n }\n else {\n result[key] = [item];\n }\n }\n return result;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (groupBy);\n//# sourceMappingURL=group-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dyb3VwLWJ5LmpzPzljMmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ007QUFDdkM7QUFDQTtBQUNBLHVCQUF1Qix5REFBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw0REFBVSwyQ0FBMkMsd0JBQXdCO0FBQ2pHO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZ3JvdXAtYnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGdyb3VwQnkoZGF0YSwgY29uZGl0aW9uKSB7XG4gICAgaWYgKCFjb25kaXRpb24gfHwgIWlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgLy8g5YW85a655pa55rOV5ZKMIOWtl+espuS4sueahOWGmeazlVxuICAgIHZhciBwcmVkaWNhdGUgPSBpc0Z1bmN0aW9uKGNvbmRpdGlvbikgPyBjb25kaXRpb24gOiBmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaXRlbVtjb25kaXRpb25dOyB9O1xuICAgIHZhciBrZXk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpdGVtID0gZGF0YVtpXTtcbiAgICAgICAga2V5ID0gcHJlZGljYXRlKGl0ZW0pO1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IFtpdGVtXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGRlZmF1bHQgZ3JvdXBCeTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyb3VwLWJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-by.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-to-map.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-to-map.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return groupToMap; });\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n/* harmony import */ var _group_by__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./group-by */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-by.js\");\n\n\n\n/**\n * 将数据分组成 map\n * @param data\n * @param condition\n */\nfunction groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n var paramscondition_1 = Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n // 根据字段列表的值,拼接成 key\n for (var i = 0, l = paramscondition_1.length; i < l; i++) {\n unique += row[paramscondition_1[i]] && row[paramscondition_1[i]].toString();\n }\n return unique;\n };\n }\n return Object(_group_by__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data, condition);\n}\n//# sourceMappingURL=group-to-map.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dyb3VwLXRvLW1hcC5qcz9kYjViIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDTTtBQUNOO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDREQUFVO0FBQ25CO0FBQ0EsZ0NBQWdDLHlEQUFPO0FBQ3ZDO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EseURBQXlELE9BQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseURBQU87QUFDbEI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vZ3JvdXAtdG8tbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbmltcG9ydCBncm91cEJ5IGZyb20gJy4vZ3JvdXAtYnknO1xuLyoqXG4gKiDlsIbmlbDmja7liIbnu4TmiJAgbWFwXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGNvbmRpdGlvblxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBncm91cFRvTWFwKGRhdGEsIGNvbmRpdGlvbikge1xuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAwOiBkYXRhLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoIWlzRnVuY3Rpb24oY29uZGl0aW9uKSkge1xuICAgICAgICAvLyDlpoLmnpzmmK/lrZfnrKbkuLLvvIzliJnmjInnhacgYSpiIOmjjuagvOaIkOaVsOe7hFxuICAgICAgICB2YXIgcGFyYW1zY29uZGl0aW9uXzEgPSBpc0FycmF5KGNvbmRpdGlvbikgPyBjb25kaXRpb24gOiBjb25kaXRpb24ucmVwbGFjZSgvXFxzKy9nLCAnJykuc3BsaXQoJyonKTtcbiAgICAgICAgY29uZGl0aW9uID0gZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgdmFyIHVuaXF1ZSA9ICdfJzsgLy8g6YG/5YWN5Ye6546w5pWw5a2X5L2c5Li6S2V555qE5oOF5Ya177yM5Lya6L+b6KGM5oyJ54Wn5pWw5a2X55qE5o6S5bqPXG4gICAgICAgICAgICAvLyDmoLnmja7lrZfmrrXliJfooajnmoTlgLzvvIzmi7zmjqXmiJAga2V5XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtc2NvbmRpdGlvbl8xLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHVuaXF1ZSArPSByb3dbcGFyYW1zY29uZGl0aW9uXzFbaV1dICYmIHJvd1twYXJhbXNjb25kaXRpb25fMVtpXV0udG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmlxdWU7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBncm91cEJ5KGRhdGEsIGNvbmRpdGlvbik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC10by1tYXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-to-map.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/group.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/group.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _group_to_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./group-to-map */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-to-map.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (data, condition) {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [data];\n }\n var groups = Object(_group_to_map__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n});\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dyb3VwLmpzPzdkZjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUF3QztBQUN4QjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2REFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2dyb3VwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdyb3VwVG9NYXAgZnJvbSAnLi9ncm91cC10by1tYXAnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChkYXRhLCBjb25kaXRpb24pIHtcbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAvLyDmsqHmnInmnaHku7bvvIzliJnoh6rouqvmlLnmiJDmlbDnu4RcbiAgICAgICAgcmV0dXJuIFtkYXRhXTtcbiAgICB9XG4gICAgdmFyIGdyb3VwcyA9IGdyb3VwVG9NYXAoZGF0YSwgY29uZGl0aW9uKTtcbiAgICB2YXIgYXJyYXkgPSBbXTtcbiAgICBmb3IgKHZhciBpIGluIGdyb3Vwcykge1xuICAgICAgICBhcnJheS5wdXNoKGdyb3Vwc1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JvdXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/group.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-key.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-key.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _has__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./has */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/has.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_has__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=has-key.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2hhcy1rZXkuanM/YzA2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXdCO0FBQ1QsMkdBQUcsRUFBQztBQUNuQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaGFzLWtleS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBoYXMgZnJvbSAnLi9oYXMnO1xuZXhwb3J0IGRlZmF1bHQgaGFzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGFzLWtleS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-key.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-value.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-value.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contains */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/contains.js\");\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./values */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/values.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, value) { return Object(_contains__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_values__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj), value); });\n//# sourceMappingURL=has-value.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2hhcy12YWx1ZS5qcz8wMjZhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNKO0FBQ2Qsc0ZBQXVCLFFBQVEseURBQVEsQ0FBQyx1REFBTSxjQUFjLEVBQUUsRUFBRTtBQUNoRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaGFzLXZhbHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRhaW5zIGZyb20gJy4vY29udGFpbnMnO1xuaW1wb3J0IHZhbHVlcyBmcm9tICcuL3ZhbHVlcyc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKG9iaiwgdmFsdWUpIHsgcmV0dXJuIGNvbnRhaW5zKHZhbHVlcyhvYmopLCB2YWx1ZSk7IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGFzLXZhbHVlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-value.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/has.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/has.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, key) { return obj.hasOwnProperty(key); });\n//# sourceMappingURL=has.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2hhcy5qcz8zYjkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWdCLG9GQUFxQixnQ0FBZ0MsRUFBRSxFQUFFO0FBQ3pFIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9oYXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKG9iaiwga2V5KSB7IHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoa2V5KTsgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oYXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/has.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/head.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/head.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return head; });\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nfunction head(o) {\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o)) {\n return o[0];\n }\n return undefined;\n}\n//# sourceMappingURL=head.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2hlYWQuanM/MDQ0MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDM0I7QUFDZixRQUFRLDhEQUFXO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2hlYWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhlYWQobykge1xuICAgIGlmIChpc0FycmF5TGlrZShvKSkge1xuICAgICAgICByZXR1cm4gb1swXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlYWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/head.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/identity.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/identity.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (v) { return v; });\n//# sourceMappingURL=identity.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lkZW50aXR5LmpzP2QyYTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZ0IsNkVBQWMsVUFBVSxFQUFFLEVBQUU7QUFDNUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lkZW50aXR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2OyB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlkZW50aXR5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/identity.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/index-of.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/index-of.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nvar indexOf = function (arr, obj) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return -1;\n }\n var m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n var index = -1;\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (indexOf);\n//# sourceMappingURL=index-of.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2luZGV4LW9mLmpzP2IwNzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQztBQUMxQztBQUNBLFNBQVMsOERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaW5kZXgtb2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pcy1hcnJheS1saWtlJztcbnZhciBpbmRleE9mID0gZnVuY3Rpb24gKGFyciwgb2JqKSB7XG4gICAgaWYgKCFpc0FycmF5TGlrZShhcnIpKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgdmFyIG0gPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZjtcbiAgICBpZiAobSkge1xuICAgICAgICByZXR1cm4gbS5jYWxsKGFyciwgb2JqKTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFycltpXSA9PT0gb2JqKSB7XG4gICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG59O1xuZXhwb3J0IGRlZmF1bHQgaW5kZXhPZjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LW9mLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/index-of.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js ***! \*****************************************************************/ /*! exports provided: contains, includes, difference, find, findIndex, firstValue, flatten, flattenDeep, getRange, pull, pullAt, reduce, remove, sortBy, union, uniq, valuesOfKey, head, last, startsWith, endsWith, filter, every, some, group, groupBy, groupToMap, getWrapBehavior, wrapBehavior, number2color, parseRadius, clamp, fixedBase, isDecimal, isEven, isInteger, isNegative, isNumberEqual, isOdd, isPositive, max, maxBy, min, minBy, mod, toDegree, toInteger, toRadian, forIn, has, hasKey, hasValue, keys, isMatch, values, lowerCase, lowerFirst, substitute, upperCase, upperFirst, getType, isArguments, isArray, isArrayLike, isBoolean, isDate, isError, isFunction, isFinite, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isPrototype, isRegExp, isString, isType, isUndefined, isElement, requestAnimationFrame, clearAnimationFrame, augment, clone, debounce, memoize, deepMix, each, extend, indexOf, isEmpty, isEqual, isEqualWith, map, mapValues, mix, assign, get, set, pick, omit, throttle, toArray, toString, uniqueId, noop, identity, size, measureTextWidth, getEllipsisText, Cache */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contains */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/contains.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return _contains__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return _contains__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _difference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./difference */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/difference.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return _difference__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./find */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/find.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return _find__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _find_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./find-index */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/find-index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return _find_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _first_value__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./first-value */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/first-value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"firstValue\", function() { return _first_value__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _flatten__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./flatten */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return _flatten__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _flatten_deep__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./flatten-deep */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/flatten-deep.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flattenDeep\", function() { return _flatten_deep__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _get_range__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./get-range */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getRange\", function() { return _get_range__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _pull__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pull */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pull\", function() { return _pull__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _pull_at__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./pull-at */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull-at.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pullAt\", function() { return _pull_at__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reduce */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/reduce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return _reduce__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _remove__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./remove */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/remove.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"remove\", function() { return _remove__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _sort_by__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sort-by */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/sort-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return _sort_by__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _union__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./union */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/union.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return _union__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _uniq__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./uniq */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/uniq.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return _uniq__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _values_of_key__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./values-of-key */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/values-of-key.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"valuesOfKey\", function() { return _values_of_key__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _head__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./head */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/head.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return _head__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _last__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./last */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/last.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return _last__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _starts_with__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./starts-with */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/starts-with.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startsWith\", function() { return _starts_with__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _ends_with__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ends-with */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/ends-with.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"endsWith\", function() { return _ends_with__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./filter */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/filter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return _filter__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _every__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./every */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/every.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return _every__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _some__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./some */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/some.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return _some__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"group\", function() { return _group__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _group_by__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./group-by */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return _group_by__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _group_to_map__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./group-to-map */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/group-to-map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"groupToMap\", function() { return _group_to_map__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _get_wrap_behavior__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./get-wrap-behavior */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-wrap-behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getWrapBehavior\", function() { return _get_wrap_behavior__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _wrap_behavior__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./wrap-behavior */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/wrap-behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"wrapBehavior\", function() { return _wrap_behavior__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _number2color__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./number2color */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/number2color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"number2color\", function() { return _number2color__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _parse_radius__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./parse-radius */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/parse-radius.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return _parse_radius__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _clamp__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./clamp */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/clamp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clamp\", function() { return _clamp__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _fixed_base__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./fixed-base */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/fixed-base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fixedBase\", function() { return _fixed_base__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _is_decimal__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./is-decimal */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-decimal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDecimal\", function() { return _is_decimal__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _is_even__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./is-even */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-even.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEven\", function() { return _is_even__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _is_integer__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./is-integer */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-integer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isInteger\", function() { return _is_integer__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _is_negative__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./is-negative */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-negative.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNegative\", function() { return _is_negative__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _is_number_equal__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./is-number-equal */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number-equal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return _is_number_equal__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _is_odd__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./is-odd */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-odd.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isOdd\", function() { return _is_odd__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _is_positive__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./is-positive */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-positive.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPositive\", function() { return _is_positive__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _max__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./max */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/max.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return _max__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _max_by__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./max-by */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/max-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"maxBy\", function() { return _max_by__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _min__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./min */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/min.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return _min__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _min_by__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./min-by */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/min-by.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minBy\", function() { return _min_by__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _mod__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./mod */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/mod.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return _mod__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _to_degree__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./to-degree */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-degree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toDegree\", function() { return _to_degree__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _to_integer__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./to-integer */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-integer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toInteger\", function() { return _to_integer__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _to_radian__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./to-radian */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-radian.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return _to_radian__WEBPACK_IMPORTED_MODULE_46__[\"default\"]; });\n\n/* harmony import */ var _for_in__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./for-in */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/for-in.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forIn\", function() { return _for_in__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony import */ var _has__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./has */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/has.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return _has__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n/* harmony import */ var _has_key__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./has-key */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-key.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasKey\", function() { return _has_key__WEBPACK_IMPORTED_MODULE_49__[\"default\"]; });\n\n/* harmony import */ var _has_value__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./has-value */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/has-value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hasValue\", function() { return _has_value__WEBPACK_IMPORTED_MODULE_50__[\"default\"]; });\n\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./keys */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/keys.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return _keys__WEBPACK_IMPORTED_MODULE_51__[\"default\"]; });\n\n/* harmony import */ var _is_match__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./is-match */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-match.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return _is_match__WEBPACK_IMPORTED_MODULE_52__[\"default\"]; });\n\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./values */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/values.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return _values__WEBPACK_IMPORTED_MODULE_53__[\"default\"]; });\n\n/* harmony import */ var _lower_case__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./lower-case */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-case.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lowerCase\", function() { return _lower_case__WEBPACK_IMPORTED_MODULE_54__[\"default\"]; });\n\n/* harmony import */ var _lower_first__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./lower-first */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-first.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lowerFirst\", function() { return _lower_first__WEBPACK_IMPORTED_MODULE_55__[\"default\"]; });\n\n/* harmony import */ var _substitute__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./substitute */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/substitute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"substitute\", function() { return _substitute__WEBPACK_IMPORTED_MODULE_56__[\"default\"]; });\n\n/* harmony import */ var _upper_case__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./upper-case */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-case.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperCase\", function() { return _upper_case__WEBPACK_IMPORTED_MODULE_57__[\"default\"]; });\n\n/* harmony import */ var _upper_first__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./upper-first */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-first.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return _upper_first__WEBPACK_IMPORTED_MODULE_58__[\"default\"]; });\n\n/* harmony import */ var _get_type__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./get-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return _get_type__WEBPACK_IMPORTED_MODULE_59__[\"default\"]; });\n\n/* harmony import */ var _is_arguments__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./is-arguments */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-arguments.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return _is_arguments__WEBPACK_IMPORTED_MODULE_60__[\"default\"]; });\n\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _is_array__WEBPACK_IMPORTED_MODULE_61__[\"default\"]; });\n\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArrayLike\", function() { return _is_array_like__WEBPACK_IMPORTED_MODULE_62__[\"default\"]; });\n\n/* harmony import */ var _is_boolean__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./is-boolean */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-boolean.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return _is_boolean__WEBPACK_IMPORTED_MODULE_63__[\"default\"]; });\n\n/* harmony import */ var _is_date__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./is-date */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return _is_date__WEBPACK_IMPORTED_MODULE_64__[\"default\"]; });\n\n/* harmony import */ var _is_error__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./is-error */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-error.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return _is_error__WEBPACK_IMPORTED_MODULE_65__[\"default\"]; });\n\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _is_function__WEBPACK_IMPORTED_MODULE_66__[\"default\"]; });\n\n/* harmony import */ var _is_finite__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./is-finite */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-finite.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return _is_finite__WEBPACK_IMPORTED_MODULE_67__[\"default\"]; });\n\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _is_nil__WEBPACK_IMPORTED_MODULE_68__[\"default\"]; });\n\n/* harmony import */ var _is_null__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./is-null */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-null.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return _is_null__WEBPACK_IMPORTED_MODULE_69__[\"default\"]; });\n\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return _is_number__WEBPACK_IMPORTED_MODULE_70__[\"default\"]; });\n\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./is-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _is_object__WEBPACK_IMPORTED_MODULE_71__[\"default\"]; });\n\n/* harmony import */ var _is_object_like__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./is-object-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object-like.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObjectLike\", function() { return _is_object_like__WEBPACK_IMPORTED_MODULE_72__[\"default\"]; });\n\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return _is_plain_object__WEBPACK_IMPORTED_MODULE_73__[\"default\"]; });\n\n/* harmony import */ var _is_prototype__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./is-prototype */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-prototype.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPrototype\", function() { return _is_prototype__WEBPACK_IMPORTED_MODULE_74__[\"default\"]; });\n\n/* harmony import */ var _is_reg_exp__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./is-reg-exp */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-reg-exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return _is_reg_exp__WEBPACK_IMPORTED_MODULE_75__[\"default\"]; });\n\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _is_string__WEBPACK_IMPORTED_MODULE_76__[\"default\"]; });\n\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isType\", function() { return _is_type__WEBPACK_IMPORTED_MODULE_77__[\"default\"]; });\n\n/* harmony import */ var _is_undefined__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./is-undefined */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-undefined.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return _is_undefined__WEBPACK_IMPORTED_MODULE_78__[\"default\"]; });\n\n/* harmony import */ var _is_element__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./is-element */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-element.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return _is_element__WEBPACK_IMPORTED_MODULE_79__[\"default\"]; });\n\n/* harmony import */ var _request_animation_frame__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./request-animation-frame */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/request-animation-frame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _request_animation_frame__WEBPACK_IMPORTED_MODULE_80__[\"default\"]; });\n\n/* harmony import */ var _clear_animation_frame__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./clear-animation-frame */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/clear-animation-frame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return _clear_animation_frame__WEBPACK_IMPORTED_MODULE_81__[\"default\"]; });\n\n/* harmony import */ var _augment__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./augment */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/augment.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"augment\", function() { return _augment__WEBPACK_IMPORTED_MODULE_82__[\"default\"]; });\n\n/* harmony import */ var _clone__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./clone */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/clone.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return _clone__WEBPACK_IMPORTED_MODULE_83__[\"default\"]; });\n\n/* harmony import */ var _debounce__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./debounce */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/debounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return _debounce__WEBPACK_IMPORTED_MODULE_84__[\"default\"]; });\n\n/* harmony import */ var _memoize__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./memoize */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/memoize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return _memoize__WEBPACK_IMPORTED_MODULE_85__[\"default\"]; });\n\n/* harmony import */ var _deep_mix__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./deep-mix */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/deep-mix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deepMix\", function() { return _deep_mix__WEBPACK_IMPORTED_MODULE_86__[\"default\"]; });\n\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./each */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _each__WEBPACK_IMPORTED_MODULE_87__[\"default\"]; });\n\n/* harmony import */ var _extend__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./extend */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/extend.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return _extend__WEBPACK_IMPORTED_MODULE_88__[\"default\"]; });\n\n/* harmony import */ var _index_of__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./index-of */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index-of.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return _index_of__WEBPACK_IMPORTED_MODULE_89__[\"default\"]; });\n\n/* harmony import */ var _is_empty__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./is-empty */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-empty.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return _is_empty__WEBPACK_IMPORTED_MODULE_90__[\"default\"]; });\n\n/* harmony import */ var _is_equal__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./is-equal */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return _is_equal__WEBPACK_IMPORTED_MODULE_91__[\"default\"]; });\n\n/* harmony import */ var _is_equal_with__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./is-equal-with */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal-with.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isEqualWith\", function() { return _is_equal_with__WEBPACK_IMPORTED_MODULE_92__[\"default\"]; });\n\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./map */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return _map__WEBPACK_IMPORTED_MODULE_93__[\"default\"]; });\n\n/* harmony import */ var _map_values__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./map-values */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/map-values.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mapValues\", function() { return _map_values__WEBPACK_IMPORTED_MODULE_94__[\"default\"]; });\n\n/* harmony import */ var _mix__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./mix */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/mix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return _mix__WEBPACK_IMPORTED_MODULE_95__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return _mix__WEBPACK_IMPORTED_MODULE_95__[\"default\"]; });\n\n/* harmony import */ var _get__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./get */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/get.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return _get__WEBPACK_IMPORTED_MODULE_96__[\"default\"]; });\n\n/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./set */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/set.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return _set__WEBPACK_IMPORTED_MODULE_97__[\"default\"]; });\n\n/* harmony import */ var _pick__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./pick */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/pick.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return _pick__WEBPACK_IMPORTED_MODULE_98__[\"default\"]; });\n\n/* harmony import */ var _omit__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./omit */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/omit.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return _omit__WEBPACK_IMPORTED_MODULE_99__[\"default\"]; });\n\n/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./throttle */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/throttle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return _throttle__WEBPACK_IMPORTED_MODULE_100__[\"default\"]; });\n\n/* harmony import */ var _to_array__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./to-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return _to_array__WEBPACK_IMPORTED_MODULE_101__[\"default\"]; });\n\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./to-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toString\", function() { return _to_string__WEBPACK_IMPORTED_MODULE_102__[\"default\"]; });\n\n/* harmony import */ var _unique_id__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./unique-id */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/unique-id.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return _unique_id__WEBPACK_IMPORTED_MODULE_103__[\"default\"]; });\n\n/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./noop */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/noop.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return _noop__WEBPACK_IMPORTED_MODULE_104__[\"default\"]; });\n\n/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./identity */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return _identity__WEBPACK_IMPORTED_MODULE_105__[\"default\"]; });\n\n/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./size */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/size.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return _size__WEBPACK_IMPORTED_MODULE_106__[\"default\"]; });\n\n/* harmony import */ var _measure_text_width__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./measure-text-width */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/measure-text-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"measureTextWidth\", function() { return _measure_text_width__WEBPACK_IMPORTED_MODULE_107__[\"default\"]; });\n\n/* harmony import */ var _get_ellipsis_text__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./get-ellipsis-text */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-ellipsis-text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEllipsisText\", function() { return _get_ellipsis_text__WEBPACK_IMPORTED_MODULE_108__[\"default\"]; });\n\n/* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./cache */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/cache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cache\", function() { return _cache__WEBPACK_IMPORTED_MODULE_109__[\"default\"]; });\n\n// array\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// event\n\n\n// format\n\n\n// math\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// object\n\n\n\n\n\n\n\n// string\n\n\n\n\n\n// type\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// other\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// text\n\n\n// 不知道为什么,需要把这个 export,不然 ts 会报类型错误\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2luZGV4LmpzPzZkNzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ3NFO0FBQ2pCO0FBQ1o7QUFDVztBQUNFO0FBQ1A7QUFDUztBQUNOO0FBQ1Q7QUFDSztBQUNEO0FBQ0E7QUFDQztBQUNIO0FBQ0Y7QUFDZ0I7QUFDaEI7QUFDQTtBQUNhO0FBQ0o7QUFDTDtBQUNGO0FBQ0Y7QUFDRTtBQUNLO0FBQ087QUFDdkQ7QUFDaUU7QUFDUDtBQUMxRDtBQUN5RDtBQUNEO0FBQ3hEO0FBQzJDO0FBQ1M7QUFDQTtBQUNOO0FBQ007QUFDRTtBQUNPO0FBQ2pCO0FBQ1U7QUFDZjtBQUNLO0FBQ0w7QUFDSztBQUNMO0FBQ1c7QUFDRTtBQUNGO0FBQ2xEO0FBQzRDO0FBQ0w7QUFDTztBQUNJO0FBQ1Q7QUFDTztBQUNIO0FBQzdDO0FBQ29EO0FBQ0U7QUFDRDtBQUNEO0FBQ0U7QUFDdEQ7QUFDZ0Q7QUFDUTtBQUNSO0FBQ1M7QUFDTDtBQUNOO0FBQ0U7QUFDTTtBQUNKO0FBQ047QUFDRTtBQUNJO0FBQ0E7QUFDUztBQUNFO0FBQ0w7QUFDTDtBQUNEO0FBQ0o7QUFDVTtBQUNKO0FBQ3lCO0FBQ0o7QUFDekU7QUFDK0M7QUFDSjtBQUNNO0FBQ0Y7QUFDQztBQUNQO0FBQ0k7QUFDRztBQUNBO0FBQ0E7QUFDUztBQUNsQjtBQUNhO0FBQ007QUFDbkI7QUFDQTtBQUNFO0FBQ0E7QUFDUTtBQUNEO0FBQ0U7QUFDQTtBQUNUO0FBQ1E7QUFDUjtBQUN6QztBQUNtRTtBQUNGO0FBQ2pFO0FBQzJDO0FBQzNDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFycmF5XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbnRhaW5zLCBkZWZhdWx0IGFzIGluY2x1ZGVzIH0gZnJvbSAnLi9jb250YWlucyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2UgfSBmcm9tICcuL2RpZmZlcmVuY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaW5kIH0gZnJvbSAnLi9maW5kJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmluZEluZGV4IH0gZnJvbSAnLi9maW5kLWluZGV4JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlyc3RWYWx1ZSB9IGZyb20gJy4vZmlyc3QtdmFsdWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0dGVuIH0gZnJvbSAnLi9mbGF0dGVuJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmxhdHRlbkRlZXAgfSBmcm9tICcuL2ZsYXR0ZW4tZGVlcCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFJhbmdlIH0gZnJvbSAnLi9nZXQtcmFuZ2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwdWxsIH0gZnJvbSAnLi9wdWxsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHVsbEF0IH0gZnJvbSAnLi9wdWxsLWF0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVkdWNlIH0gZnJvbSAnLi9yZWR1Y2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZW1vdmUgfSBmcm9tICcuL3JlbW92ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNvcnRCeSB9IGZyb20gJy4vc29ydC1ieSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaW9uIH0gZnJvbSAnLi91bmlvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaXEgfSBmcm9tICcuL3VuaXEnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2YWx1ZXNPZktleSB9IGZyb20gJy4vdmFsdWVzLW9mLWtleSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhlYWQgfSBmcm9tICcuL2hlYWQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0IH0gZnJvbSAnLi9sYXN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRzV2l0aCB9IGZyb20gJy4vc3RhcnRzLXdpdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbmRzV2l0aCB9IGZyb20gJy4vZW5kcy13aXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsdGVyIH0gZnJvbSAnLi9maWx0ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBldmVyeSB9IGZyb20gJy4vZXZlcnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb21lIH0gZnJvbSAnLi9zb21lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ3JvdXBCeSB9IGZyb20gJy4vZ3JvdXAtYnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBncm91cFRvTWFwIH0gZnJvbSAnLi9ncm91cC10by1tYXAnO1xuLy8gZXZlbnRcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0V3JhcEJlaGF2aW9yIH0gZnJvbSAnLi9nZXQtd3JhcC1iZWhhdmlvcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdyYXBCZWhhdmlvciB9IGZyb20gJy4vd3JhcC1iZWhhdmlvcic7XG4vLyBmb3JtYXRcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbnVtYmVyMmNvbG9yIH0gZnJvbSAnLi9udW1iZXIyY29sb3InO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZVJhZGl1cyB9IGZyb20gJy4vcGFyc2UtcmFkaXVzJztcbi8vIG1hdGhcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2xhbXAgfSBmcm9tICcuL2NsYW1wJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZml4ZWRCYXNlIH0gZnJvbSAnLi9maXhlZC1iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNEZWNpbWFsIH0gZnJvbSAnLi9pcy1kZWNpbWFsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFdmVuIH0gZnJvbSAnLi9pcy1ldmVuJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNJbnRlZ2VyIH0gZnJvbSAnLi9pcy1pbnRlZ2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNOZWdhdGl2ZSB9IGZyb20gJy4vaXMtbmVnYXRpdmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc051bWJlckVxdWFsIH0gZnJvbSAnLi9pcy1udW1iZXItZXF1YWwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc09kZCB9IGZyb20gJy4vaXMtb2RkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNQb3NpdGl2ZSB9IGZyb20gJy4vaXMtcG9zaXRpdmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXggfSBmcm9tICcuL21heCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1heEJ5IH0gZnJvbSAnLi9tYXgtYnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW4gfSBmcm9tICcuL21pbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbkJ5IH0gZnJvbSAnLi9taW4tYnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb2QgfSBmcm9tICcuL21vZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvRGVncmVlIH0gZnJvbSAnLi90by1kZWdyZWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0ludGVnZXIgfSBmcm9tICcuL3RvLWludGVnZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b1JhZGlhbiB9IGZyb20gJy4vdG8tcmFkaWFuJztcbi8vIG9iamVjdFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JJbiB9IGZyb20gJy4vZm9yLWluJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaGFzIH0gZnJvbSAnLi9oYXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoYXNLZXkgfSBmcm9tICcuL2hhcy1rZXknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoYXNWYWx1ZSB9IGZyb20gJy4vaGFzLXZhbHVlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMga2V5cyB9IGZyb20gJy4va2V5cyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTWF0Y2ggfSBmcm9tICcuL2lzLW1hdGNoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmFsdWVzIH0gZnJvbSAnLi92YWx1ZXMnO1xuLy8gc3RyaW5nXG5leHBvcnQgeyBkZWZhdWx0IGFzIGxvd2VyQ2FzZSB9IGZyb20gJy4vbG93ZXItY2FzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGxvd2VyRmlyc3QgfSBmcm9tICcuL2xvd2VyLWZpcnN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3Vic3RpdHV0ZSB9IGZyb20gJy4vc3Vic3RpdHV0ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVwcGVyQ2FzZSB9IGZyb20gJy4vdXBwZXItY2FzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVwcGVyRmlyc3QgfSBmcm9tICcuL3VwcGVyLWZpcnN0Jztcbi8vIHR5cGVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0VHlwZSB9IGZyb20gJy4vZ2V0LXR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0FyZ3VtZW50cyB9IGZyb20gJy4vaXMtYXJndW1lbnRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNBcnJheSB9IGZyb20gJy4vaXMtYXJyYXknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0FycmF5TGlrZSB9IGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQm9vbGVhbiB9IGZyb20gJy4vaXMtYm9vbGVhbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRGF0ZSB9IGZyb20gJy4vaXMtZGF0ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRXJyb3IgfSBmcm9tICcuL2lzLWVycm9yJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNGdW5jdGlvbiB9IGZyb20gJy4vaXMtZnVuY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0Zpbml0ZSB9IGZyb20gJy4vaXMtZmluaXRlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNOaWwgfSBmcm9tICcuL2lzLW5pbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTnVsbCB9IGZyb20gJy4vaXMtbnVsbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTnVtYmVyIH0gZnJvbSAnLi9pcy1udW1iZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNPYmplY3RMaWtlIH0gZnJvbSAnLi9pcy1vYmplY3QtbGlrZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzUGxhaW5PYmplY3QgfSBmcm9tICcuL2lzLXBsYWluLW9iamVjdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzUHJvdG90eXBlIH0gZnJvbSAnLi9pcy1wcm90b3R5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1JlZ0V4cCB9IGZyb20gJy4vaXMtcmVnLWV4cCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU3RyaW5nIH0gZnJvbSAnLi9pcy1zdHJpbmcnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1R5cGUgfSBmcm9tICcuL2lzLXR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1VuZGVmaW5lZCB9IGZyb20gJy4vaXMtdW5kZWZpbmVkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFbGVtZW50IH0gZnJvbSAnLi9pcy1lbGVtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIH0gZnJvbSAnLi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsZWFyQW5pbWF0aW9uRnJhbWUgfSBmcm9tICcuL2NsZWFyLWFuaW1hdGlvbi1mcmFtZSc7XG4vLyBvdGhlclxuZXhwb3J0IHsgZGVmYXVsdCBhcyBhdWdtZW50IH0gZnJvbSAnLi9hdWdtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2xvbmUgfSBmcm9tICcuL2Nsb25lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlZXBNaXggfSBmcm9tICcuL2RlZXAtbWl4JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZWFjaCB9IGZyb20gJy4vZWFjaCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4dGVuZCB9IGZyb20gJy4vZXh0ZW5kJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW5kZXhPZiB9IGZyb20gJy4vaW5kZXgtb2YnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0VtcHR5IH0gZnJvbSAnLi9pcy1lbXB0eSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRXF1YWwgfSBmcm9tICcuL2lzLWVxdWFsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFcXVhbFdpdGggfSBmcm9tICcuL2lzLWVxdWFsLXdpdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXAgfSBmcm9tICcuL21hcCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1hcFZhbHVlcyB9IGZyb20gJy4vbWFwLXZhbHVlcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1peCwgZGVmYXVsdCBhcyBhc3NpZ24gfSBmcm9tICcuL21peCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldCB9IGZyb20gJy4vZ2V0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0IH0gZnJvbSAnLi9zZXQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwaWNrIH0gZnJvbSAnLi9waWNrJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb21pdCB9IGZyb20gJy4vb21pdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRocm90dGxlIH0gZnJvbSAnLi90aHJvdHRsZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvQXJyYXkgfSBmcm9tICcuL3RvLWFycmF5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9TdHJpbmcgfSBmcm9tICcuL3RvLXN0cmluZyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaXF1ZUlkIH0gZnJvbSAnLi91bmlxdWUtaWQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBub29wIH0gZnJvbSAnLi9ub29wJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2l6ZSB9IGZyb20gJy4vc2l6ZSc7XG4vLyB0ZXh0XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1lYXN1cmVUZXh0V2lkdGggfSBmcm9tICcuL21lYXN1cmUtdGV4dC13aWR0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEVsbGlwc2lzVGV4dCB9IGZyb20gJy4vZ2V0LWVsbGlwc2lzLXRleHQnO1xuLy8g5LiN55+l6YGT5Li65LuA5LmI77yM6ZyA6KaB5oqK6L+Z5LiqIGV4cG9ydO+8jOS4jeeEtiB0cyDkvJrmiqXnsbvlnovplJnor69cbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2FjaGUgfSBmcm9tICcuL2NhY2hlJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-arguments.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-arguments.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\nvar isArguments = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Arguments');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isArguments);\n//# sourceMappingURL=is-arguments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWFyZ3VtZW50cy5qcz8zOTQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQytCO0FBQy9CO0FBQ0EsV0FBVyx3REFBTTtBQUNqQjtBQUNlLDBFQUFXLEVBQUM7QUFDM0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWFyZ3VtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5piv5ZCm5piv5Y+C5pWw57G75Z6LXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIOa1i+ivleeahOWAvFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xudmFyIGlzQXJndW1lbnRzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ0FyZ3VtZW50cycpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzQXJndW1lbnRzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtYXJndW1lbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-arguments.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isArrayLike = function (value) {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isArrayLike);\n//# sourceMappingURL=is-array-like.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWFycmF5LWxpa2UuanM/OGQ0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDBFQUFXLEVBQUM7QUFDM0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWFycmF5LWxpa2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNBcnJheUxpa2UgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvKipcbiAgICAgKiBpc0FycmF5TGlrZShbMSwgMiwgM10pID0+IHRydWVcbiAgICAgKiBpc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKSA9PiB0cnVlXG4gICAgICogaXNBcnJheUxpa2UoJ2FiYycpID0+IHRydWVcbiAgICAgKiBpc0FycmF5TGlrZShGdW5jdGlvbikgPT4gZmFsc2VcbiAgICAgKi9cbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIGlzRmluaXRlKHZhbHVlLmxlbmd0aCk7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNBcnJheUxpa2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1hcnJheS1saWtlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Array.isArray ?\n Array.isArray(value) :\n Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWFycmF5LmpzPzhkZjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUErQjtBQUNmO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLHdEQUFNO0FBQ2QsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5ID9cbiAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgOlxuICAgICAgICBpc1R5cGUodmFsdWUsICdBcnJheScpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1hcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-boolean.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-boolean.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\nvar isBoolean = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Boolean');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isBoolean);\n//# sourceMappingURL=is-boolean.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWJvb2xlYW4uanM/N2Y5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUMrQjtBQUMvQjtBQUNBLFdBQVcsd0RBQU07QUFDakI7QUFDZSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1ib29sZWFuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDmmK/lkKbmmK/luIPlsJTnsbvlnotcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsdWUg5rWL6K+V55qE5YC8XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5pbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG52YXIgaXNCb29sZWFuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ0Jvb2xlYW4nKTtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0Jvb2xlYW47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1ib29sZWFuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-boolean.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-date.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-date.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n\nvar isDate = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Date');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isDate);\n//# sourceMappingURL=is-date.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWRhdGUuanM/YWMyNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCO0FBQy9CO0FBQ0EsV0FBVyx3REFBTTtBQUNqQjtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWRhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG52YXIgaXNEYXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ0RhdGUnKTtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0RhdGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1kYXRlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-date.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-decimal.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-decimal.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\nvar isDecimal = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 1 !== 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isDecimal);\n//# sourceMappingURL=is-decimal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWRlY2ltYWwuanM/NDgwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWRlY2ltYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xudmFyIGlzRGVjaW1hbCA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gJSAxICE9PSAwO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzRGVjaW1hbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWRlY2ltYWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-decimal.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-element.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-element.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nvar isElement = function (o) {\n return o instanceof Element || o instanceof HTMLDocument;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isElement);\n//# sourceMappingURL=is-element.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVsZW1lbnQuanM/NmRjZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDZSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1lbGVtZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDliKTmlq3mmK/lkKZIVE1M5YWD57SgXG4gKiBAcmV0dXJuIHtCb29sZWFufSDmmK/lkKZIVE1M5YWD57SgXG4gKi9cbnZhciBpc0VsZW1lbnQgPSBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvIGluc3RhbmNlb2YgRWxlbWVudCB8fCBvIGluc3RhbmNlb2YgSFRNTERvY3VtZW50O1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzRWxlbWVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWVsZW1lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-element.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-empty.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-empty.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n/* harmony import */ var _get_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/get-type.js\");\n/* harmony import */ var _is_prototype__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./is-prototype */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-prototype.js\");\n\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isEmpty(value) {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return true;\n }\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n return !value.length;\n }\n var type = Object(_get_type__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (Object(_is_prototype__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value)) {\n return !Object.keys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (isEmpty);\n//# sourceMappingURL=is-empty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVtcHR5LmpzP2MzNTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNhO0FBQ1Q7QUFDUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBLFFBQVEsdURBQUs7QUFDYjtBQUNBO0FBQ0EsUUFBUSw4REFBVztBQUNuQjtBQUNBO0FBQ0EsZUFBZSx5REFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxRQUFRLDZEQUFXO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVtcHR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXMtbmlsJztcbmltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuaW1wb3J0IGdldFR5cGUgZnJvbSAnLi9nZXQtdHlwZSc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9pcy1wcm90b3R5cGUnO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICAvKipcbiAgICAgKiBpc0VtcHR5KG51bGwpID0+IHRydWVcbiAgICAgKiBpc0VtcHR5KCkgPT4gdHJ1ZVxuICAgICAqIGlzRW1wdHkodHJ1ZSkgPT4gdHJ1ZVxuICAgICAqIGlzRW1wdHkoMSkgPT4gdHJ1ZVxuICAgICAqIGlzRW1wdHkoWzEsIDIsIDNdKSA9PiBmYWxzZVxuICAgICAqIGlzRW1wdHkoJ2FiYycpID0+IGZhbHNlXG4gICAgICogaXNFbXB0eSh7IGE6IDEgfSkgPT4gZmFsc2VcbiAgICAgKi9cbiAgICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICAgIH1cbiAgICB2YXIgdHlwZSA9IGdldFR5cGUodmFsdWUpO1xuICAgIGlmICh0eXBlID09PSAnTWFwJyB8fCB0eXBlID09PSAnU2V0Jykge1xuICAgICAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gICAgfVxuICAgIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoO1xuICAgIH1cbiAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGlzRW1wdHk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1lbXB0eS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-empty.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal-with.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal-with.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n/* harmony import */ var _is_equal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-equal */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal.js\");\n\n\n/**\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [fn] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * isEqualWith(array, other, customizer); // => true\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value, other, fn) {\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fn)) {\n return Object(_is_equal__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value, other);\n }\n return !!fn(value, other);\n});\n//# sourceMappingURL=is-equal-with.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVxdWFsLXdpdGguanM/ZDJiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDTjtBQUNqQztBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ2dCO0FBQ2hCLFNBQVMsNERBQVU7QUFDbkIsZUFBZSx5REFBTztBQUN0QjtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVxdWFsLXdpdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJy4vaXMtZXF1YWwnO1xuLyoqXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICogICBpZiAoaXNHcmVldGluZyhvYmpWYWx1ZSkgJiYgaXNHcmVldGluZyhvdGhWYWx1ZSkpIHtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfVxuICogfVxuICpcbiAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICogdmFyIG90aGVyID0gWydoaScsICdnb29kYnllJ107XG4gKlxuICogaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTsgIC8vID0+IHRydWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSwgb3RoZXIsIGZuKSB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uKGZuKSkge1xuICAgICAgICByZXR1cm4gaXNFcXVhbCh2YWx1ZSwgb3RoZXIpO1xuICAgIH1cbiAgICByZXR1cm4gISFmbih2YWx1ZSwgb3RoZXIpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1lcXVhbC13aXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal-with.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_object_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object-like.js\");\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n\n\n\nvar isEqual = function (value, other) {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (Object(_is_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value) || Object(_is_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(other)) {\n return false;\n }\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) || Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(other)) {\n if (value.length !== other.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (Object(_is_object_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) || Object(_is_object_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other)) {\n var valueKeys = Object.keys(value);\n var otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n var rst = true;\n for (var i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isEqual);\n//# sourceMappingURL=is-equal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVxdWFsLmpzP2JlYTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDRjtBQUNQO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBUSxXQUFXLDBEQUFRO0FBQ25DO0FBQ0E7QUFDQSxRQUFRLDhEQUFXLFdBQVcsOERBQVc7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwrREFBWSxXQUFXLCtEQUFZO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaXMtZXF1YWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXMtb2JqZWN0LWxpa2UnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pcy1zdHJpbmcnO1xudmFyIGlzRXF1YWwgPSBmdW5jdGlvbiAodmFsdWUsIG90aGVyKSB7XG4gICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZSB8fCAhb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpIHx8IGlzU3RyaW5nKG90aGVyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgfHwgaXNBcnJheUxpa2Uob3RoZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggIT09IG90aGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciByc3QgPSB0cnVlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByc3QgPSBpc0VxdWFsKHZhbHVlW2ldLCBvdGhlcltpXSk7XG4gICAgICAgICAgICBpZiAoIXJzdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByc3Q7XG4gICAgfVxuICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpIHx8IGlzT2JqZWN0TGlrZShvdGhlcikpIHtcbiAgICAgICAgdmFyIHZhbHVlS2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICAgICAgdmFyIG90aGVyS2V5cyA9IE9iamVjdC5rZXlzKG90aGVyKTtcbiAgICAgICAgaWYgKHZhbHVlS2V5cy5sZW5ndGggIT09IG90aGVyS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnN0ID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJzdCA9IGlzRXF1YWwodmFsdWVbdmFsdWVLZXlzW2ldXSwgb3RoZXJbdmFsdWVLZXlzW2ldXSk7XG4gICAgICAgICAgICBpZiAoIXJzdCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByc3Q7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgZGVmYXVsdCBpc0VxdWFsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtZXF1YWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-equal.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-error.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-error.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n/**\n * 是否是参数类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\n\nvar isError = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Error');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isError);\n//# sourceMappingURL=is-error.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWVycm9yLmpzPzBmNjQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDK0I7QUFDL0I7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCO0FBQ2Usc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaXMtZXJyb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOaYr+WQpuaYr+WPguaVsOexu+Wei1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSDmtYvor5XnmoTlgLxcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmltcG9ydCBpc1R5cGUgZnJvbSAnLi9pcy10eXBlJztcbnZhciBpc0Vycm9yID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ0Vycm9yJyk7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNFcnJvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWVycm9yLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-error.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-even.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-even.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\nvar isEven = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 2 === 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isEven);\n//# sourceMappingURL=is-even.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWV2ZW4uanM/ZGIyMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWV2ZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xudmFyIGlzRXZlbiA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gJSAyID09PSAwO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzRXZlbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLWV2ZW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-even.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-finite.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-finite.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n/**\n * 判断是否为有限数\n * @return {Boolean}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && isFinite(value);\n});\n//# sourceMappingURL=is-finite.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWZpbml0ZS5qcz8xNjY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ21DO0FBQ3BCO0FBQ2YsV0FBVywwREFBUTtBQUNuQixDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWZpbml0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5Yik5pat5piv5ZCm5Li65pyJ6ZmQ5pWwXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSAmJiBpc0Zpbml0ZSh2YWx1ZSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1maW5pdGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-finite.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Function');\n});\n//# sourceMappingURL=is-function.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWZ1bmN0aW9uLmpzPzllMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxZQUFZLEVBQUU7QUFDZCxZQUFZLFFBQVE7QUFDcEI7QUFDK0I7QUFDZjtBQUNoQixXQUFXLHdEQUFNO0FBQ2pCLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1mdW5jdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5piv5ZCm5Li65Ye95pWwXG4gKiBAcGFyYW0gIHsqfSBmbiDlr7nosaFcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICDmmK/lkKblh73mlbBcbiAqL1xuaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc1R5cGUodmFsdWUsICdGdW5jdGlvbicpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1mdW5jdGlvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-integer.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-integer.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\nvar isInteger = Number.isInteger ? Number.isInteger : function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 1 === 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isInteger);\n//# sourceMappingURL=is-integer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWludGVnZXIuanM/YTE4MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLWludGVnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xudmFyIGlzSW50ZWdlciA9IE51bWJlci5pc0ludGVnZXIgPyBOdW1iZXIuaXNJbnRlZ2VyIDogZnVuY3Rpb24gKG51bSkge1xuICAgIHJldHVybiBpc051bWJlcihudW0pICYmIG51bSAlIDEgPT09IDA7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNJbnRlZ2VyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtaW50ZWdlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-integer.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-match.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-match.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/keys.js\");\n\n\nfunction isMatch(obj, attrs) {\n var _keys = Object(_keys__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(attrs);\n var length = _keys.length;\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj))\n return !length;\n for (var i = 0; i < length; i += 1) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (isMatch);\n//# sourceMappingURL=is-match.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW1hdGNoLmpzPzlkYTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTZCO0FBQ0g7QUFDMUI7QUFDQSxnQkFBZ0IscURBQUk7QUFDcEI7QUFDQSxRQUFRLHVEQUFLO0FBQ2I7QUFDQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW1hdGNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXMtbmlsJztcbmltcG9ydCBrZXlzIGZyb20gJy4va2V5cyc7XG5mdW5jdGlvbiBpc01hdGNoKG9iaiwgYXR0cnMpIHtcbiAgICB2YXIgX2tleXMgPSBrZXlzKGF0dHJzKTtcbiAgICB2YXIgbGVuZ3RoID0gX2tleXMubGVuZ3RoO1xuICAgIGlmIChpc05pbChvYmopKVxuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBrZXkgPSBfa2V5c1tpXTtcbiAgICAgICAgaWYgKGF0dHJzW2tleV0gIT09IG9ialtrZXldIHx8ICEoa2V5IGluIG9iaikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGlzTWF0Y2g7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1tYXRjaC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-match.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-negative.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-negative.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\nvar isNegative = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num < 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNegative);\n//# sourceMappingURL=is-negative.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW5lZ2F0aXZlLmpzP2M3NjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFtQztBQUNuQztBQUNBLFdBQVcsMERBQVE7QUFDbkI7QUFDZSx5RUFBVSxFQUFDO0FBQzFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1uZWdhdGl2ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc051bWJlciBmcm9tICcuL2lzLW51bWJlcic7XG52YXIgaXNOZWdhdGl2ZSA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gPCAwO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzTmVnYXRpdmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1uZWdhdGl2ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-negative.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n// isFinite,\nvar isNil = function (value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNil);\n//# sourceMappingURL=is-nil.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW5pbC5qcz9iZDNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW5pbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGlzRmluaXRlLFxudmFyIGlzTmlsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLyoqXG4gICAgICogaXNOaWwobnVsbCkgPT4gdHJ1ZVxuICAgICAqIGlzTmlsKCkgPT4gdHJ1ZVxuICAgICAqL1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzTmlsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbmlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-null.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-null.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isNull = function (value) {\n return value === null;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNull);\n//# sourceMappingURL=is-null.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW51bGwuanM/Y2JkMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW51bGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNOdWxsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzTnVsbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bGwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-null.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number-equal.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number-equal.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isNumberEqual; });\nvar PRECISION = 0.00001; // numbers less than this is considered as 0\nfunction isNumberEqual(a, b, precision) {\n if (precision === void 0) { precision = PRECISION; }\n return Math.abs((a - b)) < precision;\n}\n;\n//# sourceMappingURL=is-number-equal.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW51bWJlci1lcXVhbC5qcz8yYWUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQSx3QkFBd0I7QUFDVDtBQUNmLCtCQUErQix1QkFBdUI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW51bWJlci1lcXVhbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBQUkVDSVNJT04gPSAwLjAwMDAxOyAvLyBudW1iZXJzIGxlc3MgdGhhbiB0aGlzIGlzIGNvbnNpZGVyZWQgYXMgMFxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNOdW1iZXJFcXVhbChhLCBiLCBwcmVjaXNpb24pIHtcbiAgICBpZiAocHJlY2lzaW9uID09PSB2b2lkIDApIHsgcHJlY2lzaW9uID0gUFJFQ0lTSU9OOyB9XG4gICAgcmV0dXJuIE1hdGguYWJzKChhIC0gYikpIDwgcHJlY2lzaW9uO1xufVxuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbnVtYmVyLWVxdWFsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number-equal.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\n\nvar isNumber = function (value) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Number');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isNumber);\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW51bWJlci5qcz9iYjUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQytCO0FBQy9CO0FBQ0EsV0FBVyx3REFBTTtBQUNqQjtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW51bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5Yik5pat5piv5ZCm5pWw5a2XXG4gKiBAcmV0dXJuIHtCb29sZWFufSDmmK/lkKbmlbDlrZdcbiAqL1xuaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzLXR5cGUnO1xudmFyIGlzTnVtYmVyID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ051bWJlcicpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbnVtYmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object-like.js": /*!**************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object-like.js ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isObjectLike = function (value) {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isObjectLike);\n//# sourceMappingURL=is-object-like.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW9iamVjdC1saWtlLmpzP2NkMDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW9iamVjdC1saWtlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0TGlrZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8qKlxuICAgICAqIGlzT2JqZWN0TGlrZSh7fSkgPT4gdHJ1ZVxuICAgICAqIGlzT2JqZWN0TGlrZShbMSwgMiwgM10pID0+IHRydWVcbiAgICAgKiBpc09iamVjdExpa2UoRnVuY3Rpb24pID0+IGZhbHNlXG4gICAgICogaXNPYmplY3RMaWtlKG51bGwpID0+IGZhbHNlXG4gICAgICovXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNPYmplY3RMaWtlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtb2JqZWN0LWxpa2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object-like.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n});\n//# sourceMappingURL=is-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW9iamVjdC5qcz9jYjhlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWdCO0FBQ2hCO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1vYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLyoqXG4gICAgICogaXNPYmplY3Qoe30pID0+IHRydWVcbiAgICAgKiBpc09iamVjdChbMSwgMiwgM10pID0+IHRydWVcbiAgICAgKiBpc09iamVjdChGdW5jdGlvbikgPT4gdHJ1ZVxuICAgICAqIGlzT2JqZWN0KG51bGwpID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbic7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW9iamVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-odd.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-odd.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\nvar isOdd = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num % 2 !== 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isOdd);\n//# sourceMappingURL=is-odd.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLW9kZC5qcz8yMTZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7QUFDbkM7QUFDQSxXQUFXLDBEQUFRO0FBQ25CO0FBQ2Usb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaXMtb2RkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzTnVtYmVyIGZyb20gJy4vaXMtbnVtYmVyJztcbnZhciBpc09kZCA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gJSAyICE9PSAwO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzT2RkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtb2RkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-odd.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js": /*!***************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_object_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object-like.js\");\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n\n\nvar isPlainObject = function (value) {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!Object(_is_object_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) || !Object(_is_type__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n var proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPlainObject);\n//# sourceMappingURL=is-plain-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXBsYWluLW9iamVjdC5qcz8zZjE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNiO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGFBQWE7QUFDbEM7QUFDQTtBQUNBLFNBQVMsK0RBQVksWUFBWSx3REFBTTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsNEVBQWEsRUFBQztBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaXMtcGxhaW4tb2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzLW9iamVjdC1saWtlJztcbmltcG9ydCBpc1R5cGUgZnJvbSAnLi9pcy10eXBlJztcbnZhciBpc1BsYWluT2JqZWN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLyoqXG4gICAgICogaXNPYmplY3RMaWtlKG5ldyBGb28pID0+IGZhbHNlXG4gICAgICogaXNPYmplY3RMaWtlKFsxLCAyLCAzXSkgPT4gZmFsc2VcbiAgICAgKiBpc09iamVjdExpa2UoeyB4OiAwLCB5OiAwIH0pID0+IHRydWVcbiAgICAgKiBpc09iamVjdExpa2UoT2JqZWN0LmNyZWF0ZShudWxsKSkgPT4gdHJ1ZVxuICAgICAqL1xuICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCAhaXNUeXBlKHZhbHVlLCAnT2JqZWN0JykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIHByb3RvID0gdmFsdWU7XG4gICAgd2hpbGUgKE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykgIT09IG51bGwpIHtcbiAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gcHJvdG87XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNQbGFpbk9iamVjdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXBsYWluLW9iamVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-positive.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-positive.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\nvar isPositive = function (num) {\n return Object(_is_number__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(num) && num > 0;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPositive);\n//# sourceMappingURL=is-positive.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXBvc2l0aXZlLmpzP2JmMTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFtQztBQUNuQztBQUNBLFdBQVcsMERBQVE7QUFDbkI7QUFDZSx5RUFBVSxFQUFDO0FBQzFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1wb3NpdGl2ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc051bWJlciBmcm9tICcuL2lzLW51bWJlcic7XG52YXIgaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uIChudW0pIHtcbiAgICByZXR1cm4gaXNOdW1iZXIobnVtKSAmJiBudW0gPiAwO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzUG9zaXRpdmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1wb3NpdGl2ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-positive.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-prototype.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-prototype.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar objectProto = Object.prototype;\nvar isPrototype = function (value) {\n var Ctor = value && value.constructor;\n var proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isPrototype);\n//# sourceMappingURL=is-prototype.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXByb3RvdHlwZS5qcz82MzY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsMEVBQVcsRUFBQztBQUMzQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaXMtcHJvdG90eXBlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbnZhciBpc1Byb3RvdHlwZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3I7XG4gICAgdmFyIHByb3RvID0gKHR5cGVvZiBDdG9yID09PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcbiAgICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufTtcbmV4cG9ydCBkZWZhdWx0IGlzUHJvdG90eXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtcHJvdG90eXBlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-prototype.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-reg-exp.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-reg-exp.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n\nvar isRegExp = function (str) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str, 'RegExp');\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isRegExp);\n//# sourceMappingURL=is-reg-exp.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXJlZy1leHAuanM/NDFiMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCO0FBQy9CO0FBQ0EsV0FBVyx3REFBTTtBQUNqQjtBQUNlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXJlZy1leHAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG52YXIgaXNSZWdFeHAgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIGlzVHlwZShzdHIsICdSZWdFeHAnKTtcbn07XG5leHBvcnQgZGVmYXVsdCBpc1JlZ0V4cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXJlZy1leHAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-reg-exp.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (str) {\n return Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str, 'String');\n});\n//# sourceMappingURL=is-string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXN0cmluZy5qcz80MWVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBK0I7QUFDZjtBQUNoQixXQUFXLHdEQUFNO0FBQ2pCLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9pcy1zdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBpc1R5cGUoc3RyLCAnU3RyaW5nJyk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXN0cmluZy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\nvar isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; };\n/* harmony default export */ __webpack_exports__[\"default\"] = (isType);\n//# sourceMappingURL=is-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXR5cGUuanM/NjU4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLGlCQUFpQjtBQUNqQixxQ0FBcUMseURBQXlEO0FBQy9FLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXR5cGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcbnZhciBpc1R5cGUgPSBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHsgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCAnICsgdHlwZSArICddJzsgfTtcbmV4cG9ydCBkZWZhdWx0IGlzVHlwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-type.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-undefined.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-undefined.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar isUndefined = function (value) {\n return value === undefined;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (isUndefined);\n//# sourceMappingURL=is-undefined.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2lzLXVuZGVmaW5lZC5qcz8xNjNiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ2UsMEVBQVcsRUFBQztBQUMzQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vaXMtdW5kZWZpbmVkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzVW5kZWZpbmVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgaXNVbmRlZmluZWQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy11bmRlZmluZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-undefined.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/keys.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/keys.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\nvar keys = Object.keys ? function (obj) { return Object.keys(obj); } : function (obj) {\n var result = [];\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj, function (value, key) {\n if (!(Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (keys);\n//# sourceMappingURL=keys.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2tleXMuanM/NDJkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDYTtBQUN2Qyx5Q0FBeUMseUJBQXlCLEVBQUU7QUFDcEU7QUFDQSxJQUFJLHFEQUFJO0FBQ1IsY0FBYyw0REFBVTtBQUN4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDZSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9rZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVhY2ggZnJvbSAnLi9lYWNoJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xudmFyIGtleXMgPSBPYmplY3Qua2V5cyA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIE9iamVjdC5rZXlzKG9iaik7IH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGVhY2gob2JqLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICBpZiAoIShpc0Z1bmN0aW9uKG9iaikgJiYga2V5ID09PSAncHJvdG90eXBlJykpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGtleXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1rZXlzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/keys.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/last.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/last.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return last; });\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nfunction last(o) {\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o)) {\n var arr = o;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n//# sourceMappingURL=last.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2xhc3QuanM/YTYzOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMEM7QUFDM0I7QUFDZixRQUFRLDhEQUFXO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbGFzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFzdChvKSB7XG4gICAgaWYgKGlzQXJyYXlMaWtlKG8pKSB7XG4gICAgICAgIHZhciBhcnIgPSBvO1xuICAgICAgICByZXR1cm4gYXJyW2Fyci5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxhc3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/last.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-case.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-case.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\");\n\nvar lowerCase = function (str) {\n return Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str).toLowerCase();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lowerCase);\n//# sourceMappingURL=lower-case.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2xvd2VyLWNhc2UuanM/MDIyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2xvd2VyLWNhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90by1zdHJpbmcnO1xudmFyIGxvd2VyQ2FzZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcoc3RyKS50b0xvd2VyQ2FzZSgpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGxvd2VyQ2FzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvd2VyLWNhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-case.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-first.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-first.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\");\n\nvar lowerFirst = function (value) {\n var str = Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lowerFirst);\n//# sourceMappingURL=lower-first.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2xvd2VyLWZpcnN0LmpzPzRjZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFtQztBQUNuQztBQUNBLGNBQWMsMERBQVE7QUFDdEI7QUFDQTtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL2xvd2VyLWZpcnN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbnZhciBsb3dlckZpcnN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nKHZhbHVlKTtcbiAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5leHBvcnQgZGVmYXVsdCBsb3dlckZpcnN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bG93ZXItZmlyc3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/lower-first.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/map-values.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/map-values.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js\");\n\n\nvar identity = function (v) { return v; };\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (object, func) {\n if (func === void 0) { func = identity; }\n var r = {};\n if (Object(_is_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object) && !Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object)) {\n Object.keys(object).forEach(function (key) {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n});\n//# sourceMappingURL=map-values.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21hcC12YWx1ZXMuanM/ZTNiZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBNkI7QUFDTTtBQUNuQyw2QkFBNkIsVUFBVTtBQUN2QjtBQUNoQiwwQkFBMEIsaUJBQWlCO0FBQzNDO0FBQ0EsUUFBUSwwREFBUSxhQUFhLHVEQUFLO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21hcC12YWx1ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOaWwgZnJvbSAnLi9pcy1uaWwnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXMtb2JqZWN0JztcbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiB2OyB9O1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvYmplY3QsIGZ1bmMpIHtcbiAgICBpZiAoZnVuYyA9PT0gdm9pZCAwKSB7IGZ1bmMgPSBpZGVudGl0eTsgfVxuICAgIHZhciByID0ge307XG4gICAgaWYgKGlzT2JqZWN0KG9iamVjdCkgJiYgIWlzTmlsKG9iamVjdCkpIHtcbiAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJba2V5XSA9IGZ1bmMob2JqZWN0W2tleV0sIGtleSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFwLXZhbHVlcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/map-values.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/map.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/map.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nvar map = function (arr, func) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n // @ts-ignore\n return arr;\n }\n var result = [];\n for (var index = 0; index < arr.length; index++) {\n var value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (map);\n//# sourceMappingURL=map.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21hcC5qcz8xNmEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBMEM7QUFDMUM7QUFDQSxTQUFTLDhEQUFXO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2Usa0VBQUcsRUFBQztBQUNuQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG52YXIgbWFwID0gZnVuY3Rpb24gKGFyciwgZnVuYykge1xuICAgIGlmICghaXNBcnJheUxpa2UoYXJyKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYXJyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJbaW5kZXhdO1xuICAgICAgICByZXN1bHQucHVzaChmdW5jKHZhbHVlLCBpbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IG1hcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hcC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/map.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/max-by.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/max-by.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr, fn) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n var maxItem;\n var max = -Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fn) ? fn(item) : item[fn];\n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n return maxItem;\n});\n//# sourceMappingURL=max-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21heC1ieS5qcz8wNzcxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNNO0FBQ3ZDO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixZQUFZLEVBQUU7QUFDZDtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0EsK0JBQStCLFlBQVksRUFBRTtBQUM3QyxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNnQjtBQUNoQixTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBLGdCQUFnQiw0REFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbWF4LWJ5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybiB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDEgfSwgeyAnbic6IDIgfV07XG4gKlxuICogbWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAqIC8vID0+IHsgJ24nOiAyIH1cbiAqXG4gKiBtYXhCeShvYmplY3RzLCAnbicpO1xuICogLy8gPT4geyAnbic6IDIgfVxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGFyciwgZm4pIHtcbiAgICBpZiAoIWlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YXIgbWF4SXRlbTtcbiAgICB2YXIgbWF4ID0gLUluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpdGVtID0gYXJyW2ldO1xuICAgICAgICB2YXIgdiA9IGlzRnVuY3Rpb24oZm4pID8gZm4oaXRlbSkgOiBpdGVtW2ZuXTtcbiAgICAgICAgaWYgKHYgPiBtYXgpIHtcbiAgICAgICAgICAgIG1heEl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgbWF4ID0gdjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF4SXRlbTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF4LWJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/max-by.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/max.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/max.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.max(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=max.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21heC5qcz85OWZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQSxXQUFXLE1BQU07QUFDakIsWUFBWSxFQUFFO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnQjtBQUNoQixTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9tYXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5Jztcbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJuIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiBtYXgoWzEsIDJdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBtYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKlxuICogY29uc3QgZGF0YSA9IG5ldyBBcnJheSgxMjUwMDEwKS5maWxsKDEpLm1hcCgoZCxpZHgpID0+IGlkeCk7XG4gKlxuICogbWF4KGRhdGEpO1xuICogLy8gPT4gMTI1MDAxMFxuICogLy8gTWF0aC5tYXgoLi4uZGF0YSkgd2lsbCBlbmNvdW50ZXIgXCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiIGVycm9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cnIpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KHByZXYsIGN1cnIpO1xuICAgIH0sIGFyclswXSk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1heC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/max.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/measure-text-width.js": /*!******************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/measure-text-width.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./values */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/values.js\");\n/* harmony import */ var _memoize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./memoize */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/memoize.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n\n\n\n\nvar ctx;\n/**\n * 计算文本的宽度\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_memoize__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function (text, font) {\n if (font === void 0) { font = {}; }\n var fontSize = font.fontSize, fontFamily = font.fontFamily, fontWeight = font.fontWeight, fontStyle = font.fontStyle, fontVariant = font.fontVariant;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n ctx.font = [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ');\n return ctx.measureText(Object(_is_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(text) ? text : '').width;\n}, function (text, font) {\n if (font === void 0) { font = {}; }\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArrays\"])([text], Object(_values__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(font)).join('');\n}));\n//# sourceMappingURL=measure-text-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21lYXN1cmUtdGV4dC13aWR0aC5qcz83Y2VjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUM7QUFDVDtBQUNFO0FBQ0c7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDZSx1SEFBTztBQUN0QiwwQkFBMEIsV0FBVztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBEQUFRO0FBQ25DLENBQUM7QUFDRCwwQkFBMEIsV0FBVztBQUNyQyxXQUFXLDREQUFjLFNBQVMsdURBQU07QUFDeEMsQ0FBQyxDQUFDLEVBQUM7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbWVhc3VyZS10ZXh0LXdpZHRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19zcHJlYWRBcnJheXMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB2YWx1ZXMgZnJvbSAnLi92YWx1ZXMnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnLi9tZW1vaXplJztcbmltcG9ydCBpc1N0cmluZyBmcm9tICcuL2lzLXN0cmluZyc7XG52YXIgY3R4O1xuLyoqXG4gKiDorqHnrpfmlofmnKznmoTlrr3luqZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtb2l6ZShmdW5jdGlvbiAodGV4dCwgZm9udCkge1xuICAgIGlmIChmb250ID09PSB2b2lkIDApIHsgZm9udCA9IHt9OyB9XG4gICAgdmFyIGZvbnRTaXplID0gZm9udC5mb250U2l6ZSwgZm9udEZhbWlseSA9IGZvbnQuZm9udEZhbWlseSwgZm9udFdlaWdodCA9IGZvbnQuZm9udFdlaWdodCwgZm9udFN0eWxlID0gZm9udC5mb250U3R5bGUsIGZvbnRWYXJpYW50ID0gZm9udC5mb250VmFyaWFudDtcbiAgICBpZiAoIWN0eCkge1xuICAgICAgICBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpO1xuICAgIH1cbiAgICBjdHguZm9udCA9IFtmb250U3R5bGUsIGZvbnRWYXJpYW50LCBmb250V2VpZ2h0LCBmb250U2l6ZSArIFwicHhcIiwgZm9udEZhbWlseV0uam9pbignICcpO1xuICAgIHJldHVybiBjdHgubWVhc3VyZVRleHQoaXNTdHJpbmcodGV4dCkgPyB0ZXh0IDogJycpLndpZHRoO1xufSwgZnVuY3Rpb24gKHRleHQsIGZvbnQpIHtcbiAgICBpZiAoZm9udCA9PT0gdm9pZCAwKSB7IGZvbnQgPSB7fTsgfVxuICAgIHJldHVybiBfX3NwcmVhZEFycmF5cyhbdGV4dF0sIHZhbHVlcyhmb250KSkuam9pbignJyk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lYXN1cmUtdGV4dC13aWR0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/measure-text-width.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/memoize.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/memoize.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (f, resolver) {\n if (!Object(_is_function__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(f)) {\n throw new TypeError('Expected a function');\n }\n var memoized = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n var key = resolver ? resolver.apply(this, args) : args[0];\n var cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result;\n };\n memoized.cache = new Map();\n return memoized;\n});\n//# sourceMappingURL=memoize.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21lbW9pemUuanM/ZWMwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnQjtBQUNoQixTQUFTLDREQUFVO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbWVtb2l6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xuLyoqXG4gKiBfLm1lbW9pemUoY2FsQ29sb3IpO1xuICogXy5tZW1vaXplKGNhbENvbG9yLCAoLi4uYXJncykgPT4gYXJnc1swXSk7XG4gKiBAcGFyYW0gZlxuICogQHBhcmFtIHJlc29sdmVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoZiwgcmVzb2x2ZXIpIHtcbiAgICBpZiAoIWlzRnVuY3Rpb24oZikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgLy8g5L2/55So5pa55rOV5p6E6YCgIGtlee+8jOWmguaenOS4jeWtmOWcqCByZXNvbHZlcu+8jOWImeebtOaOpeWPluesrOS4gOS4quWPguaVsOS9nOS4uiBrZXlcbiAgICAgICAgdmFyIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdO1xuICAgICAgICB2YXIgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGYuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIC8vIOe8k+WtmOi1t+adpVxuICAgICAgICBjYWNoZS5zZXQoa2V5LCByZXN1bHQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgcmV0dXJuIG1lbW9pemVkO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZW1vaXplLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/memoize.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/min-by.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/min-by.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr, fn) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n var minItem;\n var min = Infinity;\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n var v = Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(fn) ? fn(item) : item[fn];\n if (v < min) {\n minItem = item;\n min = v;\n }\n }\n return minItem;\n});\n//# sourceMappingURL=min-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21pbi1ieS5qcz8wZDY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNNO0FBQ3ZDO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixZQUFZLEVBQUU7QUFDZDtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0EsK0JBQStCLFlBQVksRUFBRTtBQUM3QyxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNnQjtBQUNoQixTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBLGdCQUFnQiw0REFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbWluLWJ5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzLWZ1bmN0aW9uJztcbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybiB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDEgfSwgeyAnbic6IDIgfV07XG4gKlxuICogbWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAqIC8vID0+IHsgJ24nOiAxIH1cbiAqXG4gKiBtaW5CeShvYmplY3RzLCAnbicpO1xuICogLy8gPT4geyAnbic6IDEgfVxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGFyciwgZm4pIHtcbiAgICBpZiAoIWlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YXIgbWluSXRlbTtcbiAgICB2YXIgbWluID0gSW5maW5pdHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBhcnJbaV07XG4gICAgICAgIHZhciB2ID0gaXNGdW5jdGlvbihmbikgPyBmbihpdGVtKSA6IGl0ZW1bZm5dO1xuICAgICAgICBpZiAodiA8IG1pbikge1xuICAgICAgICAgICAgbWluSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICBtaW4gPSB2O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaW5JdGVtO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1taW4tYnkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/min-by.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/min.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/min.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (arr) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.min(prev, curr);\n }, arr[0]);\n});\n//# sourceMappingURL=min.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21pbi5qcz8xZjY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQSxXQUFXLE1BQU07QUFDakIsWUFBWSxFQUFFO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnQjtBQUNoQixTQUFTLHlEQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9taW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5Jztcbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYXJyIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJuIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiBtaW4oWzEsIDJdKTtcbiAqIC8vID0+IDFcbiAqXG4gKiBtaW4oW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKlxuICogY29uc3QgZGF0YSA9IG5ldyBBcnJheSgxMjUwMDEwKS5maWxsKDEpLm1hcCgoZCxpZHgpID0+IGlkeCk7XG4gKlxuICogbWluKGRhdGEpO1xuICogLy8gPT4gMTI1MDAxMFxuICogLy8gTWF0aC5taW4oLi4uZGF0YSkgd2lsbCBlbmNvdW50ZXIgXCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiIGVycm9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cnIpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHByZXYsIGN1cnIpO1xuICAgIH0sIGFyclswXSk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1pbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/min.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/mix.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/mix.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mix; });\n// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\nfunction mix(dist, src1, src2, src3) {\n if (src1)\n _mix(dist, src1);\n if (src2)\n _mix(dist, src2);\n if (src3)\n _mix(dist, src3);\n return dist;\n}\n//# sourceMappingURL=mix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21peC5qcz83ODU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21peC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZJWE1FOiBNdXRhYmxlIHBhcmFtIHNob3VsZCBiZSBmb3JiaWRkZW4gaW4gc3RhdGljIGxhbmcuXG5mdW5jdGlvbiBfbWl4KGRpc3QsIG9iaikge1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSAhPT0gJ2NvbnN0cnVjdG9yJyAmJiBvYmpba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkaXN0W2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1peChkaXN0LCBzcmMxLCBzcmMyLCBzcmMzKSB7XG4gICAgaWYgKHNyYzEpXG4gICAgICAgIF9taXgoZGlzdCwgc3JjMSk7XG4gICAgaWYgKHNyYzIpXG4gICAgICAgIF9taXgoZGlzdCwgc3JjMik7XG4gICAgaWYgKHNyYzMpXG4gICAgICAgIF9taXgoZGlzdCwgc3JjMyk7XG4gICAgcmV0dXJuIGRpc3Q7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1taXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/mix.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/mod.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/mod.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar mod = function (n, m) {\n return ((n % m) + m) % m;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n//# sourceMappingURL=mod.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL21vZC5qcz9hMDhjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ2Usa0VBQUcsRUFBQztBQUNuQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vbW9kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG1vZCA9IGZ1bmN0aW9uIChuLCBtKSB7XG4gICAgcmV0dXJuICgobiAlIG0pICsgbSkgJSBtO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1vZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/mod.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/noop.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/noop.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () { });\n//# sourceMappingURL=noop.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL25vb3AuanM/ZGYwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFnQiw0RUFBYSxFQUFFLEVBQUU7QUFDakMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL25vb3AuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkgeyB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vb3AuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/noop.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/number2color.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/number2color.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar numColorCache = {};\nfunction numberToColor(num) {\n // 增加缓存\n var color = numColorCache[num];\n if (!color) {\n var str = num.toString(16);\n for (var i = str.length; i < 6; i++) {\n str = '0' + str;\n }\n color = '#' + str;\n numColorCache[num] = color;\n }\n return color;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (numberToColor);\n//# sourceMappingURL=number2color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL251bWJlcjJjb2xvci5qcz9kYTliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLE9BQU87QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSw0RUFBYSxFQUFDO0FBQzdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9udW1iZXIyY29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbnVtQ29sb3JDYWNoZSA9IHt9O1xuZnVuY3Rpb24gbnVtYmVyVG9Db2xvcihudW0pIHtcbiAgICAvLyDlop7liqDnvJPlrZhcbiAgICB2YXIgY29sb3IgPSBudW1Db2xvckNhY2hlW251bV07XG4gICAgaWYgKCFjb2xvcikge1xuICAgICAgICB2YXIgc3RyID0gbnVtLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHN0ci5sZW5ndGg7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgICAgIHN0ciA9ICcwJyArIHN0cjtcbiAgICAgICAgfVxuICAgICAgICBjb2xvciA9ICcjJyArIHN0cjtcbiAgICAgICAgbnVtQ29sb3JDYWNoZVtudW1dID0gY29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbn1cbmV4cG9ydCBkZWZhdWx0IG51bWJlclRvQ29sb3I7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1udW1iZXIyY29sb3IuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/number2color.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/omit.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/omit.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/reduce.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, keys) {\n return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj, function (r, curr, key) {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n }, {});\n});\n//# sourceMappingURL=omit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL29taXQuanM/NTExZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQThCO0FBQ2Q7QUFDaEIsV0FBVyx1REFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssSUFBSTtBQUNULENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9vbWl0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZHVjZSBmcm9tICcuL3JlZHVjZSc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKG9iaiwga2V5cykge1xuICAgIHJldHVybiByZWR1Y2Uob2JqLCBmdW5jdGlvbiAociwgY3Vyciwga2V5KSB7XG4gICAgICAgIGlmICgha2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICByW2tleV0gPSBjdXJyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH0sIHt9KTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b21pdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/omit.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/parse-radius.js": /*!************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/parse-radius.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n\nfunction parseRadius(radius) {\n var r1 = 0, r2 = 0, r3 = 0, r4 = 0;\n if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseRadius);\n//# sourceMappingURL=parse-radius.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3BhcnNlLXJhZGl1cy5qcz9mZDg3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7QUFDakM7QUFDQTtBQUNBLFFBQVEseURBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsMEVBQVcsRUFBQztBQUMzQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vcGFyc2UtcmFkaXVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pcy1hcnJheSc7XG5mdW5jdGlvbiBwYXJzZVJhZGl1cyhyYWRpdXMpIHtcbiAgICB2YXIgcjEgPSAwLCByMiA9IDAsIHIzID0gMCwgcjQgPSAwO1xuICAgIGlmIChpc0FycmF5KHJhZGl1cykpIHtcbiAgICAgICAgaWYgKHJhZGl1cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHIxID0gcjMgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJhZGl1cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHIxID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgcjIgPSByNCA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgIHIzID0gcmFkaXVzWzJdO1xuICAgICAgICAgICAgcjQgPSByYWRpdXNbM107XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHIxID0gcjIgPSByMyA9IHI0ID0gcmFkaXVzO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICByMTogcjEsXG4gICAgICAgIHIyOiByMixcbiAgICAgICAgcjM6IHIzLFxuICAgICAgICByNDogcjRcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgcGFyc2VSYWRpdXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZS1yYWRpdXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/parse-radius.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/pick.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/pick.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js\");\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (object, keys) {\n if (object === null || !Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object)) {\n return {};\n }\n var result = {};\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(keys, function (key) {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n});\n//# sourceMappingURL=pick.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3BpY2suanM/MjRiYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDb0I7QUFDOUM7QUFDZ0I7QUFDaEIsNEJBQTRCLGdFQUFhO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLElBQUkscURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vcGljay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlYWNoIGZyb20gJy4vZWFjaCc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICcuL2lzLXBsYWluLW9iamVjdCc7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvYmplY3QsIGtleXMpIHtcbiAgICBpZiAob2JqZWN0ID09PSBudWxsIHx8ICFpc1BsYWluT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZWFjaChrZXlzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYmplY3Rba2V5XTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBpY2suanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/pick.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull-at.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull-at.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\nvar splice = Array.prototype.splice;\nvar pullAt = function pullAt(arr, indexes) {\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return [];\n }\n var length = arr ? indexes.length : 0;\n var last = length - 1;\n while (length--) {\n var previous = void 0;\n var index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (pullAt);\n//# sourceMappingURL=pull-at.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3B1bGwtYXQuanM/ZDU0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTBDO0FBQzFDO0FBQ0E7QUFDQSxTQUFTLDhEQUFXO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9wdWxsLWF0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG52YXIgc3BsaWNlID0gQXJyYXkucHJvdG90eXBlLnNwbGljZTtcbnZhciBwdWxsQXQgPSBmdW5jdGlvbiBwdWxsQXQoYXJyLCBpbmRleGVzKSB7XG4gICAgaWYgKCFpc0FycmF5TGlrZShhcnIpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGFyciA/IGluZGV4ZXMubGVuZ3RoIDogMDtcbiAgICB2YXIgbGFzdCA9IGxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBwcmV2aW91cyA9IHZvaWQgMDtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09PSBsYXN0IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgICAgcHJldmlvdXMgPSBpbmRleDtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKGFyciwgaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuZXhwb3J0IGRlZmF1bHQgcHVsbEF0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHVsbC1hdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull-at.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar arrPrototype = Array.prototype;\nvar splice = arrPrototype.splice;\nvar indexOf = arrPrototype.indexOf;\nvar pull = function (arr) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (pull);\n//# sourceMappingURL=pull.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3B1bGwuanM/OGEzNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9wdWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFyclByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBzcGxpY2UgPSBhcnJQcm90b3R5cGUuc3BsaWNlO1xudmFyIGluZGV4T2YgPSBhcnJQcm90b3R5cGUuaW5kZXhPZjtcbnZhciBwdWxsID0gZnVuY3Rpb24gKGFycikge1xuICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YWx1ZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKGZyb21JbmRleCA9IGluZGV4T2YuY2FsbChhcnIsIHZhbHVlKSkgPiAtMSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59O1xuZXhwb3J0IGRlZmF1bHQgcHVsbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXB1bGwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/reduce.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/reduce.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\");\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_plain_object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-plain-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-plain-object.js\");\n\n\n\nvar reduce = function (arr, fn, init) {\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr) && !Object(_is_plain_object__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arr)) {\n return arr;\n }\n var result = init;\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr, function (data, i) {\n result = fn(result, data, i);\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (reduce);\n//# sourceMappingURL=reduce.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3JlZHVjZS5qcz81YmU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQ087QUFDYTtBQUM5QztBQUNBLFNBQVMseURBQU8sVUFBVSxnRUFBYTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxJQUFJLHFEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3JlZHVjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlYWNoIGZyb20gJy4vZWFjaCc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJy4vaXMtcGxhaW4tb2JqZWN0JztcbnZhciByZWR1Y2UgPSBmdW5jdGlvbiAoYXJyLCBmbiwgaW5pdCkge1xuICAgIGlmICghaXNBcnJheShhcnIpICYmICFpc1BsYWluT2JqZWN0KGFycikpIHtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGluaXQ7XG4gICAgZWFjaChhcnIsIGZ1bmN0aW9uIChkYXRhLCBpKSB7XG4gICAgICAgIHJlc3VsdCA9IGZuKHJlc3VsdCwgZGF0YSwgaSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCByZWR1Y2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWR1Y2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/reduce.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/remove.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/remove.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n/* harmony import */ var _pull_at__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pull-at */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/pull-at.js\");\n\n\nvar remove = function (arr, predicate) {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n var result = [];\n if (!Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr)) {\n return result;\n }\n var i = -1;\n var indexes = [];\n var length = arr.length;\n while (++i < length) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n Object(_pull_at__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr, indexes);\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (remove);\n//# sourceMappingURL=remove.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3JlbW92ZS5qcz9mZmZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwQztBQUNYO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDhEQUFXO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksd0RBQU07QUFDVjtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vcmVtb3ZlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG5pbXBvcnQgcHVsbEF0IGZyb20gJy4vcHVsbC1hdCc7XG52YXIgcmVtb3ZlID0gZnVuY3Rpb24gKGFyciwgcHJlZGljYXRlKSB7XG4gICAgLyoqXG4gICAgICogY29uc3QgYXJyID0gWzEsIDIsIDMsIDRdXG4gICAgICogY29uc3QgZXZlbnMgPSByZW1vdmUoYXJyLCBuID0+IG4gJSAyID09IDApXG4gICAgICogY29uc29sZS5sb2coYXJyKSAvLyA9PiBbMSwgM11cbiAgICAgKiBjb25zb2xlLmxvZyhldmVucykgLy8gPT4gWzIsIDRdXG4gICAgICovXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGlmICghaXNBcnJheUxpa2UoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgaSA9IC0xO1xuICAgIHZhciBpbmRleGVzID0gW107XG4gICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJbaV07XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGksIGFycikpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGluZGV4ZXMucHVzaChpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWxsQXQoYXJyLCBpbmRleGVzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IHJlbW92ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlbW92ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/remove.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/request-animation-frame.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/request-animation-frame.js ***! \***********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return requestAnimationFrame; });\nfunction requestAnimationFrame(fn) {\n var method = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame ||\n function (f) {\n return setTimeout(f, 16);\n };\n return method(fn);\n}\n;\n//# sourceMappingURL=request-animation-frame.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLmpzPzNjYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKSB7XG4gICAgdmFyIG1ldGhvZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgd2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGYsIDE2KTtcbiAgICAgICAgfTtcbiAgICByZXR1cm4gbWV0aG9kKGZuKTtcbn1cbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/request-animation-frame.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/set.js": /*!***************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/set.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-object.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-number.js\");\n\n\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (obj, path, value) {\n var o = obj;\n var keyArr = Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path) ? path.split('.') : path;\n keyArr.forEach(function (key, idx) {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!Object(_is_object__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o[key])) {\n o[key] = Object(_is_number__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key];\n }\n else {\n o[key] = value;\n }\n });\n return obj;\n});\n//# sourceMappingURL=set.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3NldC5qcz9kMzA2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ0E7QUFDQTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ0I7QUFDaEI7QUFDQSxpQkFBaUIsMERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFRO0FBQ3pCLHlCQUF5QiwwREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vc2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXMtb2JqZWN0JztcbmltcG9ydCBpc1N0cmluZyBmcm9tICcuL2lzLXN0cmluZyc7XG5pbXBvcnQgaXNOdW1iZXIgZnJvbSAnLi9pcy1udW1iZXInO1xuLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L2Rsdi9ibG9iL21hc3Rlci9pbmRleC5qc1xuICogQHBhcmFtIG9ialxuICogQHBhcmFtIHBhdGhcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKG9iaiwgcGF0aCwgdmFsdWUpIHtcbiAgICB2YXIgbyA9IG9iajtcbiAgICB2YXIga2V5QXJyID0gaXNTdHJpbmcocGF0aCkgPyBwYXRoLnNwbGl0KCcuJykgOiBwYXRoO1xuICAgIGtleUFyci5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGlkeCkge1xuICAgICAgICAvLyDkuI3mmK/mnIDlkI7kuIDkuKpcbiAgICAgICAgaWYgKGlkeCA8IGtleUFyci5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0KG9ba2V5XSkpIHtcbiAgICAgICAgICAgICAgICBvW2tleV0gPSBpc051bWJlcihrZXlBcnJbaWR4ICsgMV0pID8gW10gOiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG8gPSBvW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvYmo7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNldC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/set.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/size.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/size.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return size; });\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\n\nfunction size(o) {\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(o)) {\n return 0;\n }\n if (Object(_is_array_like__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(o)) {\n return o.length;\n }\n return Object.keys(o).length;\n}\n//# sourceMappingURL=size.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3NpemUuanM/OTRiNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QjtBQUNhO0FBQzNCO0FBQ2YsUUFBUSx1REFBSztBQUNiO0FBQ0E7QUFDQSxRQUFRLDhEQUFXO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3NpemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOaWwgZnJvbSAnLi9pcy1uaWwnO1xuaW1wb3J0IGlzQXJyYXlsaWtlIGZyb20gJy4vaXMtYXJyYXktbGlrZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzaXplKG8pIHtcbiAgICBpZiAoaXNOaWwobykpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChpc0FycmF5bGlrZShvKSkge1xuICAgICAgICByZXR1cm4gby5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvKS5sZW5ndGg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zaXplLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/size.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/some.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/some.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nvar some = function (arr, func) {\n for (var i = 0; i < arr.length; i++) {\n if (func(arr[i], i))\n return true;\n }\n return false;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (some);\n//# sourceMappingURL=some.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3NvbWUuanM/ODNjOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3NvbWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWPquimgeacieS4gOS4qua7oei2s+adoeS7tuWwsei/lOWbniB0cnVlXG4gKiBAcGFyYW0gYXJyXG4gKiBAcGFyYW0gZnVuY1xuICovXG52YXIgc29tZSA9IGZ1bmN0aW9uIChhcnIsIGZ1bmMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZnVuYyhhcnJbaV0sIGkpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgZGVmYXVsdCBzb21lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c29tZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/some.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/sort-by.js": /*!*******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/sort-by.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\n\nfunction sortBy(arr, key) {\n var comparer;\n if (Object(_is_function__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(key)) {\n comparer = function (a, b) { return key(a) - key(b); };\n }\n else {\n var keys_1 = [];\n if (Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(key)) {\n keys_1.push(key);\n }\n else if (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key)) {\n keys_1 = key;\n }\n comparer = function (a, b) {\n for (var i = 0; i < keys_1.length; i += 1) {\n var prop = keys_1[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n arr.sort(comparer);\n return arr;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (sortBy);\n//# sourceMappingURL=sort-by.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3NvcnQtYnkuanM/OWExZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ0k7QUFDdkM7QUFDQTtBQUNBLFFBQVEsNERBQVU7QUFDbEIsb0NBQW9DLHdCQUF3QjtBQUM1RDtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFRO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUIseURBQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG1CQUFtQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vc29ydC1ieS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJy4vaXMtc3RyaW5nJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xuZnVuY3Rpb24gc29ydEJ5KGFyciwga2V5KSB7XG4gICAgdmFyIGNvbXBhcmVyO1xuICAgIGlmIChpc0Z1bmN0aW9uKGtleSkpIHtcbiAgICAgICAgY29tcGFyZXIgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4ga2V5KGEpIC0ga2V5KGIpOyB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGtleXNfMSA9IFtdO1xuICAgICAgICBpZiAoaXNTdHJpbmcoa2V5KSkge1xuICAgICAgICAgICAga2V5c18xLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0FycmF5KGtleSkpIHtcbiAgICAgICAgICAgIGtleXNfMSA9IGtleTtcbiAgICAgICAgfVxuICAgICAgICBjb21wYXJlciA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNfMS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0ga2V5c18xW2ldO1xuICAgICAgICAgICAgICAgIGlmIChhW3Byb3BdID4gYltwcm9wXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFbcHJvcF0gPCBiW3Byb3BdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXJyLnNvcnQoY29tcGFyZXIpO1xuICAgIHJldHVybiBhcnI7XG59XG5leHBvcnQgZGVmYXVsdCBzb3J0Qnk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zb3J0LWJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/sort-by.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/starts-with.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/starts-with.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-string.js\");\n\n\nfunction startsWith(arr, e) {\n return (Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arr) || Object(_is_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(arr)) ? arr[0] === e : false;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (startsWith);\n//# sourceMappingURL=starts-with.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3N0YXJ0cy13aXRoLmpzPzVjYTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0U7QUFDbkM7QUFDQSxZQUFZLHlEQUFPLFNBQVMsMERBQVE7QUFDcEM7QUFDZSx5RUFBVSxFQUFDO0FBQzFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS9zdGFydHMtd2l0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXMtYXJyYXknO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJy4vaXMtc3RyaW5nJztcbmZ1bmN0aW9uIHN0YXJ0c1dpdGgoYXJyLCBlKSB7XG4gICAgcmV0dXJuIChpc0FycmF5KGFycikgfHwgaXNTdHJpbmcoYXJyKSkgPyBhcnJbMF0gPT09IGUgOiBmYWxzZTtcbn1cbmV4cG9ydCBkZWZhdWx0IHN0YXJ0c1dpdGg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdGFydHMtd2l0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/starts-with.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/substitute.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/substitute.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nfunction substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return (o[name] === undefined) ? '' : o[name];\n });\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (substitute);\n//# sourceMappingURL=substitute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3N1YnN0aXR1dGUuanM/Njk5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLEtBQUssS0FBSztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3N1YnN0aXR1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBzdWJzdGl0dXRlKHN0ciwgbykge1xuICAgIGlmICghc3RyIHx8ICFvKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXD9cXHsoW157fV0rKVxcfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG5hbWUpIHtcbiAgICAgICAgaWYgKG1hdGNoLmNoYXJBdCgwKSA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2guc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChvW25hbWVdID09PSB1bmRlZmluZWQpID8gJycgOiBvW25hbWVdO1xuICAgIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgc3Vic3RpdHV0ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN1YnN0aXR1dGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/substitute.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/throttle.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/throttle.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options)\n options = {};\n var later = function () {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n };\n var throttled = function () {\n var now = Date.now();\n if (!previous && options.leading === false)\n previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout)\n context = args = null;\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n return throttled;\n});\n//# sourceMappingURL=throttle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3Rocm90dGxlLmpzPzM0OTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3Rocm90dGxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgdmFyIHRpbWVvdXQsIGNvbnRleHQsIGFyZ3MsIHJlc3VsdDtcbiAgICB2YXIgcHJldmlvdXMgPSAwO1xuICAgIGlmICghb3B0aW9ucylcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIHZhciBsYXRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcHJldmlvdXMgPSBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlID8gMCA6IERhdGUubm93KCk7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgICAgICBpZiAoIXRpbWVvdXQpXG4gICAgICAgICAgICBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgfTtcbiAgICB2YXIgdGhyb3R0bGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKCFwcmV2aW91cyAmJiBvcHRpb25zLmxlYWRpbmcgPT09IGZhbHNlKVxuICAgICAgICAgICAgcHJldmlvdXMgPSBub3c7XG4gICAgICAgIHZhciByZW1haW5pbmcgPSB3YWl0IC0gKG5vdyAtIHByZXZpb3VzKTtcbiAgICAgICAgY29udGV4dCA9IHRoaXM7XG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCByZW1haW5pbmcgPiB3YWl0KSB7XG4gICAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXZpb3VzID0gbm93O1xuICAgICAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICAgIGlmICghdGltZW91dClcbiAgICAgICAgICAgICAgICBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRpbWVvdXQgJiYgb3B0aW9ucy50cmFpbGluZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICB0aHJvdHRsZWQuY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIHByZXZpb3VzID0gMDtcbiAgICAgICAgdGltZW91dCA9IGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiB0aHJvdHRsZWQ7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRocm90dGxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/throttle.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-array.js": /*!********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-array.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array_like__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array-like */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array-like.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Object(_is_array_like__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) ? Array.prototype.slice.call(value) : [];\n});\n//# sourceMappingURL=to-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3RvLWFycmF5LmpzP2RlM2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQztBQUMxQjtBQUNoQixXQUFXLDhEQUFXO0FBQ3RCLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS90by1hcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzLWFycmF5LWxpa2UnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc0FycmF5TGlrZSh2YWx1ZSkgPyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh2YWx1ZSkgOiBbXTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG8tYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-array.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-degree.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-degree.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar DEGREE = 180 / Math.PI;\nvar toDegree = function (radian) {\n return DEGREE * radian;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (toDegree);\n//# sourceMappingURL=to-degree.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3RvLWRlZ3JlZS5qcz83NTgxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS90by1kZWdyZWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgREVHUkVFID0gMTgwIC8gTWF0aC5QSTtcbnZhciB0b0RlZ3JlZSA9IGZ1bmN0aW9uIChyYWRpYW4pIHtcbiAgICByZXR1cm4gREVHUkVFICogcmFkaWFuO1xufTtcbmV4cG9ydCBkZWZhdWx0IHRvRGVncmVlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG8tZGVncmVlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-degree.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-integer.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-integer.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (parseInt);\n//# sourceMappingURL=to-integer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3RvLWludGVnZXIuanM/NzVhNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3RvLWludGVnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBwYXJzZUludDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRvLWludGVnZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-integer.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-radian.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-radian.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar RADIAN = Math.PI / 180;\nvar toRadian = function (degree) {\n return RADIAN * degree;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (toRadian);\n//# sourceMappingURL=to-radian.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3RvLXJhZGlhbi5qcz82MGEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSx1RUFBUSxFQUFDO0FBQ3hCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS90by1yYWRpYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUkFESUFOID0gTWF0aC5QSSAvIDE4MDtcbnZhciB0b1JhZGlhbiA9IGZ1bmN0aW9uIChkZWdyZWUpIHtcbiAgICByZXR1cm4gUkFESUFOICogZGVncmVlO1xufTtcbmV4cG9ydCBkZWZhdWx0IHRvUmFkaWFuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG8tcmFkaWFuLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-radian.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n if (Object(_is_nil__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value))\n return '';\n return value.toString();\n});\n//# sourceMappingURL=to-string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3RvLXN0cmluZy5qcz9mM2Y2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBNkI7QUFDYjtBQUNoQixRQUFRLHVEQUFLO0FBQ2I7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS90by1zdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNOaWwgZnJvbSAnLi9pcy1uaWwnO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChpc05pbCh2YWx1ZSkpXG4gICAgICAgIHJldHVybiAnJztcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG8tc3RyaW5nLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/union.js": /*!*****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/union.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uniq__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uniq */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/uniq.js\");\n\nvar union = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return Object(_uniq__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([].concat.apply([], sources));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (union);\n//# sourceMappingURL=union.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VuaW9uLmpzPzJmYjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUEwQjtBQUMxQjtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0EsV0FBVyxxREFBSTtBQUNmO0FBQ2Usb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vdW5pb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdW5pcSBmcm9tICcuL3VuaXEnO1xudmFyIHVuaW9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzb3VyY2VzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgc291cmNlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gdW5pcShbXS5jb25jYXQuYXBwbHkoW10sIHNvdXJjZXMpKTtcbn07XG5leHBvcnQgZGVmYXVsdCB1bmlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaW9uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/union.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/uniq.js": /*!****************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/uniq.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return uniq; });\nfunction uniq(arr, cache) {\n if (cache === void 0) { cache = new Map(); }\n var r = [];\n if (Array.isArray(arr)) {\n for (var i = 0, len = arr.length; i < len; i++) {\n var item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}\n//# sourceMappingURL=uniq.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VuaXEuanM/MDkyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZiwyQkFBMkIsbUJBQW1CO0FBQzlDO0FBQ0E7QUFDQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS91bmlxLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pcShhcnIsIGNhY2hlKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHsgY2FjaGUgPSBuZXcgTWFwKCk7IH1cbiAgICB2YXIgciA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBhcnJbaV07XG4gICAgICAgICAgICAvLyDliqDkuIDkuKogY2FjaGXvvIzmj5DljYfmgKfog71cbiAgICAgICAgICAgIGlmICghY2FjaGUuaGFzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgci5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGNhY2hlLnNldChpdGVtLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaXEuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/uniq.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/unique-id.js": /*!*********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/unique-id.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar map = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (prefix) {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n }\n else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n});\n//# sourceMappingURL=unique-id.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VuaXF1ZS1pZC5qcz9lN2NkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTtBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS91bmlxdWUtaWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWFwID0ge307XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHByZWZpeCkge1xuICAgIHByZWZpeCA9IHByZWZpeCB8fCAnZyc7XG4gICAgaWYgKCFtYXBbcHJlZml4XSkge1xuICAgICAgICBtYXBbcHJlZml4XSA9IDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBtYXBbcHJlZml4XSArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gcHJlZml4ICsgbWFwW3ByZWZpeF07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaXF1ZS1pZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/unique-id.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-case.js": /*!**********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-case.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\");\n\nvar upperCase = function (str) {\n return Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(str).toUpperCase();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (upperCase);\n//# sourceMappingURL=upper-case.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VwcGVyLWNhc2UuanM/MjgxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQW1DO0FBQ25DO0FBQ0EsV0FBVywwREFBUTtBQUNuQjtBQUNlLHdFQUFTLEVBQUM7QUFDekIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VwcGVyLWNhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90by1zdHJpbmcnO1xudmFyIHVwcGVyQ2FzZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcoc3RyKS50b1VwcGVyQ2FzZSgpO1xufTtcbmV4cG9ydCBkZWZhdWx0IHVwcGVyQ2FzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVwcGVyLWNhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-case.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-first.js": /*!***********************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-first.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./to-string */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/to-string.js\");\n\nvar upperFirst = function (value) {\n var str = Object(_to_string__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (upperFirst);\n//# sourceMappingURL=upper-first.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VwcGVyLWZpcnN0LmpzPzFlNTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFtQztBQUNuQztBQUNBLGNBQWMsMERBQVE7QUFDdEI7QUFDQTtBQUNlLHlFQUFVLEVBQUM7QUFDMUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3VwcGVyLWZpcnN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG8tc3RyaW5nJztcbnZhciB1cHBlckZpcnN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nKHZhbHVlKTtcbiAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKTtcbn07XG5leHBvcnQgZGVmYXVsdCB1cHBlckZpcnN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXBwZXItZmlyc3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/upper-first.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/values-of-key.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/values-of-key.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-array */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-array.js\");\n/* harmony import */ var _is_nil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-nil */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-nil.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!Object(_is_nil__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n // flatten\n if (!Object(_is_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n value = [value];\n }\n for (var j = 0; j < value.length; j++) {\n var val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n return rst;\n});\n//# sourceMappingURL=values-of-key.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3ZhbHVlcy1vZi1rZXkuanM/MjFmZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNiO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQSxhQUFhLHVEQUFLO0FBQ2xCO0FBQ0EsaUJBQWlCLHlEQUFPO0FBQ3hCO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3ZhbHVlcy1vZi1rZXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzLWFycmF5JztcbmltcG9ydCBpc05pbCBmcm9tICcuL2lzLW5pbCc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgICB2YXIgcnN0ID0gW107XG4gICAgdmFyIHRtcE1hcCA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgb2JqID0gZGF0YVtpXTtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqW25hbWVdO1xuICAgICAgICBpZiAoIWlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gZmxhdHRlblxuICAgICAgICAgICAgaWYgKCFpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gW3ZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsID0gdmFsdWVbal07XG4gICAgICAgICAgICAgICAgLy8gdW5pcXVlXG4gICAgICAgICAgICAgICAgaWYgKCF0bXBNYXBbdmFsXSkge1xuICAgICAgICAgICAgICAgICAgICByc3QucHVzaCh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB0bXBNYXBbdmFsXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByc3Q7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbHVlcy1vZi1rZXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/values-of-key.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/values.js": /*!******************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/values.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./each */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/each.js\");\n/* harmony import */ var _is_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-function */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/is-function.js\");\n\n\n// @ts-ignore\nvar values = Object.values ? function (obj) { return Object.values(obj); } : function (obj) {\n var result = [];\n Object(_each__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(obj, function (value, key) {\n if (!(Object(_is_function__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (values);\n//# sourceMappingURL=values.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3ZhbHVlcy5qcz9kMTQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwQjtBQUNhO0FBQ3ZDO0FBQ0EsNkNBQTZDLDJCQUEyQixFQUFFO0FBQzFFO0FBQ0EsSUFBSSxxREFBSTtBQUNSLGNBQWMsNERBQVU7QUFDeEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ2UscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfdXRpbEAyLjAuMTdAQGFudHYvdXRpbC9lc20vdmFsdWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVhY2ggZnJvbSAnLi9lYWNoJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXMtZnVuY3Rpb24nO1xuLy8gQHRzLWlnbm9yZVxudmFyIHZhbHVlcyA9IE9iamVjdC52YWx1ZXMgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBPYmplY3QudmFsdWVzKG9iaik7IH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGVhY2gob2JqLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICBpZiAoIShpc0Z1bmN0aW9uKG9iaikgJiYga2V5ID09PSAncHJvdG90eXBlJykpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgdmFsdWVzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmFsdWVzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/values.js\n"); /***/ }), /***/ "./node_modules/_@antv_util@2.0.17@@antv/util/esm/wrap-behavior.js": /*!*************************************************************************!*\ !*** ./node_modules/_@antv_util@2.0.17@@antv/util/esm/wrap-behavior.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 封装事件,便于使用上下文this,和便于解除事件时使用\n * @protected\n * @param {Object} obj 对象\n * @param {String} action 事件名称\n * @return {Function} 返回事件处理函数\n */\nfunction wrapBehavior(obj, action) {\n if (obj['_wrap_' + action]) {\n return obj['_wrap_' + action];\n }\n var method = function (e) {\n obj[action](e);\n };\n obj['_wrap_' + action] = method;\n return method;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (wrapBehavior);\n//# sourceMappingURL=wrap-behavior.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X3V0aWxAMi4wLjE3QEBhbnR2L3V0aWwvZXNtL3dyYXAtYmVoYXZpb3IuanM/YzYyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSwyRUFBWSxFQUFDO0FBQzVCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl91dGlsQDIuMC4xN0BAYW50di91dGlsL2VzbS93cmFwLWJlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDlsIHoo4Xkuovku7bvvIzkvr/kuo7kvb/nlKjkuIrkuIvmlod0aGlzLOWSjOS+v+S6juino+mZpOS6i+S7tuaXtuS9v+eUqFxuICogQHByb3RlY3RlZFxuICogQHBhcmFtICB7T2JqZWN0fSBvYmogICDlr7nosaFcbiAqIEBwYXJhbSAge1N0cmluZ30gYWN0aW9uIOS6i+S7tuWQjeensFxuICogQHJldHVybiB7RnVuY3Rpb259ICAgICAgICDov5Tlm57kuovku7blpITnkIblh73mlbBcbiAqL1xuZnVuY3Rpb24gd3JhcEJlaGF2aW9yKG9iaiwgYWN0aW9uKSB7XG4gICAgaWYgKG9ialsnX3dyYXBfJyArIGFjdGlvbl0pIHtcbiAgICAgICAgcmV0dXJuIG9ialsnX3dyYXBfJyArIGFjdGlvbl07XG4gICAgfVxuICAgIHZhciBtZXRob2QgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBvYmpbYWN0aW9uXShlKTtcbiAgICB9O1xuICAgIG9ialsnX3dyYXBfJyArIGFjdGlvbl0gPSBtZXRob2Q7XG4gICAgcmV0dXJuIG1ldGhvZDtcbn1cbmV4cG9ydCBkZWZhdWx0IHdyYXBCZWhhdmlvcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdyYXAtYmVoYXZpb3IuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_util@2.0.17@@antv/util/esm/wrap-behavior.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js": /*!************************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nmodule.exports = _applyDecoratedDescriptor;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvci5qcz85Nzg3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7XG4gIHZhciBkZXNjID0ge307XG4gIE9iamVjdC5rZXlzKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGRlc2Nba2V5XSA9IGRlc2NyaXB0b3Jba2V5XTtcbiAgfSk7XG4gIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlO1xuICBkZXNjLmNvbmZpZ3VyYWJsZSA9ICEhZGVzYy5jb25maWd1cmFibGU7XG5cbiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7XG4gICAgZGVzYy53cml0YWJsZSA9IHRydWU7XG4gIH1cblxuICBkZXNjID0gZGVjb3JhdG9ycy5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24gKGRlc2MsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYztcbiAgfSwgZGVzYyk7XG5cbiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7XG4gICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7XG4gICAgZGVzYy5pbml0aWFsaXplciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkZXNjLmluaXRpYWxpemVyID09PSB2b2lkIDApIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7XG4gICAgZGVzYyA9IG51bGw7XG4gIH1cblxuICByZXR1cm4gZGVzYztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayLikeToArray.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayLikeToArray.js ***! \****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanM/OWEyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBLHdDQUF3QyxTQUFTO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayLikeToArray.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithHoles.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithHoles.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzPzhmZWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcztcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithHoles.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithoutHoles.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithoutHoles.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzP2M0ZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsK0dBQXVCOztBQUV0RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXM7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithoutHoles.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js": /*!*********************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js ***! \*********************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcz82MjRkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js": /*!****************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js ***! \****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanM/YzA4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlamVjdChlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGluZm8uZG9uZSkge1xuICAgIHJlc29sdmUodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgICAgYXJncyA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXG4gICAgICBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICB9XG5cbiAgICAgIF9uZXh0KHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3I7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzU3ZDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/classCallCheck.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js": /*!***********************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _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, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzPzg2MzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/createClass.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _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\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzPzRkNjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/defineProperty.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzPzhiYzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZjtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/getPrototypeOf.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js": /*!********************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/setPrototypeOf.js\");\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\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzP2NhMGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsMkdBQXFCOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js": /*!*************************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js ***! \*************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}\n\nmodule.exports = _initializerDefineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkuanM/NzUzOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzY3JpcHRvciwgY29udGV4dCkge1xuICBpZiAoIWRlc2NyaXB0b3IpIHJldHVybjtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHksIHtcbiAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsXG4gICAgY29uZmlndXJhYmxlOiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSxcbiAgICB3cml0YWJsZTogZGVzY3JpcHRvci53cml0YWJsZSxcbiAgICB2YWx1ZTogZGVzY3JpcHRvci5pbml0aWFsaXplciA/IGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMFxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js": /*!************************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');\n}\n\nmodule.exports = _initializerWarningHelper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlci5qcz9kYTNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyKGRlc2NyaXB0b3IsIGNvbnRleHQpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0aW5nIGNsYXNzIHByb3BlcnR5IGZhaWxlZC4gUGxlYXNlIGVuc3VyZSB0aGF0ICcgKyAncHJvcG9zYWwtY2xhc3MtcHJvcGVydGllcyBpcyBlbmFibGVkIGFuZCBydW5zIGFmdGVyIHRoZSBkZWNvcmF0b3JzIHRyYW5zZm9ybS4nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArray.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArray.js ***! \***************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcz81NmRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArray.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArrayLimit.js": /*!********************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArrayLimit.js ***! \********************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _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\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzP2ZkOGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDJCQUEyQiwrQkFBK0I7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcblxuICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcblxuICB2YXIgX3MsIF9lO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArrayLimit.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableRest.js": /*!***************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableRest.js ***! \***************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _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\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcz9kYzQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3Q7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableRest.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableSpread.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableSpread.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzPzkwNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQ7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableSpread.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js": /*!*************************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js ***! \*************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\")[\"default\"];\n\nvar assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\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\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanM/MTIyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsNkdBQStCOztBQUVyRCw0QkFBNEIsbUJBQU8sQ0FBQyx5SEFBNEI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfdHlwZW9mID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpW1wiZGVmYXVsdFwiXTtcblxudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkge1xuICBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkge1xuICAgIHJldHVybiBjYWxsO1xuICB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm47XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/possibleConstructorReturn.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/setPrototypeOf.js": /*!**************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/setPrototypeOf.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzP2UzYjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBtb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcblxuICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mO1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/setPrototypeOf.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js": /*!*************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js ***! \*************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithHoles.js\");\n\nvar iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanM/N2ZhYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQywyR0FBcUI7O0FBRWxELDJCQUEyQixtQkFBTyxDQUFDLHVIQUEyQjs7QUFFOUQsaUNBQWlDLG1CQUFPLENBQUMsbUlBQWlDOztBQUUxRSxzQkFBc0IsbUJBQU8sQ0FBQyw2R0FBc0I7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG5cbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xuXG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/slicedToArray.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayWithoutHoles.js\");\n\nvar iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/iterableToArray.js\");\n\nvar unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzP2UzNTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCLG1CQUFPLENBQUMsaUhBQXdCOztBQUV4RCxzQkFBc0IsbUJBQU8sQ0FBQyw2R0FBc0I7O0FBRXBELGlDQUFpQyxtQkFBTyxDQUFDLG1JQUFpQzs7QUFFMUUsd0JBQXdCLG1CQUFPLENBQUMsaUhBQXdCOztBQUV4RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcblxudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcblxudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG5cbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXk7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/toConsumableArray.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js": /*!******************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcz9hZGEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYmFiZWxfcnVudGltZUA3LjE2LjNAQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG5cbiAgICBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2Y7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/unsupportedIterableToArray.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/unsupportedIterableToArray.js ***! \**************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/arrayLikeToArray.js\");\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\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzP2NmNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsK0dBQXVCOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheTtcbm1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/unsupportedIterableToArray.js\n"); /***/ }), /***/ "./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/_regenerator-runtime@0.13.9@regenerator-runtime/runtime.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BiYWJlbF9ydW50aW1lQDcuMTYuM0BAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcz80YjQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLHNHQUFxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGJhYmVsX3J1bnRpbWVANy4xNi4zQEBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZVwiKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\n"); /***/ }), /***/ "./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js": /*!****************************************************************************!*\ !*** ./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n// https://github.com/gpuweb/gpuweb/blob/01b20b4ad93fabae1e8e0d7752515f69708d33e0/spec/index.bs\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// tslint:disable:variable-name\n// String enums\nvar ExtensionName;\n(function (ExtensionName) {\n ExtensionName[\"TextureCompressionBC\"] = \"texture-compression-bc\";\n})(ExtensionName = exports.ExtensionName || (exports.ExtensionName = {}));\nvar AddressMode;\n(function (AddressMode) {\n AddressMode[\"ClampToEdge\"] = \"clamp-to-edge\";\n AddressMode[\"Repeat\"] = \"repeat\";\n AddressMode[\"MirrorRepeat\"] = \"mirror-repeat\";\n})(AddressMode = exports.AddressMode || (exports.AddressMode = {}));\nvar BindingType;\n(function (BindingType) {\n BindingType[\"UniformBuffer\"] = \"uniform-buffer\";\n BindingType[\"StorageBuffer\"] = \"storage-buffer\";\n BindingType[\"ReadonlyStorageBuffer\"] = \"readonly-storage-buffer\";\n BindingType[\"Sampler\"] = \"sampler\";\n BindingType[\"ComparisonSampler\"] = \"comparison-sampler\";\n BindingType[\"SampledTexture\"] = \"sampled-texture\";\n BindingType[\"ReadonlyStorageTexture\"] = \"readonly-storage-texture\";\n BindingType[\"WriteonlyStorageTexture\"] = \"writeonly-storage-texture\";\n})(BindingType = exports.BindingType || (exports.BindingType = {}));\nvar BlendFactor;\n(function (BlendFactor) {\n BlendFactor[\"Zero\"] = \"zero\";\n BlendFactor[\"One\"] = \"one\";\n BlendFactor[\"SrcColor\"] = \"src-color\";\n BlendFactor[\"OneMinusSrcColor\"] = \"one-minus-src-color\";\n BlendFactor[\"SrcAlpha\"] = \"src-alpha\";\n BlendFactor[\"OneMinusSrcAlpha\"] = \"one-minus-src-alpha\";\n BlendFactor[\"DstColor\"] = \"dst-color\";\n BlendFactor[\"OneMinusDstColor\"] = \"one-minus-dst-color\";\n BlendFactor[\"DstAlpha\"] = \"dst-alpha\";\n BlendFactor[\"OneMinusDstAlpha\"] = \"one-minus-dst-alpha\";\n BlendFactor[\"SrcAlphaSaturated\"] = \"src-alpha-saturated\";\n BlendFactor[\"BlendColor\"] = \"blend-color\";\n BlendFactor[\"OneMinusBlendColor\"] = \"one-minus-blend-color\";\n})(BlendFactor = exports.BlendFactor || (exports.BlendFactor = {}));\nvar BlendOperation;\n(function (BlendOperation) {\n BlendOperation[\"Add\"] = \"add\";\n BlendOperation[\"Subtract\"] = \"subtract\";\n BlendOperation[\"ReverseSubtract\"] = \"reverse-subtract\";\n BlendOperation[\"Min\"] = \"min\";\n BlendOperation[\"Max\"] = \"max\";\n})(BlendOperation = exports.BlendOperation || (exports.BlendOperation = {}));\nvar CompareFunction;\n(function (CompareFunction) {\n CompareFunction[\"Never\"] = \"never\";\n CompareFunction[\"Less\"] = \"less\";\n CompareFunction[\"Equal\"] = \"equal\";\n CompareFunction[\"LessEqual\"] = \"less-equal\";\n CompareFunction[\"Greater\"] = \"greater\";\n CompareFunction[\"NotEqual\"] = \"not-equal\";\n CompareFunction[\"GreaterEqual\"] = \"greater-equal\";\n CompareFunction[\"Always\"] = \"always\";\n})(CompareFunction = exports.CompareFunction || (exports.CompareFunction = {}));\nvar CullMode;\n(function (CullMode) {\n CullMode[\"None\"] = \"none\";\n CullMode[\"Front\"] = \"front\";\n CullMode[\"Back\"] = \"back\";\n})(CullMode = exports.CullMode || (exports.CullMode = {}));\nvar FilterMode;\n(function (FilterMode) {\n FilterMode[\"Nearest\"] = \"nearest\";\n FilterMode[\"Linear\"] = \"linear\";\n})(FilterMode = exports.FilterMode || (exports.FilterMode = {}));\nvar FrontFace;\n(function (FrontFace) {\n FrontFace[\"CCW\"] = \"ccw\";\n FrontFace[\"CW\"] = \"cw\";\n})(FrontFace = exports.FrontFace || (exports.FrontFace = {}));\nvar IndexFormat;\n(function (IndexFormat) {\n IndexFormat[\"Uint16\"] = \"uint16\";\n IndexFormat[\"Uint32\"] = \"uint32\";\n})(IndexFormat = exports.IndexFormat || (exports.IndexFormat = {}));\nvar InputStepMode;\n(function (InputStepMode) {\n InputStepMode[\"Vertex\"] = \"vertex\";\n InputStepMode[\"Instance\"] = \"instance\";\n})(InputStepMode = exports.InputStepMode || (exports.InputStepMode = {}));\nvar LoadOp;\n(function (LoadOp) {\n LoadOp[\"Load\"] = \"load\";\n})(LoadOp = exports.LoadOp || (exports.LoadOp = {}));\nvar PrimitiveTopology;\n(function (PrimitiveTopology) {\n PrimitiveTopology[\"PointList\"] = \"point-list\";\n PrimitiveTopology[\"LineList\"] = \"line-list\";\n PrimitiveTopology[\"LineStrip\"] = \"line-strip\";\n PrimitiveTopology[\"TriangleList\"] = \"triangle-list\";\n PrimitiveTopology[\"TriangleStrip\"] = \"triangle-strip\";\n})(PrimitiveTopology = exports.PrimitiveTopology || (exports.PrimitiveTopology = {}));\nvar StencilOperation;\n(function (StencilOperation) {\n StencilOperation[\"Keep\"] = \"keep\";\n StencilOperation[\"Zero\"] = \"zero\";\n StencilOperation[\"Replace\"] = \"replace\";\n StencilOperation[\"Invert\"] = \"invert\";\n StencilOperation[\"IncrementClamp\"] = \"increment-clamp\";\n StencilOperation[\"DecrementClamp\"] = \"decrement-clamp\";\n StencilOperation[\"IncrementWrap\"] = \"increment-wrap\";\n StencilOperation[\"DecrementWrap\"] = \"decrement-wrap\";\n})(StencilOperation = exports.StencilOperation || (exports.StencilOperation = {}));\nvar StoreOp;\n(function (StoreOp) {\n StoreOp[\"Store\"] = \"store\";\n StoreOp[\"Clear\"] = \"clear\";\n})(StoreOp = exports.StoreOp || (exports.StoreOp = {}));\nvar TextureDimension;\n(function (TextureDimension) {\n TextureDimension[\"E1d\"] = \"1d\";\n TextureDimension[\"E2d\"] = \"2d\";\n TextureDimension[\"E3d\"] = \"3d\";\n})(TextureDimension = exports.TextureDimension || (exports.TextureDimension = {}));\nvar TextureFormat;\n(function (TextureFormat) {\n TextureFormat[\"R8Unorm\"] = \"r8unorm\";\n TextureFormat[\"R8Snorm\"] = \"r8snorm\";\n TextureFormat[\"R8Uint\"] = \"r8uint\";\n TextureFormat[\"R8Sint\"] = \"r8sint\";\n TextureFormat[\"R16Uint\"] = \"r16uint\";\n TextureFormat[\"R16Sint\"] = \"r16sint\";\n TextureFormat[\"R16Float\"] = \"r16float\";\n TextureFormat[\"RG8Unorm\"] = \"rg8unorm\";\n TextureFormat[\"RG8Snorm\"] = \"rg8snorm\";\n TextureFormat[\"RG8Uint\"] = \"rg8uint\";\n TextureFormat[\"RG8Sint\"] = \"rg8sint\";\n TextureFormat[\"R32Uint\"] = \"r32uint\";\n TextureFormat[\"R32Sint\"] = \"r32sint\";\n TextureFormat[\"R32Float\"] = \"r32float\";\n TextureFormat[\"RG16Uint\"] = \"rg16uint\";\n TextureFormat[\"RG16Sint\"] = \"rg16sint\";\n TextureFormat[\"RG16Float\"] = \"rg16float\";\n TextureFormat[\"RGBA8Unorm\"] = \"rgba8unorm\";\n TextureFormat[\"RGBA8UnormSRGB\"] = \"rgba8unorm-srgb\";\n TextureFormat[\"RGBA8Snorm\"] = \"rgba8snorm\";\n TextureFormat[\"RGBA8Uint\"] = \"rgba8uint\";\n TextureFormat[\"RGBA8Sint\"] = \"rgba8sint\";\n TextureFormat[\"BGRA8Unorm\"] = \"bgra8unorm\";\n TextureFormat[\"BGRA8UnormSRGB\"] = \"bgra8unorm-srgb\";\n TextureFormat[\"RGB10A2Unorm\"] = \"rgb10a2unorm\";\n TextureFormat[\"RG11B10Float\"] = \"rg11b10float\";\n TextureFormat[\"RG32Uint\"] = \"rg32uint\";\n TextureFormat[\"RG32Sint\"] = \"rg32sint\";\n TextureFormat[\"RG32Float\"] = \"rg32float\";\n TextureFormat[\"RGBA16Uint\"] = \"rgba16uint\";\n TextureFormat[\"RGBA16Sint\"] = \"rgba16sint\";\n TextureFormat[\"RGBA16Float\"] = \"rgba16float\";\n TextureFormat[\"RGBA32Uint\"] = \"rgba32uint\";\n TextureFormat[\"RGBA32Sint\"] = \"rgba32sint\";\n TextureFormat[\"RGBA32Float\"] = \"rgba32float\";\n TextureFormat[\"Depth32Float\"] = \"depth32float\";\n TextureFormat[\"Depth24Plus\"] = \"depth24plus\";\n TextureFormat[\"Depth24PlusStencil8\"] = \"depth24plus-stencil8\";\n})(TextureFormat = exports.TextureFormat || (exports.TextureFormat = {}));\nvar TextureComponentType;\n(function (TextureComponentType) {\n TextureComponentType[\"Float\"] = \"float\";\n TextureComponentType[\"Sint\"] = \"sint\";\n TextureComponentType[\"Uint\"] = \"uint\";\n})(TextureComponentType = exports.TextureComponentType || (exports.TextureComponentType = {}));\nvar TextureViewDimension;\n(function (TextureViewDimension) {\n TextureViewDimension[\"E1d\"] = \"1d\";\n TextureViewDimension[\"E2d\"] = \"2d\";\n TextureViewDimension[\"E2dArray\"] = \"2d-array\";\n TextureViewDimension[\"Cube\"] = \"cube\";\n TextureViewDimension[\"CubeArray\"] = \"cube-array\";\n TextureViewDimension[\"E3d\"] = \"3d\";\n})(TextureViewDimension = exports.TextureViewDimension || (exports.TextureViewDimension = {}));\nvar VertexFormat;\n(function (VertexFormat) {\n VertexFormat[\"Uchar2\"] = \"uchar2\";\n VertexFormat[\"Uchar4\"] = \"uchar4\";\n VertexFormat[\"Char2\"] = \"char2\";\n VertexFormat[\"Char4\"] = \"char4\";\n VertexFormat[\"Uchar2Norm\"] = \"uchar2norm\";\n VertexFormat[\"Uchar4Norm\"] = \"uchar4norm\";\n VertexFormat[\"Char2Norm\"] = \"char2norm\";\n VertexFormat[\"Char4Norm\"] = \"char4norm\";\n VertexFormat[\"Ushort2\"] = \"ushort2\";\n VertexFormat[\"Ushort4\"] = \"ushort4\";\n VertexFormat[\"Short2\"] = \"short2\";\n VertexFormat[\"Short4\"] = \"short4\";\n VertexFormat[\"Ushort2Norm\"] = \"ushort2norm\";\n VertexFormat[\"Ushort4Norm\"] = \"ushort4norm\";\n VertexFormat[\"Short2Norm\"] = \"short2norm\";\n VertexFormat[\"Short4Norm\"] = \"short4norm\";\n VertexFormat[\"Half2\"] = \"half2\";\n VertexFormat[\"Half4\"] = \"half4\";\n VertexFormat[\"Float\"] = \"float\";\n VertexFormat[\"Float2\"] = \"float2\";\n VertexFormat[\"Float3\"] = \"float3\";\n VertexFormat[\"Float4\"] = \"float4\";\n VertexFormat[\"Uint\"] = \"uint\";\n VertexFormat[\"Uint2\"] = \"uint2\";\n VertexFormat[\"Uint3\"] = \"uint3\";\n VertexFormat[\"Uint4\"] = \"uint4\";\n VertexFormat[\"Int\"] = \"int\";\n VertexFormat[\"Int2\"] = \"int2\";\n VertexFormat[\"Int3\"] = \"int3\";\n VertexFormat[\"Int4\"] = \"int4\";\n})(VertexFormat = exports.VertexFormat || (exports.VertexFormat = {}));\nvar TextureAspect;\n(function (TextureAspect) {\n TextureAspect[\"All\"] = \"all\";\n TextureAspect[\"StencilOnly\"] = \"stencil-only\";\n TextureAspect[\"DepthOnly\"] = \"depth-only\";\n})(TextureAspect = exports.TextureAspect || (exports.TextureAspect = {}));\nvar CompilationMessageType;\n(function (CompilationMessageType) {\n CompilationMessageType[\"Error\"] = \"error\";\n CompilationMessageType[\"Warning\"] = \"warning\";\n CompilationMessageType[\"Info\"] = \"info\";\n})(CompilationMessageType = exports.CompilationMessageType || (exports.CompilationMessageType = {}));\nvar QueryType;\n(function (QueryType) {\n QueryType[\"Occlusion\"] = \"occlusion\";\n})(QueryType = exports.QueryType || (exports.QueryType = {}));\n// Bit fields\nvar BufferUsage;\n(function (BufferUsage) {\n BufferUsage[BufferUsage[\"MapRead\"] = 1] = \"MapRead\";\n BufferUsage[BufferUsage[\"MapWrite\"] = 2] = \"MapWrite\";\n BufferUsage[BufferUsage[\"CopySrc\"] = 4] = \"CopySrc\";\n BufferUsage[BufferUsage[\"CopyDst\"] = 8] = \"CopyDst\";\n BufferUsage[BufferUsage[\"Index\"] = 16] = \"Index\";\n BufferUsage[BufferUsage[\"Vertex\"] = 32] = \"Vertex\";\n BufferUsage[BufferUsage[\"Uniform\"] = 64] = \"Uniform\";\n BufferUsage[BufferUsage[\"Storage\"] = 128] = \"Storage\";\n BufferUsage[BufferUsage[\"Indirect\"] = 256] = \"Indirect\";\n BufferUsage[BufferUsage[\"QueryResolve\"] = 512] = \"QueryResolve\";\n})(BufferUsage = exports.BufferUsage || (exports.BufferUsage = {}));\nvar ColorWrite;\n(function (ColorWrite) {\n ColorWrite[ColorWrite[\"Red\"] = 1] = \"Red\";\n ColorWrite[ColorWrite[\"Green\"] = 2] = \"Green\";\n ColorWrite[ColorWrite[\"Blue\"] = 4] = \"Blue\";\n ColorWrite[ColorWrite[\"Alpha\"] = 8] = \"Alpha\";\n ColorWrite[ColorWrite[\"All\"] = 15] = \"All\";\n})(ColorWrite = exports.ColorWrite || (exports.ColorWrite = {}));\nvar ShaderStage;\n(function (ShaderStage) {\n ShaderStage[ShaderStage[\"Vertex\"] = 1] = \"Vertex\";\n ShaderStage[ShaderStage[\"Fragment\"] = 2] = \"Fragment\";\n ShaderStage[ShaderStage[\"Compute\"] = 4] = \"Compute\";\n})(ShaderStage = exports.ShaderStage || (exports.ShaderStage = {}));\nvar TextureUsage;\n(function (TextureUsage) {\n TextureUsage[TextureUsage[\"CopySrc\"] = 1] = \"CopySrc\";\n TextureUsage[TextureUsage[\"CopyDst\"] = 2] = \"CopyDst\";\n TextureUsage[TextureUsage[\"Sampled\"] = 4] = \"Sampled\";\n TextureUsage[TextureUsage[\"Storage\"] = 8] = \"Storage\";\n TextureUsage[TextureUsage[\"OutputAttachment\"] = 16] = \"OutputAttachment\";\n})(TextureUsage = exports.TextureUsage || (exports.TextureUsage = {}));\nvar MapMode;\n(function (MapMode) {\n MapMode[MapMode[\"Read\"] = 1] = \"Read\";\n MapMode[MapMode[\"Write\"] = 2] = \"Write\";\n})(MapMode = exports.MapMode || (exports.MapMode = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0B3ZWJncHVfdHlwZXNAMC4wLjMxQEB3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMuanM/YzFlNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0EsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0VBQXNFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdFQUFnRTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsZ0VBQWdFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsZ0VBQWdFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyx5RUFBeUU7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRFQUE0RTtBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyx1REFBdUQ7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDZEQUE2RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsMERBQTBEO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnRUFBZ0U7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNFQUFzRTtBQUN2RTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlEQUFpRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0ZBQWtGO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywrRUFBK0U7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9EQUFvRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywrRUFBK0U7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNFQUFzRTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQywyRkFBMkY7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsMkZBQTJGO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG1FQUFtRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzRUFBc0U7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsaUdBQWlHO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBLENBQUMsMERBQTBEO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnRUFBZ0U7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDZEQUE2RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxnRUFBZ0U7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG1FQUFtRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0RBQW9EIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19Ad2ViZ3B1X3R5cGVzQDAuMC4zMUBAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iLzAxYjIwYjRhZDkzZmFiYWUxZThlMGQ3NzUyNTE1ZjY5NzA4ZDMzZTAvc3BlYy9pbmRleC5ic1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuLy8gU3RyaW5nIGVudW1zXG52YXIgRXh0ZW5zaW9uTmFtZTtcbihmdW5jdGlvbiAoRXh0ZW5zaW9uTmFtZSkge1xuICAgIEV4dGVuc2lvbk5hbWVbXCJUZXh0dXJlQ29tcHJlc3Npb25CQ1wiXSA9IFwidGV4dHVyZS1jb21wcmVzc2lvbi1iY1wiO1xufSkoRXh0ZW5zaW9uTmFtZSA9IGV4cG9ydHMuRXh0ZW5zaW9uTmFtZSB8fCAoZXhwb3J0cy5FeHRlbnNpb25OYW1lID0ge30pKTtcbnZhciBBZGRyZXNzTW9kZTtcbihmdW5jdGlvbiAoQWRkcmVzc01vZGUpIHtcbiAgICBBZGRyZXNzTW9kZVtcIkNsYW1wVG9FZGdlXCJdID0gXCJjbGFtcC10by1lZGdlXCI7XG4gICAgQWRkcmVzc01vZGVbXCJSZXBlYXRcIl0gPSBcInJlcGVhdFwiO1xuICAgIEFkZHJlc3NNb2RlW1wiTWlycm9yUmVwZWF0XCJdID0gXCJtaXJyb3ItcmVwZWF0XCI7XG59KShBZGRyZXNzTW9kZSA9IGV4cG9ydHMuQWRkcmVzc01vZGUgfHwgKGV4cG9ydHMuQWRkcmVzc01vZGUgPSB7fSkpO1xudmFyIEJpbmRpbmdUeXBlO1xuKGZ1bmN0aW9uIChCaW5kaW5nVHlwZSkge1xuICAgIEJpbmRpbmdUeXBlW1wiVW5pZm9ybUJ1ZmZlclwiXSA9IFwidW5pZm9ybS1idWZmZXJcIjtcbiAgICBCaW5kaW5nVHlwZVtcIlN0b3JhZ2VCdWZmZXJcIl0gPSBcInN0b3JhZ2UtYnVmZmVyXCI7XG4gICAgQmluZGluZ1R5cGVbXCJSZWFkb25seVN0b3JhZ2VCdWZmZXJcIl0gPSBcInJlYWRvbmx5LXN0b3JhZ2UtYnVmZmVyXCI7XG4gICAgQmluZGluZ1R5cGVbXCJTYW1wbGVyXCJdID0gXCJzYW1wbGVyXCI7XG4gICAgQmluZGluZ1R5cGVbXCJDb21wYXJpc29uU2FtcGxlclwiXSA9IFwiY29tcGFyaXNvbi1zYW1wbGVyXCI7XG4gICAgQmluZGluZ1R5cGVbXCJTYW1wbGVkVGV4dHVyZVwiXSA9IFwic2FtcGxlZC10ZXh0dXJlXCI7XG4gICAgQmluZGluZ1R5cGVbXCJSZWFkb25seVN0b3JhZ2VUZXh0dXJlXCJdID0gXCJyZWFkb25seS1zdG9yYWdlLXRleHR1cmVcIjtcbiAgICBCaW5kaW5nVHlwZVtcIldyaXRlb25seVN0b3JhZ2VUZXh0dXJlXCJdID0gXCJ3cml0ZW9ubHktc3RvcmFnZS10ZXh0dXJlXCI7XG59KShCaW5kaW5nVHlwZSA9IGV4cG9ydHMuQmluZGluZ1R5cGUgfHwgKGV4cG9ydHMuQmluZGluZ1R5cGUgPSB7fSkpO1xudmFyIEJsZW5kRmFjdG9yO1xuKGZ1bmN0aW9uIChCbGVuZEZhY3Rvcikge1xuICAgIEJsZW5kRmFjdG9yW1wiWmVyb1wiXSA9IFwiemVyb1wiO1xuICAgIEJsZW5kRmFjdG9yW1wiT25lXCJdID0gXCJvbmVcIjtcbiAgICBCbGVuZEZhY3RvcltcIlNyY0NvbG9yXCJdID0gXCJzcmMtY29sb3JcIjtcbiAgICBCbGVuZEZhY3RvcltcIk9uZU1pbnVzU3JjQ29sb3JcIl0gPSBcIm9uZS1taW51cy1zcmMtY29sb3JcIjtcbiAgICBCbGVuZEZhY3RvcltcIlNyY0FscGhhXCJdID0gXCJzcmMtYWxwaGFcIjtcbiAgICBCbGVuZEZhY3RvcltcIk9uZU1pbnVzU3JjQWxwaGFcIl0gPSBcIm9uZS1taW51cy1zcmMtYWxwaGFcIjtcbiAgICBCbGVuZEZhY3RvcltcIkRzdENvbG9yXCJdID0gXCJkc3QtY29sb3JcIjtcbiAgICBCbGVuZEZhY3RvcltcIk9uZU1pbnVzRHN0Q29sb3JcIl0gPSBcIm9uZS1taW51cy1kc3QtY29sb3JcIjtcbiAgICBCbGVuZEZhY3RvcltcIkRzdEFscGhhXCJdID0gXCJkc3QtYWxwaGFcIjtcbiAgICBCbGVuZEZhY3RvcltcIk9uZU1pbnVzRHN0QWxwaGFcIl0gPSBcIm9uZS1taW51cy1kc3QtYWxwaGFcIjtcbiAgICBCbGVuZEZhY3RvcltcIlNyY0FscGhhU2F0dXJhdGVkXCJdID0gXCJzcmMtYWxwaGEtc2F0dXJhdGVkXCI7XG4gICAgQmxlbmRGYWN0b3JbXCJCbGVuZENvbG9yXCJdID0gXCJibGVuZC1jb2xvclwiO1xuICAgIEJsZW5kRmFjdG9yW1wiT25lTWludXNCbGVuZENvbG9yXCJdID0gXCJvbmUtbWludXMtYmxlbmQtY29sb3JcIjtcbn0pKEJsZW5kRmFjdG9yID0gZXhwb3J0cy5CbGVuZEZhY3RvciB8fCAoZXhwb3J0cy5CbGVuZEZhY3RvciA9IHt9KSk7XG52YXIgQmxlbmRPcGVyYXRpb247XG4oZnVuY3Rpb24gKEJsZW5kT3BlcmF0aW9uKSB7XG4gICAgQmxlbmRPcGVyYXRpb25bXCJBZGRcIl0gPSBcImFkZFwiO1xuICAgIEJsZW5kT3BlcmF0aW9uW1wiU3VidHJhY3RcIl0gPSBcInN1YnRyYWN0XCI7XG4gICAgQmxlbmRPcGVyYXRpb25bXCJSZXZlcnNlU3VidHJhY3RcIl0gPSBcInJldmVyc2Utc3VidHJhY3RcIjtcbiAgICBCbGVuZE9wZXJhdGlvbltcIk1pblwiXSA9IFwibWluXCI7XG4gICAgQmxlbmRPcGVyYXRpb25bXCJNYXhcIl0gPSBcIm1heFwiO1xufSkoQmxlbmRPcGVyYXRpb24gPSBleHBvcnRzLkJsZW5kT3BlcmF0aW9uIHx8IChleHBvcnRzLkJsZW5kT3BlcmF0aW9uID0ge30pKTtcbnZhciBDb21wYXJlRnVuY3Rpb247XG4oZnVuY3Rpb24gKENvbXBhcmVGdW5jdGlvbikge1xuICAgIENvbXBhcmVGdW5jdGlvbltcIk5ldmVyXCJdID0gXCJuZXZlclwiO1xuICAgIENvbXBhcmVGdW5jdGlvbltcIkxlc3NcIl0gPSBcImxlc3NcIjtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJFcXVhbFwiXSA9IFwiZXF1YWxcIjtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJMZXNzRXF1YWxcIl0gPSBcImxlc3MtZXF1YWxcIjtcbiAgICBDb21wYXJlRnVuY3Rpb25bXCJHcmVhdGVyXCJdID0gXCJncmVhdGVyXCI7XG4gICAgQ29tcGFyZUZ1bmN0aW9uW1wiTm90RXF1YWxcIl0gPSBcIm5vdC1lcXVhbFwiO1xuICAgIENvbXBhcmVGdW5jdGlvbltcIkdyZWF0ZXJFcXVhbFwiXSA9IFwiZ3JlYXRlci1lcXVhbFwiO1xuICAgIENvbXBhcmVGdW5jdGlvbltcIkFsd2F5c1wiXSA9IFwiYWx3YXlzXCI7XG59KShDb21wYXJlRnVuY3Rpb24gPSBleHBvcnRzLkNvbXBhcmVGdW5jdGlvbiB8fCAoZXhwb3J0cy5Db21wYXJlRnVuY3Rpb24gPSB7fSkpO1xudmFyIEN1bGxNb2RlO1xuKGZ1bmN0aW9uIChDdWxsTW9kZSkge1xuICAgIEN1bGxNb2RlW1wiTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIEN1bGxNb2RlW1wiRnJvbnRcIl0gPSBcImZyb250XCI7XG4gICAgQ3VsbE1vZGVbXCJCYWNrXCJdID0gXCJiYWNrXCI7XG59KShDdWxsTW9kZSA9IGV4cG9ydHMuQ3VsbE1vZGUgfHwgKGV4cG9ydHMuQ3VsbE1vZGUgPSB7fSkpO1xudmFyIEZpbHRlck1vZGU7XG4oZnVuY3Rpb24gKEZpbHRlck1vZGUpIHtcbiAgICBGaWx0ZXJNb2RlW1wiTmVhcmVzdFwiXSA9IFwibmVhcmVzdFwiO1xuICAgIEZpbHRlck1vZGVbXCJMaW5lYXJcIl0gPSBcImxpbmVhclwiO1xufSkoRmlsdGVyTW9kZSA9IGV4cG9ydHMuRmlsdGVyTW9kZSB8fCAoZXhwb3J0cy5GaWx0ZXJNb2RlID0ge30pKTtcbnZhciBGcm9udEZhY2U7XG4oZnVuY3Rpb24gKEZyb250RmFjZSkge1xuICAgIEZyb250RmFjZVtcIkNDV1wiXSA9IFwiY2N3XCI7XG4gICAgRnJvbnRGYWNlW1wiQ1dcIl0gPSBcImN3XCI7XG59KShGcm9udEZhY2UgPSBleHBvcnRzLkZyb250RmFjZSB8fCAoZXhwb3J0cy5Gcm9udEZhY2UgPSB7fSkpO1xudmFyIEluZGV4Rm9ybWF0O1xuKGZ1bmN0aW9uIChJbmRleEZvcm1hdCkge1xuICAgIEluZGV4Rm9ybWF0W1wiVWludDE2XCJdID0gXCJ1aW50MTZcIjtcbiAgICBJbmRleEZvcm1hdFtcIlVpbnQzMlwiXSA9IFwidWludDMyXCI7XG59KShJbmRleEZvcm1hdCA9IGV4cG9ydHMuSW5kZXhGb3JtYXQgfHwgKGV4cG9ydHMuSW5kZXhGb3JtYXQgPSB7fSkpO1xudmFyIElucHV0U3RlcE1vZGU7XG4oZnVuY3Rpb24gKElucHV0U3RlcE1vZGUpIHtcbiAgICBJbnB1dFN0ZXBNb2RlW1wiVmVydGV4XCJdID0gXCJ2ZXJ0ZXhcIjtcbiAgICBJbnB1dFN0ZXBNb2RlW1wiSW5zdGFuY2VcIl0gPSBcImluc3RhbmNlXCI7XG59KShJbnB1dFN0ZXBNb2RlID0gZXhwb3J0cy5JbnB1dFN0ZXBNb2RlIHx8IChleHBvcnRzLklucHV0U3RlcE1vZGUgPSB7fSkpO1xudmFyIExvYWRPcDtcbihmdW5jdGlvbiAoTG9hZE9wKSB7XG4gICAgTG9hZE9wW1wiTG9hZFwiXSA9IFwibG9hZFwiO1xufSkoTG9hZE9wID0gZXhwb3J0cy5Mb2FkT3AgfHwgKGV4cG9ydHMuTG9hZE9wID0ge30pKTtcbnZhciBQcmltaXRpdmVUb3BvbG9neTtcbihmdW5jdGlvbiAoUHJpbWl0aXZlVG9wb2xvZ3kpIHtcbiAgICBQcmltaXRpdmVUb3BvbG9neVtcIlBvaW50TGlzdFwiXSA9IFwicG9pbnQtbGlzdFwiO1xuICAgIFByaW1pdGl2ZVRvcG9sb2d5W1wiTGluZUxpc3RcIl0gPSBcImxpbmUtbGlzdFwiO1xuICAgIFByaW1pdGl2ZVRvcG9sb2d5W1wiTGluZVN0cmlwXCJdID0gXCJsaW5lLXN0cmlwXCI7XG4gICAgUHJpbWl0aXZlVG9wb2xvZ3lbXCJUcmlhbmdsZUxpc3RcIl0gPSBcInRyaWFuZ2xlLWxpc3RcIjtcbiAgICBQcmltaXRpdmVUb3BvbG9neVtcIlRyaWFuZ2xlU3RyaXBcIl0gPSBcInRyaWFuZ2xlLXN0cmlwXCI7XG59KShQcmltaXRpdmVUb3BvbG9neSA9IGV4cG9ydHMuUHJpbWl0aXZlVG9wb2xvZ3kgfHwgKGV4cG9ydHMuUHJpbWl0aXZlVG9wb2xvZ3kgPSB7fSkpO1xudmFyIFN0ZW5jaWxPcGVyYXRpb247XG4oZnVuY3Rpb24gKFN0ZW5jaWxPcGVyYXRpb24pIHtcbiAgICBTdGVuY2lsT3BlcmF0aW9uW1wiS2VlcFwiXSA9IFwia2VlcFwiO1xuICAgIFN0ZW5jaWxPcGVyYXRpb25bXCJaZXJvXCJdID0gXCJ6ZXJvXCI7XG4gICAgU3RlbmNpbE9wZXJhdGlvbltcIlJlcGxhY2VcIl0gPSBcInJlcGxhY2VcIjtcbiAgICBTdGVuY2lsT3BlcmF0aW9uW1wiSW52ZXJ0XCJdID0gXCJpbnZlcnRcIjtcbiAgICBTdGVuY2lsT3BlcmF0aW9uW1wiSW5jcmVtZW50Q2xhbXBcIl0gPSBcImluY3JlbWVudC1jbGFtcFwiO1xuICAgIFN0ZW5jaWxPcGVyYXRpb25bXCJEZWNyZW1lbnRDbGFtcFwiXSA9IFwiZGVjcmVtZW50LWNsYW1wXCI7XG4gICAgU3RlbmNpbE9wZXJhdGlvbltcIkluY3JlbWVudFdyYXBcIl0gPSBcImluY3JlbWVudC13cmFwXCI7XG4gICAgU3RlbmNpbE9wZXJhdGlvbltcIkRlY3JlbWVudFdyYXBcIl0gPSBcImRlY3JlbWVudC13cmFwXCI7XG59KShTdGVuY2lsT3BlcmF0aW9uID0gZXhwb3J0cy5TdGVuY2lsT3BlcmF0aW9uIHx8IChleHBvcnRzLlN0ZW5jaWxPcGVyYXRpb24gPSB7fSkpO1xudmFyIFN0b3JlT3A7XG4oZnVuY3Rpb24gKFN0b3JlT3ApIHtcbiAgICBTdG9yZU9wW1wiU3RvcmVcIl0gPSBcInN0b3JlXCI7XG4gICAgU3RvcmVPcFtcIkNsZWFyXCJdID0gXCJjbGVhclwiO1xufSkoU3RvcmVPcCA9IGV4cG9ydHMuU3RvcmVPcCB8fCAoZXhwb3J0cy5TdG9yZU9wID0ge30pKTtcbnZhciBUZXh0dXJlRGltZW5zaW9uO1xuKGZ1bmN0aW9uIChUZXh0dXJlRGltZW5zaW9uKSB7XG4gICAgVGV4dHVyZURpbWVuc2lvbltcIkUxZFwiXSA9IFwiMWRcIjtcbiAgICBUZXh0dXJlRGltZW5zaW9uW1wiRTJkXCJdID0gXCIyZFwiO1xuICAgIFRleHR1cmVEaW1lbnNpb25bXCJFM2RcIl0gPSBcIjNkXCI7XG59KShUZXh0dXJlRGltZW5zaW9uID0gZXhwb3J0cy5UZXh0dXJlRGltZW5zaW9uIHx8IChleHBvcnRzLlRleHR1cmVEaW1lbnNpb24gPSB7fSkpO1xudmFyIFRleHR1cmVGb3JtYXQ7XG4oZnVuY3Rpb24gKFRleHR1cmVGb3JtYXQpIHtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUjhVbm9ybVwiXSA9IFwicjh1bm9ybVwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSOFNub3JtXCJdID0gXCJyOHNub3JtXCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlI4VWludFwiXSA9IFwicjh1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlI4U2ludFwiXSA9IFwicjhzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlIxNlVpbnRcIl0gPSBcInIxNnVpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUjE2U2ludFwiXSA9IFwicjE2c2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSMTZGbG9hdFwiXSA9IFwicjE2ZmxvYXRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkc4VW5vcm1cIl0gPSBcInJnOHVub3JtXCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHOFNub3JtXCJdID0gXCJyZzhzbm9ybVwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzhVaW50XCJdID0gXCJyZzh1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHOFNpbnRcIl0gPSBcInJnOHNpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUjMyVWludFwiXSA9IFwicjMydWludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSMzJTaW50XCJdID0gXCJyMzJzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlIzMkZsb2F0XCJdID0gXCJyMzJmbG9hdFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzE2VWludFwiXSA9IFwicmcxNnVpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkcxNlNpbnRcIl0gPSBcInJnMTZzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHMTZGbG9hdFwiXSA9IFwicmcxNmZsb2F0XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkE4VW5vcm1cIl0gPSBcInJnYmE4dW5vcm1cIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCQThVbm9ybVNSR0JcIl0gPSBcInJnYmE4dW5vcm0tc3JnYlwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBOFNub3JtXCJdID0gXCJyZ2JhOHNub3JtXCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkE4VWludFwiXSA9IFwicmdiYTh1aW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkE4U2ludFwiXSA9IFwicmdiYThzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIkJHUkE4VW5vcm1cIl0gPSBcImJncmE4dW5vcm1cIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiQkdSQThVbm9ybVNSR0JcIl0gPSBcImJncmE4dW5vcm0tc3JnYlwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0IxMEEyVW5vcm1cIl0gPSBcInJnYjEwYTJ1bm9ybVwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzExQjEwRmxvYXRcIl0gPSBcInJnMTFiMTBmbG9hdFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSRzMyVWludFwiXSA9IFwicmczMnVpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkczMlNpbnRcIl0gPSBcInJnMzJzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHMzJGbG9hdFwiXSA9IFwicmczMmZsb2F0XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkExNlVpbnRcIl0gPSBcInJnYmExNnVpbnRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCQTE2U2ludFwiXSA9IFwicmdiYTE2c2ludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBMTZGbG9hdFwiXSA9IFwicmdiYTE2ZmxvYXRcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiUkdCQTMyVWludFwiXSA9IFwicmdiYTMydWludFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJSR0JBMzJTaW50XCJdID0gXCJyZ2JhMzJzaW50XCI7XG4gICAgVGV4dHVyZUZvcm1hdFtcIlJHQkEzMkZsb2F0XCJdID0gXCJyZ2JhMzJmbG9hdFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJEZXB0aDMyRmxvYXRcIl0gPSBcImRlcHRoMzJmbG9hdFwiO1xuICAgIFRleHR1cmVGb3JtYXRbXCJEZXB0aDI0UGx1c1wiXSA9IFwiZGVwdGgyNHBsdXNcIjtcbiAgICBUZXh0dXJlRm9ybWF0W1wiRGVwdGgyNFBsdXNTdGVuY2lsOFwiXSA9IFwiZGVwdGgyNHBsdXMtc3RlbmNpbDhcIjtcbn0pKFRleHR1cmVGb3JtYXQgPSBleHBvcnRzLlRleHR1cmVGb3JtYXQgfHwgKGV4cG9ydHMuVGV4dHVyZUZvcm1hdCA9IHt9KSk7XG52YXIgVGV4dHVyZUNvbXBvbmVudFR5cGU7XG4oZnVuY3Rpb24gKFRleHR1cmVDb21wb25lbnRUeXBlKSB7XG4gICAgVGV4dHVyZUNvbXBvbmVudFR5cGVbXCJGbG9hdFwiXSA9IFwiZmxvYXRcIjtcbiAgICBUZXh0dXJlQ29tcG9uZW50VHlwZVtcIlNpbnRcIl0gPSBcInNpbnRcIjtcbiAgICBUZXh0dXJlQ29tcG9uZW50VHlwZVtcIlVpbnRcIl0gPSBcInVpbnRcIjtcbn0pKFRleHR1cmVDb21wb25lbnRUeXBlID0gZXhwb3J0cy5UZXh0dXJlQ29tcG9uZW50VHlwZSB8fCAoZXhwb3J0cy5UZXh0dXJlQ29tcG9uZW50VHlwZSA9IHt9KSk7XG52YXIgVGV4dHVyZVZpZXdEaW1lbnNpb247XG4oZnVuY3Rpb24gKFRleHR1cmVWaWV3RGltZW5zaW9uKSB7XG4gICAgVGV4dHVyZVZpZXdEaW1lbnNpb25bXCJFMWRcIl0gPSBcIjFkXCI7XG4gICAgVGV4dHVyZVZpZXdEaW1lbnNpb25bXCJFMmRcIl0gPSBcIjJkXCI7XG4gICAgVGV4dHVyZVZpZXdEaW1lbnNpb25bXCJFMmRBcnJheVwiXSA9IFwiMmQtYXJyYXlcIjtcbiAgICBUZXh0dXJlVmlld0RpbWVuc2lvbltcIkN1YmVcIl0gPSBcImN1YmVcIjtcbiAgICBUZXh0dXJlVmlld0RpbWVuc2lvbltcIkN1YmVBcnJheVwiXSA9IFwiY3ViZS1hcnJheVwiO1xuICAgIFRleHR1cmVWaWV3RGltZW5zaW9uW1wiRTNkXCJdID0gXCIzZFwiO1xufSkoVGV4dHVyZVZpZXdEaW1lbnNpb24gPSBleHBvcnRzLlRleHR1cmVWaWV3RGltZW5zaW9uIHx8IChleHBvcnRzLlRleHR1cmVWaWV3RGltZW5zaW9uID0ge30pKTtcbnZhciBWZXJ0ZXhGb3JtYXQ7XG4oZnVuY3Rpb24gKFZlcnRleEZvcm1hdCkge1xuICAgIFZlcnRleEZvcm1hdFtcIlVjaGFyMlwiXSA9IFwidWNoYXIyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVWNoYXI0XCJdID0gXCJ1Y2hhcjRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJDaGFyMlwiXSA9IFwiY2hhcjJcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJDaGFyNFwiXSA9IFwiY2hhcjRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVY2hhcjJOb3JtXCJdID0gXCJ1Y2hhcjJub3JtXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVWNoYXI0Tm9ybVwiXSA9IFwidWNoYXI0bm9ybVwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkNoYXIyTm9ybVwiXSA9IFwiY2hhcjJub3JtXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiQ2hhcjROb3JtXCJdID0gXCJjaGFyNG5vcm1cIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVc2hvcnQyXCJdID0gXCJ1c2hvcnQyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiVXNob3J0NFwiXSA9IFwidXNob3J0NFwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlNob3J0MlwiXSA9IFwic2hvcnQyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiU2hvcnQ0XCJdID0gXCJzaG9ydDRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVc2hvcnQyTm9ybVwiXSA9IFwidXNob3J0Mm5vcm1cIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVc2hvcnQ0Tm9ybVwiXSA9IFwidXNob3J0NG5vcm1cIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJTaG9ydDJOb3JtXCJdID0gXCJzaG9ydDJub3JtXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiU2hvcnQ0Tm9ybVwiXSA9IFwic2hvcnQ0bm9ybVwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkhhbGYyXCJdID0gXCJoYWxmMlwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkhhbGY0XCJdID0gXCJoYWxmNFwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkZsb2F0XCJdID0gXCJmbG9hdFwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkZsb2F0MlwiXSA9IFwiZmxvYXQyXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiRmxvYXQzXCJdID0gXCJmbG9hdDNcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJGbG9hdDRcIl0gPSBcImZsb2F0NFwiO1xuICAgIFZlcnRleEZvcm1hdFtcIlVpbnRcIl0gPSBcInVpbnRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVaW50MlwiXSA9IFwidWludDJcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVaW50M1wiXSA9IFwidWludDNcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJVaW50NFwiXSA9IFwidWludDRcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJJbnRcIl0gPSBcImludFwiO1xuICAgIFZlcnRleEZvcm1hdFtcIkludDJcIl0gPSBcImludDJcIjtcbiAgICBWZXJ0ZXhGb3JtYXRbXCJJbnQzXCJdID0gXCJpbnQzXCI7XG4gICAgVmVydGV4Rm9ybWF0W1wiSW50NFwiXSA9IFwiaW50NFwiO1xufSkoVmVydGV4Rm9ybWF0ID0gZXhwb3J0cy5WZXJ0ZXhGb3JtYXQgfHwgKGV4cG9ydHMuVmVydGV4Rm9ybWF0ID0ge30pKTtcbnZhciBUZXh0dXJlQXNwZWN0O1xuKGZ1bmN0aW9uIChUZXh0dXJlQXNwZWN0KSB7XG4gICAgVGV4dHVyZUFzcGVjdFtcIkFsbFwiXSA9IFwiYWxsXCI7XG4gICAgVGV4dHVyZUFzcGVjdFtcIlN0ZW5jaWxPbmx5XCJdID0gXCJzdGVuY2lsLW9ubHlcIjtcbiAgICBUZXh0dXJlQXNwZWN0W1wiRGVwdGhPbmx5XCJdID0gXCJkZXB0aC1vbmx5XCI7XG59KShUZXh0dXJlQXNwZWN0ID0gZXhwb3J0cy5UZXh0dXJlQXNwZWN0IHx8IChleHBvcnRzLlRleHR1cmVBc3BlY3QgPSB7fSkpO1xudmFyIENvbXBpbGF0aW9uTWVzc2FnZVR5cGU7XG4oZnVuY3Rpb24gKENvbXBpbGF0aW9uTWVzc2FnZVR5cGUpIHtcbiAgICBDb21waWxhdGlvbk1lc3NhZ2VUeXBlW1wiRXJyb3JcIl0gPSBcImVycm9yXCI7XG4gICAgQ29tcGlsYXRpb25NZXNzYWdlVHlwZVtcIldhcm5pbmdcIl0gPSBcIndhcm5pbmdcIjtcbiAgICBDb21waWxhdGlvbk1lc3NhZ2VUeXBlW1wiSW5mb1wiXSA9IFwiaW5mb1wiO1xufSkoQ29tcGlsYXRpb25NZXNzYWdlVHlwZSA9IGV4cG9ydHMuQ29tcGlsYXRpb25NZXNzYWdlVHlwZSB8fCAoZXhwb3J0cy5Db21waWxhdGlvbk1lc3NhZ2VUeXBlID0ge30pKTtcbnZhciBRdWVyeVR5cGU7XG4oZnVuY3Rpb24gKFF1ZXJ5VHlwZSkge1xuICAgIFF1ZXJ5VHlwZVtcIk9jY2x1c2lvblwiXSA9IFwib2NjbHVzaW9uXCI7XG59KShRdWVyeVR5cGUgPSBleHBvcnRzLlF1ZXJ5VHlwZSB8fCAoZXhwb3J0cy5RdWVyeVR5cGUgPSB7fSkpO1xuLy8gQml0IGZpZWxkc1xudmFyIEJ1ZmZlclVzYWdlO1xuKGZ1bmN0aW9uIChCdWZmZXJVc2FnZSkge1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiTWFwUmVhZFwiXSA9IDFdID0gXCJNYXBSZWFkXCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJNYXBXcml0ZVwiXSA9IDJdID0gXCJNYXBXcml0ZVwiO1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiQ29weVNyY1wiXSA9IDRdID0gXCJDb3B5U3JjXCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJDb3B5RHN0XCJdID0gOF0gPSBcIkNvcHlEc3RcIjtcbiAgICBCdWZmZXJVc2FnZVtCdWZmZXJVc2FnZVtcIkluZGV4XCJdID0gMTZdID0gXCJJbmRleFwiO1xuICAgIEJ1ZmZlclVzYWdlW0J1ZmZlclVzYWdlW1wiVmVydGV4XCJdID0gMzJdID0gXCJWZXJ0ZXhcIjtcbiAgICBCdWZmZXJVc2FnZVtCdWZmZXJVc2FnZVtcIlVuaWZvcm1cIl0gPSA2NF0gPSBcIlVuaWZvcm1cIjtcbiAgICBCdWZmZXJVc2FnZVtCdWZmZXJVc2FnZVtcIlN0b3JhZ2VcIl0gPSAxMjhdID0gXCJTdG9yYWdlXCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJJbmRpcmVjdFwiXSA9IDI1Nl0gPSBcIkluZGlyZWN0XCI7XG4gICAgQnVmZmVyVXNhZ2VbQnVmZmVyVXNhZ2VbXCJRdWVyeVJlc29sdmVcIl0gPSA1MTJdID0gXCJRdWVyeVJlc29sdmVcIjtcbn0pKEJ1ZmZlclVzYWdlID0gZXhwb3J0cy5CdWZmZXJVc2FnZSB8fCAoZXhwb3J0cy5CdWZmZXJVc2FnZSA9IHt9KSk7XG52YXIgQ29sb3JXcml0ZTtcbihmdW5jdGlvbiAoQ29sb3JXcml0ZSkge1xuICAgIENvbG9yV3JpdGVbQ29sb3JXcml0ZVtcIlJlZFwiXSA9IDFdID0gXCJSZWRcIjtcbiAgICBDb2xvcldyaXRlW0NvbG9yV3JpdGVbXCJHcmVlblwiXSA9IDJdID0gXCJHcmVlblwiO1xuICAgIENvbG9yV3JpdGVbQ29sb3JXcml0ZVtcIkJsdWVcIl0gPSA0XSA9IFwiQmx1ZVwiO1xuICAgIENvbG9yV3JpdGVbQ29sb3JXcml0ZVtcIkFscGhhXCJdID0gOF0gPSBcIkFscGhhXCI7XG4gICAgQ29sb3JXcml0ZVtDb2xvcldyaXRlW1wiQWxsXCJdID0gMTVdID0gXCJBbGxcIjtcbn0pKENvbG9yV3JpdGUgPSBleHBvcnRzLkNvbG9yV3JpdGUgfHwgKGV4cG9ydHMuQ29sb3JXcml0ZSA9IHt9KSk7XG52YXIgU2hhZGVyU3RhZ2U7XG4oZnVuY3Rpb24gKFNoYWRlclN0YWdlKSB7XG4gICAgU2hhZGVyU3RhZ2VbU2hhZGVyU3RhZ2VbXCJWZXJ0ZXhcIl0gPSAxXSA9IFwiVmVydGV4XCI7XG4gICAgU2hhZGVyU3RhZ2VbU2hhZGVyU3RhZ2VbXCJGcmFnbWVudFwiXSA9IDJdID0gXCJGcmFnbWVudFwiO1xuICAgIFNoYWRlclN0YWdlW1NoYWRlclN0YWdlW1wiQ29tcHV0ZVwiXSA9IDRdID0gXCJDb21wdXRlXCI7XG59KShTaGFkZXJTdGFnZSA9IGV4cG9ydHMuU2hhZGVyU3RhZ2UgfHwgKGV4cG9ydHMuU2hhZGVyU3RhZ2UgPSB7fSkpO1xudmFyIFRleHR1cmVVc2FnZTtcbihmdW5jdGlvbiAoVGV4dHVyZVVzYWdlKSB7XG4gICAgVGV4dHVyZVVzYWdlW1RleHR1cmVVc2FnZVtcIkNvcHlTcmNcIl0gPSAxXSA9IFwiQ29weVNyY1wiO1xuICAgIFRleHR1cmVVc2FnZVtUZXh0dXJlVXNhZ2VbXCJDb3B5RHN0XCJdID0gMl0gPSBcIkNvcHlEc3RcIjtcbiAgICBUZXh0dXJlVXNhZ2VbVGV4dHVyZVVzYWdlW1wiU2FtcGxlZFwiXSA9IDRdID0gXCJTYW1wbGVkXCI7XG4gICAgVGV4dHVyZVVzYWdlW1RleHR1cmVVc2FnZVtcIlN0b3JhZ2VcIl0gPSA4XSA9IFwiU3RvcmFnZVwiO1xuICAgIFRleHR1cmVVc2FnZVtUZXh0dXJlVXNhZ2VbXCJPdXRwdXRBdHRhY2htZW50XCJdID0gMTZdID0gXCJPdXRwdXRBdHRhY2htZW50XCI7XG59KShUZXh0dXJlVXNhZ2UgPSBleHBvcnRzLlRleHR1cmVVc2FnZSB8fCAoZXhwb3J0cy5UZXh0dXJlVXNhZ2UgPSB7fSkpO1xudmFyIE1hcE1vZGU7XG4oZnVuY3Rpb24gKE1hcE1vZGUpIHtcbiAgICBNYXBNb2RlW01hcE1vZGVbXCJSZWFkXCJdID0gMV0gPSBcIlJlYWRcIjtcbiAgICBNYXBNb2RlW01hcE1vZGVbXCJXcml0ZVwiXSA9IDJdID0gXCJXcml0ZVwiO1xufSkoTWFwTW9kZSA9IGV4cG9ydHMuTWFwTW9kZSB8fCAoZXhwb3J0cy5NYXBNb2RlID0ge30pKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\n"); /***/ }), /***/ "./node_modules/_color-convert@1.9.3@color-convert/conversions.js": /*!************************************************************************!*\ !*** ./node_modules/_color-convert@1.9.3@color-convert/conversions.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* MIT license */\nvar cssKeywords = __webpack_require__(/*! color-name */ \"./node_modules/_color-name@1.1.3@color-name/index.js\");\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yLWNvbnZlcnRAMS45LjNAY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qcz9kNWI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsd0VBQVk7O0FBRXRDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxRQUFRLDRCQUE0QjtBQUNwQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDZCQUE2QjtBQUNwQyxXQUFXLGlDQUFpQztBQUM1QyxVQUFVLGdDQUFnQztBQUMxQyxXQUFXLGlDQUFpQztBQUM1QyxPQUFPLHFDQUFxQztBQUM1QyxTQUFTLDJDQUEyQztBQUNwRCxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsZ0JBQWdCO0FBQ3JFLG1EQUFtRCxjQUFjO0FBQ2pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBLEVBQUU7QUFDRjtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU8sUUFBUTtBQUMvQixnQkFBZ0IsT0FBTyxRQUFRO0FBQy9CLGlCQUFpQixPQUFPLE9BQU87QUFDL0IsaUJBQWlCLE9BQU8sT0FBTztBQUMvQixnQkFBZ0IsUUFBUSxPQUFPO0FBQy9CLGdCQUFnQixRQUFRLE9BQU87QUFDL0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFOztBQUV0RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQStDLEVBQUUsVUFBVSxFQUFFO0FBQzdEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhO0FBQzVCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2NvbG9yLWNvbnZlcnRAMS45LjNAY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIE1JVCBsaWNlbnNlICovXG52YXIgY3NzS2V5d29yZHMgPSByZXF1aXJlKCdjb2xvci1uYW1lJyk7XG5cbi8vIE5PVEU6IGNvbnZlcnNpb25zIHNob3VsZCBvbmx5IHJldHVybiBwcmltaXRpdmUgdmFsdWVzIChpLmUuIGFycmF5cywgb3Jcbi8vICAgICAgIHZhbHVlcyB0aGF0IGdpdmUgY29ycmVjdCBgdHlwZW9mYCByZXN1bHRzKS5cbi8vICAgICAgIGRvIG5vdCB1c2UgYm94IHZhbHVlcyB0eXBlcyAoaS5lLiBOdW1iZXIoKSwgU3RyaW5nKCksIGV0Yy4pXG5cbnZhciByZXZlcnNlS2V5d29yZHMgPSB7fTtcbmZvciAodmFyIGtleSBpbiBjc3NLZXl3b3Jkcykge1xuXHRpZiAoY3NzS2V5d29yZHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdHJldmVyc2VLZXl3b3Jkc1tjc3NLZXl3b3Jkc1trZXldXSA9IGtleTtcblx0fVxufVxuXG52YXIgY29udmVydCA9IG1vZHVsZS5leHBvcnRzID0ge1xuXHRyZ2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAncmdiJ30sXG5cdGhzbDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc2wnfSxcblx0aHN2OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2hzdid9LFxuXHRod2I6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHdiJ30sXG5cdGNteWs6IHtjaGFubmVsczogNCwgbGFiZWxzOiAnY215ayd9LFxuXHR4eXo6IHtjaGFubmVsczogMywgbGFiZWxzOiAneHl6J30sXG5cdGxhYjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsYWInfSxcblx0bGNoOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2xjaCd9LFxuXHRoZXg6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2hleCddfSxcblx0a2V5d29yZDoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsna2V5d29yZCddfSxcblx0YW5zaTE2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMTYnXX0sXG5cdGFuc2kyNTY6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2Fuc2kyNTYnXX0sXG5cdGhjZzoge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsnaCcsICdjJywgJ2cnXX0sXG5cdGFwcGxlOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogWydyMTYnLCAnZzE2JywgJ2IxNiddfSxcblx0Z3JheToge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnZ3JheSddfVxufTtcblxuLy8gaGlkZSAuY2hhbm5lbHMgYW5kIC5sYWJlbHMgcHJvcGVydGllc1xuZm9yICh2YXIgbW9kZWwgaW4gY29udmVydCkge1xuXHRpZiAoY29udmVydC5oYXNPd25Qcm9wZXJ0eShtb2RlbCkpIHtcblx0XHRpZiAoISgnY2hhbm5lbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHRcdH1cblxuXHRcdGlmICghKCdsYWJlbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGNoYW5uZWwgbGFiZWxzIHByb3BlcnR5OiAnICsgbW9kZWwpO1xuXHRcdH1cblxuXHRcdGlmIChjb252ZXJ0W21vZGVsXS5sYWJlbHMubGVuZ3RoICE9PSBjb252ZXJ0W21vZGVsXS5jaGFubmVscykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdjaGFubmVsIGFuZCBsYWJlbCBjb3VudHMgbWlzbWF0Y2g6ICcgKyBtb2RlbCk7XG5cdFx0fVxuXG5cdFx0dmFyIGNoYW5uZWxzID0gY29udmVydFttb2RlbF0uY2hhbm5lbHM7XG5cdFx0dmFyIGxhYmVscyA9IGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0XHRkZWxldGUgY29udmVydFttb2RlbF0uY2hhbm5lbHM7XG5cdFx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY2hhbm5lbHN9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFttb2RlbF0sICdsYWJlbHMnLCB7dmFsdWU6IGxhYmVsc30pO1xuXHR9XG59XG5cbmNvbnZlcnQucmdiLmhzbCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuXHR2YXIgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG5cdHZhciBkZWx0YSA9IG1heCAtIG1pbjtcblx0dmFyIGg7XG5cdHZhciBzO1xuXHR2YXIgbDtcblxuXHRpZiAobWF4ID09PSBtaW4pIHtcblx0XHRoID0gMDtcblx0fSBlbHNlIGlmIChyID09PSBtYXgpIHtcblx0XHRoID0gKGcgLSBiKSAvIGRlbHRhO1xuXHR9IGVsc2UgaWYgKGcgPT09IG1heCkge1xuXHRcdGggPSAyICsgKGIgLSByKSAvIGRlbHRhO1xuXHR9IGVsc2UgaWYgKGIgPT09IG1heCkge1xuXHRcdGggPSA0ICsgKHIgLSBnKSAvIGRlbHRhO1xuXHR9XG5cblx0aCA9IE1hdGgubWluKGggKiA2MCwgMzYwKTtcblxuXHRpZiAoaCA8IDApIHtcblx0XHRoICs9IDM2MDtcblx0fVxuXG5cdGwgPSAobWluICsgbWF4KSAvIDI7XG5cblx0aWYgKG1heCA9PT0gbWluKSB7XG5cdFx0cyA9IDA7XG5cdH0gZWxzZSBpZiAobCA8PSAwLjUpIHtcblx0XHRzID0gZGVsdGEgLyAobWF4ICsgbWluKTtcblx0fSBlbHNlIHtcblx0XHRzID0gZGVsdGEgLyAoMiAtIG1heCAtIG1pbik7XG5cdH1cblxuXHRyZXR1cm4gW2gsIHMgKiAxMDAsIGwgKiAxMDBdO1xufTtcblxuY29udmVydC5yZ2IuaHN2ID0gZnVuY3Rpb24gKHJnYikge1xuXHR2YXIgcmRpZjtcblx0dmFyIGdkaWY7XG5cdHZhciBiZGlmO1xuXHR2YXIgaDtcblx0dmFyIHM7XG5cblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIHYgPSBNYXRoLm1heChyLCBnLCBiKTtcblx0dmFyIGRpZmYgPSB2IC0gTWF0aC5taW4ociwgZywgYik7XG5cdHZhciBkaWZmYyA9IGZ1bmN0aW9uIChjKSB7XG5cdFx0cmV0dXJuICh2IC0gYykgLyA2IC8gZGlmZiArIDEgLyAyO1xuXHR9O1xuXG5cdGlmIChkaWZmID09PSAwKSB7XG5cdFx0aCA9IHMgPSAwO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkaWZmIC8gdjtcblx0XHRyZGlmID0gZGlmZmMocik7XG5cdFx0Z2RpZiA9IGRpZmZjKGcpO1xuXHRcdGJkaWYgPSBkaWZmYyhiKTtcblxuXHRcdGlmIChyID09PSB2KSB7XG5cdFx0XHRoID0gYmRpZiAtIGdkaWY7XG5cdFx0fSBlbHNlIGlmIChnID09PSB2KSB7XG5cdFx0XHRoID0gKDEgLyAzKSArIHJkaWYgLSBiZGlmO1xuXHRcdH0gZWxzZSBpZiAoYiA9PT0gdikge1xuXHRcdFx0aCA9ICgyIC8gMykgKyBnZGlmIC0gcmRpZjtcblx0XHR9XG5cdFx0aWYgKGggPCAwKSB7XG5cdFx0XHRoICs9IDE7XG5cdFx0fSBlbHNlIGlmIChoID4gMSkge1xuXHRcdFx0aCAtPSAxO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBbXG5cdFx0aCAqIDM2MCxcblx0XHRzICogMTAwLFxuXHRcdHYgKiAxMDBcblx0XTtcbn07XG5cbmNvbnZlcnQucmdiLmh3YiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF07XG5cdHZhciBnID0gcmdiWzFdO1xuXHR2YXIgYiA9IHJnYlsyXTtcblx0dmFyIGggPSBjb252ZXJ0LnJnYi5oc2wocmdiKVswXTtcblx0dmFyIHcgPSAxIC8gMjU1ICogTWF0aC5taW4ociwgTWF0aC5taW4oZywgYikpO1xuXG5cdGIgPSAxIC0gMSAvIDI1NSAqIE1hdGgubWF4KHIsIE1hdGgubWF4KGcsIGIpKTtcblxuXHRyZXR1cm4gW2gsIHcgKiAxMDAsIGIgKiAxMDBdO1xufTtcblxuY29udmVydC5yZ2IuY215ayA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIGM7XG5cdHZhciBtO1xuXHR2YXIgeTtcblx0dmFyIGs7XG5cblx0ayA9IE1hdGgubWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xuXHRjID0gKDEgLSByIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdG0gPSAoMSAtIGcgLSBrKSAvICgxIC0gaykgfHwgMDtcblx0eSA9ICgxIC0gYiAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXG5cdHJldHVybiBbYyAqIDEwMCwgbSAqIDEwMCwgeSAqIDEwMCwgayAqIDEwMF07XG59O1xuXG4vKipcbiAqIFNlZSBodHRwczovL2VuLm0ud2lraXBlZGlhLm9yZy93aWtpL0V1Y2xpZGVhbl9kaXN0YW5jZSNTcXVhcmVkX0V1Y2xpZGVhbl9kaXN0YW5jZVxuICogKi9cbmZ1bmN0aW9uIGNvbXBhcmF0aXZlRGlzdGFuY2UoeCwgeSkge1xuXHRyZXR1cm4gKFxuXHRcdE1hdGgucG93KHhbMF0gLSB5WzBdLCAyKSArXG5cdFx0TWF0aC5wb3coeFsxXSAtIHlbMV0sIDIpICtcblx0XHRNYXRoLnBvdyh4WzJdIC0geVsyXSwgMilcblx0KTtcbn1cblxuY29udmVydC5yZ2Iua2V5d29yZCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHJldmVyc2VkID0gcmV2ZXJzZUtleXdvcmRzW3JnYl07XG5cdGlmIChyZXZlcnNlZCkge1xuXHRcdHJldHVybiByZXZlcnNlZDtcblx0fVxuXG5cdHZhciBjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gSW5maW5pdHk7XG5cdHZhciBjdXJyZW50Q2xvc2VzdEtleXdvcmQ7XG5cblx0Zm9yICh2YXIga2V5d29yZCBpbiBjc3NLZXl3b3Jkcykge1xuXHRcdGlmIChjc3NLZXl3b3Jkcy5oYXNPd25Qcm9wZXJ0eShrZXl3b3JkKSkge1xuXHRcdFx0dmFyIHZhbHVlID0gY3NzS2V5d29yZHNba2V5d29yZF07XG5cblx0XHRcdC8vIENvbXB1dGUgY29tcGFyYXRpdmUgZGlzdGFuY2Vcblx0XHRcdHZhciBkaXN0YW5jZSA9IGNvbXBhcmF0aXZlRGlzdGFuY2UocmdiLCB2YWx1ZSk7XG5cblx0XHRcdC8vIENoZWNrIGlmIGl0cyBsZXNzLCBpZiBzbyBzZXQgYXMgY2xvc2VzdFxuXHRcdFx0aWYgKGRpc3RhbmNlIDwgY3VycmVudENsb3Nlc3REaXN0YW5jZSkge1xuXHRcdFx0XHRjdXJyZW50Q2xvc2VzdERpc3RhbmNlID0gZGlzdGFuY2U7XG5cdFx0XHRcdGN1cnJlbnRDbG9zZXN0S2V5d29yZCA9IGtleXdvcmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbn07XG5cbmNvbnZlcnQua2V5d29yZC5yZ2IgPSBmdW5jdGlvbiAoa2V5d29yZCkge1xuXHRyZXR1cm4gY3NzS2V5d29yZHNba2V5d29yZF07XG59O1xuXG5jb252ZXJ0LnJnYi54eXogPSBmdW5jdGlvbiAocmdiKSB7XG5cdHZhciByID0gcmdiWzBdIC8gMjU1O1xuXHR2YXIgZyA9IHJnYlsxXSAvIDI1NTtcblx0dmFyIGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Ly8gYXNzdW1lIHNSR0Jcblx0ciA9IHIgPiAwLjA0MDQ1ID8gTWF0aC5wb3coKChyICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpIDogKHIgLyAxMi45Mik7XG5cdGcgPSBnID4gMC4wNDA0NSA/IE1hdGgucG93KCgoZyArIDAuMDU1KSAvIDEuMDU1KSwgMi40KSA6IChnIC8gMTIuOTIpO1xuXHRiID0gYiA+IDAuMDQwNDUgPyBNYXRoLnBvdygoKGIgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCkgOiAoYiAvIDEyLjkyKTtcblxuXHR2YXIgeCA9IChyICogMC40MTI0KSArIChnICogMC4zNTc2KSArIChiICogMC4xODA1KTtcblx0dmFyIHkgPSAociAqIDAuMjEyNikgKyAoZyAqIDAuNzE1MikgKyAoYiAqIDAuMDcyMik7XG5cdHZhciB6ID0gKHIgKiAwLjAxOTMpICsgKGcgKiAwLjExOTIpICsgKGIgKiAwLjk1MDUpO1xuXG5cdHJldHVybiBbeCAqIDEwMCwgeSAqIDEwMCwgeiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5sYWIgPSBmdW5jdGlvbiAocmdiKSB7XG5cdHZhciB4eXogPSBjb252ZXJ0LnJnYi54eXoocmdiKTtcblx0dmFyIHggPSB4eXpbMF07XG5cdHZhciB5ID0geHl6WzFdO1xuXHR2YXIgeiA9IHh5elsyXTtcblx0dmFyIGw7XG5cdHZhciBhO1xuXHR2YXIgYjtcblxuXHR4IC89IDk1LjA0Nztcblx0eSAvPSAxMDA7XG5cdHogLz0gMTA4Ljg4MztcblxuXHR4ID0geCA+IDAuMDA4ODU2ID8gTWF0aC5wb3coeCwgMSAvIDMpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gTWF0aC5wb3coeSwgMSAvIDMpIDogKDcuNzg3ICogeSkgKyAoMTYgLyAxMTYpO1xuXHR6ID0geiA+IDAuMDA4ODU2ID8gTWF0aC5wb3coeiwgMSAvIDMpIDogKDcuNzg3ICogeikgKyAoMTYgLyAxMTYpO1xuXG5cdGwgPSAoMTE2ICogeSkgLSAxNjtcblx0YSA9IDUwMCAqICh4IC0geSk7XG5cdGIgPSAyMDAgKiAoeSAtIHopO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LmhzbC5yZ2IgPSBmdW5jdGlvbiAoaHNsKSB7XG5cdHZhciBoID0gaHNsWzBdIC8gMzYwO1xuXHR2YXIgcyA9IGhzbFsxXSAvIDEwMDtcblx0dmFyIGwgPSBoc2xbMl0gLyAxMDA7XG5cdHZhciB0MTtcblx0dmFyIHQyO1xuXHR2YXIgdDM7XG5cdHZhciByZ2I7XG5cdHZhciB2YWw7XG5cblx0aWYgKHMgPT09IDApIHtcblx0XHR2YWwgPSBsICogMjU1O1xuXHRcdHJldHVybiBbdmFsLCB2YWwsIHZhbF07XG5cdH1cblxuXHRpZiAobCA8IDAuNSkge1xuXHRcdHQyID0gbCAqICgxICsgcyk7XG5cdH0gZWxzZSB7XG5cdFx0dDIgPSBsICsgcyAtIGwgKiBzO1xuXHR9XG5cblx0dDEgPSAyICogbCAtIHQyO1xuXG5cdHJnYiA9IFswLCAwLCAwXTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHR0MyA9IGggKyAxIC8gMyAqIC0oaSAtIDEpO1xuXHRcdGlmICh0MyA8IDApIHtcblx0XHRcdHQzKys7XG5cdFx0fVxuXHRcdGlmICh0MyA+IDEpIHtcblx0XHRcdHQzLS07XG5cdFx0fVxuXG5cdFx0aWYgKDYgKiB0MyA8IDEpIHtcblx0XHRcdHZhbCA9IHQxICsgKHQyIC0gdDEpICogNiAqIHQzO1xuXHRcdH0gZWxzZSBpZiAoMiAqIHQzIDwgMSkge1xuXHRcdFx0dmFsID0gdDI7XG5cdFx0fSBlbHNlIGlmICgzICogdDMgPCAyKSB7XG5cdFx0XHR2YWwgPSB0MSArICh0MiAtIHQxKSAqICgyIC8gMyAtIHQzKSAqIDY7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbCA9IHQxO1xuXHRcdH1cblxuXHRcdHJnYltpXSA9IHZhbCAqIDI1NTtcblx0fVxuXG5cdHJldHVybiByZ2I7XG59O1xuXG5jb252ZXJ0LmhzbC5oc3YgPSBmdW5jdGlvbiAoaHNsKSB7XG5cdHZhciBoID0gaHNsWzBdO1xuXHR2YXIgcyA9IGhzbFsxXSAvIDEwMDtcblx0dmFyIGwgPSBoc2xbMl0gLyAxMDA7XG5cdHZhciBzbWluID0gcztcblx0dmFyIGxtaW4gPSBNYXRoLm1heChsLCAwLjAxKTtcblx0dmFyIHN2O1xuXHR2YXIgdjtcblxuXHRsICo9IDI7XG5cdHMgKj0gKGwgPD0gMSkgPyBsIDogMiAtIGw7XG5cdHNtaW4gKj0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuXHR2ID0gKGwgKyBzKSAvIDI7XG5cdHN2ID0gbCA9PT0gMCA/ICgyICogc21pbikgLyAobG1pbiArIHNtaW4pIDogKDIgKiBzKSAvIChsICsgcyk7XG5cblx0cmV0dXJuIFtoLCBzdiAqIDEwMCwgdiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5yZ2IgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdHZhciBoID0gaHN2WzBdIC8gNjA7XG5cdHZhciBzID0gaHN2WzFdIC8gMTAwO1xuXHR2YXIgdiA9IGhzdlsyXSAvIDEwMDtcblx0dmFyIGhpID0gTWF0aC5mbG9vcihoKSAlIDY7XG5cblx0dmFyIGYgPSBoIC0gTWF0aC5mbG9vcihoKTtcblx0dmFyIHAgPSAyNTUgKiB2ICogKDEgLSBzKTtcblx0dmFyIHEgPSAyNTUgKiB2ICogKDEgLSAocyAqIGYpKTtcblx0dmFyIHQgPSAyNTUgKiB2ICogKDEgLSAocyAqICgxIC0gZikpKTtcblx0diAqPSAyNTU7XG5cblx0c3dpdGNoIChoaSkge1xuXHRcdGNhc2UgMDpcblx0XHRcdHJldHVybiBbdiwgdCwgcF07XG5cdFx0Y2FzZSAxOlxuXHRcdFx0cmV0dXJuIFtxLCB2LCBwXTtcblx0XHRjYXNlIDI6XG5cdFx0XHRyZXR1cm4gW3AsIHYsIHRdO1xuXHRcdGNhc2UgMzpcblx0XHRcdHJldHVybiBbcCwgcSwgdl07XG5cdFx0Y2FzZSA0OlxuXHRcdFx0cmV0dXJuIFt0LCBwLCB2XTtcblx0XHRjYXNlIDU6XG5cdFx0XHRyZXR1cm4gW3YsIHAsIHFdO1xuXHR9XG59O1xuXG5jb252ZXJ0Lmhzdi5oc2wgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdHZhciBoID0gaHN2WzBdO1xuXHR2YXIgcyA9IGhzdlsxXSAvIDEwMDtcblx0dmFyIHYgPSBoc3ZbMl0gLyAxMDA7XG5cdHZhciB2bWluID0gTWF0aC5tYXgodiwgMC4wMSk7XG5cdHZhciBsbWluO1xuXHR2YXIgc2w7XG5cdHZhciBsO1xuXG5cdGwgPSAoMiAtIHMpICogdjtcblx0bG1pbiA9ICgyIC0gcykgKiB2bWluO1xuXHRzbCA9IHMgKiB2bWluO1xuXHRzbCAvPSAobG1pbiA8PSAxKSA/IGxtaW4gOiAyIC0gbG1pbjtcblx0c2wgPSBzbCB8fCAwO1xuXHRsIC89IDI7XG5cblx0cmV0dXJuIFtoLCBzbCAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtY29sb3IvI2h3Yi10by1yZ2JcbmNvbnZlcnQuaHdiLnJnYiA9IGZ1bmN0aW9uIChod2IpIHtcblx0dmFyIGggPSBod2JbMF0gLyAzNjA7XG5cdHZhciB3aCA9IGh3YlsxXSAvIDEwMDtcblx0dmFyIGJsID0gaHdiWzJdIC8gMTAwO1xuXHR2YXIgcmF0aW8gPSB3aCArIGJsO1xuXHR2YXIgaTtcblx0dmFyIHY7XG5cdHZhciBmO1xuXHR2YXIgbjtcblxuXHQvLyB3aCArIGJsIGNhbnQgYmUgPiAxXG5cdGlmIChyYXRpbyA+IDEpIHtcblx0XHR3aCAvPSByYXRpbztcblx0XHRibCAvPSByYXRpbztcblx0fVxuXG5cdGkgPSBNYXRoLmZsb29yKDYgKiBoKTtcblx0diA9IDEgLSBibDtcblx0ZiA9IDYgKiBoIC0gaTtcblxuXHRpZiAoKGkgJiAweDAxKSAhPT0gMCkge1xuXHRcdGYgPSAxIC0gZjtcblx0fVxuXG5cdG4gPSB3aCArIGYgKiAodiAtIHdoKTsgLy8gbGluZWFyIGludGVycG9sYXRpb25cblxuXHR2YXIgcjtcblx0dmFyIGc7XG5cdHZhciBiO1xuXHRzd2l0Y2ggKGkpIHtcblx0XHRkZWZhdWx0OlxuXHRcdGNhc2UgNjpcblx0XHRjYXNlIDA6IHIgPSB2OyBnID0gbjsgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDE6IHIgPSBuOyBnID0gdjsgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDI6IHIgPSB3aDsgZyA9IHY7IGIgPSBuOyBicmVhaztcblx0XHRjYXNlIDM6IHIgPSB3aDsgZyA9IG47IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDQ6IHIgPSBuOyBnID0gd2g7IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDU6IHIgPSB2OyBnID0gd2g7IGIgPSBuOyBicmVhaztcblx0fVxuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0LmNteWsucmdiID0gZnVuY3Rpb24gKGNteWspIHtcblx0dmFyIGMgPSBjbXlrWzBdIC8gMTAwO1xuXHR2YXIgbSA9IGNteWtbMV0gLyAxMDA7XG5cdHZhciB5ID0gY215a1syXSAvIDEwMDtcblx0dmFyIGsgPSBjbXlrWzNdIC8gMTAwO1xuXHR2YXIgcjtcblx0dmFyIGc7XG5cdHZhciBiO1xuXG5cdHIgPSAxIC0gTWF0aC5taW4oMSwgYyAqICgxIC0gaykgKyBrKTtcblx0ZyA9IDEgLSBNYXRoLm1pbigxLCBtICogKDEgLSBrKSArIGspO1xuXHRiID0gMSAtIE1hdGgubWluKDEsIHkgKiAoMSAtIGspICsgayk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LnJnYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0dmFyIHggPSB4eXpbMF0gLyAxMDA7XG5cdHZhciB5ID0geHl6WzFdIC8gMTAwO1xuXHR2YXIgeiA9IHh5elsyXSAvIDEwMDtcblx0dmFyIHI7XG5cdHZhciBnO1xuXHR2YXIgYjtcblxuXHRyID0gKHggKiAzLjI0MDYpICsgKHkgKiAtMS41MzcyKSArICh6ICogLTAuNDk4Nik7XG5cdGcgPSAoeCAqIC0wLjk2ODkpICsgKHkgKiAxLjg3NTgpICsgKHogKiAwLjA0MTUpO1xuXHRiID0gKHggKiAwLjA1NTcpICsgKHkgKiAtMC4yMDQwKSArICh6ICogMS4wNTcwKTtcblxuXHQvLyBhc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIE1hdGgucG93KHIsIDEuMCAvIDIuNCkpIC0gMC4wNTUpXG5cdFx0OiByICogMTIuOTI7XG5cblx0ZyA9IGcgPiAwLjAwMzEzMDhcblx0XHQ/ICgoMS4wNTUgKiBNYXRoLnBvdyhnLCAxLjAgLyAyLjQpKSAtIDAuMDU1KVxuXHRcdDogZyAqIDEyLjkyO1xuXG5cdGIgPSBiID4gMC4wMDMxMzA4XG5cdFx0PyAoKDEuMDU1ICogTWF0aC5wb3coYiwgMS4wIC8gMi40KSkgLSAwLjA1NSlcblx0XHQ6IGIgKiAxMi45MjtcblxuXHRyID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgciksIDEpO1xuXHRnID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgZyksIDEpO1xuXHRiID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYiksIDEpO1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0Lnh5ei5sYWIgPSBmdW5jdGlvbiAoeHl6KSB7XG5cdHZhciB4ID0geHl6WzBdO1xuXHR2YXIgeSA9IHh5elsxXTtcblx0dmFyIHogPSB4eXpbMl07XG5cdHZhciBsO1xuXHR2YXIgYTtcblx0dmFyIGI7XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/IE1hdGgucG93KHgsIDEgLyAzKSA6ICg3Ljc4NyAqIHgpICsgKDE2IC8gMTE2KTtcblx0eSA9IHkgPiAwLjAwODg1NiA/IE1hdGgucG93KHksIDEgLyAzKSA6ICg3Ljc4NyAqIHkpICsgKDE2IC8gMTE2KTtcblx0eiA9IHogPiAwLjAwODg1NiA/IE1hdGgucG93KHosIDEgLyAzKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRsID0gKDExNiAqIHkpIC0gMTY7XG5cdGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5sYWIueHl6ID0gZnVuY3Rpb24gKGxhYikge1xuXHR2YXIgbCA9IGxhYlswXTtcblx0dmFyIGEgPSBsYWJbMV07XG5cdHZhciBiID0gbGFiWzJdO1xuXHR2YXIgeDtcblx0dmFyIHk7XG5cdHZhciB6O1xuXG5cdHkgPSAobCArIDE2KSAvIDExNjtcblx0eCA9IGEgLyA1MDAgKyB5O1xuXHR6ID0geSAtIGIgLyAyMDA7XG5cblx0dmFyIHkyID0gTWF0aC5wb3coeSwgMyk7XG5cdHZhciB4MiA9IE1hdGgucG93KHgsIDMpO1xuXHR2YXIgejIgPSBNYXRoLnBvdyh6LCAzKTtcblx0eSA9IHkyID4gMC4wMDg4NTYgPyB5MiA6ICh5IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHggPSB4MiA+IDAuMDA4ODU2ID8geDIgOiAoeCAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXHR6ID0gejIgPiAwLjAwODg1NiA/IHoyIDogKHogLSAxNiAvIDExNikgLyA3Ljc4NztcblxuXHR4ICo9IDk1LjA0Nztcblx0eSAqPSAxMDA7XG5cdHogKj0gMTA4Ljg4MztcblxuXHRyZXR1cm4gW3gsIHksIHpdO1xufTtcblxuY29udmVydC5sYWIubGNoID0gZnVuY3Rpb24gKGxhYikge1xuXHR2YXIgbCA9IGxhYlswXTtcblx0dmFyIGEgPSBsYWJbMV07XG5cdHZhciBiID0gbGFiWzJdO1xuXHR2YXIgaHI7XG5cdHZhciBoO1xuXHR2YXIgYztcblxuXHRociA9IE1hdGguYXRhbjIoYiwgYSk7XG5cdGggPSBociAqIDM2MCAvIDIgLyBNYXRoLlBJO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0YyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTtcblxuXHRyZXR1cm4gW2wsIGMsIGhdO1xufTtcblxuY29udmVydC5sY2gubGFiID0gZnVuY3Rpb24gKGxjaCkge1xuXHR2YXIgbCA9IGxjaFswXTtcblx0dmFyIGMgPSBsY2hbMV07XG5cdHZhciBoID0gbGNoWzJdO1xuXHR2YXIgYTtcblx0dmFyIGI7XG5cdHZhciBocjtcblxuXHRociA9IGggLyAzNjAgKiAyICogTWF0aC5QSTtcblx0YSA9IGMgKiBNYXRoLmNvcyhocik7XG5cdGIgPSBjICogTWF0aC5zaW4oaHIpO1xuXG5cdHJldHVybiBbbCwgYSwgYl07XG59O1xuXG5jb252ZXJ0LnJnYi5hbnNpMTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHR2YXIgciA9IGFyZ3NbMF07XG5cdHZhciBnID0gYXJnc1sxXTtcblx0dmFyIGIgPSBhcmdzWzJdO1xuXHR2YXIgdmFsdWUgPSAxIGluIGFyZ3VtZW50cyA/IGFyZ3VtZW50c1sxXSA6IGNvbnZlcnQucmdiLmhzdihhcmdzKVsyXTsgLy8gaHN2IC0+IGFuc2kxNiBvcHRpbWl6YXRpb25cblxuXHR2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgLyA1MCk7XG5cblx0aWYgKHZhbHVlID09PSAwKSB7XG5cdFx0cmV0dXJuIDMwO1xuXHR9XG5cblx0dmFyIGFuc2kgPSAzMFxuXHRcdCsgKChNYXRoLnJvdW5kKGIgLyAyNTUpIDw8IDIpXG5cdFx0fCAoTWF0aC5yb3VuZChnIC8gMjU1KSA8PCAxKVxuXHRcdHwgTWF0aC5yb3VuZChyIC8gMjU1KSk7XG5cblx0aWYgKHZhbHVlID09PSAyKSB7XG5cdFx0YW5zaSArPSA2MDtcblx0fVxuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5oc3YuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gb3B0aW1pemF0aW9uIGhlcmU7IHdlIGFscmVhZHkga25vdyB0aGUgdmFsdWUgYW5kIGRvbid0IG5lZWQgdG8gZ2V0XG5cdC8vIGl0IGNvbnZlcnRlZCBmb3IgdXMuXG5cdHJldHVybiBjb252ZXJ0LnJnYi5hbnNpMTYoY29udmVydC5oc3YucmdiKGFyZ3MpLCBhcmdzWzJdKTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kyNTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHR2YXIgciA9IGFyZ3NbMF07XG5cdHZhciBnID0gYXJnc1sxXTtcblx0dmFyIGIgPSBhcmdzWzJdO1xuXG5cdC8vIHdlIHVzZSB0aGUgZXh0ZW5kZWQgZ3JleXNjYWxlIHBhbGV0dGUgaGVyZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mXG5cdC8vIGJsYWNrIGFuZCB3aGl0ZS4gbm9ybWFsIHBhbGV0dGUgb25seSBoYXMgNCBncmV5c2NhbGUgc2hhZGVzLlxuXHRpZiAociA9PT0gZyAmJiBnID09PSBiKSB7XG5cdFx0aWYgKHIgPCA4KSB7XG5cdFx0XHRyZXR1cm4gMTY7XG5cdFx0fVxuXG5cdFx0aWYgKHIgPiAyNDgpIHtcblx0XHRcdHJldHVybiAyMzE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoKChyIC0gOCkgLyAyNDcpICogMjQpICsgMjMyO1xuXHR9XG5cblx0dmFyIGFuc2kgPSAxNlxuXHRcdCsgKDM2ICogTWF0aC5yb3VuZChyIC8gMjU1ICogNSkpXG5cdFx0KyAoNiAqIE1hdGgucm91bmQoZyAvIDI1NSAqIDUpKVxuXHRcdCsgTWF0aC5yb3VuZChiIC8gMjU1ICogNSk7XG5cblx0cmV0dXJuIGFuc2k7XG59O1xuXG5jb252ZXJ0LmFuc2kxNi5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHR2YXIgY29sb3IgPSBhcmdzICUgMTA7XG5cblx0Ly8gaGFuZGxlIGdyZXlzY2FsZVxuXHRpZiAoY29sb3IgPT09IDAgfHwgY29sb3IgPT09IDcpIHtcblx0XHRpZiAoYXJncyA+IDUwKSB7XG5cdFx0XHRjb2xvciArPSAzLjU7XG5cdFx0fVxuXG5cdFx0Y29sb3IgPSBjb2xvciAvIDEwLjUgKiAyNTU7XG5cblx0XHRyZXR1cm4gW2NvbG9yLCBjb2xvciwgY29sb3JdO1xuXHR9XG5cblx0dmFyIG11bHQgPSAofn4oYXJncyA+IDUwKSArIDEpICogMC41O1xuXHR2YXIgciA9ICgoY29sb3IgJiAxKSAqIG11bHQpICogMjU1O1xuXHR2YXIgZyA9ICgoKGNvbG9yID4+IDEpICYgMSkgKiBtdWx0KSAqIDI1NTtcblx0dmFyIGIgPSAoKChjb2xvciA+PiAyKSAmIDEpICogbXVsdCkgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQuYW5zaTI1Ni5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHQvLyBoYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChhcmdzID49IDIzMikge1xuXHRcdHZhciBjID0gKGFyZ3MgLSAyMzIpICogMTAgKyA4O1xuXHRcdHJldHVybiBbYywgYywgY107XG5cdH1cblxuXHRhcmdzIC09IDE2O1xuXG5cdHZhciByZW07XG5cdHZhciByID0gTWF0aC5mbG9vcihhcmdzIC8gMzYpIC8gNSAqIDI1NTtcblx0dmFyIGcgPSBNYXRoLmZsb29yKChyZW0gPSBhcmdzICUgMzYpIC8gNikgLyA1ICogMjU1O1xuXHR2YXIgYiA9IChyZW0gJSA2KSAvIDUgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhleCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHZhciBpbnRlZ2VyID0gKChNYXRoLnJvdW5kKGFyZ3NbMF0pICYgMHhGRikgPDwgMTYpXG5cdFx0KyAoKE1hdGgucm91bmQoYXJnc1sxXSkgJiAweEZGKSA8PCA4KVxuXHRcdCsgKE1hdGgucm91bmQoYXJnc1syXSkgJiAweEZGKTtcblxuXHR2YXIgc3RyaW5nID0gaW50ZWdlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcblx0cmV0dXJuICcwMDAwMDAnLnN1YnN0cmluZyhzdHJpbmcubGVuZ3RoKSArIHN0cmluZztcbn07XG5cbmNvbnZlcnQuaGV4LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHZhciBtYXRjaCA9IGFyZ3MudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTtcblx0aWYgKCFtYXRjaCkge1xuXHRcdHJldHVybiBbMCwgMCwgMF07XG5cdH1cblxuXHR2YXIgY29sb3JTdHJpbmcgPSBtYXRjaFswXTtcblxuXHRpZiAobWF0Y2hbMF0ubGVuZ3RoID09PSAzKSB7XG5cdFx0Y29sb3JTdHJpbmcgPSBjb2xvclN0cmluZy5zcGxpdCgnJykubWFwKGZ1bmN0aW9uIChjaGFyKSB7XG5cdFx0XHRyZXR1cm4gY2hhciArIGNoYXI7XG5cdFx0fSkuam9pbignJyk7XG5cdH1cblxuXHR2YXIgaW50ZWdlciA9IHBhcnNlSW50KGNvbG9yU3RyaW5nLCAxNik7XG5cdHZhciByID0gKGludGVnZXIgPj4gMTYpICYgMHhGRjtcblx0dmFyIGcgPSAoaW50ZWdlciA+PiA4KSAmIDB4RkY7XG5cdHZhciBiID0gaW50ZWdlciAmIDB4RkY7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhjZyA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0dmFyIHIgPSByZ2JbMF0gLyAyNTU7XG5cdHZhciBnID0gcmdiWzFdIC8gMjU1O1xuXHR2YXIgYiA9IHJnYlsyXSAvIDI1NTtcblx0dmFyIG1heCA9IE1hdGgubWF4KE1hdGgubWF4KHIsIGcpLCBiKTtcblx0dmFyIG1pbiA9IE1hdGgubWluKE1hdGgubWluKHIsIGcpLCBiKTtcblx0dmFyIGNocm9tYSA9IChtYXggLSBtaW4pO1xuXHR2YXIgZ3JheXNjYWxlO1xuXHR2YXIgaHVlO1xuXG5cdGlmIChjaHJvbWEgPCAxKSB7XG5cdFx0Z3JheXNjYWxlID0gbWluIC8gKDEgLSBjaHJvbWEpO1xuXHR9IGVsc2Uge1xuXHRcdGdyYXlzY2FsZSA9IDA7XG5cdH1cblxuXHRpZiAoY2hyb21hIDw9IDApIHtcblx0XHRodWUgPSAwO1xuXHR9IGVsc2Vcblx0aWYgKG1heCA9PT0gcikge1xuXHRcdGh1ZSA9ICgoZyAtIGIpIC8gY2hyb21hKSAlIDY7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSBnKSB7XG5cdFx0aHVlID0gMiArIChiIC0gcikgLyBjaHJvbWE7XG5cdH0gZWxzZSB7XG5cdFx0aHVlID0gNCArIChyIC0gZykgLyBjaHJvbWEgKyA0O1xuXHR9XG5cblx0aHVlIC89IDY7XG5cdGh1ZSAlPSAxO1xuXG5cdHJldHVybiBbaHVlICogMzYwLCBjaHJvbWEgKiAxMDAsIGdyYXlzY2FsZSAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhzbC5oY2cgPSBmdW5jdGlvbiAoaHNsKSB7XG5cdHZhciBzID0gaHNsWzFdIC8gMTAwO1xuXHR2YXIgbCA9IGhzbFsyXSAvIDEwMDtcblx0dmFyIGMgPSAxO1xuXHR2YXIgZiA9IDA7XG5cblx0aWYgKGwgPCAwLjUpIHtcblx0XHRjID0gMi4wICogcyAqIGw7XG5cdH0gZWxzZSB7XG5cdFx0YyA9IDIuMCAqIHMgKiAoMS4wIC0gbCk7XG5cdH1cblxuXHRpZiAoYyA8IDEuMCkge1xuXHRcdGYgPSAobCAtIDAuNSAqIGMpIC8gKDEuMCAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc2xbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oc3YuaGNnID0gZnVuY3Rpb24gKGhzdikge1xuXHR2YXIgcyA9IGhzdlsxXSAvIDEwMDtcblx0dmFyIHYgPSBoc3ZbMl0gLyAxMDA7XG5cblx0dmFyIGMgPSBzICogdjtcblx0dmFyIGYgPSAwO1xuXG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc3ZbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cucmdiID0gZnVuY3Rpb24gKGhjZykge1xuXHR2YXIgaCA9IGhjZ1swXSAvIDM2MDtcblx0dmFyIGMgPSBoY2dbMV0gLyAxMDA7XG5cdHZhciBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGlmIChjID09PSAwLjApIHtcblx0XHRyZXR1cm4gW2cgKiAyNTUsIGcgKiAyNTUsIGcgKiAyNTVdO1xuXHR9XG5cblx0dmFyIHB1cmUgPSBbMCwgMCwgMF07XG5cdHZhciBoaSA9IChoICUgMSkgKiA2O1xuXHR2YXIgdiA9IGhpICUgMTtcblx0dmFyIHcgPSAxIC0gdjtcblx0dmFyIG1nID0gMDtcblxuXHRzd2l0Y2ggKE1hdGguZmxvb3IoaGkpKSB7XG5cdFx0Y2FzZSAwOlxuXHRcdFx0cHVyZVswXSA9IDE7IHB1cmVbMV0gPSB2OyBwdXJlWzJdID0gMDsgYnJlYWs7XG5cdFx0Y2FzZSAxOlxuXHRcdFx0cHVyZVswXSA9IHc7IHB1cmVbMV0gPSAxOyBwdXJlWzJdID0gMDsgYnJlYWs7XG5cdFx0Y2FzZSAyOlxuXHRcdFx0cHVyZVswXSA9IDA7IHB1cmVbMV0gPSAxOyBwdXJlWzJdID0gdjsgYnJlYWs7XG5cdFx0Y2FzZSAzOlxuXHRcdFx0cHVyZVswXSA9IDA7IHB1cmVbMV0gPSB3OyBwdXJlWzJdID0gMTsgYnJlYWs7XG5cdFx0Y2FzZSA0OlxuXHRcdFx0cHVyZVswXSA9IHY7IHB1cmVbMV0gPSAwOyBwdXJlWzJdID0gMTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHB1cmVbMF0gPSAxOyBwdXJlWzFdID0gMDsgcHVyZVsyXSA9IHc7XG5cdH1cblxuXHRtZyA9ICgxLjAgLSBjKSAqIGc7XG5cblx0cmV0dXJuIFtcblx0XHQoYyAqIHB1cmVbMF0gKyBtZykgKiAyNTUsXG5cdFx0KGMgKiBwdXJlWzFdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsyXSArIG1nKSAqIDI1NVxuXHRdO1xufTtcblxuY29udmVydC5oY2cuaHN2ID0gZnVuY3Rpb24gKGhjZykge1xuXHR2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcblx0dmFyIGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0dmFyIHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0dmFyIGYgPSAwO1xuXG5cdGlmICh2ID4gMC4wKSB7XG5cdFx0ZiA9IGMgLyB2O1xuXHR9XG5cblx0cmV0dXJuIFtoY2dbMF0sIGYgKiAxMDAsIHYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cuaHNsID0gZnVuY3Rpb24gKGhjZykge1xuXHR2YXIgYyA9IGhjZ1sxXSAvIDEwMDtcblx0dmFyIGcgPSBoY2dbMl0gLyAxMDA7XG5cblx0dmFyIGwgPSBnICogKDEuMCAtIGMpICsgMC41ICogYztcblx0dmFyIHMgPSAwO1xuXG5cdGlmIChsID4gMC4wICYmIGwgPCAwLjUpIHtcblx0XHRzID0gYyAvICgyICogbCk7XG5cdH0gZWxzZVxuXHRpZiAobCA+PSAwLjUgJiYgbCA8IDEuMCkge1xuXHRcdHMgPSBjIC8gKDIgKiAoMSAtIGwpKTtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBzICogMTAwLCBsICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmh3YiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0dmFyIGMgPSBoY2dbMV0gLyAxMDA7XG5cdHZhciBnID0gaGNnWzJdIC8gMTAwO1xuXHR2YXIgdiA9IGMgKyBnICogKDEuMCAtIGMpO1xuXHRyZXR1cm4gW2hjZ1swXSwgKHYgLSBjKSAqIDEwMCwgKDEgLSB2KSAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmh3Yi5oY2cgPSBmdW5jdGlvbiAoaHdiKSB7XG5cdHZhciB3ID0gaHdiWzFdIC8gMTAwO1xuXHR2YXIgYiA9IGh3YlsyXSAvIDEwMDtcblx0dmFyIHYgPSAxIC0gYjtcblx0dmFyIGMgPSB2IC0gdztcblx0dmFyIGcgPSAwO1xuXG5cdGlmIChjIDwgMSkge1xuXHRcdGcgPSAodiAtIGMpIC8gKDEgLSBjKTtcblx0fVxuXG5cdHJldHVybiBbaHdiWzBdLCBjICogMTAwLCBnICogMTAwXTtcbn07XG5cbmNvbnZlcnQuYXBwbGUucmdiID0gZnVuY3Rpb24gKGFwcGxlKSB7XG5cdHJldHVybiBbKGFwcGxlWzBdIC8gNjU1MzUpICogMjU1LCAoYXBwbGVbMV0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsyXSAvIDY1NTM1KSAqIDI1NV07XG59O1xuXG5jb252ZXJ0LnJnYi5hcHBsZSA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0cmV0dXJuIFsocmdiWzBdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzFdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzJdIC8gMjU1KSAqIDY1NTM1XTtcbn07XG5cbmNvbnZlcnQuZ3JheS5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gW2FyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTVdO1xufTtcblxuY29udmVydC5ncmF5LmhzbCA9IGNvbnZlcnQuZ3JheS5oc3YgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gWzAsIDAsIGFyZ3NbMF1dO1xufTtcblxuY29udmVydC5ncmF5Lmh3YiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbMCwgMTAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5jbXlrID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAwLCAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5sYWIgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gW2dyYXlbMF0sIDAsIDBdO1xufTtcblxuY29udmVydC5ncmF5LmhleCA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHZhciB2YWwgPSBNYXRoLnJvdW5kKGdyYXlbMF0gLyAxMDAgKiAyNTUpICYgMHhGRjtcblx0dmFyIGludGVnZXIgPSAodmFsIDw8IDE2KSArICh2YWwgPDwgOCkgKyB2YWw7XG5cblx0dmFyIHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LnJnYi5ncmF5ID0gZnVuY3Rpb24gKHJnYikge1xuXHR2YXIgdmFsID0gKHJnYlswXSArIHJnYlsxXSArIHJnYlsyXSkgLyAzO1xuXHRyZXR1cm4gW3ZhbCAvIDI1NSAqIDEwMF07XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_color-convert@1.9.3@color-convert/conversions.js\n"); /***/ }), /***/ "./node_modules/_color-convert@1.9.3@color-convert/index.js": /*!******************************************************************!*\ !*** ./node_modules/_color-convert@1.9.3@color-convert/index.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/_color-convert@1.9.3@color-convert/conversions.js\");\nvar route = __webpack_require__(/*! ./route */ \"./node_modules/_color-convert@1.9.3@color-convert/route.js\");\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yLWNvbnZlcnRAMS45LjNAY29sb3ItY29udmVydC9pbmRleC5qcz81NGNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLHVGQUFlO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQywyRUFBUzs7QUFFN0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSx1Q0FBdUMsU0FBUztBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0RBQXdELHVDQUF1QztBQUMvRixzREFBc0QscUNBQXFDOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRixDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19jb2xvci1jb252ZXJ0QDEuOS4zQGNvbG9yLWNvbnZlcnQvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29udmVyc2lvbnMgPSByZXF1aXJlKCcuL2NvbnZlcnNpb25zJyk7XG52YXIgcm91dGUgPSByZXF1aXJlKCcuL3JvdXRlJyk7XG5cbnZhciBjb252ZXJ0ID0ge307XG5cbnZhciBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG5cbmZ1bmN0aW9uIHdyYXBSYXcoZm4pIHtcblx0dmFyIHdyYXBwZWRGbiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdFx0aWYgKGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9XG5cblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmbihhcmdzKTtcblx0fTtcblxuXHQvLyBwcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbmZ1bmN0aW9uIHdyYXBSb3VuZGVkKGZuKSB7XG5cdHZhciB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoYXJncykge1xuXHRcdGlmIChhcmdzID09PSB1bmRlZmluZWQgfHwgYXJncyA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG5cdFx0XHRhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblx0XHR9XG5cblx0XHR2YXIgcmVzdWx0ID0gZm4oYXJncyk7XG5cblx0XHQvLyB3ZSdyZSBhc3N1bWluZyB0aGUgcmVzdWx0IGlzIGFuIGFycmF5IGhlcmUuXG5cdFx0Ly8gc2VlIG5vdGljZSBpbiBjb252ZXJzaW9ucy5qczsgZG9uJ3QgdXNlIGJveCB0eXBlc1xuXHRcdC8vIGluIGNvbnZlcnNpb24gZnVuY3Rpb25zLlxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Zm9yICh2YXIgbGVuID0gcmVzdWx0Lmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyBwcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbm1vZGVscy5mb3JFYWNoKGZ1bmN0aW9uIChmcm9tTW9kZWwpIHtcblx0Y29udmVydFtmcm9tTW9kZWxdID0ge307XG5cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbZnJvbU1vZGVsXSwgJ2NoYW5uZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdsYWJlbHMnLCB7dmFsdWU6IGNvbnZlcnNpb25zW2Zyb21Nb2RlbF0ubGFiZWxzfSk7XG5cblx0dmFyIHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG5cdHZhciByb3V0ZU1vZGVscyA9IE9iamVjdC5rZXlzKHJvdXRlcyk7XG5cblx0cm91dGVNb2RlbHMuZm9yRWFjaChmdW5jdGlvbiAodG9Nb2RlbCkge1xuXHRcdHZhciBmbiA9IHJvdXRlc1t0b01vZGVsXTtcblxuXHRcdGNvbnZlcnRbZnJvbU1vZGVsXVt0b01vZGVsXSA9IHdyYXBSb3VuZGVkKGZuKTtcblx0XHRjb252ZXJ0W2Zyb21Nb2RlbF1bdG9Nb2RlbF0ucmF3ID0gd3JhcFJhdyhmbik7XG5cdH0pO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gY29udmVydDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_color-convert@1.9.3@color-convert/index.js\n"); /***/ }), /***/ "./node_modules/_color-convert@1.9.3@color-convert/route.js": /*!******************************************************************!*\ !*** ./node_modules/_color-convert@1.9.3@color-convert/route.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var conversions = __webpack_require__(/*! ./conversions */ \"./node_modules/_color-convert@1.9.3@color-convert/conversions.js\");\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yLWNvbnZlcnRAMS45LjNAY29sb3ItY29udmVydC9yb3V0ZS5qcz81YjFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLHVGQUFlOztBQUV6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUMsU0FBUztBQUM5QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fY29sb3ItY29udmVydEAxLjkuM0Bjb2xvci1jb252ZXJ0L3JvdXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuXG4vKlxuXHR0aGlzIGZ1bmN0aW9uIHJvdXRlcyBhIG1vZGVsIHRvIGFsbCBvdGhlciBtb2RlbHMuXG5cblx0YWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSByb3V0ZWQgaGF2ZSBhIHByb3BlcnR5IGAuY29udmVyc2lvbmAgYXR0YWNoZWRcblx0dG8gdGhlIHJldHVybmVkIHN5bnRoZXRpYyBmdW5jdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBhbiBhcnJheVxuXHRvZiBzdHJpbmdzLCBlYWNoIHdpdGggdGhlIHN0ZXBzIGluIGJldHdlZW4gdGhlICdmcm9tJyBhbmQgJ3RvJ1xuXHRjb2xvciBtb2RlbHMgKGluY2x1c2l2ZSkuXG5cblx0Y29udmVyc2lvbnMgdGhhdCBhcmUgbm90IHBvc3NpYmxlIHNpbXBseSBhcmUgbm90IGluY2x1ZGVkLlxuKi9cblxuZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcblx0dmFyIGdyYXBoID0ge307XG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS9vYmplY3Qta2V5cy12cy1mb3ItaW4td2l0aC1jbG9zdXJlLzNcblx0dmFyIG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcblxuXHRmb3IgKHZhciBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Z3JhcGhbbW9kZWxzW2ldXSA9IHtcblx0XHRcdC8vIGh0dHA6Ly9qc3BlcmYuY29tLzEtdnMtaW5maW5pdHlcblx0XHRcdC8vIG1pY3JvLW9wdCwgYnV0IHRoaXMgaXMgc2ltcGxlLlxuXHRcdFx0ZGlzdGFuY2U6IC0xLFxuXHRcdFx0cGFyZW50OiBudWxsXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiBncmFwaDtcbn1cblxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJlYWR0aC1maXJzdF9zZWFyY2hcbmZ1bmN0aW9uIGRlcml2ZUJGUyhmcm9tTW9kZWwpIHtcblx0dmFyIGdyYXBoID0gYnVpbGRHcmFwaCgpO1xuXHR2YXIgcXVldWUgPSBbZnJvbU1vZGVsXTsgLy8gdW5zaGlmdCAtPiBxdWV1ZSAtPiBwb3BcblxuXHRncmFwaFtmcm9tTW9kZWxdLmRpc3RhbmNlID0gMDtcblxuXHR3aGlsZSAocXVldWUubGVuZ3RoKSB7XG5cdFx0dmFyIGN1cnJlbnQgPSBxdWV1ZS5wb3AoKTtcblx0XHR2YXIgYWRqYWNlbnRzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnNbY3VycmVudF0pO1xuXG5cdFx0Zm9yICh2YXIgbGVuID0gYWRqYWNlbnRzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0dmFyIGFkamFjZW50ID0gYWRqYWNlbnRzW2ldO1xuXHRcdFx0dmFyIG5vZGUgPSBncmFwaFthZGphY2VudF07XG5cblx0XHRcdGlmIChub2RlLmRpc3RhbmNlID09PSAtMSkge1xuXHRcdFx0XHRub2RlLmRpc3RhbmNlID0gZ3JhcGhbY3VycmVudF0uZGlzdGFuY2UgKyAxO1xuXHRcdFx0XHRub2RlLnBhcmVudCA9IGN1cnJlbnQ7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoYWRqYWNlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBncmFwaDtcbn1cblxuZnVuY3Rpb24gbGluayhmcm9tLCB0bykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcblx0XHRyZXR1cm4gdG8oZnJvbShhcmdzKSk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKSB7XG5cdHZhciBwYXRoID0gW2dyYXBoW3RvTW9kZWxdLnBhcmVudCwgdG9Nb2RlbF07XG5cdHZhciBmbiA9IGNvbnZlcnNpb25zW2dyYXBoW3RvTW9kZWxdLnBhcmVudF1bdG9Nb2RlbF07XG5cblx0dmFyIGN1ciA9IGdyYXBoW3RvTW9kZWxdLnBhcmVudDtcblx0d2hpbGUgKGdyYXBoW2N1cl0ucGFyZW50KSB7XG5cdFx0cGF0aC51bnNoaWZ0KGdyYXBoW2N1cl0ucGFyZW50KTtcblx0XHRmbiA9IGxpbmsoY29udmVyc2lvbnNbZ3JhcGhbY3VyXS5wYXJlbnRdW2N1cl0sIGZuKTtcblx0XHRjdXIgPSBncmFwaFtjdXJdLnBhcmVudDtcblx0fVxuXG5cdGZuLmNvbnZlcnNpb24gPSBwYXRoO1xuXHRyZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZyb21Nb2RlbCkge1xuXHR2YXIgZ3JhcGggPSBkZXJpdmVCRlMoZnJvbU1vZGVsKTtcblx0dmFyIGNvbnZlcnNpb24gPSB7fTtcblxuXHR2YXIgbW9kZWxzID0gT2JqZWN0LmtleXMoZ3JhcGgpO1xuXHRmb3IgKHZhciBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0dmFyIHRvTW9kZWwgPSBtb2RlbHNbaV07XG5cdFx0dmFyIG5vZGUgPSBncmFwaFt0b01vZGVsXTtcblxuXHRcdGlmIChub2RlLnBhcmVudCA9PT0gbnVsbCkge1xuXHRcdFx0Ly8gbm8gcG9zc2libGUgY29udmVyc2lvbiwgb3IgdGhpcyBub2RlIGlzIHRoZSBzb3VyY2UgbW9kZWwuXG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRjb252ZXJzaW9uW3RvTW9kZWxdID0gd3JhcENvbnZlcnNpb24odG9Nb2RlbCwgZ3JhcGgpO1xuXHR9XG5cblx0cmV0dXJuIGNvbnZlcnNpb247XG59O1xuXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_color-convert@1.9.3@color-convert/route.js\n"); /***/ }), /***/ "./node_modules/_color-name@1.1.3@color-name/index.js": /*!************************************************************!*\ !*** ./node_modules/_color-name@1.1.3@color-name/index.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yLW5hbWVAMS4xLjNAY29sb3ItbmFtZS9pbmRleC5qcz85MDMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fY29sb3ItbmFtZUAxLjEuM0Bjb2xvci1uYW1lL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuXHRcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXHJcblx0XCJhbnRpcXVld2hpdGVcIjogWzI1MCwgMjM1LCAyMTVdLFxyXG5cdFwiYXF1YVwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXHJcblx0XCJhenVyZVwiOiBbMjQwLCAyNTUsIDI1NV0sXHJcblx0XCJiZWlnZVwiOiBbMjQ1LCAyNDUsIDIyMF0sXHJcblx0XCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxyXG5cdFwiYmxhY2tcIjogWzAsIDAsIDBdLFxyXG5cdFwiYmxhbmNoZWRhbG1vbmRcIjogWzI1NSwgMjM1LCAyMDVdLFxyXG5cdFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcclxuXHRcImJsdWV2aW9sZXRcIjogWzEzOCwgNDMsIDIyNl0sXHJcblx0XCJicm93blwiOiBbMTY1LCA0MiwgNDJdLFxyXG5cdFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcclxuXHRcImNhZGV0Ymx1ZVwiOiBbOTUsIDE1OCwgMTYwXSxcclxuXHRcImNoYXJ0cmV1c2VcIjogWzEyNywgMjU1LCAwXSxcclxuXHRcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcclxuXHRcImNvcmFsXCI6IFsyNTUsIDEyNywgODBdLFxyXG5cdFwiY29ybmZsb3dlcmJsdWVcIjogWzEwMCwgMTQ5LCAyMzddLFxyXG5cdFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxyXG5cdFwiY3JpbXNvblwiOiBbMjIwLCAyMCwgNjBdLFxyXG5cdFwiY3lhblwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXHJcblx0XCJkYXJrY3lhblwiOiBbMCwgMTM5LCAxMzldLFxyXG5cdFwiZGFya2dvbGRlbnJvZFwiOiBbMTg0LCAxMzQsIDExXSxcclxuXHRcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtncmVlblwiOiBbMCwgMTAwLCAwXSxcclxuXHRcImRhcmtncmV5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXHJcblx0XCJkYXJrbWFnZW50YVwiOiBbMTM5LCAwLCAxMzldLFxyXG5cdFwiZGFya29saXZlZ3JlZW5cIjogWzg1LCAxMDcsIDQ3XSxcclxuXHRcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcclxuXHRcImRhcmtvcmNoaWRcIjogWzE1MywgNTAsIDIwNF0sXHJcblx0XCJkYXJrcmVkXCI6IFsxMzksIDAsIDBdLFxyXG5cdFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXHJcblx0XCJkYXJrc2VhZ3JlZW5cIjogWzE0MywgMTg4LCAxNDNdLFxyXG5cdFwiZGFya3NsYXRlYmx1ZVwiOiBbNzIsIDYxLCAxMzldLFxyXG5cdFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrc2xhdGVncmV5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmt0dXJxdW9pc2VcIjogWzAsIDIwNiwgMjA5XSxcclxuXHRcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcclxuXHRcImRlZXBwaW5rXCI6IFsyNTUsIDIwLCAxNDddLFxyXG5cdFwiZGVlcHNreWJsdWVcIjogWzAsIDE5MSwgMjU1XSxcclxuXHRcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZGltZ3JleVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkb2RnZXJibHVlXCI6IFszMCwgMTQ0LCAyNTVdLFxyXG5cdFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXHJcblx0XCJmbG9yYWx3aGl0ZVwiOiBbMjU1LCAyNTAsIDI0MF0sXHJcblx0XCJmb3Jlc3RncmVlblwiOiBbMzQsIDEzOSwgMzRdLFxyXG5cdFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwiZ2FpbnNib3JvXCI6IFsyMjAsIDIyMCwgMjIwXSxcclxuXHRcImdob3N0d2hpdGVcIjogWzI0OCwgMjQ4LCAyNTVdLFxyXG5cdFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxyXG5cdFwiZ29sZGVucm9kXCI6IFsyMTgsIDE2NSwgMzJdLFxyXG5cdFwiZ3JheVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJncmVlblwiOiBbMCwgMTI4LCAwXSxcclxuXHRcImdyZWVueWVsbG93XCI6IFsxNzMsIDI1NSwgNDddLFxyXG5cdFwiZ3JleVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXHJcblx0XCJob3RwaW5rXCI6IFsyNTUsIDEwNSwgMTgwXSxcclxuXHRcImluZGlhbnJlZFwiOiBbMjA1LCA5MiwgOTJdLFxyXG5cdFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcclxuXHRcIml2b3J5XCI6IFsyNTUsIDI1NSwgMjQwXSxcclxuXHRcImtoYWtpXCI6IFsyNDAsIDIzMCwgMTQwXSxcclxuXHRcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcclxuXHRcImxhdmVuZGVyYmx1c2hcIjogWzI1NSwgMjQwLCAyNDVdLFxyXG5cdFwibGF3bmdyZWVuXCI6IFsxMjQsIDI1MiwgMF0sXHJcblx0XCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxyXG5cdFwibGlnaHRibHVlXCI6IFsxNzMsIDIxNiwgMjMwXSxcclxuXHRcImxpZ2h0Y29yYWxcIjogWzI0MCwgMTI4LCAxMjhdLFxyXG5cdFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcclxuXHRcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFsyNTAsIDI1MCwgMjEwXSxcclxuXHRcImxpZ2h0Z3JheVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcclxuXHRcImxpZ2h0Z3JleVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodHBpbmtcIjogWzI1NSwgMTgyLCAxOTNdLFxyXG5cdFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxyXG5cdFwibGlnaHRzZWFncmVlblwiOiBbMzIsIDE3OCwgMTcwXSxcclxuXHRcImxpZ2h0c2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDI1MF0sXHJcblx0XCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHNsYXRlZ3JleVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHN0ZWVsYmx1ZVwiOiBbMTc2LCAxOTYsIDIyMl0sXHJcblx0XCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXHJcblx0XCJsaW1lXCI6IFswLCAyNTUsIDBdLFxyXG5cdFwibGltZWdyZWVuXCI6IFs1MCwgMjA1LCA1MF0sXHJcblx0XCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXHJcblx0XCJtYWdlbnRhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJtYXJvb25cIjogWzEyOCwgMCwgMF0sXHJcblx0XCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcclxuXHRcIm1lZGl1bWJsdWVcIjogWzAsIDAsIDIwNV0sXHJcblx0XCJtZWRpdW1vcmNoaWRcIjogWzE4NiwgODUsIDIxMV0sXHJcblx0XCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxyXG5cdFwibWVkaXVtc2VhZ3JlZW5cIjogWzYwLCAxNzksIDExM10sXHJcblx0XCJtZWRpdW1zbGF0ZWJsdWVcIjogWzEyMywgMTA0LCAyMzhdLFxyXG5cdFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcclxuXHRcIm1lZGl1bXR1cnF1b2lzZVwiOiBbNzIsIDIwOSwgMjA0XSxcclxuXHRcIm1lZGl1bXZpb2xldHJlZFwiOiBbMTk5LCAyMSwgMTMzXSxcclxuXHRcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxyXG5cdFwibWludGNyZWFtXCI6IFsyNDUsIDI1NSwgMjUwXSxcclxuXHRcIm1pc3R5cm9zZVwiOiBbMjU1LCAyMjgsIDIyNV0sXHJcblx0XCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXHJcblx0XCJuYXZham93aGl0ZVwiOiBbMjU1LCAyMjIsIDE3M10sXHJcblx0XCJuYXZ5XCI6IFswLCAwLCAxMjhdLFxyXG5cdFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXHJcblx0XCJvbGl2ZVwiOiBbMTI4LCAxMjgsIDBdLFxyXG5cdFwib2xpdmVkcmFiXCI6IFsxMDcsIDE0MiwgMzVdLFxyXG5cdFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXHJcblx0XCJvcmFuZ2VyZWRcIjogWzI1NSwgNjksIDBdLFxyXG5cdFwib3JjaGlkXCI6IFsyMTgsIDExMiwgMjE0XSxcclxuXHRcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxyXG5cdFwicGFsZWdyZWVuXCI6IFsxNTIsIDI1MSwgMTUyXSxcclxuXHRcInBhbGV0dXJxdW9pc2VcIjogWzE3NSwgMjM4LCAyMzhdLFxyXG5cdFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXHJcblx0XCJwYXBheWF3aGlwXCI6IFsyNTUsIDIzOSwgMjEzXSxcclxuXHRcInBlYWNocHVmZlwiOiBbMjU1LCAyMTgsIDE4NV0sXHJcblx0XCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxyXG5cdFwicGlua1wiOiBbMjU1LCAxOTIsIDIwM10sXHJcblx0XCJwbHVtXCI6IFsyMjEsIDE2MCwgMjIxXSxcclxuXHRcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxyXG5cdFwicHVycGxlXCI6IFsxMjgsIDAsIDEyOF0sXHJcblx0XCJyZWJlY2NhcHVycGxlXCI6IFsxMDIsIDUxLCAxNTNdLFxyXG5cdFwicmVkXCI6IFsyNTUsIDAsIDBdLFxyXG5cdFwicm9zeWJyb3duXCI6IFsxODgsIDE0MywgMTQzXSxcclxuXHRcInJveWFsYmx1ZVwiOiBbNjUsIDEwNSwgMjI1XSxcclxuXHRcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXHJcblx0XCJzYWxtb25cIjogWzI1MCwgMTI4LCAxMTRdLFxyXG5cdFwic2FuZHlicm93blwiOiBbMjQ0LCAxNjQsIDk2XSxcclxuXHRcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXHJcblx0XCJzZWFzaGVsbFwiOiBbMjU1LCAyNDUsIDIzOF0sXHJcblx0XCJzaWVubmFcIjogWzE2MCwgODIsIDQ1XSxcclxuXHRcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXHJcblx0XCJza3libHVlXCI6IFsxMzUsIDIwNiwgMjM1XSxcclxuXHRcInNsYXRlYmx1ZVwiOiBbMTA2LCA5MCwgMjA1XSxcclxuXHRcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbGF0ZWdyZXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic25vd1wiOiBbMjU1LCAyNTAsIDI1MF0sXHJcblx0XCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxyXG5cdFwic3RlZWxibHVlXCI6IFs3MCwgMTMwLCAxODBdLFxyXG5cdFwidGFuXCI6IFsyMTAsIDE4MCwgMTQwXSxcclxuXHRcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcclxuXHRcInRoaXN0bGVcIjogWzIxNiwgMTkxLCAyMTZdLFxyXG5cdFwidG9tYXRvXCI6IFsyNTUsIDk5LCA3MV0sXHJcblx0XCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXHJcblx0XCJ2aW9sZXRcIjogWzIzOCwgMTMwLCAyMzhdLFxyXG5cdFwid2hlYXRcIjogWzI0NSwgMjIyLCAxNzldLFxyXG5cdFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxyXG5cdFwid2hpdGVzbW9rZVwiOiBbMjQ1LCAyNDUsIDI0NV0sXHJcblx0XCJ5ZWxsb3dcIjogWzI1NSwgMjU1LCAwXSxcclxuXHRcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_color-name@1.1.3@color-name/index.js\n"); /***/ }), /***/ "./node_modules/_color-name@1.1.4@color-name/index.js": /*!************************************************************!*\ !*** ./node_modules/_color-name@1.1.4@color-name/index.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yLW5hbWVAMS4xLjRAY29sb3ItbmFtZS9pbmRleC5qcz81NmI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fY29sb3ItbmFtZUAxLjEuNEBjb2xvci1uYW1lL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuXHRcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXHJcblx0XCJhbnRpcXVld2hpdGVcIjogWzI1MCwgMjM1LCAyMTVdLFxyXG5cdFwiYXF1YVwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXHJcblx0XCJhenVyZVwiOiBbMjQwLCAyNTUsIDI1NV0sXHJcblx0XCJiZWlnZVwiOiBbMjQ1LCAyNDUsIDIyMF0sXHJcblx0XCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxyXG5cdFwiYmxhY2tcIjogWzAsIDAsIDBdLFxyXG5cdFwiYmxhbmNoZWRhbG1vbmRcIjogWzI1NSwgMjM1LCAyMDVdLFxyXG5cdFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcclxuXHRcImJsdWV2aW9sZXRcIjogWzEzOCwgNDMsIDIyNl0sXHJcblx0XCJicm93blwiOiBbMTY1LCA0MiwgNDJdLFxyXG5cdFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcclxuXHRcImNhZGV0Ymx1ZVwiOiBbOTUsIDE1OCwgMTYwXSxcclxuXHRcImNoYXJ0cmV1c2VcIjogWzEyNywgMjU1LCAwXSxcclxuXHRcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcclxuXHRcImNvcmFsXCI6IFsyNTUsIDEyNywgODBdLFxyXG5cdFwiY29ybmZsb3dlcmJsdWVcIjogWzEwMCwgMTQ5LCAyMzddLFxyXG5cdFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxyXG5cdFwiY3JpbXNvblwiOiBbMjIwLCAyMCwgNjBdLFxyXG5cdFwiY3lhblwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXHJcblx0XCJkYXJrY3lhblwiOiBbMCwgMTM5LCAxMzldLFxyXG5cdFwiZGFya2dvbGRlbnJvZFwiOiBbMTg0LCAxMzQsIDExXSxcclxuXHRcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtncmVlblwiOiBbMCwgMTAwLCAwXSxcclxuXHRcImRhcmtncmV5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXHJcblx0XCJkYXJrbWFnZW50YVwiOiBbMTM5LCAwLCAxMzldLFxyXG5cdFwiZGFya29saXZlZ3JlZW5cIjogWzg1LCAxMDcsIDQ3XSxcclxuXHRcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcclxuXHRcImRhcmtvcmNoaWRcIjogWzE1MywgNTAsIDIwNF0sXHJcblx0XCJkYXJrcmVkXCI6IFsxMzksIDAsIDBdLFxyXG5cdFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXHJcblx0XCJkYXJrc2VhZ3JlZW5cIjogWzE0MywgMTg4LCAxNDNdLFxyXG5cdFwiZGFya3NsYXRlYmx1ZVwiOiBbNzIsIDYxLCAxMzldLFxyXG5cdFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrc2xhdGVncmV5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmt0dXJxdW9pc2VcIjogWzAsIDIwNiwgMjA5XSxcclxuXHRcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcclxuXHRcImRlZXBwaW5rXCI6IFsyNTUsIDIwLCAxNDddLFxyXG5cdFwiZGVlcHNreWJsdWVcIjogWzAsIDE5MSwgMjU1XSxcclxuXHRcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZGltZ3JleVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkb2RnZXJibHVlXCI6IFszMCwgMTQ0LCAyNTVdLFxyXG5cdFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXHJcblx0XCJmbG9yYWx3aGl0ZVwiOiBbMjU1LCAyNTAsIDI0MF0sXHJcblx0XCJmb3Jlc3RncmVlblwiOiBbMzQsIDEzOSwgMzRdLFxyXG5cdFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwiZ2FpbnNib3JvXCI6IFsyMjAsIDIyMCwgMjIwXSxcclxuXHRcImdob3N0d2hpdGVcIjogWzI0OCwgMjQ4LCAyNTVdLFxyXG5cdFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxyXG5cdFwiZ29sZGVucm9kXCI6IFsyMTgsIDE2NSwgMzJdLFxyXG5cdFwiZ3JheVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJncmVlblwiOiBbMCwgMTI4LCAwXSxcclxuXHRcImdyZWVueWVsbG93XCI6IFsxNzMsIDI1NSwgNDddLFxyXG5cdFwiZ3JleVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXHJcblx0XCJob3RwaW5rXCI6IFsyNTUsIDEwNSwgMTgwXSxcclxuXHRcImluZGlhbnJlZFwiOiBbMjA1LCA5MiwgOTJdLFxyXG5cdFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcclxuXHRcIml2b3J5XCI6IFsyNTUsIDI1NSwgMjQwXSxcclxuXHRcImtoYWtpXCI6IFsyNDAsIDIzMCwgMTQwXSxcclxuXHRcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcclxuXHRcImxhdmVuZGVyYmx1c2hcIjogWzI1NSwgMjQwLCAyNDVdLFxyXG5cdFwibGF3bmdyZWVuXCI6IFsxMjQsIDI1MiwgMF0sXHJcblx0XCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxyXG5cdFwibGlnaHRibHVlXCI6IFsxNzMsIDIxNiwgMjMwXSxcclxuXHRcImxpZ2h0Y29yYWxcIjogWzI0MCwgMTI4LCAxMjhdLFxyXG5cdFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcclxuXHRcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFsyNTAsIDI1MCwgMjEwXSxcclxuXHRcImxpZ2h0Z3JheVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcclxuXHRcImxpZ2h0Z3JleVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodHBpbmtcIjogWzI1NSwgMTgyLCAxOTNdLFxyXG5cdFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxyXG5cdFwibGlnaHRzZWFncmVlblwiOiBbMzIsIDE3OCwgMTcwXSxcclxuXHRcImxpZ2h0c2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDI1MF0sXHJcblx0XCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHNsYXRlZ3JleVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHN0ZWVsYmx1ZVwiOiBbMTc2LCAxOTYsIDIyMl0sXHJcblx0XCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXHJcblx0XCJsaW1lXCI6IFswLCAyNTUsIDBdLFxyXG5cdFwibGltZWdyZWVuXCI6IFs1MCwgMjA1LCA1MF0sXHJcblx0XCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXHJcblx0XCJtYWdlbnRhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJtYXJvb25cIjogWzEyOCwgMCwgMF0sXHJcblx0XCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcclxuXHRcIm1lZGl1bWJsdWVcIjogWzAsIDAsIDIwNV0sXHJcblx0XCJtZWRpdW1vcmNoaWRcIjogWzE4NiwgODUsIDIxMV0sXHJcblx0XCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxyXG5cdFwibWVkaXVtc2VhZ3JlZW5cIjogWzYwLCAxNzksIDExM10sXHJcblx0XCJtZWRpdW1zbGF0ZWJsdWVcIjogWzEyMywgMTA0LCAyMzhdLFxyXG5cdFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcclxuXHRcIm1lZGl1bXR1cnF1b2lzZVwiOiBbNzIsIDIwOSwgMjA0XSxcclxuXHRcIm1lZGl1bXZpb2xldHJlZFwiOiBbMTk5LCAyMSwgMTMzXSxcclxuXHRcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxyXG5cdFwibWludGNyZWFtXCI6IFsyNDUsIDI1NSwgMjUwXSxcclxuXHRcIm1pc3R5cm9zZVwiOiBbMjU1LCAyMjgsIDIyNV0sXHJcblx0XCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXHJcblx0XCJuYXZham93aGl0ZVwiOiBbMjU1LCAyMjIsIDE3M10sXHJcblx0XCJuYXZ5XCI6IFswLCAwLCAxMjhdLFxyXG5cdFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXHJcblx0XCJvbGl2ZVwiOiBbMTI4LCAxMjgsIDBdLFxyXG5cdFwib2xpdmVkcmFiXCI6IFsxMDcsIDE0MiwgMzVdLFxyXG5cdFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXHJcblx0XCJvcmFuZ2VyZWRcIjogWzI1NSwgNjksIDBdLFxyXG5cdFwib3JjaGlkXCI6IFsyMTgsIDExMiwgMjE0XSxcclxuXHRcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxyXG5cdFwicGFsZWdyZWVuXCI6IFsxNTIsIDI1MSwgMTUyXSxcclxuXHRcInBhbGV0dXJxdW9pc2VcIjogWzE3NSwgMjM4LCAyMzhdLFxyXG5cdFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXHJcblx0XCJwYXBheWF3aGlwXCI6IFsyNTUsIDIzOSwgMjEzXSxcclxuXHRcInBlYWNocHVmZlwiOiBbMjU1LCAyMTgsIDE4NV0sXHJcblx0XCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxyXG5cdFwicGlua1wiOiBbMjU1LCAxOTIsIDIwM10sXHJcblx0XCJwbHVtXCI6IFsyMjEsIDE2MCwgMjIxXSxcclxuXHRcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxyXG5cdFwicHVycGxlXCI6IFsxMjgsIDAsIDEyOF0sXHJcblx0XCJyZWJlY2NhcHVycGxlXCI6IFsxMDIsIDUxLCAxNTNdLFxyXG5cdFwicmVkXCI6IFsyNTUsIDAsIDBdLFxyXG5cdFwicm9zeWJyb3duXCI6IFsxODgsIDE0MywgMTQzXSxcclxuXHRcInJveWFsYmx1ZVwiOiBbNjUsIDEwNSwgMjI1XSxcclxuXHRcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXHJcblx0XCJzYWxtb25cIjogWzI1MCwgMTI4LCAxMTRdLFxyXG5cdFwic2FuZHlicm93blwiOiBbMjQ0LCAxNjQsIDk2XSxcclxuXHRcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXHJcblx0XCJzZWFzaGVsbFwiOiBbMjU1LCAyNDUsIDIzOF0sXHJcblx0XCJzaWVubmFcIjogWzE2MCwgODIsIDQ1XSxcclxuXHRcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXHJcblx0XCJza3libHVlXCI6IFsxMzUsIDIwNiwgMjM1XSxcclxuXHRcInNsYXRlYmx1ZVwiOiBbMTA2LCA5MCwgMjA1XSxcclxuXHRcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbGF0ZWdyZXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic25vd1wiOiBbMjU1LCAyNTAsIDI1MF0sXHJcblx0XCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxyXG5cdFwic3RlZWxibHVlXCI6IFs3MCwgMTMwLCAxODBdLFxyXG5cdFwidGFuXCI6IFsyMTAsIDE4MCwgMTQwXSxcclxuXHRcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcclxuXHRcInRoaXN0bGVcIjogWzIxNiwgMTkxLCAyMTZdLFxyXG5cdFwidG9tYXRvXCI6IFsyNTUsIDk5LCA3MV0sXHJcblx0XCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXHJcblx0XCJ2aW9sZXRcIjogWzIzOCwgMTMwLCAyMzhdLFxyXG5cdFwid2hlYXRcIjogWzI0NSwgMjIyLCAxNzldLFxyXG5cdFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxyXG5cdFwid2hpdGVzbW9rZVwiOiBbMjQ1LCAyNDUsIDI0NV0sXHJcblx0XCJ5ZWxsb3dcIjogWzI1NSwgMjU1LCAwXSxcclxuXHRcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_color-name@1.1.4@color-name/index.js\n"); /***/ }), /***/ "./node_modules/_color-string@1.9.0@color-string/index.js": /*!****************************************************************!*\ !*** ./node_modules/_color-string@1.9.0@color-string/index.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* MIT license */\nvar colorNames = __webpack_require__(/*! color-name */ \"./node_modules/_color-name@1.1.4@color-name/index.js\");\nvar swizzle = __webpack_require__(/*! simple-swizzle */ \"./node_modules/_simple-swizzle@0.2.2@simple-swizzle/index.js\");\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yLXN0cmluZ0AxLjkuMEBjb2xvci1zdHJpbmcvaW5kZXguanM/Nzk4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLHdFQUFZO0FBQ3JDLGNBQWMsbUJBQU8sQ0FBQyxvRkFBZ0I7QUFDdEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLElBQUk7QUFDN0Isd0JBQXdCLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUEsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1DQUFtQyxJQUFJO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOEJBQThCLElBQUk7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2NvbG9yLXN0cmluZ0AxLjkuMEBjb2xvci1zdHJpbmcvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNSVQgbGljZW5zZSAqL1xudmFyIGNvbG9yTmFtZXMgPSByZXF1aXJlKCdjb2xvci1uYW1lJyk7XG52YXIgc3dpenpsZSA9IHJlcXVpcmUoJ3NpbXBsZS1zd2l6emxlJyk7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QuaGFzT3duUHJvcGVydHk7XG5cbnZhciByZXZlcnNlTmFtZXMgPSB7fTtcblxuLy8gY3JlYXRlIGEgbGlzdCBvZiByZXZlcnNlIGNvbG9yIG5hbWVzXG5mb3IgKHZhciBuYW1lIGluIGNvbG9yTmFtZXMpIHtcblx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoY29sb3JOYW1lcywgbmFtZSkpIHtcblx0XHRyZXZlcnNlTmFtZXNbY29sb3JOYW1lc1tuYW1lXV0gPSBuYW1lO1xuXHR9XG59XG5cbnZhciBjcyA9IG1vZHVsZS5leHBvcnRzID0ge1xuXHR0bzoge30sXG5cdGdldDoge31cbn07XG5cbmNzLmdldCA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0dmFyIHByZWZpeCA9IHN0cmluZy5zdWJzdHJpbmcoMCwgMykudG9Mb3dlckNhc2UoKTtcblx0dmFyIHZhbDtcblx0dmFyIG1vZGVsO1xuXHRzd2l0Y2ggKHByZWZpeCkge1xuXHRcdGNhc2UgJ2hzbCc6XG5cdFx0XHR2YWwgPSBjcy5nZXQuaHNsKHN0cmluZyk7XG5cdFx0XHRtb2RlbCA9ICdoc2wnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnaHdiJzpcblx0XHRcdHZhbCA9IGNzLmdldC5od2Ioc3RyaW5nKTtcblx0XHRcdG1vZGVsID0gJ2h3Yic7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0dmFsID0gY3MuZ2V0LnJnYihzdHJpbmcpO1xuXHRcdFx0bW9kZWwgPSAncmdiJztcblx0XHRcdGJyZWFrO1xuXHR9XG5cblx0aWYgKCF2YWwpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHJldHVybiB7bW9kZWw6IG1vZGVsLCB2YWx1ZTogdmFsfTtcbn07XG5cbmNzLmdldC5yZ2IgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdGlmICghc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHR2YXIgYWJiciA9IC9eIyhbYS1mMC05XXszLDR9KSQvaTtcblx0dmFyIGhleCA9IC9eIyhbYS1mMC05XXs2fSkoW2EtZjAtOV17Mn0pPyQvaTtcblx0dmFyIHJnYmEgPSAvXnJnYmE/XFwoXFxzKihbKy1dP1xcZCspKD89W1xccyxdKVxccyooPzosXFxzKik/KFsrLV0/XFxkKykoPz1bXFxzLF0pXFxzKig/OixcXHMqKT8oWystXT9cXGQrKVxccyooPzpbLHxcXC9dXFxzKihbKy1dP1tcXGRcXC5dKykoJT8pXFxzKik/XFwpJC87XG5cdHZhciBwZXIgPSAvXnJnYmE/XFwoXFxzKihbKy1dP1tcXGRcXC5dKylcXCVcXHMqLD9cXHMqKFsrLV0/W1xcZFxcLl0rKVxcJVxccyosP1xccyooWystXT9bXFxkXFwuXSspXFwlXFxzKig/OlssfFxcL11cXHMqKFsrLV0/W1xcZFxcLl0rKSglPylcXHMqKT9cXCkkLztcblx0dmFyIGtleXdvcmQgPSAvXihcXHcrKSQvO1xuXG5cdHZhciByZ2IgPSBbMCwgMCwgMCwgMV07XG5cdHZhciBtYXRjaDtcblx0dmFyIGk7XG5cdHZhciBoZXhBbHBoYTtcblxuXHRpZiAobWF0Y2ggPSBzdHJpbmcubWF0Y2goaGV4KSkge1xuXHRcdGhleEFscGhhID0gbWF0Y2hbMl07XG5cdFx0bWF0Y2ggPSBtYXRjaFsxXTtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHRcdC8vIGh0dHBzOi8vanNwZXJmLmNvbS9zbGljZS12cy1zdWJzdHItdnMtc3Vic3RyaW5nLW1ldGhvZHMtbG9uZy1zdHJpbmcvMTlcblx0XHRcdHZhciBpMiA9IGkgKiAyO1xuXHRcdFx0cmdiW2ldID0gcGFyc2VJbnQobWF0Y2guc2xpY2UoaTIsIGkyICsgMiksIDE2KTtcblx0XHR9XG5cblx0XHRpZiAoaGV4QWxwaGEpIHtcblx0XHRcdHJnYlszXSA9IHBhcnNlSW50KGhleEFscGhhLCAxNikgLyAyNTU7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKGFiYnIpKSB7XG5cdFx0bWF0Y2ggPSBtYXRjaFsxXTtcblx0XHRoZXhBbHBoYSA9IG1hdGNoWzNdO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdFx0cmdiW2ldID0gcGFyc2VJbnQobWF0Y2hbaV0gKyBtYXRjaFtpXSwgMTYpO1xuXHRcdH1cblxuXHRcdGlmIChoZXhBbHBoYSkge1xuXHRcdFx0cmdiWzNdID0gcGFyc2VJbnQoaGV4QWxwaGEgKyBoZXhBbHBoYSwgMTYpIC8gMjU1O1xuXHRcdH1cblx0fSBlbHNlIGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaChyZ2JhKSkge1xuXHRcdGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHRcdHJnYltpXSA9IHBhcnNlSW50KG1hdGNoW2kgKyAxXSwgMCk7XG5cdFx0fVxuXG5cdFx0aWYgKG1hdGNoWzRdKSB7XG5cdFx0XHRpZiAobWF0Y2hbNV0pIHtcblx0XHRcdFx0cmdiWzNdID0gcGFyc2VGbG9hdChtYXRjaFs0XSkgKiAwLjAxO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmdiWzNdID0gcGFyc2VGbG9hdChtYXRjaFs0XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKHBlcikpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7XG5cdFx0XHRyZ2JbaV0gPSBNYXRoLnJvdW5kKHBhcnNlRmxvYXQobWF0Y2hbaSArIDFdKSAqIDIuNTUpO1xuXHRcdH1cblxuXHRcdGlmIChtYXRjaFs0XSkge1xuXHRcdFx0aWYgKG1hdGNoWzVdKSB7XG5cdFx0XHRcdHJnYlszXSA9IHBhcnNlRmxvYXQobWF0Y2hbNF0pICogMC4wMTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJnYlszXSA9IHBhcnNlRmxvYXQobWF0Y2hbNF0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaChrZXl3b3JkKSkge1xuXHRcdGlmIChtYXRjaFsxXSA9PT0gJ3RyYW5zcGFyZW50Jykge1xuXHRcdFx0cmV0dXJuIFswLCAwLCAwLCAwXTtcblx0XHR9XG5cblx0XHRpZiAoIWhhc093blByb3BlcnR5LmNhbGwoY29sb3JOYW1lcywgbWF0Y2hbMV0pKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRyZ2IgPSBjb2xvck5hbWVzW21hdGNoWzFdXTtcblx0XHRyZ2JbM10gPSAxO1xuXG5cdFx0cmV0dXJuIHJnYjtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHRyZ2JbaV0gPSBjbGFtcChyZ2JbaV0sIDAsIDI1NSk7XG5cdH1cblx0cmdiWzNdID0gY2xhbXAocmdiWzNdLCAwLCAxKTtcblxuXHRyZXR1cm4gcmdiO1xufTtcblxuY3MuZ2V0LmhzbCA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0aWYgKCFzdHJpbmcpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHZhciBoc2wgPSAvXmhzbGE/XFwoXFxzKihbKy1dPyg/OlxcZHswLDN9XFwuKT9cXGQrKSg/OmRlZyk/XFxzKiw/XFxzKihbKy1dP1tcXGRcXC5dKyklXFxzKiw/XFxzKihbKy1dP1tcXGRcXC5dKyklXFxzKig/OlssfFxcL11cXHMqKFsrLV0/KD89XFwuXFxkfFxcZCkoPzowfFsxLTldXFxkKik/KD86XFwuXFxkKik/KD86W2VFXVsrLV0/XFxkKyk/KVxccyopP1xcKSQvO1xuXHR2YXIgbWF0Y2ggPSBzdHJpbmcubWF0Y2goaHNsKTtcblxuXHRpZiAobWF0Y2gpIHtcblx0XHR2YXIgYWxwaGEgPSBwYXJzZUZsb2F0KG1hdGNoWzRdKTtcblx0XHR2YXIgaCA9ICgocGFyc2VGbG9hdChtYXRjaFsxXSkgJSAzNjApICsgMzYwKSAlIDM2MDtcblx0XHR2YXIgcyA9IGNsYW1wKHBhcnNlRmxvYXQobWF0Y2hbMl0pLCAwLCAxMDApO1xuXHRcdHZhciBsID0gY2xhbXAocGFyc2VGbG9hdChtYXRjaFszXSksIDAsIDEwMCk7XG5cdFx0dmFyIGEgPSBjbGFtcChpc05hTihhbHBoYSkgPyAxIDogYWxwaGEsIDAsIDEpO1xuXG5cdFx0cmV0dXJuIFtoLCBzLCBsLCBhXTtcblx0fVxuXG5cdHJldHVybiBudWxsO1xufTtcblxuY3MuZ2V0Lmh3YiA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0aWYgKCFzdHJpbmcpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHZhciBod2IgPSAvXmh3YlxcKFxccyooWystXT9cXGR7MCwzfSg/OlxcLlxcZCspPykoPzpkZWcpP1xccyosXFxzKihbKy1dP1tcXGRcXC5dKyklXFxzKixcXHMqKFsrLV0/W1xcZFxcLl0rKSVcXHMqKD86LFxccyooWystXT8oPz1cXC5cXGR8XFxkKSg/OjB8WzEtOV1cXGQqKT8oPzpcXC5cXGQqKT8oPzpbZUVdWystXT9cXGQrKT8pXFxzKik/XFwpJC87XG5cdHZhciBtYXRjaCA9IHN0cmluZy5tYXRjaChod2IpO1xuXG5cdGlmIChtYXRjaCkge1xuXHRcdHZhciBhbHBoYSA9IHBhcnNlRmxvYXQobWF0Y2hbNF0pO1xuXHRcdHZhciBoID0gKChwYXJzZUZsb2F0KG1hdGNoWzFdKSAlIDM2MCkgKyAzNjApICUgMzYwO1xuXHRcdHZhciB3ID0gY2xhbXAocGFyc2VGbG9hdChtYXRjaFsyXSksIDAsIDEwMCk7XG5cdFx0dmFyIGIgPSBjbGFtcChwYXJzZUZsb2F0KG1hdGNoWzNdKSwgMCwgMTAwKTtcblx0XHR2YXIgYSA9IGNsYW1wKGlzTmFOKGFscGhhKSA/IDEgOiBhbHBoYSwgMCwgMSk7XG5cdFx0cmV0dXJuIFtoLCB3LCBiLCBhXTtcblx0fVxuXG5cdHJldHVybiBudWxsO1xufTtcblxuY3MudG8uaGV4ID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgcmdiYSA9IHN3aXp6bGUoYXJndW1lbnRzKTtcblxuXHRyZXR1cm4gKFxuXHRcdCcjJyArXG5cdFx0aGV4RG91YmxlKHJnYmFbMF0pICtcblx0XHRoZXhEb3VibGUocmdiYVsxXSkgK1xuXHRcdGhleERvdWJsZShyZ2JhWzJdKSArXG5cdFx0KHJnYmFbM10gPCAxXG5cdFx0XHQ/IChoZXhEb3VibGUoTWF0aC5yb3VuZChyZ2JhWzNdICogMjU1KSkpXG5cdFx0XHQ6ICcnKVxuXHQpO1xufTtcblxuY3MudG8ucmdiID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgcmdiYSA9IHN3aXp6bGUoYXJndW1lbnRzKTtcblxuXHRyZXR1cm4gcmdiYS5sZW5ndGggPCA0IHx8IHJnYmFbM10gPT09IDFcblx0XHQ/ICdyZ2IoJyArIE1hdGgucm91bmQocmdiYVswXSkgKyAnLCAnICsgTWF0aC5yb3VuZChyZ2JhWzFdKSArICcsICcgKyBNYXRoLnJvdW5kKHJnYmFbMl0pICsgJyknXG5cdFx0OiAncmdiYSgnICsgTWF0aC5yb3VuZChyZ2JhWzBdKSArICcsICcgKyBNYXRoLnJvdW5kKHJnYmFbMV0pICsgJywgJyArIE1hdGgucm91bmQocmdiYVsyXSkgKyAnLCAnICsgcmdiYVszXSArICcpJztcbn07XG5cbmNzLnRvLnJnYi5wZXJjZW50ID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgcmdiYSA9IHN3aXp6bGUoYXJndW1lbnRzKTtcblxuXHR2YXIgciA9IE1hdGgucm91bmQocmdiYVswXSAvIDI1NSAqIDEwMCk7XG5cdHZhciBnID0gTWF0aC5yb3VuZChyZ2JhWzFdIC8gMjU1ICogMTAwKTtcblx0dmFyIGIgPSBNYXRoLnJvdW5kKHJnYmFbMl0gLyAyNTUgKiAxMDApO1xuXG5cdHJldHVybiByZ2JhLmxlbmd0aCA8IDQgfHwgcmdiYVszXSA9PT0gMVxuXHRcdD8gJ3JnYignICsgciArICclLCAnICsgZyArICclLCAnICsgYiArICclKSdcblx0XHQ6ICdyZ2JhKCcgKyByICsgJyUsICcgKyBnICsgJyUsICcgKyBiICsgJyUsICcgKyByZ2JhWzNdICsgJyknO1xufTtcblxuY3MudG8uaHNsID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgaHNsYSA9IHN3aXp6bGUoYXJndW1lbnRzKTtcblx0cmV0dXJuIGhzbGEubGVuZ3RoIDwgNCB8fCBoc2xhWzNdID09PSAxXG5cdFx0PyAnaHNsKCcgKyBoc2xhWzBdICsgJywgJyArIGhzbGFbMV0gKyAnJSwgJyArIGhzbGFbMl0gKyAnJSknXG5cdFx0OiAnaHNsYSgnICsgaHNsYVswXSArICcsICcgKyBoc2xhWzFdICsgJyUsICcgKyBoc2xhWzJdICsgJyUsICcgKyBoc2xhWzNdICsgJyknO1xufTtcblxuLy8gaHdiIGlzIGEgYml0IGRpZmZlcmVudCB0aGFuIHJnYihhKSAmIGhzbChhKSBzaW5jZSB0aGVyZSBpcyBubyBhbHBoYSBzcGVjaWZpYyBzeW50YXhcbi8vIChod2IgaGF2ZSBhbHBoYSBvcHRpb25hbCAmIDEgaXMgZGVmYXVsdCB2YWx1ZSlcbmNzLnRvLmh3YiA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIGh3YmEgPSBzd2l6emxlKGFyZ3VtZW50cyk7XG5cblx0dmFyIGEgPSAnJztcblx0aWYgKGh3YmEubGVuZ3RoID49IDQgJiYgaHdiYVszXSAhPT0gMSkge1xuXHRcdGEgPSAnLCAnICsgaHdiYVszXTtcblx0fVxuXG5cdHJldHVybiAnaHdiKCcgKyBod2JhWzBdICsgJywgJyArIGh3YmFbMV0gKyAnJSwgJyArIGh3YmFbMl0gKyAnJScgKyBhICsgJyknO1xufTtcblxuY3MudG8ua2V5d29yZCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0cmV0dXJuIHJldmVyc2VOYW1lc1tyZ2Iuc2xpY2UoMCwgMyldO1xufTtcblxuLy8gaGVscGVyc1xuZnVuY3Rpb24gY2xhbXAobnVtLCBtaW4sIG1heCkge1xuXHRyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobWluLCBudW0pLCBtYXgpO1xufVxuXG5mdW5jdGlvbiBoZXhEb3VibGUobnVtKSB7XG5cdHZhciBzdHIgPSBNYXRoLnJvdW5kKG51bSkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAoc3RyLmxlbmd0aCA8IDIpID8gJzAnICsgc3RyIDogc3RyO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_color-string@1.9.0@color-string/index.js\n"); /***/ }), /***/ "./node_modules/_color@3.2.1@color/index.js": /*!**************************************************!*\ !*** ./node_modules/_color@3.2.1@color/index.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar colorString = __webpack_require__(/*! color-string */ \"./node_modules/_color-string@1.9.0@color-string/index.js\");\nvar convert = __webpack_require__(/*! color-convert */ \"./node_modules/_color-convert@1.9.3@color-convert/index.js\");\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2NvbG9yQDMuMi4xQGNvbG9yL2luZGV4LmpzPzg5NzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsa0JBQWtCLG1CQUFPLENBQUMsOEVBQWM7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLGlGQUFlOztBQUVyQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxtQkFBbUI7QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGNBQWM7QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUVBQXFFLGtDQUFrQyxFQUFFOztBQUV6RztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLFlBQVk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fY29sb3JAMy4yLjFAY29sb3IvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjb2xvclN0cmluZyA9IHJlcXVpcmUoJ2NvbG9yLXN0cmluZycpO1xudmFyIGNvbnZlcnQgPSByZXF1aXJlKCdjb2xvci1jb252ZXJ0Jyk7XG5cbnZhciBfc2xpY2UgPSBbXS5zbGljZTtcblxudmFyIHNraXBwZWRNb2RlbHMgPSBbXG5cdC8vIHRvIGJlIGhvbmVzdCwgSSBkb24ndCByZWFsbHkgZmVlbCBsaWtlIGtleXdvcmQgYmVsb25ncyBpbiBjb2xvciBjb252ZXJ0LCBidXQgZWguXG5cdCdrZXl3b3JkJyxcblxuXHQvLyBncmF5IGNvbmZsaWN0cyB3aXRoIHNvbWUgbWV0aG9kIG5hbWVzLCBhbmQgaGFzIGl0cyBvd24gbWV0aG9kIGRlZmluZWQuXG5cdCdncmF5JyxcblxuXHQvLyBzaG91bGRuJ3QgcmVhbGx5IGJlIGluIGNvbG9yLWNvbnZlcnQgZWl0aGVyLi4uXG5cdCdoZXgnXG5dO1xuXG52YXIgaGFzaGVkTW9kZWxLZXlzID0ge307XG5PYmplY3Qua2V5cyhjb252ZXJ0KS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuXHRoYXNoZWRNb2RlbEtleXNbX3NsaWNlLmNhbGwoY29udmVydFttb2RlbF0ubGFiZWxzKS5zb3J0KCkuam9pbignJyldID0gbW9kZWw7XG59KTtcblxudmFyIGxpbWl0ZXJzID0ge307XG5cbmZ1bmN0aW9uIENvbG9yKG9iaiwgbW9kZWwpIHtcblx0aWYgKCEodGhpcyBpbnN0YW5jZW9mIENvbG9yKSkge1xuXHRcdHJldHVybiBuZXcgQ29sb3Iob2JqLCBtb2RlbCk7XG5cdH1cblxuXHRpZiAobW9kZWwgJiYgbW9kZWwgaW4gc2tpcHBlZE1vZGVscykge1xuXHRcdG1vZGVsID0gbnVsbDtcblx0fVxuXG5cdGlmIChtb2RlbCAmJiAhKG1vZGVsIGluIGNvbnZlcnQpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1vZGVsOiAnICsgbW9kZWwpO1xuXHR9XG5cblx0dmFyIGk7XG5cdHZhciBjaGFubmVscztcblxuXHRpZiAob2JqID09IG51bGwpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuXHRcdHRoaXMubW9kZWwgPSAncmdiJztcblx0XHR0aGlzLmNvbG9yID0gWzAsIDAsIDBdO1xuXHRcdHRoaXMudmFscGhhID0gMTtcblx0fSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBDb2xvcikge1xuXHRcdHRoaXMubW9kZWwgPSBvYmoubW9kZWw7XG5cdFx0dGhpcy5jb2xvciA9IG9iai5jb2xvci5zbGljZSgpO1xuXHRcdHRoaXMudmFscGhhID0gb2JqLnZhbHBoYTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuXHRcdHZhciByZXN1bHQgPSBjb2xvclN0cmluZy5nZXQob2JqKTtcblx0XHRpZiAocmVzdWx0ID09PSBudWxsKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBjb2xvciBmcm9tIHN0cmluZzogJyArIG9iaik7XG5cdFx0fVxuXG5cdFx0dGhpcy5tb2RlbCA9IHJlc3VsdC5tb2RlbDtcblx0XHRjaGFubmVscyA9IGNvbnZlcnRbdGhpcy5tb2RlbF0uY2hhbm5lbHM7XG5cdFx0dGhpcy5jb2xvciA9IHJlc3VsdC52YWx1ZS5zbGljZSgwLCBjaGFubmVscyk7XG5cdFx0dGhpcy52YWxwaGEgPSB0eXBlb2YgcmVzdWx0LnZhbHVlW2NoYW5uZWxzXSA9PT0gJ251bWJlcicgPyByZXN1bHQudmFsdWVbY2hhbm5lbHNdIDogMTtcblx0fSBlbHNlIGlmIChvYmoubGVuZ3RoKSB7XG5cdFx0dGhpcy5tb2RlbCA9IG1vZGVsIHx8ICdyZ2InO1xuXHRcdGNoYW5uZWxzID0gY29udmVydFt0aGlzLm1vZGVsXS5jaGFubmVscztcblx0XHR2YXIgbmV3QXJyID0gX3NsaWNlLmNhbGwob2JqLCAwLCBjaGFubmVscyk7XG5cdFx0dGhpcy5jb2xvciA9IHplcm9BcnJheShuZXdBcnIsIGNoYW5uZWxzKTtcblx0XHR0aGlzLnZhbHBoYSA9IHR5cGVvZiBvYmpbY2hhbm5lbHNdID09PSAnbnVtYmVyJyA/IG9ialtjaGFubmVsc10gOiAxO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdudW1iZXInKSB7XG5cdFx0Ly8gdGhpcyBpcyBhbHdheXMgUkdCIC0gY2FuIGJlIGNvbnZlcnRlZCBsYXRlciBvbi5cblx0XHRvYmogJj0gMHhGRkZGRkY7XG5cdFx0dGhpcy5tb2RlbCA9ICdyZ2InO1xuXHRcdHRoaXMuY29sb3IgPSBbXG5cdFx0XHQob2JqID4+IDE2KSAmIDB4RkYsXG5cdFx0XHQob2JqID4+IDgpICYgMHhGRixcblx0XHRcdG9iaiAmIDB4RkZcblx0XHRdO1xuXHRcdHRoaXMudmFscGhhID0gMTtcblx0fSBlbHNlIHtcblx0XHR0aGlzLnZhbHBoYSA9IDE7XG5cblx0XHR2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cdFx0aWYgKCdhbHBoYScgaW4gb2JqKSB7XG5cdFx0XHRrZXlzLnNwbGljZShrZXlzLmluZGV4T2YoJ2FscGhhJyksIDEpO1xuXHRcdFx0dGhpcy52YWxwaGEgPSB0eXBlb2Ygb2JqLmFscGhhID09PSAnbnVtYmVyJyA/IG9iai5hbHBoYSA6IDA7XG5cdFx0fVxuXG5cdFx0dmFyIGhhc2hlZEtleXMgPSBrZXlzLnNvcnQoKS5qb2luKCcnKTtcblx0XHRpZiAoIShoYXNoZWRLZXlzIGluIGhhc2hlZE1vZGVsS2V5cykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHBhcnNlIGNvbG9yIGZyb20gb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkob2JqKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5tb2RlbCA9IGhhc2hlZE1vZGVsS2V5c1toYXNoZWRLZXlzXTtcblxuXHRcdHZhciBsYWJlbHMgPSBjb252ZXJ0W3RoaXMubW9kZWxdLmxhYmVscztcblx0XHR2YXIgY29sb3IgPSBbXTtcblx0XHRmb3IgKGkgPSAwOyBpIDwgbGFiZWxzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb2xvci5wdXNoKG9ialtsYWJlbHNbaV1dKTtcblx0XHR9XG5cblx0XHR0aGlzLmNvbG9yID0gemVyb0FycmF5KGNvbG9yKTtcblx0fVxuXG5cdC8vIHBlcmZvcm0gbGltaXRhdGlvbnMgKGNsYW1waW5nLCBldGMuKVxuXHRpZiAobGltaXRlcnNbdGhpcy5tb2RlbF0pIHtcblx0XHRjaGFubmVscyA9IGNvbnZlcnRbdGhpcy5tb2RlbF0uY2hhbm5lbHM7XG5cdFx0Zm9yIChpID0gMDsgaSA8IGNoYW5uZWxzOyBpKyspIHtcblx0XHRcdHZhciBsaW1pdCA9IGxpbWl0ZXJzW3RoaXMubW9kZWxdW2ldO1xuXHRcdFx0aWYgKGxpbWl0KSB7XG5cdFx0XHRcdHRoaXMuY29sb3JbaV0gPSBsaW1pdCh0aGlzLmNvbG9yW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0aGlzLnZhbHBoYSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHRoaXMudmFscGhhKSk7XG5cblx0aWYgKE9iamVjdC5mcmVlemUpIHtcblx0XHRPYmplY3QuZnJlZXplKHRoaXMpO1xuXHR9XG59XG5cbkNvbG9yLnByb3RvdHlwZSA9IHtcblx0dG9TdHJpbmc6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdGhpcy5zdHJpbmcoKTtcblx0fSxcblxuXHR0b0pTT046IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdGhpc1t0aGlzLm1vZGVsXSgpO1xuXHR9LFxuXG5cdHN0cmluZzogZnVuY3Rpb24gKHBsYWNlcykge1xuXHRcdHZhciBzZWxmID0gdGhpcy5tb2RlbCBpbiBjb2xvclN0cmluZy50byA/IHRoaXMgOiB0aGlzLnJnYigpO1xuXHRcdHNlbGYgPSBzZWxmLnJvdW5kKHR5cGVvZiBwbGFjZXMgPT09ICdudW1iZXInID8gcGxhY2VzIDogMSk7XG5cdFx0dmFyIGFyZ3MgPSBzZWxmLnZhbHBoYSA9PT0gMSA/IHNlbGYuY29sb3IgOiBzZWxmLmNvbG9yLmNvbmNhdCh0aGlzLnZhbHBoYSk7XG5cdFx0cmV0dXJuIGNvbG9yU3RyaW5nLnRvW3NlbGYubW9kZWxdKGFyZ3MpO1xuXHR9LFxuXG5cdHBlcmNlbnRTdHJpbmc6IGZ1bmN0aW9uIChwbGFjZXMpIHtcblx0XHR2YXIgc2VsZiA9IHRoaXMucmdiKCkucm91bmQodHlwZW9mIHBsYWNlcyA9PT0gJ251bWJlcicgPyBwbGFjZXMgOiAxKTtcblx0XHR2YXIgYXJncyA9IHNlbGYudmFscGhhID09PSAxID8gc2VsZi5jb2xvciA6IHNlbGYuY29sb3IuY29uY2F0KHRoaXMudmFscGhhKTtcblx0XHRyZXR1cm4gY29sb3JTdHJpbmcudG8ucmdiLnBlcmNlbnQoYXJncyk7XG5cdH0sXG5cblx0YXJyYXk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdGhpcy52YWxwaGEgPT09IDEgPyB0aGlzLmNvbG9yLnNsaWNlKCkgOiB0aGlzLmNvbG9yLmNvbmNhdCh0aGlzLnZhbHBoYSk7XG5cdH0sXG5cblx0b2JqZWN0OiBmdW5jdGlvbiAoKSB7XG5cdFx0dmFyIHJlc3VsdCA9IHt9O1xuXHRcdHZhciBjaGFubmVscyA9IGNvbnZlcnRbdGhpcy5tb2RlbF0uY2hhbm5lbHM7XG5cdFx0dmFyIGxhYmVscyA9IGNvbnZlcnRbdGhpcy5tb2RlbF0ubGFiZWxzO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGFubmVsczsgaSsrKSB7XG5cdFx0XHRyZXN1bHRbbGFiZWxzW2ldXSA9IHRoaXMuY29sb3JbaV07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudmFscGhhICE9PSAxKSB7XG5cdFx0XHRyZXN1bHQuYWxwaGEgPSB0aGlzLnZhbHBoYTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXG5cdHVuaXRBcnJheTogZnVuY3Rpb24gKCkge1xuXHRcdHZhciByZ2IgPSB0aGlzLnJnYigpLmNvbG9yO1xuXHRcdHJnYlswXSAvPSAyNTU7XG5cdFx0cmdiWzFdIC89IDI1NTtcblx0XHRyZ2JbMl0gLz0gMjU1O1xuXG5cdFx0aWYgKHRoaXMudmFscGhhICE9PSAxKSB7XG5cdFx0XHRyZ2IucHVzaCh0aGlzLnZhbHBoYSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJnYjtcblx0fSxcblxuXHR1bml0T2JqZWN0OiBmdW5jdGlvbiAoKSB7XG5cdFx0dmFyIHJnYiA9IHRoaXMucmdiKCkub2JqZWN0KCk7XG5cdFx0cmdiLnIgLz0gMjU1O1xuXHRcdHJnYi5nIC89IDI1NTtcblx0XHRyZ2IuYiAvPSAyNTU7XG5cblx0XHRpZiAodGhpcy52YWxwaGEgIT09IDEpIHtcblx0XHRcdHJnYi5hbHBoYSA9IHRoaXMudmFscGhhO1xuXHRcdH1cblxuXHRcdHJldHVybiByZ2I7XG5cdH0sXG5cblx0cm91bmQ6IGZ1bmN0aW9uIChwbGFjZXMpIHtcblx0XHRwbGFjZXMgPSBNYXRoLm1heChwbGFjZXMgfHwgMCwgMCk7XG5cdFx0cmV0dXJuIG5ldyBDb2xvcih0aGlzLmNvbG9yLm1hcChyb3VuZFRvUGxhY2UocGxhY2VzKSkuY29uY2F0KHRoaXMudmFscGhhKSwgdGhpcy5tb2RlbCk7XG5cdH0sXG5cblx0YWxwaGE6IGZ1bmN0aW9uICh2YWwpIHtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb2xvcih0aGlzLmNvbG9yLmNvbmNhdChNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB2YWwpKSksIHRoaXMubW9kZWwpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnZhbHBoYTtcblx0fSxcblxuXHQvLyByZ2Jcblx0cmVkOiBnZXRzZXQoJ3JnYicsIDAsIG1heGZuKDI1NSkpLFxuXHRncmVlbjogZ2V0c2V0KCdyZ2InLCAxLCBtYXhmbigyNTUpKSxcblx0Ymx1ZTogZ2V0c2V0KCdyZ2InLCAyLCBtYXhmbigyNTUpKSxcblxuXHRodWU6IGdldHNldChbJ2hzbCcsICdoc3YnLCAnaHNsJywgJ2h3YicsICdoY2cnXSwgMCwgZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gKCh2YWwgJSAzNjApICsgMzYwKSAlIDM2MDsgfSksIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYnJhY2Utc3R5bGVcblxuXHRzYXR1cmF0aW9ubDogZ2V0c2V0KCdoc2wnLCAxLCBtYXhmbigxMDApKSxcblx0bGlnaHRuZXNzOiBnZXRzZXQoJ2hzbCcsIDIsIG1heGZuKDEwMCkpLFxuXG5cdHNhdHVyYXRpb252OiBnZXRzZXQoJ2hzdicsIDEsIG1heGZuKDEwMCkpLFxuXHR2YWx1ZTogZ2V0c2V0KCdoc3YnLCAyLCBtYXhmbigxMDApKSxcblxuXHRjaHJvbWE6IGdldHNldCgnaGNnJywgMSwgbWF4Zm4oMTAwKSksXG5cdGdyYXk6IGdldHNldCgnaGNnJywgMiwgbWF4Zm4oMTAwKSksXG5cblx0d2hpdGU6IGdldHNldCgnaHdiJywgMSwgbWF4Zm4oMTAwKSksXG5cdHdibGFjazogZ2V0c2V0KCdod2InLCAyLCBtYXhmbigxMDApKSxcblxuXHRjeWFuOiBnZXRzZXQoJ2NteWsnLCAwLCBtYXhmbigxMDApKSxcblx0bWFnZW50YTogZ2V0c2V0KCdjbXlrJywgMSwgbWF4Zm4oMTAwKSksXG5cdHllbGxvdzogZ2V0c2V0KCdjbXlrJywgMiwgbWF4Zm4oMTAwKSksXG5cdGJsYWNrOiBnZXRzZXQoJ2NteWsnLCAzLCBtYXhmbigxMDApKSxcblxuXHR4OiBnZXRzZXQoJ3h5eicsIDAsIG1heGZuKDEwMCkpLFxuXHR5OiBnZXRzZXQoJ3h5eicsIDEsIG1heGZuKDEwMCkpLFxuXHR6OiBnZXRzZXQoJ3h5eicsIDIsIG1heGZuKDEwMCkpLFxuXG5cdGw6IGdldHNldCgnbGFiJywgMCwgbWF4Zm4oMTAwKSksXG5cdGE6IGdldHNldCgnbGFiJywgMSksXG5cdGI6IGdldHNldCgnbGFiJywgMiksXG5cblx0a2V5d29yZDogZnVuY3Rpb24gKHZhbCkge1xuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gbmV3IENvbG9yKHZhbCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbnZlcnRbdGhpcy5tb2RlbF0ua2V5d29yZCh0aGlzLmNvbG9yKTtcblx0fSxcblxuXHRoZXg6IGZ1bmN0aW9uICh2YWwpIHtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG5ldyBDb2xvcih2YWwpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb2xvclN0cmluZy50by5oZXgodGhpcy5yZ2IoKS5yb3VuZCgpLmNvbG9yKTtcblx0fSxcblxuXHRyZ2JOdW1iZXI6IGZ1bmN0aW9uICgpIHtcblx0XHR2YXIgcmdiID0gdGhpcy5yZ2IoKS5jb2xvcjtcblx0XHRyZXR1cm4gKChyZ2JbMF0gJiAweEZGKSA8PCAxNikgfCAoKHJnYlsxXSAmIDB4RkYpIDw8IDgpIHwgKHJnYlsyXSAmIDB4RkYpO1xuXHR9LFxuXG5cdGx1bWlub3NpdHk6IGZ1bmN0aW9uICgpIHtcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXG5cdFx0dmFyIHJnYiA9IHRoaXMucmdiKCkuY29sb3I7XG5cblx0XHR2YXIgbHVtID0gW107XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZ2IubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBjaGFuID0gcmdiW2ldIC8gMjU1O1xuXHRcdFx0bHVtW2ldID0gKGNoYW4gPD0gMC4wMzkyOCkgPyBjaGFuIC8gMTIuOTIgOiBNYXRoLnBvdygoKGNoYW4gKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIDAuMjEyNiAqIGx1bVswXSArIDAuNzE1MiAqIGx1bVsxXSArIDAuMDcyMiAqIGx1bVsyXTtcblx0fSxcblxuXHRjb250cmFzdDogZnVuY3Rpb24gKGNvbG9yMikge1xuXHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1dDQUcyMC8jY29udHJhc3QtcmF0aW9kZWZcblx0XHR2YXIgbHVtMSA9IHRoaXMubHVtaW5vc2l0eSgpO1xuXHRcdHZhciBsdW0yID0gY29sb3IyLmx1bWlub3NpdHkoKTtcblxuXHRcdGlmIChsdW0xID4gbHVtMikge1xuXHRcdFx0cmV0dXJuIChsdW0xICsgMC4wNSkgLyAobHVtMiArIDAuMDUpO1xuXHRcdH1cblxuXHRcdHJldHVybiAobHVtMiArIDAuMDUpIC8gKGx1bTEgKyAwLjA1KTtcblx0fSxcblxuXHRsZXZlbDogZnVuY3Rpb24gKGNvbG9yMikge1xuXHRcdHZhciBjb250cmFzdFJhdGlvID0gdGhpcy5jb250cmFzdChjb2xvcjIpO1xuXHRcdGlmIChjb250cmFzdFJhdGlvID49IDcuMSkge1xuXHRcdFx0cmV0dXJuICdBQUEnO1xuXHRcdH1cblxuXHRcdHJldHVybiAoY29udHJhc3RSYXRpbyA+PSA0LjUpID8gJ0FBJyA6ICcnO1xuXHR9LFxuXG5cdGlzRGFyazogZnVuY3Rpb24gKCkge1xuXHRcdC8vIFlJUSBlcXVhdGlvbiBmcm9tIGh0dHA6Ly8yNHdheXMub3JnLzIwMTAvY2FsY3VsYXRpbmctY29sb3ItY29udHJhc3Rcblx0XHR2YXIgcmdiID0gdGhpcy5yZ2IoKS5jb2xvcjtcblx0XHR2YXIgeWlxID0gKHJnYlswXSAqIDI5OSArIHJnYlsxXSAqIDU4NyArIHJnYlsyXSAqIDExNCkgLyAxMDAwO1xuXHRcdHJldHVybiB5aXEgPCAxMjg7XG5cdH0sXG5cblx0aXNMaWdodDogZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiAhdGhpcy5pc0RhcmsoKTtcblx0fSxcblxuXHRuZWdhdGU6IGZ1bmN0aW9uICgpIHtcblx0XHR2YXIgcmdiID0gdGhpcy5yZ2IoKTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuXHRcdFx0cmdiLmNvbG9yW2ldID0gMjU1IC0gcmdiLmNvbG9yW2ldO1xuXHRcdH1cblx0XHRyZXR1cm4gcmdiO1xuXHR9LFxuXG5cdGxpZ2h0ZW46IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHZhciBoc2wgPSB0aGlzLmhzbCgpO1xuXHRcdGhzbC5jb2xvclsyXSArPSBoc2wuY29sb3JbMl0gKiByYXRpbztcblx0XHRyZXR1cm4gaHNsO1xuXHR9LFxuXG5cdGRhcmtlbjogZnVuY3Rpb24gKHJhdGlvKSB7XG5cdFx0dmFyIGhzbCA9IHRoaXMuaHNsKCk7XG5cdFx0aHNsLmNvbG9yWzJdIC09IGhzbC5jb2xvclsyXSAqIHJhdGlvO1xuXHRcdHJldHVybiBoc2w7XG5cdH0sXG5cblx0c2F0dXJhdGU6IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHZhciBoc2wgPSB0aGlzLmhzbCgpO1xuXHRcdGhzbC5jb2xvclsxXSArPSBoc2wuY29sb3JbMV0gKiByYXRpbztcblx0XHRyZXR1cm4gaHNsO1xuXHR9LFxuXG5cdGRlc2F0dXJhdGU6IGZ1bmN0aW9uIChyYXRpbykge1xuXHRcdHZhciBoc2wgPSB0aGlzLmhzbCgpO1xuXHRcdGhzbC5jb2xvclsxXSAtPSBoc2wuY29sb3JbMV0gKiByYXRpbztcblx0XHRyZXR1cm4gaHNsO1xuXHR9LFxuXG5cdHdoaXRlbjogZnVuY3Rpb24gKHJhdGlvKSB7XG5cdFx0dmFyIGh3YiA9IHRoaXMuaHdiKCk7XG5cdFx0aHdiLmNvbG9yWzFdICs9IGh3Yi5jb2xvclsxXSAqIHJhdGlvO1xuXHRcdHJldHVybiBod2I7XG5cdH0sXG5cblx0YmxhY2tlbjogZnVuY3Rpb24gKHJhdGlvKSB7XG5cdFx0dmFyIGh3YiA9IHRoaXMuaHdiKCk7XG5cdFx0aHdiLmNvbG9yWzJdICs9IGh3Yi5jb2xvclsyXSAqIHJhdGlvO1xuXHRcdHJldHVybiBod2I7XG5cdH0sXG5cblx0Z3JheXNjYWxlOiBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HcmF5c2NhbGUjQ29udmVydGluZ19jb2xvcl90b19ncmF5c2NhbGVcblx0XHR2YXIgcmdiID0gdGhpcy5yZ2IoKS5jb2xvcjtcblx0XHR2YXIgdmFsID0gcmdiWzBdICogMC4zICsgcmdiWzFdICogMC41OSArIHJnYlsyXSAqIDAuMTE7XG5cdFx0cmV0dXJuIENvbG9yLnJnYih2YWwsIHZhbCwgdmFsKTtcblx0fSxcblxuXHRmYWRlOiBmdW5jdGlvbiAocmF0aW8pIHtcblx0XHRyZXR1cm4gdGhpcy5hbHBoYSh0aGlzLnZhbHBoYSAtICh0aGlzLnZhbHBoYSAqIHJhdGlvKSk7XG5cdH0sXG5cblx0b3BhcXVlcjogZnVuY3Rpb24gKHJhdGlvKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWxwaGEodGhpcy52YWxwaGEgKyAodGhpcy52YWxwaGEgKiByYXRpbykpO1xuXHR9LFxuXG5cdHJvdGF0ZTogZnVuY3Rpb24gKGRlZ3JlZXMpIHtcblx0XHR2YXIgaHNsID0gdGhpcy5oc2woKTtcblx0XHR2YXIgaHVlID0gaHNsLmNvbG9yWzBdO1xuXHRcdGh1ZSA9IChodWUgKyBkZWdyZWVzKSAlIDM2MDtcblx0XHRodWUgPSBodWUgPCAwID8gMzYwICsgaHVlIDogaHVlO1xuXHRcdGhzbC5jb2xvclswXSA9IGh1ZTtcblx0XHRyZXR1cm4gaHNsO1xuXHR9LFxuXG5cdG1peDogZnVuY3Rpb24gKG1peGluQ29sb3IsIHdlaWdodCkge1xuXHRcdC8vIHBvcnRlZCBmcm9tIHNhc3MgaW1wbGVtZW50YXRpb24gaW4gQ1xuXHRcdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL2xpYnNhc3MvYmxvYi8wZTZiNGEyODUwMDkyMzU2YWEzZWNlMDdjNmIyNDlmMDIyMWNhY2VkL2Z1bmN0aW9ucy5jcHAjTDIwOVxuXHRcdGlmICghbWl4aW5Db2xvciB8fCAhbWl4aW5Db2xvci5yZ2IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgdG8gXCJtaXhcIiB3YXMgbm90IGEgQ29sb3IgaW5zdGFuY2UsIGJ1dCByYXRoZXIgYW4gaW5zdGFuY2Ugb2YgJyArIHR5cGVvZiBtaXhpbkNvbG9yKTtcblx0XHR9XG5cdFx0dmFyIGNvbG9yMSA9IG1peGluQ29sb3IucmdiKCk7XG5cdFx0dmFyIGNvbG9yMiA9IHRoaXMucmdiKCk7XG5cdFx0dmFyIHAgPSB3ZWlnaHQgPT09IHVuZGVmaW5lZCA/IDAuNSA6IHdlaWdodDtcblxuXHRcdHZhciB3ID0gMiAqIHAgLSAxO1xuXHRcdHZhciBhID0gY29sb3IxLmFscGhhKCkgLSBjb2xvcjIuYWxwaGEoKTtcblxuXHRcdHZhciB3MSA9ICgoKHcgKiBhID09PSAtMSkgPyB3IDogKHcgKyBhKSAvICgxICsgdyAqIGEpKSArIDEpIC8gMi4wO1xuXHRcdHZhciB3MiA9IDEgLSB3MTtcblxuXHRcdHJldHVybiBDb2xvci5yZ2IoXG5cdFx0XHRcdHcxICogY29sb3IxLnJlZCgpICsgdzIgKiBjb2xvcjIucmVkKCksXG5cdFx0XHRcdHcxICogY29sb3IxLmdyZWVuKCkgKyB3MiAqIGNvbG9yMi5ncmVlbigpLFxuXHRcdFx0XHR3MSAqIGNvbG9yMS5ibHVlKCkgKyB3MiAqIGNvbG9yMi5ibHVlKCksXG5cdFx0XHRcdGNvbG9yMS5hbHBoYSgpICogcCArIGNvbG9yMi5hbHBoYSgpICogKDEgLSBwKSk7XG5cdH1cbn07XG5cbi8vIG1vZGVsIGNvbnZlcnNpb24gbWV0aG9kcyBhbmQgc3RhdGljIGNvbnN0cnVjdG9yc1xuT2JqZWN0LmtleXMoY29udmVydCkuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcblx0aWYgKHNraXBwZWRNb2RlbHMuaW5kZXhPZihtb2RlbCkgIT09IC0xKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0dmFyIGNoYW5uZWxzID0gY29udmVydFttb2RlbF0uY2hhbm5lbHM7XG5cblx0Ly8gY29udmVyc2lvbiBtZXRob2RzXG5cdENvbG9yLnByb3RvdHlwZVttb2RlbF0gPSBmdW5jdGlvbiAoKSB7XG5cdFx0aWYgKHRoaXMubW9kZWwgPT09IG1vZGVsKSB7XG5cdFx0XHRyZXR1cm4gbmV3IENvbG9yKHRoaXMpO1xuXHRcdH1cblxuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gbmV3IENvbG9yKGFyZ3VtZW50cywgbW9kZWwpO1xuXHRcdH1cblxuXHRcdHZhciBuZXdBbHBoYSA9IHR5cGVvZiBhcmd1bWVudHNbY2hhbm5lbHNdID09PSAnbnVtYmVyJyA/IGNoYW5uZWxzIDogdGhpcy52YWxwaGE7XG5cdFx0cmV0dXJuIG5ldyBDb2xvcihhc3NlcnRBcnJheShjb252ZXJ0W3RoaXMubW9kZWxdW21vZGVsXS5yYXcodGhpcy5jb2xvcikpLmNvbmNhdChuZXdBbHBoYSksIG1vZGVsKTtcblx0fTtcblxuXHQvLyAnc3RhdGljJyBjb25zdHJ1Y3Rpb24gbWV0aG9kc1xuXHRDb2xvclttb2RlbF0gPSBmdW5jdGlvbiAoY29sb3IpIHtcblx0XHRpZiAodHlwZW9mIGNvbG9yID09PSAnbnVtYmVyJykge1xuXHRcdFx0Y29sb3IgPSB6ZXJvQXJyYXkoX3NsaWNlLmNhbGwoYXJndW1lbnRzKSwgY2hhbm5lbHMpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IENvbG9yKGNvbG9yLCBtb2RlbCk7XG5cdH07XG59KTtcblxuZnVuY3Rpb24gcm91bmRUbyhudW0sIHBsYWNlcykge1xuXHRyZXR1cm4gTnVtYmVyKG51bS50b0ZpeGVkKHBsYWNlcykpO1xufVxuXG5mdW5jdGlvbiByb3VuZFRvUGxhY2UocGxhY2VzKSB7XG5cdHJldHVybiBmdW5jdGlvbiAobnVtKSB7XG5cdFx0cmV0dXJuIHJvdW5kVG8obnVtLCBwbGFjZXMpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiBnZXRzZXQobW9kZWwsIGNoYW5uZWwsIG1vZGlmaWVyKSB7XG5cdG1vZGVsID0gQXJyYXkuaXNBcnJheShtb2RlbCkgPyBtb2RlbCA6IFttb2RlbF07XG5cblx0bW9kZWwuZm9yRWFjaChmdW5jdGlvbiAobSkge1xuXHRcdChsaW1pdGVyc1ttXSB8fCAobGltaXRlcnNbbV0gPSBbXSkpW2NoYW5uZWxdID0gbW9kaWZpZXI7XG5cdH0pO1xuXG5cdG1vZGVsID0gbW9kZWxbMF07XG5cblx0cmV0dXJuIGZ1bmN0aW9uICh2YWwpIHtcblx0XHR2YXIgcmVzdWx0O1xuXG5cdFx0aWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcblx0XHRcdGlmIChtb2RpZmllcikge1xuXHRcdFx0XHR2YWwgPSBtb2RpZmllcih2YWwpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXN1bHQgPSB0aGlzW21vZGVsXSgpO1xuXHRcdFx0cmVzdWx0LmNvbG9yW2NoYW5uZWxdID0gdmFsO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cblx0XHRyZXN1bHQgPSB0aGlzW21vZGVsXSgpLmNvbG9yW2NoYW5uZWxdO1xuXHRcdGlmIChtb2RpZmllcikge1xuXHRcdFx0cmVzdWx0ID0gbW9kaWZpZXIocmVzdWx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xufVxuXG5mdW5jdGlvbiBtYXhmbihtYXgpIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh2KSB7XG5cdFx0cmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKG1heCwgdikpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiBhc3NlcnRBcnJheSh2YWwpIHtcblx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdO1xufVxuXG5mdW5jdGlvbiB6ZXJvQXJyYXkoYXJyLCBsZW5ndGgpIHtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdGlmICh0eXBlb2YgYXJyW2ldICE9PSAnbnVtYmVyJykge1xuXHRcdFx0YXJyW2ldID0gMDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gYXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbG9yO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_color@3.2.1@color/index.js\n"); /***/ }), /***/ "./node_modules/_d3-color@1.4.1@d3-color/src/color.js": /*!************************************************************!*\ !*** ./node_modules/_d3-color@1.4.1@d3-color/src/color.js ***! \************************************************************/ /*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Color\", function() { return Color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darker\", function() { return darker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"brighter\", function() { return brighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbConvert\", function() { return rgbConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rgb\", function() { return Rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslConvert\", function() { return hslConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return hsl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9jb2xvci5qcz8xOWYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7O0FBRXBDOztBQUVBO0FBQ0E7O0FBRVA7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLElBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBEQUFNLFdBQVcseURBQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBTSxXQUFXLHlEQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZpbmUsIHtleHRlbmR9IGZyb20gXCIuL2RlZmluZS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ29sb3IoKSB7fVxuXG5leHBvcnQgdmFyIGRhcmtlciA9IDAuNztcbmV4cG9ydCB2YXIgYnJpZ2h0ZXIgPSAxIC8gZGFya2VyO1xuXG52YXIgcmVJID0gXCJcXFxccyooWystXT9cXFxcZCspXFxcXHMqXCIsXG4gICAgcmVOID0gXCJcXFxccyooWystXT9cXFxcZCpcXFxcLj9cXFxcZCsoPzpbZUVdWystXT9cXFxcZCspPylcXFxccypcIixcbiAgICByZVAgPSBcIlxcXFxzKihbKy1dP1xcXFxkKlxcXFwuP1xcXFxkKyg/OltlRV1bKy1dP1xcXFxkKyk/KSVcXFxccypcIixcbiAgICByZUhleCA9IC9eIyhbMC05YS1mXXszLDh9KSQvLFxuICAgIHJlUmdiSW50ZWdlciA9IG5ldyBSZWdFeHAoXCJecmdiXFxcXChcIiArIFtyZUksIHJlSSwgcmVJXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlUmdiUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJecmdiXFxcXChcIiArIFtyZVAsIHJlUCwgcmVQXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlUmdiYUludGVnZXIgPSBuZXcgUmVnRXhwKFwiXnJnYmFcXFxcKFwiICsgW3JlSSwgcmVJLCByZUksIHJlTl0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYmFQZXJjZW50ID0gbmV3IFJlZ0V4cChcIl5yZ2JhXFxcXChcIiArIFtyZVAsIHJlUCwgcmVQLCByZU5dICsgXCJcXFxcKSRcIiksXG4gICAgcmVIc2xQZXJjZW50ID0gbmV3IFJlZ0V4cChcIl5oc2xcXFxcKFwiICsgW3JlTiwgcmVQLCByZVBdICsgXCJcXFxcKSRcIiksXG4gICAgcmVIc2xhUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJeaHNsYVxcXFwoXCIgKyBbcmVOLCByZVAsIHJlUCwgcmVOXSArIFwiXFxcXCkkXCIpO1xuXG52YXIgbmFtZWQgPSB7XG4gIGFsaWNlYmx1ZTogMHhmMGY4ZmYsXG4gIGFudGlxdWV3aGl0ZTogMHhmYWViZDcsXG4gIGFxdWE6IDB4MDBmZmZmLFxuICBhcXVhbWFyaW5lOiAweDdmZmZkNCxcbiAgYXp1cmU6IDB4ZjBmZmZmLFxuICBiZWlnZTogMHhmNWY1ZGMsXG4gIGJpc3F1ZTogMHhmZmU0YzQsXG4gIGJsYWNrOiAweDAwMDAwMCxcbiAgYmxhbmNoZWRhbG1vbmQ6IDB4ZmZlYmNkLFxuICBibHVlOiAweDAwMDBmZixcbiAgYmx1ZXZpb2xldDogMHg4YTJiZTIsXG4gIGJyb3duOiAweGE1MmEyYSxcbiAgYnVybHl3b29kOiAweGRlYjg4NyxcbiAgY2FkZXRibHVlOiAweDVmOWVhMCxcbiAgY2hhcnRyZXVzZTogMHg3ZmZmMDAsXG4gIGNob2NvbGF0ZTogMHhkMjY5MWUsXG4gIGNvcmFsOiAweGZmN2Y1MCxcbiAgY29ybmZsb3dlcmJsdWU6IDB4NjQ5NWVkLFxuICBjb3Juc2lsazogMHhmZmY4ZGMsXG4gIGNyaW1zb246IDB4ZGMxNDNjLFxuICBjeWFuOiAweDAwZmZmZixcbiAgZGFya2JsdWU6IDB4MDAwMDhiLFxuICBkYXJrY3lhbjogMHgwMDhiOGIsXG4gIGRhcmtnb2xkZW5yb2Q6IDB4Yjg4NjBiLFxuICBkYXJrZ3JheTogMHhhOWE5YTksXG4gIGRhcmtncmVlbjogMHgwMDY0MDAsXG4gIGRhcmtncmV5OiAweGE5YTlhOSxcbiAgZGFya2toYWtpOiAweGJkYjc2YixcbiAgZGFya21hZ2VudGE6IDB4OGIwMDhiLFxuICBkYXJrb2xpdmVncmVlbjogMHg1NTZiMmYsXG4gIGRhcmtvcmFuZ2U6IDB4ZmY4YzAwLFxuICBkYXJrb3JjaGlkOiAweDk5MzJjYyxcbiAgZGFya3JlZDogMHg4YjAwMDAsXG4gIGRhcmtzYWxtb246IDB4ZTk5NjdhLFxuICBkYXJrc2VhZ3JlZW46IDB4OGZiYzhmLFxuICBkYXJrc2xhdGVibHVlOiAweDQ4M2Q4YixcbiAgZGFya3NsYXRlZ3JheTogMHgyZjRmNGYsXG4gIGRhcmtzbGF0ZWdyZXk6IDB4MmY0ZjRmLFxuICBkYXJrdHVycXVvaXNlOiAweDAwY2VkMSxcbiAgZGFya3Zpb2xldDogMHg5NDAwZDMsXG4gIGRlZXBwaW5rOiAweGZmMTQ5MyxcbiAgZGVlcHNreWJsdWU6IDB4MDBiZmZmLFxuICBkaW1ncmF5OiAweDY5Njk2OSxcbiAgZGltZ3JleTogMHg2OTY5NjksXG4gIGRvZGdlcmJsdWU6IDB4MWU5MGZmLFxuICBmaXJlYnJpY2s6IDB4YjIyMjIyLFxuICBmbG9yYWx3aGl0ZTogMHhmZmZhZjAsXG4gIGZvcmVzdGdyZWVuOiAweDIyOGIyMixcbiAgZnVjaHNpYTogMHhmZjAwZmYsXG4gIGdhaW5zYm9ybzogMHhkY2RjZGMsXG4gIGdob3N0d2hpdGU6IDB4ZjhmOGZmLFxuICBnb2xkOiAweGZmZDcwMCxcbiAgZ29sZGVucm9kOiAweGRhYTUyMCxcbiAgZ3JheTogMHg4MDgwODAsXG4gIGdyZWVuOiAweDAwODAwMCxcbiAgZ3JlZW55ZWxsb3c6IDB4YWRmZjJmLFxuICBncmV5OiAweDgwODA4MCxcbiAgaG9uZXlkZXc6IDB4ZjBmZmYwLFxuICBob3RwaW5rOiAweGZmNjliNCxcbiAgaW5kaWFucmVkOiAweGNkNWM1YyxcbiAgaW5kaWdvOiAweDRiMDA4MixcbiAgaXZvcnk6IDB4ZmZmZmYwLFxuICBraGFraTogMHhmMGU2OGMsXG4gIGxhdmVuZGVyOiAweGU2ZTZmYSxcbiAgbGF2ZW5kZXJibHVzaDogMHhmZmYwZjUsXG4gIGxhd25ncmVlbjogMHg3Y2ZjMDAsXG4gIGxlbW9uY2hpZmZvbjogMHhmZmZhY2QsXG4gIGxpZ2h0Ymx1ZTogMHhhZGQ4ZTYsXG4gIGxpZ2h0Y29yYWw6IDB4ZjA4MDgwLFxuICBsaWdodGN5YW46IDB4ZTBmZmZmLFxuICBsaWdodGdvbGRlbnJvZHllbGxvdzogMHhmYWZhZDIsXG4gIGxpZ2h0Z3JheTogMHhkM2QzZDMsXG4gIGxpZ2h0Z3JlZW46IDB4OTBlZTkwLFxuICBsaWdodGdyZXk6IDB4ZDNkM2QzLFxuICBsaWdodHBpbms6IDB4ZmZiNmMxLFxuICBsaWdodHNhbG1vbjogMHhmZmEwN2EsXG4gIGxpZ2h0c2VhZ3JlZW46IDB4MjBiMmFhLFxuICBsaWdodHNreWJsdWU6IDB4ODdjZWZhLFxuICBsaWdodHNsYXRlZ3JheTogMHg3Nzg4OTksXG4gIGxpZ2h0c2xhdGVncmV5OiAweDc3ODg5OSxcbiAgbGlnaHRzdGVlbGJsdWU6IDB4YjBjNGRlLFxuICBsaWdodHllbGxvdzogMHhmZmZmZTAsXG4gIGxpbWU6IDB4MDBmZjAwLFxuICBsaW1lZ3JlZW46IDB4MzJjZDMyLFxuICBsaW5lbjogMHhmYWYwZTYsXG4gIG1hZ2VudGE6IDB4ZmYwMGZmLFxuICBtYXJvb246IDB4ODAwMDAwLFxuICBtZWRpdW1hcXVhbWFyaW5lOiAweDY2Y2RhYSxcbiAgbWVkaXVtYmx1ZTogMHgwMDAwY2QsXG4gIG1lZGl1bW9yY2hpZDogMHhiYTU1ZDMsXG4gIG1lZGl1bXB1cnBsZTogMHg5MzcwZGIsXG4gIG1lZGl1bXNlYWdyZWVuOiAweDNjYjM3MSxcbiAgbWVkaXVtc2xhdGVibHVlOiAweDdiNjhlZSxcbiAgbWVkaXVtc3ByaW5nZ3JlZW46IDB4MDBmYTlhLFxuICBtZWRpdW10dXJxdW9pc2U6IDB4NDhkMWNjLFxuICBtZWRpdW12aW9sZXRyZWQ6IDB4YzcxNTg1LFxuICBtaWRuaWdodGJsdWU6IDB4MTkxOTcwLFxuICBtaW50Y3JlYW06IDB4ZjVmZmZhLFxuICBtaXN0eXJvc2U6IDB4ZmZlNGUxLFxuICBtb2NjYXNpbjogMHhmZmU0YjUsXG4gIG5hdmFqb3doaXRlOiAweGZmZGVhZCxcbiAgbmF2eTogMHgwMDAwODAsXG4gIG9sZGxhY2U6IDB4ZmRmNWU2LFxuICBvbGl2ZTogMHg4MDgwMDAsXG4gIG9saXZlZHJhYjogMHg2YjhlMjMsXG4gIG9yYW5nZTogMHhmZmE1MDAsXG4gIG9yYW5nZXJlZDogMHhmZjQ1MDAsXG4gIG9yY2hpZDogMHhkYTcwZDYsXG4gIHBhbGVnb2xkZW5yb2Q6IDB4ZWVlOGFhLFxuICBwYWxlZ3JlZW46IDB4OThmYjk4LFxuICBwYWxldHVycXVvaXNlOiAweGFmZWVlZSxcbiAgcGFsZXZpb2xldHJlZDogMHhkYjcwOTMsXG4gIHBhcGF5YXdoaXA6IDB4ZmZlZmQ1LFxuICBwZWFjaHB1ZmY6IDB4ZmZkYWI5LFxuICBwZXJ1OiAweGNkODUzZixcbiAgcGluazogMHhmZmMwY2IsXG4gIHBsdW06IDB4ZGRhMGRkLFxuICBwb3dkZXJibHVlOiAweGIwZTBlNixcbiAgcHVycGxlOiAweDgwMDA4MCxcbiAgcmViZWNjYXB1cnBsZTogMHg2NjMzOTksXG4gIHJlZDogMHhmZjAwMDAsXG4gIHJvc3licm93bjogMHhiYzhmOGYsXG4gIHJveWFsYmx1ZTogMHg0MTY5ZTEsXG4gIHNhZGRsZWJyb3duOiAweDhiNDUxMyxcbiAgc2FsbW9uOiAweGZhODA3MixcbiAgc2FuZHlicm93bjogMHhmNGE0NjAsXG4gIHNlYWdyZWVuOiAweDJlOGI1NyxcbiAgc2Vhc2hlbGw6IDB4ZmZmNWVlLFxuICBzaWVubmE6IDB4YTA1MjJkLFxuICBzaWx2ZXI6IDB4YzBjMGMwLFxuICBza3libHVlOiAweDg3Y2VlYixcbiAgc2xhdGVibHVlOiAweDZhNWFjZCxcbiAgc2xhdGVncmF5OiAweDcwODA5MCxcbiAgc2xhdGVncmV5OiAweDcwODA5MCxcbiAgc25vdzogMHhmZmZhZmEsXG4gIHNwcmluZ2dyZWVuOiAweDAwZmY3ZixcbiAgc3RlZWxibHVlOiAweDQ2ODJiNCxcbiAgdGFuOiAweGQyYjQ4YyxcbiAgdGVhbDogMHgwMDgwODAsXG4gIHRoaXN0bGU6IDB4ZDhiZmQ4LFxuICB0b21hdG86IDB4ZmY2MzQ3LFxuICB0dXJxdW9pc2U6IDB4NDBlMGQwLFxuICB2aW9sZXQ6IDB4ZWU4MmVlLFxuICB3aGVhdDogMHhmNWRlYjMsXG4gIHdoaXRlOiAweGZmZmZmZixcbiAgd2hpdGVzbW9rZTogMHhmNWY1ZjUsXG4gIHllbGxvdzogMHhmZmZmMDAsXG4gIHllbGxvd2dyZWVuOiAweDlhY2QzMlxufTtcblxuZGVmaW5lKENvbG9yLCBjb2xvciwge1xuICBjb3B5OiBmdW5jdGlvbihjaGFubmVscykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLCB0aGlzLCBjaGFubmVscyk7XG4gIH0sXG4gIGRpc3BsYXlhYmxlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpO1xuICB9LFxuICBoZXg6IGNvbG9yX2Zvcm1hdEhleCwgLy8gRGVwcmVjYXRlZCEgVXNlIGNvbG9yLmZvcm1hdEhleC5cbiAgZm9ybWF0SGV4OiBjb2xvcl9mb3JtYXRIZXgsXG4gIGZvcm1hdEhzbDogY29sb3JfZm9ybWF0SHNsLFxuICBmb3JtYXRSZ2I6IGNvbG9yX2Zvcm1hdFJnYixcbiAgdG9TdHJpbmc6IGNvbG9yX2Zvcm1hdFJnYlxufSk7XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdEhleCgpIHtcbiAgcmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCk7XG59XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdEhzbCgpIHtcbiAgcmV0dXJuIGhzbENvbnZlcnQodGhpcykuZm9ybWF0SHNsKCk7XG59XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdFJnYigpIHtcbiAgcmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbG9yKGZvcm1hdCkge1xuICB2YXIgbSwgbDtcbiAgZm9ybWF0ID0gKGZvcm1hdCArIFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKG0gPSByZUhleC5leGVjKGZvcm1hdCkpID8gKGwgPSBtWzFdLmxlbmd0aCwgbSA9IHBhcnNlSW50KG1bMV0sIDE2KSwgbCA9PT0gNiA/IHJnYm4obSkgLy8gI2ZmMDAwMFxuICAgICAgOiBsID09PSAzID8gbmV3IFJnYigobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweGYwKSwgKG0gPj4gNCAmIDB4ZikgfCAobSAmIDB4ZjApLCAoKG0gJiAweGYpIDw8IDQpIHwgKG0gJiAweGYpLCAxKSAvLyAjZjAwXG4gICAgICA6IGwgPT09IDggPyByZ2JhKG0gPj4gMjQgJiAweGZmLCBtID4+IDE2ICYgMHhmZiwgbSA+PiA4ICYgMHhmZiwgKG0gJiAweGZmKSAvIDB4ZmYpIC8vICNmZjAwMDAwMFxuICAgICAgOiBsID09PSA0ID8gcmdiYSgobSA+PiAxMiAmIDB4ZikgfCAobSA+PiA4ICYgMHhmMCksIChtID4+IDggJiAweGYpIHwgKG0gPj4gNCAmIDB4ZjApLCAobSA+PiA0ICYgMHhmKSB8IChtICYgMHhmMCksICgoKG0gJiAweGYpIDw8IDQpIHwgKG0gJiAweGYpKSAvIDB4ZmYpIC8vICNmMDAwXG4gICAgICA6IG51bGwpIC8vIGludmFsaWQgaGV4XG4gICAgICA6IChtID0gcmVSZ2JJbnRlZ2VyLmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0sIG1bMl0sIG1bM10sIDEpIC8vIHJnYigyNTUsIDAsIDApXG4gICAgICA6IChtID0gcmVSZ2JQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIDEpIC8vIHJnYigxMDAlLCAwJSwgMCUpXG4gICAgICA6IChtID0gcmVSZ2JhSW50ZWdlci5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdLCBtWzJdLCBtWzNdLCBtWzRdKSAvLyByZ2JhKDI1NSwgMCwgMCwgMSlcbiAgICAgIDogKG0gPSByZVJnYmFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyByZ2JhKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIG1bNF0pIC8vIHJnYigxMDAlLCAwJSwgMCUsIDEpXG4gICAgICA6IChtID0gcmVIc2xQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIDEpIC8vIGhzbCgxMjAsIDUwJSwgNTAlKVxuICAgICAgOiAobSA9IHJlSHNsYVBlcmNlbnQuZXhlYyhmb3JtYXQpKSA/IGhzbGEobVsxXSwgbVsyXSAvIDEwMCwgbVszXSAvIDEwMCwgbVs0XSkgLy8gaHNsYSgxMjAsIDUwJSwgNTAlLCAxKVxuICAgICAgOiBuYW1lZC5oYXNPd25Qcm9wZXJ0eShmb3JtYXQpID8gcmdibihuYW1lZFtmb3JtYXRdKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgOiBmb3JtYXQgPT09IFwidHJhbnNwYXJlbnRcIiA/IG5ldyBSZ2IoTmFOLCBOYU4sIE5hTiwgMClcbiAgICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcmdibihuKSB7XG4gIHJldHVybiBuZXcgUmdiKG4gPj4gMTYgJiAweGZmLCBuID4+IDggJiAweGZmLCBuICYgMHhmZiwgMSk7XG59XG5cbmZ1bmN0aW9uIHJnYmEociwgZywgYiwgYSkge1xuICBpZiAoYSA8PSAwKSByID0gZyA9IGIgPSBOYU47XG4gIHJldHVybiBuZXcgUmdiKHIsIGcsIGIsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiQ29udmVydChvKSB7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBDb2xvcikpIG8gPSBjb2xvcihvKTtcbiAgaWYgKCFvKSByZXR1cm4gbmV3IFJnYjtcbiAgbyA9IG8ucmdiKCk7XG4gIHJldHVybiBuZXcgUmdiKG8uciwgby5nLCBvLmIsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IHJnYkNvbnZlcnQocikgOiBuZXcgUmdiKHIsIGcsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJnYihyLCBnLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMuciA9ICtyO1xuICB0aGlzLmcgPSArZztcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoUmdiLCByZ2IsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgtMC41IDw9IHRoaXMuciAmJiB0aGlzLnIgPCAyNTUuNSlcbiAgICAgICAgJiYgKC0wLjUgPD0gdGhpcy5nICYmIHRoaXMuZyA8IDI1NS41KVxuICAgICAgICAmJiAoLTAuNSA8PSB0aGlzLmIgJiYgdGhpcy5iIDwgMjU1LjUpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH0sXG4gIGhleDogcmdiX2Zvcm1hdEhleCwgLy8gRGVwcmVjYXRlZCEgVXNlIGNvbG9yLmZvcm1hdEhleC5cbiAgZm9ybWF0SGV4OiByZ2JfZm9ybWF0SGV4LFxuICBmb3JtYXRSZ2I6IHJnYl9mb3JtYXRSZ2IsXG4gIHRvU3RyaW5nOiByZ2JfZm9ybWF0UmdiXG59KSk7XG5cbmZ1bmN0aW9uIHJnYl9mb3JtYXRIZXgoKSB7XG4gIHJldHVybiBcIiNcIiArIGhleCh0aGlzLnIpICsgaGV4KHRoaXMuZykgKyBoZXgodGhpcy5iKTtcbn1cblxuZnVuY3Rpb24gcmdiX2Zvcm1hdFJnYigpIHtcbiAgdmFyIGEgPSB0aGlzLm9wYWNpdHk7IGEgPSBpc05hTihhKSA/IDEgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBhKSk7XG4gIHJldHVybiAoYSA9PT0gMSA/IFwicmdiKFwiIDogXCJyZ2JhKFwiKVxuICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5yKSB8fCAwKSkgKyBcIiwgXCJcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKHRoaXMuZykgfHwgMCkpICsgXCIsIFwiXG4gICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCh0aGlzLmIpIHx8IDApKVxuICAgICAgKyAoYSA9PT0gMSA/IFwiKVwiIDogXCIsIFwiICsgYSArIFwiKVwiKTtcbn1cblxuZnVuY3Rpb24gaGV4KHZhbHVlKSB7XG4gIHZhbHVlID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKHZhbHVlKSB8fCAwKSk7XG4gIHJldHVybiAodmFsdWUgPCAxNiA/IFwiMFwiIDogXCJcIikgKyB2YWx1ZS50b1N0cmluZygxNik7XG59XG5cbmZ1bmN0aW9uIGhzbGEoaCwgcywgbCwgYSkge1xuICBpZiAoYSA8PSAwKSBoID0gcyA9IGwgPSBOYU47XG4gIGVsc2UgaWYgKGwgPD0gMCB8fCBsID49IDEpIGggPSBzID0gTmFOO1xuICBlbHNlIGlmIChzIDw9IDApIGggPSBOYU47XG4gIHJldHVybiBuZXcgSHNsKGgsIHMsIGwsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgSHNsKSByZXR1cm4gbmV3IEhzbChvLmgsIG8ucywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgQ29sb3IpKSBvID0gY29sb3Iobyk7XG4gIGlmICghbykgcmV0dXJuIG5ldyBIc2w7XG4gIGlmIChvIGluc3RhbmNlb2YgSHNsKSByZXR1cm4gbztcbiAgbyA9IG8ucmdiKCk7XG4gIHZhciByID0gby5yIC8gMjU1LFxuICAgICAgZyA9IG8uZyAvIDI1NSxcbiAgICAgIGIgPSBvLmIgLyAyNTUsXG4gICAgICBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKSxcbiAgICAgIG1heCA9IE1hdGgubWF4KHIsIGcsIGIpLFxuICAgICAgaCA9IE5hTixcbiAgICAgIHMgPSBtYXggLSBtaW4sXG4gICAgICBsID0gKG1heCArIG1pbikgLyAyO1xuICBpZiAocykge1xuICAgIGlmIChyID09PSBtYXgpIGggPSAoZyAtIGIpIC8gcyArIChnIDwgYikgKiA2O1xuICAgIGVsc2UgaWYgKGcgPT09IG1heCkgaCA9IChiIC0gcikgLyBzICsgMjtcbiAgICBlbHNlIGggPSAociAtIGcpIC8gcyArIDQ7XG4gICAgcyAvPSBsIDwgMC41ID8gbWF4ICsgbWluIDogMiAtIG1heCAtIG1pbjtcbiAgICBoICo9IDYwO1xuICB9IGVsc2Uge1xuICAgIHMgPSBsID4gMCAmJiBsIDwgMSA/IDAgOiBoO1xuICB9XG4gIHJldHVybiBuZXcgSHNsKGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoc2woaCwgcywgbCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGhzbENvbnZlcnQoaCkgOiBuZXcgSHNsKGgsIHMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZnVuY3Rpb24gSHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShIc2wsIGhzbCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgSHNsKHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IHRoaXMuaCAlIDM2MCArICh0aGlzLmggPCAwKSAqIDM2MCxcbiAgICAgICAgcyA9IGlzTmFOKGgpIHx8IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zLFxuICAgICAgICBsID0gdGhpcy5sLFxuICAgICAgICBtMiA9IGwgKyAobCA8IDAuNSA/IGwgOiAxIC0gbCkgKiBzLFxuICAgICAgICBtMSA9IDIgKiBsIC0gbTI7XG4gICAgcmV0dXJuIG5ldyBSZ2IoXG4gICAgICBoc2wycmdiKGggPj0gMjQwID8gaCAtIDI0MCA6IGggKyAxMjAsIG0xLCBtMiksXG4gICAgICBoc2wycmdiKGgsIG0xLCBtMiksXG4gICAgICBoc2wycmdiKGggPCAxMjAgPyBoICsgMjQwIDogaCAtIDEyMCwgbTEsIG0yKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH0sXG4gIGRpc3BsYXlhYmxlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gKDAgPD0gdGhpcy5zICYmIHRoaXMucyA8PSAxIHx8IGlzTmFOKHRoaXMucykpXG4gICAgICAgICYmICgwIDw9IHRoaXMubCAmJiB0aGlzLmwgPD0gMSlcbiAgICAgICAgJiYgKDAgPD0gdGhpcy5vcGFjaXR5ICYmIHRoaXMub3BhY2l0eSA8PSAxKTtcbiAgfSxcbiAgZm9ybWF0SHNsOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYSA9IHRoaXMub3BhY2l0eTsgYSA9IGlzTmFOKGEpID8gMSA6IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIGEpKTtcbiAgICByZXR1cm4gKGEgPT09IDEgPyBcImhzbChcIiA6IFwiaHNsYShcIilcbiAgICAgICAgKyAodGhpcy5oIHx8IDApICsgXCIsIFwiXG4gICAgICAgICsgKHRoaXMucyB8fCAwKSAqIDEwMCArIFwiJSwgXCJcbiAgICAgICAgKyAodGhpcy5sIHx8IDApICogMTAwICsgXCIlXCJcbiAgICAgICAgKyAoYSA9PT0gMSA/IFwiKVwiIDogXCIsIFwiICsgYSArIFwiKVwiKTtcbiAgfVxufSkpO1xuXG4vKiBGcm9tIEZ2RCAxMy4zNywgQ1NTIENvbG9yIE1vZHVsZSBMZXZlbCAzICovXG5mdW5jdGlvbiBoc2wycmdiKGgsIG0xLCBtMikge1xuICByZXR1cm4gKGggPCA2MCA/IG0xICsgKG0yIC0gbTEpICogaCAvIDYwXG4gICAgICA6IGggPCAxODAgPyBtMlxuICAgICAgOiBoIDwgMjQwID8gbTEgKyAobTIgLSBtMSkgKiAoMjQwIC0gaCkgLyA2MFxuICAgICAgOiBtMSkgKiAyNTU7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-color@1.4.1@d3-color/src/color.js\n"); /***/ }), /***/ "./node_modules/_d3-color@1.4.1@d3-color/src/cubehelix.js": /*!****************************************************************!*\ !*** ./node_modules/_d3-color@1.4.1@d3-color/src/cubehelix.js ***! \****************************************************************/ /*! exports provided: default, Cubehelix */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cubehelix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cubehelix\", function() { return Cubehelix; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"rad2deg\"] - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"deg2rad\"],\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9jdWJlaGVsaXguanM/NzljNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkM7QUFDeUI7QUFDekI7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw2Q0FBRyxPQUFPLDREQUFVO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGdEQUFPO0FBQ3pDO0FBQ0E7O0FBRWU7QUFDZjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBTSx1QkFBdUIseURBQU0sQ0FBQywrQ0FBSztBQUN6QztBQUNBLG9CQUFvQixrREFBUSxZQUFZLGtEQUFRO0FBQ2hEO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0JBQW9CLGdEQUFNLFlBQVksZ0RBQU07QUFDNUM7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpREFBaUQsZ0RBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZDQUFHO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9jdWJlaGVsaXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmltcG9ydCB7ZGVnMnJhZCwgcmFkMmRlZ30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIHJhZDJkZWcgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiBkZWcycmFkLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-color@1.4.1@d3-color/src/cubehelix.js\n"); /***/ }), /***/ "./node_modules/_d3-color@1.4.1@d3-color/src/define.js": /*!*************************************************************!*\ !*** ./node_modules/_d3-color@1.4.1@d3-color/src/define.js ***! \*************************************************************/ /*! exports provided: default, extend */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n});\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9kZWZpbmUuanM/NWVlYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1jb2xvckAxLjQuMUBkMy1jb2xvci9zcmMvZGVmaW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29uc3RydWN0b3IsIGZhY3RvcnksIHByb3RvdHlwZSkge1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBmYWN0b3J5LnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgcHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQocGFyZW50LCBkZWZpbml0aW9uKSB7XG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpO1xuICBmb3IgKHZhciBrZXkgaW4gZGVmaW5pdGlvbikgcHJvdG90eXBlW2tleV0gPSBkZWZpbml0aW9uW2tleV07XG4gIHJldHVybiBwcm90b3R5cGU7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-color@1.4.1@d3-color/src/define.js\n"); /***/ }), /***/ "./node_modules/_d3-color@1.4.1@d3-color/src/index.js": /*!************************************************************!*\ !*** ./node_modules/_d3-color@1.4.1@d3-color/src/index.js ***! \************************************************************/ /*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"hcl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"lch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"gray\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9pbmRleC5qcz8wNTk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0Q7QUFDRTtBQUNKIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1jb2xvckAxLjQuMUBkMy1jb2xvci9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgY29sb3IsIHJnYiwgaHNsfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGxhYiwgaGNsLCBsY2gsIGdyYXl9IGZyb20gXCIuL2xhYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1YmVoZWxpeH0gZnJvbSBcIi4vY3ViZWhlbGl4LmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-color@1.4.1@d3-color/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-color@1.4.1@d3-color/src/lab.js": /*!**********************************************************!*\ !*** ./node_modules/_d3-color@1.4.1@d3-color/src/lab.js ***! \**********************************************************/ /*! exports provided: gray, default, Lab, lch, hcl, Hcl */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return gray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lab\", function() { return Lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return lch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return hcl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hcl\", function() { return Hcl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/_d3-color@1.4.1@d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"rad2deg\"];\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"deg2rad\"];\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9sYWIuanM/NmQ4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUNPO0FBQ1A7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkNBQUcsT0FBTyw0REFBVTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBEQUFNLFdBQVcseURBQU0sQ0FBQywrQ0FBSztBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZDQUFHO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGdEQUFPO0FBQ3hDO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQixnREFBTztBQUN2QjtBQUNBOztBQUVBLDBEQUFNLFdBQVcseURBQU0sQ0FBQywrQ0FBSztBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtY29sb3JAMS40LjFAZDMtY29sb3Ivc3JjL2xhYi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZpbmUsIHtleHRlbmR9IGZyb20gXCIuL2RlZmluZS5qc1wiO1xuaW1wb3J0IHtDb2xvciwgcmdiQ29udmVydCwgUmdifSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuaW1wb3J0IHtkZWcycmFkLCByYWQyZGVnfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbi8vIGh0dHBzOi8vb2JzZXJ2YWJsZWhxLmNvbS9AbWJvc3RvY2svbGFiLWFuZC1yZ2JcbnZhciBLID0gMTgsXG4gICAgWG4gPSAwLjk2NDIyLFxuICAgIFluID0gMSxcbiAgICBabiA9IDAuODI1MjEsXG4gICAgdDAgPSA0IC8gMjksXG4gICAgdDEgPSA2IC8gMjksXG4gICAgdDIgPSAzICogdDEgKiB0MSxcbiAgICB0MyA9IHQxICogdDEgKiB0MTtcblxuZnVuY3Rpb24gbGFiQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgTGFiKSByZXR1cm4gbmV3IExhYihvLmwsIG8uYSwgby5iLCBvLm9wYWNpdHkpO1xuICBpZiAobyBpbnN0YW5jZW9mIEhjbCkgcmV0dXJuIGhjbDJsYWIobyk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSByZ2IybHJnYihvLnIpLFxuICAgICAgZyA9IHJnYjJscmdiKG8uZyksXG4gICAgICBiID0gcmdiMmxyZ2Ioby5iKSxcbiAgICAgIHkgPSB4eXoybGFiKCgwLjIyMjUwNDUgKiByICsgMC43MTY4Nzg2ICogZyArIDAuMDYwNjE2OSAqIGIpIC8gWW4pLCB4LCB6O1xuICBpZiAociA9PT0gZyAmJiBnID09PSBiKSB4ID0geiA9IHk7IGVsc2Uge1xuICAgIHggPSB4eXoybGFiKCgwLjQzNjA3NDcgKiByICsgMC4zODUwNjQ5ICogZyArIDAuMTQzMDgwNCAqIGIpIC8gWG4pO1xuICAgIHogPSB4eXoybGFiKCgwLjAxMzkzMjIgKiByICsgMC4wOTcxMDQ1ICogZyArIDAuNzE0MTczMyAqIGIpIC8gWm4pO1xuICB9XG4gIHJldHVybiBuZXcgTGFiKDExNiAqIHkgLSAxNiwgNTAwICogKHggLSB5KSwgMjAwICogKHkgLSB6KSwgby5vcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXkobCwgb3BhY2l0eSkge1xuICByZXR1cm4gbmV3IExhYihsLCAwLCAwLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhYihsLCBhLCBiLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gbGFiQ29udmVydChsKSA6IG5ldyBMYWIobCwgYSwgYiwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTGFiKGwsIGEsIGIsIG9wYWNpdHkpIHtcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMuYSA9ICthO1xuICB0aGlzLmIgPSArYjtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShMYWIsIGxhYiwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgcmV0dXJuIG5ldyBMYWIodGhpcy5sICsgSyAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IExhYih0aGlzLmwgLSBLICogKGsgPT0gbnVsbCA/IDEgOiBrKSwgdGhpcy5hLCB0aGlzLmIsIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHkgPSAodGhpcy5sICsgMTYpIC8gMTE2LFxuICAgICAgICB4ID0gaXNOYU4odGhpcy5hKSA/IHkgOiB5ICsgdGhpcy5hIC8gNTAwLFxuICAgICAgICB6ID0gaXNOYU4odGhpcy5iKSA/IHkgOiB5IC0gdGhpcy5iIC8gMjAwO1xuICAgIHggPSBYbiAqIGxhYjJ4eXooeCk7XG4gICAgeSA9IFluICogbGFiMnh5eih5KTtcbiAgICB6ID0gWm4gKiBsYWIyeHl6KHopO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgbHJnYjJyZ2IoIDMuMTMzODU2MSAqIHggLSAxLjYxNjg2NjcgKiB5IC0gMC40OTA2MTQ2ICogeiksXG4gICAgICBscmdiMnJnYigtMC45Nzg3Njg0ICogeCArIDEuOTE2MTQxNSAqIHkgKyAwLjAzMzQ1NDAgKiB6KSxcbiAgICAgIGxyZ2IycmdiKCAwLjA3MTk0NTMgKiB4IC0gMC4yMjg5OTE0ICogeSArIDEuNDA1MjQyNyAqIHopLFxuICAgICAgdGhpcy5vcGFjaXR5XG4gICAgKTtcbiAgfVxufSkpO1xuXG5mdW5jdGlvbiB4eXoybGFiKHQpIHtcbiAgcmV0dXJuIHQgPiB0MyA/IE1hdGgucG93KHQsIDEgLyAzKSA6IHQgLyB0MiArIHQwO1xufVxuXG5mdW5jdGlvbiBsYWIyeHl6KHQpIHtcbiAgcmV0dXJuIHQgPiB0MSA/IHQgKiB0ICogdCA6IHQyICogKHQgLSB0MCk7XG59XG5cbmZ1bmN0aW9uIGxyZ2IycmdiKHgpIHtcbiAgcmV0dXJuIDI1NSAqICh4IDw9IDAuMDAzMTMwOCA/IDEyLjkyICogeCA6IDEuMDU1ICogTWF0aC5wb3coeCwgMSAvIDIuNCkgLSAwLjA1NSk7XG59XG5cbmZ1bmN0aW9uIHJnYjJscmdiKHgpIHtcbiAgcmV0dXJuICh4IC89IDI1NSkgPD0gMC4wNDA0NSA/IHggLyAxMi45MiA6IE1hdGgucG93KCh4ICsgMC4wNTUpIC8gMS4wNTUsIDIuNCk7XG59XG5cbmZ1bmN0aW9uIGhjbENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEhjbCkgcmV0dXJuIG5ldyBIY2woby5oLCBvLmMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIExhYikpIG8gPSBsYWJDb252ZXJ0KG8pO1xuICBpZiAoby5hID09PSAwICYmIG8uYiA9PT0gMCkgcmV0dXJuIG5ldyBIY2woTmFOLCAwIDwgby5sICYmIG8ubCA8IDEwMCA/IDAgOiBOYU4sIG8ubCwgby5vcGFjaXR5KTtcbiAgdmFyIGggPSBNYXRoLmF0YW4yKG8uYiwgby5hKSAqIHJhZDJkZWc7XG4gIHJldHVybiBuZXcgSGNsKGggPCAwID8gaCArIDM2MCA6IGgsIE1hdGguc3FydChvLmEgKiBvLmEgKyBvLmIgKiBvLmIpLCBvLmwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsY2gobCwgYywgaCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGhjbENvbnZlcnQobCkgOiBuZXcgSGNsKGgsIGMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhjbChoLCBjLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gaGNsQ29udmVydChoKSA6IG5ldyBIY2woaCwgYywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSGNsKGgsIGMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMuYyA9ICtjO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmZ1bmN0aW9uIGhjbDJsYWIobykge1xuICBpZiAoaXNOYU4oby5oKSkgcmV0dXJuIG5ldyBMYWIoby5sLCAwLCAwLCBvLm9wYWNpdHkpO1xuICB2YXIgaCA9IG8uaCAqIGRlZzJyYWQ7XG4gIHJldHVybiBuZXcgTGFiKG8ubCwgTWF0aC5jb3MoaCkgKiBvLmMsIE1hdGguc2luKGgpICogby5jLCBvLm9wYWNpdHkpO1xufVxuXG5kZWZpbmUoSGNsLCBoY2wsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIHJldHVybiBuZXcgSGNsKHRoaXMuaCwgdGhpcy5jLCB0aGlzLmwgKyBLICogKGsgPT0gbnVsbCA/IDEgOiBrKSwgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgcmV0dXJuIG5ldyBIY2wodGhpcy5oLCB0aGlzLmMsIHRoaXMubCAtIEsgKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBoY2wybGFiKHRoaXMpLnJnYigpO1xuICB9XG59KSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-color@1.4.1@d3-color/src/lab.js\n"); /***/ }), /***/ "./node_modules/_d3-color@1.4.1@d3-color/src/math.js": /*!***********************************************************!*\ !*** ./node_modules/_d3-color@1.4.1@d3-color/src/math.js ***! \***********************************************************/ /*! exports provided: deg2rad, rad2deg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deg2rad\", function() { return deg2rad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rad2deg\", function() { return rad2deg; });\nvar deg2rad = Math.PI / 180;\nvar rad2deg = 180 / Math.PI;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWNvbG9yQDEuNC4xQGQzLWNvbG9yL3NyYy9tYXRoLmpzP2YwNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtY29sb3JAMS40LjFAZDMtY29sb3Ivc3JjL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGRlZzJyYWQgPSBNYXRoLlBJIC8gMTgwO1xuZXhwb3J0IHZhciByYWQyZGVnID0gMTgwIC8gTWF0aC5QSTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-color@1.4.1@d3-color/src/math.js\n"); /***/ }), /***/ "./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/dispatch.js": /*!*********************************************************************!*\ !*** ./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/dispatch.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dispatch);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWRpc3BhdGNoQDIuMC4wQGQzLWRpc3BhdGNoL3NyYy9kaXNwYXRjaC5qcz9lMzY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEsWUFBWTs7QUFFWjtBQUNBLDhDQUE4QyxJQUFJLE9BQU87QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxrRkFBa0YsT0FBTztBQUN6RjtBQUNBLCtDQUErQyxPQUFPO0FBQ3RELEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELE9BQU87QUFDMUQ7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDRCQUE0QjtBQUMvRDtBQUNBOztBQUVlLHVFQUFRLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWRpc3BhdGNoQDIuMC4wQGQzLWRpc3BhdGNoL3NyYy9kaXNwYXRjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBub29wID0ge3ZhbHVlOiAoKSA9PiB7fX07XG5cbmZ1bmN0aW9uIGRpc3BhdGNoKCkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGFyZ3VtZW50cy5sZW5ndGgsIF8gPSB7fSwgdDsgaSA8IG47ICsraSkge1xuICAgIGlmICghKHQgPSBhcmd1bWVudHNbaV0gKyBcIlwiKSB8fCAodCBpbiBfKSB8fCAvW1xccy5dLy50ZXN0KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIHR5cGU6IFwiICsgdCk7XG4gICAgX1t0XSA9IFtdO1xuICB9XG4gIHJldHVybiBuZXcgRGlzcGF0Y2goXyk7XG59XG5cbmZ1bmN0aW9uIERpc3BhdGNoKF8pIHtcbiAgdGhpcy5fID0gXztcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzLCB0eXBlcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgaWYgKHQgJiYgIXR5cGVzLmhhc093blByb3BlcnR5KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdCk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbkRpc3BhdGNoLnByb3RvdHlwZSA9IGRpc3BhdGNoLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IERpc3BhdGNoLFxuICBvbjogZnVuY3Rpb24odHlwZW5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF8gPSB0aGlzLl8sXG4gICAgICAgIFQgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIsIF8pLFxuICAgICAgICB0LFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSBULmxlbmd0aDtcblxuICAgIC8vIElmIG5vIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgY2FsbGJhY2sgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB3aGlsZSAoKytpIDwgbikgaWYgKCh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgJiYgKHQgPSBnZXQoX1t0XSwgdHlwZW5hbWUubmFtZSkpKSByZXR1cm4gdDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBhIHR5cGUgd2FzIHNwZWNpZmllZCwgc2V0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgLy8gT3RoZXJ3aXNlLCBpZiBhIG51bGwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmVtb3ZlIGNhbGxiYWNrcyBvZiB0aGUgZ2l2ZW4gbmFtZS5cbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCAmJiB0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFjazogXCIgKyBjYWxsYmFjayk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBjYWxsYmFjayk7XG4gICAgICBlbHNlIGlmIChjYWxsYmFjayA9PSBudWxsKSBmb3IgKHQgaW4gXykgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29weTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvcHkgPSB7fSwgXyA9IHRoaXMuXztcbiAgICBmb3IgKHZhciB0IGluIF8pIGNvcHlbdF0gPSBfW3RdLnNsaWNlKCk7XG4gICAgcmV0dXJuIG5ldyBEaXNwYXRjaChjb3B5KTtcbiAgfSxcbiAgY2FsbDogZnVuY3Rpb24odHlwZSwgdGhhdCkge1xuICAgIGlmICgobiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyKSA+IDApIGZvciAodmFyIGFyZ3MgPSBuZXcgQXJyYXkobiksIGkgPSAwLCBuLCB0OyBpIDwgbjsgKytpKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHR5cGUsIHRoYXQsIGFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodmFyIHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldCh0eXBlLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGgsIGM7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKGMgPSB0eXBlW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYy52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0KHR5cGUsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAodHlwZVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICB0eXBlW2ldID0gbm9vcCwgdHlwZSA9IHR5cGUuc2xpY2UoMCwgaSkuY29uY2F0KHR5cGUuc2xpY2UoaSArIDEpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgdHlwZS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogY2FsbGJhY2t9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpc3BhdGNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/dispatch.js\n"); /***/ }), /***/ "./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/index.js": /*!******************************************************************!*\ !*** ./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/index.js ***! \******************************************************************/ /*! exports provided: dispatch */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dispatch_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dispatch.js */ \"./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/dispatch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dispatch\", function() { return _dispatch_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWRpc3BhdGNoQDIuMC4wQGQzLWRpc3BhdGNoL3NyYy9pbmRleC5qcz8xYTdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1kaXNwYXRjaEAyLjAuMEBkMy1kaXNwYXRjaC9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZGlzcGF0Y2h9IGZyb20gXCIuL2Rpc3BhdGNoLmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/back.js": /*!*********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/back.js ***! \*********************************************************/ /*! exports provided: backIn, backOut, backInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backIn\", function() { return backIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backOut\", function() { return backOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backInOut\", function() { return backInOut; });\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvYmFjay5qcz9jODQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvYmFjay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBvdmVyc2hvb3QgPSAxLjcwMTU4O1xuXG5leHBvcnQgdmFyIGJhY2tJbiA9IChmdW5jdGlvbiBjdXN0b20ocykge1xuICBzID0gK3M7XG5cbiAgZnVuY3Rpb24gYmFja0luKHQpIHtcbiAgICByZXR1cm4gKHQgPSArdCkgKiB0ICogKHMgKiAodCAtIDEpICsgdCk7XG4gIH1cblxuICBiYWNrSW4ub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrSW47XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tPdXQodCkge1xuICAgIHJldHVybiAtLXQgKiB0ICogKCh0ICsgMSkgKiBzICsgdCkgKyAxO1xuICB9XG5cbiAgYmFja091dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tPdXQ7XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tJbk91dCA9IChmdW5jdGlvbiBjdXN0b20ocykge1xuICBzID0gK3M7XG5cbiAgZnVuY3Rpb24gYmFja0luT3V0KHQpIHtcbiAgICByZXR1cm4gKCh0ICo9IDIpIDwgMSA/IHQgKiB0ICogKChzICsgMSkgKiB0IC0gcykgOiAodCAtPSAyKSAqIHQgKiAoKHMgKyAxKSAqIHQgKyBzKSArIDIpIC8gMjtcbiAgfVxuXG4gIGJhY2tJbk91dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tJbk91dDtcbn0pKG92ZXJzaG9vdCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/back.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/bounce.js": /*!***********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/bounce.js ***! \***********************************************************/ /*! exports provided: bounceIn, bounceOut, bounceInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceIn\", function() { return bounceIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceOut\", function() { return bounceOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceInOut\", function() { return bounceInOut; });\nvar b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvYm91bmNlLmpzP2JiZGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtZWFzZUAxLjAuN0BkMy1lYXNlL3NyYy9ib3VuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYjEgPSA0IC8gMTEsXG4gICAgYjIgPSA2IC8gMTEsXG4gICAgYjMgPSA4IC8gMTEsXG4gICAgYjQgPSAzIC8gNCxcbiAgICBiNSA9IDkgLyAxMSxcbiAgICBiNiA9IDEwIC8gMTEsXG4gICAgYjcgPSAxNSAvIDE2LFxuICAgIGI4ID0gMjEgLyAyMixcbiAgICBiOSA9IDYzIC8gNjQsXG4gICAgYjAgPSAxIC8gYjEgLyBiMTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZUluKHQpIHtcbiAgcmV0dXJuIDEgLSBib3VuY2VPdXQoMSAtIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm91bmNlT3V0KHQpIHtcbiAgcmV0dXJuICh0ID0gK3QpIDwgYjEgPyBiMCAqIHQgKiB0IDogdCA8IGIzID8gYjAgKiAodCAtPSBiMikgKiB0ICsgYjQgOiB0IDwgYjYgPyBiMCAqICh0IC09IGI1KSAqIHQgKyBiNyA6IGIwICogKHQgLT0gYjgpICogdCArIGI5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm91bmNlSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyAxIC0gYm91bmNlT3V0KDEgLSB0KSA6IGJvdW5jZU91dCh0IC0gMSkgKyAxKSAvIDI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/bounce.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/circle.js": /*!***********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/circle.js ***! \***********************************************************/ /*! exports provided: circleIn, circleOut, circleInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleIn\", function() { return circleIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleOut\", function() { return circleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleInOut\", function() { return circleInOut; });\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvY2lyY2xlLmpzP2JiNTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtZWFzZUAxLjAuN0BkMy1lYXNlL3NyYy9jaXJjbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY2lyY2xlSW4odCkge1xuICByZXR1cm4gMSAtIE1hdGguc3FydCgxIC0gdCAqIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2lyY2xlT3V0KHQpIHtcbiAgcmV0dXJuIE1hdGguc3FydCgxIC0gLS10ICogdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaXJjbGVJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IDEgLSBNYXRoLnNxcnQoMSAtIHQgKiB0KSA6IE1hdGguc3FydCgxIC0gKHQgLT0gMikgKiB0KSArIDEpIC8gMjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/circle.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/cubic.js": /*!**********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/cubic.js ***! \**********************************************************/ /*! exports provided: cubicIn, cubicOut, cubicInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicIn\", function() { return cubicIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicOut\", function() { return cubicOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicInOut\", function() { return cubicInOut; });\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvY3ViaWMuanM/YWFhYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1lYXNlQDEuMC43QGQzLWVhc2Uvc3JjL2N1YmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGN1YmljSW4odCkge1xuICByZXR1cm4gdCAqIHQgKiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNPdXQodCkge1xuICByZXR1cm4gLS10ICogdCAqIHQgKyAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHQgKiB0ICogdCA6ICh0IC09IDIpICogdCAqIHQgKyAyKSAvIDI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/cubic.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/elastic.js": /*!************************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/elastic.js ***! \************************************************************/ /*! exports provided: elasticIn, elasticOut, elasticInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticIn\", function() { return elasticIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticOut\", function() { return elasticOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticInOut\", function() { return elasticInOut; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/math.js\");\n\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(-t) * Math.sin((s - t) / p)\n : 2 - a * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvZWxhc3RpYy5qcz9iM2UwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0EsZUFBZSxxREFBSTtBQUNuQjs7QUFFQSxxQ0FBcUMsMkJBQTJCO0FBQ2hFLGtDQUFrQyxxQkFBcUI7O0FBRXZEO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0EsbUJBQW1CLHFEQUFJO0FBQ3ZCOztBQUVBLHNDQUFzQywyQkFBMkI7QUFDakUsbUNBQW1DLHFCQUFxQjs7QUFFeEQ7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLGNBQWMscURBQUk7QUFDbEIsa0JBQWtCLHFEQUFJO0FBQ3RCOztBQUVBLHdDQUF3QywyQkFBMkI7QUFDbkUscUNBQXFDLHFCQUFxQjs7QUFFMUQ7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1lYXNlQDEuMC43QGQzLWVhc2Uvc3JjL2VsYXN0aWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RwbXR9IGZyb20gXCIuL21hdGguanNcIjtcblxudmFyIHRhdSA9IDIgKiBNYXRoLlBJLFxuICAgIGFtcGxpdHVkZSA9IDEsXG4gICAgcGVyaW9kID0gMC4zO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNJbiA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljSW4odCkge1xuICAgIHJldHVybiBhICogdHBtdCgtKC0tdCkpICogTWF0aC5zaW4oKHMgLSB0KSAvIHApO1xuICB9XG5cbiAgZWxhc3RpY0luLmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY0luLnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY0luO1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGEsIHApIHtcbiAgdmFyIHMgPSBNYXRoLmFzaW4oMSAvIChhID0gTWF0aC5tYXgoMSwgYSkpKSAqIChwIC89IHRhdSk7XG5cbiAgZnVuY3Rpb24gZWxhc3RpY091dCh0KSB7XG4gICAgcmV0dXJuIDEgLSBhICogdHBtdCh0ID0gK3QpICogTWF0aC5zaW4oKHQgKyBzKSAvIHApO1xuICB9XG5cbiAgZWxhc3RpY091dC5hbXBsaXR1ZGUgPSBmdW5jdGlvbihhKSB7IHJldHVybiBjdXN0b20oYSwgcCAqIHRhdSk7IH07XG4gIGVsYXN0aWNPdXQucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljT3V0O1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNJbk91dCA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljSW5PdXQodCkge1xuICAgIHJldHVybiAoKHQgPSB0ICogMiAtIDEpIDwgMFxuICAgICAgICA/IGEgKiB0cG10KC10KSAqIE1hdGguc2luKChzIC0gdCkgLyBwKVxuICAgICAgICA6IDIgLSBhICogdHBtdCh0KSAqIE1hdGguc2luKChzICsgdCkgLyBwKSkgLyAyO1xuICB9XG5cbiAgZWxhc3RpY0luT3V0LmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY0luT3V0LnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY0luT3V0O1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/elastic.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/exp.js": /*!********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/exp.js ***! \********************************************************/ /*! exports provided: expIn, expOut, expInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expIn\", function() { return expIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expOut\", function() { return expOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expInOut\", function() { return expInOut; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/math.js\");\n\n\nfunction expIn(t) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(1 - +t);\n}\n\nfunction expOut(t) {\n return 1 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(1 - t) : 2 - Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"tpmt\"])(t - 1)) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvZXhwLmpzPzljOGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQjs7QUFFeEI7QUFDUCxTQUFTLHFEQUFJO0FBQ2I7O0FBRU87QUFDUCxhQUFhLHFEQUFJO0FBQ2pCOztBQUVPO0FBQ1AsMEJBQTBCLHFEQUFJLGNBQWMscURBQUk7QUFDaEQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvZXhwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0cG10fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBJbih0KSB7XG4gIHJldHVybiB0cG10KDEgLSArdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBPdXQodCkge1xuICByZXR1cm4gMSAtIHRwbXQodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHRwbXQoMSAtIHQpIDogMiAtIHRwbXQodCAtIDEpKSAvIDI7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/exp.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/index.js": /*!**********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/index.js ***! \**********************************************************/ /*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeLinear\", function() { return _linear_js__WEBPACK_IMPORTED_MODULE_0__[\"linear\"]; });\n\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/quad.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuad\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadIn\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadOut\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadInOut\", function() { return _quad_js__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony import */ var _cubic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubic.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubic\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicIn\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicOut\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicInOut\", function() { return _cubic_js__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony import */ var _poly_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./poly.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/poly.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePoly\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyIn\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyOut\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyInOut\", function() { return _poly_js__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony import */ var _sin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sin.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/sin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSin\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinIn\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinOut\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinInOut\", function() { return _sin_js__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony import */ var _exp_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exp.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExp\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpIn\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpOut\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpInOut\", function() { return _exp_js__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./circle.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircle\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleIn\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleOut\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleInOut\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony import */ var _bounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounce.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/bounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounce\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceIn\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceOut\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceInOut\", function() { return _bounce_js__WEBPACK_IMPORTED_MODULE_7__[\"bounceInOut\"]; });\n\n/* harmony import */ var _back_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./back.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBack\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackIn\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackOut\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackInOut\", function() { return _back_js__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony import */ var _elastic_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./elastic.js */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/elastic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElastic\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticIn\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticOut\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticInOut\", function() { return _elastic_js__WEBPACK_IMPORTED_MODULE_9__[\"elasticInOut\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvaW5kZXguanM/MWUwOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVxQjs7QUFPRjs7QUFPQzs7QUFPRDs7QUFPRDs7QUFPQTs7QUFPRzs7QUFPQTs7QUFPRjs7QUFPRyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtZWFzZUAxLjAuN0BkMy1lYXNlL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGxpbmVhciBhcyBlYXNlTGluZWFyXG59IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuXG5leHBvcnQge1xuICBxdWFkSW5PdXQgYXMgZWFzZVF1YWQsXG4gIHF1YWRJbiBhcyBlYXNlUXVhZEluLFxuICBxdWFkT3V0IGFzIGVhc2VRdWFkT3V0LFxuICBxdWFkSW5PdXQgYXMgZWFzZVF1YWRJbk91dFxufSBmcm9tIFwiLi9xdWFkLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGN1YmljSW5PdXQgYXMgZWFzZUN1YmljLFxuICBjdWJpY0luIGFzIGVhc2VDdWJpY0luLFxuICBjdWJpY091dCBhcyBlYXNlQ3ViaWNPdXQsXG4gIGN1YmljSW5PdXQgYXMgZWFzZUN1YmljSW5PdXRcbn0gZnJvbSBcIi4vY3ViaWMuanNcIjtcblxuZXhwb3J0IHtcbiAgcG9seUluT3V0IGFzIGVhc2VQb2x5LFxuICBwb2x5SW4gYXMgZWFzZVBvbHlJbixcbiAgcG9seU91dCBhcyBlYXNlUG9seU91dCxcbiAgcG9seUluT3V0IGFzIGVhc2VQb2x5SW5PdXRcbn0gZnJvbSBcIi4vcG9seS5qc1wiO1xuXG5leHBvcnQge1xuICBzaW5Jbk91dCBhcyBlYXNlU2luLFxuICBzaW5JbiBhcyBlYXNlU2luSW4sXG4gIHNpbk91dCBhcyBlYXNlU2luT3V0LFxuICBzaW5Jbk91dCBhcyBlYXNlU2luSW5PdXRcbn0gZnJvbSBcIi4vc2luLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGV4cEluT3V0IGFzIGVhc2VFeHAsXG4gIGV4cEluIGFzIGVhc2VFeHBJbixcbiAgZXhwT3V0IGFzIGVhc2VFeHBPdXQsXG4gIGV4cEluT3V0IGFzIGVhc2VFeHBJbk91dFxufSBmcm9tIFwiLi9leHAuanNcIjtcblxuZXhwb3J0IHtcbiAgY2lyY2xlSW5PdXQgYXMgZWFzZUNpcmNsZSxcbiAgY2lyY2xlSW4gYXMgZWFzZUNpcmNsZUluLFxuICBjaXJjbGVPdXQgYXMgZWFzZUNpcmNsZU91dCxcbiAgY2lyY2xlSW5PdXQgYXMgZWFzZUNpcmNsZUluT3V0XG59IGZyb20gXCIuL2NpcmNsZS5qc1wiO1xuXG5leHBvcnQge1xuICBib3VuY2VPdXQgYXMgZWFzZUJvdW5jZSxcbiAgYm91bmNlSW4gYXMgZWFzZUJvdW5jZUluLFxuICBib3VuY2VPdXQgYXMgZWFzZUJvdW5jZU91dCxcbiAgYm91bmNlSW5PdXQgYXMgZWFzZUJvdW5jZUluT3V0XG59IGZyb20gXCIuL2JvdW5jZS5qc1wiO1xuXG5leHBvcnQge1xuICBiYWNrSW5PdXQgYXMgZWFzZUJhY2ssXG4gIGJhY2tJbiBhcyBlYXNlQmFja0luLFxuICBiYWNrT3V0IGFzIGVhc2VCYWNrT3V0LFxuICBiYWNrSW5PdXQgYXMgZWFzZUJhY2tJbk91dFxufSBmcm9tIFwiLi9iYWNrLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGVsYXN0aWNPdXQgYXMgZWFzZUVsYXN0aWMsXG4gIGVsYXN0aWNJbiBhcyBlYXNlRWxhc3RpY0luLFxuICBlbGFzdGljT3V0IGFzIGVhc2VFbGFzdGljT3V0LFxuICBlbGFzdGljSW5PdXQgYXMgZWFzZUVsYXN0aWNJbk91dFxufSBmcm9tIFwiLi9lbGFzdGljLmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/linear.js": /*!***********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/linear.js ***! \***********************************************************/ /*! exports provided: linear */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\nfunction linear(t) {\n return +t;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvbGluZWFyLmpzPzViZDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtZWFzZUAxLjAuN0BkMy1lYXNlL3NyYy9saW5lYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbGluZWFyKHQpIHtcbiAgcmV0dXJuICt0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/linear.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/math.js": /*!*********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/math.js ***! \*********************************************************/ /*! exports provided: tpmt */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tpmt\", function() { return tpmt; });\n// tpmt is two power minus ten times t scaled to [0,1]\nfunction tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvbWF0aC5qcz9hNDU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNPO0FBQ1A7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtZWFzZUAxLjAuN0BkMy1lYXNlL3NyYy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHBtdCBpcyB0d28gcG93ZXIgbWludXMgdGVuIHRpbWVzIHQgc2NhbGVkIHRvIFswLDFdXG5leHBvcnQgZnVuY3Rpb24gdHBtdCh4KSB7XG4gIHJldHVybiAoTWF0aC5wb3coMiwgLTEwICogeCkgLSAwLjAwMDk3NjU2MjUpICogMS4wMDA5Nzc1MTcxMDY1NDk0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/math.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/poly.js": /*!*********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/poly.js ***! \*********************************************************/ /*! exports provided: polyIn, polyOut, polyInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyIn\", function() { return polyIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyOut\", function() { return polyOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyInOut\", function() { return polyInOut; });\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvcG9seS5qcz9lMWFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvcG9seS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHBvbmVudCA9IDM7XG5cbmV4cG9ydCB2YXIgcG9seUluID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5SW4odCkge1xuICAgIHJldHVybiBNYXRoLnBvdyh0LCBlKTtcbiAgfVxuXG4gIHBvbHlJbi5leHBvbmVudCA9IGN1c3RvbTtcblxuICByZXR1cm4gcG9seUluO1xufSkoZXhwb25lbnQpO1xuXG5leHBvcnQgdmFyIHBvbHlPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGUpIHtcbiAgZSA9ICtlO1xuXG4gIGZ1bmN0aW9uIHBvbHlPdXQodCkge1xuICAgIHJldHVybiAxIC0gTWF0aC5wb3coMSAtIHQsIGUpO1xuICB9XG5cbiAgcG9seU91dC5leHBvbmVudCA9IGN1c3RvbTtcblxuICByZXR1cm4gcG9seU91dDtcbn0pKGV4cG9uZW50KTtcblxuZXhwb3J0IHZhciBwb2x5SW5PdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGUpIHtcbiAgZSA9ICtlO1xuXG4gIGZ1bmN0aW9uIHBvbHlJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gTWF0aC5wb3codCwgZSkgOiAyIC0gTWF0aC5wb3coMiAtIHQsIGUpKSAvIDI7XG4gIH1cblxuICBwb2x5SW5PdXQuZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlJbk91dDtcbn0pKGV4cG9uZW50KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/poly.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/quad.js": /*!*********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/quad.js ***! \*********************************************************/ /*! exports provided: quadIn, quadOut, quadInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadIn\", function() { return quadIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadOut\", function() { return quadOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadInOut\", function() { return quadInOut; });\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvcXVhZC5qcz8xN2UwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvcXVhZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBxdWFkSW4odCkge1xuICByZXR1cm4gdCAqIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWFkT3V0KHQpIHtcbiAgcmV0dXJuIHQgKiAoMiAtIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVhZEluT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gdCAqIHQgOiAtLXQgKiAoMiAtIHQpICsgMSkgLyAyO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/quad.js\n"); /***/ }), /***/ "./node_modules/_d3-ease@1.0.7@d3-ease/src/sin.js": /*!********************************************************!*\ !*** ./node_modules/_d3-ease@1.0.7@d3-ease/src/sin.js ***! \********************************************************/ /*! exports provided: sinIn, sinOut, sinInOut */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinIn\", function() { return sinIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinOut\", function() { return sinOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinInOut\", function() { return sinInOut; });\nvar pi = Math.PI,\n halfPi = pi / 2;\n\nfunction sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWVhc2VAMS4wLjdAZDMtZWFzZS9zcmMvc2luLmpzPzYxOTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1lYXNlQDEuMC43QGQzLWVhc2Uvc3JjL3Npbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBwaSA9IE1hdGguUEksXG4gICAgaGFsZlBpID0gcGkgLyAyO1xuXG5leHBvcnQgZnVuY3Rpb24gc2luSW4odCkge1xuICByZXR1cm4gKCt0ID09PSAxKSA/IDEgOiAxIC0gTWF0aC5jb3ModCAqIGhhbGZQaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5PdXQodCkge1xuICByZXR1cm4gTWF0aC5zaW4odCAqIGhhbGZQaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaW5Jbk91dCh0KSB7XG4gIHJldHVybiAoMSAtIE1hdGguY29zKHBpICogdCkpIC8gMjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-ease@1.0.7@d3-ease/src/sin.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/center.js": /*!*************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/center.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9jZW50ZXIuanM/ZDYyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7O0FBRUEsMkVBQTJFLE9BQU87QUFDbEY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9jZW50ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIHZhciBub2Rlcywgc3RyZW5ndGggPSAxO1xuXG4gIGlmICh4ID09IG51bGwpIHggPSAwO1xuICBpZiAoeSA9PSBudWxsKSB5ID0gMDtcblxuICBmdW5jdGlvbiBmb3JjZSgpIHtcbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgbm9kZSxcbiAgICAgICAgc3ggPSAwLFxuICAgICAgICBzeSA9IDA7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIHN4ICs9IG5vZGUueCwgc3kgKz0gbm9kZS55O1xuICAgIH1cblxuICAgIGZvciAoc3ggPSAoc3ggLyBuIC0geCkgKiBzdHJlbmd0aCwgc3kgPSAoc3kgLyBuIC0geSkgKiBzdHJlbmd0aCwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGUgPSBub2Rlc1tpXSwgbm9kZS54IC09IHN4LCBub2RlLnkgLT0gc3k7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBub2RlcyA9IF87XG4gIH07XG5cbiAgZm9yY2UueCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gK18sIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgZm9yY2UueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gK18sIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgZm9yY2Uuc3RyZW5ndGggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RyZW5ndGggPSArXywgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/center.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/collide.js": /*!**************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/collide.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-quadtree */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/jiggle.js\");\n\n\n\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_0__[\"quadtree\"])(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), initialize(), force) : radius;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9jb2xsaWRlLmpzPzNkZGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDQTtBQUNKOztBQUVqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMsNERBQVE7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQyxhQUFhLDREQUFRO0FBQ3JCLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMERBQU07QUFDbkMsNkJBQTZCLDBEQUFNO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCLE9BQU87QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0UsNERBQVE7QUFDOUU7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMvY29sbGlkZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cXVhZHRyZWV9IGZyb20gXCJkMy1xdWFkdHJlZVwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgamlnZ2xlIGZyb20gXCIuL2ppZ2dsZS5qc1wiO1xuXG5mdW5jdGlvbiB4KGQpIHtcbiAgcmV0dXJuIGQueCArIGQudng7XG59XG5cbmZ1bmN0aW9uIHkoZCkge1xuICByZXR1cm4gZC55ICsgZC52eTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFkaXVzKSB7XG4gIHZhciBub2RlcyxcbiAgICAgIHJhZGlpLFxuICAgICAgcmFuZG9tLFxuICAgICAgc3RyZW5ndGggPSAxLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKHR5cGVvZiByYWRpdXMgIT09IFwiZnVuY3Rpb25cIikgcmFkaXVzID0gY29uc3RhbnQocmFkaXVzID09IG51bGwgPyAxIDogK3JhZGl1cyk7XG5cbiAgZnVuY3Rpb24gZm9yY2UoKSB7XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIHRyZWUsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHhpLFxuICAgICAgICB5aSxcbiAgICAgICAgcmksXG4gICAgICAgIHJpMjtcblxuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaXRlcmF0aW9uczsgKytrKSB7XG4gICAgICB0cmVlID0gcXVhZHRyZWUobm9kZXMsIHgsIHkpLnZpc2l0QWZ0ZXIocHJlcGFyZSk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgcmkgPSByYWRpaVtub2RlLmluZGV4XSwgcmkyID0gcmkgKiByaTtcbiAgICAgICAgeGkgPSBub2RlLnggKyBub2RlLnZ4O1xuICAgICAgICB5aSA9IG5vZGUueSArIG5vZGUudnk7XG4gICAgICAgIHRyZWUudmlzaXQoYXBwbHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5KHF1YWQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgICB2YXIgZGF0YSA9IHF1YWQuZGF0YSwgcmogPSBxdWFkLnIsIHIgPSByaSArIHJqO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEuaW5kZXggPiBub2RlLmluZGV4KSB7XG4gICAgICAgICAgdmFyIHggPSB4aSAtIGRhdGEueCAtIGRhdGEudngsXG4gICAgICAgICAgICAgIHkgPSB5aSAtIGRhdGEueSAtIGRhdGEudnksXG4gICAgICAgICAgICAgIGwgPSB4ICogeCArIHkgKiB5O1xuICAgICAgICAgIGlmIChsIDwgciAqIHIpIHtcbiAgICAgICAgICAgIGlmICh4ID09PSAwKSB4ID0gamlnZ2xlKHJhbmRvbSksIGwgKz0geCAqIHg7XG4gICAgICAgICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgICAgICAgbCA9IChyIC0gKGwgPSBNYXRoLnNxcnQobCkpKSAvIGwgKiBzdHJlbmd0aDtcbiAgICAgICAgICAgIG5vZGUudnggKz0gKHggKj0gbCkgKiAociA9IChyaiAqPSByaikgLyAocmkyICsgcmopKTtcbiAgICAgICAgICAgIG5vZGUudnkgKz0gKHkgKj0gbCkgKiByO1xuICAgICAgICAgICAgZGF0YS52eCAtPSB4ICogKHIgPSAxIC0gcik7XG4gICAgICAgICAgICBkYXRhLnZ5IC09IHkgKiByO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4geDAgPiB4aSArIHIgfHwgeDEgPCB4aSAtIHIgfHwgeTAgPiB5aSArIHIgfHwgeTEgPCB5aSAtIHI7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcHJlcGFyZShxdWFkKSB7XG4gICAgaWYgKHF1YWQuZGF0YSkgcmV0dXJuIHF1YWQuciA9IHJhZGlpW3F1YWQuZGF0YS5pbmRleF07XG4gICAgZm9yICh2YXIgaSA9IHF1YWQuciA9IDA7IGkgPCA0OyArK2kpIHtcbiAgICAgIGlmIChxdWFkW2ldICYmIHF1YWRbaV0uciA+IHF1YWQucikge1xuICAgICAgICBxdWFkLnIgPSBxdWFkW2ldLnI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7XG4gICAgcmFkaWkgPSBuZXcgQXJyYXkobik7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgbm9kZSA9IG5vZGVzW2ldLCByYWRpaVtub2RlLmluZGV4XSA9ICtyYWRpdXMobm9kZSwgaSwgbm9kZXMpO1xuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLml0ZXJhdGlvbnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaXRlcmF0aW9ucyA9ICtfLCBmb3JjZSkgOiBpdGVyYXRpb25zO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gK18sIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiByYWRpdXM7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/collide.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/constant.js": /*!***************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/constant.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9jb25zdGFudC5qcz9iOTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMvY29uc3RhbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/index.js": /*!************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/index.js ***! \************************************************************/ /*! exports provided: forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _center_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./center.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/center.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceCenter\", function() { return _center_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _collide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collide.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/collide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceCollide\", function() { return _collide_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./link.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/link.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceLink\", function() { return _link_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _manyBody_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./manyBody.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/manyBody.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceManyBody\", function() { return _manyBody_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./radial.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/radial.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceRadial\", function() { return _radial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simulation.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/simulation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceSimulation\", function() { return _simulation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./x.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/x.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceX\", function() { return _x_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./y.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/y.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"forceY\", function() { return _y_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9pbmRleC5qcz9iYzEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1EO0FBQ0U7QUFDTjtBQUNRO0FBQ0o7QUFDUTtBQUNsQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZm9yY2VDZW50ZXJ9IGZyb20gXCIuL2NlbnRlci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlQ29sbGlkZX0gZnJvbSBcIi4vY29sbGlkZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlTGlua30gZnJvbSBcIi4vbGluay5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlTWFueUJvZHl9IGZyb20gXCIuL21hbnlCb2R5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VSYWRpYWx9IGZyb20gXCIuL3JhZGlhbC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlU2ltdWxhdGlvbn0gZnJvbSBcIi4vc2ltdWxhdGlvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlWH0gZnJvbSBcIi4veC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlWX0gZnJvbSBcIi4veS5qc1wiO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/jiggle.js": /*!*************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/jiggle.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(random) {\n return (random() - 0.5) * 1e-6;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9qaWdnbGUuanM/MTVmYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMvamlnZ2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFuZG9tKSB7XG4gIHJldHVybiAocmFuZG9tKCkgLSAwLjUpICogMWUtNjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/jiggle.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/lcg.js": /*!**********************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/lcg.js ***! \**********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9sY2cuanM/Y2I5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFTjtBQUNmO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMvbGNnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGluZWFyX2NvbmdydWVudGlhbF9nZW5lcmF0b3IjUGFyYW1ldGVyc19pbl9jb21tb25fdXNlXG5jb25zdCBhID0gMTY2NDUyNTtcbmNvbnN0IGMgPSAxMDEzOTA0MjIzO1xuY29uc3QgbSA9IDQyOTQ5NjcyOTY7IC8vIDJeMzJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGxldCBzID0gMTtcbiAgcmV0dXJuICgpID0+IChzID0gKGEgKiBzICsgYykgJSBtKSAvIG07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/lcg.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/link.js": /*!***********************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/link.js ***! \***********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/jiggle.js\");\n\n\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n y = target.y + target.vy - source.y - source.vy || Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9saW5rLmpzP2YyZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ0o7O0FBRWpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDREQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUMsZ0JBQWdCO0FBQ3JELHVEQUF1RCxPQUFPO0FBQzlEO0FBQ0EsMkRBQTJELDBEQUFNO0FBQ2pFLDJEQUEyRCwwREFBTTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLE9BQU87QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEscUNBQXFDLE9BQU87QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEscUNBQXFDLE9BQU87QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RUFBd0UsNERBQVE7QUFDaEY7O0FBRUE7QUFDQSx3RUFBd0UsNERBQVE7QUFDaEY7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMvbGluay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGppZ2dsZSBmcm9tIFwiLi9qaWdnbGUuanNcIjtcblxuZnVuY3Rpb24gaW5kZXgoZCkge1xuICByZXR1cm4gZC5pbmRleDtcbn1cblxuZnVuY3Rpb24gZmluZChub2RlQnlJZCwgbm9kZUlkKSB7XG4gIHZhciBub2RlID0gbm9kZUJ5SWQuZ2V0KG5vZGVJZCk7XG4gIGlmICghbm9kZSkgdGhyb3cgbmV3IEVycm9yKFwibm9kZSBub3QgZm91bmQ6IFwiICsgbm9kZUlkKTtcbiAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGxpbmtzKSB7XG4gIHZhciBpZCA9IGluZGV4LFxuICAgICAgc3RyZW5ndGggPSBkZWZhdWx0U3RyZW5ndGgsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICBkaXN0YW5jZSA9IGNvbnN0YW50KDMwKSxcbiAgICAgIGRpc3RhbmNlcyxcbiAgICAgIG5vZGVzLFxuICAgICAgY291bnQsXG4gICAgICBiaWFzLFxuICAgICAgcmFuZG9tLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKGxpbmtzID09IG51bGwpIGxpbmtzID0gW107XG5cbiAgZnVuY3Rpb24gZGVmYXVsdFN0cmVuZ3RoKGxpbmspIHtcbiAgICByZXR1cm4gMSAvIE1hdGgubWluKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSwgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgayA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsaW5rLCBzb3VyY2UsIHRhcmdldCwgeCwgeSwgbCwgYjsgaSA8IG47ICsraSkge1xuICAgICAgICBsaW5rID0gbGlua3NbaV0sIHNvdXJjZSA9IGxpbmsuc291cmNlLCB0YXJnZXQgPSBsaW5rLnRhcmdldDtcbiAgICAgICAgeCA9IHRhcmdldC54ICsgdGFyZ2V0LnZ4IC0gc291cmNlLnggLSBzb3VyY2UudnggfHwgamlnZ2xlKHJhbmRvbSk7XG4gICAgICAgIHkgPSB0YXJnZXQueSArIHRhcmdldC52eSAtIHNvdXJjZS55IC0gc291cmNlLnZ5IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICBsID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuICAgICAgICBsID0gKGwgLSBkaXN0YW5jZXNbaV0pIC8gbCAqIGFscGhhICogc3RyZW5ndGhzW2ldO1xuICAgICAgICB4ICo9IGwsIHkgKj0gbDtcbiAgICAgICAgdGFyZ2V0LnZ4IC09IHggKiAoYiA9IGJpYXNbaV0pO1xuICAgICAgICB0YXJnZXQudnkgLT0geSAqIGI7XG4gICAgICAgIHNvdXJjZS52eCArPSB4ICogKGIgPSAxIC0gYik7XG4gICAgICAgIHNvdXJjZS52eSArPSB5ICogYjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtID0gbGlua3MubGVuZ3RoLFxuICAgICAgICBub2RlQnlJZCA9IG5ldyBNYXAobm9kZXMubWFwKChkLCBpKSA9PiBbaWQoZCwgaSwgbm9kZXMpLCBkXSkpLFxuICAgICAgICBsaW5rO1xuXG4gICAgZm9yIChpID0gMCwgY291bnQgPSBuZXcgQXJyYXkobik7IGkgPCBtOyArK2kpIHtcbiAgICAgIGxpbmsgPSBsaW5rc1tpXSwgbGluay5pbmRleCA9IGk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsuc291cmNlICE9PSBcIm9iamVjdFwiKSBsaW5rLnNvdXJjZSA9IGZpbmQobm9kZUJ5SWQsIGxpbmsuc291cmNlKTtcbiAgICAgIGlmICh0eXBlb2YgbGluay50YXJnZXQgIT09IFwib2JqZWN0XCIpIGxpbmsudGFyZ2V0ID0gZmluZChub2RlQnlJZCwgbGluay50YXJnZXQpO1xuICAgICAgY291bnRbbGluay5zb3VyY2UuaW5kZXhdID0gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSB8fCAwKSArIDE7XG4gICAgICBjb3VudFtsaW5rLnRhcmdldC5pbmRleF0gPSAoY291bnRbbGluay50YXJnZXQuaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBiaWFzID0gbmV3IEFycmF5KG0pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGJpYXNbaV0gPSBjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gLyAoY291bnRbbGluay5zb3VyY2UuaW5kZXhdICsgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgICB9XG5cbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVTdHJlbmd0aCgpO1xuICAgIGRpc3RhbmNlcyA9IG5ldyBBcnJheShtKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplU3RyZW5ndGgoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9ICtzdHJlbmd0aChsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVEaXN0YW5jZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGxpbmtzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgZGlzdGFuY2VzW2ldID0gK2Rpc3RhbmNlKGxpbmtzW2ldLCBpLCBsaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLmxpbmtzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGxpbmtzID0gXywgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBsaW5rcztcbiAgfTtcblxuICBmb3JjZS5pZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpZCA9IF8sIGZvcmNlKSA6IGlkO1xuICB9O1xuXG4gIGZvcmNlLml0ZXJhdGlvbnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaXRlcmF0aW9ucyA9ICtfLCBmb3JjZSkgOiBpdGVyYXRpb25zO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemVTdHJlbmd0aCgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplRGlzdGFuY2UoKSwgZm9yY2UpIDogZGlzdGFuY2U7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/link.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/manyBody.js": /*!***************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/manyBody.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-quadtree */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/jiggle.js\");\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./simulation.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/simulation.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var nodes,\n node,\n random,\n alpha,\n strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_0__[\"quadtree\"])(nodes, _simulation_js__WEBPACK_IMPORTED_MODULE_3__[\"x\"], _simulation_js__WEBPACK_IMPORTED_MODULE_3__[\"y\"]).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = Object(_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9tYW55Qm9keS5qcz9mYWE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7QUFDQTtBQUNKO0FBQ0k7O0FBRXRCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNERBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsNERBQVEsUUFBUSxnREFBQyxFQUFFLGdEQUFDO0FBQ3hELDBCQUEwQixPQUFPO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlCQUF5QixPQUFPO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQSx5QkFBeUIsMERBQU07QUFDL0IseUJBQXlCLDBEQUFNO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHlDQUF5QztBQUN6QztBQUNBLHVCQUF1QiwwREFBTTtBQUM3Qix1QkFBdUIsMERBQU07QUFDN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0VBQXdFLDREQUFRO0FBQ2hGOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtZm9yY2VAMi4xLjFAZDMtZm9yY2Uvc3JjL21hbnlCb2R5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtxdWFkdHJlZX0gZnJvbSBcImQzLXF1YWR0cmVlXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBqaWdnbGUgZnJvbSBcIi4vamlnZ2xlLmpzXCI7XG5pbXBvcnQge3gsIHl9IGZyb20gXCIuL3NpbXVsYXRpb24uanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBub2RlcyxcbiAgICAgIG5vZGUsXG4gICAgICByYW5kb20sXG4gICAgICBhbHBoYSxcbiAgICAgIHN0cmVuZ3RoID0gY29uc3RhbnQoLTMwKSxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIGRpc3RhbmNlTWluMiA9IDEsXG4gICAgICBkaXN0YW5jZU1heDIgPSBJbmZpbml0eSxcbiAgICAgIHRoZXRhMiA9IDAuODE7XG5cbiAgZnVuY3Rpb24gZm9yY2UoXykge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCB0cmVlID0gcXVhZHRyZWUobm9kZXMsIHgsIHkpLnZpc2l0QWZ0ZXIoYWNjdW11bGF0ZSk7XG4gICAgZm9yIChhbHBoYSA9IF8sIGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHRyZWUudmlzaXQoYXBwbHkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgc3RyZW5ndGhzW25vZGUuaW5kZXhdID0gK3N0cmVuZ3RoKG5vZGUsIGksIG5vZGVzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFjY3VtdWxhdGUocXVhZCkge1xuICAgIHZhciBzdHJlbmd0aCA9IDAsIHEsIGMsIHdlaWdodCA9IDAsIHgsIHksIGk7XG5cbiAgICAvLyBGb3IgaW50ZXJuYWwgbm9kZXMsIGFjY3VtdWxhdGUgZm9yY2VzIGZyb20gY2hpbGQgcXVhZHJhbnRzLlxuICAgIGlmIChxdWFkLmxlbmd0aCkge1xuICAgICAgZm9yICh4ID0geSA9IGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICAgIGlmICgocSA9IHF1YWRbaV0pICYmIChjID0gTWF0aC5hYnMocS52YWx1ZSkpKSB7XG4gICAgICAgICAgc3RyZW5ndGggKz0gcS52YWx1ZSwgd2VpZ2h0ICs9IGMsIHggKz0gYyAqIHEueCwgeSArPSBjICogcS55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWFkLnggPSB4IC8gd2VpZ2h0O1xuICAgICAgcXVhZC55ID0geSAvIHdlaWdodDtcbiAgICB9XG5cbiAgICAvLyBGb3IgbGVhZiBub2RlcywgYWNjdW11bGF0ZSBmb3JjZXMgZnJvbSBjb2luY2lkZW50IHF1YWRyYW50cy5cbiAgICBlbHNlIHtcbiAgICAgIHEgPSBxdWFkO1xuICAgICAgcS54ID0gcS5kYXRhLng7XG4gICAgICBxLnkgPSBxLmRhdGEueTtcbiAgICAgIGRvIHN0cmVuZ3RoICs9IHN0cmVuZ3Roc1txLmRhdGEuaW5kZXhdO1xuICAgICAgd2hpbGUgKHEgPSBxLm5leHQpO1xuICAgIH1cblxuICAgIHF1YWQudmFsdWUgPSBzdHJlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5KHF1YWQsIHgxLCBfLCB4Mikge1xuICAgIGlmICghcXVhZC52YWx1ZSkgcmV0dXJuIHRydWU7XG5cbiAgICB2YXIgeCA9IHF1YWQueCAtIG5vZGUueCxcbiAgICAgICAgeSA9IHF1YWQueSAtIG5vZGUueSxcbiAgICAgICAgdyA9IHgyIC0geDEsXG4gICAgICAgIGwgPSB4ICogeCArIHkgKiB5O1xuXG4gICAgLy8gQXBwbHkgdGhlIEJhcm5lcy1IdXQgYXBwcm94aW1hdGlvbiBpZiBwb3NzaWJsZS5cbiAgICAvLyBMaW1pdCBmb3JjZXMgZm9yIHZlcnkgY2xvc2Ugbm9kZXM7IHJhbmRvbWl6ZSBkaXJlY3Rpb24gaWYgY29pbmNpZGVudC5cbiAgICBpZiAodyAqIHcgLyB0aGV0YTIgPCBsKSB7XG4gICAgICBpZiAobCA8IGRpc3RhbmNlTWF4Mikge1xuICAgICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgICBpZiAobCA8IGRpc3RhbmNlTWluMikgbCA9IE1hdGguc3FydChkaXN0YW5jZU1pbjIgKiBsKTtcbiAgICAgICAgbm9kZS52eCArPSB4ICogcXVhZC52YWx1ZSAqIGFscGhhIC8gbDtcbiAgICAgICAgbm9kZS52eSArPSB5ICogcXVhZC52YWx1ZSAqIGFscGhhIC8gbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgcHJvY2VzcyBwb2ludHMgZGlyZWN0bHkuXG4gICAgZWxzZSBpZiAocXVhZC5sZW5ndGggfHwgbCA+PSBkaXN0YW5jZU1heDIpIHJldHVybjtcblxuICAgIC8vIExpbWl0IGZvcmNlcyBmb3IgdmVyeSBjbG9zZSBub2RlczsgcmFuZG9taXplIGRpcmVjdGlvbiBpZiBjb2luY2lkZW50LlxuICAgIGlmIChxdWFkLmRhdGEgIT09IG5vZGUgfHwgcXVhZC5uZXh0KSB7XG4gICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgIGlmIChsIDwgZGlzdGFuY2VNaW4yKSBsID0gTWF0aC5zcXJ0KGRpc3RhbmNlTWluMiAqIGwpO1xuICAgIH1cblxuICAgIGRvIGlmIChxdWFkLmRhdGEgIT09IG5vZGUpIHtcbiAgICAgIHcgPSBzdHJlbmd0aHNbcXVhZC5kYXRhLmluZGV4XSAqIGFscGhhIC8gbDtcbiAgICAgIG5vZGUudnggKz0geCAqIHc7XG4gICAgICBub2RlLnZ5ICs9IHkgKiB3O1xuICAgIH0gd2hpbGUgKHF1YWQgPSBxdWFkLm5leHQpO1xuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2VNaW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2VNaW4yID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydChkaXN0YW5jZU1pbjIpO1xuICB9O1xuXG4gIGZvcmNlLmRpc3RhbmNlTWF4ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRpc3RhbmNlTWF4MiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQoZGlzdGFuY2VNYXgyKTtcbiAgfTtcblxuICBmb3JjZS50aGV0YSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGV0YTIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KHRoZXRhMik7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/manyBody.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/radial.js": /*!*************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/radial.js ***! \*************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius, x, y) {\n var nodes,\n strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9yYWRpYWwuanM/MjVjZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXFDOztBQUV0QjtBQUNmO0FBQ0EsaUJBQWlCLDREQUFRO0FBQ3pCO0FBQ0E7O0FBRUEsNkNBQTZDLDREQUFRO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RUFBd0UsNERBQVE7QUFDaEY7O0FBRUE7QUFDQSxzRUFBc0UsNERBQVE7QUFDOUU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9yYWRpYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFkaXVzLCB4LCB5KSB7XG4gIHZhciBub2RlcyxcbiAgICAgIHN0cmVuZ3RoID0gY29uc3RhbnQoMC4xKSxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHJhZGl1c2VzO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KCtyYWRpdXMpO1xuICBpZiAoeCA9PSBudWxsKSB4ID0gMDtcbiAgaWYgKHkgPT0gbnVsbCkgeSA9IDA7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXSxcbiAgICAgICAgICBkeCA9IG5vZGUueCAtIHggfHwgMWUtNixcbiAgICAgICAgICBkeSA9IG5vZGUueSAtIHkgfHwgMWUtNixcbiAgICAgICAgICByID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSxcbiAgICAgICAgICBrID0gKHJhZGl1c2VzW2ldIC0gcikgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYSAvIHI7XG4gICAgICBub2RlLnZ4ICs9IGR4ICogaztcbiAgICAgIG5vZGUudnkgKz0gZHkgKiBrO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICByYWRpdXNlcyA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICByYWRpdXNlc1tpXSA9ICtyYWRpdXMobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9IGlzTmFOKHJhZGl1c2VzW2ldKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXywgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHJhZGl1cztcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSArXywgZm9yY2UpIDogeDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSArXywgZm9yY2UpIDogeTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/radial.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/simulation.js": /*!*****************************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/simulation.js ***! \*****************************************************************/ /*! exports provided: x, y, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"x\", function() { return x; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"y\", function() { return y; });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ \"./node_modules/_d3-dispatch@2.0.0@d3-dispatch/src/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/_d3-timer@2.0.0@d3-timer/src/index.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lcg.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/lcg.js\");\n\n\n\n\nfunction x(d) {\n return d.x;\n}\n\nfunction y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"])(step),\n event = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__[\"dispatch\"])(\"tick\", \"end\"),\n random = Object(_lcg_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9zaW11bGF0aW9uLmpzPzU2NzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ047QUFDSjs7QUFFcEI7QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUs7QUFDckIsY0FBYyw0REFBUTtBQUN0QixlQUFlLHVEQUFHOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy9zaW11bGF0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge3RpbWVyfSBmcm9tIFwiZDMtdGltZXJcIjtcbmltcG9ydCBsY2cgZnJvbSBcIi4vbGNnLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4KGQpIHtcbiAgcmV0dXJuIGQueDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHkoZCkge1xuICByZXR1cm4gZC55O1xufVxuXG52YXIgaW5pdGlhbFJhZGl1cyA9IDEwLFxuICAgIGluaXRpYWxBbmdsZSA9IE1hdGguUEkgKiAoMyAtIE1hdGguc3FydCg1KSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGVzKSB7XG4gIHZhciBzaW11bGF0aW9uLFxuICAgICAgYWxwaGEgPSAxLFxuICAgICAgYWxwaGFNaW4gPSAwLjAwMSxcbiAgICAgIGFscGhhRGVjYXkgPSAxIC0gTWF0aC5wb3coYWxwaGFNaW4sIDEgLyAzMDApLFxuICAgICAgYWxwaGFUYXJnZXQgPSAwLFxuICAgICAgdmVsb2NpdHlEZWNheSA9IDAuNixcbiAgICAgIGZvcmNlcyA9IG5ldyBNYXAoKSxcbiAgICAgIHN0ZXBwZXIgPSB0aW1lcihzdGVwKSxcbiAgICAgIGV2ZW50ID0gZGlzcGF0Y2goXCJ0aWNrXCIsIFwiZW5kXCIpLFxuICAgICAgcmFuZG9tID0gbGNnKCk7XG5cbiAgaWYgKG5vZGVzID09IG51bGwpIG5vZGVzID0gW107XG5cbiAgZnVuY3Rpb24gc3RlcCgpIHtcbiAgICB0aWNrKCk7XG4gICAgZXZlbnQuY2FsbChcInRpY2tcIiwgc2ltdWxhdGlvbik7XG4gICAgaWYgKGFscGhhIDwgYWxwaGFNaW4pIHtcbiAgICAgIHN0ZXBwZXIuc3RvcCgpO1xuICAgICAgZXZlbnQuY2FsbChcImVuZFwiLCBzaW11bGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0aWNrKGl0ZXJhdGlvbnMpIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcblxuICAgIGlmIChpdGVyYXRpb25zID09PSB1bmRlZmluZWQpIGl0ZXJhdGlvbnMgPSAxO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGFscGhhICs9IChhbHBoYVRhcmdldCAtIGFscGhhKSAqIGFscGhhRGVjYXk7XG5cbiAgICAgIGZvcmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGZvcmNlKSB7XG4gICAgICAgIGZvcmNlKGFscGhhKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgaWYgKG5vZGUuZnggPT0gbnVsbCkgbm9kZS54ICs9IG5vZGUudnggKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnggPSBub2RlLmZ4LCBub2RlLnZ4ID0gMDtcbiAgICAgICAgaWYgKG5vZGUuZnkgPT0gbnVsbCkgbm9kZS55ICs9IG5vZGUudnkgKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnkgPSBub2RlLmZ5LCBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2ltdWxhdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVOb2RlcygpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLmluZGV4ID0gaTtcbiAgICAgIGlmIChub2RlLmZ4ICE9IG51bGwpIG5vZGUueCA9IG5vZGUuZng7XG4gICAgICBpZiAobm9kZS5meSAhPSBudWxsKSBub2RlLnkgPSBub2RlLmZ5O1xuICAgICAgaWYgKGlzTmFOKG5vZGUueCkgfHwgaXNOYU4obm9kZS55KSkge1xuICAgICAgICB2YXIgcmFkaXVzID0gaW5pdGlhbFJhZGl1cyAqIE1hdGguc3FydCgwLjUgKyBpKSwgYW5nbGUgPSBpICogaW5pdGlhbEFuZ2xlO1xuICAgICAgICBub2RlLnggPSByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICAgIG5vZGUueSA9IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05hTihub2RlLnZ4KSB8fCBpc05hTihub2RlLnZ5KSkge1xuICAgICAgICBub2RlLnZ4ID0gbm9kZS52eSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZvcmNlKGZvcmNlKSB7XG4gICAgaWYgKGZvcmNlLmluaXRpYWxpemUpIGZvcmNlLmluaXRpYWxpemUobm9kZXMsIHJhbmRvbSk7XG4gICAgcmV0dXJuIGZvcmNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZU5vZGVzKCk7XG5cbiAgcmV0dXJuIHNpbXVsYXRpb24gPSB7XG4gICAgdGljazogdGljayxcblxuICAgIHJlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHN0ZXBwZXIucmVzdGFydChzdGVwKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5zdG9wKCksIHNpbXVsYXRpb247XG4gICAgfSxcblxuICAgIG5vZGVzOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlcyA9IF8sIGluaXRpYWxpemVOb2RlcygpLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IG5vZGVzO1xuICAgIH0sXG5cbiAgICBhbHBoYTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGEgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYTtcbiAgICB9LFxuXG4gICAgYWxwaGFNaW46IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhTWluID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFNaW47XG4gICAgfSxcblxuICAgIGFscGhhRGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhRGVjYXkgPSArXywgc2ltdWxhdGlvbikgOiArYWxwaGFEZWNheTtcbiAgICB9LFxuXG4gICAgYWxwaGFUYXJnZXQ6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhVGFyZ2V0ID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFUYXJnZXQ7XG4gICAgfSxcblxuICAgIHZlbG9jaXR5RGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZlbG9jaXR5RGVjYXkgPSAxIC0gXywgc2ltdWxhdGlvbikgOiAxIC0gdmVsb2NpdHlEZWNheTtcbiAgICB9LFxuXG4gICAgcmFuZG9tU291cmNlOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5kb20gPSBfLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IHJhbmRvbTtcbiAgICB9LFxuXG4gICAgZm9yY2U6IGZ1bmN0aW9uKG5hbWUsIF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSA/ICgoXyA9PSBudWxsID8gZm9yY2VzLmRlbGV0ZShuYW1lKSA6IGZvcmNlcy5zZXQobmFtZSwgaW5pdGlhbGl6ZUZvcmNlKF8pKSksIHNpbXVsYXRpb24pIDogZm9yY2VzLmdldChuYW1lKTtcbiAgICB9LFxuXG4gICAgZmluZDogZnVuY3Rpb24oeCwgeSwgcmFkaXVzKSB7XG4gICAgICB2YXIgaSA9IDAsXG4gICAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBkeCxcbiAgICAgICAgICBkeSxcbiAgICAgICAgICBkMixcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIGNsb3Nlc3Q7XG5cbiAgICAgIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gICAgICBlbHNlIHJhZGl1cyAqPSByYWRpdXM7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBkeCA9IHggLSBub2RlLng7XG4gICAgICAgIGR5ID0geSAtIG5vZGUueTtcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgICAgICAgaWYgKGQyIDwgcmFkaXVzKSBjbG9zZXN0ID0gbm9kZSwgcmFkaXVzID0gZDI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9zZXN0O1xuICAgIH0sXG5cbiAgICBvbjogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKGV2ZW50Lm9uKG5hbWUsIF8pLCBzaW11bGF0aW9uKSA6IGV2ZW50Lm9uKG5hbWUpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/simulation.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/x.js": /*!********************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/x.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n var strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : x;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy94LmpzPzIxZWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFxQzs7QUFFdEI7QUFDZixpQkFBaUIsNERBQVE7QUFDekI7QUFDQTtBQUNBOztBQUVBLG1DQUFtQyw0REFBUTs7QUFFM0M7QUFDQSwyQ0FBMkMsT0FBTztBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RUFBd0UsNERBQVE7QUFDaEY7O0FBRUE7QUFDQSxpRUFBaUUsNERBQVE7QUFDekU7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMveC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHh6O1xuXG4gIGlmICh0eXBlb2YgeCAhPT0gXCJmdW5jdGlvblwiKSB4ID0gY29uc3RhbnQoeCA9PSBudWxsID8gMCA6ICt4KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnggKz0gKHh6W2ldIC0gbm9kZS54KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB4eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih4eltpXSA9ICt4KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/x.js\n"); /***/ }), /***/ "./node_modules/_d3-force@2.1.1@d3-force/src/y.js": /*!********************************************************!*\ !*** ./node_modules/_d3-force@2.1.1@d3-force/src/y.js ***! \********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-force@2.1.1@d3-force/src/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(y) {\n var strength = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : y;\n };\n\n return force;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWZvcmNlQDIuMS4xQGQzLWZvcmNlL3NyYy95LmpzP2ZiMjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFxQzs7QUFFdEI7QUFDZixpQkFBaUIsNERBQVE7QUFDekI7QUFDQTtBQUNBOztBQUVBLG1DQUFtQyw0REFBUTs7QUFFM0M7QUFDQSwyQ0FBMkMsT0FBTztBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RUFBd0UsNERBQVE7QUFDaEY7O0FBRUE7QUFDQSxpRUFBaUUsNERBQVE7QUFDekU7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1mb3JjZUAyLjEuMUBkMy1mb3JjZS9zcmMveS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih5KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHl6O1xuXG4gIGlmICh0eXBlb2YgeSAhPT0gXCJmdW5jdGlvblwiKSB5ID0gY29uc3RhbnQoeSA9PSBudWxsID8gMCA6ICt5KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnkgKz0gKHl6W2ldIC0gbm9kZS55KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB5eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih5eltpXSA9ICt5KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-force@2.1.1@d3-force/src/y.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/array.js": /*!************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/array.js ***! \************************************************************************/ /*! exports provided: default, genericArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genericArray\", function() { return genericArray; });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return (Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : genericArray)(a, b);\n});\n\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcz9hYTFlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQzZCOztBQUU3QztBQUNmLFVBQVUscUVBQWEsTUFBTSx1REFBVztBQUN4QyxDQUFDOztBQUVNO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLFFBQVEsYUFBYSx5REFBSztBQUN2QyxRQUFRLFFBQVE7O0FBRWhCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZhbHVlIGZyb20gXCIuL3ZhbHVlLmpzXCI7XG5pbXBvcnQgbnVtYmVyQXJyYXksIHtpc051bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiAoaXNOdW1iZXJBcnJheShiKSA/IG51bWJlckFycmF5IDogZ2VuZXJpY0FycmF5KShhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyaWNBcnJheShhLCBiKSB7XG4gIHZhciBuYiA9IGIgPyBiLmxlbmd0aCA6IDAsXG4gICAgICBuYSA9IGEgPyBNYXRoLm1pbihuYiwgYS5sZW5ndGgpIDogMCxcbiAgICAgIHggPSBuZXcgQXJyYXkobmEpLFxuICAgICAgYyA9IG5ldyBBcnJheShuYiksXG4gICAgICBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBuYTsgKytpKSB4W2ldID0gdmFsdWUoYVtpXSwgYltpXSk7XG4gIGZvciAoOyBpIDwgbmI7ICsraSkgY1tpXSA9IGJbaV07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgY1tpXSA9IHhbaV0odCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/array.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basis.js": /*!************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basis.js ***! \************************************************************************/ /*! exports provided: basis, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basis\", function() { return basis; });\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9iYXNpcy5qcz81MGVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9iYXNpcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBiYXNpcyh0MSwgdjAsIHYxLCB2MiwgdjMpIHtcbiAgdmFyIHQyID0gdDEgKiB0MSwgdDMgPSB0MiAqIHQxO1xuICByZXR1cm4gKCgxIC0gMyAqIHQxICsgMyAqIHQyIC0gdDMpICogdjBcbiAgICAgICsgKDQgLSA2ICogdDIgKyAzICogdDMpICogdjFcbiAgICAgICsgKDEgKyAzICogdDEgKyAzICogdDIgLSAzICogdDMpICogdjJcbiAgICAgICsgdDMgKiB2MykgLyA2O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IHQgPD0gMCA/ICh0ID0gMCkgOiB0ID49IDEgPyAodCA9IDEsIG4gLSAxKSA6IE1hdGguZmxvb3IodCAqIG4pLFxuICAgICAgICB2MSA9IHZhbHVlc1tpXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbaSArIDFdLFxuICAgICAgICB2MCA9IGkgPiAwID8gdmFsdWVzW2kgLSAxXSA6IDIgKiB2MSAtIHYyLFxuICAgICAgICB2MyA9IGkgPCBuIC0gMSA/IHZhbHVlc1tpICsgMl0gOiAyICogdjIgLSB2MTtcbiAgICByZXR1cm4gYmFzaXMoKHQgLSBpIC8gbikgKiBuLCB2MCwgdjEsIHYyLCB2Myk7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basis.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basisClosed.js": /*!******************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basisClosed.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return Object(_basis_js__WEBPACK_IMPORTED_MODULE_0__[\"basis\"])((t - i / n) * n, v0, v1, v2, v3);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcz9hNmEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7O0FBRWxCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHVEQUFLO0FBQ2hCO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL2Jhc2lzQ2xvc2VkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiYXNpc30gZnJvbSBcIi4vYmFzaXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aDtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoKCh0ICU9IDEpIDwgMCA/ICsrdCA6IHQpICogbiksXG4gICAgICAgIHYwID0gdmFsdWVzWyhpICsgbiAtIDEpICUgbl0sXG4gICAgICAgIHYxID0gdmFsdWVzW2kgJSBuXSxcbiAgICAgICAgdjIgPSB2YWx1ZXNbKGkgKyAxKSAlIG5dLFxuICAgICAgICB2MyA9IHZhbHVlc1soaSArIDIpICUgbl07XG4gICAgcmV0dXJuIGJhc2lzKCh0IC0gaSAvIG4pICogbiwgdjAsIHYxLCB2MiwgdjMpO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basisClosed.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js": /*!************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js ***! \************************************************************************/ /*! exports provided: hue, gamma, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hue\", function() { return hue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gamma\", function() { return gamma; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nogamma; });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcz8wMTZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0Esa0ZBQWtGLDREQUFRO0FBQzFGOztBQUVPO0FBQ1A7QUFDQSwwQ0FBMEMsNERBQVE7QUFDbEQ7QUFDQTs7QUFFZTtBQUNmO0FBQ0EsNEJBQTRCLDREQUFRO0FBQ3BDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvY29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZnVuY3Rpb24gbGluZWFyKGEsIGQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYSArIHQgKiBkO1xuICB9O1xufVxuXG5mdW5jdGlvbiBleHBvbmVudGlhbChhLCBiLCB5KSB7XG4gIHJldHVybiBhID0gTWF0aC5wb3coYSwgeSksIGIgPSBNYXRoLnBvdyhiLCB5KSAtIGEsIHkgPSAxIC8geSwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBNYXRoLnBvdyhhICsgdCAqIGIsIHkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHVlKGEsIGIpIHtcbiAgdmFyIGQgPSBiIC0gYTtcbiAgcmV0dXJuIGQgPyBsaW5lYXIoYSwgZCA+IDE4MCB8fCBkIDwgLTE4MCA/IGQgLSAzNjAgKiBNYXRoLnJvdW5kKGQgLyAzNjApIDogZCkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdhbW1hKHkpIHtcbiAgcmV0dXJuICh5ID0gK3kpID09PSAxID8gbm9nYW1tYSA6IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gYiAtIGEgPyBleHBvbmVudGlhbChhLCBiLCB5KSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub2dhbW1hKGEsIGIpIHtcbiAgdmFyIGQgPSBiIC0gYTtcbiAgcmV0dXJuIGQgPyBsaW5lYXIoYSwgZCkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/constant.js": /*!***************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/constant.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9jb25zdGFudC5qcz84YmQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvY29uc3RhbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/constant.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/cubehelix.js": /*!****************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/cubehelix.js ***! \****************************************************************************/ /*! exports provided: default, cubehelixLong */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelixLong\", function() { return cubehelixLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/_d3-color@1.4.1@d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"cubehelix\"])(end)).h),\n s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9jdWJlaGVsaXguanM/ZWZlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxRDtBQUNmOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsMERBQWMsbUJBQW1CLDBEQUFjO0FBQzFFLGNBQWMseURBQUs7QUFDbkIsY0FBYyx5REFBSztBQUNuQixvQkFBb0IseURBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFZSx5RUFBVSw2Q0FBRyxDQUFDLEVBQUM7QUFDdkIsOEJBQThCLGlEQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvY3ViZWhlbGl4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdWJlaGVsaXggYXMgY29sb3JDdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXgoaHVlKSB7XG4gIHJldHVybiAoZnVuY3Rpb24gY3ViZWhlbGl4R2FtbWEoeSkge1xuICAgIHkgPSAreTtcblxuICAgIGZ1bmN0aW9uIGN1YmVoZWxpeChzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckN1YmVoZWxpeChzdGFydCkpLmgsIChlbmQgPSBjb2xvckN1YmVoZWxpeChlbmQpKS5oKSxcbiAgICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgICAgc3RhcnQubCA9IGwoTWF0aC5wb3codCwgeSkpO1xuICAgICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY3ViZWhlbGl4LmdhbW1hID0gY3ViZWhlbGl4R2FtbWE7XG5cbiAgICByZXR1cm4gY3ViZWhlbGl4O1xuICB9KSgxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3ViZWhlbGl4KGh1ZSk7XG5leHBvcnQgdmFyIGN1YmVoZWxpeExvbmcgPSBjdWJlaGVsaXgoY29sb3IpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/cubehelix.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/date.js": /*!***********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/date.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzPzcxYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL2RhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSAqICgxIC0gdCkgKyBiICogdCksIGQ7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/date.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/discrete.js": /*!***************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/discrete.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9kaXNjcmV0ZS5qcz8xZGY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9kaXNjcmV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhbmdlKSB7XG4gIHZhciBuID0gcmFuZ2UubGVuZ3RoO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiByYW5nZVtNYXRoLm1heCgwLCBNYXRoLm1pbihuIC0gMSwgTWF0aC5mbG9vcih0ICogbikpKV07XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/discrete.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hcl.js": /*!**********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hcl.js ***! \**********************************************************************/ /*! exports provided: default, hclLong */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hclLong\", function() { return hclLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/_d3-color@1.4.1@d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hcl\"])(end)).h),\n c = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9oY2wuanM/ZDQ3YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNIOztBQUV0QztBQUNBO0FBQ0EseUJBQXlCLG9EQUFRLG1CQUFtQixvREFBUTtBQUM1RCxZQUFZLHlEQUFLO0FBQ2pCLFlBQVkseURBQUs7QUFDakIsa0JBQWtCLHlEQUFLO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxtRUFBSSw2Q0FBRyxDQUFDLEVBQUM7QUFDakIsa0JBQWtCLGlEQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvaGNsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoY2wgYXMgY29sb3JIY2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBoY2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIY2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIY2woZW5kKSkuaCksXG4gICAgICAgIGMgPSBjb2xvcihzdGFydC5jLCBlbmQuYyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQuYyA9IGModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhjbChodWUpO1xuZXhwb3J0IHZhciBoY2xMb25nID0gaGNsKGNvbG9yKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hcl.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hsl.js": /*!**********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hsl.js ***! \**********************************************************************/ /*! exports provided: default, hslLong */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslLong\", function() { return hslLong; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/_d3-color@1.4.1@d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"])(end)).h),\n s = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"hue\"]));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9oc2wuanM/NjU5NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNIOztBQUV0QztBQUNBO0FBQ0EseUJBQXlCLG9EQUFRLG1CQUFtQixvREFBUTtBQUM1RCxZQUFZLHlEQUFLO0FBQ2pCLFlBQVkseURBQUs7QUFDakIsa0JBQWtCLHlEQUFLO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxtRUFBSSw2Q0FBRyxDQUFDLEVBQUM7QUFDakIsa0JBQWtCLGlEQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvaHNsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtoc2wgYXMgY29sb3JIc2x9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5mdW5jdGlvbiBoc2woaHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgdmFyIGggPSBodWUoKHN0YXJ0ID0gY29sb3JIc2woc3RhcnQpKS5oLCAoZW5kID0gY29sb3JIc2woZW5kKSkuaCksXG4gICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgc3RhcnQucyA9IHModCk7XG4gICAgICBzdGFydC5sID0gbCh0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhzbChodWUpO1xuZXhwb3J0IHZhciBoc2xMb25nID0gaHNsKGNvbG9yKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hsl.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hue.js": /*!**********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hue.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var i = Object(_color_js__WEBPACK_IMPORTED_MODULE_0__[\"hue\"])(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9odWUuanM/MDU0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCOztBQUVoQjtBQUNmLFVBQVUscURBQUc7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9odWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2h1ZX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IGh1ZSgrYSwgK2IpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciB4ID0gaSh0KTtcbiAgICByZXR1cm4geCAtIDM2MCAqIE1hdGguZmxvb3IoeCAvIDM2MCk7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hue.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/index.js": /*!************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/index.js ***! \************************************************************************/ /*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateDiscrete, interpolateHue, interpolateNumber, interpolateNumberArray, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, piecewise, quantize */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/value.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/array.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basisClosed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/date.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/discrete.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateDiscrete\", function() { return _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hue.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHue\", function() { return _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/numberArray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumberArray\", function() { return _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/object.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/round.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/string.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformCss\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return _transform_index_js__WEBPACK_IMPORTED_MODULE_12__[\"interpolateTransformSvg\"]; });\n\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/zoom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/rgb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasis\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"rgbBasisClosed\"]; });\n\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hsl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"hslLong\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/hcl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"hclLong\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"cubehelixLong\"]; });\n\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/piecewise.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"piecewise\", function() { return _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/quantize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcz9lZWRmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ0s7QUFDQTtBQUNZO0FBQ2Q7QUFDUTtBQUNWO0FBQ007QUFDVTtBQUNWO0FBQ0Y7QUFDRTtBQUM2QjtBQUNqQztBQUM0RTtBQUMvQztBQUMvQjtBQUMrQjtBQUN3QjtBQUN0RDtBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGV9IGZyb20gXCIuL3ZhbHVlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVBcnJheX0gZnJvbSBcIi4vYXJyYXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUJhc2lzfSBmcm9tIFwiLi9iYXNpcy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQmFzaXNDbG9zZWR9IGZyb20gXCIuL2Jhc2lzQ2xvc2VkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVEYXRlfSBmcm9tIFwiLi9kYXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVEaXNjcmV0ZX0gZnJvbSBcIi4vZGlzY3JldGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUh1ZX0gZnJvbSBcIi4vaHVlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVOdW1iZXJ9IGZyb20gXCIuL251bWJlci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlTnVtYmVyQXJyYXl9IGZyb20gXCIuL251bWJlckFycmF5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVPYmplY3R9IGZyb20gXCIuL29iamVjdC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUm91bmR9IGZyb20gXCIuL3JvdW5kLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVTdHJpbmd9IGZyb20gXCIuL3N0cmluZy5qc1wiO1xuZXhwb3J0IHtpbnRlcnBvbGF0ZVRyYW5zZm9ybUNzcywgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmd9IGZyb20gXCIuL3RyYW5zZm9ybS9pbmRleC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlWm9vbX0gZnJvbSBcIi4vem9vbS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUmdiLCByZ2JCYXNpcyBhcyBpbnRlcnBvbGF0ZVJnYkJhc2lzLCByZ2JCYXNpc0Nsb3NlZCBhcyBpbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkfSBmcm9tIFwiLi9yZ2IuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUhzbCwgaHNsTG9uZyBhcyBpbnRlcnBvbGF0ZUhzbExvbmd9IGZyb20gXCIuL2hzbC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlTGFifSBmcm9tIFwiLi9sYWIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUhjbCwgaGNsTG9uZyBhcyBpbnRlcnBvbGF0ZUhjbExvbmd9IGZyb20gXCIuL2hjbC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQ3ViZWhlbGl4LCBjdWJlaGVsaXhMb25nIGFzIGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZ30gZnJvbSBcIi4vY3ViZWhlbGl4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGllY2V3aXNlfSBmcm9tIFwiLi9waWVjZXdpc2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBxdWFudGl6ZX0gZnJvbSBcIi4vcXVhbnRpemUuanNcIjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/lab.js": /*!**********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/lab.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/_d3-color@1.4.1@d3-color/src/index.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n var l = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"lab\"])(end)).l),\n a = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.a, end.a),\n b = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.b, end.b),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9sYWIuanM/YmMwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNWOztBQUVoQjtBQUNmLFVBQVUseURBQUssVUFBVSxvREFBUSxtQkFBbUIsb0RBQVE7QUFDNUQsVUFBVSx5REFBSztBQUNmLFVBQVUseURBQUs7QUFDZixnQkFBZ0IseURBQUs7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL2xhYi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bGFiIGFzIGNvbG9yTGFifSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCBjb2xvciBmcm9tIFwiLi9jb2xvci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYWIoc3RhcnQsIGVuZCkge1xuICB2YXIgbCA9IGNvbG9yKChzdGFydCA9IGNvbG9yTGFiKHN0YXJ0KSkubCwgKGVuZCA9IGNvbG9yTGFiKGVuZCkpLmwpLFxuICAgICAgYSA9IGNvbG9yKHN0YXJ0LmEsIGVuZC5hKSxcbiAgICAgIGIgPSBjb2xvcihzdGFydC5iLCBlbmQuYiksXG4gICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgIHN0YXJ0LmEgPSBhKHQpO1xuICAgIHN0YXJ0LmIgPSBiKHQpO1xuICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/lab.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js": /*!*************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanM/N2E1YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL251bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKiAoMSAtIHQpICsgYiAqIHQ7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/numberArray.js": /*!******************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/numberArray.js ***! \******************************************************************************/ /*! exports provided: default, isNumberArray */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberArray\", function() { return isNumberArray; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n});\n\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcz8xZmFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBLENBQUM7O0FBRU07QUFDUDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvbnVtYmVyQXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIGlmICghYikgYiA9IFtdO1xuICB2YXIgbiA9IGEgPyBNYXRoLm1pbihiLmxlbmd0aCwgYS5sZW5ndGgpIDogMCxcbiAgICAgIGMgPSBiLnNsaWNlKCksXG4gICAgICBpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGNbaV0gPSBhW2ldICogKDEgLSB0KSArIGJbaV0gKiB0O1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJBcnJheSh4KSB7XG4gIHJldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoeCkgJiYgISh4IGluc3RhbmNlb2YgRGF0YVZpZXcpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/numberArray.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/object.js": /*!*************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/object.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = Object(_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9vYmplY3QuanM/NDhkNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQStCOztBQUVoQjtBQUNmLFlBQVk7QUFDWixZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSx5REFBSztBQUNsQixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBpID0ge30sXG4gICAgICBjID0ge30sXG4gICAgICBrO1xuXG4gIGlmIChhID09PSBudWxsIHx8IHR5cGVvZiBhICE9PSBcIm9iamVjdFwiKSBhID0ge307XG4gIGlmIChiID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSBcIm9iamVjdFwiKSBiID0ge307XG5cbiAgZm9yIChrIGluIGIpIHtcbiAgICBpZiAoayBpbiBhKSB7XG4gICAgICBpW2tdID0gdmFsdWUoYVtrXSwgYltrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNba10gPSBiW2tdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChrIGluIGkpIGNba10gPSBpW2tdKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/object.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/piecewise.js": /*!****************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/piecewise.js ***! \****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return piecewise; });\nfunction piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9waWVjZXdpc2UuanM/ZmRhZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL3BpZWNld2lzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBpZWNld2lzZShpbnRlcnBvbGF0ZSwgdmFsdWVzKSB7XG4gIHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGggLSAxLCB2ID0gdmFsdWVzWzBdLCBJID0gbmV3IEFycmF5KG4gPCAwID8gMCA6IG4pO1xuICB3aGlsZSAoaSA8IG4pIElbaV0gPSBpbnRlcnBvbGF0ZSh2LCB2ID0gdmFsdWVzWysraV0pO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDEsIE1hdGguZmxvb3IodCAqPSBuKSkpO1xuICAgIHJldHVybiBJW2ldKHQgLSBpKTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/piecewise.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/quantize.js": /*!***************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/quantize.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9xdWFudGl6ZS5qcz8zZjc5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL3F1YW50aXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW50ZXJwb2xhdG9yLCBuKSB7XG4gIHZhciBzYW1wbGVzID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkgc2FtcGxlc1tpXSA9IGludGVycG9sYXRvcihpIC8gKG4gLSAxKSk7XG4gIHJldHVybiBzYW1wbGVzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/quantize.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/rgb.js": /*!**********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/rgb.js ***! \**********************************************************************/ /*! exports provided: default, rgbBasis, rgbBasisClosed */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasis\", function() { return rgbBasis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbBasisClosed\", function() { return rgbBasisClosed; });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/_d3-color@1.4.1@d3-color/src/index.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basisClosed.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./color.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((function rgbGamma(y) {\n var color = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"gamma\"])(y);\n\n function rgb(start, end) {\n var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = Object(_color_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"])(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9yZ2IuanM/MThkZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNWO0FBQ1k7QUFDRDs7QUFFM0I7QUFDZixjQUFjLHVEQUFLOztBQUVuQjtBQUNBLDJCQUEyQixvREFBUSxtQkFBbUIsb0RBQVE7QUFDOUQ7QUFDQTtBQUNBLGtCQUFrQix5REFBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxJQUFJLEVBQUM7O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsY0FBYyxvREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyx5QkFBeUIsaURBQUs7QUFDOUIsK0JBQStCLHVEQUFXIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvcmdiLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZ2IgYXMgY29sb3JSZ2J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGJhc2lzIGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5pbXBvcnQgYmFzaXNDbG9zZWQgZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmltcG9ydCBub2dhbW1hLCB7Z2FtbWF9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiByZ2JHYW1tYSh5KSB7XG4gIHZhciBjb2xvciA9IGdhbW1hKHkpO1xuXG4gIGZ1bmN0aW9uIHJnYihzdGFydCwgZW5kKSB7XG4gICAgdmFyIHIgPSBjb2xvcigoc3RhcnQgPSBjb2xvclJnYihzdGFydCkpLnIsIChlbmQgPSBjb2xvclJnYihlbmQpKS5yKSxcbiAgICAgICAgZyA9IGNvbG9yKHN0YXJ0LmcsIGVuZC5nKSxcbiAgICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgICAgb3BhY2l0eSA9IG5vZ2FtbWEoc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBzdGFydC5yID0gcih0KTtcbiAgICAgIHN0YXJ0LmcgPSBnKHQpO1xuICAgICAgc3RhcnQuYiA9IGIodCk7XG4gICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgIHJldHVybiBzdGFydCArIFwiXCI7XG4gICAgfTtcbiAgfVxuXG4gIHJnYi5nYW1tYSA9IHJnYkdhbW1hO1xuXG4gIHJldHVybiByZ2I7XG59KSgxKTtcblxuZnVuY3Rpb24gcmdiU3BsaW5lKHNwbGluZSkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sb3JzKSB7XG4gICAgdmFyIG4gPSBjb2xvcnMubGVuZ3RoLFxuICAgICAgICByID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBnID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBiID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBpLCBjb2xvcjtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb2xvciA9IGNvbG9yUmdiKGNvbG9yc1tpXSk7XG4gICAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgICAgZ1tpXSA9IGNvbG9yLmcgfHwgMDtcbiAgICAgIGJbaV0gPSBjb2xvci5iIHx8IDA7XG4gICAgfVxuICAgIHIgPSBzcGxpbmUocik7XG4gICAgZyA9IHNwbGluZShnKTtcbiAgICBiID0gc3BsaW5lKGIpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSAxO1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICBjb2xvci5yID0gcih0KTtcbiAgICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgICAgY29sb3IuYiA9IGIodCk7XG4gICAgICByZXR1cm4gY29sb3IgKyBcIlwiO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgcmdiQmFzaXMgPSByZ2JTcGxpbmUoYmFzaXMpO1xuZXhwb3J0IHZhciByZ2JCYXNpc0Nsb3NlZCA9IHJnYlNwbGluZShiYXNpc0Nsb3NlZCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/rgb.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/round.js": /*!************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/round.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9yb3VuZC5qcz9jNjg1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvcm91bmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhID0gK2EsIGIgPSArYiwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGEgKiAoMSAtIHQpICsgYiAqIHQpO1xuICB9O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/round.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/string.js": /*!*************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/string.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy9zdHJpbmcuanM/NWRkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWlDOztBQUVqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBLHdDQUF3QztBQUN4QywyQkFBMkI7QUFDM0I7QUFDQSxLQUFLLE9BQU87QUFDWjtBQUNBLGNBQWMsU0FBUywwREFBTSxTQUFTO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsT0FBTztBQUNuQztBQUNBLFNBQVM7QUFDVCxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvc3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcblxudmFyIHJlQSA9IC9bLStdPyg/OlxcZCtcXC4/XFxkKnxcXC4/XFxkKykoPzpbZUVdWy0rXT9cXGQrKT8vZyxcbiAgICByZUIgPSBuZXcgUmVnRXhwKHJlQS5zb3VyY2UsIFwiZ1wiKTtcblxuZnVuY3Rpb24gemVybyhiKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25lKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYih0KSArIFwiXCI7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGJpID0gcmVBLmxhc3RJbmRleCA9IHJlQi5sYXN0SW5kZXggPSAwLCAvLyBzY2FuIGluZGV4IGZvciBuZXh0IG51bWJlciBpbiBiXG4gICAgICBhbSwgLy8gY3VycmVudCBtYXRjaCBpbiBhXG4gICAgICBibSwgLy8gY3VycmVudCBtYXRjaCBpbiBiXG4gICAgICBicywgLy8gc3RyaW5nIHByZWNlZGluZyBjdXJyZW50IG51bWJlciBpbiBiLCBpZiBhbnlcbiAgICAgIGkgPSAtMSwgLy8gaW5kZXggaW4gc1xuICAgICAgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcblxuICAvLyBDb2VyY2UgaW5wdXRzIHRvIHN0cmluZ3MuXG4gIGEgPSBhICsgXCJcIiwgYiA9IGIgKyBcIlwiO1xuXG4gIC8vIEludGVycG9sYXRlIHBhaXJzIG9mIG51bWJlcnMgaW4gYSAmIGIuXG4gIHdoaWxlICgoYW0gPSByZUEuZXhlYyhhKSlcbiAgICAgICYmIChibSA9IHJlQi5leGVjKGIpKSkge1xuICAgIGlmICgoYnMgPSBibS5pbmRleCkgPiBiaSkgeyAvLyBhIHN0cmluZyBwcmVjZWRlcyB0aGUgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYnMgPSBiLnNsaWNlKGJpLCBicyk7XG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gICAgfVxuICAgIGlmICgoYW0gPSBhbVswXSkgPT09IChibSA9IGJtWzBdKSkgeyAvLyBudW1iZXJzIGluIGEgJiBiIG1hdGNoXG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBibTsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYm07XG4gICAgfSBlbHNlIHsgLy8gaW50ZXJwb2xhdGUgbm9uLW1hdGNoaW5nIG51bWJlcnNcbiAgICAgIHNbKytpXSA9IG51bGw7XG4gICAgICBxLnB1c2goe2k6IGksIHg6IG51bWJlcihhbSwgYm0pfSk7XG4gICAgfVxuICAgIGJpID0gcmVCLmxhc3RJbmRleDtcbiAgfVxuXG4gIC8vIEFkZCByZW1haW5zIG9mIGIuXG4gIGlmIChiaSA8IGIubGVuZ3RoKSB7XG4gICAgYnMgPSBiLnNsaWNlKGJpKTtcbiAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICBlbHNlIHNbKytpXSA9IGJzO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBvcHRpbWl6YXRpb24gZm9yIG9ubHkgYSBzaW5nbGUgbWF0Y2guXG4gIC8vIE90aGVyd2lzZSwgaW50ZXJwb2xhdGUgZWFjaCBvZiB0aGUgbnVtYmVycyBhbmQgcmVqb2luIHRoZSBzdHJpbmcuXG4gIHJldHVybiBzLmxlbmd0aCA8IDIgPyAocVswXVxuICAgICAgPyBvbmUocVswXS54KVxuICAgICAgOiB6ZXJvKGIpKVxuICAgICAgOiAoYiA9IHEubGVuZ3RoLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG87IGkgPCBiOyArK2kpIHNbKG8gPSBxW2ldKS5pXSA9IG8ueCh0KTtcbiAgICAgICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgICAgICB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/string.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/decompose.js": /*!**************************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/decompose.js ***! \**************************************************************************************/ /*! exports provided: identity, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzP2Y4MWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZ3JlZXMgPSAxODAgLyBNYXRoLlBJO1xuXG5leHBvcnQgdmFyIGlkZW50aXR5ID0ge1xuICB0cmFuc2xhdGVYOiAwLFxuICB0cmFuc2xhdGVZOiAwLFxuICByb3RhdGU6IDAsXG4gIHNrZXdYOiAwLFxuICBzY2FsZVg6IDEsXG4gIHNjYWxlWTogMVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYiwgYywgZCwgZSwgZikge1xuICB2YXIgc2NhbGVYLCBzY2FsZVksIHNrZXdYO1xuICBpZiAoc2NhbGVYID0gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIpKSBhIC89IHNjYWxlWCwgYiAvPSBzY2FsZVg7XG4gIGlmIChza2V3WCA9IGEgKiBjICsgYiAqIGQpIGMgLT0gYSAqIHNrZXdYLCBkIC09IGIgKiBza2V3WDtcbiAgaWYgKHNjYWxlWSA9IE1hdGguc3FydChjICogYyArIGQgKiBkKSkgYyAvPSBzY2FsZVksIGQgLz0gc2NhbGVZLCBza2V3WCAvPSBzY2FsZVk7XG4gIGlmIChhICogZCA8IGIgKiBjKSBhID0gLWEsIGIgPSAtYiwgc2tld1ggPSAtc2tld1gsIHNjYWxlWCA9IC1zY2FsZVg7XG4gIHJldHVybiB7XG4gICAgdHJhbnNsYXRlWDogZSxcbiAgICB0cmFuc2xhdGVZOiBmLFxuICAgIHJvdGF0ZTogTWF0aC5hdGFuMihiLCBhKSAqIGRlZ3JlZXMsXG4gICAgc2tld1g6IE1hdGguYXRhbihza2V3WCkgKiBkZWdyZWVzLFxuICAgIHNjYWxlWDogc2NhbGVYLFxuICAgIHNjYWxlWTogc2NhbGVZXG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/decompose.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/index.js": /*!**********************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/index.js ***! \**********************************************************************************/ /*! exports provided: interpolateTransformCss, interpolateTransformSvg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return interpolateTransformCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return interpolateTransformSvg; });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: Object(_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseCss\"], \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__[\"parseSvg\"], \", \", \")\", \")\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vaW5kZXguanM/OGYwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ1k7O0FBRTlDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGFBQWEsMERBQU0sU0FBUyxHQUFHLGFBQWEsMERBQU0sU0FBUztBQUN6RSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQ0FBZ0MsZ0NBQWdDO0FBQ2hFLGNBQWMsc0RBQXNELDBEQUFNLE9BQU87QUFDakYsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxxREFBcUQsMERBQU0sT0FBTztBQUNoRixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsYUFBYSwwREFBTSxTQUFTLEdBQUcsYUFBYSwwREFBTSxTQUFTO0FBQ3pFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLG1EQUFtRCxrREFBUTtBQUMzRCxtREFBbUQsa0RBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnVtYmVyIGZyb20gXCIuLi9udW1iZXIuanNcIjtcbmltcG9ydCB7cGFyc2VDc3MsIHBhcnNlU3ZnfSBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZSwgcHhDb21tYSwgcHhQYXJlbiwgZGVnUGFyZW4pIHtcblxuICBmdW5jdGlvbiBwb3Aocykge1xuICAgIHJldHVybiBzLmxlbmd0aCA/IHMucG9wKCkgKyBcIiBcIiA6IFwiXCI7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2goXCJ0cmFuc2xhdGUoXCIsIG51bGwsIHB4Q29tbWEsIG51bGwsIHB4UGFyZW4pO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiB8fCB5Yikge1xuICAgICAgcy5wdXNoKFwidHJhbnNsYXRlKFwiICsgeGIgKyBweENvbW1hICsgeWIgKyBweFBhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb3RhdGUoYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBpZiAoYSAtIGIgPiAxODApIGIgKz0gMzYwOyBlbHNlIGlmIChiIC0gYSA+IDE4MCkgYSArPSAzNjA7IC8vIHNob3J0ZXN0IHBhdGhcbiAgICAgIHEucHVzaCh7aTogcy5wdXNoKHBvcChzKSArIFwicm90YXRlKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2tld1goYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiICsgYiArIGRlZ1BhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4YSwgeWEsIHhiLCB5YiwgcywgcSkge1xuICAgIGlmICh4YSAhPT0geGIgfHwgeWEgIT09IHliKSB7XG4gICAgICB2YXIgaSA9IHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiLCBudWxsLCBcIixcIiwgbnVsbCwgXCIpXCIpO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiAhPT0gMSB8fCB5YiAhPT0gMSkge1xuICAgICAgcy5wdXNoKHBvcChzKSArIFwic2NhbGUoXCIgKyB4YiArIFwiLFwiICsgeWIgKyBcIilcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICB2YXIgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuICAgIGEgPSBwYXJzZShhKSwgYiA9IHBhcnNlKGIpO1xuICAgIHRyYW5zbGF0ZShhLnRyYW5zbGF0ZVgsIGEudHJhbnNsYXRlWSwgYi50cmFuc2xhdGVYLCBiLnRyYW5zbGF0ZVksIHMsIHEpO1xuICAgIHJvdGF0ZShhLnJvdGF0ZSwgYi5yb3RhdGUsIHMsIHEpO1xuICAgIHNrZXdYKGEuc2tld1gsIGIuc2tld1gsIHMsIHEpO1xuICAgIHNjYWxlKGEuc2NhbGVYLCBhLnNjYWxlWSwgYi5zY2FsZVgsIGIuc2NhbGVZLCBzLCBxKTtcbiAgICBhID0gYiA9IG51bGw7IC8vIGdjXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBpID0gLTEsIG4gPSBxLmxlbmd0aCwgbztcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZUNzcywgXCJweCwgXCIsIFwicHgpXCIsIFwiZGVnKVwiKTtcbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1TdmcgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZVN2ZywgXCIsIFwiLCBcIilcIiwgXCIpXCIpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/index.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/parse.js": /*!**********************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/parse.js ***! \**********************************************************************************/ /*! exports provided: parseCss, parseSvg */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseCss\", function() { return parseCss; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSvg\", function() { return parseSvg; });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/decompose.js\");\n\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nfunction parseCss(value) {\n if (value === \"none\") return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nfunction parseSvg(value) {\n if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"identity\"];\n value = value.matrix;\n return Object(_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanM/ZmEyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtRDs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCwrQkFBK0Isc0RBQVE7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNkRBQVM7QUFDbEI7O0FBRU87QUFDUCw0QkFBNEIsc0RBQVE7QUFDcEM7QUFDQTtBQUNBLGlFQUFpRSxzREFBUTtBQUN6RTtBQUNBLFNBQVMsNkRBQVM7QUFDbEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVjb21wb3NlLCB7aWRlbnRpdHl9IGZyb20gXCIuL2RlY29tcG9zZS5qc1wiO1xuXG52YXIgY3NzTm9kZSxcbiAgICBjc3NSb290LFxuICAgIGNzc1ZpZXcsXG4gICAgc3ZnTm9kZTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3NzKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gXCJub25lXCIpIHJldHVybiBpZGVudGl0eTtcbiAgaWYgKCFjc3NOb2RlKSBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIkRJVlwiKSwgY3NzUm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgY3NzVmlldyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICBjc3NOb2RlLnN0eWxlLnRyYW5zZm9ybSA9IHZhbHVlO1xuICB2YWx1ZSA9IGNzc1ZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShjc3NSb290LmFwcGVuZENoaWxkKGNzc05vZGUpLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKFwidHJhbnNmb3JtXCIpO1xuICBjc3NSb290LnJlbW92ZUNoaWxkKGNzc05vZGUpO1xuICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDcsIC0xKS5zcGxpdChcIixcIik7XG4gIHJldHVybiBkZWNvbXBvc2UoK3ZhbHVlWzBdLCArdmFsdWVbMV0sICt2YWx1ZVsyXSwgK3ZhbHVlWzNdLCArdmFsdWVbNF0sICt2YWx1ZVs1XSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN2Zyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGlkZW50aXR5O1xuICBpZiAoIXN2Z05vZGUpIHN2Z05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcImdcIik7XG4gIHN2Z05vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIHZhbHVlKTtcbiAgaWYgKCEodmFsdWUgPSBzdmdOb2RlLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpKSByZXR1cm4gaWRlbnRpdHk7XG4gIHZhbHVlID0gdmFsdWUubWF0cml4O1xuICByZXR1cm4gZGVjb21wb3NlKHZhbHVlLmEsIHZhbHVlLmIsIHZhbHVlLmMsIHZhbHVlLmQsIHZhbHVlLmUsIHZhbHVlLmYpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/transform/parse.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/value.js": /*!************************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/value.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"./node_modules/_d3-color@1.4.1@d3-color/src/index.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgb.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./date.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./object.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(b)\n : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n : t === \"string\" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__[\"color\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n : Object(_numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"isNumberArray\"])(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_2__[\"genericArray\"]\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n : _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy92YWx1ZS5qcz9jOGFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ0o7QUFDYTtBQUNYO0FBQ0k7QUFDQTtBQUNBO0FBQ0k7QUFDdUI7O0FBRTdDO0FBQ2Y7QUFDQSx3Q0FBd0MsNERBQVE7QUFDaEQsMEJBQTBCLGtEQUFNO0FBQ2hDLCtCQUErQixzREFBSyxlQUFlLCtDQUFHLElBQUksa0RBQU07QUFDaEUscUJBQXFCLDhDQUFLLEdBQUcsK0NBQUc7QUFDaEMsNEJBQTRCLGdEQUFJO0FBQ2hDLFFBQVEscUVBQWEsTUFBTSx1REFBVztBQUN0QywyQkFBMkIsc0RBQVk7QUFDdkMsMEZBQTBGLGtEQUFNO0FBQ2hHLFFBQVEsa0RBQU07QUFDZCxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1pbnRlcnBvbGF0ZUAxLjQuMEBkMy1pbnRlcnBvbGF0ZS9zcmMvdmFsdWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbG9yfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCByZ2IgZnJvbSBcIi4vcmdiLmpzXCI7XG5pbXBvcnQge2dlbmVyaWNBcnJheX0gZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBkYXRlIGZyb20gXCIuL2RhdGUuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5pbXBvcnQgb2JqZWN0IGZyb20gXCIuL29iamVjdC5qc1wiO1xuaW1wb3J0IHN0cmluZyBmcm9tIFwiLi9zdHJpbmcuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IG51bWJlckFycmF5LCB7aXNOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgdCA9IHR5cGVvZiBiLCBjO1xuICByZXR1cm4gYiA9PSBudWxsIHx8IHQgPT09IFwiYm9vbGVhblwiID8gY29uc3RhbnQoYilcbiAgICAgIDogKHQgPT09IFwibnVtYmVyXCIgPyBudW1iZXJcbiAgICAgIDogdCA9PT0gXCJzdHJpbmdcIiA/ICgoYyA9IGNvbG9yKGIpKSA/IChiID0gYywgcmdiKSA6IHN0cmluZylcbiAgICAgIDogYiBpbnN0YW5jZW9mIGNvbG9yID8gcmdiXG4gICAgICA6IGIgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZVxuICAgICAgOiBpc051bWJlckFycmF5KGIpID8gbnVtYmVyQXJyYXlcbiAgICAgIDogQXJyYXkuaXNBcnJheShiKSA/IGdlbmVyaWNBcnJheVxuICAgICAgOiB0eXBlb2YgYi52YWx1ZU9mICE9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGIudG9TdHJpbmcgIT09IFwiZnVuY3Rpb25cIiB8fCBpc05hTihiKSA/IG9iamVjdFxuICAgICAgOiBudW1iZXIpKGEsIGIpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/value.js\n"); /***/ }), /***/ "./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/zoom.js": /*!***********************************************************************!*\ !*** ./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/zoom.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\nvar rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLWludGVycG9sYXRlQDEuNC4wQGQzLWludGVycG9sYXRlL3NyYy96b29tLmpzPzBlNjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtaW50ZXJwb2xhdGVAMS40LjBAZDMtaW50ZXJwb2xhdGUvc3JjL3pvb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmhvID0gTWF0aC5TUVJUMixcbiAgICByaG8yID0gMixcbiAgICByaG80ID0gNCxcbiAgICBlcHNpbG9uMiA9IDFlLTEyO1xuXG5mdW5jdGlvbiBjb3NoKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSArIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHNpbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoeCkpIC0gMSAvIHgpIC8gMjtcbn1cblxuZnVuY3Rpb24gdGFuaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCgyICogeCkpIC0gMSkgLyAoeCArIDEpO1xufVxuXG4vLyBwMCA9IFt1eDAsIHV5MCwgdzBdXG4vLyBwMSA9IFt1eDEsIHV5MSwgdzFdXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwMCwgcDEpIHtcbiAgdmFyIHV4MCA9IHAwWzBdLCB1eTAgPSBwMFsxXSwgdzAgPSBwMFsyXSxcbiAgICAgIHV4MSA9IHAxWzBdLCB1eTEgPSBwMVsxXSwgdzEgPSBwMVsyXSxcbiAgICAgIGR4ID0gdXgxIC0gdXgwLFxuICAgICAgZHkgPSB1eTEgLSB1eTAsXG4gICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5LFxuICAgICAgaSxcbiAgICAgIFM7XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGZvciB1MCDiiYUgdTEuXG4gIGlmIChkMiA8IGVwc2lsb24yKSB7XG4gICAgUyA9IE1hdGgubG9nKHcxIC8gdzApIC8gcmhvO1xuICAgIGkgPSBmdW5jdGlvbih0KSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB1eDAgKyB0ICogZHgsXG4gICAgICAgIHV5MCArIHQgKiBkeSxcbiAgICAgICAgdzAgKiBNYXRoLmV4cChyaG8gKiB0ICogUylcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhbCBjYXNlLlxuICBlbHNlIHtcbiAgICB2YXIgZDEgPSBNYXRoLnNxcnQoZDIpLFxuICAgICAgICBiMCA9ICh3MSAqIHcxIC0gdzAgKiB3MCArIHJobzQgKiBkMikgLyAoMiAqIHcwICogcmhvMiAqIGQxKSxcbiAgICAgICAgYjEgPSAodzEgKiB3MSAtIHcwICogdzAgLSByaG80ICogZDIpIC8gKDIgKiB3MSAqIHJobzIgKiBkMSksXG4gICAgICAgIHIwID0gTWF0aC5sb2coTWF0aC5zcXJ0KGIwICogYjAgKyAxKSAtIGIwKSxcbiAgICAgICAgcjEgPSBNYXRoLmxvZyhNYXRoLnNxcnQoYjEgKiBiMSArIDEpIC0gYjEpO1xuICAgIFMgPSAocjEgLSByMCkgLyByaG87XG4gICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBzID0gdCAqIFMsXG4gICAgICAgICAgY29zaHIwID0gY29zaChyMCksXG4gICAgICAgICAgdSA9IHcwIC8gKHJobzIgKiBkMSkgKiAoY29zaHIwICogdGFuaChyaG8gKiBzICsgcjApIC0gc2luaChyMCkpO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdXgwICsgdSAqIGR4LFxuICAgICAgICB1eTAgKyB1ICogZHksXG4gICAgICAgIHcwICogY29zaHIwIC8gY29zaChyaG8gKiBzICsgcjApXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGkuZHVyYXRpb24gPSBTICogMTAwMDtcblxuICByZXR1cm4gaTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/zoom.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/add.js": /*!****************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/add.js ***! \****************************************************************/ /*! exports provided: default, addAll */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addAll\", function() { return addAll; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n});\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nfunction addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9hZGQuanM/OTBmYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsb0RBQW9EO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbURBQW1EO0FBQ25ELG9EQUFvRDtBQUNwRCxHQUFHO0FBQ0g7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9hZGQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkKSB7XG4gIGNvbnN0IHggPSArdGhpcy5feC5jYWxsKG51bGwsIGQpLFxuICAgICAgeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCk7XG4gIHJldHVybiBhZGQodGhpcy5jb3Zlcih4LCB5KSwgeCwgeSwgZCk7XG59XG5cbmZ1bmN0aW9uIGFkZCh0cmVlLCB4LCB5LCBkKSB7XG4gIGlmIChpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIHRyZWU7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciBwYXJlbnQsXG4gICAgICBub2RlID0gdHJlZS5fcm9vdCxcbiAgICAgIGxlYWYgPSB7ZGF0YTogZH0sXG4gICAgICB4MCA9IHRyZWUuX3gwLFxuICAgICAgeTAgPSB0cmVlLl95MCxcbiAgICAgIHgxID0gdHJlZS5feDEsXG4gICAgICB5MSA9IHRyZWUuX3kxLFxuICAgICAgeG0sXG4gICAgICB5bSxcbiAgICAgIHhwLFxuICAgICAgeXAsXG4gICAgICByaWdodCxcbiAgICAgIGJvdHRvbSxcbiAgICAgIGksXG4gICAgICBqO1xuXG4gIC8vIElmIHRoZSB0cmVlIGlzIGVtcHR5LCBpbml0aWFsaXplIHRoZSByb290IGFzIGEgbGVhZi5cbiAgaWYgKCFub2RlKSByZXR1cm4gdHJlZS5fcm9vdCA9IGxlYWYsIHRyZWU7XG5cbiAgLy8gRmluZCB0aGUgZXhpc3RpbmcgbGVhZiBmb3IgdGhlIG5ldyBwb2ludCwgb3IgYWRkIGl0LlxuICB3aGlsZSAobm9kZS5sZW5ndGgpIHtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgICBpZiAocGFyZW50ID0gbm9kZSwgIShub2RlID0gbm9kZVtpID0gYm90dG9tIDw8IDEgfCByaWdodF0pKSByZXR1cm4gcGFyZW50W2ldID0gbGVhZiwgdHJlZTtcbiAgfVxuXG4gIC8vIElzIHRoZSBuZXcgcG9pbnQgaXMgZXhhY3RseSBjb2luY2lkZW50IHdpdGggdGhlIGV4aXN0aW5nIHBvaW50P1xuICB4cCA9ICt0cmVlLl94LmNhbGwobnVsbCwgbm9kZS5kYXRhKTtcbiAgeXAgPSArdHJlZS5feS5jYWxsKG51bGwsIG5vZGUuZGF0YSk7XG4gIGlmICh4ID09PSB4cCAmJiB5ID09PSB5cCkgcmV0dXJuIGxlYWYubmV4dCA9IG5vZGUsIHBhcmVudCA/IHBhcmVudFtpXSA9IGxlYWYgOiB0cmVlLl9yb290ID0gbGVhZiwgdHJlZTtcblxuICAvLyBPdGhlcndpc2UsIHNwbGl0IHRoZSBsZWFmIG5vZGUgdW50aWwgdGhlIG9sZCBhbmQgbmV3IHBvaW50IGFyZSBzZXBhcmF0ZWQuXG4gIGRvIHtcbiAgICBwYXJlbnQgPSBwYXJlbnQgPyBwYXJlbnRbaV0gPSBuZXcgQXJyYXkoNCkgOiB0cmVlLl9yb290ID0gbmV3IEFycmF5KDQpO1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICB9IHdoaWxlICgoaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHQpID09PSAoaiA9ICh5cCA+PSB5bSkgPDwgMSB8ICh4cCA+PSB4bSkpKTtcbiAgcmV0dXJuIHBhcmVudFtqXSA9IG5vZGUsIHBhcmVudFtpXSA9IGxlYWYsIHRyZWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBbGwoZGF0YSkge1xuICB2YXIgZCwgaSwgbiA9IGRhdGEubGVuZ3RoLFxuICAgICAgeCxcbiAgICAgIHksXG4gICAgICB4eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHl6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgeDAgPSBJbmZpbml0eSxcbiAgICAgIHkwID0gSW5maW5pdHksXG4gICAgICB4MSA9IC1JbmZpbml0eSxcbiAgICAgIHkxID0gLUluZmluaXR5O1xuXG4gIC8vIENvbXB1dGUgdGhlIHBvaW50cyBhbmQgdGhlaXIgZXh0ZW50LlxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKGlzTmFOKHggPSArdGhpcy5feC5jYWxsKG51bGwsIGQgPSBkYXRhW2ldKSkgfHwgaXNOYU4oeSA9ICt0aGlzLl95LmNhbGwobnVsbCwgZCkpKSBjb250aW51ZTtcbiAgICB4eltpXSA9IHg7XG4gICAgeXpbaV0gPSB5O1xuICAgIGlmICh4IDwgeDApIHgwID0geDtcbiAgICBpZiAoeCA+IHgxKSB4MSA9IHg7XG4gICAgaWYgKHkgPCB5MCkgeTAgPSB5O1xuICAgIGlmICh5ID4geTEpIHkxID0geTtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIHdlcmUgbm8gKHZhbGlkKSBwb2ludHMsIGFib3J0LlxuICBpZiAoeDAgPiB4MSB8fCB5MCA+IHkxKSByZXR1cm4gdGhpcztcblxuICAvLyBFeHBhbmQgdGhlIHRyZWUgdG8gY292ZXIgdGhlIG5ldyBwb2ludHMuXG4gIHRoaXMuY292ZXIoeDAsIHkwKS5jb3Zlcih4MSwgeTEpO1xuXG4gIC8vIEFkZCB0aGUgbmV3IHBvaW50cy5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGFkZCh0aGlzLCB4eltpXSwgeXpbaV0sIGRhdGFbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/add.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/cover.js": /*!******************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/cover.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcz9lZmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZixrREFBa0Q7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6Qyx5Q0FBeUM7QUFDekMseUNBQXlDO0FBQ3pDLHlDQUF5QztBQUN6QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHkpIHtcbiAgaWYgKGlzTmFOKHggPSAreCkgfHwgaXNOYU4oeSA9ICt5KSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxID0gdGhpcy5feDEsXG4gICAgICB5MSA9IHRoaXMuX3kxO1xuXG4gIC8vIElmIHRoZSBxdWFkdHJlZSBoYXMgbm8gZXh0ZW50LCBpbml0aWFsaXplIHRoZW0uXG4gIC8vIEludGVnZXIgZXh0ZW50IGFyZSBuZWNlc3Nhcnkgc28gdGhhdCBpZiB3ZSBsYXRlciBkb3VibGUgdGhlIGV4dGVudCxcbiAgLy8gdGhlIGV4aXN0aW5nIHF1YWRyYW50IGJvdW5kYXJpZXMgZG9u4oCZdCBjaGFuZ2UgZHVlIHRvIGZsb2F0aW5nIHBvaW50IGVycm9yIVxuICBpZiAoaXNOYU4oeDApKSB7XG4gICAgeDEgPSAoeDAgPSBNYXRoLmZsb29yKHgpKSArIDE7XG4gICAgeTEgPSAoeTAgPSBNYXRoLmZsb29yKHkpKSArIDE7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIGRvdWJsZSByZXBlYXRlZGx5IHRvIGNvdmVyLlxuICBlbHNlIHtcbiAgICB2YXIgeiA9IHgxIC0geDAgfHwgMSxcbiAgICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgaTtcblxuICAgIHdoaWxlICh4MCA+IHggfHwgeCA+PSB4MSB8fCB5MCA+IHkgfHwgeSA+PSB5MSkge1xuICAgICAgaSA9ICh5IDwgeTApIDw8IDEgfCAoeCA8IHgwKTtcbiAgICAgIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudCwgeiAqPSAyO1xuICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgIGNhc2UgMDogeDEgPSB4MCArIHosIHkxID0geTAgKyB6OyBicmVhaztcbiAgICAgICAgY2FzZSAxOiB4MCA9IHgxIC0geiwgeTEgPSB5MCArIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDI6IHgxID0geDAgKyB6LCB5MCA9IHkxIC0gejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogeDAgPSB4MSAtIHosIHkwID0geTEgLSB6OyBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcm9vdCAmJiB0aGlzLl9yb290Lmxlbmd0aCkgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICB0aGlzLl94MCA9IHgwO1xuICB0aGlzLl95MCA9IHkwO1xuICB0aGlzLl94MSA9IHgxO1xuICB0aGlzLl95MSA9IHkxO1xuICByZXR1cm4gdGhpcztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/cover.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/data.js": /*!*****************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/data.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9kYXRhLmpzP2I3NTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL2RhdGEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGRhdGEgPSBbXTtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gZGF0YS5wdXNoKG5vZGUuZGF0YSk7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/data.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/extent.js": /*!*******************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/extent.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9leHRlbnQuanM/Yzg2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL2V4dGVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5jb3ZlcigrX1swXVswXSwgK19bMF1bMV0pLmNvdmVyKCtfWzFdWzBdLCArX1sxXVsxXSlcbiAgICAgIDogaXNOYU4odGhpcy5feDApID8gdW5kZWZpbmVkIDogW1t0aGlzLl94MCwgdGhpcy5feTBdLCBbdGhpcy5feDEsIHRoaXMuX3kxXV07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/extent.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/find.js": /*!*****************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/find.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[3], xm, ym, x2, y2),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[2], x1, ym, xm, y2),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[1], xm, y1, x2, ym),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9maW5kLmpzPzFmMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE2Qjs7QUFFZDtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixnREFBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxnREFBSTtBQUNoQixZQUFZLGdEQUFJO0FBQ2hCLFlBQVksZ0RBQUk7QUFDaEIsWUFBWSxnREFBSTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9maW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgdmFyIGRhdGEsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxLFxuICAgICAgeTEsXG4gICAgICB4MixcbiAgICAgIHkyLFxuICAgICAgeDMgPSB0aGlzLl94MSxcbiAgICAgIHkzID0gdGhpcy5feTEsXG4gICAgICBxdWFkcyA9IFtdLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBxLFxuICAgICAgaTtcblxuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB4MCwgeTAsIHgzLCB5MykpO1xuICBpZiAocmFkaXVzID09IG51bGwpIHJhZGl1cyA9IEluZmluaXR5O1xuICBlbHNlIHtcbiAgICB4MCA9IHggLSByYWRpdXMsIHkwID0geSAtIHJhZGl1cztcbiAgICB4MyA9IHggKyByYWRpdXMsIHkzID0geSArIHJhZGl1cztcbiAgICByYWRpdXMgKj0gcmFkaXVzO1xuICB9XG5cbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuXG4gICAgLy8gU3RvcCBzZWFyY2hpbmcgaWYgdGhpcyBxdWFkcmFudCBjYW7igJl0IGNvbnRhaW4gYSBjbG9zZXIgbm9kZS5cbiAgICBpZiAoIShub2RlID0gcS5ub2RlKVxuICAgICAgICB8fCAoeDEgPSBxLngwKSA+IHgzXG4gICAgICAgIHx8ICh5MSA9IHEueTApID4geTNcbiAgICAgICAgfHwgKHgyID0gcS54MSkgPCB4MFxuICAgICAgICB8fCAoeTIgPSBxLnkxKSA8IHkwKSBjb250aW51ZTtcblxuICAgIC8vIEJpc2VjdCB0aGUgY3VycmVudCBxdWFkcmFudC5cbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MSArIHgyKSAvIDIsXG4gICAgICAgICAgeW0gPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgICBxdWFkcy5wdXNoKFxuICAgICAgICBuZXcgUXVhZChub2RlWzNdLCB4bSwgeW0sIHgyLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMl0sIHgxLCB5bSwgeG0sIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsxXSwgeG0sIHkxLCB4MiwgeW0pLFxuICAgICAgICBuZXcgUXVhZChub2RlWzBdLCB4MSwgeTEsIHhtLCB5bSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFZpc2l0IHRoZSBjbG9zZXN0IHF1YWRyYW50IGZpcnN0LlxuICAgICAgaWYgKGkgPSAoeSA+PSB5bSkgPDwgMSB8ICh4ID49IHhtKSkge1xuICAgICAgICBxID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV0gPSBxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZpc2l0IHRoaXMgcG9pbnQuIChWaXNpdGluZyBjb2luY2lkZW50IHBvaW50cyBpc27igJl0IG5lY2Vzc2FyeSEpXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZHggPSB4IC0gK3RoaXMuX3guY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGR5ID0geSAtICt0aGlzLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgaWYgKGQyIDwgcmFkaXVzKSB7XG4gICAgICAgIHZhciBkID0gTWF0aC5zcXJ0KHJhZGl1cyA9IGQyKTtcbiAgICAgICAgeDAgPSB4IC0gZCwgeTAgPSB5IC0gZDtcbiAgICAgICAgeDMgPSB4ICsgZCwgeTMgPSB5ICsgZDtcbiAgICAgICAgZGF0YSA9IG5vZGUuZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/find.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/index.js": /*!******************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/index.js ***! \******************************************************************/ /*! exports provided: quadtree */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quadtree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadtree.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quadtree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quadtree\", function() { return _quadtree_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9pbmRleC5qcz9mZjRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1xdWFkdHJlZUAyLjAuMEBkMy1xdWFkdHJlZS9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgcXVhZHRyZWV9IGZyb20gXCIuL3F1YWR0cmVlLmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quad.js": /*!*****************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quad.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9xdWFkLmpzPzI4YWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1xdWFkdHJlZUAyLjAuMEBkMy1xdWFkdHJlZS9zcmMvcXVhZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHRoaXMubm9kZSA9IG5vZGU7XG4gIHRoaXMueDAgPSB4MDtcbiAgdGhpcy55MCA9IHkwO1xuICB0aGlzLngxID0geDE7XG4gIHRoaXMueTEgPSB5MTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quad.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quadtree.js": /*!*********************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quadtree.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quadtree; });\n/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/add.js\");\n/* harmony import */ var _cover_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cover.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/cover.js\");\n/* harmony import */ var _data_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/data.js\");\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extent.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/extent.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./find.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/find.js\");\n/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./remove.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/remove.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./root.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/root.js\");\n/* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./size.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/size.js\");\n/* harmony import */ var _visit_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./visit.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visit.js\");\n/* harmony import */ var _visitAfter_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./visitAfter.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visitAfter.js\");\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./x.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/x.js\");\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./y.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/y.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? _x_js__WEBPACK_IMPORTED_MODULE_10__[\"defaultX\"] : x, y == null ? _y_js__WEBPACK_IMPORTED_MODULE_11__[\"defaultY\"] : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = _add_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\ntreeProto.addAll = _add_js__WEBPACK_IMPORTED_MODULE_0__[\"addAll\"];\ntreeProto.cover = _cover_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\ntreeProto.data = _data_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\ntreeProto.extent = _extent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\ntreeProto.find = _find_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\ntreeProto.remove = _remove_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\ntreeProto.removeAll = _remove_js__WEBPACK_IMPORTED_MODULE_5__[\"removeAll\"];\ntreeProto.root = _root_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\ntreeProto.size = _size_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\ntreeProto.visit = _visit_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"];\ntreeProto.visitAfter = _visitAfter_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\ntreeProto.x = _x_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\ntreeProto.y = _y_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9xdWFkdHJlZS5qcz84YjZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUQ7QUFDckI7QUFDRjtBQUNJO0FBQ0o7QUFDbUM7QUFDbkM7QUFDQTtBQUNFO0FBQ1U7QUFDTjtBQUNBOztBQUV6QjtBQUNmLHNDQUFzQywrQ0FBUSxrQkFBa0IsK0NBQVE7QUFDeEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLGdCQUFnQjtBQUM5QiwrQ0FBK0M7QUFDL0M7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLFlBQVksZ0RBQWdEO0FBQzVEO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQSxzQ0FBc0MscURBQXFEO0FBQzNGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZ0JBQWdCLCtDQUFRO0FBQ3hCLG1CQUFtQiw4Q0FBVztBQUM5QixrQkFBa0IsaURBQVU7QUFDNUIsaUJBQWlCLGdEQUFTO0FBQzFCLG1CQUFtQixrREFBVztBQUM5QixpQkFBaUIsZ0RBQVM7QUFDMUIsbUJBQW1CLGtEQUFXO0FBQzlCLHNCQUFzQixvREFBYztBQUNwQyxpQkFBaUIsZ0RBQVM7QUFDMUIsaUJBQWlCLGdEQUFTO0FBQzFCLGtCQUFrQixpREFBVTtBQUM1Qix1QkFBdUIsc0RBQWU7QUFDdEMsY0FBYyw4Q0FBTTtBQUNwQixjQUFjLDhDQUFNIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1xdWFkdHJlZUAyLjAuMEBkMy1xdWFkdHJlZS9zcmMvcXVhZHRyZWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHJlZV9hZGQsIHthZGRBbGwgYXMgdHJlZV9hZGRBbGx9IGZyb20gXCIuL2FkZC5qc1wiO1xuaW1wb3J0IHRyZWVfY292ZXIgZnJvbSBcIi4vY292ZXIuanNcIjtcbmltcG9ydCB0cmVlX2RhdGEgZnJvbSBcIi4vZGF0YS5qc1wiO1xuaW1wb3J0IHRyZWVfZXh0ZW50IGZyb20gXCIuL2V4dGVudC5qc1wiO1xuaW1wb3J0IHRyZWVfZmluZCBmcm9tIFwiLi9maW5kLmpzXCI7XG5pbXBvcnQgdHJlZV9yZW1vdmUsIHtyZW1vdmVBbGwgYXMgdHJlZV9yZW1vdmVBbGx9IGZyb20gXCIuL3JlbW92ZS5qc1wiO1xuaW1wb3J0IHRyZWVfcm9vdCBmcm9tIFwiLi9yb290LmpzXCI7XG5pbXBvcnQgdHJlZV9zaXplIGZyb20gXCIuL3NpemUuanNcIjtcbmltcG9ydCB0cmVlX3Zpc2l0IGZyb20gXCIuL3Zpc2l0LmpzXCI7XG5pbXBvcnQgdHJlZV92aXNpdEFmdGVyIGZyb20gXCIuL3Zpc2l0QWZ0ZXIuanNcIjtcbmltcG9ydCB0cmVlX3gsIHtkZWZhdWx0WH0gZnJvbSBcIi4veC5qc1wiO1xuaW1wb3J0IHRyZWVfeSwge2RlZmF1bHRZfSBmcm9tIFwiLi95LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1YWR0cmVlKG5vZGVzLCB4LCB5KSB7XG4gIHZhciB0cmVlID0gbmV3IFF1YWR0cmVlKHggPT0gbnVsbCA/IGRlZmF1bHRYIDogeCwgeSA9PSBudWxsID8gZGVmYXVsdFkgOiB5LCBOYU4sIE5hTiwgTmFOLCBOYU4pO1xuICByZXR1cm4gbm9kZXMgPT0gbnVsbCA/IHRyZWUgOiB0cmVlLmFkZEFsbChub2Rlcyk7XG59XG5cbmZ1bmN0aW9uIFF1YWR0cmVlKHgsIHksIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHRoaXMuX3ggPSB4O1xuICB0aGlzLl95ID0geTtcbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgdGhpcy5fcm9vdCA9IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbGVhZl9jb3B5KGxlYWYpIHtcbiAgdmFyIGNvcHkgPSB7ZGF0YTogbGVhZi5kYXRhfSwgbmV4dCA9IGNvcHk7XG4gIHdoaWxlIChsZWFmID0gbGVhZi5uZXh0KSBuZXh0ID0gbmV4dC5uZXh0ID0ge2RhdGE6IGxlYWYuZGF0YX07XG4gIHJldHVybiBjb3B5O1xufVxuXG52YXIgdHJlZVByb3RvID0gcXVhZHRyZWUucHJvdG90eXBlID0gUXVhZHRyZWUucHJvdG90eXBlO1xuXG50cmVlUHJvdG8uY29weSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY29weSA9IG5ldyBRdWFkdHJlZSh0aGlzLl94LCB0aGlzLl95LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSksXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIG5vZGVzLFxuICAgICAgY2hpbGQ7XG5cbiAgaWYgKCFub2RlKSByZXR1cm4gY29weTtcblxuICBpZiAoIW5vZGUubGVuZ3RoKSByZXR1cm4gY29weS5fcm9vdCA9IGxlYWZfY29weShub2RlKSwgY29weTtcblxuICBub2RlcyA9IFt7c291cmNlOiBub2RlLCB0YXJnZXQ6IGNvcHkuX3Jvb3QgPSBuZXcgQXJyYXkoNCl9XTtcbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlLnNvdXJjZVtpXSkge1xuICAgICAgICBpZiAoY2hpbGQubGVuZ3RoKSBub2Rlcy5wdXNoKHtzb3VyY2U6IGNoaWxkLCB0YXJnZXQ6IG5vZGUudGFyZ2V0W2ldID0gbmV3IEFycmF5KDQpfSk7XG4gICAgICAgIGVsc2Ugbm9kZS50YXJnZXRbaV0gPSBsZWFmX2NvcHkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb3B5O1xufTtcblxudHJlZVByb3RvLmFkZCA9IHRyZWVfYWRkO1xudHJlZVByb3RvLmFkZEFsbCA9IHRyZWVfYWRkQWxsO1xudHJlZVByb3RvLmNvdmVyID0gdHJlZV9jb3ZlcjtcbnRyZWVQcm90by5kYXRhID0gdHJlZV9kYXRhO1xudHJlZVByb3RvLmV4dGVudCA9IHRyZWVfZXh0ZW50O1xudHJlZVByb3RvLmZpbmQgPSB0cmVlX2ZpbmQ7XG50cmVlUHJvdG8ucmVtb3ZlID0gdHJlZV9yZW1vdmU7XG50cmVlUHJvdG8ucmVtb3ZlQWxsID0gdHJlZV9yZW1vdmVBbGw7XG50cmVlUHJvdG8ucm9vdCA9IHRyZWVfcm9vdDtcbnRyZWVQcm90by5zaXplID0gdHJlZV9zaXplO1xudHJlZVByb3RvLnZpc2l0ID0gdHJlZV92aXNpdDtcbnRyZWVQcm90by52aXNpdEFmdGVyID0gdHJlZV92aXNpdEFmdGVyO1xudHJlZVByb3RvLnggPSB0cmVlX3g7XG50cmVlUHJvdG8ueSA9IHRyZWVfeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quadtree.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/remove.js": /*!*******************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/remove.js ***! \*******************************************************************/ /*! exports provided: default, removeAll */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeAll\", function() { return removeAll; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n});\n\nfunction removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9yZW1vdmUuanM/MmQ1MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZiwwRkFBMEY7O0FBRTFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQsb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRU07QUFDUCxrQ0FBa0MsT0FBTztBQUN6QztBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy1xdWFkdHJlZUAyLjAuMEBkMy1xdWFkdHJlZS9zcmMvcmVtb3ZlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciBwYXJlbnQsXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHJldGFpbmVyLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBuZXh0LFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeG0sXG4gICAgICB5bSxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0aGlzO1xuXG4gIC8vIEZpbmQgdGhlIGxlYWYgbm9kZSBmb3IgdGhlIHBvaW50LlxuICAvLyBXaGlsZSBkZXNjZW5kaW5nLCBhbHNvIHJldGFpbiB0aGUgZGVlcGVzdCBwYXJlbnQgd2l0aCBhIG5vbi1yZW1vdmVkIHNpYmxpbmcuXG4gIGlmIChub2RlLmxlbmd0aCkgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgICBpZiAoIShwYXJlbnQgPSBub2RlLCBub2RlID0gbm9kZVtpID0gYm90dG9tIDw8IDEgfCByaWdodF0pKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBicmVhaztcbiAgICBpZiAocGFyZW50WyhpICsgMSkgJiAzXSB8fCBwYXJlbnRbKGkgKyAyKSAmIDNdIHx8IHBhcmVudFsoaSArIDMpICYgM10pIHJldGFpbmVyID0gcGFyZW50LCBqID0gaTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIHBvaW50IHRvIHJlbW92ZS5cbiAgd2hpbGUgKG5vZGUuZGF0YSAhPT0gZCkgaWYgKCEocHJldmlvdXMgPSBub2RlLCBub2RlID0gbm9kZS5uZXh0KSkgcmV0dXJuIHRoaXM7XG4gIGlmIChuZXh0ID0gbm9kZS5uZXh0KSBkZWxldGUgbm9kZS5uZXh0O1xuXG4gIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb2luY2lkZW50IHBvaW50cywgcmVtb3ZlIGp1c3QgdGhlIHBvaW50LlxuICBpZiAocHJldmlvdXMpIHJldHVybiAobmV4dCA/IHByZXZpb3VzLm5leHQgPSBuZXh0IDogZGVsZXRlIHByZXZpb3VzLm5leHQpLCB0aGlzO1xuXG4gIC8vIElmIHRoaXMgaXMgdGhlIHJvb3QgcG9pbnQsIHJlbW92ZSBpdC5cbiAgaWYgKCFwYXJlbnQpIHJldHVybiB0aGlzLl9yb290ID0gbmV4dCwgdGhpcztcblxuICAvLyBSZW1vdmUgdGhpcyBsZWFmLlxuICBuZXh0ID8gcGFyZW50W2ldID0gbmV4dCA6IGRlbGV0ZSBwYXJlbnRbaV07XG5cbiAgLy8gSWYgdGhlIHBhcmVudCBub3cgY29udGFpbnMgZXhhY3RseSBvbmUgbGVhZiwgY29sbGFwc2Ugc3VwZXJmbHVvdXMgcGFyZW50cy5cbiAgaWYgKChub2RlID0gcGFyZW50WzBdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzNdKVxuICAgICAgJiYgbm9kZSA9PT0gKHBhcmVudFszXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFswXSlcbiAgICAgICYmICFub2RlLmxlbmd0aCkge1xuICAgIGlmIChyZXRhaW5lcikgcmV0YWluZXJbal0gPSBub2RlO1xuICAgIGVsc2UgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFsbChkYXRhKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YS5sZW5ndGg7IGkgPCBuOyArK2kpIHRoaXMucmVtb3ZlKGRhdGFbaV0pO1xuICByZXR1cm4gdGhpcztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/remove.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/root.js": /*!*****************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/root.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return this._root;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9yb290LmpzPzc3ZDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL3Jvb3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX3Jvb3Q7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/root.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/size.js": /*!*****************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/size.js ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy9zaXplLmpzP2YyZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL3NpemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNpemUgPSAwO1xuICB0aGlzLnZpc2l0KGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBkbyArK3NpemU7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIHNpemU7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/size.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visit.js": /*!******************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visit.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, y0, xm, ym));\n }\n }\n return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy92aXNpdC5qcz8zOGQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBNkI7O0FBRWQ7QUFDZjtBQUNBLDJCQUEyQixnREFBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsZ0RBQUk7QUFDOUMsMENBQTBDLGdEQUFJO0FBQzlDLDBDQUEwQyxnREFBSTtBQUM5QywwQ0FBMEMsZ0RBQUk7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL3Zpc2l0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgcXVhZHMgPSBbXSwgcSwgbm9kZSA9IHRoaXMuX3Jvb3QsIGNoaWxkLCB4MCwgeTAsIHgxLCB5MTtcbiAgaWYgKG5vZGUpIHF1YWRzLnB1c2gobmV3IFF1YWQobm9kZSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpKTtcbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuICAgIGlmICghY2FsbGJhY2sobm9kZSA9IHEubm9kZSwgeDAgPSBxLngwLCB5MCA9IHEueTAsIHgxID0gcS54MSwgeTEgPSBxLnkxKSAmJiBub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIHhtID0gKHgwICsgeDEpIC8gMiwgeW0gPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVszXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHltLCB4MSwgeTEpKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMl0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5bSwgeG0sIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzFdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeTAsIHgxLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVswXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHkwLCB4bSwgeW0pKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visit.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visitAfter.js": /*!***********************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visitAfter.js ***! \***********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy92aXNpdEFmdGVyLmpzPzgzZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE2Qjs7QUFFZDtBQUNmO0FBQ0EsaUNBQWlDLGdEQUFJO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLGdEQUFJO0FBQzlDLDBDQUEwQyxnREFBSTtBQUM5QywwQ0FBMEMsZ0RBQUk7QUFDOUMsMENBQTBDLGdEQUFJO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL3Zpc2l0QWZ0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVhZCBmcm9tIFwiLi9xdWFkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBxdWFkcyA9IFtdLCBuZXh0ID0gW10sIHE7XG4gIGlmICh0aGlzLl9yb290KSBxdWFkcy5wdXNoKG5ldyBRdWFkKHRoaXMuX3Jvb3QsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICB2YXIgbm9kZSA9IHEubm9kZTtcbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCwgeDAgPSBxLngwLCB5MCA9IHEueTAsIHgxID0gcS54MSwgeTEgPSBxLnkxLCB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzFdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeTAsIHgxLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsyXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHltLCB4bSwgeTEpKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgfVxuICAgIG5leHQucHVzaChxKTtcbiAgfVxuICB3aGlsZSAocSA9IG5leHQucG9wKCkpIHtcbiAgICBjYWxsYmFjayhxLm5vZGUsIHEueDAsIHEueTAsIHEueDEsIHEueTEpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/visitAfter.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/x.js": /*!**************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/x.js ***! \**************************************************************/ /*! exports provided: defaultX, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultX\", function() { return defaultX; });\nfunction defaultX(d) {\n return d[0];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy94LmpzP2FhMTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTs7QUFFZTtBQUNmO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL3guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFgoZCkge1xuICByZXR1cm4gZFswXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl94ID0gXywgdGhpcykgOiB0aGlzLl94O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/x.js\n"); /***/ }), /***/ "./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/y.js": /*!**************************************************************!*\ !*** ./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/y.js ***! \**************************************************************/ /*! exports provided: defaultY, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultY\", function() { return defaultY; });\nfunction defaultY(d) {\n return d[1];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXF1YWR0cmVlQDIuMC4wQGQzLXF1YWR0cmVlL3NyYy95LmpzPzE0MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTs7QUFFZTtBQUNmO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtcXVhZHRyZWVAMi4wLjBAZDMtcXVhZHRyZWUvc3JjL3kuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFkoZCkge1xuICByZXR1cm4gZFsxXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95ID0gXywgdGhpcykgOiB0aGlzLl95O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-quadtree@2.0.0@d3-quadtree/src/y.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@1.0.10@d3-timer/src/index.js": /*!*************************************************************!*\ !*** ./node_modules/_d3-timer@1.0.10@d3-timer/src/index.js ***! \*************************************************************/ /*! exports provided: now, timer, timerFlush, timeout, interval */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/timer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timerFlush\"]; });\n\n/* harmony import */ var _timeout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeout.js */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/timeout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeout\", function() { return _timeout_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDEuMC4xMEBkMy10aW1lci9zcmMvaW5kZXguanM/ZjNlNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSW9COztBQUlFOztBQUlDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy10aW1lckAxLjAuMTBAZDMtdGltZXIvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgbm93LFxuICB0aW1lcixcbiAgdGltZXJGbHVzaFxufSBmcm9tIFwiLi90aW1lci5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHRpbWVvdXRcbn0gZnJvbSBcIi4vdGltZW91dC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGludGVydmFsXG59IGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@1.0.10@d3-timer/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@1.0.10@d3-timer/src/interval.js": /*!****************************************************************!*\ !*** ./node_modules/_d3-timer@1.0.10@d3-timer/src/interval.js ***! \****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"], total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? Object(_timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"])() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDEuMC4xMEBkMy10aW1lci9zcmMvaW50ZXJ2YWwuanM/ZGJjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXNDOztBQUV2QjtBQUNmLGNBQWMsK0NBQUs7QUFDbkI7QUFDQSx3Q0FBd0MscURBQUc7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy10aW1lckAxLjAuMTBAZDMtdGltZXIvc3JjL2ludGVydmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUaW1lciwgbm93fSBmcm9tIFwiLi90aW1lci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXIsIHRvdGFsID0gZGVsYXk7XG4gIGlmIChkZWxheSA9PSBudWxsKSByZXR1cm4gdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSksIHQ7XG4gIGRlbGF5ID0gK2RlbGF5LCB0aW1lID0gdGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZTtcbiAgdC5yZXN0YXJ0KGZ1bmN0aW9uIHRpY2soZWxhcHNlZCkge1xuICAgIGVsYXBzZWQgKz0gdG90YWw7XG4gICAgdC5yZXN0YXJ0KHRpY2ssIHRvdGFsICs9IGRlbGF5LCB0aW1lKTtcbiAgICBjYWxsYmFjayhlbGFwc2VkKTtcbiAgfSwgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@1.0.10@d3-timer/src/interval.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@1.0.10@d3-timer/src/timeout.js": /*!***************************************************************!*\ !*** ./node_modules/_d3-timer@1.0.10@d3-timer/src/timeout.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"];\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDEuMC4xMEBkMy10aW1lci9zcmMvdGltZW91dC5qcz80MGQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBaUM7O0FBRWxCO0FBQ2YsY0FBYywrQ0FBSztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDEuMC4xMEBkMy10aW1lci9zcmMvdGltZW91dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGltZXJ9IGZyb20gXCIuL3RpbWVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lcjtcbiAgZGVsYXkgPSBkZWxheSA9PSBudWxsID8gMCA6ICtkZWxheTtcbiAgdC5yZXN0YXJ0KGZ1bmN0aW9uKGVsYXBzZWQpIHtcbiAgICB0LnN0b3AoKTtcbiAgICBjYWxsYmFjayhlbGFwc2VkICsgZGVsYXkpO1xuICB9LCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@1.0.10@d3-timer/src/timeout.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@1.0.10@d3-timer/src/timer.js": /*!*************************************************************!*\ !*** ./node_modules/_d3-timer@1.0.10@d3-timer/src/timer.js ***! \*************************************************************/ /*! exports provided: now, Timer, timer, timerFlush */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return now; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Timer\", function() { return Timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return timerFlush; });\nvar frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDEuMC4xMEBkMy10aW1lci9zcmMvdGltZXIuanM/NzQwMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxSUFBcUksbUJBQW1COztBQUVqSjtBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsUUFBUTtBQUNSLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtdGltZXJAMS4wLjEwQGQzLXRpbWVyL3NyYy90aW1lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBmcmFtZSA9IDAsIC8vIGlzIGFuIGFuaW1hdGlvbiBmcmFtZSBwZW5kaW5nP1xuICAgIHRpbWVvdXQgPSAwLCAvLyBpcyBhIHRpbWVvdXQgcGVuZGluZz9cbiAgICBpbnRlcnZhbCA9IDAsIC8vIGFyZSBhbnkgdGltZXJzIGFjdGl2ZT9cbiAgICBwb2tlRGVsYXkgPSAxMDAwLCAvLyBob3cgZnJlcXVlbnRseSB3ZSBjaGVjayBmb3IgY2xvY2sgc2tld1xuICAgIHRhc2tIZWFkLFxuICAgIHRhc2tUYWlsLFxuICAgIGNsb2NrTGFzdCA9IDAsXG4gICAgY2xvY2tOb3cgPSAwLFxuICAgIGNsb2NrU2tldyA9IDAsXG4gICAgY2xvY2sgPSB0eXBlb2YgcGVyZm9ybWFuY2UgPT09IFwib2JqZWN0XCIgJiYgcGVyZm9ybWFuY2Uubm93ID8gcGVyZm9ybWFuY2UgOiBEYXRlLFxuICAgIHNldEZyYW1lID0gdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiAmJiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdykgOiBmdW5jdGlvbihmKSB7IHNldFRpbWVvdXQoZiwgMTcpOyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbm93KCkge1xuICByZXR1cm4gY2xvY2tOb3cgfHwgKHNldEZyYW1lKGNsZWFyTm93KSwgY2xvY2tOb3cgPSBjbG9jay5ub3coKSArIGNsb2NrU2tldyk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyTm93KCkge1xuICBjbG9ja05vdyA9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lcigpIHtcbiAgdGhpcy5fY2FsbCA9XG4gIHRoaXMuX3RpbWUgPVxuICB0aGlzLl9uZXh0ID0gbnVsbDtcbn1cblxuVGltZXIucHJvdG90eXBlID0gdGltZXIucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVGltZXIsXG4gIHJlc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIHRpbWUgPSAodGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZSkgKyAoZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXkpO1xuICAgIGlmICghdGhpcy5fbmV4dCAmJiB0YXNrVGFpbCAhPT0gdGhpcykge1xuICAgICAgaWYgKHRhc2tUYWlsKSB0YXNrVGFpbC5fbmV4dCA9IHRoaXM7XG4gICAgICBlbHNlIHRhc2tIZWFkID0gdGhpcztcbiAgICAgIHRhc2tUYWlsID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fY2FsbCA9IGNhbGxiYWNrO1xuICAgIHRoaXMuX3RpbWUgPSB0aW1lO1xuICAgIHNsZWVwKCk7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jYWxsKSB7XG4gICAgICB0aGlzLl9jYWxsID0gbnVsbDtcbiAgICAgIHRoaXMuX3RpbWUgPSBJbmZpbml0eTtcbiAgICAgIHNsZWVwKCk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGltZXIoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lckZsdXNoKCkge1xuICBub3coKTsgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWUsIGlmIG5vdCBhbHJlYWR5IHNldC5cbiAgKytmcmFtZTsgLy8gUHJldGVuZCB3ZeKAmXZlIHNldCBhbiBhbGFybSwgaWYgd2UgaGF2ZW7igJl0IGFscmVhZHkuXG4gIHZhciB0ID0gdGFza0hlYWQsIGU7XG4gIHdoaWxlICh0KSB7XG4gICAgaWYgKChlID0gY2xvY2tOb3cgLSB0Ll90aW1lKSA+PSAwKSB0Ll9jYWxsLmNhbGwobnVsbCwgZSk7XG4gICAgdCA9IHQuX25leHQ7XG4gIH1cbiAgLS1mcmFtZTtcbn1cblxuZnVuY3Rpb24gd2FrZSgpIHtcbiAgY2xvY2tOb3cgPSAoY2xvY2tMYXN0ID0gY2xvY2subm93KCkpICsgY2xvY2tTa2V3O1xuICBmcmFtZSA9IHRpbWVvdXQgPSAwO1xuICB0cnkge1xuICAgIHRpbWVyRmx1c2goKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcmFtZSA9IDA7XG4gICAgbmFwKCk7XG4gICAgY2xvY2tOb3cgPSAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBva2UoKSB7XG4gIHZhciBub3cgPSBjbG9jay5ub3coKSwgZGVsYXkgPSBub3cgLSBjbG9ja0xhc3Q7XG4gIGlmIChkZWxheSA+IHBva2VEZWxheSkgY2xvY2tTa2V3IC09IGRlbGF5LCBjbG9ja0xhc3QgPSBub3c7XG59XG5cbmZ1bmN0aW9uIG5hcCgpIHtcbiAgdmFyIHQwLCB0MSA9IHRhc2tIZWFkLCB0MiwgdGltZSA9IEluZmluaXR5O1xuICB3aGlsZSAodDEpIHtcbiAgICBpZiAodDEuX2NhbGwpIHtcbiAgICAgIGlmICh0aW1lID4gdDEuX3RpbWUpIHRpbWUgPSB0MS5fdGltZTtcbiAgICAgIHQwID0gdDEsIHQxID0gdDEuX25leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQyID0gdDEuX25leHQsIHQxLl9uZXh0ID0gbnVsbDtcbiAgICAgIHQxID0gdDAgPyB0MC5fbmV4dCA9IHQyIDogdGFza0hlYWQgPSB0MjtcbiAgICB9XG4gIH1cbiAgdGFza1RhaWwgPSB0MDtcbiAgc2xlZXAodGltZSk7XG59XG5cbmZ1bmN0aW9uIHNsZWVwKHRpbWUpIHtcbiAgaWYgKGZyYW1lKSByZXR1cm47IC8vIFNvb25lc3QgYWxhcm0gYWxyZWFkeSBzZXQsIG9yIHdpbGwgYmUuXG4gIGlmICh0aW1lb3V0KSB0aW1lb3V0ID0gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB2YXIgZGVsYXkgPSB0aW1lIC0gY2xvY2tOb3c7IC8vIFN0cmljdGx5IGxlc3MgdGhhbiBpZiB3ZSByZWNvbXB1dGVkIGNsb2NrTm93LlxuICBpZiAoZGVsYXkgPiAyNCkge1xuICAgIGlmICh0aW1lIDwgSW5maW5pdHkpIHRpbWVvdXQgPSBzZXRUaW1lb3V0KHdha2UsIHRpbWUgLSBjbG9jay5ub3coKSAtIGNsb2NrU2tldyk7XG4gICAgaWYgKGludGVydmFsKSBpbnRlcnZhbCA9IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9IGVsc2Uge1xuICAgIGlmICghaW50ZXJ2YWwpIGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpLCBpbnRlcnZhbCA9IHNldEludGVydmFsKHBva2UsIHBva2VEZWxheSk7XG4gICAgZnJhbWUgPSAxLCBzZXRGcmFtZSh3YWtlKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@1.0.10@d3-timer/src/timer.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@2.0.0@d3-timer/src/index.js": /*!************************************************************!*\ !*** ./node_modules/_d3-timer@2.0.0@d3-timer/src/index.js ***! \************************************************************/ /*! exports provided: now, timer, timerFlush, timeout, interval */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/_d3-timer@2.0.0@d3-timer/src/timer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"timerFlush\"]; });\n\n/* harmony import */ var _timeout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeout.js */ \"./node_modules/_d3-timer@2.0.0@d3-timer/src/timeout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeout\", function() { return _timeout_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval.js */ \"./node_modules/_d3-timer@2.0.0@d3-timer/src/interval.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"interval\", function() { return _interval_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDIuMC4wQGQzLXRpbWVyL3NyYy9pbmRleC5qcz8yYzVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJb0I7O0FBSUU7O0FBSUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDIuMC4wQGQzLXRpbWVyL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIG5vdyxcbiAgdGltZXIsXG4gIHRpbWVyRmx1c2hcbn0gZnJvbSBcIi4vdGltZXIuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB0aW1lb3V0XG59IGZyb20gXCIuL3RpbWVvdXQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBpbnRlcnZhbFxufSBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@2.0.0@d3-timer/src/index.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@2.0.0@d3-timer/src/interval.js": /*!***************************************************************!*\ !*** ./node_modules/_d3-timer@2.0.0@d3-timer/src/interval.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/_d3-timer@2.0.0@d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"], total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? Object(_timer_js__WEBPACK_IMPORTED_MODULE_0__[\"now\"])() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDIuMC4wQGQzLXRpbWVyL3NyYy9pbnRlcnZhbC5qcz84ZjdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBc0M7O0FBRXZCO0FBQ2YsY0FBYywrQ0FBSztBQUNuQjtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMscURBQUc7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtdGltZXJAMi4wLjBAZDMtdGltZXIvc3JjL2ludGVydmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUaW1lciwgbm93fSBmcm9tIFwiLi90aW1lci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXIsIHRvdGFsID0gZGVsYXk7XG4gIGlmIChkZWxheSA9PSBudWxsKSByZXR1cm4gdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSksIHQ7XG4gIHQuX3Jlc3RhcnQgPSB0LnJlc3RhcnQ7XG4gIHQucmVzdGFydCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGRlbGF5ID0gK2RlbGF5LCB0aW1lID0gdGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZTtcbiAgICB0Ll9yZXN0YXJ0KGZ1bmN0aW9uIHRpY2soZWxhcHNlZCkge1xuICAgICAgZWxhcHNlZCArPSB0b3RhbDtcbiAgICAgIHQuX3Jlc3RhcnQodGljaywgdG90YWwgKz0gZGVsYXksIHRpbWUpO1xuICAgICAgY2FsbGJhY2soZWxhcHNlZCk7XG4gICAgfSwgZGVsYXksIHRpbWUpO1xuICB9XG4gIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@2.0.0@d3-timer/src/interval.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@2.0.0@d3-timer/src/timeout.js": /*!**************************************************************!*\ !*** ./node_modules/_d3-timer@2.0.0@d3-timer/src/timeout.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"./node_modules/_d3-timer@2.0.0@d3-timer/src/timer.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__[\"Timer\"];\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDIuMC4wQGQzLXRpbWVyL3NyYy90aW1lb3V0LmpzPzJmYTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFpQzs7QUFFbEI7QUFDZixjQUFjLCtDQUFLO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZDMtdGltZXJAMi4wLjBAZDMtdGltZXIvc3JjL3RpbWVvdXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RpbWVyfSBmcm9tIFwiLi90aW1lci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgdmFyIHQgPSBuZXcgVGltZXI7XG4gIGRlbGF5ID0gZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXk7XG4gIHQucmVzdGFydChlbGFwc2VkID0+IHtcbiAgICB0LnN0b3AoKTtcbiAgICBjYWxsYmFjayhlbGFwc2VkICsgZGVsYXkpO1xuICB9LCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@2.0.0@d3-timer/src/timeout.js\n"); /***/ }), /***/ "./node_modules/_d3-timer@2.0.0@d3-timer/src/timer.js": /*!************************************************************!*\ !*** ./node_modules/_d3-timer@2.0.0@d3-timer/src/timer.js ***! \************************************************************/ /*! exports provided: now, Timer, timer, timerFlush */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return now; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Timer\", function() { return Timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timer\", function() { return timer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"timerFlush\", function() { return timerFlush; });\nvar frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2QzLXRpbWVyQDIuMC4wQGQzLXRpbWVyL3NyYy90aW1lci5qcz9iZTI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFJQUFxSSxtQkFBbUI7O0FBRWpKO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxRQUFRO0FBQ1IsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kMy10aW1lckAyLjAuMEBkMy10aW1lci9zcmMvdGltZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZnJhbWUgPSAwLCAvLyBpcyBhbiBhbmltYXRpb24gZnJhbWUgcGVuZGluZz9cbiAgICB0aW1lb3V0ID0gMCwgLy8gaXMgYSB0aW1lb3V0IHBlbmRpbmc/XG4gICAgaW50ZXJ2YWwgPSAwLCAvLyBhcmUgYW55IHRpbWVycyBhY3RpdmU/XG4gICAgcG9rZURlbGF5ID0gMTAwMCwgLy8gaG93IGZyZXF1ZW50bHkgd2UgY2hlY2sgZm9yIGNsb2NrIHNrZXdcbiAgICB0YXNrSGVhZCxcbiAgICB0YXNrVGFpbCxcbiAgICBjbG9ja0xhc3QgPSAwLFxuICAgIGNsb2NrTm93ID0gMCxcbiAgICBjbG9ja1NrZXcgPSAwLFxuICAgIGNsb2NrID0gdHlwZW9mIHBlcmZvcm1hbmNlID09PSBcIm9iamVjdFwiICYmIHBlcmZvcm1hbmNlLm5vdyA/IHBlcmZvcm1hbmNlIDogRGF0ZSxcbiAgICBzZXRGcmFtZSA9IHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpIDogZnVuY3Rpb24oZikgeyBzZXRUaW1lb3V0KGYsIDE3KTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vdygpIHtcbiAgcmV0dXJuIGNsb2NrTm93IHx8IChzZXRGcmFtZShjbGVhck5vdyksIGNsb2NrTm93ID0gY2xvY2subm93KCkgKyBjbG9ja1NrZXcpO1xufVxuXG5mdW5jdGlvbiBjbGVhck5vdygpIHtcbiAgY2xvY2tOb3cgPSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZXIoKSB7XG4gIHRoaXMuX2NhbGwgPVxuICB0aGlzLl90aW1lID1cbiAgdGhpcy5fbmV4dCA9IG51bGw7XG59XG5cblRpbWVyLnByb3RvdHlwZSA9IHRpbWVyLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRpbWVyLFxuICByZXN0YXJ0OiBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvblwiKTtcbiAgICB0aW1lID0gKHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWUpICsgKGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5KTtcbiAgICBpZiAoIXRoaXMuX25leHQgJiYgdGFza1RhaWwgIT09IHRoaXMpIHtcbiAgICAgIGlmICh0YXNrVGFpbCkgdGFza1RhaWwuX25leHQgPSB0aGlzO1xuICAgICAgZWxzZSB0YXNrSGVhZCA9IHRoaXM7XG4gICAgICB0YXNrVGFpbCA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuX2NhbGwgPSBjYWxsYmFjaztcbiAgICB0aGlzLl90aW1lID0gdGltZTtcbiAgICBzbGVlcCgpO1xuICB9LFxuICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fY2FsbCkge1xuICAgICAgdGhpcy5fY2FsbCA9IG51bGw7XG4gICAgICB0aGlzLl90aW1lID0gSW5maW5pdHk7XG4gICAgICBzbGVlcCgpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVyKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lcjtcbiAgdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZXJGbHVzaCgpIHtcbiAgbm93KCk7IC8vIEdldCB0aGUgY3VycmVudCB0aW1lLCBpZiBub3QgYWxyZWFkeSBzZXQuXG4gICsrZnJhbWU7IC8vIFByZXRlbmQgd2XigJl2ZSBzZXQgYW4gYWxhcm0sIGlmIHdlIGhhdmVu4oCZdCBhbHJlYWR5LlxuICB2YXIgdCA9IHRhc2tIZWFkLCBlO1xuICB3aGlsZSAodCkge1xuICAgIGlmICgoZSA9IGNsb2NrTm93IC0gdC5fdGltZSkgPj0gMCkgdC5fY2FsbC5jYWxsKG51bGwsIGUpO1xuICAgIHQgPSB0Ll9uZXh0O1xuICB9XG4gIC0tZnJhbWU7XG59XG5cbmZ1bmN0aW9uIHdha2UoKSB7XG4gIGNsb2NrTm93ID0gKGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpKSArIGNsb2NrU2tldztcbiAgZnJhbWUgPSB0aW1lb3V0ID0gMDtcbiAgdHJ5IHtcbiAgICB0aW1lckZsdXNoKCk7XG4gIH0gZmluYWxseSB7XG4gICAgZnJhbWUgPSAwO1xuICAgIG5hcCgpO1xuICAgIGNsb2NrTm93ID0gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBwb2tlKCkge1xuICB2YXIgbm93ID0gY2xvY2subm93KCksIGRlbGF5ID0gbm93IC0gY2xvY2tMYXN0O1xuICBpZiAoZGVsYXkgPiBwb2tlRGVsYXkpIGNsb2NrU2tldyAtPSBkZWxheSwgY2xvY2tMYXN0ID0gbm93O1xufVxuXG5mdW5jdGlvbiBuYXAoKSB7XG4gIHZhciB0MCwgdDEgPSB0YXNrSGVhZCwgdDIsIHRpbWUgPSBJbmZpbml0eTtcbiAgd2hpbGUgKHQxKSB7XG4gICAgaWYgKHQxLl9jYWxsKSB7XG4gICAgICBpZiAodGltZSA+IHQxLl90aW1lKSB0aW1lID0gdDEuX3RpbWU7XG4gICAgICB0MCA9IHQxLCB0MSA9IHQxLl9uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0MiA9IHQxLl9uZXh0LCB0MS5fbmV4dCA9IG51bGw7XG4gICAgICB0MSA9IHQwID8gdDAuX25leHQgPSB0MiA6IHRhc2tIZWFkID0gdDI7XG4gICAgfVxuICB9XG4gIHRhc2tUYWlsID0gdDA7XG4gIHNsZWVwKHRpbWUpO1xufVxuXG5mdW5jdGlvbiBzbGVlcCh0aW1lKSB7XG4gIGlmIChmcmFtZSkgcmV0dXJuOyAvLyBTb29uZXN0IGFsYXJtIGFscmVhZHkgc2V0LCBvciB3aWxsIGJlLlxuICBpZiAodGltZW91dCkgdGltZW91dCA9IGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgdmFyIGRlbGF5ID0gdGltZSAtIGNsb2NrTm93OyAvLyBTdHJpY3RseSBsZXNzIHRoYW4gaWYgd2UgcmVjb21wdXRlZCBjbG9ja05vdy5cbiAgaWYgKGRlbGF5ID4gMjQpIHtcbiAgICBpZiAodGltZSA8IEluZmluaXR5KSB0aW1lb3V0ID0gc2V0VGltZW91dCh3YWtlLCB0aW1lIC0gY2xvY2subm93KCkgLSBjbG9ja1NrZXcpO1xuICAgIGlmIChpbnRlcnZhbCkgaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWludGVydmFsKSBjbG9ja0xhc3QgPSBjbG9jay5ub3coKSwgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChwb2tlLCBwb2tlRGVsYXkpO1xuICAgIGZyYW1lID0gMSwgc2V0RnJhbWUod2FrZSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_d3-timer@2.0.0@d3-timer/src/timer.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/index.js": /*!******************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/index.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: __webpack_require__(/*! ./lib/graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\"),\n\n layout: __webpack_require__(/*! ./lib/layout */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/layout.js\"),\n debug: __webpack_require__(/*! ./lib/debug */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/debug.js\"),\n util: {\n time: __webpack_require__(/*! ./lib/util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\").time,\n notime: __webpack_require__(/*! ./lib/util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\").notime\n },\n version: __webpack_require__(/*! ./lib/version */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/version.js\")\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9pbmRleC5qcz9hZWMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksbUJBQU8sQ0FBQyw2RUFBZ0I7O0FBRXBDLFVBQVUsbUJBQU8sQ0FBQyx5RUFBYztBQUNoQyxTQUFTLG1CQUFPLENBQUMsdUVBQWE7QUFDOUI7QUFDQSxVQUFVLG1CQUFPLENBQUMscUVBQVk7QUFDOUIsWUFBWSxtQkFBTyxDQUFDLHFFQUFZO0FBQ2hDLEdBQUc7QUFDSCxXQUFXLG1CQUFPLENBQUMsMkVBQWU7QUFDbEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBQZXR0aXR0XG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cblRIRSBTT0ZUV0FSRS5cbiovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBncmFwaGxpYjogcmVxdWlyZShcIi4vbGliL2dyYXBobGliXCIpLFxuXG4gIGxheW91dDogcmVxdWlyZShcIi4vbGliL2xheW91dFwiKSxcbiAgZGVidWc6IHJlcXVpcmUoXCIuL2xpYi9kZWJ1Z1wiKSxcbiAgdXRpbDoge1xuICAgIHRpbWU6IHJlcXVpcmUoXCIuL2xpYi91dGlsXCIpLnRpbWUsXG4gICAgbm90aW1lOiByZXF1aXJlKFwiLi9saWIvdXRpbFwiKS5ub3RpbWVcbiAgfSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vbGliL3ZlcnNpb25cIilcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/index.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/acyclic.js": /*!************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/acyclic.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar greedyFAS = __webpack_require__(/*! ./greedy-fas */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/greedy-fas.js\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvYWN5Y2xpYy5qcz84ZTE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMxQixnQkFBZ0IsbUJBQU8sQ0FBQyw2RUFBYzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvYWN5Y2xpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBncmVlZHlGQVMgPSByZXF1aXJlKFwiLi9ncmVlZHktZmFzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcnVuOiBydW4sXG4gIHVuZG86IHVuZG9cbn07XG5cbmZ1bmN0aW9uIHJ1bihnKSB7XG4gIHZhciBmYXMgPSAoZy5ncmFwaCgpLmFjeWNsaWNlciA9PT0gXCJncmVlZHlcIlxuICAgID8gZ3JlZWR5RkFTKGcsIHdlaWdodEZuKGcpKVxuICAgIDogZGZzRkFTKGcpKTtcbiAgXy5mb3JFYWNoKGZhcywgZnVuY3Rpb24oZSkge1xuICAgIHZhciBsYWJlbCA9IGcuZWRnZShlKTtcbiAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgbGFiZWwuZm9yd2FyZE5hbWUgPSBlLm5hbWU7XG4gICAgbGFiZWwucmV2ZXJzZWQgPSB0cnVlO1xuICAgIGcuc2V0RWRnZShlLncsIGUudiwgbGFiZWwsIF8udW5pcXVlSWQoXCJyZXZcIikpO1xuICB9KTtcblxuICBmdW5jdGlvbiB3ZWlnaHRGbihnKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZGZzRkFTKGcpIHtcbiAgdmFyIGZhcyA9IFtdO1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICBzdGFja1t2XSA9IHRydWU7XG4gICAgXy5mb3JFYWNoKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIGlmIChfLmhhcyhzdGFjaywgZS53KSkge1xuICAgICAgICBmYXMucHVzaChlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRmcyhlLncpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGRlbGV0ZSBzdGFja1t2XTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGRmcyk7XG4gIHJldHVybiBmYXM7XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGlmIChsYWJlbC5yZXZlcnNlZCkge1xuICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuXG4gICAgICB2YXIgZm9yd2FyZE5hbWUgPSBsYWJlbC5mb3J3YXJkTmFtZTtcbiAgICAgIGRlbGV0ZSBsYWJlbC5yZXZlcnNlZDtcbiAgICAgIGRlbGV0ZSBsYWJlbC5mb3J3YXJkTmFtZTtcbiAgICAgIGcuc2V0RWRnZShlLncsIGUudiwgbGFiZWwsIGZvcndhcmROYW1lKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/acyclic.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/add-border-segments.js": /*!************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/add-border-segments.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcz9hNTBiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMxQixXQUFXLG1CQUFPLENBQUMsaUVBQVE7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFlBQVk7QUFDdkM7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9hZGQtYm9yZGVyLXNlZ21lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gYWRkQm9yZGVyU2VnbWVudHM7XG5cbmZ1bmN0aW9uIGFkZEJvcmRlclNlZ21lbnRzKGcpIHtcbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIF8uZm9yRWFjaChjaGlsZHJlbiwgZGZzKTtcbiAgICB9XG5cbiAgICBpZiAoXy5oYXMobm9kZSwgXCJtaW5SYW5rXCIpKSB7XG4gICAgICBub2RlLmJvcmRlckxlZnQgPSBbXTtcbiAgICAgIG5vZGUuYm9yZGVyUmlnaHQgPSBbXTtcbiAgICAgIGZvciAodmFyIHJhbmsgPSBub2RlLm1pblJhbmssIG1heFJhbmsgPSBub2RlLm1heFJhbmsgKyAxO1xuICAgICAgICByYW5rIDwgbWF4UmFuaztcbiAgICAgICAgKytyYW5rKSB7XG4gICAgICAgIGFkZEJvcmRlck5vZGUoZywgXCJib3JkZXJMZWZ0XCIsIFwiX2JsXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyUmlnaHRcIiwgXCJfYnJcIiwgdiwgbm9kZSwgcmFuayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcbn1cblxuZnVuY3Rpb24gYWRkQm9yZGVyTm9kZShnLCBwcm9wLCBwcmVmaXgsIHNnLCBzZ05vZGUsIHJhbmspIHtcbiAgdmFyIGxhYmVsID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCByYW5rOiByYW5rLCBib3JkZXJUeXBlOiBwcm9wIH07XG4gIHZhciBwcmV2ID0gc2dOb2RlW3Byb3BdW3JhbmsgLSAxXTtcbiAgdmFyIGN1cnIgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImJvcmRlclwiLCBsYWJlbCwgcHJlZml4KTtcbiAgc2dOb2RlW3Byb3BdW3JhbmtdID0gY3VycjtcbiAgZy5zZXRQYXJlbnQoY3Vyciwgc2cpO1xuICBpZiAocHJldikge1xuICAgIGcuc2V0RWRnZShwcmV2LCBjdXJyLCB7IHdlaWdodDogMSB9KTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/add-border-segments.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/coordinate-system.js": /*!**********************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/coordinate-system.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanM/NDQ5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscUVBQVU7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsK0JBQStCLEVBQUU7QUFDckUsb0NBQW9DLCtCQUErQixFQUFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0Msd0JBQXdCLEVBQUU7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0Msc0JBQXNCLEVBQUU7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL2Nvb3JkaW5hdGUtc3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRqdXN0OiBhZGp1c3QsXG4gIHVuZG86IHVuZG9cbn07XG5cbmZ1bmN0aW9uIGFkanVzdChnKSB7XG4gIHZhciByYW5rRGlyID0gZy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhbmtEaXIgPT09IFwibHJcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIHZhciByYW5rRGlyID0gZy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhbmtEaXIgPT09IFwiYnRcIiB8fCByYW5rRGlyID09PSBcInJsXCIpIHtcbiAgICByZXZlcnNlWShnKTtcbiAgfVxuXG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFhZKGcpO1xuICAgIHN3YXBXaWR0aEhlaWdodChnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHQoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBXaWR0aEhlaWdodE9uZShnLm5vZGUodikpOyB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5lZGdlKGUpKTsgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBXaWR0aEhlaWdodE9uZShhdHRycykge1xuICB2YXIgdyA9IGF0dHJzLndpZHRoO1xuICBhdHRycy53aWR0aCA9IGF0dHJzLmhlaWdodDtcbiAgYXR0cnMuaGVpZ2h0ID0gdztcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldmVyc2VZT25lKGcubm9kZSh2KSk7IH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHJldmVyc2VZT25lKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ5XCIpKSB7XG4gICAgICByZXZlcnNlWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXZlcnNlWU9uZShhdHRycykge1xuICBhdHRycy55ID0gLWF0dHJzLnk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWShnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgc3dhcFhZT25lKGcubm9kZSh2KSk7IH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHN3YXBYWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgc3dhcFhZT25lKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWU9uZShhdHRycykge1xuICB2YXIgeCA9IGF0dHJzLng7XG4gIGF0dHJzLnggPSBhdHRycy55O1xuICBhdHRycy55ID0geDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/coordinate-system.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/data/list.js": /*!**************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/data/list.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvZGF0YS9saXN0LmpzPzNiMDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL2RhdGEvbGlzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBTaW1wbGUgZG91Ymx5IGxpbmtlZCBsaXN0IGltcGxlbWVudGF0aW9uIGRlcml2ZWQgZnJvbSBDb3JtZW4sIGV0IGFsLixcbiAqIFwiSW50cm9kdWN0aW9uIHRvIEFsZ29yaXRobXNcIi5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IExpc3Q7XG5cbmZ1bmN0aW9uIExpc3QoKSB7XG4gIHZhciBzZW50aW5lbCA9IHt9O1xuICBzZW50aW5lbC5fbmV4dCA9IHNlbnRpbmVsLl9wcmV2ID0gc2VudGluZWw7XG4gIHRoaXMuX3NlbnRpbmVsID0gc2VudGluZWw7XG59XG5cbkxpc3QucHJvdG90eXBlLmRlcXVldWUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIHZhciBlbnRyeSA9IHNlbnRpbmVsLl9wcmV2O1xuICBpZiAoZW50cnkgIT09IHNlbnRpbmVsKSB7XG4gICAgdW5saW5rKGVudHJ5KTtcbiAgICByZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbkxpc3QucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbihlbnRyeSkge1xuICB2YXIgc2VudGluZWwgPSB0aGlzLl9zZW50aW5lbDtcbiAgaWYgKGVudHJ5Ll9wcmV2ICYmIGVudHJ5Ll9uZXh0KSB7XG4gICAgdW5saW5rKGVudHJ5KTtcbiAgfVxuICBlbnRyeS5fbmV4dCA9IHNlbnRpbmVsLl9uZXh0O1xuICBzZW50aW5lbC5fbmV4dC5fcHJldiA9IGVudHJ5O1xuICBzZW50aW5lbC5fbmV4dCA9IGVudHJ5O1xuICBlbnRyeS5fcHJldiA9IHNlbnRpbmVsO1xufTtcblxuTGlzdC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHN0cnMgPSBbXTtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIHZhciBjdXJyID0gc2VudGluZWwuX3ByZXY7XG4gIHdoaWxlIChjdXJyICE9PSBzZW50aW5lbCkge1xuICAgIHN0cnMucHVzaChKU09OLnN0cmluZ2lmeShjdXJyLCBmaWx0ZXJPdXRMaW5rcykpO1xuICAgIGN1cnIgPSBjdXJyLl9wcmV2O1xuICB9XG4gIHJldHVybiBcIltcIiArIHN0cnMuam9pbihcIiwgXCIpICsgXCJdXCI7XG59O1xuXG5mdW5jdGlvbiB1bmxpbmsoZW50cnkpIHtcbiAgZW50cnkuX3ByZXYuX25leHQgPSBlbnRyeS5fbmV4dDtcbiAgZW50cnkuX25leHQuX3ByZXYgPSBlbnRyeS5fcHJldjtcbiAgZGVsZXRlIGVudHJ5Ll9uZXh0O1xuICBkZWxldGUgZW50cnkuX3ByZXY7XG59XG5cbmZ1bmN0aW9uIGZpbHRlck91dExpbmtzKGssIHYpIHtcbiAgaWYgKGsgIT09IFwiX25leHRcIiAmJiBrICE9PSBcIl9wcmV2XCIpIHtcbiAgICByZXR1cm4gdjtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/data/list.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/debug.js": /*!**********************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/debug.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\nvar Graph = __webpack_require__(/*! ./graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvZGVidWcuanM/ZjZhOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMscUVBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGlFQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5RUFBWTs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsbUNBQW1DLGFBQWE7O0FBRXJFO0FBQ0Esa0JBQWtCLFdBQVc7QUFDN0I7QUFDQSxHQUFHOztBQUVIO0FBQ0EsMEJBQTBCO0FBQzFCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvZGVidWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVidWdPcmRlcmluZzogZGVidWdPcmRlcmluZ1xufTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGRlYnVnT3JkZXJpbmcoZykge1xuICB2YXIgbGF5ZXJNYXRyaXggPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG5cbiAgdmFyIGggPSBuZXcgR3JhcGgoeyBjb21wb3VuZDogdHJ1ZSwgbXVsdGlncmFwaDogdHJ1ZSB9KS5zZXRHcmFwaCh7fSk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGguc2V0Tm9kZSh2LCB7IGxhYmVsOiB2IH0pO1xuICAgIGguc2V0UGFyZW50KHYsIFwibGF5ZXJcIiArIGcubm9kZSh2KS5yYW5rKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIGguc2V0RWRnZShlLnYsIGUudywge30sIGUubmFtZSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChsYXllck1hdHJpeCwgZnVuY3Rpb24obGF5ZXIsIGkpIHtcbiAgICB2YXIgbGF5ZXJWID0gXCJsYXllclwiICsgaTtcbiAgICBoLnNldE5vZGUobGF5ZXJWLCB7IHJhbms6IFwic2FtZVwiIH0pO1xuICAgIF8ucmVkdWNlKGxheWVyLCBmdW5jdGlvbih1LCB2KSB7XG4gICAgICBoLnNldEVkZ2UodSwgdiwgeyBzdHlsZTogXCJpbnZpc1wiIH0pO1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBoO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/debug.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js": /*!*************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// eslint-disable-next-line no-redeclare\n/* global window */\n\nvar graphlib;\n\nif (true) {\n try {\n graphlib = __webpack_require__(/*! graphlib */ \"./node_modules/_graphlib@2.1.8@graphlib/index.js\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvZ3JhcGhsaWIuanM/ZDZlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBOztBQUVBLElBQUksSUFBNkI7QUFDakM7QUFDQSxlQUFlLG1CQUFPLENBQUMsa0VBQVU7QUFDakMsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvZ3JhcGhsaWIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG4vKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBncmFwaGxpYjtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBncmFwaGxpYiA9IHJlcXVpcmUoXCJncmFwaGxpYlwiKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWdyYXBobGliKSB7XG4gIGdyYXBobGliID0gd2luZG93LmdyYXBobGliO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYXBobGliO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/greedy-fas.js": /*!***************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/greedy-fas.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ./graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\nvar List = __webpack_require__(/*! ./data/list */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/data/list.js\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvZ3JlZWR5LWZhcy5qcz8wNjk0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMxQixZQUFZLG1CQUFPLENBQUMseUVBQVk7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLDJFQUFhOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlDQUF5Qyx3Q0FBd0M7QUFDakYseUNBQXlDLHdDQUF3QztBQUNqRjtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLHdCQUF3QjtBQUNqRCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsNERBQTRELG1CQUFtQixFQUFFO0FBQ2pGOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVILFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL2dyZWVkeS1mYXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIExpc3QgPSByZXF1aXJlKFwiLi9kYXRhL2xpc3RcIik7XG5cbi8qXG4gKiBBIGdyZWVkeSBoZXVyaXN0aWMgZm9yIGZpbmRpbmcgYSBmZWVkYmFjayBhcmMgc2V0IGZvciBhIGdyYXBoLiBBIGZlZWRiYWNrXG4gKiBhcmMgc2V0IGlzIGEgc2V0IG9mIGVkZ2VzIHRoYXQgY2FuIGJlIHJlbW92ZWQgdG8gbWFrZSBhIGdyYXBoIGFjeWNsaWMuXG4gKiBUaGUgYWxnb3JpdGhtIGNvbWVzIGZyb206IFAuIEVhZGVzLCBYLiBMaW4sIGFuZCBXLiBGLiBTbXl0aCwgXCJBIGZhc3QgYW5kXG4gKiBlZmZlY3RpdmUgaGV1cmlzdGljIGZvciB0aGUgZmVlZGJhY2sgYXJjIHNldCBwcm9ibGVtLlwiIFRoaXMgaW1wbGVtZW50YXRpb25cbiAqIGFkanVzdHMgdGhhdCBmcm9tIHRoZSBwYXBlciB0byBhbGxvdyBmb3Igd2VpZ2h0ZWQgZWRnZXMuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZ3JlZWR5RkFTO1xuXG52YXIgREVGQVVMVF9XRUlHSFRfRk4gPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBncmVlZHlGQVMoZywgd2VpZ2h0Rm4pIHtcbiAgaWYgKGcubm9kZUNvdW50KCkgPD0gMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgc3RhdGUgPSBidWlsZFN0YXRlKGcsIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZOKTtcbiAgdmFyIHJlc3VsdHMgPSBkb0dyZWVkeUZBUyhzdGF0ZS5ncmFwaCwgc3RhdGUuYnVja2V0cywgc3RhdGUuemVyb0lkeCk7XG5cbiAgLy8gRXhwYW5kIG11bHRpLWVkZ2VzXG4gIHJldHVybiBfLmZsYXR0ZW4oXy5tYXAocmVzdWx0cywgZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiBnLm91dEVkZ2VzKGUudiwgZS53KTtcbiAgfSksIHRydWUpO1xufVxuXG5mdW5jdGlvbiBkb0dyZWVkeUZBUyhnLCBidWNrZXRzLCB6ZXJvSWR4KSB7XG4gIHZhciByZXN1bHRzID0gW107XG4gIHZhciBzb3VyY2VzID0gYnVja2V0c1tidWNrZXRzLmxlbmd0aCAtIDFdO1xuICB2YXIgc2lua3MgPSBidWNrZXRzWzBdO1xuXG4gIHZhciBlbnRyeTtcbiAgd2hpbGUgKGcubm9kZUNvdW50KCkpIHtcbiAgICB3aGlsZSAoKGVudHJ5ID0gc2lua3MuZGVxdWV1ZSgpKSkgICB7IHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpOyB9XG4gICAgd2hpbGUgKChlbnRyeSA9IHNvdXJjZXMuZGVxdWV1ZSgpKSkgeyByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KTsgfVxuICAgIGlmIChnLm5vZGVDb3VudCgpKSB7XG4gICAgICBmb3IgKHZhciBpID0gYnVja2V0cy5sZW5ndGggLSAyOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIGVudHJ5ID0gYnVja2V0c1tpXS5kZXF1ZXVlKCk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLmNvbmNhdChyZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5LCB0cnVlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSwgY29sbGVjdFByZWRlY2Vzc29ycykge1xuICB2YXIgcmVzdWx0cyA9IGNvbGxlY3RQcmVkZWNlc3NvcnMgPyBbXSA6IHVuZGVmaW5lZDtcblxuICBfLmZvckVhY2goZy5pbkVkZ2VzKGVudHJ5LnYpLCBmdW5jdGlvbihlZGdlKSB7XG4gICAgdmFyIHdlaWdodCA9IGcuZWRnZShlZGdlKTtcbiAgICB2YXIgdUVudHJ5ID0gZy5ub2RlKGVkZ2Uudik7XG5cbiAgICBpZiAoY29sbGVjdFByZWRlY2Vzc29ycykge1xuICAgICAgcmVzdWx0cy5wdXNoKHsgdjogZWRnZS52LCB3OiBlZGdlLncgfSk7XG4gICAgfVxuXG4gICAgdUVudHJ5Lm91dCAtPSB3ZWlnaHQ7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIHVFbnRyeSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLm91dEVkZ2VzKGVudHJ5LnYpLCBmdW5jdGlvbihlZGdlKSB7XG4gICAgdmFyIHdlaWdodCA9IGcuZWRnZShlZGdlKTtcbiAgICB2YXIgdyA9IGVkZ2UudztcbiAgICB2YXIgd0VudHJ5ID0gZy5ub2RlKHcpO1xuICAgIHdFbnRyeVtcImluXCJdIC09IHdlaWdodDtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgd0VudHJ5KTtcbiAgfSk7XG5cbiAgZy5yZW1vdmVOb2RlKGVudHJ5LnYpO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBidWlsZFN0YXRlKGcsIHdlaWdodEZuKSB7XG4gIHZhciBmYXNHcmFwaCA9IG5ldyBHcmFwaCgpO1xuICB2YXIgbWF4SW4gPSAwO1xuICB2YXIgbWF4T3V0ID0gMDtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgZmFzR3JhcGguc2V0Tm9kZSh2LCB7IHY6IHYsIFwiaW5cIjogMCwgb3V0OiAwIH0pO1xuICB9KTtcblxuICAvLyBBZ2dyZWdhdGUgd2VpZ2h0cyBvbiBub2RlcywgYnV0IGFsc28gc3VtIHRoZSB3ZWlnaHRzIGFjcm9zcyBtdWx0aS1lZGdlc1xuICAvLyBpbnRvIGEgc2luZ2xlIGVkZ2UgZm9yIHRoZSBmYXNHcmFwaC5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBwcmV2V2VpZ2h0ID0gZmFzR3JhcGguZWRnZShlLnYsIGUudykgfHwgMDtcbiAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0Rm4oZSk7XG4gICAgdmFyIGVkZ2VXZWlnaHQgPSBwcmV2V2VpZ2h0ICsgd2VpZ2h0O1xuICAgIGZhc0dyYXBoLnNldEVkZ2UoZS52LCBlLncsIGVkZ2VXZWlnaHQpO1xuICAgIG1heE91dCA9IE1hdGgubWF4KG1heE91dCwgZmFzR3JhcGgubm9kZShlLnYpLm91dCArPSB3ZWlnaHQpO1xuICAgIG1heEluICA9IE1hdGgubWF4KG1heEluLCAgZmFzR3JhcGgubm9kZShlLncpW1wiaW5cIl0gICs9IHdlaWdodCk7XG4gIH0pO1xuXG4gIHZhciBidWNrZXRzID0gXy5yYW5nZShtYXhPdXQgKyBtYXhJbiArIDMpLm1hcChmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBMaXN0KCk7IH0pO1xuICB2YXIgemVyb0lkeCA9IG1heEluICsgMTtcblxuICBfLmZvckVhY2goZmFzR3JhcGgubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCBmYXNHcmFwaC5ub2RlKHYpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgZ3JhcGg6IGZhc0dyYXBoLCBidWNrZXRzOiBidWNrZXRzLCB6ZXJvSWR4OiB6ZXJvSWR4IH07XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSkge1xuICBpZiAoIWVudHJ5Lm91dCkge1xuICAgIGJ1Y2tldHNbMF0uZW5xdWV1ZShlbnRyeSk7XG4gIH0gZWxzZSBpZiAoIWVudHJ5W1wiaW5cIl0pIHtcbiAgICBidWNrZXRzW2J1Y2tldHMubGVuZ3RoIC0gMV0uZW5xdWV1ZShlbnRyeSk7XG4gIH0gZWxzZSB7XG4gICAgYnVja2V0c1tlbnRyeS5vdXQgLSBlbnRyeVtcImluXCJdICsgemVyb0lkeF0uZW5xdWV1ZShlbnRyeSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/greedy-fas.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/layout.js": /*!***********************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/layout.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar acyclic = __webpack_require__(/*! ./acyclic */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/acyclic.js\");\nvar normalize = __webpack_require__(/*! ./normalize */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/normalize.js\");\nvar rank = __webpack_require__(/*! ./rank */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/index.js\");\nvar normalizeRanks = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\").normalizeRanks;\nvar parentDummyChains = __webpack_require__(/*! ./parent-dummy-chains */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/parent-dummy-chains.js\");\nvar removeEmptyRanks = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\").removeEmptyRanks;\nvar nestingGraph = __webpack_require__(/*! ./nesting-graph */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/nesting-graph.js\");\nvar addBorderSegments = __webpack_require__(/*! ./add-border-segments */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/add-border-segments.js\");\nvar coordinateSystem = __webpack_require__(/*! ./coordinate-system */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/coordinate-system.js\");\nvar order = __webpack_require__(/*! ./order */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/index.js\");\nvar position = __webpack_require__(/*! ./position */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/index.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\nvar Graph = __webpack_require__(/*! ./graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\nvar initDataOrder = __webpack_require__(/*! ./order/init-data-order */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-data-order.js\");\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n // 如果在原图基础上修改,继承原图的order结果\n if (opts && !opts.keepNodeOrder && opts.prevGraph) {\n time(\" inheritOrder\", function() { inheritOrder(g, opts.prevGraph); });\n }\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n // 控制是否为边的label留位置(这会影响是否在边中间添加dummy node)\n if (!(opts && (opts.edgeLabelSpace === false))) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(layoutGraph); });\n }\n // TODO: 暂时处理层级设置不正确时的异常报错,提示设置正确的层级\n try {\n time(\" runLayout\", function() { runLayout(layoutGraph, time, opts); });\n } catch(e) {\n if (e.message === \"Not possible to find intersection inside of the rectangle\") {\n console.error('The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph\\'s structure:\\n', e);\n return;\n } else {\n throw(e);\n }\n }\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time, opts) {\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n if (opts && opts.keepNodeOrder) {\n time(\" initDataOrder\", function() { initDataOrder(g, opts.nodeOrder); });\n }\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/**\n * 继承上一个布局中的order,防止翻转\n * TODO: 暂时没有考虑涉及层级变动的布局,只保证原来布局层级和相对顺序不变\n */\nfunction inheritOrder(currG, prevG) {\n var prevNodeMap = prevG._nodes;\n _.forEach(currG.nodes(), function (n) {\n var node = currG.node(n);\n if (prevNodeMap[n] !== undefined) {\n node.fixorder = prevNodeMap[n]._order;\n delete prevNodeMap[n]._order;\n } else {\n delete node.fixorder;\n }\n });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n inputLabel._order = layoutLabel.order;\n inputLabel._rank = layoutLabel.rank;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\", \"layer\", \"fixorder\"]; // 需要传入layer, fixOrder作为参数参考\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.nodes(), function(n) {\n var node = g.node(n);\n if (!isNaN(node.layer)) {\n node.layer *= 2; // TODO: 因为默认的rank变为两倍,设定的layer也*2\n }\n });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvbGF5b3V0LmpzP2ViMTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFFQUFVO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyx1RUFBVztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQywyRUFBYTtBQUNyQyxXQUFXLG1CQUFPLENBQUMsdUVBQVE7QUFDM0IscUJBQXFCLG1CQUFPLENBQUMsaUVBQVE7QUFDckMsd0JBQXdCLG1CQUFPLENBQUMsK0ZBQXVCO0FBQ3ZELHVCQUF1QixtQkFBTyxDQUFDLGlFQUFRO0FBQ3ZDLG1CQUFtQixtQkFBTyxDQUFDLG1GQUFpQjtBQUM1Qyx3QkFBd0IsbUJBQU8sQ0FBQywrRkFBdUI7QUFDdkQsdUJBQXVCLG1CQUFPLENBQUMsMkZBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyx5RUFBUztBQUM3QixlQUFlLG1CQUFPLENBQUMsK0VBQVk7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGlFQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5RUFBWTtBQUNoQyxvQkFBb0IsbUJBQU8sQ0FBQyxtR0FBeUI7O0FBRXJEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsaUNBQWlDLEVBQUU7QUFDNUU7QUFDQTtBQUNBLDZDQUE2Qyw0QkFBNEIsRUFBRTtBQUMzRTtBQUNBO0FBQ0EsbURBQW1ELHFDQUFxQyxFQUFFO0FBQzFGO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxvQ0FBb0MsRUFBRTtBQUNuRixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxrQ0FBa0MsRUFBRTtBQUMvRSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxpREFBaUQsb0JBQW9CLEVBQUU7QUFDdkUsaURBQWlELGdCQUFnQixFQUFFO0FBQ25FLGlEQUFpRCxxQkFBcUIsRUFBRTtBQUN4RSxpREFBaUQsa0NBQWtDLEVBQUU7QUFDckYsaURBQWlELDJCQUEyQixFQUFFO0FBQzlFLGlEQUFpRCxxQkFBcUIsRUFBRTtBQUN4RSxpREFBaUQseUJBQXlCLEVBQUU7QUFDNUUsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCxxQkFBcUIsRUFBRTtBQUN4RSxpREFBaUQsMkJBQTJCLEVBQUU7QUFDOUUsaURBQWlELGtCQUFrQixFQUFFO0FBQ3JFLGlEQUFpRCxzQkFBc0IsRUFBRTtBQUN6RSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekU7QUFDQSwwQ0FBMEMsa0NBQWtDLEVBQUU7QUFDOUU7QUFDQSxpREFBaUQsVUFBVSxFQUFFO0FBQzdELGlEQUFpRCxvQkFBb0IsRUFBRTtBQUN2RSxpREFBaUQsNEJBQTRCLEVBQUU7QUFDL0UsaURBQWlELGFBQWEsRUFBRTtBQUNoRSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELHNCQUFzQixFQUFFO0FBQ3pFLGlEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RSxpREFBaUQseUJBQXlCLEVBQUU7QUFDNUUsaURBQWlELDBCQUEwQixFQUFFO0FBQzdFLGlEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RSxpREFBaUQseUJBQXlCLEVBQUU7QUFDNUUsaURBQWlELGtDQUFrQyxFQUFFO0FBQ3JGLGlEQUFpRCxpQkFBaUIsRUFBRTtBQUNwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EsNERBQTREO0FBQzVELG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsbUNBQW1DO0FBQ3hEOztBQUVBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9DQUFvQyx3QkFBd0IsRUFBRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQixnQkFBZ0I7QUFDM0MsMkJBQTJCLGdCQUFnQjtBQUMzQyxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywwQkFBMEI7QUFDbkMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL2xheW91dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBhY3ljbGljID0gcmVxdWlyZShcIi4vYWN5Y2xpY1wiKTtcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKFwiLi9ub3JtYWxpemVcIik7XG52YXIgcmFuayA9IHJlcXVpcmUoXCIuL3JhbmtcIik7XG52YXIgbm9ybWFsaXplUmFua3MgPSByZXF1aXJlKFwiLi91dGlsXCIpLm5vcm1hbGl6ZVJhbmtzO1xudmFyIHBhcmVudER1bW15Q2hhaW5zID0gcmVxdWlyZShcIi4vcGFyZW50LWR1bW15LWNoYWluc1wiKTtcbnZhciByZW1vdmVFbXB0eVJhbmtzID0gcmVxdWlyZShcIi4vdXRpbFwiKS5yZW1vdmVFbXB0eVJhbmtzO1xudmFyIG5lc3RpbmdHcmFwaCA9IHJlcXVpcmUoXCIuL25lc3RpbmctZ3JhcGhcIik7XG52YXIgYWRkQm9yZGVyU2VnbWVudHMgPSByZXF1aXJlKFwiLi9hZGQtYm9yZGVyLXNlZ21lbnRzXCIpO1xudmFyIGNvb3JkaW5hdGVTeXN0ZW0gPSByZXF1aXJlKFwiLi9jb29yZGluYXRlLXN5c3RlbVwiKTtcbnZhciBvcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyXCIpO1xudmFyIHBvc2l0aW9uID0gcmVxdWlyZShcIi4vcG9zaXRpb25cIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBpbml0RGF0YU9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvaW5pdC1kYXRhLW9yZGVyXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxheW91dDtcblxuZnVuY3Rpb24gbGF5b3V0KGcsIG9wdHMpIHtcbiAgdmFyIHRpbWUgPSBvcHRzICYmIG9wdHMuZGVidWdUaW1pbmcgPyB1dGlsLnRpbWUgOiB1dGlsLm5vdGltZTtcbiAgdGltZShcImxheW91dFwiLCBmdW5jdGlvbigpIHtcbiAgICAvLyDlpoLmnpzlnKjljp/lm77ln7rnoYDkuIrkv67mlLnvvIznu6fmib/ljp/lm77nmoRvcmRlcue7k+aenFxuICAgIGlmIChvcHRzICYmICFvcHRzLmtlZXBOb2RlT3JkZXIgJiYgb3B0cy5wcmV2R3JhcGgpIHtcbiAgICAgIHRpbWUoXCIgIGluaGVyaXRPcmRlclwiLCBmdW5jdGlvbigpIHsgaW5oZXJpdE9yZGVyKGcsIG9wdHMucHJldkdyYXBoKTsgfSk7XG4gICAgfVxuICAgIHZhciBsYXlvdXRHcmFwaCA9IFxuICAgICAgdGltZShcIiAgYnVpbGRMYXlvdXRHcmFwaFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGJ1aWxkTGF5b3V0R3JhcGgoZyk7IH0pO1xuICAgIC8vIOaOp+WItuaYr+WQpuS4uui+ueeahGxhYmVs55WZ5L2N572u77yI6L+Z5Lya5b2x5ZON5piv5ZCm5Zyo6L655Lit6Ze05re75YqgZHVtbXkgbm9kZe+8iVxuICAgIGlmICghKG9wdHMgJiYgKG9wdHMuZWRnZUxhYmVsU3BhY2UgPT09IGZhbHNlKSkpIHtcbiAgICAgIHRpbWUoXCIgIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHNcIiwgZnVuY3Rpb24oKSB7IG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMobGF5b3V0R3JhcGgpOyB9KTtcbiAgICB9XG4gICAgLy8gVE9ETzog5pqC5pe25aSE55CG5bGC57qn6K6+572u5LiN5q2j56Gu5pe255qE5byC5bi45oql6ZSZ77yM5o+Q56S66K6+572u5q2j56Gu55qE5bGC57qnXG4gICAgdHJ5IHtcbiAgICAgIHRpbWUoXCIgIHJ1bkxheW91dFwiLCAgICAgICAgZnVuY3Rpb24oKSB7IHJ1bkxheW91dChsYXlvdXRHcmFwaCwgdGltZSwgb3B0cyk7IH0pO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgaWYgKGUubWVzc2FnZSA9PT0gXCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGVcIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUaGUgZm9sbG93aW5nIGVycm9yIG1heSBiZSBjYXVzZWQgYnkgaW1wcm9wZXIgbGF5ZXIgc2V0dGluZywgcGxlYXNlIG1ha2Ugc3VyZSB5b3VyIG1hbnVhbCBsYXllciBzZXR0aW5nIGRvZXMgbm90IHZpb2xhdGUgdGhlIGdyYXBoXFwncyBzdHJ1Y3R1cmU6XFxuJywgZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93KGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aW1lKFwiICB1cGRhdGVJbnB1dEdyYXBoXCIsIGZ1bmN0aW9uKCkgeyB1cGRhdGVJbnB1dEdyYXBoKGcsIGxheW91dEdyYXBoKTsgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5MYXlvdXQoZywgdGltZSwgb3B0cykge1xuICB0aW1lKFwiICAgIHJlbW92ZVNlbGZFZGdlc1wiLCAgICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZVNlbGZFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWN5Y2xpY1wiLCAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgYWN5Y2xpYy5ydW4oZyk7IH0pO1xuICB0aW1lKFwiICAgIG5lc3RpbmdHcmFwaC5ydW5cIiwgICAgICAgZnVuY3Rpb24oKSB7IG5lc3RpbmdHcmFwaC5ydW4oZyk7IH0pO1xuICB0aW1lKFwiICAgIHJhbmtcIiwgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJhbmsodXRpbC5hc05vbkNvbXBvdW5kR3JhcGgoZykpOyB9KTtcbiAgdGltZShcIiAgICBpbmplY3RFZGdlTGFiZWxQcm94aWVzXCIsIGZ1bmN0aW9uKCkgeyBpbmplY3RFZGdlTGFiZWxQcm94aWVzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVFbXB0eVJhbmtzXCIsICAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVFbXB0eVJhbmtzKGcpOyB9KTtcbiAgdGltZShcIiAgICBuZXN0aW5nR3JhcGguY2xlYW51cFwiLCAgIGZ1bmN0aW9uKCkgeyBuZXN0aW5nR3JhcGguY2xlYW51cChnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplUmFua3NcIiwgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplUmFua3MoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFzc2lnblJhbmtNaW5NYXhcIiwgICAgICAgZnVuY3Rpb24oKSB7IGFzc2lnblJhbmtNaW5NYXgoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUVkZ2VMYWJlbFByb3hpZXNcIiwgZnVuY3Rpb24oKSB7IHJlbW92ZUVkZ2VMYWJlbFByb3hpZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5vcm1hbGl6ZS5ydW5cIiwgICAgICAgICAgZnVuY3Rpb24oKSB7IG5vcm1hbGl6ZS5ydW4oZyk7IH0pO1xuICB0aW1lKFwiICAgIHBhcmVudER1bW15Q2hhaW5zXCIsICAgICAgZnVuY3Rpb24oKSB7IHBhcmVudER1bW15Q2hhaW5zKGcpOyB9KTtcbiAgdGltZShcIiAgICBhZGRCb3JkZXJTZWdtZW50c1wiLCAgICAgIGZ1bmN0aW9uKCkgeyBhZGRCb3JkZXJTZWdtZW50cyhnKTsgfSk7XG4gIGlmIChvcHRzICYmIG9wdHMua2VlcE5vZGVPcmRlcikge1xuICAgIHRpbWUoXCIgICAgaW5pdERhdGFPcmRlclwiLCBmdW5jdGlvbigpIHsgaW5pdERhdGFPcmRlcihnLCBvcHRzLm5vZGVPcmRlcik7IH0pO1xuICB9XG4gIHRpbWUoXCIgICAgb3JkZXJcIiwgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgb3JkZXIoZyk7IH0pO1xuICB0aW1lKFwiICAgIGluc2VydFNlbGZFZGdlc1wiLCAgICAgICAgZnVuY3Rpb24oKSB7IGluc2VydFNlbGZFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbVwiLCBmdW5jdGlvbigpIHsgY29vcmRpbmF0ZVN5c3RlbS5hZGp1c3QoZyk7IH0pO1xuICB0aW1lKFwiICAgIHBvc2l0aW9uXCIsICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHBvc2l0aW9uKGcpOyB9KTtcbiAgdGltZShcIiAgICBwb3NpdGlvblNlbGZFZGdlc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyBwb3NpdGlvblNlbGZFZGdlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlQm9yZGVyTm9kZXNcIiwgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlQm9yZGVyTm9kZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5vcm1hbGl6ZS51bmRvXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IG5vcm1hbGl6ZS51bmRvKGcpOyB9KTtcbiAgdGltZShcIiAgICBmaXh1cEVkZ2VMYWJlbENvb3Jkc1wiLCAgIGZ1bmN0aW9uKCkgeyBmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW1cIiwgICBmdW5jdGlvbigpIHsgY29vcmRpbmF0ZVN5c3RlbS51bmRvKGcpOyB9KTtcbiAgdGltZShcIiAgICB0cmFuc2xhdGVHcmFwaFwiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyB0cmFuc2xhdGVHcmFwaChnKTsgfSk7XG4gIHRpbWUoXCIgICAgYXNzaWduTm9kZUludGVyc2VjdHNcIiwgICBmdW5jdGlvbigpIHsgYXNzaWduTm9kZUludGVyc2VjdHMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJldmVyc2VQb2ludHNcIiwgICAgICAgICAgZnVuY3Rpb24oKSB7IHJldmVyc2VQb2ludHNGb3JSZXZlcnNlZEVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhY3ljbGljLnVuZG9cIiwgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBhY3ljbGljLnVuZG8oZyk7IH0pO1xufVxuXG4vKipcbiAqIOe7p+aJv+S4iuS4gOS4quW4g+WxgOS4reeahG9yZGVy77yM6Ziy5q2i57+76L2sXG4gKiBUT0RPOiDmmoLml7bmsqHmnInogIPomZHmtonlj4rlsYLnuqflj5jliqjnmoTluIPlsYDvvIzlj6rkv53or4Hljp/mnaXluIPlsYDlsYLnuqflkoznm7jlr7npobrluo/kuI3lj5hcbiAqL1xuZnVuY3Rpb24gaW5oZXJpdE9yZGVyKGN1cnJHLCBwcmV2Rykge1xuICB2YXIgcHJldk5vZGVNYXAgPSBwcmV2Ry5fbm9kZXM7XG4gIF8uZm9yRWFjaChjdXJyRy5ub2RlcygpLCBmdW5jdGlvbiAobikge1xuICAgIHZhciBub2RlID0gY3Vyckcubm9kZShuKTtcbiAgICBpZiAocHJldk5vZGVNYXBbbl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbm9kZS5maXhvcmRlciA9IHByZXZOb2RlTWFwW25dLl9vcmRlcjtcbiAgICAgIGRlbGV0ZSBwcmV2Tm9kZU1hcFtuXS5fb3JkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBub2RlLmZpeG9yZGVyO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qXG4gKiBDb3BpZXMgZmluYWwgbGF5b3V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGxheW91dCBncmFwaCBiYWNrIHRvIHRoZSBpbnB1dFxuICogZ3JhcGguIFRoaXMgcHJvY2VzcyBvbmx5IGNvcGllcyB3aGl0ZWxpc3RlZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGxheW91dCBncmFwaFxuICogdG8gdGhlIGlucHV0IGdyYXBoLCBzbyBpdCBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiB1cGRhdGVJbnB1dEdyYXBoKGlucHV0R3JhcGgsIGxheW91dEdyYXBoKSB7XG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGgubm9kZSh2KTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5ub2RlKHYpO1xuXG4gICAgaWYgKGlucHV0TGFiZWwpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuICAgICAgaW5wdXRMYWJlbC5fb3JkZXIgPSBsYXlvdXRMYWJlbC5vcmRlcjtcbiAgICAgIGlucHV0TGFiZWwuX3JhbmsgPSBsYXlvdXRMYWJlbC5yYW5rO1xuXG4gICAgICBpZiAobGF5b3V0R3JhcGguY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICAgIGlucHV0TGFiZWwud2lkdGggPSBsYXlvdXRMYWJlbC53aWR0aDtcbiAgICAgICAgaW5wdXRMYWJlbC5oZWlnaHQgPSBsYXlvdXRMYWJlbC5oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLmVkZ2UoZSk7XG4gICAgdmFyIGxheW91dExhYmVsID0gbGF5b3V0R3JhcGguZWRnZShlKTtcblxuICAgIGlucHV0TGFiZWwucG9pbnRzID0gbGF5b3V0TGFiZWwucG9pbnRzO1xuICAgIGlmIChfLmhhcyhsYXlvdXRMYWJlbCwgXCJ4XCIpKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcbiAgICB9XG4gIH0pO1xuXG4gIGlucHV0R3JhcGguZ3JhcGgoKS53aWR0aCA9IGxheW91dEdyYXBoLmdyYXBoKCkud2lkdGg7XG4gIGlucHV0R3JhcGguZ3JhcGgoKS5oZWlnaHQgPSBsYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodDtcbn1cblxudmFyIGdyYXBoTnVtQXR0cnMgPSBbXCJub2Rlc2VwXCIsIFwiZWRnZXNlcFwiLCBcInJhbmtzZXBcIiwgXCJtYXJnaW54XCIsIFwibWFyZ2lueVwiXTtcbnZhciBncmFwaERlZmF1bHRzID0geyByYW5rc2VwOiA1MCwgZWRnZXNlcDogMjAsIG5vZGVzZXA6IDUwLCByYW5rZGlyOiBcInRiXCIgfTtcbnZhciBncmFwaEF0dHJzID0gW1wiYWN5Y2xpY2VyXCIsIFwicmFua2VyXCIsIFwicmFua2RpclwiLCBcImFsaWduXCJdO1xudmFyIG5vZGVOdW1BdHRycyA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwibGF5ZXJcIiwgXCJmaXhvcmRlclwiXTsgLy8g6ZyA6KaB5Lyg5YWlbGF5ZXIsIGZpeE9yZGVy5L2c5Li65Y+C5pWw5Y+C6ICDXG52YXIgbm9kZURlZmF1bHRzID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG52YXIgZWRnZU51bUF0dHJzID0gW1wibWlubGVuXCIsIFwid2VpZ2h0XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJsYWJlbG9mZnNldFwiXTtcbnZhciBlZGdlRGVmYXVsdHMgPSB7XG4gIG1pbmxlbjogMSwgd2VpZ2h0OiAxLCB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICBsYWJlbG9mZnNldDogMTAsIGxhYmVscG9zOiBcInJcIlxufTtcbnZhciBlZGdlQXR0cnMgPSBbXCJsYWJlbHBvc1wiXTtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBuZXcgZ3JhcGggZnJvbSB0aGUgaW5wdXQgZ3JhcGgsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBsYXlvdXQuXG4gKiBUaGlzIHByb2Nlc3MgY29waWVzIG9ubHkgd2hpdGVsaXN0ZWQgYXR0cmlidXRlcyBmcm9tIHRoZSBpbnB1dCBncmFwaCB0byB0aGVcbiAqIGxheW91dCBncmFwaC4gVGh1cyB0aGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5b3V0R3JhcGgoaW5wdXRHcmFwaCkge1xuICB2YXIgZyA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUsIGNvbXBvdW5kOiB0cnVlIH0pO1xuICB2YXIgZ3JhcGggPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ncmFwaCgpKTtcblxuICBnLnNldEdyYXBoKF8ubWVyZ2Uoe30sXG4gICAgZ3JhcGhEZWZhdWx0cyxcbiAgICBzZWxlY3ROdW1iZXJBdHRycyhncmFwaCwgZ3JhcGhOdW1BdHRycyksXG4gICAgXy5waWNrKGdyYXBoLCBncmFwaEF0dHJzKSkpO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLm5vZGUodikpO1xuICAgIGcuc2V0Tm9kZSh2LCBfLmRlZmF1bHRzKHNlbGVjdE51bWJlckF0dHJzKG5vZGUsIG5vZGVOdW1BdHRycyksIG5vZGVEZWZhdWx0cykpO1xuICAgIGcuc2V0UGFyZW50KHYsIGlucHV0R3JhcGgucGFyZW50KHYpKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZWRnZShlKSk7XG4gICAgZy5zZXRFZGdlKGUsIF8ubWVyZ2Uoe30sXG4gICAgICBlZGdlRGVmYXVsdHMsXG4gICAgICBzZWxlY3ROdW1iZXJBdHRycyhlZGdlLCBlZGdlTnVtQXR0cnMpLFxuICAgICAgXy5waWNrKGVkZ2UsIGVkZ2VBdHRycykpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGc7XG59XG5cbi8qXG4gKiBUaGlzIGlkZWEgY29tZXMgZnJvbSB0aGUgR2Fuc25lciBwYXBlcjogdG8gYWNjb3VudCBmb3IgZWRnZSBsYWJlbHMgaW4gb3VyXG4gKiBsYXlvdXQgd2Ugc3BsaXQgZWFjaCByYW5rIGluIGhhbGYgYnkgZG91YmxpbmcgbWlubGVuIGFuZCBoYWx2aW5nIHJhbmtzZXAuXG4gKiBUaGVuIHdlIGNhbiBwbGFjZSBsYWJlbHMgYXQgdGhlc2UgbWlkLXBvaW50cyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFdlIGFsc28gYWRkIHNvbWUgbWluaW1hbCBwYWRkaW5nIHRvIHRoZSB3aWR0aCB0byBwdXNoIHRoZSBsYWJlbCBmb3IgdGhlIGVkZ2VcbiAqIGF3YXkgZnJvbSB0aGUgZWRnZSBpdHNlbGYgYSBiaXQuXG4gKi9cbmZ1bmN0aW9uIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZykge1xuICB2YXIgZ3JhcGggPSBnLmdyYXBoKCk7XG4gIGdyYXBoLnJhbmtzZXAgLz0gMjtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24obikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKG4pO1xuICAgIGlmICghaXNOYU4obm9kZS5sYXllcikpIHtcbiAgICAgIG5vZGUubGF5ZXIgKj0gMjsgLy8gVE9ETzog5Zug5Li66buY6K6k55qEcmFua+WPmOS4uuS4pOWAje+8jOiuvuWumueahGxheWVy5LmfKjJcbiAgICB9XG4gIH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgZWRnZS5taW5sZW4gKj0gMjtcbiAgICBpZiAoZWRnZS5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpICE9PSBcImNcIikge1xuICAgICAgaWYgKGdyYXBoLnJhbmtkaXIgPT09IFwiVEJcIiB8fCBncmFwaC5yYW5rZGlyID09PSBcIkJUXCIpIHtcbiAgICAgICAgZWRnZS53aWR0aCArPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRnZS5oZWlnaHQgKz0gZWRnZS5sYWJlbG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKlxuICogQ3JlYXRlcyB0ZW1wb3JhcnkgZHVtbXkgbm9kZXMgdGhhdCBjYXB0dXJlIHRoZSByYW5rIGluIHdoaWNoIGVhY2ggZWRnZSdzXG4gKiBsYWJlbCBpcyBnb2luZyB0bywgaWYgaXQgaGFzIG9uZSBvZiBub24temVybyB3aWR0aCBhbmQgaGVpZ2h0LiBXZSBkbyB0aGlzXG4gKiBzbyB0aGF0IHdlIGNhbiBzYWZlbHkgcmVtb3ZlIGVtcHR5IHJhbmtzIHdoaWxlIHByZXNlcnZpbmcgYmFsYW5jZSBmb3IgdGhlXG4gKiBsYWJlbCdzIHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBpbmplY3RFZGdlTGFiZWxQcm94aWVzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLndpZHRoICYmIGVkZ2UuaGVpZ2h0KSB7XG4gICAgICB2YXIgdiA9IGcubm9kZShlLnYpO1xuICAgICAgdmFyIHcgPSBnLm5vZGUoZS53KTtcbiAgICAgIHZhciBsYWJlbCA9IHsgcmFuazogKHcucmFuayAtIHYucmFuaykgLyAyICsgdi5yYW5rLCBlOiBlIH07XG4gICAgICB1dGlsLmFkZER1bW15Tm9kZShnLCBcImVkZ2UtcHJveHlcIiwgbGFiZWwsIFwiX2VwXCIpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnblJhbmtNaW5NYXgoZykge1xuICB2YXIgbWF4UmFuayA9IDA7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAobm9kZS5ib3JkZXJUb3ApIHtcbiAgICAgIG5vZGUubWluUmFuayA9IGcubm9kZShub2RlLmJvcmRlclRvcCkucmFuaztcbiAgICAgIG5vZGUubWF4UmFuayA9IGcubm9kZShub2RlLmJvcmRlckJvdHRvbSkucmFuaztcbiAgICAgIG1heFJhbmsgPSBfLm1heChtYXhSYW5rLCBub2RlLm1heFJhbmspO1xuICAgIH1cbiAgfSk7XG4gIGcuZ3JhcGgoKS5tYXhSYW5rID0gbWF4UmFuaztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAobm9kZS5kdW1teSA9PT0gXCJlZGdlLXByb3h5XCIpIHtcbiAgICAgIGcuZWRnZShub2RlLmUpLmxhYmVsUmFuayA9IG5vZGUucmFuaztcbiAgICAgIGcucmVtb3ZlTm9kZSh2KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVHcmFwaChnKSB7XG4gIHZhciBtaW5YID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICB2YXIgbWF4WCA9IDA7XG4gIHZhciBtaW5ZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICB2YXIgbWF4WSA9IDA7XG4gIHZhciBncmFwaExhYmVsID0gZy5ncmFwaCgpO1xuICB2YXIgbWFyZ2luWCA9IGdyYXBoTGFiZWwubWFyZ2lueCB8fCAwO1xuICB2YXIgbWFyZ2luWSA9IGdyYXBoTGFiZWwubWFyZ2lueSB8fCAwO1xuXG4gIGZ1bmN0aW9uIGdldEV4dHJlbWVzKGF0dHJzKSB7XG4gICAgdmFyIHggPSBhdHRycy54O1xuICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICB2YXIgdyA9IGF0dHJzLndpZHRoO1xuICAgIHZhciBoID0gYXR0cnMuaGVpZ2h0O1xuICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCB4IC0gdyAvIDIpO1xuICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB4ICsgdyAvIDIpO1xuICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCB5IC0gaCAvIDIpO1xuICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCB5ICsgaCAvIDIpO1xuICB9XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBnZXRFeHRyZW1lcyhnLm5vZGUodikpOyB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIGdldEV4dHJlbWVzKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgbWluWCAtPSBtYXJnaW5YO1xuICBtaW5ZIC09IG1hcmdpblk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIG5vZGUueCAtPSBtaW5YO1xuICAgIG5vZGUueSAtPSBtaW5ZO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCBmdW5jdGlvbihwKSB7XG4gICAgICBwLnggLT0gbWluWDtcbiAgICAgIHAueSAtPSBtaW5ZO1xuICAgIH0pO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHsgZWRnZS54IC09IG1pblg7IH1cbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ5XCIpKSB7IGVkZ2UueSAtPSBtaW5ZOyB9XG4gIH0pO1xuXG4gIGdyYXBoTGFiZWwud2lkdGggPSBtYXhYIC0gbWluWCArIG1hcmdpblg7XG4gIGdyYXBoTGFiZWwuaGVpZ2h0ID0gbWF4WSAtIG1pblkgKyBtYXJnaW5ZO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25Ob2RlSW50ZXJzZWN0cyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICB2YXIgbm9kZVYgPSBnLm5vZGUoZS52KTtcbiAgICB2YXIgbm9kZVcgPSBnLm5vZGUoZS53KTtcbiAgICB2YXIgcDEsIHAyO1xuICAgIGlmICghZWRnZS5wb2ludHMpIHtcbiAgICAgIGVkZ2UucG9pbnRzID0gW107XG4gICAgICBwMSA9IG5vZGVXO1xuICAgICAgcDIgPSBub2RlVjtcbiAgICB9IGVsc2Uge1xuICAgICAgcDEgPSBlZGdlLnBvaW50c1swXTtcbiAgICAgIHAyID0gZWRnZS5wb2ludHNbZWRnZS5wb2ludHMubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIGVkZ2UucG9pbnRzLnVuc2hpZnQodXRpbC5pbnRlcnNlY3RSZWN0KG5vZGVWLCBwMSkpO1xuICAgIGVkZ2UucG9pbnRzLnB1c2godXRpbC5pbnRlcnNlY3RSZWN0KG5vZGVXLCBwMikpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZml4dXBFZGdlTGFiZWxDb29yZHMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgaWYgKGVkZ2UubGFiZWxwb3MgPT09IFwibFwiIHx8IGVkZ2UubGFiZWxwb3MgPT09IFwiclwiKSB7XG4gICAgICAgIGVkZ2Uud2lkdGggLT0gZWRnZS5sYWJlbG9mZnNldDtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoZWRnZS5sYWJlbHBvcykge1xuICAgICAgY2FzZSBcImxcIjogZWRnZS54IC09IGVkZ2Uud2lkdGggLyAyICsgZWRnZS5sYWJlbG9mZnNldDsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBlZGdlLnggKz0gZWRnZS53aWR0aCAvIDIgKyBlZGdlLmxhYmVsb2Zmc2V0OyBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXZlcnNlUG9pbnRzRm9yUmV2ZXJzZWRFZGdlcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoZWRnZS5yZXZlcnNlZCkge1xuICAgICAgZWRnZS5wb2ludHMucmV2ZXJzZSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUJvcmRlck5vZGVzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGlmIChnLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgICB2YXIgdCA9IGcubm9kZShub2RlLmJvcmRlclRvcCk7XG4gICAgICB2YXIgYiA9IGcubm9kZShub2RlLmJvcmRlckJvdHRvbSk7XG4gICAgICB2YXIgbCA9IGcubm9kZShfLmxhc3Qobm9kZS5ib3JkZXJMZWZ0KSk7XG4gICAgICB2YXIgciA9IGcubm9kZShfLmxhc3Qobm9kZS5ib3JkZXJSaWdodCkpO1xuXG4gICAgICBub2RlLndpZHRoID0gTWF0aC5hYnMoci54IC0gbC54KTtcbiAgICAgIG5vZGUuaGVpZ2h0ID0gTWF0aC5hYnMoYi55IC0gdC55KTtcbiAgICAgIG5vZGUueCA9IGwueCArIG5vZGUud2lkdGggLyAyO1xuICAgICAgbm9kZS55ID0gdC55ICsgbm9kZS5oZWlnaHQgLyAyO1xuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgIGcucmVtb3ZlTm9kZSh2KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTZWxmRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKGUudiA9PT0gZS53KSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZShlLnYpO1xuICAgICAgaWYgKCFub2RlLnNlbGZFZGdlcykge1xuICAgICAgICBub2RlLnNlbGZFZGdlcyA9IFtdO1xuICAgICAgfVxuICAgICAgbm9kZS5zZWxmRWRnZXMucHVzaCh7IGU6IGUsIGxhYmVsOiBnLmVkZ2UoZSkgfSk7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U2VsZkVkZ2VzKGcpIHtcbiAgdmFyIGxheWVycyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgXy5mb3JFYWNoKGxheWVycywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgb3JkZXJTaGlmdCA9IDA7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgIG5vZGUub3JkZXIgPSBpICsgb3JkZXJTaGlmdDtcbiAgICAgIF8uZm9yRWFjaChub2RlLnNlbGZFZGdlcywgZnVuY3Rpb24oc2VsZkVkZ2UpIHtcbiAgICAgICAgdXRpbC5hZGREdW1teU5vZGUoZywgXCJzZWxmZWRnZVwiLCB7XG4gICAgICAgICAgd2lkdGg6IHNlbGZFZGdlLmxhYmVsLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogc2VsZkVkZ2UubGFiZWwuaGVpZ2h0LFxuICAgICAgICAgIHJhbms6IG5vZGUucmFuayxcbiAgICAgICAgICBvcmRlcjogaSArICgrK29yZGVyU2hpZnQpLFxuICAgICAgICAgIGU6IHNlbGZFZGdlLmUsXG4gICAgICAgICAgbGFiZWw6IHNlbGZFZGdlLmxhYmVsXG4gICAgICAgIH0sIFwiX3NlXCIpO1xuICAgICAgfSk7XG4gICAgICBkZWxldGUgbm9kZS5zZWxmRWRnZXM7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblNlbGZFZGdlcyhnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAobm9kZS5kdW1teSA9PT0gXCJzZWxmZWRnZVwiKSB7XG4gICAgICB2YXIgc2VsZk5vZGUgPSBnLm5vZGUobm9kZS5lLnYpO1xuICAgICAgdmFyIHggPSBzZWxmTm9kZS54ICsgc2VsZk5vZGUud2lkdGggLyAyO1xuICAgICAgdmFyIHkgPSBzZWxmTm9kZS55O1xuICAgICAgdmFyIGR4ID0gbm9kZS54IC0geDtcbiAgICAgIHZhciBkeSA9IHNlbGZOb2RlLmhlaWdodCAvIDI7XG4gICAgICBnLnNldEVkZ2Uobm9kZS5lLCBub2RlLmxhYmVsKTtcbiAgICAgIGcucmVtb3ZlTm9kZSh2KTtcbiAgICAgIG5vZGUubGFiZWwucG9pbnRzID0gW1xuICAgICAgICB7IHg6IHggKyAyICogZHggLyAzLCB5OiB5IC0gZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgNSAqIGR4IC8gNiwgeTogeSAtIGR5IH0sXG4gICAgICAgIHsgeDogeCArICAgICBkeCAgICAsIHk6IHkgfSxcbiAgICAgICAgeyB4OiB4ICsgNSAqIGR4IC8gNiwgeTogeSArIGR5IH0sXG4gICAgICAgIHsgeDogeCArIDIgKiBkeCAvIDMsIHk6IHkgKyBkeSB9XG4gICAgICBdO1xuICAgICAgbm9kZS5sYWJlbC54ID0gbm9kZS54O1xuICAgICAgbm9kZS5sYWJlbC55ID0gbm9kZS55O1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdE51bWJlckF0dHJzKG9iaiwgYXR0cnMpIHtcbiAgcmV0dXJuIF8ubWFwVmFsdWVzKF8ucGljayhvYmosIGF0dHJzKSwgTnVtYmVyKTtcbn1cblxuZnVuY3Rpb24gY2Fub25pY2FsaXplKGF0dHJzKSB7XG4gIHZhciBuZXdBdHRycyA9IHt9O1xuICBfLmZvckVhY2goYXR0cnMsIGZ1bmN0aW9uKHYsIGspIHtcbiAgICBuZXdBdHRyc1trLnRvTG93ZXJDYXNlKCldID0gdjtcbiAgfSk7XG4gIHJldHVybiBuZXdBdHRycztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/layout.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js": /*!***********************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// eslint-disable-next-line no-redeclare\n/* global window */\n\nvar lodash;\n\nif (true) {\n try {\n lodash = {\n cloneDeep: __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/_lodash@4.17.21@lodash/cloneDeep.js\"),\n constant: __webpack_require__(/*! lodash/constant */ \"./node_modules/_lodash@4.17.21@lodash/constant.js\"),\n defaults: __webpack_require__(/*! lodash/defaults */ \"./node_modules/_lodash@4.17.21@lodash/defaults.js\"),\n each: __webpack_require__(/*! lodash/each */ \"./node_modules/_lodash@4.17.21@lodash/each.js\"),\n filter: __webpack_require__(/*! lodash/filter */ \"./node_modules/_lodash@4.17.21@lodash/filter.js\"),\n find: __webpack_require__(/*! lodash/find */ \"./node_modules/_lodash@4.17.21@lodash/find.js\"),\n flatten: __webpack_require__(/*! lodash/flatten */ \"./node_modules/_lodash@4.17.21@lodash/flatten.js\"),\n forEach: __webpack_require__(/*! lodash/forEach */ \"./node_modules/_lodash@4.17.21@lodash/forEach.js\"),\n forIn: __webpack_require__(/*! lodash/forIn */ \"./node_modules/_lodash@4.17.21@lodash/forIn.js\"),\n has: __webpack_require__(/*! lodash/has */ \"./node_modules/_lodash@4.17.21@lodash/has.js\"),\n isUndefined: __webpack_require__(/*! lodash/isUndefined */ \"./node_modules/_lodash@4.17.21@lodash/isUndefined.js\"),\n last: __webpack_require__(/*! lodash/last */ \"./node_modules/_lodash@4.17.21@lodash/last.js\"),\n map: __webpack_require__(/*! lodash/map */ \"./node_modules/_lodash@4.17.21@lodash/map.js\"),\n mapValues: __webpack_require__(/*! lodash/mapValues */ \"./node_modules/_lodash@4.17.21@lodash/mapValues.js\"),\n max: __webpack_require__(/*! lodash/max */ \"./node_modules/_lodash@4.17.21@lodash/max.js\"),\n merge: __webpack_require__(/*! lodash/merge */ \"./node_modules/_lodash@4.17.21@lodash/merge.js\"),\n min: __webpack_require__(/*! lodash/min */ \"./node_modules/_lodash@4.17.21@lodash/min.js\"),\n minBy: __webpack_require__(/*! lodash/minBy */ \"./node_modules/_lodash@4.17.21@lodash/minBy.js\"),\n now: __webpack_require__(/*! lodash/now */ \"./node_modules/_lodash@4.17.21@lodash/now.js\"),\n pick: __webpack_require__(/*! lodash/pick */ \"./node_modules/_lodash@4.17.21@lodash/pick.js\"),\n range: __webpack_require__(/*! lodash/range */ \"./node_modules/_lodash@4.17.21@lodash/range.js\"),\n reduce: __webpack_require__(/*! lodash/reduce */ \"./node_modules/_lodash@4.17.21@lodash/reduce.js\"),\n sortBy: __webpack_require__(/*! lodash/sortBy */ \"./node_modules/_lodash@4.17.21@lodash/sortBy.js\"),\n uniqueId: __webpack_require__(/*! lodash/uniqueId */ \"./node_modules/_lodash@4.17.21@lodash/uniqueId.js\"),\n values: __webpack_require__(/*! lodash/values */ \"./node_modules/_lodash@4.17.21@lodash/values.js\"),\n zipObject: __webpack_require__(/*! lodash/zipObject */ \"./node_modules/_lodash@4.17.21@lodash/zipObject.js\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvbG9kYXNoLmpzP2QzNmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyw0RUFBa0I7QUFDM0MsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQWlCO0FBQ3pDLGdCQUFnQixtQkFBTyxDQUFDLDBFQUFpQjtBQUN6QyxZQUFZLG1CQUFPLENBQUMsa0VBQWE7QUFDakMsY0FBYyxtQkFBTyxDQUFDLHNFQUFlO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQyxrRUFBYTtBQUNqQyxlQUFlLG1CQUFPLENBQUMsd0VBQWdCO0FBQ3ZDLGVBQWUsbUJBQU8sQ0FBQyx3RUFBZ0I7QUFDdkMsYUFBYSxtQkFBTyxDQUFDLG9FQUFjO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyxnRUFBWTtBQUNoQyxtQkFBbUIsbUJBQU8sQ0FBQyxnRkFBb0I7QUFDL0MsWUFBWSxtQkFBTyxDQUFDLGtFQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxnRUFBWTtBQUMvQixpQkFBaUIsbUJBQU8sQ0FBQyw0RUFBa0I7QUFDM0MsV0FBVyxtQkFBTyxDQUFDLGdFQUFZO0FBQy9CLGFBQWEsbUJBQU8sQ0FBQyxvRUFBYztBQUNuQyxXQUFXLG1CQUFPLENBQUMsZ0VBQVk7QUFDL0IsYUFBYSxtQkFBTyxDQUFDLG9FQUFjO0FBQ25DLFdBQVcsbUJBQU8sQ0FBQyxnRUFBWTtBQUMvQixZQUFZLG1CQUFPLENBQUMsa0VBQWE7QUFDakMsYUFBYSxtQkFBTyxDQUFDLG9FQUFjO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxzRUFBZTtBQUNyQyxjQUFjLG1CQUFPLENBQUMsc0VBQWU7QUFDckMsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQWlCO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxzRUFBZTtBQUNyQyxpQkFBaUIsbUJBQU8sQ0FBQyw0RUFBa0I7QUFDM0M7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9sb2Rhc2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG4vKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmVEZWVwOiByZXF1aXJlKFwibG9kYXNoL2Nsb25lRGVlcFwiKSxcbiAgICAgIGNvbnN0YW50OiByZXF1aXJlKFwibG9kYXNoL2NvbnN0YW50XCIpLFxuICAgICAgZGVmYXVsdHM6IHJlcXVpcmUoXCJsb2Rhc2gvZGVmYXVsdHNcIiksXG4gICAgICBlYWNoOiByZXF1aXJlKFwibG9kYXNoL2VhY2hcIiksXG4gICAgICBmaWx0ZXI6IHJlcXVpcmUoXCJsb2Rhc2gvZmlsdGVyXCIpLFxuICAgICAgZmluZDogcmVxdWlyZShcImxvZGFzaC9maW5kXCIpLFxuICAgICAgZmxhdHRlbjogcmVxdWlyZShcImxvZGFzaC9mbGF0dGVuXCIpLFxuICAgICAgZm9yRWFjaDogcmVxdWlyZShcImxvZGFzaC9mb3JFYWNoXCIpLFxuICAgICAgZm9ySW46IHJlcXVpcmUoXCJsb2Rhc2gvZm9ySW5cIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAgbGFzdDogcmVxdWlyZShcImxvZGFzaC9sYXN0XCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIG1hcFZhbHVlczogcmVxdWlyZShcImxvZGFzaC9tYXBWYWx1ZXNcIiksXG4gICAgICBtYXg6IHJlcXVpcmUoXCJsb2Rhc2gvbWF4XCIpLFxuICAgICAgbWVyZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvbWVyZ2VcIiksXG4gICAgICBtaW46IHJlcXVpcmUoXCJsb2Rhc2gvbWluXCIpLFxuICAgICAgbWluQnk6IHJlcXVpcmUoXCJsb2Rhc2gvbWluQnlcIiksXG4gICAgICBub3c6IHJlcXVpcmUoXCJsb2Rhc2gvbm93XCIpLFxuICAgICAgcGljazogcmVxdWlyZShcImxvZGFzaC9waWNrXCIpLFxuICAgICAgcmFuZ2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmFuZ2VcIiksXG4gICAgICByZWR1Y2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmVkdWNlXCIpLFxuICAgICAgc29ydEJ5OiByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKSxcbiAgICAgIHVuaXF1ZUlkOiByZXF1aXJlKFwibG9kYXNoL3VuaXF1ZUlkXCIpLFxuICAgICAgdmFsdWVzOiByZXF1aXJlKFwibG9kYXNoL3ZhbHVlc1wiKSxcbiAgICAgIHppcE9iamVjdDogcmVxdWlyZShcImxvZGFzaC96aXBPYmplY3RcIiksXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/nesting-graph.js": /*!******************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/nesting-graph.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvbmVzdGluZy1ncmFwaC5qcz9iNWU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMxQixXQUFXLG1CQUFPLENBQUMsaUVBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBLDJDQUEyQztBQUMzQzs7QUFFQTs7QUFFQTtBQUNBLG9DQUFvQyw2QkFBNkIsRUFBRTs7QUFFbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDZCQUE2QjtBQUN2RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLDBCQUEwQix3Q0FBd0M7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsV0FBVyxFQUFFO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9uZXN0aW5nLWdyYXBoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgY2xlYW51cDogY2xlYW51cFxufTtcblxuLypcbiAqIEEgbmVzdGluZyBncmFwaCBjcmVhdGVzIGR1bW15IG5vZGVzIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMsXG4gKiBhZGRzIGFwcHJvcHJpYXRlIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBjbHVzdGVyIG5vZGVzIGFyZSBwbGFjZWQgYmV0d2VlblxuICogdGhlc2UgYm91bmRyaWVzLCBhbmQgZW5zdXJlcyB0aGF0IHRoZSBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gd2UgZW5zdXJlLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1pbmxlbiBwcm9wZXJ0eSwgdGhhdCBub2Rlc1xuICogYW5kIHN1YmdyYXBoIGJvcmRlciBub2RlcyB0byBub3QgZW5kIHVwIG9uIHRoZSBzYW1lIHJhbmsuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gTm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBhIG1pbmxlbiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocy5cbiAqICAgIDMuIFRoZSBtaW5sZW4gYXR0cmlidXRlIGZvciBub2RlcyBpcyBhZGp1c3RlZCB0byBlbnN1cmUgbm9kZXMgZG8gbm90XG4gKiAgICAgICBnZXQgcGxhY2VkIG9uIHRoZSBzYW1lIHJhbmsgYXMgc3ViZ3JhcGggYm9yZGVyIG5vZGVzLlxuICpcbiAqIFRoZSBuZXN0aW5nIGdyYXBoIGlkZWEgY29tZXMgZnJvbSBTYW5kZXIsIFwiTGF5b3V0IG9mIENvbXBvdW5kIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcInJvb3RcIiwge30sIFwiX3Jvb3RcIik7XG4gIHZhciBkZXB0aHMgPSB0cmVlRGVwdGhzKGcpO1xuICB2YXIgaGVpZ2h0ID0gXy5tYXgoXy52YWx1ZXMoZGVwdGhzKSkgLSAxOyAvLyBOb3RlOiBkZXB0aHMgaXMgYW4gT2JqZWN0IG5vdCBhbiBhcnJheVxuICB2YXIgbm9kZVNlcCA9IDIgKiBoZWlnaHQgKyAxO1xuXG4gIGcuZ3JhcGgoKS5uZXN0aW5nUm9vdCA9IHJvb3Q7XG5cbiAgLy8gTXVsdGlwbHkgbWlubGVuIGJ5IG5vZGVTZXAgdG8gYWxpZ24gbm9kZXMgb24gbm9uLWJvcmRlciByYW5rcy5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBnLmVkZ2UoZSkubWlubGVuICo9IG5vZGVTZXA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhIHdlaWdodCB0aGF0IGlzIHN1ZmZpY2llbnQgdG8ga2VlcCBzdWJncmFwaHMgdmVydGljYWxseSBjb21wYWN0XG4gIHZhciB3ZWlnaHQgPSBzdW1XZWlnaHRzKGcpICsgMTtcblxuICAvLyBDcmVhdGUgYm9yZGVyIG5vZGVzIGFuZCBsaW5rIHRoZW0gdXBcbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICB9KTtcblxuICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgLy8gbGF5ZXJzLlxuICBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3IgPSBub2RlU2VwO1xufVxuXG5mdW5jdGlvbiBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikge1xuICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmICh2ICE9PSByb290KSB7XG4gICAgICBnLnNldEVkZ2Uocm9vdCwgdiwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogbm9kZVNlcCB9KTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvcCA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9idFwiKTtcbiAgdmFyIGJvdHRvbSA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9iYlwiKTtcbiAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuXG4gIGcuc2V0UGFyZW50KHRvcCwgdik7XG4gIGxhYmVsLmJvcmRlclRvcCA9IHRvcDtcbiAgZy5zZXRQYXJlbnQoYm90dG9tLCB2KTtcbiAgbGFiZWwuYm9yZGVyQm90dG9tID0gYm90dG9tO1xuXG4gIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuXG4gICAgdmFyIGNoaWxkTm9kZSA9IGcubm9kZShjaGlsZCk7XG4gICAgdmFyIGNoaWxkVG9wID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IGNoaWxkTm9kZS5ib3JkZXJUb3AgOiBjaGlsZDtcbiAgICB2YXIgY2hpbGRCb3R0b20gPSBjaGlsZE5vZGUuYm9yZGVyQm90dG9tID8gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA6IGNoaWxkO1xuICAgIHZhciB0aGlzV2VpZ2h0ID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IHdlaWdodCA6IDIgKiB3ZWlnaHQ7XG4gICAgdmFyIG1pbmxlbiA9IGNoaWxkVG9wICE9PSBjaGlsZEJvdHRvbSA/IDEgOiBoZWlnaHQgLSBkZXB0aHNbdl0gKyAxO1xuXG4gICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcblxuICAgIGcuc2V0RWRnZShjaGlsZEJvdHRvbSwgYm90dG9tLCB7XG4gICAgICB3ZWlnaHQ6IHRoaXNXZWlnaHQsXG4gICAgICBtaW5sZW46IG1pbmxlbixcbiAgICAgIG5lc3RpbmdFZGdlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghZy5wYXJlbnQodikpIHtcbiAgICBnLnNldEVkZ2Uocm9vdCwgdG9wLCB7IHdlaWdodDogMCwgbWlubGVuOiBoZWlnaHQgKyBkZXB0aHNbdl0gfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJlZURlcHRocyhnKSB7XG4gIHZhciBkZXB0aHMgPSB7fTtcbiAgZnVuY3Rpb24gZGZzKHYsIGRlcHRoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIGRmcyhjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXB0aHNbdl0gPSBkZXB0aDtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbih2KSB7IGRmcyh2LCAxKTsgfSk7XG4gIHJldHVybiBkZXB0aHM7XG59XG5cbmZ1bmN0aW9uIHN1bVdlaWdodHMoZykge1xuICByZXR1cm4gXy5yZWR1Y2UoZy5lZGdlcygpLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICByZXR1cm4gYWNjICsgZy5lZGdlKGUpLndlaWdodDtcbiAgfSwgMCk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXAoZykge1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgZy5yZW1vdmVOb2RlKGdyYXBoTGFiZWwubmVzdGluZ1Jvb3QpO1xuICBkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLm5lc3RpbmdFZGdlKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/nesting-graph.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/normalize.js": /*!**************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/normalize.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvbm9ybWFsaXplLmpzP2Q5ZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFFQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxpRUFBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHdCQUF3QixFQUFFO0FBQ2pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQkFBMkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1QkFBdUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL25vcm1hbGl6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG4vKlxuICogQnJlYWtzIGFueSBsb25nIGVkZ2VzIGluIHRoZSBncmFwaCBpbnRvIHNob3J0IHNlZ21lbnRzIHRoYXQgc3BhbiAxIGxheWVyXG4gKiBlYWNoLiBUaGlzIG9wZXJhdGlvbiBpcyB1bmRvYWJsZSB3aXRoIHRoZSBkZW5vcm1hbGl6ZSBmdW5jdGlvbi5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgaW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBFYWNoIG5vZGUgaW4gdGhlIGdyYXBoIGhhcyBhIFwicmFua1wiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uOlxuICpcbiAqICAgIDEuIEFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggaGF2ZSBhIGxlbmd0aCBvZiAxLlxuICogICAgMi4gRHVtbXkgbm9kZXMgYXJlIGFkZGVkIHdoZXJlIGVkZ2VzIGhhdmUgYmVlbiBzcGxpdCBpbnRvIHNlZ21lbnRzLlxuICogICAgMy4gVGhlIGdyYXBoIGlzIGF1Z21lbnRlZCB3aXRoIGEgXCJkdW1teUNoYWluc1wiIGF0dHJpYnV0ZSB3aGljaCBjb250YWluc1xuICogICAgICAgdGhlIGZpcnN0IGR1bW15IGluIGVhY2ggY2hhaW4gb2YgZHVtbXkgbm9kZXMgcHJvZHVjZWQuXG4gKi9cbmZ1bmN0aW9uIHJ1bihnKSB7XG4gIGcuZ3JhcGgoKS5kdW1teUNoYWlucyA9IFtdO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlZGdlKSB7IG5vcm1hbGl6ZUVkZ2UoZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVFZGdlKGcsIGUpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB2UmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICB2YXIgdyA9IGUudztcbiAgdmFyIHdSYW5rID0gZy5ub2RlKHcpLnJhbms7XG4gIHZhciBuYW1lID0gZS5uYW1lO1xuICB2YXIgZWRnZUxhYmVsID0gZy5lZGdlKGUpO1xuICB2YXIgbGFiZWxSYW5rID0gZWRnZUxhYmVsLmxhYmVsUmFuaztcblxuICBpZiAod1JhbmsgPT09IHZSYW5rICsgMSkgcmV0dXJuO1xuXG4gIGcucmVtb3ZlRWRnZShlKTtcblxuICB2YXIgZHVtbXksIGF0dHJzLCBpO1xuICBmb3IgKGkgPSAwLCArK3ZSYW5rOyB2UmFuayA8IHdSYW5rOyArK2ksICsrdlJhbmspIHtcbiAgICBlZGdlTGFiZWwucG9pbnRzID0gW107XG4gICAgYXR0cnMgPSB7XG4gICAgICB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsIGVkZ2VPYmo6IGUsXG4gICAgICByYW5rOiB2UmFua1xuICAgIH07XG4gICAgZHVtbXkgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImVkZ2VcIiwgYXR0cnMsIFwiX2RcIik7XG4gICAgaWYgKHZSYW5rID09PSBsYWJlbFJhbmspIHtcbiAgICAgIGF0dHJzLndpZHRoID0gZWRnZUxhYmVsLndpZHRoO1xuICAgICAgYXR0cnMuaGVpZ2h0ID0gZWRnZUxhYmVsLmhlaWdodDtcbiAgICAgIGF0dHJzLmR1bW15ID0gXCJlZGdlLWxhYmVsXCI7XG4gICAgICBhdHRycy5sYWJlbHBvcyA9IGVkZ2VMYWJlbC5sYWJlbHBvcztcbiAgICB9XG4gICAgZy5zZXRFZGdlKHYsIGR1bW15LCB7IHdlaWdodDogZWRnZUxhYmVsLndlaWdodCB9LCBuYW1lKTtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgZy5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2goZHVtbXkpO1xuICAgIH1cbiAgICB2ID0gZHVtbXk7XG4gIH1cblxuICBnLnNldEVkZ2UodiwgdywgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICBfLmZvckVhY2goZy5ncmFwaCgpLmR1bW15Q2hhaW5zLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIG9yaWdMYWJlbCA9IG5vZGUuZWRnZUxhYmVsO1xuICAgIHZhciB3O1xuICAgIGcuc2V0RWRnZShub2RlLmVkZ2VPYmosIG9yaWdMYWJlbCk7XG4gICAgd2hpbGUgKG5vZGUuZHVtbXkpIHtcbiAgICAgIHcgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBvcmlnTGFiZWwucG9pbnRzLnB1c2goeyB4OiBub2RlLngsIHk6IG5vZGUueSB9KTtcbiAgICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtbGFiZWxcIikge1xuICAgICAgICBvcmlnTGFiZWwueCA9IG5vZGUueDtcbiAgICAgICAgb3JpZ0xhYmVsLnkgPSBub2RlLnk7XG4gICAgICAgIG9yaWdMYWJlbC53aWR0aCA9IG5vZGUud2lkdGg7XG4gICAgICAgIG9yaWdMYWJlbC5oZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgICAgIH1cbiAgICAgIHYgPSB3O1xuICAgICAgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB9XG4gIH0pO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/normalize.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/add-subgraph-constraints.js": /*!***********************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/add-subgraph-constraints.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvYWRkLXN1YmdyYXBoLWNvbnN0cmFpbnRzLmpzPzA4YzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLHNFQUFXOztBQUUzQjs7QUFFQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNEJBQTRCO0FBQ3REO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL29yZGVyL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBhZGRTdWJncmFwaENvbnN0cmFpbnRzO1xuXG5mdW5jdGlvbiBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGcsIGNnLCB2cykge1xuICB2YXIgcHJldiA9IHt9LFxuICAgIHJvb3RQcmV2O1xuXG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIHZhciBjaGlsZCA9IGcucGFyZW50KHYpLFxuICAgICAgcGFyZW50LFxuICAgICAgcHJldkNoaWxkO1xuICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgcGFyZW50ID0gZy5wYXJlbnQoY2hpbGQpO1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBwcmV2Q2hpbGQgPSBwcmV2W3BhcmVudF07XG4gICAgICAgIHByZXZbcGFyZW50XSA9IGNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldkNoaWxkID0gcm9vdFByZXY7XG4gICAgICAgIHJvb3RQcmV2ID0gY2hpbGQ7XG4gICAgICB9XG4gICAgICBpZiAocHJldkNoaWxkICYmIHByZXZDaGlsZCAhPT0gY2hpbGQpIHtcbiAgICAgICAgY2cuc2V0RWRnZShwcmV2Q2hpbGQsIGNoaWxkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2hpbGQgPSBwYXJlbnQ7XG4gICAgfVxuICB9KTtcblxuICAvKlxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBjaGlsZHJlbiA9IHYgPyBnLmNoaWxkcmVuKHYpIDogZy5jaGlsZHJlbigpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgICAgICAgc3ViZ3JhcGhzID0gW107XG4gICAgICBfLmVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIHZhciBjaGlsZE1pbiA9IGRmcyhjaGlsZCk7XG4gICAgICAgIGlmIChnLmNoaWxkcmVuKGNoaWxkKS5sZW5ndGgpIHtcbiAgICAgICAgICBzdWJncmFwaHMucHVzaCh7IHY6IGNoaWxkLCBvcmRlcjogY2hpbGRNaW4gfSk7XG4gICAgICAgIH1cbiAgICAgICAgbWluID0gTWF0aC5taW4obWluLCBjaGlsZE1pbik7XG4gICAgICB9KTtcbiAgICAgIF8ucmVkdWNlKF8uc29ydEJ5KHN1YmdyYXBocywgXCJvcmRlclwiKSwgZnVuY3Rpb24ocHJldiwgY3Vycikge1xuICAgICAgICBjZy5zZXRFZGdlKHByZXYudiwgY3Vyci52KTtcbiAgICAgICAgcmV0dXJuIGN1cnI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIHJldHVybiBnLm5vZGUodikub3JkZXI7XG4gIH1cbiAgZGZzKHVuZGVmaW5lZCk7XG4gICovXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/add-subgraph-constraints.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/barycenter.js": /*!*********************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/barycenter.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvYmFyeWNlbnRlci5qcz9lMzc0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxzRUFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxHQUFHLG9CQUFvQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL29yZGVyL2JhcnljZW50ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFyeWNlbnRlcjtcblxuZnVuY3Rpb24gYmFyeWNlbnRlcihnLCBtb3ZhYmxlKSB7XG4gIHJldHVybiBfLm1hcChtb3ZhYmxlLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIGluViA9IGcuaW5FZGdlcyh2KTtcbiAgICBpZiAoIWluVi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IHY6IHYgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlc3VsdCA9IF8ucmVkdWNlKGluViwgZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICAgIHZhciBlZGdlID0gZy5lZGdlKGUpLFxuICAgICAgICAgIG5vZGVVID0gZy5ub2RlKGUudik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VtOiBhY2Muc3VtICsgKGVkZ2Uud2VpZ2h0ICogbm9kZVUub3JkZXIpLFxuICAgICAgICAgIHdlaWdodDogYWNjLndlaWdodCArIGVkZ2Uud2VpZ2h0XG4gICAgICAgIH07XG4gICAgICB9LCB7IHN1bTogMCwgd2VpZ2h0OiAwIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2OiB2LFxuICAgICAgICBiYXJ5Y2VudGVyOiByZXN1bHQuc3VtIC8gcmVzdWx0LndlaWdodCxcbiAgICAgICAgd2VpZ2h0OiByZXN1bHQud2VpZ2h0XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/barycenter.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/build-layer-graph.js": /*!****************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/build-layer-graph.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ../graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanM/MGMxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsc0VBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLDBFQUFhOztBQUVqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQixZQUFZLGFBQWE7QUFDbEUsd0NBQXdDLGtCQUFrQixFQUFFOztBQUU1RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsb0NBQW9DO0FBQ2xFLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL29yZGVyL2J1aWxkLWxheWVyLWdyYXBoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkTGF5ZXJHcmFwaDtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBncmFwaCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNvcnQgYSBsYXllciBvZiBub2Rlcy4gVGhlIGdyYXBoIHdpbGxcbiAqIGNvbnRhaW4gYWxsIGJhc2UgYW5kIHN1YmdyYXBoIG5vZGVzIGZyb20gdGhlIHJlcXVlc3QgbGF5ZXIgaW4gdGhlaXIgb3JpZ2luYWxcbiAqIGhpZXJhcmNoeSBhbmQgYW55IGVkZ2VzIHRoYXQgYXJlIGluY2lkZW50IG9uIHRoZXNlIG5vZGVzIGFuZCBhcmUgb2YgdGhlIHR5cGVcbiAqIHJlcXVlc3RlZCBieSB0aGUgXCJyZWxhdGlvbnNoaXBcIiBwYXJhbWV0ZXIuXG4gKlxuICogTm9kZXMgZnJvbSB0aGUgcmVxdWVzdGVkIHJhbmsgdGhhdCBkbyBub3QgaGF2ZSBwYXJlbnRzIGFyZSBhc3NpZ25lZCBhIHJvb3RcbiAqIG5vZGUgaW4gdGhlIG91dHB1dCBncmFwaCwgd2hpY2ggaXMgc2V0IGluIHRoZSByb290IGdyYXBoIGF0dHJpYnV0ZS4gVGhpc1xuICogbWFrZXMgaXQgZWFzeSB0byB3YWxrIHRoZSBoaWVyYXJjaHkgb2YgbW92YWJsZSBub2RlcyBkdXJpbmcgb3JkZXJpbmcuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUdcbiAqICAgIDIuIEJhc2Ugbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhdmUgYSByYW5rIGF0dHJpYnV0ZVxuICogICAgMy4gU3ViZ3JhcGggbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBtaW5SYW5rIGFuZCBtYXhSYW5rIGF0dHJpYnV0ZXNcbiAqICAgIDQuIEVkZ2VzIGhhdmUgYW4gYXNzaWduZWQgd2VpZ2h0XG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIE91dHB1dCBncmFwaCBoYXMgYWxsIG5vZGVzIGluIHRoZSBtb3ZhYmxlIHJhbmsgd2l0aCBwcmVzZXJ2ZWRcbiAqICAgICAgIGhpZXJhcmNoeS5cbiAqICAgIDIuIFJvb3Qgbm9kZXMgaW4gdGhlIG1vdmFibGUgbGF5ZXIgYXJlIG1hZGUgY2hpbGRyZW4gb2YgdGhlIG5vZGVcbiAqICAgICAgIGluZGljYXRlZCBieSB0aGUgcm9vdCBhdHRyaWJ1dGUgb2YgdGhlIGdyYXBoLlxuICogICAgMy4gTm9uLW1vdmFibGUgbm9kZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlXG4gKiAgICAgICByZWxhdGlvbnNoaXAgcGFyYW1ldGVyLCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdyYXBoICh3aXRob3V0IGhpZXJhcmNoeSkuXG4gKiAgICA0LiBFZGdlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGUgcmVsYXRpb25zaGlwXG4gKiAgICAgICBwYXJhbWV0ZXIsIGFyZSBhZGRlZCB0byB0aGUgb3V0cHV0IGdyYXBoLlxuICogICAgNS4gVGhlIHdlaWdodHMgZm9yIGNvcGllZCBlZGdlcyBhcmUgYWdncmVnYXRlZCBhcyBuZWVkLCBzaW5jZSB0aGUgb3V0cHV0XG4gKiAgICAgICBncmFwaCBpcyBub3QgYSBtdWx0aS1ncmFwaC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCkge1xuICB2YXIgcm9vdCA9IGNyZWF0ZVJvb3ROb2RlKGcpLFxuICAgIHJlc3VsdCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlIH0pLnNldEdyYXBoKHsgcm9vdDogcm9vdCB9KVxuICAgICAgLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpOyB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodiksXG4gICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KTtcblxuICAgIGlmIChub2RlLnJhbmsgPT09IHJhbmsgfHwgbm9kZS5taW5SYW5rIDw9IHJhbmsgJiYgcmFuayA8PSBub2RlLm1heFJhbmspIHtcbiAgICAgIHJlc3VsdC5zZXROb2RlKHYpO1xuICAgICAgcmVzdWx0LnNldFBhcmVudCh2LCBwYXJlbnQgfHwgcm9vdCk7XG5cbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB3ZSBoYXZlIG9ubHkgc2hvcnQgZWRnZXMhXG4gICAgICBfLmZvckVhY2goZ1tyZWxhdGlvbnNoaXBdKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciB1ID0gZS52ID09PSB2ID8gZS53IDogZS52LFxuICAgICAgICAgIGVkZ2UgPSByZXN1bHQuZWRnZSh1LCB2KSxcbiAgICAgICAgICB3ZWlnaHQgPSAhXy5pc1VuZGVmaW5lZChlZGdlKSA/IGVkZ2Uud2VpZ2h0IDogMDtcbiAgICAgICAgcmVzdWx0LnNldEVkZ2UodSwgdiwgeyB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgKyB3ZWlnaHQgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgICByZXN1bHQuc2V0Tm9kZSh2LCB7XG4gICAgICAgICAgYm9yZGVyTGVmdDogbm9kZS5ib3JkZXJMZWZ0W3JhbmtdLFxuICAgICAgICAgIGJvcmRlclJpZ2h0OiBub2RlLmJvcmRlclJpZ2h0W3JhbmtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm9vdE5vZGUoZykge1xuICB2YXIgdjtcbiAgd2hpbGUgKGcuaGFzTm9kZSgodiA9IF8udW5pcXVlSWQoXCJfcm9vdFwiKSkpKTtcbiAgcmV0dXJuIHY7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/build-layer-graph.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/cross-count.js": /*!**********************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/cross-count.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvY3Jvc3MtY291bnQuanM/ZmQ0MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsc0VBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxVQUFVLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELFVBQVUsRUFBRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9vcmRlci9jcm9zcy1jb3VudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY3Jvc3NDb3VudDtcblxuLypcbiAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGxheWVyaW5nIChhbiBhcnJheSBvZiBsYXllcnMsIGVhY2ggd2l0aCBhbiBhcnJheSBvZlxuICogb3JkZXJlcmQgbm9kZXMpIGFuZCBhIGdyYXBoIGFuZCByZXR1cm5zIGEgd2VpZ2h0ZWQgY3Jvc3NpbmcgY291bnQuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggbXVzdCBiZSBzaW1wbGUgKG5vdCBhIG11bHRpZ3JhcGgpLCBkaXJlY3RlZCwgYW5kIGluY2x1ZGVcbiAqICAgICAgIG9ubHkgc2ltcGxlIGVkZ2VzLlxuICogICAgMi4gRWRnZXMgaW4gdGhlIGlucHV0IGdyYXBoIG11c3QgaGF2ZSBhc3NpZ25lZCB3ZWlnaHRzLlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgZ3JhcGggYW5kIGxheWVyaW5nIG1hdHJpeCBhcmUgbGVmdCB1bmNoYW5nZWQuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gaXMgZGVyaXZlZCBmcm9tIEJhcnRoLCBldCBhbC4sIFwiQmlsYXllciBDcm9zcyBDb3VudGluZy5cIlxuICovXG5mdW5jdGlvbiBjcm9zc0NvdW50KGcsIGxheWVyaW5nKSB7XG4gIHZhciBjYyA9IDA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGF5ZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICBjYyArPSB0d29MYXllckNyb3NzQ291bnQoZywgbGF5ZXJpbmdbaS0xXSwgbGF5ZXJpbmdbaV0pO1xuICB9XG4gIHJldHVybiBjYztcbn1cblxuZnVuY3Rpb24gdHdvTGF5ZXJDcm9zc0NvdW50KGcsIG5vcnRoTGF5ZXIsIHNvdXRoTGF5ZXIpIHtcbiAgLy8gU29ydCBhbGwgb2YgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIG5vcnRoIGFuZCBzb3V0aCBsYXllcnMgYnkgdGhlaXIgcG9zaXRpb25cbiAgLy8gaW4gdGhlIG5vcnRoIGxheWVyIGFuZCB0aGVuIHRoZSBzb3V0aC4gTWFwIHRoZXNlIGVkZ2VzIHRvIHRoZSBwb3NpdGlvbiBvZlxuICAvLyB0aGVpciBoZWFkIGluIHRoZSBzb3V0aCBsYXllci5cbiAgdmFyIHNvdXRoUG9zID0gXy56aXBPYmplY3Qoc291dGhMYXllcixcbiAgICBfLm1hcChzb3V0aExheWVyLCBmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gaTsgfSkpO1xuICB2YXIgc291dGhFbnRyaWVzID0gXy5mbGF0dGVuKF8ubWFwKG5vcnRoTGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5zb3J0QnkoXy5tYXAoZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIHsgcG9zOiBzb3V0aFBvc1tlLnddLCB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgfTtcbiAgICB9KSwgXCJwb3NcIik7XG4gIH0pLCB0cnVlKTtcblxuICAvLyBCdWlsZCB0aGUgYWNjdW11bGF0b3IgdHJlZVxuICB2YXIgZmlyc3RJbmRleCA9IDE7XG4gIHdoaWxlIChmaXJzdEluZGV4IDwgc291dGhMYXllci5sZW5ndGgpIGZpcnN0SW5kZXggPDw9IDE7XG4gIHZhciB0cmVlU2l6ZSA9IDIgKiBmaXJzdEluZGV4IC0gMTtcbiAgZmlyc3RJbmRleCAtPSAxO1xuICB2YXIgdHJlZSA9IF8ubWFwKG5ldyBBcnJheSh0cmVlU2l6ZSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSB3ZWlnaHRlZCBjcm9zc2luZ3NcbiAgdmFyIGNjID0gMDtcbiAgXy5mb3JFYWNoKHNvdXRoRW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgdmFyIGluZGV4ID0gZW50cnkucG9zICsgZmlyc3RJbmRleDtcbiAgICB0cmVlW2luZGV4XSArPSBlbnRyeS53ZWlnaHQ7XG4gICAgdmFyIHdlaWdodFN1bSA9IDA7XG4gICAgd2hpbGUgKGluZGV4ID4gMCkge1xuICAgICAgaWYgKGluZGV4ICUgMikge1xuICAgICAgICB3ZWlnaHRTdW0gKz0gdHJlZVtpbmRleCArIDFdO1xuICAgICAgfVxuICAgICAgaW5kZXggPSAoaW5kZXggLSAxKSA+PiAxO1xuICAgICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgIH1cbiAgICBjYyArPSBlbnRyeS53ZWlnaHQgKiB3ZWlnaHRTdW07XG4gIH0pKTtcblxuICByZXR1cm4gY2M7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/cross-count.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/index.js": /*!****************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/index.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar initOrder = __webpack_require__(/*! ./init-order */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-order.js\");\nvar crossCount = __webpack_require__(/*! ./cross-count */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/cross-count.js\");\nvar sortSubgraph = __webpack_require__(/*! ./sort-subgraph */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort-subgraph.js\");\nvar buildLayerGraph = __webpack_require__(/*! ./build-layer-graph */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/build-layer-graph.js\");\nvar addSubgraphConstraints = __webpack_require__(/*! ./add-subgraph-constraints */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/add-subgraph-constraints.js\");\nvar Graph = __webpack_require__(/*! ../graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n // consider use previous result, maybe somewhat reduendant\n layering = initOrder(g);\n assignOrder(g, layering);\n for (i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2, true);\n\n layering = util.buildLayerMatrix(g);\n cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight, usePrev) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight, usePrev);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvaW5kZXguanM/NWY1MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsc0VBQVc7QUFDM0IsZ0JBQWdCLG1CQUFPLENBQUMsbUZBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMscUZBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMseUZBQWlCO0FBQzVDLHNCQUFzQixtQkFBTyxDQUFDLGlHQUFxQjtBQUNuRCw2QkFBNkIsbUJBQU8sQ0FBQywrR0FBNEI7QUFDakUsWUFBWSxtQkFBTyxDQUFDLDBFQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxrRUFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLCtCQUErQixjQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGNBQWM7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9vcmRlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgaW5pdE9yZGVyID0gcmVxdWlyZShcIi4vaW5pdC1vcmRlclwiKTtcbnZhciBjcm9zc0NvdW50ID0gcmVxdWlyZShcIi4vY3Jvc3MtY291bnRcIik7XG52YXIgc29ydFN1YmdyYXBoID0gcmVxdWlyZShcIi4vc29ydC1zdWJncmFwaFwiKTtcbnZhciBidWlsZExheWVyR3JhcGggPSByZXF1aXJlKFwiLi9idWlsZC1sYXllci1ncmFwaFwiKTtcbnZhciBhZGRTdWJncmFwaENvbnN0cmFpbnRzID0gcmVxdWlyZShcIi4vYWRkLXN1YmdyYXBoLWNvbnN0cmFpbnRzXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBvcmRlcjtcblxuLypcbiAqIEFwcGxpZXMgaGV1cmlzdGljcyB0byBtaW5pbWl6ZSBlZGdlIGNyb3NzaW5ncyBpbiB0aGUgZ3JhcGggYW5kIHNldHMgdGhlIGJlc3RcbiAqIG9yZGVyIHNvbHV0aW9uIGFzIGFuIG9yZGVyIGF0dHJpYnV0ZSBvbiBlYWNoIG5vZGUuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBEQUdcbiAqICAgIDIuIEdyYXBoIG5vZGVzIG11c3QgYmUgb2JqZWN0cyB3aXRoIGEgXCJyYW5rXCIgYXR0cmlidXRlXG4gKiAgICAzLiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgdGhlIFwid2VpZ2h0XCIgYXR0cmlidXRlXG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSBhbiBcIm9yZGVyXCIgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZVxuICogICAgICAgYWxnb3JpdGhtLlxuICovXG5mdW5jdGlvbiBvcmRlcihnKSB7XG4gIHZhciBtYXhSYW5rID0gdXRpbC5tYXhSYW5rKGcpLFxuICAgIGRvd25MYXllckdyYXBocyA9IGJ1aWxkTGF5ZXJHcmFwaHMoZywgXy5yYW5nZSgxLCBtYXhSYW5rICsgMSksIFwiaW5FZGdlc1wiKSxcbiAgICB1cExheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCBfLnJhbmdlKG1heFJhbmsgLSAxLCAtMSwgLTEpLCBcIm91dEVkZ2VzXCIpO1xuXG4gIHZhciBsYXllcmluZyA9IGluaXRPcmRlcihnKTtcbiAgYXNzaWduT3JkZXIoZywgbGF5ZXJpbmcpO1xuXG4gIHZhciBiZXN0Q0MgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgYmVzdDtcblxuICBmb3IgKHZhciBpID0gMCwgbGFzdEJlc3QgPSAwOyBsYXN0QmVzdCA8IDQ7ICsraSwgKytsYXN0QmVzdCkge1xuICAgIHN3ZWVwTGF5ZXJHcmFwaHMoaSAlIDIgPyBkb3duTGF5ZXJHcmFwaHMgOiB1cExheWVyR3JhcGhzLCBpICUgNCA+PSAyKTtcblxuICAgIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICAgIHZhciBjYyA9IGNyb3NzQ291bnQoZywgbGF5ZXJpbmcpO1xuICAgIGlmIChjYyA8IGJlc3RDQykge1xuICAgICAgbGFzdEJlc3QgPSAwO1xuICAgICAgYmVzdCA9IF8uY2xvbmVEZWVwKGxheWVyaW5nKTtcbiAgICAgIGJlc3RDQyA9IGNjO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNvbnNpZGVyIHVzZSBwcmV2aW91cyByZXN1bHQsIG1heWJlIHNvbWV3aGF0IHJlZHVlbmRhbnRcbiAgbGF5ZXJpbmcgPSBpbml0T3JkZXIoZyk7XG4gIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKTtcbiAgZm9yIChpID0gMCwgbGFzdEJlc3QgPSAwOyBsYXN0QmVzdCA8IDQ7ICsraSwgKytsYXN0QmVzdCkge1xuICAgIHN3ZWVwTGF5ZXJHcmFwaHMoaSAlIDIgPyBkb3duTGF5ZXJHcmFwaHMgOiB1cExheWVyR3JhcGhzLCBpICUgNCA+PSAyLCB0cnVlKTtcblxuICAgIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICAgIGNjID0gY3Jvc3NDb3VudChnLCBsYXllcmluZyk7XG4gICAgaWYgKGNjIDwgYmVzdENDKSB7XG4gICAgICBsYXN0QmVzdCA9IDA7XG4gICAgICBiZXN0ID0gXy5jbG9uZURlZXAobGF5ZXJpbmcpO1xuICAgICAgYmVzdENDID0gY2M7XG4gICAgfVxuICB9XG4gIGFzc2lnbk9yZGVyKGcsIGJlc3QpO1xufVxuXG5mdW5jdGlvbiBidWlsZExheWVyR3JhcGhzKGcsIHJhbmtzLCByZWxhdGlvbnNoaXApIHtcbiAgcmV0dXJuIF8ubWFwKHJhbmtzLCBmdW5jdGlvbihyYW5rKSB7XG4gICAgcmV0dXJuIGJ1aWxkTGF5ZXJHcmFwaChnLCByYW5rLCByZWxhdGlvbnNoaXApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3dlZXBMYXllckdyYXBocyhsYXllckdyYXBocywgYmlhc1JpZ2h0LCB1c2VQcmV2KSB7XG4gIHZhciBjZyA9IG5ldyBHcmFwaCgpO1xuICBfLmZvckVhY2gobGF5ZXJHcmFwaHMsIGZ1bmN0aW9uKGxnKSB7XG4gICAgdmFyIHJvb3QgPSBsZy5ncmFwaCgpLnJvb3Q7XG4gICAgdmFyIHNvcnRlZCA9IHNvcnRTdWJncmFwaChsZywgcm9vdCwgY2csIGJpYXNSaWdodCwgdXNlUHJldik7XG4gICAgXy5mb3JFYWNoKHNvcnRlZC52cywgZnVuY3Rpb24odiwgaSkge1xuICAgICAgbGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gICAgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyhsZywgY2csIHNvcnRlZC52cyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25PcmRlcihnLCBsYXllcmluZykge1xuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICBnLm5vZGUodikub3JkZXIgPSBpO1xuICAgIH0pO1xuICB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/index.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-data-order.js": /*!**************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-data-order.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = initDataOrder;\n\n\n/**\n * 按照数据中的结果设置fixorder\n */\nfunction initDataOrder(g, nodeOrder) {\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n _.forEach(nodeOrder, function(n) {\n var node = g.node(n);\n // 只考虑原有节点,dummy节点需要按照后续算法排出\n if (node.dummy) {\n return;\n }\n node.fixorder = layers[node.rank].length; // 设置fixorder为当层的顺序\n layers[node.rank].push(n);\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvaW5pdC1kYXRhLW9yZGVyLmpzPzBiMzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHNFQUFXOztBQUUzQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHNEQUFzRCx1QkFBdUIsRUFBRTtBQUMvRSx1REFBdUQsV0FBVyxFQUFFO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBLEdBQUc7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9vcmRlci9pbml0LWRhdGEtb3JkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXREYXRhT3JkZXI7XG5cblxuLyoqXG4gKiDmjInnhafmlbDmja7kuK3nmoTnu5Pmnpzorr7nva5maXhvcmRlclxuICovXG5mdW5jdGlvbiBpbml0RGF0YU9yZGVyKGcsIG5vZGVPcmRlcikge1xuICB2YXIgc2ltcGxlTm9kZXMgPSBfLmZpbHRlcihnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gIWcuY2hpbGRyZW4odikubGVuZ3RoO1xuICB9KTtcbiAgdmFyIG1heFJhbmsgPSBfLm1heChfLm1hcChzaW1wbGVOb2RlcywgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcbiAgdmFyIGxheWVycyA9IF8ubWFwKF8ucmFuZ2UobWF4UmFuayArIDEpLCBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9KTtcbiAgXy5mb3JFYWNoKG5vZGVPcmRlciwgZnVuY3Rpb24obikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKG4pO1xuICAgIC8vIOWPquiAg+iZkeWOn+acieiKgueCue+8jGR1bW156IqC54K56ZyA6KaB5oyJ54Wn5ZCO57ut566X5rOV5o6S5Ye6XG4gICAgaWYgKG5vZGUuZHVtbXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbm9kZS5maXhvcmRlciA9IGxheWVyc1tub2RlLnJhbmtdLmxlbmd0aDsgLy8g6K6+572uZml4b3JkZXLkuLrlvZPlsYLnmoTpobrluo9cbiAgICBsYXllcnNbbm9kZS5yYW5rXS5wdXNoKG4pO1xuICB9KTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-data-order.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-order.js": /*!*********************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-order.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n\n // 有fixOrder的,直接排序好放进去\n var fixOrderNodes = _.sortBy(_.filter(orderedVs, function (n) {\n return g.node(n).fixorder !== undefined;\n }), function(n) {\n return g.node(n).fixorder;\n });\n\n _.forEach(fixOrderNodes, function(n) {\n layers[g.node(n).rank].push(n);\n visited[n] = true;\n });\n\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvaW5pdC1vcmRlci5qcz8zNGM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxzRUFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHNEQUFzRCx1QkFBdUIsRUFBRTtBQUMvRSx1REFBdUQsV0FBVyxFQUFFOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxREFBcUQsdUJBQXVCLEVBQUU7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL29yZGVyL2luaXQtb3JkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRPcmRlcjtcblxuLypcbiAqIEFzc2lnbnMgYW4gaW5pdGlhbCBvcmRlciB2YWx1ZSBmb3IgZWFjaCBub2RlIGJ5IHBlcmZvcm1pbmcgYSBERlMgc2VhcmNoXG4gKiBzdGFydGluZyBmcm9tIG5vZGVzIGluIHRoZSBmaXJzdCByYW5rLiBOb2RlcyBhcmUgYXNzaWduZWQgYW4gb3JkZXIgaW4gdGhlaXJcbiAqIHJhbmsgYXMgdGhleSBhcmUgZmlyc3QgdmlzaXRlZC5cbiAqXG4gKiBUaGlzIGFwcHJvYWNoIGNvbWVzIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkEgVGVjaG5pcXVlIGZvciBEcmF3aW5nIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqXG4gKiBSZXR1cm5zIGEgbGF5ZXJpbmcgbWF0cml4IHdpdGggYW4gYXJyYXkgcGVyIGxheWVyIGFuZCBlYWNoIGxheWVyIHNvcnRlZCBieVxuICogdGhlIG9yZGVyIG9mIGl0cyBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gaW5pdE9yZGVyKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgdmFyIHNpbXBsZU5vZGVzID0gXy5maWx0ZXIoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuICFnLmNoaWxkcmVuKHYpLmxlbmd0aDtcbiAgfSk7XG4gIHZhciBtYXhSYW5rID0gXy5tYXgoXy5tYXAoc2ltcGxlTm9kZXMsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KSk7XG4gIHZhciBsYXllcnMgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHJldHVybjtcbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBsYXllcnNbbm9kZS5yYW5rXS5wdXNoKHYpO1xuICAgIF8uZm9yRWFjaChnLnN1Y2Nlc3NvcnModiksIGRmcyk7XG4gIH1cblxuICB2YXIgb3JkZXJlZFZzID0gXy5zb3J0Qnkoc2ltcGxlTm9kZXMsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KTtcblxuICAvLyDmnIlmaXhPcmRlcueahO+8jOebtOaOpeaOkuW6j+WlveaUvui/m+WOu1xuICB2YXIgZml4T3JkZXJOb2RlcyA9IF8uc29ydEJ5KF8uZmlsdGVyKG9yZGVyZWRWcywgZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gZy5ub2RlKG4pLmZpeG9yZGVyICE9PSB1bmRlZmluZWQ7XG4gIH0pLCBmdW5jdGlvbihuKSB7XG4gICAgcmV0dXJuIGcubm9kZShuKS5maXhvcmRlcjtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGZpeE9yZGVyTm9kZXMsIGZ1bmN0aW9uKG4pIHtcbiAgICBsYXllcnNbZy5ub2RlKG4pLnJhbmtdLnB1c2gobik7XG4gICAgdmlzaXRlZFtuXSA9IHRydWU7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChvcmRlcmVkVnMsIGRmcyk7XG5cbiAgcmV0dXJuIGxheWVycztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/init-order.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/resolve-conflicts.js": /*!****************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/resolve-conflicts.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvcmVzb2x2ZS1jb25mbGljdHMuanM/M2U2NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsc0VBQVc7O0FBRTNCOztBQUVBO0FBQ0Esd0NBQXdDLHNCQUFzQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0JBQXNCO0FBQ3hELDhCQUE4QixFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywwQkFBMEI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCxzQkFBc0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL29yZGVyL3Jlc29sdmUtY29uZmxpY3RzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlQ29uZmxpY3RzO1xuXG4vKlxuICogR2l2ZW4gYSBsaXN0IG9mIGVudHJpZXMgb2YgdGhlIGZvcm0ge3YsIGJhcnljZW50ZXIsIHdlaWdodH0gYW5kIGFcbiAqIGNvbnN0cmFpbnQgZ3JhcGggdGhpcyBmdW5jdGlvbiB3aWxsIHJlc29sdmUgYW55IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZVxuICogY29uc3RyYWludCBncmFwaCBhbmQgdGhlIGJhcnljZW50ZXJzIGZvciB0aGUgZW50cmllcy4gSWYgdGhlIGJhcnljZW50ZXJzIGZvclxuICogYW4gZW50cnkgd291bGQgdmlvbGF0ZSBhIGNvbnN0cmFpbnQgaW4gdGhlIGNvbnN0cmFpbnQgZ3JhcGggdGhlbiB3ZSBjb2FsZXNjZVxuICogdGhlIG5vZGVzIGluIHRoZSBjb25mbGljdCBpbnRvIGEgbmV3IG5vZGUgdGhhdCByZXNwZWN0cyB0aGUgY29udHJhaW50IGFuZFxuICogYWdncmVnYXRlcyBiYXJ5Y2VudGVyIGFuZCB3ZWlnaHQgaW5mb3JtYXRpb24uXG4gKlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24gaW4gRm9yc3RlciwgXCJBIEZhc3QgYW5kXG4gKiBTaW1wbGUgSHVlcmlzdGljIGZvciBDb25zdHJhaW5lZCBUd28tTGV2ZWwgQ3Jvc3NpbmcgUmVkdWN0aW9uLFwiIHRob3VnaHQgaXRcbiAqIGRpZmZlcnMgaW4gc29tZSBzcGVjaWZpYyBkZXRhaWxzLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEVhY2ggZW50cnkgaGFzIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9LCBvciBpZiB0aGUgbm9kZSBoYXNcbiAqICAgICAgIG5vIGJhcnljZW50ZXIsIHRoZW4ge3Z9LlxuICpcbiAqIFJldHVybnM6XG4gKlxuICogICAgQSBuZXcgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2cywgaSwgYmFyeWNlbnRlciwgd2VpZ2h0fS4gVGhlIGxpc3RcbiAqICAgIGB2c2AgbWF5IGVpdGhlciBiZSBhIHNpbmdsZXRvbiBvciBpdCBtYXkgYmUgYW4gYWdncmVnYXRpb24gb2Ygbm9kZXNcbiAqICAgIG9yZGVyZWQgc3VjaCB0aGF0IHRoZXkgZG8gbm90IHZpb2xhdGUgY29uc3RyYWludHMgZnJvbSB0aGUgY29uc3RyYWludFxuICogICAgZ3JhcGguIFRoZSBwcm9wZXJ0eSBgaWAgaXMgdGhlIGxvd2VzdCBvcmlnaW5hbCBpbmRleCBvZiBhbnkgb2YgdGhlXG4gKiAgICBlbGVtZW50cyBpbiBgdnNgLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29uZmxpY3RzKGVudHJpZXMsIGNnKSB7XG4gIHZhciBtYXBwZWRFbnRyaWVzID0ge307XG4gIF8uZm9yRWFjaChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSwgaSkge1xuICAgIHZhciB0bXAgPSBtYXBwZWRFbnRyaWVzW2VudHJ5LnZdID0ge1xuICAgICAgaW5kZWdyZWU6IDAsXG4gICAgICBcImluXCI6IFtdLFxuICAgICAgb3V0OiBbXSxcbiAgICAgIHZzOiBbZW50cnkudl0sXG4gICAgICBpOiBpXG4gICAgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZW50cnkuYmFyeWNlbnRlcikpIHtcbiAgICAgIHRtcC5iYXJ5Y2VudGVyID0gZW50cnkuYmFyeWNlbnRlcjtcbiAgICAgIHRtcC53ZWlnaHQgPSBlbnRyeS53ZWlnaHQ7XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goY2cuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlbnRyeVYgPSBtYXBwZWRFbnRyaWVzW2Uudl07XG4gICAgdmFyIGVudHJ5VyA9IG1hcHBlZEVudHJpZXNbZS53XTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZW50cnlWKSAmJiAhXy5pc1VuZGVmaW5lZChlbnRyeVcpKSB7XG4gICAgICBlbnRyeVcuaW5kZWdyZWUrKztcbiAgICAgIGVudHJ5Vi5vdXQucHVzaChtYXBwZWRFbnRyaWVzW2Uud10pO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHNvdXJjZVNldCA9IF8uZmlsdGVyKG1hcHBlZEVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgcmV0dXJuICFlbnRyeS5pbmRlZ3JlZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRvUmVzb2x2ZUNvbmZsaWN0cyhzb3VyY2VTZXQpO1xufVxuXG5mdW5jdGlvbiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KSB7XG4gIHZhciBlbnRyaWVzID0gW107XG5cbiAgZnVuY3Rpb24gaGFuZGxlSW4odkVudHJ5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHVFbnRyeSkge1xuICAgICAgaWYgKHVFbnRyeS5tZXJnZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodUVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgICAgXy5pc1VuZGVmaW5lZCh2RW50cnkuYmFyeWNlbnRlcikgfHxcbiAgICAgICAgICB1RW50cnkuYmFyeWNlbnRlciA+PSB2RW50cnkuYmFyeWNlbnRlcikge1xuICAgICAgICBtZXJnZUVudHJpZXModkVudHJ5LCB1RW50cnkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVPdXQodkVudHJ5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHdFbnRyeSkge1xuICAgICAgd0VudHJ5W1wiaW5cIl0ucHVzaCh2RW50cnkpO1xuICAgICAgaWYgKC0td0VudHJ5LmluZGVncmVlID09PSAwKSB7XG4gICAgICAgIHNvdXJjZVNldC5wdXNoKHdFbnRyeSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHdoaWxlIChzb3VyY2VTZXQubGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gc291cmNlU2V0LnBvcCgpO1xuICAgIGVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgXy5mb3JFYWNoKGVudHJ5W1wiaW5cIl0ucmV2ZXJzZSgpLCBoYW5kbGVJbihlbnRyeSkpO1xuICAgIF8uZm9yRWFjaChlbnRyeS5vdXQsIGhhbmRsZU91dChlbnRyeSkpO1xuICB9XG5cbiAgcmV0dXJuIF8ubWFwKF8uZmlsdGVyKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAhZW50cnkubWVyZ2VkOyB9KSxcbiAgICBmdW5jdGlvbihlbnRyeSkge1xuICAgICAgcmV0dXJuIF8ucGljayhlbnRyeSwgW1widnNcIiwgXCJpXCIsIFwiYmFyeWNlbnRlclwiLCBcIndlaWdodFwiXSk7XG4gICAgfSk7XG5cbn1cblxuZnVuY3Rpb24gbWVyZ2VFbnRyaWVzKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBzdW0gPSAwO1xuICB2YXIgd2VpZ2h0ID0gMDtcblxuICBpZiAodGFyZ2V0LndlaWdodCkge1xuICAgIHN1bSArPSB0YXJnZXQuYmFyeWNlbnRlciAqIHRhcmdldC53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IHRhcmdldC53ZWlnaHQ7XG4gIH1cblxuICBpZiAoc291cmNlLndlaWdodCkge1xuICAgIHN1bSArPSBzb3VyY2UuYmFyeWNlbnRlciAqIHNvdXJjZS53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IHNvdXJjZS53ZWlnaHQ7XG4gIH1cblxuICB0YXJnZXQudnMgPSBzb3VyY2UudnMuY29uY2F0KHRhcmdldC52cyk7XG4gIHRhcmdldC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICB0YXJnZXQud2VpZ2h0ID0gd2VpZ2h0O1xuICB0YXJnZXQuaSA9IE1hdGgubWluKHNvdXJjZS5pLCB0YXJnZXQuaSk7XG4gIHNvdXJjZS5tZXJnZWQgPSB0cnVlO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/resolve-conflicts.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort-subgraph.js": /*!************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort-subgraph.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar barycenter = __webpack_require__(/*! ./barycenter */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/barycenter.js\");\nvar resolveConflicts = __webpack_require__(/*! ./resolve-conflicts */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/resolve-conflicts.js\");\nvar sort = __webpack_require__(/*! ./sort */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort.js\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight, usePrev) {\n var movable = g.children(v);\n // fixorder的点不参与排序(这个方案不合适,只排了新增节点,和原来的分离)\n // var movable = _.filter(g.children(v), function(v) { return g.node(v).fixorder === undefined; });\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n // 添加fixorder信息到entries里边\n // TODO: 不考虑复合情况,只用第一个点的fixorder信息,后续考虑更完备的实现\n _.forEach(entries, function (e) {\n var node = g.node(e.vs[0]);\n e.fixorder = node.fixorder;\n e.order = node.order;\n });\n\n var result = sort(entries, biasRight, usePrev);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvc29ydC1zdWJncmFwaC5qcz84OTU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxzRUFBVztBQUMzQixpQkFBaUIsbUJBQU8sQ0FBQyxtRkFBYztBQUN2Qyx1QkFBdUIsbUJBQU8sQ0FBQyxpR0FBcUI7QUFDcEQsV0FBVyxtQkFBTyxDQUFDLHVFQUFROztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QseUNBQXlDLEVBQUU7QUFDbkc7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL29yZGVyL3NvcnQtc3ViZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgYmFyeWNlbnRlciA9IHJlcXVpcmUoXCIuL2JhcnljZW50ZXJcIik7XG52YXIgcmVzb2x2ZUNvbmZsaWN0cyA9IHJlcXVpcmUoXCIuL3Jlc29sdmUtY29uZmxpY3RzXCIpO1xudmFyIHNvcnQgPSByZXF1aXJlKFwiLi9zb3J0XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRTdWJncmFwaDtcblxuZnVuY3Rpb24gc29ydFN1YmdyYXBoKGcsIHYsIGNnLCBiaWFzUmlnaHQsIHVzZVByZXYpIHtcbiAgdmFyIG1vdmFibGUgPSBnLmNoaWxkcmVuKHYpO1xuICAvLyBmaXhvcmRlcueahOeCueS4jeWPguS4juaOkuW6j++8iOi/meS4quaWueahiOS4jeWQiOmAgu+8jOWPquaOkuS6huaWsOWinuiKgueCue+8jOWSjOWOn+adpeeahOWIhuemu++8iVxuICAvLyB2YXIgbW92YWJsZSA9IF8uZmlsdGVyKGcuY2hpbGRyZW4odiksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5maXhvcmRlciA9PT0gdW5kZWZpbmVkOyB9KTtcbiAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gIHZhciBibCA9IG5vZGUgPyBub2RlLmJvcmRlckxlZnQgOiB1bmRlZmluZWQ7XG4gIHZhciBiciA9IG5vZGUgPyBub2RlLmJvcmRlclJpZ2h0OiB1bmRlZmluZWQ7XG4gIHZhciBzdWJncmFwaHMgPSB7fTtcblxuICBpZiAoYmwpIHtcbiAgICBtb3ZhYmxlID0gXy5maWx0ZXIobW92YWJsZSwgZnVuY3Rpb24odykge1xuICAgICAgcmV0dXJuIHcgIT09IGJsICYmIHcgIT09IGJyO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGJhcnljZW50ZXJzID0gYmFyeWNlbnRlcihnLCBtb3ZhYmxlKTtcbiAgXy5mb3JFYWNoKGJhcnljZW50ZXJzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGlmIChnLmNoaWxkcmVuKGVudHJ5LnYpLmxlbmd0aCkge1xuICAgICAgdmFyIHN1YmdyYXBoUmVzdWx0ID0gc29ydFN1YmdyYXBoKGcsIGVudHJ5LnYsIGNnLCBiaWFzUmlnaHQpO1xuICAgICAgc3ViZ3JhcGhzW2VudHJ5LnZdID0gc3ViZ3JhcGhSZXN1bHQ7XG4gICAgICBpZiAoXy5oYXMoc3ViZ3JhcGhSZXN1bHQsIFwiYmFyeWNlbnRlclwiKSkge1xuICAgICAgICBtZXJnZUJhcnljZW50ZXJzKGVudHJ5LCBzdWJncmFwaFJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB2YXIgZW50cmllcyA9IHJlc29sdmVDb25mbGljdHMoYmFyeWNlbnRlcnMsIGNnKTtcbiAgZXhwYW5kU3ViZ3JhcGhzKGVudHJpZXMsIHN1YmdyYXBocyk7XG5cbiAgLy8g5re75YqgZml4b3JkZXLkv6Hmga/liLBlbnRyaWVz6YeM6L65XG4gIC8vIFRPRE86IOS4jeiAg+iZkeWkjeWQiOaDheWGte+8jOWPqueUqOesrOS4gOS4queCueeahGZpeG9yZGVy5L+h5oGv77yM5ZCO57ut6ICD6JmR5pu05a6M5aSH55qE5a6e546wXG4gIF8uZm9yRWFjaChlbnRyaWVzLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBub2RlID0gZy5ub2RlKGUudnNbMF0pO1xuICAgIGUuZml4b3JkZXIgPSBub2RlLmZpeG9yZGVyO1xuICAgIGUub3JkZXIgPSBub2RlLm9yZGVyO1xuICB9KTtcblxuICB2YXIgcmVzdWx0ID0gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQsIHVzZVByZXYpO1xuXG4gIGlmIChibCkge1xuICAgIHJlc3VsdC52cyA9IF8uZmxhdHRlbihbYmwsIHJlc3VsdC52cywgYnJdLCB0cnVlKTtcbiAgICBpZiAoZy5wcmVkZWNlc3NvcnMoYmwpLmxlbmd0aCkge1xuICAgICAgdmFyIGJsUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhibClbMF0pLFxuICAgICAgICBiclByZWQgPSBnLm5vZGUoZy5wcmVkZWNlc3NvcnMoYnIpWzBdKTtcbiAgICAgIGlmICghXy5oYXMocmVzdWx0LCBcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAwO1xuICAgICAgICByZXN1bHQud2VpZ2h0ID0gMDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gKHJlc3VsdC5iYXJ5Y2VudGVyICogcmVzdWx0LndlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBibFByZWQub3JkZXIgKyBiclByZWQub3JkZXIpIC8gKHJlc3VsdC53ZWlnaHQgKyAyKTtcbiAgICAgIHJlc3VsdC53ZWlnaHQgKz0gMjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBleHBhbmRTdWJncmFwaHMoZW50cmllcywgc3ViZ3JhcGhzKSB7XG4gIF8uZm9yRWFjaChlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGVudHJ5LnZzID0gXy5mbGF0dGVuKGVudHJ5LnZzLm1hcChmdW5jdGlvbih2KSB7XG4gICAgICBpZiAoc3ViZ3JhcGhzW3ZdKSB7XG4gICAgICAgIHJldHVybiBzdWJncmFwaHNbdl0udnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KSwgdHJ1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtZXJnZUJhcnljZW50ZXJzKHRhcmdldCwgb3RoZXIpIHtcbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHRhcmdldC5iYXJ5Y2VudGVyKSkge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gKHRhcmdldC5iYXJ5Y2VudGVyICogdGFyZ2V0LndlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuYmFyeWNlbnRlciAqIG90aGVyLndlaWdodCkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC53ZWlnaHQgKyBvdGhlci53ZWlnaHQpO1xuICAgIHRhcmdldC53ZWlnaHQgKz0gb3RoZXIud2VpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gb3RoZXIuYmFyeWNlbnRlcjtcbiAgICB0YXJnZXQud2VpZ2h0ID0gb3RoZXIud2VpZ2h0O1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort-subgraph.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort.js": /*!***************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight, usePrev) {\n var parts = util.partition(entries, function(entry) {\n // NOTE: 有fixorder的也可以排\n return (_.has(entry, \"fixorder\") && !isNaN(entry.fixorder)) || _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight, !!usePrev));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\n/**\n * 配置是否考虑使用之前的布局结果\n */\nfunction compareWithBias(bias, usePrev) {\n return function(entryV, entryW) {\n // 排序的时候先判断fixorder,不行再判断重心\n if (entryV.fixorder !== undefined && entryW.fixorder !== undefined) {\n return entryV.fixorder - entryW.fixorder;\n }\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n // 重心相同,考虑之前排好的顺序\n if (usePrev && entryV.order !== undefined && entryW.order !== undefined) {\n if (entryV.order < entryW.order) {\n return -1;\n } else if (entryV.order > entryW.order) {\n return 1;\n }\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvb3JkZXIvc29ydC5qcz8wN2Y0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxzRUFBVztBQUMzQixXQUFXLG1CQUFPLENBQUMsa0VBQVM7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esc0RBQXNELGlCQUFpQixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi9vcmRlci9zb3J0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0O1xuXG5mdW5jdGlvbiBzb3J0KGVudHJpZXMsIGJpYXNSaWdodCwgdXNlUHJldikge1xuICB2YXIgcGFydHMgPSB1dGlsLnBhcnRpdGlvbihlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIC8vIE5PVEU6IOaciWZpeG9yZGVy55qE5Lmf5Y+v5Lul5o6SXG4gICAgcmV0dXJuIChfLmhhcyhlbnRyeSwgXCJmaXhvcmRlclwiKSAmJiAhaXNOYU4oZW50cnkuZml4b3JkZXIpKSB8fCBfLmhhcyhlbnRyeSwgXCJiYXJ5Y2VudGVyXCIpO1xuICB9KTtcbiAgdmFyIHNvcnRhYmxlID0gcGFydHMubGhzLFxuICAgIHVuc29ydGFibGUgPSBfLnNvcnRCeShwYXJ0cy5yaHMsIGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAtZW50cnkuaTsgfSksXG4gICAgdnMgPSBbXSxcbiAgICBzdW0gPSAwLFxuICAgIHdlaWdodCA9IDAsXG4gICAgdnNJbmRleCA9IDA7XG5cbiAgc29ydGFibGUuc29ydChjb21wYXJlV2l0aEJpYXMoISFiaWFzUmlnaHQsICEhdXNlUHJldikpO1xuXG4gIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG5cbiAgXy5mb3JFYWNoKHNvcnRhYmxlLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICB2c0luZGV4ICs9IGVudHJ5LnZzLmxlbmd0aDtcbiAgICB2cy5wdXNoKGVudHJ5LnZzKTtcbiAgICBzdW0gKz0gZW50cnkuYmFyeWNlbnRlciAqIGVudHJ5LndlaWdodDtcbiAgICB3ZWlnaHQgKz0gZW50cnkud2VpZ2h0O1xuICAgIHZzSW5kZXggPSBjb25zdW1lVW5zb3J0YWJsZSh2cywgdW5zb3J0YWJsZSwgdnNJbmRleCk7XG4gIH0pO1xuXG4gIHZhciByZXN1bHQgPSB7IHZzOiBfLmZsYXR0ZW4odnMsIHRydWUpIH07XG4gIGlmICh3ZWlnaHQpIHtcbiAgICByZXN1bHQuYmFyeWNlbnRlciA9IHN1bSAvIHdlaWdodDtcbiAgICByZXN1bHQud2VpZ2h0ID0gd2VpZ2h0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCBpbmRleCkge1xuICB2YXIgbGFzdDtcbiAgd2hpbGUgKHVuc29ydGFibGUubGVuZ3RoICYmIChsYXN0ID0gXy5sYXN0KHVuc29ydGFibGUpKS5pIDw9IGluZGV4KSB7XG4gICAgdW5zb3J0YWJsZS5wb3AoKTtcbiAgICB2cy5wdXNoKGxhc3QudnMpO1xuICAgIGluZGV4Kys7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIOmFjee9ruaYr+WQpuiAg+iZkeS9v+eUqOS5i+WJjeeahOW4g+WxgOe7k+aenFxuICovXG5mdW5jdGlvbiBjb21wYXJlV2l0aEJpYXMoYmlhcywgdXNlUHJldikge1xuICByZXR1cm4gZnVuY3Rpb24oZW50cnlWLCBlbnRyeVcpIHtcbiAgICAvLyDmjpLluo/nmoTml7blgJnlhYjliKTmlq1maXhvcmRlcu+8jOS4jeihjOWGjeWIpOaWremHjeW/g1xuICAgIGlmIChlbnRyeVYuZml4b3JkZXIgIT09IHVuZGVmaW5lZCAmJiBlbnRyeVcuZml4b3JkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGVudHJ5Vi5maXhvcmRlciAtIGVudHJ5Vy5maXhvcmRlcjtcbiAgICB9XG4gICAgaWYgKGVudHJ5Vi5iYXJ5Y2VudGVyIDwgZW50cnlXLmJhcnljZW50ZXIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKGVudHJ5Vi5iYXJ5Y2VudGVyID4gZW50cnlXLmJhcnljZW50ZXIpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICAvLyDph43lv4Pnm7jlkIzvvIzogIPomZHkuYvliY3mjpLlpb3nmoTpobrluo9cbiAgICBpZiAodXNlUHJldiAmJiBlbnRyeVYub3JkZXIgIT09IHVuZGVmaW5lZCAmJiBlbnRyeVcub3JkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGVudHJ5Vi5vcmRlciA8IGVudHJ5Vy5vcmRlcikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGVudHJ5Vi5vcmRlciA+IGVudHJ5Vy5vcmRlcikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gIWJpYXMgPyBlbnRyeVYuaSAtIGVudHJ5Vy5pIDogZW50cnlXLmkgLSBlbnRyeVYuaTtcbiAgfTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/order/sort.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/parent-dummy-chains.js": /*!************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/parent-dummy-chains.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcGFyZW50LWR1bW15LWNoYWlucy5qcz9jNWY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyxxRUFBVTs7QUFFMUI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL3BhcmVudC1kdW1teS1jaGFpbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnREdW1teUNoYWlucztcblxuZnVuY3Rpb24gcGFyZW50RHVtbXlDaGFpbnMoZykge1xuICB2YXIgcG9zdG9yZGVyTnVtcyA9IHBvc3RvcmRlcihnKTtcblxuICBfLmZvckVhY2goZy5ncmFwaCgpLmR1bW15Q2hhaW5zLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIGVkZ2VPYmogPSBub2RlLmVkZ2VPYmo7XG4gICAgdmFyIHBhdGhEYXRhID0gZmluZFBhdGgoZywgcG9zdG9yZGVyTnVtcywgZWRnZU9iai52LCBlZGdlT2JqLncpO1xuICAgIHZhciBwYXRoID0gcGF0aERhdGEucGF0aDtcbiAgICB2YXIgbGNhID0gcGF0aERhdGEubGNhO1xuICAgIHZhciBwYXRoSWR4ID0gMDtcbiAgICB2YXIgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgIHZhciBhc2NlbmRpbmcgPSB0cnVlO1xuXG4gICAgd2hpbGUgKHYgIT09IGVkZ2VPYmoudykge1xuICAgICAgbm9kZSA9IGcubm9kZSh2KTtcblxuICAgICAgaWYgKGFzY2VuZGluZykge1xuICAgICAgICB3aGlsZSAoKHBhdGhWID0gcGF0aFtwYXRoSWR4XSkgIT09IGxjYSAmJlxuICAgICAgICAgICAgICAgZy5ub2RlKHBhdGhWKS5tYXhSYW5rIDwgbm9kZS5yYW5rKSB7XG4gICAgICAgICAgcGF0aElkeCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGhWID09PSBsY2EpIHtcbiAgICAgICAgICBhc2NlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFzY2VuZGluZykge1xuICAgICAgICB3aGlsZSAocGF0aElkeCA8IHBhdGgubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgZy5ub2RlKHBhdGhWID0gcGF0aFtwYXRoSWR4ICsgMV0pLm1pblJhbmsgPD0gbm9kZS5yYW5rKSB7XG4gICAgICAgICAgcGF0aElkeCsrO1xuICAgICAgICB9XG4gICAgICAgIHBhdGhWID0gcGF0aFtwYXRoSWR4XTtcbiAgICAgIH1cblxuICAgICAgZy5zZXRQYXJlbnQodiwgcGF0aFYpO1xuICAgICAgdiA9IGcuc3VjY2Vzc29ycyh2KVswXTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyBGaW5kIGEgcGF0aCBmcm9tIHYgdG8gdyB0aHJvdWdoIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIChMQ0EpLiBSZXR1cm4gdGhlXG4vLyBmdWxsIHBhdGggYW5kIHRoZSBMQ0EuXG5mdW5jdGlvbiBmaW5kUGF0aChnLCBwb3N0b3JkZXJOdW1zLCB2LCB3KSB7XG4gIHZhciB2UGF0aCA9IFtdO1xuICB2YXIgd1BhdGggPSBbXTtcbiAgdmFyIGxvdyA9IE1hdGgubWluKHBvc3RvcmRlck51bXNbdl0ubG93LCBwb3N0b3JkZXJOdW1zW3ddLmxvdyk7XG4gIHZhciBsaW0gPSBNYXRoLm1heChwb3N0b3JkZXJOdW1zW3ZdLmxpbSwgcG9zdG9yZGVyTnVtc1t3XS5saW0pO1xuICB2YXIgcGFyZW50O1xuICB2YXIgbGNhO1xuXG4gIC8vIFRyYXZlcnNlIHVwIGZyb20gdiB0byBmaW5kIHRoZSBMQ0FcbiAgcGFyZW50ID0gdjtcbiAgZG8ge1xuICAgIHBhcmVudCA9IGcucGFyZW50KHBhcmVudCk7XG4gICAgdlBhdGgucHVzaChwYXJlbnQpO1xuICB9IHdoaWxlIChwYXJlbnQgJiZcbiAgICAgICAgICAgKHBvc3RvcmRlck51bXNbcGFyZW50XS5sb3cgPiBsb3cgfHwgbGltID4gcG9zdG9yZGVyTnVtc1twYXJlbnRdLmxpbSkpO1xuICBsY2EgPSBwYXJlbnQ7XG5cbiAgLy8gVHJhdmVyc2UgZnJvbSB3IHRvIExDQVxuICBwYXJlbnQgPSB3O1xuICB3aGlsZSAoKHBhcmVudCA9IGcucGFyZW50KHBhcmVudCkpICE9PSBsY2EpIHtcbiAgICB3UGF0aC5wdXNoKHBhcmVudCk7XG4gIH1cblxuICByZXR1cm4geyBwYXRoOiB2UGF0aC5jb25jYXQod1BhdGgucmV2ZXJzZSgpKSwgbGNhOiBsY2EgfTtcbn1cblxuZnVuY3Rpb24gcG9zdG9yZGVyKGcpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICB2YXIgbGltID0gMDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBsb3cgPSBsaW07XG4gICAgXy5mb3JFYWNoKGcuY2hpbGRyZW4odiksIGRmcyk7XG4gICAgcmVzdWx0W3ZdID0geyBsb3c6IGxvdywgbGltOiBsaW0rKyB9O1xuICB9XG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/parent-dummy-chains.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/bk.js": /*!****************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/bk.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ../graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcG9zaXRpb24vYmsuanM/MjEzMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsc0VBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLDBFQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxrRUFBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGVBQWUsRUFBRTtBQUN4RDtBQUNBLHdEQUF3RCxTQUFTO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0RBQXNELGtCQUFrQixFQUFFO0FBQzFFO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsV0FBVyxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL3Bvc2l0aW9uL2JrLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbi8qXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjb29yZGluYXRlIGFzc2lnbm1lbnQgYmFzZWQgb24gQnJhbmRlcyBhbmQgS8O2cGYsIFwiRmFzdFxuICogYW5kIFNpbXBsZSBIb3Jpem9udGFsIENvb3JkaW5hdGUgQXNzaWdubWVudC5cIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvblg6IHBvc2l0aW9uWCxcbiAgZmluZFR5cGUxQ29uZmxpY3RzOiBmaW5kVHlwZTFDb25mbGljdHMsXG4gIGZpbmRUeXBlMkNvbmZsaWN0czogZmluZFR5cGUyQ29uZmxpY3RzLFxuICBhZGRDb25mbGljdDogYWRkQ29uZmxpY3QsXG4gIGhhc0NvbmZsaWN0OiBoYXNDb25mbGljdCxcbiAgdmVydGljYWxBbGlnbm1lbnQ6IHZlcnRpY2FsQWxpZ25tZW50LFxuICBob3Jpem9udGFsQ29tcGFjdGlvbjogaG9yaXpvbnRhbENvbXBhY3Rpb24sXG4gIGFsaWduQ29vcmRpbmF0ZXM6IGFsaWduQ29vcmRpbmF0ZXMsXG4gIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OiBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxcbiAgYmFsYW5jZTogYmFsYW5jZVxufTtcblxuLypcbiAqIE1hcmtzIGFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggd2l0aCBhIHR5cGUtMSBjb25mbGljdCB3aXRoIHRoZSBcInR5cGUxQ29uZmxpY3RcIlxuICogcHJvcGVydHkuIEEgdHlwZS0xIGNvbmZsaWN0IGlzIG9uZSB3aGVyZSBhIG5vbi1pbm5lciBzZWdtZW50IGNyb3NzZXMgYW5cbiAqIGlubmVyIHNlZ21lbnQuIEFuIGlubmVyIHNlZ21lbnQgaXMgYW4gZWRnZSB3aXRoIGJvdGggaW5jaWRlbnQgbm9kZXMgbWFya2VkXG4gKiB3aXRoIHRoZSBcImR1bW15XCIgcHJvcGVydHkuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gc2NhbnMgbGF5ZXIgYnkgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHNlY29uZCwgZm9yIHR5cGUtMVxuICogY29uZmxpY3RzIGJldHdlZW4gdGhlIGN1cnJlbnQgbGF5ZXIgYW5kIHRoZSBwcmV2aW91cyBsYXllci4gRm9yIGVhY2ggbGF5ZXJcbiAqIGl0IHNjYW5zIHRoZSBub2RlcyBmcm9tIGxlZnQgdG8gcmlnaHQgdW50aWwgaXQgcmVhY2hlcyBvbmUgdGhhdCBpcyBpbmNpZGVudFxuICogb24gYW4gaW5uZXIgc2VnbWVudC4gSXQgdGhlbiBzY2FucyBwcmVkZWNlc3NvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgaGF2ZVxuICogZWRnZXMgdGhhdCBjcm9zcyB0aGF0IGlubmVyIHNlZ21lbnQuIEF0IHRoZSBlbmQgYSBmaW5hbCBzY2FuIGlzIGRvbmUgZm9yIGFsbFxuICogbm9kZXMgb24gdGhlIGN1cnJlbnQgcmFuayB0byBzZWUgaWYgdGhleSBjcm9zcyB0aGUgbGFzdCB2aXNpdGVkIGlubmVyXG4gKiBzZWdtZW50LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIChzYWZlbHkpIGFzc3VtZXMgdGhhdCBhIGR1bW15IG5vZGUgd2lsbCBvbmx5IGJlIGluY2lkZW50IG9uIGFcbiAqIHNpbmdsZSBub2RlIGluIHRoZSBsYXllcnMgYmVpbmcgc2Nhbm5lZC5cbiAqL1xuZnVuY3Rpb24gZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSB7XG4gIHZhciBjb25mbGljdHMgPSB7fTtcblxuICBmdW5jdGlvbiB2aXNpdExheWVyKHByZXZMYXllciwgbGF5ZXIpIHtcbiAgICB2YXJcbiAgICAgIC8vIGxhc3QgdmlzaXRlZCBub2RlIGluIHRoZSBwcmV2aW91cyBsYXllciB0aGF0IGlzIGluY2lkZW50IG9uIGFuIGlubmVyXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgazAgPSAwLFxuICAgICAgLy8gVHJhY2tzIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBsYXllciBzY2FubmVkIGZvciBjcm9zc2luZ3Mgd2l0aCBhIHR5cGUtMVxuICAgICAgLy8gc2VnbWVudC5cbiAgICAgIHNjYW5Qb3MgPSAwLFxuICAgICAgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aCxcbiAgICAgIGxhc3ROb2RlID0gXy5sYXN0KGxheWVyKTtcblxuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIHcgPSBmaW5kT3RoZXJJbm5lclNlZ21lbnROb2RlKGcsIHYpLFxuICAgICAgICBrMSA9IHcgPyBnLm5vZGUodykub3JkZXIgOiBwcmV2TGF5ZXJMZW5ndGg7XG5cbiAgICAgIGlmICh3IHx8IHYgPT09IGxhc3ROb2RlKSB7XG4gICAgICAgIF8uZm9yRWFjaChsYXllci5zbGljZShzY2FuUG9zLCBpICsxKSwgZnVuY3Rpb24oc2Nhbk5vZGUpIHtcbiAgICAgICAgICBfLmZvckVhY2goZy5wcmVkZWNlc3NvcnMoc2Nhbk5vZGUpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgICB2YXIgdUxhYmVsID0gZy5ub2RlKHUpLFxuICAgICAgICAgICAgICB1UG9zID0gdUxhYmVsLm9yZGVyO1xuICAgICAgICAgICAgaWYgKCh1UG9zIDwgazAgfHwgazEgPCB1UG9zKSAmJlxuICAgICAgICAgICAgICAgICEodUxhYmVsLmR1bW15ICYmIGcubm9kZShzY2FuTm9kZSkuZHVtbXkpKSB7XG4gICAgICAgICAgICAgIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdSwgc2Nhbk5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2NhblBvcyA9IGkgKyAxO1xuICAgICAgICBrMCA9IGsxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgXy5yZWR1Y2UobGF5ZXJpbmcsIHZpc2l0TGF5ZXIpO1xuICByZXR1cm4gY29uZmxpY3RzO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZTJDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aEVuZCwgcHJldk5vcnRoQm9yZGVyLCBuZXh0Tm9ydGhCb3JkZXIpIHtcbiAgICB2YXIgdjtcbiAgICBfLmZvckVhY2goXy5yYW5nZShzb3V0aFBvcywgc291dGhFbmQpLCBmdW5jdGlvbihpKSB7XG4gICAgICB2ID0gc291dGhbaV07XG4gICAgICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgIHZhciB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICBpZiAodU5vZGUuZHVtbXkgJiZcbiAgICAgICAgICAgICAgKHVOb2RlLm9yZGVyIDwgcHJldk5vcnRoQm9yZGVyIHx8IHVOb2RlLm9yZGVyID4gbmV4dE5vcnRoQm9yZGVyKSkge1xuICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBmdW5jdGlvbiB2aXNpdExheWVyKG5vcnRoLCBzb3V0aCkge1xuICAgIHZhciBwcmV2Tm9ydGhQb3MgPSAtMSxcbiAgICAgIG5leHROb3J0aFBvcyxcbiAgICAgIHNvdXRoUG9zID0gMDtcblxuICAgIF8uZm9yRWFjaChzb3V0aCwgZnVuY3Rpb24odiwgc291dGhMb29rYWhlYWQpIHtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgdmFyIHByZWRlY2Vzc29ycyA9IGcucHJlZGVjZXNzb3JzKHYpO1xuICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgIG5leHROb3J0aFBvcyA9IGcubm9kZShwcmVkZWNlc3NvcnNbMF0pLm9yZGVyO1xuICAgICAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aExvb2thaGVhZCwgcHJldk5vcnRoUG9zLCBuZXh0Tm9ydGhQb3MpO1xuICAgICAgICAgIHNvdXRoUG9zID0gc291dGhMb29rYWhlYWQ7XG4gICAgICAgICAgcHJldk5vcnRoUG9zID0gbmV4dE5vcnRoUG9zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGgubGVuZ3RoLCBuZXh0Tm9ydGhQb3MsIG5vcnRoLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc291dGg7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdikge1xuICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgcmV0dXJuIF8uZmluZChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgcmV0dXJuIGcubm9kZSh1KS5kdW1teTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDb25mbGljdChjb25mbGljdHMsIHYsIHcpIHtcbiAgaWYgKHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuXG4gIHZhciBjb25mbGljdHNWID0gY29uZmxpY3RzW3ZdO1xuICBpZiAoIWNvbmZsaWN0c1YpIHtcbiAgICBjb25mbGljdHNbdl0gPSBjb25mbGljdHNWID0ge307XG4gIH1cbiAgY29uZmxpY3RzVlt3XSA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhhc0NvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiBfLmhhcyhjb25mbGljdHNbdl0sIHcpO1xufVxuXG4vKlxuICogVHJ5IHRvIGFsaWduIG5vZGVzIGludG8gdmVydGljYWwgXCJibG9ja3NcIiB3aGVyZSBwb3NzaWJsZS4gVGhpcyBhbGdvcml0aG1cbiAqIGF0dGVtcHRzIHRvIGFsaWduIGEgbm9kZSB3aXRoIG9uZSBvZiBpdHMgbWVkaWFuIG5laWdoYm9ycy4gSWYgdGhlIGVkZ2VcbiAqIGNvbm5lY3RpbmcgYSBuZWlnaGJvciBpcyBhIHR5cGUtMSBjb25mbGljdCB0aGVuIHdlIGlnbm9yZSB0aGF0IHBvc3NpYmlsaXR5LlxuICogSWYgYSBwcmV2aW91cyBub2RlIGhhcyBhbHJlYWR5IGZvcm1lZCBhIGJsb2NrIHdpdGggYSBub2RlIGFmdGVyIHRoZSBub2RlXG4gKiB3ZSdyZSB0cnlpbmcgdG8gZm9ybSBhIGJsb2NrIHdpdGgsIHdlIGFsc28gaWdub3JlIHRoYXQgcG9zc2liaWxpdHkgLSBvdXJcbiAqIGJsb2NrcyB3b3VsZCBiZSBzcGxpdCBpbiB0aGF0IHNjZW5hcmlvLlxuICovXG5mdW5jdGlvbiB2ZXJ0aWNhbEFsaWdubWVudChnLCBsYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKSB7XG4gIHZhciByb290ID0ge30sXG4gICAgYWxpZ24gPSB7fSxcbiAgICBwb3MgPSB7fTtcblxuICAvLyBXZSBjYWNoZSB0aGUgcG9zaXRpb24gaGVyZSBiYXNlZCBvbiB0aGUgbGF5ZXJpbmcgYmVjYXVzZSB0aGUgZ3JhcGggYW5kXG4gIC8vIGxheWVyaW5nIG1heSBiZSBvdXQgb2Ygc3luYy4gVGhlIGxheWVyaW5nIG1hdHJpeCBpcyBtYW5pcHVsYXRlZCB0b1xuICAvLyBnZW5lcmF0ZSBkaWZmZXJlbnQgZXh0cmVtZSBhbGlnbm1lbnRzLlxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBvcmRlcikge1xuICAgICAgcm9vdFt2XSA9IHY7XG4gICAgICBhbGlnblt2XSA9IHY7XG4gICAgICBwb3Nbdl0gPSBvcmRlcjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBwcmV2SWR4ID0gLTE7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgICB2YXIgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICB3cyA9IF8uc29ydEJ5KHdzLCBmdW5jdGlvbih3KSB7IHJldHVybiBwb3Nbd107IH0pO1xuICAgICAgICB2YXIgbXAgPSAod3MubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihtcCksIGlsID0gTWF0aC5jZWlsKG1wKTsgaSA8PSBpbDsgKytpKSB7XG4gICAgICAgICAgdmFyIHcgPSB3c1tpXTtcbiAgICAgICAgICBpZiAoYWxpZ25bdl0gPT09IHYgJiZcbiAgICAgICAgICAgICAgcHJldklkeCA8IHBvc1t3XSAmJlxuICAgICAgICAgICAgICAhaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSkge1xuICAgICAgICAgICAgYWxpZ25bd10gPSB2O1xuICAgICAgICAgICAgYWxpZ25bdl0gPSByb290W3ZdID0gcm9vdFt3XTtcbiAgICAgICAgICAgIHByZXZJZHggPSBwb3Nbd107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHJvb3Q6IHJvb3QsIGFsaWduOiBhbGlnbiB9O1xufVxuXG5mdW5jdGlvbiBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBsYXllcmluZywgcm9vdCwgYWxpZ24sIHJldmVyc2VTZXApIHtcbiAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGlmZmVycyBmcm9tIEJLIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcy5cbiAgLy8gSW5zdGVhZCBvZiB0aGVpciBhbGdvcml0aG0gd2UgY29uc3RydWN0IGEgbmV3IGJsb2NrIGdyYXBoIGFuZCBkbyB0d29cbiAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAvLyBjb29yZGluYXRlcy4gVGhlIHNlY29uZCBzd2VlcCByZW1vdmVzIHVudXNlZCBzcGFjZSBieSBtb3ZpbmcgYmxvY2tzIHRvIHRoZVxuICAvLyBncmVhdGVzdCBjb29yZGluYXRlcyB3aXRob3V0IHZpb2xhdGluZyBzZXBhcmF0aW9uLlxuICB2YXIgeHMgPSB7fSxcbiAgICBibG9ja0cgPSBidWlsZEJsb2NrR3JhcGgoZywgbGF5ZXJpbmcsIHJvb3QsIHJldmVyc2VTZXApLFxuICAgIGJvcmRlclR5cGUgPSByZXZlcnNlU2VwID8gXCJib3JkZXJMZWZ0XCIgOiBcImJvcmRlclJpZ2h0XCI7XG5cbiAgZnVuY3Rpb24gaXRlcmF0ZShzZXRYc0Z1bmMsIG5leHROb2Rlc0Z1bmMpIHtcbiAgICB2YXIgc3RhY2sgPSBibG9ja0cubm9kZXMoKTtcbiAgICB2YXIgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2aXNpdGVkID0ge307XG4gICAgd2hpbGUgKGVsZW0pIHtcbiAgICAgIGlmICh2aXNpdGVkW2VsZW1dKSB7XG4gICAgICAgIHNldFhzRnVuYyhlbGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpc2l0ZWRbZWxlbV0gPSB0cnVlO1xuICAgICAgICBzdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICBzdGFjayA9IHN0YWNrLmNvbmNhdChuZXh0Tm9kZXNGdW5jKGVsZW0pKTtcbiAgICAgIH1cblxuICAgICAgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IHBhc3MsIGFzc2lnbiBzbWFsbGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMShlbGVtKSB7XG4gICAgeHNbZWxlbV0gPSBibG9ja0cuaW5FZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoYWNjLCB4c1tlLnZdICsgYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLy8gU2Vjb25kIHBhc3MsIGFzc2lnbiBncmVhdGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMihlbGVtKSB7XG4gICAgdmFyIG1pbiA9IGJsb2NrRy5vdXRFZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5taW4oYWNjLCB4c1tlLnddIC0gYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG5cbiAgICB2YXIgbm9kZSA9IGcubm9kZShlbGVtKTtcbiAgICBpZiAobWluICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgJiYgbm9kZS5ib3JkZXJUeXBlICE9PSBib3JkZXJUeXBlKSB7XG4gICAgICB4c1tlbGVtXSA9IE1hdGgubWF4KHhzW2VsZW1dLCBtaW4pO1xuICAgIH1cbiAgfVxuXG4gIGl0ZXJhdGUocGFzczEsIGJsb2NrRy5wcmVkZWNlc3NvcnMuYmluZChibG9ja0cpKTtcbiAgaXRlcmF0ZShwYXNzMiwgYmxvY2tHLnN1Y2Nlc3NvcnMuYmluZChibG9ja0cpKTtcblxuICAvLyBBc3NpZ24geCBjb29yZGluYXRlcyB0byBhbGwgbm9kZXNcbiAgXy5mb3JFYWNoKGFsaWduLCBmdW5jdGlvbih2KSB7XG4gICAgeHNbdl0gPSB4c1tyb290W3ZdXTtcbiAgfSk7XG5cbiAgcmV0dXJuIHhzO1xufVxuXG5cbmZ1bmN0aW9uIGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCkge1xuICB2YXIgYmxvY2tHcmFwaCA9IG5ldyBHcmFwaCgpLFxuICAgIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCksXG4gICAgc2VwRm4gPSBzZXAoZ3JhcGhMYWJlbC5ub2Rlc2VwLCBncmFwaExhYmVsLmVkZ2VzZXAsIHJldmVyc2VTZXApO1xuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgdTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIHZhciB2Um9vdCA9IHJvb3Rbdl07XG4gICAgICBibG9ja0dyYXBoLnNldE5vZGUodlJvb3QpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIHVSb290ID0gcm9vdFt1XSxcbiAgICAgICAgICBwcmV2TWF4ID0gYmxvY2tHcmFwaC5lZGdlKHVSb290LCB2Um9vdCk7XG4gICAgICAgIGJsb2NrR3JhcGguc2V0RWRnZSh1Um9vdCwgdlJvb3QsIE1hdGgubWF4KHNlcEZuKGcsIHYsIHUpLCBwcmV2TWF4IHx8IDApKTtcbiAgICAgIH1cbiAgICAgIHUgPSB2O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gYmxvY2tHcmFwaDtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFsaWdubWVudCB0aGF0IGhhcyB0aGUgc21hbGxlc3Qgd2lkdGggb2YgdGhlIGdpdmVuIGFsaWdubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcykge1xuICByZXR1cm4gXy5taW5CeShfLnZhbHVlcyh4c3MpLCBmdW5jdGlvbiAoeHMpIHtcbiAgICB2YXIgbWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cbiAgICBfLmZvckluKHhzLCBmdW5jdGlvbiAoeCwgdikge1xuICAgICAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoKGcsIHYpIC8gMjtcblxuICAgICAgbWF4ID0gTWF0aC5tYXgoeCArIGhhbGZXaWR0aCwgbWF4KTtcbiAgICAgIG1pbiA9IE1hdGgubWluKHggLSBoYWxmV2lkdGgsIG1pbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF4IC0gbWluO1xuICB9KTtcbn1cblxuLypcbiAqIEFsaWduIHRoZSBjb29yZGluYXRlcyBvZiBlYWNoIG9mIHRoZSBsYXlvdXQgYWxpZ25tZW50cyBzdWNoIHRoYXRcbiAqIGxlZnQtYmlhc2VkIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtaW5pbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXNcbiAqIHRoZSBtaW5pbXVtIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudCBhbmQgcmlnaHQtYmlhc2VkXG4gKiBhbGlnbm1lbnRzIGhhdmUgdGhlaXIgbWF4aW11bSBjb29yZGluYXRlIGF0IHRoZSBzYW1lIHBvaW50IGFzIHRoZSBtYXhpbXVtXG4gKiBjb29yZGluYXRlIG9mIHRoZSBzbWFsbGVzdCB3aWR0aCBhbGlnbm1lbnQuXG4gKi9cbmZ1bmN0aW9uIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBhbGlnblRvKSB7XG4gIHZhciBhbGlnblRvVmFscyA9IF8udmFsdWVzKGFsaWduVG8pLFxuICAgIGFsaWduVG9NaW4gPSBfLm1pbihhbGlnblRvVmFscyksXG4gICAgYWxpZ25Ub01heCA9IF8ubWF4KGFsaWduVG9WYWxzKTtcblxuICBfLmZvckVhY2goW1widVwiLCBcImRcIl0sIGZ1bmN0aW9uKHZlcnQpIHtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICB2YXIgYWxpZ25tZW50ID0gdmVydCArIGhvcml6LFxuICAgICAgICB4cyA9IHhzc1thbGlnbm1lbnRdLFxuICAgICAgICBkZWx0YTtcbiAgICAgIGlmICh4cyA9PT0gYWxpZ25UbykgcmV0dXJuO1xuXG4gICAgICB2YXIgeHNWYWxzID0gXy52YWx1ZXMoeHMpO1xuICAgICAgZGVsdGEgPSBob3JpeiA9PT0gXCJsXCIgPyBhbGlnblRvTWluIC0gXy5taW4oeHNWYWxzKSA6IGFsaWduVG9NYXggLSBfLm1heCh4c1ZhbHMpO1xuXG4gICAgICBpZiAoZGVsdGEpIHtcbiAgICAgICAgeHNzW2FsaWdubWVudF0gPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4geCArIGRlbHRhOyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGJhbGFuY2UoeHNzLCBhbGlnbikge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoeHNzLnVsLCBmdW5jdGlvbihpZ25vcmUsIHYpIHtcbiAgICBpZiAoYWxpZ24pIHtcbiAgICAgIHJldHVybiB4c3NbYWxpZ24udG9Mb3dlckNhc2UoKV1bdl07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB4cyA9IF8uc29ydEJ5KF8ubWFwKHhzcywgdikpO1xuICAgICAgcmV0dXJuICh4c1sxXSArIHhzWzJdKSAvIDI7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25YKGcpIHtcbiAgdmFyIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICB2YXIgY29uZmxpY3RzID0gXy5tZXJnZShcbiAgICBmaW5kVHlwZTFDb25mbGljdHMoZywgbGF5ZXJpbmcpLFxuICAgIGZpbmRUeXBlMkNvbmZsaWN0cyhnLCBsYXllcmluZykpO1xuXG4gIHZhciB4c3MgPSB7fTtcbiAgdmFyIGFkanVzdGVkTGF5ZXJpbmc7XG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIGFkanVzdGVkTGF5ZXJpbmcgPSB2ZXJ0ID09PSBcInVcIiA/IGxheWVyaW5nIDogXy52YWx1ZXMobGF5ZXJpbmcpLnJldmVyc2UoKTtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICBpZiAoaG9yaXogPT09IFwiclwiKSB7XG4gICAgICAgIGFkanVzdGVkTGF5ZXJpbmcgPSBfLm1hcChhZGp1c3RlZExheWVyaW5nLCBmdW5jdGlvbihpbm5lcikge1xuICAgICAgICAgIHJldHVybiBfLnZhbHVlcyhpbm5lcikucmV2ZXJzZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yRm4gPSAodmVydCA9PT0gXCJ1XCIgPyBnLnByZWRlY2Vzc29ycyA6IGcuc3VjY2Vzc29ycykuYmluZChnKTtcbiAgICAgIHZhciBhbGlnbiA9IHZlcnRpY2FsQWxpZ25tZW50KGcsIGFkanVzdGVkTGF5ZXJpbmcsIGNvbmZsaWN0cywgbmVpZ2hib3JGbik7XG4gICAgICB2YXIgeHMgPSBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBhZGp1c3RlZExheWVyaW5nLFxuICAgICAgICBhbGlnbi5yb290LCBhbGlnbi5hbGlnbiwgaG9yaXogPT09IFwiclwiKTtcbiAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgeHMgPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4gLXg7IH0pO1xuICAgICAgfVxuICAgICAgeHNzW3ZlcnQgKyBob3Jpel0gPSB4cztcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFyIHNtYWxsZXN0V2lkdGggPSBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudChnLCB4c3MpO1xuICBhbGlnbkNvb3JkaW5hdGVzKHhzcywgc21hbGxlc3RXaWR0aCk7XG4gIHJldHVybiBiYWxhbmNlKHhzcywgZy5ncmFwaCgpLmFsaWduKTtcbn1cblxuZnVuY3Rpb24gc2VwKG5vZGVTZXAsIGVkZ2VTZXAsIHJldmVyc2VTZXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGcsIHYsIHcpIHtcbiAgICB2YXIgdkxhYmVsID0gZy5ub2RlKHYpO1xuICAgIHZhciB3TGFiZWwgPSBnLm5vZGUodyk7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGRlbHRhO1xuXG4gICAgc3VtICs9IHZMYWJlbC53aWR0aCAvIDI7XG4gICAgaWYgKF8uaGFzKHZMYWJlbCwgXCJsYWJlbHBvc1wiKSkge1xuICAgICAgc3dpdGNoICh2TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcImxcIjogZGVsdGEgPSAtdkxhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBkZWx0YSA9IHZMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIHN1bSArPSByZXZlcnNlU2VwID8gZGVsdGEgOiAtZGVsdGE7XG4gICAgfVxuICAgIGRlbHRhID0gMDtcblxuICAgIHN1bSArPSAodkxhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcbiAgICBzdW0gKz0gKHdMYWJlbC5kdW1teSA/IGVkZ2VTZXAgOiBub2RlU2VwKSAvIDI7XG5cbiAgICBzdW0gKz0gd0xhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXMod0xhYmVsLCBcImxhYmVscG9zXCIpKSB7XG4gICAgICBzd2l0Y2ggKHdMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwibFwiOiBkZWx0YSA9IHdMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZGVsdGEgPSAtd0xhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgcmV0dXJuIHN1bTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lkdGgoZywgdikge1xuICByZXR1cm4gZy5ub2RlKHYpLndpZHRoO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/bk.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/index.js": /*!*******************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/index.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar util = __webpack_require__(/*! ../util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\");\nvar positionX = __webpack_require__(/*! ./bk */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/bk.js\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcG9zaXRpb24vaW5kZXguanM/ZjdiYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsc0VBQVc7QUFDM0IsV0FBVyxtQkFBTyxDQUFDLGtFQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHNFQUFNOztBQUU5Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELHlCQUF5QixFQUFFO0FBQy9FO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcG9zaXRpb24vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi4vdXRpbFwiKTtcbnZhciBwb3NpdGlvblggPSByZXF1aXJlKFwiLi9ia1wiKS5wb3NpdGlvblg7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zaXRpb247XG5cbmZ1bmN0aW9uIHBvc2l0aW9uKGcpIHtcbiAgZyA9IHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpO1xuXG4gIHBvc2l0aW9uWShnKTtcbiAgXy5mb3JFYWNoKHBvc2l0aW9uWChnKSwgZnVuY3Rpb24oeCwgdikge1xuICAgIGcubm9kZSh2KS54ID0geDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uWShnKSB7XG4gIHZhciBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgdmFyIHJhbmtTZXAgPSBnLmdyYXBoKCkucmFua3NlcDtcbiAgdmFyIHByZXZZID0gMDtcbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBtYXhIZWlnaHQgPSBfLm1heChfLm1hcChsYXllciwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLmhlaWdodDsgfSkpO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odikge1xuICAgICAgZy5ub2RlKHYpLnkgPSBwcmV2WSArIG1heEhlaWdodCAvIDI7XG4gICAgfSk7XG4gICAgcHJldlkgKz0gbWF4SGVpZ2h0ICsgcmFua1NlcDtcbiAgfSk7XG59XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/position/index.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/feasible-tree.js": /*!***********************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/feasible-tree.js ***! \***********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ../graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\nvar slack = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js\").slack;\n\n// module.exports = feasibleTree;\nmodule.exports = {\n feasibleTree: feasibleTree,\n feasibleTreeWithLayer: feasibleTreeWithLayer\n};\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTreeWithLayer(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTreeWithLayer(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTreeWithLayer(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n // 对于指定layer的,直接加入tight-tree,不参与调整\n if (!t.hasNode(w) && (g.node(w).layer !== undefined || !slack(g, e))) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcmFuay9mZWFzaWJsZS10cmVlLmpzPzU0YTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHNFQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQywwRUFBYTtBQUNqQyxZQUFZLG1CQUFPLENBQUMsc0VBQVE7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrQkFBa0I7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0JBQWtCOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL3JhbmsvZmVhc2libGUtdHJlZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgc2xhY2sgPSByZXF1aXJlKFwiLi91dGlsXCIpLnNsYWNrO1xuXG4vLyBtb2R1bGUuZXhwb3J0cyA9IGZlYXNpYmxlVHJlZTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBmZWFzaWJsZVRyZWU6IGZlYXNpYmxlVHJlZSxcbiAgZmVhc2libGVUcmVlV2l0aExheWVyOiBmZWFzaWJsZVRyZWVXaXRoTGF5ZXJcbn07XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBmZWFzaWJsZVRyZWUoZykge1xuICB2YXIgdCA9IG5ldyBHcmFwaCh7IGRpcmVjdGVkOiBmYWxzZSB9KTtcblxuICAvLyBDaG9vc2UgYXJiaXRyYXJ5IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBvdXIgdHJlZVxuICB2YXIgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gIHZhciBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG5cbiAgdmFyIGVkZ2UsIGRlbHRhO1xuICB3aGlsZSAodGlnaHRUcmVlKHQsIGcpIDwgc2l6ZSkge1xuICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKTtcbiAgfVxuXG4gIHJldHVybiB0O1xufVxuXG4vKlxuICogRmluZHMgYSBtYXhpbWFsIHRyZWUgb2YgdGlnaHQgZWRnZXMgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGVcbiAqIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRpZ2h0VHJlZSh0LCBnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgZWRnZVYgPSBlLnYsXG4gICAgICAgIHcgPSAodiA9PT0gZWRnZVYpID8gZS53IDogZWRnZVY7XG4gICAgICBpZiAoIXQuaGFzTm9kZSh3KSAmJiAhc2xhY2soZywgZSkpIHtcbiAgICAgICAgdC5zZXROb2RlKHcsIHt9KTtcbiAgICAgICAgdC5zZXRFZGdlKHYsIHcsIHt9KTtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIHQubm9kZUNvdW50KCk7XG59XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBmZWFzaWJsZVRyZWVXaXRoTGF5ZXIoZykge1xuICB2YXIgdCA9IG5ldyBHcmFwaCh7IGRpcmVjdGVkOiBmYWxzZSB9KTtcblxuICAvLyBDaG9vc2UgYXJiaXRyYXJ5IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBvdXIgdHJlZVxuICB2YXIgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gIHZhciBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG5cbiAgdmFyIGVkZ2UsIGRlbHRhO1xuICB3aGlsZSAodGlnaHRUcmVlV2l0aExheWVyKHQsIGcpIDwgc2l6ZSkge1xuICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKTtcbiAgfVxuXG4gIHJldHVybiB0O1xufVxuXG5cbi8qXG4gKiBGaW5kcyBhIG1heGltYWwgdHJlZSBvZiB0aWdodCBlZGdlcyBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIHRoZVxuICogdHJlZS5cbiAqL1xuZnVuY3Rpb24gdGlnaHRUcmVlV2l0aExheWVyKHQsIGcpIHtcbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBfLmZvckVhY2goZy5ub2RlRWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciBlZGdlViA9IGUudixcbiAgICAgICAgdyA9ICh2ID09PSBlZGdlVikgPyBlLncgOiBlZGdlVjtcbiAgICAgIC8vIOWvueS6juaMh+WummxheWVy55qE77yM55u05o6l5Yqg5YWldGlnaHQtdHJlZe+8jOS4jeWPguS4juiwg+aVtFxuICAgICAgaWYgKCF0Lmhhc05vZGUodykgJiYgKGcubm9kZSh3KS5sYXllciAhPT0gdW5kZWZpbmVkIHx8ICFzbGFjayhnLCBlKSkpIHtcbiAgICAgICAgdC5zZXROb2RlKHcsIHt9KTtcbiAgICAgICAgdC5zZXRFZGdlKHYsIHcsIHt9KTtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIHQubm9kZUNvdW50KCk7XG59XG5cbi8qXG4gKiBGaW5kcyB0aGUgZWRnZSB3aXRoIHRoZSBzbWFsbGVzdCBzbGFjayB0aGF0IGlzIGluY2lkZW50IG9uIHRyZWUgYW5kIHJldHVybnNcbiAqIGl0LlxuICovXG5mdW5jdGlvbiBmaW5kTWluU2xhY2tFZGdlKHQsIGcpIHtcbiAgcmV0dXJuIF8ubWluQnkoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKHQuaGFzTm9kZShlLnYpICE9PSB0Lmhhc05vZGUoZS53KSkge1xuICAgICAgcmV0dXJuIHNsYWNrKGcsIGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0UmFua3ModCwgZywgZGVsdGEpIHtcbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGcubm9kZSh2KS5yYW5rICs9IGRlbHRhO1xuICB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/feasible-tree.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/index.js": /*!***************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/index.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar rankUtil = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js\");\nvar longestPath = rankUtil.longestPathWithLayer;\nvar feasibleTree = __webpack_require__(/*! ./feasible-tree */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/feasible-tree.js\").feasibleTreeWithLayer;\nvar networkSimplex = __webpack_require__(/*! ./network-simplex */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/network-simplex.js\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n // default: networkSimplexRanker(g);\n default: tightTreeRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcmFuay9pbmRleC5qcz84MGZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLGVBQWUsbUJBQU8sQ0FBQyxzRUFBUTtBQUMvQjtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLHdGQUFpQjtBQUM1QyxxQkFBcUIsbUJBQU8sQ0FBQyw0RkFBbUI7O0FBRWhEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL3JhbmsvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIHJhbmtVdGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbnZhciBsb25nZXN0UGF0aCA9IHJhbmtVdGlsLmxvbmdlc3RQYXRoV2l0aExheWVyO1xudmFyIGZlYXNpYmxlVHJlZSA9IHJlcXVpcmUoXCIuL2ZlYXNpYmxlLXRyZWVcIikuZmVhc2libGVUcmVlV2l0aExheWVyO1xudmFyIG5ldHdvcmtTaW1wbGV4ID0gcmVxdWlyZShcIi4vbmV0d29yay1zaW1wbGV4XCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbms7XG5cbi8qXG4gKiBBc3NpZ25zIGEgcmFuayB0byBlYWNoIG5vZGUgaW4gdGhlIGlucHV0IGdyYXBoIHRoYXQgcmVzcGVjdHMgdGhlIFwibWlubGVuXCJcbiAqIGNvbnN0cmFpbnQgc3BlY2lmaWVkIG9uIGVkZ2VzIGJldHdlZW4gbm9kZXMuXG4gKlxuICogVGhpcyBiYXNpYyBzdHJ1Y3R1cmUgaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3JcbiAqIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIGNvbm5lY3RlZCBEQUdcbiAqICAgIDIuIEdyYXBoIG5vZGVzIG11c3QgYmUgb2JqZWN0c1xuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIFwid2VpZ2h0XCIgYW5kIFwibWlubGVuXCIgYXR0cmlidXRlc1xuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYSBcInJhbmtcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uIFJhbmtzIGNhbiBzdGFydCBhdCBhbnkgaW5kZXggKGluY2x1ZGluZyBuZWdhdGl2ZSksIHdlJ2xsXG4gKiAgICAgICBmaXggdGhlbSB1cCBsYXRlci5cbiAqL1xuZnVuY3Rpb24gcmFuayhnKSB7XG4gIHN3aXRjaChnLmdyYXBoKCkucmFua2VyKSB7XG4gIGNhc2UgXCJuZXR3b3JrLXNpbXBsZXhcIjogbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7IGJyZWFrO1xuICBjYXNlIFwidGlnaHQtdHJlZVwiOiB0aWdodFRyZWVSYW5rZXIoZyk7IGJyZWFrO1xuICBjYXNlIFwibG9uZ2VzdC1wYXRoXCI6IGxvbmdlc3RQYXRoUmFua2VyKGcpOyBicmVhaztcbiAgLy8gZGVmYXVsdDogbmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7XG4gIGRlZmF1bHQ6IHRpZ2h0VHJlZVJhbmtlcihnKTtcbiAgfVxufVxuXG4vLyBBIGZhc3QgYW5kIHNpbXBsZSByYW5rZXIsIGJ1dCByZXN1bHRzIGFyZSBmYXIgZnJvbSBvcHRpbWFsLlxudmFyIGxvbmdlc3RQYXRoUmFua2VyID0gbG9uZ2VzdFBhdGg7XG5cbmZ1bmN0aW9uIHRpZ2h0VHJlZVJhbmtlcihnKSB7XG4gIGxvbmdlc3RQYXRoKGcpO1xuICBmZWFzaWJsZVRyZWUoZyk7XG59XG5cbmZ1bmN0aW9uIG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpIHtcbiAgbmV0d29ya1NpbXBsZXgoZyk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/index.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/network-simplex.js": /*!*************************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/network-simplex.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar feasibleTree = __webpack_require__(/*! ./feasible-tree */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/feasible-tree.js\").feasibleTree;\nvar slack = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js\").slack;\nvar initRank = __webpack_require__(/*! ./util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js\").longestPath;\nvar preorder = __webpack_require__(/*! ../graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").alg.preorder;\nvar postorder = __webpack_require__(/*! ../graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").alg.postorder;\nvar simplify = __webpack_require__(/*! ../util */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcmFuay9uZXR3b3JrLXNpbXBsZXguanM/YzgyZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsc0VBQVc7QUFDM0IsbUJBQW1CLG1CQUFPLENBQUMsd0ZBQWlCO0FBQzVDLFlBQVksbUJBQU8sQ0FBQyxzRUFBUTtBQUM1QixlQUFlLG1CQUFPLENBQUMsc0VBQVE7QUFDL0IsZUFBZSxtQkFBTyxDQUFDLDBFQUFhO0FBQ3BDLGdCQUFnQixtQkFBTyxDQUFDLDBFQUFhO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxrRUFBUzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsNkNBQTZDLHVCQUF1QixFQUFFO0FBQ3RFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLDBCQUEwQixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcmFuay9uZXR3b3JrLXNpbXBsZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIGZlYXNpYmxlVHJlZSA9IHJlcXVpcmUoXCIuL2ZlYXNpYmxlLXRyZWVcIikuZmVhc2libGVUcmVlO1xudmFyIHNsYWNrID0gcmVxdWlyZShcIi4vdXRpbFwiKS5zbGFjaztcbnZhciBpbml0UmFuayA9IHJlcXVpcmUoXCIuL3V0aWxcIikubG9uZ2VzdFBhdGg7XG52YXIgcHJlb3JkZXIgPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuYWxnLnByZW9yZGVyO1xudmFyIHBvc3RvcmRlciA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5hbGcucG9zdG9yZGVyO1xudmFyIHNpbXBsaWZ5ID0gcmVxdWlyZShcIi4uL3V0aWxcIikuc2ltcGxpZnk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV0d29ya1NpbXBsZXg7XG5cbi8vIEV4cG9zZSBzb21lIGludGVybmFscyBmb3IgdGVzdGluZyBwdXJwb3Nlc1xubmV0d29ya1NpbXBsZXguaW5pdExvd0xpbVZhbHVlcyA9IGluaXRMb3dMaW1WYWx1ZXM7XG5uZXR3b3JrU2ltcGxleC5pbml0Q3V0VmFsdWVzID0gaW5pdEN1dFZhbHVlcztcbm5ldHdvcmtTaW1wbGV4LmNhbGNDdXRWYWx1ZSA9IGNhbGNDdXRWYWx1ZTtcbm5ldHdvcmtTaW1wbGV4LmxlYXZlRWRnZSA9IGxlYXZlRWRnZTtcbm5ldHdvcmtTaW1wbGV4LmVudGVyRWRnZSA9IGVudGVyRWRnZTtcbm5ldHdvcmtTaW1wbGV4LmV4Y2hhbmdlRWRnZXMgPSBleGNoYW5nZUVkZ2VzO1xuXG4vKlxuICogVGhlIG5ldHdvcmsgc2ltcGxleCBhbGdvcml0aG0gYXNzaWducyByYW5rcyB0byBlYWNoIG5vZGUgaW4gdGhlIGlucHV0IGdyYXBoXG4gKiBhbmQgaXRlcmF0aXZlbHkgaW1wcm92ZXMgdGhlIHJhbmtpbmcgdG8gcmVkdWNlIHRoZSBsZW5ndGggb2YgZWRnZXMuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgaW5wdXQgZ3JhcGggbXVzdCBiZSBhIERBRy5cbiAqICAgIDIuIEFsbCBub2RlcyBpbiB0aGUgZ3JhcGggbXVzdCBoYXZlIGFuIG9iamVjdCB2YWx1ZS5cbiAqICAgIDMuIEFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggbXVzdCBoYXZlIFwibWlubGVuXCIgYW5kIFwid2VpZ2h0XCIgYXR0cmlidXRlcy5cbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBBbGwgbm9kZXMgaW4gdGhlIGdyYXBoIHdpbGwgaGF2ZSBhbiBhc3NpZ25lZCBcInJhbmtcIiBhdHRyaWJ1dGUgdGhhdCBoYXNcbiAqICAgICAgIGJlZW4gb3B0aW1pemVkIGJ5IHRoZSBuZXR3b3JrIHNpbXBsZXggYWxnb3JpdGhtLiBSYW5rcyBzdGFydCBhdCAwLlxuICpcbiAqXG4gKiBBIHJvdWdoIHNrZXRjaCBvZiB0aGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogICAgMS4gQXNzaWduIGluaXRpYWwgcmFua3MgdG8gZWFjaCBub2RlLiBXZSB1c2UgdGhlIGxvbmdlc3QgcGF0aCBhbGdvcml0aG0sXG4gKiAgICAgICB3aGljaCBhc3NpZ25zIHJhbmtzIHRvIHRoZSBsb3dlc3QgcG9zaXRpb24gcG9zc2libGUuIEluIGdlbmVyYWwgdGhpc1xuICogICAgICAgbGVhZHMgdG8gdmVyeSB3aWRlIGJvdHRvbSByYW5rcyBhbmQgdW5uZWNlc3NhcmlseSBsb25nIGVkZ2VzLlxuICogICAgMi4gQ29uc3RydWN0IGEgZmVhc2libGUgdGlnaHQgdHJlZS4gQSB0aWdodCB0cmVlIGlzIG9uZSBzdWNoIHRoYXQgYWxsXG4gKiAgICAgICBlZGdlcyBpbiB0aGUgdHJlZSBoYXZlIG5vIHNsYWNrIChkaWZmZXJlbmNlIGJldHdlZW4gbGVuZ3RoIG9mIGVkZ2VcbiAqICAgICAgIGFuZCBtaW5sZW4gZm9yIHRoZSBlZGdlKS4gVGhpcyBieSBpdHNlbGYgZ3JlYXRseSBpbXByb3ZlcyB0aGUgYXNzaWduZWRcbiAqICAgICAgIHJhbmtpbmdzIGJ5IHNob3J0aW5nIGVkZ2VzLlxuICogICAgMy4gSXRlcmF0aXZlbHkgZmluZCBlZGdlcyB0aGF0IGhhdmUgbmVnYXRpdmUgY3V0IHZhbHVlcy4gR2VuZXJhbGx5IGFcbiAqICAgICAgIG5lZ2F0aXZlIGN1dCB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZWRnZSBjb3VsZCBiZSByZW1vdmVkIGFuZCBhIG5ld1xuICogICAgICAgdHJlZSBlZGdlIGNvdWxkIGJlIGFkZGVkIHRvIHByb2R1Y2UgYSBtb3JlIGNvbXBhY3QgZ3JhcGguXG4gKlxuICogTXVjaCBvZiB0aGUgYWxnb3JpdGhtcyBoZXJlIGFyZSBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkEgVGVjaG5pcXVlXG4gKiBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCIgVGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZSByb3VnaGx5IGZvbGxvd3MgdGhlXG4gKiBzdHJ1Y3R1cmUgb2YgdGhlIG92ZXJhbGwgYWxnb3JpdGhtLlxuICovXG5mdW5jdGlvbiBuZXR3b3JrU2ltcGxleChnKSB7XG4gIGcgPSBzaW1wbGlmeShnKTtcbiAgaW5pdFJhbmsoZyk7XG4gIHZhciB0ID0gZmVhc2libGVUcmVlKGcpO1xuICBpbml0TG93TGltVmFsdWVzKHQpO1xuICBpbml0Q3V0VmFsdWVzKHQsIGcpO1xuXG4gIHZhciBlLCBmO1xuICB3aGlsZSAoKGUgPSBsZWF2ZUVkZ2UodCkpKSB7XG4gICAgZiA9IGVudGVyRWRnZSh0LCBnLCBlKTtcbiAgICBleGNoYW5nZUVkZ2VzKHQsIGcsIGUsIGYpO1xuICB9XG59XG5cbi8qXG4gKiBJbml0aWFsaXplcyBjdXQgdmFsdWVzIGZvciBhbGwgZWRnZXMgaW4gdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDdXRWYWx1ZXModCwgZykge1xuICB2YXIgdnMgPSBwb3N0b3JkZXIodCwgdC5ub2RlcygpKTtcbiAgdnMgPSB2cy5zbGljZSgwLCB2cy5sZW5ndGggLSAxKTtcbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgYXNzaWduQ3V0VmFsdWUodCwgZywgdik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25DdXRWYWx1ZSh0LCBnLCBjaGlsZCkge1xuICB2YXIgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICB2YXIgcGFyZW50ID0gY2hpbGRMYWIucGFyZW50O1xuICB0LmVkZ2UoY2hpbGQsIHBhcmVudCkuY3V0dmFsdWUgPSBjYWxjQ3V0VmFsdWUodCwgZywgY2hpbGQpO1xufVxuXG4vKlxuICogR2l2ZW4gdGhlIHRpZ2h0IHRyZWUsIGl0cyBncmFwaCwgYW5kIGEgY2hpbGQgaW4gdGhlIGdyYXBoIGNhbGN1bGF0ZSBhbmRcbiAqIHJldHVybiB0aGUgY3V0IHZhbHVlIGZvciB0aGUgZWRnZSBiZXR3ZWVuIHRoZSBjaGlsZCBhbmQgaXRzIHBhcmVudC5cbiAqL1xuZnVuY3Rpb24gY2FsY0N1dFZhbHVlKHQsIGcsIGNoaWxkKSB7XG4gIHZhciBjaGlsZExhYiA9IHQubm9kZShjaGlsZCk7XG4gIHZhciBwYXJlbnQgPSBjaGlsZExhYi5wYXJlbnQ7XG4gIC8vIFRydWUgaWYgdGhlIGNoaWxkIGlzIG9uIHRoZSB0YWlsIGVuZCBvZiB0aGUgZWRnZSBpbiB0aGUgZGlyZWN0ZWQgZ3JhcGhcbiAgdmFyIGNoaWxkSXNUYWlsID0gdHJ1ZTtcbiAgLy8gVGhlIGdyYXBoJ3MgdmlldyBvZiB0aGUgdHJlZSBlZGdlIHdlJ3JlIGluc3BlY3RpbmdcbiAgdmFyIGdyYXBoRWRnZSA9IGcuZWRnZShjaGlsZCwgcGFyZW50KTtcbiAgLy8gVGhlIGFjY3VtdWxhdGVkIGN1dCB2YWx1ZSBmb3IgdGhlIGVkZ2UgYmV0d2VlbiB0aGlzIG5vZGUgYW5kIGl0cyBwYXJlbnRcbiAgdmFyIGN1dFZhbHVlID0gMDtcblxuICBpZiAoIWdyYXBoRWRnZSkge1xuICAgIGNoaWxkSXNUYWlsID0gZmFsc2U7XG4gICAgZ3JhcGhFZGdlID0gZy5lZGdlKHBhcmVudCwgY2hpbGQpO1xuICB9XG5cbiAgY3V0VmFsdWUgPSBncmFwaEVkZ2Uud2VpZ2h0O1xuXG4gIF8uZm9yRWFjaChnLm5vZGVFZGdlcyhjaGlsZCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgaXNPdXRFZGdlID0gZS52ID09PSBjaGlsZCxcbiAgICAgIG90aGVyID0gaXNPdXRFZGdlID8gZS53IDogZS52O1xuXG4gICAgaWYgKG90aGVyICE9PSBwYXJlbnQpIHtcbiAgICAgIHZhciBwb2ludHNUb0hlYWQgPSBpc091dEVkZ2UgPT09IGNoaWxkSXNUYWlsLFxuICAgICAgICBvdGhlcldlaWdodCA9IGcuZWRnZShlKS53ZWlnaHQ7XG5cbiAgICAgIGN1dFZhbHVlICs9IHBvaW50c1RvSGVhZCA/IG90aGVyV2VpZ2h0IDogLW90aGVyV2VpZ2h0O1xuICAgICAgaWYgKGlzVHJlZUVkZ2UodCwgY2hpbGQsIG90aGVyKSkge1xuICAgICAgICB2YXIgb3RoZXJDdXRWYWx1ZSA9IHQuZWRnZShjaGlsZCwgb3RoZXIpLmN1dHZhbHVlO1xuICAgICAgICBjdXRWYWx1ZSArPSBwb2ludHNUb0hlYWQgPyAtb3RoZXJDdXRWYWx1ZSA6IG90aGVyQ3V0VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY3V0VmFsdWU7XG59XG5cbmZ1bmN0aW9uIGluaXRMb3dMaW1WYWx1ZXModHJlZSwgcm9vdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICByb290ID0gdHJlZS5ub2RlcygpWzBdO1xuICB9XG4gIGRmc0Fzc2lnbkxvd0xpbSh0cmVlLCB7fSwgMSwgcm9vdCk7XG59XG5cbmZ1bmN0aW9uIGRmc0Fzc2lnbkxvd0xpbSh0cmVlLCB2aXNpdGVkLCBuZXh0TGltLCB2LCBwYXJlbnQpIHtcbiAgdmFyIGxvdyA9IG5leHRMaW07XG4gIHZhciBsYWJlbCA9IHRyZWUubm9kZSh2KTtcblxuICB2aXNpdGVkW3ZdID0gdHJ1ZTtcbiAgXy5mb3JFYWNoKHRyZWUubmVpZ2hib3JzKHYpLCBmdW5jdGlvbih3KSB7XG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCB3KSkge1xuICAgICAgbmV4dExpbSA9IGRmc0Fzc2lnbkxvd0xpbSh0cmVlLCB2aXNpdGVkLCBuZXh0TGltLCB3LCB2KTtcbiAgICB9XG4gIH0pO1xuXG4gIGxhYmVsLmxvdyA9IGxvdztcbiAgbGFiZWwubGltID0gbmV4dExpbSsrO1xuICBpZiAocGFyZW50KSB7XG4gICAgbGFiZWwucGFyZW50ID0gcGFyZW50O1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE8gc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMgd2hlbiB3ZSBpbmNyZW1lbnRhbGx5IHVwZGF0ZSBsb3cgbGltXG4gICAgZGVsZXRlIGxhYmVsLnBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBuZXh0TGltO1xufVxuXG5mdW5jdGlvbiBsZWF2ZUVkZ2UodHJlZSkge1xuICByZXR1cm4gXy5maW5kKHRyZWUuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB0cmVlLmVkZ2UoZSkuY3V0dmFsdWUgPCAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZW50ZXJFZGdlKHQsIGcsIGVkZ2UpIHtcbiAgdmFyIHYgPSBlZGdlLnY7XG4gIHZhciB3ID0gZWRnZS53O1xuXG4gIC8vIEZvciB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIHdlIGFzc3VtZSB0aGF0IHYgaXMgdGhlIHRhaWwgYW5kIHcgaXMgdGhlXG4gIC8vIGhlYWQsIHNvIGlmIHdlIGRvbid0IGhhdmUgdGhpcyBlZGdlIGluIHRoZSBncmFwaCB3ZSBzaG91bGQgZmxpcCBpdCB0b1xuICAvLyBtYXRjaCB0aGUgY29ycmVjdCBvcmllbnRhdGlvbi5cbiAgaWYgKCFnLmhhc0VkZ2UodiwgdykpIHtcbiAgICB2ID0gZWRnZS53O1xuICAgIHcgPSBlZGdlLnY7XG4gIH1cblxuICB2YXIgdkxhYmVsID0gdC5ub2RlKHYpO1xuICB2YXIgd0xhYmVsID0gdC5ub2RlKHcpO1xuICB2YXIgdGFpbExhYmVsID0gdkxhYmVsO1xuICB2YXIgZmxpcCA9IGZhbHNlO1xuXG4gIC8vIElmIHRoZSByb290IGlzIGluIHRoZSB0YWlsIG9mIHRoZSBlZGdlIHRoZW4gd2UgbmVlZCB0byBmbGlwIHRoZSBsb2dpYyB0aGF0XG4gIC8vIGNoZWNrcyBmb3IgdGhlIGhlYWQgYW5kIHRhaWwgbm9kZXMgaW4gdGhlIGNhbmRpZGF0ZXMgZnVuY3Rpb24gYmVsb3cuXG4gIGlmICh2TGFiZWwubGltID4gd0xhYmVsLmxpbSkge1xuICAgIHRhaWxMYWJlbCA9IHdMYWJlbDtcbiAgICBmbGlwID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBjYW5kaWRhdGVzID0gXy5maWx0ZXIoZy5lZGdlcygpLCBmdW5jdGlvbihlZGdlKSB7XG4gICAgcmV0dXJuIGZsaXAgPT09IGlzRGVzY2VuZGFudCh0LCB0Lm5vZGUoZWRnZS52KSwgdGFpbExhYmVsKSAmJlxuICAgICAgICAgICBmbGlwICE9PSBpc0Rlc2NlbmRhbnQodCwgdC5ub2RlKGVkZ2UudyksIHRhaWxMYWJlbCk7XG4gIH0pO1xuXG4gIHJldHVybiBfLm1pbkJ5KGNhbmRpZGF0ZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIHNsYWNrKGcsIGVkZ2UpOyB9KTtcbn1cblxuZnVuY3Rpb24gZXhjaGFuZ2VFZGdlcyh0LCBnLCBlLCBmKSB7XG4gIHZhciB2ID0gZS52O1xuICB2YXIgdyA9IGUudztcbiAgdC5yZW1vdmVFZGdlKHYsIHcpO1xuICB0LnNldEVkZ2UoZi52LCBmLncsIHt9KTtcbiAgaW5pdExvd0xpbVZhbHVlcyh0KTtcbiAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcbiAgdXBkYXRlUmFua3ModCwgZyk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVJhbmtzKHQsIGcpIHtcbiAgdmFyIHJvb3QgPSBfLmZpbmQodC5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiAhZy5ub2RlKHYpLnBhcmVudDsgfSk7XG4gIHZhciB2cyA9IHByZW9yZGVyKHQsIHJvb3QpO1xuICB2cyA9IHZzLnNsaWNlKDEpO1xuICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcGFyZW50ID0gdC5ub2RlKHYpLnBhcmVudCxcbiAgICAgIGVkZ2UgPSBnLmVkZ2UodiwgcGFyZW50KSxcbiAgICAgIGZsaXBwZWQgPSBmYWxzZTtcblxuICAgIGlmICghZWRnZSkge1xuICAgICAgZWRnZSA9IGcuZWRnZShwYXJlbnQsIHYpO1xuICAgICAgZmxpcHBlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgZy5ub2RlKHYpLnJhbmsgPSBnLm5vZGUocGFyZW50KS5yYW5rICsgKGZsaXBwZWQgPyBlZGdlLm1pbmxlbiA6IC1lZGdlLm1pbmxlbik7XG4gIH0pO1xufVxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBlZGdlIGlzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpc1RyZWVFZGdlKHRyZWUsIHUsIHYpIHtcbiAgcmV0dXJuIHRyZWUuaGFzRWRnZSh1LCB2KTtcbn1cblxuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIG5vZGUgaXMgZGVzY2VuZGFudCBvZiB0aGUgcm9vdCBub2RlIHBlciB0aGVcbiAqIGFzc2lnbmVkIGxvdyBhbmQgbGltIGF0dHJpYnV0ZXMgaW4gdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGlzRGVzY2VuZGFudCh0cmVlLCB2TGFiZWwsIHJvb3RMYWJlbCkge1xuICByZXR1cm4gcm9vdExhYmVsLmxvdyA8PSB2TGFiZWwubGltICYmIHZMYWJlbC5saW0gPD0gcm9vdExhYmVsLmxpbTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/network-simplex.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js": /*!**************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\n\nmodule.exports = {\n longestPath: longestPath,\n longestPathWithLayer: longestPathWithLayer,\n slack: slack,\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\nfunction longestPathWithLayer(g) {\n // 用longest path,找出最深的点\n var visited = {};\n var minRank = 0;\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n label.rank = rank;\n minRank = Math.min(label.rank, minRank);\n return label.rank;\n }\n\n _.forEach(g.sources(), dfs);\n\n minRank += 1; // NOTE: 最小的层级是dummy root,+1\n\n // forward一遍,赋值层级\n function dfsForward(v, nextRank) {\n var label = g.node(v);\n\n var currRank = !isNaN(label.layer) ? label.layer : nextRank;\n\n // 没有指定,取最大值\n if (label.rank === undefined || label.rank < currRank) {\n label.rank = currRank;\n }\n\n // DFS遍历子节点\n _.map(g.outEdges(v), function (e) {\n dfsForward(e.w, currRank + g.edge(e).minlen);\n });\n }\n\n // 指定层级的,更新下游\n g.nodes().forEach(function (n) {\n var label = g.node(n);\n if (!isNaN(label.layer)) {\n dfsForward(n, label.layer); // 默认的dummy root所在层的rank是-1\n } else {\n label.rank -= minRank;\n }\n });\n\n // g.sources().forEach(function (root) {\n // dfsForward(root, -1); // 默认的dummy root所在层的rank是-1\n // });\n \n // 不这样做了,赋值的层级只影响下游\n /*\n // backward一遍,把父节点收紧\n function dfsBackward(v) {\n var label = g.node(v);\n\n // 有指定layer,不改动\n if (!isNaN(label.layer)) {\n label.rank = label.layer;\n return label.rank;\n }\n\n // 其它\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfsBackward(e.w) - g.edge(e).minlen;\n }));\n\n if (!isNaN(rank)) {\n label.rank = rank;\n }\n\n return label.rank;\n }\n\n _.forEach(g.sources(), dfsBackward);\n */\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvcmFuay91dGlsLmpzP2VmYzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHNFQUFXOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsNEJBQTRCO0FBQzVCLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL3JhbmsvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBsb25nZXN0UGF0aDogbG9uZ2VzdFBhdGgsXG4gIGxvbmdlc3RQYXRoV2l0aExheWVyOiBsb25nZXN0UGF0aFdpdGhMYXllcixcbiAgc2xhY2s6IHNsYWNrLFxufTtcblxuLypcbiAqIEluaXRpYWxpemVzIHJhbmtzIGZvciB0aGUgaW5wdXQgZ3JhcGggdXNpbmcgdGhlIGxvbmdlc3QgcGF0aCBhbGdvcml0aG0uIFRoaXNcbiAqIGFsZ29yaXRobSBzY2FsZXMgd2VsbCBhbmQgaXMgZmFzdCBpbiBwcmFjdGljZSwgaXQgeWllbGRzIHJhdGhlciBwb29yXG4gKiBzb2x1dGlvbnMuIE5vZGVzIGFyZSBwdXNoZWQgdG8gdGhlIGxvd2VzdCBsYXllciBwb3NzaWJsZSwgbGVhdmluZyB0aGUgYm90dG9tXG4gKiByYW5rcyB3aWRlIGFuZCBsZWF2aW5nIGVkZ2VzIGxvbmdlciB0aGFuIG5lY2Vzc2FyeS4gSG93ZXZlciwgZHVlIHRvIGl0c1xuICogc3BlZWQsIHRoaXMgYWxnb3JpdGhtIGlzIGdvb2QgZm9yIGdldHRpbmcgYW4gaW5pdGlhbCByYW5raW5nIHRoYXQgY2FuIGJlIGZlZFxuICogaW50byBvdGhlciBhbGdvcml0aG1zLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGRvZXMgbm90IG5vcm1hbGl6ZSBsYXllcnMgYmVjYXVzZSBpdCB3aWxsIGJlIHVzZWQgYnkgb3RoZXJcbiAqIGFsZ29yaXRobXMgaW4gbW9zdCBjYXNlcy4gSWYgdXNpbmcgdGhpcyBhbGdvcml0aG0gZGlyZWN0bHksIGJlIHN1cmUgdG9cbiAqIHJ1biBub3JtYWxpemUgYXQgdGhlIGVuZC5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBRy5cbiAqICAgIDIuIElucHV0IGdyYXBoIG5vZGUgbGFiZWxzIGNhbiBiZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIG5vZGUgd2lsbCBiZSBhc3NpZ24gYW4gKHVubm9ybWFsaXplZCkgXCJyYW5rXCIgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGxvbmdlc3RQYXRoKGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBsYWJlbCA9IGcubm9kZSh2KTtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybiBsYWJlbC5yYW5rO1xuICAgIH1cbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcblxuICAgIHZhciByYW5rID0gXy5taW4oXy5tYXAoZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIGRmcyhlLncpIC0gZy5lZGdlKGUpLm1pbmxlbjtcbiAgICB9KSk7XG5cbiAgICBpZiAocmFuayA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbXSkgZm9yIExvZGFzaCAzXG4gICAgICAgIHJhbmsgPT09IHVuZGVmaW5lZCB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggNFxuICAgICAgICByYW5rID09PSBudWxsKSB7IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbbnVsbF0pXG4gICAgICByYW5rID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gKGxhYmVsLnJhbmsgPSByYW5rKTtcbiAgfVxuXG4gIF8uZm9yRWFjaChnLnNvdXJjZXMoKSwgZGZzKTtcbn1cblxuZnVuY3Rpb24gbG9uZ2VzdFBhdGhXaXRoTGF5ZXIoZykge1xuICAvLyDnlKhsb25nZXN0IHBhdGjvvIzmib7lh7rmnIDmt7HnmoTngrlcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgdmFyIG1pblJhbmsgPSAwO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgICAgcmV0dXJuIGxhYmVsLnJhbms7XG4gICAgfVxuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgdmFyIHJhbmsgPSBfLm1pbihfLm1hcChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gZGZzKGUudykgLSBnLmVkZ2UoZSkubWlubGVuO1xuICAgIH0pKTtcblxuICAgIGlmIChyYW5rID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDNcbiAgICAgICAgcmFuayA9PT0gdW5kZWZpbmVkIHx8IC8vIHJldHVybiB2YWx1ZSBvZiBfLm1hcChbXSkgZm9yIExvZGFzaCA0XG4gICAgICAgIHJhbmsgPT09IG51bGwpIHsgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtudWxsXSlcbiAgICAgIHJhbmsgPSAwO1xuICAgIH1cblxuICAgIGxhYmVsLnJhbmsgPSByYW5rO1xuICAgIG1pblJhbmsgPSBNYXRoLm1pbihsYWJlbC5yYW5rLCBtaW5SYW5rKTtcbiAgICByZXR1cm4gbGFiZWwucmFuaztcbiAgfVxuXG4gIF8uZm9yRWFjaChnLnNvdXJjZXMoKSwgZGZzKTtcblxuICBtaW5SYW5rICs9IDE7IC8vIE5PVEU6IOacgOWwj+eahOWxgue6p+aYr2R1bW15IHJvb3TvvIwrMVxuXG4gIC8vIGZvcndhcmTkuIDpgY3vvIzotYvlgLzlsYLnuqdcbiAgZnVuY3Rpb24gZGZzRm9yd2FyZCh2LCBuZXh0UmFuaykge1xuICAgIHZhciBsYWJlbCA9IGcubm9kZSh2KTtcblxuICAgIHZhciBjdXJyUmFuayA9ICFpc05hTihsYWJlbC5sYXllcikgPyBsYWJlbC5sYXllciA6IG5leHRSYW5rO1xuXG4gICAgLy8g5rKh5pyJ5oyH5a6a77yM5Y+W5pyA5aSn5YC8XG4gICAgaWYgKGxhYmVsLnJhbmsgPT09IHVuZGVmaW5lZCB8fCBsYWJlbC5yYW5rIDwgY3VyclJhbmspIHtcbiAgICAgIGxhYmVsLnJhbmsgPSBjdXJyUmFuaztcbiAgICB9XG5cbiAgICAvLyBERlPpgY3ljoblrZDoioLngrlcbiAgICBfLm1hcChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZGZzRm9yd2FyZChlLncsIGN1cnJSYW5rICsgZy5lZGdlKGUpLm1pbmxlbik7XG4gICAgfSk7XG4gIH1cblxuICAvLyDmjIflrprlsYLnuqfnmoTvvIzmm7TmlrDkuIvmuLhcbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICB2YXIgbGFiZWwgPSBnLm5vZGUobik7XG4gICAgaWYgKCFpc05hTihsYWJlbC5sYXllcikpIHtcbiAgICAgIGRmc0ZvcndhcmQobiwgbGFiZWwubGF5ZXIpOyAvLyDpu5jorqTnmoRkdW1teSByb2905omA5Zyo5bGC55qEcmFua+aYry0xXG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsLnJhbmsgLT0gbWluUmFuaztcbiAgICB9XG4gIH0pO1xuXG4gIC8vIGcuc291cmNlcygpLmZvckVhY2goZnVuY3Rpb24gKHJvb3QpIHtcbiAgLy8gICBkZnNGb3J3YXJkKHJvb3QsIC0xKTsgLy8g6buY6K6k55qEZHVtbXkgcm9vdOaJgOWcqOWxgueahHJhbmvmmK8tMVxuICAvLyB9KTtcbiAgXG4gIC8vIOS4jei/meagt+WBmuS6hu+8jOi1i+WAvOeahOWxgue6p+WPquW9seWTjeS4i+a4uFxuICAvKlxuICAvLyBiYWNrd2FyZOS4gOmBje+8jOaKiueItuiKgueCueaUtue0p1xuICBmdW5jdGlvbiBkZnNCYWNrd2FyZCh2KSB7XG4gICAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuXG4gICAgLy8g5pyJ5oyH5a6abGF5ZXLvvIzkuI3mlLnliqhcbiAgICBpZiAoIWlzTmFOKGxhYmVsLmxheWVyKSkge1xuICAgICAgbGFiZWwucmFuayA9IGxhYmVsLmxheWVyO1xuICAgICAgcmV0dXJuIGxhYmVsLnJhbms7XG4gICAgfVxuXG4gICAgLy8g5YW25a6DXG4gICAgdmFyIHJhbmsgPSBfLm1pbihfLm1hcChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gZGZzQmFja3dhcmQoZS53KSAtIGcuZWRnZShlKS5taW5sZW47XG4gICAgfSkpO1xuXG4gICAgaWYgKCFpc05hTihyYW5rKSkge1xuICAgICAgbGFiZWwucmFuayA9IHJhbms7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsLnJhbms7XG4gIH1cblxuICBfLmZvckVhY2goZy5zb3VyY2VzKCksIGRmc0JhY2t3YXJkKTtcbiAgKi9cbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFtb3VudCBvZiBzbGFjayBmb3IgdGhlIGdpdmVuIGVkZ2UuIFRoZSBzbGFjayBpcyBkZWZpbmVkIGFzIHRoZVxuICogZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsZW5ndGggb2YgdGhlIGVkZ2UgYW5kIGl0cyBtaW5pbXVtIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2xhY2soZywgZSkge1xuICByZXR1cm4gZy5ub2RlKGUudykucmFuayAtIGcubm9kZShlLnYpLnJhbmsgLSBnLmVkZ2UoZSkubWlubGVuO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/rank/util.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js": /*!*********************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("/* eslint \"no-console\": off */\n\n\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ./graphlib */ \"./node_modules/_dagrejs@0.2.1@dagrejs/lib/graphlib.js\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvdXRpbC5qcz8wNDU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMxQixZQUFZLG1CQUFPLENBQUMseUVBQVk7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0NBQWtDLEVBQUU7QUFDeEU7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsK0JBQStCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLEtBQUs7QUFDL0MsS0FBSyxvQkFBb0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFdBQVcsRUFBRTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHVCQUF1QixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLG1EQUFtRCx1QkFBdUIsRUFBRTs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUNBQWlDLHlCQUF5QixFQUFFO0FBQzVEO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZGFncmVqc0AwLjIuMUBkYWdyZWpzL2xpYi91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IFwibm8tY29uc29sZVwiOiBvZmYgKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhZGREdW1teU5vZGU6IGFkZER1bW15Tm9kZSxcbiAgc2ltcGxpZnk6IHNpbXBsaWZ5LFxuICBhc05vbkNvbXBvdW5kR3JhcGg6IGFzTm9uQ29tcG91bmRHcmFwaCxcbiAgc3VjY2Vzc29yV2VpZ2h0czogc3VjY2Vzc29yV2VpZ2h0cyxcbiAgcHJlZGVjZXNzb3JXZWlnaHRzOiBwcmVkZWNlc3NvcldlaWdodHMsXG4gIGludGVyc2VjdFJlY3Q6IGludGVyc2VjdFJlY3QsXG4gIGJ1aWxkTGF5ZXJNYXRyaXg6IGJ1aWxkTGF5ZXJNYXRyaXgsXG4gIG5vcm1hbGl6ZVJhbmtzOiBub3JtYWxpemVSYW5rcyxcbiAgcmVtb3ZlRW1wdHlSYW5rczogcmVtb3ZlRW1wdHlSYW5rcyxcbiAgYWRkQm9yZGVyTm9kZTogYWRkQm9yZGVyTm9kZSxcbiAgbWF4UmFuazogbWF4UmFuayxcbiAgcGFydGl0aW9uOiBwYXJ0aXRpb24sXG4gIHRpbWU6IHRpbWUsXG4gIG5vdGltZTogbm90aW1lXG59O1xuXG4vKlxuICogQWRkcyBhIGR1bW15IG5vZGUgdG8gdGhlIGdyYXBoIGFuZCByZXR1cm4gdi5cbiAqL1xuZnVuY3Rpb24gYWRkRHVtbXlOb2RlKGcsIHR5cGUsIGF0dHJzLCBuYW1lKSB7XG4gIHZhciB2O1xuICBkbyB7XG4gICAgdiA9IF8udW5pcXVlSWQobmFtZSk7XG4gIH0gd2hpbGUgKGcuaGFzTm9kZSh2KSk7XG5cbiAgYXR0cnMuZHVtbXkgPSB0eXBlO1xuICBnLnNldE5vZGUodiwgYXR0cnMpO1xuICByZXR1cm4gdjtcbn1cblxuLypcbiAqIFJldHVybnMgYSBuZXcgZ3JhcGggd2l0aCBvbmx5IHNpbXBsZSBlZGdlcy4gSGFuZGxlcyBhZ2dyZWdhdGlvbiBvZiBkYXRhXG4gKiBhc3NvY2lhdGVkIHdpdGggbXVsdGktZWRnZXMuXG4gKi9cbmZ1bmN0aW9uIHNpbXBsaWZ5KGcpIHtcbiAgdmFyIHNpbXBsaWZpZWQgPSBuZXcgR3JhcGgoKS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHNpbXBsaWZpZWQuc2V0Tm9kZSh2LCBnLm5vZGUodikpOyB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBzaW1wbGVMYWJlbCA9IHNpbXBsaWZpZWQuZWRnZShlLnYsIGUudykgfHwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogMSB9O1xuICAgIHZhciBsYWJlbCA9IGcuZWRnZShlKTtcbiAgICBzaW1wbGlmaWVkLnNldEVkZ2UoZS52LCBlLncsIHtcbiAgICAgIHdlaWdodDogc2ltcGxlTGFiZWwud2VpZ2h0ICsgbGFiZWwud2VpZ2h0LFxuICAgICAgbWlubGVuOiBNYXRoLm1heChzaW1wbGVMYWJlbC5taW5sZW4sIGxhYmVsLm1pbmxlbilcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBzaW1wbGlmaWVkO1xufVxuXG5mdW5jdGlvbiBhc05vbkNvbXBvdW5kR3JhcGgoZykge1xuICB2YXIgc2ltcGxpZmllZCA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IGcuaXNNdWx0aWdyYXBoKCkgfSkuc2V0R3JhcGgoZy5ncmFwaCgpKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGlmICghZy5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgIHNpbXBsaWZpZWQuc2V0Tm9kZSh2LCBnLm5vZGUodikpO1xuICAgIH1cbiAgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICBzaW1wbGlmaWVkLnNldEVkZ2UoZSwgZy5lZGdlKGUpKTtcbiAgfSk7XG4gIHJldHVybiBzaW1wbGlmaWVkO1xufVxuXG5mdW5jdGlvbiBzdWNjZXNzb3JXZWlnaHRzKGcpIHtcbiAgdmFyIHdlaWdodE1hcCA9IF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBzdWNzID0ge307XG4gICAgXy5mb3JFYWNoKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHN1Y3NbZS53XSA9IChzdWNzW2Uud10gfHwgMCkgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0pO1xuICAgIHJldHVybiBzdWNzO1xuICB9KTtcbiAgcmV0dXJuIF8uemlwT2JqZWN0KGcubm9kZXMoKSwgd2VpZ2h0TWFwKTtcbn1cblxuZnVuY3Rpb24gcHJlZGVjZXNzb3JXZWlnaHRzKGcpIHtcbiAgdmFyIHdlaWdodE1hcCA9IF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBwcmVkcyA9IHt9O1xuICAgIF8uZm9yRWFjaChnLmluRWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHByZWRzW2Uudl0gPSAocHJlZHNbZS52XSB8fCAwKSArIGcuZWRnZShlKS53ZWlnaHQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZWRzO1xuICB9KTtcbiAgcmV0dXJuIF8uemlwT2JqZWN0KGcubm9kZXMoKSwgd2VpZ2h0TWFwKTtcbn1cblxuLypcbiAqIEZpbmRzIHdoZXJlIGEgbGluZSBzdGFydGluZyBhdCBwb2ludCAoe3gsIHl9KSB3b3VsZCBpbnRlcnNlY3QgYSByZWN0YW5nbGVcbiAqICh7eCwgeSwgd2lkdGgsIGhlaWdodH0pIGlmIGl0IHdlcmUgcG9pbnRpbmcgYXQgdGhlIHJlY3RhbmdsZSdzIGNlbnRlci5cbiAqL1xuZnVuY3Rpb24gaW50ZXJzZWN0UmVjdChyZWN0LCBwb2ludCkge1xuICB2YXIgeCA9IHJlY3QueDtcbiAgdmFyIHkgPSByZWN0Lnk7XG5cbiAgLy8gUmVjdGFuZ2xlIGludGVyc2VjdGlvbiBhbGdvcml0aG0gZnJvbTpcbiAgLy8gaHR0cDovL21hdGguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzEwODExMy9maW5kLWVkZ2UtYmV0d2Vlbi10d28tYm94ZXNcbiAgdmFyIGR4ID0gcG9pbnQueCAtIHg7XG4gIHZhciBkeSA9IHBvaW50LnkgLSB5O1xuICB2YXIgdyA9IHJlY3Qud2lkdGggLyAyO1xuICB2YXIgaCA9IHJlY3QuaGVpZ2h0IC8gMjtcblxuICBpZiAoIWR4ICYmICFkeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBwb3NzaWJsZSB0byBmaW5kIGludGVyc2VjdGlvbiBpbnNpZGUgb2YgdGhlIHJlY3RhbmdsZVwiKTtcbiAgfVxuXG4gIHZhciBzeCwgc3k7XG4gIGlmIChNYXRoLmFicyhkeSkgKiB3ID4gTWF0aC5hYnMoZHgpICogaCkge1xuICAgIC8vIEludGVyc2VjdGlvbiBpcyB0b3Agb3IgYm90dG9tIG9mIHJlY3QuXG4gICAgaWYgKGR5IDwgMCkge1xuICAgICAgaCA9IC1oO1xuICAgIH1cbiAgICBzeCA9IGggKiBkeCAvIGR5O1xuICAgIHN5ID0gaDtcbiAgfSBlbHNlIHtcbiAgICAvLyBJbnRlcnNlY3Rpb24gaXMgbGVmdCBvciByaWdodCBvZiByZWN0LlxuICAgIGlmIChkeCA8IDApIHtcbiAgICAgIHcgPSAtdztcbiAgICB9XG4gICAgc3ggPSB3O1xuICAgIHN5ID0gdyAqIGR5IC8gZHg7XG4gIH1cblxuICByZXR1cm4geyB4OiB4ICsgc3gsIHk6IHkgKyBzeSB9O1xufVxuXG4vKlxuICogR2l2ZW4gYSBEQUcgd2l0aCBlYWNoIG5vZGUgYXNzaWduZWQgXCJyYW5rXCIgYW5kIFwib3JkZXJcIiBwcm9wZXJ0aWVzLCB0aGlzXG4gKiBmdW5jdGlvbiB3aWxsIHByb2R1Y2UgYSBtYXRyaXggd2l0aCB0aGUgaWRzIG9mIGVhY2ggbm9kZS5cbiAqL1xuZnVuY3Rpb24gYnVpbGRMYXllck1hdHJpeChnKSB7XG4gIHZhciBsYXllcmluZyA9IF8ubWFwKF8ucmFuZ2UobWF4UmFuayhnKSArIDEpLCBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9KTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciByYW5rID0gbm9kZS5yYW5rO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChyYW5rKSkge1xuICAgICAgbGF5ZXJpbmdbcmFua11bbm9kZS5vcmRlcl0gPSB2O1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsYXllcmluZztcbn1cblxuLypcbiAqIEFkanVzdHMgdGhlIHJhbmtzIGZvciBhbGwgbm9kZXMgaW4gdGhlIGdyYXBoIHN1Y2ggdGhhdCBhbGwgbm9kZXMgdiBoYXZlXG4gKiByYW5rKHYpID49IDAgYW5kIGF0IGxlYXN0IG9uZSBub2RlIHcgaGFzIHJhbmsodykgPSAwLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVSYW5rcyhnKSB7XG4gIHZhciBtaW4gPSBfLm1pbihfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAoXy5oYXMobm9kZSwgXCJyYW5rXCIpKSB7XG4gICAgICBub2RlLnJhbmsgLT0gbWluO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5UmFua3MoZykge1xuICAvLyBSYW5rcyBtYXkgbm90IHN0YXJ0IGF0IDAsIHNvIHdlIG5lZWQgdG8gb2Zmc2V0IHRoZW1cbiAgdmFyIG9mZnNldCA9IF8ubWluKF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpLnJhbms7IH0pKTtcblxuICB2YXIgbGF5ZXJzID0gW107XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcmFuayA9IGcubm9kZSh2KS5yYW5rIC0gb2Zmc2V0O1xuICAgIGlmICghbGF5ZXJzW3JhbmtdKSB7XG4gICAgICBsYXllcnNbcmFua10gPSBbXTtcbiAgICB9XG4gICAgbGF5ZXJzW3JhbmtdLnB1c2godik7XG4gIH0pO1xuXG4gIHZhciBkZWx0YSA9IDA7XG4gIHZhciBub2RlUmFua0ZhY3RvciA9IGcuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvcjtcbiAgXy5mb3JFYWNoKGxheWVycywgZnVuY3Rpb24odnMsIGkpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh2cykgJiYgaSAlIG5vZGVSYW5rRmFjdG9yICE9PSAwKSB7XG4gICAgICAtLWRlbHRhO1xuICAgIH0gZWxzZSBpZiAoZGVsdGEpIHtcbiAgICAgIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikgeyBnLm5vZGUodikucmFuayArPSBkZWx0YTsgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQm9yZGVyTm9kZShnLCBwcmVmaXgsIHJhbmssIG9yZGVyKSB7XG4gIHZhciBub2RlID0ge1xuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9O1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSB7XG4gICAgbm9kZS5yYW5rID0gcmFuaztcbiAgICBub2RlLm9yZGVyID0gb3JkZXI7XG4gIH1cbiAgcmV0dXJuIGFkZER1bW15Tm9kZShnLCBcImJvcmRlclwiLCBub2RlLCBwcmVmaXgpO1xufVxuXG5mdW5jdGlvbiBtYXhSYW5rKGcpIHtcbiAgcmV0dXJuIF8ubWF4KF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciByYW5rID0gZy5ub2RlKHYpLnJhbms7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJhbmspKSB7XG4gICAgICByZXR1cm4gcmFuaztcbiAgICB9XG4gIH0pKTtcbn1cblxuLypcbiAqIFBhcnRpdGlvbiBhIGNvbGxlY3Rpb24gaW50byB0d28gZ3JvdXBzOiBgbGhzYCBhbmQgYHJoc2AuIElmIHRoZSBzdXBwbGllZFxuICogZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciBhbiBlbnRyeSBpdCBnb2VzIGludG8gYGxoc2AuIE90aGVyd2lzZSBpdCBnb2VzXG4gKiBpbnRvIGByaHMuXG4gKi9cbmZ1bmN0aW9uIHBhcnRpdGlvbihjb2xsZWN0aW9uLCBmbikge1xuICB2YXIgcmVzdWx0ID0geyBsaHM6IFtdLCByaHM6IFtdIH07XG4gIF8uZm9yRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmIChmbih2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdC5saHMucHVzaCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5yaHMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLypcbiAqIFJldHVybnMgYSBuZXcgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZm5gIHdpdGggYSB0aW1lci4gVGhlIHdyYXBwZXIgbG9ncyB0aGVcbiAqIHRpbWUgaXQgdGFrZXMgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRpbWUobmFtZSwgZm4pIHtcbiAgdmFyIHN0YXJ0ID0gXy5ub3coKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjb25zb2xlLmxvZyhuYW1lICsgXCIgdGltZTogXCIgKyAoXy5ub3coKSAtIHN0YXJ0KSArIFwibXNcIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm90aW1lKG5hbWUsIGZuKSB7XG4gIHJldHVybiBmbigpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/util.js\n"); /***/ }), /***/ "./node_modules/_dagrejs@0.2.1@dagrejs/lib/version.js": /*!************************************************************!*\ !*** ./node_modules/_dagrejs@0.2.1@dagrejs/lib/version.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"0.1.1\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RhZ3JlanNAMC4yLjFAZGFncmVqcy9saWIvdmVyc2lvbi5qcz9lNWI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kYWdyZWpzQDAuMi4xQGRhZ3JlanMvbGliL3ZlcnNpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiMC4xLjFcIjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_dagrejs@0.2.1@dagrejs/lib/version.js\n"); /***/ }), /***/ "./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js": /*!***********************************************************************!*\ !*** ./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js ***! \***********************************************************************/ /*! exports provided: BrowserInfo, NodeInfo, SearchBotDeviceInfo, BotInfo, ReactNativeInfo, detect, browserName, parseUserAgent, detectOS, getNodeVersion */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BrowserInfo\", function() { return BrowserInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NodeInfo\", function() { return NodeInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SearchBotDeviceInfo\", function() { return SearchBotDeviceInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BotInfo\", function() { return BotInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactNativeInfo\", function() { return ReactNativeInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return detect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"browserName\", function() { return browserName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseUserAgent\", function() { return parseUserAgent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectOS\", function() { return detectOS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNodeVersion\", function() { return getNodeVersion; });\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\n\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\n\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\n\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\n\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\n\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nfunction detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nfunction browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nfunction parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nfunction detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nfunction getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2RldGVjdC1icm93c2VyQDUuMy4wQGRldGVjdC1icm93c2VyL2VzL2luZGV4LmpzPzNmNzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUFxQixTQUFJLElBQUksU0FBSTtBQUNqQyw0RUFBNEUsT0FBTztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ3NCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ21CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDOEI7QUFDL0I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2tCO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQzBCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLDRDQUE0QztBQUN6RjtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AseURBQXlELFlBQVk7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19kZXRlY3QtYnJvd3NlckA1LjMuMEBkZXRlY3QtYnJvd3Nlci9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbnZhciBCcm93c2VySW5mbyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VySW5mbyhuYW1lLCB2ZXJzaW9uLCBvcykge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICB0aGlzLm9zID0gb3M7XG4gICAgICAgIHRoaXMudHlwZSA9ICdicm93c2VyJztcbiAgICB9XG4gICAgcmV0dXJuIEJyb3dzZXJJbmZvO1xufSgpKTtcbmV4cG9ydCB7IEJyb3dzZXJJbmZvIH07XG52YXIgTm9kZUluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTm9kZUluZm8odmVyc2lvbikge1xuICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICB0aGlzLnR5cGUgPSAnbm9kZSc7XG4gICAgICAgIHRoaXMubmFtZSA9ICdub2RlJztcbiAgICAgICAgdGhpcy5vcyA9IHByb2Nlc3MucGxhdGZvcm07XG4gICAgfVxuICAgIHJldHVybiBOb2RlSW5mbztcbn0oKSk7XG5leHBvcnQgeyBOb2RlSW5mbyB9O1xudmFyIFNlYXJjaEJvdERldmljZUluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2VhcmNoQm90RGV2aWNlSW5mbyhuYW1lLCB2ZXJzaW9uLCBvcywgYm90KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgIHRoaXMub3MgPSBvcztcbiAgICAgICAgdGhpcy5ib3QgPSBib3Q7XG4gICAgICAgIHRoaXMudHlwZSA9ICdib3QtZGV2aWNlJztcbiAgICB9XG4gICAgcmV0dXJuIFNlYXJjaEJvdERldmljZUluZm87XG59KCkpO1xuZXhwb3J0IHsgU2VhcmNoQm90RGV2aWNlSW5mbyB9O1xudmFyIEJvdEluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQm90SW5mbygpIHtcbiAgICAgICAgdGhpcy50eXBlID0gJ2JvdCc7XG4gICAgICAgIHRoaXMuYm90ID0gdHJ1ZTsgLy8gTk9URTogZGVwcmVjYXRlZCB0ZXN0IG5hbWUgaW5zdGVhZFxuICAgICAgICB0aGlzLm5hbWUgPSAnYm90JztcbiAgICAgICAgdGhpcy52ZXJzaW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcyA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBCb3RJbmZvO1xufSgpKTtcbmV4cG9ydCB7IEJvdEluZm8gfTtcbnZhciBSZWFjdE5hdGl2ZUluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVhY3ROYXRpdmVJbmZvKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSAncmVhY3QtbmF0aXZlJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ3JlYWN0LW5hdGl2ZSc7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IG51bGw7XG4gICAgICAgIHRoaXMub3MgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUmVhY3ROYXRpdmVJbmZvO1xufSgpKTtcbmV4cG9ydCB7IFJlYWN0TmF0aXZlSW5mbyB9O1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxudmFyIFNFQVJDSEJPWF9VQV9SRUdFWCA9IC9hbGV4YXxib3R8Y3Jhd2woZXJ8aW5nKXxmYWNlYm9va2V4dGVybmFsaGl0fGZlZWRidXJuZXJ8Z29vZ2xlIHdlYiBwcmV2aWV3fG5hZ2lvc3xwb3N0cmFua3xwaW5nZG9tfHNsdXJwfHNwaWRlcnx5YWhvbyF8eWFuZGV4LztcbnZhciBTRUFSQ0hCT1RfT1NfUkVHRVggPSAvKG51aGt8Y3VybHxHb29nbGVib3R8WWFtbXlib3R8T3BlbmJvdHxTbHVycHxNU05Cb3R8QXNrXFwgSmVldmVzXFwvVGVvbWF8aWFfYXJjaGl2ZXIpLztcbnZhciBSRVFVSVJFRF9WRVJTSU9OX1BBUlRTID0gMztcbnZhciB1c2VyQWdlbnRSdWxlcyA9IFtcbiAgICBbJ2FvbCcsIC9BT0xTaGllbGRcXC8oWzAtOVxcLl9dKykvXSxcbiAgICBbJ2VkZ2UnLCAvRWRnZVxcLyhbMC05XFwuX10rKS9dLFxuICAgIFsnZWRnZS1pb3MnLCAvRWRnaU9TXFwvKFswLTlcXC5fXSspL10sXG4gICAgWyd5YW5kZXhicm93c2VyJywgL1lhQnJvd3NlclxcLyhbMC05XFwuX10rKS9dLFxuICAgIFsna2FrYW90YWxrJywgL0tBS0FPVEFMS1xccyhbMC05XFwuXSspL10sXG4gICAgWydzYW1zdW5nJywgL1NhbXN1bmdCcm93c2VyXFwvKFswLTlcXC5dKykvXSxcbiAgICBbJ3NpbGsnLCAvXFxiU2lsa1xcLyhbMC05Ll8tXSspXFxiL10sXG4gICAgWydtaXVpJywgL01pdWlCcm93c2VyXFwvKFswLTlcXC5dKykkL10sXG4gICAgWydiZWFrZXInLCAvQmVha2VyQnJvd3NlclxcLyhbMC05XFwuXSspL10sXG4gICAgWydlZGdlLWNocm9taXVtJywgL0VkZ0E/XFwvKFswLTlcXC5dKykvXSxcbiAgICBbXG4gICAgICAgICdjaHJvbWl1bS13ZWJ2aWV3JyxcbiAgICAgICAgLyg/IUNocm9tLipPUFIpd3ZcXCkuKkNocm9tKD86ZXxpdW0pXFwvKFswLTlcXC5dKykoOj9cXHN8JCkvLFxuICAgIF0sXG4gICAgWydjaHJvbWUnLCAvKD8hQ2hyb20uKk9QUilDaHJvbSg/OmV8aXVtKVxcLyhbMC05XFwuXSspKDo/XFxzfCQpL10sXG4gICAgWydwaGFudG9tanMnLCAvUGhhbnRvbUpTXFwvKFswLTlcXC5dKykoOj9cXHN8JCkvXSxcbiAgICBbJ2NyaW9zJywgL0NyaU9TXFwvKFswLTlcXC5dKykoOj9cXHN8JCkvXSxcbiAgICBbJ2ZpcmVmb3gnLCAvRmlyZWZveFxcLyhbMC05XFwuXSspKD86XFxzfCQpL10sXG4gICAgWydmeGlvcycsIC9GeGlPU1xcLyhbMC05XFwuXSspL10sXG4gICAgWydvcGVyYS1taW5pJywgL09wZXJhIE1pbmkuKlZlcnNpb25cXC8oWzAtOVxcLl0rKS9dLFxuICAgIFsnb3BlcmEnLCAvT3BlcmFcXC8oWzAtOVxcLl0rKSg/Olxcc3wkKS9dLFxuICAgIFsnb3BlcmEnLCAvT1BSXFwvKFswLTlcXC5dKykoOj9cXHN8JCkvXSxcbiAgICBbJ3BpZScsIC9eTWljcm9zb2Z0IFBvY2tldCBJbnRlcm5ldCBFeHBsb3JlclxcLyhcXGQrXFwuXFxkKykkL10sXG4gICAgWydwaWUnLCAvXk1vemlsbGFcXC9cXGRcXC5cXGQrXFxzXFwoY29tcGF0aWJsZTtcXHMoPzpNU1A/SUV8TVNJbnRlcm5ldCBFeHBsb3JlcikgKFxcZCtcXC5cXGQrKTsuKldpbmRvd3MgQ0UuKlxcKSQvXSxcbiAgICBbJ25ldGZyb250JywgL15Nb3ppbGxhXFwvXFxkXFwuXFxkKy4qTmV0RnJvbnRcXC8oXFxkLlxcZCkvXSxcbiAgICBbJ2llJywgL1RyaWRlbnRcXC83XFwuMC4qcnZcXDooWzAtOVxcLl0rKS4qXFwpLipHZWNrbyQvXSxcbiAgICBbJ2llJywgL01TSUVcXHMoWzAtOVxcLl0rKTsuKlRyaWRlbnRcXC9bNC03XS4wL10sXG4gICAgWydpZScsIC9NU0lFXFxzKDdcXC4wKS9dLFxuICAgIFsnYmIxMCcsIC9CQjEwO1xcc1RvdWNoLipWZXJzaW9uXFwvKFswLTlcXC5dKykvXSxcbiAgICBbJ2FuZHJvaWQnLCAvQW5kcm9pZFxccyhbMC05XFwuXSspL10sXG4gICAgWydpb3MnLCAvVmVyc2lvblxcLyhbMC05XFwuX10rKS4qTW9iaWxlLipTYWZhcmkuKi9dLFxuICAgIFsnc2FmYXJpJywgL1ZlcnNpb25cXC8oWzAtOVxcLl9dKykuKlNhZmFyaS9dLFxuICAgIFsnZmFjZWJvb2snLCAvRkJbQVNdVlxcLyhbMC05XFwuXSspL10sXG4gICAgWydpbnN0YWdyYW0nLCAvSW5zdGFncmFtXFxzKFswLTlcXC5dKykvXSxcbiAgICBbJ2lvcy13ZWJ2aWV3JywgL0FwcGxlV2ViS2l0XFwvKFswLTlcXC5dKykuKk1vYmlsZS9dLFxuICAgIFsnaW9zLXdlYnZpZXcnLCAvQXBwbGVXZWJLaXRcXC8oWzAtOVxcLl0rKS4qR2Vja29cXCkkL10sXG4gICAgWydjdXJsJywgL15jdXJsXFwvKFswLTlcXC5dKykkL10sXG4gICAgWydzZWFyY2hib3QnLCBTRUFSQ0hCT1hfVUFfUkVHRVhdLFxuXTtcbnZhciBvcGVyYXRpbmdTeXN0ZW1SdWxlcyA9IFtcbiAgICBbJ2lPUycsIC9pUChob25lfG9kfGFkKS9dLFxuICAgIFsnQW5kcm9pZCBPUycsIC9BbmRyb2lkL10sXG4gICAgWydCbGFja0JlcnJ5IE9TJywgL0JsYWNrQmVycnl8QkIxMC9dLFxuICAgIFsnV2luZG93cyBNb2JpbGUnLCAvSUVNb2JpbGUvXSxcbiAgICBbJ0FtYXpvbiBPUycsIC9LaW5kbGUvXSxcbiAgICBbJ1dpbmRvd3MgMy4xMScsIC9XaW4xNi9dLFxuICAgIFsnV2luZG93cyA5NScsIC8oV2luZG93cyA5NSl8KFdpbjk1KXwoV2luZG93c185NSkvXSxcbiAgICBbJ1dpbmRvd3MgOTgnLCAvKFdpbmRvd3MgOTgpfChXaW45OCkvXSxcbiAgICBbJ1dpbmRvd3MgMjAwMCcsIC8oV2luZG93cyBOVCA1LjApfChXaW5kb3dzIDIwMDApL10sXG4gICAgWydXaW5kb3dzIFhQJywgLyhXaW5kb3dzIE5UIDUuMSl8KFdpbmRvd3MgWFApL10sXG4gICAgWydXaW5kb3dzIFNlcnZlciAyMDAzJywgLyhXaW5kb3dzIE5UIDUuMikvXSxcbiAgICBbJ1dpbmRvd3MgVmlzdGEnLCAvKFdpbmRvd3MgTlQgNi4wKS9dLFxuICAgIFsnV2luZG93cyA3JywgLyhXaW5kb3dzIE5UIDYuMSkvXSxcbiAgICBbJ1dpbmRvd3MgOCcsIC8oV2luZG93cyBOVCA2LjIpL10sXG4gICAgWydXaW5kb3dzIDguMScsIC8oV2luZG93cyBOVCA2LjMpL10sXG4gICAgWydXaW5kb3dzIDEwJywgLyhXaW5kb3dzIE5UIDEwLjApL10sXG4gICAgWydXaW5kb3dzIE1FJywgL1dpbmRvd3MgTUUvXSxcbiAgICBbJ1dpbmRvd3MgQ0UnLCAvV2luZG93cyBDRXxXaW5DRXxNaWNyb3NvZnQgUG9ja2V0IEludGVybmV0IEV4cGxvcmVyL10sXG4gICAgWydPcGVuIEJTRCcsIC9PcGVuQlNEL10sXG4gICAgWydTdW4gT1MnLCAvU3VuT1MvXSxcbiAgICBbJ0Nocm9tZSBPUycsIC9Dck9TL10sXG4gICAgWydMaW51eCcsIC8oTGludXgpfChYMTEpL10sXG4gICAgWydNYWMgT1MnLCAvKE1hY19Qb3dlclBDKXwoTWFjaW50b3NoKS9dLFxuICAgIFsnUU5YJywgL1FOWC9dLFxuICAgIFsnQmVPUycsIC9CZU9TL10sXG4gICAgWydPUy8yJywgL09TXFwvMi9dLFxuXTtcbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3QodXNlckFnZW50KSB7XG4gICAgaWYgKCEhdXNlckFnZW50KSB7XG4gICAgICAgIHJldHVybiBwYXJzZVVzZXJBZ2VudCh1c2VyQWdlbnQpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJykge1xuICAgICAgICByZXR1cm4gbmV3IFJlYWN0TmF0aXZlSW5mbygpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlVXNlckFnZW50KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0Tm9kZVZlcnNpb24oKTtcbn1cbmZ1bmN0aW9uIG1hdGNoVXNlckFnZW50KHVhKSB7XG4gICAgLy8gb3B0ZWQgZm9yIHVzaW5nIHJlZHVjZSBoZXJlIHJhdGhlciB0aGFuIEFycmF5I2ZpcnN0IHdpdGggYSByZWdleC50ZXN0IGNhbGxcbiAgICAvLyB0aGlzIGlzIHByaW1hcmlseSBiZWNhdXNlIHVzaW5nIHRoZSByZWR1Y2Ugd2Ugb25seSBwZXJmb3JtIHRoZSByZWdleFxuICAgIC8vIGV4ZWN1dGlvbiBvbmNlIHJhdGhlciB0aGFuIG9uY2UgZm9yIHRoZSB0ZXN0IGFuZCBmb3IgdGhlIGV4ZWMgYWdhaW4gYmVsb3dcbiAgICAvLyBwcm9iYWJseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBiZW5jaG1hcmtlZCB0aG91Z2hcbiAgICByZXR1cm4gKHVhICE9PSAnJyAmJlxuICAgICAgICB1c2VyQWdlbnRSdWxlcy5yZWR1Y2UoZnVuY3Rpb24gKG1hdGNoZWQsIF9hKSB7XG4gICAgICAgICAgICB2YXIgYnJvd3NlciA9IF9hWzBdLCByZWdleCA9IF9hWzFdO1xuICAgICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB1YU1hdGNoID0gcmVnZXguZXhlYyh1YSk7XG4gICAgICAgICAgICByZXR1cm4gISF1YU1hdGNoICYmIFticm93c2VyLCB1YU1hdGNoXTtcbiAgICAgICAgfSwgZmFsc2UpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicm93c2VyTmFtZSh1YSkge1xuICAgIHZhciBkYXRhID0gbWF0Y2hVc2VyQWdlbnQodWEpO1xuICAgIHJldHVybiBkYXRhID8gZGF0YVswXSA6IG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVc2VyQWdlbnQodWEpIHtcbiAgICB2YXIgbWF0Y2hlZFJ1bGUgPSBtYXRjaFVzZXJBZ2VudCh1YSk7XG4gICAgaWYgKCFtYXRjaGVkUnVsZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIG5hbWUgPSBtYXRjaGVkUnVsZVswXSwgbWF0Y2ggPSBtYXRjaGVkUnVsZVsxXTtcbiAgICBpZiAobmFtZSA9PT0gJ3NlYXJjaGJvdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCb3RJbmZvKCk7XG4gICAgfVxuICAgIC8vIERvIG5vdCB1c2UgUmVnRXhwIGZvciBzcGxpdCBvcGVyYXRpb24gYXMgc29tZSBicm93c2VyIGRvIG5vdCBzdXBwb3J0IGl0IChTZWU6IGh0dHA6Ly9ibG9nLnN0ZXZlbmxldml0aGFuLmNvbS9hcmNoaXZlcy9jcm9zcy1icm93c2VyLXNwbGl0KVxuICAgIHZhciB2ZXJzaW9uUGFydHMgPSBtYXRjaFsxXSAmJiBtYXRjaFsxXS5zcGxpdCgnLicpLmpvaW4oJ18nKS5zcGxpdCgnXycpLnNsaWNlKDAsIDMpO1xuICAgIGlmICh2ZXJzaW9uUGFydHMpIHtcbiAgICAgICAgaWYgKHZlcnNpb25QYXJ0cy5sZW5ndGggPCBSRVFVSVJFRF9WRVJTSU9OX1BBUlRTKSB7XG4gICAgICAgICAgICB2ZXJzaW9uUGFydHMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHZlcnNpb25QYXJ0cywgdHJ1ZSksIGNyZWF0ZVZlcnNpb25QYXJ0cyhSRVFVSVJFRF9WRVJTSU9OX1BBUlRTIC0gdmVyc2lvblBhcnRzLmxlbmd0aCksIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2ZXJzaW9uUGFydHMgPSBbXTtcbiAgICB9XG4gICAgdmFyIHZlcnNpb24gPSB2ZXJzaW9uUGFydHMuam9pbignLicpO1xuICAgIHZhciBvcyA9IGRldGVjdE9TKHVhKTtcbiAgICB2YXIgc2VhcmNoQm90TWF0Y2ggPSBTRUFSQ0hCT1RfT1NfUkVHRVguZXhlYyh1YSk7XG4gICAgaWYgKHNlYXJjaEJvdE1hdGNoICYmIHNlYXJjaEJvdE1hdGNoWzFdKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2VhcmNoQm90RGV2aWNlSW5mbyhuYW1lLCB2ZXJzaW9uLCBvcywgc2VhcmNoQm90TWF0Y2hbMV0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJyb3dzZXJJbmZvKG5hbWUsIHZlcnNpb24sIG9zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RPUyh1YSkge1xuICAgIGZvciAodmFyIGlpID0gMCwgY291bnQgPSBvcGVyYXRpbmdTeXN0ZW1SdWxlcy5sZW5ndGg7IGlpIDwgY291bnQ7IGlpKyspIHtcbiAgICAgICAgdmFyIF9hID0gb3BlcmF0aW5nU3lzdGVtUnVsZXNbaWldLCBvcyA9IF9hWzBdLCByZWdleCA9IF9hWzFdO1xuICAgICAgICB2YXIgbWF0Y2ggPSByZWdleC5leGVjKHVhKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gb3M7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZVZlcnNpb24oKSB7XG4gICAgdmFyIGlzTm9kZSA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb247XG4gICAgcmV0dXJuIGlzTm9kZSA/IG5ldyBOb2RlSW5mbyhwcm9jZXNzLnZlcnNpb24uc2xpY2UoMSkpIDogbnVsbDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVZlcnNpb25QYXJ0cyhjb3VudCkge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgY291bnQ7IGlpKyspIHtcbiAgICAgICAgb3V0cHV0LnB1c2goJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js\n"); /***/ }), /***/ "./node_modules/_fecha@4.2.1@fecha/lib/fecha.js": /*!******************************************************!*\ !*** ./node_modules/_fecha@4.2.1@fecha/lib/fecha.js ***! \******************************************************/ /*! exports provided: default, assign, format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultI18n\", function() { return defaultI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGlobalDateI18n\", function() { return setGlobalDateI18n; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGlobalDateMasks\", function() { return setGlobalDateMasks; });\nvar token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nvar twoDigitsOptional = \"[1-9]\\\\d?\";\nvar twoDigits = \"\\\\d\\\\d\";\nvar threeDigits = \"\\\\d{3}\";\nvar fourDigits = \"\\\\d{4}\";\nvar word = \"[^\\\\s]+\";\nvar literal = /\\[([^]*?)\\]/gm;\nfunction shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\nvar monthUpdate = function (arrName) { return function (v, i18n) {\n var lowerCaseArr = i18n[arrName].map(function (v) { return v.toLowerCase(); });\n var index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n}; };\nfunction assign(origObj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var obj = args_1[_a];\n for (var key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\nvar dayNames = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\nvar monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nvar monthNamesShort = shorten(monthNames, 3);\nvar dayNamesShort = shorten(dayNames, 3);\nvar defaultI18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn: function (dayOfMonth) {\n return (dayOfMonth +\n [\"th\", \"st\", \"nd\", \"rd\"][dayOfMonth % 10 > 3\n ? 0\n : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10]);\n }\n};\nvar globalI18n = assign({}, defaultI18n);\nvar setGlobalDateI18n = function (i18n) {\n return (globalI18n = assign(globalI18n, i18n));\n};\nvar regexEscape = function (str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n};\nvar pad = function (val, len) {\n if (len === void 0) { len = 2; }\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\nvar formatFlags = {\n D: function (dateObj) { return String(dateObj.getDate()); },\n DD: function (dateObj) { return pad(dateObj.getDate()); },\n Do: function (dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function (dateObj) { return String(dateObj.getDay()); },\n dd: function (dateObj) { return pad(dateObj.getDay()); },\n ddd: function (dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function (dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function (dateObj) { return String(dateObj.getMonth() + 1); },\n MM: function (dateObj) { return pad(dateObj.getMonth() + 1); },\n MMM: function (dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function (dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n YY: function (dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n YYYY: function (dateObj) { return pad(dateObj.getFullYear(), 4); },\n h: function (dateObj) { return String(dateObj.getHours() % 12 || 12); },\n hh: function (dateObj) { return pad(dateObj.getHours() % 12 || 12); },\n H: function (dateObj) { return String(dateObj.getHours()); },\n HH: function (dateObj) { return pad(dateObj.getHours()); },\n m: function (dateObj) { return String(dateObj.getMinutes()); },\n mm: function (dateObj) { return pad(dateObj.getMinutes()); },\n s: function (dateObj) { return String(dateObj.getSeconds()); },\n ss: function (dateObj) { return pad(dateObj.getSeconds()); },\n S: function (dateObj) {\n return String(Math.round(dateObj.getMilliseconds() / 100));\n },\n SS: function (dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function (dateObj) { return pad(dateObj.getMilliseconds(), 3); },\n a: function (dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function (dateObj, i18n) {\n return dateObj.getHours() < 12\n ? i18n.amPm[0].toUpperCase()\n : i18n.amPm[1].toUpperCase();\n },\n ZZ: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4));\n },\n Z: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60), 2) +\n \":\" +\n pad(Math.abs(offset) % 60, 2));\n }\n};\nvar monthParse = function (v) { return +v - 1; };\nvar emptyDigits = [null, twoDigitsOptional];\nvar emptyWord = [null, word];\nvar amPm = [\n \"isPm\",\n word,\n function (v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n }\n else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n }\n];\nvar timezoneOffset = [\n \"timezoneOffset\",\n \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n function (v) {\n var parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n if (parts) {\n var minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n return 0;\n }\n];\nvar parseFlags = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, function (v) { return parseInt(v, 10); }],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\n \"year\",\n twoDigits,\n function (v) {\n var now = new Date();\n var cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }\n ],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", function (v) { return +v * 100; }],\n SS: [\"millisecond\", twoDigits, function (v) { return +v * 10; }],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n// Some common format strings\nvar globalMasks = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nvar setGlobalDateMasks = function (masks) { return assign(globalMasks, masks); };\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nvar format = function (dateObj, mask, i18n) {\n if (mask === void 0) { mask = globalMasks[\"default\"]; }\n if (i18n === void 0) { i18n = {}; }\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n if (Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())) {\n throw new Error(\"Invalid Date pass to format\");\n }\n mask = globalMasks[mask] || mask;\n var literals = [];\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return formatFlags[$0](dateObj, combinedI18nSettings);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () { return literals.shift(); });\n};\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(dateStr, format, i18n) {\n if (i18n === void 0) { i18n = {}; }\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n // Default to the beginning of the year.\n var today = new Date();\n var dateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n var parseInfo = [];\n var literals = [];\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n var newFormat = format.replace(literal, function ($0, $1) {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n var specifiedFields = {};\n var requiredFields = {};\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, function ($0) {\n var info = parseFlags[$0];\n var field = info[0], regex = info[1], requiredField = info[3];\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" specified twice in format\");\n }\n specifiedFields[field] = true;\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(function (field) {\n if (!specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" is required in specified format\");\n }\n });\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, function () { return literals.shift(); });\n // Check if the date string matches the format. If it doesn't return null\n var matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // For each match, call the parser function for that date part\n for (var i = 1; i < matches.length; i++) {\n var _a = parseInfo[i - 1], field = _a[0], parser = _a[2];\n var value = parser\n ? parser(matches[i], combinedI18nSettings)\n : +matches[i];\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n dateInfo[field] = value;\n }\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n }\n else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n var dateWithoutTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\n var validateFields = [\n [\"month\", \"getMonth\"],\n [\"day\", \"getDate\"],\n [\"hour\", \"getHours\"],\n [\"minute\", \"getMinutes\"],\n [\"second\", \"getSeconds\"]\n ];\n for (var i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (specifiedFields[validateFields[i][0]] &&\n dateInfo[validateFields[i][0]] !== dateWithoutTZ[validateFields[i][1]]()) {\n return null;\n }\n }\n if (dateInfo.timezoneOffset == null) {\n return dateWithoutTZ;\n }\n return new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond));\n}\nvar fecha = {\n format: format,\n parse: parse,\n defaultI18n: defaultI18n,\n setGlobalDateI18n: setGlobalDateI18n,\n setGlobalDateMasks: setGlobalDateMasks\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (fecha);\n\n//# sourceMappingURL=fecha.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ZlY2hhQDQuMi4xQGZlY2hhL2xpYi9mZWNoYS5qcz9hZWQ5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBZSxJQUFJLEdBQUcsSUFBSSxhQUFhLElBQUk7QUFDM0M7QUFDQTtBQUNBLHVCQUF1QixFQUFFO0FBQ3pCLHNCQUFzQixFQUFFO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEMsdURBQXVELHdCQUF3QixFQUFFO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBLG1DQUFtQyxvQkFBb0I7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLHlCQUF5QixTQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtDQUFrQyxFQUFFO0FBQy9ELDRCQUE0QiwrQkFBK0IsRUFBRTtBQUM3RDtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQixpQ0FBaUMsRUFBRTtBQUM5RCw0QkFBNEIsOEJBQThCLEVBQUU7QUFDNUQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQix1Q0FBdUMsRUFBRTtBQUNwRSw0QkFBNEIsb0NBQW9DLEVBQUU7QUFDbEU7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOEJBQThCLHNDQUFzQyxFQUFFO0FBQ3RFLDJCQUEyQiw4Q0FBOEMsRUFBRTtBQUMzRSw0QkFBNEIsMkNBQTJDLEVBQUU7QUFDekUsMkJBQTJCLG1DQUFtQyxFQUFFO0FBQ2hFLDRCQUE0QixnQ0FBZ0MsRUFBRTtBQUM5RCwyQkFBMkIscUNBQXFDLEVBQUU7QUFDbEUsNEJBQTRCLGtDQUFrQyxFQUFFO0FBQ2hFLDJCQUEyQixxQ0FBcUMsRUFBRTtBQUNsRSw0QkFBNEIsa0NBQWtDLEVBQUU7QUFDaEU7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLDZCQUE2QiwwQ0FBMEMsRUFBRTtBQUN6RTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZUFBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCx3QkFBd0IsRUFBRTtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGlCQUFpQixFQUFFO0FBQy9ELGlEQUFpRCxnQkFBZ0IsRUFBRTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxtQ0FBbUM7QUFDOUU7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLDBCQUEwQiwrQkFBK0I7QUFDekQsMEJBQTBCLFdBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDZDQUE2Qyx5QkFBeUIsRUFBRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsMEJBQTBCLFdBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1REFBdUQseUJBQXlCLEVBQUU7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELFNBQVM7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsb0VBQUssRUFBQztBQUNnRTtBQUNyRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZmVjaGFANC4yLjFAZmVjaGEvbGliL2ZlY2hhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRva2VuID0gL2R7MSw0fXxNezEsNH18WVkoPzpZWSk/fFN7MSwzfXxEb3xaWnxafChbSGhNc0RtXSlcXDE/fFthQV18XCJbXlwiXSpcInwnW14nXSonL2c7XG52YXIgdHdvRGlnaXRzT3B0aW9uYWwgPSBcIlsxLTldXFxcXGQ/XCI7XG52YXIgdHdvRGlnaXRzID0gXCJcXFxcZFxcXFxkXCI7XG52YXIgdGhyZWVEaWdpdHMgPSBcIlxcXFxkezN9XCI7XG52YXIgZm91ckRpZ2l0cyA9IFwiXFxcXGR7NH1cIjtcbnZhciB3b3JkID0gXCJbXlxcXFxzXStcIjtcbnZhciBsaXRlcmFsID0gL1xcWyhbXl0qPylcXF0vZ207XG5mdW5jdGlvbiBzaG9ydGVuKGFyciwgc0xlbikge1xuICAgIHZhciBuZXdBcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYXJyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG5ld0Fyci5wdXNoKGFycltpXS5zdWJzdHIoMCwgc0xlbikpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3QXJyO1xufVxudmFyIG1vbnRoVXBkYXRlID0gZnVuY3Rpb24gKGFyck5hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uICh2LCBpMThuKSB7XG4gICAgdmFyIGxvd2VyQ2FzZUFyciA9IGkxOG5bYXJyTmFtZV0ubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnRvTG93ZXJDYXNlKCk7IH0pO1xuICAgIHZhciBpbmRleCA9IGxvd2VyQ2FzZUFyci5pbmRleE9mKHYudG9Mb3dlckNhc2UoKSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07IH07XG5mdW5jdGlvbiBhc3NpZ24ob3JpZ09iaikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgZm9yICh2YXIgX2EgPSAwLCBhcmdzXzEgPSBhcmdzOyBfYSA8IGFyZ3NfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgdmFyIG9iaiA9IGFyZ3NfMVtfYV07XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgZXhcbiAgICAgICAgICAgIG9yaWdPYmpba2V5XSA9IG9ialtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvcmlnT2JqO1xufVxudmFyIGRheU5hbWVzID0gW1xuICAgIFwiU3VuZGF5XCIsXG4gICAgXCJNb25kYXlcIixcbiAgICBcIlR1ZXNkYXlcIixcbiAgICBcIldlZG5lc2RheVwiLFxuICAgIFwiVGh1cnNkYXlcIixcbiAgICBcIkZyaWRheVwiLFxuICAgIFwiU2F0dXJkYXlcIlxuXTtcbnZhciBtb250aE5hbWVzID0gW1xuICAgIFwiSmFudWFyeVwiLFxuICAgIFwiRmVicnVhcnlcIixcbiAgICBcIk1hcmNoXCIsXG4gICAgXCJBcHJpbFwiLFxuICAgIFwiTWF5XCIsXG4gICAgXCJKdW5lXCIsXG4gICAgXCJKdWx5XCIsXG4gICAgXCJBdWd1c3RcIixcbiAgICBcIlNlcHRlbWJlclwiLFxuICAgIFwiT2N0b2JlclwiLFxuICAgIFwiTm92ZW1iZXJcIixcbiAgICBcIkRlY2VtYmVyXCJcbl07XG52YXIgbW9udGhOYW1lc1Nob3J0ID0gc2hvcnRlbihtb250aE5hbWVzLCAzKTtcbnZhciBkYXlOYW1lc1Nob3J0ID0gc2hvcnRlbihkYXlOYW1lcywgMyk7XG52YXIgZGVmYXVsdEkxOG4gPSB7XG4gICAgZGF5TmFtZXNTaG9ydDogZGF5TmFtZXNTaG9ydCxcbiAgICBkYXlOYW1lczogZGF5TmFtZXMsXG4gICAgbW9udGhOYW1lc1Nob3J0OiBtb250aE5hbWVzU2hvcnQsXG4gICAgbW9udGhOYW1lczogbW9udGhOYW1lcyxcbiAgICBhbVBtOiBbXCJhbVwiLCBcInBtXCJdLFxuICAgIERvRm46IGZ1bmN0aW9uIChkYXlPZk1vbnRoKSB7XG4gICAgICAgIHJldHVybiAoZGF5T2ZNb250aCArXG4gICAgICAgICAgICBbXCJ0aFwiLCBcInN0XCIsIFwibmRcIiwgXCJyZFwiXVtkYXlPZk1vbnRoICUgMTAgPiAzXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiAoKGRheU9mTW9udGggLSAoZGF5T2ZNb250aCAlIDEwKSAhPT0gMTAgPyAxIDogMCkgKiBkYXlPZk1vbnRoKSAlIDEwXSk7XG4gICAgfVxufTtcbnZhciBnbG9iYWxJMThuID0gYXNzaWduKHt9LCBkZWZhdWx0STE4bik7XG52YXIgc2V0R2xvYmFsRGF0ZUkxOG4gPSBmdW5jdGlvbiAoaTE4bikge1xuICAgIHJldHVybiAoZ2xvYmFsSTE4biA9IGFzc2lnbihnbG9iYWxJMThuLCBpMThuKSk7XG59O1xudmFyIHJlZ2V4RXNjYXBlID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvW3xcXFxceygpW14kKyo/Li1dL2csIFwiXFxcXCQmXCIpO1xufTtcbnZhciBwYWQgPSBmdW5jdGlvbiAodmFsLCBsZW4pIHtcbiAgICBpZiAobGVuID09PSB2b2lkIDApIHsgbGVuID0gMjsgfVxuICAgIHZhbCA9IFN0cmluZyh2YWwpO1xuICAgIHdoaWxlICh2YWwubGVuZ3RoIDwgbGVuKSB7XG4gICAgICAgIHZhbCA9IFwiMFwiICsgdmFsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xufTtcbnZhciBmb3JtYXRGbGFncyA9IHtcbiAgICBEOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gU3RyaW5nKGRhdGVPYmouZ2V0RGF0ZSgpKTsgfSxcbiAgICBERDogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIHBhZChkYXRlT2JqLmdldERhdGUoKSk7IH0sXG4gICAgRG86IGZ1bmN0aW9uIChkYXRlT2JqLCBpMThuKSB7XG4gICAgICAgIHJldHVybiBpMThuLkRvRm4oZGF0ZU9iai5nZXREYXRlKCkpO1xuICAgIH0sXG4gICAgZDogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIFN0cmluZyhkYXRlT2JqLmdldERheSgpKTsgfSxcbiAgICBkZDogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIHBhZChkYXRlT2JqLmdldERheSgpKTsgfSxcbiAgICBkZGQ6IGZ1bmN0aW9uIChkYXRlT2JqLCBpMThuKSB7XG4gICAgICAgIHJldHVybiBpMThuLmRheU5hbWVzU2hvcnRbZGF0ZU9iai5nZXREYXkoKV07XG4gICAgfSxcbiAgICBkZGRkOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaTE4bikge1xuICAgICAgICByZXR1cm4gaTE4bi5kYXlOYW1lc1tkYXRlT2JqLmdldERheSgpXTtcbiAgICB9LFxuICAgIE06IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBTdHJpbmcoZGF0ZU9iai5nZXRNb250aCgpICsgMSk7IH0sXG4gICAgTU06IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXRNb250aCgpICsgMSk7IH0sXG4gICAgTU1NOiBmdW5jdGlvbiAoZGF0ZU9iaiwgaTE4bikge1xuICAgICAgICByZXR1cm4gaTE4bi5tb250aE5hbWVzU2hvcnRbZGF0ZU9iai5nZXRNb250aCgpXTtcbiAgICB9LFxuICAgIE1NTU06IGZ1bmN0aW9uIChkYXRlT2JqLCBpMThuKSB7XG4gICAgICAgIHJldHVybiBpMThuLm1vbnRoTmFtZXNbZGF0ZU9iai5nZXRNb250aCgpXTtcbiAgICB9LFxuICAgIFlZOiBmdW5jdGlvbiAoZGF0ZU9iaikge1xuICAgICAgICByZXR1cm4gcGFkKFN0cmluZyhkYXRlT2JqLmdldEZ1bGxZZWFyKCkpLCA0KS5zdWJzdHIoMik7XG4gICAgfSxcbiAgICBZWVlZOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gcGFkKGRhdGVPYmouZ2V0RnVsbFllYXIoKSwgNCk7IH0sXG4gICAgaDogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIFN0cmluZyhkYXRlT2JqLmdldEhvdXJzKCkgJSAxMiB8fCAxMik7IH0sXG4gICAgaGg6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXRIb3VycygpICUgMTIgfHwgMTIpOyB9LFxuICAgIEg6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBTdHJpbmcoZGF0ZU9iai5nZXRIb3VycygpKTsgfSxcbiAgICBISDogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIHBhZChkYXRlT2JqLmdldEhvdXJzKCkpOyB9LFxuICAgIG06IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBTdHJpbmcoZGF0ZU9iai5nZXRNaW51dGVzKCkpOyB9LFxuICAgIG1tOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gcGFkKGRhdGVPYmouZ2V0TWludXRlcygpKTsgfSxcbiAgICBzOiBmdW5jdGlvbiAoZGF0ZU9iaikgeyByZXR1cm4gU3RyaW5nKGRhdGVPYmouZ2V0U2Vjb25kcygpKTsgfSxcbiAgICBzczogZnVuY3Rpb24gKGRhdGVPYmopIHsgcmV0dXJuIHBhZChkYXRlT2JqLmdldFNlY29uZHMoKSk7IH0sXG4gICAgUzogZnVuY3Rpb24gKGRhdGVPYmopIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhNYXRoLnJvdW5kKGRhdGVPYmouZ2V0TWlsbGlzZWNvbmRzKCkgLyAxMDApKTtcbiAgICB9LFxuICAgIFNTOiBmdW5jdGlvbiAoZGF0ZU9iaikge1xuICAgICAgICByZXR1cm4gcGFkKE1hdGgucm91bmQoZGF0ZU9iai5nZXRNaWxsaXNlY29uZHMoKSAvIDEwKSwgMik7XG4gICAgfSxcbiAgICBTU1M6IGZ1bmN0aW9uIChkYXRlT2JqKSB7IHJldHVybiBwYWQoZGF0ZU9iai5nZXRNaWxsaXNlY29uZHMoKSwgMyk7IH0sXG4gICAgYTogZnVuY3Rpb24gKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgICAgcmV0dXJuIGRhdGVPYmouZ2V0SG91cnMoKSA8IDEyID8gaTE4bi5hbVBtWzBdIDogaTE4bi5hbVBtWzFdO1xuICAgIH0sXG4gICAgQTogZnVuY3Rpb24gKGRhdGVPYmosIGkxOG4pIHtcbiAgICAgICAgcmV0dXJuIGRhdGVPYmouZ2V0SG91cnMoKSA8IDEyXG4gICAgICAgICAgICA/IGkxOG4uYW1QbVswXS50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICA6IGkxOG4uYW1QbVsxXS50b1VwcGVyQ2FzZSgpO1xuICAgIH0sXG4gICAgWlo6IGZ1bmN0aW9uIChkYXRlT2JqKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSBkYXRlT2JqLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgIHJldHVybiAoKG9mZnNldCA+IDAgPyBcIi1cIiA6IFwiK1wiKSArXG4gICAgICAgICAgICBwYWQoTWF0aC5mbG9vcihNYXRoLmFicyhvZmZzZXQpIC8gNjApICogMTAwICsgKE1hdGguYWJzKG9mZnNldCkgJSA2MCksIDQpKTtcbiAgICB9LFxuICAgIFo6IGZ1bmN0aW9uIChkYXRlT2JqKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSBkYXRlT2JqLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgIHJldHVybiAoKG9mZnNldCA+IDAgPyBcIi1cIiA6IFwiK1wiKSArXG4gICAgICAgICAgICBwYWQoTWF0aC5mbG9vcihNYXRoLmFicyhvZmZzZXQpIC8gNjApLCAyKSArXG4gICAgICAgICAgICBcIjpcIiArXG4gICAgICAgICAgICBwYWQoTWF0aC5hYnMob2Zmc2V0KSAlIDYwLCAyKSk7XG4gICAgfVxufTtcbnZhciBtb250aFBhcnNlID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuICt2IC0gMTsgfTtcbnZhciBlbXB0eURpZ2l0cyA9IFtudWxsLCB0d29EaWdpdHNPcHRpb25hbF07XG52YXIgZW1wdHlXb3JkID0gW251bGwsIHdvcmRdO1xudmFyIGFtUG0gPSBbXG4gICAgXCJpc1BtXCIsXG4gICAgd29yZCxcbiAgICBmdW5jdGlvbiAodiwgaTE4bikge1xuICAgICAgICB2YXIgdmFsID0gdi50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAodmFsID09PSBpMThuLmFtUG1bMF0pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCA9PT0gaTE4bi5hbVBtWzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5dO1xudmFyIHRpbWV6b25lT2Zmc2V0ID0gW1xuICAgIFwidGltZXpvbmVPZmZzZXRcIixcbiAgICBcIlteXFxcXHNdKj9bXFxcXCtcXFxcLV1cXFxcZFxcXFxkOj9cXFxcZFxcXFxkfFteXFxcXHNdKj9aP1wiLFxuICAgIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBwYXJ0cyA9ICh2ICsgXCJcIikubWF0Y2goLyhbKy1dfFxcZFxcZCkvZ2kpO1xuICAgICAgICBpZiAocGFydHMpIHtcbiAgICAgICAgICAgIHZhciBtaW51dGVzID0gK3BhcnRzWzFdICogNjAgKyBwYXJzZUludChwYXJ0c1syXSwgMTApO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzBdID09PSBcIitcIiA/IG1pbnV0ZXMgOiAtbWludXRlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5dO1xudmFyIHBhcnNlRmxhZ3MgPSB7XG4gICAgRDogW1wiZGF5XCIsIHR3b0RpZ2l0c09wdGlvbmFsXSxcbiAgICBERDogW1wiZGF5XCIsIHR3b0RpZ2l0c10sXG4gICAgRG86IFtcImRheVwiLCB0d29EaWdpdHNPcHRpb25hbCArIHdvcmQsIGZ1bmN0aW9uICh2KSB7IHJldHVybiBwYXJzZUludCh2LCAxMCk7IH1dLFxuICAgIE06IFtcIm1vbnRoXCIsIHR3b0RpZ2l0c09wdGlvbmFsLCBtb250aFBhcnNlXSxcbiAgICBNTTogW1wibW9udGhcIiwgdHdvRGlnaXRzLCBtb250aFBhcnNlXSxcbiAgICBZWTogW1xuICAgICAgICBcInllYXJcIixcbiAgICAgICAgdHdvRGlnaXRzLFxuICAgICAgICBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB2YXIgY2VudCA9ICsoXCJcIiArIG5vdy5nZXRGdWxsWWVhcigpKS5zdWJzdHIoMCwgMik7XG4gICAgICAgICAgICByZXR1cm4gKyhcIlwiICsgKCt2ID4gNjggPyBjZW50IC0gMSA6IGNlbnQpICsgdik7XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGg6IFtcImhvdXJcIiwgdHdvRGlnaXRzT3B0aW9uYWwsIHVuZGVmaW5lZCwgXCJpc1BtXCJdLFxuICAgIGhoOiBbXCJob3VyXCIsIHR3b0RpZ2l0cywgdW5kZWZpbmVkLCBcImlzUG1cIl0sXG4gICAgSDogW1wiaG91clwiLCB0d29EaWdpdHNPcHRpb25hbF0sXG4gICAgSEg6IFtcImhvdXJcIiwgdHdvRGlnaXRzXSxcbiAgICBtOiBbXCJtaW51dGVcIiwgdHdvRGlnaXRzT3B0aW9uYWxdLFxuICAgIG1tOiBbXCJtaW51dGVcIiwgdHdvRGlnaXRzXSxcbiAgICBzOiBbXCJzZWNvbmRcIiwgdHdvRGlnaXRzT3B0aW9uYWxdLFxuICAgIHNzOiBbXCJzZWNvbmRcIiwgdHdvRGlnaXRzXSxcbiAgICBZWVlZOiBbXCJ5ZWFyXCIsIGZvdXJEaWdpdHNdLFxuICAgIFM6IFtcIm1pbGxpc2Vjb25kXCIsIFwiXFxcXGRcIiwgZnVuY3Rpb24gKHYpIHsgcmV0dXJuICt2ICogMTAwOyB9XSxcbiAgICBTUzogW1wibWlsbGlzZWNvbmRcIiwgdHdvRGlnaXRzLCBmdW5jdGlvbiAodikgeyByZXR1cm4gK3YgKiAxMDsgfV0sXG4gICAgU1NTOiBbXCJtaWxsaXNlY29uZFwiLCB0aHJlZURpZ2l0c10sXG4gICAgZDogZW1wdHlEaWdpdHMsXG4gICAgZGQ6IGVtcHR5RGlnaXRzLFxuICAgIGRkZDogZW1wdHlXb3JkLFxuICAgIGRkZGQ6IGVtcHR5V29yZCxcbiAgICBNTU06IFtcIm1vbnRoXCIsIHdvcmQsIG1vbnRoVXBkYXRlKFwibW9udGhOYW1lc1Nob3J0XCIpXSxcbiAgICBNTU1NOiBbXCJtb250aFwiLCB3b3JkLCBtb250aFVwZGF0ZShcIm1vbnRoTmFtZXNcIildLFxuICAgIGE6IGFtUG0sXG4gICAgQTogYW1QbSxcbiAgICBaWjogdGltZXpvbmVPZmZzZXQsXG4gICAgWjogdGltZXpvbmVPZmZzZXRcbn07XG4vLyBTb21lIGNvbW1vbiBmb3JtYXQgc3RyaW5nc1xudmFyIGdsb2JhbE1hc2tzID0ge1xuICAgIGRlZmF1bHQ6IFwiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzXCIsXG4gICAgc2hvcnREYXRlOiBcIk0vRC9ZWVwiLFxuICAgIG1lZGl1bURhdGU6IFwiTU1NIEQsIFlZWVlcIixcbiAgICBsb25nRGF0ZTogXCJNTU1NIEQsIFlZWVlcIixcbiAgICBmdWxsRGF0ZTogXCJkZGRkLCBNTU1NIEQsIFlZWVlcIixcbiAgICBpc29EYXRlOiBcIllZWVktTU0tRERcIixcbiAgICBpc29EYXRlVGltZTogXCJZWVlZLU1NLUREVEhIOm1tOnNzWlwiLFxuICAgIHNob3J0VGltZTogXCJISDptbVwiLFxuICAgIG1lZGl1bVRpbWU6IFwiSEg6bW06c3NcIixcbiAgICBsb25nVGltZTogXCJISDptbTpzcy5TU1NcIlxufTtcbnZhciBzZXRHbG9iYWxEYXRlTWFza3MgPSBmdW5jdGlvbiAobWFza3MpIHsgcmV0dXJuIGFzc2lnbihnbG9iYWxNYXNrcywgbWFza3MpOyB9O1xuLyoqKlxuICogRm9ybWF0IGEgZGF0ZVxuICogQG1ldGhvZCBmb3JtYXRcbiAqIEBwYXJhbSB7RGF0ZXxudW1iZXJ9IGRhdGVPYmpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXNrIEZvcm1hdCBvZiB0aGUgZGF0ZSwgaS5lLiAnbW0tZGQteXknIG9yICdzaG9ydERhdGUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBGb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqL1xudmFyIGZvcm1hdCA9IGZ1bmN0aW9uIChkYXRlT2JqLCBtYXNrLCBpMThuKSB7XG4gICAgaWYgKG1hc2sgPT09IHZvaWQgMCkgeyBtYXNrID0gZ2xvYmFsTWFza3NbXCJkZWZhdWx0XCJdOyB9XG4gICAgaWYgKGkxOG4gPT09IHZvaWQgMCkgeyBpMThuID0ge307IH1cbiAgICBpZiAodHlwZW9mIGRhdGVPYmogPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGVPYmopO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGRhdGVPYmopICE9PSBcIltvYmplY3QgRGF0ZV1cIiB8fFxuICAgICAgICBpc05hTihkYXRlT2JqLmdldFRpbWUoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBEYXRlIHBhc3MgdG8gZm9ybWF0XCIpO1xuICAgIH1cbiAgICBtYXNrID0gZ2xvYmFsTWFza3NbbWFza10gfHwgbWFzaztcbiAgICB2YXIgbGl0ZXJhbHMgPSBbXTtcbiAgICAvLyBNYWtlIGxpdGVyYWxzIGluYWN0aXZlIGJ5IHJlcGxhY2luZyB0aGVtIHdpdGggQEBAXG4gICAgbWFzayA9IG1hc2sucmVwbGFjZShsaXRlcmFsLCBmdW5jdGlvbiAoJDAsICQxKSB7XG4gICAgICAgIGxpdGVyYWxzLnB1c2goJDEpO1xuICAgICAgICByZXR1cm4gXCJAQEBcIjtcbiAgICB9KTtcbiAgICB2YXIgY29tYmluZWRJMThuU2V0dGluZ3MgPSBhc3NpZ24oYXNzaWduKHt9LCBnbG9iYWxJMThuKSwgaTE4bik7XG4gICAgLy8gQXBwbHkgZm9ybWF0dGluZyBydWxlc1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UodG9rZW4sIGZ1bmN0aW9uICgkMCkge1xuICAgICAgICByZXR1cm4gZm9ybWF0RmxhZ3NbJDBdKGRhdGVPYmosIGNvbWJpbmVkSTE4blNldHRpbmdzKTtcbiAgICB9KTtcbiAgICAvLyBJbmxpbmUgbGl0ZXJhbCB2YWx1ZXMgYmFjayBpbnRvIHRoZSBmb3JtYXR0ZWQgdmFsdWVcbiAgICByZXR1cm4gbWFzay5yZXBsYWNlKC9AQEAvZywgZnVuY3Rpb24gKCkgeyByZXR1cm4gbGl0ZXJhbHMuc2hpZnQoKTsgfSk7XG59O1xuLyoqXG4gKiBQYXJzZSBhIGRhdGUgc3RyaW5nIGludG8gYSBKYXZhc2NyaXB0IERhdGUgb2JqZWN0IC9cbiAqIEBtZXRob2QgcGFyc2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyIERhdGUgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IERhdGUgcGFyc2UgZm9ybWF0XG4gKiBAcGFyYW0ge2kxOG59IEkxOG5TZXR0aW5nc09wdGlvbmFsIEZ1bGwgb3Igc3Vic2V0IG9mIEkxOE4gc2V0dGluZ3NcbiAqIEByZXR1cm5zIHtEYXRlfG51bGx9IFJldHVybnMgRGF0ZSBvYmplY3QuIFJldHVybnMgbnVsbCB3aGF0IGRhdGUgc3RyaW5nIGlzIGludmFsaWQgb3IgZG9lc24ndCBtYXRjaCBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gcGFyc2UoZGF0ZVN0ciwgZm9ybWF0LCBpMThuKSB7XG4gICAgaWYgKGkxOG4gPT09IHZvaWQgMCkgeyBpMThuID0ge307IH1cbiAgICBpZiAodHlwZW9mIGZvcm1hdCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZvcm1hdCBpbiBmZWNoYSBwYXJzZVwiKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBmb3JtYXQgaXMgYWN0dWFsbHkgYSBtYXNrXG4gICAgZm9ybWF0ID0gZ2xvYmFsTWFza3NbZm9ybWF0XSB8fCBmb3JtYXQ7XG4gICAgLy8gQXZvaWQgcmVndWxhciBleHByZXNzaW9uIGRlbmlhbCBvZiBzZXJ2aWNlLCBmYWlsIGVhcmx5IGZvciByZWFsbHkgbG9uZyBzdHJpbmdzXG4gICAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9SZWd1bGFyX2V4cHJlc3Npb25fRGVuaWFsX29mX1NlcnZpY2VfLV9SZURvU1xuICAgIGlmIChkYXRlU3RyLmxlbmd0aCA+IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIERlZmF1bHQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhci5cbiAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHZhciBkYXRlSW5mbyA9IHtcbiAgICAgICAgeWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IDAsXG4gICAgICAgIGRheTogMSxcbiAgICAgICAgaG91cjogMCxcbiAgICAgICAgbWludXRlOiAwLFxuICAgICAgICBzZWNvbmQ6IDAsXG4gICAgICAgIG1pbGxpc2Vjb25kOiAwLFxuICAgICAgICBpc1BtOiBudWxsLFxuICAgICAgICB0aW1lem9uZU9mZnNldDogbnVsbFxuICAgIH07XG4gICAgdmFyIHBhcnNlSW5mbyA9IFtdO1xuICAgIHZhciBsaXRlcmFscyA9IFtdO1xuICAgIC8vIFJlcGxhY2UgYWxsIHRoZSBsaXRlcmFscyB3aXRoIEBAQC4gSG9wZWZ1bGx5IGEgc3RyaW5nIHRoYXQgd29uJ3QgZXhpc3QgaW4gdGhlIGZvcm1hdFxuICAgIHZhciBuZXdGb3JtYXQgPSBmb3JtYXQucmVwbGFjZShsaXRlcmFsLCBmdW5jdGlvbiAoJDAsICQxKSB7XG4gICAgICAgIGxpdGVyYWxzLnB1c2gocmVnZXhFc2NhcGUoJDEpKTtcbiAgICAgICAgcmV0dXJuIFwiQEBAXCI7XG4gICAgfSk7XG4gICAgdmFyIHNwZWNpZmllZEZpZWxkcyA9IHt9O1xuICAgIHZhciByZXF1aXJlZEZpZWxkcyA9IHt9O1xuICAgIC8vIENoYW5nZSBldmVyeSB0b2tlbiB0aGF0IHdlIGZpbmQgaW50byB0aGUgY29ycmVjdCByZWdleFxuICAgIG5ld0Zvcm1hdCA9IHJlZ2V4RXNjYXBlKG5ld0Zvcm1hdCkucmVwbGFjZSh0b2tlbiwgZnVuY3Rpb24gKCQwKSB7XG4gICAgICAgIHZhciBpbmZvID0gcGFyc2VGbGFnc1skMF07XG4gICAgICAgIHZhciBmaWVsZCA9IGluZm9bMF0sIHJlZ2V4ID0gaW5mb1sxXSwgcmVxdWlyZWRGaWVsZCA9IGluZm9bM107XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBwZXJzb24gaGFzIHNwZWNpZmllZCB0aGUgc2FtZSBmaWVsZCB0d2ljZS4gVGhpcyB3aWxsIGxlYWQgdG8gY29uZnVzaW5nIHJlc3VsdHMuXG4gICAgICAgIGlmIChzcGVjaWZpZWRGaWVsZHNbZmllbGRdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZvcm1hdC4gXCIgKyBmaWVsZCArIFwiIHNwZWNpZmllZCB0d2ljZSBpbiBmb3JtYXRcIik7XG4gICAgICAgIH1cbiAgICAgICAgc3BlY2lmaWVkRmllbGRzW2ZpZWxkXSA9IHRydWU7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmVxdWlyZWQgZmllbGRzLiBGb3IgaW5zdGFuY2UsIDEyIGhvdXIgdGltZSByZXF1aXJlcyBBTS9QTSBzcGVjaWZpZWRcbiAgICAgICAgaWYgKHJlcXVpcmVkRmllbGQpIHtcbiAgICAgICAgICAgIHJlcXVpcmVkRmllbGRzW3JlcXVpcmVkRmllbGRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZUluZm8ucHVzaChpbmZvKTtcbiAgICAgICAgcmV0dXJuIFwiKFwiICsgcmVnZXggKyBcIilcIjtcbiAgICB9KTtcbiAgICAvLyBDaGVjayBhbGwgdGhlIHJlcXVpcmVkIGZpZWxkcyBhcmUgcHJlc2VudFxuICAgIE9iamVjdC5rZXlzKHJlcXVpcmVkRmllbGRzKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICBpZiAoIXNwZWNpZmllZEZpZWxkc1tmaWVsZF0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZm9ybWF0LiBcIiArIGZpZWxkICsgXCIgaXMgcmVxdWlyZWQgaW4gc3BlY2lmaWVkIGZvcm1hdFwiKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIEFkZCBiYWNrIGFsbCB0aGUgbGl0ZXJhbHMgYWZ0ZXJcbiAgICBuZXdGb3JtYXQgPSBuZXdGb3JtYXQucmVwbGFjZSgvQEBAL2csIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxpdGVyYWxzLnNoaWZ0KCk7IH0pO1xuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlIHN0cmluZyBtYXRjaGVzIHRoZSBmb3JtYXQuIElmIGl0IGRvZXNuJ3QgcmV0dXJuIG51bGxcbiAgICB2YXIgbWF0Y2hlcyA9IGRhdGVTdHIubWF0Y2gobmV3IFJlZ0V4cChuZXdGb3JtYXQsIFwiaVwiKSk7XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgY29tYmluZWRJMThuU2V0dGluZ3MgPSBhc3NpZ24oYXNzaWduKHt9LCBnbG9iYWxJMThuKSwgaTE4bik7XG4gICAgLy8gRm9yIGVhY2ggbWF0Y2gsIGNhbGwgdGhlIHBhcnNlciBmdW5jdGlvbiBmb3IgdGhhdCBkYXRlIHBhcnRcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IG1hdGNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIF9hID0gcGFyc2VJbmZvW2kgLSAxXSwgZmllbGQgPSBfYVswXSwgcGFyc2VyID0gX2FbMl07XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlclxuICAgICAgICAgICAgPyBwYXJzZXIobWF0Y2hlc1tpXSwgY29tYmluZWRJMThuU2V0dGluZ3MpXG4gICAgICAgICAgICA6ICttYXRjaGVzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcGFyc2VyIGNhbid0IG1ha2Ugc2Vuc2Ugb2YgdGhlIHZhbHVlLCByZXR1cm4gbnVsbFxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZUluZm9bZmllbGRdID0gdmFsdWU7XG4gICAgfVxuICAgIGlmIChkYXRlSW5mby5pc1BtID09PSAxICYmIGRhdGVJbmZvLmhvdXIgIT0gbnVsbCAmJiArZGF0ZUluZm8uaG91ciAhPT0gMTIpIHtcbiAgICAgICAgZGF0ZUluZm8uaG91ciA9ICtkYXRlSW5mby5ob3VyICsgMTI7XG4gICAgfVxuICAgIGVsc2UgaWYgKGRhdGVJbmZvLmlzUG0gPT09IDAgJiYgK2RhdGVJbmZvLmhvdXIgPT09IDEyKSB7XG4gICAgICAgIGRhdGVJbmZvLmhvdXIgPSAwO1xuICAgIH1cbiAgICB2YXIgZGF0ZVdpdGhvdXRUWiA9IG5ldyBEYXRlKGRhdGVJbmZvLnllYXIsIGRhdGVJbmZvLm1vbnRoLCBkYXRlSW5mby5kYXksIGRhdGVJbmZvLmhvdXIsIGRhdGVJbmZvLm1pbnV0ZSwgZGF0ZUluZm8uc2Vjb25kLCBkYXRlSW5mby5taWxsaXNlY29uZCk7XG4gICAgdmFyIHZhbGlkYXRlRmllbGRzID0gW1xuICAgICAgICBbXCJtb250aFwiLCBcImdldE1vbnRoXCJdLFxuICAgICAgICBbXCJkYXlcIiwgXCJnZXREYXRlXCJdLFxuICAgICAgICBbXCJob3VyXCIsIFwiZ2V0SG91cnNcIl0sXG4gICAgICAgIFtcIm1pbnV0ZVwiLCBcImdldE1pbnV0ZXNcIl0sXG4gICAgICAgIFtcInNlY29uZFwiLCBcImdldFNlY29uZHNcIl1cbiAgICBdO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB2YWxpZGF0ZUZpZWxkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAvLyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGRhdGUgZmllbGQgaXMgd2l0aGluIHRoZSBhbGxvd2VkIHJhbmdlLiBKYXZhc2NyaXB0IGRhdGVzIGFsbG93cyB2YWx1ZXNcbiAgICAgICAgLy8gb3V0c2lkZSB0aGUgYWxsb3dlZCByYW5nZS4gSWYgdGhlIHZhbHVlcyBkb24ndCBtYXRjaCB0aGUgdmFsdWUgd2FzIGludmFsaWRcbiAgICAgICAgaWYgKHNwZWNpZmllZEZpZWxkc1t2YWxpZGF0ZUZpZWxkc1tpXVswXV0gJiZcbiAgICAgICAgICAgIGRhdGVJbmZvW3ZhbGlkYXRlRmllbGRzW2ldWzBdXSAhPT0gZGF0ZVdpdGhvdXRUWlt2YWxpZGF0ZUZpZWxkc1tpXVsxXV0oKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGVJbmZvLnRpbWV6b25lT2Zmc2V0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGRhdGVXaXRob3V0VFo7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhkYXRlSW5mby55ZWFyLCBkYXRlSW5mby5tb250aCwgZGF0ZUluZm8uZGF5LCBkYXRlSW5mby5ob3VyLCBkYXRlSW5mby5taW51dGUgLSBkYXRlSW5mby50aW1lem9uZU9mZnNldCwgZGF0ZUluZm8uc2Vjb25kLCBkYXRlSW5mby5taWxsaXNlY29uZCkpO1xufVxudmFyIGZlY2hhID0ge1xuICAgIGZvcm1hdDogZm9ybWF0LFxuICAgIHBhcnNlOiBwYXJzZSxcbiAgICBkZWZhdWx0STE4bjogZGVmYXVsdEkxOG4sXG4gICAgc2V0R2xvYmFsRGF0ZUkxOG46IHNldEdsb2JhbERhdGVJMThuLFxuICAgIHNldEdsb2JhbERhdGVNYXNrczogc2V0R2xvYmFsRGF0ZU1hc2tzXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmZWNoYTtcbmV4cG9ydCB7IGFzc2lnbiwgZm9ybWF0LCBwYXJzZSwgZGVmYXVsdEkxOG4sIHNldEdsb2JhbERhdGVJMThuLCBzZXRHbG9iYWxEYXRlTWFza3MgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZlY2hhLmpzLm1hcFxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_fecha@4.2.1@fecha/lib/fecha.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js": /*!***************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js ***! \***************************************************************/ /*! exports provided: EPSILON, ARRAY_TYPE, RANDOM, setMatrixArrayType, toRadian, equals */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EPSILON\", function() { return EPSILON; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ARRAY_TYPE\", function() { return ARRAY_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANDOM\", function() { return RANDOM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMatrixArrayType\", function() { return setMatrixArrayType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return toRadian; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nvar EPSILON = 0.000001;\nvar ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nfunction setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nfunction toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nfunction equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL2NvbW1vbi5qcz9iOThkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ0E7QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMkNBQTJDO0FBQ3REOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL2NvbW1vbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tbW9uIHV0aWxpdGllc1xuICogQG1vZHVsZSBnbE1hdHJpeFxuICovXG4vLyBDb25maWd1cmF0aW9uIENvbnN0YW50c1xuZXhwb3J0IHZhciBFUFNJTE9OID0gMC4wMDAwMDE7XG5leHBvcnQgdmFyIEFSUkFZX1RZUEUgPSB0eXBlb2YgRmxvYXQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IEZsb2F0MzJBcnJheSA6IEFycmF5O1xuZXhwb3J0IHZhciBSQU5ET00gPSBNYXRoLnJhbmRvbTtcbi8qKlxuICogU2V0cyB0aGUgdHlwZSBvZiBhcnJheSB1c2VkIHdoZW4gY3JlYXRpbmcgbmV3IHZlY3RvcnMgYW5kIG1hdHJpY2VzXG4gKlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXlDb25zdHJ1Y3RvciB8IEFycmF5Q29uc3RydWN0b3J9IHR5cGUgQXJyYXkgdHlwZSwgc3VjaCBhcyBGbG9hdDMyQXJyYXkgb3IgQXJyYXlcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWF0cml4QXJyYXlUeXBlKHR5cGUpIHtcbiAgQVJSQVlfVFlQRSA9IHR5cGU7XG59XG52YXIgZGVncmVlID0gTWF0aC5QSSAvIDE4MDtcbi8qKlxuICogQ29udmVydCBEZWdyZWUgVG8gUmFkaWFuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGEgQW5nbGUgaW4gRGVncmVlc1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0b1JhZGlhbihhKSB7XG4gIHJldHVybiBhICogZGVncmVlO1xufVxuLyoqXG4gKiBUZXN0cyB3aGV0aGVyIG9yIG5vdCB0aGUgYXJndW1lbnRzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSB2YWx1ZSwgd2l0aGluIGFuIGFic29sdXRlXG4gKiBvciByZWxhdGl2ZSB0b2xlcmFuY2Ugb2YgZ2xNYXRyaXguRVBTSUxPTiAoYW4gYWJzb2x1dGUgdG9sZXJhbmNlIGlzIHVzZWQgZm9yIHZhbHVlcyBsZXNzXG4gKiB0aGFuIG9yIGVxdWFsIHRvIDEuMCwgYW5kIGEgcmVsYXRpdmUgdG9sZXJhbmNlIGlzIHVzZWQgZm9yIGxhcmdlciB2YWx1ZXMpXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGEgVGhlIGZpcnN0IG51bWJlciB0byB0ZXN0LlxuICogQHBhcmFtIHtOdW1iZXJ9IGIgVGhlIHNlY29uZCBudW1iZXIgdG8gdGVzdC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBudW1iZXJzIGFyZSBhcHByb3hpbWF0ZWx5IGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBNYXRoLmFicyhhIC0gYikgPD0gRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYSksIE1hdGguYWJzKGIpKTtcbn1cbmlmICghTWF0aC5oeXBvdCkgTWF0aC5oeXBvdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHkgPSAwLFxuICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG5cbiAgd2hpbGUgKGktLSkge1xuICAgIHkgKz0gYXJndW1lbnRzW2ldICogYXJndW1lbnRzW2ldO1xuICB9XG5cbiAgcmV0dXJuIE1hdGguc3FydCh5KTtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js ***! \**************************************************************/ /*! exports provided: glMatrix, mat2, mat2d, mat3, mat4, quat, quat2, vec2, vec3, vec4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"glMatrix\", function() { return _common_js__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _mat2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mat2.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat2\", function() { return _mat2_js__WEBPACK_IMPORTED_MODULE_1__; });\n/* harmony import */ var _mat2d_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mat2d.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2d.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat2d\", function() { return _mat2d_js__WEBPACK_IMPORTED_MODULE_2__; });\n/* harmony import */ var _mat3_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mat3.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat3.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat3\", function() { return _mat3_js__WEBPACK_IMPORTED_MODULE_3__; });\n/* harmony import */ var _mat4_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mat4.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat4.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"mat4\", function() { return _mat4_js__WEBPACK_IMPORTED_MODULE_4__; });\n/* harmony import */ var _quat_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./quat.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"quat\", function() { return _quat_js__WEBPACK_IMPORTED_MODULE_5__; });\n/* harmony import */ var _quat2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./quat2.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat2.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"quat2\", function() { return _quat2_js__WEBPACK_IMPORTED_MODULE_6__; });\n/* harmony import */ var _vec2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./vec2.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec2.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"vec2\", function() { return _vec2_js__WEBPACK_IMPORTED_MODULE_7__; });\n/* harmony import */ var _vec3_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./vec3.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"vec3\", function() { return _vec3_js__WEBPACK_IMPORTED_MODULE_8__; });\n/* harmony import */ var _vec4_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./vec4.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec4.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"vec4\", function() { return _vec4_js__WEBPACK_IMPORTED_MODULE_9__; });\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL2luZGV4LmpzPzkxNzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ047QUFDRTtBQUNGO0FBQ0E7QUFDQTtBQUNFO0FBQ0Y7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdsTWF0cml4IGZyb20gXCIuL2NvbW1vbi5qc1wiO1xuaW1wb3J0ICogYXMgbWF0MiBmcm9tIFwiLi9tYXQyLmpzXCI7XG5pbXBvcnQgKiBhcyBtYXQyZCBmcm9tIFwiLi9tYXQyZC5qc1wiO1xuaW1wb3J0ICogYXMgbWF0MyBmcm9tIFwiLi9tYXQzLmpzXCI7XG5pbXBvcnQgKiBhcyBtYXQ0IGZyb20gXCIuL21hdDQuanNcIjtcbmltcG9ydCAqIGFzIHF1YXQgZnJvbSBcIi4vcXVhdC5qc1wiO1xuaW1wb3J0ICogYXMgcXVhdDIgZnJvbSBcIi4vcXVhdDIuanNcIjtcbmltcG9ydCAqIGFzIHZlYzIgZnJvbSBcIi4vdmVjMi5qc1wiO1xuaW1wb3J0ICogYXMgdmVjMyBmcm9tIFwiLi92ZWMzLmpzXCI7XG5pbXBvcnQgKiBhcyB2ZWM0IGZyb20gXCIuL3ZlYzQuanNcIjtcbmV4cG9ydCB7IGdsTWF0cml4LCBtYXQyLCBtYXQyZCwgbWF0MywgbWF0NCwgcXVhdCwgcXVhdDIsIHZlYzIsIHZlYzMsIHZlYzQgfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2.js ***! \*************************************************************/ /*! exports provided: create, clone, copy, identity, fromValues, set, transpose, invert, adjoint, determinant, multiply, rotate, scale, fromRotation, fromScaling, str, frob, LDU, add, subtract, exactEquals, equals, multiplyScalar, multiplyScalarAndAdd, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return transpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjoint\", function() { return adjoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LDU\", function() { return LDU; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 2x2 Matrix\n * @module mat2\n */\n\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\n\nfunction fromValues(m00, m01, m10, m11) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\n\nfunction set(out, m00, m01, m10, m11) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m10;\n out[3] = m11;\n return out;\n}\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache\n // some values\n if (out === a) {\n var a1 = a[1];\n out[1] = a[2];\n out[2] = a1;\n } else {\n out[0] = a[0];\n out[1] = a[2];\n out[2] = a[1];\n out[3] = a[3];\n }\n\n return out;\n}\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3]; // Calculate the determinant\n\n var det = a0 * a3 - a2 * a1;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = a3 * det;\n out[1] = -a1 * det;\n out[2] = -a2 * det;\n out[3] = a0 * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the source matrix\n * @returns {mat2} out\n */\n\nfunction adjoint(out, a) {\n // Caching this value is nessecary if out == a\n var a0 = a[0];\n out[0] = a[3];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a0;\n return out;\n}\n/**\n * Calculates the determinant of a mat2\n *\n * @param {ReadonlyMat2} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n return a[0] * a[3] - a[2] * a[1];\n}\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nfunction multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n return out;\n}\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nfunction rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n return out;\n}\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\n\nfunction scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\n\nfunction fromRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2.identity(dest);\n * mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2\n *\n * @param {ReadonlyMat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {ReadonlyMat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3]);\n}\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {ReadonlyMat2} L the lower triangular matrix\n * @param {ReadonlyMat2} D the diagonal matrix\n * @param {ReadonlyMat2} U the upper triangular matrix\n * @param {ReadonlyMat2} a the input matrix to factorize\n */\n\nfunction LDU(L, D, U, a) {\n L[2] = a[2] / a[0];\n U[0] = a[0];\n U[1] = a[1];\n U[3] = a[3] - L[2] * U[1];\n return [L, D, U];\n}\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @returns {mat2} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2} a The first matrix.\n * @param {ReadonlyMat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {ReadonlyMat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {ReadonlyMat2} a the first operand\n * @param {ReadonlyMat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL21hdDIuanM/OTI0YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCOztBQUVoQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0I7QUFDN1M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL21hdDIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbi8qKlxuICogMngyIE1hdHJpeFxuICogQG1vZHVsZSBtYXQyXG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGlkZW50aXR5IG1hdDJcbiAqXG4gKiBAcmV0dXJucyB7bWF0Mn0gYSBuZXcgMngyIG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg0KTtcblxuICBpZiAoZ2xNYXRyaXguQVJSQVlfVFlQRSAhPSBGbG9hdDMyQXJyYXkpIHtcbiAgICBvdXRbMV0gPSAwO1xuICAgIG91dFsyXSA9IDA7XG4gIH1cblxuICBvdXRbMF0gPSAxO1xuICBvdXRbM10gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IG1hdDIgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSBtYXRyaXggdG8gY2xvbmVcbiAqIEByZXR1cm5zIHttYXQyfSBhIG5ldyAyeDIgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpO1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgbWF0MiB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCBhIG1hdDIgdG8gdGhlIGlkZW50aXR5IG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5KG91dCkge1xuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgbWF0MiB3aXRoIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDEgcG9zaXRpb24gKGluZGV4IDEpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEwIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDAgcG9zaXRpb24gKGluZGV4IDIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDMpXG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0IEEgbmV3IDJ4MiBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVZhbHVlcyhtMDAsIG0wMSwgbTEwLCBtMTEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpO1xuICBvdXRbMF0gPSBtMDA7XG4gIG91dFsxXSA9IG0wMTtcbiAgb3V0WzJdID0gbTEwO1xuICBvdXRbM10gPSBtMTE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIG1hdDIgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDEgcG9zaXRpb24gKGluZGV4IDEpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEwIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDAgcG9zaXRpb24gKGluZGV4IDIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDMpXG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChvdXQsIG0wMCwgbTAxLCBtMTAsIG0xMSkge1xuICBvdXRbMF0gPSBtMDA7XG4gIG91dFsxXSA9IG0wMTtcbiAgb3V0WzJdID0gbTEwO1xuICBvdXRbM10gPSBtMTE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zcG9zZSB0aGUgdmFsdWVzIG9mIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2Uob3V0LCBhKSB7XG4gIC8vIElmIHdlIGFyZSB0cmFuc3Bvc2luZyBvdXJzZWx2ZXMgd2UgY2FuIHNraXAgYSBmZXcgc3RlcHMgYnV0IGhhdmUgdG8gY2FjaGVcbiAgLy8gc29tZSB2YWx1ZXNcbiAgaWYgKG91dCA9PT0gYSkge1xuICAgIHZhciBhMSA9IGFbMV07XG4gICAgb3V0WzFdID0gYVsyXTtcbiAgICBvdXRbMl0gPSBhMTtcbiAgfSBlbHNlIHtcbiAgICBvdXRbMF0gPSBhWzBdO1xuICAgIG91dFsxXSA9IGFbMl07XG4gICAgb3V0WzJdID0gYVsxXTtcbiAgICBvdXRbM10gPSBhWzNdO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogSW52ZXJ0cyBhIG1hdDJcbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdOyAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50XG5cbiAgdmFyIGRldCA9IGEwICogYTMgLSBhMiAqIGExO1xuXG4gIGlmICghZGV0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBkZXQgPSAxLjAgLyBkZXQ7XG4gIG91dFswXSA9IGEzICogZGV0O1xuICBvdXRbMV0gPSAtYTEgKiBkZXQ7XG4gIG91dFsyXSA9IC1hMiAqIGRldDtcbiAgb3V0WzNdID0gYTAgKiBkZXQ7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGFkanVnYXRlIG9mIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGpvaW50KG91dCwgYSkge1xuICAvLyBDYWNoaW5nIHRoaXMgdmFsdWUgaXMgbmVzc2VjYXJ5IGlmIG91dCA9PSBhXG4gIHZhciBhMCA9IGFbMF07XG4gIG91dFswXSA9IGFbM107XG4gIG91dFsxXSA9IC1hWzFdO1xuICBvdXRbMl0gPSAtYVsyXTtcbiAgb3V0WzNdID0gYTA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRldGVybWluYW50IG9mIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkZXRlcm1pbmFudCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluYW50KGEpIHtcbiAgcmV0dXJuIGFbMF0gKiBhWzNdIC0gYVsyXSAqIGFbMV07XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIG1hdDInc1xuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdO1xuICBvdXRbMF0gPSBhMCAqIGIwICsgYTIgKiBiMTtcbiAgb3V0WzFdID0gYTEgKiBiMCArIGEzICogYjE7XG4gIG91dFsyXSA9IGEwICogYjIgKyBhMiAqIGIzO1xuICBvdXRbM10gPSBhMSAqIGIyICsgYTMgKiBiMztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIG1hdDIgYnkgdGhlIGdpdmVuIGFuZ2xlXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBtYXRyaXggdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGUob3V0LCBhLCByYWQpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXTtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGEwICogYyArIGEyICogcztcbiAgb3V0WzFdID0gYTEgKiBjICsgYTMgKiBzO1xuICBvdXRbMl0gPSBhMCAqIC1zICsgYTIgKiBjO1xuICBvdXRbM10gPSBhMSAqIC1zICsgYTMgKiBjO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTY2FsZXMgdGhlIG1hdDIgYnkgdGhlIGRpbWVuc2lvbnMgaW4gdGhlIGdpdmVuIHZlYzJcbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IHRoZSB2ZWMyIHRvIHNjYWxlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlKG91dCwgYSwgdikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdO1xuICB2YXIgdjAgPSB2WzBdLFxuICAgICAgdjEgPSB2WzFdO1xuICBvdXRbMF0gPSBhMCAqIHYwO1xuICBvdXRbMV0gPSBhMSAqIHYwO1xuICBvdXRbMl0gPSBhMiAqIHYxO1xuICBvdXRbM10gPSBhMyAqIHYxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSBnaXZlbiBhbmdsZVxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDIuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0Mi5yb3RhdGUoZGVzdCwgZGVzdCwgcmFkKTtcbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCBtYXQyIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUm90YXRpb24ob3V0LCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGM7XG4gIG91dFsxXSA9IHM7XG4gIG91dFsyXSA9IC1zO1xuICBvdXRbM10gPSBjO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3Igc2NhbGluZ1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDIuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0Mi5zY2FsZShkZXN0LCBkZXN0LCB2ZWMpO1xuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IG1hdDIgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IFNjYWxpbmcgdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21TY2FsaW5nKG91dCwgdikge1xuICBvdXRbMF0gPSB2WzBdO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSB2WzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIG1hdHJpeCB0byByZXByZXNlbnQgYXMgYSBzdHJpbmdcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihhKSB7XG4gIHJldHVybiBcIm1hdDIoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIiwgXCIgKyBhWzNdICsgXCIpXCI7XG59XG4vKipcbiAqIFJldHVybnMgRnJvYmVuaXVzIG5vcm0gb2YgYSBtYXQyXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIG1hdHJpeCB0byBjYWxjdWxhdGUgRnJvYmVuaXVzIG5vcm0gb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IEZyb2Jlbml1cyBub3JtXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb2IoYSkge1xuICByZXR1cm4gTWF0aC5oeXBvdChhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTtcbn1cbi8qKlxuICogUmV0dXJucyBMLCBEIGFuZCBVIG1hdHJpY2VzIChMb3dlciB0cmlhbmd1bGFyLCBEaWFnb25hbCBhbmQgVXBwZXIgdHJpYW5ndWxhcikgYnkgZmFjdG9yaXppbmcgdGhlIGlucHV0IG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IEwgdGhlIGxvd2VyIHRyaWFuZ3VsYXIgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gRCB0aGUgZGlhZ29uYWwgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gVSB0aGUgdXBwZXIgdHJpYW5ndWxhciBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBpbnB1dCBtYXRyaXggdG8gZmFjdG9yaXplXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIExEVShMLCBELCBVLCBhKSB7XG4gIExbMl0gPSBhWzJdIC8gYVswXTtcbiAgVVswXSA9IGFbMF07XG4gIFVbMV0gPSBhWzFdO1xuICBVWzNdID0gYVszXSAtIExbMl0gKiBVWzFdO1xuICByZXR1cm4gW0wsIEQsIFVdO1xufVxuLyoqXG4gKiBBZGRzIHR3byBtYXQyJ3NcbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIG91dFszXSA9IGFbM10gKyBiWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTdWJ0cmFjdHMgbWF0cml4IGIgZnJvbSBtYXRyaXggYVxuICpcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnRyYWN0KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC0gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAtIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gLSBiWzJdO1xuICBvdXRbM10gPSBhWzNdIC0gYlszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYiBUaGUgc2Vjb25kIG1hdHJpeC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBtYXRyaWNlcyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhhY3RFcXVhbHMoYSwgYikge1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdICYmIGFbMl0gPT09IGJbMl0gJiYgYVszXSA9PT0gYlszXTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0Mn0gYiBUaGUgc2Vjb25kIG1hdHJpeC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBtYXRyaWNlcyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXSxcbiAgICAgIGIzID0gYlszXTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYmIE1hdGguYWJzKGEzIC0gYjMpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKTtcbn1cbi8qKlxuICogTXVsdGlwbHkgZWFjaCBlbGVtZW50IG9mIHRoZSBtYXRyaXggYnkgYSBzY2FsYXIuXG4gKlxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBhIHRoZSBtYXRyaXggdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgbWF0cml4J3MgZWxlbWVudHMgYnlcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIG91dFszXSA9IGFbM10gKiBiO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byBtYXQyJ3MgYWZ0ZXIgbXVsdGlwbHlpbmcgZWFjaCBlbGVtZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBieSBhIHNjYWxhciB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge21hdDJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBhZGRpbmdcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXJBbmRBZGQob3V0LCBhLCBiLCBzY2FsZSkge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXSAqIHNjYWxlO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXSAqIHNjYWxlO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXSAqIHNjYWxlO1xuICBvdXRbM10gPSBhWzNdICsgYlszXSAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDIubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDIuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2d.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2d.js ***! \**************************************************************/ /*! exports provided: create, clone, copy, identity, fromValues, set, invert, determinant, multiply, rotate, scale, translate, fromRotation, fromScaling, fromTranslation, str, frob, add, subtract, multiplyScalar, multiplyScalarAndAdd, exactEquals, equals, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 2x3 Matrix\n * @module mat2d\n * @description\n * A mat2d contains six elements defined as:\n *
\n * [a, b,\n *  c, d,\n *  tx, ty]\n * 
\n * This is a short form for the 3x3 matrix:\n *
\n * [a, b, 0,\n *  c, d, 0,\n *  tx, ty, 1]\n * 
\n * The last column is ignored so the array is shorter and operations are faster.\n */\n\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](6);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[4] = 0;\n out[5] = 0;\n }\n\n out[0] = 1;\n out[3] = 1;\n return out;\n}\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {ReadonlyMat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](6);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n return out;\n}\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Create a new mat2d with the given values\n *\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} A new mat2d\n */\n\nfunction fromValues(a, b, c, d, tx, ty) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](6);\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Set the components of a mat2d to the given values\n *\n * @param {mat2d} out the receiving matrix\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} out\n */\n\nfunction set(out, a, b, c, d, tx, ty) {\n out[0] = a;\n out[1] = b;\n out[2] = c;\n out[3] = d;\n out[4] = tx;\n out[5] = ty;\n return out;\n}\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {mat2d} out\n */\n\nfunction invert(out, a) {\n var aa = a[0],\n ab = a[1],\n ac = a[2],\n ad = a[3];\n var atx = a[4],\n aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {ReadonlyMat2d} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n return a[0] * a[3] - a[1] * a[2];\n}\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nfunction multiply(out, a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n out[0] = a0 * b0 + a2 * b1;\n out[1] = a1 * b0 + a3 * b1;\n out[2] = a0 * b2 + a2 * b3;\n out[3] = a1 * b2 + a3 * b3;\n out[4] = a0 * b4 + a2 * b5 + a4;\n out[5] = a1 * b4 + a3 * b5 + a5;\n return out;\n}\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nfunction rotate(out, a, rad) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out[0] = a0 * c + a2 * s;\n out[1] = a1 * c + a3 * s;\n out[2] = a0 * -s + a2 * c;\n out[3] = a1 * -s + a3 * c;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\n\nfunction scale(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0 * v0;\n out[1] = a1 * v0;\n out[2] = a2 * v1;\n out[3] = a3 * v1;\n out[4] = a4;\n out[5] = a5;\n return out;\n}\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to translate\n * @param {ReadonlyVec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\n\nfunction translate(out, a, v) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var v0 = v[0],\n v1 = v[1];\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = a0 * v0 + a2 * v1 + a4;\n out[5] = a1 * v0 + a3 * v1 + a5;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\n\nfunction fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = -s;\n out[3] = c;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat2d} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = v[1];\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat2d.identity(dest);\n * mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat2d} out\n */\n\nfunction fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = v[0];\n out[5] = v[1];\n return out;\n}\n/**\n * Returns a string representation of a mat2d\n *\n * @param {ReadonlyMat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {ReadonlyMat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n}\n/**\n * Adds two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @returns {mat2d} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2d} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2d} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n return out;\n}\n/**\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2d} out the receiving vector\n * @param {ReadonlyMat2d} a the first operand\n * @param {ReadonlyMat2d} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2d} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat2d} a The first matrix.\n * @param {ReadonlyMat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n}\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat2d.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL21hdDJkLmpzPzViYzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQjtBQUN2ZDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS9tYXQyZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdsTWF0cml4IGZyb20gXCIuL2NvbW1vbi5qc1wiO1xuLyoqXG4gKiAyeDMgTWF0cml4XG4gKiBAbW9kdWxlIG1hdDJkXG4gKiBAZGVzY3JpcHRpb25cbiAqIEEgbWF0MmQgY29udGFpbnMgc2l4IGVsZW1lbnRzIGRlZmluZWQgYXM6XG4gKiA8cHJlPlxuICogW2EsIGIsXG4gKiAgYywgZCxcbiAqICB0eCwgdHldXG4gKiA8L3ByZT5cbiAqIFRoaXMgaXMgYSBzaG9ydCBmb3JtIGZvciB0aGUgM3gzIG1hdHJpeDpcbiAqIDxwcmU+XG4gKiBbYSwgYiwgMCxcbiAqICBjLCBkLCAwLFxuICogIHR4LCB0eSwgMV1cbiAqIDwvcHJlPlxuICogVGhlIGxhc3QgY29sdW1uIGlzIGlnbm9yZWQgc28gdGhlIGFycmF5IGlzIHNob3J0ZXIgYW5kIG9wZXJhdGlvbnMgYXJlIGZhc3Rlci5cbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgbWF0MmRcbiAqXG4gKiBAcmV0dXJucyB7bWF0MmR9IGEgbmV3IDJ4MyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNik7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgb3V0WzFdID0gMDtcbiAgICBvdXRbMl0gPSAwO1xuICAgIG91dFs0XSA9IDA7XG4gICAgb3V0WzVdID0gMDtcbiAgfVxuXG4gIG91dFswXSA9IDE7XG4gIG91dFszXSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgbWF0MmQgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgbWF0cml4IHRvIGNsb25lXG4gKiBAcmV0dXJucyB7bWF0MmR9IGEgbmV3IDJ4MyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNik7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IGFbNF07XG4gIG91dFs1XSA9IGFbNV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSBtYXQyZCB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IGFbNF07XG4gIG91dFs1XSA9IGFbNV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCBhIG1hdDJkIHRvIHRoZSBpZGVudGl0eSBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5KG91dCkge1xuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAxO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAwO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgbWF0MmQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGEgQ29tcG9uZW50IEEgKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gYiBDb21wb25lbnQgQiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBjIENvbXBvbmVudCBDIChpbmRleCAyKVxuICogQHBhcmFtIHtOdW1iZXJ9IGQgQ29tcG9uZW50IEQgKGluZGV4IDMpXG4gKiBAcGFyYW0ge051bWJlcn0gdHggQ29tcG9uZW50IFRYIChpbmRleCA0KVxuICogQHBhcmFtIHtOdW1iZXJ9IHR5IENvbXBvbmVudCBUWSAoaW5kZXggNSlcbiAqIEByZXR1cm5zIHttYXQyZH0gQSBuZXcgbWF0MmRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVZhbHVlcyhhLCBiLCBjLCBkLCB0eCwgdHkpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDYpO1xuICBvdXRbMF0gPSBhO1xuICBvdXRbMV0gPSBiO1xuICBvdXRbMl0gPSBjO1xuICBvdXRbM10gPSBkO1xuICBvdXRbNF0gPSB0eDtcbiAgb3V0WzVdID0gdHk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIG1hdDJkIHRvIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7TnVtYmVyfSBhIENvbXBvbmVudCBBIChpbmRleCAwKVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgQ29tcG9uZW50IEIgKGluZGV4IDEpXG4gKiBAcGFyYW0ge051bWJlcn0gYyBDb21wb25lbnQgQyAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBkIENvbXBvbmVudCBEIChpbmRleCAzKVxuICogQHBhcmFtIHtOdW1iZXJ9IHR4IENvbXBvbmVudCBUWCAoaW5kZXggNClcbiAqIEBwYXJhbSB7TnVtYmVyfSB0eSBDb21wb25lbnQgVFkgKGluZGV4IDUpXG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXQob3V0LCBhLCBiLCBjLCBkLCB0eCwgdHkpIHtcbiAgb3V0WzBdID0gYTtcbiAgb3V0WzFdID0gYjtcbiAgb3V0WzJdID0gYztcbiAgb3V0WzNdID0gZDtcbiAgb3V0WzRdID0gdHg7XG4gIG91dFs1XSA9IHR5O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBJbnZlcnRzIGEgbWF0MmRcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgYWEgPSBhWzBdLFxuICAgICAgYWIgPSBhWzFdLFxuICAgICAgYWMgPSBhWzJdLFxuICAgICAgYWQgPSBhWzNdO1xuICB2YXIgYXR4ID0gYVs0XSxcbiAgICAgIGF0eSA9IGFbNV07XG4gIHZhciBkZXQgPSBhYSAqIGFkIC0gYWIgKiBhYztcblxuICBpZiAoIWRldCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZGV0ID0gMS4wIC8gZGV0O1xuICBvdXRbMF0gPSBhZCAqIGRldDtcbiAgb3V0WzFdID0gLWFiICogZGV0O1xuICBvdXRbMl0gPSAtYWMgKiBkZXQ7XG4gIG91dFszXSA9IGFhICogZGV0O1xuICBvdXRbNF0gPSAoYWMgKiBhdHkgLSBhZCAqIGF0eCkgKiBkZXQ7XG4gIG91dFs1XSA9IChhYiAqIGF0eCAtIGFhICogYXR5KSAqIGRldDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZGV0ZXJtaW5hbnQgb2YgYSBtYXQyZFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge051bWJlcn0gZGV0ZXJtaW5hbnQgb2YgYVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlcm1pbmFudChhKSB7XG4gIHJldHVybiBhWzBdICogYVszXSAtIGFbMV0gKiBhWzJdO1xufVxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byBtYXQyZCdzXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdLFxuICAgICAgYTQgPSBhWzRdLFxuICAgICAgYTUgPSBhWzVdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdLFxuICAgICAgYjQgPSBiWzRdLFxuICAgICAgYjUgPSBiWzVdO1xuICBvdXRbMF0gPSBhMCAqIGIwICsgYTIgKiBiMTtcbiAgb3V0WzFdID0gYTEgKiBiMCArIGEzICogYjE7XG4gIG91dFsyXSA9IGEwICogYjIgKyBhMiAqIGIzO1xuICBvdXRbM10gPSBhMSAqIGIyICsgYTMgKiBiMztcbiAgb3V0WzRdID0gYTAgKiBiNCArIGEyICogYjUgKyBhNDtcbiAgb3V0WzVdID0gYTEgKiBiNCArIGEzICogYjUgKyBhNTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIG1hdDJkIGJ5IHRoZSBnaXZlbiBhbmdsZVxuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBtYXRyaXggdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlKG91dCwgYSwgcmFkKSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM10sXG4gICAgICBhNCA9IGFbNF0sXG4gICAgICBhNSA9IGFbNV07XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKTtcbiAgdmFyIGMgPSBNYXRoLmNvcyhyYWQpO1xuICBvdXRbMF0gPSBhMCAqIGMgKyBhMiAqIHM7XG4gIG91dFsxXSA9IGExICogYyArIGEzICogcztcbiAgb3V0WzJdID0gYTAgKiAtcyArIGEyICogYztcbiAgb3V0WzNdID0gYTEgKiAtcyArIGEzICogYztcbiAgb3V0WzRdID0gYTQ7XG4gIG91dFs1XSA9IGE1O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTY2FsZXMgdGhlIG1hdDJkIGJ5IHRoZSBkaW1lbnNpb25zIGluIHRoZSBnaXZlbiB2ZWMyXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIG1hdHJpeCB0byB0cmFuc2xhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IHRoZSB2ZWMyIHRvIHNjYWxlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKiovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZShvdXQsIGEsIHYpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXSxcbiAgICAgIGE0ID0gYVs0XSxcbiAgICAgIGE1ID0gYVs1XTtcbiAgdmFyIHYwID0gdlswXSxcbiAgICAgIHYxID0gdlsxXTtcbiAgb3V0WzBdID0gYTAgKiB2MDtcbiAgb3V0WzFdID0gYTEgKiB2MDtcbiAgb3V0WzJdID0gYTIgKiB2MTtcbiAgb3V0WzNdID0gYTMgKiB2MTtcbiAgb3V0WzRdID0gYTQ7XG4gIG91dFs1XSA9IGE1O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBtYXQyZCBieSB0aGUgZGltZW5zaW9ucyBpbiB0aGUgZ2l2ZW4gdmVjMlxuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBtYXRyaXggdG8gdHJhbnNsYXRlXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gdiB0aGUgdmVjMiB0byB0cmFuc2xhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZShvdXQsIGEsIHYpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXSxcbiAgICAgIGE0ID0gYVs0XSxcbiAgICAgIGE1ID0gYVs1XTtcbiAgdmFyIHYwID0gdlswXSxcbiAgICAgIHYxID0gdlsxXTtcbiAgb3V0WzBdID0gYTA7XG4gIG91dFsxXSA9IGExO1xuICBvdXRbMl0gPSBhMjtcbiAgb3V0WzNdID0gYTM7XG4gIG91dFs0XSA9IGEwICogdjAgKyBhMiAqIHYxICsgYTQ7XG4gIG91dFs1XSA9IGExICogdjAgKyBhMyAqIHYxICsgYTU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIGdpdmVuIGFuZ2xlXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0MmQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0MmQucm90YXRlKGRlc3QsIGRlc3QsIHJhZCk7XG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IG1hdDJkIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJvdGF0aW9uKG91dCwgcmFkKSB7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKSxcbiAgICAgIGMgPSBNYXRoLmNvcyhyYWQpO1xuICBvdXRbMF0gPSBjO1xuICBvdXRbMV0gPSBzO1xuICBvdXRbMl0gPSAtcztcbiAgb3V0WzNdID0gYztcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgdmVjdG9yIHNjYWxpbmdcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQyZC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQyZC5zY2FsZShkZXN0LCBkZXN0LCB2ZWMpO1xuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCBtYXQyZCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgU2NhbGluZyB2ZWN0b3JcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21TY2FsaW5nKG91dCwgdikge1xuICBvdXRbMF0gPSB2WzBdO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSB2WzFdO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAwO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3IgdHJhbnNsYXRpb25cbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQyZC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQyZC50cmFuc2xhdGUoZGVzdCwgZGVzdCwgdmVjKTtcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgbWF0MmQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IFRyYW5zbGF0aW9uIHZlY3RvclxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVRyYW5zbGF0aW9uKG91dCwgdikge1xuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAxO1xuICBvdXRbNF0gPSB2WzBdO1xuICBvdXRbNV0gPSB2WzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWF0MmRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgbWF0cml4IHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwibWF0MmQoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIiwgXCIgKyBhWzNdICsgXCIsIFwiICsgYVs0XSArIFwiLCBcIiArIGFbNV0gKyBcIilcIjtcbn1cbi8qKlxuICogUmV0dXJucyBGcm9iZW5pdXMgbm9ybSBvZiBhIG1hdDJkXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBtYXRyaXggdG8gY2FsY3VsYXRlIEZyb2Jlbml1cyBub3JtIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBGcm9iZW5pdXMgbm9ybVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9iKGEpIHtcbiAgcmV0dXJuIE1hdGguaHlwb3QoYVswXSwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSwgYVs1XSwgMSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIG1hdDJkJ3NcbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdO1xuICBvdXRbM10gPSBhWzNdICsgYlszXTtcbiAgb3V0WzRdID0gYVs0XSArIGJbNF07XG4gIG91dFs1XSA9IGFbNV0gKyBiWzVdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTdWJ0cmFjdHMgbWF0cml4IGIgZnJvbSBtYXRyaXggYVxuICpcbiAqIEBwYXJhbSB7bWF0MmR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0MmR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0cmFjdChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAtIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gLSBiWzFdO1xuICBvdXRbMl0gPSBhWzJdIC0gYlsyXTtcbiAgb3V0WzNdID0gYVszXSAtIGJbM107XG4gIG91dFs0XSA9IGFbNF0gLSBiWzRdO1xuICBvdXRbNV0gPSBhWzVdIC0gYls1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTXVsdGlwbHkgZWFjaCBlbGVtZW50IG9mIHRoZSBtYXRyaXggYnkgYSBzY2FsYXIuXG4gKlxuICogQHBhcmFtIHttYXQyZH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0MmR9IGEgdGhlIG1hdHJpeCB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSBtYXRyaXgncyBlbGVtZW50cyBieVxuICogQHJldHVybnMge21hdDJkfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIG91dFszXSA9IGFbM10gKiBiO1xuICBvdXRbNF0gPSBhWzRdICogYjtcbiAgb3V0WzVdID0gYVs1XSAqIGI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIG1hdDJkJ3MgYWZ0ZXIgbXVsdGlwbHlpbmcgZWFjaCBlbGVtZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBieSBhIHNjYWxhciB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge21hdDJkfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBhZGRpbmdcbiAqIEByZXR1cm5zIHttYXQyZH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5U2NhbGFyQW5kQWRkKG91dCwgYSwgYiwgc2NhbGUpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF0gKiBzY2FsZTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV0gKiBzY2FsZTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl0gKiBzY2FsZTtcbiAgb3V0WzNdID0gYVszXSArIGJbM10gKiBzY2FsZTtcbiAgb3V0WzRdID0gYVs0XSArIGJbNF0gKiBzY2FsZTtcbiAgb3V0WzVdID0gYVs1XSArIGJbNV0gKiBzY2FsZTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSBUaGUgZmlyc3QgbWF0cml4LlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdICYmIGFbNF0gPT09IGJbNF0gJiYgYVs1XSA9PT0gYls1XTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSBUaGUgZmlyc3QgbWF0cml4LlxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdLFxuICAgICAgYTEgPSBhWzFdLFxuICAgICAgYTIgPSBhWzJdLFxuICAgICAgYTMgPSBhWzNdLFxuICAgICAgYTQgPSBhWzRdLFxuICAgICAgYTUgPSBhWzVdO1xuICB2YXIgYjAgPSBiWzBdLFxuICAgICAgYjEgPSBiWzFdLFxuICAgICAgYjIgPSBiWzJdLFxuICAgICAgYjMgPSBiWzNdLFxuICAgICAgYjQgPSBiWzRdLFxuICAgICAgYjUgPSBiWzVdO1xuICByZXR1cm4gTWF0aC5hYnMoYTAgLSBiMCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmIE1hdGguYWJzKGExIC0gYjEpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExKSwgTWF0aC5hYnMoYjEpKSAmJiBNYXRoLmFicyhhMiAtIGIyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMiksIE1hdGguYWJzKGIyKSkgJiYgTWF0aC5hYnMoYTMgLSBiMykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTMpLCBNYXRoLmFicyhiMykpICYmIE1hdGguYWJzKGE0IC0gYjQpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE0KSwgTWF0aC5hYnMoYjQpKSAmJiBNYXRoLmFicyhhNSAtIGI1KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNSksIE1hdGguYWJzKGI1KSk7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0MmQubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDJkLnN1YnRyYWN0fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzdWIgPSBzdWJ0cmFjdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat2d.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat3.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat3.js ***! \*************************************************************/ /*! exports provided: create, fromMat4, clone, copy, fromValues, set, identity, transpose, invert, adjoint, determinant, multiply, translate, rotate, scale, fromTranslation, fromRotation, fromScaling, fromMat2d, fromQuat, normalFromMat4, projection, str, frob, add, subtract, multiplyScalar, multiplyScalarAndAdd, exactEquals, equals, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat4\", function() { return fromMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return transpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjoint\", function() { return adjoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat2d\", function() { return fromMat2d; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromQuat\", function() { return fromQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalFromMat4\", function() { return normalFromMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"projection\", function() { return projection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](9);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nfunction fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nfunction fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nfunction set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nfunction adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nfunction translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nfunction scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nfunction fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nfunction fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nfunction fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nfunction fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nfunction normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nfunction projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL21hdDMuanM/OWE5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QjtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCO0FBQ3R0QjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS9tYXQzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG4vKipcbiAqIDN4MyBNYXRyaXhcbiAqIEBtb2R1bGUgbWF0M1xuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpZGVudGl0eSBtYXQzXG4gKlxuICogQHJldHVybnMge21hdDN9IGEgbmV3IDN4MyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoOSk7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgb3V0WzFdID0gMDtcbiAgICBvdXRbMl0gPSAwO1xuICAgIG91dFszXSA9IDA7XG4gICAgb3V0WzVdID0gMDtcbiAgICBvdXRbNl0gPSAwO1xuICAgIG91dFs3XSA9IDA7XG4gIH1cblxuICBvdXRbMF0gPSAxO1xuICBvdXRbNF0gPSAxO1xuICBvdXRbOF0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3BpZXMgdGhlIHVwcGVyLWxlZnQgM3gzIHZhbHVlcyBpbnRvIHRoZSBnaXZlbiBtYXQzLlxuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgM3gzIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgICB0aGUgc291cmNlIDR4NCBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU1hdDQob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbNF07XG4gIG91dFs0XSA9IGFbNV07XG4gIG91dFs1XSA9IGFbNl07XG4gIG91dFs2XSA9IGFbOF07XG4gIG91dFs3XSA9IGFbOV07XG4gIG91dFs4XSA9IGFbMTBdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IG1hdDMgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSBtYXRyaXggdG8gY2xvbmVcbiAqIEByZXR1cm5zIHttYXQzfSBhIG5ldyAzeDMgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDkpO1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICBvdXRbNF0gPSBhWzRdO1xuICBvdXRbNV0gPSBhWzVdO1xuICBvdXRbNl0gPSBhWzZdO1xuICBvdXRbN10gPSBhWzddO1xuICBvdXRbOF0gPSBhWzhdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgbWF0MyB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IGFbNF07XG4gIG91dFs1XSA9IGFbNV07XG4gIG91dFs2XSA9IGFbNl07XG4gIG91dFs3XSA9IGFbN107XG4gIG91dFs4XSA9IGFbOF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBtYXQzIHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDAgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDEgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMDIgQ29tcG9uZW50IGluIGNvbHVtbiAwLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggMilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTAgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTEgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMTIgQ29tcG9uZW50IGluIGNvbHVtbiAxLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggNSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjAgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggNilcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjEgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMSBwb3NpdGlvbiAoaW5kZXggNylcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMjIgQ29tcG9uZW50IGluIGNvbHVtbiAyLCByb3cgMiBwb3NpdGlvbiAoaW5kZXggOClcbiAqIEByZXR1cm5zIHttYXQzfSBBIG5ldyBtYXQzXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21WYWx1ZXMobTAwLCBtMDEsIG0wMiwgbTEwLCBtMTEsIG0xMiwgbTIwLCBtMjEsIG0yMikge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoOSk7XG4gIG91dFswXSA9IG0wMDtcbiAgb3V0WzFdID0gbTAxO1xuICBvdXRbMl0gPSBtMDI7XG4gIG91dFszXSA9IG0xMDtcbiAgb3V0WzRdID0gbTExO1xuICBvdXRbNV0gPSBtMTI7XG4gIG91dFs2XSA9IG0yMDtcbiAgb3V0WzddID0gbTIxO1xuICBvdXRbOF0gPSBtMjI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIG1hdDMgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDEgcG9zaXRpb24gKGluZGV4IDEpXG4gKiBAcGFyYW0ge051bWJlcn0gbTAyIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDIgcG9zaXRpb24gKGluZGV4IDIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEwIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDAgcG9zaXRpb24gKGluZGV4IDMpXG4gKiBAcGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDQpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEyIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDIgcG9zaXRpb24gKGluZGV4IDUpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIwIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDAgcG9zaXRpb24gKGluZGV4IDYpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIxIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDEgcG9zaXRpb24gKGluZGV4IDcpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIyIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDIgcG9zaXRpb24gKGluZGV4IDgpXG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChvdXQsIG0wMCwgbTAxLCBtMDIsIG0xMCwgbTExLCBtMTIsIG0yMCwgbTIxLCBtMjIpIHtcbiAgb3V0WzBdID0gbTAwO1xuICBvdXRbMV0gPSBtMDE7XG4gIG91dFsyXSA9IG0wMjtcbiAgb3V0WzNdID0gbTEwO1xuICBvdXRbNF0gPSBtMTE7XG4gIG91dFs1XSA9IG0xMjtcbiAgb3V0WzZdID0gbTIwO1xuICBvdXRbN10gPSBtMjE7XG4gIG91dFs4XSA9IG0yMjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2V0IGEgbWF0MyB0byB0aGUgaWRlbnRpdHkgbWF0cml4XG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkob3V0KSB7XG4gIG91dFswXSA9IDE7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IDE7XG4gIG91dFs1XSA9IDA7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zcG9zZSB0aGUgdmFsdWVzIG9mIGEgbWF0M1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2Uob3V0LCBhKSB7XG4gIC8vIElmIHdlIGFyZSB0cmFuc3Bvc2luZyBvdXJzZWx2ZXMgd2UgY2FuIHNraXAgYSBmZXcgc3RlcHMgYnV0IGhhdmUgdG8gY2FjaGUgc29tZSB2YWx1ZXNcbiAgaWYgKG91dCA9PT0gYSkge1xuICAgIHZhciBhMDEgPSBhWzFdLFxuICAgICAgICBhMDIgPSBhWzJdLFxuICAgICAgICBhMTIgPSBhWzVdO1xuICAgIG91dFsxXSA9IGFbM107XG4gICAgb3V0WzJdID0gYVs2XTtcbiAgICBvdXRbM10gPSBhMDE7XG4gICAgb3V0WzVdID0gYVs3XTtcbiAgICBvdXRbNl0gPSBhMDI7XG4gICAgb3V0WzddID0gYTEyO1xuICB9IGVsc2Uge1xuICAgIG91dFswXSA9IGFbMF07XG4gICAgb3V0WzFdID0gYVszXTtcbiAgICBvdXRbMl0gPSBhWzZdO1xuICAgIG91dFszXSA9IGFbMV07XG4gICAgb3V0WzRdID0gYVs0XTtcbiAgICBvdXRbNV0gPSBhWzddO1xuICAgIG91dFs2XSA9IGFbMl07XG4gICAgb3V0WzddID0gYVs1XTtcbiAgICBvdXRbOF0gPSBhWzhdO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogSW52ZXJ0cyBhIG1hdDNcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdO1xuICB2YXIgYTEwID0gYVszXSxcbiAgICAgIGExMSA9IGFbNF0sXG4gICAgICBhMTIgPSBhWzVdO1xuICB2YXIgYTIwID0gYVs2XSxcbiAgICAgIGEyMSA9IGFbN10sXG4gICAgICBhMjIgPSBhWzhdO1xuICB2YXIgYjAxID0gYTIyICogYTExIC0gYTEyICogYTIxO1xuICB2YXIgYjExID0gLWEyMiAqIGExMCArIGExMiAqIGEyMDtcbiAgdmFyIGIyMSA9IGEyMSAqIGExMCAtIGExMSAqIGEyMDsgLy8gQ2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudFxuXG4gIHZhciBkZXQgPSBhMDAgKiBiMDEgKyBhMDEgKiBiMTEgKyBhMDIgKiBiMjE7XG5cbiAgaWYgKCFkZXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGRldCA9IDEuMCAvIGRldDtcbiAgb3V0WzBdID0gYjAxICogZGV0O1xuICBvdXRbMV0gPSAoLWEyMiAqIGEwMSArIGEwMiAqIGEyMSkgKiBkZXQ7XG4gIG91dFsyXSA9IChhMTIgKiBhMDEgLSBhMDIgKiBhMTEpICogZGV0O1xuICBvdXRbM10gPSBiMTEgKiBkZXQ7XG4gIG91dFs0XSA9IChhMjIgKiBhMDAgLSBhMDIgKiBhMjApICogZGV0O1xuICBvdXRbNV0gPSAoLWExMiAqIGEwMCArIGEwMiAqIGExMCkgKiBkZXQ7XG4gIG91dFs2XSA9IGIyMSAqIGRldDtcbiAgb3V0WzddID0gKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApICogZGV0O1xuICBvdXRbOF0gPSAoYTExICogYTAwIC0gYTAxICogYTEwKSAqIGRldDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgYWRqdWdhdGUgb2YgYSBtYXQzXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkam9pbnQob3V0LCBhKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl07XG4gIHZhciBhMTAgPSBhWzNdLFxuICAgICAgYTExID0gYVs0XSxcbiAgICAgIGExMiA9IGFbNV07XG4gIHZhciBhMjAgPSBhWzZdLFxuICAgICAgYTIxID0gYVs3XSxcbiAgICAgIGEyMiA9IGFbOF07XG4gIG91dFswXSA9IGExMSAqIGEyMiAtIGExMiAqIGEyMTtcbiAgb3V0WzFdID0gYTAyICogYTIxIC0gYTAxICogYTIyO1xuICBvdXRbMl0gPSBhMDEgKiBhMTIgLSBhMDIgKiBhMTE7XG4gIG91dFszXSA9IGExMiAqIGEyMCAtIGExMCAqIGEyMjtcbiAgb3V0WzRdID0gYTAwICogYTIyIC0gYTAyICogYTIwO1xuICBvdXRbNV0gPSBhMDIgKiBhMTAgLSBhMDAgKiBhMTI7XG4gIG91dFs2XSA9IGExMCAqIGEyMSAtIGExMSAqIGEyMDtcbiAgb3V0WzddID0gYTAxICogYTIwIC0gYTAwICogYTIxO1xuICBvdXRbOF0gPSBhMDAgKiBhMTEgLSBhMDEgKiBhMTA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRldGVybWluYW50IG9mIGEgbWF0M1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkZXRlcm1pbmFudCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluYW50KGEpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXTtcbiAgdmFyIGExMCA9IGFbM10sXG4gICAgICBhMTEgPSBhWzRdLFxuICAgICAgYTEyID0gYVs1XTtcbiAgdmFyIGEyMCA9IGFbNl0sXG4gICAgICBhMjEgPSBhWzddLFxuICAgICAgYTIyID0gYVs4XTtcbiAgcmV0dXJuIGEwMCAqIChhMjIgKiBhMTEgLSBhMTIgKiBhMjEpICsgYTAxICogKC1hMjIgKiBhMTAgKyBhMTIgKiBhMjApICsgYTAyICogKGEyMSAqIGExMCAtIGExMSAqIGEyMCk7XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIG1hdDMnc1xuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdO1xuICB2YXIgYTEwID0gYVszXSxcbiAgICAgIGExMSA9IGFbNF0sXG4gICAgICBhMTIgPSBhWzVdO1xuICB2YXIgYTIwID0gYVs2XSxcbiAgICAgIGEyMSA9IGFbN10sXG4gICAgICBhMjIgPSBhWzhdO1xuICB2YXIgYjAwID0gYlswXSxcbiAgICAgIGIwMSA9IGJbMV0sXG4gICAgICBiMDIgPSBiWzJdO1xuICB2YXIgYjEwID0gYlszXSxcbiAgICAgIGIxMSA9IGJbNF0sXG4gICAgICBiMTIgPSBiWzVdO1xuICB2YXIgYjIwID0gYls2XSxcbiAgICAgIGIyMSA9IGJbN10sXG4gICAgICBiMjIgPSBiWzhdO1xuICBvdXRbMF0gPSBiMDAgKiBhMDAgKyBiMDEgKiBhMTAgKyBiMDIgKiBhMjA7XG4gIG91dFsxXSA9IGIwMCAqIGEwMSArIGIwMSAqIGExMSArIGIwMiAqIGEyMTtcbiAgb3V0WzJdID0gYjAwICogYTAyICsgYjAxICogYTEyICsgYjAyICogYTIyO1xuICBvdXRbM10gPSBiMTAgKiBhMDAgKyBiMTEgKiBhMTAgKyBiMTIgKiBhMjA7XG4gIG91dFs0XSA9IGIxMCAqIGEwMSArIGIxMSAqIGExMSArIGIxMiAqIGEyMTtcbiAgb3V0WzVdID0gYjEwICogYTAyICsgYjExICogYTEyICsgYjEyICogYTIyO1xuICBvdXRbNl0gPSBiMjAgKiBhMDAgKyBiMjEgKiBhMTAgKyBiMjIgKiBhMjA7XG4gIG91dFs3XSA9IGIyMCAqIGEwMSArIGIyMSAqIGExMSArIGIyMiAqIGEyMTtcbiAgb3V0WzhdID0gYjIwICogYTAyICsgYjIxICogYTEyICsgYjIyICogYTIyO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2xhdGUgYSBtYXQzIGJ5IHRoZSBnaXZlbiB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIG1hdHJpeCB0byB0cmFuc2xhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSB2IHZlY3RvciB0byB0cmFuc2xhdGUgYnlcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKG91dCwgYSwgdikge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdLFxuICAgICAgYTEwID0gYVszXSxcbiAgICAgIGExMSA9IGFbNF0sXG4gICAgICBhMTIgPSBhWzVdLFxuICAgICAgYTIwID0gYVs2XSxcbiAgICAgIGEyMSA9IGFbN10sXG4gICAgICBhMjIgPSBhWzhdLFxuICAgICAgeCA9IHZbMF0sXG4gICAgICB5ID0gdlsxXTtcbiAgb3V0WzBdID0gYTAwO1xuICBvdXRbMV0gPSBhMDE7XG4gIG91dFsyXSA9IGEwMjtcbiAgb3V0WzNdID0gYTEwO1xuICBvdXRbNF0gPSBhMTE7XG4gIG91dFs1XSA9IGExMjtcbiAgb3V0WzZdID0geCAqIGEwMCArIHkgKiBhMTAgKyBhMjA7XG4gIG91dFs3XSA9IHggKiBhMDEgKyB5ICogYTExICsgYTIxO1xuICBvdXRbOF0gPSB4ICogYTAyICsgeSAqIGExMiArIGEyMjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIG1hdDMgYnkgdGhlIGdpdmVuIGFuZ2xlXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBtYXRyaXggdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGUob3V0LCBhLCByYWQpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXSxcbiAgICAgIGExMCA9IGFbM10sXG4gICAgICBhMTEgPSBhWzRdLFxuICAgICAgYTEyID0gYVs1XSxcbiAgICAgIGEyMCA9IGFbNl0sXG4gICAgICBhMjEgPSBhWzddLFxuICAgICAgYTIyID0gYVs4XSxcbiAgICAgIHMgPSBNYXRoLnNpbihyYWQpLFxuICAgICAgYyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGMgKiBhMDAgKyBzICogYTEwO1xuICBvdXRbMV0gPSBjICogYTAxICsgcyAqIGExMTtcbiAgb3V0WzJdID0gYyAqIGEwMiArIHMgKiBhMTI7XG4gIG91dFszXSA9IGMgKiBhMTAgLSBzICogYTAwO1xuICBvdXRbNF0gPSBjICogYTExIC0gcyAqIGEwMTtcbiAgb3V0WzVdID0gYyAqIGExMiAtIHMgKiBhMDI7XG4gIG91dFs2XSA9IGEyMDtcbiAgb3V0WzddID0gYTIxO1xuICBvdXRbOF0gPSBhMjI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNjYWxlcyB0aGUgbWF0MyBieSB0aGUgZGltZW5zaW9ucyBpbiB0aGUgZ2l2ZW4gdmVjMlxuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgdGhlIHZlYzIgdG8gc2NhbGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDN9IG91dFxuICoqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCB2KSB7XG4gIHZhciB4ID0gdlswXSxcbiAgICAgIHkgPSB2WzFdO1xuICBvdXRbMF0gPSB4ICogYVswXTtcbiAgb3V0WzFdID0geCAqIGFbMV07XG4gIG91dFsyXSA9IHggKiBhWzJdO1xuICBvdXRbM10gPSB5ICogYVszXTtcbiAgb3V0WzRdID0geSAqIGFbNF07XG4gIG91dFs1XSA9IHkgKiBhWzVdO1xuICBvdXRbNl0gPSBhWzZdO1xuICBvdXRbN10gPSBhWzddO1xuICBvdXRbOF0gPSBhWzhdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3IgdHJhbnNsYXRpb25cbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQzLmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDMudHJhbnNsYXRlKGRlc3QsIGRlc3QsIHZlYyk7XG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgbWF0MyByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IHYgVHJhbnNsYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21UcmFuc2xhdGlvbihvdXQsIHYpIHtcbiAgb3V0WzBdID0gMTtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMTtcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gdlswXTtcbiAgb3V0WzddID0gdlsxXTtcbiAgb3V0WzhdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgZ2l2ZW4gYW5nbGVcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQzLmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDMucm90YXRlKGRlc3QsIGRlc3QsIHJhZCk7XG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgbWF0MyByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJvdGF0aW9uKG91dCwgcmFkKSB7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKSxcbiAgICAgIGMgPSBNYXRoLmNvcyhyYWQpO1xuICBvdXRbMF0gPSBjO1xuICBvdXRbMV0gPSBzO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAtcztcbiAgb3V0WzRdID0gYztcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgdmVjdG9yIHNjYWxpbmdcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQzLmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDMuc2NhbGUoZGVzdCwgZGVzdCwgdmVjKTtcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCBtYXQzIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gdiBTY2FsaW5nIHZlY3RvclxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU2NhbGluZyhvdXQsIHYpIHtcbiAgb3V0WzBdID0gdlswXTtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gdlsxXTtcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgZnJvbSBhIG1hdDJkIGludG8gYSBtYXQzXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQyZH0gYSB0aGUgbWF0cml4IHRvIGNvcHlcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21NYXQyZChvdXQsIGEpIHtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gYVsyXTtcbiAgb3V0WzRdID0gYVszXTtcbiAgb3V0WzVdID0gMDtcbiAgb3V0WzZdID0gYVs0XTtcbiAgb3V0WzddID0gYVs1XTtcbiAgb3V0WzhdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyBhIDN4MyBtYXRyaXggZnJvbSB0aGUgZ2l2ZW4gcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IG1hdDMgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBxIFF1YXRlcm5pb24gdG8gY3JlYXRlIG1hdHJpeCBmcm9tXG4gKlxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUXVhdChvdXQsIHEpIHtcbiAgdmFyIHggPSBxWzBdLFxuICAgICAgeSA9IHFbMV0sXG4gICAgICB6ID0gcVsyXSxcbiAgICAgIHcgPSBxWzNdO1xuICB2YXIgeDIgPSB4ICsgeDtcbiAgdmFyIHkyID0geSArIHk7XG4gIHZhciB6MiA9IHogKyB6O1xuICB2YXIgeHggPSB4ICogeDI7XG4gIHZhciB5eCA9IHkgKiB4MjtcbiAgdmFyIHl5ID0geSAqIHkyO1xuICB2YXIgenggPSB6ICogeDI7XG4gIHZhciB6eSA9IHogKiB5MjtcbiAgdmFyIHp6ID0geiAqIHoyO1xuICB2YXIgd3ggPSB3ICogeDI7XG4gIHZhciB3eSA9IHcgKiB5MjtcbiAgdmFyIHd6ID0gdyAqIHoyO1xuICBvdXRbMF0gPSAxIC0geXkgLSB6ejtcbiAgb3V0WzNdID0geXggLSB3ejtcbiAgb3V0WzZdID0genggKyB3eTtcbiAgb3V0WzFdID0geXggKyB3ejtcbiAgb3V0WzRdID0gMSAtIHh4IC0geno7XG4gIG91dFs3XSA9IHp5IC0gd3g7XG4gIG91dFsyXSA9IHp4IC0gd3k7XG4gIG91dFs1XSA9IHp5ICsgd3g7XG4gIG91dFs4XSA9IDEgLSB4eCAtIHl5O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIGEgM3gzIG5vcm1hbCBtYXRyaXggKHRyYW5zcG9zZSBpbnZlcnNlKSBmcm9tIHRoZSA0eDQgbWF0cml4XG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgbWF0MyByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgTWF0NCB0byBkZXJpdmUgdGhlIG5vcm1hbCBtYXRyaXggZnJvbVxuICpcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsRnJvbU1hdDQob3V0LCBhKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl0sXG4gICAgICBhMDMgPSBhWzNdO1xuICB2YXIgYTEwID0gYVs0XSxcbiAgICAgIGExMSA9IGFbNV0sXG4gICAgICBhMTIgPSBhWzZdLFxuICAgICAgYTEzID0gYVs3XTtcbiAgdmFyIGEyMCA9IGFbOF0sXG4gICAgICBhMjEgPSBhWzldLFxuICAgICAgYTIyID0gYVsxMF0sXG4gICAgICBhMjMgPSBhWzExXTtcbiAgdmFyIGEzMCA9IGFbMTJdLFxuICAgICAgYTMxID0gYVsxM10sXG4gICAgICBhMzIgPSBhWzE0XSxcbiAgICAgIGEzMyA9IGFbMTVdO1xuICB2YXIgYjAwID0gYTAwICogYTExIC0gYTAxICogYTEwO1xuICB2YXIgYjAxID0gYTAwICogYTEyIC0gYTAyICogYTEwO1xuICB2YXIgYjAyID0gYTAwICogYTEzIC0gYTAzICogYTEwO1xuICB2YXIgYjAzID0gYTAxICogYTEyIC0gYTAyICogYTExO1xuICB2YXIgYjA0ID0gYTAxICogYTEzIC0gYTAzICogYTExO1xuICB2YXIgYjA1ID0gYTAyICogYTEzIC0gYTAzICogYTEyO1xuICB2YXIgYjA2ID0gYTIwICogYTMxIC0gYTIxICogYTMwO1xuICB2YXIgYjA3ID0gYTIwICogYTMyIC0gYTIyICogYTMwO1xuICB2YXIgYjA4ID0gYTIwICogYTMzIC0gYTIzICogYTMwO1xuICB2YXIgYjA5ID0gYTIxICogYTMyIC0gYTIyICogYTMxO1xuICB2YXIgYjEwID0gYTIxICogYTMzIC0gYTIzICogYTMxO1xuICB2YXIgYjExID0gYTIyICogYTMzIC0gYTIzICogYTMyOyAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50XG5cbiAgdmFyIGRldCA9IGIwMCAqIGIxMSAtIGIwMSAqIGIxMCArIGIwMiAqIGIwOSArIGIwMyAqIGIwOCAtIGIwNCAqIGIwNyArIGIwNSAqIGIwNjtcblxuICBpZiAoIWRldCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZGV0ID0gMS4wIC8gZGV0O1xuICBvdXRbMF0gPSAoYTExICogYjExIC0gYTEyICogYjEwICsgYTEzICogYjA5KSAqIGRldDtcbiAgb3V0WzFdID0gKGExMiAqIGIwOCAtIGExMCAqIGIxMSAtIGExMyAqIGIwNykgKiBkZXQ7XG4gIG91dFsyXSA9IChhMTAgKiBiMTAgLSBhMTEgKiBiMDggKyBhMTMgKiBiMDYpICogZGV0O1xuICBvdXRbM10gPSAoYTAyICogYjEwIC0gYTAxICogYjExIC0gYTAzICogYjA5KSAqIGRldDtcbiAgb3V0WzRdID0gKGEwMCAqIGIxMSAtIGEwMiAqIGIwOCArIGEwMyAqIGIwNykgKiBkZXQ7XG4gIG91dFs1XSA9IChhMDEgKiBiMDggLSBhMDAgKiBiMTAgLSBhMDMgKiBiMDYpICogZGV0O1xuICBvdXRbNl0gPSAoYTMxICogYjA1IC0gYTMyICogYjA0ICsgYTMzICogYjAzKSAqIGRldDtcbiAgb3V0WzddID0gKGEzMiAqIGIwMiAtIGEzMCAqIGIwNSAtIGEzMyAqIGIwMSkgKiBkZXQ7XG4gIG91dFs4XSA9IChhMzAgKiBiMDQgLSBhMzEgKiBiMDIgKyBhMzMgKiBiMDApICogZGV0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSAyRCBwcm9qZWN0aW9uIG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBib3VuZHNcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCBtYXQzIGZydXN0dW0gbWF0cml4IHdpbGwgYmUgd3JpdHRlbiBpbnRvXG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGggV2lkdGggb2YgeW91ciBnbCBjb250ZXh0XG4gKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IEhlaWdodCBvZiBnbCBjb250ZXh0XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3Rpb24ob3V0LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIG91dFswXSA9IDIgLyB3aWR0aDtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gLTIgLyBoZWlnaHQ7XG4gIG91dFs1XSA9IDA7XG4gIG91dFs2XSA9IC0xO1xuICBvdXRbN10gPSAxO1xuICBvdXRbOF0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWF0M1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIG1hdHJpeCB0byByZXByZXNlbnQgYXMgYSBzdHJpbmdcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihhKSB7XG4gIHJldHVybiBcIm1hdDMoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIiwgXCIgKyBhWzNdICsgXCIsIFwiICsgYVs0XSArIFwiLCBcIiArIGFbNV0gKyBcIiwgXCIgKyBhWzZdICsgXCIsIFwiICsgYVs3XSArIFwiLCBcIiArIGFbOF0gKyBcIilcIjtcbn1cbi8qKlxuICogUmV0dXJucyBGcm9iZW5pdXMgbm9ybSBvZiBhIG1hdDNcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgbWF0cml4IHRvIGNhbGN1bGF0ZSBGcm9iZW5pdXMgbm9ybSBvZlxuICogQHJldHVybnMge051bWJlcn0gRnJvYmVuaXVzIG5vcm1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvYihhKSB7XG4gIHJldHVybiBNYXRoLmh5cG90KGFbMF0sIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0sIGFbNl0sIGFbN10sIGFbOF0pO1xufVxuLyoqXG4gKiBBZGRzIHR3byBtYXQzJ3NcbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIG91dFszXSA9IGFbM10gKyBiWzNdO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XTtcbiAgb3V0WzVdID0gYVs1XSArIGJbNV07XG4gIG91dFs2XSA9IGFbNl0gKyBiWzZdO1xuICBvdXRbN10gPSBhWzddICsgYls3XTtcbiAgb3V0WzhdID0gYVs4XSArIGJbOF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFN1YnRyYWN0cyBtYXRyaXggYiBmcm9tIG1hdHJpeCBhXG4gKlxuICogQHBhcmFtIHttYXQzfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3Qob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLSBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC0gYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAtIGJbMl07XG4gIG91dFszXSA9IGFbM10gLSBiWzNdO1xuICBvdXRbNF0gPSBhWzRdIC0gYls0XTtcbiAgb3V0WzVdID0gYVs1XSAtIGJbNV07XG4gIG91dFs2XSA9IGFbNl0gLSBiWzZdO1xuICBvdXRbN10gPSBhWzddIC0gYls3XTtcbiAgb3V0WzhdID0gYVs4XSAtIGJbOF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE11bHRpcGx5IGVhY2ggZWxlbWVudCBvZiB0aGUgbWF0cml4IGJ5IGEgc2NhbGFyLlxuICpcbiAqIEBwYXJhbSB7bWF0M30gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYSB0aGUgbWF0cml4IHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIG1hdHJpeCdzIGVsZW1lbnRzIGJ5XG4gKiBAcmV0dXJucyB7bWF0M30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5U2NhbGFyKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICogYjtcbiAgb3V0WzFdID0gYVsxXSAqIGI7XG4gIG91dFsyXSA9IGFbMl0gKiBiO1xuICBvdXRbM10gPSBhWzNdICogYjtcbiAgb3V0WzRdID0gYVs0XSAqIGI7XG4gIG91dFs1XSA9IGFbNV0gKiBiO1xuICBvdXRbNl0gPSBhWzZdICogYjtcbiAgb3V0WzddID0gYVs3XSAqIGI7XG4gIG91dFs4XSA9IGFbOF0gKiBiO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byBtYXQzJ3MgYWZ0ZXIgbXVsdGlwbHlpbmcgZWFjaCBlbGVtZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBieSBhIHNjYWxhciB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge21hdDN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYidzIGVsZW1lbnRzIGJ5IGJlZm9yZSBhZGRpbmdcbiAqIEByZXR1cm5zIHttYXQzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXJBbmRBZGQob3V0LCBhLCBiLCBzY2FsZSkge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXSAqIHNjYWxlO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXSAqIHNjYWxlO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXSAqIHNjYWxlO1xuICBvdXRbM10gPSBhWzNdICsgYlszXSAqIHNjYWxlO1xuICBvdXRbNF0gPSBhWzRdICsgYls0XSAqIHNjYWxlO1xuICBvdXRbNV0gPSBhWzVdICsgYls1XSAqIHNjYWxlO1xuICBvdXRbNl0gPSBhWzZdICsgYls2XSAqIHNjYWxlO1xuICBvdXRbN10gPSBhWzddICsgYls3XSAqIHNjYWxlO1xuICBvdXRbOF0gPSBhWzhdICsgYls4XSAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBtYXRyaWNlcyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IGEgVGhlIGZpcnN0IG1hdHJpeC5cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBiIFRoZSBzZWNvbmQgbWF0cml4LlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIG1hdHJpY2VzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdICYmIGFbNF0gPT09IGJbNF0gJiYgYVs1XSA9PT0gYls1XSAmJiBhWzZdID09PSBiWzZdICYmIGFbN10gPT09IGJbN10gJiYgYVs4XSA9PT0gYls4XTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0M30gYiBUaGUgc2Vjb25kIG1hdHJpeC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBtYXRyaWNlcyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXSxcbiAgICAgIGE0ID0gYVs0XSxcbiAgICAgIGE1ID0gYVs1XSxcbiAgICAgIGE2ID0gYVs2XSxcbiAgICAgIGE3ID0gYVs3XSxcbiAgICAgIGE4ID0gYVs4XTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXSxcbiAgICAgIGIzID0gYlszXSxcbiAgICAgIGI0ID0gYls0XSxcbiAgICAgIGI1ID0gYls1XSxcbiAgICAgIGI2ID0gYls2XSxcbiAgICAgIGI3ID0gYls3XSxcbiAgICAgIGI4ID0gYls4XTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYmIE1hdGguYWJzKGEzIC0gYjMpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKSAmJiBNYXRoLmFicyhhNCAtIGI0KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNCksIE1hdGguYWJzKGI0KSkgJiYgTWF0aC5hYnMoYTUgLSBiNSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTUpLCBNYXRoLmFicyhiNSkpICYmIE1hdGguYWJzKGE2IC0gYjYpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE2KSwgTWF0aC5hYnMoYjYpKSAmJiBNYXRoLmFicyhhNyAtIGI3KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNyksIE1hdGguYWJzKGI3KSkgJiYgTWF0aC5hYnMoYTggLSBiOCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTgpLCBNYXRoLmFicyhiOCkpO1xufVxuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDMubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIG1hdDMuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat3.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat4.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat4.js ***! \*************************************************************/ /*! exports provided: create, clone, copy, fromValues, set, identity, transpose, invert, adjoint, determinant, multiply, translate, scale, rotate, rotateX, rotateY, rotateZ, fromTranslation, fromScaling, fromRotation, fromXRotation, fromYRotation, fromZRotation, fromRotationTranslation, fromQuat2, getTranslation, getScaling, getRotation, fromRotationTranslationScale, fromRotationTranslationScaleOrigin, fromQuat, frustum, perspectiveNO, perspective, perspectiveZO, perspectiveFromFieldOfView, orthoNO, ortho, orthoZO, lookAt, targetTo, str, frob, add, subtract, multiplyScalar, multiplyScalarAndAdd, exactEquals, equals, mul, sub */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return transpose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjoint\", function() { return adjoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromScaling\", function() { return fromScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromXRotation\", function() { return fromXRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromYRotation\", function() { return fromYRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromZRotation\", function() { return fromZRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslation\", function() { return fromRotationTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromQuat2\", function() { return fromQuat2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTranslation\", function() { return getTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScaling\", function() { return getScaling; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRotation\", function() { return getRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslationScale\", function() { return fromRotationTranslationScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslationScaleOrigin\", function() { return fromRotationTranslationScaleOrigin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromQuat\", function() { return fromQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frustum\", function() { return frustum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspectiveNO\", function() { return perspectiveNO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspective\", function() { return perspective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspectiveZO\", function() { return perspectiveZO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"perspectiveFromFieldOfView\", function() { return perspectiveFromFieldOfView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orthoNO\", function() { return orthoNO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ortho\", function() { return ortho; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orthoZO\", function() { return orthoZO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lookAt\", function() { return lookAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"targetTo\", function() { return targetTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"frob\", function() { return frob; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalar\", function() { return multiplyScalar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyScalarAndAdd\", function() { return multiplyScalarAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 4x4 Matrix
Format: column-major, when typed out it looks like row-major
The matrices are being post multiplied.\n * @module mat4\n */\n\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](16);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n }\n\n out[0] = 1;\n out[5] = 1;\n out[10] = 1;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\n\nfunction fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](16);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\n\nfunction set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m03;\n out[4] = m10;\n out[5] = m11;\n out[6] = m12;\n out[7] = m13;\n out[8] = m20;\n out[9] = m21;\n out[10] = m22;\n out[11] = m23;\n out[12] = m30;\n out[13] = m31;\n out[14] = m32;\n out[15] = m33;\n return out;\n}\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a12 = a[6],\n a13 = a[7];\n var a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the source matrix\n * @returns {mat4} out\n */\n\nfunction adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n}\n/**\n * Calculates the determinant of a mat4\n *\n * @param {ReadonlyMat4} a the source matrix\n * @returns {Number} determinant of a\n */\n\nfunction determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15]; // Cache only the current line of the second matrix\n\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n}\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {mat4} out\n */\n\nfunction translate(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n\n return out;\n}\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {ReadonlyVec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\n\nfunction scale(out, a, v) {\n var x = v[0],\n y = v[1],\n z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n}\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction rotate(out, a, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n var a00, a01, a02, a03;\n var a10, a11, a12, a13;\n var a20, a21, a22, a23;\n var b00, b01, b02;\n var b10, b11, b12;\n var b20, b21, b22;\n\n if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11]; // Construct the elements of the rotation matrix\n\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateX(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateY(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a20 = a[8];\n var a21 = a[9];\n var a22 = a[10];\n var a23 = a[11];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged rows\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n}\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction rotateZ(out, a, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[4];\n var a11 = a[5];\n var a12 = a[6];\n var a13 = a[7];\n\n if (a !== out) {\n // If the source and destination differ, copy the unchanged last row\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n } // Perform axis-specific matrix multiplication\n\n\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyVec3} v Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @returns {mat4} out\n */\n\nfunction fromRotation(out, rad, axis) {\n var x = axis[0],\n y = axis[1],\n z = axis[2];\n var len = Math.hypot(x, y, z);\n var s, c, t;\n\n if (len < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return null;\n }\n\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c; // Perform rotation-specific matrix multiplication\n\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromXRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromYRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\n\nfunction fromZRotation(out, rad) {\n var s = Math.sin(rad);\n var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslation(out, q, v) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\n\nfunction fromQuat2(out, a) {\n var translation = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n\n if (magnitude > 0) {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n } else {\n translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n }\n\n fromRotationTranslation(out, a, translation);\n return out;\n}\n/**\n * Returns the translation vector component of a transformation\n * matrix. If a matrix is built with fromRotationTranslation,\n * the returned vector will be the same as the translation vector\n * originally supplied.\n * @param {vec3} out Vector to receive translation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getTranslation(out, mat) {\n out[0] = mat[12];\n out[1] = mat[13];\n out[2] = mat[14];\n return out;\n}\n/**\n * Returns the scaling factor component of a transformation\n * matrix. If a matrix is built with fromRotationTranslationScale\n * with a normalized Quaternion paramter, the returned vector will be\n * the same as the scaling vector\n * originally supplied.\n * @param {vec3} out Vector to receive scaling factor component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\n\nfunction getScaling(out, mat) {\n var m11 = mat[0];\n var m12 = mat[1];\n var m13 = mat[2];\n var m21 = mat[4];\n var m22 = mat[5];\n var m23 = mat[6];\n var m31 = mat[8];\n var m32 = mat[9];\n var m33 = mat[10];\n out[0] = Math.hypot(m11, m12, m13);\n out[1] = Math.hypot(m21, m22, m23);\n out[2] = Math.hypot(m31, m32, m33);\n return out;\n}\n/**\n * Returns a quaternion representing the rotational component\n * of a transformation matrix. If a matrix is built with\n * fromRotationTranslation, the returned quaternion will be the\n * same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {ReadonlyMat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\n\nfunction getRotation(out, mat) {\n var scaling = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n getScaling(scaling, mat);\n var is1 = 1 / scaling[0];\n var is2 = 1 / scaling[1];\n var is3 = 1 / scaling[2];\n var sm11 = mat[0] * is1;\n var sm12 = mat[1] * is2;\n var sm13 = mat[2] * is3;\n var sm21 = mat[4] * is1;\n var sm22 = mat[5] * is2;\n var sm23 = mat[6] * is3;\n var sm31 = mat[8] * is1;\n var sm32 = mat[9] * is2;\n var sm33 = mat[10] * is3;\n var trace = sm11 + sm22 + sm33;\n var S = 0;\n\n if (trace > 0) {\n S = Math.sqrt(trace + 1.0) * 2;\n out[3] = 0.25 * S;\n out[0] = (sm23 - sm32) / S;\n out[1] = (sm31 - sm13) / S;\n out[2] = (sm12 - sm21) / S;\n } else if (sm11 > sm22 && sm11 > sm33) {\n S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n out[3] = (sm23 - sm32) / S;\n out[0] = 0.25 * S;\n out[1] = (sm12 + sm21) / S;\n out[2] = (sm31 + sm13) / S;\n } else if (sm22 > sm33) {\n S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n out[3] = (sm31 - sm13) / S;\n out[0] = (sm12 + sm21) / S;\n out[1] = 0.25 * S;\n out[2] = (sm23 + sm32) / S;\n } else {\n S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n out[3] = (sm12 - sm21) / S;\n out[0] = (sm31 + sm13) / S;\n out[1] = (sm23 + sm32) / S;\n out[2] = 0.25 * S;\n }\n\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScale(out, q, v, s) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n out[0] = (1 - (yy + zz)) * sx;\n out[1] = (xy + wz) * sx;\n out[2] = (xz - wy) * sx;\n out[3] = 0;\n out[4] = (xy - wz) * sy;\n out[5] = (1 - (xx + zz)) * sy;\n out[6] = (yz + wx) * sy;\n out[7] = 0;\n out[8] = (xz + wy) * sz;\n out[9] = (yz - wx) * sz;\n out[10] = (1 - (xx + yy)) * sz;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n * mat4.identity(dest);\n * mat4.translate(dest, vec);\n * mat4.translate(dest, origin);\n * let quatMat = mat4.create();\n * quat4.toMat4(quat, quatMat);\n * mat4.multiply(dest, quatMat);\n * mat4.scale(dest, scale)\n * mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {ReadonlyVec3} v Translation vector\n * @param {ReadonlyVec3} s Scaling vector\n * @param {ReadonlyVec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\n\nfunction fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n // Quaternion math\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = s[0];\n var sy = s[1];\n var sz = s[2];\n var ox = o[0];\n var oy = o[1];\n var oz = o[2];\n var out0 = (1 - (yy + zz)) * sx;\n var out1 = (xy + wz) * sx;\n var out2 = (xz - wy) * sx;\n var out4 = (xy - wz) * sy;\n var out5 = (1 - (xx + zz)) * sy;\n var out6 = (yz + wx) * sy;\n var out8 = (xz + wy) * sz;\n var out9 = (yz - wx) * sz;\n var out10 = (1 - (xx + yy)) * sz;\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = 0;\n out[4] = out4;\n out[5] = out5;\n out[6] = out6;\n out[7] = 0;\n out[8] = out8;\n out[9] = out9;\n out[10] = out10;\n out[11] = 0;\n out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n out[15] = 1;\n return out;\n}\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\n\nfunction fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left);\n var tb = 1 / (top - bottom);\n var nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveNO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = (far + near) * nf;\n out[14] = 2 * far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -2 * near;\n }\n\n return out;\n}\n/**\n * Alias for {@link mat4.perspectiveNO}\n * @function\n */\n\nvar perspective = perspectiveNO;\n/**\n * Generates a perspective projection matrix suitable for WebGPU with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\n\nfunction perspectiveZO(out, fovy, aspect, near, far) {\n var f = 1.0 / Math.tan(fovy / 2),\n nf;\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[15] = 0;\n\n if (far != null && far !== Infinity) {\n nf = 1 / (near - far);\n out[10] = far * nf;\n out[14] = far * near * nf;\n } else {\n out[10] = -1;\n out[14] = -near;\n }\n\n return out;\n}\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n var xScale = 2.0 / (leftTan + rightTan);\n var yScale = 2.0 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n out[4] = 0.0;\n out[5] = yScale;\n out[6] = 0.0;\n out[7] = 0.0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1.0;\n out[12] = 0.0;\n out[13] = 0.0;\n out[14] = far * near / (near - far);\n out[15] = 0.0;\n return out;\n}\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [-1, 1],\n * which matches WebGL/OpenGL's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoNO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Alias for {@link mat4.orthoNO}\n * @function\n */\n\nvar ortho = orthoNO;\n/**\n * Generates a orthogonal projection matrix with the given bounds.\n * The near/far clip planes correspond to a normalized device coordinate Z range of [0, 1],\n * which matches WebGPU/Vulkan/DirectX/Metal's clip volume.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\n\nfunction orthoZO(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = near * nf;\n out[15] = 1;\n return out;\n}\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n var eyex = eye[0];\n var eyey = eye[1];\n var eyez = eye[2];\n var upx = up[0];\n var upy = up[1];\n var upz = up[2];\n var centerx = center[0];\n var centery = center[1];\n var centerz = center[2];\n\n if (Math.abs(eyex - centerx) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] && Math.abs(eyey - centery) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] && Math.abs(eyez - centerz) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return identity(out);\n }\n\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.hypot(z0, z1, z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.hypot(x0, x1, x2);\n\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.hypot(y0, y1, y2);\n\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n}\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {ReadonlyVec3} eye Position of the viewer\n * @param {ReadonlyVec3} center Point the viewer is looking at\n * @param {ReadonlyVec3} up vec3 pointing up\n * @returns {mat4} out\n */\n\nfunction targetTo(out, eye, target, up) {\n var eyex = eye[0],\n eyey = eye[1],\n eyez = eye[2],\n upx = up[0],\n upy = up[1],\n upz = up[2];\n var z0 = eyex - target[0],\n z1 = eyey - target[1],\n z2 = eyez - target[2];\n var len = z0 * z0 + z1 * z1 + z2 * z2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n var x0 = upy * z2 - upz * z1,\n x1 = upz * z0 - upx * z2,\n x2 = upx * z1 - upy * z0;\n len = x0 * x0 + x1 * x1 + x2 * x2;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n out[0] = x0;\n out[1] = x1;\n out[2] = x2;\n out[3] = 0;\n out[4] = z1 * x2 - z2 * x1;\n out[5] = z2 * x0 - z0 * x2;\n out[6] = z0 * x1 - z1 * x0;\n out[7] = 0;\n out[8] = z0;\n out[9] = z1;\n out[10] = z2;\n out[11] = 0;\n out[12] = eyex;\n out[13] = eyey;\n out[14] = eyez;\n out[15] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat4\n *\n * @param {ReadonlyMat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nfunction str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {ReadonlyMat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nfunction frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n out[9] = a[9] + b[9];\n out[10] = a[10] + b[10];\n out[11] = a[11] + b[11];\n out[12] = a[12] + b[12];\n out[13] = a[13] + b[13];\n out[14] = a[14] + b[14];\n out[15] = a[15] + b[15];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @returns {mat4} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n out[9] = a[9] - b[9];\n out[10] = a[10] - b[10];\n out[11] = a[11] - b[11];\n out[12] = a[12] - b[12];\n out[13] = a[13] - b[13];\n out[14] = a[14] - b[14];\n out[15] = a[15] - b[15];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {ReadonlyMat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\n\nfunction multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n out[9] = a[9] * b;\n out[10] = a[10] * b;\n out[11] = a[11] * b;\n out[12] = a[12] * b;\n out[13] = a[13] * b;\n out[14] = a[14] * b;\n out[15] = a[15] * b;\n return out;\n}\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {ReadonlyMat4} a the first operand\n * @param {ReadonlyMat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\n\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n out[9] = a[9] + b[9] * scale;\n out[10] = a[10] + b[10] * scale;\n out[11] = a[11] + b[11] * scale;\n out[12] = a[12] + b[12] * scale;\n out[13] = a[13] + b[13] * scale;\n out[14] = a[14] + b[14] * scale;\n out[15] = a[15] + b[15] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat4} a The first matrix.\n * @param {ReadonlyMat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var a8 = a[8],\n a9 = a[9],\n a10 = a[10],\n a11 = a[11];\n var a12 = a[12],\n a13 = a[13],\n a14 = a[14],\n a15 = a[15];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n var b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n var b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11];\n var b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\n\nvar sub = subtract;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL21hdDQuanM/OTAwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7O0FBRW5DLE1BQU0scURBQW1CO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLGtEQUFnQjtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLGtEQUFnQjtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsY0FBYztBQUN6QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCx3QkFBd0IscURBQW1CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQUs7QUFDakIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksS0FBSztBQUNqQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQUs7QUFDakIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksS0FBSztBQUNqQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixZQUFZLEtBQUs7QUFDakI7O0FBRU87QUFDUCxvQkFBb0IscURBQW1CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE1BQU07QUFDakIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxrREFBZ0IsK0JBQStCLGtEQUFnQiwrQkFBK0Isa0RBQWdCO0FBQy9JO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHVFQUF1RSxrREFBZ0IseUVBQXlFLGtEQUFnQix5RUFBeUUsa0RBQWdCLHlFQUF5RSxrREFBZ0IseUVBQXlFLGtEQUFnQix5RUFBeUUsa0RBQWdCO0FBQy96QztBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS9tYXQ0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG4vKipcbiAqIDR4NCBNYXRyaXg8YnI+Rm9ybWF0OiBjb2x1bW4tbWFqb3IsIHdoZW4gdHlwZWQgb3V0IGl0IGxvb2tzIGxpa2Ugcm93LW1ham9yPGJyPlRoZSBtYXRyaWNlcyBhcmUgYmVpbmcgcG9zdCBtdWx0aXBsaWVkLlxuICogQG1vZHVsZSBtYXQ0XG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGlkZW50aXR5IG1hdDRcbiAqXG4gKiBAcmV0dXJucyB7bWF0NH0gYSBuZXcgNHg0IG1hdHJpeFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgxNik7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgb3V0WzFdID0gMDtcbiAgICBvdXRbMl0gPSAwO1xuICAgIG91dFszXSA9IDA7XG4gICAgb3V0WzRdID0gMDtcbiAgICBvdXRbNl0gPSAwO1xuICAgIG91dFs3XSA9IDA7XG4gICAgb3V0WzhdID0gMDtcbiAgICBvdXRbOV0gPSAwO1xuICAgIG91dFsxMV0gPSAwO1xuICAgIG91dFsxMl0gPSAwO1xuICAgIG91dFsxM10gPSAwO1xuICAgIG91dFsxNF0gPSAwO1xuICB9XG5cbiAgb3V0WzBdID0gMTtcbiAgb3V0WzVdID0gMTtcbiAgb3V0WzEwXSA9IDE7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IG1hdDQgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBtYXRyaXhcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSBtYXRyaXggdG8gY2xvbmVcbiAqIEByZXR1cm5zIHttYXQ0fSBhIG5ldyA0eDQgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDE2KTtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgb3V0WzJdID0gYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgb3V0WzRdID0gYVs0XTtcbiAgb3V0WzVdID0gYVs1XTtcbiAgb3V0WzZdID0gYVs2XTtcbiAgb3V0WzddID0gYVs3XTtcbiAgb3V0WzhdID0gYVs4XTtcbiAgb3V0WzldID0gYVs5XTtcbiAgb3V0WzEwXSA9IGFbMTBdO1xuICBvdXRbMTFdID0gYVsxMV07XG4gIG91dFsxMl0gPSBhWzEyXTtcbiAgb3V0WzEzXSA9IGFbMTNdO1xuICBvdXRbMTRdID0gYVsxNF07XG4gIG91dFsxNV0gPSBhWzE1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ29weSB0aGUgdmFsdWVzIGZyb20gb25lIG1hdDQgdG8gYW5vdGhlclxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KG91dCwgYSkge1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICBvdXRbNF0gPSBhWzRdO1xuICBvdXRbNV0gPSBhWzVdO1xuICBvdXRbNl0gPSBhWzZdO1xuICBvdXRbN10gPSBhWzddO1xuICBvdXRbOF0gPSBhWzhdO1xuICBvdXRbOV0gPSBhWzldO1xuICBvdXRbMTBdID0gYVsxMF07XG4gIG91dFsxMV0gPSBhWzExXTtcbiAgb3V0WzEyXSA9IGFbMTJdO1xuICBvdXRbMTNdID0gYVsxM107XG4gIG91dFsxNF0gPSBhWzE0XTtcbiAgb3V0WzE1XSA9IGFbMTVdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgbWF0NCB3aXRoIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDEgcG9zaXRpb24gKGluZGV4IDEpXG4gKiBAcGFyYW0ge051bWJlcn0gbTAyIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDIgcG9zaXRpb24gKGluZGV4IDIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTAzIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDMgcG9zaXRpb24gKGluZGV4IDMpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEwIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDAgcG9zaXRpb24gKGluZGV4IDQpXG4gKiBAcGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDUpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEyIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDIgcG9zaXRpb24gKGluZGV4IDYpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEzIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDMgcG9zaXRpb24gKGluZGV4IDcpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIwIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDAgcG9zaXRpb24gKGluZGV4IDgpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIxIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDEgcG9zaXRpb24gKGluZGV4IDkpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIyIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDIgcG9zaXRpb24gKGluZGV4IDEwKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0yMyBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAzIHBvc2l0aW9uIChpbmRleCAxMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMzAgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMTIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTMxIENvbXBvbmVudCBpbiBjb2x1bW4gMywgcm93IDEgcG9zaXRpb24gKGluZGV4IDEzKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0zMiBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAyIHBvc2l0aW9uIChpbmRleCAxNClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMzMgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggMTUpXG4gKiBAcmV0dXJucyB7bWF0NH0gQSBuZXcgbWF0NFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVmFsdWVzKG0wMCwgbTAxLCBtMDIsIG0wMywgbTEwLCBtMTEsIG0xMiwgbTEzLCBtMjAsIG0yMSwgbTIyLCBtMjMsIG0zMCwgbTMxLCBtMzIsIG0zMykge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMTYpO1xuICBvdXRbMF0gPSBtMDA7XG4gIG91dFsxXSA9IG0wMTtcbiAgb3V0WzJdID0gbTAyO1xuICBvdXRbM10gPSBtMDM7XG4gIG91dFs0XSA9IG0xMDtcbiAgb3V0WzVdID0gbTExO1xuICBvdXRbNl0gPSBtMTI7XG4gIG91dFs3XSA9IG0xMztcbiAgb3V0WzhdID0gbTIwO1xuICBvdXRbOV0gPSBtMjE7XG4gIG91dFsxMF0gPSBtMjI7XG4gIG91dFsxMV0gPSBtMjM7XG4gIG91dFsxMl0gPSBtMzA7XG4gIG91dFsxM10gPSBtMzE7XG4gIG91dFsxNF0gPSBtMzI7XG4gIG91dFsxNV0gPSBtMzM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIG1hdDQgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge051bWJlcn0gbTAwIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDAgcG9zaXRpb24gKGluZGV4IDApXG4gKiBAcGFyYW0ge051bWJlcn0gbTAxIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDEgcG9zaXRpb24gKGluZGV4IDEpXG4gKiBAcGFyYW0ge051bWJlcn0gbTAyIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDIgcG9zaXRpb24gKGluZGV4IDIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTAzIENvbXBvbmVudCBpbiBjb2x1bW4gMCwgcm93IDMgcG9zaXRpb24gKGluZGV4IDMpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEwIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDAgcG9zaXRpb24gKGluZGV4IDQpXG4gKiBAcGFyYW0ge051bWJlcn0gbTExIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDEgcG9zaXRpb24gKGluZGV4IDUpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEyIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDIgcG9zaXRpb24gKGluZGV4IDYpXG4gKiBAcGFyYW0ge051bWJlcn0gbTEzIENvbXBvbmVudCBpbiBjb2x1bW4gMSwgcm93IDMgcG9zaXRpb24gKGluZGV4IDcpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIwIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDAgcG9zaXRpb24gKGluZGV4IDgpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIxIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDEgcG9zaXRpb24gKGluZGV4IDkpXG4gKiBAcGFyYW0ge051bWJlcn0gbTIyIENvbXBvbmVudCBpbiBjb2x1bW4gMiwgcm93IDIgcG9zaXRpb24gKGluZGV4IDEwKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0yMyBDb21wb25lbnQgaW4gY29sdW1uIDIsIHJvdyAzIHBvc2l0aW9uIChpbmRleCAxMSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMzAgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMCBwb3NpdGlvbiAoaW5kZXggMTIpXG4gKiBAcGFyYW0ge051bWJlcn0gbTMxIENvbXBvbmVudCBpbiBjb2x1bW4gMywgcm93IDEgcG9zaXRpb24gKGluZGV4IDEzKVxuICogQHBhcmFtIHtOdW1iZXJ9IG0zMiBDb21wb25lbnQgaW4gY29sdW1uIDMsIHJvdyAyIHBvc2l0aW9uIChpbmRleCAxNClcbiAqIEBwYXJhbSB7TnVtYmVyfSBtMzMgQ29tcG9uZW50IGluIGNvbHVtbiAzLCByb3cgMyBwb3NpdGlvbiAoaW5kZXggMTUpXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChvdXQsIG0wMCwgbTAxLCBtMDIsIG0wMywgbTEwLCBtMTEsIG0xMiwgbTEzLCBtMjAsIG0yMSwgbTIyLCBtMjMsIG0zMCwgbTMxLCBtMzIsIG0zMykge1xuICBvdXRbMF0gPSBtMDA7XG4gIG91dFsxXSA9IG0wMTtcbiAgb3V0WzJdID0gbTAyO1xuICBvdXRbM10gPSBtMDM7XG4gIG91dFs0XSA9IG0xMDtcbiAgb3V0WzVdID0gbTExO1xuICBvdXRbNl0gPSBtMTI7XG4gIG91dFs3XSA9IG0xMztcbiAgb3V0WzhdID0gbTIwO1xuICBvdXRbOV0gPSBtMjE7XG4gIG91dFsxMF0gPSBtMjI7XG4gIG91dFsxMV0gPSBtMjM7XG4gIG91dFsxMl0gPSBtMzA7XG4gIG91dFsxM10gPSBtMzE7XG4gIG91dFsxNF0gPSBtMzI7XG4gIG91dFsxNV0gPSBtMzM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCBhIG1hdDQgdG8gdGhlIGlkZW50aXR5IG1hdHJpeFxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5KG91dCkge1xuICBvdXRbMF0gPSAxO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAxO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTBdID0gMTtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IDA7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgdGhlIHZhbHVlcyBvZiBhIG1hdDRcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlKG91dCwgYSkge1xuICAvLyBJZiB3ZSBhcmUgdHJhbnNwb3Npbmcgb3Vyc2VsdmVzIHdlIGNhbiBza2lwIGEgZmV3IHN0ZXBzIGJ1dCBoYXZlIHRvIGNhY2hlIHNvbWUgdmFsdWVzXG4gIGlmIChvdXQgPT09IGEpIHtcbiAgICB2YXIgYTAxID0gYVsxXSxcbiAgICAgICAgYTAyID0gYVsyXSxcbiAgICAgICAgYTAzID0gYVszXTtcbiAgICB2YXIgYTEyID0gYVs2XSxcbiAgICAgICAgYTEzID0gYVs3XTtcbiAgICB2YXIgYTIzID0gYVsxMV07XG4gICAgb3V0WzFdID0gYVs0XTtcbiAgICBvdXRbMl0gPSBhWzhdO1xuICAgIG91dFszXSA9IGFbMTJdO1xuICAgIG91dFs0XSA9IGEwMTtcbiAgICBvdXRbNl0gPSBhWzldO1xuICAgIG91dFs3XSA9IGFbMTNdO1xuICAgIG91dFs4XSA9IGEwMjtcbiAgICBvdXRbOV0gPSBhMTI7XG4gICAgb3V0WzExXSA9IGFbMTRdO1xuICAgIG91dFsxMl0gPSBhMDM7XG4gICAgb3V0WzEzXSA9IGExMztcbiAgICBvdXRbMTRdID0gYTIzO1xuICB9IGVsc2Uge1xuICAgIG91dFswXSA9IGFbMF07XG4gICAgb3V0WzFdID0gYVs0XTtcbiAgICBvdXRbMl0gPSBhWzhdO1xuICAgIG91dFszXSA9IGFbMTJdO1xuICAgIG91dFs0XSA9IGFbMV07XG4gICAgb3V0WzVdID0gYVs1XTtcbiAgICBvdXRbNl0gPSBhWzldO1xuICAgIG91dFs3XSA9IGFbMTNdO1xuICAgIG91dFs4XSA9IGFbMl07XG4gICAgb3V0WzldID0gYVs2XTtcbiAgICBvdXRbMTBdID0gYVsxMF07XG4gICAgb3V0WzExXSA9IGFbMTRdO1xuICAgIG91dFsxMl0gPSBhWzNdO1xuICAgIG91dFsxM10gPSBhWzddO1xuICAgIG91dFsxNF0gPSBhWzExXTtcbiAgICBvdXRbMTVdID0gYVsxNV07XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBJbnZlcnRzIGEgbWF0NFxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnQob3V0LCBhKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl0sXG4gICAgICBhMDMgPSBhWzNdO1xuICB2YXIgYTEwID0gYVs0XSxcbiAgICAgIGExMSA9IGFbNV0sXG4gICAgICBhMTIgPSBhWzZdLFxuICAgICAgYTEzID0gYVs3XTtcbiAgdmFyIGEyMCA9IGFbOF0sXG4gICAgICBhMjEgPSBhWzldLFxuICAgICAgYTIyID0gYVsxMF0sXG4gICAgICBhMjMgPSBhWzExXTtcbiAgdmFyIGEzMCA9IGFbMTJdLFxuICAgICAgYTMxID0gYVsxM10sXG4gICAgICBhMzIgPSBhWzE0XSxcbiAgICAgIGEzMyA9IGFbMTVdO1xuICB2YXIgYjAwID0gYTAwICogYTExIC0gYTAxICogYTEwO1xuICB2YXIgYjAxID0gYTAwICogYTEyIC0gYTAyICogYTEwO1xuICB2YXIgYjAyID0gYTAwICogYTEzIC0gYTAzICogYTEwO1xuICB2YXIgYjAzID0gYTAxICogYTEyIC0gYTAyICogYTExO1xuICB2YXIgYjA0ID0gYTAxICogYTEzIC0gYTAzICogYTExO1xuICB2YXIgYjA1ID0gYTAyICogYTEzIC0gYTAzICogYTEyO1xuICB2YXIgYjA2ID0gYTIwICogYTMxIC0gYTIxICogYTMwO1xuICB2YXIgYjA3ID0gYTIwICogYTMyIC0gYTIyICogYTMwO1xuICB2YXIgYjA4ID0gYTIwICogYTMzIC0gYTIzICogYTMwO1xuICB2YXIgYjA5ID0gYTIxICogYTMyIC0gYTIyICogYTMxO1xuICB2YXIgYjEwID0gYTIxICogYTMzIC0gYTIzICogYTMxO1xuICB2YXIgYjExID0gYTIyICogYTMzIC0gYTIzICogYTMyOyAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50XG5cbiAgdmFyIGRldCA9IGIwMCAqIGIxMSAtIGIwMSAqIGIxMCArIGIwMiAqIGIwOSArIGIwMyAqIGIwOCAtIGIwNCAqIGIwNyArIGIwNSAqIGIwNjtcblxuICBpZiAoIWRldCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZGV0ID0gMS4wIC8gZGV0O1xuICBvdXRbMF0gPSAoYTExICogYjExIC0gYTEyICogYjEwICsgYTEzICogYjA5KSAqIGRldDtcbiAgb3V0WzFdID0gKGEwMiAqIGIxMCAtIGEwMSAqIGIxMSAtIGEwMyAqIGIwOSkgKiBkZXQ7XG4gIG91dFsyXSA9IChhMzEgKiBiMDUgLSBhMzIgKiBiMDQgKyBhMzMgKiBiMDMpICogZGV0O1xuICBvdXRbM10gPSAoYTIyICogYjA0IC0gYTIxICogYjA1IC0gYTIzICogYjAzKSAqIGRldDtcbiAgb3V0WzRdID0gKGExMiAqIGIwOCAtIGExMCAqIGIxMSAtIGExMyAqIGIwNykgKiBkZXQ7XG4gIG91dFs1XSA9IChhMDAgKiBiMTEgLSBhMDIgKiBiMDggKyBhMDMgKiBiMDcpICogZGV0O1xuICBvdXRbNl0gPSAoYTMyICogYjAyIC0gYTMwICogYjA1IC0gYTMzICogYjAxKSAqIGRldDtcbiAgb3V0WzddID0gKGEyMCAqIGIwNSAtIGEyMiAqIGIwMiArIGEyMyAqIGIwMSkgKiBkZXQ7XG4gIG91dFs4XSA9IChhMTAgKiBiMTAgLSBhMTEgKiBiMDggKyBhMTMgKiBiMDYpICogZGV0O1xuICBvdXRbOV0gPSAoYTAxICogYjA4IC0gYTAwICogYjEwIC0gYTAzICogYjA2KSAqIGRldDtcbiAgb3V0WzEwXSA9IChhMzAgKiBiMDQgLSBhMzEgKiBiMDIgKyBhMzMgKiBiMDApICogZGV0O1xuICBvdXRbMTFdID0gKGEyMSAqIGIwMiAtIGEyMCAqIGIwNCAtIGEyMyAqIGIwMCkgKiBkZXQ7XG4gIG91dFsxMl0gPSAoYTExICogYjA3IC0gYTEwICogYjA5IC0gYTEyICogYjA2KSAqIGRldDtcbiAgb3V0WzEzXSA9IChhMDAgKiBiMDkgLSBhMDEgKiBiMDcgKyBhMDIgKiBiMDYpICogZGV0O1xuICBvdXRbMTRdID0gKGEzMSAqIGIwMSAtIGEzMCAqIGIwMyAtIGEzMiAqIGIwMCkgKiBkZXQ7XG4gIG91dFsxNV0gPSAoYTIwICogYjAzIC0gYTIxICogYjAxICsgYTIyICogYjAwKSAqIGRldDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgYWRqdWdhdGUgb2YgYSBtYXQ0XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkam9pbnQob3V0LCBhKSB7XG4gIHZhciBhMDAgPSBhWzBdLFxuICAgICAgYTAxID0gYVsxXSxcbiAgICAgIGEwMiA9IGFbMl0sXG4gICAgICBhMDMgPSBhWzNdO1xuICB2YXIgYTEwID0gYVs0XSxcbiAgICAgIGExMSA9IGFbNV0sXG4gICAgICBhMTIgPSBhWzZdLFxuICAgICAgYTEzID0gYVs3XTtcbiAgdmFyIGEyMCA9IGFbOF0sXG4gICAgICBhMjEgPSBhWzldLFxuICAgICAgYTIyID0gYVsxMF0sXG4gICAgICBhMjMgPSBhWzExXTtcbiAgdmFyIGEzMCA9IGFbMTJdLFxuICAgICAgYTMxID0gYVsxM10sXG4gICAgICBhMzIgPSBhWzE0XSxcbiAgICAgIGEzMyA9IGFbMTVdO1xuICBvdXRbMF0gPSBhMTEgKiAoYTIyICogYTMzIC0gYTIzICogYTMyKSAtIGEyMSAqIChhMTIgKiBhMzMgLSBhMTMgKiBhMzIpICsgYTMxICogKGExMiAqIGEyMyAtIGExMyAqIGEyMik7XG4gIG91dFsxXSA9IC0oYTAxICogKGEyMiAqIGEzMyAtIGEyMyAqIGEzMikgLSBhMjEgKiAoYTAyICogYTMzIC0gYTAzICogYTMyKSArIGEzMSAqIChhMDIgKiBhMjMgLSBhMDMgKiBhMjIpKTtcbiAgb3V0WzJdID0gYTAxICogKGExMiAqIGEzMyAtIGExMyAqIGEzMikgLSBhMTEgKiAoYTAyICogYTMzIC0gYTAzICogYTMyKSArIGEzMSAqIChhMDIgKiBhMTMgLSBhMDMgKiBhMTIpO1xuICBvdXRbM10gPSAtKGEwMSAqIChhMTIgKiBhMjMgLSBhMTMgKiBhMjIpIC0gYTExICogKGEwMiAqIGEyMyAtIGEwMyAqIGEyMikgKyBhMjEgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKSk7XG4gIG91dFs0XSA9IC0oYTEwICogKGEyMiAqIGEzMyAtIGEyMyAqIGEzMikgLSBhMjAgKiAoYTEyICogYTMzIC0gYTEzICogYTMyKSArIGEzMCAqIChhMTIgKiBhMjMgLSBhMTMgKiBhMjIpKTtcbiAgb3V0WzVdID0gYTAwICogKGEyMiAqIGEzMyAtIGEyMyAqIGEzMikgLSBhMjAgKiAoYTAyICogYTMzIC0gYTAzICogYTMyKSArIGEzMCAqIChhMDIgKiBhMjMgLSBhMDMgKiBhMjIpO1xuICBvdXRbNl0gPSAtKGEwMCAqIChhMTIgKiBhMzMgLSBhMTMgKiBhMzIpIC0gYTEwICogKGEwMiAqIGEzMyAtIGEwMyAqIGEzMikgKyBhMzAgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKSk7XG4gIG91dFs3XSA9IGEwMCAqIChhMTIgKiBhMjMgLSBhMTMgKiBhMjIpIC0gYTEwICogKGEwMiAqIGEyMyAtIGEwMyAqIGEyMikgKyBhMjAgKiAoYTAyICogYTEzIC0gYTAzICogYTEyKTtcbiAgb3V0WzhdID0gYTEwICogKGEyMSAqIGEzMyAtIGEyMyAqIGEzMSkgLSBhMjAgKiAoYTExICogYTMzIC0gYTEzICogYTMxKSArIGEzMCAqIChhMTEgKiBhMjMgLSBhMTMgKiBhMjEpO1xuICBvdXRbOV0gPSAtKGEwMCAqIChhMjEgKiBhMzMgLSBhMjMgKiBhMzEpIC0gYTIwICogKGEwMSAqIGEzMyAtIGEwMyAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTIzIC0gYTAzICogYTIxKSk7XG4gIG91dFsxMF0gPSBhMDAgKiAoYTExICogYTMzIC0gYTEzICogYTMxKSAtIGExMCAqIChhMDEgKiBhMzMgLSBhMDMgKiBhMzEpICsgYTMwICogKGEwMSAqIGExMyAtIGEwMyAqIGExMSk7XG4gIG91dFsxMV0gPSAtKGEwMCAqIChhMTEgKiBhMjMgLSBhMTMgKiBhMjEpIC0gYTEwICogKGEwMSAqIGEyMyAtIGEwMyAqIGEyMSkgKyBhMjAgKiAoYTAxICogYTEzIC0gYTAzICogYTExKSk7XG4gIG91dFsxMl0gPSAtKGExMCAqIChhMjEgKiBhMzIgLSBhMjIgKiBhMzEpIC0gYTIwICogKGExMSAqIGEzMiAtIGExMiAqIGEzMSkgKyBhMzAgKiAoYTExICogYTIyIC0gYTEyICogYTIxKSk7XG4gIG91dFsxM10gPSBhMDAgKiAoYTIxICogYTMyIC0gYTIyICogYTMxKSAtIGEyMCAqIChhMDEgKiBhMzIgLSBhMDIgKiBhMzEpICsgYTMwICogKGEwMSAqIGEyMiAtIGEwMiAqIGEyMSk7XG4gIG91dFsxNF0gPSAtKGEwMCAqIChhMTEgKiBhMzIgLSBhMTIgKiBhMzEpIC0gYTEwICogKGEwMSAqIGEzMiAtIGEwMiAqIGEzMSkgKyBhMzAgKiAoYTAxICogYTEyIC0gYTAyICogYTExKSk7XG4gIG91dFsxNV0gPSBhMDAgKiAoYTExICogYTIyIC0gYTEyICogYTIxKSAtIGExMCAqIChhMDEgKiBhMjIgLSBhMDIgKiBhMjEpICsgYTIwICogKGEwMSAqIGExMiAtIGEwMiAqIGExMSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRldGVybWluYW50IG9mIGEgbWF0NFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBzb3VyY2UgbWF0cml4XG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkZXRlcm1pbmFudCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluYW50KGEpIHtcbiAgdmFyIGEwMCA9IGFbMF0sXG4gICAgICBhMDEgPSBhWzFdLFxuICAgICAgYTAyID0gYVsyXSxcbiAgICAgIGEwMyA9IGFbM107XG4gIHZhciBhMTAgPSBhWzRdLFxuICAgICAgYTExID0gYVs1XSxcbiAgICAgIGExMiA9IGFbNl0sXG4gICAgICBhMTMgPSBhWzddO1xuICB2YXIgYTIwID0gYVs4XSxcbiAgICAgIGEyMSA9IGFbOV0sXG4gICAgICBhMjIgPSBhWzEwXSxcbiAgICAgIGEyMyA9IGFbMTFdO1xuICB2YXIgYTMwID0gYVsxMl0sXG4gICAgICBhMzEgPSBhWzEzXSxcbiAgICAgIGEzMiA9IGFbMTRdLFxuICAgICAgYTMzID0gYVsxNV07XG4gIHZhciBiMDAgPSBhMDAgKiBhMTEgLSBhMDEgKiBhMTA7XG4gIHZhciBiMDEgPSBhMDAgKiBhMTIgLSBhMDIgKiBhMTA7XG4gIHZhciBiMDIgPSBhMDAgKiBhMTMgLSBhMDMgKiBhMTA7XG4gIHZhciBiMDMgPSBhMDEgKiBhMTIgLSBhMDIgKiBhMTE7XG4gIHZhciBiMDQgPSBhMDEgKiBhMTMgLSBhMDMgKiBhMTE7XG4gIHZhciBiMDUgPSBhMDIgKiBhMTMgLSBhMDMgKiBhMTI7XG4gIHZhciBiMDYgPSBhMjAgKiBhMzEgLSBhMjEgKiBhMzA7XG4gIHZhciBiMDcgPSBhMjAgKiBhMzIgLSBhMjIgKiBhMzA7XG4gIHZhciBiMDggPSBhMjAgKiBhMzMgLSBhMjMgKiBhMzA7XG4gIHZhciBiMDkgPSBhMjEgKiBhMzIgLSBhMjIgKiBhMzE7XG4gIHZhciBiMTAgPSBhMjEgKiBhMzMgLSBhMjMgKiBhMzE7XG4gIHZhciBiMTEgPSBhMjIgKiBhMzMgLSBhMjMgKiBhMzI7IC8vIENhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnRcblxuICByZXR1cm4gYjAwICogYjExIC0gYjAxICogYjEwICsgYjAyICogYjA5ICsgYjAzICogYjA4IC0gYjA0ICogYjA3ICsgYjA1ICogYjA2O1xufVxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byBtYXQ0c1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICB2YXIgYTAwID0gYVswXSxcbiAgICAgIGEwMSA9IGFbMV0sXG4gICAgICBhMDIgPSBhWzJdLFxuICAgICAgYTAzID0gYVszXTtcbiAgdmFyIGExMCA9IGFbNF0sXG4gICAgICBhMTEgPSBhWzVdLFxuICAgICAgYTEyID0gYVs2XSxcbiAgICAgIGExMyA9IGFbN107XG4gIHZhciBhMjAgPSBhWzhdLFxuICAgICAgYTIxID0gYVs5XSxcbiAgICAgIGEyMiA9IGFbMTBdLFxuICAgICAgYTIzID0gYVsxMV07XG4gIHZhciBhMzAgPSBhWzEyXSxcbiAgICAgIGEzMSA9IGFbMTNdLFxuICAgICAgYTMyID0gYVsxNF0sXG4gICAgICBhMzMgPSBhWzE1XTsgLy8gQ2FjaGUgb25seSB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBzZWNvbmQgbWF0cml4XG5cbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXSxcbiAgICAgIGIzID0gYlszXTtcbiAgb3V0WzBdID0gYjAgKiBhMDAgKyBiMSAqIGExMCArIGIyICogYTIwICsgYjMgKiBhMzA7XG4gIG91dFsxXSA9IGIwICogYTAxICsgYjEgKiBhMTEgKyBiMiAqIGEyMSArIGIzICogYTMxO1xuICBvdXRbMl0gPSBiMCAqIGEwMiArIGIxICogYTEyICsgYjIgKiBhMjIgKyBiMyAqIGEzMjtcbiAgb3V0WzNdID0gYjAgKiBhMDMgKyBiMSAqIGExMyArIGIyICogYTIzICsgYjMgKiBhMzM7XG4gIGIwID0gYls0XTtcbiAgYjEgPSBiWzVdO1xuICBiMiA9IGJbNl07XG4gIGIzID0gYls3XTtcbiAgb3V0WzRdID0gYjAgKiBhMDAgKyBiMSAqIGExMCArIGIyICogYTIwICsgYjMgKiBhMzA7XG4gIG91dFs1XSA9IGIwICogYTAxICsgYjEgKiBhMTEgKyBiMiAqIGEyMSArIGIzICogYTMxO1xuICBvdXRbNl0gPSBiMCAqIGEwMiArIGIxICogYTEyICsgYjIgKiBhMjIgKyBiMyAqIGEzMjtcbiAgb3V0WzddID0gYjAgKiBhMDMgKyBiMSAqIGExMyArIGIyICogYTIzICsgYjMgKiBhMzM7XG4gIGIwID0gYls4XTtcbiAgYjEgPSBiWzldO1xuICBiMiA9IGJbMTBdO1xuICBiMyA9IGJbMTFdO1xuICBvdXRbOF0gPSBiMCAqIGEwMCArIGIxICogYTEwICsgYjIgKiBhMjAgKyBiMyAqIGEzMDtcbiAgb3V0WzldID0gYjAgKiBhMDEgKyBiMSAqIGExMSArIGIyICogYTIxICsgYjMgKiBhMzE7XG4gIG91dFsxMF0gPSBiMCAqIGEwMiArIGIxICogYTEyICsgYjIgKiBhMjIgKyBiMyAqIGEzMjtcbiAgb3V0WzExXSA9IGIwICogYTAzICsgYjEgKiBhMTMgKyBiMiAqIGEyMyArIGIzICogYTMzO1xuICBiMCA9IGJbMTJdO1xuICBiMSA9IGJbMTNdO1xuICBiMiA9IGJbMTRdO1xuICBiMyA9IGJbMTVdO1xuICBvdXRbMTJdID0gYjAgKiBhMDAgKyBiMSAqIGExMCArIGIyICogYTIwICsgYjMgKiBhMzA7XG4gIG91dFsxM10gPSBiMCAqIGEwMSArIGIxICogYTExICsgYjIgKiBhMjEgKyBiMyAqIGEzMTtcbiAgb3V0WzE0XSA9IGIwICogYTAyICsgYjEgKiBhMTIgKyBiMiAqIGEyMiArIGIzICogYTMyO1xuICBvdXRbMTVdID0gYjAgKiBhMDMgKyBiMSAqIGExMyArIGIyICogYTIzICsgYjMgKiBhMzM7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zbGF0ZSBhIG1hdDQgYnkgdGhlIGdpdmVuIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIHRyYW5zbGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHYgdmVjdG9yIHRvIHRyYW5zbGF0ZSBieVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGUob3V0LCBhLCB2KSB7XG4gIHZhciB4ID0gdlswXSxcbiAgICAgIHkgPSB2WzFdLFxuICAgICAgeiA9IHZbMl07XG4gIHZhciBhMDAsIGEwMSwgYTAyLCBhMDM7XG4gIHZhciBhMTAsIGExMSwgYTEyLCBhMTM7XG4gIHZhciBhMjAsIGEyMSwgYTIyLCBhMjM7XG5cbiAgaWYgKGEgPT09IG91dCkge1xuICAgIG91dFsxMl0gPSBhWzBdICogeCArIGFbNF0gKiB5ICsgYVs4XSAqIHogKyBhWzEyXTtcbiAgICBvdXRbMTNdID0gYVsxXSAqIHggKyBhWzVdICogeSArIGFbOV0gKiB6ICsgYVsxM107XG4gICAgb3V0WzE0XSA9IGFbMl0gKiB4ICsgYVs2XSAqIHkgKyBhWzEwXSAqIHogKyBhWzE0XTtcbiAgICBvdXRbMTVdID0gYVszXSAqIHggKyBhWzddICogeSArIGFbMTFdICogeiArIGFbMTVdO1xuICB9IGVsc2Uge1xuICAgIGEwMCA9IGFbMF07XG4gICAgYTAxID0gYVsxXTtcbiAgICBhMDIgPSBhWzJdO1xuICAgIGEwMyA9IGFbM107XG4gICAgYTEwID0gYVs0XTtcbiAgICBhMTEgPSBhWzVdO1xuICAgIGExMiA9IGFbNl07XG4gICAgYTEzID0gYVs3XTtcbiAgICBhMjAgPSBhWzhdO1xuICAgIGEyMSA9IGFbOV07XG4gICAgYTIyID0gYVsxMF07XG4gICAgYTIzID0gYVsxMV07XG4gICAgb3V0WzBdID0gYTAwO1xuICAgIG91dFsxXSA9IGEwMTtcbiAgICBvdXRbMl0gPSBhMDI7XG4gICAgb3V0WzNdID0gYTAzO1xuICAgIG91dFs0XSA9IGExMDtcbiAgICBvdXRbNV0gPSBhMTE7XG4gICAgb3V0WzZdID0gYTEyO1xuICAgIG91dFs3XSA9IGExMztcbiAgICBvdXRbOF0gPSBhMjA7XG4gICAgb3V0WzldID0gYTIxO1xuICAgIG91dFsxMF0gPSBhMjI7XG4gICAgb3V0WzExXSA9IGEyMztcbiAgICBvdXRbMTJdID0gYTAwICogeCArIGExMCAqIHkgKyBhMjAgKiB6ICsgYVsxMl07XG4gICAgb3V0WzEzXSA9IGEwMSAqIHggKyBhMTEgKiB5ICsgYTIxICogeiArIGFbMTNdO1xuICAgIG91dFsxNF0gPSBhMDIgKiB4ICsgYTEyICogeSArIGEyMiAqIHogKyBhWzE0XTtcbiAgICBvdXRbMTVdID0gYTAzICogeCArIGExMyAqIHkgKyBhMjMgKiB6ICsgYVsxNV07XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTY2FsZXMgdGhlIG1hdDQgYnkgdGhlIGRpbWVuc2lvbnMgaW4gdGhlIGdpdmVuIHZlYzMgbm90IHVzaW5nIHZlY3Rvcml6YXRpb25cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIG1hdHJpeCB0byBzY2FsZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHYgdGhlIHZlYzMgdG8gc2NhbGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDR9IG91dFxuICoqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCB2KSB7XG4gIHZhciB4ID0gdlswXSxcbiAgICAgIHkgPSB2WzFdLFxuICAgICAgeiA9IHZbMl07XG4gIG91dFswXSA9IGFbMF0gKiB4O1xuICBvdXRbMV0gPSBhWzFdICogeDtcbiAgb3V0WzJdID0gYVsyXSAqIHg7XG4gIG91dFszXSA9IGFbM10gKiB4O1xuICBvdXRbNF0gPSBhWzRdICogeTtcbiAgb3V0WzVdID0gYVs1XSAqIHk7XG4gIG91dFs2XSA9IGFbNl0gKiB5O1xuICBvdXRbN10gPSBhWzddICogeTtcbiAgb3V0WzhdID0gYVs4XSAqIHo7XG4gIG91dFs5XSA9IGFbOV0gKiB6O1xuICBvdXRbMTBdID0gYVsxMF0gKiB6O1xuICBvdXRbMTFdID0gYVsxMV0gKiB6O1xuICBvdXRbMTJdID0gYVsxMl07XG4gIG91dFsxM10gPSBhWzEzXTtcbiAgb3V0WzE0XSA9IGFbMTRdO1xuICBvdXRbMTVdID0gYVsxNV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBtYXQ0IGJ5IHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIGdpdmVuIGF4aXNcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYXhpcyB0aGUgYXhpcyB0byByb3RhdGUgYXJvdW5kXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZShvdXQsIGEsIHJhZCwgYXhpcykge1xuICB2YXIgeCA9IGF4aXNbMF0sXG4gICAgICB5ID0gYXhpc1sxXSxcbiAgICAgIHogPSBheGlzWzJdO1xuICB2YXIgbGVuID0gTWF0aC5oeXBvdCh4LCB5LCB6KTtcbiAgdmFyIHMsIGMsIHQ7XG4gIHZhciBhMDAsIGEwMSwgYTAyLCBhMDM7XG4gIHZhciBhMTAsIGExMSwgYTEyLCBhMTM7XG4gIHZhciBhMjAsIGEyMSwgYTIyLCBhMjM7XG4gIHZhciBiMDAsIGIwMSwgYjAyO1xuICB2YXIgYjEwLCBiMTEsIGIxMjtcbiAgdmFyIGIyMCwgYjIxLCBiMjI7XG5cbiAgaWYgKGxlbiA8IGdsTWF0cml4LkVQU0lMT04pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxlbiA9IDEgLyBsZW47XG4gIHggKj0gbGVuO1xuICB5ICo9IGxlbjtcbiAgeiAqPSBsZW47XG4gIHMgPSBNYXRoLnNpbihyYWQpO1xuICBjID0gTWF0aC5jb3MocmFkKTtcbiAgdCA9IDEgLSBjO1xuICBhMDAgPSBhWzBdO1xuICBhMDEgPSBhWzFdO1xuICBhMDIgPSBhWzJdO1xuICBhMDMgPSBhWzNdO1xuICBhMTAgPSBhWzRdO1xuICBhMTEgPSBhWzVdO1xuICBhMTIgPSBhWzZdO1xuICBhMTMgPSBhWzddO1xuICBhMjAgPSBhWzhdO1xuICBhMjEgPSBhWzldO1xuICBhMjIgPSBhWzEwXTtcbiAgYTIzID0gYVsxMV07IC8vIENvbnN0cnVjdCB0aGUgZWxlbWVudHMgb2YgdGhlIHJvdGF0aW9uIG1hdHJpeFxuXG4gIGIwMCA9IHggKiB4ICogdCArIGM7XG4gIGIwMSA9IHkgKiB4ICogdCArIHogKiBzO1xuICBiMDIgPSB6ICogeCAqIHQgLSB5ICogcztcbiAgYjEwID0geCAqIHkgKiB0IC0geiAqIHM7XG4gIGIxMSA9IHkgKiB5ICogdCArIGM7XG4gIGIxMiA9IHogKiB5ICogdCArIHggKiBzO1xuICBiMjAgPSB4ICogeiAqIHQgKyB5ICogcztcbiAgYjIxID0geSAqIHogKiB0IC0geCAqIHM7XG4gIGIyMiA9IHogKiB6ICogdCArIGM7IC8vIFBlcmZvcm0gcm90YXRpb24tc3BlY2lmaWMgbWF0cml4IG11bHRpcGxpY2F0aW9uXG5cbiAgb3V0WzBdID0gYTAwICogYjAwICsgYTEwICogYjAxICsgYTIwICogYjAyO1xuICBvdXRbMV0gPSBhMDEgKiBiMDAgKyBhMTEgKiBiMDEgKyBhMjEgKiBiMDI7XG4gIG91dFsyXSA9IGEwMiAqIGIwMCArIGExMiAqIGIwMSArIGEyMiAqIGIwMjtcbiAgb3V0WzNdID0gYTAzICogYjAwICsgYTEzICogYjAxICsgYTIzICogYjAyO1xuICBvdXRbNF0gPSBhMDAgKiBiMTAgKyBhMTAgKiBiMTEgKyBhMjAgKiBiMTI7XG4gIG91dFs1XSA9IGEwMSAqIGIxMCArIGExMSAqIGIxMSArIGEyMSAqIGIxMjtcbiAgb3V0WzZdID0gYTAyICogYjEwICsgYTEyICogYjExICsgYTIyICogYjEyO1xuICBvdXRbN10gPSBhMDMgKiBiMTAgKyBhMTMgKiBiMTEgKyBhMjMgKiBiMTI7XG4gIG91dFs4XSA9IGEwMCAqIGIyMCArIGExMCAqIGIyMSArIGEyMCAqIGIyMjtcbiAgb3V0WzldID0gYTAxICogYjIwICsgYTExICogYjIxICsgYTIxICogYjIyO1xuICBvdXRbMTBdID0gYTAyICogYjIwICsgYTEyICogYjIxICsgYTIyICogYjIyO1xuICBvdXRbMTFdID0gYTAzICogYjIwICsgYTEzICogYjIxICsgYTIzICogYjIyO1xuXG4gIGlmIChhICE9PSBvdXQpIHtcbiAgICAvLyBJZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaWZmZXIsIGNvcHkgdGhlIHVuY2hhbmdlZCBsYXN0IHJvd1xuICAgIG91dFsxMl0gPSBhWzEyXTtcbiAgICBvdXRbMTNdID0gYVsxM107XG4gICAgb3V0WzE0XSA9IGFbMTRdO1xuICAgIG91dFsxNV0gPSBhWzE1XTtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBtYXRyaXggYnkgdGhlIGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUgWCBheGlzXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBtYXRyaXggdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVYKG91dCwgYSwgcmFkKSB7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKTtcbiAgdmFyIGMgPSBNYXRoLmNvcyhyYWQpO1xuICB2YXIgYTEwID0gYVs0XTtcbiAgdmFyIGExMSA9IGFbNV07XG4gIHZhciBhMTIgPSBhWzZdO1xuICB2YXIgYTEzID0gYVs3XTtcbiAgdmFyIGEyMCA9IGFbOF07XG4gIHZhciBhMjEgPSBhWzldO1xuICB2YXIgYTIyID0gYVsxMF07XG4gIHZhciBhMjMgPSBhWzExXTtcblxuICBpZiAoYSAhPT0gb3V0KSB7XG4gICAgLy8gSWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlmZmVyLCBjb3B5IHRoZSB1bmNoYW5nZWQgcm93c1xuICAgIG91dFswXSA9IGFbMF07XG4gICAgb3V0WzFdID0gYVsxXTtcbiAgICBvdXRbMl0gPSBhWzJdO1xuICAgIG91dFszXSA9IGFbM107XG4gICAgb3V0WzEyXSA9IGFbMTJdO1xuICAgIG91dFsxM10gPSBhWzEzXTtcbiAgICBvdXRbMTRdID0gYVsxNF07XG4gICAgb3V0WzE1XSA9IGFbMTVdO1xuICB9IC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb25cblxuXG4gIG91dFs0XSA9IGExMCAqIGMgKyBhMjAgKiBzO1xuICBvdXRbNV0gPSBhMTEgKiBjICsgYTIxICogcztcbiAgb3V0WzZdID0gYTEyICogYyArIGEyMiAqIHM7XG4gIG91dFs3XSA9IGExMyAqIGMgKyBhMjMgKiBzO1xuICBvdXRbOF0gPSBhMjAgKiBjIC0gYTEwICogcztcbiAgb3V0WzldID0gYTIxICogYyAtIGExMSAqIHM7XG4gIG91dFsxMF0gPSBhMjIgKiBjIC0gYTEyICogcztcbiAgb3V0WzExXSA9IGEyMyAqIGMgLSBhMTMgKiBzO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgbWF0cml4IGJ5IHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFkgYXhpc1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWShvdXQsIGEsIHJhZCkge1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBjID0gTWF0aC5jb3MocmFkKTtcbiAgdmFyIGEwMCA9IGFbMF07XG4gIHZhciBhMDEgPSBhWzFdO1xuICB2YXIgYTAyID0gYVsyXTtcbiAgdmFyIGEwMyA9IGFbM107XG4gIHZhciBhMjAgPSBhWzhdO1xuICB2YXIgYTIxID0gYVs5XTtcbiAgdmFyIGEyMiA9IGFbMTBdO1xuICB2YXIgYTIzID0gYVsxMV07XG5cbiAgaWYgKGEgIT09IG91dCkge1xuICAgIC8vIElmIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRpZmZlciwgY29weSB0aGUgdW5jaGFuZ2VkIHJvd3NcbiAgICBvdXRbNF0gPSBhWzRdO1xuICAgIG91dFs1XSA9IGFbNV07XG4gICAgb3V0WzZdID0gYVs2XTtcbiAgICBvdXRbN10gPSBhWzddO1xuICAgIG91dFsxMl0gPSBhWzEyXTtcbiAgICBvdXRbMTNdID0gYVsxM107XG4gICAgb3V0WzE0XSA9IGFbMTRdO1xuICAgIG91dFsxNV0gPSBhWzE1XTtcbiAgfSAvLyBQZXJmb3JtIGF4aXMtc3BlY2lmaWMgbWF0cml4IG11bHRpcGxpY2F0aW9uXG5cblxuICBvdXRbMF0gPSBhMDAgKiBjIC0gYTIwICogcztcbiAgb3V0WzFdID0gYTAxICogYyAtIGEyMSAqIHM7XG4gIG91dFsyXSA9IGEwMiAqIGMgLSBhMjIgKiBzO1xuICBvdXRbM10gPSBhMDMgKiBjIC0gYTIzICogcztcbiAgb3V0WzhdID0gYTAwICogcyArIGEyMCAqIGM7XG4gIG91dFs5XSA9IGEwMSAqIHMgKyBhMjEgKiBjO1xuICBvdXRbMTBdID0gYTAyICogcyArIGEyMiAqIGM7XG4gIG91dFsxMV0gPSBhMDMgKiBzICsgYTIzICogYztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIG1hdHJpeCBieSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRoZSBaIGF4aXNcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIG1hdHJpeCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVoob3V0LCBhLCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7XG4gIHZhciBhMDAgPSBhWzBdO1xuICB2YXIgYTAxID0gYVsxXTtcbiAgdmFyIGEwMiA9IGFbMl07XG4gIHZhciBhMDMgPSBhWzNdO1xuICB2YXIgYTEwID0gYVs0XTtcbiAgdmFyIGExMSA9IGFbNV07XG4gIHZhciBhMTIgPSBhWzZdO1xuICB2YXIgYTEzID0gYVs3XTtcblxuICBpZiAoYSAhPT0gb3V0KSB7XG4gICAgLy8gSWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlmZmVyLCBjb3B5IHRoZSB1bmNoYW5nZWQgbGFzdCByb3dcbiAgICBvdXRbOF0gPSBhWzhdO1xuICAgIG91dFs5XSA9IGFbOV07XG4gICAgb3V0WzEwXSA9IGFbMTBdO1xuICAgIG91dFsxMV0gPSBhWzExXTtcbiAgICBvdXRbMTJdID0gYVsxMl07XG4gICAgb3V0WzEzXSA9IGFbMTNdO1xuICAgIG91dFsxNF0gPSBhWzE0XTtcbiAgICBvdXRbMTVdID0gYVsxNV07XG4gIH0gLy8gUGVyZm9ybSBheGlzLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBsaWNhdGlvblxuXG5cbiAgb3V0WzBdID0gYTAwICogYyArIGExMCAqIHM7XG4gIG91dFsxXSA9IGEwMSAqIGMgKyBhMTEgKiBzO1xuICBvdXRbMl0gPSBhMDIgKiBjICsgYTEyICogcztcbiAgb3V0WzNdID0gYTAzICogYyArIGExMyAqIHM7XG4gIG91dFs0XSA9IGExMCAqIGMgLSBhMDAgKiBzO1xuICBvdXRbNV0gPSBhMTEgKiBjIC0gYTAxICogcztcbiAgb3V0WzZdID0gYTEyICogYyAtIGEwMiAqIHM7XG4gIG91dFs3XSA9IGExMyAqIGMgLSBhMDMgKiBzO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSB2ZWN0b3IgdHJhbnNsYXRpb25cbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDQudHJhbnNsYXRlKGRlc3QsIGRlc3QsIHZlYyk7XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHYgVHJhbnNsYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21UcmFuc2xhdGlvbihvdXQsIHYpIHtcbiAgb3V0WzBdID0gMTtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gMTtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMDtcbiAgb3V0WzldID0gMDtcbiAgb3V0WzEwXSA9IDE7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gdlswXTtcbiAgb3V0WzEzXSA9IHZbMV07XG4gIG91dFsxNF0gPSB2WzJdO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgdmVjdG9yIHNjYWxpbmdcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDQuc2NhbGUoZGVzdCwgZGVzdCwgdmVjKTtcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdiBTY2FsaW5nIHZlY3RvclxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU2NhbGluZyhvdXQsIHYpIHtcbiAgb3V0WzBdID0gdlswXTtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gdlsxXTtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMDtcbiAgb3V0WzldID0gMDtcbiAgb3V0WzEwXSA9IHZbMl07XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gMDtcbiAgb3V0WzEzXSA9IDA7XG4gIG91dFsxNF0gPSAwO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgZ2l2ZW4gYW5nbGUgYXJvdW5kIGEgZ2l2ZW4gYXhpc1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC5yb3RhdGUoZGVzdCwgZGVzdCwgcmFkLCBheGlzKTtcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGF4aXMgdGhlIGF4aXMgdG8gcm90YXRlIGFyb3VuZFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUm90YXRpb24ob3V0LCByYWQsIGF4aXMpIHtcbiAgdmFyIHggPSBheGlzWzBdLFxuICAgICAgeSA9IGF4aXNbMV0sXG4gICAgICB6ID0gYXhpc1syXTtcbiAgdmFyIGxlbiA9IE1hdGguaHlwb3QoeCwgeSwgeik7XG4gIHZhciBzLCBjLCB0O1xuXG4gIGlmIChsZW4gPCBnbE1hdHJpeC5FUFNJTE9OKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZW4gPSAxIC8gbGVuO1xuICB4ICo9IGxlbjtcbiAgeSAqPSBsZW47XG4gIHogKj0gbGVuO1xuICBzID0gTWF0aC5zaW4ocmFkKTtcbiAgYyA9IE1hdGguY29zKHJhZCk7XG4gIHQgPSAxIC0gYzsgLy8gUGVyZm9ybSByb3RhdGlvbi1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb25cblxuICBvdXRbMF0gPSB4ICogeCAqIHQgKyBjO1xuICBvdXRbMV0gPSB5ICogeCAqIHQgKyB6ICogcztcbiAgb3V0WzJdID0geiAqIHggKiB0IC0geSAqIHM7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IHggKiB5ICogdCAtIHogKiBzO1xuICBvdXRbNV0gPSB5ICogeSAqIHQgKyBjO1xuICBvdXRbNl0gPSB6ICogeSAqIHQgKyB4ICogcztcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0geCAqIHogKiB0ICsgeSAqIHM7XG4gIG91dFs5XSA9IHkgKiB6ICogdCAtIHggKiBzO1xuICBvdXRbMTBdID0geiAqIHogKiB0ICsgYztcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IDA7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gdGhlIGdpdmVuIGFuZ2xlIGFyb3VuZCB0aGUgWCBheGlzXG4gKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTpcbiAqXG4gKiAgICAgbWF0NC5pZGVudGl0eShkZXN0KTtcbiAqICAgICBtYXQ0LnJvdGF0ZVgoZGVzdCwgZGVzdCwgcmFkKTtcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIHRoZSBhbmdsZSB0byByb3RhdGUgdGhlIG1hdHJpeCBieVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tWFJvdGF0aW9uKG91dCwgcmFkKSB7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKTtcbiAgdmFyIGMgPSBNYXRoLmNvcyhyYWQpOyAvLyBQZXJmb3JtIGF4aXMtc3BlY2lmaWMgbWF0cml4IG11bHRpcGxpY2F0aW9uXG5cbiAgb3V0WzBdID0gMTtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gYztcbiAgb3V0WzZdID0gcztcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMDtcbiAgb3V0WzldID0gLXM7XG4gIG91dFsxMF0gPSBjO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IDA7XG4gIG91dFsxM10gPSAwO1xuICBvdXRbMTRdID0gMDtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSB0aGUgZ2l2ZW4gYW5nbGUgYXJvdW5kIHRoZSBZIGF4aXNcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDQucm90YXRlWShkZXN0LCBkZXN0LCByYWQpO1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIHRvIHJvdGF0ZSB0aGUgbWF0cml4IGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21ZUm90YXRpb24ob3V0LCByYWQpIHtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYyA9IE1hdGguY29zKHJhZCk7IC8vIFBlcmZvcm0gYXhpcy1zcGVjaWZpYyBtYXRyaXggbXVsdGlwbGljYXRpb25cblxuICBvdXRbMF0gPSBjO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAtcztcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gMTtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gcztcbiAgb3V0WzldID0gMDtcbiAgb3V0WzEwXSA9IGM7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gMDtcbiAgb3V0WzEzXSA9IDA7XG4gIG91dFsxNF0gPSAwO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIHRoZSBnaXZlbiBhbmdsZSBhcm91bmQgdGhlIFogYXhpc1xuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC5yb3RhdGVaKGRlc3QsIGRlc3QsIHJhZCk7XG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCB0aGUgYW5nbGUgdG8gcm90YXRlIHRoZSBtYXRyaXggYnlcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVpSb3RhdGlvbihvdXQsIHJhZCkge1xuICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gIHZhciBjID0gTWF0aC5jb3MocmFkKTsgLy8gUGVyZm9ybSBheGlzLXNwZWNpZmljIG1hdHJpeCBtdWx0aXBsaWNhdGlvblxuXG4gIG91dFswXSA9IGM7XG4gIG91dFsxXSA9IHM7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IC1zO1xuICBvdXRbNV0gPSBjO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTBdID0gMTtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IDA7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZyb20gYSBxdWF0ZXJuaW9uIHJvdGF0aW9uIGFuZCB2ZWN0b3IgdHJhbnNsYXRpb25cbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDQudHJhbnNsYXRlKGRlc3QsIHZlYyk7XG4gKiAgICAgbGV0IHF1YXRNYXQgPSBtYXQ0LmNyZWF0ZSgpO1xuICogICAgIHF1YXQ0LnRvTWF0NChxdWF0LCBxdWF0TWF0KTtcbiAqICAgICBtYXQ0Lm11bHRpcGx5KGRlc3QsIHF1YXRNYXQpO1xuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7cXVhdDR9IHEgUm90YXRpb24gcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHYgVHJhbnNsYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG91dCwgcSwgdikge1xuICAvLyBRdWF0ZXJuaW9uIG1hdGhcbiAgdmFyIHggPSBxWzBdLFxuICAgICAgeSA9IHFbMV0sXG4gICAgICB6ID0gcVsyXSxcbiAgICAgIHcgPSBxWzNdO1xuICB2YXIgeDIgPSB4ICsgeDtcbiAgdmFyIHkyID0geSArIHk7XG4gIHZhciB6MiA9IHogKyB6O1xuICB2YXIgeHggPSB4ICogeDI7XG4gIHZhciB4eSA9IHggKiB5MjtcbiAgdmFyIHh6ID0geCAqIHoyO1xuICB2YXIgeXkgPSB5ICogeTI7XG4gIHZhciB5eiA9IHkgKiB6MjtcbiAgdmFyIHp6ID0geiAqIHoyO1xuICB2YXIgd3ggPSB3ICogeDI7XG4gIHZhciB3eSA9IHcgKiB5MjtcbiAgdmFyIHd6ID0gdyAqIHoyO1xuICBvdXRbMF0gPSAxIC0gKHl5ICsgenopO1xuICBvdXRbMV0gPSB4eSArIHd6O1xuICBvdXRbMl0gPSB4eiAtIHd5O1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSB4eSAtIHd6O1xuICBvdXRbNV0gPSAxIC0gKHh4ICsgenopO1xuICBvdXRbNl0gPSB5eiArIHd4O1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSB4eiArIHd5O1xuICBvdXRbOV0gPSB5eiAtIHd4O1xuICBvdXRbMTBdID0gMSAtICh4eCArIHl5KTtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSB2WzBdO1xuICBvdXRbMTNdID0gdlsxXTtcbiAgb3V0WzE0XSA9IHZbMl07XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IG1hdDQgZnJvbSBhIGR1YWwgcXVhdC5cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBNYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSBEdWFsIFF1YXRlcm5pb25cbiAqIEByZXR1cm5zIHttYXQ0fSBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21RdWF0MihvdXQsIGEpIHtcbiAgdmFyIHRyYW5zbGF0aW9uID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7XG4gIHZhciBieCA9IC1hWzBdLFxuICAgICAgYnkgPSAtYVsxXSxcbiAgICAgIGJ6ID0gLWFbMl0sXG4gICAgICBidyA9IGFbM10sXG4gICAgICBheCA9IGFbNF0sXG4gICAgICBheSA9IGFbNV0sXG4gICAgICBheiA9IGFbNl0sXG4gICAgICBhdyA9IGFbN107XG4gIHZhciBtYWduaXR1ZGUgPSBieCAqIGJ4ICsgYnkgKiBieSArIGJ6ICogYnogKyBidyAqIGJ3OyAvL09ubHkgc2NhbGUgaWYgaXQgbWFrZXMgc2Vuc2VcblxuICBpZiAobWFnbml0dWRlID4gMCkge1xuICAgIHRyYW5zbGF0aW9uWzBdID0gKGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnkpICogMiAvIG1hZ25pdHVkZTtcbiAgICB0cmFuc2xhdGlvblsxXSA9IChheSAqIGJ3ICsgYXcgKiBieSArIGF6ICogYnggLSBheCAqIGJ6KSAqIDIgLyBtYWduaXR1ZGU7XG4gICAgdHJhbnNsYXRpb25bMl0gPSAoYXogKiBidyArIGF3ICogYnogKyBheCAqIGJ5IC0gYXkgKiBieCkgKiAyIC8gbWFnbml0dWRlO1xuICB9IGVsc2Uge1xuICAgIHRyYW5zbGF0aW9uWzBdID0gKGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnkpICogMjtcbiAgICB0cmFuc2xhdGlvblsxXSA9IChheSAqIGJ3ICsgYXcgKiBieSArIGF6ICogYnggLSBheCAqIGJ6KSAqIDI7XG4gICAgdHJhbnNsYXRpb25bMl0gPSAoYXogKiBidyArIGF3ICogYnogKyBheCAqIGJ5IC0gYXkgKiBieCkgKiAyO1xuICB9XG5cbiAgZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24ob3V0LCBhLCB0cmFuc2xhdGlvbik7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zbGF0aW9uIHZlY3RvciBjb21wb25lbnQgb2YgYSB0cmFuc2Zvcm1hdGlvblxuICogIG1hdHJpeC4gSWYgYSBtYXRyaXggaXMgYnVpbHQgd2l0aCBmcm9tUm90YXRpb25UcmFuc2xhdGlvbixcbiAqICB0aGUgcmV0dXJuZWQgdmVjdG9yIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIHRyYW5zbGF0aW9uIHZlY3RvclxuICogIG9yaWdpbmFsbHkgc3VwcGxpZWQuXG4gKiBAcGFyYW0gIHt2ZWMzfSBvdXQgVmVjdG9yIHRvIHJlY2VpdmUgdHJhbnNsYXRpb24gY29tcG9uZW50XG4gKiBAcGFyYW0gIHtSZWFkb25seU1hdDR9IG1hdCBNYXRyaXggdG8gYmUgZGVjb21wb3NlZCAoaW5wdXQpXG4gKiBAcmV0dXJuIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNsYXRpb24ob3V0LCBtYXQpIHtcbiAgb3V0WzBdID0gbWF0WzEyXTtcbiAgb3V0WzFdID0gbWF0WzEzXTtcbiAgb3V0WzJdID0gbWF0WzE0XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgc2NhbGluZyBmYWN0b3IgY29tcG9uZW50IG9mIGEgdHJhbnNmb3JtYXRpb25cbiAqICBtYXRyaXguIElmIGEgbWF0cml4IGlzIGJ1aWx0IHdpdGggZnJvbVJvdGF0aW9uVHJhbnNsYXRpb25TY2FsZVxuICogIHdpdGggYSBub3JtYWxpemVkIFF1YXRlcm5pb24gcGFyYW10ZXIsIHRoZSByZXR1cm5lZCB2ZWN0b3Igd2lsbCBiZVxuICogIHRoZSBzYW1lIGFzIHRoZSBzY2FsaW5nIHZlY3RvclxuICogIG9yaWdpbmFsbHkgc3VwcGxpZWQuXG4gKiBAcGFyYW0gIHt2ZWMzfSBvdXQgVmVjdG9yIHRvIHJlY2VpdmUgc2NhbGluZyBmYWN0b3IgY29tcG9uZW50XG4gKiBAcGFyYW0gIHtSZWFkb25seU1hdDR9IG1hdCBNYXRyaXggdG8gYmUgZGVjb21wb3NlZCAoaW5wdXQpXG4gKiBAcmV0dXJuIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGluZyhvdXQsIG1hdCkge1xuICB2YXIgbTExID0gbWF0WzBdO1xuICB2YXIgbTEyID0gbWF0WzFdO1xuICB2YXIgbTEzID0gbWF0WzJdO1xuICB2YXIgbTIxID0gbWF0WzRdO1xuICB2YXIgbTIyID0gbWF0WzVdO1xuICB2YXIgbTIzID0gbWF0WzZdO1xuICB2YXIgbTMxID0gbWF0WzhdO1xuICB2YXIgbTMyID0gbWF0WzldO1xuICB2YXIgbTMzID0gbWF0WzEwXTtcbiAgb3V0WzBdID0gTWF0aC5oeXBvdChtMTEsIG0xMiwgbTEzKTtcbiAgb3V0WzFdID0gTWF0aC5oeXBvdChtMjEsIG0yMiwgbTIzKTtcbiAgb3V0WzJdID0gTWF0aC5oeXBvdChtMzEsIG0zMiwgbTMzKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyBhIHF1YXRlcm5pb24gcmVwcmVzZW50aW5nIHRoZSByb3RhdGlvbmFsIGNvbXBvbmVudFxuICogIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4LiBJZiBhIG1hdHJpeCBpcyBidWlsdCB3aXRoXG4gKiAgZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24sIHRoZSByZXR1cm5lZCBxdWF0ZXJuaW9uIHdpbGwgYmUgdGhlXG4gKiAgc2FtZSBhcyB0aGUgcXVhdGVybmlvbiBvcmlnaW5hbGx5IHN1cHBsaWVkLlxuICogQHBhcmFtIHtxdWF0fSBvdXQgUXVhdGVybmlvbiB0byByZWNlaXZlIHRoZSByb3RhdGlvbiBjb21wb25lbnRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBtYXQgTWF0cml4IHRvIGJlIGRlY29tcG9zZWQgKGlucHV0KVxuICogQHJldHVybiB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdGF0aW9uKG91dCwgbWF0KSB7XG4gIHZhciBzY2FsaW5nID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7XG4gIGdldFNjYWxpbmcoc2NhbGluZywgbWF0KTtcbiAgdmFyIGlzMSA9IDEgLyBzY2FsaW5nWzBdO1xuICB2YXIgaXMyID0gMSAvIHNjYWxpbmdbMV07XG4gIHZhciBpczMgPSAxIC8gc2NhbGluZ1syXTtcbiAgdmFyIHNtMTEgPSBtYXRbMF0gKiBpczE7XG4gIHZhciBzbTEyID0gbWF0WzFdICogaXMyO1xuICB2YXIgc20xMyA9IG1hdFsyXSAqIGlzMztcbiAgdmFyIHNtMjEgPSBtYXRbNF0gKiBpczE7XG4gIHZhciBzbTIyID0gbWF0WzVdICogaXMyO1xuICB2YXIgc20yMyA9IG1hdFs2XSAqIGlzMztcbiAgdmFyIHNtMzEgPSBtYXRbOF0gKiBpczE7XG4gIHZhciBzbTMyID0gbWF0WzldICogaXMyO1xuICB2YXIgc20zMyA9IG1hdFsxMF0gKiBpczM7XG4gIHZhciB0cmFjZSA9IHNtMTEgKyBzbTIyICsgc20zMztcbiAgdmFyIFMgPSAwO1xuXG4gIGlmICh0cmFjZSA+IDApIHtcbiAgICBTID0gTWF0aC5zcXJ0KHRyYWNlICsgMS4wKSAqIDI7XG4gICAgb3V0WzNdID0gMC4yNSAqIFM7XG4gICAgb3V0WzBdID0gKHNtMjMgLSBzbTMyKSAvIFM7XG4gICAgb3V0WzFdID0gKHNtMzEgLSBzbTEzKSAvIFM7XG4gICAgb3V0WzJdID0gKHNtMTIgLSBzbTIxKSAvIFM7XG4gIH0gZWxzZSBpZiAoc20xMSA+IHNtMjIgJiYgc20xMSA+IHNtMzMpIHtcbiAgICBTID0gTWF0aC5zcXJ0KDEuMCArIHNtMTEgLSBzbTIyIC0gc20zMykgKiAyO1xuICAgIG91dFszXSA9IChzbTIzIC0gc20zMikgLyBTO1xuICAgIG91dFswXSA9IDAuMjUgKiBTO1xuICAgIG91dFsxXSA9IChzbTEyICsgc20yMSkgLyBTO1xuICAgIG91dFsyXSA9IChzbTMxICsgc20xMykgLyBTO1xuICB9IGVsc2UgaWYgKHNtMjIgPiBzbTMzKSB7XG4gICAgUyA9IE1hdGguc3FydCgxLjAgKyBzbTIyIC0gc20xMSAtIHNtMzMpICogMjtcbiAgICBvdXRbM10gPSAoc20zMSAtIHNtMTMpIC8gUztcbiAgICBvdXRbMF0gPSAoc20xMiArIHNtMjEpIC8gUztcbiAgICBvdXRbMV0gPSAwLjI1ICogUztcbiAgICBvdXRbMl0gPSAoc20yMyArIHNtMzIpIC8gUztcbiAgfSBlbHNlIHtcbiAgICBTID0gTWF0aC5zcXJ0KDEuMCArIHNtMzMgLSBzbTExIC0gc20yMikgKiAyO1xuICAgIG91dFszXSA9IChzbTEyIC0gc20yMSkgLyBTO1xuICAgIG91dFswXSA9IChzbTMxICsgc20xMykgLyBTO1xuICAgIG91dFsxXSA9IChzbTIzICsgc20zMikgLyBTO1xuICAgIG91dFsyXSA9IDAuMjUgKiBTO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmcm9tIGEgcXVhdGVybmlvbiByb3RhdGlvbiwgdmVjdG9yIHRyYW5zbGF0aW9uIGFuZCB2ZWN0b3Igc2NhbGVcbiAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOlxuICpcbiAqICAgICBtYXQ0LmlkZW50aXR5KGRlc3QpO1xuICogICAgIG1hdDQudHJhbnNsYXRlKGRlc3QsIHZlYyk7XG4gKiAgICAgbGV0IHF1YXRNYXQgPSBtYXQ0LmNyZWF0ZSgpO1xuICogICAgIHF1YXQ0LnRvTWF0NChxdWF0LCBxdWF0TWF0KTtcbiAqICAgICBtYXQ0Lm11bHRpcGx5KGRlc3QsIHF1YXRNYXQpO1xuICogICAgIG1hdDQuc2NhbGUoZGVzdCwgc2NhbGUpXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtxdWF0NH0gcSBSb3RhdGlvbiBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdiBUcmFuc2xhdGlvbiB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBzIFNjYWxpbmcgdmVjdG9yXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uU2NhbGUob3V0LCBxLCB2LCBzKSB7XG4gIC8vIFF1YXRlcm5pb24gbWF0aFxuICB2YXIgeCA9IHFbMF0sXG4gICAgICB5ID0gcVsxXSxcbiAgICAgIHogPSBxWzJdLFxuICAgICAgdyA9IHFbM107XG4gIHZhciB4MiA9IHggKyB4O1xuICB2YXIgeTIgPSB5ICsgeTtcbiAgdmFyIHoyID0geiArIHo7XG4gIHZhciB4eCA9IHggKiB4MjtcbiAgdmFyIHh5ID0geCAqIHkyO1xuICB2YXIgeHogPSB4ICogejI7XG4gIHZhciB5eSA9IHkgKiB5MjtcbiAgdmFyIHl6ID0geSAqIHoyO1xuICB2YXIgenogPSB6ICogejI7XG4gIHZhciB3eCA9IHcgKiB4MjtcbiAgdmFyIHd5ID0gdyAqIHkyO1xuICB2YXIgd3ogPSB3ICogejI7XG4gIHZhciBzeCA9IHNbMF07XG4gIHZhciBzeSA9IHNbMV07XG4gIHZhciBzeiA9IHNbMl07XG4gIG91dFswXSA9ICgxIC0gKHl5ICsgenopKSAqIHN4O1xuICBvdXRbMV0gPSAoeHkgKyB3eikgKiBzeDtcbiAgb3V0WzJdID0gKHh6IC0gd3kpICogc3g7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9ICh4eSAtIHd6KSAqIHN5O1xuICBvdXRbNV0gPSAoMSAtICh4eCArIHp6KSkgKiBzeTtcbiAgb3V0WzZdID0gKHl6ICsgd3gpICogc3k7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9ICh4eiArIHd5KSAqIHN6O1xuICBvdXRbOV0gPSAoeXogLSB3eCkgKiBzejtcbiAgb3V0WzEwXSA9ICgxIC0gKHh4ICsgeXkpKSAqIHN6O1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IHZbMF07XG4gIG91dFsxM10gPSB2WzFdO1xuICBvdXRbMTRdID0gdlsyXTtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZnJvbSBhIHF1YXRlcm5pb24gcm90YXRpb24sIHZlY3RvciB0cmFuc2xhdGlvbiBhbmQgdmVjdG9yIHNjYWxlLCByb3RhdGluZyBhbmQgc2NhbGluZyBhcm91bmQgdGhlIGdpdmVuIG9yaWdpblxuICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6XG4gKlxuICogICAgIG1hdDQuaWRlbnRpdHkoZGVzdCk7XG4gKiAgICAgbWF0NC50cmFuc2xhdGUoZGVzdCwgdmVjKTtcbiAqICAgICBtYXQ0LnRyYW5zbGF0ZShkZXN0LCBvcmlnaW4pO1xuICogICAgIGxldCBxdWF0TWF0ID0gbWF0NC5jcmVhdGUoKTtcbiAqICAgICBxdWF0NC50b01hdDQocXVhdCwgcXVhdE1hdCk7XG4gKiAgICAgbWF0NC5tdWx0aXBseShkZXN0LCBxdWF0TWF0KTtcbiAqICAgICBtYXQ0LnNjYWxlKGRlc3QsIHNjYWxlKVxuICogICAgIG1hdDQudHJhbnNsYXRlKGRlc3QsIG5lZ2F0aXZlT3JpZ2luKTtcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge3F1YXQ0fSBxIFJvdGF0aW9uIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB2IFRyYW5zbGF0aW9uIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHMgU2NhbGluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBvIFRoZSBvcmlnaW4gdmVjdG9yIGFyb3VuZCB3aGljaCB0byBzY2FsZSBhbmQgcm90YXRlXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uU2NhbGVPcmlnaW4ob3V0LCBxLCB2LCBzLCBvKSB7XG4gIC8vIFF1YXRlcm5pb24gbWF0aFxuICB2YXIgeCA9IHFbMF0sXG4gICAgICB5ID0gcVsxXSxcbiAgICAgIHogPSBxWzJdLFxuICAgICAgdyA9IHFbM107XG4gIHZhciB4MiA9IHggKyB4O1xuICB2YXIgeTIgPSB5ICsgeTtcbiAgdmFyIHoyID0geiArIHo7XG4gIHZhciB4eCA9IHggKiB4MjtcbiAgdmFyIHh5ID0geCAqIHkyO1xuICB2YXIgeHogPSB4ICogejI7XG4gIHZhciB5eSA9IHkgKiB5MjtcbiAgdmFyIHl6ID0geSAqIHoyO1xuICB2YXIgenogPSB6ICogejI7XG4gIHZhciB3eCA9IHcgKiB4MjtcbiAgdmFyIHd5ID0gdyAqIHkyO1xuICB2YXIgd3ogPSB3ICogejI7XG4gIHZhciBzeCA9IHNbMF07XG4gIHZhciBzeSA9IHNbMV07XG4gIHZhciBzeiA9IHNbMl07XG4gIHZhciBveCA9IG9bMF07XG4gIHZhciBveSA9IG9bMV07XG4gIHZhciBveiA9IG9bMl07XG4gIHZhciBvdXQwID0gKDEgLSAoeXkgKyB6eikpICogc3g7XG4gIHZhciBvdXQxID0gKHh5ICsgd3opICogc3g7XG4gIHZhciBvdXQyID0gKHh6IC0gd3kpICogc3g7XG4gIHZhciBvdXQ0ID0gKHh5IC0gd3opICogc3k7XG4gIHZhciBvdXQ1ID0gKDEgLSAoeHggKyB6eikpICogc3k7XG4gIHZhciBvdXQ2ID0gKHl6ICsgd3gpICogc3k7XG4gIHZhciBvdXQ4ID0gKHh6ICsgd3kpICogc3o7XG4gIHZhciBvdXQ5ID0gKHl6IC0gd3gpICogc3o7XG4gIHZhciBvdXQxMCA9ICgxIC0gKHh4ICsgeXkpKSAqIHN6O1xuICBvdXRbMF0gPSBvdXQwO1xuICBvdXRbMV0gPSBvdXQxO1xuICBvdXRbMl0gPSBvdXQyO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSBvdXQ0O1xuICBvdXRbNV0gPSBvdXQ1O1xuICBvdXRbNl0gPSBvdXQ2O1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSBvdXQ4O1xuICBvdXRbOV0gPSBvdXQ5O1xuICBvdXRbMTBdID0gb3V0MTA7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gdlswXSArIG94IC0gKG91dDAgKiBveCArIG91dDQgKiBveSArIG91dDggKiBveik7XG4gIG91dFsxM10gPSB2WzFdICsgb3kgLSAob3V0MSAqIG94ICsgb3V0NSAqIG95ICsgb3V0OSAqIG96KTtcbiAgb3V0WzE0XSA9IHZbMl0gKyBveiAtIChvdXQyICogb3ggKyBvdXQ2ICogb3kgKyBvdXQxMCAqIG96KTtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgYSA0eDQgbWF0cml4IGZyb20gdGhlIGdpdmVuIHF1YXRlcm5pb25cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBRdWF0ZXJuaW9uIHRvIGNyZWF0ZSBtYXRyaXggZnJvbVxuICpcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVF1YXQob3V0LCBxKSB7XG4gIHZhciB4ID0gcVswXSxcbiAgICAgIHkgPSBxWzFdLFxuICAgICAgeiA9IHFbMl0sXG4gICAgICB3ID0gcVszXTtcbiAgdmFyIHgyID0geCArIHg7XG4gIHZhciB5MiA9IHkgKyB5O1xuICB2YXIgejIgPSB6ICsgejtcbiAgdmFyIHh4ID0geCAqIHgyO1xuICB2YXIgeXggPSB5ICogeDI7XG4gIHZhciB5eSA9IHkgKiB5MjtcbiAgdmFyIHp4ID0geiAqIHgyO1xuICB2YXIgenkgPSB6ICogeTI7XG4gIHZhciB6eiA9IHogKiB6MjtcbiAgdmFyIHd4ID0gdyAqIHgyO1xuICB2YXIgd3kgPSB3ICogeTI7XG4gIHZhciB3eiA9IHcgKiB6MjtcbiAgb3V0WzBdID0gMSAtIHl5IC0geno7XG4gIG91dFsxXSA9IHl4ICsgd3o7XG4gIG91dFsyXSA9IHp4IC0gd3k7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IHl4IC0gd3o7XG4gIG91dFs1XSA9IDEgLSB4eCAtIHp6O1xuICBvdXRbNl0gPSB6eSArIHd4O1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSB6eCArIHd5O1xuICBvdXRbOV0gPSB6eSAtIHd4O1xuICBvdXRbMTBdID0gMSAtIHh4IC0geXk7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gMDtcbiAgb3V0WzEzXSA9IDA7XG4gIG91dFsxNF0gPSAwO1xuICBvdXRbMTVdID0gMTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2VuZXJhdGVzIGEgZnJ1c3R1bSBtYXRyaXggd2l0aCB0aGUgZ2l2ZW4gYm91bmRzXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtOdW1iZXJ9IGxlZnQgTGVmdCBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtOdW1iZXJ9IHJpZ2h0IFJpZ2h0IGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge051bWJlcn0gYm90dG9tIEJvdHRvbSBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtOdW1iZXJ9IHRvcCBUb3AgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7TnVtYmVyfSBuZWFyIE5lYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7TnVtYmVyfSBmYXIgRmFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZydXN0dW0ob3V0LCBsZWZ0LCByaWdodCwgYm90dG9tLCB0b3AsIG5lYXIsIGZhcikge1xuICB2YXIgcmwgPSAxIC8gKHJpZ2h0IC0gbGVmdCk7XG4gIHZhciB0YiA9IDEgLyAodG9wIC0gYm90dG9tKTtcbiAgdmFyIG5mID0gMSAvIChuZWFyIC0gZmFyKTtcbiAgb3V0WzBdID0gbmVhciAqIDIgKiBybDtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gbmVhciAqIDIgKiB0YjtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gKHJpZ2h0ICsgbGVmdCkgKiBybDtcbiAgb3V0WzldID0gKHRvcCArIGJvdHRvbSkgKiB0YjtcbiAgb3V0WzEwXSA9IChmYXIgKyBuZWFyKSAqIG5mO1xuICBvdXRbMTFdID0gLTE7XG4gIG91dFsxMl0gPSAwO1xuICBvdXRbMTNdID0gMDtcbiAgb3V0WzE0XSA9IGZhciAqIG5lYXIgKiAyICogbmY7XG4gIG91dFsxNV0gPSAwO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBib3VuZHMuXG4gKiBUaGUgbmVhci9mYXIgY2xpcCBwbGFuZXMgY29ycmVzcG9uZCB0byBhIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGUgWiByYW5nZSBvZiBbLTEsIDFdLFxuICogd2hpY2ggbWF0Y2hlcyBXZWJHTC9PcGVuR0wncyBjbGlwIHZvbHVtZS5cbiAqIFBhc3NpbmcgbnVsbC91bmRlZmluZWQvbm8gdmFsdWUgZm9yIGZhciB3aWxsIGdlbmVyYXRlIGluZmluaXRlIHByb2plY3Rpb24gbWF0cml4LlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG9cbiAqIEBwYXJhbSB7bnVtYmVyfSBmb3Z5IFZlcnRpY2FsIGZpZWxkIG9mIHZpZXcgaW4gcmFkaWFuc1xuICogQHBhcmFtIHtudW1iZXJ9IGFzcGVjdCBBc3BlY3QgcmF0aW8uIHR5cGljYWxseSB2aWV3cG9ydCB3aWR0aC9oZWlnaHRcbiAqIEBwYXJhbSB7bnVtYmVyfSBuZWFyIE5lYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSBmYXIgRmFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtLCBjYW4gYmUgbnVsbCBvciBJbmZpbml0eVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJzcGVjdGl2ZU5PKG91dCwgZm92eSwgYXNwZWN0LCBuZWFyLCBmYXIpIHtcbiAgdmFyIGYgPSAxLjAgLyBNYXRoLnRhbihmb3Z5IC8gMiksXG4gICAgICBuZjtcbiAgb3V0WzBdID0gZiAvIGFzcGVjdDtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gZjtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMDtcbiAgb3V0WzldID0gMDtcbiAgb3V0WzExXSA9IC0xO1xuICBvdXRbMTJdID0gMDtcbiAgb3V0WzEzXSA9IDA7XG4gIG91dFsxNV0gPSAwO1xuXG4gIGlmIChmYXIgIT0gbnVsbCAmJiBmYXIgIT09IEluZmluaXR5KSB7XG4gICAgbmYgPSAxIC8gKG5lYXIgLSBmYXIpO1xuICAgIG91dFsxMF0gPSAoZmFyICsgbmVhcikgKiBuZjtcbiAgICBvdXRbMTRdID0gMiAqIGZhciAqIG5lYXIgKiBuZjtcbiAgfSBlbHNlIHtcbiAgICBvdXRbMTBdID0gLTE7XG4gICAgb3V0WzE0XSA9IC0yICogbmVhcjtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0NC5wZXJzcGVjdGl2ZU5PfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBwZXJzcGVjdGl2ZSA9IHBlcnNwZWN0aXZlTk87XG4vKipcbiAqIEdlbmVyYXRlcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4IHN1aXRhYmxlIGZvciBXZWJHUFUgd2l0aCB0aGUgZ2l2ZW4gYm91bmRzLlxuICogVGhlIG5lYXIvZmFyIGNsaXAgcGxhbmVzIGNvcnJlc3BvbmQgdG8gYSBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlIFogcmFuZ2Ugb2YgWzAsIDFdLFxuICogd2hpY2ggbWF0Y2hlcyBXZWJHUFUvVnVsa2FuL0RpcmVjdFgvTWV0YWwncyBjbGlwIHZvbHVtZS5cbiAqIFBhc3NpbmcgbnVsbC91bmRlZmluZWQvbm8gdmFsdWUgZm9yIGZhciB3aWxsIGdlbmVyYXRlIGluZmluaXRlIHByb2plY3Rpb24gbWF0cml4LlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG9cbiAqIEBwYXJhbSB7bnVtYmVyfSBmb3Z5IFZlcnRpY2FsIGZpZWxkIG9mIHZpZXcgaW4gcmFkaWFuc1xuICogQHBhcmFtIHtudW1iZXJ9IGFzcGVjdCBBc3BlY3QgcmF0aW8uIHR5cGljYWxseSB2aWV3cG9ydCB3aWR0aC9oZWlnaHRcbiAqIEBwYXJhbSB7bnVtYmVyfSBuZWFyIE5lYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSBmYXIgRmFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtLCBjYW4gYmUgbnVsbCBvciBJbmZpbml0eVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJzcGVjdGl2ZVpPKG91dCwgZm92eSwgYXNwZWN0LCBuZWFyLCBmYXIpIHtcbiAgdmFyIGYgPSAxLjAgLyBNYXRoLnRhbihmb3Z5IC8gMiksXG4gICAgICBuZjtcbiAgb3V0WzBdID0gZiAvIGFzcGVjdDtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMDtcbiAgb3V0WzRdID0gMDtcbiAgb3V0WzVdID0gZjtcbiAgb3V0WzZdID0gMDtcbiAgb3V0WzddID0gMDtcbiAgb3V0WzhdID0gMDtcbiAgb3V0WzldID0gMDtcbiAgb3V0WzExXSA9IC0xO1xuICBvdXRbMTJdID0gMDtcbiAgb3V0WzEzXSA9IDA7XG4gIG91dFsxNV0gPSAwO1xuXG4gIGlmIChmYXIgIT0gbnVsbCAmJiBmYXIgIT09IEluZmluaXR5KSB7XG4gICAgbmYgPSAxIC8gKG5lYXIgLSBmYXIpO1xuICAgIG91dFsxMF0gPSBmYXIgKiBuZjtcbiAgICBvdXRbMTRdID0gZmFyICogbmVhciAqIG5mO1xuICB9IGVsc2Uge1xuICAgIG91dFsxMF0gPSAtMTtcbiAgICBvdXRbMTRdID0gLW5lYXI7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBmaWVsZCBvZiB2aWV3LlxuICogVGhpcyBpcyBwcmltYXJpbHkgdXNlZnVsIGZvciBnZW5lcmF0aW5nIHByb2plY3Rpb24gbWF0cmljZXMgdG8gYmUgdXNlZFxuICogd2l0aCB0aGUgc3RpbGwgZXhwZXJpZW1lbnRhbCBXZWJWUiBBUEkuXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtPYmplY3R9IGZvdiBPYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIHZhbHVlczogdXBEZWdyZWVzLCBkb3duRGVncmVlcywgbGVmdERlZ3JlZXMsIHJpZ2h0RGVncmVlc1xuICogQHBhcmFtIHtudW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IGZhciBGYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGVyc3BlY3RpdmVGcm9tRmllbGRPZlZpZXcob3V0LCBmb3YsIG5lYXIsIGZhcikge1xuICB2YXIgdXBUYW4gPSBNYXRoLnRhbihmb3YudXBEZWdyZWVzICogTWF0aC5QSSAvIDE4MC4wKTtcbiAgdmFyIGRvd25UYW4gPSBNYXRoLnRhbihmb3YuZG93bkRlZ3JlZXMgKiBNYXRoLlBJIC8gMTgwLjApO1xuICB2YXIgbGVmdFRhbiA9IE1hdGgudGFuKGZvdi5sZWZ0RGVncmVlcyAqIE1hdGguUEkgLyAxODAuMCk7XG4gIHZhciByaWdodFRhbiA9IE1hdGgudGFuKGZvdi5yaWdodERlZ3JlZXMgKiBNYXRoLlBJIC8gMTgwLjApO1xuICB2YXIgeFNjYWxlID0gMi4wIC8gKGxlZnRUYW4gKyByaWdodFRhbik7XG4gIHZhciB5U2NhbGUgPSAyLjAgLyAodXBUYW4gKyBkb3duVGFuKTtcbiAgb3V0WzBdID0geFNjYWxlO1xuICBvdXRbMV0gPSAwLjA7XG4gIG91dFsyXSA9IDAuMDtcbiAgb3V0WzNdID0gMC4wO1xuICBvdXRbNF0gPSAwLjA7XG4gIG91dFs1XSA9IHlTY2FsZTtcbiAgb3V0WzZdID0gMC4wO1xuICBvdXRbN10gPSAwLjA7XG4gIG91dFs4XSA9IC0oKGxlZnRUYW4gLSByaWdodFRhbikgKiB4U2NhbGUgKiAwLjUpO1xuICBvdXRbOV0gPSAodXBUYW4gLSBkb3duVGFuKSAqIHlTY2FsZSAqIDAuNTtcbiAgb3V0WzEwXSA9IGZhciAvIChuZWFyIC0gZmFyKTtcbiAgb3V0WzExXSA9IC0xLjA7XG4gIG91dFsxMl0gPSAwLjA7XG4gIG91dFsxM10gPSAwLjA7XG4gIG91dFsxNF0gPSBmYXIgKiBuZWFyIC8gKG5lYXIgLSBmYXIpO1xuICBvdXRbMTVdID0gMC4wO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBvcnRob2dvbmFsIHByb2plY3Rpb24gbWF0cml4IHdpdGggdGhlIGdpdmVuIGJvdW5kcy5cbiAqIFRoZSBuZWFyL2ZhciBjbGlwIHBsYW5lcyBjb3JyZXNwb25kIHRvIGEgbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZSBaIHJhbmdlIG9mIFstMSwgMV0sXG4gKiB3aGljaCBtYXRjaGVzIFdlYkdML09wZW5HTCdzIGNsaXAgdm9sdW1lLlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG9cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZWZ0IExlZnQgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSByaWdodCBSaWdodCBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IGJvdHRvbSBCb3R0b20gYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSB0b3AgVG9wIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gbmVhciBOZWFyIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gZmFyIEZhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBvcnRob05PKG91dCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBuZWFyLCBmYXIpIHtcbiAgdmFyIGxyID0gMSAvIChsZWZ0IC0gcmlnaHQpO1xuICB2YXIgYnQgPSAxIC8gKGJvdHRvbSAtIHRvcCk7XG4gIHZhciBuZiA9IDEgLyAobmVhciAtIGZhcik7XG4gIG91dFswXSA9IC0yICogbHI7XG4gIG91dFsxXSA9IDA7XG4gIG91dFsyXSA9IDA7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IC0yICogYnQ7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IDA7XG4gIG91dFs5XSA9IDA7XG4gIG91dFsxMF0gPSAyICogbmY7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gKGxlZnQgKyByaWdodCkgKiBscjtcbiAgb3V0WzEzXSA9ICh0b3AgKyBib3R0b20pICogYnQ7XG4gIG91dFsxNF0gPSAoZmFyICsgbmVhcikgKiBuZjtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgbWF0NC5vcnRob05PfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBvcnRobyA9IG9ydGhvTk87XG4vKipcbiAqIEdlbmVyYXRlcyBhIG9ydGhvZ29uYWwgcHJvamVjdGlvbiBtYXRyaXggd2l0aCB0aGUgZ2l2ZW4gYm91bmRzLlxuICogVGhlIG5lYXIvZmFyIGNsaXAgcGxhbmVzIGNvcnJlc3BvbmQgdG8gYSBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlIFogcmFuZ2Ugb2YgWzAsIDFdLFxuICogd2hpY2ggbWF0Y2hlcyBXZWJHUFUvVnVsa2FuL0RpcmVjdFgvTWV0YWwncyBjbGlwIHZvbHVtZS5cbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCBtYXQ0IGZydXN0dW0gbWF0cml4IHdpbGwgYmUgd3JpdHRlbiBpbnRvXG4gKiBAcGFyYW0ge251bWJlcn0gbGVmdCBMZWZ0IGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gcmlnaHQgUmlnaHQgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEBwYXJhbSB7bnVtYmVyfSBib3R0b20gQm90dG9tIGJvdW5kIG9mIHRoZSBmcnVzdHVtXG4gKiBAcGFyYW0ge251bWJlcn0gdG9wIFRvcCBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IG5lYXIgTmVhciBib3VuZCBvZiB0aGUgZnJ1c3R1bVxuICogQHBhcmFtIHtudW1iZXJ9IGZhciBGYXIgYm91bmQgb2YgdGhlIGZydXN0dW1cbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gb3J0aG9aTyhvdXQsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHRvcCwgbmVhciwgZmFyKSB7XG4gIHZhciBsciA9IDEgLyAobGVmdCAtIHJpZ2h0KTtcbiAgdmFyIGJ0ID0gMSAvIChib3R0b20gLSB0b3ApO1xuICB2YXIgbmYgPSAxIC8gKG5lYXIgLSBmYXIpO1xuICBvdXRbMF0gPSAtMiAqIGxyO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAtMiAqIGJ0O1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSAwO1xuICBvdXRbOV0gPSAwO1xuICBvdXRbMTBdID0gbmY7XG4gIG91dFsxMV0gPSAwO1xuICBvdXRbMTJdID0gKGxlZnQgKyByaWdodCkgKiBscjtcbiAgb3V0WzEzXSA9ICh0b3AgKyBib3R0b20pICogYnQ7XG4gIG91dFsxNF0gPSBuZWFyICogbmY7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBsb29rLWF0IG1hdHJpeCB3aXRoIHRoZSBnaXZlbiBleWUgcG9zaXRpb24sIGZvY2FsIHBvaW50LCBhbmQgdXAgYXhpcy5cbiAqIElmIHlvdSB3YW50IGEgbWF0cml4IHRoYXQgYWN0dWFsbHkgbWFrZXMgYW4gb2JqZWN0IGxvb2sgYXQgYW5vdGhlciBvYmplY3QsIHlvdSBzaG91bGQgdXNlIHRhcmdldFRvIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgbWF0NCBmcnVzdHVtIG1hdHJpeCB3aWxsIGJlIHdyaXR0ZW4gaW50b1xuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGV5ZSBQb3NpdGlvbiBvZiB0aGUgdmlld2VyXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gY2VudGVyIFBvaW50IHRoZSB2aWV3ZXIgaXMgbG9va2luZyBhdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHVwIHZlYzMgcG9pbnRpbmcgdXBcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va0F0KG91dCwgZXllLCBjZW50ZXIsIHVwKSB7XG4gIHZhciB4MCwgeDEsIHgyLCB5MCwgeTEsIHkyLCB6MCwgejEsIHoyLCBsZW47XG4gIHZhciBleWV4ID0gZXllWzBdO1xuICB2YXIgZXlleSA9IGV5ZVsxXTtcbiAgdmFyIGV5ZXogPSBleWVbMl07XG4gIHZhciB1cHggPSB1cFswXTtcbiAgdmFyIHVweSA9IHVwWzFdO1xuICB2YXIgdXB6ID0gdXBbMl07XG4gIHZhciBjZW50ZXJ4ID0gY2VudGVyWzBdO1xuICB2YXIgY2VudGVyeSA9IGNlbnRlclsxXTtcbiAgdmFyIGNlbnRlcnogPSBjZW50ZXJbMl07XG5cbiAgaWYgKE1hdGguYWJzKGV5ZXggLSBjZW50ZXJ4KSA8IGdsTWF0cml4LkVQU0lMT04gJiYgTWF0aC5hYnMoZXlleSAtIGNlbnRlcnkpIDwgZ2xNYXRyaXguRVBTSUxPTiAmJiBNYXRoLmFicyhleWV6IC0gY2VudGVyeikgPCBnbE1hdHJpeC5FUFNJTE9OKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5KG91dCk7XG4gIH1cblxuICB6MCA9IGV5ZXggLSBjZW50ZXJ4O1xuICB6MSA9IGV5ZXkgLSBjZW50ZXJ5O1xuICB6MiA9IGV5ZXogLSBjZW50ZXJ6O1xuICBsZW4gPSAxIC8gTWF0aC5oeXBvdCh6MCwgejEsIHoyKTtcbiAgejAgKj0gbGVuO1xuICB6MSAqPSBsZW47XG4gIHoyICo9IGxlbjtcbiAgeDAgPSB1cHkgKiB6MiAtIHVweiAqIHoxO1xuICB4MSA9IHVweiAqIHowIC0gdXB4ICogejI7XG4gIHgyID0gdXB4ICogejEgLSB1cHkgKiB6MDtcbiAgbGVuID0gTWF0aC5oeXBvdCh4MCwgeDEsIHgyKTtcblxuICBpZiAoIWxlbikge1xuICAgIHgwID0gMDtcbiAgICB4MSA9IDA7XG4gICAgeDIgPSAwO1xuICB9IGVsc2Uge1xuICAgIGxlbiA9IDEgLyBsZW47XG4gICAgeDAgKj0gbGVuO1xuICAgIHgxICo9IGxlbjtcbiAgICB4MiAqPSBsZW47XG4gIH1cblxuICB5MCA9IHoxICogeDIgLSB6MiAqIHgxO1xuICB5MSA9IHoyICogeDAgLSB6MCAqIHgyO1xuICB5MiA9IHowICogeDEgLSB6MSAqIHgwO1xuICBsZW4gPSBNYXRoLmh5cG90KHkwLCB5MSwgeTIpO1xuXG4gIGlmICghbGVuKSB7XG4gICAgeTAgPSAwO1xuICAgIHkxID0gMDtcbiAgICB5MiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgbGVuID0gMSAvIGxlbjtcbiAgICB5MCAqPSBsZW47XG4gICAgeTEgKj0gbGVuO1xuICAgIHkyICo9IGxlbjtcbiAgfVxuXG4gIG91dFswXSA9IHgwO1xuICBvdXRbMV0gPSB5MDtcbiAgb3V0WzJdID0gejA7XG4gIG91dFszXSA9IDA7XG4gIG91dFs0XSA9IHgxO1xuICBvdXRbNV0gPSB5MTtcbiAgb3V0WzZdID0gejE7XG4gIG91dFs3XSA9IDA7XG4gIG91dFs4XSA9IHgyO1xuICBvdXRbOV0gPSB5MjtcbiAgb3V0WzEwXSA9IHoyO1xuICBvdXRbMTFdID0gMDtcbiAgb3V0WzEyXSA9IC0oeDAgKiBleWV4ICsgeDEgKiBleWV5ICsgeDIgKiBleWV6KTtcbiAgb3V0WzEzXSA9IC0oeTAgKiBleWV4ICsgeTEgKiBleWV5ICsgeTIgKiBleWV6KTtcbiAgb3V0WzE0XSA9IC0oejAgKiBleWV4ICsgejEgKiBleWV5ICsgejIgKiBleWV6KTtcbiAgb3V0WzE1XSA9IDE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIG1hdHJpeCB0aGF0IG1ha2VzIHNvbWV0aGluZyBsb29rIGF0IHNvbWV0aGluZyBlbHNlLlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IG1hdDQgZnJ1c3R1bSBtYXRyaXggd2lsbCBiZSB3cml0dGVuIGludG9cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBleWUgUG9zaXRpb24gb2YgdGhlIHZpZXdlclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGNlbnRlciBQb2ludCB0aGUgdmlld2VyIGlzIGxvb2tpbmcgYXRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB1cCB2ZWMzIHBvaW50aW5nIHVwXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldFRvKG91dCwgZXllLCB0YXJnZXQsIHVwKSB7XG4gIHZhciBleWV4ID0gZXllWzBdLFxuICAgICAgZXlleSA9IGV5ZVsxXSxcbiAgICAgIGV5ZXogPSBleWVbMl0sXG4gICAgICB1cHggPSB1cFswXSxcbiAgICAgIHVweSA9IHVwWzFdLFxuICAgICAgdXB6ID0gdXBbMl07XG4gIHZhciB6MCA9IGV5ZXggLSB0YXJnZXRbMF0sXG4gICAgICB6MSA9IGV5ZXkgLSB0YXJnZXRbMV0sXG4gICAgICB6MiA9IGV5ZXogLSB0YXJnZXRbMl07XG4gIHZhciBsZW4gPSB6MCAqIHowICsgejEgKiB6MSArIHoyICogejI7XG5cbiAgaWYgKGxlbiA+IDApIHtcbiAgICBsZW4gPSAxIC8gTWF0aC5zcXJ0KGxlbik7XG4gICAgejAgKj0gbGVuO1xuICAgIHoxICo9IGxlbjtcbiAgICB6MiAqPSBsZW47XG4gIH1cblxuICB2YXIgeDAgPSB1cHkgKiB6MiAtIHVweiAqIHoxLFxuICAgICAgeDEgPSB1cHogKiB6MCAtIHVweCAqIHoyLFxuICAgICAgeDIgPSB1cHggKiB6MSAtIHVweSAqIHowO1xuICBsZW4gPSB4MCAqIHgwICsgeDEgKiB4MSArIHgyICogeDI7XG5cbiAgaWYgKGxlbiA+IDApIHtcbiAgICBsZW4gPSAxIC8gTWF0aC5zcXJ0KGxlbik7XG4gICAgeDAgKj0gbGVuO1xuICAgIHgxICo9IGxlbjtcbiAgICB4MiAqPSBsZW47XG4gIH1cblxuICBvdXRbMF0gPSB4MDtcbiAgb3V0WzFdID0geDE7XG4gIG91dFsyXSA9IHgyO1xuICBvdXRbM10gPSAwO1xuICBvdXRbNF0gPSB6MSAqIHgyIC0gejIgKiB4MTtcbiAgb3V0WzVdID0gejIgKiB4MCAtIHowICogeDI7XG4gIG91dFs2XSA9IHowICogeDEgLSB6MSAqIHgwO1xuICBvdXRbN10gPSAwO1xuICBvdXRbOF0gPSB6MDtcbiAgb3V0WzldID0gejE7XG4gIG91dFsxMF0gPSB6MjtcbiAgb3V0WzExXSA9IDA7XG4gIG91dFsxMl0gPSBleWV4O1xuICBvdXRbMTNdID0gZXlleTtcbiAgb3V0WzE0XSA9IGV5ZXo7XG4gIG91dFsxNV0gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWF0NFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIG1hdHJpeCB0byByZXByZXNlbnQgYXMgYSBzdHJpbmdcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWF0cml4XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihhKSB7XG4gIHJldHVybiBcIm1hdDQoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIiwgXCIgKyBhWzNdICsgXCIsIFwiICsgYVs0XSArIFwiLCBcIiArIGFbNV0gKyBcIiwgXCIgKyBhWzZdICsgXCIsIFwiICsgYVs3XSArIFwiLCBcIiArIGFbOF0gKyBcIiwgXCIgKyBhWzldICsgXCIsIFwiICsgYVsxMF0gKyBcIiwgXCIgKyBhWzExXSArIFwiLCBcIiArIGFbMTJdICsgXCIsIFwiICsgYVsxM10gKyBcIiwgXCIgKyBhWzE0XSArIFwiLCBcIiArIGFbMTVdICsgXCIpXCI7XG59XG4vKipcbiAqIFJldHVybnMgRnJvYmVuaXVzIG5vcm0gb2YgYSBtYXQ0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIG1hdHJpeCB0byBjYWxjdWxhdGUgRnJvYmVuaXVzIG5vcm0gb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IEZyb2Jlbml1cyBub3JtXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb2IoYSkge1xuICByZXR1cm4gTWF0aC5oeXBvdChhWzBdLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdLCBhWzddLCBhWzhdLCBhWzldLCBhWzEwXSwgYVsxMV0sIGFbMTJdLCBhWzEzXSwgYVsxNF0sIGFbMTVdKTtcbn1cbi8qKlxuICogQWRkcyB0d28gbWF0NCdzXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHttYXQ0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdO1xuICBvdXRbM10gPSBhWzNdICsgYlszXTtcbiAgb3V0WzRdID0gYVs0XSArIGJbNF07XG4gIG91dFs1XSA9IGFbNV0gKyBiWzVdO1xuICBvdXRbNl0gPSBhWzZdICsgYls2XTtcbiAgb3V0WzddID0gYVs3XSArIGJbN107XG4gIG91dFs4XSA9IGFbOF0gKyBiWzhdO1xuICBvdXRbOV0gPSBhWzldICsgYls5XTtcbiAgb3V0WzEwXSA9IGFbMTBdICsgYlsxMF07XG4gIG91dFsxMV0gPSBhWzExXSArIGJbMTFdO1xuICBvdXRbMTJdID0gYVsxMl0gKyBiWzEyXTtcbiAgb3V0WzEzXSA9IGFbMTNdICsgYlsxM107XG4gIG91dFsxNF0gPSBhWzE0XSArIGJbMTRdO1xuICBvdXRbMTVdID0gYVsxNV0gKyBiWzE1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU3VidHJhY3RzIG1hdHJpeCBiIGZyb20gbWF0cml4IGFcbiAqXG4gKiBAcGFyYW0ge21hdDR9IG91dCB0aGUgcmVjZWl2aW5nIG1hdHJpeFxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge21hdDR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0cmFjdChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAtIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gLSBiWzFdO1xuICBvdXRbMl0gPSBhWzJdIC0gYlsyXTtcbiAgb3V0WzNdID0gYVszXSAtIGJbM107XG4gIG91dFs0XSA9IGFbNF0gLSBiWzRdO1xuICBvdXRbNV0gPSBhWzVdIC0gYls1XTtcbiAgb3V0WzZdID0gYVs2XSAtIGJbNl07XG4gIG91dFs3XSA9IGFbN10gLSBiWzddO1xuICBvdXRbOF0gPSBhWzhdIC0gYls4XTtcbiAgb3V0WzldID0gYVs5XSAtIGJbOV07XG4gIG91dFsxMF0gPSBhWzEwXSAtIGJbMTBdO1xuICBvdXRbMTFdID0gYVsxMV0gLSBiWzExXTtcbiAgb3V0WzEyXSA9IGFbMTJdIC0gYlsxMl07XG4gIG91dFsxM10gPSBhWzEzXSAtIGJbMTNdO1xuICBvdXRbMTRdID0gYVsxNF0gLSBiWzE0XTtcbiAgb3V0WzE1XSA9IGFbMTVdIC0gYlsxNV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE11bHRpcGx5IGVhY2ggZWxlbWVudCBvZiB0aGUgbWF0cml4IGJ5IGEgc2NhbGFyLlxuICpcbiAqIEBwYXJhbSB7bWF0NH0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYSB0aGUgbWF0cml4IHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIG1hdHJpeCdzIGVsZW1lbnRzIGJ5XG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5U2NhbGFyKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICogYjtcbiAgb3V0WzFdID0gYVsxXSAqIGI7XG4gIG91dFsyXSA9IGFbMl0gKiBiO1xuICBvdXRbM10gPSBhWzNdICogYjtcbiAgb3V0WzRdID0gYVs0XSAqIGI7XG4gIG91dFs1XSA9IGFbNV0gKiBiO1xuICBvdXRbNl0gPSBhWzZdICogYjtcbiAgb3V0WzddID0gYVs3XSAqIGI7XG4gIG91dFs4XSA9IGFbOF0gKiBiO1xuICBvdXRbOV0gPSBhWzldICogYjtcbiAgb3V0WzEwXSA9IGFbMTBdICogYjtcbiAgb3V0WzExXSA9IGFbMTFdICogYjtcbiAgb3V0WzEyXSA9IGFbMTJdICogYjtcbiAgb3V0WzEzXSA9IGFbMTNdICogYjtcbiAgb3V0WzE0XSA9IGFbMTRdICogYjtcbiAgb3V0WzE1XSA9IGFbMTVdICogYjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gbWF0NCdzIGFmdGVyIG11bHRpcGx5aW5nIGVhY2ggZWxlbWVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgYnkgYSBzY2FsYXIgdmFsdWUuXG4gKlxuICogQHBhcmFtIHttYXQ0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBzY2FsZSB0aGUgYW1vdW50IHRvIHNjYWxlIGIncyBlbGVtZW50cyBieSBiZWZvcmUgYWRkaW5nXG4gKiBAcmV0dXJucyB7bWF0NH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5U2NhbGFyQW5kQWRkKG91dCwgYSwgYiwgc2NhbGUpIHtcbiAgb3V0WzBdID0gYVswXSArIGJbMF0gKiBzY2FsZTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV0gKiBzY2FsZTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl0gKiBzY2FsZTtcbiAgb3V0WzNdID0gYVszXSArIGJbM10gKiBzY2FsZTtcbiAgb3V0WzRdID0gYVs0XSArIGJbNF0gKiBzY2FsZTtcbiAgb3V0WzVdID0gYVs1XSArIGJbNV0gKiBzY2FsZTtcbiAgb3V0WzZdID0gYVs2XSArIGJbNl0gKiBzY2FsZTtcbiAgb3V0WzddID0gYVs3XSArIGJbN10gKiBzY2FsZTtcbiAgb3V0WzhdID0gYVs4XSArIGJbOF0gKiBzY2FsZTtcbiAgb3V0WzldID0gYVs5XSArIGJbOV0gKiBzY2FsZTtcbiAgb3V0WzEwXSA9IGFbMTBdICsgYlsxMF0gKiBzY2FsZTtcbiAgb3V0WzExXSA9IGFbMTFdICsgYlsxMV0gKiBzY2FsZTtcbiAgb3V0WzEyXSA9IGFbMTJdICsgYlsxMl0gKiBzY2FsZTtcbiAgb3V0WzEzXSA9IGFbMTNdICsgYlsxM10gKiBzY2FsZTtcbiAgb3V0WzE0XSA9IGFbMTRdICsgYlsxNF0gKiBzY2FsZTtcbiAgb3V0WzE1XSA9IGFbMTVdICsgYlsxNV0gKiBzY2FsZTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYiBUaGUgc2Vjb25kIG1hdHJpeC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBtYXRyaWNlcyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhhY3RFcXVhbHMoYSwgYikge1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdICYmIGFbMl0gPT09IGJbMl0gJiYgYVszXSA9PT0gYlszXSAmJiBhWzRdID09PSBiWzRdICYmIGFbNV0gPT09IGJbNV0gJiYgYVs2XSA9PT0gYls2XSAmJiBhWzddID09PSBiWzddICYmIGFbOF0gPT09IGJbOF0gJiYgYVs5XSA9PT0gYls5XSAmJiBhWzEwXSA9PT0gYlsxMF0gJiYgYVsxMV0gPT09IGJbMTFdICYmIGFbMTJdID09PSBiWzEyXSAmJiBhWzEzXSA9PT0gYlsxM10gJiYgYVsxNF0gPT09IGJbMTRdICYmIGFbMTVdID09PSBiWzE1XTtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgbWF0cmljZXMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBhIFRoZSBmaXJzdCBtYXRyaXguXG4gKiBAcGFyYW0ge1JlYWRvbmx5TWF0NH0gYiBUaGUgc2Vjb25kIG1hdHJpeC5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBtYXRyaWNlcyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXTtcbiAgdmFyIGE0ID0gYVs0XSxcbiAgICAgIGE1ID0gYVs1XSxcbiAgICAgIGE2ID0gYVs2XSxcbiAgICAgIGE3ID0gYVs3XTtcbiAgdmFyIGE4ID0gYVs4XSxcbiAgICAgIGE5ID0gYVs5XSxcbiAgICAgIGExMCA9IGFbMTBdLFxuICAgICAgYTExID0gYVsxMV07XG4gIHZhciBhMTIgPSBhWzEyXSxcbiAgICAgIGExMyA9IGFbMTNdLFxuICAgICAgYTE0ID0gYVsxNF0sXG4gICAgICBhMTUgPSBhWzE1XTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXSxcbiAgICAgIGIzID0gYlszXTtcbiAgdmFyIGI0ID0gYls0XSxcbiAgICAgIGI1ID0gYls1XSxcbiAgICAgIGI2ID0gYls2XSxcbiAgICAgIGI3ID0gYls3XTtcbiAgdmFyIGI4ID0gYls4XSxcbiAgICAgIGI5ID0gYls5XSxcbiAgICAgIGIxMCA9IGJbMTBdLFxuICAgICAgYjExID0gYlsxMV07XG4gIHZhciBiMTIgPSBiWzEyXSxcbiAgICAgIGIxMyA9IGJbMTNdLFxuICAgICAgYjE0ID0gYlsxNF0sXG4gICAgICBiMTUgPSBiWzE1XTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYmIE1hdGguYWJzKGEzIC0gYjMpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKSAmJiBNYXRoLmFicyhhNCAtIGI0KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNCksIE1hdGguYWJzKGI0KSkgJiYgTWF0aC5hYnMoYTUgLSBiNSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTUpLCBNYXRoLmFicyhiNSkpICYmIE1hdGguYWJzKGE2IC0gYjYpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE2KSwgTWF0aC5hYnMoYjYpKSAmJiBNYXRoLmFicyhhNyAtIGI3KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNyksIE1hdGguYWJzKGI3KSkgJiYgTWF0aC5hYnMoYTggLSBiOCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTgpLCBNYXRoLmFicyhiOCkpICYmIE1hdGguYWJzKGE5IC0gYjkpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE5KSwgTWF0aC5hYnMoYjkpKSAmJiBNYXRoLmFicyhhMTAgLSBiMTApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExMCksIE1hdGguYWJzKGIxMCkpICYmIE1hdGguYWJzKGExMSAtIGIxMSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTExKSwgTWF0aC5hYnMoYjExKSkgJiYgTWF0aC5hYnMoYTEyIC0gYjEyKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMTIpLCBNYXRoLmFicyhiMTIpKSAmJiBNYXRoLmFicyhhMTMgLSBiMTMpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGExMyksIE1hdGguYWJzKGIxMykpICYmIE1hdGguYWJzKGExNCAtIGIxNCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTE0KSwgTWF0aC5hYnMoYjE0KSkgJiYgTWF0aC5hYnMoYTE1IC0gYjE1KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMTUpLCBNYXRoLmFicyhiMTUpKTtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBtYXQ0Lm11bHRpcGx5fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBtdWwgPSBtdWx0aXBseTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBtYXQ0LnN1YnRyYWN0fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzdWIgPSBzdWJ0cmFjdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat4.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat.js ***! \*************************************************************/ /*! exports provided: create, identity, setAxisAngle, getAxisAngle, getAngle, multiply, rotateX, rotateY, rotateZ, calculateW, exp, ln, pow, slerp, random, invert, conjugate, fromMat3, fromEuler, str, clone, fromValues, copy, set, add, mul, scale, dot, lerp, length, len, squaredLength, sqrLen, normalize, exactEquals, equals, rotationTo, sqlerp, setAxes */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAxisAngle\", function() { return setAxisAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAxisAngle\", function() { return getAxisAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateW\", function() { return calculateW; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exp\", function() { return exp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ln\", function() { return ln; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pow\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slerp\", function() { return slerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conjugate\", function() { return conjugate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat3\", function() { return fromMat3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromEuler\", function() { return fromEuler; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotationTo\", function() { return rotationTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqlerp\", function() { return sqlerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAxes\", function() { return setAxes; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n/* harmony import */ var _mat3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mat3.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat3.js\");\n/* harmony import */ var _vec3_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./vec3.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js\");\n/* harmony import */ var _vec4_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./vec4.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec4.js\");\n\n\n\n\n/**\n * Quaternion\n * @module quat\n */\n\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n out[3] = 1;\n return out;\n}\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nfunction identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyVec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\n\nfunction setAxisAngle(out, axis, rad) {\n rad = rad * 0.5;\n var s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param {vec3} out_axis Vector receiving the axis of rotation\n * @param {ReadonlyQuat} q Quaternion to be decomposed\n * @return {Number} Angle, in radians, of the rotation\n */\n\nfunction getAxisAngle(out_axis, q) {\n var rad = Math.acos(q[3]) * 2.0;\n var s = Math.sin(rad / 2.0);\n\n if (s > _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n\n return rad;\n}\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param {ReadonlyQuat} a Origin unit quaternion\n * @param {ReadonlyQuat} b Destination unit quaternion\n * @return {Number} Angle, in radians, between the two quaternions\n */\n\nfunction getAngle(a, b) {\n var dotproduct = dot(a, b);\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n */\n\nfunction multiply(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateX(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateY(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var by = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {ReadonlyQuat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\n\nfunction rotateZ(out, a, rad) {\n rad *= 0.5;\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bz = Math.sin(rad),\n bw = Math.cos(rad);\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate W component of\n * @returns {quat} out\n */\n\nfunction calculateW(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nfunction exp(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var et = Math.exp(w);\n var s = r > 0 ? et * Math.sin(r) / r : 0;\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n return out;\n}\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\n\nfunction ln(out, a) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n var r = Math.sqrt(x * x + y * y + z * z);\n var t = r > 0 ? Math.atan2(r, w) / r : 0;\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n return out;\n}\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\n\nfunction pow(out, a, b) {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nfunction slerp(out, a, b, t) {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n var ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n var bx = b[0],\n by = b[1],\n bz = b[2],\n bw = b[3];\n var omega, cosom, sinom, scale0, scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n}\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\n\nfunction random(out) {\n // Implementation of http://planning.cs.uiuc.edu/node198.html\n // TODO: Calling random 3 times is probably not the fastest solution\n var u1 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]();\n var u2 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]();\n var u3 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]();\n var sqrt1MinusU1 = Math.sqrt(1 - u1);\n var sqrtU1 = Math.sqrt(u1);\n out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n return out;\n}\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate inverse of\n * @returns {quat} out\n */\n\nfunction invert(out, a) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate conjugate of\n * @returns {quat} out\n */\n\nfunction conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyMat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\n\nfunction fromMat3(out, m) {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n var fTrace = m[0] + m[4] + m[8];\n var fRoot;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n var i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n var j = (i + 1) % 3;\n var k = (i + 2) % 3;\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\n\nfunction fromEuler(out, x, y, z) {\n var halfToRad = 0.5 * Math.PI / 180.0;\n x *= halfToRad;\n y *= halfToRad;\n z *= halfToRad;\n var sx = Math.sin(x);\n var cx = Math.cos(x);\n var sy = Math.sin(y);\n var cy = Math.cos(y);\n var sz = Math.sin(z);\n var cz = Math.cos(z);\n out[0] = sx * cy * cz - cx * sy * sz;\n out[1] = cx * sy * cz + sx * cy * sz;\n out[2] = cx * cy * sz - sx * sy * cz;\n out[3] = cx * cy * cz + sx * sy * sz;\n return out;\n}\n/**\n * Returns a string representation of a quatenion\n *\n * @param {ReadonlyQuat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\n\nvar clone = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"clone\"];\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\n\nvar fromValues = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"fromValues\"];\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the source quaternion\n * @returns {quat} out\n * @function\n */\n\nvar copy = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"copy\"];\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\n\nvar set = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"set\"];\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {quat} out\n * @function\n */\n\nvar add = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"add\"];\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {ReadonlyQuat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\n\nvar scale = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"scale\"];\n/**\n * Calculates the dot product of two quat's\n *\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nvar dot = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"dot\"];\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\n\nvar lerp = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"lerp\"];\n/**\n * Calculates the length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nvar length = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"length\"];\n/**\n * Alias for {@link quat.length}\n * @function\n */\n\nvar len = length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {ReadonlyQuat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nvar squaredLength = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"squaredLength\"];\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\n\nvar normalize = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"normalize\"];\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat} a The first quaternion.\n * @param {ReadonlyQuat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nvar exactEquals = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"exactEquals\"];\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat} a The first vector.\n * @param {ReadonlyQuat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nvar equals = _vec4_js__WEBPACK_IMPORTED_MODULE_3__[\"equals\"];\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {ReadonlyVec3} a the initial vector\n * @param {ReadonlyVec3} b the destination vector\n * @returns {quat} out\n */\n\nvar rotationTo = function () {\n var tmpvec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"create\"]();\n var xUnitVec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"fromValues\"](1, 0, 0);\n var yUnitVec3 = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"fromValues\"](0, 1, 0);\n return function (out, a, b) {\n var dot = _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"dot\"](a, b);\n\n if (dot < -0.999999) {\n _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"cross\"](tmpvec3, xUnitVec3, a);\n if (_vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"len\"](tmpvec3) < 0.000001) _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"cross\"](tmpvec3, yUnitVec3, a);\n _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"](tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n } else if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n } else {\n _vec3_js__WEBPACK_IMPORTED_MODULE_2__[\"cross\"](tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n }\n };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a the first operand\n * @param {ReadonlyQuat} b the second operand\n * @param {ReadonlyQuat} c the third operand\n * @param {ReadonlyQuat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\n\nvar sqlerp = function () {\n var temp1 = create();\n var temp2 = create();\n return function (out, a, b, c, d, t) {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n return out;\n };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {ReadonlyVec3} view the vector representing the viewing direction\n * @param {ReadonlyVec3} right the vector representing the local \"right\" direction\n * @param {ReadonlyVec3} up the vector representing the local \"up\" direction\n * @returns {quat} out\n */\n\nvar setAxes = function () {\n var matr = _mat3_js__WEBPACK_IMPORTED_MODULE_1__[\"create\"]();\n return function (out, view, right, up) {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n return normalize(out, fromMat3(out, matr));\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL3F1YXQuanM/OWI1MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ047QUFDQTtBQUNBO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7O0FBRW5DLE1BQU0scURBQW1CO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQUs7QUFDakIsWUFBWSxhQUFhO0FBQ3pCLFlBQVksT0FBTztBQUNuQjs7QUFFTztBQUNQO0FBQ0E7O0FBRUEsVUFBVSxrREFBZ0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksYUFBYTtBQUN6QixZQUFZLGFBQWE7QUFDekIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDLGdEQUFnRDs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsb0JBQW9CLGtEQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQSxXQUFXLGlEQUFlO0FBQzFCLFdBQVcsaURBQWU7QUFDMUIsV0FBVyxpREFBZTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLEtBQUs7QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU8sWUFBWSw4Q0FBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU8saUJBQWlCLG1EQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU8sV0FBVyw2Q0FBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLFVBQVUsNENBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU8sVUFBVSw0Q0FBUTtBQUN6QjtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7O0FBRU8sWUFBWSw4Q0FBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVPLFVBQVUsNENBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBOztBQUVPLFdBQVcsNkNBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTyxhQUFhLCtDQUFXO0FBQy9CO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRU8sb0JBQW9CLHNEQUFrQjtBQUM3QztBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7QUFDQTs7QUFFTyxnQkFBZ0Isa0RBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU8sa0JBQWtCLG9EQUFnQjtBQUN6QztBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTyxhQUFhLCtDQUFXO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQiwrQ0FBVztBQUMzQixrQkFBa0IsbURBQWU7QUFDakMsa0JBQWtCLG1EQUFlO0FBQ2pDO0FBQ0EsY0FBYyw0Q0FBUTs7QUFFdEI7QUFDQSxNQUFNLDhDQUFVO0FBQ2hCLFVBQVUsNENBQVEsc0JBQXNCLDhDQUFVO0FBQ2xELE1BQU0sa0RBQWM7QUFDcEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLE1BQU0sOENBQVU7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsYUFBYSwrQ0FBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS9xdWF0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBtYXQzIGZyb20gXCIuL21hdDMuanNcIjtcbmltcG9ydCAqIGFzIHZlYzMgZnJvbSBcIi4vdmVjMy5qc1wiO1xuaW1wb3J0ICogYXMgdmVjNCBmcm9tIFwiLi92ZWM0LmpzXCI7XG4vKipcbiAqIFF1YXRlcm5pb25cbiAqIEBtb2R1bGUgcXVhdFxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpZGVudGl0eSBxdWF0XG4gKlxuICogQHJldHVybnMge3F1YXR9IGEgbmV3IHF1YXRlcm5pb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoNCk7XG5cbiAgaWYgKGdsTWF0cml4LkFSUkFZX1RZUEUgIT0gRmxvYXQzMkFycmF5KSB7XG4gICAgb3V0WzBdID0gMDtcbiAgICBvdXRbMV0gPSAwO1xuICAgIG91dFsyXSA9IDA7XG4gIH1cblxuICBvdXRbM10gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTZXQgYSBxdWF0IHRvIHRoZSBpZGVudGl0eSBxdWF0ZXJuaW9uXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5KG91dCkge1xuICBvdXRbMF0gPSAwO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAxO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTZXRzIGEgcXVhdCBmcm9tIHRoZSBnaXZlbiBhbmdsZSBhbmQgcm90YXRpb24gYXhpcyxcbiAqIHRoZW4gcmV0dXJucyBpdC5cbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBheGlzIHRoZSBheGlzIGFyb3VuZCB3aGljaCB0byByb3RhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgdGhlIGFuZ2xlIGluIHJhZGlhbnNcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEF4aXNBbmdsZShvdXQsIGF4aXMsIHJhZCkge1xuICByYWQgPSByYWQgKiAwLjU7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkKTtcbiAgb3V0WzBdID0gcyAqIGF4aXNbMF07XG4gIG91dFsxXSA9IHMgKiBheGlzWzFdO1xuICBvdXRbMl0gPSBzICogYXhpc1syXTtcbiAgb3V0WzNdID0gTWF0aC5jb3MocmFkKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2V0cyB0aGUgcm90YXRpb24gYXhpcyBhbmQgYW5nbGUgZm9yIGEgZ2l2ZW5cbiAqICBxdWF0ZXJuaW9uLiBJZiBhIHF1YXRlcm5pb24gaXMgY3JlYXRlZCB3aXRoXG4gKiAgc2V0QXhpc0FuZ2xlLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgc2FtZVxuICogIHZhbHVlcyBhcyBwcm92aWRpZWQgaW4gdGhlIG9yaWdpbmFsIHBhcmFtZXRlciBsaXN0XG4gKiAgT1IgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdmFsdWVzLlxuICogRXhhbXBsZTogVGhlIHF1YXRlcm5pb24gZm9ybWVkIGJ5IGF4aXMgWzAsIDAsIDFdIGFuZFxuICogIGFuZ2xlIC05MCBpcyB0aGUgc2FtZSBhcyB0aGUgcXVhdGVybmlvbiBmb3JtZWQgYnlcbiAqICBbMCwgMCwgMV0gYW5kIDI3MC4gVGhpcyBtZXRob2QgZmF2b3JzIHRoZSBsYXR0ZXIuXG4gKiBAcGFyYW0gIHt2ZWMzfSBvdXRfYXhpcyAgVmVjdG9yIHJlY2VpdmluZyB0aGUgYXhpcyBvZiByb3RhdGlvblxuICogQHBhcmFtICB7UmVhZG9ubHlRdWF0fSBxICAgICBRdWF0ZXJuaW9uIHRvIGJlIGRlY29tcG9zZWRcbiAqIEByZXR1cm4ge051bWJlcn0gICAgIEFuZ2xlLCBpbiByYWRpYW5zLCBvZiB0aGUgcm90YXRpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXhpc0FuZ2xlKG91dF9heGlzLCBxKSB7XG4gIHZhciByYWQgPSBNYXRoLmFjb3MocVszXSkgKiAyLjA7XG4gIHZhciBzID0gTWF0aC5zaW4ocmFkIC8gMi4wKTtcblxuICBpZiAocyA+IGdsTWF0cml4LkVQU0lMT04pIHtcbiAgICBvdXRfYXhpc1swXSA9IHFbMF0gLyBzO1xuICAgIG91dF9heGlzWzFdID0gcVsxXSAvIHM7XG4gICAgb3V0X2F4aXNbMl0gPSBxWzJdIC8gcztcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBzIGlzIHplcm8sIHJldHVybiBhbnkgYXhpcyAobm8gcm90YXRpb24gLSBheGlzIGRvZXMgbm90IG1hdHRlcilcbiAgICBvdXRfYXhpc1swXSA9IDE7XG4gICAgb3V0X2F4aXNbMV0gPSAwO1xuICAgIG91dF9heGlzWzJdID0gMDtcbiAgfVxuXG4gIHJldHVybiByYWQ7XG59XG4vKipcbiAqIEdldHMgdGhlIGFuZ3VsYXIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdW5pdCBxdWF0ZXJuaW9uc1xuICpcbiAqIEBwYXJhbSAge1JlYWRvbmx5UXVhdH0gYSAgICAgT3JpZ2luIHVuaXQgcXVhdGVybmlvblxuICogQHBhcmFtICB7UmVhZG9ubHlRdWF0fSBiICAgICBEZXN0aW5hdGlvbiB1bml0IHF1YXRlcm5pb25cbiAqIEByZXR1cm4ge051bWJlcn0gICAgIEFuZ2xlLCBpbiByYWRpYW5zLCBiZXR3ZWVuIHRoZSB0d28gcXVhdGVybmlvbnNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYSwgYikge1xuICB2YXIgZG90cHJvZHVjdCA9IGRvdChhLCBiKTtcbiAgcmV0dXJuIE1hdGguYWNvcygyICogZG90cHJvZHVjdCAqIGRvdHByb2R1Y3QgLSAxKTtcbn1cbi8qKlxuICogTXVsdGlwbGllcyB0d28gcXVhdCdzXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYXogPSBhWzJdLFxuICAgICAgYXcgPSBhWzNdO1xuICB2YXIgYnggPSBiWzBdLFxuICAgICAgYnkgPSBiWzFdLFxuICAgICAgYnogPSBiWzJdLFxuICAgICAgYncgPSBiWzNdO1xuICBvdXRbMF0gPSBheCAqIGJ3ICsgYXcgKiBieCArIGF5ICogYnogLSBheiAqIGJ5O1xuICBvdXRbMV0gPSBheSAqIGJ3ICsgYXcgKiBieSArIGF6ICogYnggLSBheCAqIGJ6O1xuICBvdXRbMl0gPSBheiAqIGJ3ICsgYXcgKiBieiArIGF4ICogYnkgLSBheSAqIGJ4O1xuICBvdXRbM10gPSBhdyAqIGJ3IC0gYXggKiBieCAtIGF5ICogYnkgLSBheiAqIGJ6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgcXVhdGVybmlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpc1xuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHF1YXQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHF1YXQgdG8gcm90YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gcmFkIGFuZ2xlIChpbiByYWRpYW5zKSB0byByb3RhdGVcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWChvdXQsIGEsIHJhZCkge1xuICByYWQgKj0gMC41O1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYXogPSBhWzJdLFxuICAgICAgYXcgPSBhWzNdO1xuICB2YXIgYnggPSBNYXRoLnNpbihyYWQpLFxuICAgICAgYncgPSBNYXRoLmNvcyhyYWQpO1xuICBvdXRbMF0gPSBheCAqIGJ3ICsgYXcgKiBieDtcbiAgb3V0WzFdID0gYXkgKiBidyArIGF6ICogYng7XG4gIG91dFsyXSA9IGF6ICogYncgLSBheSAqIGJ4O1xuICBvdXRbM10gPSBhdyAqIGJ3IC0gYXggKiBieDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIHF1YXRlcm5pb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXNcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCBxdWF0IHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHJhZCBhbmdsZSAoaW4gcmFkaWFucykgdG8gcm90YXRlXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVkob3V0LCBhLCByYWQpIHtcbiAgcmFkICo9IDAuNTtcbiAgdmFyIGF4ID0gYVswXSxcbiAgICAgIGF5ID0gYVsxXSxcbiAgICAgIGF6ID0gYVsyXSxcbiAgICAgIGF3ID0gYVszXTtcbiAgdmFyIGJ5ID0gTWF0aC5zaW4ocmFkKSxcbiAgICAgIGJ3ID0gTWF0aC5jb3MocmFkKTtcbiAgb3V0WzBdID0gYXggKiBidyAtIGF6ICogYnk7XG4gIG91dFsxXSA9IGF5ICogYncgKyBhdyAqIGJ5O1xuICBvdXRbMl0gPSBheiAqIGJ3ICsgYXggKiBieTtcbiAgb3V0WzNdID0gYXcgKiBidyAtIGF5ICogYnk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBxdWF0ZXJuaW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgcXVhdCByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byByb3RhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWQgYW5nbGUgKGluIHJhZGlhbnMpIHRvIHJvdGF0ZVxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVaKG91dCwgYSwgcmFkKSB7XG4gIHJhZCAqPSAwLjU7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBheiA9IGFbMl0sXG4gICAgICBhdyA9IGFbM107XG4gIHZhciBieiA9IE1hdGguc2luKHJhZCksXG4gICAgICBidyA9IE1hdGguY29zKHJhZCk7XG4gIG91dFswXSA9IGF4ICogYncgKyBheSAqIGJ6O1xuICBvdXRbMV0gPSBheSAqIGJ3IC0gYXggKiBiejtcbiAgb3V0WzJdID0gYXogKiBidyArIGF3ICogYno7XG4gIG91dFszXSA9IGF3ICogYncgLSBheiAqIGJ6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBXIGNvbXBvbmVudCBvZiBhIHF1YXQgZnJvbSB0aGUgWCwgWSwgYW5kIFogY29tcG9uZW50cy5cbiAqIEFzc3VtZXMgdGhhdCBxdWF0ZXJuaW9uIGlzIDEgdW5pdCBpbiBsZW5ndGguXG4gKiBBbnkgZXhpc3RpbmcgVyBjb21wb25lbnQgd2lsbCBiZSBpZ25vcmVkLlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byBjYWxjdWxhdGUgVyBjb21wb25lbnQgb2ZcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlVyhvdXQsIGEpIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV0sXG4gICAgICB6ID0gYVsyXTtcbiAgb3V0WzBdID0geDtcbiAgb3V0WzFdID0geTtcbiAgb3V0WzJdID0gejtcbiAgb3V0WzNdID0gTWF0aC5zcXJ0KE1hdGguYWJzKDEuMCAtIHggKiB4IC0geSAqIHkgLSB6ICogeikpO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGV4cG9uZW50aWFsIG9mIGEgdW5pdCBxdWF0ZXJuaW9uLlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byBjYWxjdWxhdGUgdGhlIGV4cG9uZW50aWFsIG9mXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cChvdXQsIGEpIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV0sXG4gICAgICB6ID0gYVsyXSxcbiAgICAgIHcgPSBhWzNdO1xuICB2YXIgciA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5ICsgeiAqIHopO1xuICB2YXIgZXQgPSBNYXRoLmV4cCh3KTtcbiAgdmFyIHMgPSByID4gMCA/IGV0ICogTWF0aC5zaW4ocikgLyByIDogMDtcbiAgb3V0WzBdID0geCAqIHM7XG4gIG91dFsxXSA9IHkgKiBzO1xuICBvdXRbMl0gPSB6ICogcztcbiAgb3V0WzNdID0gZXQgKiBNYXRoLmNvcyhyKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiBhIHVuaXQgcXVhdGVybmlvbi5cbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHF1YXQgdG8gY2FsY3VsYXRlIHRoZSBleHBvbmVudGlhbCBvZlxuICogQHJldHVybnMge3F1YXR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsbihvdXQsIGEpIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV0sXG4gICAgICB6ID0gYVsyXSxcbiAgICAgIHcgPSBhWzNdO1xuICB2YXIgciA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5ICsgeiAqIHopO1xuICB2YXIgdCA9IHIgPiAwID8gTWF0aC5hdGFuMihyLCB3KSAvIHIgOiAwO1xuICBvdXRbMF0gPSB4ICogdDtcbiAgb3V0WzFdID0geSAqIHQ7XG4gIG91dFsyXSA9IHogKiB0O1xuICBvdXRbM10gPSAwLjUgKiBNYXRoLmxvZyh4ICogeCArIHkgKiB5ICsgeiAqIHogKyB3ICogdyk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgc2NhbGFyIHBvd2VyIG9mIGEgdW5pdCBxdWF0ZXJuaW9uLlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byBjYWxjdWxhdGUgdGhlIGV4cG9uZW50aWFsIG9mXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIHF1YXRlcm5pb24gYnlcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcG93KG91dCwgYSwgYikge1xuICBsbihvdXQsIGEpO1xuICBzY2FsZShvdXQsIG91dCwgYik7XG4gIGV4cChvdXQsIG91dCk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFBlcmZvcm1zIGEgc3BoZXJpY2FsIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIHF1YXRcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50LCBpbiB0aGUgcmFuZ2UgWzAtMV0sIGJldHdlZW4gdGhlIHR3byBpbnB1dHNcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2xlcnAob3V0LCBhLCBiLCB0KSB7XG4gIC8vIGJlbmNobWFya3M6XG4gIC8vICAgIGh0dHA6Ly9qc3BlcmYuY29tL3F1YXRlcm5pb24tc2xlcnAtaW1wbGVtZW50YXRpb25zXG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBheiA9IGFbMl0sXG4gICAgICBhdyA9IGFbM107XG4gIHZhciBieCA9IGJbMF0sXG4gICAgICBieSA9IGJbMV0sXG4gICAgICBieiA9IGJbMl0sXG4gICAgICBidyA9IGJbM107XG4gIHZhciBvbWVnYSwgY29zb20sIHNpbm9tLCBzY2FsZTAsIHNjYWxlMTsgLy8gY2FsYyBjb3NpbmVcblxuICBjb3NvbSA9IGF4ICogYnggKyBheSAqIGJ5ICsgYXogKiBieiArIGF3ICogYnc7IC8vIGFkanVzdCBzaWducyAoaWYgbmVjZXNzYXJ5KVxuXG4gIGlmIChjb3NvbSA8IDAuMCkge1xuICAgIGNvc29tID0gLWNvc29tO1xuICAgIGJ4ID0gLWJ4O1xuICAgIGJ5ID0gLWJ5O1xuICAgIGJ6ID0gLWJ6O1xuICAgIGJ3ID0gLWJ3O1xuICB9IC8vIGNhbGN1bGF0ZSBjb2VmZmljaWVudHNcblxuXG4gIGlmICgxLjAgLSBjb3NvbSA+IGdsTWF0cml4LkVQU0lMT04pIHtcbiAgICAvLyBzdGFuZGFyZCBjYXNlIChzbGVycClcbiAgICBvbWVnYSA9IE1hdGguYWNvcyhjb3NvbSk7XG4gICAgc2lub20gPSBNYXRoLnNpbihvbWVnYSk7XG4gICAgc2NhbGUwID0gTWF0aC5zaW4oKDEuMCAtIHQpICogb21lZ2EpIC8gc2lub207XG4gICAgc2NhbGUxID0gTWF0aC5zaW4odCAqIG9tZWdhKSAvIHNpbm9tO1xuICB9IGVsc2Uge1xuICAgIC8vIFwiZnJvbVwiIGFuZCBcInRvXCIgcXVhdGVybmlvbnMgYXJlIHZlcnkgY2xvc2VcbiAgICAvLyAgLi4uIHNvIHdlIGNhbiBkbyBhIGxpbmVhciBpbnRlcnBvbGF0aW9uXG4gICAgc2NhbGUwID0gMS4wIC0gdDtcbiAgICBzY2FsZTEgPSB0O1xuICB9IC8vIGNhbGN1bGF0ZSBmaW5hbCB2YWx1ZXNcblxuXG4gIG91dFswXSA9IHNjYWxlMCAqIGF4ICsgc2NhbGUxICogYng7XG4gIG91dFsxXSA9IHNjYWxlMCAqIGF5ICsgc2NhbGUxICogYnk7XG4gIG91dFsyXSA9IHNjYWxlMCAqIGF6ICsgc2NhbGUxICogYno7XG4gIG91dFszXSA9IHNjYWxlMCAqIGF3ICsgc2NhbGUxICogYnc7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHJhbmRvbSB1bml0IHF1YXRlcm5pb25cbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tKG91dCkge1xuICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBodHRwOi8vcGxhbm5pbmcuY3MudWl1Yy5lZHUvbm9kZTE5OC5odG1sXG4gIC8vIFRPRE86IENhbGxpbmcgcmFuZG9tIDMgdGltZXMgaXMgcHJvYmFibHkgbm90IHRoZSBmYXN0ZXN0IHNvbHV0aW9uXG4gIHZhciB1MSA9IGdsTWF0cml4LlJBTkRPTSgpO1xuICB2YXIgdTIgPSBnbE1hdHJpeC5SQU5ET00oKTtcbiAgdmFyIHUzID0gZ2xNYXRyaXguUkFORE9NKCk7XG4gIHZhciBzcXJ0MU1pbnVzVTEgPSBNYXRoLnNxcnQoMSAtIHUxKTtcbiAgdmFyIHNxcnRVMSA9IE1hdGguc3FydCh1MSk7XG4gIG91dFswXSA9IHNxcnQxTWludXNVMSAqIE1hdGguc2luKDIuMCAqIE1hdGguUEkgKiB1Mik7XG4gIG91dFsxXSA9IHNxcnQxTWludXNVMSAqIE1hdGguY29zKDIuMCAqIE1hdGguUEkgKiB1Mik7XG4gIG91dFsyXSA9IHNxcnRVMSAqIE1hdGguc2luKDIuMCAqIE1hdGguUEkgKiB1Myk7XG4gIG91dFszXSA9IHNxcnRVMSAqIE1hdGguY29zKDIuMCAqIE1hdGguUEkgKiB1Myk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGludmVyc2Ugb2YgYSBxdWF0XG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0IHRvIGNhbGN1bGF0ZSBpbnZlcnNlIG9mXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydChvdXQsIGEpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXTtcbiAgdmFyIGRvdCA9IGEwICogYTAgKyBhMSAqIGExICsgYTIgKiBhMiArIGEzICogYTM7XG4gIHZhciBpbnZEb3QgPSBkb3QgPyAxLjAgLyBkb3QgOiAwOyAvLyBUT0RPOiBXb3VsZCBiZSBmYXN0ZXIgdG8gcmV0dXJuIFswLDAsMCwwXSBpbW1lZGlhdGVseSBpZiBkb3QgPT0gMFxuXG4gIG91dFswXSA9IC1hMCAqIGludkRvdDtcbiAgb3V0WzFdID0gLWExICogaW52RG90O1xuICBvdXRbMl0gPSAtYTIgKiBpbnZEb3Q7XG4gIG91dFszXSA9IGEzICogaW52RG90O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBjb25qdWdhdGUgb2YgYSBxdWF0XG4gKiBJZiB0aGUgcXVhdGVybmlvbiBpcyBub3JtYWxpemVkLCB0aGlzIGZ1bmN0aW9uIGlzIGZhc3RlciB0aGFuIHF1YXQuaW52ZXJzZSBhbmQgcHJvZHVjZXMgdGhlIHNhbWUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgcXVhdCB0byBjYWxjdWxhdGUgY29uanVnYXRlIG9mXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmp1Z2F0ZShvdXQsIGEpIHtcbiAgb3V0WzBdID0gLWFbMF07XG4gIG91dFsxXSA9IC1hWzFdO1xuICBvdXRbMl0gPSAtYVsyXTtcbiAgb3V0WzNdID0gYVszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIHF1YXRlcm5pb24gZnJvbSB0aGUgZ2l2ZW4gM3gzIHJvdGF0aW9uIG1hdHJpeC5cbiAqXG4gKiBOT1RFOiBUaGUgcmVzdWx0YW50IHF1YXRlcm5pb24gaXMgbm90IG5vcm1hbGl6ZWQsIHNvIHlvdSBzaG91bGQgYmUgc3VyZVxuICogdG8gcmVub3JtYWxpemUgdGhlIHF1YXRlcm5pb24geW91cnNlbGYgd2hlcmUgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seU1hdDN9IG0gcm90YXRpb24gbWF0cml4XG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU1hdDMob3V0LCBtKSB7XG4gIC8vIEFsZ29yaXRobSBpbiBLZW4gU2hvZW1ha2UncyBhcnRpY2xlIGluIDE5ODcgU0lHR1JBUEggY291cnNlIG5vdGVzXG4gIC8vIGFydGljbGUgXCJRdWF0ZXJuaW9uIENhbGN1bHVzIGFuZCBGYXN0IEFuaW1hdGlvblwiLlxuICB2YXIgZlRyYWNlID0gbVswXSArIG1bNF0gKyBtWzhdO1xuICB2YXIgZlJvb3Q7XG5cbiAgaWYgKGZUcmFjZSA+IDAuMCkge1xuICAgIC8vIHx3fCA+IDEvMiwgbWF5IGFzIHdlbGwgY2hvb3NlIHcgPiAxLzJcbiAgICBmUm9vdCA9IE1hdGguc3FydChmVHJhY2UgKyAxLjApOyAvLyAyd1xuXG4gICAgb3V0WzNdID0gMC41ICogZlJvb3Q7XG4gICAgZlJvb3QgPSAwLjUgLyBmUm9vdDsgLy8gMS8oNHcpXG5cbiAgICBvdXRbMF0gPSAobVs1XSAtIG1bN10pICogZlJvb3Q7XG4gICAgb3V0WzFdID0gKG1bNl0gLSBtWzJdKSAqIGZSb290O1xuICAgIG91dFsyXSA9IChtWzFdIC0gbVszXSkgKiBmUm9vdDtcbiAgfSBlbHNlIHtcbiAgICAvLyB8d3wgPD0gMS8yXG4gICAgdmFyIGkgPSAwO1xuICAgIGlmIChtWzRdID4gbVswXSkgaSA9IDE7XG4gICAgaWYgKG1bOF0gPiBtW2kgKiAzICsgaV0pIGkgPSAyO1xuICAgIHZhciBqID0gKGkgKyAxKSAlIDM7XG4gICAgdmFyIGsgPSAoaSArIDIpICUgMztcbiAgICBmUm9vdCA9IE1hdGguc3FydChtW2kgKiAzICsgaV0gLSBtW2ogKiAzICsgal0gLSBtW2sgKiAzICsga10gKyAxLjApO1xuICAgIG91dFtpXSA9IDAuNSAqIGZSb290O1xuICAgIGZSb290ID0gMC41IC8gZlJvb3Q7XG4gICAgb3V0WzNdID0gKG1baiAqIDMgKyBrXSAtIG1bayAqIDMgKyBqXSkgKiBmUm9vdDtcbiAgICBvdXRbal0gPSAobVtqICogMyArIGldICsgbVtpICogMyArIGpdKSAqIGZSb290O1xuICAgIG91dFtrXSA9IChtW2sgKiAzICsgaV0gKyBtW2kgKiAzICsga10pICogZlJvb3Q7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgcXVhdGVybmlvbiBmcm9tIHRoZSBnaXZlbiBldWxlciBhbmdsZSB4LCB5LCB6LlxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHt4fSBBbmdsZSB0byByb3RhdGUgYXJvdW5kIFggYXhpcyBpbiBkZWdyZWVzLlxuICogQHBhcmFtIHt5fSBBbmdsZSB0byByb3RhdGUgYXJvdW5kIFkgYXhpcyBpbiBkZWdyZWVzLlxuICogQHBhcmFtIHt6fSBBbmdsZSB0byByb3RhdGUgYXJvdW5kIFogYXhpcyBpbiBkZWdyZWVzLlxuICogQHJldHVybnMge3F1YXR9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21FdWxlcihvdXQsIHgsIHksIHopIHtcbiAgdmFyIGhhbGZUb1JhZCA9IDAuNSAqIE1hdGguUEkgLyAxODAuMDtcbiAgeCAqPSBoYWxmVG9SYWQ7XG4gIHkgKj0gaGFsZlRvUmFkO1xuICB6ICo9IGhhbGZUb1JhZDtcbiAgdmFyIHN4ID0gTWF0aC5zaW4oeCk7XG4gIHZhciBjeCA9IE1hdGguY29zKHgpO1xuICB2YXIgc3kgPSBNYXRoLnNpbih5KTtcbiAgdmFyIGN5ID0gTWF0aC5jb3MoeSk7XG4gIHZhciBzeiA9IE1hdGguc2luKHopO1xuICB2YXIgY3ogPSBNYXRoLmNvcyh6KTtcbiAgb3V0WzBdID0gc3ggKiBjeSAqIGN6IC0gY3ggKiBzeSAqIHN6O1xuICBvdXRbMV0gPSBjeCAqIHN5ICogY3ogKyBzeCAqIGN5ICogc3o7XG4gIG91dFsyXSA9IGN4ICogY3kgKiBzeiAtIHN4ICogc3kgKiBjejtcbiAgb3V0WzNdID0gY3ggKiBjeSAqIGN6ICsgc3ggKiBzeSAqIHN6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgcXVhdGVuaW9uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgdmVjdG9yIHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwicXVhdChcIiArIGFbMF0gKyBcIiwgXCIgKyBhWzFdICsgXCIsIFwiICsgYVsyXSArIFwiLCBcIiArIGFbM10gKyBcIilcIjtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBxdWF0IGluaXRpYWxpemVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHF1YXRlcm5pb24gdG8gY2xvbmVcbiAqIEByZXR1cm5zIHtxdWF0fSBhIG5ldyBxdWF0ZXJuaW9uXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGNsb25lID0gdmVjNC5jbG9uZTtcbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBxdWF0IGluaXRpYWxpemVkIHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHogWiBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3IFcgY29tcG9uZW50XG4gKiBAcmV0dXJucyB7cXVhdH0gYSBuZXcgcXVhdGVybmlvblxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBmcm9tVmFsdWVzID0gdmVjNC5mcm9tVmFsdWVzO1xuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgcXVhdCB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB0aGUgc291cmNlIHF1YXRlcm5pb25cbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgY29weSA9IHZlYzQuY29weTtcbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgcXVhdCB0byB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdyBXIGNvbXBvbmVudFxuICogQHJldHVybnMge3F1YXR9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzZXQgPSB2ZWM0LnNldDtcbi8qKlxuICogQWRkcyB0d28gcXVhdCdzXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGFkZCA9IHZlYzQuYWRkO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHF1YXQubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBTY2FsZXMgYSBxdWF0IGJ5IGEgc2NhbGFyIG51bWJlclxuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB0aGUgdmVjdG9yIHRvIHNjYWxlXG4gKiBAcGFyYW0ge051bWJlcn0gYiBhbW91bnQgdG8gc2NhbGUgdGhlIHZlY3RvciBieVxuICogQHJldHVybnMge3F1YXR9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzY2FsZSA9IHZlYzQuc2NhbGU7XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHR3byBxdWF0J3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkb3QgcHJvZHVjdCBvZiBhIGFuZCBiXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGRvdCA9IHZlYzQuZG90O1xuLyoqXG4gKiBQZXJmb3JtcyBhIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIHF1YXQnc1xuICpcbiAqIEBwYXJhbSB7cXVhdH0gb3V0IHRoZSByZWNlaXZpbmcgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3F1YXR9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBsZXJwID0gdmVjNC5sZXJwO1xuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgYSBxdWF0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGxlbmd0aCBvZiBhXG4gKi9cblxuZXhwb3J0IHZhciBsZW5ndGggPSB2ZWM0Lmxlbmd0aDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBxdWF0Lmxlbmd0aH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbGVuID0gbGVuZ3RoO1xuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBzcXVhcmVkIGxlbmd0aCBvZiBhIHF1YXRcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIHNxdWFyZWQgbGVuZ3RoIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBzcXVhcmVkIGxlbmd0aCBvZiBhXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNxdWFyZWRMZW5ndGggPSB2ZWM0LnNxdWFyZWRMZW5ndGg7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgcXVhdC5zcXVhcmVkTGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJMZW4gPSBzcXVhcmVkTGVuZ3RoO1xuLyoqXG4gKiBOb3JtYWxpemUgYSBxdWF0XG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBxdWF0ZXJuaW9uIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMge3F1YXR9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBub3JtYWxpemUgPSB2ZWM0Lm5vcm1hbGl6ZTtcbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcXVhdGVybmlvbnMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIFRoZSBmaXJzdCBxdWF0ZXJuaW9uLlxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGIgVGhlIHNlY29uZCBxdWF0ZXJuaW9uLlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIHZlY3RvcnMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IHZhciBleGFjdEVxdWFscyA9IHZlYzQuZXhhY3RFcXVhbHM7XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHF1YXRlcm5pb25zIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYSBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgdmFyIGVxdWFscyA9IHZlYzQuZXF1YWxzO1xuLyoqXG4gKiBTZXRzIGEgcXVhdGVybmlvbiB0byByZXByZXNlbnQgdGhlIHNob3J0ZXN0IHJvdGF0aW9uIGZyb20gb25lXG4gKiB2ZWN0b3IgdG8gYW5vdGhlci5cbiAqXG4gKiBCb3RoIHZlY3RvcnMgYXJlIGFzc3VtZWQgdG8gYmUgdW5pdCBsZW5ndGguXG4gKlxuICogQHBhcmFtIHtxdWF0fSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uLlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGluaXRpYWwgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgZGVzdGluYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7cXVhdH0gb3V0XG4gKi9cblxuZXhwb3J0IHZhciByb3RhdGlvblRvID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdG1wdmVjMyA9IHZlYzMuY3JlYXRlKCk7XG4gIHZhciB4VW5pdFZlYzMgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMCwgMCk7XG4gIHZhciB5VW5pdFZlYzMgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMSwgMCk7XG4gIHJldHVybiBmdW5jdGlvbiAob3V0LCBhLCBiKSB7XG4gICAgdmFyIGRvdCA9IHZlYzMuZG90KGEsIGIpO1xuXG4gICAgaWYgKGRvdCA8IC0wLjk5OTk5OSkge1xuICAgICAgdmVjMy5jcm9zcyh0bXB2ZWMzLCB4VW5pdFZlYzMsIGEpO1xuICAgICAgaWYgKHZlYzMubGVuKHRtcHZlYzMpIDwgMC4wMDAwMDEpIHZlYzMuY3Jvc3ModG1wdmVjMywgeVVuaXRWZWMzLCBhKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRtcHZlYzMsIHRtcHZlYzMpO1xuICAgICAgc2V0QXhpc0FuZ2xlKG91dCwgdG1wdmVjMywgTWF0aC5QSSk7XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH0gZWxzZSBpZiAoZG90ID4gMC45OTk5OTkpIHtcbiAgICAgIG91dFswXSA9IDA7XG4gICAgICBvdXRbMV0gPSAwO1xuICAgICAgb3V0WzJdID0gMDtcbiAgICAgIG91dFszXSA9IDE7XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH0gZWxzZSB7XG4gICAgICB2ZWMzLmNyb3NzKHRtcHZlYzMsIGEsIGIpO1xuICAgICAgb3V0WzBdID0gdG1wdmVjM1swXTtcbiAgICAgIG91dFsxXSA9IHRtcHZlYzNbMV07XG4gICAgICBvdXRbMl0gPSB0bXB2ZWMzWzJdO1xuICAgICAgb3V0WzNdID0gMSArIGRvdDtcbiAgICAgIHJldHVybiBub3JtYWxpemUob3V0LCBvdXQpO1xuICAgIH1cbiAgfTtcbn0oKTtcbi8qKlxuICogUGVyZm9ybXMgYSBzcGhlcmljYWwgbGluZWFyIGludGVycG9sYXRpb24gd2l0aCB0d28gY29udHJvbCBwb2ludHNcbiAqXG4gKiBAcGFyYW0ge3F1YXR9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0fSBjIHRoZSB0aGlyZCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gZCB0aGUgZm91cnRoIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50LCBpbiB0aGUgcmFuZ2UgWzAtMV0sIGJldHdlZW4gdGhlIHR3byBpbnB1dHNcbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgdmFyIHNxbGVycCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRlbXAxID0gY3JlYXRlKCk7XG4gIHZhciB0ZW1wMiA9IGNyZWF0ZSgpO1xuICByZXR1cm4gZnVuY3Rpb24gKG91dCwgYSwgYiwgYywgZCwgdCkge1xuICAgIHNsZXJwKHRlbXAxLCBhLCBkLCB0KTtcbiAgICBzbGVycCh0ZW1wMiwgYiwgYywgdCk7XG4gICAgc2xlcnAob3V0LCB0ZW1wMSwgdGVtcDIsIDIgKiB0ICogKDEgLSB0KSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcbn0oKTtcbi8qKlxuICogU2V0cyB0aGUgc3BlY2lmaWVkIHF1YXRlcm5pb24gd2l0aCB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW5cbiAqIGF4ZXMuIEVhY2ggYXhpcyBpcyBhIHZlYzMgYW5kIGlzIGV4cGVjdGVkIHRvIGJlIHVuaXQgbGVuZ3RoIGFuZFxuICogcGVycGVuZGljdWxhciB0byBhbGwgb3RoZXIgc3BlY2lmaWVkIGF4ZXMuXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHZpZXcgIHRoZSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSB2aWV3aW5nIGRpcmVjdGlvblxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHJpZ2h0IHRoZSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBsb2NhbCBcInJpZ2h0XCIgZGlyZWN0aW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gdXAgICAgdGhlIHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGxvY2FsIFwidXBcIiBkaXJlY3Rpb25cbiAqIEByZXR1cm5zIHtxdWF0fSBvdXRcbiAqL1xuXG5leHBvcnQgdmFyIHNldEF4ZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBtYXRyID0gbWF0My5jcmVhdGUoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvdXQsIHZpZXcsIHJpZ2h0LCB1cCkge1xuICAgIG1hdHJbMF0gPSByaWdodFswXTtcbiAgICBtYXRyWzNdID0gcmlnaHRbMV07XG4gICAgbWF0cls2XSA9IHJpZ2h0WzJdO1xuICAgIG1hdHJbMV0gPSB1cFswXTtcbiAgICBtYXRyWzRdID0gdXBbMV07XG4gICAgbWF0cls3XSA9IHVwWzJdO1xuICAgIG1hdHJbMl0gPSAtdmlld1swXTtcbiAgICBtYXRyWzVdID0gLXZpZXdbMV07XG4gICAgbWF0cls4XSA9IC12aWV3WzJdO1xuICAgIHJldHVybiBub3JtYWxpemUob3V0LCBmcm9tTWF0MyhvdXQsIG1hdHIpKTtcbiAgfTtcbn0oKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat2.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat2.js ***! \**************************************************************/ /*! exports provided: create, clone, fromValues, fromRotationTranslationValues, fromRotationTranslation, fromTranslation, fromRotation, fromMat4, copy, identity, set, getReal, getDual, setReal, setDual, getTranslation, translate, rotateX, rotateY, rotateZ, rotateByQuatAppend, rotateByQuatPrepend, rotateAroundAxis, add, multiply, mul, scale, dot, lerp, invert, conjugate, length, len, squaredLength, sqrLen, normalize, str, exactEquals, equals */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslationValues\", function() { return fromRotationTranslationValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotationTranslation\", function() { return fromRotationTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromTranslation\", function() { return fromTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromRotation\", function() { return fromRotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromMat4\", function() { return fromMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return identity; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getReal\", function() { return getReal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDual\", function() { return getDual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setReal\", function() { return setReal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDual\", function() { return setDual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTranslation\", function() { return getTranslation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateByQuatAppend\", function() { return rotateByQuatAppend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateByQuatPrepend\", function() { return rotateByQuatPrepend; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateAroundAxis\", function() { return rotateAroundAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conjugate\", function() { return conjugate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n/* harmony import */ var _quat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quat.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat.js\");\n/* harmony import */ var _mat4_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mat4.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/mat4.js\");\n\n\n\n/**\n * Dual Quaternion
\n * Format: [real, dual]
\n * Quaternion format: XYZW
\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.
\n * @module quat2\n */\n\n/**\n * Creates a new identity dual quat\n *\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n */\n\nfunction create() {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n dq[0] = 0;\n dq[1] = 0;\n dq[2] = 0;\n dq[4] = 0;\n dq[5] = 0;\n dq[6] = 0;\n dq[7] = 0;\n }\n\n dq[3] = 1;\n return dq;\n}\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {ReadonlyQuat2} a dual quaternion to clone\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nfunction clone(a) {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n dq[0] = a[0];\n dq[1] = a[1];\n dq[2] = a[2];\n dq[3] = a[3];\n dq[4] = a[4];\n dq[5] = a[5];\n dq[6] = a[6];\n dq[7] = a[7];\n return dq;\n}\n/**\n * Creates a new dual quat initialized with the given values\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nfunction fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n dq[4] = x2;\n dq[5] = y2;\n dq[6] = z2;\n dq[7] = w2;\n return dq;\n}\n/**\n * Creates a new dual quat from the given values (quat and translation)\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component (translation)\n * @param {Number} y2 Y component (translation)\n * @param {Number} z2 Z component (translation)\n * @returns {quat2} new dual quaternion\n * @function\n */\n\nfunction fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n var dq = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](8);\n dq[0] = x1;\n dq[1] = y1;\n dq[2] = z1;\n dq[3] = w1;\n var ax = x2 * 0.5,\n ay = y2 * 0.5,\n az = z2 * 0.5;\n dq[4] = ax * w1 + ay * z1 - az * y1;\n dq[5] = ay * w1 + az * x1 - ax * z1;\n dq[6] = az * w1 + ax * y1 - ay * x1;\n dq[7] = -ax * x1 - ay * y1 - az * z1;\n return dq;\n}\n/**\n * Creates a dual quat from a quaternion and a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q a normalized quaternion\n * @param {ReadonlyVec3} t tranlation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nfunction fromRotationTranslation(out, q, t) {\n var ax = t[0] * 0.5,\n ay = t[1] * 0.5,\n az = t[2] * 0.5,\n bx = q[0],\n by = q[1],\n bz = q[2],\n bw = q[3];\n out[0] = bx;\n out[1] = by;\n out[2] = bz;\n out[3] = bw;\n out[4] = ax * bw + ay * bz - az * by;\n out[5] = ay * bw + az * bx - ax * bz;\n out[6] = az * bw + ax * by - ay * bx;\n out[7] = -ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Creates a dual quat from a translation\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyVec3} t translation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nfunction fromTranslation(out, t) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = t[0] * 0.5;\n out[5] = t[1] * 0.5;\n out[6] = t[2] * 0.5;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a dual quat from a quaternion\n *\n * @param {ReadonlyQuat2} dual quaternion receiving operation result\n * @param {ReadonlyQuat} q the quaternion\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\n\nfunction fromRotation(out, q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Creates a new dual quat from a matrix (4x4)\n *\n * @param {quat2} out the dual quaternion\n * @param {ReadonlyMat4} a the matrix\n * @returns {quat2} dual quat receiving operation result\n * @function\n */\n\nfunction fromMat4(out, a) {\n //TODO Optimize this\n var outer = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"create\"]();\n _mat4_js__WEBPACK_IMPORTED_MODULE_2__[\"getRotation\"](outer, a);\n var t = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n _mat4_js__WEBPACK_IMPORTED_MODULE_2__[\"getTranslation\"](t, a);\n fromRotationTranslation(out, outer, t);\n return out;\n}\n/**\n * Copy the values from one dual quat to another\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the source dual quaternion\n * @returns {quat2} out\n * @function\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Set a dual quat to the identity dual quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @returns {quat2} out\n */\n\nfunction identity(out) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n return out;\n}\n/**\n * Set the components of a dual quat to the given values\n *\n * @param {quat2} out the receiving quaternion\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} out\n * @function\n */\n\nfunction set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n out[0] = x1;\n out[1] = y1;\n out[2] = z1;\n out[3] = w1;\n out[4] = x2;\n out[5] = y2;\n out[6] = z2;\n out[7] = w2;\n return out;\n}\n/**\n * Gets the real part of a dual quat\n * @param {quat} out real part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} real part\n */\n\nvar getReal = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"];\n/**\n * Gets the dual part of a dual quat\n * @param {quat} out dual part\n * @param {ReadonlyQuat2} a Dual Quaternion\n * @return {quat} dual part\n */\n\nfunction getDual(out, a) {\n out[0] = a[4];\n out[1] = a[5];\n out[2] = a[6];\n out[3] = a[7];\n return out;\n}\n/**\n * Set the real component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the real part\n * @returns {quat2} out\n * @function\n */\n\nvar setReal = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"copy\"];\n/**\n * Set the dual component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat} q a quaternion representing the dual part\n * @returns {quat2} out\n * @function\n */\n\nfunction setDual(out, q) {\n out[4] = q[0];\n out[5] = q[1];\n out[6] = q[2];\n out[7] = q[3];\n return out;\n}\n/**\n * Gets the translation of a normalized dual quat\n * @param {vec3} out translation\n * @param {ReadonlyQuat2} a Dual Quaternion to be decomposed\n * @return {vec3} translation\n */\n\nfunction getTranslation(out, a) {\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3];\n out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n return out;\n}\n/**\n * Translates a dual quat by the given vector\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to translate\n * @param {ReadonlyVec3} v vector to translate by\n * @returns {quat2} out\n */\n\nfunction translate(out, a, v) {\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3],\n bx1 = v[0] * 0.5,\n by1 = v[1] * 0.5,\n bz1 = v[2] * 0.5,\n ax2 = a[4],\n ay2 = a[5],\n az2 = a[6],\n aw2 = a[7];\n out[0] = ax1;\n out[1] = ay1;\n out[2] = az1;\n out[3] = aw1;\n out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n return out;\n}\n/**\n * Rotates a dual quat around the X axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nfunction rotateX(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"rotateX\"](out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Y axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nfunction rotateY(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"rotateY\"](out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat around the Z axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\n\nfunction rotateZ(out, a, rad) {\n var bx = -a[0],\n by = -a[1],\n bz = -a[2],\n bw = a[3],\n ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7],\n ax1 = ax * bw + aw * bx + ay * bz - az * by,\n ay1 = ay * bw + aw * by + az * bx - ax * bz,\n az1 = az * bw + aw * bz + ax * by - ay * bx,\n aw1 = aw * bw - ax * bx - ay * by - az * bz;\n _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"rotateZ\"](out, a, rad);\n bx = out[0];\n by = out[1];\n bz = out[2];\n bw = out[3];\n out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (a * q)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @returns {quat2} out\n */\n\nfunction rotateByQuatAppend(out, a, q) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n ax = a[0],\n ay = a[1],\n az = a[2],\n aw = a[3];\n out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n ax = a[4];\n ay = a[5];\n az = a[6];\n aw = a[7];\n out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n return out;\n}\n/**\n * Rotates a dual quat by a given quaternion (q * a)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat} q quaternion to rotate by\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @returns {quat2} out\n */\n\nfunction rotateByQuatPrepend(out, q, a) {\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3],\n bx = a[0],\n by = a[1],\n bz = a[2],\n bw = a[3];\n out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n bx = a[4];\n by = a[5];\n bz = a[6];\n bw = a[7];\n out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n return out;\n}\n/**\n * Rotates a dual quat around a given axis. Does the normalisation automatically\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the dual quaternion to rotate\n * @param {ReadonlyVec3} axis the axis to rotate around\n * @param {Number} rad how far the rotation should be\n * @returns {quat2} out\n */\n\nfunction rotateAroundAxis(out, a, axis, rad) {\n //Special case for rad = 0\n if (Math.abs(rad) < _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"]) {\n return copy(out, a);\n }\n\n var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n rad = rad * 0.5;\n var s = Math.sin(rad);\n var bx = s * axis[0] / axisLength;\n var by = s * axis[1] / axisLength;\n var bz = s * axis[2] / axisLength;\n var bw = Math.cos(rad);\n var ax1 = a[0],\n ay1 = a[1],\n az1 = a[2],\n aw1 = a[3];\n out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n var ax = a[4],\n ay = a[5],\n az = a[6],\n aw = a[7];\n out[4] = ax * bw + aw * bx + ay * bz - az * by;\n out[5] = ay * bw + aw * by + az * bx - ax * bz;\n out[6] = az * bw + aw * bz + ax * by - ay * bx;\n out[7] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n/**\n * Adds two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n * @function\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n return out;\n}\n/**\n * Multiplies two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {quat2} out\n */\n\nfunction multiply(out, a, b) {\n var ax0 = a[0],\n ay0 = a[1],\n az0 = a[2],\n aw0 = a[3],\n bx1 = b[4],\n by1 = b[5],\n bz1 = b[6],\n bw1 = b[7],\n ax1 = a[4],\n ay1 = a[5],\n az1 = a[6],\n aw1 = a[7],\n bx0 = b[0],\n by0 = b[1],\n bz0 = b[2],\n bw0 = b[3];\n out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n return out;\n}\n/**\n * Alias for {@link quat2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Scales a dual quat by a scalar number\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the dual quat to scale\n * @param {Number} b amount to scale the dual quat by\n * @returns {quat2} out\n * @function\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n return out;\n}\n/**\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\n *\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\n\nvar dot = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"dot\"];\n/**\n * Performs a linear interpolation between two dual quats's\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n *\n * @param {quat2} out the receiving dual quat\n * @param {ReadonlyQuat2} a the first operand\n * @param {ReadonlyQuat2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat2} out\n */\n\nfunction lerp(out, a, b, t) {\n var mt = 1 - t;\n if (dot(a, b) < 0) t = -t;\n out[0] = a[0] * mt + b[0] * t;\n out[1] = a[1] * mt + b[1] * t;\n out[2] = a[2] * mt + b[2] * t;\n out[3] = a[3] * mt + b[3] * t;\n out[4] = a[4] * mt + b[4] * t;\n out[5] = a[5] * mt + b[5] * t;\n out[6] = a[6] * mt + b[6] * t;\n out[7] = a[7] * mt + b[7] * t;\n return out;\n}\n/**\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quat to calculate inverse of\n * @returns {quat2} out\n */\n\nfunction invert(out, a) {\n var sqlen = squaredLength(a);\n out[0] = -a[0] / sqlen;\n out[1] = -a[1] / sqlen;\n out[2] = -a[2] / sqlen;\n out[3] = a[3] / sqlen;\n out[4] = -a[4] / sqlen;\n out[5] = -a[5] / sqlen;\n out[6] = -a[6] / sqlen;\n out[7] = a[7] / sqlen;\n return out;\n}\n/**\n * Calculates the conjugate of a dual quat\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n *\n * @param {quat2} out the receiving quaternion\n * @param {ReadonlyQuat2} a quat to calculate conjugate of\n * @returns {quat2} out\n */\n\nfunction conjugate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n out[4] = -a[4];\n out[5] = -a[5];\n out[6] = -a[6];\n out[7] = a[7];\n return out;\n}\n/**\n * Calculates the length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate length of\n * @returns {Number} length of a\n * @function\n */\n\nvar length = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"length\"];\n/**\n * Alias for {@link quat2.length}\n * @function\n */\n\nvar len = length;\n/**\n * Calculates the squared length of a dual quat\n *\n * @param {ReadonlyQuat2} a dual quat to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\n\nvar squaredLength = _quat_js__WEBPACK_IMPORTED_MODULE_1__[\"squaredLength\"];\n/**\n * Alias for {@link quat2.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Normalize a dual quat\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {ReadonlyQuat2} a dual quaternion to normalize\n * @returns {quat2} out\n * @function\n */\n\nfunction normalize(out, a) {\n var magnitude = squaredLength(a);\n\n if (magnitude > 0) {\n magnitude = Math.sqrt(magnitude);\n var a0 = a[0] / magnitude;\n var a1 = a[1] / magnitude;\n var a2 = a[2] / magnitude;\n var a3 = a[3] / magnitude;\n var b0 = a[4];\n var b1 = a[5];\n var b2 = a[6];\n var b3 = a[7];\n var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n out[0] = a0;\n out[1] = a1;\n out[2] = a2;\n out[3] = a3;\n out[4] = (b0 - a0 * a_dot_b) / magnitude;\n out[5] = (b1 - a1 * a_dot_b) / magnitude;\n out[6] = (b2 - a2 * a_dot_b) / magnitude;\n out[7] = (b3 - a3 * a_dot_b) / magnitude;\n }\n\n return out;\n}\n/**\n * Returns a string representation of a dual quatenion\n *\n * @param {ReadonlyQuat2} a dual quaternion to represent as a string\n * @returns {String} string representation of the dual quat\n */\n\nfunction str(a) {\n return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n}\n/**\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyQuat2} a the first dual quaternion.\n * @param {ReadonlyQuat2} b the second dual quaternion.\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n}\n/**\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n *\n * @param {ReadonlyQuat2} a the first dual quat.\n * @param {ReadonlyQuat2} b the second dual quat.\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL3F1YXQyLmpzP2Q0MWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0M7QUFDTjtBQUNBO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQLGVBQWUscURBQW1COztBQUVsQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQLGVBQWUscURBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQLGVBQWUscURBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1AsZUFBZSxxREFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjLCtDQUFXO0FBQ3pCLEVBQUUsb0RBQWdCO0FBQ2xCLGNBQWMscURBQW1CO0FBQ2pDLEVBQUUsdURBQW1CO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksY0FBYztBQUMxQixZQUFZLEtBQUs7QUFDakI7O0FBRU8sY0FBYyw2Q0FBUztBQUM5QjtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksY0FBYztBQUMxQixZQUFZLEtBQUs7QUFDakI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPLGNBQWMsNkNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQUs7QUFDakIsWUFBWSxjQUFjO0FBQzFCLFlBQVksS0FBSztBQUNqQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxnREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxnREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxnREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBLHNCQUFzQixrREFBZ0I7QUFDdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLGNBQWM7QUFDekIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVPLFVBQVUsNENBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsY0FBYztBQUN6QixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsY0FBYztBQUN6QixhQUFhLE1BQU07QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVPLGFBQWEsK0NBQVc7QUFDL0I7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFTyxvQkFBb0Isc0RBQWtCO0FBQzdDO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsUUFBUTtBQUNyQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQixxRUFBcUUsa0RBQWdCO0FBQ2pvQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtbWF0cml4QDMuNC4zQGdsLW1hdHJpeC9lc20vcXVhdDIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBnbE1hdHJpeCBmcm9tIFwiLi9jb21tb24uanNcIjtcbmltcG9ydCAqIGFzIHF1YXQgZnJvbSBcIi4vcXVhdC5qc1wiO1xuaW1wb3J0ICogYXMgbWF0NCBmcm9tIFwiLi9tYXQ0LmpzXCI7XG4vKipcbiAqIER1YWwgUXVhdGVybmlvbjxicj5cbiAqIEZvcm1hdDogW3JlYWwsIGR1YWxdPGJyPlxuICogUXVhdGVybmlvbiBmb3JtYXQ6IFhZWlc8YnI+XG4gKiBNYWtlIHN1cmUgdG8gaGF2ZSBub3JtYWxpemVkIGR1YWwgcXVhdGVybmlvbnMsIG90aGVyd2lzZSB0aGUgZnVuY3Rpb25zIG1heSBub3Qgd29yayBhcyBpbnRlbmRlZC48YnI+XG4gKiBAbW9kdWxlIHF1YXQyXG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGlkZW50aXR5IGR1YWwgcXVhdFxuICpcbiAqIEByZXR1cm5zIHtxdWF0Mn0gYSBuZXcgZHVhbCBxdWF0ZXJuaW9uIFtyZWFsIC0+IHJvdGF0aW9uLCBkdWFsIC0+IHRyYW5zbGF0aW9uXVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBkcSA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDgpO1xuXG4gIGlmIChnbE1hdHJpeC5BUlJBWV9UWVBFICE9IEZsb2F0MzJBcnJheSkge1xuICAgIGRxWzBdID0gMDtcbiAgICBkcVsxXSA9IDA7XG4gICAgZHFbMl0gPSAwO1xuICAgIGRxWzRdID0gMDtcbiAgICBkcVs1XSA9IDA7XG4gICAgZHFbNl0gPSAwO1xuICAgIGRxWzddID0gMDtcbiAgfVxuXG4gIGRxWzNdID0gMTtcbiAgcmV0dXJuIGRxO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHF1YXQgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyBxdWF0ZXJuaW9uXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIGR1YWwgcXVhdGVybmlvbiB0byBjbG9uZVxuICogQHJldHVybnMge3F1YXQyfSBuZXcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoYSkge1xuICB2YXIgZHEgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg4KTtcbiAgZHFbMF0gPSBhWzBdO1xuICBkcVsxXSA9IGFbMV07XG4gIGRxWzJdID0gYVsyXTtcbiAgZHFbM10gPSBhWzNdO1xuICBkcVs0XSA9IGFbNF07XG4gIGRxWzVdID0gYVs1XTtcbiAgZHFbNl0gPSBhWzZdO1xuICBkcVs3XSA9IGFbN107XG4gIHJldHVybiBkcTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBkdWFsIHF1YXQgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHgxIFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geTEgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6MSBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcxIFcgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geDIgWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5MiBZIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHoyIFogY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gdzIgVyBjb21wb25lbnRcbiAqIEByZXR1cm5zIHtxdWF0Mn0gbmV3IGR1YWwgcXVhdGVybmlvblxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21WYWx1ZXMoeDEsIHkxLCB6MSwgdzEsIHgyLCB5MiwgejIsIHcyKSB7XG4gIHZhciBkcSA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDgpO1xuICBkcVswXSA9IHgxO1xuICBkcVsxXSA9IHkxO1xuICBkcVsyXSA9IHoxO1xuICBkcVszXSA9IHcxO1xuICBkcVs0XSA9IHgyO1xuICBkcVs1XSA9IHkyO1xuICBkcVs2XSA9IHoyO1xuICBkcVs3XSA9IHcyO1xuICByZXR1cm4gZHE7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZHVhbCBxdWF0IGZyb20gdGhlIGdpdmVuIHZhbHVlcyAocXVhdCBhbmQgdHJhbnNsYXRpb24pXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHgxIFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geTEgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6MSBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcxIFcgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geDIgWCBjb21wb25lbnQgKHRyYW5zbGF0aW9uKVxuICogQHBhcmFtIHtOdW1iZXJ9IHkyIFkgY29tcG9uZW50ICh0cmFuc2xhdGlvbilcbiAqIEBwYXJhbSB7TnVtYmVyfSB6MiBaIGNvbXBvbmVudCAodHJhbnNsYXRpb24pXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG5ldyBkdWFsIHF1YXRlcm5pb25cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUm90YXRpb25UcmFuc2xhdGlvblZhbHVlcyh4MSwgeTEsIHoxLCB3MSwgeDIsIHkyLCB6Mikge1xuICB2YXIgZHEgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg4KTtcbiAgZHFbMF0gPSB4MTtcbiAgZHFbMV0gPSB5MTtcbiAgZHFbMl0gPSB6MTtcbiAgZHFbM10gPSB3MTtcbiAgdmFyIGF4ID0geDIgKiAwLjUsXG4gICAgICBheSA9IHkyICogMC41LFxuICAgICAgYXogPSB6MiAqIDAuNTtcbiAgZHFbNF0gPSBheCAqIHcxICsgYXkgKiB6MSAtIGF6ICogeTE7XG4gIGRxWzVdID0gYXkgKiB3MSArIGF6ICogeDEgLSBheCAqIHoxO1xuICBkcVs2XSA9IGF6ICogdzEgKyBheCAqIHkxIC0gYXkgKiB4MTtcbiAgZHFbN10gPSAtYXggKiB4MSAtIGF5ICogeTEgLSBheiAqIHoxO1xuICByZXR1cm4gZHE7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkdWFsIHF1YXQgZnJvbSBhIHF1YXRlcm5pb24gYW5kIGEgdHJhbnNsYXRpb25cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGR1YWwgcXVhdGVybmlvbiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IHEgYSBub3JtYWxpemVkIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB0IHRyYW5sYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7cXVhdDJ9IGR1YWwgcXVhdGVybmlvbiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG91dCwgcSwgdCkge1xuICB2YXIgYXggPSB0WzBdICogMC41LFxuICAgICAgYXkgPSB0WzFdICogMC41LFxuICAgICAgYXogPSB0WzJdICogMC41LFxuICAgICAgYnggPSBxWzBdLFxuICAgICAgYnkgPSBxWzFdLFxuICAgICAgYnogPSBxWzJdLFxuICAgICAgYncgPSBxWzNdO1xuICBvdXRbMF0gPSBieDtcbiAgb3V0WzFdID0gYnk7XG4gIG91dFsyXSA9IGJ6O1xuICBvdXRbM10gPSBidztcbiAgb3V0WzRdID0gYXggKiBidyArIGF5ICogYnogLSBheiAqIGJ5O1xuICBvdXRbNV0gPSBheSAqIGJ3ICsgYXogKiBieCAtIGF4ICogYno7XG4gIG91dFs2XSA9IGF6ICogYncgKyBheCAqIGJ5IC0gYXkgKiBieDtcbiAgb3V0WzddID0gLWF4ICogYnggLSBheSAqIGJ5IC0gYXogKiBiejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGR1YWwgcXVhdCBmcm9tIGEgdHJhbnNsYXRpb25cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGR1YWwgcXVhdGVybmlvbiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IHQgdHJhbnNsYXRpb24gdmVjdG9yXG4gKiBAcmV0dXJucyB7cXVhdDJ9IGR1YWwgcXVhdGVybmlvbiByZWNlaXZpbmcgb3BlcmF0aW9uIHJlc3VsdFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21UcmFuc2xhdGlvbihvdXQsIHQpIHtcbiAgb3V0WzBdID0gMDtcbiAgb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gMDtcbiAgb3V0WzNdID0gMTtcbiAgb3V0WzRdID0gdFswXSAqIDAuNTtcbiAgb3V0WzVdID0gdFsxXSAqIDAuNTtcbiAgb3V0WzZdID0gdFsyXSAqIDAuNTtcbiAgb3V0WzddID0gMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGR1YWwgcXVhdCBmcm9tIGEgcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gZHVhbCBxdWF0ZXJuaW9uIHJlY2VpdmluZyBvcGVyYXRpb24gcmVzdWx0XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSB0aGUgcXVhdGVybmlvblxuICogQHJldHVybnMge3F1YXQyfSBkdWFsIHF1YXRlcm5pb24gcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUm90YXRpb24ob3V0LCBxKSB7XG4gIG91dFswXSA9IHFbMF07XG4gIG91dFsxXSA9IHFbMV07XG4gIG91dFsyXSA9IHFbMl07XG4gIG91dFszXSA9IHFbM107XG4gIG91dFs0XSA9IDA7XG4gIG91dFs1XSA9IDA7XG4gIG91dFs2XSA9IDA7XG4gIG91dFs3XSA9IDA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZHVhbCBxdWF0IGZyb20gYSBtYXRyaXggKDR4NClcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seU1hdDR9IGEgdGhlIG1hdHJpeFxuICogQHJldHVybnMge3F1YXQyfSBkdWFsIHF1YXQgcmVjZWl2aW5nIG9wZXJhdGlvbiByZXN1bHRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tTWF0NChvdXQsIGEpIHtcbiAgLy9UT0RPIE9wdGltaXplIHRoaXNcbiAgdmFyIG91dGVyID0gcXVhdC5jcmVhdGUoKTtcbiAgbWF0NC5nZXRSb3RhdGlvbihvdXRlciwgYSk7XG4gIHZhciB0ID0gbmV3IGdsTWF0cml4LkFSUkFZX1RZUEUoMyk7XG4gIG1hdDQuZ2V0VHJhbnNsYXRpb24odCwgYSk7XG4gIGZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKG91dCwgb3V0ZXIsIHQpO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgZHVhbCBxdWF0IHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgc291cmNlIGR1YWwgcXVhdGVybmlvblxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KG91dCwgYSkge1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICBvdXRbNF0gPSBhWzRdO1xuICBvdXRbNV0gPSBhWzVdO1xuICBvdXRbNl0gPSBhWzZdO1xuICBvdXRbN10gPSBhWzddO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTZXQgYSBkdWFsIHF1YXQgdG8gdGhlIGlkZW50aXR5IGR1YWwgcXVhdGVybmlvblxuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aXR5KG91dCkge1xuICBvdXRbMF0gPSAwO1xuICBvdXRbMV0gPSAwO1xuICBvdXRbMl0gPSAwO1xuICBvdXRbM10gPSAxO1xuICBvdXRbNF0gPSAwO1xuICBvdXRbNV0gPSAwO1xuICBvdXRbNl0gPSAwO1xuICBvdXRbN10gPSAwO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSBkdWFsIHF1YXQgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7TnVtYmVyfSB4MSBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkxIFkgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0gejEgWiBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB3MSBXIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHgyIFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geTIgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6MiBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcyIFcgY29tcG9uZW50XG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChvdXQsIHgxLCB5MSwgejEsIHcxLCB4MiwgeTIsIHoyLCB3Mikge1xuICBvdXRbMF0gPSB4MTtcbiAgb3V0WzFdID0geTE7XG4gIG91dFsyXSA9IHoxO1xuICBvdXRbM10gPSB3MTtcbiAgb3V0WzRdID0geDI7XG4gIG91dFs1XSA9IHkyO1xuICBvdXRbNl0gPSB6MjtcbiAgb3V0WzddID0gdzI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdldHMgdGhlIHJlYWwgcGFydCBvZiBhIGR1YWwgcXVhdFxuICogQHBhcmFtICB7cXVhdH0gb3V0IHJlYWwgcGFydFxuICogQHBhcmFtICB7UmVhZG9ubHlRdWF0Mn0gYSBEdWFsIFF1YXRlcm5pb25cbiAqIEByZXR1cm4ge3F1YXR9IHJlYWwgcGFydFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0UmVhbCA9IHF1YXQuY29weTtcbi8qKlxuICogR2V0cyB0aGUgZHVhbCBwYXJ0IG9mIGEgZHVhbCBxdWF0XG4gKiBAcGFyYW0gIHtxdWF0fSBvdXQgZHVhbCBwYXJ0XG4gKiBAcGFyYW0gIHtSZWFkb25seVF1YXQyfSBhIER1YWwgUXVhdGVybmlvblxuICogQHJldHVybiB7cXVhdH0gZHVhbCBwYXJ0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldER1YWwob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbNF07XG4gIG91dFsxXSA9IGFbNV07XG4gIG91dFsyXSA9IGFbNl07XG4gIG91dFszXSA9IGFbN107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgcmVhbCBjb21wb25lbnQgb2YgYSBkdWFsIHF1YXQgdG8gdGhlIGdpdmVuIHF1YXRlcm5pb25cbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBhIHF1YXRlcm5pb24gcmVwcmVzZW50aW5nIHRoZSByZWFsIHBhcnRcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNldFJlYWwgPSBxdWF0LmNvcHk7XG4vKipcbiAqIFNldCB0aGUgZHVhbCBjb21wb25lbnQgb2YgYSBkdWFsIHF1YXQgdG8gdGhlIGdpdmVuIHF1YXRlcm5pb25cbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBhIHF1YXRlcm5pb24gcmVwcmVzZW50aW5nIHRoZSBkdWFsIHBhcnRcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0RHVhbChvdXQsIHEpIHtcbiAgb3V0WzRdID0gcVswXTtcbiAgb3V0WzVdID0gcVsxXTtcbiAgb3V0WzZdID0gcVsyXTtcbiAgb3V0WzddID0gcVszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2V0cyB0aGUgdHJhbnNsYXRpb24gb2YgYSBub3JtYWxpemVkIGR1YWwgcXVhdFxuICogQHBhcmFtICB7dmVjM30gb3V0IHRyYW5zbGF0aW9uXG4gKiBAcGFyYW0gIHtSZWFkb25seVF1YXQyfSBhIER1YWwgUXVhdGVybmlvbiB0byBiZSBkZWNvbXBvc2VkXG4gKiBAcmV0dXJuIHt2ZWMzfSB0cmFuc2xhdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2xhdGlvbihvdXQsIGEpIHtcbiAgdmFyIGF4ID0gYVs0XSxcbiAgICAgIGF5ID0gYVs1XSxcbiAgICAgIGF6ID0gYVs2XSxcbiAgICAgIGF3ID0gYVs3XSxcbiAgICAgIGJ4ID0gLWFbMF0sXG4gICAgICBieSA9IC1hWzFdLFxuICAgICAgYnogPSAtYVsyXSxcbiAgICAgIGJ3ID0gYVszXTtcbiAgb3V0WzBdID0gKGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnkpICogMjtcbiAgb3V0WzFdID0gKGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYnopICogMjtcbiAgb3V0WzJdID0gKGF6ICogYncgKyBhdyAqIGJ6ICsgYXggKiBieSAtIGF5ICogYngpICogMjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNsYXRlcyBhIGR1YWwgcXVhdCBieSB0aGUgZ2l2ZW4gdmVjdG9yXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGR1YWwgcXVhdGVybmlvbiB0byB0cmFuc2xhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSB2IHZlY3RvciB0byB0cmFuc2xhdGUgYnlcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZShvdXQsIGEsIHYpIHtcbiAgdmFyIGF4MSA9IGFbMF0sXG4gICAgICBheTEgPSBhWzFdLFxuICAgICAgYXoxID0gYVsyXSxcbiAgICAgIGF3MSA9IGFbM10sXG4gICAgICBieDEgPSB2WzBdICogMC41LFxuICAgICAgYnkxID0gdlsxXSAqIDAuNSxcbiAgICAgIGJ6MSA9IHZbMl0gKiAwLjUsXG4gICAgICBheDIgPSBhWzRdLFxuICAgICAgYXkyID0gYVs1XSxcbiAgICAgIGF6MiA9IGFbNl0sXG4gICAgICBhdzIgPSBhWzddO1xuICBvdXRbMF0gPSBheDE7XG4gIG91dFsxXSA9IGF5MTtcbiAgb3V0WzJdID0gYXoxO1xuICBvdXRbM10gPSBhdzE7XG4gIG91dFs0XSA9IGF3MSAqIGJ4MSArIGF5MSAqIGJ6MSAtIGF6MSAqIGJ5MSArIGF4MjtcbiAgb3V0WzVdID0gYXcxICogYnkxICsgYXoxICogYngxIC0gYXgxICogYnoxICsgYXkyO1xuICBvdXRbNl0gPSBhdzEgKiBiejEgKyBheDEgKiBieTEgLSBheTEgKiBieDEgKyBhejI7XG4gIG91dFs3XSA9IC1heDEgKiBieDEgLSBheTEgKiBieTEgLSBhejEgKiBiejEgKyBhdzI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBkdWFsIHF1YXQgYXJvdW5kIHRoZSBYIGF4aXNcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZHVhbCBxdWF0ZXJuaW9uIHRvIHJvdGF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHJhZCBob3cgZmFyIHNob3VsZCB0aGUgcm90YXRpb24gYmVcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVgob3V0LCBhLCByYWQpIHtcbiAgdmFyIGJ4ID0gLWFbMF0sXG4gICAgICBieSA9IC1hWzFdLFxuICAgICAgYnogPSAtYVsyXSxcbiAgICAgIGJ3ID0gYVszXSxcbiAgICAgIGF4ID0gYVs0XSxcbiAgICAgIGF5ID0gYVs1XSxcbiAgICAgIGF6ID0gYVs2XSxcbiAgICAgIGF3ID0gYVs3XSxcbiAgICAgIGF4MSA9IGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnksXG4gICAgICBheTEgPSBheSAqIGJ3ICsgYXcgKiBieSArIGF6ICogYnggLSBheCAqIGJ6LFxuICAgICAgYXoxID0gYXogKiBidyArIGF3ICogYnogKyBheCAqIGJ5IC0gYXkgKiBieCxcbiAgICAgIGF3MSA9IGF3ICogYncgLSBheCAqIGJ4IC0gYXkgKiBieSAtIGF6ICogYno7XG4gIHF1YXQucm90YXRlWChvdXQsIGEsIHJhZCk7XG4gIGJ4ID0gb3V0WzBdO1xuICBieSA9IG91dFsxXTtcbiAgYnogPSBvdXRbMl07XG4gIGJ3ID0gb3V0WzNdO1xuICBvdXRbNF0gPSBheDEgKiBidyArIGF3MSAqIGJ4ICsgYXkxICogYnogLSBhejEgKiBieTtcbiAgb3V0WzVdID0gYXkxICogYncgKyBhdzEgKiBieSArIGF6MSAqIGJ4IC0gYXgxICogYno7XG4gIG91dFs2XSA9IGF6MSAqIGJ3ICsgYXcxICogYnogKyBheDEgKiBieSAtIGF5MSAqIGJ4O1xuICBvdXRbN10gPSBhdzEgKiBidyAtIGF4MSAqIGJ4IC0gYXkxICogYnkgLSBhejEgKiBiejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlcyBhIGR1YWwgcXVhdCBhcm91bmQgdGhlIFkgYXhpc1xuICpcbiAqIEBwYXJhbSB7cXVhdDJ9IG91dCB0aGUgcmVjZWl2aW5nIGR1YWwgcXVhdGVybmlvblxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBkdWFsIHF1YXRlcm5pb24gdG8gcm90YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gcmFkIGhvdyBmYXIgc2hvdWxkIHRoZSByb3RhdGlvbiBiZVxuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWShvdXQsIGEsIHJhZCkge1xuICB2YXIgYnggPSAtYVswXSxcbiAgICAgIGJ5ID0gLWFbMV0sXG4gICAgICBieiA9IC1hWzJdLFxuICAgICAgYncgPSBhWzNdLFxuICAgICAgYXggPSBhWzRdLFxuICAgICAgYXkgPSBhWzVdLFxuICAgICAgYXogPSBhWzZdLFxuICAgICAgYXcgPSBhWzddLFxuICAgICAgYXgxID0gYXggKiBidyArIGF3ICogYnggKyBheSAqIGJ6IC0gYXogKiBieSxcbiAgICAgIGF5MSA9IGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYnosXG4gICAgICBhejEgPSBheiAqIGJ3ICsgYXcgKiBieiArIGF4ICogYnkgLSBheSAqIGJ4LFxuICAgICAgYXcxID0gYXcgKiBidyAtIGF4ICogYnggLSBheSAqIGJ5IC0gYXogKiBiejtcbiAgcXVhdC5yb3RhdGVZKG91dCwgYSwgcmFkKTtcbiAgYnggPSBvdXRbMF07XG4gIGJ5ID0gb3V0WzFdO1xuICBieiA9IG91dFsyXTtcbiAgYncgPSBvdXRbM107XG4gIG91dFs0XSA9IGF4MSAqIGJ3ICsgYXcxICogYnggKyBheTEgKiBieiAtIGF6MSAqIGJ5O1xuICBvdXRbNV0gPSBheTEgKiBidyArIGF3MSAqIGJ5ICsgYXoxICogYnggLSBheDEgKiBiejtcbiAgb3V0WzZdID0gYXoxICogYncgKyBhdzEgKiBieiArIGF4MSAqIGJ5IC0gYXkxICogYng7XG4gIG91dFs3XSA9IGF3MSAqIGJ3IC0gYXgxICogYnggLSBheTEgKiBieSAtIGF6MSAqIGJ6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgZHVhbCBxdWF0IGFyb3VuZCB0aGUgWiBheGlzXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGR1YWwgcXVhdGVybmlvbiB0byByb3RhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWQgaG93IGZhciBzaG91bGQgdGhlIHJvdGF0aW9uIGJlXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVaKG91dCwgYSwgcmFkKSB7XG4gIHZhciBieCA9IC1hWzBdLFxuICAgICAgYnkgPSAtYVsxXSxcbiAgICAgIGJ6ID0gLWFbMl0sXG4gICAgICBidyA9IGFbM10sXG4gICAgICBheCA9IGFbNF0sXG4gICAgICBheSA9IGFbNV0sXG4gICAgICBheiA9IGFbNl0sXG4gICAgICBhdyA9IGFbN10sXG4gICAgICBheDEgPSBheCAqIGJ3ICsgYXcgKiBieCArIGF5ICogYnogLSBheiAqIGJ5LFxuICAgICAgYXkxID0gYXkgKiBidyArIGF3ICogYnkgKyBheiAqIGJ4IC0gYXggKiBieixcbiAgICAgIGF6MSA9IGF6ICogYncgKyBhdyAqIGJ6ICsgYXggKiBieSAtIGF5ICogYngsXG4gICAgICBhdzEgPSBhdyAqIGJ3IC0gYXggKiBieCAtIGF5ICogYnkgLSBheiAqIGJ6O1xuICBxdWF0LnJvdGF0ZVoob3V0LCBhLCByYWQpO1xuICBieCA9IG91dFswXTtcbiAgYnkgPSBvdXRbMV07XG4gIGJ6ID0gb3V0WzJdO1xuICBidyA9IG91dFszXTtcbiAgb3V0WzRdID0gYXgxICogYncgKyBhdzEgKiBieCArIGF5MSAqIGJ6IC0gYXoxICogYnk7XG4gIG91dFs1XSA9IGF5MSAqIGJ3ICsgYXcxICogYnkgKyBhejEgKiBieCAtIGF4MSAqIGJ6O1xuICBvdXRbNl0gPSBhejEgKiBidyArIGF3MSAqIGJ6ICsgYXgxICogYnkgLSBheTEgKiBieDtcbiAgb3V0WzddID0gYXcxICogYncgLSBheDEgKiBieCAtIGF5MSAqIGJ5IC0gYXoxICogYno7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBkdWFsIHF1YXQgYnkgYSBnaXZlbiBxdWF0ZXJuaW9uIChhICogcSlcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZHVhbCBxdWF0ZXJuaW9uIHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVF1YXR9IHEgcXVhdGVybmlvbiB0byByb3RhdGUgYnlcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZUJ5UXVhdEFwcGVuZChvdXQsIGEsIHEpIHtcbiAgdmFyIHF4ID0gcVswXSxcbiAgICAgIHF5ID0gcVsxXSxcbiAgICAgIHF6ID0gcVsyXSxcbiAgICAgIHF3ID0gcVszXSxcbiAgICAgIGF4ID0gYVswXSxcbiAgICAgIGF5ID0gYVsxXSxcbiAgICAgIGF6ID0gYVsyXSxcbiAgICAgIGF3ID0gYVszXTtcbiAgb3V0WzBdID0gYXggKiBxdyArIGF3ICogcXggKyBheSAqIHF6IC0gYXogKiBxeTtcbiAgb3V0WzFdID0gYXkgKiBxdyArIGF3ICogcXkgKyBheiAqIHF4IC0gYXggKiBxejtcbiAgb3V0WzJdID0gYXogKiBxdyArIGF3ICogcXogKyBheCAqIHF5IC0gYXkgKiBxeDtcbiAgb3V0WzNdID0gYXcgKiBxdyAtIGF4ICogcXggLSBheSAqIHF5IC0gYXogKiBxejtcbiAgYXggPSBhWzRdO1xuICBheSA9IGFbNV07XG4gIGF6ID0gYVs2XTtcbiAgYXcgPSBhWzddO1xuICBvdXRbNF0gPSBheCAqIHF3ICsgYXcgKiBxeCArIGF5ICogcXogLSBheiAqIHF5O1xuICBvdXRbNV0gPSBheSAqIHF3ICsgYXcgKiBxeSArIGF6ICogcXggLSBheCAqIHF6O1xuICBvdXRbNl0gPSBheiAqIHF3ICsgYXcgKiBxeiArIGF4ICogcXkgLSBheSAqIHF4O1xuICBvdXRbN10gPSBhdyAqIHF3IC0gYXggKiBxeCAtIGF5ICogcXkgLSBheiAqIHF6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGVzIGEgZHVhbCBxdWF0IGJ5IGEgZ2l2ZW4gcXVhdGVybmlvbiAocSAqIGEpXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBxdWF0ZXJuaW9uIHRvIHJvdGF0ZSBieVxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBkdWFsIHF1YXRlcm5pb24gdG8gcm90YXRlXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVCeVF1YXRQcmVwZW5kKG91dCwgcSwgYSkge1xuICB2YXIgcXggPSBxWzBdLFxuICAgICAgcXkgPSBxWzFdLFxuICAgICAgcXogPSBxWzJdLFxuICAgICAgcXcgPSBxWzNdLFxuICAgICAgYnggPSBhWzBdLFxuICAgICAgYnkgPSBhWzFdLFxuICAgICAgYnogPSBhWzJdLFxuICAgICAgYncgPSBhWzNdO1xuICBvdXRbMF0gPSBxeCAqIGJ3ICsgcXcgKiBieCArIHF5ICogYnogLSBxeiAqIGJ5O1xuICBvdXRbMV0gPSBxeSAqIGJ3ICsgcXcgKiBieSArIHF6ICogYnggLSBxeCAqIGJ6O1xuICBvdXRbMl0gPSBxeiAqIGJ3ICsgcXcgKiBieiArIHF4ICogYnkgLSBxeSAqIGJ4O1xuICBvdXRbM10gPSBxdyAqIGJ3IC0gcXggKiBieCAtIHF5ICogYnkgLSBxeiAqIGJ6O1xuICBieCA9IGFbNF07XG4gIGJ5ID0gYVs1XTtcbiAgYnogPSBhWzZdO1xuICBidyA9IGFbN107XG4gIG91dFs0XSA9IHF4ICogYncgKyBxdyAqIGJ4ICsgcXkgKiBieiAtIHF6ICogYnk7XG4gIG91dFs1XSA9IHF5ICogYncgKyBxdyAqIGJ5ICsgcXogKiBieCAtIHF4ICogYno7XG4gIG91dFs2XSA9IHF6ICogYncgKyBxdyAqIGJ6ICsgcXggKiBieSAtIHF5ICogYng7XG4gIG91dFs3XSA9IHF3ICogYncgLSBxeCAqIGJ4IC0gcXkgKiBieSAtIHF6ICogYno7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZXMgYSBkdWFsIHF1YXQgYXJvdW5kIGEgZ2l2ZW4gYXhpcy4gRG9lcyB0aGUgbm9ybWFsaXNhdGlvbiBhdXRvbWF0aWNhbGx5XG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGR1YWwgcXVhdGVybmlvbiB0byByb3RhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBheGlzIHRoZSBheGlzIHRvIHJvdGF0ZSBhcm91bmRcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgaG93IGZhciB0aGUgcm90YXRpb24gc2hvdWxkIGJlXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVBcm91bmRBeGlzKG91dCwgYSwgYXhpcywgcmFkKSB7XG4gIC8vU3BlY2lhbCBjYXNlIGZvciByYWQgPSAwXG4gIGlmIChNYXRoLmFicyhyYWQpIDwgZ2xNYXRyaXguRVBTSUxPTikge1xuICAgIHJldHVybiBjb3B5KG91dCwgYSk7XG4gIH1cblxuICB2YXIgYXhpc0xlbmd0aCA9IE1hdGguaHlwb3QoYXhpc1swXSwgYXhpc1sxXSwgYXhpc1syXSk7XG4gIHJhZCA9IHJhZCAqIDAuNTtcbiAgdmFyIHMgPSBNYXRoLnNpbihyYWQpO1xuICB2YXIgYnggPSBzICogYXhpc1swXSAvIGF4aXNMZW5ndGg7XG4gIHZhciBieSA9IHMgKiBheGlzWzFdIC8gYXhpc0xlbmd0aDtcbiAgdmFyIGJ6ID0gcyAqIGF4aXNbMl0gLyBheGlzTGVuZ3RoO1xuICB2YXIgYncgPSBNYXRoLmNvcyhyYWQpO1xuICB2YXIgYXgxID0gYVswXSxcbiAgICAgIGF5MSA9IGFbMV0sXG4gICAgICBhejEgPSBhWzJdLFxuICAgICAgYXcxID0gYVszXTtcbiAgb3V0WzBdID0gYXgxICogYncgKyBhdzEgKiBieCArIGF5MSAqIGJ6IC0gYXoxICogYnk7XG4gIG91dFsxXSA9IGF5MSAqIGJ3ICsgYXcxICogYnkgKyBhejEgKiBieCAtIGF4MSAqIGJ6O1xuICBvdXRbMl0gPSBhejEgKiBidyArIGF3MSAqIGJ6ICsgYXgxICogYnkgLSBheTEgKiBieDtcbiAgb3V0WzNdID0gYXcxICogYncgLSBheDEgKiBieCAtIGF5MSAqIGJ5IC0gYXoxICogYno7XG4gIHZhciBheCA9IGFbNF0sXG4gICAgICBheSA9IGFbNV0sXG4gICAgICBheiA9IGFbNl0sXG4gICAgICBhdyA9IGFbN107XG4gIG91dFs0XSA9IGF4ICogYncgKyBhdyAqIGJ4ICsgYXkgKiBieiAtIGF6ICogYnk7XG4gIG91dFs1XSA9IGF5ICogYncgKyBhdyAqIGJ5ICsgYXogKiBieCAtIGF4ICogYno7XG4gIG91dFs2XSA9IGF6ICogYncgKyBhdyAqIGJ6ICsgYXggKiBieSAtIGF5ICogYng7XG4gIG91dFs3XSA9IGF3ICogYncgLSBheCAqIGJ4IC0gYXkgKiBieSAtIGF6ICogYno7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIGR1YWwgcXVhdCdzXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdO1xuICBvdXRbM10gPSBhWzNdICsgYlszXTtcbiAgb3V0WzRdID0gYVs0XSArIGJbNF07XG4gIG91dFs1XSA9IGFbNV0gKyBiWzVdO1xuICBvdXRbNl0gPSBhWzZdICsgYls2XTtcbiAgb3V0WzddID0gYVs3XSArIGJbN107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE11bHRpcGxpZXMgdHdvIGR1YWwgcXVhdCdzXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICB2YXIgYXgwID0gYVswXSxcbiAgICAgIGF5MCA9IGFbMV0sXG4gICAgICBhejAgPSBhWzJdLFxuICAgICAgYXcwID0gYVszXSxcbiAgICAgIGJ4MSA9IGJbNF0sXG4gICAgICBieTEgPSBiWzVdLFxuICAgICAgYnoxID0gYls2XSxcbiAgICAgIGJ3MSA9IGJbN10sXG4gICAgICBheDEgPSBhWzRdLFxuICAgICAgYXkxID0gYVs1XSxcbiAgICAgIGF6MSA9IGFbNl0sXG4gICAgICBhdzEgPSBhWzddLFxuICAgICAgYngwID0gYlswXSxcbiAgICAgIGJ5MCA9IGJbMV0sXG4gICAgICBiejAgPSBiWzJdLFxuICAgICAgYncwID0gYlszXTtcbiAgb3V0WzBdID0gYXgwICogYncwICsgYXcwICogYngwICsgYXkwICogYnowIC0gYXowICogYnkwO1xuICBvdXRbMV0gPSBheTAgKiBidzAgKyBhdzAgKiBieTAgKyBhejAgKiBieDAgLSBheDAgKiBiejA7XG4gIG91dFsyXSA9IGF6MCAqIGJ3MCArIGF3MCAqIGJ6MCArIGF4MCAqIGJ5MCAtIGF5MCAqIGJ4MDtcbiAgb3V0WzNdID0gYXcwICogYncwIC0gYXgwICogYngwIC0gYXkwICogYnkwIC0gYXowICogYnowO1xuICBvdXRbNF0gPSBheDAgKiBidzEgKyBhdzAgKiBieDEgKyBheTAgKiBiejEgLSBhejAgKiBieTEgKyBheDEgKiBidzAgKyBhdzEgKiBieDAgKyBheTEgKiBiejAgLSBhejEgKiBieTA7XG4gIG91dFs1XSA9IGF5MCAqIGJ3MSArIGF3MCAqIGJ5MSArIGF6MCAqIGJ4MSAtIGF4MCAqIGJ6MSArIGF5MSAqIGJ3MCArIGF3MSAqIGJ5MCArIGF6MSAqIGJ4MCAtIGF4MSAqIGJ6MDtcbiAgb3V0WzZdID0gYXowICogYncxICsgYXcwICogYnoxICsgYXgwICogYnkxIC0gYXkwICogYngxICsgYXoxICogYncwICsgYXcxICogYnowICsgYXgxICogYnkwIC0gYXkxICogYngwO1xuICBvdXRbN10gPSBhdzAgKiBidzEgLSBheDAgKiBieDEgLSBheTAgKiBieTEgLSBhejAgKiBiejEgKyBhdzEgKiBidzAgLSBheDEgKiBieDAgLSBheTEgKiBieTAgLSBhejEgKiBiejA7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgcXVhdDIubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBTY2FsZXMgYSBkdWFsIHF1YXQgYnkgYSBzY2FsYXIgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtxdWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgZHVhbCBxdWF0XG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGR1YWwgcXVhdCB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSBkdWFsIHF1YXQgYnlcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIG91dFszXSA9IGFbM10gKiBiO1xuICBvdXRbNF0gPSBhWzRdICogYjtcbiAgb3V0WzVdID0gYVs1XSAqIGI7XG4gIG91dFs2XSA9IGFbNl0gKiBiO1xuICBvdXRbN10gPSBhWzddICogYjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIGR1YWwgcXVhdCdzIChUaGUgZG90IHByb2R1Y3Qgb2YgdGhlIHJlYWwgcGFydHMpXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkb3QgcHJvZHVjdCBvZiBhIGFuZCBiXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGRvdCA9IHF1YXQuZG90O1xuLyoqXG4gKiBQZXJmb3JtcyBhIGxpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gdHdvIGR1YWwgcXVhdHMnc1xuICogTk9URTogVGhlIHJlc3VsdGluZyBkdWFsIHF1YXRlcm5pb25zIHdvbid0IGFsd2F5cyBiZSBub3JtYWxpemVkIChUaGUgZXJyb3IgaXMgbW9zdCBub3RpY2VhYmxlIHdoZW4gdCA9IDAuNSlcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3F1YXQyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbGVycChvdXQsIGEsIGIsIHQpIHtcbiAgdmFyIG10ID0gMSAtIHQ7XG4gIGlmIChkb3QoYSwgYikgPCAwKSB0ID0gLXQ7XG4gIG91dFswXSA9IGFbMF0gKiBtdCArIGJbMF0gKiB0O1xuICBvdXRbMV0gPSBhWzFdICogbXQgKyBiWzFdICogdDtcbiAgb3V0WzJdID0gYVsyXSAqIG10ICsgYlsyXSAqIHQ7XG4gIG91dFszXSA9IGFbM10gKiBtdCArIGJbM10gKiB0O1xuICBvdXRbNF0gPSBhWzRdICogbXQgKyBiWzRdICogdDtcbiAgb3V0WzVdID0gYVs1XSAqIG10ICsgYls1XSAqIHQ7XG4gIG91dFs2XSA9IGFbNl0gKiBtdCArIGJbNl0gKiB0O1xuICBvdXRbN10gPSBhWzddICogbXQgKyBiWzddICogdDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgaW52ZXJzZSBvZiBhIGR1YWwgcXVhdC4gSWYgdGhleSBhcmUgbm9ybWFsaXplZCwgY29uanVnYXRlIGlzIGNoZWFwZXJcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSBkdWFsIHF1YXQgdG8gY2FsY3VsYXRlIGludmVyc2Ugb2ZcbiAqIEByZXR1cm5zIHtxdWF0Mn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydChvdXQsIGEpIHtcbiAgdmFyIHNxbGVuID0gc3F1YXJlZExlbmd0aChhKTtcbiAgb3V0WzBdID0gLWFbMF0gLyBzcWxlbjtcbiAgb3V0WzFdID0gLWFbMV0gLyBzcWxlbjtcbiAgb3V0WzJdID0gLWFbMl0gLyBzcWxlbjtcbiAgb3V0WzNdID0gYVszXSAvIHNxbGVuO1xuICBvdXRbNF0gPSAtYVs0XSAvIHNxbGVuO1xuICBvdXRbNV0gPSAtYVs1XSAvIHNxbGVuO1xuICBvdXRbNl0gPSAtYVs2XSAvIHNxbGVuO1xuICBvdXRbN10gPSBhWzddIC8gc3FsZW47XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGNvbmp1Z2F0ZSBvZiBhIGR1YWwgcXVhdFxuICogSWYgdGhlIGR1YWwgcXVhdGVybmlvbiBpcyBub3JtYWxpemVkLCB0aGlzIGZ1bmN0aW9uIGlzIGZhc3RlciB0aGFuIHF1YXQyLmludmVyc2UgYW5kIHByb2R1Y2VzIHRoZSBzYW1lIHJlc3VsdC5cbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBxdWF0ZXJuaW9uXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgcXVhdCB0byBjYWxjdWxhdGUgY29uanVnYXRlIG9mXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qdWdhdGUob3V0LCBhKSB7XG4gIG91dFswXSA9IC1hWzBdO1xuICBvdXRbMV0gPSAtYVsxXTtcbiAgb3V0WzJdID0gLWFbMl07XG4gIG91dFszXSA9IGFbM107XG4gIG91dFs0XSA9IC1hWzRdO1xuICBvdXRbNV0gPSAtYVs1XTtcbiAgb3V0WzZdID0gLWFbNl07XG4gIG91dFs3XSA9IGFbN107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiBhIGR1YWwgcXVhdFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSBkdWFsIHF1YXQgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbGVuZ3RoID0gcXVhdC5sZW5ndGg7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgcXVhdDIubGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBsZW4gPSBsZW5ndGg7XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIGEgZHVhbCBxdWF0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBhIGR1YWwgcXVhdCB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3F1YXJlZExlbmd0aCA9IHF1YXQuc3F1YXJlZExlbmd0aDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayBxdWF0Mi5zcXVhcmVkTGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJMZW4gPSBzcXVhcmVkTGVuZ3RoO1xuLyoqXG4gKiBOb3JtYWxpemUgYSBkdWFsIHF1YXRcbiAqXG4gKiBAcGFyYW0ge3F1YXQyfSBvdXQgdGhlIHJlY2VpdmluZyBkdWFsIHF1YXRlcm5pb25cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSBkdWFsIHF1YXRlcm5pb24gdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7cXVhdDJ9IG91dFxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShvdXQsIGEpIHtcbiAgdmFyIG1hZ25pdHVkZSA9IHNxdWFyZWRMZW5ndGgoYSk7XG5cbiAgaWYgKG1hZ25pdHVkZSA+IDApIHtcbiAgICBtYWduaXR1ZGUgPSBNYXRoLnNxcnQobWFnbml0dWRlKTtcbiAgICB2YXIgYTAgPSBhWzBdIC8gbWFnbml0dWRlO1xuICAgIHZhciBhMSA9IGFbMV0gLyBtYWduaXR1ZGU7XG4gICAgdmFyIGEyID0gYVsyXSAvIG1hZ25pdHVkZTtcbiAgICB2YXIgYTMgPSBhWzNdIC8gbWFnbml0dWRlO1xuICAgIHZhciBiMCA9IGFbNF07XG4gICAgdmFyIGIxID0gYVs1XTtcbiAgICB2YXIgYjIgPSBhWzZdO1xuICAgIHZhciBiMyA9IGFbN107XG4gICAgdmFyIGFfZG90X2IgPSBhMCAqIGIwICsgYTEgKiBiMSArIGEyICogYjIgKyBhMyAqIGIzO1xuICAgIG91dFswXSA9IGEwO1xuICAgIG91dFsxXSA9IGExO1xuICAgIG91dFsyXSA9IGEyO1xuICAgIG91dFszXSA9IGEzO1xuICAgIG91dFs0XSA9IChiMCAtIGEwICogYV9kb3RfYikgLyBtYWduaXR1ZGU7XG4gICAgb3V0WzVdID0gKGIxIC0gYTEgKiBhX2RvdF9iKSAvIG1hZ25pdHVkZTtcbiAgICBvdXRbNl0gPSAoYjIgLSBhMiAqIGFfZG90X2IpIC8gbWFnbml0dWRlO1xuICAgIG91dFs3XSA9IChiMyAtIGEzICogYV9kb3RfYikgLyBtYWduaXR1ZGU7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZHVhbCBxdWF0ZW5pb25cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgZHVhbCBxdWF0ZXJuaW9uIHRvIHJlcHJlc2VudCBhcyBhIHN0cmluZ1xuICogQHJldHVybnMge1N0cmluZ30gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkdWFsIHF1YXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyKGEpIHtcbiAgcmV0dXJuIFwicXVhdDIoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIiwgXCIgKyBhWzNdICsgXCIsIFwiICsgYVs0XSArIFwiLCBcIiArIGFbNV0gKyBcIiwgXCIgKyBhWzZdICsgXCIsIFwiICsgYVs3XSArIFwiKVwiO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBkdWFsIHF1YXRlcm5pb25zIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21wYXJlZCB3aXRoID09PSlcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdDJ9IGEgdGhlIGZpcnN0IGR1YWwgcXVhdGVybmlvbi5cbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYiB0aGUgc2Vjb25kIGR1YWwgcXVhdGVybmlvbi5cbiAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHRoZSBkdWFsIHF1YXRlcm5pb25zIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdICYmIGFbNF0gPT09IGJbNF0gJiYgYVs1XSA9PT0gYls1XSAmJiBhWzZdID09PSBiWzZdICYmIGFbN10gPT09IGJbN107XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGR1YWwgcXVhdGVybmlvbnMgaGF2ZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uLlxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlRdWF0Mn0gYSB0aGUgZmlyc3QgZHVhbCBxdWF0LlxuICogQHBhcmFtIHtSZWFkb25seVF1YXQyfSBiIHRoZSBzZWNvbmQgZHVhbCBxdWF0LlxuICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgdGhlIGR1YWwgcXVhdHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFscyhhLCBiKSB7XG4gIHZhciBhMCA9IGFbMF0sXG4gICAgICBhMSA9IGFbMV0sXG4gICAgICBhMiA9IGFbMl0sXG4gICAgICBhMyA9IGFbM10sXG4gICAgICBhNCA9IGFbNF0sXG4gICAgICBhNSA9IGFbNV0sXG4gICAgICBhNiA9IGFbNl0sXG4gICAgICBhNyA9IGFbN107XG4gIHZhciBiMCA9IGJbMF0sXG4gICAgICBiMSA9IGJbMV0sXG4gICAgICBiMiA9IGJbMl0sXG4gICAgICBiMyA9IGJbM10sXG4gICAgICBiNCA9IGJbNF0sXG4gICAgICBiNSA9IGJbNV0sXG4gICAgICBiNiA9IGJbNl0sXG4gICAgICBiNyA9IGJbN107XG4gIHJldHVybiBNYXRoLmFicyhhMCAtIGIwKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMCksIE1hdGguYWJzKGIwKSkgJiYgTWF0aC5hYnMoYTEgLSBiMSkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEpLCBNYXRoLmFicyhiMSkpICYmIE1hdGguYWJzKGEyIC0gYjIpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEyKSwgTWF0aC5hYnMoYjIpKSAmJiBNYXRoLmFicyhhMyAtIGIzKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMyksIE1hdGguYWJzKGIzKSkgJiYgTWF0aC5hYnMoYTQgLSBiNCkgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTQpLCBNYXRoLmFicyhiNCkpICYmIE1hdGguYWJzKGE1IC0gYjUpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGE1KSwgTWF0aC5hYnMoYjUpKSAmJiBNYXRoLmFicyhhNiAtIGI2KSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhNiksIE1hdGguYWJzKGI2KSkgJiYgTWF0aC5hYnMoYTcgLSBiNykgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTcpLCBNYXRoLmFicyhiNykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/quat2.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec2.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec2.js ***! \*************************************************************/ /*! exports provided: create, clone, fromValues, copy, set, add, subtract, multiply, divide, ceil, floor, min, max, round, scale, scaleAndAdd, distance, squaredDistance, length, squaredLength, negate, inverse, normalize, dot, cross, lerp, random, transformMat2, transformMat2d, transformMat3, transformMat4, rotate, angle, zero, str, exactEquals, equals, len, sub, mul, div, dist, sqrDist, sqrLen, forEach */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divide\", function() { return divide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"round\", function() { return round; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAndAdd\", function() { return scaleAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredDistance\", function() { return squaredDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return negate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat2\", function() { return transformMat2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat2d\", function() { return transformMat2d; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat3\", function() { return transformMat3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat4\", function() { return transformMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angle\", function() { return angle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"div\", function() { return div; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dist\", function() { return dist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrDist\", function() { return sqrDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](2);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nfunction fromValues(x, y) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nfunction set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nfunction floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nfunction round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nfunction negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nfunction normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nfunction lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nfunction random(out, scale) {\n scale = scale || 1.0;\n var r = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nfunction transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nfunction rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nfunction zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL3ZlYzIuanM/NGYwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7O0FBRW5DLE1BQU0scURBQW1CO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0EsVUFBVSxpREFBZTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQWdCLHFFQUFxRSxrREFBZ0I7QUFDbkk7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS92ZWMyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG4vKipcbiAqIDIgRGltZW5zaW9uYWwgVmVjdG9yXG4gKiBAbW9kdWxlIHZlYzJcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IHZlYzJcbiAqXG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDIpO1xuXG4gIGlmIChnbE1hdHJpeC5BUlJBWV9UWVBFICE9IEZsb2F0MzJBcnJheSkge1xuICAgIG91dFswXSA9IDA7XG4gICAgb3V0WzFdID0gMDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmVjMiBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBjbG9uZVxuICogQHJldHVybnMge3ZlYzJ9IGEgbmV3IDJEIHZlY3RvclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZShhKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSgyKTtcbiAgb3V0WzBdID0gYVswXTtcbiAgb3V0WzFdID0gYVsxXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2ZWMyIGluaXRpYWxpemVkIHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzJ9IGEgbmV3IDJEIHZlY3RvclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVmFsdWVzKHgsIHkpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDIpO1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgdmVjMiB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSBzb3VyY2UgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzIgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgeCwgeSkge1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU3VidHJhY3RzIHZlY3RvciBiIGZyb20gdmVjdG9yIGFcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0cmFjdChvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAtIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gLSBiWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKiBiWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBEaXZpZGVzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXZpZGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC8gYlsxXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTWF0aC5jZWlsIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB2ZWN0b3IgdG8gY2VpbFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjZWlsKG91dCwgYSkge1xuICBvdXRbMF0gPSBNYXRoLmNlaWwoYVswXSk7XG4gIG91dFsxXSA9IE1hdGguY2VpbChhWzFdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTWF0aC5mbG9vciB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdmVjdG9yIHRvIGZsb29yXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZsb29yKG91dCwgYSkge1xuICBvdXRbMF0gPSBNYXRoLmZsb29yKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLmZsb29yKGFbMV0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtaW4ob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IE1hdGgubWluKGFbMF0sIGJbMF0pO1xuICBvdXRbMV0gPSBNYXRoLm1pbihhWzFdLCBiWzFdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbWF4aW11bSBvZiB0d28gdmVjMidzXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbWF4KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBNYXRoLm1heChhWzBdLCBiWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5tYXgoYVsxXSwgYlsxXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE1hdGgucm91bmQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byByb3VuZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZChvdXQsIGEpIHtcbiAgb3V0WzBdID0gTWF0aC5yb3VuZChhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5yb3VuZChhWzFdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2NhbGVzIGEgdmVjMiBieSBhIHNjYWxhciBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIHZlY3RvciB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSB2ZWN0b3IgYnlcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjMidzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBzY2FsZSB0aGUgYW1vdW50IHRvIHNjYWxlIGIgYnkgYmVmb3JlIGFkZGluZ1xuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFuZEFkZChvdXQsIGEsIGIsIHNjYWxlKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdICogc2NhbGU7XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdICogc2NhbGU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikge1xuICB2YXIgeCA9IGJbMF0gLSBhWzBdLFxuICAgICAgeSA9IGJbMV0gLSBhWzFdO1xuICByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBldWNsaWRpYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjMidzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlZERpc3RhbmNlKGEsIGIpIHtcbiAgdmFyIHggPSBiWzBdIC0gYVswXSxcbiAgICAgIHkgPSBiWzFdIC0gYVsxXTtcbiAgcmV0dXJuIHggKiB4ICsgeSAqIHk7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbGVuZ3RoKGEpIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV07XG4gIHJldHVybiBNYXRoLmh5cG90KHgsIHkpO1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBzcXVhcmVkIGxlbmd0aCBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIHNxdWFyZWQgbGVuZ3RoIG9mXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBzcXVhcmVkIGxlbmd0aCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNxdWFyZWRMZW5ndGgoYSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXTtcbiAgcmV0dXJuIHggKiB4ICsgeSAqIHk7XG59XG4vKipcbiAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBuZWdhdGVcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlKG91dCwgYSkge1xuICBvdXRbMF0gPSAtYVswXTtcbiAgb3V0WzFdID0gLWFbMV07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byBpbnZlcnRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJzZShvdXQsIGEpIHtcbiAgb3V0WzBdID0gMS4wIC8gYVswXTtcbiAgb3V0WzFdID0gMS4wIC8gYVsxXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB2ZWN0b3IgdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShvdXQsIGEpIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV07XG4gIHZhciBsZW4gPSB4ICogeCArIHkgKiB5O1xuXG4gIGlmIChsZW4gPiAwKSB7XG4gICAgLy9UT0RPOiBldmFsdWF0ZSB1c2Ugb2YgZ2xtX2ludnNxcnQgaGVyZT9cbiAgICBsZW4gPSAxIC8gTWF0aC5zcXJ0KGxlbik7XG4gIH1cblxuICBvdXRbMF0gPSBhWzBdICogbGVuO1xuICBvdXRbMV0gPSBhWzFdICogbGVuO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0d28gdmVjMidzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gZG90IHByb2R1Y3Qgb2YgYSBhbmQgYlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkb3QoYSwgYikge1xuICByZXR1cm4gYVswXSAqIGJbMF0gKyBhWzFdICogYlsxXTtcbn1cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdHdvIHZlYzInc1xuICogTm90ZSB0aGF0IHRoZSBjcm9zcyBwcm9kdWN0IG11c3QgYnkgZGVmaW5pdGlvbiBwcm9kdWNlIGEgM0QgdmVjdG9yXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3Jvc3Mob3V0LCBhLCBiKSB7XG4gIHZhciB6ID0gYVswXSAqIGJbMV0gLSBhWzFdICogYlswXTtcbiAgb3V0WzBdID0gb3V0WzFdID0gMDtcbiAgb3V0WzJdID0gejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUGVyZm9ybXMgYSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsZXJwKG91dCwgYSwgYiwgdCkge1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdO1xuICBvdXRbMF0gPSBheCArIHQgKiAoYlswXSAtIGF4KTtcbiAgb3V0WzFdID0gYXkgKyB0ICogKGJbMV0gLSBheSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHJhbmRvbSB2ZWN0b3Igd2l0aCB0aGUgZ2l2ZW4gc2NhbGVcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtOdW1iZXJ9IFtzY2FsZV0gTGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgdmVjdG9yLiBJZiBvbW1pdHRlZCwgYSB1bml0IHZlY3RvciB3aWxsIGJlIHJldHVybmVkXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbShvdXQsIHNjYWxlKSB7XG4gIHNjYWxlID0gc2NhbGUgfHwgMS4wO1xuICB2YXIgciA9IGdsTWF0cml4LlJBTkRPTSgpICogMi4wICogTWF0aC5QSTtcbiAgb3V0WzBdID0gTWF0aC5jb3MocikgKiBzY2FsZTtcbiAgb3V0WzFdID0gTWF0aC5zaW4ocikgKiBzY2FsZTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRoIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDJ9IG0gbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDIob3V0LCBhLCBtKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdO1xuICBvdXRbMF0gPSBtWzBdICogeCArIG1bMl0gKiB5O1xuICBvdXRbMV0gPSBtWzFdICogeCArIG1bM10gKiB5O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQyZFxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHtSZWFkb25seU1hdDJkfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NYXQyZChvdXQsIGEsIG0pIHtcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV07XG4gIG91dFswXSA9IG1bMF0gKiB4ICsgbVsyXSAqIHkgKyBtWzRdO1xuICBvdXRbMV0gPSBtWzFdICogeCArIG1bM10gKiB5ICsgbVs1XTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRoIGEgbWF0M1xuICogM3JkIHZlY3RvciBjb21wb25lbnQgaXMgaW1wbGljaXRseSAnMSdcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NYXQzKG91dCwgYSwgbSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXTtcbiAgb3V0WzBdID0gbVswXSAqIHggKyBtWzNdICogeSArIG1bNl07XG4gIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs0XSAqIHkgKyBtWzddO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQ0XG4gKiAzcmQgdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcwJ1xuICogNHRoIHZlY3RvciBjb21wb25lbnQgaXMgaW1wbGljaXRseSAnMSdcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NYXQ0KG91dCwgYSwgbSkge1xuICB2YXIgeCA9IGFbMF07XG4gIHZhciB5ID0gYVsxXTtcbiAgb3V0WzBdID0gbVswXSAqIHggKyBtWzRdICogeSArIG1bMTJdO1xuICBvdXRbMV0gPSBtWzFdICogeCArIG1bNV0gKiB5ICsgbVsxM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZSBhIDJEIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBvdXQgVGhlIHJlY2VpdmluZyB2ZWMyXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSBUaGUgdmVjMiBwb2ludCB0byByb3RhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBiIFRoZSBvcmlnaW4gb2YgdGhlIHJvdGF0aW9uXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIFRoZSBhbmdsZSBvZiByb3RhdGlvbiBpbiByYWRpYW5zXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZShvdXQsIGEsIGIsIHJhZCkge1xuICAvL1RyYW5zbGF0ZSBwb2ludCB0byB0aGUgb3JpZ2luXG4gIHZhciBwMCA9IGFbMF0gLSBiWzBdLFxuICAgICAgcDEgPSBhWzFdIC0gYlsxXSxcbiAgICAgIHNpbkMgPSBNYXRoLnNpbihyYWQpLFxuICAgICAgY29zQyA9IE1hdGguY29zKHJhZCk7IC8vcGVyZm9ybSByb3RhdGlvbiBhbmQgdHJhbnNsYXRlIHRvIGNvcnJlY3QgcG9zaXRpb25cblxuICBvdXRbMF0gPSBwMCAqIGNvc0MgLSBwMSAqIHNpbkMgKyBiWzBdO1xuICBvdXRbMV0gPSBwMCAqIHNpbkMgKyBwMSAqIGNvc0MgKyBiWzFdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZXQgdGhlIGFuZ2xlIGJldHdlZW4gdHdvIDJEIHZlY3RvcnNcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIFRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYiBUaGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBhbmdsZSBpbiByYWRpYW5zXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFuZ2xlKGEsIGIpIHtcbiAgdmFyIHgxID0gYVswXSxcbiAgICAgIHkxID0gYVsxXSxcbiAgICAgIHgyID0gYlswXSxcbiAgICAgIHkyID0gYlsxXSxcbiAgICAgIC8vIG1hZyBpcyB0aGUgcHJvZHVjdCBvZiB0aGUgbWFnbml0dWRlcyBvZiBhIGFuZCBiXG4gIG1hZyA9IE1hdGguc3FydCh4MSAqIHgxICsgeTEgKiB5MSkgKiBNYXRoLnNxcnQoeDIgKiB4MiArIHkyICogeTIpLFxuICAgICAgLy8gbWFnICYmLi4gc2hvcnQgY2lyY3VpdHMgaWYgbWFnID09IDBcbiAgY29zaW5lID0gbWFnICYmICh4MSAqIHgyICsgeTEgKiB5MikgLyBtYWc7IC8vIE1hdGgubWluKE1hdGgubWF4KGNvc2luZSwgLTEpLCAxKSBjbGFtcHMgdGhlIGNvc2luZSBiZXR3ZWVuIC0xIGFuZCAxXG5cbiAgcmV0dXJuIE1hdGguYWNvcyhNYXRoLm1pbihNYXRoLm1heChjb3NpbmUsIC0xKSwgMSkpO1xufVxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyIHRvIHplcm9cbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB6ZXJvKG91dCkge1xuICBvdXRbMF0gPSAwLjA7XG4gIG91dFsxXSA9IDAuMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMyfSBhIHZlY3RvciB0byByZXByZXNlbnQgYXMgYSBzdHJpbmdcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihhKSB7XG4gIHJldHVybiBcInZlYzIoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiKVwiO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGV4YWN0bHkgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbiAod2hlbiBjb21wYXJlZCB3aXRoID09PSlcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhhY3RFcXVhbHMoYSwgYikge1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjMn0gYSBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtSZWFkb25seVZlYzJ9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSk7XG59XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMi5sZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGxlbiA9IGxlbmd0aDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMyLnN1YnRyYWN0fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzdWIgPSBzdWJ0cmFjdDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMyLm11bHRpcGx5fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBtdWwgPSBtdWx0aXBseTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMyLmRpdmlkZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZGl2ID0gZGl2aWRlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzIuZGlzdGFuY2V9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGRpc3QgPSBkaXN0YW5jZTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMyLnNxdWFyZWREaXN0YW5jZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3FyRGlzdCA9IHNxdWFyZWREaXN0YW5jZTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWMyLnNxdWFyZWRMZW5ndGh9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHNxckxlbiA9IHNxdWFyZWRMZW5ndGg7XG4vKipcbiAqIFBlcmZvcm0gc29tZSBvcGVyYXRpb24gb3ZlciBhbiBhcnJheSBvZiB2ZWMycy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhIHRoZSBhcnJheSBvZiB2ZWN0b3JzIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtIHtOdW1iZXJ9IHN0cmlkZSBOdW1iZXIgb2YgZWxlbWVudHMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgZWFjaCB2ZWMyLiBJZiAwIGFzc3VtZXMgdGlnaHRseSBwYWNrZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXQgTnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudCBOdW1iZXIgb2YgdmVjMnMgdG8gaXRlcmF0ZSBvdmVyLiBJZiAwIGl0ZXJhdGVzIG92ZXIgZW50aXJlIGFycmF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBGdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIHZlY3RvciBpbiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbYXJnXSBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHBhc3MgdG8gZm5cbiAqIEByZXR1cm5zIHtBcnJheX0gYVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBmb3JFYWNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdmVjID0gY3JlYXRlKCk7XG4gIHJldHVybiBmdW5jdGlvbiAoYSwgc3RyaWRlLCBvZmZzZXQsIGNvdW50LCBmbiwgYXJnKSB7XG4gICAgdmFyIGksIGw7XG5cbiAgICBpZiAoIXN0cmlkZSkge1xuICAgICAgc3RyaWRlID0gMjtcbiAgICB9XG5cbiAgICBpZiAoIW9mZnNldCkge1xuICAgICAgb2Zmc2V0ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoY291bnQpIHtcbiAgICAgIGwgPSBNYXRoLm1pbihjb3VudCAqIHN0cmlkZSArIG9mZnNldCwgYS5sZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsID0gYS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZm9yIChpID0gb2Zmc2V0OyBpIDwgbDsgaSArPSBzdHJpZGUpIHtcbiAgICAgIHZlY1swXSA9IGFbaV07XG4gICAgICB2ZWNbMV0gPSBhW2kgKyAxXTtcbiAgICAgIGZuKHZlYywgdmVjLCBhcmcpO1xuICAgICAgYVtpXSA9IHZlY1swXTtcbiAgICAgIGFbaSArIDFdID0gdmVjWzFdO1xuICAgIH1cblxuICAgIHJldHVybiBhO1xuICB9O1xufSgpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec2.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js ***! \*************************************************************/ /*! exports provided: create, clone, length, fromValues, copy, set, add, subtract, multiply, divide, ceil, floor, min, max, round, scale, scaleAndAdd, distance, squaredDistance, squaredLength, negate, inverse, normalize, dot, cross, lerp, hermite, bezier, random, transformMat4, transformMat3, transformQuat, rotateX, rotateY, rotateZ, angle, zero, str, exactEquals, equals, sub, mul, div, dist, sqrDist, len, sqrLen, forEach */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divide\", function() { return divide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"round\", function() { return round; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAndAdd\", function() { return scaleAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredDistance\", function() { return squaredDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return negate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hermite\", function() { return hermite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bezier\", function() { return bezier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat4\", function() { return transformMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat3\", function() { return transformMat3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformQuat\", function() { return transformQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateX\", function() { return rotateX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateY\", function() { return rotateY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateZ\", function() { return rotateZ; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angle\", function() { return angle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"div\", function() { return div; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dist\", function() { return dist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrDist\", function() { return sqrDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nfunction fromValues(x, y, z) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nfunction set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nfunction floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nfunction round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nfunction negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nfunction normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nfunction cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nfunction bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nfunction random(out, scale) {\n scale = scale || 1.0;\n var r = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2.0 * Math.PI;\n var z = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nfunction transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nfunction transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nfunction rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nfunction angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nfunction zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL3ZlYzMuanM/ODQ4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQLGdCQUFnQixxREFBbUI7O0FBRW5DLE1BQU0scURBQW1CO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0EsVUFBVSxpREFBZTtBQUN6QixVQUFVLGlEQUFlO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQSxjQUFjOztBQUVkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQjtBQUN4TjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC1tYXRyaXhAMy40LjNAZ2wtbWF0cml4L2VzbS92ZWMzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2xNYXRyaXggZnJvbSBcIi4vY29tbW9uLmpzXCI7XG4vKipcbiAqIDMgRGltZW5zaW9uYWwgVmVjdG9yXG4gKiBAbW9kdWxlIHZlYzNcbiAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IHZlYzNcbiAqXG4gKiBAcmV0dXJucyB7dmVjM30gYSBuZXcgM0QgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDMpO1xuXG4gIGlmIChnbE1hdHJpeC5BUlJBWV9UWVBFICE9IEZsb2F0MzJBcnJheSkge1xuICAgIG91dFswXSA9IDA7XG4gICAgb3V0WzFdID0gMDtcbiAgICBvdXRbMl0gPSAwO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2ZWMzIGluaXRpYWxpemVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgdmVjdG9yXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjM30gYSBuZXcgM0QgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDMpO1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGxlbmd0aCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxlbmd0aChhKSB7XG4gIHZhciB4ID0gYVswXTtcbiAgdmFyIHkgPSBhWzFdO1xuICB2YXIgeiA9IGFbMl07XG4gIHJldHVybiBNYXRoLmh5cG90KHgsIHksIHopO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geiBaIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzN9IGEgbmV3IDNEIHZlY3RvclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tVmFsdWVzKHgsIHksIHopIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDMpO1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICBvdXRbMl0gPSB6O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgdmVjMyB0byBhbm90aGVyXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBzb3VyY2UgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gIG91dFswXSA9IGFbMF07XG4gIG91dFsxXSA9IGFbMV07XG4gIG91dFsyXSA9IGFbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzMgdG8gdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge051bWJlcn0geCBYIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHkgWSBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB6IFogY29tcG9uZW50XG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChvdXQsIHgsIHksIHopIHtcbiAgb3V0WzBdID0geDtcbiAgb3V0WzFdID0geTtcbiAgb3V0WzJdID0gejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjMydzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXTtcbiAgb3V0WzFdID0gYVsxXSArIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTdWJ0cmFjdHMgdmVjdG9yIGIgZnJvbSB2ZWN0b3IgYVxuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnRyYWN0KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC0gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAtIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gLSBiWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseShvdXQsIGEsIGIpIHtcbiAgb3V0WzBdID0gYVswXSAqIGJbMF07XG4gIG91dFsxXSA9IGFbMV0gKiBiWzFdO1xuICBvdXRbMl0gPSBhWzJdICogYlsyXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogRGl2aWRlcyB0d28gdmVjMydzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGl2aWRlKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC8gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAvIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gLyBiWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNYXRoLmNlaWwgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byBjZWlsXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNlaWwob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguY2VpbChhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5jZWlsKGFbMV0pO1xuICBvdXRbMl0gPSBNYXRoLmNlaWwoYVsyXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE1hdGguZmxvb3IgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byBmbG9vclxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmbG9vcihvdXQsIGEpIHtcbiAgb3V0WzBdID0gTWF0aC5mbG9vcihhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5mbG9vcihhWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5mbG9vcihhWzJdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbWluaW11bSBvZiB0d28gdmVjMydzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbWluKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBNYXRoLm1pbihhWzBdLCBiWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5taW4oYVsxXSwgYlsxXSk7XG4gIG91dFsyXSA9IE1hdGgubWluKGFbMl0sIGJbMl0pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXgob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IE1hdGgubWF4KGFbMF0sIGJbMF0pO1xuICBvdXRbMV0gPSBNYXRoLm1heChhWzFdLCBiWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5tYXgoYVsyXSwgYlsyXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE1hdGgucm91bmQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byByb3VuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZChvdXQsIGEpIHtcbiAgb3V0WzBdID0gTWF0aC5yb3VuZChhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5yb3VuZChhWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5yb3VuZChhWzJdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogU2NhbGVzIGEgdmVjMyBieSBhIHNjYWxhciBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIHZlY3RvciB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSB2ZWN0b3IgYnlcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiO1xuICBvdXRbMV0gPSBhWzFdICogYjtcbiAgb3V0WzJdID0gYVsyXSAqIGI7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlYzMncyBhZnRlciBzY2FsaW5nIHRoZSBzZWNvbmQgb3BlcmFuZCBieSBhIHNjYWxhciB2YWx1ZVxuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gc2NhbGUgdGhlIGFtb3VudCB0byBzY2FsZSBiIGJ5IGJlZm9yZSBhZGRpbmdcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVBbmRBZGQob3V0LCBhLCBiLCBzY2FsZSkge1xuICBvdXRbMF0gPSBhWzBdICsgYlswXSAqIHNjYWxlO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXSAqIHNjYWxlO1xuICBvdXRbMl0gPSBhWzJdICsgYlsyXSAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBldWNsaWRpYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjMydzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gZGlzdGFuY2UgYmV0d2VlbiBhIGFuZCBiXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKGEsIGIpIHtcbiAgdmFyIHggPSBiWzBdIC0gYVswXTtcbiAgdmFyIHkgPSBiWzFdIC0gYVsxXTtcbiAgdmFyIHogPSBiWzJdIC0gYVsyXTtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSwgeik7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgZXVjbGlkaWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlYzMnc1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgZGlzdGFuY2UgYmV0d2VlbiBhIGFuZCBiXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNxdWFyZWREaXN0YW5jZShhLCBiKSB7XG4gIHZhciB4ID0gYlswXSAtIGFbMF07XG4gIHZhciB5ID0gYlsxXSAtIGFbMV07XG4gIHZhciB6ID0gYlsyXSAtIGFbMl07XG4gIHJldHVybiB4ICogeCArIHkgKiB5ICsgeiAqIHo7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIGEgdmVjM1xuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlZExlbmd0aChhKSB7XG4gIHZhciB4ID0gYVswXTtcbiAgdmFyIHkgPSBhWzFdO1xuICB2YXIgeiA9IGFbMl07XG4gIHJldHVybiB4ICogeCArIHkgKiB5ICsgeiAqIHo7XG59XG4vKipcbiAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMzXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byBuZWdhdGVcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlKG91dCwgYSkge1xuICBvdXRbMF0gPSAtYVswXTtcbiAgb3V0WzFdID0gLWFbMV07XG4gIG91dFsyXSA9IC1hWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbnZlcnNlIG9mIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjM1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB2ZWN0b3IgdG8gaW52ZXJ0XG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVyc2Uob3V0LCBhKSB7XG4gIG91dFswXSA9IDEuMCAvIGFbMF07XG4gIG91dFsxXSA9IDEuMCAvIGFbMV07XG4gIG91dFsyXSA9IDEuMCAvIGFbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIE5vcm1hbGl6ZSBhIHZlYzNcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdmVjdG9yIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUob3V0LCBhKSB7XG4gIHZhciB4ID0gYVswXTtcbiAgdmFyIHkgPSBhWzFdO1xuICB2YXIgeiA9IGFbMl07XG4gIHZhciBsZW4gPSB4ICogeCArIHkgKiB5ICsgeiAqIHo7XG5cbiAgaWYgKGxlbiA+IDApIHtcbiAgICAvL1RPRE86IGV2YWx1YXRlIHVzZSBvZiBnbG1faW52c3FydCBoZXJlP1xuICAgIGxlbiA9IDEgLyBNYXRoLnNxcnQobGVuKTtcbiAgfVxuXG4gIG91dFswXSA9IGFbMF0gKiBsZW47XG4gIG91dFsxXSA9IGFbMV0gKiBsZW47XG4gIG91dFsyXSA9IGFbMl0gKiBsZW47XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkb3QgcHJvZHVjdCBvZiBhIGFuZCBiXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRvdChhLCBiKSB7XG4gIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdICsgYVsyXSAqIGJbMl07XG59XG4vKipcbiAqIENvbXB1dGVzIHRoZSBjcm9zcyBwcm9kdWN0IG9mIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcm9zcyhvdXQsIGEsIGIpIHtcbiAgdmFyIGF4ID0gYVswXSxcbiAgICAgIGF5ID0gYVsxXSxcbiAgICAgIGF6ID0gYVsyXTtcbiAgdmFyIGJ4ID0gYlswXSxcbiAgICAgIGJ5ID0gYlsxXSxcbiAgICAgIGJ6ID0gYlsyXTtcbiAgb3V0WzBdID0gYXkgKiBieiAtIGF6ICogYnk7XG4gIG91dFsxXSA9IGF6ICogYnggLSBheCAqIGJ6O1xuICBvdXRbMl0gPSBheCAqIGJ5IC0gYXkgKiBieDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUGVyZm9ybXMgYSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHR3byB2ZWMzJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQsIGluIHRoZSByYW5nZSBbMC0xXSwgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsZXJwKG91dCwgYSwgYiwgdCkge1xuICB2YXIgYXggPSBhWzBdO1xuICB2YXIgYXkgPSBhWzFdO1xuICB2YXIgYXogPSBhWzJdO1xuICBvdXRbMF0gPSBheCArIHQgKiAoYlswXSAtIGF4KTtcbiAgb3V0WzFdID0gYXkgKyB0ICogKGJbMV0gLSBheSk7XG4gIG91dFsyXSA9IGF6ICsgdCAqIChiWzJdIC0gYXopO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBQZXJmb3JtcyBhIGhlcm1pdGUgaW50ZXJwb2xhdGlvbiB3aXRoIHR3byBjb250cm9sIHBvaW50c1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYyB0aGUgdGhpcmQgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGQgdGhlIGZvdXJ0aCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCwgaW4gdGhlIHJhbmdlIFswLTFdLCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGhlcm1pdGUob3V0LCBhLCBiLCBjLCBkLCB0KSB7XG4gIHZhciBmYWN0b3JUaW1lczIgPSB0ICogdDtcbiAgdmFyIGZhY3RvcjEgPSBmYWN0b3JUaW1lczIgKiAoMiAqIHQgLSAzKSArIDE7XG4gIHZhciBmYWN0b3IyID0gZmFjdG9yVGltZXMyICogKHQgLSAyKSArIHQ7XG4gIHZhciBmYWN0b3IzID0gZmFjdG9yVGltZXMyICogKHQgLSAxKTtcbiAgdmFyIGZhY3RvcjQgPSBmYWN0b3JUaW1lczIgKiAoMyAtIDIgKiB0KTtcbiAgb3V0WzBdID0gYVswXSAqIGZhY3RvcjEgKyBiWzBdICogZmFjdG9yMiArIGNbMF0gKiBmYWN0b3IzICsgZFswXSAqIGZhY3RvcjQ7XG4gIG91dFsxXSA9IGFbMV0gKiBmYWN0b3IxICsgYlsxXSAqIGZhY3RvcjIgKyBjWzFdICogZmFjdG9yMyArIGRbMV0gKiBmYWN0b3I0O1xuICBvdXRbMl0gPSBhWzJdICogZmFjdG9yMSArIGJbMl0gKiBmYWN0b3IyICsgY1syXSAqIGZhY3RvcjMgKyBkWzJdICogZmFjdG9yNDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUGVyZm9ybXMgYSBiZXppZXIgaW50ZXJwb2xhdGlvbiB3aXRoIHR3byBjb250cm9sIHBvaW50c1xuICpcbiAqIEBwYXJhbSB7dmVjM30gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYyB0aGUgdGhpcmQgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGQgdGhlIGZvdXJ0aCBvcGVyYW5kXG4gKiBAcGFyYW0ge051bWJlcn0gdCBpbnRlcnBvbGF0aW9uIGFtb3VudCwgaW4gdGhlIHJhbmdlIFswLTFdLCBiZXR3ZWVuIHRoZSB0d28gaW5wdXRzXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGJlemllcihvdXQsIGEsIGIsIGMsIGQsIHQpIHtcbiAgdmFyIGludmVyc2VGYWN0b3IgPSAxIC0gdDtcbiAgdmFyIGludmVyc2VGYWN0b3JUaW1lc1R3byA9IGludmVyc2VGYWN0b3IgKiBpbnZlcnNlRmFjdG9yO1xuICB2YXIgZmFjdG9yVGltZXMyID0gdCAqIHQ7XG4gIHZhciBmYWN0b3IxID0gaW52ZXJzZUZhY3RvclRpbWVzVHdvICogaW52ZXJzZUZhY3RvcjtcbiAgdmFyIGZhY3RvcjIgPSAzICogdCAqIGludmVyc2VGYWN0b3JUaW1lc1R3bztcbiAgdmFyIGZhY3RvcjMgPSAzICogZmFjdG9yVGltZXMyICogaW52ZXJzZUZhY3RvcjtcbiAgdmFyIGZhY3RvcjQgPSBmYWN0b3JUaW1lczIgKiB0O1xuICBvdXRbMF0gPSBhWzBdICogZmFjdG9yMSArIGJbMF0gKiBmYWN0b3IyICsgY1swXSAqIGZhY3RvcjMgKyBkWzBdICogZmFjdG9yNDtcbiAgb3V0WzFdID0gYVsxXSAqIGZhY3RvcjEgKyBiWzFdICogZmFjdG9yMiArIGNbMV0gKiBmYWN0b3IzICsgZFsxXSAqIGZhY3RvcjQ7XG4gIG91dFsyXSA9IGFbMl0gKiBmYWN0b3IxICsgYlsyXSAqIGZhY3RvcjIgKyBjWzJdICogZmFjdG9yMyArIGRbMl0gKiBmYWN0b3I0O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByYW5kb20gdmVjdG9yIHdpdGggdGhlIGdpdmVuIHNjYWxlXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2NhbGVdIExlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHZlY3Rvci4gSWYgb21taXR0ZWQsIGEgdW5pdCB2ZWN0b3Igd2lsbCBiZSByZXR1cm5lZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb20ob3V0LCBzY2FsZSkge1xuICBzY2FsZSA9IHNjYWxlIHx8IDEuMDtcbiAgdmFyIHIgPSBnbE1hdHJpeC5SQU5ET00oKSAqIDIuMCAqIE1hdGguUEk7XG4gIHZhciB6ID0gZ2xNYXRyaXguUkFORE9NKCkgKiAyLjAgLSAxLjA7XG4gIHZhciB6U2NhbGUgPSBNYXRoLnNxcnQoMS4wIC0geiAqIHopICogc2NhbGU7XG4gIG91dFswXSA9IE1hdGguY29zKHIpICogelNjYWxlO1xuICBvdXRbMV0gPSBNYXRoLnNpbihyKSAqIHpTY2FsZTtcbiAgb3V0WzJdID0geiAqIHNjYWxlO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMzIHdpdGggYSBtYXQ0LlxuICogNHRoIHZlY3RvciBjb21wb25lbnQgaXMgaW1wbGljaXRseSAnMSdcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NYXQ0KG91dCwgYSwgbSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXSxcbiAgICAgIHogPSBhWzJdO1xuICB2YXIgdyA9IG1bM10gKiB4ICsgbVs3XSAqIHkgKyBtWzExXSAqIHogKyBtWzE1XTtcbiAgdyA9IHcgfHwgMS4wO1xuICBvdXRbMF0gPSAobVswXSAqIHggKyBtWzRdICogeSArIG1bOF0gKiB6ICsgbVsxMl0pIC8gdztcbiAgb3V0WzFdID0gKG1bMV0gKiB4ICsgbVs1XSAqIHkgKyBtWzldICogeiArIG1bMTNdKSAvIHc7XG4gIG91dFsyXSA9IChtWzJdICogeCArIG1bNl0gKiB5ICsgbVsxMF0gKiB6ICsgbVsxNF0pIC8gdztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMyB3aXRoIGEgbWF0My5cbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQzfSBtIHRoZSAzeDMgbWF0cml4IHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybU1hdDMob3V0LCBhLCBtKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdLFxuICAgICAgeiA9IGFbMl07XG4gIG91dFswXSA9IHggKiBtWzBdICsgeSAqIG1bM10gKyB6ICogbVs2XTtcbiAgb3V0WzFdID0geCAqIG1bMV0gKyB5ICogbVs0XSArIHogKiBtWzddO1xuICBvdXRbMl0gPSB4ICogbVsyXSArIHkgKiBtWzVdICsgeiAqIG1bOF07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzMgd2l0aCBhIHF1YXRcbiAqIENhbiBhbHNvIGJlIHVzZWQgZm9yIGR1YWwgcXVhdGVybmlvbnMuIChNdWx0aXBseSBpdCB3aXRoIHRoZSByZWFsIHBhcnQpXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBxdWF0ZXJuaW9uIHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVF1YXQob3V0LCBhLCBxKSB7XG4gIC8vIGJlbmNobWFya3M6IGh0dHBzOi8vanNwZXJmLmNvbS9xdWF0ZXJuaW9uLXRyYW5zZm9ybS12ZWMzLWltcGxlbWVudGF0aW9ucy1maXhlZFxuICB2YXIgcXggPSBxWzBdLFxuICAgICAgcXkgPSBxWzFdLFxuICAgICAgcXogPSBxWzJdLFxuICAgICAgcXcgPSBxWzNdO1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXSxcbiAgICAgIHogPSBhWzJdOyAvLyB2YXIgcXZlYyA9IFtxeCwgcXksIHF6XTtcbiAgLy8gdmFyIHV2ID0gdmVjMy5jcm9zcyhbXSwgcXZlYywgYSk7XG5cbiAgdmFyIHV2eCA9IHF5ICogeiAtIHF6ICogeSxcbiAgICAgIHV2eSA9IHF6ICogeCAtIHF4ICogeixcbiAgICAgIHV2eiA9IHF4ICogeSAtIHF5ICogeDsgLy8gdmFyIHV1diA9IHZlYzMuY3Jvc3MoW10sIHF2ZWMsIHV2KTtcblxuICB2YXIgdXV2eCA9IHF5ICogdXZ6IC0gcXogKiB1dnksXG4gICAgICB1dXZ5ID0gcXogKiB1dnggLSBxeCAqIHV2eixcbiAgICAgIHV1dnogPSBxeCAqIHV2eSAtIHF5ICogdXZ4OyAvLyB2ZWMzLnNjYWxlKHV2LCB1diwgMiAqIHcpO1xuXG4gIHZhciB3MiA9IHF3ICogMjtcbiAgdXZ4ICo9IHcyO1xuICB1dnkgKj0gdzI7XG4gIHV2eiAqPSB3MjsgLy8gdmVjMy5zY2FsZSh1dXYsIHV1diwgMik7XG5cbiAgdXV2eCAqPSAyO1xuICB1dXZ5ICo9IDI7XG4gIHV1dnogKj0gMjsgLy8gcmV0dXJuIHZlYzMuYWRkKG91dCwgYSwgdmVjMy5hZGQob3V0LCB1diwgdXV2KSk7XG5cbiAgb3V0WzBdID0geCArIHV2eCArIHV1dng7XG4gIG91dFsxXSA9IHkgKyB1dnkgKyB1dXZ5O1xuICBvdXRbMl0gPSB6ICsgdXZ6ICsgdXV2ejtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUm90YXRlIGEgM0QgdmVjdG9yIGFyb3VuZCB0aGUgeC1heGlzXG4gKiBAcGFyYW0ge3ZlYzN9IG91dCBUaGUgcmVjZWl2aW5nIHZlYzNcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIFRoZSB2ZWMzIHBvaW50IHRvIHJvdGF0ZVxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgVGhlIG9yaWdpbiBvZiB0aGUgcm90YXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSByYWQgVGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGluIHJhZGlhbnNcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm90YXRlWChvdXQsIGEsIGIsIHJhZCkge1xuICB2YXIgcCA9IFtdLFxuICAgICAgciA9IFtdOyAvL1RyYW5zbGF0ZSBwb2ludCB0byB0aGUgb3JpZ2luXG5cbiAgcFswXSA9IGFbMF0gLSBiWzBdO1xuICBwWzFdID0gYVsxXSAtIGJbMV07XG4gIHBbMl0gPSBhWzJdIC0gYlsyXTsgLy9wZXJmb3JtIHJvdGF0aW9uXG5cbiAgclswXSA9IHBbMF07XG4gIHJbMV0gPSBwWzFdICogTWF0aC5jb3MocmFkKSAtIHBbMl0gKiBNYXRoLnNpbihyYWQpO1xuICByWzJdID0gcFsxXSAqIE1hdGguc2luKHJhZCkgKyBwWzJdICogTWF0aC5jb3MocmFkKTsgLy90cmFuc2xhdGUgdG8gY29ycmVjdCBwb3NpdGlvblxuXG4gIG91dFswXSA9IHJbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSByWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gclsyXSArIGJbMl07XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJvdGF0ZSBhIDNEIHZlY3RvciBhcm91bmQgdGhlIHktYXhpc1xuICogQHBhcmFtIHt2ZWMzfSBvdXQgVGhlIHJlY2VpdmluZyB2ZWMzXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSBUaGUgdmVjMyBwb2ludCB0byByb3RhdGVcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIFRoZSBvcmlnaW4gb2YgdGhlIHJvdGF0aW9uXG4gKiBAcGFyYW0ge051bWJlcn0gcmFkIFRoZSBhbmdsZSBvZiByb3RhdGlvbiBpbiByYWRpYW5zXG4gKiBAcmV0dXJucyB7dmVjM30gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZVkob3V0LCBhLCBiLCByYWQpIHtcbiAgdmFyIHAgPSBbXSxcbiAgICAgIHIgPSBbXTsgLy9UcmFuc2xhdGUgcG9pbnQgdG8gdGhlIG9yaWdpblxuXG4gIHBbMF0gPSBhWzBdIC0gYlswXTtcbiAgcFsxXSA9IGFbMV0gLSBiWzFdO1xuICBwWzJdID0gYVsyXSAtIGJbMl07IC8vcGVyZm9ybSByb3RhdGlvblxuXG4gIHJbMF0gPSBwWzJdICogTWF0aC5zaW4ocmFkKSArIHBbMF0gKiBNYXRoLmNvcyhyYWQpO1xuICByWzFdID0gcFsxXTtcbiAgclsyXSA9IHBbMl0gKiBNYXRoLmNvcyhyYWQpIC0gcFswXSAqIE1hdGguc2luKHJhZCk7IC8vdHJhbnNsYXRlIHRvIGNvcnJlY3QgcG9zaXRpb25cblxuICBvdXRbMF0gPSByWzBdICsgYlswXTtcbiAgb3V0WzFdID0gclsxXSArIGJbMV07XG4gIG91dFsyXSA9IHJbMl0gKyBiWzJdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSb3RhdGUgYSAzRCB2ZWN0b3IgYXJvdW5kIHRoZSB6LWF4aXNcbiAqIEBwYXJhbSB7dmVjM30gb3V0IFRoZSByZWNlaXZpbmcgdmVjM1xuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgVGhlIHZlYzMgcG9pbnQgdG8gcm90YXRlXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYiBUaGUgb3JpZ2luIG9mIHRoZSByb3RhdGlvblxuICogQHBhcmFtIHtOdW1iZXJ9IHJhZCBUaGUgYW5nbGUgb2Ygcm90YXRpb24gaW4gcmFkaWFuc1xuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVaKG91dCwgYSwgYiwgcmFkKSB7XG4gIHZhciBwID0gW10sXG4gICAgICByID0gW107IC8vVHJhbnNsYXRlIHBvaW50IHRvIHRoZSBvcmlnaW5cblxuICBwWzBdID0gYVswXSAtIGJbMF07XG4gIHBbMV0gPSBhWzFdIC0gYlsxXTtcbiAgcFsyXSA9IGFbMl0gLSBiWzJdOyAvL3BlcmZvcm0gcm90YXRpb25cblxuICByWzBdID0gcFswXSAqIE1hdGguY29zKHJhZCkgLSBwWzFdICogTWF0aC5zaW4ocmFkKTtcbiAgclsxXSA9IHBbMF0gKiBNYXRoLnNpbihyYWQpICsgcFsxXSAqIE1hdGguY29zKHJhZCk7XG4gIHJbMl0gPSBwWzJdOyAvL3RyYW5zbGF0ZSB0byBjb3JyZWN0IHBvc2l0aW9uXG5cbiAgb3V0WzBdID0gclswXSArIGJbMF07XG4gIG91dFsxXSA9IHJbMV0gKyBiWzFdO1xuICBvdXRbMl0gPSByWzJdICsgYlsyXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogR2V0IHRoZSBhbmdsZSBiZXR3ZWVuIHR3byAzRCB2ZWN0b3JzXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSBUaGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgVGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgYW5nbGUgaW4gcmFkaWFuc1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhbmdsZShhLCBiKSB7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBheiA9IGFbMl0sXG4gICAgICBieCA9IGJbMF0sXG4gICAgICBieSA9IGJbMV0sXG4gICAgICBieiA9IGJbMl0sXG4gICAgICBtYWcxID0gTWF0aC5zcXJ0KGF4ICogYXggKyBheSAqIGF5ICsgYXogKiBheiksXG4gICAgICBtYWcyID0gTWF0aC5zcXJ0KGJ4ICogYnggKyBieSAqIGJ5ICsgYnogKiBieiksXG4gICAgICBtYWcgPSBtYWcxICogbWFnMixcbiAgICAgIGNvc2luZSA9IG1hZyAmJiBkb3QoYSwgYikgLyBtYWc7XG4gIHJldHVybiBNYXRoLmFjb3MoTWF0aC5taW4oTWF0aC5tYXgoY29zaW5lLCAtMSksIDEpKTtcbn1cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnRzIG9mIGEgdmVjMyB0byB6ZXJvXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEByZXR1cm5zIHt2ZWMzfSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gemVybyhvdXQpIHtcbiAgb3V0WzBdID0gMC4wO1xuICBvdXRbMV0gPSAwLjA7XG4gIG91dFsyXSA9IDAuMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBhIHZlY3RvciB0byByZXByZXNlbnQgYXMgYSBzdHJpbmdcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihhKSB7XG4gIHJldHVybiBcInZlYzMoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIilcIjtcbn1cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgdmVjdG9ycyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGEgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWMzfSBiIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIHZlY3RvcnMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4YWN0RXF1YWxzKGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsxXSA9PT0gYlsxXSAmJiBhWzJdID09PSBiWzJdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjM30gYSBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtSZWFkb25seVZlYzN9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpO1xufVxuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMuc3VidHJhY3R9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIHN1YiA9IHN1YnRyYWN0O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMubXVsdGlwbHl9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIG11bCA9IG11bHRpcGx5O1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMuZGl2aWRlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBkaXYgPSBkaXZpZGU7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5kaXN0YW5jZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZGlzdCA9IGRpc3RhbmNlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMuc3F1YXJlZERpc3RhbmNlfVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJEaXN0ID0gc3F1YXJlZERpc3RhbmNlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzMubGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBsZW4gPSBsZW5ndGg7XG4vKipcbiAqIEFsaWFzIGZvciB7QGxpbmsgdmVjMy5zcXVhcmVkTGVuZ3RofVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzcXJMZW4gPSBzcXVhcmVkTGVuZ3RoO1xuLyoqXG4gKiBQZXJmb3JtIHNvbWUgb3BlcmF0aW9uIG92ZXIgYW4gYXJyYXkgb2YgdmVjM3MuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYSB0aGUgYXJyYXkgb2YgdmVjdG9ycyB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdHJpZGUgTnVtYmVyIG9mIGVsZW1lbnRzIGJldHdlZW4gdGhlIHN0YXJ0IG9mIGVhY2ggdmVjMy4gSWYgMCBhc3N1bWVzIHRpZ2h0bHkgcGFja2VkXG4gKiBAcGFyYW0ge051bWJlcn0gb2Zmc2V0IE51bWJlciBvZiBlbGVtZW50cyB0byBza2lwIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gY291bnQgTnVtYmVyIG9mIHZlYzNzIHRvIGl0ZXJhdGUgb3Zlci4gSWYgMCBpdGVyYXRlcyBvdmVyIGVudGlyZSBhcnJheVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gRnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCB2ZWN0b3IgaW4gdGhlIGFycmF5XG4gKiBAcGFyYW0ge09iamVjdH0gW2FyZ10gYWRkaXRpb25hbCBhcmd1bWVudCB0byBwYXNzIHRvIGZuXG4gKiBAcmV0dXJucyB7QXJyYXl9IGFcbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZm9yRWFjaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHZlYyA9IGNyZWF0ZSgpO1xuICByZXR1cm4gZnVuY3Rpb24gKGEsIHN0cmlkZSwgb2Zmc2V0LCBjb3VudCwgZm4sIGFyZykge1xuICAgIHZhciBpLCBsO1xuXG4gICAgaWYgKCFzdHJpZGUpIHtcbiAgICAgIHN0cmlkZSA9IDM7XG4gICAgfVxuXG4gICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICBsID0gTWF0aC5taW4oY291bnQgKiBzdHJpZGUgKyBvZmZzZXQsIGEubGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbCA9IGEubGVuZ3RoO1xuICAgIH1cblxuICAgIGZvciAoaSA9IG9mZnNldDsgaSA8IGw7IGkgKz0gc3RyaWRlKSB7XG4gICAgICB2ZWNbMF0gPSBhW2ldO1xuICAgICAgdmVjWzFdID0gYVtpICsgMV07XG4gICAgICB2ZWNbMl0gPSBhW2kgKyAyXTtcbiAgICAgIGZuKHZlYywgdmVjLCBhcmcpO1xuICAgICAgYVtpXSA9IHZlY1swXTtcbiAgICAgIGFbaSArIDFdID0gdmVjWzFdO1xuICAgICAgYVtpICsgMl0gPSB2ZWNbMl07XG4gICAgfVxuXG4gICAgcmV0dXJuIGE7XG4gIH07XG59KCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js\n"); /***/ }), /***/ "./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec4.js": /*!*************************************************************!*\ !*** ./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec4.js ***! \*************************************************************/ /*! exports provided: create, clone, fromValues, copy, set, add, subtract, multiply, divide, ceil, floor, min, max, round, scale, scaleAndAdd, distance, squaredDistance, length, squaredLength, negate, inverse, normalize, dot, cross, lerp, random, transformMat4, transformQuat, zero, str, exactEquals, equals, sub, mul, div, dist, sqrDist, len, sqrLen, forEach */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return create; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return clone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fromValues\", function() { return fromValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"copy\", function() { return copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"add\", function() { return add; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"subtract\", function() { return subtract; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiply\", function() { return multiply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"divide\", function() { return divide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return min; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return max; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"round\", function() { return round; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAndAdd\", function() { return scaleAndAdd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredDistance\", function() { return squaredDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"length\", function() { return length; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squaredLength\", function() { return squaredLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return negate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dot\", function() { return dot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformMat4\", function() { return transformMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformQuat\", function() { return transformQuat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zero\", function() { return zero; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"str\", function() { return str; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exactEquals\", function() { return exactEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equals\", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sub\", function() { return sub; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mul\", function() { return mul; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"div\", function() { return div; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dist\", function() { return dist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrDist\", function() { return sqrDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"len\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrLen\", function() { return sqrLen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return forEach; });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/common.js\");\n\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\n\nfunction create() {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n\n if (_common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"] != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {ReadonlyVec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\n\nfunction clone(a) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\n\nfunction fromValues(x, y, z, w) {\n var out = new _common_js__WEBPACK_IMPORTED_MODULE_0__[\"ARRAY_TYPE\"](4);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the source vector\n * @returns {vec4} out\n */\n\nfunction copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\n\nfunction set(out, x, y, z, w) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = w;\n return out;\n}\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n return out;\n}\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n out[3] = a[3] * b[3];\n return out;\n}\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n out[3] = a[3] / b[3];\n return out;\n}\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to ceil\n * @returns {vec4} out\n */\n\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n out[3] = Math.ceil(a[3]);\n return out;\n}\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to floor\n * @returns {vec4} out\n */\n\nfunction floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n out[3] = Math.floor(a[3]);\n return out;\n}\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n out[3] = Math.min(a[3], b[3]);\n return out;\n}\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {vec4} out\n */\n\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n out[3] = Math.max(a[3], b[3]);\n return out;\n}\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to round\n * @returns {vec4} out\n */\n\nfunction round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n out[3] = Math.round(a[3]);\n return out;\n}\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\n\nfunction scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n return out;\n}\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\n\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} distance between a and b\n */\n\nfunction distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n var w = b[3] - a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Calculates the length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nfunction length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return Math.hypot(x, y, z, w);\n}\n/**\n * Calculates the squared length of a vec4\n *\n * @param {ReadonlyVec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nfunction squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n return x * x + y * y + z * z + w * w;\n}\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to negate\n * @returns {vec4} out\n */\n\nfunction negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = -a[3];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to invert\n * @returns {vec4} out\n */\n\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n out[3] = 1.0 / a[3];\n return out;\n}\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a vector to normalize\n * @returns {vec4} out\n */\n\nfunction normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var w = a[3];\n var len = x * x + y * y + z * z + w * w;\n\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = x * len;\n out[1] = y * len;\n out[2] = z * len;\n out[3] = w * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {ReadonlyVec4} result the receiving vector\n * @param {ReadonlyVec4} U the first vector\n * @param {ReadonlyVec4} V the second vector\n * @param {ReadonlyVec4} W the third vector\n * @returns {vec4} result\n */\n\nfunction cross(out, u, v, w) {\n var A = v[0] * w[1] - v[1] * w[0],\n B = v[0] * w[2] - v[2] * w[0],\n C = v[0] * w[3] - v[3] * w[0],\n D = v[1] * w[2] - v[2] * w[1],\n E = v[1] * w[3] - v[3] * w[1],\n F = v[2] * w[3] - v[3] * w[2];\n var G = u[0];\n var H = u[1];\n var I = u[2];\n var J = u[3];\n out[0] = H * F - I * E + J * D;\n out[1] = -(G * F) + I * C - J * B;\n out[2] = G * E - H * C + J * A;\n out[3] = -(G * D) + H * B - I * A;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the first operand\n * @param {ReadonlyVec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\n\nfunction lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n out[3] = aw + t * (b[3] - aw);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\n\nfunction random(out, scale) {\n scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n // http://projecteuclid.org/euclid.aoms/1177692644;\n\n var v1, v2, v3, v4;\n var s1, s2;\n\n do {\n v1 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n v2 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n s1 = v1 * v1 + v2 * v2;\n } while (s1 >= 1);\n\n do {\n v3 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n v4 = _common_js__WEBPACK_IMPORTED_MODULE_0__[\"RANDOM\"]() * 2 - 1;\n s2 = v3 * v3 + v4 * v4;\n } while (s2 >= 1);\n\n var d = Math.sqrt((1 - s1) / s2);\n out[0] = scale * v1;\n out[1] = scale * v2;\n out[2] = scale * v3 * d;\n out[3] = scale * v4 * d;\n return out;\n}\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec4} out\n */\n\nfunction transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2],\n w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {ReadonlyVec4} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec4} out\n */\n\nfunction transformQuat(out, a, q) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3]; // calculate quat * vec\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n\n out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n out[3] = a[3];\n return out;\n}\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\n\nfunction zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n out[3] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nfunction str(a) {\n return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec4} a The first vector.\n * @param {ReadonlyVec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nfunction equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n return Math.abs(a0 - b0) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= _common_js__WEBPACK_IMPORTED_MODULE_0__[\"EPSILON\"] * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\n\nvar sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\n\nvar mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\n\nvar div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\n\nvar dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\n\nvar sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\n\nvar len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\n\nvar sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nvar forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 4;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n vec[3] = a[i + 3];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n a[i + 3] = vec[3];\n }\n\n return a;\n };\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLW1hdHJpeEAzLjQuM0BnbC1tYXRyaXgvZXNtL3ZlYzQuanM/Y2FlYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUCxnQkFBZ0IscURBQW1COztBQUVuQyxNQUFNLHFEQUFtQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsZ0JBQWdCLHFEQUFtQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsT0FBTztBQUNwQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxPQUFPO0FBQ3BCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLGFBQWE7QUFDeEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLE9BQU87QUFDbEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1AsdUJBQXVCO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFNBQVMsaURBQWU7QUFDeEIsU0FBUyxpREFBZTtBQUN4QjtBQUNBLEdBQUc7O0FBRUg7QUFDQSxTQUFTLGlEQUFlO0FBQ3hCLFNBQVMsaURBQWU7QUFDeEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsYUFBYTtBQUN4QixXQUFXLGFBQWE7QUFDeEIsYUFBYSxLQUFLO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEtBQUs7QUFDbEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixhQUFhLE9BQU87QUFDcEI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFnQixxRUFBcUUsa0RBQWdCLHFFQUFxRSxrREFBZ0IscUVBQXFFLGtEQUFnQjtBQUM3UztBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFTztBQUNQO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtbWF0cml4QDMuNC4zQGdsLW1hdHJpeC9lc20vdmVjNC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdsTWF0cml4IGZyb20gXCIuL2NvbW1vbi5qc1wiO1xuLyoqXG4gKiA0IERpbWVuc2lvbmFsIFZlY3RvclxuICogQG1vZHVsZSB2ZWM0XG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3LCBlbXB0eSB2ZWM0XG4gKlxuICogQHJldHVybnMge3ZlYzR9IGEgbmV3IDREIHZlY3RvclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg0KTtcblxuICBpZiAoZ2xNYXRyaXguQVJSQVlfVFlQRSAhPSBGbG9hdDMyQXJyYXkpIHtcbiAgICBvdXRbMF0gPSAwO1xuICAgIG91dFsxXSA9IDA7XG4gICAgb3V0WzJdID0gMDtcbiAgICBvdXRbM10gPSAwO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2ZWM0IGluaXRpYWxpemVkIHdpdGggdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgdmVjdG9yXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjNH0gYSBuZXcgNEQgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgdmFyIG91dCA9IG5ldyBnbE1hdHJpeC5BUlJBWV9UWVBFKDQpO1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzQgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geiBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcgVyBjb21wb25lbnRcbiAqIEByZXR1cm5zIHt2ZWM0fSBhIG5ldyA0RCB2ZWN0b3JcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVZhbHVlcyh4LCB5LCB6LCB3KSB7XG4gIHZhciBvdXQgPSBuZXcgZ2xNYXRyaXguQVJSQVlfVFlQRSg0KTtcbiAgb3V0WzBdID0geDtcbiAgb3V0WzFdID0geTtcbiAgb3V0WzJdID0gejtcbiAgb3V0WzNdID0gdztcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQ29weSB0aGUgdmFsdWVzIGZyb20gb25lIHZlYzQgdG8gYW5vdGhlclxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgc291cmNlIHZlY3RvclxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KG91dCwgYSkge1xuICBvdXRbMF0gPSBhWzBdO1xuICBvdXRbMV0gPSBhWzFdO1xuICBvdXRbMl0gPSBhWzJdO1xuICBvdXRbM10gPSBhWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0IHRvIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geiBaIGNvbXBvbmVudFxuICogQHBhcmFtIHtOdW1iZXJ9IHcgVyBjb21wb25lbnRcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0KG91dCwgeCwgeSwgeiwgdykge1xuICBvdXRbMF0gPSB4O1xuICBvdXRbMV0gPSB5O1xuICBvdXRbMl0gPSB6O1xuICBvdXRbM10gPSB3O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICsgYlsxXTtcbiAgb3V0WzJdID0gYVsyXSArIGJbMl07XG4gIG91dFszXSA9IGFbM10gKyBiWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBTdWJ0cmFjdHMgdmVjdG9yIGIgZnJvbSB2ZWN0b3IgYVxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnRyYWN0KG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdIC0gYlswXTtcbiAgb3V0WzFdID0gYVsxXSAtIGJbMV07XG4gIG91dFsyXSA9IGFbMl0gLSBiWzJdO1xuICBvdXRbM10gPSBhWzNdIC0gYlszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTXVsdGlwbGllcyB0d28gdmVjNCdzXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHkob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gKiBiWzBdO1xuICBvdXRbMV0gPSBhWzFdICogYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAqIGJbMl07XG4gIG91dFszXSA9IGFbM10gKiBiWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBEaXZpZGVzIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXZpZGUob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IGFbMF0gLyBiWzBdO1xuICBvdXRbMV0gPSBhWzFdIC8gYlsxXTtcbiAgb3V0WzJdID0gYVsyXSAvIGJbMl07XG4gIG91dFszXSA9IGFbM10gLyBiWzNdO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNYXRoLmNlaWwgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byBjZWlsXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNlaWwob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguY2VpbChhWzBdKTtcbiAgb3V0WzFdID0gTWF0aC5jZWlsKGFbMV0pO1xuICBvdXRbMl0gPSBNYXRoLmNlaWwoYVsyXSk7XG4gIG91dFszXSA9IE1hdGguY2VpbChhWzNdKTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTWF0aC5mbG9vciB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzRcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIGZsb29yXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZsb29yKG91dCwgYSkge1xuICBvdXRbMF0gPSBNYXRoLmZsb29yKGFbMF0pO1xuICBvdXRbMV0gPSBNYXRoLmZsb29yKGFbMV0pO1xuICBvdXRbMl0gPSBNYXRoLmZsb29yKGFbMl0pO1xuICBvdXRbM10gPSBNYXRoLmZsb29yKGFbM10pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtaW4ob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IE1hdGgubWluKGFbMF0sIGJbMF0pO1xuICBvdXRbMV0gPSBNYXRoLm1pbihhWzFdLCBiWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5taW4oYVsyXSwgYlsyXSk7XG4gIG91dFszXSA9IE1hdGgubWluKGFbM10sIGJbM10pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXgob3V0LCBhLCBiKSB7XG4gIG91dFswXSA9IE1hdGgubWF4KGFbMF0sIGJbMF0pO1xuICBvdXRbMV0gPSBNYXRoLm1heChhWzFdLCBiWzFdKTtcbiAgb3V0WzJdID0gTWF0aC5tYXgoYVsyXSwgYlsyXSk7XG4gIG91dFszXSA9IE1hdGgubWF4KGFbM10sIGJbM10pO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBNYXRoLnJvdW5kIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNFxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB2ZWN0b3IgdG8gcm91bmRcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcm91bmQob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGgucm91bmQoYVswXSk7XG4gIG91dFsxXSA9IE1hdGgucm91bmQoYVsxXSk7XG4gIG91dFsyXSA9IE1hdGgucm91bmQoYVsyXSk7XG4gIG91dFszXSA9IE1hdGgucm91bmQoYVszXSk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNjYWxlcyBhIHZlYzQgYnkgYSBzY2FsYXIgbnVtYmVyXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSB2ZWN0b3IgdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgdmVjdG9yIGJ5XG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlKG91dCwgYSwgYikge1xuICBvdXRbMF0gPSBhWzBdICogYjtcbiAgb3V0WzFdID0gYVsxXSAqIGI7XG4gIG91dFsyXSA9IGFbMl0gKiBiO1xuICBvdXRbM10gPSBhWzNdICogYjtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjNCdzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBzY2FsZSB0aGUgYW1vdW50IHRvIHNjYWxlIGIgYnkgYmVmb3JlIGFkZGluZ1xuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFuZEFkZChvdXQsIGEsIGIsIHNjYWxlKSB7XG4gIG91dFswXSA9IGFbMF0gKyBiWzBdICogc2NhbGU7XG4gIG91dFsxXSA9IGFbMV0gKyBiWzFdICogc2NhbGU7XG4gIG91dFsyXSA9IGFbMl0gKyBiWzJdICogc2NhbGU7XG4gIG91dFszXSA9IGFbM10gKyBiWzNdICogc2NhbGU7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWM0J3NcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikge1xuICB2YXIgeCA9IGJbMF0gLSBhWzBdO1xuICB2YXIgeSA9IGJbMV0gLSBhWzFdO1xuICB2YXIgeiA9IGJbMl0gLSBhWzJdO1xuICB2YXIgdyA9IGJbM10gLSBhWzNdO1xuICByZXR1cm4gTWF0aC5oeXBvdCh4LCB5LCB6LCB3KTtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBldWNsaWRpYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjNCdzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlZERpc3RhbmNlKGEsIGIpIHtcbiAgdmFyIHggPSBiWzBdIC0gYVswXTtcbiAgdmFyIHkgPSBiWzFdIC0gYVsxXTtcbiAgdmFyIHogPSBiWzJdIC0gYVsyXTtcbiAgdmFyIHcgPSBiWzNdIC0gYVszXTtcbiAgcmV0dXJuIHggKiB4ICsgeSAqIHkgKyB6ICogeiArIHcgKiB3O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBsZW5ndGggb2YgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdmVjdG9yIHRvIGNhbGN1bGF0ZSBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGxlbmd0aCBvZiBhXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxlbmd0aChhKSB7XG4gIHZhciB4ID0gYVswXTtcbiAgdmFyIHkgPSBhWzFdO1xuICB2YXIgeiA9IGFbMl07XG4gIHZhciB3ID0gYVszXTtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSwgeiwgdyk7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgbGVuZ3RoIG9mIGEgdmVjNFxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJlZExlbmd0aChhKSB7XG4gIHZhciB4ID0gYVswXTtcbiAgdmFyIHkgPSBhWzFdO1xuICB2YXIgeiA9IGFbMl07XG4gIHZhciB3ID0gYVszXTtcbiAgcmV0dXJuIHggKiB4ICsgeSAqIHkgKyB6ICogeiArIHcgKiB3O1xufVxuLyoqXG4gKiBOZWdhdGVzIHRoZSBjb21wb25lbnRzIG9mIGEgdmVjNFxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB2ZWN0b3IgdG8gbmVnYXRlXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZShvdXQsIGEpIHtcbiAgb3V0WzBdID0gLWFbMF07XG4gIG91dFsxXSA9IC1hWzFdO1xuICBvdXRbMl0gPSAtYVsyXTtcbiAgb3V0WzNdID0gLWFbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWM0XG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byBpbnZlcnRcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJzZShvdXQsIGEpIHtcbiAgb3V0WzBdID0gMS4wIC8gYVswXTtcbiAgb3V0WzFdID0gMS4wIC8gYVsxXTtcbiAgb3V0WzJdID0gMS4wIC8gYVsyXTtcbiAgb3V0WzNdID0gMS4wIC8gYVszXTtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgdmVjNFxuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSB2ZWN0b3IgdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShvdXQsIGEpIHtcbiAgdmFyIHggPSBhWzBdO1xuICB2YXIgeSA9IGFbMV07XG4gIHZhciB6ID0gYVsyXTtcbiAgdmFyIHcgPSBhWzNdO1xuICB2YXIgbGVuID0geCAqIHggKyB5ICogeSArIHogKiB6ICsgdyAqIHc7XG5cbiAgaWYgKGxlbiA+IDApIHtcbiAgICBsZW4gPSAxIC8gTWF0aC5zcXJ0KGxlbik7XG4gIH1cblxuICBvdXRbMF0gPSB4ICogbGVuO1xuICBvdXRbMV0gPSB5ICogbGVuO1xuICBvdXRbMl0gPSB6ICogbGVuO1xuICBvdXRbM10gPSB3ICogbGVuO1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBkb3QgcHJvZHVjdCBvZiB0d28gdmVjNCdzXG4gKlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gZG90IHByb2R1Y3Qgb2YgYSBhbmQgYlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkb3QoYSwgYikge1xuICByZXR1cm4gYVswXSAqIGJbMF0gKyBhWzFdICogYlsxXSArIGFbMl0gKiBiWzJdICsgYVszXSAqIGJbM107XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGNyb3NzLXByb2R1Y3Qgb2YgdGhyZWUgdmVjdG9ycyBpbiBhIDQtZGltZW5zaW9uYWwgc3BhY2VcbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gcmVzdWx0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gVSB0aGUgZmlyc3QgdmVjdG9yXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gViB0aGUgc2Vjb25kIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IFcgdGhlIHRoaXJkIHZlY3RvclxuICogQHJldHVybnMge3ZlYzR9IHJlc3VsdFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcm9zcyhvdXQsIHUsIHYsIHcpIHtcbiAgdmFyIEEgPSB2WzBdICogd1sxXSAtIHZbMV0gKiB3WzBdLFxuICAgICAgQiA9IHZbMF0gKiB3WzJdIC0gdlsyXSAqIHdbMF0sXG4gICAgICBDID0gdlswXSAqIHdbM10gLSB2WzNdICogd1swXSxcbiAgICAgIEQgPSB2WzFdICogd1syXSAtIHZbMl0gKiB3WzFdLFxuICAgICAgRSA9IHZbMV0gKiB3WzNdIC0gdlszXSAqIHdbMV0sXG4gICAgICBGID0gdlsyXSAqIHdbM10gLSB2WzNdICogd1syXTtcbiAgdmFyIEcgPSB1WzBdO1xuICB2YXIgSCA9IHVbMV07XG4gIHZhciBJID0gdVsyXTtcbiAgdmFyIEogPSB1WzNdO1xuICBvdXRbMF0gPSBIICogRiAtIEkgKiBFICsgSiAqIEQ7XG4gIG91dFsxXSA9IC0oRyAqIEYpICsgSSAqIEMgLSBKICogQjtcbiAgb3V0WzJdID0gRyAqIEUgLSBIICogQyArIEogKiBBO1xuICBvdXRbM10gPSAtKEcgKiBEKSArIEggKiBCIC0gSSAqIEE7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0d28gdmVjNCdzXG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSB0IGludGVycG9sYXRpb24gYW1vdW50LCBpbiB0aGUgcmFuZ2UgWzAtMV0sIGJldHdlZW4gdGhlIHR3byBpbnB1dHNcbiAqIEByZXR1cm5zIHt2ZWM0fSBvdXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbGVycChvdXQsIGEsIGIsIHQpIHtcbiAgdmFyIGF4ID0gYVswXTtcbiAgdmFyIGF5ID0gYVsxXTtcbiAgdmFyIGF6ID0gYVsyXTtcbiAgdmFyIGF3ID0gYVszXTtcbiAgb3V0WzBdID0gYXggKyB0ICogKGJbMF0gLSBheCk7XG4gIG91dFsxXSA9IGF5ICsgdCAqIChiWzFdIC0gYXkpO1xuICBvdXRbMl0gPSBheiArIHQgKiAoYlsyXSAtIGF6KTtcbiAgb3V0WzNdID0gYXcgKyB0ICogKGJbM10gLSBhdyk7XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBhIHJhbmRvbSB2ZWN0b3Igd2l0aCB0aGUgZ2l2ZW4gc2NhbGVcbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtOdW1iZXJ9IFtzY2FsZV0gTGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgdmVjdG9yLiBJZiBvbW1pdHRlZCwgYSB1bml0IHZlY3RvciB3aWxsIGJlIHJldHVybmVkXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbShvdXQsIHNjYWxlKSB7XG4gIHNjYWxlID0gc2NhbGUgfHwgMS4wOyAvLyBNYXJzYWdsaWEsIEdlb3JnZS4gQ2hvb3NpbmcgYSBQb2ludCBmcm9tIHRoZSBTdXJmYWNlIG9mIGFcbiAgLy8gU3BoZXJlLiBBbm4uIE1hdGguIFN0YXRpc3QuIDQzICgxOTcyKSwgbm8uIDIsIDY0NS0tNjQ2LlxuICAvLyBodHRwOi8vcHJvamVjdGV1Y2xpZC5vcmcvZXVjbGlkLmFvbXMvMTE3NzY5MjY0NDtcblxuICB2YXIgdjEsIHYyLCB2MywgdjQ7XG4gIHZhciBzMSwgczI7XG5cbiAgZG8ge1xuICAgIHYxID0gZ2xNYXRyaXguUkFORE9NKCkgKiAyIC0gMTtcbiAgICB2MiA9IGdsTWF0cml4LlJBTkRPTSgpICogMiAtIDE7XG4gICAgczEgPSB2MSAqIHYxICsgdjIgKiB2MjtcbiAgfSB3aGlsZSAoczEgPj0gMSk7XG5cbiAgZG8ge1xuICAgIHYzID0gZ2xNYXRyaXguUkFORE9NKCkgKiAyIC0gMTtcbiAgICB2NCA9IGdsTWF0cml4LlJBTkRPTSgpICogMiAtIDE7XG4gICAgczIgPSB2MyAqIHYzICsgdjQgKiB2NDtcbiAgfSB3aGlsZSAoczIgPj0gMSk7XG5cbiAgdmFyIGQgPSBNYXRoLnNxcnQoKDEgLSBzMSkgLyBzMik7XG4gIG91dFswXSA9IHNjYWxlICogdjE7XG4gIG91dFsxXSA9IHNjYWxlICogdjI7XG4gIG91dFsyXSA9IHNjYWxlICogdjMgKiBkO1xuICBvdXRbM10gPSBzY2FsZSAqIHY0ICogZDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjNCB3aXRoIGEgbWF0NC5cbiAqXG4gKiBAcGFyYW0ge3ZlYzR9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7UmVhZG9ubHlNYXQ0fSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzR9IG91dFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1NYXQ0KG91dCwgYSwgbSkge1xuICB2YXIgeCA9IGFbMF0sXG4gICAgICB5ID0gYVsxXSxcbiAgICAgIHogPSBhWzJdLFxuICAgICAgdyA9IGFbM107XG4gIG91dFswXSA9IG1bMF0gKiB4ICsgbVs0XSAqIHkgKyBtWzhdICogeiArIG1bMTJdICogdztcbiAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzVdICogeSArIG1bOV0gKiB6ICsgbVsxM10gKiB3O1xuICBvdXRbMl0gPSBtWzJdICogeCArIG1bNl0gKiB5ICsgbVsxMF0gKiB6ICsgbVsxNF0gKiB3O1xuICBvdXRbM10gPSBtWzNdICogeCArIG1bN10gKiB5ICsgbVsxMV0gKiB6ICsgbVsxNV0gKiB3O1xuICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWM0IHdpdGggYSBxdWF0XG4gKlxuICogQHBhcmFtIHt2ZWM0fSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge1JlYWRvbmx5UXVhdH0gcSBxdWF0ZXJuaW9uIHRvIHRyYW5zZm9ybSB3aXRoXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVF1YXQob3V0LCBhLCBxKSB7XG4gIHZhciB4ID0gYVswXSxcbiAgICAgIHkgPSBhWzFdLFxuICAgICAgeiA9IGFbMl07XG4gIHZhciBxeCA9IHFbMF0sXG4gICAgICBxeSA9IHFbMV0sXG4gICAgICBxeiA9IHFbMl0sXG4gICAgICBxdyA9IHFbM107IC8vIGNhbGN1bGF0ZSBxdWF0ICogdmVjXG5cbiAgdmFyIGl4ID0gcXcgKiB4ICsgcXkgKiB6IC0gcXogKiB5O1xuICB2YXIgaXkgPSBxdyAqIHkgKyBxeiAqIHggLSBxeCAqIHo7XG4gIHZhciBpeiA9IHF3ICogeiArIHF4ICogeSAtIHF5ICogeDtcbiAgdmFyIGl3ID0gLXF4ICogeCAtIHF5ICogeSAtIHF6ICogejsgLy8gY2FsY3VsYXRlIHJlc3VsdCAqIGludmVyc2UgcXVhdFxuXG4gIG91dFswXSA9IGl4ICogcXcgKyBpdyAqIC1xeCArIGl5ICogLXF6IC0gaXogKiAtcXk7XG4gIG91dFsxXSA9IGl5ICogcXcgKyBpdyAqIC1xeSArIGl6ICogLXF4IC0gaXggKiAtcXo7XG4gIG91dFsyXSA9IGl6ICogcXcgKyBpdyAqIC1xeiArIGl4ICogLXF5IC0gaXkgKiAtcXg7XG4gIG91dFszXSA9IGFbM107XG4gIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzQgdG8gemVyb1xuICpcbiAqIEBwYXJhbSB7dmVjNH0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjNH0gb3V0XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHplcm8ob3V0KSB7XG4gIG91dFswXSA9IDAuMDtcbiAgb3V0WzFdID0gMC4wO1xuICBvdXRbMl0gPSAwLjA7XG4gIG91dFszXSA9IDAuMDtcbiAgcmV0dXJuIG91dDtcbn1cbi8qKlxuICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIHZlY3RvciB0byByZXByZXNlbnQgYXMgYSBzdHJpbmdcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmVjdG9yXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cihhKSB7XG4gIHJldHVybiBcInZlYzQoXCIgKyBhWzBdICsgXCIsIFwiICsgYVsxXSArIFwiLCBcIiArIGFbMl0gKyBcIiwgXCIgKyBhWzNdICsgXCIpXCI7XG59XG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHZlY3RvcnMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGVsZW1lbnRzIGluIHRoZSBzYW1lIHBvc2l0aW9uICh3aGVuIGNvbXBhcmVkIHdpdGggPT09KVxuICpcbiAqIEBwYXJhbSB7UmVhZG9ubHlWZWM0fSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGFjdEVxdWFscyhhLCBiKSB7XG4gIHJldHVybiBhWzBdID09PSBiWzBdICYmIGFbMV0gPT09IGJbMV0gJiYgYVsyXSA9PT0gYlsyXSAmJiBhWzNdID09PSBiWzNdO1xufVxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1JlYWRvbmx5VmVjNH0gYSBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtSZWFkb25seVZlYzR9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxzKGEsIGIpIHtcbiAgdmFyIGEwID0gYVswXSxcbiAgICAgIGExID0gYVsxXSxcbiAgICAgIGEyID0gYVsyXSxcbiAgICAgIGEzID0gYVszXTtcbiAgdmFyIGIwID0gYlswXSxcbiAgICAgIGIxID0gYlsxXSxcbiAgICAgIGIyID0gYlsyXSxcbiAgICAgIGIzID0gYlszXTtcbiAgcmV0dXJuIE1hdGguYWJzKGEwIC0gYjApIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEwKSwgTWF0aC5hYnMoYjApKSAmJiBNYXRoLmFicyhhMSAtIGIxKSA8PSBnbE1hdHJpeC5FUFNJTE9OICogTWF0aC5tYXgoMS4wLCBNYXRoLmFicyhhMSksIE1hdGguYWJzKGIxKSkgJiYgTWF0aC5hYnMoYTIgLSBiMikgPD0gZ2xNYXRyaXguRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTIpLCBNYXRoLmFicyhiMikpICYmIE1hdGguYWJzKGEzIC0gYjMpIDw9IGdsTWF0cml4LkVQU0lMT04gKiBNYXRoLm1heCgxLjAsIE1hdGguYWJzKGEzKSwgTWF0aC5hYnMoYjMpKTtcbn1cbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWM0LnN1YnRyYWN0fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBzdWIgPSBzdWJ0cmFjdDtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWM0Lm11bHRpcGx5fVxuICogQGZ1bmN0aW9uXG4gKi9cblxuZXhwb3J0IHZhciBtdWwgPSBtdWx0aXBseTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWM0LmRpdmlkZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgZGl2ID0gZGl2aWRlO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQuZGlzdGFuY2V9XG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGRpc3QgPSBkaXN0YW5jZTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWM0LnNxdWFyZWREaXN0YW5jZX1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3FyRGlzdCA9IHNxdWFyZWREaXN0YW5jZTtcbi8qKlxuICogQWxpYXMgZm9yIHtAbGluayB2ZWM0Lmxlbmd0aH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgbGVuID0gbGVuZ3RoO1xuLyoqXG4gKiBBbGlhcyBmb3Ige0BsaW5rIHZlYzQuc3F1YXJlZExlbmd0aH1cbiAqIEBmdW5jdGlvblxuICovXG5cbmV4cG9ydCB2YXIgc3FyTGVuID0gc3F1YXJlZExlbmd0aDtcbi8qKlxuICogUGVyZm9ybSBzb21lIG9wZXJhdGlvbiBvdmVyIGFuIGFycmF5IG9mIHZlYzRzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGEgdGhlIGFycmF5IG9mIHZlY3RvcnMgdG8gaXRlcmF0ZSBvdmVyXG4gKiBAcGFyYW0ge051bWJlcn0gc3RyaWRlIE51bWJlciBvZiBlbGVtZW50cyBiZXR3ZWVuIHRoZSBzdGFydCBvZiBlYWNoIHZlYzQuIElmIDAgYXNzdW1lcyB0aWdodGx5IHBhY2tlZFxuICogQHBhcmFtIHtOdW1iZXJ9IG9mZnNldCBOdW1iZXIgb2YgZWxlbWVudHMgdG8gc2tpcCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheVxuICogQHBhcmFtIHtOdW1iZXJ9IGNvdW50IE51bWJlciBvZiB2ZWM0cyB0byBpdGVyYXRlIG92ZXIuIElmIDAgaXRlcmF0ZXMgb3ZlciBlbnRpcmUgYXJyYXlcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIEZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggdmVjdG9yIGluIHRoZSBhcnJheVxuICogQHBhcmFtIHtPYmplY3R9IFthcmddIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gcGFzcyB0byBmblxuICogQHJldHVybnMge0FycmF5fSBhXG4gKiBAZnVuY3Rpb25cbiAqL1xuXG5leHBvcnQgdmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB2ZWMgPSBjcmVhdGUoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhLCBzdHJpZGUsIG9mZnNldCwgY291bnQsIGZuLCBhcmcpIHtcbiAgICB2YXIgaSwgbDtcblxuICAgIGlmICghc3RyaWRlKSB7XG4gICAgICBzdHJpZGUgPSA0O1xuICAgIH1cblxuICAgIGlmICghb2Zmc2V0KSB7XG4gICAgICBvZmZzZXQgPSAwO1xuICAgIH1cblxuICAgIGlmIChjb3VudCkge1xuICAgICAgbCA9IE1hdGgubWluKGNvdW50ICogc3RyaWRlICsgb2Zmc2V0LCBhLmxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGwgPSBhLmxlbmd0aDtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBvZmZzZXQ7IGkgPCBsOyBpICs9IHN0cmlkZSkge1xuICAgICAgdmVjWzBdID0gYVtpXTtcbiAgICAgIHZlY1sxXSA9IGFbaSArIDFdO1xuICAgICAgdmVjWzJdID0gYVtpICsgMl07XG4gICAgICB2ZWNbM10gPSBhW2kgKyAzXTtcbiAgICAgIGZuKHZlYywgdmVjLCBhcmcpO1xuICAgICAgYVtpXSA9IHZlY1swXTtcbiAgICAgIGFbaSArIDFdID0gdmVjWzFdO1xuICAgICAgYVtpICsgMl0gPSB2ZWNbMl07XG4gICAgICBhW2kgKyAzXSA9IHZlY1szXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYTtcbiAgfTtcbn0oKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec4.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/add.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/add.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = add\n\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction add(out, a, b) {\n out[0] = a[0] + b[0]\n out[1] = a[1] + b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9hZGQuanM/ZmI2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvYWRkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhZGRcblxuLyoqXG4gKiBBZGRzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGFkZChvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBhWzBdICsgYlswXVxuICAgIG91dFsxXSA9IGFbMV0gKyBiWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/add.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/ceil.js": /*!*****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/ceil.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = ceil\n\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to ceil\n * @returns {vec2} out\n */\nfunction ceil(out, a) {\n out[0] = Math.ceil(a[0])\n out[1] = Math.ceil(a[1])\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jZWlsLmpzP2NjOWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvY2VpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gY2VpbFxuXG4vKipcbiAqIE1hdGguY2VpbCB0aGUgY29tcG9uZW50cyBvZiBhIHZlYzJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHZlY3RvciB0byBjZWlsXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGNlaWwob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguY2VpbChhWzBdKVxuICBvdXRbMV0gPSBNYXRoLmNlaWwoYVsxXSlcbiAgcmV0dXJuIG91dFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/ceil.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/clone.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/clone.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = clone\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n var out = new Float32Array(2)\n out[0] = a[0]\n out[1] = a[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jbG9uZS5qcz82NzZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jbG9uZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gY2xvbmVcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzIgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cbmZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgyKVxuICAgIG91dFswXSA9IGFbMF1cbiAgICBvdXRbMV0gPSBhWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/clone.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/copy.js": /*!*****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/copy.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = copy\n\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the source vector\n * @returns {vec2} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jb3B5LmpzP2FmZjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvY29weS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gY29weVxuXG4vKipcbiAqIENvcHkgdGhlIHZhbHVlcyBmcm9tIG9uZSB2ZWMyIHRvIGFub3RoZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBzb3VyY2UgdmVjdG9yXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGNvcHkob3V0LCBhKSB7XG4gICAgb3V0WzBdID0gYVswXVxuICAgIG91dFsxXSA9IGFbMV1cbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/copy.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/create.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/create.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = create\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\nfunction create() {\n var out = new Float32Array(2)\n out[0] = 0\n out[1] = 0\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jcmVhdGUuanM/OGM1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jcmVhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcsIGVtcHR5IHZlYzJcbiAqXG4gKiBAcmV0dXJucyB7dmVjMn0gYSBuZXcgMkQgdmVjdG9yXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgyKVxuICAgIG91dFswXSA9IDBcbiAgICBvdXRbMV0gPSAwXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/create.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/cross.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/cross.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = cross\n\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0]\n out[0] = out[1] = 0\n out[2] = z\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9jcm9zcy5qcz81OGJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvY3Jvc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGNyb3NzXG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGNyb3NzIHByb2R1Y3Qgb2YgdHdvIHZlYzInc1xuICogTm90ZSB0aGF0IHRoZSBjcm9zcyBwcm9kdWN0IG11c3QgYnkgZGVmaW5pdGlvbiBwcm9kdWNlIGEgM0QgdmVjdG9yXG4gKlxuICogQHBhcmFtIHt2ZWMzfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge3ZlYzN9IG91dFxuICovXG5mdW5jdGlvbiBjcm9zcyhvdXQsIGEsIGIpIHtcbiAgICB2YXIgeiA9IGFbMF0gKiBiWzFdIC0gYVsxXSAqIGJbMF1cbiAgICBvdXRbMF0gPSBvdXRbMV0gPSAwXG4gICAgb3V0WzJdID0gelxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/cross.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/dist.js": /*!*****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/dist.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./distance */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/distance.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9kaXN0LmpzPzA1MzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMscUVBQVkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9kaXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3RhbmNlJylcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/dist.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/distance.js": /*!*********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/distance.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = distance\n\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} distance between a and b\n */\nfunction distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1]\n return Math.sqrt(x*x + y*y)\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9kaXN0YW5jZS5qcz9hYzE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2Rpc3RhbmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBkaXN0YW5jZVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGV1Y2xpZGlhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRpc3RhbmNlIGJldHdlZW4gYSBhbmQgYlxuICovXG5mdW5jdGlvbiBkaXN0YW5jZShhLCBiKSB7XG4gICAgdmFyIHggPSBiWzBdIC0gYVswXSxcbiAgICAgICAgeSA9IGJbMV0gLSBhWzFdXG4gICAgcmV0dXJuIE1hdGguc3FydCh4KnggKyB5KnkpXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/distance.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/div.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/div.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./divide */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/divide.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9kaXYuanM/OGMyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxpRUFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2Rpdi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXZpZGUnKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/div.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/divide.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/divide.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = divide\n\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction divide(out, a, b) {\n out[0] = a[0] / b[0]\n out[1] = a[1] / b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9kaXZpZGUuanM/ZmQ4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvZGl2aWRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBkaXZpZGVcblxuLyoqXG4gKiBEaXZpZGVzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGRpdmlkZShvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBhWzBdIC8gYlswXVxuICAgIG91dFsxXSA9IGFbMV0gLyBiWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/divide.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/dot.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/dot.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = dot\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1]\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9kb3QuanM/MTY4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2RvdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZG90XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gZG90IHByb2R1Y3Qgb2YgYSBhbmQgYlxuICovXG5mdW5jdGlvbiBkb3QoYSwgYikge1xuICAgIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/dot.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/epsilon.js": /*!********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/epsilon.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = 0.000001\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9lcHNpbG9uLmpzP2E0N2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9lcHNpbG9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAwLjAwMDAwMVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/epsilon.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/equals.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/equals.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = equals\n\nvar EPSILON = __webpack_require__(/*! ./epsilon */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/epsilon.js\")\n\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction equals(a, b) {\n var a0 = a[0]\n var a1 = a[1]\n var b0 = b[0]\n var b1 = b[1]\n return (Math.abs(a0 - b0) <= EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&\n Math.abs(a1 - b1) <= EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)))\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9lcXVhbHMuanM/MWMwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2VxdWFscy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZXF1YWxzXG5cbnZhciBFUFNJTE9OID0gcmVxdWlyZSgnLi9lcHNpbG9uJylcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSB2ZWN0b3JzIGhhdmUgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7dmVjMn0gYiBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSB2ZWN0b3JzIGFyZSBlcXVhbCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICB2YXIgYTAgPSBhWzBdXG4gIHZhciBhMSA9IGFbMV1cbiAgdmFyIGIwID0gYlswXVxuICB2YXIgYjEgPSBiWzFdXG4gIHJldHVybiAoTWF0aC5hYnMoYTAgLSBiMCkgPD0gRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTApLCBNYXRoLmFicyhiMCkpICYmXG4gICAgICAgICAgTWF0aC5hYnMoYTEgLSBiMSkgPD0gRVBTSUxPTiAqIE1hdGgubWF4KDEuMCwgTWF0aC5hYnMoYTEpLCBNYXRoLmFicyhiMSkpKVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/equals.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/exactEquals.js": /*!************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/exactEquals.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = exactEquals\n\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1]\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9leGFjdEVxdWFscy5qcz85MDZhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvZXhhY3RFcXVhbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGV4YWN0RXF1YWxzXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgdmVjdG9ycyBleGFjdGx5IGhhdmUgdGhlIHNhbWUgZWxlbWVudHMgaW4gdGhlIHNhbWUgcG9zaXRpb24gKHdoZW4gY29tcGFyZWQgd2l0aCA9PT0pXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBhIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmVjdG9ycyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gZXhhY3RFcXVhbHMoYSwgYikge1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/exactEquals.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/floor.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/floor.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = floor\n\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to floor\n * @returns {vec2} out\n */\nfunction floor(out, a) {\n out[0] = Math.floor(a[0])\n out[1] = Math.floor(a[1])\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9mbG9vci5qcz85ZGFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2Zsb29yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmbG9vclxuXG4vKipcbiAqIE1hdGguZmxvb3IgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gZmxvb3JcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gZmxvb3Iob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGguZmxvb3IoYVswXSlcbiAgb3V0WzFdID0gTWF0aC5mbG9vcihhWzFdKVxuICByZXR1cm4gb3V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/floor.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/forEach.js": /*!********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/forEach.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = forEach\n\nvar vec = __webpack_require__(/*! ./create */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/create.js\")()\n\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nfunction forEach(a, stride, offset, count, fn, arg) {\n var i, l\n if(!stride) {\n stride = 2\n }\n\n if(!offset) {\n offset = 0\n }\n \n if(count) {\n l = Math.min((count * stride) + offset, a.length)\n } else {\n l = a.length\n }\n\n for(i = offset; i < l; i += stride) {\n vec[0] = a[i]\n vec[1] = a[i+1]\n fn(vec, vec, arg)\n a[i] = vec[0]\n a[i+1] = vec[1]\n }\n \n return a\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9mb3JFYWNoLmpzPzQzZTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsVUFBVSxtQkFBTyxDQUFDLGlFQUFVOztBQUU1QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2ZvckVhY2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGZvckVhY2hcblxudmFyIHZlYyA9IHJlcXVpcmUoJy4vY3JlYXRlJykoKVxuXG4vKipcbiAqIFBlcmZvcm0gc29tZSBvcGVyYXRpb24gb3ZlciBhbiBhcnJheSBvZiB2ZWMycy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhIHRoZSBhcnJheSBvZiB2ZWN0b3JzIHRvIGl0ZXJhdGUgb3ZlclxuICogQHBhcmFtIHtOdW1iZXJ9IHN0cmlkZSBOdW1iZXIgb2YgZWxlbWVudHMgYmV0d2VlbiB0aGUgc3RhcnQgb2YgZWFjaCB2ZWMyLiBJZiAwIGFzc3VtZXMgdGlnaHRseSBwYWNrZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBvZmZzZXQgTnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNraXAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudCBOdW1iZXIgb2YgdmVjMnMgdG8gaXRlcmF0ZSBvdmVyLiBJZiAwIGl0ZXJhdGVzIG92ZXIgZW50aXJlIGFycmF5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBGdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIHZlY3RvciBpbiB0aGUgYXJyYXlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbYXJnXSBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHBhc3MgdG8gZm5cbiAqIEByZXR1cm5zIHtBcnJheX0gYVxuICogQGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goYSwgc3RyaWRlLCBvZmZzZXQsIGNvdW50LCBmbiwgYXJnKSB7XG4gICAgdmFyIGksIGxcbiAgICBpZighc3RyaWRlKSB7XG4gICAgICAgIHN0cmlkZSA9IDJcbiAgICB9XG5cbiAgICBpZighb2Zmc2V0KSB7XG4gICAgICAgIG9mZnNldCA9IDBcbiAgICB9XG4gICAgXG4gICAgaWYoY291bnQpIHtcbiAgICAgICAgbCA9IE1hdGgubWluKChjb3VudCAqIHN0cmlkZSkgKyBvZmZzZXQsIGEubGVuZ3RoKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGwgPSBhLmxlbmd0aFxuICAgIH1cblxuICAgIGZvcihpID0gb2Zmc2V0OyBpIDwgbDsgaSArPSBzdHJpZGUpIHtcbiAgICAgICAgdmVjWzBdID0gYVtpXVxuICAgICAgICB2ZWNbMV0gPSBhW2krMV1cbiAgICAgICAgZm4odmVjLCB2ZWMsIGFyZylcbiAgICAgICAgYVtpXSA9IHZlY1swXVxuICAgICAgICBhW2krMV0gPSB2ZWNbMV1cbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGFcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/forEach.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/fromValues.js": /*!***********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/fromValues.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = fromValues\n\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\nfunction fromValues(x, y) {\n var out = new Float32Array(2)\n out[0] = x\n out[1] = y\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9mcm9tVmFsdWVzLmpzP2UzODEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9mcm9tVmFsdWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmcm9tVmFsdWVzXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2ZWMyIGluaXRpYWxpemVkIHdpdGggdGhlIGdpdmVuIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFggY29tcG9uZW50XG4gKiBAcGFyYW0ge051bWJlcn0geSBZIGNvbXBvbmVudFxuICogQHJldHVybnMge3ZlYzJ9IGEgbmV3IDJEIHZlY3RvclxuICovXG5mdW5jdGlvbiBmcm9tVmFsdWVzKHgsIHkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgyKVxuICAgIG91dFswXSA9IHhcbiAgICBvdXRbMV0gPSB5XG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/fromValues.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/index.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/index.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = {\n EPSILON: __webpack_require__(/*! ./epsilon */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/epsilon.js\")\n , create: __webpack_require__(/*! ./create */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/create.js\")\n , clone: __webpack_require__(/*! ./clone */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/clone.js\")\n , fromValues: __webpack_require__(/*! ./fromValues */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/fromValues.js\")\n , copy: __webpack_require__(/*! ./copy */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/copy.js\")\n , set: __webpack_require__(/*! ./set */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/set.js\")\n , equals: __webpack_require__(/*! ./equals */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/equals.js\")\n , exactEquals: __webpack_require__(/*! ./exactEquals */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/exactEquals.js\")\n , add: __webpack_require__(/*! ./add */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/add.js\")\n , subtract: __webpack_require__(/*! ./subtract */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/subtract.js\")\n , sub: __webpack_require__(/*! ./sub */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/sub.js\")\n , multiply: __webpack_require__(/*! ./multiply */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/multiply.js\")\n , mul: __webpack_require__(/*! ./mul */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/mul.js\")\n , divide: __webpack_require__(/*! ./divide */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/divide.js\")\n , div: __webpack_require__(/*! ./div */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/div.js\")\n , inverse: __webpack_require__(/*! ./inverse */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/inverse.js\")\n , min: __webpack_require__(/*! ./min */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/min.js\")\n , max: __webpack_require__(/*! ./max */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/max.js\")\n , rotate: __webpack_require__(/*! ./rotate */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/rotate.js\")\n , floor: __webpack_require__(/*! ./floor */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/floor.js\")\n , ceil: __webpack_require__(/*! ./ceil */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/ceil.js\")\n , round: __webpack_require__(/*! ./round */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/round.js\")\n , scale: __webpack_require__(/*! ./scale */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/scale.js\")\n , scaleAndAdd: __webpack_require__(/*! ./scaleAndAdd */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/scaleAndAdd.js\")\n , distance: __webpack_require__(/*! ./distance */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/distance.js\")\n , dist: __webpack_require__(/*! ./dist */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/dist.js\")\n , squaredDistance: __webpack_require__(/*! ./squaredDistance */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredDistance.js\")\n , sqrDist: __webpack_require__(/*! ./sqrDist */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrDist.js\")\n , length: __webpack_require__(/*! ./length */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/length.js\")\n , len: __webpack_require__(/*! ./len */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/len.js\")\n , squaredLength: __webpack_require__(/*! ./squaredLength */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredLength.js\")\n , sqrLen: __webpack_require__(/*! ./sqrLen */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrLen.js\")\n , negate: __webpack_require__(/*! ./negate */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/negate.js\")\n , normalize: __webpack_require__(/*! ./normalize */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/normalize.js\")\n , dot: __webpack_require__(/*! ./dot */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/dot.js\")\n , cross: __webpack_require__(/*! ./cross */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/cross.js\")\n , lerp: __webpack_require__(/*! ./lerp */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/lerp.js\")\n , random: __webpack_require__(/*! ./random */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/random.js\")\n , transformMat2: __webpack_require__(/*! ./transformMat2 */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2.js\")\n , transformMat2d: __webpack_require__(/*! ./transformMat2d */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2d.js\")\n , transformMat3: __webpack_require__(/*! ./transformMat3 */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat3.js\")\n , transformMat4: __webpack_require__(/*! ./transformMat4 */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat4.js\")\n , forEach: __webpack_require__(/*! ./forEach */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/forEach.js\")\n , limit: __webpack_require__(/*! ./limit */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/limit.js\")\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9pbmRleC5qcz80NTVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsV0FBVyxtQkFBTyxDQUFDLG1FQUFXO0FBQzlCLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTtBQUM5QixXQUFXLG1CQUFPLENBQUMsK0RBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsVUFBVSxtQkFBTyxDQUFDLDZEQUFRO0FBQzFCLFNBQVMsbUJBQU8sQ0FBQywyREFBTztBQUN4QixZQUFZLG1CQUFPLENBQUMsaUVBQVU7QUFDOUIsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsU0FBUyxtQkFBTyxDQUFDLDJEQUFPO0FBQ3hCLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxTQUFTLG1CQUFPLENBQUMsMkRBQU87QUFDeEIsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLFNBQVMsbUJBQU8sQ0FBQywyREFBTztBQUN4QixZQUFZLG1CQUFPLENBQUMsaUVBQVU7QUFDOUIsU0FBUyxtQkFBTyxDQUFDLDJEQUFPO0FBQ3hCLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxTQUFTLG1CQUFPLENBQUMsMkRBQU87QUFDeEIsU0FBUyxtQkFBTyxDQUFDLDJEQUFPO0FBQ3hCLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTtBQUM5QixXQUFXLG1CQUFPLENBQUMsK0RBQVM7QUFDNUIsVUFBVSxtQkFBTyxDQUFDLDZEQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQywrREFBUztBQUM1QixXQUFXLG1CQUFPLENBQUMsK0RBQVM7QUFDNUIsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLFVBQVUsbUJBQU8sQ0FBQyw2REFBUTtBQUMxQixxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBbUI7QUFDaEQsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTtBQUM5QixTQUFTLG1CQUFPLENBQUMsMkRBQU87QUFDeEIsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTtBQUM5QixZQUFZLG1CQUFPLENBQUMsaUVBQVU7QUFDOUIsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLFNBQVMsbUJBQU8sQ0FBQywyREFBTztBQUN4QixXQUFXLG1CQUFPLENBQUMsK0RBQVM7QUFDNUIsVUFBVSxtQkFBTyxDQUFDLDZEQUFRO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTtBQUM5QixtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCO0FBQzlDLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQywrREFBUztBQUM1QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVQU0lMT046IHJlcXVpcmUoJy4vZXBzaWxvbicpXG4gICwgY3JlYXRlOiByZXF1aXJlKCcuL2NyZWF0ZScpXG4gICwgY2xvbmU6IHJlcXVpcmUoJy4vY2xvbmUnKVxuICAsIGZyb21WYWx1ZXM6IHJlcXVpcmUoJy4vZnJvbVZhbHVlcycpXG4gICwgY29weTogcmVxdWlyZSgnLi9jb3B5JylcbiAgLCBzZXQ6IHJlcXVpcmUoJy4vc2V0JylcbiAgLCBlcXVhbHM6IHJlcXVpcmUoJy4vZXF1YWxzJylcbiAgLCBleGFjdEVxdWFsczogcmVxdWlyZSgnLi9leGFjdEVxdWFscycpXG4gICwgYWRkOiByZXF1aXJlKCcuL2FkZCcpXG4gICwgc3VidHJhY3Q6IHJlcXVpcmUoJy4vc3VidHJhY3QnKVxuICAsIHN1YjogcmVxdWlyZSgnLi9zdWInKVxuICAsIG11bHRpcGx5OiByZXF1aXJlKCcuL211bHRpcGx5JylcbiAgLCBtdWw6IHJlcXVpcmUoJy4vbXVsJylcbiAgLCBkaXZpZGU6IHJlcXVpcmUoJy4vZGl2aWRlJylcbiAgLCBkaXY6IHJlcXVpcmUoJy4vZGl2JylcbiAgLCBpbnZlcnNlOiByZXF1aXJlKCcuL2ludmVyc2UnKVxuICAsIG1pbjogcmVxdWlyZSgnLi9taW4nKVxuICAsIG1heDogcmVxdWlyZSgnLi9tYXgnKVxuICAsIHJvdGF0ZTogcmVxdWlyZSgnLi9yb3RhdGUnKVxuICAsIGZsb29yOiByZXF1aXJlKCcuL2Zsb29yJylcbiAgLCBjZWlsOiByZXF1aXJlKCcuL2NlaWwnKVxuICAsIHJvdW5kOiByZXF1aXJlKCcuL3JvdW5kJylcbiAgLCBzY2FsZTogcmVxdWlyZSgnLi9zY2FsZScpXG4gICwgc2NhbGVBbmRBZGQ6IHJlcXVpcmUoJy4vc2NhbGVBbmRBZGQnKVxuICAsIGRpc3RhbmNlOiByZXF1aXJlKCcuL2Rpc3RhbmNlJylcbiAgLCBkaXN0OiByZXF1aXJlKCcuL2Rpc3QnKVxuICAsIHNxdWFyZWREaXN0YW5jZTogcmVxdWlyZSgnLi9zcXVhcmVkRGlzdGFuY2UnKVxuICAsIHNxckRpc3Q6IHJlcXVpcmUoJy4vc3FyRGlzdCcpXG4gICwgbGVuZ3RoOiByZXF1aXJlKCcuL2xlbmd0aCcpXG4gICwgbGVuOiByZXF1aXJlKCcuL2xlbicpXG4gICwgc3F1YXJlZExlbmd0aDogcmVxdWlyZSgnLi9zcXVhcmVkTGVuZ3RoJylcbiAgLCBzcXJMZW46IHJlcXVpcmUoJy4vc3FyTGVuJylcbiAgLCBuZWdhdGU6IHJlcXVpcmUoJy4vbmVnYXRlJylcbiAgLCBub3JtYWxpemU6IHJlcXVpcmUoJy4vbm9ybWFsaXplJylcbiAgLCBkb3Q6IHJlcXVpcmUoJy4vZG90JylcbiAgLCBjcm9zczogcmVxdWlyZSgnLi9jcm9zcycpXG4gICwgbGVycDogcmVxdWlyZSgnLi9sZXJwJylcbiAgLCByYW5kb206IHJlcXVpcmUoJy4vcmFuZG9tJylcbiAgLCB0cmFuc2Zvcm1NYXQyOiByZXF1aXJlKCcuL3RyYW5zZm9ybU1hdDInKVxuICAsIHRyYW5zZm9ybU1hdDJkOiByZXF1aXJlKCcuL3RyYW5zZm9ybU1hdDJkJylcbiAgLCB0cmFuc2Zvcm1NYXQzOiByZXF1aXJlKCcuL3RyYW5zZm9ybU1hdDMnKVxuICAsIHRyYW5zZm9ybU1hdDQ6IHJlcXVpcmUoJy4vdHJhbnNmb3JtTWF0NCcpXG4gICwgZm9yRWFjaDogcmVxdWlyZSgnLi9mb3JFYWNoJylcbiAgLCBsaW1pdDogcmVxdWlyZSgnLi9saW1pdCcpXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/index.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/inverse.js": /*!********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/inverse.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = inverse\n\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to invert\n * @returns {vec2} out\n */\nfunction inverse(out, a) {\n out[0] = 1.0 / a[0]\n out[1] = 1.0 / a[1]\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9pbnZlcnNlLmpzPzdhOGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvaW52ZXJzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gaW52ZXJzZVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGludmVyc2Ugb2YgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gaW52ZXJ0XG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIGludmVyc2Uob3V0LCBhKSB7XG4gIG91dFswXSA9IDEuMCAvIGFbMF1cbiAgb3V0WzFdID0gMS4wIC8gYVsxXVxuICByZXR1cm4gb3V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/inverse.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/len.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/len.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./length */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/length.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9sZW4uanM/ZTQwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxpRUFBVSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2xlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9sZW5ndGgnKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/len.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/length.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/length.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = length\n\n/**\n * Calculates the length of a vec2\n *\n * @param {vec2} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n var x = a[0],\n y = a[1]\n return Math.sqrt(x*x + y*y)\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9sZW5ndGguanM/YTI4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL2xlbmd0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbGVuZ3RoXG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgbGVuZ3RoIG9mIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gY2FsY3VsYXRlIGxlbmd0aCBvZlxuICogQHJldHVybnMge051bWJlcn0gbGVuZ3RoIG9mIGFcbiAqL1xuZnVuY3Rpb24gbGVuZ3RoKGEpIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgcmV0dXJuIE1hdGguc3FydCh4KnggKyB5KnkpXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/length.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/lerp.js": /*!*****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/lerp.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = lerp\n\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} t interpolation amount between the two inputs\n * @returns {vec2} out\n */\nfunction lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1]\n out[0] = ax + t * (b[0] - ax)\n out[1] = ay + t * (b[1] - ay)\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9sZXJwLmpzPzA4ZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvbGVycC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbGVycFxuXG4vKipcbiAqIFBlcmZvcm1zIGEgbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiB0d28gdmVjMidzXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHQgaW50ZXJwb2xhdGlvbiBhbW91bnQgYmV0d2VlbiB0aGUgdHdvIGlucHV0c1xuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiBsZXJwKG91dCwgYSwgYiwgdCkge1xuICAgIHZhciBheCA9IGFbMF0sXG4gICAgICAgIGF5ID0gYVsxXVxuICAgIG91dFswXSA9IGF4ICsgdCAqIChiWzBdIC0gYXgpXG4gICAgb3V0WzFdID0gYXkgKyB0ICogKGJbMV0gLSBheSlcbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/lerp.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/limit.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/limit.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = limit;\n\n/**\n * Limit the magnitude of this vector to the value used for the `max`\n * parameter.\n *\n * @param {vec2} the vector to limit\n * @param {Number} max the maximum magnitude for the vector\n * @returns {vec2} out\n */\nfunction limit(out, a, max) {\n var mSq = a[0] * a[0] + a[1] * a[1];\n\n if (mSq > max * max) {\n var n = Math.sqrt(mSq);\n out[0] = a[0] / n * max;\n out[1] = a[1] / n * max;\n } else {\n out[0] = a[0];\n out[1] = a[1];\n }\n\n return out;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9saW1pdC5qcz9kZjM0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLFlBQVksT0FBTztBQUNuQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvbGltaXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IGxpbWl0O1xuXG4vKipcbiAqIExpbWl0IHRoZSBtYWduaXR1ZGUgb2YgdGhpcyB2ZWN0b3IgdG8gdGhlIHZhbHVlIHVzZWQgZm9yIHRoZSBgbWF4YFxuICogcGFyYW1ldGVyLlxuICpcbiAqIEBwYXJhbSAge3ZlYzJ9IHRoZSB2ZWN0b3IgdG8gbGltaXRcbiAqIEBwYXJhbSAge051bWJlcn0gbWF4IHRoZSBtYXhpbXVtIG1hZ25pdHVkZSBmb3IgdGhlIHZlY3RvclxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiBsaW1pdChvdXQsIGEsIG1heCkge1xuICB2YXIgbVNxID0gYVswXSAqIGFbMF0gKyBhWzFdICogYVsxXTtcblxuICBpZiAobVNxID4gbWF4ICogbWF4KSB7XG4gICAgdmFyIG4gPSBNYXRoLnNxcnQobVNxKTtcbiAgICBvdXRbMF0gPSBhWzBdIC8gbiAqIG1heDtcbiAgICBvdXRbMV0gPSBhWzFdIC8gbiAqIG1heDtcbiAgfSBlbHNlIHtcbiAgICBvdXRbMF0gPSBhWzBdO1xuICAgIG91dFsxXSA9IGFbMV07XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/limit.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/max.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/max.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = max\n\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction max(out, a, b) {\n out[0] = Math.max(a[0], b[0])\n out[1] = Math.max(a[1], b[1])\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9tYXguanM/MTE5NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvbWF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBtYXhcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG1heChvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBNYXRoLm1heChhWzBdLCBiWzBdKVxuICAgIG91dFsxXSA9IE1hdGgubWF4KGFbMV0sIGJbMV0pXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/max.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/min.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/min.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = min\n\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction min(out, a, b) {\n out[0] = Math.min(a[0], b[0])\n out[1] = Math.min(a[1], b[1])\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9taW4uanM/NWY4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvbWluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBtaW5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG1pbihvdXQsIGEsIGIpIHtcbiAgICBvdXRbMF0gPSBNYXRoLm1pbihhWzBdLCBiWzBdKVxuICAgIG91dFsxXSA9IE1hdGgubWluKGFbMV0sIGJbMV0pXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/min.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/mul.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/mul.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./multiply */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/multiply.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9tdWwuanM/YTU0YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxxRUFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL211bC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tdWx0aXBseScpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/mul.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/multiply.js": /*!*********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/multiply.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = multiply\n\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction multiply(out, a, b) {\n out[0] = a[0] * b[0]\n out[1] = a[1] * b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9tdWx0aXBseS5qcz8zZGQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9tdWx0aXBseS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbXVsdGlwbHlcblxuLyoqXG4gKiBNdWx0aXBsaWVzIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSBmaXJzdCBvcGVyYW5kXG4gKiBAcGFyYW0ge3ZlYzJ9IGIgdGhlIHNlY29uZCBvcGVyYW5kXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG11bHRpcGx5KG91dCwgYSwgYikge1xuICAgIG91dFswXSA9IGFbMF0gKiBiWzBdXG4gICAgb3V0WzFdID0gYVsxXSAqIGJbMV1cbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/multiply.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/negate.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/negate.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = negate\n\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to negate\n * @returns {vec2} out\n */\nfunction negate(out, a) {\n out[0] = -a[0]\n out[1] = -a[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9uZWdhdGUuanM/MzA2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9uZWdhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IG5lZ2F0ZVxuXG4vKipcbiAqIE5lZ2F0ZXMgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gbmVnYXRlXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIG5lZ2F0ZShvdXQsIGEpIHtcbiAgICBvdXRbMF0gPSAtYVswXVxuICAgIG91dFsxXSA9IC1hWzFdXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/negate.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/normalize.js": /*!**********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/normalize.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = normalize\n\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to normalize\n * @returns {vec2} out\n */\nfunction normalize(out, a) {\n var x = a[0],\n y = a[1]\n var len = x*x + y*y\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len)\n out[0] = a[0] * len\n out[1] = a[1] * len\n }\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9ub3JtYWxpemUuanM/ZjNlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL25vcm1hbGl6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gbm9ybWFsaXplXG5cbi8qKlxuICogTm9ybWFsaXplIGEgdmVjMlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdmVjdG9yIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiBub3JtYWxpemUob3V0LCBhKSB7XG4gICAgdmFyIHggPSBhWzBdLFxuICAgICAgICB5ID0gYVsxXVxuICAgIHZhciBsZW4gPSB4KnggKyB5KnlcbiAgICBpZiAobGVuID4gMCkge1xuICAgICAgICAvL1RPRE86IGV2YWx1YXRlIHVzZSBvZiBnbG1faW52c3FydCBoZXJlP1xuICAgICAgICBsZW4gPSAxIC8gTWF0aC5zcXJ0KGxlbilcbiAgICAgICAgb3V0WzBdID0gYVswXSAqIGxlblxuICAgICAgICBvdXRbMV0gPSBhWzFdICogbGVuXG4gICAgfVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/normalize.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/random.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/random.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = random\n\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\nfunction random(out, scale) {\n scale = scale || 1.0\n var r = Math.random() * 2.0 * Math.PI\n out[0] = Math.cos(r) * scale\n out[1] = Math.sin(r) * scale\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9yYW5kb20uanM/Y2E1YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvcmFuZG9tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByYW5kb21cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByYW5kb20gdmVjdG9yIHdpdGggdGhlIGdpdmVuIHNjYWxlXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2NhbGVdIExlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHZlY3Rvci4gSWYgb21taXR0ZWQsIGEgdW5pdCB2ZWN0b3Igd2lsbCBiZSByZXR1cm5lZFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiByYW5kb20ob3V0LCBzY2FsZSkge1xuICAgIHNjYWxlID0gc2NhbGUgfHwgMS4wXG4gICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMi4wICogTWF0aC5QSVxuICAgIG91dFswXSA9IE1hdGguY29zKHIpICogc2NhbGVcbiAgICBvdXRbMV0gPSBNYXRoLnNpbihyKSAqIHNjYWxlXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/random.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/rotate.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/rotate.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = rotate\n\n/**\n * Rotates a vec2 by an angle\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to rotate\n * @param {Number} angle the angle of rotation (in radians)\n * @returns {vec2} out\n */\nfunction rotate(out, a, angle) {\n var c = Math.cos(angle),\n s = Math.sin(angle)\n var x = a[0],\n y = a[1]\n\n out[0] = x * c - y * s\n out[1] = x * s + y * c\n\n return out\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9yb3RhdGUuanM/ODk0YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL3JvdGF0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcm90YXRlXG5cbi8qKlxuICogUm90YXRlcyBhIHZlYzIgYnkgYW4gYW5nbGVcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gcm90YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gYW5nbGUgdGhlIGFuZ2xlIG9mIHJvdGF0aW9uIChpbiByYWRpYW5zKVxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiByb3RhdGUob3V0LCBhLCBhbmdsZSkge1xuICB2YXIgYyA9IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgIHMgPSBNYXRoLnNpbihhbmdsZSlcbiAgdmFyIHggPSBhWzBdLFxuICAgICAgeSA9IGFbMV1cblxuICBvdXRbMF0gPSB4ICogYyAtIHkgKiBzXG4gIG91dFsxXSA9IHggKiBzICsgeSAqIGNcblxuICByZXR1cm4gb3V0XG59XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/rotate.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/round.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/round.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = round\n\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to round\n * @returns {vec2} out\n */\nfunction round(out, a) {\n out[0] = Math.round(a[0])\n out[1] = Math.round(a[1])\n return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9yb3VuZC5qcz8yNDlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL3JvdW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByb3VuZFxuXG4vKipcbiAqIE1hdGgucm91bmQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gcm91bmRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gcm91bmQob3V0LCBhKSB7XG4gIG91dFswXSA9IE1hdGgucm91bmQoYVswXSlcbiAgb3V0WzFdID0gTWF0aC5yb3VuZChhWzFdKVxuICByZXR1cm4gb3V0XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/round.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/scale.js": /*!******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/scale.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = scale\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zY2FsZS5qcz80YjAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zY2FsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gc2NhbGVcblxuLyoqXG4gKiBTY2FsZXMgYSB2ZWMyIGJ5IGEgc2NhbGFyIG51bWJlclxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byBzY2FsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGIgYW1vdW50IHRvIHNjYWxlIHRoZSB2ZWN0b3IgYnlcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gc2NhbGUob3V0LCBhLCBiKSB7XG4gICAgb3V0WzBdID0gYVswXSAqIGJcbiAgICBvdXRbMV0gPSBhWzFdICogYlxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/scale.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/scaleAndAdd.js": /*!************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/scaleAndAdd.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = scaleAndAdd\n\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\nfunction scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + (b[0] * scale)\n out[1] = a[1] + (b[1] * scale)\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zY2FsZUFuZEFkZC5qcz82OGM0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvc2NhbGVBbmRBZGQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHNjYWxlQW5kQWRkXG5cbi8qKlxuICogQWRkcyB0d28gdmVjMidzIGFmdGVyIHNjYWxpbmcgdGhlIHNlY29uZCBvcGVyYW5kIGJ5IGEgc2NhbGFyIHZhbHVlXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHBhcmFtIHtOdW1iZXJ9IHNjYWxlIHRoZSBhbW91bnQgdG8gc2NhbGUgYiBieSBiZWZvcmUgYWRkaW5nXG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIHNjYWxlQW5kQWRkKG91dCwgYSwgYiwgc2NhbGUpIHtcbiAgICBvdXRbMF0gPSBhWzBdICsgKGJbMF0gKiBzY2FsZSlcbiAgICBvdXRbMV0gPSBhWzFdICsgKGJbMV0gKiBzY2FsZSlcbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/scaleAndAdd.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/set.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/set.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = set\n\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\nfunction set(out, x, y) {\n out[0] = x\n out[1] = y\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zZXQuanM/ZDI2YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvc2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBzZXRcblxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudHMgb2YgYSB2ZWMyIHRvIHRoZSBnaXZlbiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHtOdW1iZXJ9IHggWCBjb21wb25lbnRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFkgY29tcG9uZW50XG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIHNldChvdXQsIHgsIHkpIHtcbiAgICBvdXRbMF0gPSB4XG4gICAgb3V0WzFdID0geVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/set.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrDist.js": /*!********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrDist.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./squaredDistance */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredDistance.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXJEaXN0LmpzPzY2NDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsbUZBQW1CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvc3FyRGlzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9zcXVhcmVkRGlzdGFuY2UnKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrDist.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrLen.js": /*!*******************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrLen.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./squaredLength */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredLength.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXJMZW4uanM/Y2M0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywrRUFBaUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXJMZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vc3F1YXJlZExlbmd0aCcpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/sqrLen.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredDistance.js": /*!****************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredDistance.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = squaredDistance\n\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\nfunction squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1]\n return x*x + y*y\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXVhcmVkRGlzdGFuY2UuanM/ZTRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXVhcmVkRGlzdGFuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHNxdWFyZWREaXN0YW5jZVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHNxdWFyZWQgZXVjbGlkaWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gc3F1YXJlZCBkaXN0YW5jZSBiZXR3ZWVuIGEgYW5kIGJcbiAqL1xuZnVuY3Rpb24gc3F1YXJlZERpc3RhbmNlKGEsIGIpIHtcbiAgICB2YXIgeCA9IGJbMF0gLSBhWzBdLFxuICAgICAgICB5ID0gYlsxXSAtIGFbMV1cbiAgICByZXR1cm4geCp4ICsgeSp5XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredDistance.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredLength.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredLength.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = squaredLength\n\n/**\n * Calculates the squared length of a vec2\n *\n * @param {vec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength(a) {\n var x = a[0],\n y = a[1]\n return x*x + y*y\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXVhcmVkTGVuZ3RoLmpzPzc5YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zcXVhcmVkTGVuZ3RoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBzcXVhcmVkTGVuZ3RoXG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgc3F1YXJlZCBsZW5ndGggb2YgYSB2ZWMyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBhIHZlY3RvciB0byBjYWxjdWxhdGUgc3F1YXJlZCBsZW5ndGggb2ZcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHNxdWFyZWQgbGVuZ3RoIG9mIGFcbiAqL1xuZnVuY3Rpb24gc3F1YXJlZExlbmd0aChhKSB7XG4gICAgdmFyIHggPSBhWzBdLFxuICAgICAgICB5ID0gYVsxXVxuICAgIHJldHVybiB4KnggKyB5Knlcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/squaredLength.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/sub.js": /*!****************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/sub.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./subtract */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/subtract.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zdWIuanM/ZmQ3OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQyxxRUFBWSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL3N1Yi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9zdWJ0cmFjdCcpXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/sub.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/subtract.js": /*!*********************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/subtract.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = subtract\n\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction subtract(out, a, b) {\n out[0] = a[0] - b[0]\n out[1] = a[1] - b[1]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zdWJ0cmFjdC5qcz8xMjk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi9zdWJ0cmFjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gc3VidHJhY3RcblxuLyoqXG4gKiBTdWJ0cmFjdHMgdmVjdG9yIGIgZnJvbSB2ZWN0b3IgYVxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gc3VidHJhY3Qob3V0LCBhLCBiKSB7XG4gICAgb3V0WzBdID0gYVswXSAtIGJbMF1cbiAgICBvdXRbMV0gPSBhWzFdIC0gYlsxXVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/subtract.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat2\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y\n out[1] = m[1] * x + m[3] * y\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi90cmFuc2Zvcm1NYXQyLmpzPzdjOGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi90cmFuc2Zvcm1NYXQyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm1NYXQyXG5cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRoIGEgbWF0MlxuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7bWF0Mn0gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtTWF0MihvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzJdICogeVxuICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVszXSAqIHlcbiAgICByZXR1cm4gb3V0XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2d.js": /*!***************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2d.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat2d\n\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2d} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y + m[4]\n out[1] = m[1] * x + m[3] * y + m[5]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi90cmFuc2Zvcm1NYXQyZC5qcz81YjMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvdHJhbnNmb3JtTWF0MmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybU1hdDJkXG5cbi8qKlxuICogVHJhbnNmb3JtcyB0aGUgdmVjMiB3aXRoIGEgbWF0MmRcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gdHJhbnNmb3JtXG4gKiBAcGFyYW0ge21hdDJkfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm1NYXQyZChvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzJdICogeSArIG1bNF1cbiAgICBvdXRbMV0gPSBtWzFdICogeCArIG1bM10gKiB5ICsgbVs1XVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat2d.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat3.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat3.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat3\n\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat3} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat3(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[3] * y + m[6]\n out[1] = m[1] * x + m[4] * y + m[7]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi90cmFuc2Zvcm1NYXQzLmpzP2MwYzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLFdBQVcsS0FBSztBQUNoQixhQUFhLEtBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ2wtdmVjMkAxLjMuMEBnbC12ZWMyL3RyYW5zZm9ybU1hdDMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybU1hdDNcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQzXG4gKiAzcmQgdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7bWF0M30gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtTWF0MyhvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sXG4gICAgICAgIHkgPSBhWzFdXG4gICAgb3V0WzBdID0gbVswXSAqIHggKyBtWzNdICogeSArIG1bNl1cbiAgICBvdXRbMV0gPSBtWzFdICogeCArIG1bNF0gKiB5ICsgbVs3XVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat3.js\n"); /***/ }), /***/ "./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat4.js": /*!**************************************************************!*\ !*** ./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat4.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = transformMat4\n\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat4(out, a, m) {\n var x = a[0], \n y = a[1]\n out[0] = m[0] * x + m[4] * y + m[12]\n out[1] = m[1] * x + m[5] * y + m[13]\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dsLXZlYzJAMS4zLjBAZ2wtdmVjMi90cmFuc2Zvcm1NYXQ0LmpzPzQ2M2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsS0FBSztBQUNoQixXQUFXLEtBQUs7QUFDaEIsV0FBVyxLQUFLO0FBQ2hCLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19nbC12ZWMyQDEuMy4wQGdsLXZlYzIvdHJhbnNmb3JtTWF0NC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtTWF0NFxuXG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIHZlYzIgd2l0aCBhIG1hdDRcbiAqIDNyZCB2ZWN0b3IgY29tcG9uZW50IGlzIGltcGxpY2l0bHkgJzAnXG4gKiA0dGggdmVjdG9yIGNvbXBvbmVudCBpcyBpbXBsaWNpdGx5ICcxJ1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gb3V0IHRoZSByZWNlaXZpbmcgdmVjdG9yXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIHZlY3RvciB0byB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7bWF0NH0gbSBtYXRyaXggdG8gdHJhbnNmb3JtIHdpdGhcbiAqIEByZXR1cm5zIHt2ZWMyfSBvdXRcbiAqL1xuZnVuY3Rpb24gdHJhbnNmb3JtTWF0NChvdXQsIGEsIG0pIHtcbiAgICB2YXIgeCA9IGFbMF0sIFxuICAgICAgICB5ID0gYVsxXVxuICAgIG91dFswXSA9IG1bMF0gKiB4ICsgbVs0XSAqIHkgKyBtWzEyXVxuICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs1XSAqIHkgKyBtWzEzXVxuICAgIHJldHVybiBvdXRcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_gl-vec2@1.3.0@gl-vec2/transformMat4.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/index.js": /*!********************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/index.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = __webpack_require__(/*! ./lib */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/index.js\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: __webpack_require__(/*! ./lib/json */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/json.js\"),\n alg: __webpack_require__(/*! ./lib/alg */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/index.js\"),\n version: lib.version\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2luZGV4LmpzPzk0ZTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwrQkFBK0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxtQkFBTyxDQUFDLG1FQUFPOztBQUV6QjtBQUNBO0FBQ0EsUUFBUSxtQkFBTyxDQUFDLHVFQUFZO0FBQzVCLE9BQU8sbUJBQU8sQ0FBQywyRUFBVztBQUMxQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LCBDaHJpcyBQZXR0aXR0XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG4gKlxuICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzXG4gKiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9yc1xuICogbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkRcbiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1JcbiAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGxpYiA9IHJlcXVpcmUoXCIuL2xpYlwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiBsaWIuR3JhcGgsXG4gIGpzb246IHJlcXVpcmUoXCIuL2xpYi9qc29uXCIpLFxuICBhbGc6IHJlcXVpcmUoXCIuL2xpYi9hbGdcIiksXG4gIHZlcnNpb246IGxpYi52ZXJzaW9uXG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/index.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/components.js": /*!*********************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/components.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvY29tcG9uZW50cy5qcz8wMWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyx3RUFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcG9uZW50cztcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBjbXB0cyA9IFtdO1xuICB2YXIgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBjbXB0ID0gW107XG4gICAgZGZzKHYpO1xuICAgIGlmIChjbXB0Lmxlbmd0aCkge1xuICAgICAgY21wdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbXB0cztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/components.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dfs.js": /*!**************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dfs.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZGZzLmpzPzEzZDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLHdFQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixhQUFhO0FBQ2xDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0JBQW9CLGFBQWE7QUFDakM7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ3JhcGhsaWJAMi4xLjhAZ3JhcGhsaWIvbGliL2FsZy9kZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGZzO1xuXG4vKlxuICogQSBoZWxwZXIgdGhhdCBwcmVmb3JtcyBhIHByZS0gb3IgcG9zdC1vcmRlciB0cmF2ZXJzYWwgb24gdGhlIGlucHV0IGdyYXBoXG4gKiBhbmQgcmV0dXJucyB0aGUgbm9kZXMgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSB2aXNpdGVkLiBJZiB0aGUgZ3JhcGggaXNcbiAqIHVuZGlyZWN0ZWQgdGhlbiB0aGlzIGFsZ29yaXRobSB3aWxsIG5hdmlnYXRlIHVzaW5nIG5laWdoYm9ycy4gSWYgdGhlIGdyYXBoXG4gKiBpcyBkaXJlY3RlZCB0aGVuIHRoaXMgYWxnb3JpdGhtIHdpbGwgbmF2aWdhdGUgdXNpbmcgc3VjY2Vzc29ycy5cbiAqXG4gKiBPcmRlciBtdXN0IGJlIG9uZSBvZiBcInByZVwiIG9yIFwicG9zdFwiLlxuICovXG5mdW5jdGlvbiBkZnMoZywgdnMsIG9yZGVyKSB7XG4gIGlmICghXy5pc0FycmF5KHZzKSkge1xuICAgIHZzID0gW3ZzXTtcbiAgfVxuXG4gIHZhciBuYXZpZ2F0aW9uID0gKGcuaXNEaXJlY3RlZCgpID8gZy5zdWNjZXNzb3JzIDogZy5uZWlnaGJvcnMpLmJpbmQoZyk7XG5cbiAgdmFyIGFjYyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICBfLmVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoIWcuaGFzTm9kZSh2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR3JhcGggZG9lcyBub3QgaGF2ZSBub2RlOiBcIiArIHYpO1xuICAgIH1cblxuICAgIGRvRGZzKGcsIHYsIG9yZGVyID09PSBcInBvc3RcIiwgdmlzaXRlZCwgbmF2aWdhdGlvbiwgYWNjKTtcbiAgfSk7XG4gIHJldHVybiBhY2M7XG59XG5cbmZ1bmN0aW9uIGRvRGZzKGcsIHYsIHBvc3RvcmRlciwgdmlzaXRlZCwgbmF2aWdhdGlvbiwgYWNjKSB7XG4gIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICB2aXNpdGVkW3ZdID0gdHJ1ZTtcblxuICAgIGlmICghcG9zdG9yZGVyKSB7IGFjYy5wdXNoKHYpOyB9XG4gICAgXy5lYWNoKG5hdmlnYXRpb24odiksIGZ1bmN0aW9uKHcpIHtcbiAgICAgIGRvRGZzKGcsIHcsIHBvc3RvcmRlciwgdmlzaXRlZCwgbmF2aWdhdGlvbiwgYWNjKTtcbiAgICB9KTtcbiAgICBpZiAocG9zdG9yZGVyKSB7IGFjYy5wdXNoKHYpOyB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dfs.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra-all.js": /*!***********************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra-all.js ***! \***********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var dijkstra = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra.js\");\nvar _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZGlqa3N0cmEtYWxsLmpzPzdiOWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLCtFQUFZO0FBQ25DLFFBQVEsbUJBQU8sQ0FBQyx3RUFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRyxJQUFJO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZGlqa3N0cmEtYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra-all.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra.js": /*!*******************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\nvar PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/data/priority-queue.js\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZGlqa3N0cmEuanM/MGUxNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsd0VBQVc7QUFDM0Isb0JBQW9CLG1CQUFPLENBQUMsa0dBQXdCOztBQUVwRDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsc0JBQXNCLEVBQUU7QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ3JhcGhsaWJAMi4xLjhAZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBQcmlvcml0eVF1ZXVlID0gcmVxdWlyZShcIi4uL2RhdGEvcHJpb3JpdHktcXVldWVcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmE7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5EaWprc3RyYShnLCBTdHJpbmcoc291cmNlKSxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRGlqa3N0cmEoZywgc291cmNlLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2LCB2RW50cnk7XG5cbiAgdmFyIHVwZGF0ZU5laWdoYm9ycyA9IGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgdyA9IGVkZ2UudiAhPT0gdiA/IGVkZ2UudiA6IGVkZ2UudztcbiAgICB2YXIgd0VudHJ5ID0gcmVzdWx0c1t3XTtcbiAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgdmFyIGRpc3RhbmNlID0gdkVudHJ5LmRpc3RhbmNlICsgd2VpZ2h0O1xuXG4gICAgaWYgKHdlaWdodCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIFwiQmFkIGVkZ2U6IFwiICsgZWRnZSArIFwiIFdlaWdodDogXCIgKyB3ZWlnaHQpO1xuICAgIH1cblxuICAgIGlmIChkaXN0YW5jZSA8IHdFbnRyeS5kaXN0YW5jZSkge1xuICAgICAgd0VudHJ5LmRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICB3RW50cnkucHJlZGVjZXNzb3IgPSB2O1xuICAgICAgcHEuZGVjcmVhc2UodywgZGlzdGFuY2UpO1xuICAgIH1cbiAgfTtcblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgdmFyIGRpc3RhbmNlID0gdiA9PT0gc291cmNlID8gMCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICByZXN1bHRzW3ZdID0geyBkaXN0YW5jZTogZGlzdGFuY2UgfTtcbiAgICBwcS5hZGQodiwgZGlzdGFuY2UpO1xuICB9KTtcblxuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICB2RW50cnkgPSByZXN1bHRzW3ZdO1xuICAgIGlmICh2RW50cnkuZGlzdGFuY2UgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWRnZUZuKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/find-cycles.js": /*!**********************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/find-cycles.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\nvar tarjan = __webpack_require__(/*! ./tarjan */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/tarjan.js\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZmluZC1jeWNsZXMuanM/MjNiOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsd0VBQVc7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLDJFQUFVOztBQUUvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZmluZC1jeWNsZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdGFyamFuID0gcmVxdWlyZShcIi4vdGFyamFuXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRDeWNsZXM7XG5cbmZ1bmN0aW9uIGZpbmRDeWNsZXMoZykge1xuICByZXR1cm4gXy5maWx0ZXIodGFyamFuKGcpLCBmdW5jdGlvbihjbXB0KSB7XG4gICAgcmV0dXJuIGNtcHQubGVuZ3RoID4gMSB8fCAoY21wdC5sZW5ndGggPT09IDEgJiYgZy5oYXNFZGdlKGNtcHRbMF0sIGNtcHRbMF0pKTtcbiAgfSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/find-cycles.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/floyd-warshall.js": /*!*************************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/floyd-warshall.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanM/NWVlYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxRQUFRLG1CQUFPLENBQUMsd0VBQVc7O0FBRTNCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixzQkFBc0IsRUFBRTtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvYWxnL2Zsb3lkLXdhcnNoYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3lkV2Fyc2hhbGw7XG5cbnZhciBERUZBVUxUX1dFSUdIVF9GVU5DID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHJldHVybiBydW5GbG95ZFdhcnNoYWxsKGcsXG4gICAgd2VpZ2h0Rm4gfHwgREVGQVVMVF9XRUlHSFRfRlVOQyxcbiAgICBlZGdlRm4gfHwgZnVuY3Rpb24odikgeyByZXR1cm4gZy5vdXRFZGdlcyh2KTsgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkZsb3lkV2Fyc2hhbGwoZywgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICB2YXIgcmVzdWx0cyA9IHt9O1xuICB2YXIgbm9kZXMgPSBnLm5vZGVzKCk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgcmVzdWx0c1t2XSA9IHt9O1xuICAgIHJlc3VsdHNbdl1bdl0gPSB7IGRpc3RhbmNlOiAwIH07XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAodiAhPT0gdykge1xuICAgICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWRnZUZuKHYpLmZvckVhY2goZnVuY3Rpb24oZWRnZSkge1xuICAgICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgICB2YXIgZCA9IHdlaWdodEZuKGVkZ2UpO1xuICAgICAgcmVzdWx0c1t2XVt3XSA9IHsgZGlzdGFuY2U6IGQsIHByZWRlY2Vzc29yOiB2IH07XG4gICAgfSk7XG4gIH0pO1xuXG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaykge1xuICAgIHZhciByb3dLID0gcmVzdWx0c1trXTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGkpIHtcbiAgICAgIHZhciByb3dJID0gcmVzdWx0c1tpXTtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaikge1xuICAgICAgICB2YXIgaWsgPSByb3dJW2tdO1xuICAgICAgICB2YXIga2ogPSByb3dLW2pdO1xuICAgICAgICB2YXIgaWogPSByb3dJW2pdO1xuICAgICAgICB2YXIgYWx0RGlzdGFuY2UgPSBpay5kaXN0YW5jZSArIGtqLmRpc3RhbmNlO1xuICAgICAgICBpZiAoYWx0RGlzdGFuY2UgPCBpai5kaXN0YW5jZSkge1xuICAgICAgICAgIGlqLmRpc3RhbmNlID0gYWx0RGlzdGFuY2U7XG4gICAgICAgICAgaWoucHJlZGVjZXNzb3IgPSBrai5wcmVkZWNlc3NvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/floyd-warshall.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/index.js": /*!****************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/index.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = {\n components: __webpack_require__(/*! ./components */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/components.js\"),\n dijkstra: __webpack_require__(/*! ./dijkstra */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra.js\"),\n dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dijkstra-all.js\"),\n findCycles: __webpack_require__(/*! ./find-cycles */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/find-cycles.js\"),\n floydWarshall: __webpack_require__(/*! ./floyd-warshall */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/floyd-warshall.js\"),\n isAcyclic: __webpack_require__(/*! ./is-acyclic */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/is-acyclic.js\"),\n postorder: __webpack_require__(/*! ./postorder */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/postorder.js\"),\n preorder: __webpack_require__(/*! ./preorder */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/preorder.js\"),\n prim: __webpack_require__(/*! ./prim */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/prim.js\"),\n tarjan: __webpack_require__(/*! ./tarjan */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/tarjan.js\"),\n topsort: __webpack_require__(/*! ./topsort */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/topsort.js\")\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvaW5kZXguanM/OGFlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxtRkFBYztBQUNwQyxZQUFZLG1CQUFPLENBQUMsK0VBQVk7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVGQUFnQjtBQUN2QyxjQUFjLG1CQUFPLENBQUMscUZBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsMkZBQWtCO0FBQzNDLGFBQWEsbUJBQU8sQ0FBQyxtRkFBYztBQUNuQyxhQUFhLG1CQUFPLENBQUMsaUZBQWE7QUFDbEMsWUFBWSxtQkFBTyxDQUFDLCtFQUFZO0FBQ2hDLFFBQVEsbUJBQU8sQ0FBQyx1RUFBUTtBQUN4QixVQUFVLG1CQUFPLENBQUMsMkVBQVU7QUFDNUIsV0FBVyxtQkFBTyxDQUFDLDZFQUFXO0FBQzlCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvYWxnL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvbXBvbmVudHM6IHJlcXVpcmUoXCIuL2NvbXBvbmVudHNcIiksXG4gIGRpamtzdHJhOiByZXF1aXJlKFwiLi9kaWprc3RyYVwiKSxcbiAgZGlqa3N0cmFBbGw6IHJlcXVpcmUoXCIuL2RpamtzdHJhLWFsbFwiKSxcbiAgZmluZEN5Y2xlczogcmVxdWlyZShcIi4vZmluZC1jeWNsZXNcIiksXG4gIGZsb3lkV2Fyc2hhbGw6IHJlcXVpcmUoXCIuL2Zsb3lkLXdhcnNoYWxsXCIpLFxuICBpc0FjeWNsaWM6IHJlcXVpcmUoXCIuL2lzLWFjeWNsaWNcIiksXG4gIHBvc3RvcmRlcjogcmVxdWlyZShcIi4vcG9zdG9yZGVyXCIpLFxuICBwcmVvcmRlcjogcmVxdWlyZShcIi4vcHJlb3JkZXJcIiksXG4gIHByaW06IHJlcXVpcmUoXCIuL3ByaW1cIiksXG4gIHRhcmphbjogcmVxdWlyZShcIi4vdGFyamFuXCIpLFxuICB0b3Bzb3J0OiByZXF1aXJlKFwiLi90b3Bzb3J0XCIpXG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/index.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/is-acyclic.js": /*!*********************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/is-acyclic.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var topsort = __webpack_require__(/*! ./topsort */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/topsort.js\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvaXMtYWN5Y2xpYy5qcz8zZmVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyw2RUFBVzs7QUFFakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvYWxnL2lzLWFjeWNsaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9wc29ydCA9IHJlcXVpcmUoXCIuL3RvcHNvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBY3ljbGljO1xuXG5mdW5jdGlvbiBpc0FjeWNsaWMoZykge1xuICB0cnkge1xuICAgIHRvcHNvcnQoZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHRvcHNvcnQuQ3ljbGVFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/is-acyclic.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/postorder.js": /*!********************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/postorder.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var dfs = __webpack_require__(/*! ./dfs */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dfs.js\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvcG9zdG9yZGVyLmpzP2FhZjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLHFFQUFPOztBQUV6Qjs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvcG9zdG9yZGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRmcyA9IHJlcXVpcmUoXCIuL2Rmc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3N0b3JkZXI7XG5cbmZ1bmN0aW9uIHBvc3RvcmRlcihnLCB2cykge1xuICByZXR1cm4gZGZzKGcsIHZzLCBcInBvc3RcIik7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/postorder.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/preorder.js": /*!*******************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/preorder.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var dfs = __webpack_require__(/*! ./dfs */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/alg/dfs.js\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvcHJlb3JkZXIuanM/MGMyZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVLG1CQUFPLENBQUMscUVBQU87O0FBRXpCOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ3JhcGhsaWJAMi4xLjhAZ3JhcGhsaWIvbGliL2FsZy9wcmVvcmRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcHJlb3JkZXI7XG5cbmZ1bmN0aW9uIHByZW9yZGVyKGcsIHZzKSB7XG4gIHJldHVybiBkZnMoZywgdnMsIFwicHJlXCIpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/preorder.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/prim.js": /*!***************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/prim.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ../graph */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/graph.js\");\nvar PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/data/priority-queue.js\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph();\n var parents = {};\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvcHJpbS5qcz9kMWEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyx3RUFBVztBQUMzQixZQUFZLG1CQUFPLENBQUMsc0VBQVU7QUFDOUIsb0JBQW9CLG1CQUFPLENBQUMsa0dBQXdCOztBQUVwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvYWxnL3ByaW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhcIik7XG52YXIgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByaW07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCk7XG4gIHZhciBwYXJlbnRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgdmFyIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBwcS5hZGQodiwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgfSk7XG5cbiAgLy8gU3RhcnQgZnJvbSBhbiBhcmJpdHJhcnkgbm9kZVxuICBwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sIDApO1xuXG4gIHZhciBpbml0ID0gZmFsc2U7XG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIGlmIChfLmhhcyhwYXJlbnRzLCB2KSkge1xuICAgICAgcmVzdWx0LnNldEVkZ2UodiwgcGFyZW50c1t2XSk7XG4gICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiBcIiArIGcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGVFZGdlcyh2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/prim.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/tarjan.js": /*!*****************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/tarjan.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvdGFyamFuLmpzPzEwNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLHdFQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fZ3JhcGhsaWJAMi4xLjhAZ3JhcGhsaWIvbGliL2FsZy90YXJqYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gdGFyamFuO1xuXG5mdW5jdGlvbiB0YXJqYW4oZykge1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIHZpc2l0ZWQgPSB7fTsgLy8gbm9kZSBpZCAtPiB7IG9uU3RhY2ssIGxvd2xpbmssIGluZGV4IH1cbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBlbnRyeSA9IHZpc2l0ZWRbdl0gPSB7XG4gICAgICBvblN0YWNrOiB0cnVlLFxuICAgICAgbG93bGluazogaW5kZXgsXG4gICAgICBpbmRleDogaW5kZXgrK1xuICAgIH07XG4gICAgc3RhY2sucHVzaCh2KTtcblxuICAgIGcuc3VjY2Vzc29ycyh2KS5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICghXy5oYXModmlzaXRlZCwgdykpIHtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5sb3dsaW5rKTtcbiAgICAgIH0gZWxzZSBpZiAodmlzaXRlZFt3XS5vblN0YWNrKSB7XG4gICAgICAgIGVudHJ5Lmxvd2xpbmsgPSBNYXRoLm1pbihlbnRyeS5sb3dsaW5rLCB2aXNpdGVkW3ddLmluZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChlbnRyeS5sb3dsaW5rID09PSBlbnRyeS5pbmRleCkge1xuICAgICAgdmFyIGNtcHQgPSBbXTtcbiAgICAgIHZhciB3O1xuICAgICAgZG8ge1xuICAgICAgICB3ID0gc3RhY2sucG9wKCk7XG4gICAgICAgIHZpc2l0ZWRbd10ub25TdGFjayA9IGZhbHNlO1xuICAgICAgICBjbXB0LnB1c2godyk7XG4gICAgICB9IHdoaWxlICh2ICE9PSB3KTtcbiAgICAgIHJlc3VsdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH1cblxuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgICAgZGZzKHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/tarjan.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/alg/topsort.js": /*!******************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/alg/topsort.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9hbGcvdG9wc29ydC5qcz9kY2M5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVEsbUJBQU8sQ0FBQyx3RUFBVzs7QUFFM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvYWxnL3RvcHNvcnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gdG9wc29ydDtcbnRvcHNvcnQuQ3ljbGVFeGNlcHRpb24gPSBDeWNsZUV4Y2VwdGlvbjtcblxuZnVuY3Rpb24gdG9wc29ydChnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBzdGFjayA9IHt9O1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuXG4gIGZ1bmN0aW9uIHZpc2l0KG5vZGUpIHtcbiAgICBpZiAoXy5oYXMoc3RhY2ssIG5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgQ3ljbGVFeGNlcHRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIG5vZGUpKSB7XG4gICAgICBzdGFja1tub2RlXSA9IHRydWU7XG4gICAgICB2aXNpdGVkW25vZGVdID0gdHJ1ZTtcbiAgICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyhub2RlKSwgdmlzaXQpO1xuICAgICAgZGVsZXRlIHN0YWNrW25vZGVdO1xuICAgICAgcmVzdWx0cy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIF8uZWFjaChnLnNpbmtzKCksIHZpc2l0KTtcblxuICBpZiAoXy5zaXplKHZpc2l0ZWQpICE9PSBnLm5vZGVDb3VudCgpKSB7XG4gICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gQ3ljbGVFeGNlcHRpb24oKSB7fVxuQ3ljbGVFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7IC8vIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRXJyb3IgdG8gcGFzcyB0ZXN0aW5nIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/alg/topsort.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/data/priority-queue.js": /*!**************************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/data/priority-queue.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ../lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzPzk5YjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLHdFQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxjQUFjLEVBQUU7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNkJBQTZCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvZGF0YS9wcmlvcml0eS1xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcmlvcml0eVF1ZXVlO1xuXG4vKipcbiAqIEEgbWluLXByaW9yaXR5IHF1ZXVlIGRhdGEgc3RydWN0dXJlLiBUaGlzIGFsZ29yaXRobSBpcyBkZXJpdmVkIGZyb20gQ29ybWVuLFxuICogZXQgYWwuLCBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuIFRoZSBiYXNpYyBpZGVhIG9mIGEgbWluLXByaW9yaXR5XG4gKiBxdWV1ZSBpcyB0aGF0IHlvdSBjYW4gZWZmaWNpZW50bHkgKGluIE8oMSkgdGltZSkgZ2V0IHRoZSBzbWFsbGVzdCBrZXkgaW5cbiAqIHRoZSBxdWV1ZS4gQWRkaW5nIGFuZCByZW1vdmluZyBlbGVtZW50cyB0YWtlcyBPKGxvZyBuKSB0aW1lLiBBIGtleSBjYW5cbiAqIGhhdmUgaXRzIHByaW9yaXR5IGRlY3JlYXNlZCBpbiBPKGxvZyBuKSB0aW1lLlxuICovXG5mdW5jdGlvbiBQcmlvcml0eVF1ZXVlKCkge1xuICB0aGlzLl9hcnIgPSBbXTtcbiAgdGhpcy5fa2V5SW5kaWNlcyA9IHt9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obilgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2Fyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5rZXk7IH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiAqKmtleSoqIGlzIGluIHRoZSBxdWV1ZSBhbmQgYGZhbHNlYCBpZiBub3QuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGtleSkge1xuICByZXR1cm4gXy5oYXModGhpcy5fa2V5SW5kaWNlcywga2V5KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiouIElmICoqa2V5KiogaXMgbm90IHByZXNlbnQgaW4gdGhlIHF1ZXVlXG4gKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wcmlvcml0eSA9IGZ1bmN0aW9uKGtleSkge1xuICB2YXIgaW5kZXggPSB0aGlzLl9rZXlJbmRpY2VzW2tleV07XG4gIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5IGZvciB0aGUgbWluaW11bSBlbGVtZW50IGluIHRoaXMgcXVldWUuIElmIHRoZSBxdWV1ZSBpc1xuICogZW1wdHkgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYW4gRXJyb3IuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSgpID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUXVldWUgdW5kZXJmbG93XCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl9hcnJbMF0ua2V5O1xufTtcblxuLyoqXG4gKiBJbnNlcnRzIGEgbmV3IGtleSBpbnRvIHRoZSBwcmlvcml0eSBxdWV1ZS4gSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpblxuICogdGhlIHF1ZXVlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgOyBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gYHRydWVgLlxuICogVGFrZXMgYE8obilgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IHRvIGFkZFxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBpbml0aWFsIHByaW9yaXR5IGZvciB0aGUga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgaWYgKCFfLmhhcyhrZXlJbmRpY2VzLCBrZXkpKSB7XG4gICAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgICB2YXIgaW5kZXggPSBhcnIubGVuZ3RoO1xuICAgIGtleUluZGljZXNba2V5XSA9IGluZGV4O1xuICAgIGFyci5wdXNoKHtrZXk6IGtleSwgcHJpb3JpdHk6IHByaW9yaXR5fSk7XG4gICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgc21hbGxlc3Qga2V5IGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obG9nIG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fc3dhcCgwLCB0aGlzLl9hcnIubGVuZ3RoIC0gMSk7XG4gIHZhciBtaW4gPSB0aGlzLl9hcnIucG9wKCk7XG4gIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW21pbi5rZXldO1xuICB0aGlzLl9oZWFwaWZ5KDApO1xuICByZXR1cm4gbWluLmtleTtcbn07XG5cbi8qKlxuICogRGVjcmVhc2VzIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKiB0byAqKnByaW9yaXR5KiouIElmIHRoZSBuZXcgcHJpb3JpdHkgaXNcbiAqIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgcHJpb3JpdHksIHRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBFcnJvci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgZm9yIHdoaWNoIHRvIHJhaXNlIHByaW9yaXR5XG4gKiBAcGFyYW0ge051bWJlcn0gcHJpb3JpdHkgdGhlIG5ldyBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5kZWNyZWFzZSA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAocHJpb3JpdHkgPiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBcIiArXG4gICAgICAgIFwiS2V5OiBcIiArIGtleSArIFwiIE9sZDogXCIgKyB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ICsgXCIgTmV3OiBcIiArIHByaW9yaXR5KTtcbiAgfVxuICB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9oZWFwaWZ5ID0gZnVuY3Rpb24oaSkge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIgbCA9IDIgKiBpO1xuICB2YXIgciA9IGwgKyAxO1xuICB2YXIgbGFyZ2VzdCA9IGk7XG4gIGlmIChsIDwgYXJyLmxlbmd0aCkge1xuICAgIGxhcmdlc3QgPSBhcnJbbF0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyBsIDogbGFyZ2VzdDtcbiAgICBpZiAociA8IGFyci5sZW5ndGgpIHtcbiAgICAgIGxhcmdlc3QgPSBhcnJbcl0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyByIDogbGFyZ2VzdDtcbiAgICB9XG4gICAgaWYgKGxhcmdlc3QgIT09IGkpIHtcbiAgICAgIHRoaXMuX3N3YXAoaSwgbGFyZ2VzdCk7XG4gICAgICB0aGlzLl9oZWFwaWZ5KGxhcmdlc3QpO1xuICAgIH1cbiAgfVxufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX2RlY3JlYXNlID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIHByaW9yaXR5ID0gYXJyW2luZGV4XS5wcmlvcml0eTtcbiAgdmFyIHBhcmVudDtcbiAgd2hpbGUgKGluZGV4ICE9PSAwKSB7XG4gICAgcGFyZW50ID0gaW5kZXggPj4gMTtcbiAgICBpZiAoYXJyW3BhcmVudF0ucHJpb3JpdHkgPCBwcmlvcml0eSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3N3YXAoaW5kZXgsIHBhcmVudCk7XG4gICAgaW5kZXggPSBwYXJlbnQ7XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9zd2FwID0gZnVuY3Rpb24oaSwgaikge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gIHZhciBvcmlnQXJySSA9IGFycltpXTtcbiAgdmFyIG9yaWdBcnJKID0gYXJyW2pdO1xuICBhcnJbaV0gPSBvcmlnQXJySjtcbiAgYXJyW2pdID0gb3JpZ0Fyckk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckoua2V5XSA9IGk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckkua2V5XSA9IGo7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/data/priority-queue.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/graph.js": /*!************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/graph.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\";\nvar GRAPH_NODE = \"\\x00\";\nvar EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9ncmFwaC5qcz8yYjQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyx1RUFBVTs7QUFFMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLFdBQVc7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLG9DQUFvQztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksZUFBZTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMscUJBQXFCLEVBQUU7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxQkFBcUIsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLGVBQWU7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gR3JhcGg7XG5cbnZhciBERUZBVUxUX0VER0VfTkFNRSA9IFwiXFx4MDBcIjtcbnZhciBHUkFQSF9OT0RFID0gXCJcXHgwMFwiO1xudmFyIEVER0VfS0VZX0RFTElNID0gXCJcXHgwMVwiO1xuXG4vLyBJbXBsZW1lbnRhdGlvbiBub3Rlczpcbi8vXG4vLyAgKiBOb2RlIGlkIHF1ZXJ5IGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIHN0cmluZyBpZHMgZm9yIHRoZSBub2Rlc1xuLy8gICogRWRnZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBhbiBcImVkZ2VPYmpcIiwgZWRnZSBvYmplY3QsIHRoYXQgaXNcbi8vICAgIGNvbXBvc2VkIG9mIGVub3VnaCBpbmZvcm1hdGlvbiB0byB1bmlxdWVseSBpZGVudGlmeSBhbiBlZGdlOiB7diwgdywgbmFtZX0uXG4vLyAgKiBJbnRlcm5hbGx5IHdlIHVzZSBhbiBcImVkZ2VJZFwiLCBhIHN0cmluZ2lmaWVkIGZvcm0gb2YgdGhlIGVkZ2VPYmosIHRvXG4vLyAgICByZWZlcmVuY2UgZWRnZXMuIFRoaXMgaXMgYmVjYXVzZSB3ZSBuZWVkIGEgcGVyZm9ybWFudCB3YXkgdG8gbG9vayB0aGVzZVxuLy8gICAgZWRnZXMgdXAgYW5kLCBvYmplY3QgcHJvcGVydGllcywgd2hpY2ggaGF2ZSBzdHJpbmcga2V5cywgYXJlIHRoZSBjbG9zZXN0XG4vLyAgICB3ZSdyZSBnb2luZyB0byBnZXQgdG8gYSBwZXJmb3JtYW50IGhhc2h0YWJsZSBpbiBKYXZhU2NyaXB0LlxuXG5mdW5jdGlvbiBHcmFwaChvcHRzKSB7XG4gIHRoaXMuX2lzRGlyZWN0ZWQgPSBfLmhhcyhvcHRzLCBcImRpcmVjdGVkXCIpID8gb3B0cy5kaXJlY3RlZCA6IHRydWU7XG4gIHRoaXMuX2lzTXVsdGlncmFwaCA9IF8uaGFzKG9wdHMsIFwibXVsdGlncmFwaFwiKSA/IG9wdHMubXVsdGlncmFwaCA6IGZhbHNlO1xuICB0aGlzLl9pc0NvbXBvdW5kID0gXy5oYXMob3B0cywgXCJjb21wb3VuZFwiKSA/IG9wdHMuY29tcG91bmQgOiBmYWxzZTtcblxuICAvLyBMYWJlbCBmb3IgdGhlIGdyYXBoIGl0c2VsZlxuICB0aGlzLl9sYWJlbCA9IHVuZGVmaW5lZDtcblxuICAvLyBEZWZhdWx0cyB0byBiZSBzZXQgd2hlbiBjcmVhdGluZyBhIG5ldyBub2RlXG4gIHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbiA9IF8uY29uc3RhbnQodW5kZWZpbmVkKTtcblxuICAvLyBEZWZhdWx0cyB0byBiZSBzZXQgd2hlbiBjcmVhdGluZyBhIG5ldyBlZGdlXG4gIHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbiA9IF8uY29uc3RhbnQodW5kZWZpbmVkKTtcblxuICAvLyB2IC0+IGxhYmVsXG4gIHRoaXMuX25vZGVzID0ge307XG5cbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAvLyB2IC0+IHBhcmVudFxuICAgIHRoaXMuX3BhcmVudCA9IHt9O1xuXG4gICAgLy8gdiAtPiBjaGlsZHJlblxuICAgIHRoaXMuX2NoaWxkcmVuID0ge307XG4gICAgdGhpcy5fY2hpbGRyZW5bR1JBUEhfTk9ERV0gPSB7fTtcbiAgfVxuXG4gIC8vIHYgLT4gZWRnZU9ialxuICB0aGlzLl9pbiA9IHt9O1xuXG4gIC8vIHUgLT4gdiAtPiBOdW1iZXJcbiAgdGhpcy5fcHJlZHMgPSB7fTtcblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5fb3V0ID0ge307XG5cbiAgLy8gdiAtPiB3IC0+IE51bWJlclxuICB0aGlzLl9zdWNzID0ge307XG5cbiAgLy8gZSAtPiBlZGdlT2JqXG4gIHRoaXMuX2VkZ2VPYmpzID0ge307XG5cbiAgLy8gZSAtPiBsYWJlbFxuICB0aGlzLl9lZGdlTGFiZWxzID0ge307XG59XG5cbi8qIE51bWJlciBvZiBub2RlcyBpbiB0aGUgZ3JhcGguIFNob3VsZCBvbmx5IGJlIGNoYW5nZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLiAqL1xuR3JhcGgucHJvdG90eXBlLl9ub2RlQ291bnQgPSAwO1xuXG4vKiBOdW1iZXIgb2YgZWRnZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fZWRnZUNvdW50ID0gMDtcblxuXG4vKiA9PT0gR3JhcGggZnVuY3Rpb25zID09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuaXNEaXJlY3RlZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNEaXJlY3RlZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc011bHRpZ3JhcGggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzTXVsdGlncmFwaDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pc0NvbXBvdW5kID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc0NvbXBvdW5kO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldEdyYXBoID0gZnVuY3Rpb24obGFiZWwpIHtcbiAgdGhpcy5fbGFiZWwgPSBsYWJlbDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZ3JhcGggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2xhYmVsO1xufTtcblxuXG4vKiA9PT0gTm9kZSBmdW5jdGlvbnMgPT09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdE5vZGVMYWJlbCA9IGZ1bmN0aW9uKG5ld0RlZmF1bHQpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24obmV3RGVmYXVsdCkpIHtcbiAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgfVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBuZXdEZWZhdWx0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX25vZGVDb3VudDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5ub2RlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy5rZXlzKHRoaXMuX25vZGVzKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zb3VyY2VzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcmV0dXJuIF8uZmlsdGVyKHRoaXMubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiBfLmlzRW1wdHkoc2VsZi5faW5bdl0pO1xuICB9KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zaW5rcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX291dFt2XSk7XG4gIH0pO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldE5vZGVzID0gZnVuY3Rpb24odnMsIHZhbHVlKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHNlbGYuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuc2V0Tm9kZSh2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlID0gZnVuY3Rpb24odiwgdmFsdWUpIHtcbiAgaWYgKF8uaGFzKHRoaXMuX25vZGVzLCB2KSkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5fbm9kZXNbdl0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aGlzLl9ub2Rlc1t2XSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4odik7XG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdGhpcy5fcGFyZW50W3ZdID0gR1JBUEhfTk9ERTtcbiAgICB0aGlzLl9jaGlsZHJlblt2XSA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdW3ZdID0gdHJ1ZTtcbiAgfVxuICB0aGlzLl9pblt2XSA9IHt9O1xuICB0aGlzLl9wcmVkc1t2XSA9IHt9O1xuICB0aGlzLl9vdXRbdl0gPSB7fTtcbiAgdGhpcy5fc3Vjc1t2XSA9IHt9O1xuICArK3RoaXMuX25vZGVDb3VudDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZSA9IGZ1bmN0aW9uKHYpIHtcbiAgcmV0dXJuIHRoaXMuX25vZGVzW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmhhc05vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9ub2Rlcywgdik7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucmVtb3ZlTm9kZSA9ICBmdW5jdGlvbih2KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKF8uaGFzKHRoaXMuX25vZGVzLCB2KSkge1xuICAgIHZhciByZW1vdmVFZGdlID0gZnVuY3Rpb24oZSkgeyBzZWxmLnJlbW92ZUVkZ2Uoc2VsZi5fZWRnZU9ianNbZV0pOyB9O1xuICAgIGRlbGV0ZSB0aGlzLl9ub2Rlc1t2XTtcbiAgICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgICAgdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Qodik7XG4gICAgICBkZWxldGUgdGhpcy5fcGFyZW50W3ZdO1xuICAgICAgXy5lYWNoKHRoaXMuY2hpbGRyZW4odiksIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIHNlbGYuc2V0UGFyZW50KGNoaWxkKTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIH1cbiAgICBfLmVhY2goXy5rZXlzKHRoaXMuX2luW3ZdKSwgcmVtb3ZlRWRnZSk7XG4gICAgZGVsZXRlIHRoaXMuX2luW3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9wcmVkc1t2XTtcbiAgICBfLmVhY2goXy5rZXlzKHRoaXMuX291dFt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl07XG4gICAgZGVsZXRlIHRoaXMuX3N1Y3Nbdl07XG4gICAgLS10aGlzLl9ub2RlQ291bnQ7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0UGFyZW50ID0gZnVuY3Rpb24odiwgcGFyZW50KSB7XG4gIGlmICghdGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoXCIpO1xuICB9XG5cbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyZW50KSkge1xuICAgIHBhcmVudCA9IEdSQVBIX05PREU7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ29lcmNlIHBhcmVudCB0byBzdHJpbmdcbiAgICBwYXJlbnQgKz0gXCJcIjtcbiAgICBmb3IgKHZhciBhbmNlc3RvciA9IHBhcmVudDtcbiAgICAgICFfLmlzVW5kZWZpbmVkKGFuY2VzdG9yKTtcbiAgICAgIGFuY2VzdG9yID0gdGhpcy5wYXJlbnQoYW5jZXN0b3IpKSB7XG4gICAgICBpZiAoYW5jZXN0b3IgPT09IHYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2V0dGluZyBcIiArIHBhcmVudCsgXCIgYXMgcGFyZW50IG9mIFwiICsgdiArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiB3b3VsZCBjcmVhdGUgYSBjeWNsZVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldE5vZGUocGFyZW50KTtcbiAgfVxuXG4gIHRoaXMuc2V0Tm9kZSh2KTtcbiAgdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Qodik7XG4gIHRoaXMuX3BhcmVudFt2XSA9IHBhcmVudDtcbiAgdGhpcy5fY2hpbGRyZW5bcGFyZW50XVt2XSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdCA9IGZ1bmN0aW9uKHYpIHtcbiAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RoaXMuX3BhcmVudFt2XV1bdl07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucGFyZW50ID0gZnVuY3Rpb24odikge1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLl9wYXJlbnRbdl07XG4gICAgaWYgKHBhcmVudCAhPT0gR1JBUEhfTk9ERSkge1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5jaGlsZHJlbiA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQodikpIHtcbiAgICB2ID0gR1JBUEhfTk9ERTtcbiAgfVxuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW5bdl07XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gXy5rZXlzKGNoaWxkcmVuKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodiA9PT0gR1JBUEhfTk9ERSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzKCk7XG4gIH0gZWxzZSBpZiAodGhpcy5oYXNOb2RlKHYpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUucHJlZGVjZXNzb3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgcHJlZHNWID0gdGhpcy5fcHJlZHNbdl07XG4gIGlmIChwcmVkc1YpIHtcbiAgICByZXR1cm4gXy5rZXlzKHByZWRzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zdWNjZXNzb3JzID0gZnVuY3Rpb24odikge1xuICB2YXIgc3Vjc1YgPSB0aGlzLl9zdWNzW3ZdO1xuICBpZiAoc3Vjc1YpIHtcbiAgICByZXR1cm4gXy5rZXlzKHN1Y3NWKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm5laWdoYm9ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzID0gdGhpcy5wcmVkZWNlc3NvcnModik7XG4gIGlmIChwcmVkcykge1xuICAgIHJldHVybiBfLnVuaW9uKHByZWRzLCB0aGlzLnN1Y2Nlc3NvcnModikpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNMZWFmID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIG5laWdoYm9ycztcbiAgaWYgKHRoaXMuaXNEaXJlY3RlZCgpKSB7XG4gICAgbmVpZ2hib3JzID0gdGhpcy5zdWNjZXNzb3JzKHYpO1xuICB9IGVsc2Uge1xuICAgIG5laWdoYm9ycyA9IHRoaXMubmVpZ2hib3JzKHYpO1xuICB9XG4gIHJldHVybiBuZWlnaGJvcnMubGVuZ3RoID09PSAwO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmZpbHRlck5vZGVzID0gZnVuY3Rpb24oZmlsdGVyKSB7XG4gIHZhciBjb3B5ID0gbmV3IHRoaXMuY29uc3RydWN0b3Ioe1xuICAgIGRpcmVjdGVkOiB0aGlzLl9pc0RpcmVjdGVkLFxuICAgIG11bHRpZ3JhcGg6IHRoaXMuX2lzTXVsdGlncmFwaCxcbiAgICBjb21wb3VuZDogdGhpcy5faXNDb21wb3VuZFxuICB9KTtcblxuICBjb3B5LnNldEdyYXBoKHRoaXMuZ3JhcGgoKSk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBfLmVhY2godGhpcy5fbm9kZXMsIGZ1bmN0aW9uKHZhbHVlLCB2KSB7XG4gICAgaWYgKGZpbHRlcih2KSkge1xuICAgICAgY29weS5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuXG4gIF8uZWFjaCh0aGlzLl9lZGdlT2JqcywgZnVuY3Rpb24oZSkge1xuICAgIGlmIChjb3B5Lmhhc05vZGUoZS52KSAmJiBjb3B5Lmhhc05vZGUoZS53KSkge1xuICAgICAgY29weS5zZXRFZGdlKGUsIHNlbGYuZWRnZShlKSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgcGFyZW50cyA9IHt9O1xuICBmdW5jdGlvbiBmaW5kUGFyZW50KHYpIHtcbiAgICB2YXIgcGFyZW50ID0gc2VsZi5wYXJlbnQodik7XG4gICAgaWYgKHBhcmVudCA9PT0gdW5kZWZpbmVkIHx8IGNvcHkuaGFzTm9kZShwYXJlbnQpKSB7XG4gICAgICBwYXJlbnRzW3ZdID0gcGFyZW50O1xuICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICB9IGVsc2UgaWYgKHBhcmVudCBpbiBwYXJlbnRzKSB7XG4gICAgICByZXR1cm4gcGFyZW50c1twYXJlbnRdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmluZFBhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgXy5lYWNoKGNvcHkubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgICAgY29weS5zZXRQYXJlbnQodiwgZmluZFBhcmVudCh2KSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbi8qID09PSBFZGdlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG5cbkdyYXBoLnByb3RvdHlwZS5zZXREZWZhdWx0RWRnZUxhYmVsID0gZnVuY3Rpb24obmV3RGVmYXVsdCkge1xuICBpZiAoIV8uaXNGdW5jdGlvbihuZXdEZWZhdWx0KSkge1xuICAgIG5ld0RlZmF1bHQgPSBfLmNvbnN0YW50KG5ld0RlZmF1bHQpO1xuICB9XG4gIHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbiA9IG5ld0RlZmF1bHQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2VDb3VudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fZWRnZUNvdW50O1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2VzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBfLnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0UGF0aCA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICBfLnJlZHVjZSh2cywgZnVuY3Rpb24odiwgdykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHNlbGYuc2V0RWRnZSh2LCB3LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuc2V0RWRnZSh2LCB3KTtcbiAgICB9XG4gICAgcmV0dXJuIHc7XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qXG4gKiBzZXRFZGdlKHYsIHcsIFt2YWx1ZSwgW25hbWVdXSlcbiAqIHNldEVkZ2UoeyB2LCB3LCBbbmFtZV0gfSwgW3ZhbHVlXSlcbiAqL1xuR3JhcGgucHJvdG90eXBlLnNldEVkZ2UgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHYsIHcsIG5hbWUsIHZhbHVlO1xuICB2YXIgdmFsdWVTcGVjaWZpZWQgPSBmYWxzZTtcbiAgdmFyIGFyZzAgPSBhcmd1bWVudHNbMF07XG5cbiAgaWYgKHR5cGVvZiBhcmcwID09PSBcIm9iamVjdFwiICYmIGFyZzAgIT09IG51bGwgJiYgXCJ2XCIgaW4gYXJnMCkge1xuICAgIHYgPSBhcmcwLnY7XG4gICAgdyA9IGFyZzAudztcbiAgICBuYW1lID0gYXJnMC5uYW1lO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIHZhbHVlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdiA9IGFyZzA7XG4gICAgdyA9IGFyZ3VtZW50c1sxXTtcbiAgICBuYW1lID0gYXJndW1lbnRzWzNdO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMl07XG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdiA9IFwiXCIgKyB2O1xuICB3ID0gXCJcIiArIHc7XG4gIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIG5hbWUgPSBcIlwiICsgbmFtZTtcbiAgfVxuXG4gIHZhciBlID0gZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICBpZiAoXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSkpIHtcbiAgICBpZiAodmFsdWVTcGVjaWZpZWQpIHtcbiAgICAgIHRoaXMuX2VkZ2VMYWJlbHNbZV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkgJiYgIXRoaXMuX2lzTXVsdGlncmFwaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBzZXQgYSBuYW1lZCBlZGdlIHdoZW4gaXNNdWx0aWdyYXBoID0gZmFsc2VcIik7XG4gIH1cblxuICAvLyBJdCBkaWRuJ3QgZXhpc3QsIHNvIHdlIG5lZWQgdG8gY3JlYXRlIGl0LlxuICAvLyBGaXJzdCBlbnN1cmUgdGhlIG5vZGVzIGV4aXN0LlxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuc2V0Tm9kZSh3KTtcblxuICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWVTcGVjaWZpZWQgPyB2YWx1ZSA6IHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbih2LCB3LCBuYW1lKTtcblxuICB2YXIgZWRnZU9iaiA9IGVkZ2VBcmdzVG9PYmoodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gIC8vIEVuc3VyZSB3ZSBhZGQgdW5kaXJlY3RlZCBlZGdlcyBpbiBhIGNvbnNpc3RlbnQgd2F5LlxuICB2ID0gZWRnZU9iai52O1xuICB3ID0gZWRnZU9iai53O1xuXG4gIE9iamVjdC5mcmVlemUoZWRnZU9iaik7XG4gIHRoaXMuX2VkZ2VPYmpzW2VdID0gZWRnZU9iajtcbiAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICBpbmNyZW1lbnRPckluaXRFbnRyeSh0aGlzLl9zdWNzW3ZdLCB3KTtcbiAgdGhpcy5faW5bd11bZV0gPSBlZGdlT2JqO1xuICB0aGlzLl9vdXRbdl1bZV0gPSBlZGdlT2JqO1xuICB0aGlzLl9lZGdlQ291bnQrKztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuZWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgcmV0dXJuIHRoaXMuX2VkZ2VMYWJlbHNbZV07XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaGFzRWRnZSA9IGZ1bmN0aW9uKHYsIHcsIG5hbWUpIHtcbiAgdmFyIGUgPSAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpKTtcbiAgcmV0dXJuIF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsIGUpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZUVkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHZhciBlZGdlID0gdGhpcy5fZWRnZU9ianNbZV07XG4gIGlmIChlZGdlKSB7XG4gICAgdiA9IGVkZ2UudjtcbiAgICB3ID0gZWRnZS53O1xuICAgIGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW2VdO1xuICAgIGRlbGV0ZSB0aGlzLl9lZGdlT2Jqc1tlXTtcbiAgICBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KHRoaXMuX3ByZWRzW3ddLCB2KTtcbiAgICBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICAgIGRlbGV0ZSB0aGlzLl9pblt3XVtlXTtcbiAgICBkZWxldGUgdGhpcy5fb3V0W3ZdW2VdO1xuICAgIHRoaXMuX2VkZ2VDb3VudC0tO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmluRWRnZXMgPSBmdW5jdGlvbih2LCB1KSB7XG4gIHZhciBpblYgPSB0aGlzLl9pblt2XTtcbiAgaWYgKGluVikge1xuICAgIHZhciBlZGdlcyA9IF8udmFsdWVzKGluVik7XG4gICAgaWYgKCF1KSB7XG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIHJldHVybiBfLmZpbHRlcihlZGdlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gZWRnZS52ID09PSB1OyB9KTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm91dEVkZ2VzID0gZnVuY3Rpb24odiwgdykge1xuICB2YXIgb3V0ViA9IHRoaXMuX291dFt2XTtcbiAgaWYgKG91dFYpIHtcbiAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhvdXRWKTtcbiAgICBpZiAoIXcpIHtcbiAgICAgIHJldHVybiBlZGdlcztcbiAgICB9XG4gICAgcmV0dXJuIF8uZmlsdGVyKGVkZ2VzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBlZGdlLncgPT09IHc7IH0pO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUVkZ2VzID0gZnVuY3Rpb24odiwgdykge1xuICB2YXIgaW5FZGdlcyA9IHRoaXMuaW5FZGdlcyh2LCB3KTtcbiAgaWYgKGluRWRnZXMpIHtcbiAgICByZXR1cm4gaW5FZGdlcy5jb25jYXQodGhpcy5vdXRFZGdlcyh2LCB3KSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGluY3JlbWVudE9ySW5pdEVudHJ5KG1hcCwgaykge1xuICBpZiAobWFwW2tdKSB7XG4gICAgbWFwW2tdKys7XG4gIH0gZWxzZSB7XG4gICAgbWFwW2tdID0gMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KG1hcCwgaykge1xuICBpZiAoIS0tbWFwW2tdKSB7IGRlbGV0ZSBtYXBba107IH1cbn1cblxuZnVuY3Rpb24gZWRnZUFyZ3NUb0lkKGlzRGlyZWN0ZWQsIHZfLCB3XywgbmFtZSkge1xuICB2YXIgdiA9IFwiXCIgKyB2XztcbiAgdmFyIHcgPSBcIlwiICsgd187XG4gIGlmICghaXNEaXJlY3RlZCAmJiB2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgcmV0dXJuIHYgKyBFREdFX0tFWV9ERUxJTSArIHcgKyBFREdFX0tFWV9ERUxJTSArXG4gICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQobmFtZSkgPyBERUZBVUxUX0VER0VfTkFNRSA6IG5hbWUpO1xufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvT2JqKGlzRGlyZWN0ZWQsIHZfLCB3XywgbmFtZSkge1xuICB2YXIgdiA9IFwiXCIgKyB2XztcbiAgdmFyIHcgPSBcIlwiICsgd187XG4gIGlmICghaXNEaXJlY3RlZCAmJiB2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgdmFyIGVkZ2VPYmogPSAgeyB2OiB2LCB3OiB3IH07XG4gIGlmIChuYW1lKSB7XG4gICAgZWRnZU9iai5uYW1lID0gbmFtZTtcbiAgfVxuICByZXR1cm4gZWRnZU9iajtcbn1cblxuZnVuY3Rpb24gZWRnZU9ialRvSWQoaXNEaXJlY3RlZCwgZWRnZU9iaikge1xuICByZXR1cm4gZWRnZUFyZ3NUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmoudiwgZWRnZU9iai53LCBlZGdlT2JqLm5hbWUpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/graph.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/index.js": /*!************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/index.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: __webpack_require__(/*! ./graph */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/graph.js\"),\n version: __webpack_require__(/*! ./version */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/version.js\")\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9pbmRleC5qcz83MzY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxTQUFTLG1CQUFPLENBQUMscUVBQVM7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLHlFQUFXO0FBQzlCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbmNsdWRlcyBvbmx5IHRoZSBcImNvcmVcIiBvZiBncmFwaGxpYlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEdyYXBoOiByZXF1aXJlKFwiLi9ncmFwaFwiKSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vdmVyc2lvblwiKVxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/index.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/json.js": /*!***********************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/json.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var _ = __webpack_require__(/*! ./lodash */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\");\nvar Graph = __webpack_require__(/*! ./graph */ \"./node_modules/_graphlib@2.1.8@graphlib/lib/graph.js\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9qc29uLmpzPzIwOTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsUUFBUSxtQkFBTyxDQUFDLHVFQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyxxRUFBUzs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSwyQ0FBMkM7QUFDMUQsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9qc29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHdyaXRlOiB3cml0ZSxcbiAgcmVhZDogcmVhZFxufTtcblxuZnVuY3Rpb24gd3JpdGUoZykge1xuICB2YXIganNvbiA9IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICBkaXJlY3RlZDogZy5pc0RpcmVjdGVkKCksXG4gICAgICBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpLFxuICAgICAgY29tcG91bmQ6IGcuaXNDb21wb3VuZCgpXG4gICAgfSxcbiAgICBub2Rlczogd3JpdGVOb2RlcyhnKSxcbiAgICBlZGdlczogd3JpdGVFZGdlcyhnKVxuICB9O1xuICBpZiAoIV8uaXNVbmRlZmluZWQoZy5ncmFwaCgpKSkge1xuICAgIGpzb24udmFsdWUgPSBfLmNsb25lKGcuZ3JhcGgoKSk7XG4gIH1cbiAgcmV0dXJuIGpzb247XG59XG5cbmZ1bmN0aW9uIHdyaXRlTm9kZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGVWYWx1ZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcGFyZW50ID0gZy5wYXJlbnQodik7XG4gICAgdmFyIG5vZGUgPSB7IHY6IHYgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS52YWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRWRnZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2VWYWx1ZSA9IGcuZWRnZShlKTtcbiAgICB2YXIgZWRnZSA9IHsgdjogZS52LCB3OiBlLncgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZS5uYW1lKSkge1xuICAgICAgZWRnZS5uYW1lID0gZS5uYW1lO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZWRnZVZhbHVlKSkge1xuICAgICAgZWRnZS52YWx1ZSA9IGVkZ2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVkZ2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkKGpzb24pIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoanNvbi5vcHRpb25zKS5zZXRHcmFwaChqc29uLnZhbHVlKTtcbiAgXy5lYWNoKGpzb24ubm9kZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZy5zZXROb2RlKGVudHJ5LnYsIGVudHJ5LnZhbHVlKTtcbiAgICBpZiAoZW50cnkucGFyZW50KSB7XG4gICAgICBnLnNldFBhcmVudChlbnRyeS52LCBlbnRyeS5wYXJlbnQpO1xuICAgIH1cbiAgfSk7XG4gIF8uZWFjaChqc29uLmVkZ2VzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0RWRnZSh7IHY6IGVudHJ5LnYsIHc6IGVudHJ5LncsIG5hbWU6IGVudHJ5Lm5hbWUgfSwgZW50cnkudmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGc7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/json.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js": /*!*************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* global window */\n\nvar lodash;\n\nif (true) {\n try {\n lodash = {\n clone: __webpack_require__(/*! lodash/clone */ \"./node_modules/_lodash@4.17.21@lodash/clone.js\"),\n constant: __webpack_require__(/*! lodash/constant */ \"./node_modules/_lodash@4.17.21@lodash/constant.js\"),\n each: __webpack_require__(/*! lodash/each */ \"./node_modules/_lodash@4.17.21@lodash/each.js\"),\n filter: __webpack_require__(/*! lodash/filter */ \"./node_modules/_lodash@4.17.21@lodash/filter.js\"),\n has: __webpack_require__(/*! lodash/has */ \"./node_modules/_lodash@4.17.21@lodash/has.js\"),\n isArray: __webpack_require__(/*! lodash/isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isEmpty: __webpack_require__(/*! lodash/isEmpty */ \"./node_modules/_lodash@4.17.21@lodash/isEmpty.js\"),\n isFunction: __webpack_require__(/*! lodash/isFunction */ \"./node_modules/_lodash@4.17.21@lodash/isFunction.js\"),\n isUndefined: __webpack_require__(/*! lodash/isUndefined */ \"./node_modules/_lodash@4.17.21@lodash/isUndefined.js\"),\n keys: __webpack_require__(/*! lodash/keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\"),\n map: __webpack_require__(/*! lodash/map */ \"./node_modules/_lodash@4.17.21@lodash/map.js\"),\n reduce: __webpack_require__(/*! lodash/reduce */ \"./node_modules/_lodash@4.17.21@lodash/reduce.js\"),\n size: __webpack_require__(/*! lodash/size */ \"./node_modules/_lodash@4.17.21@lodash/size.js\"),\n transform: __webpack_require__(/*! lodash/transform */ \"./node_modules/_lodash@4.17.21@lodash/transform.js\"),\n union: __webpack_require__(/*! lodash/union */ \"./node_modules/_lodash@4.17.21@lodash/union.js\"),\n values: __webpack_require__(/*! lodash/values */ \"./node_modules/_lodash@4.17.21@lodash/values.js\")\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi9sb2Rhc2guanM/YWE1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsb0VBQWM7QUFDbkMsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQWlCO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQyxrRUFBYTtBQUNqQyxjQUFjLG1CQUFPLENBQUMsc0VBQWU7QUFDckMsWUFBWSxtQkFBTyxDQUFDLGdFQUFZO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyx3RUFBZ0I7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHdFQUFnQjtBQUN2QyxrQkFBa0IsbUJBQU8sQ0FBQyw4RUFBbUI7QUFDN0MsbUJBQW1CLG1CQUFPLENBQUMsZ0ZBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrRUFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0VBQVk7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHNFQUFlO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQyxrRUFBYTtBQUNqQyxpQkFBaUIsbUJBQU8sQ0FBQyw0RUFBa0I7QUFDM0MsYUFBYSxtQkFBTyxDQUFDLG9FQUFjO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxzRUFBZTtBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19ncmFwaGxpYkAyLjEuOEBncmFwaGxpYi9saWIvbG9kYXNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgbG9kYXNoO1xuXG5pZiAodHlwZW9mIHJlcXVpcmUgPT09IFwiZnVuY3Rpb25cIikge1xuICB0cnkge1xuICAgIGxvZGFzaCA9IHtcbiAgICAgIGNsb25lOiByZXF1aXJlKFwibG9kYXNoL2Nsb25lXCIpLFxuICAgICAgY29uc3RhbnQ6IHJlcXVpcmUoXCJsb2Rhc2gvY29uc3RhbnRcIiksXG4gICAgICBlYWNoOiByZXF1aXJlKFwibG9kYXNoL2VhY2hcIiksXG4gICAgICBmaWx0ZXI6IHJlcXVpcmUoXCJsb2Rhc2gvZmlsdGVyXCIpLFxuICAgICAgaGFzOiAgcmVxdWlyZShcImxvZGFzaC9oYXNcIiksXG4gICAgICBpc0FycmF5OiByZXF1aXJlKFwibG9kYXNoL2lzQXJyYXlcIiksXG4gICAgICBpc0VtcHR5OiByZXF1aXJlKFwibG9kYXNoL2lzRW1wdHlcIiksXG4gICAgICBpc0Z1bmN0aW9uOiByZXF1aXJlKFwibG9kYXNoL2lzRnVuY3Rpb25cIiksXG4gICAgICBpc1VuZGVmaW5lZDogcmVxdWlyZShcImxvZGFzaC9pc1VuZGVmaW5lZFwiKSxcbiAgICAgIGtleXM6IHJlcXVpcmUoXCJsb2Rhc2gva2V5c1wiKSxcbiAgICAgIG1hcDogcmVxdWlyZShcImxvZGFzaC9tYXBcIiksXG4gICAgICByZWR1Y2U6IHJlcXVpcmUoXCJsb2Rhc2gvcmVkdWNlXCIpLFxuICAgICAgc2l6ZTogcmVxdWlyZShcImxvZGFzaC9zaXplXCIpLFxuICAgICAgdHJhbnNmb3JtOiByZXF1aXJlKFwibG9kYXNoL3RyYW5zZm9ybVwiKSxcbiAgICAgIHVuaW9uOiByZXF1aXJlKFwibG9kYXNoL3VuaW9uXCIpLFxuICAgICAgdmFsdWVzOiByZXF1aXJlKFwibG9kYXNoL3ZhbHVlc1wiKVxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFsb2Rhc2gpIHtcbiAgbG9kYXNoID0gd2luZG93Ll87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG9kYXNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/lodash.js\n"); /***/ }), /***/ "./node_modules/_graphlib@2.1.8@graphlib/lib/version.js": /*!**************************************************************!*\ !*** ./node_modules/_graphlib@2.1.8@graphlib/lib/version.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = '2.1.8';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi92ZXJzaW9uLmpzP2Q1MTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2dyYXBobGliQDIuMS44QGdyYXBobGliL2xpYi92ZXJzaW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAnMi4xLjgnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_graphlib@2.1.8@graphlib/lib/version.js\n"); /***/ }), /***/ "./node_modules/_insert-css@2.0.0@insert-css/index.js": /*!************************************************************!*\ !*** ./node_modules/_insert-css@2.0.0@insert-css/index.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("var containers = []; // will store container HTMLElement references\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container);\n\n // first time we see this container, create the necessary entries\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n }\n\n // try to get the correponding container + position styleElement, create it otherwise\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n }\n\n // strip potential UTF-8 BOM if css was read from a file\n if (css.charCodeAt(0) === 0xFEFF) { css = css.substr(1, css.length); }\n\n // actually add the stylesheet\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n};\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n}\n\nmodule.exports = insertCss;\nmodule.exports.insertCss = insertCss;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2luc2VydC1jc3NAMi4wLjBAaW5zZXJ0LWNzcy9pbmRleC5qcz8zZjAwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQix1QkFBdUIsZ0JBQWdCOztBQUV2Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsaUNBQWlDOztBQUV4RTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW5zZXJ0LWNzc0AyLjAuMEBpbnNlcnQtY3NzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvbnRhaW5lcnMgPSBbXTsgLy8gd2lsbCBzdG9yZSBjb250YWluZXIgSFRNTEVsZW1lbnQgcmVmZXJlbmNlc1xudmFyIHN0eWxlRWxlbWVudHMgPSBbXTsgLy8gd2lsbCBzdG9yZSB7cHJlcGVuZDogSFRNTEVsZW1lbnQsIGFwcGVuZDogSFRNTEVsZW1lbnR9XG5cbnZhciB1c2FnZSA9ICdpbnNlcnQtY3NzOiBZb3UgbmVlZCB0byBwcm92aWRlIGEgQ1NTIHN0cmluZy4gVXNhZ2U6IGluc2VydENzcyhjc3NTdHJpbmdbLCBvcHRpb25zXSkuJztcblxuZnVuY3Rpb24gaW5zZXJ0Q3NzKGNzcywgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKGNzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcih1c2FnZSk7XG4gICAgfVxuXG4gICAgdmFyIHBvc2l0aW9uID0gb3B0aW9ucy5wcmVwZW5kID09PSB0cnVlID8gJ3ByZXBlbmQnIDogJ2FwcGVuZCc7XG4gICAgdmFyIGNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmNvbnRhaW5lciA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICB2YXIgY29udGFpbmVySWQgPSBjb250YWluZXJzLmluZGV4T2YoY29udGFpbmVyKTtcblxuICAgIC8vIGZpcnN0IHRpbWUgd2Ugc2VlIHRoaXMgY29udGFpbmVyLCBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBlbnRyaWVzXG4gICAgaWYgKGNvbnRhaW5lcklkID09PSAtMSkge1xuICAgICAgICBjb250YWluZXJJZCA9IGNvbnRhaW5lcnMucHVzaChjb250YWluZXIpIC0gMTtcbiAgICAgICAgc3R5bGVFbGVtZW50c1tjb250YWluZXJJZF0gPSB7fTtcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gZ2V0IHRoZSBjb3JyZXBvbmRpbmcgY29udGFpbmVyICsgcG9zaXRpb24gc3R5bGVFbGVtZW50LCBjcmVhdGUgaXQgb3RoZXJ3aXNlXG4gICAgdmFyIHN0eWxlRWxlbWVudDtcblxuICAgIGlmIChzdHlsZUVsZW1lbnRzW2NvbnRhaW5lcklkXSAhPT0gdW5kZWZpbmVkICYmIHN0eWxlRWxlbWVudHNbY29udGFpbmVySWRdW3Bvc2l0aW9uXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN0eWxlRWxlbWVudCA9IHN0eWxlRWxlbWVudHNbY29udGFpbmVySWRdW3Bvc2l0aW9uXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZUVsZW1lbnQgPSBzdHlsZUVsZW1lbnRzW2NvbnRhaW5lcklkXVtwb3NpdGlvbl0gPSBjcmVhdGVTdHlsZUVsZW1lbnQoKTtcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09ICdwcmVwZW5kJykge1xuICAgICAgICAgICAgY29udGFpbmVyLmluc2VydEJlZm9yZShzdHlsZUVsZW1lbnQsIGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgcG90ZW50aWFsIFVURi04IEJPTSBpZiBjc3Mgd2FzIHJlYWQgZnJvbSBhIGZpbGVcbiAgICBpZiAoY3NzLmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikgeyBjc3MgPSBjc3Muc3Vic3RyKDEsIGNzcy5sZW5ndGgpOyB9XG5cbiAgICAvLyBhY3R1YWxseSBhZGQgdGhlIHN0eWxlc2hlZXRcbiAgICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICAgICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCArPSBjc3NcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZUVsZW1lbnQudGV4dENvbnRlbnQgKz0gY3NzO1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQoKSB7XG4gICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpO1xuICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0Q3NzO1xubW9kdWxlLmV4cG9ydHMuaW5zZXJ0Q3NzID0gaW5zZXJ0Q3NzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_insert-css@2.0.0@insert-css/index.js\n"); /***/ }), /***/ "./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/decorators.js": /*!*******************************************************************************************************!*\ !*** ./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/decorators.js ***! \*******************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar INJECTION = Symbol.for(\"INJECTION\");\nfunction _proxyGetter(proto, key, resolve, doCache) {\n function getter() {\n if (doCache && !Reflect.hasMetadata(INJECTION, this, key)) {\n Reflect.defineMetadata(INJECTION, resolve(), this, key);\n }\n if (Reflect.hasMetadata(INJECTION, this, key)) {\n return Reflect.getMetadata(INJECTION, this, key);\n }\n else {\n return resolve();\n }\n }\n function setter(newVal) {\n Reflect.defineMetadata(INJECTION, newVal, this, key);\n }\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: true,\n get: getter,\n set: setter\n });\n}\nfunction makePropertyInjectDecorator(container, doCache) {\n return function (serviceIdentifier) {\n return function (proto, key) {\n var resolve = function () {\n return container.get(serviceIdentifier);\n };\n _proxyGetter(proto, key, resolve, doCache);\n };\n };\n}\nexports.makePropertyInjectDecorator = makePropertyInjectDecorator;\nfunction makePropertyInjectNamedDecorator(container, doCache) {\n return function (serviceIdentifier, named) {\n return function (proto, key) {\n var resolve = function () {\n return container.getNamed(serviceIdentifier, named);\n };\n _proxyGetter(proto, key, resolve, doCache);\n };\n };\n}\nexports.makePropertyInjectNamedDecorator = makePropertyInjectNamedDecorator;\nfunction makePropertyInjectTaggedDecorator(container, doCache) {\n return function (serviceIdentifier, key, value) {\n return function (proto, propertyName) {\n var resolve = function () {\n return container.getTagged(serviceIdentifier, key, value);\n };\n _proxyGetter(proto, propertyName, resolve, doCache);\n };\n };\n}\nexports.makePropertyInjectTaggedDecorator = makePropertyInjectTaggedDecorator;\nfunction makePropertyMultiInjectDecorator(container, doCache) {\n return function (serviceIdentifier) {\n return function (proto, key) {\n var resolve = function () {\n return container.getAll(serviceIdentifier);\n };\n _proxyGetter(proto, key, resolve, doCache);\n };\n };\n}\nexports.makePropertyMultiInjectDecorator = makePropertyMultiInjectDecorator;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9yc0AzLjEuMEBpbnZlcnNpZnktaW5qZWN0LWRlY29yYXRvcnMvbGliL2RlY29yYXRvcnMuanM/MDViMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9yc0AzLjEuMEBpbnZlcnNpZnktaW5qZWN0LWRlY29yYXRvcnMvbGliL2RlY29yYXRvcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBJTkpFQ1RJT04gPSBTeW1ib2wuZm9yKFwiSU5KRUNUSU9OXCIpO1xuZnVuY3Rpb24gX3Byb3h5R2V0dGVyKHByb3RvLCBrZXksIHJlc29sdmUsIGRvQ2FjaGUpIHtcbiAgICBmdW5jdGlvbiBnZXR0ZXIoKSB7XG4gICAgICAgIGlmIChkb0NhY2hlICYmICFSZWZsZWN0Lmhhc01ldGFkYXRhKElOSkVDVElPTiwgdGhpcywga2V5KSkge1xuICAgICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShJTkpFQ1RJT04sIHJlc29sdmUoKSwgdGhpcywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUmVmbGVjdC5oYXNNZXRhZGF0YShJTkpFQ1RJT04sIHRoaXMsIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKElOSkVDVElPTiwgdGhpcywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0dGVyKG5ld1ZhbCkge1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKElOSkVDVElPTiwgbmV3VmFsLCB0aGlzLCBrZXkpO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sIGtleSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogZ2V0dGVyLFxuICAgICAgICBzZXQ6IHNldHRlclxuICAgIH0pO1xufVxuZnVuY3Rpb24gbWFrZVByb3BlcnR5SW5qZWN0RGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwcm90bywga2V5KSB7XG4gICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLmdldChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgX3Byb3h5R2V0dGVyKHByb3RvLCBrZXksIHJlc29sdmUsIGRvQ2FjaGUpO1xuICAgICAgICB9O1xuICAgIH07XG59XG5leHBvcnRzLm1ha2VQcm9wZXJ0eUluamVjdERlY29yYXRvciA9IG1ha2VQcm9wZXJ0eUluamVjdERlY29yYXRvcjtcbmZ1bmN0aW9uIG1ha2VQcm9wZXJ0eUluamVjdE5hbWVkRGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIsIG5hbWVkKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSkge1xuICAgICAgICAgICAgdmFyIHJlc29sdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lci5nZXROYW1lZChzZXJ2aWNlSWRlbnRpZmllciwgbmFtZWQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIF9wcm94eUdldHRlcihwcm90bywga2V5LCByZXNvbHZlLCBkb0NhY2hlKTtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuZXhwb3J0cy5tYWtlUHJvcGVydHlJbmplY3ROYW1lZERlY29yYXRvciA9IG1ha2VQcm9wZXJ0eUluamVjdE5hbWVkRGVjb3JhdG9yO1xuZnVuY3Rpb24gbWFrZVByb3BlcnR5SW5qZWN0VGFnZ2VkRGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwcm90bywgcHJvcGVydHlOYW1lKSB7XG4gICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLmdldFRhZ2dlZChzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgX3Byb3h5R2V0dGVyKHByb3RvLCBwcm9wZXJ0eU5hbWUsIHJlc29sdmUsIGRvQ2FjaGUpO1xuICAgICAgICB9O1xuICAgIH07XG59XG5leHBvcnRzLm1ha2VQcm9wZXJ0eUluamVjdFRhZ2dlZERlY29yYXRvciA9IG1ha2VQcm9wZXJ0eUluamVjdFRhZ2dlZERlY29yYXRvcjtcbmZ1bmN0aW9uIG1ha2VQcm9wZXJ0eU11bHRpSW5qZWN0RGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwcm90bywga2V5KSB7XG4gICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLmdldEFsbChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgX3Byb3h5R2V0dGVyKHByb3RvLCBrZXksIHJlc29sdmUsIGRvQ2FjaGUpO1xuICAgICAgICB9O1xuICAgIH07XG59XG5leHBvcnRzLm1ha2VQcm9wZXJ0eU11bHRpSW5qZWN0RGVjb3JhdG9yID0gbWFrZVByb3BlcnR5TXVsdGlJbmplY3REZWNvcmF0b3I7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/decorators.js\n"); /***/ }), /***/ "./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/index.js": /*!**************************************************************************************************!*\ !*** ./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/index.js ***! \**************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decorators_1 = __webpack_require__(/*! ./decorators */ \"./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/decorators.js\");\nfunction getDecorators(container, doCache) {\n if (doCache === void 0) { doCache = true; }\n var lazyInject = decorators_1.makePropertyInjectDecorator(container, doCache);\n var lazyInjectNamed = decorators_1.makePropertyInjectNamedDecorator(container, doCache);\n var lazyInjectTagged = decorators_1.makePropertyInjectTaggedDecorator(container, doCache);\n var lazyMultiInject = decorators_1.makePropertyMultiInjectDecorator(container, doCache);\n return {\n lazyInject: lazyInject,\n lazyInjectNamed: lazyInjectNamed,\n lazyInjectTagged: lazyInjectTagged,\n lazyMultiInject: lazyMultiInject\n };\n}\nexports.default = getDecorators;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9yc0AzLjEuMEBpbnZlcnNpZnktaW5qZWN0LWRlY29yYXRvcnMvbGliL2luZGV4LmpzPzUwNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxtQkFBbUIsbUJBQU8sQ0FBQyxxSEFBYztBQUN6QztBQUNBLDZCQUE2QixnQkFBZ0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnktaW5qZWN0LWRlY29yYXRvcnNAMy4xLjBAaW52ZXJzaWZ5LWluamVjdC1kZWNvcmF0b3JzL2xpYi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGRlY29yYXRvcnNfMSA9IHJlcXVpcmUoXCIuL2RlY29yYXRvcnNcIik7XG5mdW5jdGlvbiBnZXREZWNvcmF0b3JzKGNvbnRhaW5lciwgZG9DYWNoZSkge1xuICAgIGlmIChkb0NhY2hlID09PSB2b2lkIDApIHsgZG9DYWNoZSA9IHRydWU7IH1cbiAgICB2YXIgbGF6eUluamVjdCA9IGRlY29yYXRvcnNfMS5tYWtlUHJvcGVydHlJbmplY3REZWNvcmF0b3IoY29udGFpbmVyLCBkb0NhY2hlKTtcbiAgICB2YXIgbGF6eUluamVjdE5hbWVkID0gZGVjb3JhdG9yc18xLm1ha2VQcm9wZXJ0eUluamVjdE5hbWVkRGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSk7XG4gICAgdmFyIGxhenlJbmplY3RUYWdnZWQgPSBkZWNvcmF0b3JzXzEubWFrZVByb3BlcnR5SW5qZWN0VGFnZ2VkRGVjb3JhdG9yKGNvbnRhaW5lciwgZG9DYWNoZSk7XG4gICAgdmFyIGxhenlNdWx0aUluamVjdCA9IGRlY29yYXRvcnNfMS5tYWtlUHJvcGVydHlNdWx0aUluamVjdERlY29yYXRvcihjb250YWluZXIsIGRvQ2FjaGUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxhenlJbmplY3Q6IGxhenlJbmplY3QsXG4gICAgICAgIGxhenlJbmplY3ROYW1lZDogbGF6eUluamVjdE5hbWVkLFxuICAgICAgICBsYXp5SW5qZWN0VGFnZ2VkOiBsYXp5SW5qZWN0VGFnZ2VkLFxuICAgICAgICBsYXp5TXVsdGlJbmplY3Q6IGxhenlNdWx0aUluamVjdFxuICAgIH07XG59XG5leHBvcnRzLmRlZmF1bHQgPSBnZXREZWNvcmF0b3JzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/index.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js": /*!***********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tagProperty = exports.tagParameter = exports.decorate = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nfunction tagParameter(annotationTarget, propertyName, parameterIndex, metadata) {\n var metadataKey = METADATA_KEY.TAGGED;\n _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex);\n}\nexports.tagParameter = tagParameter;\nfunction tagProperty(annotationTarget, propertyName, metadata) {\n var metadataKey = METADATA_KEY.TAGGED_PROP;\n _tagParameterOrProperty(metadataKey, annotationTarget.constructor, propertyName, metadata);\n}\nexports.tagProperty = tagProperty;\nfunction _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex) {\n var paramsOrPropertiesMetadata = {};\n var isParameterDecorator = (typeof parameterIndex === \"number\");\n var key = (parameterIndex !== undefined && isParameterDecorator) ? parameterIndex.toString() : propertyName;\n if (isParameterDecorator && propertyName !== undefined) {\n throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION);\n }\n if (Reflect.hasOwnMetadata(metadataKey, annotationTarget)) {\n paramsOrPropertiesMetadata = Reflect.getMetadata(metadataKey, annotationTarget);\n }\n var paramOrPropertyMetadata = paramsOrPropertiesMetadata[key];\n if (!Array.isArray(paramOrPropertyMetadata)) {\n paramOrPropertyMetadata = [];\n }\n else {\n for (var _i = 0, paramOrPropertyMetadata_1 = paramOrPropertyMetadata; _i < paramOrPropertyMetadata_1.length; _i++) {\n var m = paramOrPropertyMetadata_1[_i];\n if (m.key === metadata.key) {\n throw new Error(ERROR_MSGS.DUPLICATED_METADATA + \" \" + m.key.toString());\n }\n }\n }\n paramOrPropertyMetadata.push(metadata);\n paramsOrPropertiesMetadata[key] = paramOrPropertyMetadata;\n Reflect.defineMetadata(metadataKey, paramsOrPropertiesMetadata, annotationTarget);\n}\nfunction _decorate(decorators, target) {\n Reflect.decorate(decorators, target);\n}\nfunction _param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); };\n}\nfunction decorate(decorator, target, parameterIndex) {\n if (typeof parameterIndex === \"number\") {\n _decorate([_param(parameterIndex, decorator)], target);\n }\n else if (typeof parameterIndex === \"string\") {\n Reflect.decorate([decorator], target, parameterIndex);\n }\n else {\n _decorate([decorator], target);\n }\n}\nexports.decorate = decorate;\n//# sourceMappingURL=decorator_utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vZGVjb3JhdG9yX3V0aWxzLmpzPzY0YjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLHNHQUF5QjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUFBNkUsdUNBQXVDO0FBQ3BIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsb0NBQW9DO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vZGVjb3JhdG9yX3V0aWxzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnRhZ1Byb3BlcnR5ID0gZXhwb3J0cy50YWdQYXJhbWV0ZXIgPSBleHBvcnRzLmRlY29yYXRlID0gdm9pZCAwO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xuZnVuY3Rpb24gdGFnUGFyYW1ldGVyKGFubm90YXRpb25UYXJnZXQsIHByb3BlcnR5TmFtZSwgcGFyYW1ldGVySW5kZXgsIG1ldGFkYXRhKSB7XG4gICAgdmFyIG1ldGFkYXRhS2V5ID0gTUVUQURBVEFfS0VZLlRBR0dFRDtcbiAgICBfdGFnUGFyYW1ldGVyT3JQcm9wZXJ0eShtZXRhZGF0YUtleSwgYW5ub3RhdGlvblRhcmdldCwgcHJvcGVydHlOYW1lLCBtZXRhZGF0YSwgcGFyYW1ldGVySW5kZXgpO1xufVxuZXhwb3J0cy50YWdQYXJhbWV0ZXIgPSB0YWdQYXJhbWV0ZXI7XG5mdW5jdGlvbiB0YWdQcm9wZXJ0eShhbm5vdGF0aW9uVGFyZ2V0LCBwcm9wZXJ0eU5hbWUsIG1ldGFkYXRhKSB7XG4gICAgdmFyIG1ldGFkYXRhS2V5ID0gTUVUQURBVEFfS0VZLlRBR0dFRF9QUk9QO1xuICAgIF90YWdQYXJhbWV0ZXJPclByb3BlcnR5KG1ldGFkYXRhS2V5LCBhbm5vdGF0aW9uVGFyZ2V0LmNvbnN0cnVjdG9yLCBwcm9wZXJ0eU5hbWUsIG1ldGFkYXRhKTtcbn1cbmV4cG9ydHMudGFnUHJvcGVydHkgPSB0YWdQcm9wZXJ0eTtcbmZ1bmN0aW9uIF90YWdQYXJhbWV0ZXJPclByb3BlcnR5KG1ldGFkYXRhS2V5LCBhbm5vdGF0aW9uVGFyZ2V0LCBwcm9wZXJ0eU5hbWUsIG1ldGFkYXRhLCBwYXJhbWV0ZXJJbmRleCkge1xuICAgIHZhciBwYXJhbXNPclByb3BlcnRpZXNNZXRhZGF0YSA9IHt9O1xuICAgIHZhciBpc1BhcmFtZXRlckRlY29yYXRvciA9ICh0eXBlb2YgcGFyYW1ldGVySW5kZXggPT09IFwibnVtYmVyXCIpO1xuICAgIHZhciBrZXkgPSAocGFyYW1ldGVySW5kZXggIT09IHVuZGVmaW5lZCAmJiBpc1BhcmFtZXRlckRlY29yYXRvcikgPyBwYXJhbWV0ZXJJbmRleC50b1N0cmluZygpIDogcHJvcGVydHlOYW1lO1xuICAgIGlmIChpc1BhcmFtZXRlckRlY29yYXRvciAmJiBwcm9wZXJ0eU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5JTlZBTElEX0RFQ09SQVRPUl9PUEVSQVRJT04pO1xuICAgIH1cbiAgICBpZiAoUmVmbGVjdC5oYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgYW5ub3RhdGlvblRhcmdldCkpIHtcbiAgICAgICAgcGFyYW1zT3JQcm9wZXJ0aWVzTWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbm5vdGF0aW9uVGFyZ2V0KTtcbiAgICB9XG4gICAgdmFyIHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhID0gcGFyYW1zT3JQcm9wZXJ0aWVzTWV0YWRhdGFba2V5XTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyYW1PclByb3BlcnR5TWV0YWRhdGEpKSB7XG4gICAgICAgIHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhID0gW107XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhXzEgPSBwYXJhbU9yUHJvcGVydHlNZXRhZGF0YTsgX2kgPCBwYXJhbU9yUHJvcGVydHlNZXRhZGF0YV8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIG0gPSBwYXJhbU9yUHJvcGVydHlNZXRhZGF0YV8xW19pXTtcbiAgICAgICAgICAgIGlmIChtLmtleSA9PT0gbWV0YWRhdGEua2V5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuRFVQTElDQVRFRF9NRVRBREFUQSArIFwiIFwiICsgbS5rZXkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGFyYW1PclByb3BlcnR5TWV0YWRhdGEucHVzaChtZXRhZGF0YSk7XG4gICAgcGFyYW1zT3JQcm9wZXJ0aWVzTWV0YWRhdGFba2V5XSA9IHBhcmFtT3JQcm9wZXJ0eU1ldGFkYXRhO1xuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEobWV0YWRhdGFLZXksIHBhcmFtc09yUHJvcGVydGllc01ldGFkYXRhLCBhbm5vdGF0aW9uVGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIF9kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQpIHtcbiAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCk7XG59XG5mdW5jdGlvbiBfcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9O1xufVxuZnVuY3Rpb24gZGVjb3JhdGUoZGVjb3JhdG9yLCB0YXJnZXQsIHBhcmFtZXRlckluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwYXJhbWV0ZXJJbmRleCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBfZGVjb3JhdGUoW19wYXJhbShwYXJhbWV0ZXJJbmRleCwgZGVjb3JhdG9yKV0sIHRhcmdldCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXJJbmRleCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBSZWZsZWN0LmRlY29yYXRlKFtkZWNvcmF0b3JdLCB0YXJnZXQsIHBhcmFtZXRlckluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIF9kZWNvcmF0ZShbZGVjb3JhdG9yXSwgdGFyZ2V0KTtcbiAgICB9XG59XG5leHBvcnRzLmRlY29yYXRlID0gZGVjb3JhdGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWNvcmF0b3JfdXRpbHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/inject.js": /*!**************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/inject.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.inject = exports.LazyServiceIdentifer = void 0;\nvar error_msgs_1 = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nvar LazyServiceIdentifer = (function () {\n function LazyServiceIdentifer(cb) {\n this._cb = cb;\n }\n LazyServiceIdentifer.prototype.unwrap = function () {\n return this._cb();\n };\n return LazyServiceIdentifer;\n}());\nexports.LazyServiceIdentifer = LazyServiceIdentifer;\nfunction inject(serviceIdentifier) {\n return function (target, targetKey, index) {\n if (serviceIdentifier === undefined) {\n throw new Error(error_msgs_1.UNDEFINED_INJECT_ANNOTATION(target.name));\n }\n var metadata = new metadata_1.Metadata(METADATA_KEY.INJECT_TAG, serviceIdentifier);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.inject = inject;\n//# sourceMappingURL=inject.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vaW5qZWN0LmpzP2I2M2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLHNHQUF5QjtBQUNwRCxtQkFBbUIsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDdkQsaUJBQWlCLG1CQUFPLENBQUMsZ0dBQXNCO0FBQy9DLHdCQUF3QixtQkFBTyxDQUFDLHNHQUFtQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vaW5qZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmluamVjdCA9IGV4cG9ydHMuTGF6eVNlcnZpY2VJZGVudGlmZXIgPSB2b2lkIDA7XG52YXIgZXJyb3JfbXNnc18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9lcnJvcl9tc2dzXCIpO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xudmFyIGRlY29yYXRvcl91dGlsc18xID0gcmVxdWlyZShcIi4vZGVjb3JhdG9yX3V0aWxzXCIpO1xudmFyIExhenlTZXJ2aWNlSWRlbnRpZmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBMYXp5U2VydmljZUlkZW50aWZlcihjYikge1xuICAgICAgICB0aGlzLl9jYiA9IGNiO1xuICAgIH1cbiAgICBMYXp5U2VydmljZUlkZW50aWZlci5wcm90b3R5cGUudW53cmFwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2IoKTtcbiAgICB9O1xuICAgIHJldHVybiBMYXp5U2VydmljZUlkZW50aWZlcjtcbn0oKSk7XG5leHBvcnRzLkxhenlTZXJ2aWNlSWRlbnRpZmVyID0gTGF6eVNlcnZpY2VJZGVudGlmZXI7XG5mdW5jdGlvbiBpbmplY3Qoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICBpZiAoc2VydmljZUlkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yX21zZ3NfMS5VTkRFRklORURfSU5KRUNUX0FOTk9UQVRJT04odGFyZ2V0Lm5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuSU5KRUNUX1RBRywgc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQYXJhbWV0ZXIodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQcm9wZXJ0eSh0YXJnZXQsIHRhcmdldEtleSwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydHMuaW5qZWN0ID0gaW5qZWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5qZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/inject.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/injectable.js": /*!******************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/injectable.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectable = void 0;\nvar ERRORS_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nfunction injectable() {\n return function (target) {\n if (Reflect.hasOwnMetadata(METADATA_KEY.PARAM_TYPES, target)) {\n throw new Error(ERRORS_MSGS.DUPLICATED_INJECTABLE_DECORATOR);\n }\n var types = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, target) || [];\n Reflect.defineMetadata(METADATA_KEY.PARAM_TYPES, types, target);\n return target;\n };\n}\nexports.injectable = injectable;\n//# sourceMappingURL=injectable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vaW5qZWN0YWJsZS5qcz85MjgxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxzR0FBeUI7QUFDbkQsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvYW5ub3RhdGlvbi9pbmplY3RhYmxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmluamVjdGFibGUgPSB2b2lkIDA7XG52YXIgRVJST1JTX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xuZnVuY3Rpb24gaW5qZWN0YWJsZSgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICBpZiAoUmVmbGVjdC5oYXNPd25NZXRhZGF0YShNRVRBREFUQV9LRVkuUEFSQU1fVFlQRVMsIHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUlNfTVNHUy5EVVBMSUNBVEVEX0lOSkVDVEFCTEVfREVDT1JBVE9SKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHlwZXMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKE1FVEFEQVRBX0tFWS5ERVNJR05fUEFSQU1fVFlQRVMsIHRhcmdldCkgfHwgW107XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoTUVUQURBVEFfS0VZLlBBUkFNX1RZUEVTLCB0eXBlcywgdGFyZ2V0KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xufVxuZXhwb3J0cy5pbmplY3RhYmxlID0gaW5qZWN0YWJsZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluamVjdGFibGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/injectable.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/multi_inject.js": /*!********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/multi_inject.js ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiInject = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nfunction multiInject(serviceIdentifier) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.MULTI_INJECT_TAG, serviceIdentifier);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.multiInject = multiInject;\n//# sourceMappingURL=multi_inject.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vbXVsdGlfaW5qZWN0LmpzPzFkNmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDRHQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQyxnR0FBc0I7QUFDL0Msd0JBQXdCLG1CQUFPLENBQUMsc0dBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9hbm5vdGF0aW9uL211bHRpX2luamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tdWx0aUluamVjdCA9IHZvaWQgMDtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuLi9wbGFubmluZy9tZXRhZGF0YVwiKTtcbnZhciBkZWNvcmF0b3JfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2RlY29yYXRvcl91dGlsc1wiKTtcbmZ1bmN0aW9uIG11bHRpSW5qZWN0KHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIG1ldGFkYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoTUVUQURBVEFfS0VZLk1VTFRJX0lOSkVDVF9UQUcsIHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUGFyYW1ldGVyKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUHJvcGVydHkodGFyZ2V0LCB0YXJnZXRLZXksIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnRzLm11bHRpSW5qZWN0ID0gbXVsdGlJbmplY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tdWx0aV9pbmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/multi_inject.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/named.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/named.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.named = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nfunction named(name) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, name);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.named = named;\n//# sourceMappingURL=named.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vbmFtZWQuanM/YmJhNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLGdHQUFzQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxzR0FBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vbmFtZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubmFtZWQgPSB2b2lkIDA7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvbWV0YWRhdGFcIik7XG52YXIgZGVjb3JhdG9yX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9kZWNvcmF0b3JfdXRpbHNcIik7XG5mdW5jdGlvbiBuYW1lZChuYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIG1ldGFkYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoTUVUQURBVEFfS0VZLk5BTUVEX1RBRywgbmFtZSk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1BhcmFtZXRlcih0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgsIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1Byb3BlcnR5KHRhcmdldCwgdGFyZ2V0S2V5LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0cy5uYW1lZCA9IG5hbWVkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bmFtZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/named.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/optional.js": /*!****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/optional.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optional = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nfunction optional() {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.OPTIONAL_TAG, true);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.optional = optional;\n//# sourceMappingURL=optional.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vb3B0aW9uYWwuanM/NTllOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLGdHQUFzQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxzR0FBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vb3B0aW9uYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMub3B0aW9uYWwgPSB2b2lkIDA7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi4vcGxhbm5pbmcvbWV0YWRhdGFcIik7XG52YXIgZGVjb3JhdG9yX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9kZWNvcmF0b3JfdXRpbHNcIik7XG5mdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuT1BUSU9OQUxfVEFHLCB0cnVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUGFyYW1ldGVyKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUHJvcGVydHkodGFyZ2V0LCB0YXJnZXRLZXksIG1ldGFkYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnRzLm9wdGlvbmFsID0gb3B0aW9uYWw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vcHRpb25hbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/optional.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/post_construct.js": /*!**********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/post_construct.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postConstruct = void 0;\nvar ERRORS_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nfunction postConstruct() {\n return function (target, propertyKey, descriptor) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.POST_CONSTRUCT, propertyKey);\n if (Reflect.hasOwnMetadata(METADATA_KEY.POST_CONSTRUCT, target.constructor)) {\n throw new Error(ERRORS_MSGS.MULTIPLE_POST_CONSTRUCT_METHODS);\n }\n Reflect.defineMetadata(METADATA_KEY.POST_CONSTRUCT, metadata, target.constructor);\n };\n}\nexports.postConstruct = postConstruct;\n//# sourceMappingURL=post_construct.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vcG9zdF9jb25zdHJ1Y3QuanM/MDlkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsc0dBQXlCO0FBQ25ELG1CQUFtQixtQkFBTyxDQUFDLDRHQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQyxnR0FBc0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvYW5ub3RhdGlvbi9wb3N0X2NvbnN0cnVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wb3N0Q29uc3RydWN0ID0gdm9pZCAwO1xudmFyIEVSUk9SU19NU0dTID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9lcnJvcl9tc2dzXCIpO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xuZnVuY3Rpb24gcG9zdENvbnN0cnVjdCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgdmFyIG1ldGFkYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoTUVUQURBVEFfS0VZLlBPU1RfQ09OU1RSVUNULCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIGlmIChSZWZsZWN0Lmhhc093bk1ldGFkYXRhKE1FVEFEQVRBX0tFWS5QT1NUX0NPTlNUUlVDVCwgdGFyZ2V0LmNvbnN0cnVjdG9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SU19NU0dTLk1VTFRJUExFX1BPU1RfQ09OU1RSVUNUX01FVEhPRFMpO1xuICAgICAgICB9XG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoTUVUQURBVEFfS0VZLlBPU1RfQ09OU1RSVUNULCBtZXRhZGF0YSwgdGFyZ2V0LmNvbnN0cnVjdG9yKTtcbiAgICB9O1xufVxuZXhwb3J0cy5wb3N0Q29uc3RydWN0ID0gcG9zdENvbnN0cnVjdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvc3RfY29uc3RydWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/post_construct.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/tagged.js": /*!**************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/tagged.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tagged = void 0;\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nfunction tagged(metadataKey, metadataValue) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(metadataKey, metadataValue);\n if (typeof index === \"number\") {\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n }\n else {\n decorator_utils_1.tagProperty(target, targetKey, metadata);\n }\n };\n}\nexports.tagged = tagged;\n//# sourceMappingURL=tagged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vdGFnZ2VkLmpzPzIyZDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLGdHQUFzQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxzR0FBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vdGFnZ2VkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnRhZ2dlZCA9IHZvaWQgMDtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xudmFyIGRlY29yYXRvcl91dGlsc18xID0gcmVxdWlyZShcIi4vZGVjb3JhdG9yX3V0aWxzXCIpO1xuZnVuY3Rpb24gdGFnZ2VkKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIG1ldGFkYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQYXJhbWV0ZXIodGFyZ2V0LCB0YXJnZXRLZXksIGluZGV4LCBtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWNvcmF0b3JfdXRpbHNfMS50YWdQcm9wZXJ0eSh0YXJnZXQsIHRhcmdldEtleSwgbWV0YWRhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydHMudGFnZ2VkID0gdGFnZ2VkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGFnZ2VkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/tagged.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/target_name.js": /*!*******************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/target_name.js ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.targetName = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nfunction targetName(name) {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.NAME_TAG, name);\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n };\n}\nexports.targetName = targetName;\n//# sourceMappingURL=target_name.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vdGFyZ2V0X25hbWUuanM/MDlhZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLGdHQUFzQjtBQUMvQyx3QkFBd0IsbUJBQU8sQ0FBQyxzR0FBbUI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvYW5ub3RhdGlvbi90YXJnZXRfbmFtZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy50YXJnZXROYW1lID0gdm9pZCAwO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL21ldGFkYXRhXCIpO1xudmFyIGRlY29yYXRvcl91dGlsc18xID0gcmVxdWlyZShcIi4vZGVjb3JhdG9yX3V0aWxzXCIpO1xuZnVuY3Rpb24gdGFyZ2V0TmFtZShuYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIG1ldGFkYXRhID0gbmV3IG1ldGFkYXRhXzEuTWV0YWRhdGEoTUVUQURBVEFfS0VZLk5BTUVfVEFHLCBuYW1lKTtcbiAgICAgICAgZGVjb3JhdG9yX3V0aWxzXzEudGFnUGFyYW1ldGVyKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCwgbWV0YWRhdGEpO1xuICAgIH07XG59XG5leHBvcnRzLnRhcmdldE5hbWUgPSB0YXJnZXROYW1lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGFyZ2V0X25hbWUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/target_name.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/annotation/unmanaged.js": /*!*****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/annotation/unmanaged.js ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unmanaged = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar decorator_utils_1 = __webpack_require__(/*! ./decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nfunction unmanaged() {\n return function (target, targetKey, index) {\n var metadata = new metadata_1.Metadata(METADATA_KEY.UNMANAGED_TAG, true);\n decorator_utils_1.tagParameter(target, targetKey, index, metadata);\n };\n}\nexports.unmanaged = unmanaged;\n//# sourceMappingURL=unmanaged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vdW5tYW5hZ2VkLmpzPzMzM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDRHQUE0QjtBQUN2RCxpQkFBaUIsbUJBQU8sQ0FBQyxnR0FBc0I7QUFDL0Msd0JBQXdCLG1CQUFPLENBQUMsc0dBQW1CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2Fubm90YXRpb24vdW5tYW5hZ2VkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnVubWFuYWdlZCA9IHZvaWQgMDtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuLi9wbGFubmluZy9tZXRhZGF0YVwiKTtcbnZhciBkZWNvcmF0b3JfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2RlY29yYXRvcl91dGlsc1wiKTtcbmZ1bmN0aW9uIHVubWFuYWdlZCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgdGFyZ2V0S2V5LCBpbmRleCkge1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShNRVRBREFUQV9LRVkuVU5NQU5BR0VEX1RBRywgdHJ1ZSk7XG4gICAgICAgIGRlY29yYXRvcl91dGlsc18xLnRhZ1BhcmFtZXRlcih0YXJnZXQsIHRhcmdldEtleSwgaW5kZXgsIG1ldGFkYXRhKTtcbiAgICB9O1xufVxuZXhwb3J0cy51bm1hbmFnZWQgPSB1bm1hbmFnZWQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bm1hbmFnZWQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/annotation/unmanaged.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Binding = void 0;\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nvar Binding = (function () {\n function Binding(serviceIdentifier, scope) {\n this.id = id_1.id();\n this.activated = false;\n this.serviceIdentifier = serviceIdentifier;\n this.scope = scope;\n this.type = literal_types_1.BindingTypeEnum.Invalid;\n this.constraint = function (request) { return true; };\n this.implementationType = null;\n this.cache = null;\n this.factory = null;\n this.provider = null;\n this.onActivation = null;\n this.dynamicValue = null;\n }\n Binding.prototype.clone = function () {\n var clone = new Binding(this.serviceIdentifier, this.scope);\n clone.activated = (clone.scope === literal_types_1.BindingScopeEnum.Singleton) ? this.activated : false;\n clone.implementationType = this.implementationType;\n clone.dynamicValue = this.dynamicValue;\n clone.scope = this.scope;\n clone.type = this.type;\n clone.factory = this.factory;\n clone.provider = this.provider;\n clone.constraint = this.constraint;\n clone.onActivation = this.onActivation;\n clone.cache = this.cache;\n return clone;\n };\n return Binding;\n}());\nexports.Binding = Binding;\n//# sourceMappingURL=binding.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2JpbmRpbmdzL2JpbmRpbmcuanM/MGU5MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsNEdBQTRCO0FBQzFELFdBQVcsbUJBQU8sQ0FBQyw4RUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxhQUFhO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2JpbmRpbmdzL2JpbmRpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQmluZGluZyA9IHZvaWQgMDtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgaWRfMSA9IHJlcXVpcmUoXCIuLi91dGlscy9pZFwiKTtcbnZhciBCaW5kaW5nID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCaW5kaW5nKHNlcnZpY2VJZGVudGlmaWVyLCBzY29wZSkge1xuICAgICAgICB0aGlzLmlkID0gaWRfMS5pZCgpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlcnZpY2VJZGVudGlmaWVyID0gc2VydmljZUlkZW50aWZpZXI7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5JbnZhbGlkO1xuICAgICAgICB0aGlzLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkgeyByZXR1cm4gdHJ1ZTsgfTtcbiAgICAgICAgdGhpcy5pbXBsZW1lbnRhdGlvblR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLmNhY2hlID0gbnVsbDtcbiAgICAgICAgdGhpcy5mYWN0b3J5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcm92aWRlciA9IG51bGw7XG4gICAgICAgIHRoaXMub25BY3RpdmF0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5keW5hbWljVmFsdWUgPSBudWxsO1xuICAgIH1cbiAgICBCaW5kaW5nLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsb25lID0gbmV3IEJpbmRpbmcodGhpcy5zZXJ2aWNlSWRlbnRpZmllciwgdGhpcy5zY29wZSk7XG4gICAgICAgIGNsb25lLmFjdGl2YXRlZCA9IChjbG9uZS5zY29wZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uKSA/IHRoaXMuYWN0aXZhdGVkIDogZmFsc2U7XG4gICAgICAgIGNsb25lLmltcGxlbWVudGF0aW9uVHlwZSA9IHRoaXMuaW1wbGVtZW50YXRpb25UeXBlO1xuICAgICAgICBjbG9uZS5keW5hbWljVmFsdWUgPSB0aGlzLmR5bmFtaWNWYWx1ZTtcbiAgICAgICAgY2xvbmUuc2NvcGUgPSB0aGlzLnNjb3BlO1xuICAgICAgICBjbG9uZS50eXBlID0gdGhpcy50eXBlO1xuICAgICAgICBjbG9uZS5mYWN0b3J5ID0gdGhpcy5mYWN0b3J5O1xuICAgICAgICBjbG9uZS5wcm92aWRlciA9IHRoaXMucHJvdmlkZXI7XG4gICAgICAgIGNsb25lLmNvbnN0cmFpbnQgPSB0aGlzLmNvbnN0cmFpbnQ7XG4gICAgICAgIGNsb25lLm9uQWN0aXZhdGlvbiA9IHRoaXMub25BY3RpdmF0aW9uO1xuICAgICAgICBjbG9uZS5jYWNoZSA9IHRoaXMuY2FjaGU7XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICB9O1xuICAgIHJldHVybiBCaW5kaW5nO1xufSgpKTtcbmV4cG9ydHMuQmluZGluZyA9IEJpbmRpbmc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding_count.js": /*!*******************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding_count.js ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingCount = void 0;\nvar BindingCount = {\n MultipleBindingsAvailable: 2,\n NoBindingsAvailable: 0,\n OnlyOneBindingAvailable: 1\n};\nexports.BindingCount = BindingCount;\n//# sourceMappingURL=binding_count.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2JpbmRpbmdzL2JpbmRpbmdfY291bnQuanM/YjRjNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2JpbmRpbmdzL2JpbmRpbmdfY291bnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQmluZGluZ0NvdW50ID0gdm9pZCAwO1xudmFyIEJpbmRpbmdDb3VudCA9IHtcbiAgICBNdWx0aXBsZUJpbmRpbmdzQXZhaWxhYmxlOiAyLFxuICAgIE5vQmluZGluZ3NBdmFpbGFibGU6IDAsXG4gICAgT25seU9uZUJpbmRpbmdBdmFpbGFibGU6IDFcbn07XG5leHBvcnRzLkJpbmRpbmdDb3VudCA9IEJpbmRpbmdDb3VudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbmRpbmdfY291bnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding_count.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js": /*!*****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STACK_OVERFLOW = exports.CIRCULAR_DEPENDENCY_IN_FACTORY = exports.POST_CONSTRUCT_ERROR = exports.MULTIPLE_POST_CONSTRUCT_METHODS = exports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = exports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = exports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = exports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = exports.ARGUMENTS_LENGTH_MISMATCH = exports.INVALID_DECORATOR_OPERATION = exports.INVALID_TO_SELF_VALUE = exports.INVALID_FUNCTION_BINDING = exports.INVALID_MIDDLEWARE_RETURN = exports.NO_MORE_SNAPSHOTS_AVAILABLE = exports.INVALID_BINDING_TYPE = exports.NOT_IMPLEMENTED = exports.CIRCULAR_DEPENDENCY = exports.UNDEFINED_INJECT_ANNOTATION = exports.MISSING_INJECT_ANNOTATION = exports.MISSING_INJECTABLE_ANNOTATION = exports.NOT_REGISTERED = exports.CANNOT_UNBIND = exports.AMBIGUOUS_MATCH = exports.KEY_NOT_FOUND = exports.NULL_ARGUMENT = exports.DUPLICATED_METADATA = exports.DUPLICATED_INJECTABLE_DECORATOR = void 0;\nexports.DUPLICATED_INJECTABLE_DECORATOR = \"Cannot apply @injectable decorator multiple times.\";\nexports.DUPLICATED_METADATA = \"Metadata key was used more than once in a parameter:\";\nexports.NULL_ARGUMENT = \"NULL argument\";\nexports.KEY_NOT_FOUND = \"Key Not Found\";\nexports.AMBIGUOUS_MATCH = \"Ambiguous match found for serviceIdentifier:\";\nexports.CANNOT_UNBIND = \"Could not unbind serviceIdentifier:\";\nexports.NOT_REGISTERED = \"No matching bindings found for serviceIdentifier:\";\nexports.MISSING_INJECTABLE_ANNOTATION = \"Missing required @injectable annotation in:\";\nexports.MISSING_INJECT_ANNOTATION = \"Missing required @inject or @multiInject annotation in:\";\nvar UNDEFINED_INJECT_ANNOTATION = function (name) {\n return \"@inject called with undefined this could mean that the class \" + name + \" has \" +\n \"a circular dependency problem. You can use a LazyServiceIdentifer to \" +\n \"overcome this limitation.\";\n};\nexports.UNDEFINED_INJECT_ANNOTATION = UNDEFINED_INJECT_ANNOTATION;\nexports.CIRCULAR_DEPENDENCY = \"Circular dependency found:\";\nexports.NOT_IMPLEMENTED = \"Sorry, this feature is not fully implemented yet.\";\nexports.INVALID_BINDING_TYPE = \"Invalid binding type:\";\nexports.NO_MORE_SNAPSHOTS_AVAILABLE = \"No snapshot available to restore.\";\nexports.INVALID_MIDDLEWARE_RETURN = \"Invalid return type in middleware. Middleware must return!\";\nexports.INVALID_FUNCTION_BINDING = \"Value provided to function binding must be a function!\";\nexports.INVALID_TO_SELF_VALUE = \"The toSelf function can only be applied when a constructor is \" +\n \"used as service identifier\";\nexports.INVALID_DECORATOR_OPERATION = \"The @inject @multiInject @tagged and @named decorators \" +\n \"must be applied to the parameters of a class constructor or a class property.\";\nvar ARGUMENTS_LENGTH_MISMATCH = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"The number of constructor arguments in the derived class \" +\n (values[0] + \" must be >= than the number of constructor arguments of its base class.\");\n};\nexports.ARGUMENTS_LENGTH_MISMATCH = ARGUMENTS_LENGTH_MISMATCH;\nexports.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT = \"Invalid Container constructor argument. Container options \" +\n \"must be an object.\";\nexports.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE = \"Invalid Container option. Default scope must \" +\n \"be a string ('singleton' or 'transient').\";\nexports.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE = \"Invalid Container option. Auto bind injectable must \" +\n \"be a boolean\";\nexports.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK = \"Invalid Container option. Skip base check must \" +\n \"be a boolean\";\nexports.MULTIPLE_POST_CONSTRUCT_METHODS = \"Cannot apply @postConstruct decorator multiple times in the same class\";\nvar POST_CONSTRUCT_ERROR = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"@postConstruct error in class \" + values[0] + \": \" + values[1];\n};\nexports.POST_CONSTRUCT_ERROR = POST_CONSTRUCT_ERROR;\nvar CIRCULAR_DEPENDENCY_IN_FACTORY = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"It looks like there is a circular dependency \" +\n (\"in one of the '\" + values[0] + \"' bindings. Please investigate bindings with\") +\n (\"service identifier '\" + values[1] + \"'.\");\n};\nexports.CIRCULAR_DEPENDENCY_IN_FACTORY = CIRCULAR_DEPENDENCY_IN_FACTORY;\nexports.STACK_OVERFLOW = \"Maximum call stack size exceeded\";\n//# sourceMappingURL=error_msgs.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnN0YW50cy9lcnJvcl9tc2dzLmpzP2Q3ZGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvY29uc3RhbnRzL2Vycm9yX21zZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU1RBQ0tfT1ZFUkZMT1cgPSBleHBvcnRzLkNJUkNVTEFSX0RFUEVOREVOQ1lfSU5fRkFDVE9SWSA9IGV4cG9ydHMuUE9TVF9DT05TVFJVQ1RfRVJST1IgPSBleHBvcnRzLk1VTFRJUExFX1BPU1RfQ09OU1RSVUNUX01FVEhPRFMgPSBleHBvcnRzLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfU0tJUF9CQVNFX0NIRUNLID0gZXhwb3J0cy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX0FVVE9fQklORF9JTkpFQ1RBQkxFID0gZXhwb3J0cy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX0RFRkFVTFRfU0NPUEUgPSBleHBvcnRzLkNPTlRBSU5FUl9PUFRJT05TX01VU1RfQkVfQU5fT0JKRUNUID0gZXhwb3J0cy5BUkdVTUVOVFNfTEVOR1RIX01JU01BVENIID0gZXhwb3J0cy5JTlZBTElEX0RFQ09SQVRPUl9PUEVSQVRJT04gPSBleHBvcnRzLklOVkFMSURfVE9fU0VMRl9WQUxVRSA9IGV4cG9ydHMuSU5WQUxJRF9GVU5DVElPTl9CSU5ESU5HID0gZXhwb3J0cy5JTlZBTElEX01JRERMRVdBUkVfUkVUVVJOID0gZXhwb3J0cy5OT19NT1JFX1NOQVBTSE9UU19BVkFJTEFCTEUgPSBleHBvcnRzLklOVkFMSURfQklORElOR19UWVBFID0gZXhwb3J0cy5OT1RfSU1QTEVNRU5URUQgPSBleHBvcnRzLkNJUkNVTEFSX0RFUEVOREVOQ1kgPSBleHBvcnRzLlVOREVGSU5FRF9JTkpFQ1RfQU5OT1RBVElPTiA9IGV4cG9ydHMuTUlTU0lOR19JTkpFQ1RfQU5OT1RBVElPTiA9IGV4cG9ydHMuTUlTU0lOR19JTkpFQ1RBQkxFX0FOTk9UQVRJT04gPSBleHBvcnRzLk5PVF9SRUdJU1RFUkVEID0gZXhwb3J0cy5DQU5OT1RfVU5CSU5EID0gZXhwb3J0cy5BTUJJR1VPVVNfTUFUQ0ggPSBleHBvcnRzLktFWV9OT1RfRk9VTkQgPSBleHBvcnRzLk5VTExfQVJHVU1FTlQgPSBleHBvcnRzLkRVUExJQ0FURURfTUVUQURBVEEgPSBleHBvcnRzLkRVUExJQ0FURURfSU5KRUNUQUJMRV9ERUNPUkFUT1IgPSB2b2lkIDA7XG5leHBvcnRzLkRVUExJQ0FURURfSU5KRUNUQUJMRV9ERUNPUkFUT1IgPSBcIkNhbm5vdCBhcHBseSBAaW5qZWN0YWJsZSBkZWNvcmF0b3IgbXVsdGlwbGUgdGltZXMuXCI7XG5leHBvcnRzLkRVUExJQ0FURURfTUVUQURBVEEgPSBcIk1ldGFkYXRhIGtleSB3YXMgdXNlZCBtb3JlIHRoYW4gb25jZSBpbiBhIHBhcmFtZXRlcjpcIjtcbmV4cG9ydHMuTlVMTF9BUkdVTUVOVCA9IFwiTlVMTCBhcmd1bWVudFwiO1xuZXhwb3J0cy5LRVlfTk9UX0ZPVU5EID0gXCJLZXkgTm90IEZvdW5kXCI7XG5leHBvcnRzLkFNQklHVU9VU19NQVRDSCA9IFwiQW1iaWd1b3VzIG1hdGNoIGZvdW5kIGZvciBzZXJ2aWNlSWRlbnRpZmllcjpcIjtcbmV4cG9ydHMuQ0FOTk9UX1VOQklORCA9IFwiQ291bGQgbm90IHVuYmluZCBzZXJ2aWNlSWRlbnRpZmllcjpcIjtcbmV4cG9ydHMuTk9UX1JFR0lTVEVSRUQgPSBcIk5vIG1hdGNoaW5nIGJpbmRpbmdzIGZvdW5kIGZvciBzZXJ2aWNlSWRlbnRpZmllcjpcIjtcbmV4cG9ydHMuTUlTU0lOR19JTkpFQ1RBQkxFX0FOTk9UQVRJT04gPSBcIk1pc3NpbmcgcmVxdWlyZWQgQGluamVjdGFibGUgYW5ub3RhdGlvbiBpbjpcIjtcbmV4cG9ydHMuTUlTU0lOR19JTkpFQ1RfQU5OT1RBVElPTiA9IFwiTWlzc2luZyByZXF1aXJlZCBAaW5qZWN0IG9yIEBtdWx0aUluamVjdCBhbm5vdGF0aW9uIGluOlwiO1xudmFyIFVOREVGSU5FRF9JTkpFQ1RfQU5OT1RBVElPTiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIFwiQGluamVjdCBjYWxsZWQgd2l0aCB1bmRlZmluZWQgdGhpcyBjb3VsZCBtZWFuIHRoYXQgdGhlIGNsYXNzIFwiICsgbmFtZSArIFwiIGhhcyBcIiArXG4gICAgICAgIFwiYSBjaXJjdWxhciBkZXBlbmRlbmN5IHByb2JsZW0uIFlvdSBjYW4gdXNlIGEgTGF6eVNlcnZpY2VJZGVudGlmZXIgdG8gIFwiICtcbiAgICAgICAgXCJvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24uXCI7XG59O1xuZXhwb3J0cy5VTkRFRklORURfSU5KRUNUX0FOTk9UQVRJT04gPSBVTkRFRklORURfSU5KRUNUX0FOTk9UQVRJT047XG5leHBvcnRzLkNJUkNVTEFSX0RFUEVOREVOQ1kgPSBcIkNpcmN1bGFyIGRlcGVuZGVuY3kgZm91bmQ6XCI7XG5leHBvcnRzLk5PVF9JTVBMRU1FTlRFRCA9IFwiU29ycnksIHRoaXMgZmVhdHVyZSBpcyBub3QgZnVsbHkgaW1wbGVtZW50ZWQgeWV0LlwiO1xuZXhwb3J0cy5JTlZBTElEX0JJTkRJTkdfVFlQRSA9IFwiSW52YWxpZCBiaW5kaW5nIHR5cGU6XCI7XG5leHBvcnRzLk5PX01PUkVfU05BUFNIT1RTX0FWQUlMQUJMRSA9IFwiTm8gc25hcHNob3QgYXZhaWxhYmxlIHRvIHJlc3RvcmUuXCI7XG5leHBvcnRzLklOVkFMSURfTUlERExFV0FSRV9SRVRVUk4gPSBcIkludmFsaWQgcmV0dXJuIHR5cGUgaW4gbWlkZGxld2FyZS4gTWlkZGxld2FyZSBtdXN0IHJldHVybiFcIjtcbmV4cG9ydHMuSU5WQUxJRF9GVU5DVElPTl9CSU5ESU5HID0gXCJWYWx1ZSBwcm92aWRlZCB0byBmdW5jdGlvbiBiaW5kaW5nIG11c3QgYmUgYSBmdW5jdGlvbiFcIjtcbmV4cG9ydHMuSU5WQUxJRF9UT19TRUxGX1ZBTFVFID0gXCJUaGUgdG9TZWxmIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGFwcGxpZWQgd2hlbiBhIGNvbnN0cnVjdG9yIGlzIFwiICtcbiAgICBcInVzZWQgYXMgc2VydmljZSBpZGVudGlmaWVyXCI7XG5leHBvcnRzLklOVkFMSURfREVDT1JBVE9SX09QRVJBVElPTiA9IFwiVGhlIEBpbmplY3QgQG11bHRpSW5qZWN0IEB0YWdnZWQgYW5kIEBuYW1lZCBkZWNvcmF0b3JzIFwiICtcbiAgICBcIm11c3QgYmUgYXBwbGllZCB0byB0aGUgcGFyYW1ldGVycyBvZiBhIGNsYXNzIGNvbnN0cnVjdG9yIG9yIGEgY2xhc3MgcHJvcGVydHkuXCI7XG52YXIgQVJHVU1FTlRTX0xFTkdUSF9NSVNNQVRDSCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFsdWVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBcIlRoZSBudW1iZXIgb2YgY29uc3RydWN0b3IgYXJndW1lbnRzIGluIHRoZSBkZXJpdmVkIGNsYXNzIFwiICtcbiAgICAgICAgKHZhbHVlc1swXSArIFwiIG11c3QgYmUgPj0gdGhhbiB0aGUgbnVtYmVyIG9mIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZiBpdHMgYmFzZSBjbGFzcy5cIik7XG59O1xuZXhwb3J0cy5BUkdVTUVOVFNfTEVOR1RIX01JU01BVENIID0gQVJHVU1FTlRTX0xFTkdUSF9NSVNNQVRDSDtcbmV4cG9ydHMuQ09OVEFJTkVSX09QVElPTlNfTVVTVF9CRV9BTl9PQkpFQ1QgPSBcIkludmFsaWQgQ29udGFpbmVyIGNvbnN0cnVjdG9yIGFyZ3VtZW50LiBDb250YWluZXIgb3B0aW9ucyBcIiArXG4gICAgXCJtdXN0IGJlIGFuIG9iamVjdC5cIjtcbmV4cG9ydHMuQ09OVEFJTkVSX09QVElPTlNfSU5WQUxJRF9ERUZBVUxUX1NDT1BFID0gXCJJbnZhbGlkIENvbnRhaW5lciBvcHRpb24uIERlZmF1bHQgc2NvcGUgbXVzdCBcIiArXG4gICAgXCJiZSBhIHN0cmluZyAoJ3NpbmdsZXRvbicgb3IgJ3RyYW5zaWVudCcpLlwiO1xuZXhwb3J0cy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX0FVVE9fQklORF9JTkpFQ1RBQkxFID0gXCJJbnZhbGlkIENvbnRhaW5lciBvcHRpb24uIEF1dG8gYmluZCBpbmplY3RhYmxlIG11c3QgXCIgK1xuICAgIFwiYmUgYSBib29sZWFuXCI7XG5leHBvcnRzLkNPTlRBSU5FUl9PUFRJT05TX0lOVkFMSURfU0tJUF9CQVNFX0NIRUNLID0gXCJJbnZhbGlkIENvbnRhaW5lciBvcHRpb24uIFNraXAgYmFzZSBjaGVjayBtdXN0IFwiICtcbiAgICBcImJlIGEgYm9vbGVhblwiO1xuZXhwb3J0cy5NVUxUSVBMRV9QT1NUX0NPTlNUUlVDVF9NRVRIT0RTID0gXCJDYW5ub3QgYXBwbHkgQHBvc3RDb25zdHJ1Y3QgZGVjb3JhdG9yIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lIGNsYXNzXCI7XG52YXIgUE9TVF9DT05TVFJVQ1RfRVJST1IgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhbHVlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gXCJAcG9zdENvbnN0cnVjdCBlcnJvciBpbiBjbGFzcyBcIiArIHZhbHVlc1swXSArIFwiOiBcIiArIHZhbHVlc1sxXTtcbn07XG5leHBvcnRzLlBPU1RfQ09OU1RSVUNUX0VSUk9SID0gUE9TVF9DT05TVFJVQ1RfRVJST1I7XG52YXIgQ0lSQ1VMQVJfREVQRU5ERU5DWV9JTl9GQUNUT1JZID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YWx1ZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIFwiSXQgbG9va3MgbGlrZSB0aGVyZSBpcyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgXCIgK1xuICAgICAgICAoXCJpbiBvbmUgb2YgdGhlICdcIiArIHZhbHVlc1swXSArIFwiJyBiaW5kaW5ncy4gUGxlYXNlIGludmVzdGlnYXRlIGJpbmRpbmdzIHdpdGhcIikgK1xuICAgICAgICAoXCJzZXJ2aWNlIGlkZW50aWZpZXIgJ1wiICsgdmFsdWVzWzFdICsgXCInLlwiKTtcbn07XG5leHBvcnRzLkNJUkNVTEFSX0RFUEVOREVOQ1lfSU5fRkFDVE9SWSA9IENJUkNVTEFSX0RFUEVOREVOQ1lfSU5fRkFDVE9SWTtcbmV4cG9ydHMuU1RBQ0tfT1ZFUkZMT1cgPSBcIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcnJvcl9tc2dzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js": /*!********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TargetTypeEnum = exports.BindingTypeEnum = exports.BindingScopeEnum = void 0;\nvar BindingScopeEnum = {\n Request: \"Request\",\n Singleton: \"Singleton\",\n Transient: \"Transient\"\n};\nexports.BindingScopeEnum = BindingScopeEnum;\nvar BindingTypeEnum = {\n ConstantValue: \"ConstantValue\",\n Constructor: \"Constructor\",\n DynamicValue: \"DynamicValue\",\n Factory: \"Factory\",\n Function: \"Function\",\n Instance: \"Instance\",\n Invalid: \"Invalid\",\n Provider: \"Provider\"\n};\nexports.BindingTypeEnum = BindingTypeEnum;\nvar TargetTypeEnum = {\n ClassProperty: \"ClassProperty\",\n ConstructorArgument: \"ConstructorArgument\",\n Variable: \"Variable\"\n};\nexports.TargetTypeEnum = TargetTypeEnum;\n//# sourceMappingURL=literal_types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnN0YW50cy9saXRlcmFsX3R5cGVzLmpzP2RiZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvY29uc3RhbnRzL2xpdGVyYWxfdHlwZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGFyZ2V0VHlwZUVudW0gPSBleHBvcnRzLkJpbmRpbmdUeXBlRW51bSA9IGV4cG9ydHMuQmluZGluZ1Njb3BlRW51bSA9IHZvaWQgMDtcbnZhciBCaW5kaW5nU2NvcGVFbnVtID0ge1xuICAgIFJlcXVlc3Q6IFwiUmVxdWVzdFwiLFxuICAgIFNpbmdsZXRvbjogXCJTaW5nbGV0b25cIixcbiAgICBUcmFuc2llbnQ6IFwiVHJhbnNpZW50XCJcbn07XG5leHBvcnRzLkJpbmRpbmdTY29wZUVudW0gPSBCaW5kaW5nU2NvcGVFbnVtO1xudmFyIEJpbmRpbmdUeXBlRW51bSA9IHtcbiAgICBDb25zdGFudFZhbHVlOiBcIkNvbnN0YW50VmFsdWVcIixcbiAgICBDb25zdHJ1Y3RvcjogXCJDb25zdHJ1Y3RvclwiLFxuICAgIER5bmFtaWNWYWx1ZTogXCJEeW5hbWljVmFsdWVcIixcbiAgICBGYWN0b3J5OiBcIkZhY3RvcnlcIixcbiAgICBGdW5jdGlvbjogXCJGdW5jdGlvblwiLFxuICAgIEluc3RhbmNlOiBcIkluc3RhbmNlXCIsXG4gICAgSW52YWxpZDogXCJJbnZhbGlkXCIsXG4gICAgUHJvdmlkZXI6IFwiUHJvdmlkZXJcIlxufTtcbmV4cG9ydHMuQmluZGluZ1R5cGVFbnVtID0gQmluZGluZ1R5cGVFbnVtO1xudmFyIFRhcmdldFR5cGVFbnVtID0ge1xuICAgIENsYXNzUHJvcGVydHk6IFwiQ2xhc3NQcm9wZXJ0eVwiLFxuICAgIENvbnN0cnVjdG9yQXJndW1lbnQ6IFwiQ29uc3RydWN0b3JBcmd1bWVudFwiLFxuICAgIFZhcmlhYmxlOiBcIlZhcmlhYmxlXCJcbn07XG5leHBvcnRzLlRhcmdldFR5cGVFbnVtID0gVGFyZ2V0VHlwZUVudW07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saXRlcmFsX3R5cGVzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js": /*!********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js ***! \********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NON_CUSTOM_TAG_KEYS = exports.POST_CONSTRUCT = exports.DESIGN_PARAM_TYPES = exports.PARAM_TYPES = exports.TAGGED_PROP = exports.TAGGED = exports.MULTI_INJECT_TAG = exports.INJECT_TAG = exports.OPTIONAL_TAG = exports.UNMANAGED_TAG = exports.NAME_TAG = exports.NAMED_TAG = void 0;\nexports.NAMED_TAG = \"named\";\nexports.NAME_TAG = \"name\";\nexports.UNMANAGED_TAG = \"unmanaged\";\nexports.OPTIONAL_TAG = \"optional\";\nexports.INJECT_TAG = \"inject\";\nexports.MULTI_INJECT_TAG = \"multi_inject\";\nexports.TAGGED = \"inversify:tagged\";\nexports.TAGGED_PROP = \"inversify:tagged_props\";\nexports.PARAM_TYPES = \"inversify:paramtypes\";\nexports.DESIGN_PARAM_TYPES = \"design:paramtypes\";\nexports.POST_CONSTRUCT = \"post_construct\";\nfunction getNonCustomTagKeys() {\n return [\n exports.INJECT_TAG,\n exports.MULTI_INJECT_TAG,\n exports.NAME_TAG,\n exports.UNMANAGED_TAG,\n exports.NAMED_TAG,\n exports.OPTIONAL_TAG,\n ];\n}\nexports.NON_CUSTOM_TAG_KEYS = getNonCustomTagKeys();\n//# sourceMappingURL=metadata_keys.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzLmpzP2Y0YmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk5PTl9DVVNUT01fVEFHX0tFWVMgPSBleHBvcnRzLlBPU1RfQ09OU1RSVUNUID0gZXhwb3J0cy5ERVNJR05fUEFSQU1fVFlQRVMgPSBleHBvcnRzLlBBUkFNX1RZUEVTID0gZXhwb3J0cy5UQUdHRURfUFJPUCA9IGV4cG9ydHMuVEFHR0VEID0gZXhwb3J0cy5NVUxUSV9JTkpFQ1RfVEFHID0gZXhwb3J0cy5JTkpFQ1RfVEFHID0gZXhwb3J0cy5PUFRJT05BTF9UQUcgPSBleHBvcnRzLlVOTUFOQUdFRF9UQUcgPSBleHBvcnRzLk5BTUVfVEFHID0gZXhwb3J0cy5OQU1FRF9UQUcgPSB2b2lkIDA7XG5leHBvcnRzLk5BTUVEX1RBRyA9IFwibmFtZWRcIjtcbmV4cG9ydHMuTkFNRV9UQUcgPSBcIm5hbWVcIjtcbmV4cG9ydHMuVU5NQU5BR0VEX1RBRyA9IFwidW5tYW5hZ2VkXCI7XG5leHBvcnRzLk9QVElPTkFMX1RBRyA9IFwib3B0aW9uYWxcIjtcbmV4cG9ydHMuSU5KRUNUX1RBRyA9IFwiaW5qZWN0XCI7XG5leHBvcnRzLk1VTFRJX0lOSkVDVF9UQUcgPSBcIm11bHRpX2luamVjdFwiO1xuZXhwb3J0cy5UQUdHRUQgPSBcImludmVyc2lmeTp0YWdnZWRcIjtcbmV4cG9ydHMuVEFHR0VEX1BST1AgPSBcImludmVyc2lmeTp0YWdnZWRfcHJvcHNcIjtcbmV4cG9ydHMuUEFSQU1fVFlQRVMgPSBcImludmVyc2lmeTpwYXJhbXR5cGVzXCI7XG5leHBvcnRzLkRFU0lHTl9QQVJBTV9UWVBFUyA9IFwiZGVzaWduOnBhcmFtdHlwZXNcIjtcbmV4cG9ydHMuUE9TVF9DT05TVFJVQ1QgPSBcInBvc3RfY29uc3RydWN0XCI7XG5mdW5jdGlvbiBnZXROb25DdXN0b21UYWdLZXlzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAgIGV4cG9ydHMuSU5KRUNUX1RBRyxcbiAgICAgICAgZXhwb3J0cy5NVUxUSV9JTkpFQ1RfVEFHLFxuICAgICAgICBleHBvcnRzLk5BTUVfVEFHLFxuICAgICAgICBleHBvcnRzLlVOTUFOQUdFRF9UQUcsXG4gICAgICAgIGV4cG9ydHMuTkFNRURfVEFHLFxuICAgICAgICBleHBvcnRzLk9QVElPTkFMX1RBRyxcbiAgICBdO1xufVxuZXhwb3J0cy5OT05fQ1VTVE9NX1RBR19LRVlTID0gZ2V0Tm9uQ3VzdG9tVGFnS2V5cygpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWV0YWRhdGFfa2V5cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/container/container.js": /*!****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/container/container.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nvar binding_1 = __webpack_require__(/*! ../bindings/binding */ \"./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding.js\");\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_reader_1 = __webpack_require__(/*! ../planning/metadata_reader */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata_reader.js\");\nvar planner_1 = __webpack_require__(/*! ../planning/planner */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/planner.js\");\nvar resolver_1 = __webpack_require__(/*! ../resolution/resolver */ \"./node_modules/_inversify@5.1.1@inversify/lib/resolution/resolver.js\");\nvar binding_to_syntax_1 = __webpack_require__(/*! ../syntax/binding_to_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_to_syntax.js\");\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js\");\nvar container_snapshot_1 = __webpack_require__(/*! ./container_snapshot */ \"./node_modules/_inversify@5.1.1@inversify/lib/container/container_snapshot.js\");\nvar lookup_1 = __webpack_require__(/*! ./lookup */ \"./node_modules/_inversify@5.1.1@inversify/lib/container/lookup.js\");\nvar Container = (function () {\n function Container(containerOptions) {\n this._appliedMiddleware = [];\n var options = containerOptions || {};\n if (typeof options !== \"object\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_MUST_BE_AN_OBJECT);\n }\n if (options.defaultScope === undefined) {\n options.defaultScope = literal_types_1.BindingScopeEnum.Transient;\n }\n else if (options.defaultScope !== literal_types_1.BindingScopeEnum.Singleton &&\n options.defaultScope !== literal_types_1.BindingScopeEnum.Transient &&\n options.defaultScope !== literal_types_1.BindingScopeEnum.Request) {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_DEFAULT_SCOPE);\n }\n if (options.autoBindInjectable === undefined) {\n options.autoBindInjectable = false;\n }\n else if (typeof options.autoBindInjectable !== \"boolean\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_AUTO_BIND_INJECTABLE);\n }\n if (options.skipBaseClassChecks === undefined) {\n options.skipBaseClassChecks = false;\n }\n else if (typeof options.skipBaseClassChecks !== \"boolean\") {\n throw new Error(\"\" + ERROR_MSGS.CONTAINER_OPTIONS_INVALID_SKIP_BASE_CHECK);\n }\n this.options = {\n autoBindInjectable: options.autoBindInjectable,\n defaultScope: options.defaultScope,\n skipBaseClassChecks: options.skipBaseClassChecks\n };\n this.id = id_1.id();\n this._bindingDictionary = new lookup_1.Lookup();\n this._snapshots = [];\n this._middleware = null;\n this.parent = null;\n this._metadataReader = new metadata_reader_1.MetadataReader();\n }\n Container.merge = function (container1, container2) {\n var container3 = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n container3[_i - 2] = arguments[_i];\n }\n var container = new Container();\n var targetContainers = __spreadArray([container1, container2], container3).map(function (targetContainer) { return planner_1.getBindingDictionary(targetContainer); });\n var bindingDictionary = planner_1.getBindingDictionary(container);\n function copyDictionary(origin, destination) {\n origin.traverse(function (key, value) {\n value.forEach(function (binding) {\n destination.add(binding.serviceIdentifier, binding.clone());\n });\n });\n }\n targetContainers.forEach(function (targetBindingDictionary) {\n copyDictionary(targetBindingDictionary, bindingDictionary);\n });\n return container;\n };\n Container.prototype.load = function () {\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n var getHelpers = this._getContainerModuleHelpersFactory();\n for (var _a = 0, modules_1 = modules; _a < modules_1.length; _a++) {\n var currentModule = modules_1[_a];\n var containerModuleHelpers = getHelpers(currentModule.id);\n currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction);\n }\n };\n Container.prototype.loadAsync = function () {\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n return __awaiter(this, void 0, void 0, function () {\n var getHelpers, _a, modules_2, currentModule, containerModuleHelpers;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n getHelpers = this._getContainerModuleHelpersFactory();\n _a = 0, modules_2 = modules;\n _b.label = 1;\n case 1:\n if (!(_a < modules_2.length)) return [3, 4];\n currentModule = modules_2[_a];\n containerModuleHelpers = getHelpers(currentModule.id);\n return [4, currentModule.registry(containerModuleHelpers.bindFunction, containerModuleHelpers.unbindFunction, containerModuleHelpers.isboundFunction, containerModuleHelpers.rebindFunction)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n _a++;\n return [3, 1];\n case 4: return [2];\n }\n });\n });\n };\n Container.prototype.unload = function () {\n var _this = this;\n var modules = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n modules[_i] = arguments[_i];\n }\n var conditionFactory = function (expected) { return function (item) {\n return item.moduleId === expected;\n }; };\n modules.forEach(function (module) {\n var condition = conditionFactory(module.id);\n _this._bindingDictionary.removeByCondition(condition);\n });\n };\n Container.prototype.bind = function (serviceIdentifier) {\n var scope = this.options.defaultScope || literal_types_1.BindingScopeEnum.Transient;\n var binding = new binding_1.Binding(serviceIdentifier, scope);\n this._bindingDictionary.add(serviceIdentifier, binding);\n return new binding_to_syntax_1.BindingToSyntax(binding);\n };\n Container.prototype.rebind = function (serviceIdentifier) {\n this.unbind(serviceIdentifier);\n return this.bind(serviceIdentifier);\n };\n Container.prototype.unbind = function (serviceIdentifier) {\n try {\n this._bindingDictionary.remove(serviceIdentifier);\n }\n catch (e) {\n throw new Error(ERROR_MSGS.CANNOT_UNBIND + \" \" + serialization_1.getServiceIdentifierAsString(serviceIdentifier));\n }\n };\n Container.prototype.unbindAll = function () {\n this._bindingDictionary = new lookup_1.Lookup();\n };\n Container.prototype.isBound = function (serviceIdentifier) {\n var bound = this._bindingDictionary.hasKey(serviceIdentifier);\n if (!bound && this.parent) {\n bound = this.parent.isBound(serviceIdentifier);\n }\n return bound;\n };\n Container.prototype.isBoundNamed = function (serviceIdentifier, named) {\n return this.isBoundTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.isBoundTagged = function (serviceIdentifier, key, value) {\n var bound = false;\n if (this._bindingDictionary.hasKey(serviceIdentifier)) {\n var bindings = this._bindingDictionary.get(serviceIdentifier);\n var request_1 = planner_1.createMockRequest(this, serviceIdentifier, key, value);\n bound = bindings.some(function (b) { return b.constraint(request_1); });\n }\n if (!bound && this.parent) {\n bound = this.parent.isBoundTagged(serviceIdentifier, key, value);\n }\n return bound;\n };\n Container.prototype.snapshot = function () {\n this._snapshots.push(container_snapshot_1.ContainerSnapshot.of(this._bindingDictionary.clone(), this._middleware));\n };\n Container.prototype.restore = function () {\n var snapshot = this._snapshots.pop();\n if (snapshot === undefined) {\n throw new Error(ERROR_MSGS.NO_MORE_SNAPSHOTS_AVAILABLE);\n }\n this._bindingDictionary = snapshot.bindings;\n this._middleware = snapshot.middleware;\n };\n Container.prototype.createChild = function (containerOptions) {\n var child = new Container(containerOptions || this.options);\n child.parent = this;\n return child;\n };\n Container.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n this._appliedMiddleware = this._appliedMiddleware.concat(middlewares);\n var initial = (this._middleware) ? this._middleware : this._planAndResolve();\n this._middleware = middlewares.reduce(function (prev, curr) { return curr(prev); }, initial);\n };\n Container.prototype.applyCustomMetadataReader = function (metadataReader) {\n this._metadataReader = metadataReader;\n };\n Container.prototype.get = function (serviceIdentifier) {\n return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier);\n };\n Container.prototype.getTagged = function (serviceIdentifier, key, value) {\n return this._get(false, false, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value);\n };\n Container.prototype.getNamed = function (serviceIdentifier, named) {\n return this.getTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.getAll = function (serviceIdentifier) {\n return this._get(true, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier);\n };\n Container.prototype.getAllTagged = function (serviceIdentifier, key, value) {\n return this._get(false, true, literal_types_1.TargetTypeEnum.Variable, serviceIdentifier, key, value);\n };\n Container.prototype.getAllNamed = function (serviceIdentifier, named) {\n return this.getAllTagged(serviceIdentifier, METADATA_KEY.NAMED_TAG, named);\n };\n Container.prototype.resolve = function (constructorFunction) {\n var tempContainer = this.createChild();\n tempContainer.bind(constructorFunction).toSelf();\n this._appliedMiddleware.forEach(function (m) {\n tempContainer.applyMiddleware(m);\n });\n return tempContainer.get(constructorFunction);\n };\n Container.prototype._getContainerModuleHelpersFactory = function () {\n var _this = this;\n var setModuleId = function (bindingToSyntax, moduleId) {\n bindingToSyntax._binding.moduleId = moduleId;\n };\n var getBindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _bind = _this.bind.bind(_this);\n var bindingToSyntax = _bind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax;\n };\n };\n var getUnbindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _unbind = _this.unbind.bind(_this);\n _unbind(serviceIdentifier);\n };\n };\n var getIsboundFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _isBound = _this.isBound.bind(_this);\n return _isBound(serviceIdentifier);\n };\n };\n var getRebindFunction = function (moduleId) {\n return function (serviceIdentifier) {\n var _rebind = _this.rebind.bind(_this);\n var bindingToSyntax = _rebind(serviceIdentifier);\n setModuleId(bindingToSyntax, moduleId);\n return bindingToSyntax;\n };\n };\n return function (mId) { return ({\n bindFunction: getBindFunction(mId),\n isboundFunction: getIsboundFunction(mId),\n rebindFunction: getRebindFunction(mId),\n unbindFunction: getUnbindFunction(mId)\n }); };\n };\n Container.prototype._get = function (avoidConstraints, isMultiInject, targetType, serviceIdentifier, key, value) {\n var result = null;\n var defaultArgs = {\n avoidConstraints: avoidConstraints,\n contextInterceptor: function (context) { return context; },\n isMultiInject: isMultiInject,\n key: key,\n serviceIdentifier: serviceIdentifier,\n targetType: targetType,\n value: value\n };\n if (this._middleware) {\n result = this._middleware(defaultArgs);\n if (result === undefined || result === null) {\n throw new Error(ERROR_MSGS.INVALID_MIDDLEWARE_RETURN);\n }\n }\n else {\n result = this._planAndResolve()(defaultArgs);\n }\n return result;\n };\n Container.prototype._planAndResolve = function () {\n var _this = this;\n return function (args) {\n var context = planner_1.plan(_this._metadataReader, _this, args.isMultiInject, args.targetType, args.serviceIdentifier, args.key, args.value, args.avoidConstraints);\n context = args.contextInterceptor(context);\n var result = resolver_1.resolve(context);\n return result;\n };\n };\n return Container;\n}());\nexports.Container = Container;\n//# sourceMappingURL=container.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnRhaW5lci9jb250YWluZXIuanM/ZjZlZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0EsMkJBQTJCLCtEQUErRCxnQkFBZ0IsRUFBRSxFQUFFO0FBQzlHO0FBQ0EsbUNBQW1DLE1BQU0sNkJBQTZCLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDakcsa0NBQWtDLE1BQU0saUNBQWlDLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDcEcsK0JBQStCLHFGQUFxRjtBQUNwSDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSw2QkFBNkIsMEJBQTBCLGFBQWEsRUFBRSxxQkFBcUI7QUFDeEcsZ0JBQWdCLHFEQUFxRCxvRUFBb0UsYUFBYSxFQUFFO0FBQ3hKLHNCQUFzQixzQkFBc0IscUJBQXFCLEdBQUc7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDLGtDQUFrQyxTQUFTO0FBQzNDLGtDQUFrQyxXQUFXLFVBQVU7QUFDdkQseUNBQXlDLGNBQWM7QUFDdkQ7QUFDQSw2R0FBNkcsT0FBTyxVQUFVO0FBQzlILGdGQUFnRixpQkFBaUIsT0FBTztBQUN4Ryx3REFBd0QsZ0JBQWdCLFFBQVEsT0FBTztBQUN2Riw4Q0FBOEMsZ0JBQWdCLGdCQUFnQixPQUFPO0FBQ3JGO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQSxTQUFTLFlBQVksYUFBYSxPQUFPLEVBQUUsVUFBVSxXQUFXO0FBQ2hFLG1DQUFtQyxTQUFTO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxRQUFRO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsOEZBQXFCO0FBQzdDLGlCQUFpQixtQkFBTyxDQUFDLHNHQUF5QjtBQUNsRCxzQkFBc0IsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDMUQsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELHdCQUF3QixtQkFBTyxDQUFDLDhHQUE2QjtBQUM3RCxnQkFBZ0IsbUJBQU8sQ0FBQyw4RkFBcUI7QUFDN0MsaUJBQWlCLG1CQUFPLENBQUMsb0dBQXdCO0FBQ2pELDBCQUEwQixtQkFBTyxDQUFDLDhHQUE2QjtBQUMvRCxXQUFXLG1CQUFPLENBQUMsOEVBQWE7QUFDaEMsc0JBQXNCLG1CQUFPLENBQUMsb0dBQXdCO0FBQ3RELDJCQUEyQixtQkFBTyxDQUFDLDJHQUFzQjtBQUN6RCxlQUFlLG1CQUFPLENBQUMsbUZBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsbUhBQW1ILHdEQUF3RCxFQUFFO0FBQzdLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHVCQUF1QjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELGdDQUFnQyxFQUFFO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxRUFBcUUsbUJBQW1CLEVBQUU7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELGdCQUFnQixFQUFFO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9jb250YWluZXIvY29udGFpbmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBpbCA9IGZyb20ubGVuZ3RoLCBqID0gdG8ubGVuZ3RoOyBpIDwgaWw7IGkrKywgaisrKVxuICAgICAgICB0b1tqXSA9IGZyb21baV07XG4gICAgcmV0dXJuIHRvO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29udGFpbmVyID0gdm9pZCAwO1xudmFyIGJpbmRpbmdfMSA9IHJlcXVpcmUoXCIuLi9iaW5kaW5ncy9iaW5kaW5nXCIpO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgbGl0ZXJhbF90eXBlc18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9saXRlcmFsX3R5cGVzXCIpO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBtZXRhZGF0YV9yZWFkZXJfMSA9IHJlcXVpcmUoXCIuLi9wbGFubmluZy9tZXRhZGF0YV9yZWFkZXJcIik7XG52YXIgcGxhbm5lcl8xID0gcmVxdWlyZShcIi4uL3BsYW5uaW5nL3BsYW5uZXJcIik7XG52YXIgcmVzb2x2ZXJfMSA9IHJlcXVpcmUoXCIuLi9yZXNvbHV0aW9uL3Jlc29sdmVyXCIpO1xudmFyIGJpbmRpbmdfdG9fc3ludGF4XzEgPSByZXF1aXJlKFwiLi4vc3ludGF4L2JpbmRpbmdfdG9fc3ludGF4XCIpO1xudmFyIGlkXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvaWRcIik7XG52YXIgc2VyaWFsaXphdGlvbl8xID0gcmVxdWlyZShcIi4uL3V0aWxzL3NlcmlhbGl6YXRpb25cIik7XG52YXIgY29udGFpbmVyX3NuYXBzaG90XzEgPSByZXF1aXJlKFwiLi9jb250YWluZXJfc25hcHNob3RcIik7XG52YXIgbG9va3VwXzEgPSByZXF1aXJlKFwiLi9sb29rdXBcIik7XG52YXIgQ29udGFpbmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb250YWluZXIoY29udGFpbmVyT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9hcHBsaWVkTWlkZGxld2FyZSA9IFtdO1xuICAgICAgICB2YXIgb3B0aW9ucyA9IGNvbnRhaW5lck9wdGlvbnMgfHwge307XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiXCIgKyBFUlJPUl9NU0dTLkNPTlRBSU5FUl9PUFRJT05TX01VU1RfQkVfQU5fT0JKRUNUKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5kZWZhdWx0U2NvcGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3B0aW9ucy5kZWZhdWx0U2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5UcmFuc2llbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5kZWZhdWx0U2NvcGUgIT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlNpbmdsZXRvbiAmJlxuICAgICAgICAgICAgb3B0aW9ucy5kZWZhdWx0U2NvcGUgIT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlRyYW5zaWVudCAmJlxuICAgICAgICAgICAgb3B0aW9ucy5kZWZhdWx0U2NvcGUgIT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlJlcXVlc3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlwiICsgRVJST1JfTVNHUy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX0RFRkFVTFRfU0NPUEUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmF1dG9CaW5kSW5qZWN0YWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcHRpb25zLmF1dG9CaW5kSW5qZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9CaW5kSW5qZWN0YWJsZSAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlwiICsgRVJST1JfTVNHUy5DT05UQUlORVJfT1BUSU9OU19JTlZBTElEX0FVVE9fQklORF9JTkpFQ1RBQkxFKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5za2lwQmFzZUNsYXNzQ2hlY2tzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2tpcEJhc2VDbGFzc0NoZWNrcyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLnNraXBCYXNlQ2xhc3NDaGVja3MgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJcIiArIEVSUk9SX01TR1MuQ09OVEFJTkVSX09QVElPTlNfSU5WQUxJRF9TS0lQX0JBU0VfQ0hFQ0spO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGF1dG9CaW5kSW5qZWN0YWJsZTogb3B0aW9ucy5hdXRvQmluZEluamVjdGFibGUsXG4gICAgICAgICAgICBkZWZhdWx0U2NvcGU6IG9wdGlvbnMuZGVmYXVsdFNjb3BlLFxuICAgICAgICAgICAgc2tpcEJhc2VDbGFzc0NoZWNrczogb3B0aW9ucy5za2lwQmFzZUNsYXNzQ2hlY2tzXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaWQgPSBpZF8xLmlkKCk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmdEaWN0aW9uYXJ5ID0gbmV3IGxvb2t1cF8xLkxvb2t1cCgpO1xuICAgICAgICB0aGlzLl9zbmFwc2hvdHMgPSBbXTtcbiAgICAgICAgdGhpcy5fbWlkZGxld2FyZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fbWV0YWRhdGFSZWFkZXIgPSBuZXcgbWV0YWRhdGFfcmVhZGVyXzEuTWV0YWRhdGFSZWFkZXIoKTtcbiAgICB9XG4gICAgQ29udGFpbmVyLm1lcmdlID0gZnVuY3Rpb24gKGNvbnRhaW5lcjEsIGNvbnRhaW5lcjIpIHtcbiAgICAgICAgdmFyIGNvbnRhaW5lcjMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTtcbiAgICAgICAgdmFyIHRhcmdldENvbnRhaW5lcnMgPSBfX3NwcmVhZEFycmF5KFtjb250YWluZXIxLCBjb250YWluZXIyXSwgY29udGFpbmVyMykubWFwKGZ1bmN0aW9uICh0YXJnZXRDb250YWluZXIpIHsgcmV0dXJuIHBsYW5uZXJfMS5nZXRCaW5kaW5nRGljdGlvbmFyeSh0YXJnZXRDb250YWluZXIpOyB9KTtcbiAgICAgICAgdmFyIGJpbmRpbmdEaWN0aW9uYXJ5ID0gcGxhbm5lcl8xLmdldEJpbmRpbmdEaWN0aW9uYXJ5KGNvbnRhaW5lcik7XG4gICAgICAgIGZ1bmN0aW9uIGNvcHlEaWN0aW9uYXJ5KG9yaWdpbiwgZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIG9yaWdpbi50cmF2ZXJzZShmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGJpbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKGJpbmRpbmcuc2VydmljZUlkZW50aWZpZXIsIGJpbmRpbmcuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRDb250YWluZXJzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldEJpbmRpbmdEaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICBjb3B5RGljdGlvbmFyeSh0YXJnZXRCaW5kaW5nRGljdGlvbmFyeSwgYmluZGluZ0RpY3Rpb25hcnkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG1vZHVsZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIG1vZHVsZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZ2V0SGVscGVycyA9IHRoaXMuX2dldENvbnRhaW5lck1vZHVsZUhlbHBlcnNGYWN0b3J5KCk7XG4gICAgICAgIGZvciAodmFyIF9hID0gMCwgbW9kdWxlc18xID0gbW9kdWxlczsgX2EgPCBtb2R1bGVzXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudE1vZHVsZSA9IG1vZHVsZXNfMVtfYV07XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyTW9kdWxlSGVscGVycyA9IGdldEhlbHBlcnMoY3VycmVudE1vZHVsZS5pZCk7XG4gICAgICAgICAgICBjdXJyZW50TW9kdWxlLnJlZ2lzdHJ5KGNvbnRhaW5lck1vZHVsZUhlbHBlcnMuYmluZEZ1bmN0aW9uLCBjb250YWluZXJNb2R1bGVIZWxwZXJzLnVuYmluZEZ1bmN0aW9uLCBjb250YWluZXJNb2R1bGVIZWxwZXJzLmlzYm91bmRGdW5jdGlvbiwgY29udGFpbmVyTW9kdWxlSGVscGVycy5yZWJpbmRGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUubG9hZEFzeW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbW9kdWxlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgbW9kdWxlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBnZXRIZWxwZXJzLCBfYSwgbW9kdWxlc18yLCBjdXJyZW50TW9kdWxlLCBjb250YWluZXJNb2R1bGVIZWxwZXJzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SGVscGVycyA9IHRoaXMuX2dldENvbnRhaW5lck1vZHVsZUhlbHBlcnNGYWN0b3J5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYSA9IDAsIG1vZHVsZXNfMiA9IG1vZHVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKF9hIDwgbW9kdWxlc18yLmxlbmd0aCkpIHJldHVybiBbMywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9kdWxlID0gbW9kdWxlc18yW19hXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lck1vZHVsZUhlbHBlcnMgPSBnZXRIZWxwZXJzKGN1cnJlbnRNb2R1bGUuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBjdXJyZW50TW9kdWxlLnJlZ2lzdHJ5KGNvbnRhaW5lck1vZHVsZUhlbHBlcnMuYmluZEZ1bmN0aW9uLCBjb250YWluZXJNb2R1bGVIZWxwZXJzLnVuYmluZEZ1bmN0aW9uLCBjb250YWluZXJNb2R1bGVIZWxwZXJzLmlzYm91bmRGdW5jdGlvbiwgY29udGFpbmVyTW9kdWxlSGVscGVycy5yZWJpbmRGdW5jdGlvbildO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDM7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDFdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS51bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBtb2R1bGVzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBtb2R1bGVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbmRpdGlvbkZhY3RvcnkgPSBmdW5jdGlvbiAoZXhwZWN0ZWQpIHsgcmV0dXJuIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5tb2R1bGVJZCA9PT0gZXhwZWN0ZWQ7XG4gICAgICAgIH07IH07XG4gICAgICAgIG1vZHVsZXMuZm9yRWFjaChmdW5jdGlvbiAobW9kdWxlKSB7XG4gICAgICAgICAgICB2YXIgY29uZGl0aW9uID0gY29uZGl0aW9uRmFjdG9yeShtb2R1bGUuaWQpO1xuICAgICAgICAgICAgX3RoaXMuX2JpbmRpbmdEaWN0aW9uYXJ5LnJlbW92ZUJ5Q29uZGl0aW9uKGNvbmRpdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIHZhciBzY29wZSA9IHRoaXMub3B0aW9ucy5kZWZhdWx0U2NvcGUgfHwgbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uVHJhbnNpZW50O1xuICAgICAgICB2YXIgYmluZGluZyA9IG5ldyBiaW5kaW5nXzEuQmluZGluZyhzZXJ2aWNlSWRlbnRpZmllciwgc2NvcGUpO1xuICAgICAgICB0aGlzLl9iaW5kaW5nRGljdGlvbmFyeS5hZGQoc2VydmljZUlkZW50aWZpZXIsIGJpbmRpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfdG9fc3ludGF4XzEuQmluZGluZ1RvU3ludGF4KGJpbmRpbmcpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5yZWJpbmQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgdGhpcy51bmJpbmQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5iaW5kKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUudW5iaW5kID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9iaW5kaW5nRGljdGlvbmFyeS5yZW1vdmUoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5DQU5OT1RfVU5CSU5EICsgXCIgXCIgKyBzZXJpYWxpemF0aW9uXzEuZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZyhzZXJ2aWNlSWRlbnRpZmllcikpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnVuYmluZEFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZ0RpY3Rpb25hcnkgPSBuZXcgbG9va3VwXzEuTG9va3VwKCk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmlzQm91bmQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgdmFyIGJvdW5kID0gdGhpcy5fYmluZGluZ0RpY3Rpb25hcnkuaGFzS2V5KHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgaWYgKCFib3VuZCAmJiB0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgYm91bmQgPSB0aGlzLnBhcmVudC5pc0JvdW5kKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm91bmQ7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmlzQm91bmROYW1lZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwgbmFtZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCb3VuZFRhZ2dlZChzZXJ2aWNlSWRlbnRpZmllciwgTUVUQURBVEFfS0VZLk5BTUVEX1RBRywgbmFtZWQpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5pc0JvdW5kVGFnZ2VkID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyLCBrZXksIHZhbHVlKSB7XG4gICAgICAgIHZhciBib3VuZCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fYmluZGluZ0RpY3Rpb25hcnkuaGFzS2V5KHNlcnZpY2VJZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgdmFyIGJpbmRpbmdzID0gdGhpcy5fYmluZGluZ0RpY3Rpb25hcnkuZ2V0KHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHZhciByZXF1ZXN0XzEgPSBwbGFubmVyXzEuY3JlYXRlTW9ja1JlcXVlc3QodGhpcywgc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgYm91bmQgPSBiaW5kaW5ncy5zb21lKGZ1bmN0aW9uIChiKSB7IHJldHVybiBiLmNvbnN0cmFpbnQocmVxdWVzdF8xKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFib3VuZCAmJiB0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgYm91bmQgPSB0aGlzLnBhcmVudC5pc0JvdW5kVGFnZ2VkKHNlcnZpY2VJZGVudGlmaWVyLCBrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm91bmQ7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnNuYXBzaG90ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9zbmFwc2hvdHMucHVzaChjb250YWluZXJfc25hcHNob3RfMS5Db250YWluZXJTbmFwc2hvdC5vZih0aGlzLl9iaW5kaW5nRGljdGlvbmFyeS5jbG9uZSgpLCB0aGlzLl9taWRkbGV3YXJlKSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMuX3NuYXBzaG90cy5wb3AoKTtcbiAgICAgICAgaWYgKHNuYXBzaG90ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLk5PX01PUkVfU05BUFNIT1RTX0FWQUlMQUJMRSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYmluZGluZ0RpY3Rpb25hcnkgPSBzbmFwc2hvdC5iaW5kaW5ncztcbiAgICAgICAgdGhpcy5fbWlkZGxld2FyZSA9IHNuYXBzaG90Lm1pZGRsZXdhcmU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmNyZWF0ZUNoaWxkID0gZnVuY3Rpb24gKGNvbnRhaW5lck9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gbmV3IENvbnRhaW5lcihjb250YWluZXJPcHRpb25zIHx8IHRoaXMub3B0aW9ucyk7XG4gICAgICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYXBwbHlNaWRkbGV3YXJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbWlkZGxld2FyZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIG1pZGRsZXdhcmVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXBwbGllZE1pZGRsZXdhcmUgPSB0aGlzLl9hcHBsaWVkTWlkZGxld2FyZS5jb25jYXQobWlkZGxld2FyZXMpO1xuICAgICAgICB2YXIgaW5pdGlhbCA9ICh0aGlzLl9taWRkbGV3YXJlKSA/IHRoaXMuX21pZGRsZXdhcmUgOiB0aGlzLl9wbGFuQW5kUmVzb2x2ZSgpO1xuICAgICAgICB0aGlzLl9taWRkbGV3YXJlID0gbWlkZGxld2FyZXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7IHJldHVybiBjdXJyKHByZXYpOyB9LCBpbml0aWFsKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYXBwbHlDdXN0b21NZXRhZGF0YVJlYWRlciA9IGZ1bmN0aW9uIChtZXRhZGF0YVJlYWRlcikge1xuICAgICAgICB0aGlzLl9tZXRhZGF0YVJlYWRlciA9IG1ldGFkYXRhUmVhZGVyO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldChmYWxzZSwgZmFsc2UsIGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5WYXJpYWJsZSwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRUYWdnZWQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldChmYWxzZSwgZmFsc2UsIGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5WYXJpYWJsZSwgc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXROYW1lZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwgbmFtZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFnZ2VkKHNlcnZpY2VJZGVudGlmaWVyLCBNRVRBREFUQV9LRVkuTkFNRURfVEFHLCBuYW1lZCk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0KHRydWUsIHRydWUsIGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5WYXJpYWJsZSwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRBbGxUYWdnZWQgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldChmYWxzZSwgdHJ1ZSwgbGl0ZXJhbF90eXBlc18xLlRhcmdldFR5cGVFbnVtLlZhcmlhYmxlLCBzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSk7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldEFsbE5hbWVkID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyLCBuYW1lZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGxUYWdnZWQoc2VydmljZUlkZW50aWZpZXIsIE1FVEFEQVRBX0tFWS5OQU1FRF9UQUcsIG5hbWVkKTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChjb25zdHJ1Y3RvckZ1bmN0aW9uKSB7XG4gICAgICAgIHZhciB0ZW1wQ29udGFpbmVyID0gdGhpcy5jcmVhdGVDaGlsZCgpO1xuICAgICAgICB0ZW1wQ29udGFpbmVyLmJpbmQoY29uc3RydWN0b3JGdW5jdGlvbikudG9TZWxmKCk7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRNaWRkbGV3YXJlLmZvckVhY2goZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICAgIHRlbXBDb250YWluZXIuYXBwbHlNaWRkbGV3YXJlKG0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRlbXBDb250YWluZXIuZ2V0KGNvbnN0cnVjdG9yRnVuY3Rpb24pO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5fZ2V0Q29udGFpbmVyTW9kdWxlSGVscGVyc0ZhY3RvcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBzZXRNb2R1bGVJZCA9IGZ1bmN0aW9uIChiaW5kaW5nVG9TeW50YXgsIG1vZHVsZUlkKSB7XG4gICAgICAgICAgICBiaW5kaW5nVG9TeW50YXguX2JpbmRpbmcubW9kdWxlSWQgPSBtb2R1bGVJZDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldEJpbmRGdW5jdGlvbiA9IGZ1bmN0aW9uIChtb2R1bGVJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICAgIHZhciBfYmluZCA9IF90aGlzLmJpbmQuYmluZChfdGhpcyk7XG4gICAgICAgICAgICAgICAgdmFyIGJpbmRpbmdUb1N5bnRheCA9IF9iaW5kKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICBzZXRNb2R1bGVJZChiaW5kaW5nVG9TeW50YXgsIG1vZHVsZUlkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmluZGluZ1RvU3ludGF4O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldFVuYmluZEZ1bmN0aW9uID0gZnVuY3Rpb24gKG1vZHVsZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgdmFyIF91bmJpbmQgPSBfdGhpcy51bmJpbmQuYmluZChfdGhpcyk7XG4gICAgICAgICAgICAgICAgX3VuYmluZChzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0SXNib3VuZEZ1bmN0aW9uID0gZnVuY3Rpb24gKG1vZHVsZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9pc0JvdW5kID0gX3RoaXMuaXNCb3VuZC5iaW5kKF90aGlzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2lzQm91bmQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldFJlYmluZEZ1bmN0aW9uID0gZnVuY3Rpb24gKG1vZHVsZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9yZWJpbmQgPSBfdGhpcy5yZWJpbmQuYmluZChfdGhpcyk7XG4gICAgICAgICAgICAgICAgdmFyIGJpbmRpbmdUb1N5bnRheCA9IF9yZWJpbmQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHNldE1vZHVsZUlkKGJpbmRpbmdUb1N5bnRheCwgbW9kdWxlSWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBiaW5kaW5nVG9TeW50YXg7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG1JZCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGJpbmRGdW5jdGlvbjogZ2V0QmluZEZ1bmN0aW9uKG1JZCksXG4gICAgICAgICAgICBpc2JvdW5kRnVuY3Rpb246IGdldElzYm91bmRGdW5jdGlvbihtSWQpLFxuICAgICAgICAgICAgcmViaW5kRnVuY3Rpb246IGdldFJlYmluZEZ1bmN0aW9uKG1JZCksXG4gICAgICAgICAgICB1bmJpbmRGdW5jdGlvbjogZ2V0VW5iaW5kRnVuY3Rpb24obUlkKVxuICAgICAgICB9KTsgfTtcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuX2dldCA9IGZ1bmN0aW9uIChhdm9pZENvbnN0cmFpbnRzLCBpc011bHRpSW5qZWN0LCB0YXJnZXRUeXBlLCBzZXJ2aWNlSWRlbnRpZmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgdmFyIGRlZmF1bHRBcmdzID0ge1xuICAgICAgICAgICAgYXZvaWRDb25zdHJhaW50czogYXZvaWRDb25zdHJhaW50cyxcbiAgICAgICAgICAgIGNvbnRleHRJbnRlcmNlcHRvcjogZnVuY3Rpb24gKGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQ7IH0sXG4gICAgICAgICAgICBpc011bHRpSW5qZWN0OiBpc011bHRpSW5qZWN0LFxuICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICBzZXJ2aWNlSWRlbnRpZmllcjogc2VydmljZUlkZW50aWZpZXIsXG4gICAgICAgICAgICB0YXJnZXRUeXBlOiB0YXJnZXRUeXBlLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9taWRkbGV3YXJlKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLl9taWRkbGV3YXJlKGRlZmF1bHRBcmdzKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5JTlZBTElEX01JRERMRVdBUkVfUkVUVVJOKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX3BsYW5BbmRSZXNvbHZlKCkoZGVmYXVsdEFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLl9wbGFuQW5kUmVzb2x2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IHBsYW5uZXJfMS5wbGFuKF90aGlzLl9tZXRhZGF0YVJlYWRlciwgX3RoaXMsIGFyZ3MuaXNNdWx0aUluamVjdCwgYXJncy50YXJnZXRUeXBlLCBhcmdzLnNlcnZpY2VJZGVudGlmaWVyLCBhcmdzLmtleSwgYXJncy52YWx1ZSwgYXJncy5hdm9pZENvbnN0cmFpbnRzKTtcbiAgICAgICAgICAgIGNvbnRleHQgPSBhcmdzLmNvbnRleHRJbnRlcmNlcHRvcihjb250ZXh0KTtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSByZXNvbHZlcl8xLnJlc29sdmUoY29udGV4dCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRhaW5lcjtcbn0oKSk7XG5leHBvcnRzLkNvbnRhaW5lciA9IENvbnRhaW5lcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnRhaW5lci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/container/container.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/container/container_module.js": /*!***********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/container/container_module.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncContainerModule = exports.ContainerModule = void 0;\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nvar ContainerModule = (function () {\n function ContainerModule(registry) {\n this.id = id_1.id();\n this.registry = registry;\n }\n return ContainerModule;\n}());\nexports.ContainerModule = ContainerModule;\nvar AsyncContainerModule = (function () {\n function AsyncContainerModule(registry) {\n this.id = id_1.id();\n this.registry = registry;\n }\n return AsyncContainerModule;\n}());\nexports.AsyncContainerModule = AsyncContainerModule;\n//# sourceMappingURL=container_module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnRhaW5lci9jb250YWluZXJfbW9kdWxlLmpzPzQzYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLFdBQVcsbUJBQU8sQ0FBQyw4RUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvY29udGFpbmVyL2NvbnRhaW5lcl9tb2R1bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQXN5bmNDb250YWluZXJNb2R1bGUgPSBleHBvcnRzLkNvbnRhaW5lck1vZHVsZSA9IHZvaWQgMDtcbnZhciBpZF8xID0gcmVxdWlyZShcIi4uL3V0aWxzL2lkXCIpO1xudmFyIENvbnRhaW5lck1vZHVsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29udGFpbmVyTW9kdWxlKHJlZ2lzdHJ5KSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZF8xLmlkKCk7XG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSByZWdpc3RyeTtcbiAgICB9XG4gICAgcmV0dXJuIENvbnRhaW5lck1vZHVsZTtcbn0oKSk7XG5leHBvcnRzLkNvbnRhaW5lck1vZHVsZSA9IENvbnRhaW5lck1vZHVsZTtcbnZhciBBc3luY0NvbnRhaW5lck1vZHVsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXN5bmNDb250YWluZXJNb2R1bGUocmVnaXN0cnkpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkXzEuaWQoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IHJlZ2lzdHJ5O1xuICAgIH1cbiAgICByZXR1cm4gQXN5bmNDb250YWluZXJNb2R1bGU7XG59KCkpO1xuZXhwb3J0cy5Bc3luY0NvbnRhaW5lck1vZHVsZSA9IEFzeW5jQ29udGFpbmVyTW9kdWxlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGFpbmVyX21vZHVsZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/container/container_module.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/container/container_snapshot.js": /*!*************************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/container/container_snapshot.js ***! \*************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContainerSnapshot = void 0;\nvar ContainerSnapshot = (function () {\n function ContainerSnapshot() {\n }\n ContainerSnapshot.of = function (bindings, middleware) {\n var snapshot = new ContainerSnapshot();\n snapshot.bindings = bindings;\n snapshot.middleware = middleware;\n return snapshot;\n };\n return ContainerSnapshot;\n}());\nexports.ContainerSnapshot = ContainerSnapshot;\n//# sourceMappingURL=container_snapshot.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnRhaW5lci9jb250YWluZXJfc25hcHNob3QuanM/ZDc3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvY29udGFpbmVyL2NvbnRhaW5lcl9zbmFwc2hvdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db250YWluZXJTbmFwc2hvdCA9IHZvaWQgMDtcbnZhciBDb250YWluZXJTbmFwc2hvdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29udGFpbmVyU25hcHNob3QoKSB7XG4gICAgfVxuICAgIENvbnRhaW5lclNuYXBzaG90Lm9mID0gZnVuY3Rpb24gKGJpbmRpbmdzLCBtaWRkbGV3YXJlKSB7XG4gICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBDb250YWluZXJTbmFwc2hvdCgpO1xuICAgICAgICBzbmFwc2hvdC5iaW5kaW5ncyA9IGJpbmRpbmdzO1xuICAgICAgICBzbmFwc2hvdC5taWRkbGV3YXJlID0gbWlkZGxld2FyZTtcbiAgICAgICAgcmV0dXJuIHNuYXBzaG90O1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRhaW5lclNuYXBzaG90O1xufSgpKTtcbmV4cG9ydHMuQ29udGFpbmVyU25hcHNob3QgPSBDb250YWluZXJTbmFwc2hvdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnRhaW5lcl9zbmFwc2hvdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/container/container_snapshot.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/container/lookup.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/container/lookup.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Lookup = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar Lookup = (function () {\n function Lookup() {\n this._map = new Map();\n }\n Lookup.prototype.getMap = function () {\n return this._map;\n };\n Lookup.prototype.add = function (serviceIdentifier, value) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n if (value === null || value === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n var entry = this._map.get(serviceIdentifier);\n if (entry !== undefined) {\n entry.push(value);\n this._map.set(serviceIdentifier, entry);\n }\n else {\n this._map.set(serviceIdentifier, [value]);\n }\n };\n Lookup.prototype.get = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n var entry = this._map.get(serviceIdentifier);\n if (entry !== undefined) {\n return entry;\n }\n else {\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\n }\n };\n Lookup.prototype.remove = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n if (!this._map.delete(serviceIdentifier)) {\n throw new Error(ERROR_MSGS.KEY_NOT_FOUND);\n }\n };\n Lookup.prototype.removeByCondition = function (condition) {\n var _this = this;\n this._map.forEach(function (entries, key) {\n var updatedEntries = entries.filter(function (entry) { return !condition(entry); });\n if (updatedEntries.length > 0) {\n _this._map.set(key, updatedEntries);\n }\n else {\n _this._map.delete(key);\n }\n });\n };\n Lookup.prototype.hasKey = function (serviceIdentifier) {\n if (serviceIdentifier === null || serviceIdentifier === undefined) {\n throw new Error(ERROR_MSGS.NULL_ARGUMENT);\n }\n return this._map.has(serviceIdentifier);\n };\n Lookup.prototype.clone = function () {\n var copy = new Lookup();\n this._map.forEach(function (value, key) {\n value.forEach(function (b) { return copy.add(key, b.clone()); });\n });\n return copy;\n };\n Lookup.prototype.traverse = function (func) {\n this._map.forEach(function (value, key) {\n func(key, value);\n });\n };\n return Lookup;\n}());\nexports.Lookup = Lookup;\n//# sourceMappingURL=lookup.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnRhaW5lci9sb29rdXAuanM/ZTE3ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsc0dBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFLDBCQUEwQixFQUFFO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxpQ0FBaUMsRUFBRTtBQUMzRSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2NvbnRhaW5lci9sb29rdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTG9va3VwID0gdm9pZCAwO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgTG9va3VwID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBMb29rdXAoKSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgTG9va3VwLnByb3RvdHlwZS5nZXRNYXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXA7XG4gICAgfTtcbiAgICBMb29rdXAucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHNlcnZpY2VJZGVudGlmaWVyID09PSBudWxsIHx8IHNlcnZpY2VJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLk5VTExfQVJHVU1FTlQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5OVUxMX0FSR1VNRU5UKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9tYXAuZ2V0KHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgaWYgKGVudHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGVudHJ5LnB1c2godmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fbWFwLnNldChzZXJ2aWNlSWRlbnRpZmllciwgZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbWFwLnNldChzZXJ2aWNlSWRlbnRpZmllciwgW3ZhbHVlXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIExvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIGlmIChzZXJ2aWNlSWRlbnRpZmllciA9PT0gbnVsbCB8fCBzZXJ2aWNlSWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5OVUxMX0FSR1VNRU5UKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9tYXAuZ2V0KHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgaWYgKGVudHJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLktFWV9OT1RfRk9VTkQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBMb29rdXAucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICBpZiAoc2VydmljZUlkZW50aWZpZXIgPT09IG51bGwgfHwgc2VydmljZUlkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuTlVMTF9BUkdVTUVOVCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9tYXAuZGVsZXRlKHNlcnZpY2VJZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuS0VZX05PVF9GT1VORCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIExvb2t1cC5wcm90b3R5cGUucmVtb3ZlQnlDb25kaXRpb24gPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuX21hcC5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyaWVzLCBrZXkpIHtcbiAgICAgICAgICAgIHZhciB1cGRhdGVkRW50cmllcyA9IGVudHJpZXMuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkgeyByZXR1cm4gIWNvbmRpdGlvbihlbnRyeSk7IH0pO1xuICAgICAgICAgICAgaWYgKHVwZGF0ZWRFbnRyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fbWFwLnNldChrZXksIHVwZGF0ZWRFbnRyaWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF90aGlzLl9tYXAuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9va3VwLnByb3RvdHlwZS5oYXNLZXkgPSBmdW5jdGlvbiAoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICAgICAgaWYgKHNlcnZpY2VJZGVudGlmaWVyID09PSBudWxsIHx8IHNlcnZpY2VJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFUlJPUl9NU0dTLk5VTExfQVJHVU1FTlQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXAuaGFzKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICB9O1xuICAgIExvb2t1cC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IExvb2t1cCgpO1xuICAgICAgICB0aGlzLl9tYXAuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoYikgeyByZXR1cm4gY29weS5hZGQoa2V5LCBiLmNsb25lKCkpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH07XG4gICAgTG9va3VwLnByb3RvdHlwZS50cmF2ZXJzZSA9IGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgICAgIHRoaXMuX21hcC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICBmdW5jKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBMb29rdXA7XG59KCkpO1xuZXhwb3J0cy5Mb29rdXAgPSBMb29rdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb29rdXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/container/lookup.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/inversify.js": /*!******************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/inversify.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiBindToService = exports.getServiceIdentifierAsString = exports.typeConstraint = exports.namedConstraint = exports.taggedConstraint = exports.traverseAncerstors = exports.decorate = exports.id = exports.MetadataReader = exports.postConstruct = exports.targetName = exports.multiInject = exports.unmanaged = exports.optional = exports.LazyServiceIdentifer = exports.inject = exports.named = exports.tagged = exports.injectable = exports.ContainerModule = exports.AsyncContainerModule = exports.TargetTypeEnum = exports.BindingTypeEnum = exports.BindingScopeEnum = exports.Container = exports.METADATA_KEY = void 0;\nvar keys = __webpack_require__(/*! ./constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nexports.METADATA_KEY = keys;\nvar container_1 = __webpack_require__(/*! ./container/container */ \"./node_modules/_inversify@5.1.1@inversify/lib/container/container.js\");\nObject.defineProperty(exports, \"Container\", { enumerable: true, get: function () { return container_1.Container; } });\nvar literal_types_1 = __webpack_require__(/*! ./constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nObject.defineProperty(exports, \"BindingScopeEnum\", { enumerable: true, get: function () { return literal_types_1.BindingScopeEnum; } });\nObject.defineProperty(exports, \"BindingTypeEnum\", { enumerable: true, get: function () { return literal_types_1.BindingTypeEnum; } });\nObject.defineProperty(exports, \"TargetTypeEnum\", { enumerable: true, get: function () { return literal_types_1.TargetTypeEnum; } });\nvar container_module_1 = __webpack_require__(/*! ./container/container_module */ \"./node_modules/_inversify@5.1.1@inversify/lib/container/container_module.js\");\nObject.defineProperty(exports, \"AsyncContainerModule\", { enumerable: true, get: function () { return container_module_1.AsyncContainerModule; } });\nObject.defineProperty(exports, \"ContainerModule\", { enumerable: true, get: function () { return container_module_1.ContainerModule; } });\nvar injectable_1 = __webpack_require__(/*! ./annotation/injectable */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/injectable.js\");\nObject.defineProperty(exports, \"injectable\", { enumerable: true, get: function () { return injectable_1.injectable; } });\nvar tagged_1 = __webpack_require__(/*! ./annotation/tagged */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/tagged.js\");\nObject.defineProperty(exports, \"tagged\", { enumerable: true, get: function () { return tagged_1.tagged; } });\nvar named_1 = __webpack_require__(/*! ./annotation/named */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/named.js\");\nObject.defineProperty(exports, \"named\", { enumerable: true, get: function () { return named_1.named; } });\nvar inject_1 = __webpack_require__(/*! ./annotation/inject */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/inject.js\");\nObject.defineProperty(exports, \"inject\", { enumerable: true, get: function () { return inject_1.inject; } });\nObject.defineProperty(exports, \"LazyServiceIdentifer\", { enumerable: true, get: function () { return inject_1.LazyServiceIdentifer; } });\nvar optional_1 = __webpack_require__(/*! ./annotation/optional */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/optional.js\");\nObject.defineProperty(exports, \"optional\", { enumerable: true, get: function () { return optional_1.optional; } });\nvar unmanaged_1 = __webpack_require__(/*! ./annotation/unmanaged */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/unmanaged.js\");\nObject.defineProperty(exports, \"unmanaged\", { enumerable: true, get: function () { return unmanaged_1.unmanaged; } });\nvar multi_inject_1 = __webpack_require__(/*! ./annotation/multi_inject */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/multi_inject.js\");\nObject.defineProperty(exports, \"multiInject\", { enumerable: true, get: function () { return multi_inject_1.multiInject; } });\nvar target_name_1 = __webpack_require__(/*! ./annotation/target_name */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/target_name.js\");\nObject.defineProperty(exports, \"targetName\", { enumerable: true, get: function () { return target_name_1.targetName; } });\nvar post_construct_1 = __webpack_require__(/*! ./annotation/post_construct */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/post_construct.js\");\nObject.defineProperty(exports, \"postConstruct\", { enumerable: true, get: function () { return post_construct_1.postConstruct; } });\nvar metadata_reader_1 = __webpack_require__(/*! ./planning/metadata_reader */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata_reader.js\");\nObject.defineProperty(exports, \"MetadataReader\", { enumerable: true, get: function () { return metadata_reader_1.MetadataReader; } });\nvar id_1 = __webpack_require__(/*! ./utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nObject.defineProperty(exports, \"id\", { enumerable: true, get: function () { return id_1.id; } });\nvar decorator_utils_1 = __webpack_require__(/*! ./annotation/decorator_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/decorator_utils.js\");\nObject.defineProperty(exports, \"decorate\", { enumerable: true, get: function () { return decorator_utils_1.decorate; } });\nvar constraint_helpers_1 = __webpack_require__(/*! ./syntax/constraint_helpers */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/constraint_helpers.js\");\nObject.defineProperty(exports, \"traverseAncerstors\", { enumerable: true, get: function () { return constraint_helpers_1.traverseAncerstors; } });\nObject.defineProperty(exports, \"taggedConstraint\", { enumerable: true, get: function () { return constraint_helpers_1.taggedConstraint; } });\nObject.defineProperty(exports, \"namedConstraint\", { enumerable: true, get: function () { return constraint_helpers_1.namedConstraint; } });\nObject.defineProperty(exports, \"typeConstraint\", { enumerable: true, get: function () { return constraint_helpers_1.typeConstraint; } });\nvar serialization_1 = __webpack_require__(/*! ./utils/serialization */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js\");\nObject.defineProperty(exports, \"getServiceIdentifierAsString\", { enumerable: true, get: function () { return serialization_1.getServiceIdentifierAsString; } });\nvar binding_utils_1 = __webpack_require__(/*! ./utils/binding_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/binding_utils.js\");\nObject.defineProperty(exports, \"multiBindToService\", { enumerable: true, get: function () { return binding_utils_1.multiBindToService; } });\n//# sourceMappingURL=inversify.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL2ludmVyc2lmeS5qcz82MWNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxXQUFXLG1CQUFPLENBQUMsMkdBQTJCO0FBQzlDO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsbUdBQXVCO0FBQ2pELDZDQUE2QyxxQ0FBcUMsOEJBQThCLEVBQUUsRUFBRTtBQUNwSCxzQkFBc0IsbUJBQU8sQ0FBQywyR0FBMkI7QUFDekQsb0RBQW9ELHFDQUFxQyx5Q0FBeUMsRUFBRSxFQUFFO0FBQ3RJLG1EQUFtRCxxQ0FBcUMsd0NBQXdDLEVBQUUsRUFBRTtBQUNwSSxrREFBa0QscUNBQXFDLHVDQUF1QyxFQUFFLEVBQUU7QUFDbEkseUJBQXlCLG1CQUFPLENBQUMsaUhBQThCO0FBQy9ELHdEQUF3RCxxQ0FBcUMsZ0RBQWdELEVBQUUsRUFBRTtBQUNqSixtREFBbUQscUNBQXFDLDJDQUEyQyxFQUFFLEVBQUU7QUFDdkksbUJBQW1CLG1CQUFPLENBQUMsdUdBQXlCO0FBQ3BELDhDQUE4QyxxQ0FBcUMsZ0NBQWdDLEVBQUUsRUFBRTtBQUN2SCxlQUFlLG1CQUFPLENBQUMsK0ZBQXFCO0FBQzVDLDBDQUEwQyxxQ0FBcUMsd0JBQXdCLEVBQUUsRUFBRTtBQUMzRyxjQUFjLG1CQUFPLENBQUMsNkZBQW9CO0FBQzFDLHlDQUF5QyxxQ0FBcUMsc0JBQXNCLEVBQUUsRUFBRTtBQUN4RyxlQUFlLG1CQUFPLENBQUMsK0ZBQXFCO0FBQzVDLDBDQUEwQyxxQ0FBcUMsd0JBQXdCLEVBQUUsRUFBRTtBQUMzRyx3REFBd0QscUNBQXFDLHNDQUFzQyxFQUFFLEVBQUU7QUFDdkksaUJBQWlCLG1CQUFPLENBQUMsbUdBQXVCO0FBQ2hELDRDQUE0QyxxQ0FBcUMsNEJBQTRCLEVBQUUsRUFBRTtBQUNqSCxrQkFBa0IsbUJBQU8sQ0FBQyxxR0FBd0I7QUFDbEQsNkNBQTZDLHFDQUFxQyw4QkFBOEIsRUFBRSxFQUFFO0FBQ3BILHFCQUFxQixtQkFBTyxDQUFDLDJHQUEyQjtBQUN4RCwrQ0FBK0MscUNBQXFDLG1DQUFtQyxFQUFFLEVBQUU7QUFDM0gsb0JBQW9CLG1CQUFPLENBQUMseUdBQTBCO0FBQ3RELDhDQUE4QyxxQ0FBcUMsaUNBQWlDLEVBQUUsRUFBRTtBQUN4SCx1QkFBdUIsbUJBQU8sQ0FBQywrR0FBNkI7QUFDNUQsaURBQWlELHFDQUFxQyx1Q0FBdUMsRUFBRSxFQUFFO0FBQ2pJLHdCQUF3QixtQkFBTyxDQUFDLDZHQUE0QjtBQUM1RCxrREFBa0QscUNBQXFDLHlDQUF5QyxFQUFFLEVBQUU7QUFDcEksV0FBVyxtQkFBTyxDQUFDLDZFQUFZO0FBQy9CLHNDQUFzQyxxQ0FBcUMsZ0JBQWdCLEVBQUUsRUFBRTtBQUMvRix3QkFBd0IsbUJBQU8sQ0FBQyxpSEFBOEI7QUFDOUQsNENBQTRDLHFDQUFxQyxtQ0FBbUMsRUFBRSxFQUFFO0FBQ3hILDJCQUEyQixtQkFBTyxDQUFDLCtHQUE2QjtBQUNoRSxzREFBc0QscUNBQXFDLGdEQUFnRCxFQUFFLEVBQUU7QUFDL0ksb0RBQW9ELHFDQUFxQyw4Q0FBOEMsRUFBRSxFQUFFO0FBQzNJLG1EQUFtRCxxQ0FBcUMsNkNBQTZDLEVBQUUsRUFBRTtBQUN6SSxrREFBa0QscUNBQXFDLDRDQUE0QyxFQUFFLEVBQUU7QUFDdkksc0JBQXNCLG1CQUFPLENBQUMsbUdBQXVCO0FBQ3JELGdFQUFnRSxxQ0FBcUMscURBQXFELEVBQUUsRUFBRTtBQUM5SixzQkFBc0IsbUJBQU8sQ0FBQyxtR0FBdUI7QUFDckQsc0RBQXNELHFDQUFxQywyQ0FBMkMsRUFBRSxFQUFFO0FBQzFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9pbnZlcnNpZnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubXVsdGlCaW5kVG9TZXJ2aWNlID0gZXhwb3J0cy5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nID0gZXhwb3J0cy50eXBlQ29uc3RyYWludCA9IGV4cG9ydHMubmFtZWRDb25zdHJhaW50ID0gZXhwb3J0cy50YWdnZWRDb25zdHJhaW50ID0gZXhwb3J0cy50cmF2ZXJzZUFuY2Vyc3RvcnMgPSBleHBvcnRzLmRlY29yYXRlID0gZXhwb3J0cy5pZCA9IGV4cG9ydHMuTWV0YWRhdGFSZWFkZXIgPSBleHBvcnRzLnBvc3RDb25zdHJ1Y3QgPSBleHBvcnRzLnRhcmdldE5hbWUgPSBleHBvcnRzLm11bHRpSW5qZWN0ID0gZXhwb3J0cy51bm1hbmFnZWQgPSBleHBvcnRzLm9wdGlvbmFsID0gZXhwb3J0cy5MYXp5U2VydmljZUlkZW50aWZlciA9IGV4cG9ydHMuaW5qZWN0ID0gZXhwb3J0cy5uYW1lZCA9IGV4cG9ydHMudGFnZ2VkID0gZXhwb3J0cy5pbmplY3RhYmxlID0gZXhwb3J0cy5Db250YWluZXJNb2R1bGUgPSBleHBvcnRzLkFzeW5jQ29udGFpbmVyTW9kdWxlID0gZXhwb3J0cy5UYXJnZXRUeXBlRW51bSA9IGV4cG9ydHMuQmluZGluZ1R5cGVFbnVtID0gZXhwb3J0cy5CaW5kaW5nU2NvcGVFbnVtID0gZXhwb3J0cy5Db250YWluZXIgPSBleHBvcnRzLk1FVEFEQVRBX0tFWSA9IHZvaWQgMDtcbnZhciBrZXlzID0gcmVxdWlyZShcIi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG5leHBvcnRzLk1FVEFEQVRBX0tFWSA9IGtleXM7XG52YXIgY29udGFpbmVyXzEgPSByZXF1aXJlKFwiLi9jb250YWluZXIvY29udGFpbmVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29udGFpbmVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb250YWluZXJfMS5Db250YWluZXI7IH0gfSk7XG52YXIgbGl0ZXJhbF90eXBlc18xID0gcmVxdWlyZShcIi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCaW5kaW5nU2NvcGVFbnVtXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkJpbmRpbmdUeXBlRW51bVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRhcmdldFR5cGVFbnVtXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBsaXRlcmFsX3R5cGVzXzEuVGFyZ2V0VHlwZUVudW07IH0gfSk7XG52YXIgY29udGFpbmVyX21vZHVsZV8xID0gcmVxdWlyZShcIi4vY29udGFpbmVyL2NvbnRhaW5lcl9tb2R1bGVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBc3luY0NvbnRhaW5lck1vZHVsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY29udGFpbmVyX21vZHVsZV8xLkFzeW5jQ29udGFpbmVyTW9kdWxlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiQ29udGFpbmVyTW9kdWxlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb250YWluZXJfbW9kdWxlXzEuQ29udGFpbmVyTW9kdWxlOyB9IH0pO1xudmFyIGluamVjdGFibGVfMSA9IHJlcXVpcmUoXCIuL2Fubm90YXRpb24vaW5qZWN0YWJsZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImluamVjdGFibGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluamVjdGFibGVfMS5pbmplY3RhYmxlOyB9IH0pO1xudmFyIHRhZ2dlZF8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi90YWdnZWRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ0YWdnZWRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhZ2dlZF8xLnRhZ2dlZDsgfSB9KTtcbnZhciBuYW1lZF8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi9uYW1lZFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm5hbWVkXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuYW1lZF8xLm5hbWVkOyB9IH0pO1xudmFyIGluamVjdF8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi9pbmplY3RcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpbmplY3RcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluamVjdF8xLmluamVjdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkxhenlTZXJ2aWNlSWRlbnRpZmVyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBpbmplY3RfMS5MYXp5U2VydmljZUlkZW50aWZlcjsgfSB9KTtcbnZhciBvcHRpb25hbF8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi9vcHRpb25hbFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm9wdGlvbmFsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25hbF8xLm9wdGlvbmFsOyB9IH0pO1xudmFyIHVubWFuYWdlZF8xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi91bm1hbmFnZWRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1bm1hbmFnZWRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVubWFuYWdlZF8xLnVubWFuYWdlZDsgfSB9KTtcbnZhciBtdWx0aV9pbmplY3RfMSA9IHJlcXVpcmUoXCIuL2Fubm90YXRpb24vbXVsdGlfaW5qZWN0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibXVsdGlJbmplY3RcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG11bHRpX2luamVjdF8xLm11bHRpSW5qZWN0OyB9IH0pO1xudmFyIHRhcmdldF9uYW1lXzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL3RhcmdldF9uYW1lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidGFyZ2V0TmFtZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGFyZ2V0X25hbWVfMS50YXJnZXROYW1lOyB9IH0pO1xudmFyIHBvc3RfY29uc3RydWN0XzEgPSByZXF1aXJlKFwiLi9hbm5vdGF0aW9uL3Bvc3RfY29uc3RydWN0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicG9zdENvbnN0cnVjdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdF9jb25zdHJ1Y3RfMS5wb3N0Q29uc3RydWN0OyB9IH0pO1xudmFyIG1ldGFkYXRhX3JlYWRlcl8xID0gcmVxdWlyZShcIi4vcGxhbm5pbmcvbWV0YWRhdGFfcmVhZGVyXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiTWV0YWRhdGFSZWFkZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ldGFkYXRhX3JlYWRlcl8xLk1ldGFkYXRhUmVhZGVyOyB9IH0pO1xudmFyIGlkXzEgPSByZXF1aXJlKFwiLi91dGlscy9pZFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImlkXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBpZF8xLmlkOyB9IH0pO1xudmFyIGRlY29yYXRvcl91dGlsc18xID0gcmVxdWlyZShcIi4vYW5ub3RhdGlvbi9kZWNvcmF0b3JfdXRpbHNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWNvcmF0ZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZGVjb3JhdG9yX3V0aWxzXzEuZGVjb3JhdGU7IH0gfSk7XG52YXIgY29uc3RyYWludF9oZWxwZXJzXzEgPSByZXF1aXJlKFwiLi9zeW50YXgvY29uc3RyYWludF9oZWxwZXJzXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidHJhdmVyc2VBbmNlcnN0b3JzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnM7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ0YWdnZWRDb25zdHJhaW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50YWdnZWRDb25zdHJhaW50OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibmFtZWRDb25zdHJhaW50XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS5uYW1lZENvbnN0cmFpbnQ7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ0eXBlQ29uc3RyYWludFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gY29uc3RyYWludF9oZWxwZXJzXzEudHlwZUNvbnN0cmFpbnQ7IH0gfSk7XG52YXIgc2VyaWFsaXphdGlvbl8xID0gcmVxdWlyZShcIi4vdXRpbHMvc2VyaWFsaXphdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmdcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlcmlhbGl6YXRpb25fMS5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nOyB9IH0pO1xudmFyIGJpbmRpbmdfdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzL2JpbmRpbmdfdXRpbHNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJtdWx0aUJpbmRUb1NlcnZpY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJpbmRpbmdfdXRpbHNfMS5tdWx0aUJpbmRUb1NlcnZpY2U7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnZlcnNpZnkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/context.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/context.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nvar Context = (function () {\n function Context(container) {\n this.id = id_1.id();\n this.container = container;\n }\n Context.prototype.addPlan = function (plan) {\n this.plan = plan;\n };\n Context.prototype.setCurrentRequest = function (currentRequest) {\n this.currentRequest = currentRequest;\n };\n return Context;\n}());\nexports.Context = Context;\n//# sourceMappingURL=context.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL2NvbnRleHQuanM/ZTYyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsV0FBVyxtQkFBTyxDQUFDLDhFQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9jb250ZXh0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbnRleHQgPSB2b2lkIDA7XG52YXIgaWRfMSA9IHJlcXVpcmUoXCIuLi91dGlscy9pZFwiKTtcbnZhciBDb250ZXh0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb250ZXh0KGNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLmlkID0gaWRfMS5pZCgpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9XG4gICAgQ29udGV4dC5wcm90b3R5cGUuYWRkUGxhbiA9IGZ1bmN0aW9uIChwbGFuKSB7XG4gICAgICAgIHRoaXMucGxhbiA9IHBsYW47XG4gICAgfTtcbiAgICBDb250ZXh0LnByb3RvdHlwZS5zZXRDdXJyZW50UmVxdWVzdCA9IGZ1bmN0aW9uIChjdXJyZW50UmVxdWVzdCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0ID0gY3VycmVudFJlcXVlc3Q7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGV4dDtcbn0oKSk7XG5leHBvcnRzLkNvbnRleHQgPSBDb250ZXh0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/context.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js": /*!**************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Metadata = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar Metadata = (function () {\n function Metadata(key, value) {\n this.key = key;\n this.value = value;\n }\n Metadata.prototype.toString = function () {\n if (this.key === METADATA_KEY.NAMED_TAG) {\n return \"named: \" + this.value.toString() + \" \";\n }\n else {\n return \"tagged: { key:\" + this.key.toString() + \", value: \" + this.value + \" }\";\n }\n };\n return Metadata;\n}());\nexports.Metadata = Metadata;\n//# sourceMappingURL=metadata.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL21ldGFkYXRhLmpzP2FjYzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLDRHQUE0QjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw2REFBNkQ7QUFDMUY7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL21ldGFkYXRhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk1ldGFkYXRhID0gdm9pZCAwO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBNZXRhZGF0YSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWV0YWRhdGEoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBNZXRhZGF0YS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmtleSA9PT0gTUVUQURBVEFfS0VZLk5BTUVEX1RBRykge1xuICAgICAgICAgICAgcmV0dXJuIFwibmFtZWQ6IFwiICsgdGhpcy52YWx1ZS50b1N0cmluZygpICsgXCIgXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gXCJ0YWdnZWQ6IHsga2V5OlwiICsgdGhpcy5rZXkudG9TdHJpbmcoKSArIFwiLCB2YWx1ZTogXCIgKyB0aGlzLnZhbHVlICsgXCIgfVwiO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gTWV0YWRhdGE7XG59KCkpO1xuZXhwb3J0cy5NZXRhZGF0YSA9IE1ldGFkYXRhO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWV0YWRhdGEuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata_reader.js": /*!*********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata_reader.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetadataReader = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar MetadataReader = (function () {\n function MetadataReader() {\n }\n MetadataReader.prototype.getConstructorMetadata = function (constructorFunc) {\n var compilerGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, constructorFunc);\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc);\n return {\n compilerGeneratedMetadata: compilerGeneratedMetadata,\n userGeneratedMetadata: userGeneratedMetadata || {}\n };\n };\n MetadataReader.prototype.getPropertiesMetadata = function (constructorFunc) {\n var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc) || [];\n return userGeneratedMetadata;\n };\n return MetadataReader;\n}());\nexports.MetadataReader = MetadataReader;\n//# sourceMappingURL=metadata_reader.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL21ldGFkYXRhX3JlYWRlci5qcz9mZGQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvcGxhbm5pbmcvbWV0YWRhdGFfcmVhZGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLk1ldGFkYXRhUmVhZGVyID0gdm9pZCAwO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBNZXRhZGF0YVJlYWRlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWV0YWRhdGFSZWFkZXIoKSB7XG4gICAgfVxuICAgIE1ldGFkYXRhUmVhZGVyLnByb3RvdHlwZS5nZXRDb25zdHJ1Y3Rvck1ldGFkYXRhID0gZnVuY3Rpb24gKGNvbnN0cnVjdG9yRnVuYykge1xuICAgICAgICB2YXIgY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTUVUQURBVEFfS0VZLlBBUkFNX1RZUEVTLCBjb25zdHJ1Y3RvckZ1bmMpO1xuICAgICAgICB2YXIgdXNlckdlbmVyYXRlZE1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVRBREFUQV9LRVkuVEFHR0VELCBjb25zdHJ1Y3RvckZ1bmMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YTogY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YSxcbiAgICAgICAgICAgIHVzZXJHZW5lcmF0ZWRNZXRhZGF0YTogdXNlckdlbmVyYXRlZE1ldGFkYXRhIHx8IHt9XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBNZXRhZGF0YVJlYWRlci5wcm90b3R5cGUuZ2V0UHJvcGVydGllc01ldGFkYXRhID0gZnVuY3Rpb24gKGNvbnN0cnVjdG9yRnVuYykge1xuICAgICAgICB2YXIgdXNlckdlbmVyYXRlZE1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShNRVRBREFUQV9LRVkuVEFHR0VEX1BST1AsIGNvbnN0cnVjdG9yRnVuYykgfHwgW107XG4gICAgICAgIHJldHVybiB1c2VyR2VuZXJhdGVkTWV0YWRhdGE7XG4gICAgfTtcbiAgICByZXR1cm4gTWV0YWRhdGFSZWFkZXI7XG59KCkpO1xuZXhwb3J0cy5NZXRhZGF0YVJlYWRlciA9IE1ldGFkYXRhUmVhZGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWV0YWRhdGFfcmVhZGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata_reader.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/plan.js": /*!**********************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/plan.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Plan = void 0;\nvar Plan = (function () {\n function Plan(parentContext, rootRequest) {\n this.parentContext = parentContext;\n this.rootRequest = rootRequest;\n }\n return Plan;\n}());\nexports.Plan = Plan;\n//# sourceMappingURL=plan.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3BsYW4uanM/YjZhNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3BsYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUGxhbiA9IHZvaWQgMDtcbnZhciBQbGFuID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQbGFuKHBhcmVudENvbnRleHQsIHJvb3RSZXF1ZXN0KSB7XG4gICAgICAgIHRoaXMucGFyZW50Q29udGV4dCA9IHBhcmVudENvbnRleHQ7XG4gICAgICAgIHRoaXMucm9vdFJlcXVlc3QgPSByb290UmVxdWVzdDtcbiAgICB9XG4gICAgcmV0dXJuIFBsYW47XG59KCkpO1xuZXhwb3J0cy5QbGFuID0gUGxhbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBsYW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/plan.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/planner.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/planner.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBindingDictionary = exports.createMockRequest = exports.plan = void 0;\nvar binding_count_1 = __webpack_require__(/*! ../bindings/binding_count */ \"./node_modules/_inversify@5.1.1@inversify/lib/bindings/binding_count.js\");\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar exceptions_1 = __webpack_require__(/*! ../utils/exceptions */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/exceptions.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js\");\nvar context_1 = __webpack_require__(/*! ./context */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/context.js\");\nvar metadata_1 = __webpack_require__(/*! ./metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar plan_1 = __webpack_require__(/*! ./plan */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/plan.js\");\nvar reflection_utils_1 = __webpack_require__(/*! ./reflection_utils */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/reflection_utils.js\");\nvar request_1 = __webpack_require__(/*! ./request */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/request.js\");\nvar target_1 = __webpack_require__(/*! ./target */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/target.js\");\nfunction getBindingDictionary(cntnr) {\n return cntnr._bindingDictionary;\n}\nexports.getBindingDictionary = getBindingDictionary;\nfunction _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {\n var metadataKey = isMultiInject ? METADATA_KEY.MULTI_INJECT_TAG : METADATA_KEY.INJECT_TAG;\n var injectMetadata = new metadata_1.Metadata(metadataKey, serviceIdentifier);\n var target = new target_1.Target(targetType, name, serviceIdentifier, injectMetadata);\n if (key !== undefined) {\n var tagMetadata = new metadata_1.Metadata(key, value);\n target.metadata.push(tagMetadata);\n }\n return target;\n}\nfunction _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {\n var bindings = getBindings(context.container, target.serviceIdentifier);\n var activeBindings = [];\n if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&\n context.container.options.autoBindInjectable &&\n typeof target.serviceIdentifier === \"function\" &&\n metadataReader.getConstructorMetadata(target.serviceIdentifier).compilerGeneratedMetadata) {\n context.container.bind(target.serviceIdentifier).toSelf();\n bindings = getBindings(context.container, target.serviceIdentifier);\n }\n if (!avoidConstraints) {\n activeBindings = bindings.filter(function (binding) {\n var request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target);\n return binding.constraint(request);\n });\n }\n else {\n activeBindings = bindings;\n }\n _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);\n return activeBindings;\n}\nfunction _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {\n switch (bindings.length) {\n case binding_count_1.BindingCount.NoBindingsAvailable:\n if (target.isOptional()) {\n return bindings;\n }\n else {\n var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);\n var msg = ERROR_MSGS.NOT_REGISTERED;\n msg += serialization_1.listMetadataForTarget(serviceIdentifierString, target);\n msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\n throw new Error(msg);\n }\n case binding_count_1.BindingCount.OnlyOneBindingAvailable:\n if (!target.isArray()) {\n return bindings;\n }\n case binding_count_1.BindingCount.MultipleBindingsAvailable:\n default:\n if (!target.isArray()) {\n var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);\n var msg = ERROR_MSGS.AMBIGUOUS_MATCH + \" \" + serviceIdentifierString;\n msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);\n throw new Error(msg);\n }\n else {\n return bindings;\n }\n }\n}\nfunction _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {\n var activeBindings;\n var childRequest;\n if (parentRequest === null) {\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);\n childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target);\n var thePlan = new plan_1.Plan(context, childRequest);\n context.addPlan(thePlan);\n }\n else {\n activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);\n childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);\n }\n activeBindings.forEach(function (binding) {\n var subChildRequest = null;\n if (target.isArray()) {\n subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);\n }\n else {\n if (binding.cache) {\n return;\n }\n subChildRequest = childRequest;\n }\n if (binding.type === literal_types_1.BindingTypeEnum.Instance && binding.implementationType !== null) {\n var dependencies = reflection_utils_1.getDependencies(metadataReader, binding.implementationType);\n if (!context.container.options.skipBaseClassChecks) {\n var baseClassDependencyCount = reflection_utils_1.getBaseClassDependencyCount(metadataReader, binding.implementationType);\n if (dependencies.length < baseClassDependencyCount) {\n var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH(reflection_utils_1.getFunctionName(binding.implementationType));\n throw new Error(error);\n }\n }\n dependencies.forEach(function (dependency) {\n _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);\n });\n }\n });\n}\nfunction getBindings(container, serviceIdentifier) {\n var bindings = [];\n var bindingDictionary = getBindingDictionary(container);\n if (bindingDictionary.hasKey(serviceIdentifier)) {\n bindings = bindingDictionary.get(serviceIdentifier);\n }\n else if (container.parent !== null) {\n bindings = getBindings(container.parent, serviceIdentifier);\n }\n return bindings;\n}\nfunction plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) {\n if (avoidConstraints === void 0) { avoidConstraints = false; }\n var context = new context_1.Context(container);\n var target = _createTarget(isMultiInject, targetType, serviceIdentifier, \"\", key, value);\n try {\n _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);\n return context;\n }\n catch (error) {\n if (exceptions_1.isStackOverflowExeption(error)) {\n if (context.plan) {\n serialization_1.circularDependencyToException(context.plan.rootRequest);\n }\n }\n throw error;\n }\n}\nexports.plan = plan;\nfunction createMockRequest(container, serviceIdentifier, key, value) {\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.Variable, \"\", serviceIdentifier, new metadata_1.Metadata(key, value));\n var context = new context_1.Context(container);\n var request = new request_1.Request(serviceIdentifier, context, null, [], target);\n return request;\n}\nexports.createMockRequest = createMockRequest;\n//# sourceMappingURL=planner.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3BsYW5uZXIuanM/M2JiOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsMEdBQTJCO0FBQ3pELGlCQUFpQixtQkFBTyxDQUFDLHNHQUF5QjtBQUNsRCxzQkFBc0IsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDMUQsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELG1CQUFtQixtQkFBTyxDQUFDLDhGQUFxQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxvR0FBd0I7QUFDdEQsZ0JBQWdCLG1CQUFPLENBQUMsb0ZBQVc7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMsc0ZBQVk7QUFDckMsYUFBYSxtQkFBTyxDQUFDLDhFQUFRO0FBQzdCLHlCQUF5QixtQkFBTyxDQUFDLHNHQUFvQjtBQUNyRCxnQkFBZ0IsbUJBQU8sQ0FBQyxvRkFBVztBQUNuQyxlQUFlLG1CQUFPLENBQUMsa0ZBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDBCQUEwQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3BsYW5uZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0QmluZGluZ0RpY3Rpb25hcnkgPSBleHBvcnRzLmNyZWF0ZU1vY2tSZXF1ZXN0ID0gZXhwb3J0cy5wbGFuID0gdm9pZCAwO1xudmFyIGJpbmRpbmdfY291bnRfMSA9IHJlcXVpcmUoXCIuLi9iaW5kaW5ncy9iaW5kaW5nX2NvdW50XCIpO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgbGl0ZXJhbF90eXBlc18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9saXRlcmFsX3R5cGVzXCIpO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbnZhciBleGNlcHRpb25zXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvZXhjZXB0aW9uc1wiKTtcbnZhciBzZXJpYWxpemF0aW9uXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvc2VyaWFsaXphdGlvblwiKTtcbnZhciBjb250ZXh0XzEgPSByZXF1aXJlKFwiLi9jb250ZXh0XCIpO1xudmFyIG1ldGFkYXRhXzEgPSByZXF1aXJlKFwiLi9tZXRhZGF0YVwiKTtcbnZhciBwbGFuXzEgPSByZXF1aXJlKFwiLi9wbGFuXCIpO1xudmFyIHJlZmxlY3Rpb25fdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3JlZmxlY3Rpb25fdXRpbHNcIik7XG52YXIgcmVxdWVzdF8xID0gcmVxdWlyZShcIi4vcmVxdWVzdFwiKTtcbnZhciB0YXJnZXRfMSA9IHJlcXVpcmUoXCIuL3RhcmdldFwiKTtcbmZ1bmN0aW9uIGdldEJpbmRpbmdEaWN0aW9uYXJ5KGNudG5yKSB7XG4gICAgcmV0dXJuIGNudG5yLl9iaW5kaW5nRGljdGlvbmFyeTtcbn1cbmV4cG9ydHMuZ2V0QmluZGluZ0RpY3Rpb25hcnkgPSBnZXRCaW5kaW5nRGljdGlvbmFyeTtcbmZ1bmN0aW9uIF9jcmVhdGVUYXJnZXQoaXNNdWx0aUluamVjdCwgdGFyZ2V0VHlwZSwgc2VydmljZUlkZW50aWZpZXIsIG5hbWUsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgbWV0YWRhdGFLZXkgPSBpc011bHRpSW5qZWN0ID8gTUVUQURBVEFfS0VZLk1VTFRJX0lOSkVDVF9UQUcgOiBNRVRBREFUQV9LRVkuSU5KRUNUX1RBRztcbiAgICB2YXIgaW5qZWN0TWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShtZXRhZGF0YUtleSwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgIHZhciB0YXJnZXQgPSBuZXcgdGFyZ2V0XzEuVGFyZ2V0KHRhcmdldFR5cGUsIG5hbWUsIHNlcnZpY2VJZGVudGlmaWVyLCBpbmplY3RNZXRhZGF0YSk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciB0YWdNZXRhZGF0YSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKGtleSwgdmFsdWUpO1xuICAgICAgICB0YXJnZXQubWV0YWRhdGEucHVzaCh0YWdNZXRhZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiBfZ2V0QWN0aXZlQmluZGluZ3MobWV0YWRhdGFSZWFkZXIsIGF2b2lkQ29uc3RyYWludHMsIGNvbnRleHQsIHBhcmVudFJlcXVlc3QsIHRhcmdldCkge1xuICAgIHZhciBiaW5kaW5ncyA9IGdldEJpbmRpbmdzKGNvbnRleHQuY29udGFpbmVyLCB0YXJnZXQuc2VydmljZUlkZW50aWZpZXIpO1xuICAgIHZhciBhY3RpdmVCaW5kaW5ncyA9IFtdO1xuICAgIGlmIChiaW5kaW5ncy5sZW5ndGggPT09IGJpbmRpbmdfY291bnRfMS5CaW5kaW5nQ291bnQuTm9CaW5kaW5nc0F2YWlsYWJsZSAmJlxuICAgICAgICBjb250ZXh0LmNvbnRhaW5lci5vcHRpb25zLmF1dG9CaW5kSW5qZWN0YWJsZSAmJlxuICAgICAgICB0eXBlb2YgdGFyZ2V0LnNlcnZpY2VJZGVudGlmaWVyID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICAgICAgbWV0YWRhdGFSZWFkZXIuZ2V0Q29uc3RydWN0b3JNZXRhZGF0YSh0YXJnZXQuc2VydmljZUlkZW50aWZpZXIpLmNvbXBpbGVyR2VuZXJhdGVkTWV0YWRhdGEpIHtcbiAgICAgICAgY29udGV4dC5jb250YWluZXIuYmluZCh0YXJnZXQuc2VydmljZUlkZW50aWZpZXIpLnRvU2VsZigpO1xuICAgICAgICBiaW5kaW5ncyA9IGdldEJpbmRpbmdzKGNvbnRleHQuY29udGFpbmVyLCB0YXJnZXQuc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBpZiAoIWF2b2lkQ29uc3RyYWludHMpIHtcbiAgICAgICAgYWN0aXZlQmluZGluZ3MgPSBiaW5kaW5ncy5maWx0ZXIoZnVuY3Rpb24gKGJpbmRpbmcpIHtcbiAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IHJlcXVlc3RfMS5SZXF1ZXN0KGJpbmRpbmcuc2VydmljZUlkZW50aWZpZXIsIGNvbnRleHQsIHBhcmVudFJlcXVlc3QsIGJpbmRpbmcsIHRhcmdldCk7XG4gICAgICAgICAgICByZXR1cm4gYmluZGluZy5jb25zdHJhaW50KHJlcXVlc3QpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGFjdGl2ZUJpbmRpbmdzID0gYmluZGluZ3M7XG4gICAgfVxuICAgIF92YWxpZGF0ZUFjdGl2ZUJpbmRpbmdDb3VudCh0YXJnZXQuc2VydmljZUlkZW50aWZpZXIsIGFjdGl2ZUJpbmRpbmdzLCB0YXJnZXQsIGNvbnRleHQuY29udGFpbmVyKTtcbiAgICByZXR1cm4gYWN0aXZlQmluZGluZ3M7XG59XG5mdW5jdGlvbiBfdmFsaWRhdGVBY3RpdmVCaW5kaW5nQ291bnQoc2VydmljZUlkZW50aWZpZXIsIGJpbmRpbmdzLCB0YXJnZXQsIGNvbnRhaW5lcikge1xuICAgIHN3aXRjaCAoYmluZGluZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgYmluZGluZ19jb3VudF8xLkJpbmRpbmdDb3VudC5Ob0JpbmRpbmdzQXZhaWxhYmxlOlxuICAgICAgICAgICAgaWYgKHRhcmdldC5pc09wdGlvbmFsKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmluZGluZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VydmljZUlkZW50aWZpZXJTdHJpbmcgPSBzZXJpYWxpemF0aW9uXzEuZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZyhzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdmFyIG1zZyA9IEVSUk9SX01TR1MuTk9UX1JFR0lTVEVSRUQ7XG4gICAgICAgICAgICAgICAgbXNnICs9IHNlcmlhbGl6YXRpb25fMS5saXN0TWV0YWRhdGFGb3JUYXJnZXQoc2VydmljZUlkZW50aWZpZXJTdHJpbmcsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgbXNnICs9IHNlcmlhbGl6YXRpb25fMS5saXN0UmVnaXN0ZXJlZEJpbmRpbmdzRm9yU2VydmljZUlkZW50aWZpZXIoY29udGFpbmVyLCBzZXJ2aWNlSWRlbnRpZmllclN0cmluZywgZ2V0QmluZGluZ3MpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIGJpbmRpbmdfY291bnRfMS5CaW5kaW5nQ291bnQuT25seU9uZUJpbmRpbmdBdmFpbGFibGU6XG4gICAgICAgICAgICBpZiAoIXRhcmdldC5pc0FycmF5KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmluZGluZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgYmluZGluZ19jb3VudF8xLkJpbmRpbmdDb3VudC5NdWx0aXBsZUJpbmRpbmdzQXZhaWxhYmxlOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKCF0YXJnZXQuaXNBcnJheSgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlcnZpY2VJZGVudGlmaWVyU3RyaW5nID0gc2VyaWFsaXphdGlvbl8xLmdldFNlcnZpY2VJZGVudGlmaWVyQXNTdHJpbmcoc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHZhciBtc2cgPSBFUlJPUl9NU0dTLkFNQklHVU9VU19NQVRDSCArIFwiIFwiICsgc2VydmljZUlkZW50aWZpZXJTdHJpbmc7XG4gICAgICAgICAgICAgICAgbXNnICs9IHNlcmlhbGl6YXRpb25fMS5saXN0UmVnaXN0ZXJlZEJpbmRpbmdzRm9yU2VydmljZUlkZW50aWZpZXIoY29udGFpbmVyLCBzZXJ2aWNlSWRlbnRpZmllclN0cmluZywgZ2V0QmluZGluZ3MpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJpbmRpbmdzO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVTdWJSZXF1ZXN0cyhtZXRhZGF0YVJlYWRlciwgYXZvaWRDb25zdHJhaW50cywgc2VydmljZUlkZW50aWZpZXIsIGNvbnRleHQsIHBhcmVudFJlcXVlc3QsIHRhcmdldCkge1xuICAgIHZhciBhY3RpdmVCaW5kaW5ncztcbiAgICB2YXIgY2hpbGRSZXF1ZXN0O1xuICAgIGlmIChwYXJlbnRSZXF1ZXN0ID09PSBudWxsKSB7XG4gICAgICAgIGFjdGl2ZUJpbmRpbmdzID0gX2dldEFjdGl2ZUJpbmRpbmdzKG1ldGFkYXRhUmVhZGVyLCBhdm9pZENvbnN0cmFpbnRzLCBjb250ZXh0LCBudWxsLCB0YXJnZXQpO1xuICAgICAgICBjaGlsZFJlcXVlc3QgPSBuZXcgcmVxdWVzdF8xLlJlcXVlc3Qoc2VydmljZUlkZW50aWZpZXIsIGNvbnRleHQsIG51bGwsIGFjdGl2ZUJpbmRpbmdzLCB0YXJnZXQpO1xuICAgICAgICB2YXIgdGhlUGxhbiA9IG5ldyBwbGFuXzEuUGxhbihjb250ZXh0LCBjaGlsZFJlcXVlc3QpO1xuICAgICAgICBjb250ZXh0LmFkZFBsYW4odGhlUGxhbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBhY3RpdmVCaW5kaW5ncyA9IF9nZXRBY3RpdmVCaW5kaW5ncyhtZXRhZGF0YVJlYWRlciwgYXZvaWRDb25zdHJhaW50cywgY29udGV4dCwgcGFyZW50UmVxdWVzdCwgdGFyZ2V0KTtcbiAgICAgICAgY2hpbGRSZXF1ZXN0ID0gcGFyZW50UmVxdWVzdC5hZGRDaGlsZFJlcXVlc3QodGFyZ2V0LnNlcnZpY2VJZGVudGlmaWVyLCBhY3RpdmVCaW5kaW5ncywgdGFyZ2V0KTtcbiAgICB9XG4gICAgYWN0aXZlQmluZGluZ3MuZm9yRWFjaChmdW5jdGlvbiAoYmluZGluZykge1xuICAgICAgICB2YXIgc3ViQ2hpbGRSZXF1ZXN0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRhcmdldC5pc0FycmF5KCkpIHtcbiAgICAgICAgICAgIHN1YkNoaWxkUmVxdWVzdCA9IGNoaWxkUmVxdWVzdC5hZGRDaGlsZFJlcXVlc3QoYmluZGluZy5zZXJ2aWNlSWRlbnRpZmllciwgYmluZGluZywgdGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChiaW5kaW5nLmNhY2hlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ViQ2hpbGRSZXF1ZXN0ID0gY2hpbGRSZXF1ZXN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChiaW5kaW5nLnR5cGUgPT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uSW5zdGFuY2UgJiYgYmluZGluZy5pbXBsZW1lbnRhdGlvblR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBkZXBlbmRlbmNpZXMgPSByZWZsZWN0aW9uX3V0aWxzXzEuZ2V0RGVwZW5kZW5jaWVzKG1ldGFkYXRhUmVhZGVyLCBiaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSk7XG4gICAgICAgICAgICBpZiAoIWNvbnRleHQuY29udGFpbmVyLm9wdGlvbnMuc2tpcEJhc2VDbGFzc0NoZWNrcykge1xuICAgICAgICAgICAgICAgIHZhciBiYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQgPSByZWZsZWN0aW9uX3V0aWxzXzEuZ2V0QmFzZUNsYXNzRGVwZW5kZW5jeUNvdW50KG1ldGFkYXRhUmVhZGVyLCBiaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPCBiYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gRVJST1JfTVNHUy5BUkdVTUVOVFNfTEVOR1RIX01JU01BVENIKHJlZmxlY3Rpb25fdXRpbHNfMS5nZXRGdW5jdGlvbk5hbWUoYmluZGluZy5pbXBsZW1lbnRhdGlvblR5cGUpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwZW5kZW5jeSkge1xuICAgICAgICAgICAgICAgIF9jcmVhdGVTdWJSZXF1ZXN0cyhtZXRhZGF0YVJlYWRlciwgZmFsc2UsIGRlcGVuZGVuY3kuc2VydmljZUlkZW50aWZpZXIsIGNvbnRleHQsIHN1YkNoaWxkUmVxdWVzdCwgZGVwZW5kZW5jeSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0QmluZGluZ3MoY29udGFpbmVyLCBzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgIHZhciBiaW5kaW5ncyA9IFtdO1xuICAgIHZhciBiaW5kaW5nRGljdGlvbmFyeSA9IGdldEJpbmRpbmdEaWN0aW9uYXJ5KGNvbnRhaW5lcik7XG4gICAgaWYgKGJpbmRpbmdEaWN0aW9uYXJ5Lmhhc0tleShzZXJ2aWNlSWRlbnRpZmllcikpIHtcbiAgICAgICAgYmluZGluZ3MgPSBiaW5kaW5nRGljdGlvbmFyeS5nZXQoc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb250YWluZXIucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGJpbmRpbmdzID0gZ2V0QmluZGluZ3MoY29udGFpbmVyLnBhcmVudCwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH1cbiAgICByZXR1cm4gYmluZGluZ3M7XG59XG5mdW5jdGlvbiBwbGFuKG1ldGFkYXRhUmVhZGVyLCBjb250YWluZXIsIGlzTXVsdGlJbmplY3QsIHRhcmdldFR5cGUsIHNlcnZpY2VJZGVudGlmaWVyLCBrZXksIHZhbHVlLCBhdm9pZENvbnN0cmFpbnRzKSB7XG4gICAgaWYgKGF2b2lkQ29uc3RyYWludHMgPT09IHZvaWQgMCkgeyBhdm9pZENvbnN0cmFpbnRzID0gZmFsc2U7IH1cbiAgICB2YXIgY29udGV4dCA9IG5ldyBjb250ZXh0XzEuQ29udGV4dChjb250YWluZXIpO1xuICAgIHZhciB0YXJnZXQgPSBfY3JlYXRlVGFyZ2V0KGlzTXVsdGlJbmplY3QsIHRhcmdldFR5cGUsIHNlcnZpY2VJZGVudGlmaWVyLCBcIlwiLCBrZXksIHZhbHVlKTtcbiAgICB0cnkge1xuICAgICAgICBfY3JlYXRlU3ViUmVxdWVzdHMobWV0YWRhdGFSZWFkZXIsIGF2b2lkQ29uc3RyYWludHMsIHNlcnZpY2VJZGVudGlmaWVyLCBjb250ZXh0LCBudWxsLCB0YXJnZXQpO1xuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChleGNlcHRpb25zXzEuaXNTdGFja092ZXJmbG93RXhlcHRpb24oZXJyb3IpKSB7XG4gICAgICAgICAgICBpZiAoY29udGV4dC5wbGFuKSB7XG4gICAgICAgICAgICAgICAgc2VyaWFsaXphdGlvbl8xLmNpcmN1bGFyRGVwZW5kZW5jeVRvRXhjZXB0aW9uKGNvbnRleHQucGxhbi5yb290UmVxdWVzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufVxuZXhwb3J0cy5wbGFuID0gcGxhbjtcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tSZXF1ZXN0KGNvbnRhaW5lciwgc2VydmljZUlkZW50aWZpZXIsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgdGFyZ2V0ID0gbmV3IHRhcmdldF8xLlRhcmdldChsaXRlcmFsX3R5cGVzXzEuVGFyZ2V0VHlwZUVudW0uVmFyaWFibGUsIFwiXCIsIHNlcnZpY2VJZGVudGlmaWVyLCBuZXcgbWV0YWRhdGFfMS5NZXRhZGF0YShrZXksIHZhbHVlKSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgY29udGV4dF8xLkNvbnRleHQoY29udGFpbmVyKTtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyByZXF1ZXN0XzEuUmVxdWVzdChzZXJ2aWNlSWRlbnRpZmllciwgY29udGV4dCwgbnVsbCwgW10sIHRhcmdldCk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG59XG5leHBvcnRzLmNyZWF0ZU1vY2tSZXF1ZXN0ID0gY3JlYXRlTW9ja1JlcXVlc3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wbGFubmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/planner.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/queryable_string.js": /*!**********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/queryable_string.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueryableString = void 0;\nvar QueryableString = (function () {\n function QueryableString(str) {\n this.str = str;\n }\n QueryableString.prototype.startsWith = function (searchString) {\n return this.str.indexOf(searchString) === 0;\n };\n QueryableString.prototype.endsWith = function (searchString) {\n var reverseString = \"\";\n var reverseSearchString = searchString.split(\"\").reverse().join(\"\");\n reverseString = this.str.split(\"\").reverse().join(\"\");\n return this.startsWith.call({ str: reverseString }, reverseSearchString);\n };\n QueryableString.prototype.contains = function (searchString) {\n return (this.str.indexOf(searchString) !== -1);\n };\n QueryableString.prototype.equals = function (compareString) {\n return this.str === compareString;\n };\n QueryableString.prototype.value = function () {\n return this.str;\n };\n return QueryableString;\n}());\nexports.QueryableString = QueryableString;\n//# sourceMappingURL=queryable_string.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3F1ZXJ5YWJsZV9zdHJpbmcuanM/ZGQxMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxQkFBcUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9wbGFubmluZy9xdWVyeWFibGVfc3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlF1ZXJ5YWJsZVN0cmluZyA9IHZvaWQgMDtcbnZhciBRdWVyeWFibGVTdHJpbmcgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFF1ZXJ5YWJsZVN0cmluZyhzdHIpIHtcbiAgICAgICAgdGhpcy5zdHIgPSBzdHI7XG4gICAgfVxuICAgIFF1ZXJ5YWJsZVN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uIChzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyLmluZGV4T2Yoc2VhcmNoU3RyaW5nKSA9PT0gMDtcbiAgICB9O1xuICAgIFF1ZXJ5YWJsZVN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbiAoc2VhcmNoU3RyaW5nKSB7XG4gICAgICAgIHZhciByZXZlcnNlU3RyaW5nID0gXCJcIjtcbiAgICAgICAgdmFyIHJldmVyc2VTZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmcuc3BsaXQoXCJcIikucmV2ZXJzZSgpLmpvaW4oXCJcIik7XG4gICAgICAgIHJldmVyc2VTdHJpbmcgPSB0aGlzLnN0ci5zcGxpdChcIlwiKS5yZXZlcnNlKCkuam9pbihcIlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRzV2l0aC5jYWxsKHsgc3RyOiByZXZlcnNlU3RyaW5nIH0sIHJldmVyc2VTZWFyY2hTdHJpbmcpO1xuICAgIH07XG4gICAgUXVlcnlhYmxlU3RyaW5nLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIChzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnN0ci5pbmRleE9mKHNlYXJjaFN0cmluZykgIT09IC0xKTtcbiAgICB9O1xuICAgIFF1ZXJ5YWJsZVN0cmluZy5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKGNvbXBhcmVTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyID09PSBjb21wYXJlU3RyaW5nO1xuICAgIH07XG4gICAgUXVlcnlhYmxlU3RyaW5nLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyO1xuICAgIH07XG4gICAgcmV0dXJuIFF1ZXJ5YWJsZVN0cmluZztcbn0oKSk7XG5leHBvcnRzLlF1ZXJ5YWJsZVN0cmluZyA9IFF1ZXJ5YWJsZVN0cmluZztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXF1ZXJ5YWJsZV9zdHJpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/queryable_string.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/reflection_utils.js": /*!**********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/reflection_utils.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFunctionName = exports.getBaseClassDependencyCount = exports.getDependencies = void 0;\nvar inject_1 = __webpack_require__(/*! ../annotation/inject */ \"./node_modules/_inversify@5.1.1@inversify/lib/annotation/inject.js\");\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js\");\nObject.defineProperty(exports, \"getFunctionName\", { enumerable: true, get: function () { return serialization_1.getFunctionName; } });\nvar target_1 = __webpack_require__(/*! ./target */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/target.js\");\nfunction getDependencies(metadataReader, func) {\n var constructorName = serialization_1.getFunctionName(func);\n var targets = getTargets(metadataReader, constructorName, func, false);\n return targets;\n}\nexports.getDependencies = getDependencies;\nfunction getTargets(metadataReader, constructorName, func, isBaseClass) {\n var metadata = metadataReader.getConstructorMetadata(func);\n var serviceIdentifiers = metadata.compilerGeneratedMetadata;\n if (serviceIdentifiers === undefined) {\n var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + \" \" + constructorName + \".\";\n throw new Error(msg);\n }\n var constructorArgsMetadata = metadata.userGeneratedMetadata;\n var keys = Object.keys(constructorArgsMetadata);\n var hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);\n var hasOptionalParameters = keys.length > func.length;\n var iterations = (hasUserDeclaredUnknownInjections || hasOptionalParameters) ? keys.length : func.length;\n var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);\n var propertyTargets = getClassPropsAsTargets(metadataReader, func);\n var targets = __spreadArray(__spreadArray([], constructorTargets), propertyTargets);\n return targets;\n}\nfunction getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {\n var targetMetadata = constructorArgsMetadata[index.toString()] || [];\n var metadata = formatTargetMetadata(targetMetadata);\n var isManaged = metadata.unmanaged !== true;\n var serviceIdentifier = serviceIdentifiers[index];\n var injectIdentifier = (metadata.inject || metadata.multiInject);\n serviceIdentifier = (injectIdentifier) ? (injectIdentifier) : serviceIdentifier;\n if (serviceIdentifier instanceof inject_1.LazyServiceIdentifer) {\n serviceIdentifier = serviceIdentifier.unwrap();\n }\n if (isManaged) {\n var isObject = serviceIdentifier === Object;\n var isFunction = serviceIdentifier === Function;\n var isUndefined = serviceIdentifier === undefined;\n var isUnknownType = (isObject || isFunction || isUndefined);\n if (!isBaseClass && isUnknownType) {\n var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + \" argument \" + index + \" in class \" + constructorName + \".\";\n throw new Error(msg);\n }\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);\n target.metadata = targetMetadata;\n return target;\n }\n return null;\n}\nfunction getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {\n var targets = [];\n for (var i = 0; i < iterations; i++) {\n var index = i;\n var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);\n if (target !== null) {\n targets.push(target);\n }\n }\n return targets;\n}\nfunction getClassPropsAsTargets(metadataReader, constructorFunc) {\n var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);\n var targets = [];\n var keys = Object.keys(classPropsMetadata);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var targetMetadata = classPropsMetadata[key];\n var metadata = formatTargetMetadata(classPropsMetadata[key]);\n var targetName = metadata.targetName || key;\n var serviceIdentifier = (metadata.inject || metadata.multiInject);\n var target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, targetName, serviceIdentifier);\n target.metadata = targetMetadata;\n targets.push(target);\n }\n var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;\n if (baseConstructor !== Object) {\n var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor);\n targets = __spreadArray(__spreadArray([], targets), baseTargets);\n }\n return targets;\n}\nfunction getBaseClassDependencyCount(metadataReader, func) {\n var baseConstructor = Object.getPrototypeOf(func.prototype).constructor;\n if (baseConstructor !== Object) {\n var baseConstructorName = serialization_1.getFunctionName(baseConstructor);\n var targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true);\n var metadata = targets.map(function (t) {\n return t.metadata.filter(function (m) {\n return m.key === METADATA_KEY.UNMANAGED_TAG;\n });\n });\n var unmanagedCount = [].concat.apply([], metadata).length;\n var dependencyCount = targets.length - unmanagedCount;\n if (dependencyCount > 0) {\n return dependencyCount;\n }\n else {\n return getBaseClassDependencyCount(metadataReader, baseConstructor);\n }\n }\n else {\n return 0;\n }\n}\nexports.getBaseClassDependencyCount = getBaseClassDependencyCount;\nfunction formatTargetMetadata(targetMetadata) {\n var targetMetadataMap = {};\n targetMetadata.forEach(function (m) {\n targetMetadataMap[m.key.toString()] = m.value;\n });\n return {\n inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],\n multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],\n targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],\n unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]\n };\n}\n//# sourceMappingURL=reflection_utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3JlZmxlY3Rpb25fdXRpbHMuanM/YzBlYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0Esb0RBQW9ELFFBQVE7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxlQUFlLG1CQUFPLENBQUMsZ0dBQXNCO0FBQzdDLGlCQUFpQixtQkFBTyxDQUFDLHNHQUF5QjtBQUNsRCxzQkFBc0IsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDMUQsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELHNCQUFzQixtQkFBTyxDQUFDLG9HQUF3QjtBQUN0RCxtREFBbUQscUNBQXFDLHdDQUF3QyxFQUFFLEVBQUU7QUFDcEksZUFBZSxtQkFBTyxDQUFDLGtGQUFVO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxvQkFBb0I7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvcGxhbm5pbmcvcmVmbGVjdGlvbl91dGlscy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBpbCA9IGZyb20ubGVuZ3RoLCBqID0gdG8ubGVuZ3RoOyBpIDwgaWw7IGkrKywgaisrKVxuICAgICAgICB0b1tqXSA9IGZyb21baV07XG4gICAgcmV0dXJuIHRvO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0RnVuY3Rpb25OYW1lID0gZXhwb3J0cy5nZXRCYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQgPSBleHBvcnRzLmdldERlcGVuZGVuY2llcyA9IHZvaWQgMDtcbnZhciBpbmplY3RfMSA9IHJlcXVpcmUoXCIuLi9hbm5vdGF0aW9uL2luamVjdFwiKTtcbnZhciBFUlJPUl9NU0dTID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9lcnJvcl9tc2dzXCIpO1xudmFyIGxpdGVyYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbGl0ZXJhbF90eXBlc1wiKTtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgc2VyaWFsaXphdGlvbl8xID0gcmVxdWlyZShcIi4uL3V0aWxzL3NlcmlhbGl6YXRpb25cIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRGdW5jdGlvbk5hbWVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlcmlhbGl6YXRpb25fMS5nZXRGdW5jdGlvbk5hbWU7IH0gfSk7XG52YXIgdGFyZ2V0XzEgPSByZXF1aXJlKFwiLi90YXJnZXRcIik7XG5mdW5jdGlvbiBnZXREZXBlbmRlbmNpZXMobWV0YWRhdGFSZWFkZXIsIGZ1bmMpIHtcbiAgICB2YXIgY29uc3RydWN0b3JOYW1lID0gc2VyaWFsaXphdGlvbl8xLmdldEZ1bmN0aW9uTmFtZShmdW5jKTtcbiAgICB2YXIgdGFyZ2V0cyA9IGdldFRhcmdldHMobWV0YWRhdGFSZWFkZXIsIGNvbnN0cnVjdG9yTmFtZSwgZnVuYywgZmFsc2UpO1xuICAgIHJldHVybiB0YXJnZXRzO1xufVxuZXhwb3J0cy5nZXREZXBlbmRlbmNpZXMgPSBnZXREZXBlbmRlbmNpZXM7XG5mdW5jdGlvbiBnZXRUYXJnZXRzKG1ldGFkYXRhUmVhZGVyLCBjb25zdHJ1Y3Rvck5hbWUsIGZ1bmMsIGlzQmFzZUNsYXNzKSB7XG4gICAgdmFyIG1ldGFkYXRhID0gbWV0YWRhdGFSZWFkZXIuZ2V0Q29uc3RydWN0b3JNZXRhZGF0YShmdW5jKTtcbiAgICB2YXIgc2VydmljZUlkZW50aWZpZXJzID0gbWV0YWRhdGEuY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YTtcbiAgICBpZiAoc2VydmljZUlkZW50aWZpZXJzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG1zZyA9IEVSUk9SX01TR1MuTUlTU0lOR19JTkpFQ1RBQkxFX0FOTk9UQVRJT04gKyBcIiBcIiArIGNvbnN0cnVjdG9yTmFtZSArIFwiLlwiO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG4gICAgdmFyIGNvbnN0cnVjdG9yQXJnc01ldGFkYXRhID0gbWV0YWRhdGEudXNlckdlbmVyYXRlZE1ldGFkYXRhO1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoY29uc3RydWN0b3JBcmdzTWV0YWRhdGEpO1xuICAgIHZhciBoYXNVc2VyRGVjbGFyZWRVbmtub3duSW5qZWN0aW9ucyA9IChmdW5jLmxlbmd0aCA9PT0gMCAmJiBrZXlzLmxlbmd0aCA+IDApO1xuICAgIHZhciBoYXNPcHRpb25hbFBhcmFtZXRlcnMgPSBrZXlzLmxlbmd0aCA+IGZ1bmMubGVuZ3RoO1xuICAgIHZhciBpdGVyYXRpb25zID0gKGhhc1VzZXJEZWNsYXJlZFVua25vd25JbmplY3Rpb25zIHx8IGhhc09wdGlvbmFsUGFyYW1ldGVycykgPyBrZXlzLmxlbmd0aCA6IGZ1bmMubGVuZ3RoO1xuICAgIHZhciBjb25zdHJ1Y3RvclRhcmdldHMgPSBnZXRDb25zdHJ1Y3RvckFyZ3NBc1RhcmdldHMoaXNCYXNlQ2xhc3MsIGNvbnN0cnVjdG9yTmFtZSwgc2VydmljZUlkZW50aWZpZXJzLCBjb25zdHJ1Y3RvckFyZ3NNZXRhZGF0YSwgaXRlcmF0aW9ucyk7XG4gICAgdmFyIHByb3BlcnR5VGFyZ2V0cyA9IGdldENsYXNzUHJvcHNBc1RhcmdldHMobWV0YWRhdGFSZWFkZXIsIGZ1bmMpO1xuICAgIHZhciB0YXJnZXRzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBjb25zdHJ1Y3RvclRhcmdldHMpLCBwcm9wZXJ0eVRhcmdldHMpO1xuICAgIHJldHVybiB0YXJnZXRzO1xufVxuZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JBcmdzQXNUYXJnZXQoaW5kZXgsIGlzQmFzZUNsYXNzLCBjb25zdHJ1Y3Rvck5hbWUsIHNlcnZpY2VJZGVudGlmaWVycywgY29uc3RydWN0b3JBcmdzTWV0YWRhdGEpIHtcbiAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBjb25zdHJ1Y3RvckFyZ3NNZXRhZGF0YVtpbmRleC50b1N0cmluZygpXSB8fCBbXTtcbiAgICB2YXIgbWV0YWRhdGEgPSBmb3JtYXRUYXJnZXRNZXRhZGF0YSh0YXJnZXRNZXRhZGF0YSk7XG4gICAgdmFyIGlzTWFuYWdlZCA9IG1ldGFkYXRhLnVubWFuYWdlZCAhPT0gdHJ1ZTtcbiAgICB2YXIgc2VydmljZUlkZW50aWZpZXIgPSBzZXJ2aWNlSWRlbnRpZmllcnNbaW5kZXhdO1xuICAgIHZhciBpbmplY3RJZGVudGlmaWVyID0gKG1ldGFkYXRhLmluamVjdCB8fCBtZXRhZGF0YS5tdWx0aUluamVjdCk7XG4gICAgc2VydmljZUlkZW50aWZpZXIgPSAoaW5qZWN0SWRlbnRpZmllcikgPyAoaW5qZWN0SWRlbnRpZmllcikgOiBzZXJ2aWNlSWRlbnRpZmllcjtcbiAgICBpZiAoc2VydmljZUlkZW50aWZpZXIgaW5zdGFuY2VvZiBpbmplY3RfMS5MYXp5U2VydmljZUlkZW50aWZlcikge1xuICAgICAgICBzZXJ2aWNlSWRlbnRpZmllciA9IHNlcnZpY2VJZGVudGlmaWVyLnVud3JhcCgpO1xuICAgIH1cbiAgICBpZiAoaXNNYW5hZ2VkKSB7XG4gICAgICAgIHZhciBpc09iamVjdCA9IHNlcnZpY2VJZGVudGlmaWVyID09PSBPYmplY3Q7XG4gICAgICAgIHZhciBpc0Z1bmN0aW9uID0gc2VydmljZUlkZW50aWZpZXIgPT09IEZ1bmN0aW9uO1xuICAgICAgICB2YXIgaXNVbmRlZmluZWQgPSBzZXJ2aWNlSWRlbnRpZmllciA9PT0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgaXNVbmtub3duVHlwZSA9IChpc09iamVjdCB8fCBpc0Z1bmN0aW9uIHx8IGlzVW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKCFpc0Jhc2VDbGFzcyAmJiBpc1Vua25vd25UeXBlKSB7XG4gICAgICAgICAgICB2YXIgbXNnID0gRVJST1JfTVNHUy5NSVNTSU5HX0lOSkVDVF9BTk5PVEFUSU9OICsgXCIgYXJndW1lbnQgXCIgKyBpbmRleCArIFwiIGluIGNsYXNzIFwiICsgY29uc3RydWN0b3JOYW1lICsgXCIuXCI7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFyZ2V0ID0gbmV3IHRhcmdldF8xLlRhcmdldChsaXRlcmFsX3R5cGVzXzEuVGFyZ2V0VHlwZUVudW0uQ29uc3RydWN0b3JBcmd1bWVudCwgbWV0YWRhdGEudGFyZ2V0TmFtZSwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICB0YXJnZXQubWV0YWRhdGEgPSB0YXJnZXRNZXRhZGF0YTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBnZXRDb25zdHJ1Y3RvckFyZ3NBc1RhcmdldHMoaXNCYXNlQ2xhc3MsIGNvbnN0cnVjdG9yTmFtZSwgc2VydmljZUlkZW50aWZpZXJzLCBjb25zdHJ1Y3RvckFyZ3NNZXRhZGF0YSwgaXRlcmF0aW9ucykge1xuICAgIHZhciB0YXJnZXRzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaTtcbiAgICAgICAgdmFyIHRhcmdldCA9IGdldENvbnN0cnVjdG9yQXJnc0FzVGFyZ2V0KGluZGV4LCBpc0Jhc2VDbGFzcywgY29uc3RydWN0b3JOYW1lLCBzZXJ2aWNlSWRlbnRpZmllcnMsIGNvbnN0cnVjdG9yQXJnc01ldGFkYXRhKTtcbiAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldHM7XG59XG5mdW5jdGlvbiBnZXRDbGFzc1Byb3BzQXNUYXJnZXRzKG1ldGFkYXRhUmVhZGVyLCBjb25zdHJ1Y3RvckZ1bmMpIHtcbiAgICB2YXIgY2xhc3NQcm9wc01ldGFkYXRhID0gbWV0YWRhdGFSZWFkZXIuZ2V0UHJvcGVydGllc01ldGFkYXRhKGNvbnN0cnVjdG9yRnVuYyk7XG4gICAgdmFyIHRhcmdldHMgPSBbXTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNsYXNzUHJvcHNNZXRhZGF0YSk7XG4gICAgZm9yICh2YXIgX2kgPSAwLCBrZXlzXzEgPSBrZXlzOyBfaSA8IGtleXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNfMVtfaV07XG4gICAgICAgIHZhciB0YXJnZXRNZXRhZGF0YSA9IGNsYXNzUHJvcHNNZXRhZGF0YVtrZXldO1xuICAgICAgICB2YXIgbWV0YWRhdGEgPSBmb3JtYXRUYXJnZXRNZXRhZGF0YShjbGFzc1Byb3BzTWV0YWRhdGFba2V5XSk7XG4gICAgICAgIHZhciB0YXJnZXROYW1lID0gbWV0YWRhdGEudGFyZ2V0TmFtZSB8fCBrZXk7XG4gICAgICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllciA9IChtZXRhZGF0YS5pbmplY3QgfHwgbWV0YWRhdGEubXVsdGlJbmplY3QpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gbmV3IHRhcmdldF8xLlRhcmdldChsaXRlcmFsX3R5cGVzXzEuVGFyZ2V0VHlwZUVudW0uQ2xhc3NQcm9wZXJ0eSwgdGFyZ2V0TmFtZSwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICB0YXJnZXQubWV0YWRhdGEgPSB0YXJnZXRNZXRhZGF0YTtcbiAgICAgICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgfVxuICAgIHZhciBiYXNlQ29uc3RydWN0b3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29uc3RydWN0b3JGdW5jLnByb3RvdHlwZSkuY29uc3RydWN0b3I7XG4gICAgaWYgKGJhc2VDb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgICAgIHZhciBiYXNlVGFyZ2V0cyA9IGdldENsYXNzUHJvcHNBc1RhcmdldHMobWV0YWRhdGFSZWFkZXIsIGJhc2VDb25zdHJ1Y3Rvcik7XG4gICAgICAgIHRhcmdldHMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHRhcmdldHMpLCBiYXNlVGFyZ2V0cyk7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXRzO1xufVxuZnVuY3Rpb24gZ2V0QmFzZUNsYXNzRGVwZW5kZW5jeUNvdW50KG1ldGFkYXRhUmVhZGVyLCBmdW5jKSB7XG4gICAgdmFyIGJhc2VDb25zdHJ1Y3RvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihmdW5jLnByb3RvdHlwZSkuY29uc3RydWN0b3I7XG4gICAgaWYgKGJhc2VDb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgICAgIHZhciBiYXNlQ29uc3RydWN0b3JOYW1lID0gc2VyaWFsaXphdGlvbl8xLmdldEZ1bmN0aW9uTmFtZShiYXNlQ29uc3RydWN0b3IpO1xuICAgICAgICB2YXIgdGFyZ2V0cyA9IGdldFRhcmdldHMobWV0YWRhdGFSZWFkZXIsIGJhc2VDb25zdHJ1Y3Rvck5hbWUsIGJhc2VDb25zdHJ1Y3RvciwgdHJ1ZSk7XG4gICAgICAgIHZhciBtZXRhZGF0YSA9IHRhcmdldHMubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdC5tZXRhZGF0YS5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbS5rZXkgPT09IE1FVEFEQVRBX0tFWS5VTk1BTkFHRURfVEFHO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdW5tYW5hZ2VkQ291bnQgPSBbXS5jb25jYXQuYXBwbHkoW10sIG1ldGFkYXRhKS5sZW5ndGg7XG4gICAgICAgIHZhciBkZXBlbmRlbmN5Q291bnQgPSB0YXJnZXRzLmxlbmd0aCAtIHVubWFuYWdlZENvdW50O1xuICAgICAgICBpZiAoZGVwZW5kZW5jeUNvdW50ID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlcGVuZGVuY3lDb3VudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRCYXNlQ2xhc3NEZXBlbmRlbmN5Q291bnQobWV0YWRhdGFSZWFkZXIsIGJhc2VDb25zdHJ1Y3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbn1cbmV4cG9ydHMuZ2V0QmFzZUNsYXNzRGVwZW5kZW5jeUNvdW50ID0gZ2V0QmFzZUNsYXNzRGVwZW5kZW5jeUNvdW50O1xuZnVuY3Rpb24gZm9ybWF0VGFyZ2V0TWV0YWRhdGEodGFyZ2V0TWV0YWRhdGEpIHtcbiAgICB2YXIgdGFyZ2V0TWV0YWRhdGFNYXAgPSB7fTtcbiAgICB0YXJnZXRNZXRhZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHRhcmdldE1ldGFkYXRhTWFwW20ua2V5LnRvU3RyaW5nKCldID0gbS52YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpbmplY3Q6IHRhcmdldE1ldGFkYXRhTWFwW01FVEFEQVRBX0tFWS5JTkpFQ1RfVEFHXSxcbiAgICAgICAgbXVsdGlJbmplY3Q6IHRhcmdldE1ldGFkYXRhTWFwW01FVEFEQVRBX0tFWS5NVUxUSV9JTkpFQ1RfVEFHXSxcbiAgICAgICAgdGFyZ2V0TmFtZTogdGFyZ2V0TWV0YWRhdGFNYXBbTUVUQURBVEFfS0VZLk5BTUVfVEFHXSxcbiAgICAgICAgdW5tYW5hZ2VkOiB0YXJnZXRNZXRhZGF0YU1hcFtNRVRBREFUQV9LRVkuVU5NQU5BR0VEX1RBR11cbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVmbGVjdGlvbl91dGlscy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/reflection_utils.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/request.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/request.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Request = void 0;\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nvar Request = (function () {\n function Request(serviceIdentifier, parentContext, parentRequest, bindings, target) {\n this.id = id_1.id();\n this.serviceIdentifier = serviceIdentifier;\n this.parentContext = parentContext;\n this.parentRequest = parentRequest;\n this.target = target;\n this.childRequests = [];\n this.bindings = (Array.isArray(bindings) ? bindings : [bindings]);\n this.requestScope = parentRequest === null\n ? new Map()\n : null;\n }\n Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) {\n var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);\n this.childRequests.push(child);\n return child;\n };\n return Request;\n}());\nexports.Request = Request;\n//# sourceMappingURL=request.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3JlcXVlc3QuanM/YWIwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsV0FBVyxtQkFBTyxDQUFDLDhFQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3JlcXVlc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVxdWVzdCA9IHZvaWQgMDtcbnZhciBpZF8xID0gcmVxdWlyZShcIi4uL3V0aWxzL2lkXCIpO1xudmFyIFJlcXVlc3QgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlcXVlc3Qoc2VydmljZUlkZW50aWZpZXIsIHBhcmVudENvbnRleHQsIHBhcmVudFJlcXVlc3QsIGJpbmRpbmdzLCB0YXJnZXQpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkXzEuaWQoKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlSWRlbnRpZmllciA9IHNlcnZpY2VJZGVudGlmaWVyO1xuICAgICAgICB0aGlzLnBhcmVudENvbnRleHQgPSBwYXJlbnRDb250ZXh0O1xuICAgICAgICB0aGlzLnBhcmVudFJlcXVlc3QgPSBwYXJlbnRSZXF1ZXN0O1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy5jaGlsZFJlcXVlc3RzID0gW107XG4gICAgICAgIHRoaXMuYmluZGluZ3MgPSAoQXJyYXkuaXNBcnJheShiaW5kaW5ncykgPyBiaW5kaW5ncyA6IFtiaW5kaW5nc10pO1xuICAgICAgICB0aGlzLnJlcXVlc3RTY29wZSA9IHBhcmVudFJlcXVlc3QgPT09IG51bGxcbiAgICAgICAgICAgID8gbmV3IE1hcCgpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIFJlcXVlc3QucHJvdG90eXBlLmFkZENoaWxkUmVxdWVzdCA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllciwgYmluZGluZ3MsIHRhcmdldCkge1xuICAgICAgICB2YXIgY2hpbGQgPSBuZXcgUmVxdWVzdChzZXJ2aWNlSWRlbnRpZmllciwgdGhpcy5wYXJlbnRDb250ZXh0LCB0aGlzLCBiaW5kaW5ncywgdGFyZ2V0KTtcbiAgICAgICAgdGhpcy5jaGlsZFJlcXVlc3RzLnB1c2goY2hpbGQpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfTtcbiAgICByZXR1cm4gUmVxdWVzdDtcbn0oKSk7XG5leHBvcnRzLlJlcXVlc3QgPSBSZXF1ZXN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVxdWVzdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/request.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/planning/target.js": /*!************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/planning/target.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Target = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar id_1 = __webpack_require__(/*! ../utils/id */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\");\nvar metadata_1 = __webpack_require__(/*! ./metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar queryable_string_1 = __webpack_require__(/*! ./queryable_string */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/queryable_string.js\");\nvar Target = (function () {\n function Target(type, name, serviceIdentifier, namedOrTagged) {\n this.id = id_1.id();\n this.type = type;\n this.serviceIdentifier = serviceIdentifier;\n this.name = new queryable_string_1.QueryableString(name || \"\");\n this.metadata = new Array();\n var metadataItem = null;\n if (typeof namedOrTagged === \"string\") {\n metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);\n }\n else if (namedOrTagged instanceof metadata_1.Metadata) {\n metadataItem = namedOrTagged;\n }\n if (metadataItem !== null) {\n this.metadata.push(metadataItem);\n }\n }\n Target.prototype.hasTag = function (key) {\n for (var _i = 0, _a = this.metadata; _i < _a.length; _i++) {\n var m = _a[_i];\n if (m.key === key) {\n return true;\n }\n }\n return false;\n };\n Target.prototype.isArray = function () {\n return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG);\n };\n Target.prototype.matchesArray = function (name) {\n return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name);\n };\n Target.prototype.isNamed = function () {\n return this.hasTag(METADATA_KEY.NAMED_TAG);\n };\n Target.prototype.isTagged = function () {\n return this.metadata.some(function (metadata) { return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; }); });\n };\n Target.prototype.isOptional = function () {\n return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);\n };\n Target.prototype.getNamedTag = function () {\n if (this.isNamed()) {\n return this.metadata.filter(function (m) { return m.key === METADATA_KEY.NAMED_TAG; })[0];\n }\n return null;\n };\n Target.prototype.getCustomTags = function () {\n if (this.isTagged()) {\n return this.metadata.filter(function (metadata) { return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; }); });\n }\n else {\n return null;\n }\n };\n Target.prototype.matchesNamedTag = function (name) {\n return this.matchesTag(METADATA_KEY.NAMED_TAG)(name);\n };\n Target.prototype.matchesTag = function (key) {\n var _this = this;\n return function (value) {\n for (var _i = 0, _a = _this.metadata; _i < _a.length; _i++) {\n var m = _a[_i];\n if (m.key === key && m.value === value) {\n return true;\n }\n }\n return false;\n };\n };\n return Target;\n}());\nexports.Target = Target;\n//# sourceMappingURL=target.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3RhcmdldC5qcz82MzZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDdkQsV0FBVyxtQkFBTyxDQUFDLDhFQUFhO0FBQ2hDLGlCQUFpQixtQkFBTyxDQUFDLHNGQUFZO0FBQ3JDLHlCQUF5QixtQkFBTyxDQUFDLHNHQUFvQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxnQkFBZ0I7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCwrREFBK0QsNkJBQTZCLEVBQUUsRUFBRSxFQUFFO0FBQ3pKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCx5Q0FBeUMsRUFBRTtBQUNqRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZELCtEQUErRCw2QkFBNkIsRUFBRSxFQUFFLEVBQUU7QUFDL0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxnQkFBZ0I7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3BsYW5uaW5nL3RhcmdldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UYXJnZXQgPSB2b2lkIDA7XG52YXIgTUVUQURBVEFfS0VZID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9tZXRhZGF0YV9rZXlzXCIpO1xudmFyIGlkXzEgPSByZXF1aXJlKFwiLi4vdXRpbHMvaWRcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuL21ldGFkYXRhXCIpO1xudmFyIHF1ZXJ5YWJsZV9zdHJpbmdfMSA9IHJlcXVpcmUoXCIuL3F1ZXJ5YWJsZV9zdHJpbmdcIik7XG52YXIgVGFyZ2V0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUYXJnZXQodHlwZSwgbmFtZSwgc2VydmljZUlkZW50aWZpZXIsIG5hbWVkT3JUYWdnZWQpIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkXzEuaWQoKTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlSWRlbnRpZmllciA9IHNlcnZpY2VJZGVudGlmaWVyO1xuICAgICAgICB0aGlzLm5hbWUgPSBuZXcgcXVlcnlhYmxlX3N0cmluZ18xLlF1ZXJ5YWJsZVN0cmluZyhuYW1lIHx8IFwiXCIpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHZhciBtZXRhZGF0YUl0ZW0gPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIG5hbWVkT3JUYWdnZWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG1ldGFkYXRhSXRlbSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKE1FVEFEQVRBX0tFWS5OQU1FRF9UQUcsIG5hbWVkT3JUYWdnZWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG5hbWVkT3JUYWdnZWQgaW5zdGFuY2VvZiBtZXRhZGF0YV8xLk1ldGFkYXRhKSB7XG4gICAgICAgICAgICBtZXRhZGF0YUl0ZW0gPSBuYW1lZE9yVGFnZ2VkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRhZGF0YUl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YWRhdGEucHVzaChtZXRhZGF0YUl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIFRhcmdldC5wcm90b3R5cGUuaGFzVGFnID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gdGhpcy5tZXRhZGF0YTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBtID0gX2FbX2ldO1xuICAgICAgICAgICAgaWYgKG0ua2V5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLmlzQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1RhZyhNRVRBREFUQV9LRVkuTVVMVElfSU5KRUNUX1RBRyk7XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLm1hdGNoZXNBcnJheSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoZXNUYWcoTUVUQURBVEFfS0VZLk1VTFRJX0lOSkVDVF9UQUcpKG5hbWUpO1xuICAgIH07XG4gICAgVGFyZ2V0LnByb3RvdHlwZS5pc05hbWVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNUYWcoTUVUQURBVEFfS0VZLk5BTUVEX1RBRyk7XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLmlzVGFnZ2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YS5zb21lKGZ1bmN0aW9uIChtZXRhZGF0YSkgeyByZXR1cm4gTUVUQURBVEFfS0VZLk5PTl9DVVNUT01fVEFHX0tFWVMuZXZlcnkoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gbWV0YWRhdGEua2V5ICE9PSBrZXk7IH0pOyB9KTtcbiAgICB9O1xuICAgIFRhcmdldC5wcm90b3R5cGUuaXNPcHRpb25hbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF0Y2hlc1RhZyhNRVRBREFUQV9LRVkuT1BUSU9OQUxfVEFHKSh0cnVlKTtcbiAgICB9O1xuICAgIFRhcmdldC5wcm90b3R5cGUuZ2V0TmFtZWRUYWcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTmFtZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWV0YWRhdGEuZmlsdGVyKGZ1bmN0aW9uIChtKSB7IHJldHVybiBtLmtleSA9PT0gTUVUQURBVEFfS0VZLk5BTUVEX1RBRzsgfSlbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBUYXJnZXQucHJvdG90eXBlLmdldEN1c3RvbVRhZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGFnZ2VkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1ldGFkYXRhLmZpbHRlcihmdW5jdGlvbiAobWV0YWRhdGEpIHsgcmV0dXJuIE1FVEFEQVRBX0tFWS5OT05fQ1VTVE9NX1RBR19LRVlTLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIG1ldGFkYXRhLmtleSAhPT0ga2V5OyB9KTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgVGFyZ2V0LnByb3RvdHlwZS5tYXRjaGVzTmFtZWRUYWcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXRjaGVzVGFnKE1FVEFEQVRBX0tFWS5OQU1FRF9UQUcpKG5hbWUpO1xuICAgIH07XG4gICAgVGFyZ2V0LnByb3RvdHlwZS5tYXRjaGVzVGFnID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gX3RoaXMubWV0YWRhdGE7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG0gPSBfYVtfaV07XG4gICAgICAgICAgICAgICAgaWYgKG0ua2V5ID09PSBrZXkgJiYgbS52YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRhcmdldDtcbn0oKSk7XG5leHBvcnRzLlRhcmdldCA9IFRhcmdldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRhcmdldC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/planning/target.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/resolution/instantiation.js": /*!*********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/resolution/instantiation.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveInstance = void 0;\nvar error_msgs_1 = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nfunction _injectProperties(instance, childRequests, resolveRequest) {\n var propertyInjectionsRequests = childRequests.filter(function (childRequest) {\n return (childRequest.target !== null &&\n childRequest.target.type === literal_types_1.TargetTypeEnum.ClassProperty);\n });\n var propertyInjections = propertyInjectionsRequests.map(resolveRequest);\n propertyInjectionsRequests.forEach(function (r, index) {\n var propertyName = \"\";\n propertyName = r.target.name.value();\n var injection = propertyInjections[index];\n instance[propertyName] = injection;\n });\n return instance;\n}\nfunction _createInstance(Func, injections) {\n return new (Func.bind.apply(Func, __spreadArray([void 0], injections)))();\n}\nfunction _postConstruct(constr, result) {\n if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) {\n var data = Reflect.getMetadata(METADATA_KEY.POST_CONSTRUCT, constr);\n try {\n result[data.value]();\n }\n catch (e) {\n throw new Error(error_msgs_1.POST_CONSTRUCT_ERROR(constr.name, e.message));\n }\n }\n}\nfunction resolveInstance(constr, childRequests, resolveRequest) {\n var result = null;\n if (childRequests.length > 0) {\n var constructorInjectionsRequests = childRequests.filter(function (childRequest) {\n return (childRequest.target !== null && childRequest.target.type === literal_types_1.TargetTypeEnum.ConstructorArgument);\n });\n var constructorInjections = constructorInjectionsRequests.map(resolveRequest);\n result = _createInstance(constr, constructorInjections);\n result = _injectProperties(result, childRequests, resolveRequest);\n }\n else {\n result = new constr();\n }\n _postConstruct(constr, result);\n return result;\n}\nexports.resolveInstance = resolveInstance;\n//# sourceMappingURL=instantiation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3Jlc29sdXRpb24vaW5zdGFudGlhdGlvbi5qcz9jMWY5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQSxvREFBb0QsUUFBUTtBQUM1RDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLHNHQUF5QjtBQUNwRCxzQkFBc0IsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDMUQsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9yZXNvbHV0aW9uL2luc3RhbnRpYXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20pIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBmcm9tLmxlbmd0aCwgaiA9IHRvLmxlbmd0aDsgaSA8IGlsOyBpKyssIGorKylcbiAgICAgICAgdG9bal0gPSBmcm9tW2ldO1xuICAgIHJldHVybiB0bztcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlc29sdmVJbnN0YW5jZSA9IHZvaWQgMDtcbnZhciBlcnJvcl9tc2dzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG52YXIgbGl0ZXJhbF90eXBlc18xID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9saXRlcmFsX3R5cGVzXCIpO1xudmFyIE1FVEFEQVRBX0tFWSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvbWV0YWRhdGFfa2V5c1wiKTtcbmZ1bmN0aW9uIF9pbmplY3RQcm9wZXJ0aWVzKGluc3RhbmNlLCBjaGlsZFJlcXVlc3RzLCByZXNvbHZlUmVxdWVzdCkge1xuICAgIHZhciBwcm9wZXJ0eUluamVjdGlvbnNSZXF1ZXN0cyA9IGNoaWxkUmVxdWVzdHMuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZFJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuIChjaGlsZFJlcXVlc3QudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgICAgICBjaGlsZFJlcXVlc3QudGFyZ2V0LnR5cGUgPT09IGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5DbGFzc1Byb3BlcnR5KTtcbiAgICB9KTtcbiAgICB2YXIgcHJvcGVydHlJbmplY3Rpb25zID0gcHJvcGVydHlJbmplY3Rpb25zUmVxdWVzdHMubWFwKHJlc29sdmVSZXF1ZXN0KTtcbiAgICBwcm9wZXJ0eUluamVjdGlvbnNSZXF1ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uIChyLCBpbmRleCkge1xuICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gXCJcIjtcbiAgICAgICAgcHJvcGVydHlOYW1lID0gci50YXJnZXQubmFtZS52YWx1ZSgpO1xuICAgICAgICB2YXIgaW5qZWN0aW9uID0gcHJvcGVydHlJbmplY3Rpb25zW2luZGV4XTtcbiAgICAgICAgaW5zdGFuY2VbcHJvcGVydHlOYW1lXSA9IGluamVjdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG5mdW5jdGlvbiBfY3JlYXRlSW5zdGFuY2UoRnVuYywgaW5qZWN0aW9ucykge1xuICAgIHJldHVybiBuZXcgKEZ1bmMuYmluZC5hcHBseShGdW5jLCBfX3NwcmVhZEFycmF5KFt2b2lkIDBdLCBpbmplY3Rpb25zKSkpKCk7XG59XG5mdW5jdGlvbiBfcG9zdENvbnN0cnVjdChjb25zdHIsIHJlc3VsdCkge1xuICAgIGlmIChSZWZsZWN0Lmhhc01ldGFkYXRhKE1FVEFEQVRBX0tFWS5QT1NUX0NPTlNUUlVDVCwgY29uc3RyKSkge1xuICAgICAgICB2YXIgZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoTUVUQURBVEFfS0VZLlBPU1RfQ09OU1RSVUNULCBjb25zdHIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0W2RhdGEudmFsdWVdKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcl9tc2dzXzEuUE9TVF9DT05TVFJVQ1RfRVJST1IoY29uc3RyLm5hbWUsIGUubWVzc2FnZSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gcmVzb2x2ZUluc3RhbmNlKGNvbnN0ciwgY2hpbGRSZXF1ZXN0cywgcmVzb2x2ZVJlcXVlc3QpIHtcbiAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICBpZiAoY2hpbGRSZXF1ZXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBjb25zdHJ1Y3RvckluamVjdGlvbnNSZXF1ZXN0cyA9IGNoaWxkUmVxdWVzdHMuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZFJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAoY2hpbGRSZXF1ZXN0LnRhcmdldCAhPT0gbnVsbCAmJiBjaGlsZFJlcXVlc3QudGFyZ2V0LnR5cGUgPT09IGxpdGVyYWxfdHlwZXNfMS5UYXJnZXRUeXBlRW51bS5Db25zdHJ1Y3RvckFyZ3VtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBjb25zdHJ1Y3RvckluamVjdGlvbnMgPSBjb25zdHJ1Y3RvckluamVjdGlvbnNSZXF1ZXN0cy5tYXAocmVzb2x2ZVJlcXVlc3QpO1xuICAgICAgICByZXN1bHQgPSBfY3JlYXRlSW5zdGFuY2UoY29uc3RyLCBjb25zdHJ1Y3RvckluamVjdGlvbnMpO1xuICAgICAgICByZXN1bHQgPSBfaW5qZWN0UHJvcGVydGllcyhyZXN1bHQsIGNoaWxkUmVxdWVzdHMsIHJlc29sdmVSZXF1ZXN0KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBjb25zdHIoKTtcbiAgICB9XG4gICAgX3Bvc3RDb25zdHJ1Y3QoY29uc3RyLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnJlc29sdmVJbnN0YW5jZSA9IHJlc29sdmVJbnN0YW5jZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluc3RhbnRpYXRpb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/resolution/instantiation.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/resolution/resolver.js": /*!****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/resolution/resolver.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolve = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar exceptions_1 = __webpack_require__(/*! ../utils/exceptions */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/exceptions.js\");\nvar serialization_1 = __webpack_require__(/*! ../utils/serialization */ \"./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js\");\nvar instantiation_1 = __webpack_require__(/*! ./instantiation */ \"./node_modules/_inversify@5.1.1@inversify/lib/resolution/instantiation.js\");\nvar invokeFactory = function (factoryType, serviceIdentifier, fn) {\n try {\n return fn();\n }\n catch (error) {\n if (exceptions_1.isStackOverflowExeption(error)) {\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryType, serviceIdentifier.toString()));\n }\n else {\n throw error;\n }\n }\n};\nvar _resolveRequest = function (requestScope) {\n return function (request) {\n request.parentContext.setCurrentRequest(request);\n var bindings = request.bindings;\n var childRequests = request.childRequests;\n var targetIsAnArray = request.target && request.target.isArray();\n var targetParentIsNotAnArray = !request.parentRequest ||\n !request.parentRequest.target ||\n !request.target ||\n !request.parentRequest.target.matchesArray(request.target.serviceIdentifier);\n if (targetIsAnArray && targetParentIsNotAnArray) {\n return childRequests.map(function (childRequest) {\n var _f = _resolveRequest(requestScope);\n return _f(childRequest);\n });\n }\n else {\n var result = null;\n if (request.target.isOptional() && bindings.length === 0) {\n return undefined;\n }\n var binding_1 = bindings[0];\n var isSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Singleton;\n var isRequestSingleton = binding_1.scope === literal_types_1.BindingScopeEnum.Request;\n if (isSingleton && binding_1.activated) {\n return binding_1.cache;\n }\n if (isRequestSingleton &&\n requestScope !== null &&\n requestScope.has(binding_1.id)) {\n return requestScope.get(binding_1.id);\n }\n if (binding_1.type === literal_types_1.BindingTypeEnum.ConstantValue) {\n result = binding_1.cache;\n binding_1.activated = true;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Function) {\n result = binding_1.cache;\n binding_1.activated = true;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Constructor) {\n result = binding_1.implementationType;\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.DynamicValue && binding_1.dynamicValue !== null) {\n result = invokeFactory(\"toDynamicValue\", binding_1.serviceIdentifier, function () { return binding_1.dynamicValue(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Factory && binding_1.factory !== null) {\n result = invokeFactory(\"toFactory\", binding_1.serviceIdentifier, function () { return binding_1.factory(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Provider && binding_1.provider !== null) {\n result = invokeFactory(\"toProvider\", binding_1.serviceIdentifier, function () { return binding_1.provider(request.parentContext); });\n }\n else if (binding_1.type === literal_types_1.BindingTypeEnum.Instance && binding_1.implementationType !== null) {\n result = instantiation_1.resolveInstance(binding_1.implementationType, childRequests, _resolveRequest(requestScope));\n }\n else {\n var serviceIdentifier = serialization_1.getServiceIdentifierAsString(request.serviceIdentifier);\n throw new Error(ERROR_MSGS.INVALID_BINDING_TYPE + \" \" + serviceIdentifier);\n }\n if (typeof binding_1.onActivation === \"function\") {\n result = binding_1.onActivation(request.parentContext, result);\n }\n if (isSingleton) {\n binding_1.cache = result;\n binding_1.activated = true;\n }\n if (isRequestSingleton &&\n requestScope !== null &&\n !requestScope.has(binding_1.id)) {\n requestScope.set(binding_1.id, result);\n }\n return result;\n }\n };\n};\nfunction resolve(context) {\n var _f = _resolveRequest(context.plan.rootRequest.requestScope);\n return _f(context.plan.rootRequest);\n}\nexports.resolve = resolve;\n//# sourceMappingURL=resolver.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3Jlc29sdXRpb24vcmVzb2x2ZXIuanM/ODM5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsc0dBQXlCO0FBQ2xELHNCQUFzQixtQkFBTyxDQUFDLDRHQUE0QjtBQUMxRCxtQkFBbUIsbUJBQU8sQ0FBQyw4RkFBcUI7QUFDaEQsc0JBQXNCLG1CQUFPLENBQUMsb0dBQXdCO0FBQ3RELHNCQUFzQixtQkFBTyxDQUFDLGtHQUFpQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1HQUFtRyxzREFBc0QsRUFBRTtBQUMzSjtBQUNBO0FBQ0EsOEZBQThGLGlEQUFpRCxFQUFFO0FBQ2pKO0FBQ0E7QUFDQSwrRkFBK0Ysa0RBQWtELEVBQUU7QUFDbko7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9yZXNvbHV0aW9uL3Jlc29sdmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlc29sdmUgPSB2b2lkIDA7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgZXhjZXB0aW9uc18xID0gcmVxdWlyZShcIi4uL3V0aWxzL2V4Y2VwdGlvbnNcIik7XG52YXIgc2VyaWFsaXphdGlvbl8xID0gcmVxdWlyZShcIi4uL3V0aWxzL3NlcmlhbGl6YXRpb25cIik7XG52YXIgaW5zdGFudGlhdGlvbl8xID0gcmVxdWlyZShcIi4vaW5zdGFudGlhdGlvblwiKTtcbnZhciBpbnZva2VGYWN0b3J5ID0gZnVuY3Rpb24gKGZhY3RvcnlUeXBlLCBzZXJ2aWNlSWRlbnRpZmllciwgZm4pIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChleGNlcHRpb25zXzEuaXNTdGFja092ZXJmbG93RXhlcHRpb24oZXJyb3IpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5DSVJDVUxBUl9ERVBFTkRFTkNZX0lOX0ZBQ1RPUlkoZmFjdG9yeVR5cGUsIHNlcnZpY2VJZGVudGlmaWVyLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxufTtcbnZhciBfcmVzb2x2ZVJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdFNjb3BlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgIHJlcXVlc3QucGFyZW50Q29udGV4dC5zZXRDdXJyZW50UmVxdWVzdChyZXF1ZXN0KTtcbiAgICAgICAgdmFyIGJpbmRpbmdzID0gcmVxdWVzdC5iaW5kaW5ncztcbiAgICAgICAgdmFyIGNoaWxkUmVxdWVzdHMgPSByZXF1ZXN0LmNoaWxkUmVxdWVzdHM7XG4gICAgICAgIHZhciB0YXJnZXRJc0FuQXJyYXkgPSByZXF1ZXN0LnRhcmdldCAmJiByZXF1ZXN0LnRhcmdldC5pc0FycmF5KCk7XG4gICAgICAgIHZhciB0YXJnZXRQYXJlbnRJc05vdEFuQXJyYXkgPSAhcmVxdWVzdC5wYXJlbnRSZXF1ZXN0IHx8XG4gICAgICAgICAgICAhcmVxdWVzdC5wYXJlbnRSZXF1ZXN0LnRhcmdldCB8fFxuICAgICAgICAgICAgIXJlcXVlc3QudGFyZ2V0IHx8XG4gICAgICAgICAgICAhcmVxdWVzdC5wYXJlbnRSZXF1ZXN0LnRhcmdldC5tYXRjaGVzQXJyYXkocmVxdWVzdC50YXJnZXQuc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICBpZiAodGFyZ2V0SXNBbkFycmF5ICYmIHRhcmdldFBhcmVudElzTm90QW5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkUmVxdWVzdHMubWFwKGZ1bmN0aW9uIChjaGlsZFJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2YgPSBfcmVzb2x2ZVJlcXVlc3QocmVxdWVzdFNjb3BlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2YoY2hpbGRSZXF1ZXN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7XG4gICAgICAgICAgICBpZiAocmVxdWVzdC50YXJnZXQuaXNPcHRpb25hbCgpICYmIGJpbmRpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYmluZGluZ18xID0gYmluZGluZ3NbMF07XG4gICAgICAgICAgICB2YXIgaXNTaW5nbGV0b24gPSBiaW5kaW5nXzEuc2NvcGUgPT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlNpbmdsZXRvbjtcbiAgICAgICAgICAgIHZhciBpc1JlcXVlc3RTaW5nbGV0b24gPSBiaW5kaW5nXzEuc2NvcGUgPT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlJlcXVlc3Q7XG4gICAgICAgICAgICBpZiAoaXNTaW5nbGV0b24gJiYgYmluZGluZ18xLmFjdGl2YXRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBiaW5kaW5nXzEuY2FjaGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNSZXF1ZXN0U2luZ2xldG9uICYmXG4gICAgICAgICAgICAgICAgcmVxdWVzdFNjb3BlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgcmVxdWVzdFNjb3BlLmhhcyhiaW5kaW5nXzEuaWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RTY29wZS5nZXQoYmluZGluZ18xLmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5Db25zdGFudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYmluZGluZ18xLmNhY2hlO1xuICAgICAgICAgICAgICAgIGJpbmRpbmdfMS5hY3RpdmF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYmluZGluZ18xLnR5cGUgPT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBiaW5kaW5nXzEuY2FjaGU7XG4gICAgICAgICAgICAgICAgYmluZGluZ18xLmFjdGl2YXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5Db25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJpbmRpbmdfMS5pbXBsZW1lbnRhdGlvblR5cGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5EeW5hbWljVmFsdWUgJiYgYmluZGluZ18xLmR5bmFtaWNWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGludm9rZUZhY3RvcnkoXCJ0b0R5bmFtaWNWYWx1ZVwiLCBiaW5kaW5nXzEuc2VydmljZUlkZW50aWZpZXIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJpbmRpbmdfMS5keW5hbWljVmFsdWUocmVxdWVzdC5wYXJlbnRDb250ZXh0KTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5GYWN0b3J5ICYmIGJpbmRpbmdfMS5mYWN0b3J5ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaW52b2tlRmFjdG9yeShcInRvRmFjdG9yeVwiLCBiaW5kaW5nXzEuc2VydmljZUlkZW50aWZpZXIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJpbmRpbmdfMS5mYWN0b3J5KHJlcXVlc3QucGFyZW50Q29udGV4dCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYmluZGluZ18xLnR5cGUgPT09IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uUHJvdmlkZXIgJiYgYmluZGluZ18xLnByb3ZpZGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaW52b2tlRmFjdG9yeShcInRvUHJvdmlkZXJcIiwgYmluZGluZ18xLnNlcnZpY2VJZGVudGlmaWVyLCBmdW5jdGlvbiAoKSB7IHJldHVybiBiaW5kaW5nXzEucHJvdmlkZXIocmVxdWVzdC5wYXJlbnRDb250ZXh0KTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiaW5kaW5nXzEudHlwZSA9PT0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5JbnN0YW5jZSAmJiBiaW5kaW5nXzEuaW1wbGVtZW50YXRpb25UeXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5zdGFudGlhdGlvbl8xLnJlc29sdmVJbnN0YW5jZShiaW5kaW5nXzEuaW1wbGVtZW50YXRpb25UeXBlLCBjaGlsZFJlcXVlc3RzLCBfcmVzb2x2ZVJlcXVlc3QocmVxdWVzdFNjb3BlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VydmljZUlkZW50aWZpZXIgPSBzZXJpYWxpemF0aW9uXzEuZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZyhyZXF1ZXN0LnNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5JTlZBTElEX0JJTkRJTkdfVFlQRSArIFwiIFwiICsgc2VydmljZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBiaW5kaW5nXzEub25BY3RpdmF0aW9uID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBiaW5kaW5nXzEub25BY3RpdmF0aW9uKHJlcXVlc3QucGFyZW50Q29udGV4dCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1NpbmdsZXRvbikge1xuICAgICAgICAgICAgICAgIGJpbmRpbmdfMS5jYWNoZSA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICBiaW5kaW5nXzEuYWN0aXZhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1JlcXVlc3RTaW5nbGV0b24gJiZcbiAgICAgICAgICAgICAgICByZXF1ZXN0U2NvcGUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAhcmVxdWVzdFNjb3BlLmhhcyhiaW5kaW5nXzEuaWQpKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdFNjb3BlLnNldChiaW5kaW5nXzEuaWQsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfTtcbn07XG5mdW5jdGlvbiByZXNvbHZlKGNvbnRleHQpIHtcbiAgICB2YXIgX2YgPSBfcmVzb2x2ZVJlcXVlc3QoY29udGV4dC5wbGFuLnJvb3RSZXF1ZXN0LnJlcXVlc3RTY29wZSk7XG4gICAgcmV0dXJuIF9mKGNvbnRleHQucGxhbi5yb290UmVxdWVzdCk7XG59XG5leHBvcnRzLnJlc29sdmUgPSByZXNvbHZlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzb2x2ZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/resolution/resolver.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_syntax.js": /*!*********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_syntax.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingInSyntax = void 0;\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar binding_when_on_syntax_1 = __webpack_require__(/*! ./binding_when_on_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_on_syntax.js\");\nvar BindingInSyntax = (function () {\n function BindingInSyntax(binding) {\n this._binding = binding;\n }\n BindingInSyntax.prototype.inRequestScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Request;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingInSyntax.prototype.inSingletonScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingInSyntax.prototype.inTransientScope = function () {\n this._binding.scope = literal_types_1.BindingScopeEnum.Transient;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n return BindingInSyntax;\n}());\nexports.BindingInSyntax = BindingInSyntax;\n//# sourceMappingURL=binding_in_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX2luX3N5bnRheC5qcz82OGRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxzQkFBc0IsbUJBQU8sQ0FBQyw0R0FBNEI7QUFDMUQsK0JBQStCLG1CQUFPLENBQUMsZ0hBQTBCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvc3ludGF4L2JpbmRpbmdfaW5fc3ludGF4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJpbmRpbmdJblN5bnRheCA9IHZvaWQgMDtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgYmluZGluZ193aGVuX29uX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ193aGVuX29uX3N5bnRheFwiKTtcbnZhciBCaW5kaW5nSW5TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJpbmRpbmdJblN5bnRheChiaW5kaW5nKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcgPSBiaW5kaW5nO1xuICAgIH1cbiAgICBCaW5kaW5nSW5TeW50YXgucHJvdG90eXBlLmluUmVxdWVzdFNjb3BlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uUmVxdWVzdDtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEuQmluZGluZ1doZW5PblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJblN5bnRheC5wcm90b3R5cGUuaW5TaW5nbGV0b25TY29wZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5zY29wZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlNpbmdsZXRvbjtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEuQmluZGluZ1doZW5PblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJblN5bnRheC5wcm90b3R5cGUuaW5UcmFuc2llbnRTY29wZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5zY29wZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlRyYW5zaWVudDtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEuQmluZGluZ1doZW5PblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIHJldHVybiBCaW5kaW5nSW5TeW50YXg7XG59KCkpO1xuZXhwb3J0cy5CaW5kaW5nSW5TeW50YXggPSBCaW5kaW5nSW5TeW50YXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nX2luX3N5bnRheC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_syntax.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_when_on_syntax.js": /*!*****************************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_when_on_syntax.js ***! \*****************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingInWhenOnSyntax = void 0;\nvar binding_in_syntax_1 = __webpack_require__(/*! ./binding_in_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_syntax.js\");\nvar binding_on_syntax_1 = __webpack_require__(/*! ./binding_on_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_on_syntax.js\");\nvar binding_when_syntax_1 = __webpack_require__(/*! ./binding_when_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_syntax.js\");\nvar BindingInWhenOnSyntax = (function () {\n function BindingInWhenOnSyntax(binding) {\n this._binding = binding;\n this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding);\n this._bindingInSyntax = new binding_in_syntax_1.BindingInSyntax(binding);\n }\n BindingInWhenOnSyntax.prototype.inRequestScope = function () {\n return this._bindingInSyntax.inRequestScope();\n };\n BindingInWhenOnSyntax.prototype.inSingletonScope = function () {\n return this._bindingInSyntax.inSingletonScope();\n };\n BindingInWhenOnSyntax.prototype.inTransientScope = function () {\n return this._bindingInSyntax.inTransientScope();\n };\n BindingInWhenOnSyntax.prototype.when = function (constraint) {\n return this._bindingWhenSyntax.when(constraint);\n };\n BindingInWhenOnSyntax.prototype.whenTargetNamed = function (name) {\n return this._bindingWhenSyntax.whenTargetNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenTargetIsDefault = function () {\n return this._bindingWhenSyntax.whenTargetIsDefault();\n };\n BindingInWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\n return this._bindingWhenSyntax.whenInjectedInto(parent);\n };\n BindingInWhenOnSyntax.prototype.whenParentNamed = function (name) {\n return this._bindingWhenSyntax.whenParentNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\n };\n BindingInWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\n };\n BindingInWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\n };\n BindingInWhenOnSyntax.prototype.onActivation = function (handler) {\n return this._bindingOnSyntax.onActivation(handler);\n };\n return BindingInWhenOnSyntax;\n}());\nexports.BindingInWhenOnSyntax = BindingInWhenOnSyntax;\n//# sourceMappingURL=binding_in_when_on_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX2luX3doZW5fb25fc3ludGF4LmpzPzk1NTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLDBCQUEwQixtQkFBTyxDQUFDLHNHQUFxQjtBQUN2RCwwQkFBMEIsbUJBQU8sQ0FBQyxzR0FBcUI7QUFDdkQsNEJBQTRCLG1CQUFPLENBQUMsMEdBQXVCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvc3ludGF4L2JpbmRpbmdfaW5fd2hlbl9vbl9zeW50YXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQmluZGluZ0luV2hlbk9uU3ludGF4ID0gdm9pZCAwO1xudmFyIGJpbmRpbmdfaW5fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX2luX3N5bnRheFwiKTtcbnZhciBiaW5kaW5nX29uX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ19vbl9zeW50YXhcIik7XG52YXIgYmluZGluZ193aGVuX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ193aGVuX3N5bnRheFwiKTtcbnZhciBCaW5kaW5nSW5XaGVuT25TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJpbmRpbmdJbldoZW5PblN5bnRheChiaW5kaW5nKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcgPSBiaW5kaW5nO1xuICAgICAgICB0aGlzLl9iaW5kaW5nV2hlblN5bnRheCA9IG5ldyBiaW5kaW5nX3doZW5fc3ludGF4XzEuQmluZGluZ1doZW5TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmdPblN5bnRheCA9IG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICAgICAgdGhpcy5fYmluZGluZ0luU3ludGF4ID0gbmV3IGJpbmRpbmdfaW5fc3ludGF4XzEuQmluZGluZ0luU3ludGF4KGJpbmRpbmcpO1xuICAgIH1cbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLmluUmVxdWVzdFNjb3BlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ0luU3ludGF4LmluUmVxdWVzdFNjb3BlKCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLmluU2luZ2xldG9uU2NvcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nSW5TeW50YXguaW5TaW5nbGV0b25TY29wZSgpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS5pblRyYW5zaWVudFNjb3BlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ0luU3ludGF4LmluVHJhbnNpZW50U2NvcGUoKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbiA9IGZ1bmN0aW9uIChjb25zdHJhaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuKGNvbnN0cmFpbnQpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0TmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblRhcmdldE5hbWVkKG5hbWUpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0SXNEZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblRhcmdldElzRGVmYXVsdCgpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0VGFnZ2VkID0gZnVuY3Rpb24gKHRhZywgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5UYXJnZXRUYWdnZWQodGFnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5JbmplY3RlZEludG8gPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuSW5qZWN0ZWRJbnRvKHBhcmVudCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5QYXJlbnROYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuUGFyZW50TmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5QYXJlbnRUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblBhcmVudFRhZ2dlZCh0YWcsIHZhbHVlKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9ySXMgPSBmdW5jdGlvbiAoYW5jZXN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5BbnlBbmNlc3RvcklzKGFuY2VzdG9yKTtcbiAgICB9O1xuICAgIEJpbmRpbmdJbldoZW5PblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JJcyA9IGZ1bmN0aW9uIChhbmNlc3Rvcikge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbk5vQW5jZXN0b3JJcyhhbmNlc3Rvcik7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5BbnlBbmNlc3Rvck5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5BbnlBbmNlc3Rvck5hbWVkKG5hbWUpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9yVGFnZ2VkKHRhZywgdmFsdWUpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3Rvck5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5Ob0FuY2VzdG9yTmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9yVGFnZ2VkID0gZnVuY3Rpb24gKHRhZywgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5Ob0FuY2VzdG9yVGFnZ2VkKHRhZywgdmFsdWUpO1xuICAgIH07XG4gICAgQmluZGluZ0luV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JNYXRjaGVzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5BbnlBbmNlc3Rvck1hdGNoZXMoY29uc3RyYWludCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9yTWF0Y2hlcyA9IGZ1bmN0aW9uIChjb25zdHJhaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuTm9BbmNlc3Rvck1hdGNoZXMoY29uc3RyYWludCk7XG4gICAgfTtcbiAgICBCaW5kaW5nSW5XaGVuT25TeW50YXgucHJvdG90eXBlLm9uQWN0aXZhdGlvbiA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nT25TeW50YXgub25BY3RpdmF0aW9uKGhhbmRsZXIpO1xuICAgIH07XG4gICAgcmV0dXJuIEJpbmRpbmdJbldoZW5PblN5bnRheDtcbn0oKSk7XG5leHBvcnRzLkJpbmRpbmdJbldoZW5PblN5bnRheCA9IEJpbmRpbmdJbldoZW5PblN5bnRheDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJpbmRpbmdfaW5fd2hlbl9vbl9zeW50YXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_when_on_syntax.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_on_syntax.js": /*!*********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_on_syntax.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingOnSyntax = void 0;\nvar binding_when_syntax_1 = __webpack_require__(/*! ./binding_when_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_syntax.js\");\nvar BindingOnSyntax = (function () {\n function BindingOnSyntax(binding) {\n this._binding = binding;\n }\n BindingOnSyntax.prototype.onActivation = function (handler) {\n this._binding.onActivation = handler;\n return new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n };\n return BindingOnSyntax;\n}());\nexports.BindingOnSyntax = BindingOnSyntax;\n//# sourceMappingURL=binding_on_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX29uX3N5bnRheC5qcz9jY2RlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSw0QkFBNEIsbUJBQU8sQ0FBQywwR0FBdUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX29uX3N5bnRheC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nT25TeW50YXggPSB2b2lkIDA7XG52YXIgYmluZGluZ193aGVuX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ193aGVuX3N5bnRheFwiKTtcbnZhciBCaW5kaW5nT25TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJpbmRpbmdPblN5bnRheChiaW5kaW5nKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcgPSBiaW5kaW5nO1xuICAgIH1cbiAgICBCaW5kaW5nT25TeW50YXgucHJvdG90eXBlLm9uQWN0aXZhdGlvbiA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcub25BY3RpdmF0aW9uID0gaGFuZGxlcjtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX3doZW5fc3ludGF4XzEuQmluZGluZ1doZW5TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICByZXR1cm4gQmluZGluZ09uU3ludGF4O1xufSgpKTtcbmV4cG9ydHMuQmluZGluZ09uU3ludGF4ID0gQmluZGluZ09uU3ludGF4O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmluZGluZ19vbl9zeW50YXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_on_syntax.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_to_syntax.js": /*!*********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_to_syntax.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingToSyntax = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nvar literal_types_1 = __webpack_require__(/*! ../constants/literal_types */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/literal_types.js\");\nvar binding_in_when_on_syntax_1 = __webpack_require__(/*! ./binding_in_when_on_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_in_when_on_syntax.js\");\nvar binding_when_on_syntax_1 = __webpack_require__(/*! ./binding_when_on_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_on_syntax.js\");\nvar BindingToSyntax = (function () {\n function BindingToSyntax(binding) {\n this._binding = binding;\n }\n BindingToSyntax.prototype.to = function (constructor) {\n this._binding.type = literal_types_1.BindingTypeEnum.Instance;\n this._binding.implementationType = constructor;\n return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toSelf = function () {\n if (typeof this._binding.serviceIdentifier !== \"function\") {\n throw new Error(\"\" + ERROR_MSGS.INVALID_TO_SELF_VALUE);\n }\n var self = this._binding.serviceIdentifier;\n return this.to(self);\n };\n BindingToSyntax.prototype.toConstantValue = function (value) {\n this._binding.type = literal_types_1.BindingTypeEnum.ConstantValue;\n this._binding.cache = value;\n this._binding.dynamicValue = null;\n this._binding.implementationType = null;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toDynamicValue = function (func) {\n this._binding.type = literal_types_1.BindingTypeEnum.DynamicValue;\n this._binding.cache = null;\n this._binding.dynamicValue = func;\n this._binding.implementationType = null;\n return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toConstructor = function (constructor) {\n this._binding.type = literal_types_1.BindingTypeEnum.Constructor;\n this._binding.implementationType = constructor;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toFactory = function (factory) {\n this._binding.type = literal_types_1.BindingTypeEnum.Factory;\n this._binding.factory = factory;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toFunction = function (func) {\n if (typeof func !== \"function\") {\n throw new Error(ERROR_MSGS.INVALID_FUNCTION_BINDING);\n }\n var bindingWhenOnSyntax = this.toConstantValue(func);\n this._binding.type = literal_types_1.BindingTypeEnum.Function;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return bindingWhenOnSyntax;\n };\n BindingToSyntax.prototype.toAutoFactory = function (serviceIdentifier) {\n this._binding.type = literal_types_1.BindingTypeEnum.Factory;\n this._binding.factory = function (context) {\n var autofactory = function () { return context.container.get(serviceIdentifier); };\n return autofactory;\n };\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toProvider = function (provider) {\n this._binding.type = literal_types_1.BindingTypeEnum.Provider;\n this._binding.provider = provider;\n this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;\n return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);\n };\n BindingToSyntax.prototype.toService = function (service) {\n this.toDynamicValue(function (context) { return context.container.get(service); });\n };\n return BindingToSyntax;\n}());\nexports.BindingToSyntax = BindingToSyntax;\n//# sourceMappingURL=binding_to_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX3RvX3N5bnRheC5qcz9iMzMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyxzR0FBeUI7QUFDbEQsc0JBQXNCLG1CQUFPLENBQUMsNEdBQTRCO0FBQzFELGtDQUFrQyxtQkFBTyxDQUFDLHNIQUE2QjtBQUN2RSwrQkFBK0IsbUJBQU8sQ0FBQyxnSEFBMEI7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsaURBQWlEO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCx1Q0FBdUMsRUFBRTtBQUN6RjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX3RvX3N5bnRheC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nVG9TeW50YXggPSB2b2lkIDA7XG52YXIgRVJST1JfTVNHUyA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHMvZXJyb3JfbXNnc1wiKTtcbnZhciBsaXRlcmFsX3R5cGVzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2xpdGVyYWxfdHlwZXNcIik7XG52YXIgYmluZGluZ19pbl93aGVuX29uX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ19pbl93aGVuX29uX3N5bnRheFwiKTtcbnZhciBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEgPSByZXF1aXJlKFwiLi9iaW5kaW5nX3doZW5fb25fc3ludGF4XCIpO1xudmFyIEJpbmRpbmdUb1N5bnRheCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQmluZGluZ1RvU3ludGF4KGJpbmRpbmcpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZyA9IGJpbmRpbmc7XG4gICAgfVxuICAgIEJpbmRpbmdUb1N5bnRheC5wcm90b3R5cGUudG8gPSBmdW5jdGlvbiAoY29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy50eXBlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5JbnN0YW5jZTtcbiAgICAgICAgdGhpcy5fYmluZGluZy5pbXBsZW1lbnRhdGlvblR5cGUgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX2luX3doZW5fb25fc3ludGF4XzEuQmluZGluZ0luV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b1NlbGYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fYmluZGluZy5zZXJ2aWNlSWRlbnRpZmllciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJcIiArIEVSUk9SX01TR1MuSU5WQUxJRF9UT19TRUxGX1ZBTFVFKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2VsZiA9IHRoaXMuX2JpbmRpbmcuc2VydmljZUlkZW50aWZpZXI7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKHNlbGYpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b0NvbnN0YW50VmFsdWUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy50eXBlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdUeXBlRW51bS5Db25zdGFudFZhbHVlO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNhY2hlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuZHluYW1pY1ZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fYmluZGluZy5pbXBsZW1lbnRhdGlvblR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b0R5bmFtaWNWYWx1ZSA9IGZ1bmN0aW9uIChmdW5jKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcudHlwZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uRHluYW1pY1ZhbHVlO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNhY2hlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fYmluZGluZy5keW5hbWljVmFsdWUgPSBmdW5jO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSA9IG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19pbl93aGVuX29uX3N5bnRheF8xLkJpbmRpbmdJbldoZW5PblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdUb1N5bnRheC5wcm90b3R5cGUudG9Db25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChjb25zdHJ1Y3Rvcikge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkNvbnN0cnVjdG9yO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSA9IGNvbnN0cnVjdG9yO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b0ZhY3RvcnkgPSBmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkZhY3Rvcnk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuZmFjdG9yeSA9IGZhY3Rvcnk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuc2NvcGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1Njb3BlRW51bS5TaW5nbGV0b247XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ193aGVuX29uX3N5bnRheF8xLkJpbmRpbmdXaGVuT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nVG9TeW50YXgucHJvdG90eXBlLnRvRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuYykge1xuICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX01TR1MuSU5WQUxJRF9GVU5DVElPTl9CSU5ESU5HKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYmluZGluZ1doZW5PblN5bnRheCA9IHRoaXMudG9Db25zdGFudFZhbHVlKGZ1bmMpO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkZ1bmN0aW9uO1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICByZXR1cm4gYmluZGluZ1doZW5PblN5bnRheDtcbiAgICB9O1xuICAgIEJpbmRpbmdUb1N5bnRheC5wcm90b3R5cGUudG9BdXRvRmFjdG9yeSA9IGZ1bmN0aW9uIChzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnR5cGUgPSBsaXRlcmFsX3R5cGVzXzEuQmluZGluZ1R5cGVFbnVtLkZhY3Rvcnk7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuZmFjdG9yeSA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgICAgICB2YXIgYXV0b2ZhY3RvcnkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb250ZXh0LmNvbnRhaW5lci5nZXQoc2VydmljZUlkZW50aWZpZXIpOyB9O1xuICAgICAgICAgICAgcmV0dXJuIGF1dG9mYWN0b3J5O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9iaW5kaW5nLnNjb3BlID0gbGl0ZXJhbF90eXBlc18xLkJpbmRpbmdTY29wZUVudW0uU2luZ2xldG9uO1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfd2hlbl9vbl9zeW50YXhfMS5CaW5kaW5nV2hlbk9uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1RvU3ludGF4LnByb3RvdHlwZS50b1Byb3ZpZGVyID0gZnVuY3Rpb24gKHByb3ZpZGVyKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcudHlwZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nVHlwZUVudW0uUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcucHJvdmlkZXIgPSBwcm92aWRlcjtcbiAgICAgICAgdGhpcy5fYmluZGluZy5zY29wZSA9IGxpdGVyYWxfdHlwZXNfMS5CaW5kaW5nU2NvcGVFbnVtLlNpbmdsZXRvbjtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX3doZW5fb25fc3ludGF4XzEuQmluZGluZ1doZW5PblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdUb1N5bnRheC5wcm90b3R5cGUudG9TZXJ2aWNlID0gZnVuY3Rpb24gKHNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy50b0R5bmFtaWNWYWx1ZShmdW5jdGlvbiAoY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5jb250YWluZXIuZ2V0KHNlcnZpY2UpOyB9KTtcbiAgICB9O1xuICAgIHJldHVybiBCaW5kaW5nVG9TeW50YXg7XG59KCkpO1xuZXhwb3J0cy5CaW5kaW5nVG9TeW50YXggPSBCaW5kaW5nVG9TeW50YXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nX3RvX3N5bnRheC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_to_syntax.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_on_syntax.js": /*!**************************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_on_syntax.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingWhenOnSyntax = void 0;\nvar binding_on_syntax_1 = __webpack_require__(/*! ./binding_on_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_on_syntax.js\");\nvar binding_when_syntax_1 = __webpack_require__(/*! ./binding_when_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_syntax.js\");\nvar BindingWhenOnSyntax = (function () {\n function BindingWhenOnSyntax(binding) {\n this._binding = binding;\n this._bindingWhenSyntax = new binding_when_syntax_1.BindingWhenSyntax(this._binding);\n this._bindingOnSyntax = new binding_on_syntax_1.BindingOnSyntax(this._binding);\n }\n BindingWhenOnSyntax.prototype.when = function (constraint) {\n return this._bindingWhenSyntax.when(constraint);\n };\n BindingWhenOnSyntax.prototype.whenTargetNamed = function (name) {\n return this._bindingWhenSyntax.whenTargetNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenTargetIsDefault = function () {\n return this._bindingWhenSyntax.whenTargetIsDefault();\n };\n BindingWhenOnSyntax.prototype.whenTargetTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenTargetTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenInjectedInto = function (parent) {\n return this._bindingWhenSyntax.whenInjectedInto(parent);\n };\n BindingWhenOnSyntax.prototype.whenParentNamed = function (name) {\n return this._bindingWhenSyntax.whenParentNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenParentTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenParentTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenAnyAncestorIs(ancestor);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n return this._bindingWhenSyntax.whenNoAncestorIs(ancestor);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenAnyAncestorNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenAnyAncestorTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorNamed = function (name) {\n return this._bindingWhenSyntax.whenNoAncestorNamed(name);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n return this._bindingWhenSyntax.whenNoAncestorTagged(tag, value);\n };\n BindingWhenOnSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenAnyAncestorMatches(constraint);\n };\n BindingWhenOnSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n return this._bindingWhenSyntax.whenNoAncestorMatches(constraint);\n };\n BindingWhenOnSyntax.prototype.onActivation = function (handler) {\n return this._bindingOnSyntax.onActivation(handler);\n };\n return BindingWhenOnSyntax;\n}());\nexports.BindingWhenOnSyntax = BindingWhenOnSyntax;\n//# sourceMappingURL=binding_when_on_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX3doZW5fb25fc3ludGF4LmpzP2JhMWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLDBCQUEwQixtQkFBTyxDQUFDLHNHQUFxQjtBQUN2RCw0QkFBNEIsbUJBQU8sQ0FBQywwR0FBdUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvc3ludGF4L2JpbmRpbmdfd2hlbl9vbl9zeW50YXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQmluZGluZ1doZW5PblN5bnRheCA9IHZvaWQgMDtcbnZhciBiaW5kaW5nX29uX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ19vbl9zeW50YXhcIik7XG52YXIgYmluZGluZ193aGVuX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ193aGVuX3N5bnRheFwiKTtcbnZhciBCaW5kaW5nV2hlbk9uU3ludGF4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCaW5kaW5nV2hlbk9uU3ludGF4KGJpbmRpbmcpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZyA9IGJpbmRpbmc7XG4gICAgICAgIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4ID0gbmV3IGJpbmRpbmdfd2hlbl9zeW50YXhfMS5CaW5kaW5nV2hlblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICAgICAgdGhpcy5fYmluZGluZ09uU3ludGF4ID0gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH1cbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW4oY29uc3RyYWludCk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0TmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblRhcmdldE5hbWVkKG5hbWUpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlblRhcmdldElzRGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5UYXJnZXRJc0RlZmF1bHQoKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5UYXJnZXRUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblRhcmdldFRhZ2dlZCh0YWcsIHZhbHVlKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5JbmplY3RlZEludG8gPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuSW5qZWN0ZWRJbnRvKHBhcmVudCk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuUGFyZW50TmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlblBhcmVudE5hbWVkKG5hbWUpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlblBhcmVudFRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuUGFyZW50VGFnZ2VkKHRhZywgdmFsdWUpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9ySXMgPSBmdW5jdGlvbiAoYW5jZXN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5BbnlBbmNlc3RvcklzKGFuY2VzdG9yKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuT25TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9ySXMgPSBmdW5jdGlvbiAoYW5jZXN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5Ob0FuY2VzdG9ySXMoYW5jZXN0b3IpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9yTmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9yTmFtZWQobmFtZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbkFueUFuY2VzdG9yVGFnZ2VkKHRhZywgdmFsdWUpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JOYW1lZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaW5kaW5nV2hlblN5bnRheC53aGVuTm9BbmNlc3Rvck5hbWVkKG5hbWUpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbk5vQW5jZXN0b3JUYWdnZWQodGFnLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuQW55QW5jZXN0b3JNYXRjaGVzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdXaGVuU3ludGF4LndoZW5BbnlBbmNlc3Rvck1hdGNoZXMoY29uc3RyYWludCk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlbk9uU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3Rvck1hdGNoZXMgPSBmdW5jdGlvbiAoY29uc3RyYWludCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmluZGluZ1doZW5TeW50YXgud2hlbk5vQW5jZXN0b3JNYXRjaGVzKGNvbnN0cmFpbnQpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5PblN5bnRheC5wcm90b3R5cGUub25BY3RpdmF0aW9uID0gZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpbmRpbmdPblN5bnRheC5vbkFjdGl2YXRpb24oaGFuZGxlcik7XG4gICAgfTtcbiAgICByZXR1cm4gQmluZGluZ1doZW5PblN5bnRheDtcbn0oKSk7XG5leHBvcnRzLkJpbmRpbmdXaGVuT25TeW50YXggPSBCaW5kaW5nV2hlbk9uU3ludGF4O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmluZGluZ193aGVuX29uX3N5bnRheC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_on_syntax.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_syntax.js": /*!***********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_syntax.js ***! \***********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindingWhenSyntax = void 0;\nvar binding_on_syntax_1 = __webpack_require__(/*! ./binding_on_syntax */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_on_syntax.js\");\nvar constraint_helpers_1 = __webpack_require__(/*! ./constraint_helpers */ \"./node_modules/_inversify@5.1.1@inversify/lib/syntax/constraint_helpers.js\");\nvar BindingWhenSyntax = (function () {\n function BindingWhenSyntax(binding) {\n this._binding = binding;\n }\n BindingWhenSyntax.prototype.when = function (constraint) {\n this._binding.constraint = constraint;\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetNamed = function (name) {\n this._binding.constraint = constraint_helpers_1.namedConstraint(name);\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetIsDefault = function () {\n this._binding.constraint = function (request) {\n var targetIsDefault = (request.target !== null) &&\n (!request.target.isNamed()) &&\n (!request.target.isTagged());\n return targetIsDefault;\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenTargetTagged = function (tag, value) {\n this._binding.constraint = constraint_helpers_1.taggedConstraint(tag)(value);\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenInjectedInto = function (parent) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.typeConstraint(parent)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenParentNamed = function (name) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.namedConstraint(name)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenParentTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.taggedConstraint(tag)(value)(request.parentRequest);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorIs = function (ancestor) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorIs = function (ancestor) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.typeConstraint(ancestor));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorNamed = function (name) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorNamed = function (name) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.namedConstraint(name));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorTagged = function (tag, value) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint_helpers_1.taggedConstraint(tag)(value));\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenAnyAncestorMatches = function (constraint) {\n this._binding.constraint = function (request) {\n return constraint_helpers_1.traverseAncerstors(request, constraint);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n BindingWhenSyntax.prototype.whenNoAncestorMatches = function (constraint) {\n this._binding.constraint = function (request) {\n return !constraint_helpers_1.traverseAncerstors(request, constraint);\n };\n return new binding_on_syntax_1.BindingOnSyntax(this._binding);\n };\n return BindingWhenSyntax;\n}());\nexports.BindingWhenSyntax = BindingWhenSyntax;\n//# sourceMappingURL=binding_when_syntax.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9iaW5kaW5nX3doZW5fc3ludGF4LmpzPzIxMzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLDBCQUEwQixtQkFBTyxDQUFDLHNHQUFxQjtBQUN2RCwyQkFBMkIsbUJBQU8sQ0FBQyx3R0FBc0I7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9zeW50YXgvYmluZGluZ193aGVuX3N5bnRheC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CaW5kaW5nV2hlblN5bnRheCA9IHZvaWQgMDtcbnZhciBiaW5kaW5nX29uX3N5bnRheF8xID0gcmVxdWlyZShcIi4vYmluZGluZ19vbl9zeW50YXhcIik7XG52YXIgY29uc3RyYWludF9oZWxwZXJzXzEgPSByZXF1aXJlKFwiLi9jb25zdHJhaW50X2hlbHBlcnNcIik7XG52YXIgQmluZGluZ1doZW5TeW50YXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJpbmRpbmdXaGVuU3ludGF4KGJpbmRpbmcpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZyA9IGJpbmRpbmc7XG4gICAgfVxuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuID0gZnVuY3Rpb24gKGNvbnN0cmFpbnQpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gY29uc3RyYWludDtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuVGFyZ2V0TmFtZWQgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBjb25zdHJhaW50X2hlbHBlcnNfMS5uYW1lZENvbnN0cmFpbnQobmFtZSk7XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlblRhcmdldElzRGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXRJc0RlZmF1bHQgPSAocmVxdWVzdC50YXJnZXQgIT09IG51bGwpICYmXG4gICAgICAgICAgICAgICAgKCFyZXF1ZXN0LnRhcmdldC5pc05hbWVkKCkpICYmXG4gICAgICAgICAgICAgICAgKCFyZXF1ZXN0LnRhcmdldC5pc1RhZ2dlZCgpKTtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXRJc0RlZmF1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlblRhcmdldFRhZ2dlZCA9IGZ1bmN0aW9uICh0YWcsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY29uc3RyYWludCA9IGNvbnN0cmFpbnRfaGVscGVyc18xLnRhZ2dlZENvbnN0cmFpbnQodGFnKSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbkluamVjdGVkSW50byA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50eXBlQ29uc3RyYWludChwYXJlbnQpKHJlcXVlc3QucGFyZW50UmVxdWVzdCk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlblBhcmVudE5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS5uYW1lZENvbnN0cmFpbnQobmFtZSkocmVxdWVzdC5wYXJlbnRSZXF1ZXN0KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuUGFyZW50VGFnZ2VkID0gZnVuY3Rpb24gKHRhZywgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50YWdnZWRDb25zdHJhaW50KHRhZykodmFsdWUpKHJlcXVlc3QucGFyZW50UmVxdWVzdCk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9ySXMgPSBmdW5jdGlvbiAoYW5jZXN0b3IpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnMocmVxdWVzdCwgY29uc3RyYWludF9oZWxwZXJzXzEudHlwZUNvbnN0cmFpbnQoYW5jZXN0b3IpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3RvcklzID0gZnVuY3Rpb24gKGFuY2VzdG9yKSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY29uc3RyYWludCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gIWNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9ycyhyZXF1ZXN0LCBjb25zdHJhaW50X2hlbHBlcnNfMS50eXBlQ29uc3RyYWludChhbmNlc3RvcikpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW5BbnlBbmNlc3Rvck5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnMocmVxdWVzdCwgY29uc3RyYWludF9oZWxwZXJzXzEubmFtZWRDb25zdHJhaW50KG5hbWUpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIEJpbmRpbmdXaGVuU3ludGF4LnByb3RvdHlwZS53aGVuTm9BbmNlc3Rvck5hbWVkID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAhY29uc3RyYWludF9oZWxwZXJzXzEudHJhdmVyc2VBbmNlcnN0b3JzKHJlcXVlc3QsIGNvbnN0cmFpbnRfaGVscGVyc18xLm5hbWVkQ29uc3RyYWludChuYW1lKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9yVGFnZ2VkID0gZnVuY3Rpb24gKHRhZywgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fYmluZGluZy5jb25zdHJhaW50ID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnMocmVxdWVzdCwgY29uc3RyYWludF9oZWxwZXJzXzEudGFnZ2VkQ29uc3RyYWludCh0YWcpKHZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbk5vQW5jZXN0b3JUYWdnZWQgPSBmdW5jdGlvbiAodGFnLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9iaW5kaW5nLmNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICAgICAgcmV0dXJuICFjb25zdHJhaW50X2hlbHBlcnNfMS50cmF2ZXJzZUFuY2Vyc3RvcnMocmVxdWVzdCwgY29uc3RyYWludF9oZWxwZXJzXzEudGFnZ2VkQ29uc3RyYWludCh0YWcpKHZhbHVlKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgYmluZGluZ19vbl9zeW50YXhfMS5CaW5kaW5nT25TeW50YXgodGhpcy5fYmluZGluZyk7XG4gICAgfTtcbiAgICBCaW5kaW5nV2hlblN5bnRheC5wcm90b3R5cGUud2hlbkFueUFuY2VzdG9yTWF0Y2hlcyA9IGZ1bmN0aW9uIChjb25zdHJhaW50KSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY29uc3RyYWludCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gY29uc3RyYWludF9oZWxwZXJzXzEudHJhdmVyc2VBbmNlcnN0b3JzKHJlcXVlc3QsIGNvbnN0cmFpbnQpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmV3IGJpbmRpbmdfb25fc3ludGF4XzEuQmluZGluZ09uU3ludGF4KHRoaXMuX2JpbmRpbmcpO1xuICAgIH07XG4gICAgQmluZGluZ1doZW5TeW50YXgucHJvdG90eXBlLndoZW5Ob0FuY2VzdG9yTWF0Y2hlcyA9IGZ1bmN0aW9uIChjb25zdHJhaW50KSB7XG4gICAgICAgIHRoaXMuX2JpbmRpbmcuY29uc3RyYWludCA9IGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gIWNvbnN0cmFpbnRfaGVscGVyc18xLnRyYXZlcnNlQW5jZXJzdG9ycyhyZXF1ZXN0LCBjb25zdHJhaW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5ldyBiaW5kaW5nX29uX3N5bnRheF8xLkJpbmRpbmdPblN5bnRheCh0aGlzLl9iaW5kaW5nKTtcbiAgICB9O1xuICAgIHJldHVybiBCaW5kaW5nV2hlblN5bnRheDtcbn0oKSk7XG5leHBvcnRzLkJpbmRpbmdXaGVuU3ludGF4ID0gQmluZGluZ1doZW5TeW50YXg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iaW5kaW5nX3doZW5fc3ludGF4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/binding_when_syntax.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/syntax/constraint_helpers.js": /*!**********************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/syntax/constraint_helpers.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.typeConstraint = exports.namedConstraint = exports.taggedConstraint = exports.traverseAncerstors = void 0;\nvar METADATA_KEY = __webpack_require__(/*! ../constants/metadata_keys */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/metadata_keys.js\");\nvar metadata_1 = __webpack_require__(/*! ../planning/metadata */ \"./node_modules/_inversify@5.1.1@inversify/lib/planning/metadata.js\");\nvar traverseAncerstors = function (request, constraint) {\n var parent = request.parentRequest;\n if (parent !== null) {\n return constraint(parent) ? true : traverseAncerstors(parent, constraint);\n }\n else {\n return false;\n }\n};\nexports.traverseAncerstors = traverseAncerstors;\nvar taggedConstraint = function (key) { return function (value) {\n var constraint = function (request) {\n return request !== null && request.target !== null && request.target.matchesTag(key)(value);\n };\n constraint.metaData = new metadata_1.Metadata(key, value);\n return constraint;\n}; };\nexports.taggedConstraint = taggedConstraint;\nvar namedConstraint = taggedConstraint(METADATA_KEY.NAMED_TAG);\nexports.namedConstraint = namedConstraint;\nvar typeConstraint = function (type) { return function (request) {\n var binding = null;\n if (request !== null) {\n binding = request.bindings[0];\n if (typeof type === \"string\") {\n var serviceIdentifier = binding.serviceIdentifier;\n return serviceIdentifier === type;\n }\n else {\n var constructor = request.bindings[0].implementationType;\n return type === constructor;\n }\n }\n return false;\n}; };\nexports.typeConstraint = typeConstraint;\n//# sourceMappingURL=constraint_helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3N5bnRheC9jb25zdHJhaW50X2hlbHBlcnMuanM/ZDNkNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsNEdBQTRCO0FBQ3ZELGlCQUFpQixtQkFBTyxDQUFDLGdHQUFzQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi9zeW50YXgvY29uc3RyYWludF9oZWxwZXJzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnR5cGVDb25zdHJhaW50ID0gZXhwb3J0cy5uYW1lZENvbnN0cmFpbnQgPSBleHBvcnRzLnRhZ2dlZENvbnN0cmFpbnQgPSBleHBvcnRzLnRyYXZlcnNlQW5jZXJzdG9ycyA9IHZvaWQgMDtcbnZhciBNRVRBREFUQV9LRVkgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL21ldGFkYXRhX2tleXNcIik7XG52YXIgbWV0YWRhdGFfMSA9IHJlcXVpcmUoXCIuLi9wbGFubmluZy9tZXRhZGF0YVwiKTtcbnZhciB0cmF2ZXJzZUFuY2Vyc3RvcnMgPSBmdW5jdGlvbiAocmVxdWVzdCwgY29uc3RyYWludCkge1xuICAgIHZhciBwYXJlbnQgPSByZXF1ZXN0LnBhcmVudFJlcXVlc3Q7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gY29uc3RyYWludChwYXJlbnQpID8gdHJ1ZSA6IHRyYXZlcnNlQW5jZXJzdG9ycyhwYXJlbnQsIGNvbnN0cmFpbnQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn07XG5leHBvcnRzLnRyYXZlcnNlQW5jZXJzdG9ycyA9IHRyYXZlcnNlQW5jZXJzdG9ycztcbnZhciB0YWdnZWRDb25zdHJhaW50ID0gZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIGNvbnN0cmFpbnQgPSBmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICByZXR1cm4gcmVxdWVzdCAhPT0gbnVsbCAmJiByZXF1ZXN0LnRhcmdldCAhPT0gbnVsbCAmJiByZXF1ZXN0LnRhcmdldC5tYXRjaGVzVGFnKGtleSkodmFsdWUpO1xuICAgIH07XG4gICAgY29uc3RyYWludC5tZXRhRGF0YSA9IG5ldyBtZXRhZGF0YV8xLk1ldGFkYXRhKGtleSwgdmFsdWUpO1xuICAgIHJldHVybiBjb25zdHJhaW50O1xufTsgfTtcbmV4cG9ydHMudGFnZ2VkQ29uc3RyYWludCA9IHRhZ2dlZENvbnN0cmFpbnQ7XG52YXIgbmFtZWRDb25zdHJhaW50ID0gdGFnZ2VkQ29uc3RyYWludChNRVRBREFUQV9LRVkuTkFNRURfVEFHKTtcbmV4cG9ydHMubmFtZWRDb25zdHJhaW50ID0gbmFtZWRDb25zdHJhaW50O1xudmFyIHR5cGVDb25zdHJhaW50ID0gZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgdmFyIGJpbmRpbmcgPSBudWxsO1xuICAgIGlmIChyZXF1ZXN0ICE9PSBudWxsKSB7XG4gICAgICAgIGJpbmRpbmcgPSByZXF1ZXN0LmJpbmRpbmdzWzBdO1xuICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHZhciBzZXJ2aWNlSWRlbnRpZmllciA9IGJpbmRpbmcuc2VydmljZUlkZW50aWZpZXI7XG4gICAgICAgICAgICByZXR1cm4gc2VydmljZUlkZW50aWZpZXIgPT09IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgY29uc3RydWN0b3IgPSByZXF1ZXN0LmJpbmRpbmdzWzBdLmltcGxlbWVudGF0aW9uVHlwZTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlID09PSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59OyB9O1xuZXhwb3J0cy50eXBlQ29uc3RyYWludCA9IHR5cGVDb25zdHJhaW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RyYWludF9oZWxwZXJzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/syntax/constraint_helpers.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/utils/binding_utils.js": /*!****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/utils/binding_utils.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiBindToService = void 0;\nvar multiBindToService = function (container) {\n return function (service) {\n return function () {\n var types = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n types[_i] = arguments[_i];\n }\n return types.forEach(function (t) { return container.bind(t).toService(service); });\n };\n };\n};\nexports.multiBindToService = multiBindToService;\n//# sourceMappingURL=binding_utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3V0aWxzL2JpbmRpbmdfdXRpbHMuanM/NjZlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsdUJBQXVCO0FBQ25EO0FBQ0E7QUFDQSwrQ0FBK0MsNkNBQTZDLEVBQUU7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvdXRpbHMvYmluZGluZ191dGlscy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tdWx0aUJpbmRUb1NlcnZpY2UgPSB2b2lkIDA7XG52YXIgbXVsdGlCaW5kVG9TZXJ2aWNlID0gZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VydmljZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHR5cGVzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHR5cGVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHlwZXMuZm9yRWFjaChmdW5jdGlvbiAodCkgeyByZXR1cm4gY29udGFpbmVyLmJpbmQodCkudG9TZXJ2aWNlKHNlcnZpY2UpOyB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xufTtcbmV4cG9ydHMubXVsdGlCaW5kVG9TZXJ2aWNlID0gbXVsdGlCaW5kVG9TZXJ2aWNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmluZGluZ191dGlscy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/utils/binding_utils.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/utils/exceptions.js": /*!*************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/utils/exceptions.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isStackOverflowExeption = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nfunction isStackOverflowExeption(error) {\n return (error instanceof RangeError ||\n error.message === ERROR_MSGS.STACK_OVERFLOW);\n}\nexports.isStackOverflowExeption = isStackOverflowExeption;\n//# sourceMappingURL=exceptions.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3V0aWxzL2V4Y2VwdGlvbnMuanM/MDE0MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsc0dBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvdXRpbHMvZXhjZXB0aW9ucy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc1N0YWNrT3ZlcmZsb3dFeGVwdGlvbiA9IHZvaWQgMDtcbnZhciBFUlJPUl9NU0dTID0gcmVxdWlyZShcIi4uL2NvbnN0YW50cy9lcnJvcl9tc2dzXCIpO1xuZnVuY3Rpb24gaXNTdGFja092ZXJmbG93RXhlcHRpb24oZXJyb3IpIHtcbiAgICByZXR1cm4gKGVycm9yIGluc3RhbmNlb2YgUmFuZ2VFcnJvciB8fFxuICAgICAgICBlcnJvci5tZXNzYWdlID09PSBFUlJPUl9NU0dTLlNUQUNLX09WRVJGTE9XKTtcbn1cbmV4cG9ydHMuaXNTdGFja092ZXJmbG93RXhlcHRpb24gPSBpc1N0YWNrT3ZlcmZsb3dFeGVwdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV4Y2VwdGlvbnMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/utils/exceptions.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js": /*!*****************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.id = void 0;\nvar idCounter = 0;\nfunction id() {\n return idCounter++;\n}\nexports.id = id;\n//# sourceMappingURL=id.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3V0aWxzL2lkLmpzP2E5MjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faW52ZXJzaWZ5QDUuMS4xQGludmVyc2lmeS9saWIvdXRpbHMvaWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaWQgPSB2b2lkIDA7XG52YXIgaWRDb3VudGVyID0gMDtcbmZ1bmN0aW9uIGlkKCkge1xuICAgIHJldHVybiBpZENvdW50ZXIrKztcbn1cbmV4cG9ydHMuaWQgPSBpZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/utils/id.js\n"); /***/ }), /***/ "./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js": /*!****************************************************************************!*\ !*** ./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.circularDependencyToException = exports.listMetadataForTarget = exports.listRegisteredBindingsForServiceIdentifier = exports.getServiceIdentifierAsString = exports.getFunctionName = void 0;\nvar ERROR_MSGS = __webpack_require__(/*! ../constants/error_msgs */ \"./node_modules/_inversify@5.1.1@inversify/lib/constants/error_msgs.js\");\nfunction getServiceIdentifierAsString(serviceIdentifier) {\n if (typeof serviceIdentifier === \"function\") {\n var _serviceIdentifier = serviceIdentifier;\n return _serviceIdentifier.name;\n }\n else if (typeof serviceIdentifier === \"symbol\") {\n return serviceIdentifier.toString();\n }\n else {\n var _serviceIdentifier = serviceIdentifier;\n return _serviceIdentifier;\n }\n}\nexports.getServiceIdentifierAsString = getServiceIdentifierAsString;\nfunction listRegisteredBindingsForServiceIdentifier(container, serviceIdentifier, getBindings) {\n var registeredBindingsList = \"\";\n var registeredBindings = getBindings(container, serviceIdentifier);\n if (registeredBindings.length !== 0) {\n registeredBindingsList = \"\\nRegistered bindings:\";\n registeredBindings.forEach(function (binding) {\n var name = \"Object\";\n if (binding.implementationType !== null) {\n name = getFunctionName(binding.implementationType);\n }\n registeredBindingsList = registeredBindingsList + \"\\n \" + name;\n if (binding.constraint.metaData) {\n registeredBindingsList = registeredBindingsList + \" - \" + binding.constraint.metaData;\n }\n });\n }\n return registeredBindingsList;\n}\nexports.listRegisteredBindingsForServiceIdentifier = listRegisteredBindingsForServiceIdentifier;\nfunction alreadyDependencyChain(request, serviceIdentifier) {\n if (request.parentRequest === null) {\n return false;\n }\n else if (request.parentRequest.serviceIdentifier === serviceIdentifier) {\n return true;\n }\n else {\n return alreadyDependencyChain(request.parentRequest, serviceIdentifier);\n }\n}\nfunction dependencyChainToString(request) {\n function _createStringArr(req, result) {\n if (result === void 0) { result = []; }\n var serviceIdentifier = getServiceIdentifierAsString(req.serviceIdentifier);\n result.push(serviceIdentifier);\n if (req.parentRequest !== null) {\n return _createStringArr(req.parentRequest, result);\n }\n return result;\n }\n var stringArr = _createStringArr(request);\n return stringArr.reverse().join(\" --> \");\n}\nfunction circularDependencyToException(request) {\n request.childRequests.forEach(function (childRequest) {\n if (alreadyDependencyChain(childRequest, childRequest.serviceIdentifier)) {\n var services = dependencyChainToString(childRequest);\n throw new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY + \" \" + services);\n }\n else {\n circularDependencyToException(childRequest);\n }\n });\n}\nexports.circularDependencyToException = circularDependencyToException;\nfunction listMetadataForTarget(serviceIdentifierString, target) {\n if (target.isTagged() || target.isNamed()) {\n var m_1 = \"\";\n var namedTag = target.getNamedTag();\n var otherTags = target.getCustomTags();\n if (namedTag !== null) {\n m_1 += namedTag.toString() + \"\\n\";\n }\n if (otherTags !== null) {\n otherTags.forEach(function (tag) {\n m_1 += tag.toString() + \"\\n\";\n });\n }\n return \" \" + serviceIdentifierString + \"\\n \" + serviceIdentifierString + \" - \" + m_1;\n }\n else {\n return \" \" + serviceIdentifierString;\n }\n}\nexports.listMetadataForTarget = listMetadataForTarget;\nfunction getFunctionName(v) {\n if (v.name) {\n return v.name;\n }\n else {\n var name_1 = v.toString();\n var match = name_1.match(/^function\\s*([^\\s(]+)/);\n return match ? match[1] : \"Anonymous function: \" + name_1;\n }\n}\nexports.getFunctionName = getFunctionName;\n//# sourceMappingURL=serialization.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2ludmVyc2lmeUA1LjEuMUBpbnZlcnNpZnkvbGliL3V0aWxzL3NlcmlhbGl6YXRpb24uanM/NDY5OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsc0dBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsYUFBYTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19pbnZlcnNpZnlANS4xLjFAaW52ZXJzaWZ5L2xpYi91dGlscy9zZXJpYWxpemF0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNpcmN1bGFyRGVwZW5kZW5jeVRvRXhjZXB0aW9uID0gZXhwb3J0cy5saXN0TWV0YWRhdGFGb3JUYXJnZXQgPSBleHBvcnRzLmxpc3RSZWdpc3RlcmVkQmluZGluZ3NGb3JTZXJ2aWNlSWRlbnRpZmllciA9IGV4cG9ydHMuZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZyA9IGV4cG9ydHMuZ2V0RnVuY3Rpb25OYW1lID0gdm9pZCAwO1xudmFyIEVSUk9SX01TR1MgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzL2Vycm9yX21zZ3NcIik7XG5mdW5jdGlvbiBnZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nKHNlcnZpY2VJZGVudGlmaWVyKSB7XG4gICAgaWYgKHR5cGVvZiBzZXJ2aWNlSWRlbnRpZmllciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHZhciBfc2VydmljZUlkZW50aWZpZXIgPSBzZXJ2aWNlSWRlbnRpZmllcjtcbiAgICAgICAgcmV0dXJuIF9zZXJ2aWNlSWRlbnRpZmllci5uYW1lO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2Ygc2VydmljZUlkZW50aWZpZXIgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2VJZGVudGlmaWVyLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgX3NlcnZpY2VJZGVudGlmaWVyID0gc2VydmljZUlkZW50aWZpZXI7XG4gICAgICAgIHJldHVybiBfc2VydmljZUlkZW50aWZpZXI7XG4gICAgfVxufVxuZXhwb3J0cy5nZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nID0gZ2V0U2VydmljZUlkZW50aWZpZXJBc1N0cmluZztcbmZ1bmN0aW9uIGxpc3RSZWdpc3RlcmVkQmluZGluZ3NGb3JTZXJ2aWNlSWRlbnRpZmllcihjb250YWluZXIsIHNlcnZpY2VJZGVudGlmaWVyLCBnZXRCaW5kaW5ncykge1xuICAgIHZhciByZWdpc3RlcmVkQmluZGluZ3NMaXN0ID0gXCJcIjtcbiAgICB2YXIgcmVnaXN0ZXJlZEJpbmRpbmdzID0gZ2V0QmluZGluZ3MoY29udGFpbmVyLCBzZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgaWYgKHJlZ2lzdGVyZWRCaW5kaW5ncy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmVnaXN0ZXJlZEJpbmRpbmdzTGlzdCA9IFwiXFxuUmVnaXN0ZXJlZCBiaW5kaW5nczpcIjtcbiAgICAgICAgcmVnaXN0ZXJlZEJpbmRpbmdzLmZvckVhY2goZnVuY3Rpb24gKGJpbmRpbmcpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gXCJPYmplY3RcIjtcbiAgICAgICAgICAgIGlmIChiaW5kaW5nLmltcGxlbWVudGF0aW9uVHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBnZXRGdW5jdGlvbk5hbWUoYmluZGluZy5pbXBsZW1lbnRhdGlvblR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVnaXN0ZXJlZEJpbmRpbmdzTGlzdCA9IHJlZ2lzdGVyZWRCaW5kaW5nc0xpc3QgKyBcIlxcbiBcIiArIG5hbWU7XG4gICAgICAgICAgICBpZiAoYmluZGluZy5jb25zdHJhaW50Lm1ldGFEYXRhKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJlZEJpbmRpbmdzTGlzdCA9IHJlZ2lzdGVyZWRCaW5kaW5nc0xpc3QgKyBcIiAtIFwiICsgYmluZGluZy5jb25zdHJhaW50Lm1ldGFEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRCaW5kaW5nc0xpc3Q7XG59XG5leHBvcnRzLmxpc3RSZWdpc3RlcmVkQmluZGluZ3NGb3JTZXJ2aWNlSWRlbnRpZmllciA9IGxpc3RSZWdpc3RlcmVkQmluZGluZ3NGb3JTZXJ2aWNlSWRlbnRpZmllcjtcbmZ1bmN0aW9uIGFscmVhZHlEZXBlbmRlbmN5Q2hhaW4ocmVxdWVzdCwgc2VydmljZUlkZW50aWZpZXIpIHtcbiAgICBpZiAocmVxdWVzdC5wYXJlbnRSZXF1ZXN0ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVxdWVzdC5wYXJlbnRSZXF1ZXN0LnNlcnZpY2VJZGVudGlmaWVyID09PSBzZXJ2aWNlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBhbHJlYWR5RGVwZW5kZW5jeUNoYWluKHJlcXVlc3QucGFyZW50UmVxdWVzdCwgc2VydmljZUlkZW50aWZpZXIpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRlcGVuZGVuY3lDaGFpblRvU3RyaW5nKHJlcXVlc3QpIHtcbiAgICBmdW5jdGlvbiBfY3JlYXRlU3RyaW5nQXJyKHJlcSwgcmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgeyByZXN1bHQgPSBbXTsgfVxuICAgICAgICB2YXIgc2VydmljZUlkZW50aWZpZXIgPSBnZXRTZXJ2aWNlSWRlbnRpZmllckFzU3RyaW5nKHJlcS5zZXJ2aWNlSWRlbnRpZmllcik7XG4gICAgICAgIHJlc3VsdC5wdXNoKHNlcnZpY2VJZGVudGlmaWVyKTtcbiAgICAgICAgaWYgKHJlcS5wYXJlbnRSZXF1ZXN0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gX2NyZWF0ZVN0cmluZ0FycihyZXEucGFyZW50UmVxdWVzdCwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgc3RyaW5nQXJyID0gX2NyZWF0ZVN0cmluZ0FycihyZXF1ZXN0KTtcbiAgICByZXR1cm4gc3RyaW5nQXJyLnJldmVyc2UoKS5qb2luKFwiIC0tPiBcIik7XG59XG5mdW5jdGlvbiBjaXJjdWxhckRlcGVuZGVuY3lUb0V4Y2VwdGlvbihyZXF1ZXN0KSB7XG4gICAgcmVxdWVzdC5jaGlsZFJlcXVlc3RzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkUmVxdWVzdCkge1xuICAgICAgICBpZiAoYWxyZWFkeURlcGVuZGVuY3lDaGFpbihjaGlsZFJlcXVlc3QsIGNoaWxkUmVxdWVzdC5zZXJ2aWNlSWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgIHZhciBzZXJ2aWNlcyA9IGRlcGVuZGVuY3lDaGFpblRvU3RyaW5nKGNoaWxkUmVxdWVzdCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTVNHUy5DSVJDVUxBUl9ERVBFTkRFTkNZICsgXCIgXCIgKyBzZXJ2aWNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lUb0V4Y2VwdGlvbihjaGlsZFJlcXVlc3QpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnRzLmNpcmN1bGFyRGVwZW5kZW5jeVRvRXhjZXB0aW9uID0gY2lyY3VsYXJEZXBlbmRlbmN5VG9FeGNlcHRpb247XG5mdW5jdGlvbiBsaXN0TWV0YWRhdGFGb3JUYXJnZXQoc2VydmljZUlkZW50aWZpZXJTdHJpbmcsIHRhcmdldCkge1xuICAgIGlmICh0YXJnZXQuaXNUYWdnZWQoKSB8fCB0YXJnZXQuaXNOYW1lZCgpKSB7XG4gICAgICAgIHZhciBtXzEgPSBcIlwiO1xuICAgICAgICB2YXIgbmFtZWRUYWcgPSB0YXJnZXQuZ2V0TmFtZWRUYWcoKTtcbiAgICAgICAgdmFyIG90aGVyVGFncyA9IHRhcmdldC5nZXRDdXN0b21UYWdzKCk7XG4gICAgICAgIGlmIChuYW1lZFRhZyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbV8xICs9IG5hbWVkVGFnLnRvU3RyaW5nKCkgKyBcIlxcblwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlclRhZ3MgIT09IG51bGwpIHtcbiAgICAgICAgICAgIG90aGVyVGFncy5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgICAgICAgICAgICBtXzEgKz0gdGFnLnRvU3RyaW5nKCkgKyBcIlxcblwiO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiIFwiICsgc2VydmljZUlkZW50aWZpZXJTdHJpbmcgKyBcIlxcbiBcIiArIHNlcnZpY2VJZGVudGlmaWVyU3RyaW5nICsgXCIgLSBcIiArIG1fMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBcIiBcIiArIHNlcnZpY2VJZGVudGlmaWVyU3RyaW5nO1xuICAgIH1cbn1cbmV4cG9ydHMubGlzdE1ldGFkYXRhRm9yVGFyZ2V0ID0gbGlzdE1ldGFkYXRhRm9yVGFyZ2V0O1xuZnVuY3Rpb24gZ2V0RnVuY3Rpb25OYW1lKHYpIHtcbiAgICBpZiAodi5uYW1lKSB7XG4gICAgICAgIHJldHVybiB2Lm5hbWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgbmFtZV8xID0gdi50b1N0cmluZygpO1xuICAgICAgICB2YXIgbWF0Y2ggPSBuYW1lXzEubWF0Y2goL15mdW5jdGlvblxccyooW15cXHMoXSspLyk7XG4gICAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogXCJBbm9ueW1vdXMgZnVuY3Rpb246IFwiICsgbmFtZV8xO1xuICAgIH1cbn1cbmV4cG9ydHMuZ2V0RnVuY3Rpb25OYW1lID0gZ2V0RnVuY3Rpb25OYW1lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VyaWFsaXphdGlvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_inversify@5.1.1@inversify/lib/utils/serialization.js\n"); /***/ }), /***/ "./node_modules/_is-any-array@1.0.1@is-any-array/src/index.js": /*!********************************************************************!*\ !*** ./node_modules/_is-any-array@1.0.1@is-any-array/src/index.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return isAnyArray; });\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n return toString.call(object).endsWith('Array]');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2lzLWFueS1hcnJheUAxLjAuMUBpcy1hbnktYXJyYXkvc3JjL2luZGV4LmpzP2VhODIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBOztBQUVlO0FBQ2Y7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9faXMtYW55LWFycmF5QDEuMC4xQGlzLWFueS1hcnJheS9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQW55QXJyYXkob2JqZWN0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKG9iamVjdCkuZW5kc1dpdGgoJ0FycmF5XScpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_is-any-array@1.0.1@is-any-array/src/index.js\n"); /***/ }), /***/ "./node_modules/_is-arrayish@0.3.2@is-arrayish/index.js": /*!**************************************************************!*\ !*** ./node_modules/_is-arrayish@0.3.2@is-arrayish/index.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2lzLWFycmF5aXNoQDAuMy4yQGlzLWFycmF5aXNoL2luZGV4LmpzPzgzNTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2lzLWFycmF5aXNoQDAuMy4yQGlzLWFycmF5aXNoL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0FycmF5aXNoKG9iaikge1xuXHRpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiBvYmogaW5zdGFuY2VvZiBBcnJheSB8fCBBcnJheS5pc0FycmF5KG9iaikgfHxcblx0XHQob2JqLmxlbmd0aCA+PSAwICYmIChvYmouc3BsaWNlIGluc3RhbmNlb2YgRnVuY3Rpb24gfHxcblx0XHRcdChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgKG9iai5sZW5ndGggLSAxKSkgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdTdHJpbmcnKSkpO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_is-arrayish@0.3.2@is-arrayish/index.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_DataView.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_DataView.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fRGF0YVZpZXcuanM/Y2I0OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0RBQVM7O0FBRTVCO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fRGF0YVZpZXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_DataView.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Hash.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Hash.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var hashClear = __webpack_require__(/*! ./_hashClear */ \"./node_modules/_lodash@4.17.21@lodash/_hashClear.js\"),\n hashDelete = __webpack_require__(/*! ./_hashDelete */ \"./node_modules/_lodash@4.17.21@lodash/_hashDelete.js\"),\n hashGet = __webpack_require__(/*! ./_hashGet */ \"./node_modules/_lodash@4.17.21@lodash/_hashGet.js\"),\n hashHas = __webpack_require__(/*! ./_hashHas */ \"./node_modules/_lodash@4.17.21@lodash/_hashHas.js\"),\n hashSet = __webpack_require__(/*! ./_hashSet */ \"./node_modules/_lodash@4.17.21@lodash/_hashSet.js\");\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fSGFzaC5qcz8zMGI4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fSGFzaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNoQ2xlYXIgPSByZXF1aXJlKCcuL19oYXNoQ2xlYXInKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Hash.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_ListCache.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_ListCache.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ \"./node_modules/_lodash@4.17.21@lodash/_listCacheClear.js\"),\n listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ \"./node_modules/_lodash@4.17.21@lodash/_listCacheDelete.js\"),\n listCacheGet = __webpack_require__(/*! ./_listCacheGet */ \"./node_modules/_lodash@4.17.21@lodash/_listCacheGet.js\"),\n listCacheHas = __webpack_require__(/*! ./_listCacheHas */ \"./node_modules/_lodash@4.17.21@lodash/_listCacheHas.js\"),\n listCacheSet = __webpack_require__(/*! ./_listCacheSet */ \"./node_modules/_lodash@4.17.21@lodash/_listCacheSet.js\");\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fTGlzdENhY2hlLmpzPzQxMjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1CO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLHFGQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX0xpc3RDYWNoZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksXG4gICAgbGlzdENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlRGVsZXRlJyksXG4gICAgbGlzdENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlR2V0JyksXG4gICAgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksXG4gICAgbGlzdENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0Q2FjaGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_ListCache.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Map.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Map.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fTWFwLmpzPzc2MTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtEQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX01hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Map.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_MapCache.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_MapCache.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ \"./node_modules/_lodash@4.17.21@lodash/_mapCacheClear.js\"),\n mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ \"./node_modules/_lodash@4.17.21@lodash/_mapCacheDelete.js\"),\n mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ \"./node_modules/_lodash@4.17.21@lodash/_mapCacheGet.js\"),\n mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ \"./node_modules/_lodash@4.17.21@lodash/_mapCacheHas.js\"),\n mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ \"./node_modules/_lodash@4.17.21@lodash/_mapCacheSet.js\");\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fTWFwQ2FjaGUuanM/ZjZjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7QUFDOUMscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1CO0FBQ2hELGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fTWFwQ2FjaGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSxcbiAgICBtYXBDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcENhY2hlRGVsZXRlJyksXG4gICAgbWFwQ2FjaGVHZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZUdldCcpLFxuICAgIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSxcbiAgICBtYXBDYWNoZVNldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcENhY2hlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_MapCache.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Promise.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Promise.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fUHJvbWlzZS5qcz9mMzQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrREFBUzs7QUFFNUI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19Qcm9taXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Promise.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Set.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Set.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fU2V0LmpzPzA1NzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtEQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX1NldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Set.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_SetCache.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_SetCache.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/_lodash@4.17.21@lodash/_MapCache.js\"),\n setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ \"./node_modules/_lodash@4.17.21@lodash/_setCacheAdd.js\"),\n setCacheHas = __webpack_require__(/*! ./_setCacheHas */ \"./node_modules/_lodash@4.17.21@lodash/_setCacheHas.js\");\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fU2V0Q2FjaGUuanM/YjY2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX1NldENhY2hlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksXG4gICAgc2V0Q2FjaGVIYXMgPSByZXF1aXJlKCcuL19zZXRDYWNoZUhhcycpO1xuXG4vKipcbiAqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG5cbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbm1vZHVsZS5leHBvcnRzID0gU2V0Q2FjaGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_SetCache.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Stack.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Stack.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/_lodash@4.17.21@lodash/_ListCache.js\"),\n stackClear = __webpack_require__(/*! ./_stackClear */ \"./node_modules/_lodash@4.17.21@lodash/_stackClear.js\"),\n stackDelete = __webpack_require__(/*! ./_stackDelete */ \"./node_modules/_lodash@4.17.21@lodash/_stackDelete.js\"),\n stackGet = __webpack_require__(/*! ./_stackGet */ \"./node_modules/_lodash@4.17.21@lodash/_stackGet.js\"),\n stackHas = __webpack_require__(/*! ./_stackHas */ \"./node_modules/_lodash@4.17.21@lodash/_stackHas.js\"),\n stackSet = __webpack_require__(/*! ./_stackSet */ \"./node_modules/_lodash@4.17.21@lodash/_stackSet.js\");\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fU3RhY2suanM/YTg1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsdUVBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fU3RhY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgc3RhY2tDbGVhciA9IHJlcXVpcmUoJy4vX3N0YWNrQ2xlYXInKSxcbiAgICBzdGFja0RlbGV0ZSA9IHJlcXVpcmUoJy4vX3N0YWNrRGVsZXRlJyksXG4gICAgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLFxuICAgIHN0YWNrSGFzID0gcmVxdWlyZSgnLi9fc3RhY2tIYXMnKSxcbiAgICBzdGFja1NldCA9IHJlcXVpcmUoJy4vX3N0YWNrU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcblN0YWNrLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBzdGFja0RlbGV0ZTtcblN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcblN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcblN0YWNrLnByb3RvdHlwZS5zZXQgPSBzdGFja1NldDtcblxubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Stack.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Symbol.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Symbol.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fU3ltYm9sLmpzP2IxNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLCtEQUFTOztBQUU1QjtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX1N5bWJvbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Symbol.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_Uint8Array.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_Uint8Array.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fVWludDhBcnJheS5qcz84ZWI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQywrREFBUzs7QUFFNUI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19VaW50OEFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_Uint8Array.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_WeakMap.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_WeakMap.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\"),\n root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fV2Vha01hcC5qcz8xY2JiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrREFBUzs7QUFFNUI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19XZWFrTWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_WeakMap.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_apply.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_apply.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXBwbHkuanM/NzJmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19hcHBseS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_apply.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayEach.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayEach.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlFYWNoLmpzP2IyOTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2FycmF5RWFjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUVhY2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayEach.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayFilter.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayFilter.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlGaWx0ZXIuanM/NGYxMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlGaWx0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGaWx0ZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayFilter.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayIncludes.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayIncludes.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ \"./node_modules/_lodash@4.17.21@lodash/_baseIndexOf.js\");\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlJbmNsdWRlcy5qcz82NmYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayIncludes.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayIncludesWith.js": /*!*******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayIncludesWith.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanM/YjkyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2FycmF5SW5jbHVkZXNXaXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayIncludesWith.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayLikeKeys.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayLikeKeys.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseTimes = __webpack_require__(/*! ./_baseTimes */ \"./node_modules/_lodash@4.17.21@lodash/_baseTimes.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/_lodash@4.17.21@lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/_lodash@4.17.21@lodash/isBuffer.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/_lodash@4.17.21@lodash/_isIndex.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/isTypedArray.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcz8wMTkwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtRUFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxRQUFRO0FBQ25CLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUxpa2VLZXlzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayLikeKeys.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayMap.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayMap.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlNYXAuanM/YzYyZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2FycmF5TWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayMap.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayPush.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayPush.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlQdXNoLmpzP2FhMGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlQdXNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UHVzaDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayPush.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arrayReduce.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arrayReduce.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlSZWR1Y2UuanM/NDVhNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2FycmF5UmVkdWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UmVkdWNlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arrayReduce.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_arraySome.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_arraySome.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlTb21lLmpzPzkzYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXJyYXlTb21lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_arraySome.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_asciiSize.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_asciiSize.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseProperty = __webpack_require__(/*! ./_baseProperty */ \"./node_modules/_lodash@4.17.21@lodash/_baseProperty.js\");\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXNjaWlTaXplLmpzP2NjZjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19hc2NpaVNpemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xudmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlTaXplO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_asciiSize.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_assignMergeValue.js": /*!******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_assignMergeValue.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/_lodash@4.17.21@lodash/eq.js\");\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXNzaWduTWVyZ2VWYWx1ZS5qcz9kYzVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLHFGQUFvQjtBQUNsRCxTQUFTLG1CQUFPLENBQUMseURBQU07O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_assignMergeValue.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_assignValue.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_assignValue.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/_lodash@4.17.21@lodash/eq.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXNzaWduVmFsdWUuanM/NzA0MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRkFBb0I7QUFDbEQsU0FBUyxtQkFBTyxDQUFDLHlEQUFNOztBQUV2QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Fzc2lnblZhbHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_assignValue.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var eq = __webpack_require__(/*! ./eq */ \"./node_modules/_lodash@4.17.21@lodash/eq.js\");\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXNzb2NJbmRleE9mLmpzPzFhOGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxtQkFBTyxDQUFDLHlEQUFNOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYXNzb2NJbmRleE9mLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseAssign.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseAssign.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/_lodash@4.17.21@lodash/_copyObject.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\");\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUFzc2lnbi5qcz80ODdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2REFBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VBc3NpZ24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseAssign.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseAssignIn.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseAssignIn.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/_lodash@4.17.21@lodash/_copyObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\");\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUFzc2lnbkluLmpzPzYyZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlFQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUFzc2lnbkluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25JbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25JbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseAssignIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/_lodash@4.17.21@lodash/_defineProperty.js\");\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzPzRjOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUFzc2lnblZhbHVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduVmFsdWU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseClone.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseClone.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/_lodash@4.17.21@lodash/_Stack.js\"),\n arrayEach = __webpack_require__(/*! ./_arrayEach */ \"./node_modules/_lodash@4.17.21@lodash/_arrayEach.js\"),\n assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/_lodash@4.17.21@lodash/_assignValue.js\"),\n baseAssign = __webpack_require__(/*! ./_baseAssign */ \"./node_modules/_lodash@4.17.21@lodash/_baseAssign.js\"),\n baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ \"./node_modules/_lodash@4.17.21@lodash/_baseAssignIn.js\"),\n cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ \"./node_modules/_lodash@4.17.21@lodash/_cloneBuffer.js\"),\n copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/_lodash@4.17.21@lodash/_copyArray.js\"),\n copySymbols = __webpack_require__(/*! ./_copySymbols */ \"./node_modules/_lodash@4.17.21@lodash/_copySymbols.js\"),\n copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ \"./node_modules/_lodash@4.17.21@lodash/_copySymbolsIn.js\"),\n getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/_lodash@4.17.21@lodash/_getAllKeys.js\"),\n getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ \"./node_modules/_lodash@4.17.21@lodash/_getAllKeysIn.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/_lodash@4.17.21@lodash/_getTag.js\"),\n initCloneArray = __webpack_require__(/*! ./_initCloneArray */ \"./node_modules/_lodash@4.17.21@lodash/_initCloneArray.js\"),\n initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ \"./node_modules/_lodash@4.17.21@lodash/_initCloneByTag.js\"),\n initCloneObject = __webpack_require__(/*! ./_initCloneObject */ \"./node_modules/_lodash@4.17.21@lodash/_initCloneObject.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/_lodash@4.17.21@lodash/isBuffer.js\"),\n isMap = __webpack_require__(/*! ./isMap */ \"./node_modules/_lodash@4.17.21@lodash/isMap.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n isSet = __webpack_require__(/*! ./isSet */ \"./node_modules/_lodash@4.17.21@lodash/isSet.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUNsb25lLmpzPzEyZjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxtQkFBTyxDQUFDLGlFQUFVO0FBQzlCLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7QUFDOUMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBbUI7QUFDaEQscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1CO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLHFGQUFvQjtBQUNsRCxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQywrREFBUztBQUM3QixlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsWUFBWSxtQkFBTyxDQUFDLCtEQUFTO0FBQzdCLFdBQVcsbUJBQU8sQ0FBQyw2REFBUTtBQUMzQixhQUFhLG1CQUFPLENBQUMsaUVBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VDbG9uZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseClone.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseCreate.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseCreate.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\");\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUNyZWF0ZS5qcz9jNGU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VDcmVhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGU7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBvYmplY3QoKSB7fVxuICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0Q3JlYXRlKHByb3RvKTtcbiAgICB9XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgIHZhciByZXN1bHQgPSBuZXcgb2JqZWN0O1xuICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn0oKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseCreate.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseEach.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseEach.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ \"./node_modules/_lodash@4.17.21@lodash/_baseForOwn.js\"),\n createBaseEach = __webpack_require__(/*! ./_createBaseEach */ \"./node_modules/_lodash@4.17.21@lodash/_createBaseEach.js\");\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUVhY2guanM/NDhlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLGFBQWE7QUFDMUI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlRWFjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRm9yT3duID0gcmVxdWlyZSgnLi9fYmFzZUZvck93bicpLFxuICAgIGNyZWF0ZUJhc2VFYWNoID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqL1xudmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUVhY2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseEach.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseExtremum.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseExtremum.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/_lodash@4.17.21@lodash/isSymbol.js\");\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUV4dHJlbXVtLmpzP2VjYjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VFeHRyZW11bS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICkpIHtcbiAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUV4dHJlbXVtO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseExtremum.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseFilter.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseFilter.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/_lodash@4.17.21@lodash/_baseEach.js\");\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZpbHRlci5qcz9kNDg5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VGaWx0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZpbHRlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseFilter.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseFindIndex.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseFindIndex.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZpbmRJbmRleC5qcz80YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VGaW5kSW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseFindIndex.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseFlatten.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseFlatten.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/_lodash@4.17.21@lodash/_arrayPush.js\"),\n isFlattenable = __webpack_require__(/*! ./_isFlattenable */ \"./node_modules/_lodash@4.17.21@lodash/_isFlattenable.js\");\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZsYXR0ZW4uanM/ZDhmNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseFlatten.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseFor.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseFor.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ \"./node_modules/_lodash@4.17.21@lodash/_createBaseFor.js\");\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZvci5qcz85OTc5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLGlGQUFrQjs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVCYXNlRm9yID0gcmVxdWlyZSgnLi9fY3JlYXRlQmFzZUZvcicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseFor.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseForOwn.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseForOwn.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFor = __webpack_require__(/*! ./_baseFor */ \"./node_modules/_lodash@4.17.21@lodash/_baseFor.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\");\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZvck93bi5qcz80NzdhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxXQUFXLG1CQUFPLENBQUMsNkRBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUZvck93bi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRm9yID0gcmVxdWlyZSgnLi9fYmFzZUZvcicpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseForOwn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseGet.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseGet.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/_lodash@4.17.21@lodash/_castPath.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/_lodash@4.17.21@lodash/_toKey.js\");\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUdldC5qcz9jNTc3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxZQUFZLG1CQUFPLENBQUMsaUVBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VHZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseGet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseGetAllKeys.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseGetAllKeys.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/_lodash@4.17.21@lodash/_arrayPush.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUdldEFsbEtleXMuanM/N2JlNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0QWxsS2V5c2AgYW5kIGBnZXRBbGxLZXlzSW5gIHdoaWNoIHVzZXNcbiAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgcmV0dXJuIGlzQXJyYXkob2JqZWN0KSA/IHJlc3VsdCA6IGFycmF5UHVzaChyZXN1bHQsIHN5bWJvbHNGdW5jKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRBbGxLZXlzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseGetAllKeys.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/_lodash@4.17.21@lodash/_Symbol.js\"),\n getRawTag = __webpack_require__(/*! ./_getRawTag */ \"./node_modules/_lodash@4.17.21@lodash/_getRawTag.js\"),\n objectToString = __webpack_require__(/*! ./_objectToString */ \"./node_modules/_lodash@4.17.21@lodash/_objectToString.js\");\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUdldFRhZy5qcz9kYzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBbUI7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlR2V0VGFnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseGt.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseGt.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUd0LmpzPzhiNTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlR3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseGt.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseHas.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseHas.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUhhcy5qcz9mNWRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VIYXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseHasIn.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseHasIn.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUhhc0luLmpzPzg3YjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSGFzSW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSGFzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseHasIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIndexOf.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIndexOf.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ \"./node_modules/_lodash@4.17.21@lodash/_baseFindIndex.js\"),\n baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsNaN.js\"),\n strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ \"./node_modules/_lodash@4.17.21@lodash/_strictIndexOf.js\");\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUluZGV4T2YuanM/ZGFmMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7QUFDOUMsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSW5kZXhPZi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIndexOf.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsArguments.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsArguments.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzP2IwY2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsNkVBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VJc0FyZ3VtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsArguments.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsEqual.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsEqual.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsEqualDeep.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzRXF1YWwuanM/ZDA5NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRkFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsNkVBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSXNFcXVhbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsEqual.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsEqualDeep.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsEqualDeep.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/_lodash@4.17.21@lodash/_Stack.js\"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ \"./node_modules/_lodash@4.17.21@lodash/_equalArrays.js\"),\n equalByTag = __webpack_require__(/*! ./_equalByTag */ \"./node_modules/_lodash@4.17.21@lodash/_equalByTag.js\"),\n equalObjects = __webpack_require__(/*! ./_equalObjects */ \"./node_modules/_lodash@4.17.21@lodash/_equalObjects.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/_lodash@4.17.21@lodash/_getTag.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/_lodash@4.17.21@lodash/isBuffer.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/isTypedArray.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzRXF1YWxEZWVwLmpzPzc5YjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxtQkFBTyxDQUFDLGlFQUFVO0FBQzlCLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLGNBQWMsbUJBQU8sQ0FBQyxtRUFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsbUJBQW1CLG1CQUFPLENBQUMsNkVBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSxcbiAgICBlcXVhbEJ5VGFnID0gcmVxdWlyZSgnLi9fZXF1YWxCeVRhZycpLFxuICAgIGVxdWFsT2JqZWN0cyA9IHJlcXVpcmUoJy4vX2VxdWFsT2JqZWN0cycpLFxuICAgIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgIG90aElzQXJyID0gaXNBcnJheShvdGhlciksXG4gICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyxcbiAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgaWYgKCFpc0J1ZmZlcihvdGhlcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgIG9iaklzT2JqID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzU2FtZVRhZyAmJiAhb2JqSXNPYmopIHtcbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICA/IGVxdWFsQXJyYXlzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spXG4gICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgfVxuICBpZiAoIShiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcpKSB7XG4gICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkge1xuICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbERlZXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsEqualDeep.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsMap.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsMap.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/_lodash@4.17.21@lodash/_getTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTWFwLmpzPzkxNmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSXNNYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWFwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsMap.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsMatch.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsMatch.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/_lodash@4.17.21@lodash/_Stack.js\"),\n baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsEqual.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTWF0Y2guanM/MDYzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLG1CQUFPLENBQUMsaUVBQVU7QUFDOUIsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCOztBQUUxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTWF0Y2guanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsMatch.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsNaN.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsNaN.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTmFOLmpzP2Y4M2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTmFOLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYU47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsNaN.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsNative.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsNative.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/_lodash@4.17.21@lodash/isFunction.js\"),\n isMasked = __webpack_require__(/*! ./_isMasked */ \"./node_modules/_lodash@4.17.21@lodash/_isMasked.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/_lodash@4.17.21@lodash/_toSource.js\");\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTmF0aXZlLmpzPzYxMzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMseUVBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdUVBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzTmF0aXZlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc01hc2tlZCA9IHJlcXVpcmUoJy4vX2lzTWFza2VkJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hdGl2ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsNative.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsSet.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsSet.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/_lodash@4.17.21@lodash/_getTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzU2V0LmpzPzQyMDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSXNTZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIsTypedArray.js": /*!******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIsTypedArray.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/_lodash@4.17.21@lodash/isLength.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcz81ZThhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIsTypedArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseMatches = __webpack_require__(/*! ./_baseMatches */ \"./node_modules/_lodash@4.17.21@lodash/_baseMatches.js\"),\n baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ \"./node_modules/_lodash@4.17.21@lodash/_baseMatchesProperty.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n property = __webpack_require__(/*! ./property */ \"./node_modules/_lodash@4.17.21@lodash/property.js\");\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUl0ZXJhdGVlLmpzPzg1MGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCO0FBQzFDLDBCQUEwQixtQkFBTyxDQUFDLDZGQUF3QjtBQUMxRCxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1FQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZU1hdGNoZXMgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlcycpLFxuICAgIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJdGVyYXRlZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseKeys.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseKeys.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_isPrototype.js\"),\n nativeKeys = __webpack_require__(/*! ./_nativeKeys */ \"./node_modules/_lodash@4.17.21@lodash/_nativeKeys.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUtleXMuanM/ZGVjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUtleXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseKeys.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseKeysIn.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseKeysIn.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_isPrototype.js\"),\n nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ \"./node_modules/_lodash@4.17.21@lodash/_nativeKeysIn.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUtleXNJbi5qcz83NTU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VLZXlzSW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseKeysIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseLt.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseLt.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZUx0LmpzPzM0MGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlTHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA8IG90aGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VMdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseLt.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseMap.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseMap.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/_lodash@4.17.21@lodash/_baseEach.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\");\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1hcC5qcz9lMjFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseMap.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseMatches.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseMatches.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsMatch.js\"),\n getMatchData = __webpack_require__(/*! ./_getMatchData */ \"./node_modules/_lodash@4.17.21@lodash/_getMatchData.js\"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ \"./node_modules/_lodash@4.17.21@lodash/_matchesStrictComparable.js\");\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1hdGNoZXMuanM/NzFkYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLDhCQUE4QixtQkFBTyxDQUFDLHFHQUE0Qjs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VNYXRjaGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJc01hdGNoID0gcmVxdWlyZSgnLi9fYmFzZUlzTWF0Y2gnKSxcbiAgICBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKSxcbiAgICBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseMatches.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseMatchesProperty.js": /*!*********************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseMatchesProperty.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsEqual.js\"),\n get = __webpack_require__(/*! ./get */ \"./node_modules/_lodash@4.17.21@lodash/get.js\"),\n hasIn = __webpack_require__(/*! ./hasIn */ \"./node_modules/_lodash@4.17.21@lodash/hasIn.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/_lodash@4.17.21@lodash/_isKey.js\"),\n isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ \"./node_modules/_lodash@4.17.21@lodash/_isStrictComparable.js\"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ \"./node_modules/_lodash@4.17.21@lodash/_matchesStrictComparable.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/_lodash@4.17.21@lodash/_toKey.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcz84OTBhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxVQUFVLG1CQUFPLENBQUMsMkRBQU87QUFDekIsWUFBWSxtQkFBTyxDQUFDLCtEQUFTO0FBQzdCLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTtBQUM5Qix5QkFBeUIsbUJBQU8sQ0FBQywyRkFBdUI7QUFDeEQsOEJBQThCLG1CQUFPLENBQUMscUdBQTRCO0FBQ2xFLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTs7QUFFOUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyksXG4gICAgZ2V0ID0gcmVxdWlyZSgnLi9nZXQnKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKSxcbiAgICBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksXG4gICAgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzUHJvcGVydHk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseMatchesProperty.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseMerge.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseMerge.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Stack = __webpack_require__(/*! ./_Stack */ \"./node_modules/_lodash@4.17.21@lodash/_Stack.js\"),\n assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ \"./node_modules/_lodash@4.17.21@lodash/_assignMergeValue.js\"),\n baseFor = __webpack_require__(/*! ./_baseFor */ \"./node_modules/_lodash@4.17.21@lodash/_baseFor.js\"),\n baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ \"./node_modules/_lodash@4.17.21@lodash/_baseMergeDeep.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\"),\n safeGet = __webpack_require__(/*! ./_safeGet */ \"./node_modules/_lodash@4.17.21@lodash/_safeGet.js\");\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1lcmdlLmpzPzdkMDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxtQkFBTyxDQUFDLGlFQUFVO0FBQzlCLHVCQUF1QixtQkFBTyxDQUFDLHVGQUFxQjtBQUNwRCxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxhQUFhLG1CQUFPLENBQUMsaUVBQVU7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHFFQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1lcmdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseMerge.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseMergeDeep.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseMergeDeep.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ \"./node_modules/_lodash@4.17.21@lodash/_assignMergeValue.js\"),\n cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ \"./node_modules/_lodash@4.17.21@lodash/_cloneBuffer.js\"),\n cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/_cloneTypedArray.js\"),\n copyArray = __webpack_require__(/*! ./_copyArray */ \"./node_modules/_lodash@4.17.21@lodash/_copyArray.js\"),\n initCloneObject = __webpack_require__(/*! ./_initCloneObject */ \"./node_modules/_lodash@4.17.21@lodash/_initCloneObject.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/_lodash@4.17.21@lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLikeObject.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/_lodash@4.17.21@lodash/isBuffer.js\"),\n isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/_lodash@4.17.21@lodash/isFunction.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n isPlainObject = __webpack_require__(/*! ./isPlainObject */ \"./node_modules/_lodash@4.17.21@lodash/isPlainObject.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/isTypedArray.js\"),\n safeGet = __webpack_require__(/*! ./_safeGet */ \"./node_modules/_lodash@4.17.21@lodash/_safeGet.js\"),\n toPlainObject = __webpack_require__(/*! ./toPlainObject */ \"./node_modules/_lodash@4.17.21@lodash/toPlainObject.js\");\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcz8zNjk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHVGQUFxQjtBQUNwRCxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsc0JBQXNCLG1CQUFPLENBQUMscUZBQW9CO0FBQ2xELGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLHNCQUFzQixtQkFBTyxDQUFDLHFGQUFvQjtBQUNsRCxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsd0JBQXdCLG1CQUFPLENBQUMsdUZBQXFCO0FBQ3JELGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxpQkFBaUIsbUJBQU8sQ0FBQyx5RUFBYztBQUN2QyxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsb0JBQW9CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzdDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMzQyxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsb0JBQW9CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0JyksXG4gICAgdG9QbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vdG9QbGFpbk9iamVjdCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBtZXJnZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIG1lcmdlRnVuYywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgc3RhY2tlZCA9IHN0YWNrLmdldChzcmNWYWx1ZSk7XG5cbiAgaWYgKHN0YWNrZWQpIHtcbiAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICA6IHVuZGVmaW5lZDtcblxuICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gIGlmIChpc0NvbW1vbikge1xuICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICBpc1R5cGVkID0gIWlzQXJyICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHNyY1ZhbHVlKTtcblxuICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICBpZiAoaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVUeXBlZEFycmF5KHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBuZXdWYWx1ZSA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gdG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaW5pdENsb25lT2JqZWN0KHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBpZiAoaXNDb21tb24pIHtcbiAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBtZXJnZUZ1bmMobmV3VmFsdWUsIHNyY1ZhbHVlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gIH1cbiAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNZXJnZURlZXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseMergeDeep.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseOrderBy.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseOrderBy.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/_lodash@4.17.21@lodash/_arrayMap.js\"),\n baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/_lodash@4.17.21@lodash/_baseGet.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n baseMap = __webpack_require__(/*! ./_baseMap */ \"./node_modules/_lodash@4.17.21@lodash/_baseMap.js\"),\n baseSortBy = __webpack_require__(/*! ./_baseSortBy */ \"./node_modules/_lodash@4.17.21@lodash/_baseSortBy.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/_lodash@4.17.21@lodash/_baseUnary.js\"),\n compareMultiple = __webpack_require__(/*! ./_compareMultiple */ \"./node_modules/_lodash@4.17.21@lodash/_compareMultiple.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZU9yZGVyQnkuanM/Y2ZjMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsc0JBQXNCLG1CQUFPLENBQUMscUZBQW9CO0FBQ2xELGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsNkJBQTZCO0FBQ3hDLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsWUFBWTtBQUNaLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlT3JkZXJCeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGJhc2VTb3J0QnkgPSByZXF1aXJlKCcuL19iYXNlU29ydEJ5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgY29tcGFyZU11bHRpcGxlID0gcmVxdWlyZSgnLi9fY29tcGFyZU11bHRpcGxlJyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW118T2JqZWN0W118c3RyaW5nW119IGl0ZXJhdGVlcyBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gYmFzZUdldCh2YWx1ZSwgaXRlcmF0ZWUubGVuZ3RoID09PSAxID8gaXRlcmF0ZWVbMF0gOiBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVyYXRlZTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyYXRlZXMgPSBbaWRlbnRpdHldO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGJhc2VJdGVyYXRlZSkpO1xuXG4gIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgY3JpdGVyaWEgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB7ICdjcml0ZXJpYSc6IGNyaXRlcmlhLCAnaW5kZXgnOiArK2luZGV4LCAndmFsdWUnOiB2YWx1ZSB9O1xuICB9KTtcblxuICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICByZXR1cm4gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycyk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VPcmRlckJ5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseOrderBy.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_basePick.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_basePick.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var basePickBy = __webpack_require__(/*! ./_basePickBy */ \"./node_modules/_lodash@4.17.21@lodash/_basePickBy.js\"),\n hasIn = __webpack_require__(/*! ./hasIn */ \"./node_modules/_lodash@4.17.21@lodash/hasIn.js\");\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVBpY2suanM/MjU2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxZQUFZLG1CQUFPLENBQUMsK0RBQVM7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlUGljay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlUGlja0J5ID0gcmVxdWlyZSgnLi9fYmFzZVBpY2tCeScpLFxuICAgIGhhc0luID0gcmVxdWlyZSgnLi9oYXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICByZXR1cm4gaGFzSW4ob2JqZWN0LCBwYXRoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2s7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_basePick.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_basePickBy.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_basePickBy.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/_lodash@4.17.21@lodash/_baseGet.js\"),\n baseSet = __webpack_require__(/*! ./_baseSet */ \"./node_modules/_lodash@4.17.21@lodash/_baseSet.js\"),\n castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/_lodash@4.17.21@lodash/_castPath.js\");\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVBpY2tCeS5qcz80ZTEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVBpY2tCeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VTZXQgPSByZXF1aXJlKCcuL19iYXNlU2V0JyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mICBgXy5waWNrQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0ge307XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBwYXRoKSkge1xuICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUGlja0J5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_basePickBy.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseProperty.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseProperty.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVByb3BlcnR5LmpzPzFmM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlUHJvcGVydHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseProperty.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_basePropertyDeep.js": /*!******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_basePropertyDeep.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/_lodash@4.17.21@lodash/_baseGet.js\");\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcz8zNWVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlUHJvcGVydHlEZWVwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eURlZXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_basePropertyDeep.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseRange.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseRange.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVJhbmdlLmpzP2I1YjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VSYW5nZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICogY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAqL1xuZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICBzdGFydCArPSBzdGVwO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJhbmdlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseRange.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseReduce.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseReduce.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVJlZHVjZS5qcz8zNWIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlUmVkdWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gIHVzaW5nIGBlYWNoRnVuY2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBpbml0QWNjdW0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3Qgb3IgbGFzdCBlbGVtZW50IG9mXG4gKiAgYGNvbGxlY3Rpb25gIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGFjY3VtdWxhdG9yID0gaW5pdEFjY3VtXG4gICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICA6IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICB9KTtcbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VSZWR1Y2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseReduce.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseRest.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseRest.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\"),\n overRest = __webpack_require__(/*! ./_overRest */ \"./node_modules/_lodash@4.17.21@lodash/_overRest.js\"),\n setToString = __webpack_require__(/*! ./_setToString */ \"./node_modules/_lodash@4.17.21@lodash/_setToString.js\");\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVJlc3QuanM/NzYxYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlUmVzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVzdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseRest.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseSet.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseSet.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/_lodash@4.17.21@lodash/_assignValue.js\"),\n castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/_lodash@4.17.21@lodash/_castPath.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/_lodash@4.17.21@lodash/_isIndex.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/_lodash@4.17.21@lodash/_toKey.js\");\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVNldC5qcz83ZDAyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsaUVBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLEVBQUU7QUFDYixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlU2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDEsXG4gICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pLFxuICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgdmFyIG9ialZhbHVlID0gbmVzdGVkW2tleV07XG4gICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IGlzT2JqZWN0KG9ialZhbHVlKVxuICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseSetToString.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseSetToString.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var constant = __webpack_require__(/*! ./constant */ \"./node_modules/_lodash@4.17.21@lodash/constant.js\"),\n defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/_lodash@4.17.21@lodash/_defineProperty.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\");\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzPzIxOWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFFQUFZO0FBQ25DLHFCQUFxQixtQkFBTyxDQUFDLG1GQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscUVBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseSetToString.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseSortBy.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseSortBy.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVNvcnRCeS5qcz9lODU1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVNvcnRCeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydEJ5YCB3aGljaCB1c2VzIGBjb21wYXJlcmAgdG8gZGVmaW5lIHRoZVxuICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICogdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc29ydC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmVyIFRoZSBmdW5jdGlvbiB0byBkZWZpbmUgc29ydCBvcmRlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlU29ydEJ5KGFycmF5LCBjb21wYXJlcikge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGFycmF5LnNvcnQoY29tcGFyZXIpO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNvcnRCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseSortBy.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseTimes.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseTimes.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVRpbWVzLmpzPzBhOTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVRpbWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseTimes.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseToString.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseToString.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/_lodash@4.17.21@lodash/_Symbol.js\"),\n arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/_lodash@4.17.21@lodash/_arrayMap.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/_lodash@4.17.21@lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVRvU3RyaW5nLmpzPzVlZmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VUb1N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUb1N0cmluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseToString.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseTrim.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseTrim.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var trimmedEndIndex = __webpack_require__(/*! ./_trimmedEndIndex */ \"./node_modules/_lodash@4.17.21@lodash/_trimmedEndIndex.js\");\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVRyaW0uanM/MGM1OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRkFBb0I7O0FBRWxEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlVHJpbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB0cmltbWVkRW5kSW5kZXggPSByZXF1aXJlKCcuL190cmltbWVkRW5kSW5kZXgnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUcmltO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseTrim.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseUnary.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseUnary.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVVuYXJ5LmpzPzg1MDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19iYXNlVW5hcnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseUnary.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseUniq.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseUniq.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var SetCache = __webpack_require__(/*! ./_SetCache */ \"./node_modules/_lodash@4.17.21@lodash/_SetCache.js\"),\n arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ \"./node_modules/_lodash@4.17.21@lodash/_arrayIncludes.js\"),\n arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ \"./node_modules/_lodash@4.17.21@lodash/_arrayIncludesWith.js\"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ \"./node_modules/_lodash@4.17.21@lodash/_cacheHas.js\"),\n createSet = __webpack_require__(/*! ./_createSet */ \"./node_modules/_lodash@4.17.21@lodash/_createSet.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/_lodash@4.17.21@lodash/_setToArray.js\");\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVVuaXEuanM/N2Q0YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCO0FBQzlDLHdCQUF3QixtQkFBTyxDQUFDLHlGQUFzQjtBQUN0RCxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Jhc2VVbmlxLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyksXG4gICAgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICBzZWVuID0gcmVzdWx0O1xuXG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICB9XG4gIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgaWYgKHNldCkge1xuICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICB9XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseUniq.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseValues.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseValues.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/_lodash@4.17.21@lodash/_arrayMap.js\");\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVZhbHVlcy5qcz83Yzg4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVZhbHVlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseValues.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_baseZipObject.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_baseZipObject.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVppcE9iamVjdC5qcz85NzQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fYmFzZVppcE9iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlWmlwT2JqZWN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_baseZipObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cacheHas.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cacheHas.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2FjaGVIYXMuanM/YTE3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2NhY2hlSGFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FjaGVIYXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cacheHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_castFunction.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_castFunction.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\");\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzPzc1NTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jYXN0RnVuY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5Jyk7XG5cbi8qKlxuICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FzdEZ1bmN0aW9uO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_castFunction.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_castPath.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_castPath.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/_lodash@4.17.21@lodash/_isKey.js\"),\n stringToPath = __webpack_require__(/*! ./_stringToPath */ \"./node_modules/_lodash@4.17.21@lodash/_stringToPath.js\"),\n toString = __webpack_require__(/*! ./toString */ \"./node_modules/_lodash@4.17.21@lodash/toString.js\");\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2FzdFBhdGguanM/NmExZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsWUFBWSxtQkFBTyxDQUFDLGlFQUFVO0FBQzlCLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMscUVBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jYXN0UGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_castPath.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cloneArrayBuffer.js": /*!******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cloneArrayBuffer.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ \"./node_modules/_lodash@4.17.21@lodash/_Uint8Array.js\");\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVBcnJheUJ1ZmZlci5qcz85N2E5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheUJ1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGFycmF5IGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICB2YXIgcmVzdWx0ID0gbmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cloneArrayBuffer.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cloneBuffer.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cloneBuffer.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.46.0@webpack/buildin/module.js */ \"./node_modules/_webpack@4.46.0@webpack/buildin/module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVCdWZmZXIuanM/NjU0ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBVyxtQkFBTyxDQUFDLCtEQUFTOztBQUU1QjtBQUNBLGtCQUFrQixLQUEwQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jbG9uZUJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cloneBuffer.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cloneDataView.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cloneDataView.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/_lodash@4.17.21@lodash/_cloneArrayBuffer.js\");\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVEYXRhVmlldy5qcz9lMjM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QixtQkFBTyxDQUFDLHVGQUFxQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2Nsb25lRGF0YVZpZXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cloneDataView.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cloneRegExp.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cloneRegExp.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVSZWdFeHAuanM/OWQxOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVSZWdFeHAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lUmVnRXhwO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cloneRegExp.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cloneSymbol.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cloneSymbol.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/_lodash@4.17.21@lodash/_Symbol.js\");\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVTeW1ib2wuanM/ZTAwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsbUVBQVc7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVTeW1ib2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVN5bWJvbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cloneSymbol.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_cloneTypedArray.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_cloneTypedArray.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/_lodash@4.17.21@lodash/_cloneArrayBuffer.js\");\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVUeXBlZEFycmF5LmpzP2IwMjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsdUZBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY2xvbmVUeXBlZEFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_cloneTypedArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_compareAscending.js": /*!******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_compareAscending.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/_lodash@4.17.21@lodash/isSymbol.js\");\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29tcGFyZUFzY2VuZGluZy5qcz82MGE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jb21wYXJlQXNjZW5kaW5nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_compareAscending.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_compareMultiple.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_compareMultiple.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var compareAscending = __webpack_require__(/*! ./_compareAscending */ \"./node_modules/_lodash@4.17.21@lodash/_compareAscending.js\");\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29tcGFyZU11bHRpcGxlLmpzP2RlYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCLG1CQUFPLENBQUMsdUZBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsbUJBQW1CO0FBQzlCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jb21wYXJlTXVsdGlwbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29tcGFyZUFzY2VuZGluZyA9IHJlcXVpcmUoJy4vX2NvbXBhcmVBc2NlbmRpbmcnKTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLm9yZGVyQnlgIHRvIGNvbXBhcmUgbXVsdGlwbGUgcHJvcGVydGllcyBvZiBhIHZhbHVlIHRvIGFub3RoZXJcbiAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICpcbiAqIElmIGBvcmRlcnNgIGlzIHVuc3BlY2lmaWVkLCBhbGwgdmFsdWVzIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsXG4gKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gKiBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIG9iakNyaXRlcmlhID0gb2JqZWN0LmNyaXRlcmlhLFxuICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgIGxlbmd0aCA9IG9iakNyaXRlcmlhLmxlbmd0aCxcbiAgICAgIG9yZGVyc0xlbmd0aCA9IG9yZGVycy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgcmVzdWx0ID0gY29tcGFyZUFzY2VuZGluZyhvYmpDcml0ZXJpYVtpbmRleF0sIG90aENyaXRlcmlhW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgIHJldHVybiByZXN1bHQgKiAob3JkZXIgPT0gJ2Rlc2MnID8gLTEgOiAxKTtcbiAgICB9XG4gIH1cbiAgLy8gRml4ZXMgYW4gYEFycmF5I3NvcnRgIGJ1ZyBpbiB0aGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIGFwcGxpY2F0aW9uc1xuICAvLyB0aGF0IGNhdXNlcyBpdCwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB0byBwcm92aWRlIHRoZSBzYW1lIHZhbHVlIGZvclxuICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgLy9cbiAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTkwIGZvciBtb3JlIGRldGFpbHMuXG4gIHJldHVybiBvYmplY3QuaW5kZXggLSBvdGhlci5pbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wYXJlTXVsdGlwbGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_compareMultiple.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_copyArray.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_copyArray.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29weUFycmF5LmpzP2E5N2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29weUFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_copyArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_copyObject.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_copyObject.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/_lodash@4.17.21@lodash/_assignValue.js\"),\n baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js\");\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29weU9iamVjdC5qcz85YmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRkFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU8sV0FBVztBQUM3QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29weU9iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_copyObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_copySymbols.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_copySymbols.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/_lodash@4.17.21@lodash/_copyObject.js\"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ \"./node_modules/_lodash@4.17.21@lodash/_getSymbols.js\");\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29weVN5bWJvbHMuanM/ZDI1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPLFdBQVc7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2NvcHlTeW1ib2xzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbHMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgZnJvbS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_copySymbols.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_copySymbolsIn.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_copySymbolsIn.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/_lodash@4.17.21@lodash/_copyObject.js\"),\n getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ \"./node_modules/_lodash@4.17.21@lodash/_getSymbolsIn.js\");\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29weVN5bWJvbHNJbi5qcz8zNDM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPLFdBQVc7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2NvcHlTeW1ib2xzSW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_copySymbolsIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_coreJsData.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_coreJsData.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY29yZUpzRGF0YS5qcz9jMWNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQywrREFBUzs7QUFFNUI7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jb3JlSnNEYXRhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbm1vZHVsZS5leHBvcnRzID0gY29yZUpzRGF0YTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_coreJsData.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_createAssigner.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_createAssigner.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseRest = __webpack_require__(/*! ./_baseRest */ \"./node_modules/_lodash@4.17.21@lodash/_baseRest.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js\");\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlQXNzaWduZXIuanM/ZmMzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_createAssigner.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_createBaseEach.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_createBaseEach.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\");\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlQmFzZUVhY2guanM/NTcyZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jcmVhdGVCYXNlRWFjaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYywgZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpO1xuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0sIGluZGV4LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRWFjaDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_createBaseEach.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_createBaseFor.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_createBaseFor.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlQmFzZUZvci5qcz8zMWFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlQmFzZUZvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VGb3I7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_createBaseFor.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_createFind.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_createFind.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\");\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlRmluZC5qcz85OWRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTtBQUN6QyxXQUFXLG1CQUFPLENBQUMsNkRBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrQ0FBK0M7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19jcmVhdGVGaW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZpbmQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_createFind.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_createRange.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_createRange.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseRange = __webpack_require__(/*! ./_baseRange */ \"./node_modules/_lodash@4.17.21@lodash/_baseRange.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js\"),\n toFinite = __webpack_require__(/*! ./toFinite */ \"./node_modules/_lodash@4.17.21@lodash/toFinite.js\");\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlUmFuZ2UuanM/NjdjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBbUI7QUFDaEQsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlUmFuZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVJhbmdlID0gcmVxdWlyZSgnLi9fYmFzZVJhbmdlJyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIHRvRmluaXRlID0gcmVxdWlyZSgnLi90b0Zpbml0ZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5yYW5nZWAgb3IgYF8ucmFuZ2VSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICBlbmQgPSBzdGVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICB9XG4gICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUmFuZ2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_createRange.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_createSet.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_createSet.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Set = __webpack_require__(/*! ./_Set */ \"./node_modules/_lodash@4.17.21@lodash/_Set.js\"),\n noop = __webpack_require__(/*! ./noop */ \"./node_modules/_lodash@4.17.21@lodash/noop.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/_lodash@4.17.21@lodash/_setToArray.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlU2V0LmpzPzFkMWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLDZEQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyw2REFBUTtBQUMzQixpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fY3JlYXRlU2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIG5vb3AgPSByZXF1aXJlKCcuL25vb3AnKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBzZXQuXG4gKi9cbnZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVNldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_createSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_defineProperty.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_defineProperty.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\");\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZGVmaW5lUHJvcGVydHkuanM/YjQ4YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZGVmaW5lUHJvcGVydHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnR5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_defineProperty.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_equalArrays.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_equalArrays.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var SetCache = __webpack_require__(/*! ./_SetCache */ \"./node_modules/_lodash@4.17.21@lodash/_SetCache.js\"),\n arraySome = __webpack_require__(/*! ./_arraySome */ \"./node_modules/_lodash@4.17.21@lodash/_arraySome.js\"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ \"./node_modules/_lodash@4.17.21@lodash/_cacheHas.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZXF1YWxBcnJheXMuanM/MmNmZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2VxdWFsQXJyYXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNQYXJ0aWFsICYmIG90aExlbmd0aCA+IGFyckxlbmd0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChhcnJTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICB9XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gIHN0YWNrLnNldChhcnJheSwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgIDogY3VzdG9taXplcihhcnJWYWx1ZSwgb3RoVmFsdWUsIGluZGV4LCBhcnJheSwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKHNlZW4pIHtcbiAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghY2FjaGVIYXMoc2Vlbiwgb3RoSW5kZXgpICYmXG4gICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8XG4gICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEFycmF5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_equalArrays.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_equalByTag.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_equalByTag.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/_lodash@4.17.21@lodash/_Symbol.js\"),\n Uint8Array = __webpack_require__(/*! ./_Uint8Array */ \"./node_modules/_lodash@4.17.21@lodash/_Uint8Array.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/_lodash@4.17.21@lodash/eq.js\"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ \"./node_modules/_lodash@4.17.21@lodash/_equalArrays.js\"),\n mapToArray = __webpack_require__(/*! ./_mapToArray */ \"./node_modules/_lodash@4.17.21@lodash/_mapToArray.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/_lodash@4.17.21@lodash/_setToArray.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZXF1YWxCeVRhZy5qcz85OTE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxTQUFTLG1CQUFPLENBQUMseURBQU07QUFDdkIsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19lcXVhbEJ5VGFnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5JyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbEJ5VGFnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_equalByTag.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_equalObjects.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_equalObjects.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/_lodash@4.17.21@lodash/_getAllKeys.js\");\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZXF1YWxPYmplY3RzLmpzP2VlN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2VxdWFsT2JqZWN0cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_equalObjects.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_flatRest.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_flatRest.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var flatten = __webpack_require__(/*! ./flatten */ \"./node_modules/_lodash@4.17.21@lodash/flatten.js\"),\n overRest = __webpack_require__(/*! ./_overRest */ \"./node_modules/_lodash@4.17.21@lodash/_overRest.js\"),\n setToString = __webpack_require__(/*! ./_setToString */ \"./node_modules/_lodash@4.17.21@lodash/_setToString.js\");\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZmxhdFJlc3QuanM/ZDg2NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2ZsYXRSZXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_flatRest.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_freeGlobal.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_freeGlobal.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.46.0@webpack/buildin/global.js */ \"./node_modules/_webpack@4.46.0@webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZnJlZUdsb2JhbC5qcz8xY2JhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZnJlZUdsb2JhbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_freeGlobal.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getAllKeys.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getAllKeys.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetAllKeys.js\"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ \"./node_modules/_lodash@4.17.21@lodash/_getSymbols.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\");\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0QWxsS2V5cy5qcz82OWIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQixtQkFBTyxDQUFDLG1GQUFtQjtBQUNoRCxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkRBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19nZXRBbGxLZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUdldEFsbEtleXMnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getAllKeys.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getAllKeysIn.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getAllKeysIn.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetAllKeys.js\"),\n getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ \"./node_modules/_lodash@4.17.21@lodash/_getSymbolsIn.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\");\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0QWxsS2V5c0luLmpzP2E2YjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1CO0FBQ2hELG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsaUVBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2dldEFsbEtleXNJbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRBbGxLZXlzJyksXG4gICAgZ2V0U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9sc0luJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getAllKeysIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getMapData.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getMapData.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isKeyable = __webpack_require__(/*! ./_isKeyable */ \"./node_modules/_lodash@4.17.21@lodash/_isKeyable.js\");\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0TWFwRGF0YS5qcz83YTgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0TWFwRGF0YS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hcERhdGE7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getMapData.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getMatchData.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getMatchData.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ \"./node_modules/_lodash@4.17.21@lodash/_isStrictComparable.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\");\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0TWF0Y2hEYXRhLmpzP2M2NTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUJBQXlCLG1CQUFPLENBQUMsMkZBQXVCO0FBQ3hELFdBQVcsbUJBQU8sQ0FBQyw2REFBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19nZXRNYXRjaERhdGEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG1hdGNoIGRhdGEgb2YgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLFxuICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getMatchData.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getNative.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getNative.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsNative.js\"),\n getValue = __webpack_require__(/*! ./_getValue */ \"./node_modules/_lodash@4.17.21@lodash/_getValue.js\");\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0TmF0aXZlLmpzPzAwMzQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0TmF0aXZlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJc05hdGl2ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hdGl2ZScpLFxuICAgIGdldFZhbHVlID0gcmVxdWlyZSgnLi9fZ2V0VmFsdWUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROYXRpdmU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getNative.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getPrototype.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getPrototype.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var overArg = __webpack_require__(/*! ./_overArg */ \"./node_modules/_lodash@4.17.21@lodash/_overArg.js\");\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0UHJvdG90eXBlLmpzP2YyMjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLHFFQUFZOztBQUVsQztBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2dldFByb3RvdHlwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getPrototype.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getRawTag.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getRawTag.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/_lodash@4.17.21@lodash/_Symbol.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0UmF3VGFnLmpzP2MwMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYSxtQkFBTyxDQUFDLG1FQUFXOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2dldFJhd1RhZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getRawTag.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getSymbols.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getSymbols.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ \"./node_modules/_lodash@4.17.21@lodash/_arrayFilter.js\"),\n stubArray = __webpack_require__(/*! ./stubArray */ \"./node_modules/_lodash@4.17.21@lodash/stubArray.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0U3ltYm9scy5qcz80MzhlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxnQkFBZ0IsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0U3ltYm9scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getSymbols.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getSymbolsIn.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getSymbolsIn.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayPush = __webpack_require__(/*! ./_arrayPush */ \"./node_modules/_lodash@4.17.21@lodash/_arrayPush.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_getPrototype.js\"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ \"./node_modules/_lodash@4.17.21@lodash/_getSymbols.js\"),\n stubArray = __webpack_require__(/*! ./stubArray */ \"./node_modules/_lodash@4.17.21@lodash/stubArray.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0U3ltYm9sc0luLmpzPzZhYmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLHVFQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0U3ltYm9sc0luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICovXG52YXIgZ2V0U3ltYm9sc0luID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB3aGlsZSAob2JqZWN0KSB7XG4gICAgYXJyYXlQdXNoKHJlc3VsdCwgZ2V0U3ltYm9scyhvYmplY3QpKTtcbiAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getSymbolsIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getTag.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getTag.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var DataView = __webpack_require__(/*! ./_DataView */ \"./node_modules/_lodash@4.17.21@lodash/_DataView.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/_lodash@4.17.21@lodash/_Map.js\"),\n Promise = __webpack_require__(/*! ./_Promise */ \"./node_modules/_lodash@4.17.21@lodash/_Promise.js\"),\n Set = __webpack_require__(/*! ./_Set */ \"./node_modules/_lodash@4.17.21@lodash/_Set.js\"),\n WeakMap = __webpack_require__(/*! ./_WeakMap */ \"./node_modules/_lodash@4.17.21@lodash/_WeakMap.js\"),\n baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/_lodash@4.17.21@lodash/_toSource.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0VGFnLmpzP2U0YzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLFVBQVUsbUJBQU8sQ0FBQyw2REFBUTtBQUMxQixjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsVUFBVSxtQkFBTyxDQUFDLDZEQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMsdUVBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0VGFnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIERhdGFWaWV3ID0gcmVxdWlyZSgnLi9fRGF0YVZpZXcnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyksXG4gICAgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICB0b1NvdXJjZSA9IHJlcXVpcmUoJy4vX3RvU291cmNlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getTag.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_getValue.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_getValue.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0VmFsdWUuanM/MDEwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fZ2V0VmFsdWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_getValue.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hasPath.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hasPath.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var castPath = __webpack_require__(/*! ./_castPath */ \"./node_modules/_lodash@4.17.21@lodash/_castPath.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/_lodash@4.17.21@lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/_lodash@4.17.21@lodash/_isIndex.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/_lodash@4.17.21@lodash/isLength.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/_lodash@4.17.21@lodash/_toKey.js\");\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzUGF0aC5qcz8wOGYxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsaUVBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19oYXNQYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hasPath.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hasUnicode.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hasUnicode.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzVW5pY29kZS5qcz8wMjZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzVW5pY29kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1VuaWNvZGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hasUnicode.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hashClear.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hashClear.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js\");\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzaENsZWFyLmpzP2NmMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2hhc2hDbGVhci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hashClear.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hashDelete.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hashDelete.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzaERlbGV0ZS5qcz85Nzk2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19oYXNoRGVsZXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoRGVsZXRlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hashDelete.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hashGet.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hashGet.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js\");\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzaEdldC5qcz8zOTdjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19oYXNoR2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hashGet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hashHas.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hashHas.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzaEhhcy5qcz8xZTA1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19oYXNoSGFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hashHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_hashSet.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_hashSet.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js\");\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faGFzaFNldC5qcz9kMWJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2hhc2hTZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_hashSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_initCloneArray.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_initCloneArray.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faW5pdENsb25lQXJyYXkuanM/NGMzZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVBcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_initCloneArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_initCloneByTag.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_initCloneByTag.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ \"./node_modules/_lodash@4.17.21@lodash/_cloneArrayBuffer.js\"),\n cloneDataView = __webpack_require__(/*! ./_cloneDataView */ \"./node_modules/_lodash@4.17.21@lodash/_cloneDataView.js\"),\n cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ \"./node_modules/_lodash@4.17.21@lodash/_cloneRegExp.js\"),\n cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ \"./node_modules/_lodash@4.17.21@lodash/_cloneSymbol.js\"),\n cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/_cloneTypedArray.js\");\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faW5pdENsb25lQnlUYWcuanM/ODUzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RkFBcUI7QUFDcEQsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCO0FBQzlDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsc0JBQXNCLG1CQUFPLENBQUMscUZBQW9COztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2luaXRDbG9uZUJ5VGFnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVEYXRhVmlldyA9IHJlcXVpcmUoJy4vX2Nsb25lRGF0YVZpZXcnKSxcbiAgICBjbG9uZVJlZ0V4cCA9IHJlcXVpcmUoJy4vX2Nsb25lUmVnRXhwJyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_initCloneByTag.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_initCloneObject.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_initCloneObject.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseCreate = __webpack_require__(/*! ./_baseCreate */ \"./node_modules/_lodash@4.17.21@lodash/_baseCreate.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_getPrototype.js\"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_isPrototype.js\");\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzP2NkZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX2Jhc2VDcmVhdGUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVPYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_initCloneObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isFlattenable.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isFlattenable.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/_lodash@4.17.21@lodash/_Symbol.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/_lodash@4.17.21@lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNGbGF0dGVuYWJsZS5qcz9iMzAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isFlattenable.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isIndex.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isIndex.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNJbmRleC5qcz80ZGUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19pc0luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isIndex.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var eq = __webpack_require__(/*! ./eq */ \"./node_modules/_lodash@4.17.21@lodash/eq.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/_lodash@4.17.21@lodash/_isIndex.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\");\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNJdGVyYXRlZUNhbGwuanM/NGRkMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMseURBQU07QUFDdkIsa0JBQWtCLG1CQUFPLENBQUMsMkVBQWU7QUFDekMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isKey.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isKey.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/_lodash@4.17.21@lodash/isSymbol.js\");\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNLZXkuanM/ODNiYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2lzS2V5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isKey.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isKeyable.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isKeyable.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNLZXlhYmxlLmpzPzZkZWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNLZXlhYmxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isKeyable.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isMasked.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isMasked.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var coreJsData = __webpack_require__(/*! ./_coreJsData */ \"./node_modules/_lodash@4.17.21@lodash/_coreJsData.js\");\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNNYXNrZWQuanM/YWFlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19pc01hc2tlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2VkO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isMasked.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isPrototype.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isPrototype.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNQcm90b3R5cGUuanM/ZmUwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNQcm90b3R5cGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isPrototype.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_isStrictComparable.js": /*!********************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_isStrictComparable.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\");\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzPzcyZDkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2lzU3RyaWN0Q29tcGFyYWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_isStrictComparable.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_listCacheClear.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_listCacheClear.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanM/N2JkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUNsZWFyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_listCacheClear.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_listCacheDelete.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_listCacheDelete.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js\");\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzP2NkMmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgIGRhdGEucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICB9XG4gIC0tdGhpcy5zaXplO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVEZWxldGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_listCacheDelete.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_listCacheGet.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_listCacheGet.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js\");\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbGlzdENhY2hlR2V0LmpzPzUxOTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19saXN0Q2FjaGVHZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogZGF0YVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlR2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_listCacheGet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_listCacheHas.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_listCacheHas.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js\");\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbGlzdENhY2hlSGFzLmpzPzA1MTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX2xpc3RDYWNoZUhhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlSGFzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_listCacheHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_listCacheSet.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_listCacheSet.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ \"./node_modules/_lodash@4.17.21@lodash/_assocIndexOf.js\");\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbGlzdENhY2hlU2V0LmpzPzdlYTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19saXN0Q2FjaGVTZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgKyt0aGlzLnNpemU7XG4gICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_listCacheSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_mapCacheClear.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_mapCacheClear.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var Hash = __webpack_require__(/*! ./_Hash */ \"./node_modules/_lodash@4.17.21@lodash/_Hash.js\"),\n ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/_lodash@4.17.21@lodash/_ListCache.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/_lodash@4.17.21@lodash/_Map.js\");\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcz9kODM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQywrREFBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxVQUFVLG1CQUFPLENBQUMsNkRBQVE7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksXG4gICAgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUNsZWFyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_mapCacheClear.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_mapCacheDelete.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_mapCacheDelete.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/_lodash@4.17.21@lodash/_getMapData.js\");\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanM/YjU2YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVEZWxldGU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_mapCacheDelete.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_mapCacheGet.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_mapCacheGet.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/_lodash@4.17.21@lodash/_getMapData.js\");\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwQ2FjaGVHZXQuanM/MzNmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX21hcENhY2hlR2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_mapCacheGet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_mapCacheHas.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_mapCacheHas.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/_lodash@4.17.21@lodash/_getMapData.js\");\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwQ2FjaGVIYXMuanM/OTM5NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19tYXBDYWNoZUhhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlSGFzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_mapCacheHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_mapCacheSet.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_mapCacheSet.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/_lodash@4.17.21@lodash/_getMapData.js\");\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwQ2FjaGVTZXQuanM/MTY2NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19tYXBDYWNoZVNldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_mapCacheSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_mapToArray.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_mapToArray.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwVG9BcnJheS5qcz85ZDZkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWFwVG9BcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_mapToArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_matchesStrictComparable.js": /*!*************************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_matchesStrictComparable.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanM/NjhjZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBtYXRjaGVzUHJvcGVydHlgIGZvciBzb3VyY2UgdmFsdWVzIHN1aXRhYmxlXG4gKiBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Rba2V5XSA9PT0gc3JjVmFsdWUgJiZcbiAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_matchesStrictComparable.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_memoizeCapped.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_memoizeCapped.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var memoize = __webpack_require__(/*! ./memoize */ \"./node_modules/_lodash@4.17.21@lodash/memoize.js\");\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbWVtb2l6ZUNhcHBlZC5qcz9lMTU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxtRUFBVzs7QUFFakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX21lbW9pemVDYXBwZWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWVtb2l6ZSA9IHJlcXVpcmUoJy4vbWVtb2l6ZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG52YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICBjYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9KTtcblxuICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZUNhcHBlZDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_memoizeCapped.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/_lodash@4.17.21@lodash/_getNative.js\");\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzP2NjZTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7O0FBRXRDO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_nativeCreate.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_nativeKeys.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_nativeKeys.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var overArg = __webpack_require__(/*! ./_overArg */ \"./node_modules/_lodash@4.17.21@lodash/_overArg.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbmF0aXZlS2V5cy5qcz8xZGQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbEM7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19uYXRpdmVLZXlzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_nativeKeys.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_nativeKeysIn.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_nativeKeysIn.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbmF0aXZlS2V5c0luLmpzPzAwZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19uYXRpdmVLZXlzSW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_nativeKeysIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_nodeUtil.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_nodeUtil.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/_lodash@4.17.21@lodash/_freeGlobal.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.46.0@webpack/buildin/module.js */ \"./node_modules/_webpack@4.46.0@webpack/buildin/module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fbm9kZVV0aWwuanM/MmVjNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBaUIsbUJBQU8sQ0FBQywyRUFBZTs7QUFFeEM7QUFDQSxrQkFBa0IsS0FBMEI7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19ub2RlVXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vZGVVdGlsO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_nodeUtil.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_objectToString.js": /*!****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_objectToString.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanM/YjdmNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_objectToString.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_overArg.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_overArg.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fb3ZlckFyZy5qcz8yNzIxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX292ZXJBcmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_overArg.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_overRest.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_overRest.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var apply = __webpack_require__(/*! ./_apply */ \"./node_modules/_lodash@4.17.21@lodash/_apply.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fb3ZlclJlc3QuanM/MzFiNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLG1CQUFPLENBQUMsaUVBQVU7O0FBRTlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fb3ZlclJlc3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJSZXN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_overRest.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_root.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_root.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ \"./node_modules/_lodash@4.17.21@lodash/_freeGlobal.js\");\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fcm9vdC5qcz84MmM2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlOztBQUV4QztBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fcm9vdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm9vdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_root.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_safeGet.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_safeGet.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2FmZUdldC5qcz80Y2E5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX3NhZmVHZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_safeGet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_setCacheAdd.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_setCacheAdd.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0Q2FjaGVBZGQuanM/NmI1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0Q2FjaGVBZGQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_setCacheAdd.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_setCacheHas.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_setCacheHas.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0Q2FjaGVIYXMuanM/YWQ0OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0Q2FjaGVIYXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_setCacheHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_setToArray.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_setToArray.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0VG9BcnJheS5qcz82ZWJkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0VG9BcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_setToArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_setToString.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_setToString.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ \"./node_modules/_lodash@4.17.21@lodash/_baseSetToString.js\"),\n shortOut = __webpack_require__(/*! ./_shortOut */ \"./node_modules/_lodash@4.17.21@lodash/_shortOut.js\");\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0VG9TdHJpbmcuanM/YTk3OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRkFBb0I7QUFDbEQsZUFBZSxtQkFBTyxDQUFDLHVFQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2V0VG9TdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_setToString.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_shortOut.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_shortOut.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2hvcnRPdXQuanM/YTkzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc2hvcnRPdXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvcnRPdXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_shortOut.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stackClear.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stackClear.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/_lodash@4.17.21@lodash/_ListCache.js\");\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tDbGVhci5qcz8yNmM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX3N0YWNrQ2xlYXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tDbGVhcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stackClear.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stackDelete.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stackDelete.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tEZWxldGUuanM/OTZiNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19zdGFja0RlbGV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stackDelete.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stackGet.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stackGet.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tHZXQuanM/ZmJhZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tHZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stackGet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stackHas.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stackHas.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tIYXMuanM/ODUwZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX3N0YWNrSGFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0hhcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stackHas.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stackSet.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stackSet.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/_lodash@4.17.21@lodash/_ListCache.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/_lodash@4.17.21@lodash/_Map.js\"),\n MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/_lodash@4.17.21@lodash/_MapCache.js\");\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tTZXQuanM/MGM1OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxVQUFVLG1CQUFPLENBQUMsNkRBQVE7QUFDMUIsZUFBZSxtQkFBTyxDQUFDLHVFQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RhY2tTZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stackSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_strictIndexOf.js": /*!***************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_strictIndexOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RyaWN0SW5kZXhPZi5qcz9iNmFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0cmljdEluZGV4T2Y7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_strictIndexOf.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stringSize.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stringSize.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var asciiSize = __webpack_require__(/*! ./_asciiSize */ \"./node_modules/_lodash@4.17.21@lodash/_asciiSize.js\"),\n hasUnicode = __webpack_require__(/*! ./_hasUnicode */ \"./node_modules/_lodash@4.17.21@lodash/_hasUnicode.js\"),\n unicodeSize = __webpack_require__(/*! ./_unicodeSize */ \"./node_modules/_lodash@4.17.21@lodash/_unicodeSize.js\");\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RyaW5nU2l6ZS5qcz8yODJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL19zdHJpbmdTaXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzY2lpU2l6ZSA9IHJlcXVpcmUoJy4vX2FzY2lpU2l6ZScpLFxuICAgIGhhc1VuaWNvZGUgPSByZXF1aXJlKCcuL19oYXNVbmljb2RlJyksXG4gICAgdW5pY29kZVNpemUgPSByZXF1aXJlKCcuL191bmljb2RlU2l6ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG51bWJlciBvZiBzeW1ib2xzIGluIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICovXG5mdW5jdGlvbiBzdHJpbmdTaXplKHN0cmluZykge1xuICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgOiBhc2NpaVNpemUoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdTaXplO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stringSize.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_stringToPath.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_stringToPath.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ \"./node_modules/_lodash@4.17.21@lodash/_memoizeCapped.js\");\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fc3RyaW5nVG9QYXRoLmpzPzkxYzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCOztBQUU5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX3N0cmluZ1RvUGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_stringToPath.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_toKey.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_toKey.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/_lodash@4.17.21@lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fdG9LZXkuanM/ZDIwMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscUVBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLGNBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL190b0tleS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9LZXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_toKey.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_toSource.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_toSource.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fdG9Tb3VyY2UuanM/MDcxZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fdG9Tb3VyY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_toSource.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_trimmedEndIndex.js": /*!*****************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_trimmedEndIndex.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fdHJpbW1lZEVuZEluZGV4LmpzPzM0NmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_trimmedEndIndex.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/_unicodeSize.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/_unicodeSize.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9fdW5pY29kZVNpemUuanM/MDg2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRTtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvX3VuaWNvZGVTaXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib1JhbmdlICsgJ10nLFxuICAgIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLFxuICAgIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKScsXG4gICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc1JlZ2lvbmFsID0gJyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLFxuICAgIHJzU3VyclBhaXIgPSAnW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdJyxcbiAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbnZhciByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgIHJzU2VxID0gcnNPcHRWYXIgKyByZU9wdE1vZCArIHJzT3B0Sm9pbixcbiAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbnZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xuZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSByZVVuaWNvZGUubGFzdEluZGV4ID0gMDtcbiAgd2hpbGUgKHJlVW5pY29kZS50ZXN0KHN0cmluZykpIHtcbiAgICArK3Jlc3VsdDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaWNvZGVTaXplO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/_unicodeSize.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/clone.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/clone.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseClone = __webpack_require__(/*! ./_baseClone */ \"./node_modules/_lodash@4.17.21@lodash/_baseClone.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9jbG9uZS5qcz81YTU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjOztBQUV0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTLEdBQUcsU0FBUztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvY2xvbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hhbGxvdyBjbG9uZSBvZiBgdmFsdWVgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwczovL21kbi5pby9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobSlcbiAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICogYXJyYXlzLiBUaGUgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFyZSBjbG9uZWRcbiAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZURlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIHNoYWxsb3cgPSBfLmNsb25lKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmU7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/clone.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/cloneDeep.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/cloneDeep.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseClone = __webpack_require__(/*! ./_baseClone */ \"./node_modules/_lodash@4.17.21@lodash/_baseClone.js\");\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9jbG9uZURlZXAuanM/MGFmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9jbG9uZURlZXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/cloneDeep.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/constant.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/constant.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9jb25zdGFudC5qcz9iZWE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSx3Q0FBd0MsU0FBUztBQUNqRDtBQUNBO0FBQ0EsV0FBVyxTQUFTLEdBQUcsU0FBUztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9jb25zdGFudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/constant.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/defaults.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/defaults.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseRest = __webpack_require__(/*! ./_baseRest */ \"./node_modules/_lodash@4.17.21@lodash/_baseRest.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/_lodash@4.17.21@lodash/eq.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9kZWZhdWx0cy5qcz81NjU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxTQUFTLG1CQUFPLENBQUMseURBQU07QUFDdkIscUJBQXFCLG1CQUFPLENBQUMsbUZBQW1CO0FBQ2hELGFBQWEsbUJBQU8sQ0FBQyxpRUFBVTs7QUFFL0I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUyxHQUFHLFNBQVMsR0FBRyxTQUFTO0FBQ2hELFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvZGVmYXVsdHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/defaults.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/each.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/each.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("module.exports = __webpack_require__(/*! ./forEach */ \"./node_modules/_lodash@4.17.21@lodash/forEach.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9lYWNoLmpzP2YyMWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsbUVBQVciLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9lYWNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZvckVhY2gnKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/each.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/eq.js": /*!***************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/eq.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9lcS5qcz80ZTkwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2VxLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/eq.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/filter.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/filter.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ \"./node_modules/_lodash@4.17.21@lodash/_arrayFilter.js\"),\n baseFilter = __webpack_require__(/*! ./_baseFilter */ \"./node_modules/_lodash@4.17.21@lodash/_baseFilter.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9maWx0ZXIuanM/MzQ1YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxtRUFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4Q0FBOEM7QUFDcEQsTUFBTTtBQUNOO0FBQ0E7QUFDQSxnQ0FBZ0Msa0JBQWtCLEVBQUU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDRCQUE0QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLFlBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvZmlsdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/filter.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/find.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/find.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var createFind = __webpack_require__(/*! ./_createFind */ \"./node_modules/_lodash@4.17.21@lodash/_createFind.js\"),\n findIndex = __webpack_require__(/*! ./findIndex */ \"./node_modules/_lodash@4.17.21@lodash/findIndex.js\");\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9maW5kLmpzP2JiNzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsZ0JBQWdCLG1CQUFPLENBQUMsdUVBQWE7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBLE1BQU0sK0NBQStDO0FBQ3JELE1BQU0sZ0RBQWdEO0FBQ3RELE1BQU07QUFDTjtBQUNBO0FBQ0EsOEJBQThCLG1CQUFtQixFQUFFO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyQkFBMkI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2ZpbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3JlYXRlRmluZCA9IHJlcXVpcmUoJy4vX2NyZWF0ZUZpbmQnKSxcbiAgICBmaW5kSW5kZXggPSByZXF1aXJlKCcuL2ZpbmRJbmRleCcpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAncGViYmxlcydcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmQodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAqL1xudmFyIGZpbmQgPSBjcmVhdGVGaW5kKGZpbmRJbmRleCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/find.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/findIndex.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/findIndex.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ \"./node_modules/_lodash@4.17.21@lodash/_baseFindIndex.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/_lodash@4.17.21@lodash/toInteger.js\");\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9maW5kSW5kZXguanM/NWIzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7QUFDOUMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGdCQUFnQixtQkFBTyxDQUFDLHVFQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsTUFBTSxxQ0FBcUM7QUFDM0MsTUFBTSxxQ0FBcUM7QUFDM0MsTUFBTTtBQUNOO0FBQ0E7QUFDQSxtQ0FBbUMsMkJBQTJCLEVBQUU7QUFDaEU7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtDQUFrQztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9maW5kSW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnZnJlZCcsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAqIC8vID0+IDFcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IDJcbiAqL1xuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICB9XG4gIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/findIndex.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/flatten.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/flatten.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ \"./node_modules/_lodash@4.17.21@lodash/_baseFlatten.js\");\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9mbGF0dGVuLmpzP2E5M2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvZmxhdHRlbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyk7XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/flatten.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/forEach.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/forEach.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayEach = __webpack_require__(/*! ./_arrayEach */ \"./node_modules/_lodash@4.17.21@lodash/_arrayEach.js\"),\n baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/_lodash@4.17.21@lodash/_baseEach.js\"),\n castFunction = __webpack_require__(/*! ./_castFunction */ \"./node_modules/_lodash@4.17.21@lodash/_castFunction.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9mb3JFYWNoLmpzPzI4MDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9mb3JFYWNoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGFsaWFzIGVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICogQHNlZSBfLmZvckVhY2hSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICpcbiAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGNhc3RGdW5jdGlvbihpdGVyYXRlZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2g7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/forEach.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/forIn.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/forIn.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFor = __webpack_require__(/*! ./_baseFor */ \"./node_modules/_lodash@4.17.21@lodash/_baseFor.js\"),\n castFunction = __webpack_require__(/*! ./_castFunction */ \"./node_modules/_lodash@4.17.21@lodash/_castFunction.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\");\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9mb3JJbi5qcz8zODU3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLGlFQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2ZvckluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgY2FzdEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fY2FzdEZ1bmN0aW9uJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAqIG9iamVjdCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4zLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZm9ySW5SaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmZvckluKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScsICdiJywgdGhlbiAnYycgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsXG4gICAgPyBvYmplY3RcbiAgICA6IGJhc2VGb3Iob2JqZWN0LCBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpLCBrZXlzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckluO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/forIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/get.js": /*!****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/get.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/_lodash@4.17.21@lodash/_baseGet.js\");\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9nZXQuanM/ZWU2ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMscUVBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUSxPQUFPLFNBQVMsRUFBRTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvZ2V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/get.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/has.js": /*!****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/has.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseHas = __webpack_require__(/*! ./_baseHas */ \"./node_modules/_lodash@4.17.21@lodash/_baseHas.js\"),\n hasPath = __webpack_require__(/*! ./_hasPath */ \"./node_modules/_lodash@4.17.21@lodash/_hasPath.js\");\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9oYXMuanM/YmZmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMscUVBQVk7QUFDbEMsY0FBYyxtQkFBTyxDQUFDLHFFQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTyxTQUFTO0FBQ2pDLHlCQUF5QixnQkFBZ0IsU0FBUyxHQUFHO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvaGFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgaGFzUGF0aCA9IHJlcXVpcmUoJy4vX2hhc1BhdGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXMob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob3RoZXIsICdhJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/has.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/hasIn.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/hasIn.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ \"./node_modules/_lodash@4.17.21@lodash/_baseHasIn.js\"),\n hasPath = __webpack_require__(/*! ./_hasPath */ \"./node_modules/_lodash@4.17.21@lodash/_hasPath.js\");\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9oYXNJbi5qcz8xYzNiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixTQUFTLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9oYXNJbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/hasIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/identity.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/identity.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pZGVudGl0eS5qcz81OWUzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2lkZW50aXR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/identity.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isArguments.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isArguments.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsArguments.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0FyZ3VtZW50cy5qcz81NGJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLHFGQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixrQkFBa0IsRUFBRTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGtCQUFrQixFQUFFO0FBQ2xFO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2lzQXJndW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isArguments.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isArray.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isArray.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0FycmF5LmpzP2Y4NjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvaXNBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isArrayLike.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isArrayLike.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/_lodash@4.17.21@lodash/isFunction.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/_lodash@4.17.21@lodash/isLength.js\");\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0FycmF5TGlrZS5qcz80YzhhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3ZDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0FycmF5TGlrZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isArrayLikeObject.js": /*!******************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isArrayLikeObject.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcz9jMmY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3pDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNBcnJheUxpa2VgIGV4Y2VwdCB0aGF0IGl0IGFsc28gY2hlY2tzIGlmIGB2YWx1ZWBcbiAqIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isArrayLikeObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isBuffer.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isBuffer.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\"),\n stubFalse = __webpack_require__(/*! ./stubFalse */ \"./node_modules/_lodash@4.17.21@lodash/stubFalse.js\");\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_webpack@4.46.0@webpack/buildin/module.js */ \"./node_modules/_webpack@4.46.0@webpack/buildin/module.js\")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0J1ZmZlci5qcz85NDNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlEQUFXLG1CQUFPLENBQUMsK0RBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsdUVBQWE7O0FBRXJDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2lzQnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksXG4gICAgc3R1YkZhbHNlID0gcmVxdWlyZSgnLi9zdHViRmFsc2UnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQnVmZmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isBuffer.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isEmpty.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isEmpty.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/_lodash@4.17.21@lodash/_baseKeys.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/_lodash@4.17.21@lodash/_getTag.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/_lodash@4.17.21@lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/_lodash@4.17.21@lodash/isBuffer.js\"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_isPrototype.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/isTypedArray.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0VtcHR5LmpzP2M3ZTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7QUFDakMsa0JBQWtCLG1CQUFPLENBQUMsMkVBQWU7QUFDekMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZO0FBQ25DLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvaXNFbXB0eS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isEmpty.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isFunction.js": /*!***********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isFunction.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\");\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0Z1bmN0aW9uLmpzP2MyNmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0Z1bmN0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isFunction.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isLength.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isLength.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc0xlbmd0aC5qcz85YTM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvaXNMZW5ndGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isLength.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isMap.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isMap.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsMap.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/_lodash@4.17.21@lodash/_baseUnary.js\"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ \"./node_modules/_lodash@4.17.21@lodash/_nodeUtil.js\");\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc01hcC5qcz80MjUwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc01hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNNYXAgPSByZXF1aXJlKCcuL19iYXNlSXNNYXAnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTWFwKG5ldyBNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNNYXA7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isMap.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isObject.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isObject.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc09iamVjdC5qcz8xMzliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2lzT2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isObjectLike.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isObjectLike.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc09iamVjdExpa2UuanM/ZDkyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2lzT2JqZWN0TGlrZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isPlainObject.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isPlainObject.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_getPrototype.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1BsYWluT2JqZWN0LmpzPzJlZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1BsYWluT2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isPlainObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isSet.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isSet.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsSet.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/_lodash@4.17.21@lodash/_baseUnary.js\"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ \"./node_modules/_lodash@4.17.21@lodash/_nodeUtil.js\");\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1NldC5qcz9kMmZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1NldC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNTZXQgPSByZXF1aXJlKCcuL19iYXNlSXNTZXQnKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBub2RlVXRpbCA9IHJlcXVpcmUoJy4vX25vZGVVdGlsJyk7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTZXQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isSet.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isString.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isString.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1N0cmluZy5qcz8wNWEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLGNBQWMsbUJBQU8sQ0FBQyxtRUFBVztBQUNqQyxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvaXNTdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTdHJpbmc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isString.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isSymbol.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isSymbol.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/_lodash@4.17.21@lodash/_baseGetTag.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/_lodash@4.17.21@lodash/isObjectLike.js\");\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1N5bWJvbC5qcz9kMTliIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQixtQkFBTyxDQUFDLDJFQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1N5bWJvbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isSymbol.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isTypedArray.js": /*!*************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isTypedArray.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/_baseIsTypedArray.js\"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ \"./node_modules/_lodash@4.17.21@lodash/_baseUnary.js\"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ \"./node_modules/_lodash@4.17.21@lodash/_nodeUtil.js\");\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1R5cGVkQXJyYXkuanM/OTRlYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RkFBcUI7QUFDcEQsZ0JBQWdCLG1CQUFPLENBQUMseUVBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL2lzVHlwZWRBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlSXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fYmFzZUlzVHlwZWRBcnJheScpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isTypedArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/isUndefined.js": /*!************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/isUndefined.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1VuZGVmaW5lZC5qcz9lMmQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9pc1VuZGVmaW5lZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1VuZGVmaW5lZDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/isUndefined.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/keys.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/keys.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/_lodash@4.17.21@lodash/_arrayLikeKeys.js\"),\n baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/_lodash@4.17.21@lodash/_baseKeys.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\");\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9rZXlzLmpzPzJhNjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gva2V5cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLFxuICAgIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/keys.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/keysIn.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/keysIn.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/_lodash@4.17.21@lodash/_arrayLikeKeys.js\"),\n baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ \"./node_modules/_lodash@4.17.21@lodash/_baseKeysIn.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\");\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9rZXlzSW4uanM/YWM2OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRkFBa0I7QUFDOUMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsa0JBQWtCLG1CQUFPLENBQUMsMkVBQWU7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gva2V5c0luLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFycmF5TGlrZUtleXMgPSByZXF1aXJlKCcuL19hcnJheUxpa2VLZXlzJyksXG4gICAgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5c0luO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/keysIn.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/last.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/last.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9sYXN0LmpzPzZlNDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvbGFzdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubGFzdChbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxhc3Q7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/last.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/map.js": /*!****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/map.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/_lodash@4.17.21@lodash/_arrayMap.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n baseMap = __webpack_require__(/*! ./_baseMap */ \"./node_modules/_lodash@4.17.21@lodash/_baseMap.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9tYXAuanM/MzdiMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxxRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZU1hcCA9IHJlcXVpcmUoJy4vX2Jhc2VNYXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgYnkgcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICogYGZpbGxgLCBgaW52ZXJ0YCwgYHBhcnNlSW50YCwgYHJhbmRvbWAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlcGVhdGAsXG4gKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICogICByZXR1cm4gbiAqIG47XG4gKiB9XG4gKlxuICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF1cbiAqXG4gKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICogXTtcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICogLy8gPT4gWydiYXJuZXknLCAnZnJlZCddXG4gKi9cbmZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheU1hcCA6IGJhc2VNYXA7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/map.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/mapValues.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/mapValues.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ \"./node_modules/_lodash@4.17.21@lodash/_baseAssignValue.js\"),\n baseForOwn = __webpack_require__(/*! ./_baseForOwn */ \"./node_modules/_lodash@4.17.21@lodash/_baseForOwn.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\");\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9tYXBWYWx1ZXMuanM/MTgyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRkFBb0I7QUFDbEQsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtCQUErQjtBQUNoRCxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLG1DQUFtQyxjQUFjLEVBQUU7QUFDbkQsVUFBVSwyQkFBMkI7QUFDckM7QUFDQTtBQUNBO0FBQ0EsVUFBVSwyQkFBMkI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvbWFwVmFsdWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gKiBAc2VlIF8ubWFwS2V5c1xuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSB7XG4gKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICogfTtcbiAqXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFZhbHVlcztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/mapValues.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/max.js": /*!****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/max.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ \"./node_modules/_lodash@4.17.21@lodash/_baseExtremum.js\"),\n baseGt = __webpack_require__(/*! ./_baseGt */ \"./node_modules/_lodash@4.17.21@lodash/_baseGt.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\");\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9tYXguanM/YjQyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL21heC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/max.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/memoize.js": /*!********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/memoize.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/_lodash@4.17.21@lodash/_MapCache.js\");\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9tZW1vaXplLmpzPzY1YTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVFQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvbWVtb2l6ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAqIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBhcmd1bWVudFxuICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICpcbiAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICogY29uc3RydWN0b3Igd2l0aCBvbmUgd2hvc2UgaW5zdGFuY2VzIGltcGxlbWVudCB0aGVcbiAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtyZXNvbHZlcl0gVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGhlIGNhY2hlIGtleS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICpcbiAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiB2YWx1ZXMob3RoZXIpO1xuICogLy8gPT4gWzMsIDRdXG4gKlxuICogb2JqZWN0LmEgPSAyO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqXG4gKiAvLyBNb2RpZnkgdGhlIHJlc3VsdCBjYWNoZS5cbiAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWydhJywgJ2InXVxuICpcbiAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gKiBfLm1lbW9pemUuQ2FjaGUgPSBXZWFrTWFwO1xuICovXG5mdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nIHx8IChyZXNvbHZlciAhPSBudWxsICYmIHR5cGVvZiByZXNvbHZlciAhPSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgIGNhY2hlID0gbWVtb2l6ZWQuY2FjaGU7XG5cbiAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/memoize.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/merge.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/merge.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/_lodash@4.17.21@lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/_lodash@4.17.21@lodash/_createAssigner.js\");\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9tZXJnZS5qcz8yMzE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLHlFQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1GQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsWUFBWSxTQUFTLEdBQUcsU0FBUztBQUNqQztBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVMsR0FBRyxTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFVBQVUsUUFBUSxpQkFBaUIsR0FBRyxpQkFBaUI7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL21lcmdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuNS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7XG4gKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gKiB9O1xuICpcbiAqIHZhciBvdGhlciA9IHtcbiAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAqIH07XG4gKlxuICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAqL1xudmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2U7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/merge.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/min.js": /*!****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/min.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ \"./node_modules/_lodash@4.17.21@lodash/_baseExtremum.js\"),\n baseLt = __webpack_require__(/*! ./_baseLt */ \"./node_modules/_lodash@4.17.21@lodash/_baseLt.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/_lodash@4.17.21@lodash/identity.js\");\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9taW4uanM/ODAyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1FQUFXO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL21pbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWluKFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiAyXG4gKlxuICogXy5taW4oW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1pbihhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtaW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/min.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/minBy.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/minBy.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ \"./node_modules/_lodash@4.17.21@lodash/_baseExtremum.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n baseLt = __webpack_require__(/*! ./_baseLt */ \"./node_modules/_lodash@4.17.21@lodash/_baseLt.js\");\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9taW5CeS5qcz8xY2MxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1FQUFXOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUyxHQUFHLFNBQVM7QUFDeEM7QUFDQSxpQ0FBaUMsWUFBWSxFQUFFO0FBQy9DLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvbWluQnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZUV4dHJlbXVtID0gcmVxdWlyZSgnLi9fYmFzZUV4dHJlbXVtJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZUx0ID0gcmVxdWlyZSgnLi9fYmFzZUx0Jyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDEgfSwgeyAnbic6IDIgfV07XG4gKlxuICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICogLy8gPT4geyAnbic6IDEgfVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5taW5CeShvYmplY3RzLCAnbicpO1xuICogLy8gPT4geyAnbic6IDEgfVxuICovXG5mdW5jdGlvbiBtaW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtaW5CeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/minBy.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/noop.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/noop.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9ub29wLmpzP2U0ZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvbm9vcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbm9vcDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/noop.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/now.js": /*!****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/now.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var root = __webpack_require__(/*! ./_root */ \"./node_modules/_lodash@4.17.21@lodash/_root.js\");\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9ub3cuanM/MWY4OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXLG1CQUFPLENBQUMsK0RBQVM7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL25vdy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vdztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/now.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/pick.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/pick.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var basePick = __webpack_require__(/*! ./_basePick */ \"./node_modules/_lodash@4.17.21@lodash/_basePick.js\"),\n flatRest = __webpack_require__(/*! ./_flatRest */ \"./node_modules/_lodash@4.17.21@lodash/_flatRest.js\");\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9waWNrLmpzPzFmZTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxxQkFBcUI7QUFDaEMsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9waWNrLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/pick.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/property.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/property.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseProperty = __webpack_require__(/*! ./_baseProperty */ \"./node_modules/_lodash@4.17.21@lodash/_baseProperty.js\"),\n basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ \"./node_modules/_lodash@4.17.21@lodash/_basePropertyDeep.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/_lodash@4.17.21@lodash/_isKey.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/_lodash@4.17.21@lodash/_toKey.js\");\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9wcm9wZXJ0eS5qcz9lMjg2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1Qyx1QkFBdUIsbUJBQU8sQ0FBQyx1RkFBcUI7QUFDcEQsWUFBWSxtQkFBTyxDQUFDLGlFQUFVO0FBQzlCLFlBQVksbUJBQU8sQ0FBQyxpRUFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sT0FBTyxTQUFTLEVBQUU7QUFDeEIsTUFBTSxPQUFPLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3Byb3BlcnR5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/property.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/range.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/range.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var createRange = __webpack_require__(/*! ./_createRange */ \"./node_modules/_lodash@4.17.21@lodash/_createRange.js\");\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9yYW5nZS5qcz9iNzc5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9yYW5nZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVSYW5nZSA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJhbmdlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBudW1iZXJzIChwb3NpdGl2ZSBhbmQvb3IgbmVnYXRpdmUpIHByb2dyZXNzaW5nIGZyb21cbiAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAqIGl0J3Mgc2V0IHRvIGBzdGFydGAgd2l0aCBgc3RhcnRgIHRoZW4gc2V0IHRvIGAwYC5cbiAqXG4gKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJhbmdlKDQpO1xuICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gKlxuICogXy5yYW5nZSgtNCk7XG4gKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAqXG4gKiBfLnJhbmdlKDEsIDUpO1xuICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gKlxuICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICpcbiAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gKiAvLyA9PiBbMSwgMSwgMV1cbiAqXG4gKiBfLnJhbmdlKDApO1xuICogLy8gPT4gW11cbiAqL1xudmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByYW5nZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/range.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/reduce.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/reduce.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ \"./node_modules/_lodash@4.17.21@lodash/_arrayReduce.js\"),\n baseEach = __webpack_require__(/*! ./_baseEach */ \"./node_modules/_lodash@4.17.21@lodash/_baseEach.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n baseReduce = __webpack_require__(/*! ./_baseReduce */ \"./node_modules/_lodash@4.17.21@lodash/_baseReduce.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\");\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9yZWR1Y2UuanM/ZTdlNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxjQUFjLG1CQUFPLENBQUMsbUVBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixXQUFXLEVBQUU7QUFDYixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QjtBQUN0QztBQUNBO0FBQ0EsSUFBSSxJQUFJO0FBQ1IsVUFBVSw4QkFBOEI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3JlZHVjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyksXG4gICAgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VSZWR1Y2UgPSByZXF1aXJlKCcuL19iYXNlUmVkdWNlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gKiBhbmQgYHNvcnRCeWBcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAqICAgcmV0dXJuIHN1bSArIG47XG4gKiB9LCAwKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiAgIHJldHVybiByZXN1bHQ7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZHVjZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/reduce.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/size.js": /*!*****************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/size.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/_lodash@4.17.21@lodash/_baseKeys.js\"),\n getTag = __webpack_require__(/*! ./_getTag */ \"./node_modules/_lodash@4.17.21@lodash/_getTag.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLike.js\"),\n isString = __webpack_require__(/*! ./isString */ \"./node_modules/_lodash@4.17.21@lodash/isString.js\"),\n stringSize = __webpack_require__(/*! ./_stringSize */ \"./node_modules/_lodash@4.17.21@lodash/_stringSize.js\");\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9zaXplLmpzPzcwNjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLGFBQWEsbUJBQU8sQ0FBQyxtRUFBVztBQUNoQyxrQkFBa0IsbUJBQU8sQ0FBQywyRUFBZTtBQUN6QyxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0I7QUFDL0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlCQUFpQjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9zaXplLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICBzdHJpbmdTaXplID0gcmVxdWlyZSgnLi9fc3RyaW5nU2l6ZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5zaXplKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gKiAvLyA9PiAyXG4gKlxuICogXy5zaXplKCdwZWJibGVzJyk7XG4gKiAvLyA9PiA3XG4gKi9cbmZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICB9XG4gIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2l6ZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/size.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/sortBy.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/sortBy.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ \"./node_modules/_lodash@4.17.21@lodash/_baseFlatten.js\"),\n baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ \"./node_modules/_lodash@4.17.21@lodash/_baseOrderBy.js\"),\n baseRest = __webpack_require__(/*! ./_baseRest */ \"./node_modules/_lodash@4.17.21@lodash/_baseRest.js\"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ \"./node_modules/_lodash@4.17.21@lodash/_isIterateeCall.js\");\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9zb3J0QnkuanM/ZmE4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkVBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcseUJBQXlCO0FBQ3BDO0FBQ0EsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU07QUFDTjtBQUNBO0FBQ0EsaUNBQWlDLGVBQWUsRUFBRTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3NvcnRCeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyksXG4gICAgYmFzZU9yZGVyQnkgPSByZXF1aXJlKCcuL19iYXNlT3JkZXJCeScpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICogXTtcbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCAzMF1dXG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCAzMF0sIFsnZnJlZCcsIDQ4XV1cbiAqL1xudmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbXTtcbiAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gIH1cbiAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRCeTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/sortBy.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/stubArray.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/stubArray.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9zdHViQXJyYXkuanM/MjYyNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3N0dWJBcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/stubArray.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/stubFalse.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/stubFalse.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC9zdHViRmFsc2UuanM/N2U1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvc3R1YkZhbHNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/stubFalse.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/toFinite.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/toFinite.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var toNumber = __webpack_require__(/*! ./toNumber */ \"./node_modules/_lodash@4.17.21@lodash/toNumber.js\");\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90b0Zpbml0ZS5qcz9hOWM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvdG9GaW5pdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTIuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvRmluaXRlKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9GaW5pdGUoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gIH1cbiAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgfVxuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRmluaXRlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/toFinite.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/toInteger.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/toInteger.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var toFinite = __webpack_require__(/*! ./toFinite */ \"./node_modules/_lodash@4.17.21@lodash/toFinite.js\");\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90b0ludGVnZXIuanM/ZjBiOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMscUVBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3RvSW50ZWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0ludGVnZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/toInteger.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/toNumber.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/toNumber.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseTrim = __webpack_require__(/*! ./_baseTrim */ \"./node_modules/_lodash@4.17.21@lodash/_baseTrim.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/_lodash@4.17.21@lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90b051bWJlci5qcz9hYTE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyx1RUFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90b051bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/toNumber.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/toPlainObject.js": /*!**************************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/toPlainObject.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/_lodash@4.17.21@lodash/_copyObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/_lodash@4.17.21@lodash/keysIn.js\");\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90b1BsYWluT2JqZWN0LmpzPzkzYjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlFQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsVUFBVTtBQUNWO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3RvUGxhaW5PYmplY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/toPlainObject.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/toString.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/toString.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_modules/_lodash@4.17.21@lodash/_baseToString.js\");\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90b1N0cmluZy5qcz83MDBmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixtQkFBTyxDQUFDLCtFQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvdG9TdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYmFzZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVRvU3RyaW5nJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1N0cmluZztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/toString.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/transform.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/transform.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var arrayEach = __webpack_require__(/*! ./_arrayEach */ \"./node_modules/_lodash@4.17.21@lodash/_arrayEach.js\"),\n baseCreate = __webpack_require__(/*! ./_baseCreate */ \"./node_modules/_lodash@4.17.21@lodash/_baseCreate.js\"),\n baseForOwn = __webpack_require__(/*! ./_baseForOwn */ \"./node_modules/_lodash@4.17.21@lodash/_baseForOwn.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/_lodash@4.17.21@lodash/_baseIteratee.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/_lodash@4.17.21@lodash/_getPrototype.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/_lodash@4.17.21@lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/_lodash@4.17.21@lodash/isBuffer.js\"),\n isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/_lodash@4.17.21@lodash/isFunction.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/_lodash@4.17.21@lodash/isObject.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/_lodash@4.17.21@lodash/isTypedArray.js\");\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC90cmFuc2Zvcm0uanM/ZGRmZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5RUFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrRUFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0VBQWlCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxtRUFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscUVBQVk7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMseUVBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHFFQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZFQUFnQjs7QUFFM0M7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsZ0JBQWdCLHlCQUF5QjtBQUN6QztBQUNBLElBQUksSUFBSTtBQUNSLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbG9kYXNoQDQuMTcuMjFAbG9kYXNoL3RyYW5zZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKipcbiAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICogfSwgW10pO1xuICogLy8gPT4gWzQsIDldXG4gKlxuICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICogfSwge30pO1xuICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgfVxuICB9XG4gIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJhbnNmb3JtO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/transform.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/union.js": /*!******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/union.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ \"./node_modules/_lodash@4.17.21@lodash/_baseFlatten.js\"),\n baseRest = __webpack_require__(/*! ./_baseRest */ \"./node_modules/_lodash@4.17.21@lodash/_baseRest.js\"),\n baseUniq = __webpack_require__(/*! ./_baseUniq */ \"./node_modules/_lodash@4.17.21@lodash/_baseUniq.js\"),\n isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ \"./node_modules/_lodash@4.17.21@lodash/isArrayLikeObject.js\");\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC91bmlvbi5qcz81NjYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLDZFQUFnQjtBQUMxQyxlQUFlLG1CQUFPLENBQUMsdUVBQWE7QUFDcEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFhO0FBQ3BDLHdCQUF3QixtQkFBTyxDQUFDLHVGQUFxQjs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC91bmlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyksXG4gICAgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLFxuICAgIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICogLy8gPT4gWzIsIDFdXG4gKi9cbnZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pb247XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/union.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/uniqueId.js": /*!*********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/uniqueId.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var toString = __webpack_require__(/*! ./toString */ \"./node_modules/_lodash@4.17.21@lodash/toString.js\");\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC91bmlxdWVJZC5qcz82YjFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxxRUFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvdW5pcXVlSWQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3RvU3RyaW5nJyk7XG5cbi8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRHMuICovXG52YXIgaWRDb3VudGVyID0gMDtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICogLy8gPT4gJ2NvbnRhY3RfMTA0J1xuICpcbiAqIF8udW5pcXVlSWQoKTtcbiAqIC8vID0+ICcxMDUnXG4gKi9cbmZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICB2YXIgaWQgPSArK2lkQ291bnRlcjtcbiAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmlxdWVJZDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/uniqueId.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/values.js": /*!*******************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/values.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var baseValues = __webpack_require__(/*! ./_baseValues */ \"./node_modules/_lodash@4.17.21@lodash/_baseValues.js\"),\n keys = __webpack_require__(/*! ./keys */ \"./node_modules/_lodash@4.17.21@lodash/keys.js\");\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC92YWx1ZXMuanM/OGM3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUIsbUJBQU8sQ0FBQywyRUFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkRBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvdmFsdWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VWYWx1ZXMgPSByZXF1aXJlKCcuL19iYXNlVmFsdWVzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8udmFsdWVzKG5ldyBGb28pO1xuICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy52YWx1ZXMoJ2hpJyk7XG4gKiAvLyA9PiBbJ2gnLCAnaSddXG4gKi9cbmZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2YWx1ZXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/values.js\n"); /***/ }), /***/ "./node_modules/_lodash@4.17.21@lodash/zipObject.js": /*!**********************************************************!*\ !*** ./node_modules/_lodash@4.17.21@lodash/zipObject.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var assignValue = __webpack_require__(/*! ./_assignValue */ \"./node_modules/_lodash@4.17.21@lodash/_assignValue.js\"),\n baseZipObject = __webpack_require__(/*! ./_baseZipObject */ \"./node_modules/_lodash@4.17.21@lodash/_baseZipObject.js\");\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX2xvZGFzaEA0LjE3LjIxQGxvZGFzaC96aXBPYmplY3QuanM/YjBkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsbUJBQU8sQ0FBQyw2RUFBZ0I7QUFDMUMsb0JBQW9CLG1CQUFPLENBQUMsaUZBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19sb2Rhc2hANC4xNy4yMUBsb2Rhc2gvemlwT2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlWmlwT2JqZWN0ID0gcmVxdWlyZSgnLi9fYmFzZVppcE9iamVjdCcpO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZnJvbVBhaXJzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIHR3byBhcnJheXMsXG4gKiBvbmUgb2YgcHJvcGVydHkgaWRlbnRpZmllcnMgYW5kIG9uZSBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuNC4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IFtwcm9wcz1bXV0gVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uemlwT2JqZWN0KFsnYScsICdiJ10sIFsxLCAyXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqL1xuZnVuY3Rpb24gemlwT2JqZWN0KHByb3BzLCB2YWx1ZXMpIHtcbiAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYXNzaWduVmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHppcE9iamVjdDtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_lodash@4.17.21@lodash/zipObject.js\n"); /***/ }), /***/ "./node_modules/_merge@2.1.1@merge/lib/src/index.js": /*!**********************************************************!*\ !*** ./node_modules/_merge@2.1.1@merge/lib/src/index.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.isPlainObject = exports.clone = exports.recursive = exports.merge = exports.main = void 0;\r\nmodule.exports = exports = main;\r\nexports.default = main;\r\nfunction main() {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n return merge.apply(void 0, items);\r\n}\r\nexports.main = main;\r\nmain.clone = clone;\r\nmain.isPlainObject = isPlainObject;\r\nmain.recursive = recursive;\r\nfunction merge() {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n return _merge(items[0] === true, false, items);\r\n}\r\nexports.merge = merge;\r\nfunction recursive() {\r\n var items = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n items[_i] = arguments[_i];\r\n }\r\n return _merge(items[0] === true, true, items);\r\n}\r\nexports.recursive = recursive;\r\nfunction clone(input) {\r\n if (Array.isArray(input)) {\r\n var output = [];\r\n for (var index = 0; index < input.length; ++index)\r\n output.push(clone(input[index]));\r\n return output;\r\n }\r\n else if (isPlainObject(input)) {\r\n var output = {};\r\n for (var index in input)\r\n output[index] = clone(input[index]);\r\n return output;\r\n }\r\n else {\r\n return input;\r\n }\r\n}\r\nexports.clone = clone;\r\nfunction isPlainObject(input) {\r\n return input && typeof input === 'object' && !Array.isArray(input);\r\n}\r\nexports.isPlainObject = isPlainObject;\r\nfunction _recursiveMerge(base, extend) {\r\n if (!isPlainObject(base))\r\n return extend;\r\n for (var key in extend) {\r\n if (key === '__proto__' || key === 'constructor' || key === 'prototype')\r\n continue;\r\n base[key] = (isPlainObject(base[key]) && isPlainObject(extend[key])) ?\r\n _recursiveMerge(base[key], extend[key]) :\r\n extend[key];\r\n }\r\n return base;\r\n}\r\nfunction _merge(isClone, isRecursive, items) {\r\n var result;\r\n if (isClone || !isPlainObject(result = items.shift()))\r\n result = {};\r\n for (var index = 0; index < items.length; ++index) {\r\n var item = items[index];\r\n if (!isPlainObject(item))\r\n continue;\r\n for (var key in item) {\r\n if (key === '__proto__' || key === 'constructor' || key === 'prototype')\r\n continue;\r\n var value = isClone ? clone(item[key]) : item[key];\r\n result[key] = isRecursive ? _recursiveMerge(result[key], value) : value;\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21lcmdlQDIuMS4xQG1lcmdlL2xpYi9zcmMvaW5kZXguanM/Yzk5OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixzQkFBc0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsc0JBQXNCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWVyZ2VAMi4xLjFAbWVyZ2UvbGliL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuaXNQbGFpbk9iamVjdCA9IGV4cG9ydHMuY2xvbmUgPSBleHBvcnRzLnJlY3Vyc2l2ZSA9IGV4cG9ydHMubWVyZ2UgPSBleHBvcnRzLm1haW4gPSB2b2lkIDA7XHJcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IG1haW47XHJcbmV4cG9ydHMuZGVmYXVsdCA9IG1haW47XHJcbmZ1bmN0aW9uIG1haW4oKSB7XHJcbiAgICB2YXIgaXRlbXMgPSBbXTtcclxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgaXRlbXNbX2ldID0gYXJndW1lbnRzW19pXTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXJnZS5hcHBseSh2b2lkIDAsIGl0ZW1zKTtcclxufVxyXG5leHBvcnRzLm1haW4gPSBtYWluO1xyXG5tYWluLmNsb25lID0gY2xvbmU7XHJcbm1haW4uaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XHJcbm1haW4ucmVjdXJzaXZlID0gcmVjdXJzaXZlO1xyXG5mdW5jdGlvbiBtZXJnZSgpIHtcclxuICAgIHZhciBpdGVtcyA9IFtdO1xyXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICBpdGVtc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9tZXJnZShpdGVtc1swXSA9PT0gdHJ1ZSwgZmFsc2UsIGl0ZW1zKTtcclxufVxyXG5leHBvcnRzLm1lcmdlID0gbWVyZ2U7XHJcbmZ1bmN0aW9uIHJlY3Vyc2l2ZSgpIHtcclxuICAgIHZhciBpdGVtcyA9IFtdO1xyXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICBpdGVtc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9tZXJnZShpdGVtc1swXSA9PT0gdHJ1ZSwgdHJ1ZSwgaXRlbXMpO1xyXG59XHJcbmV4cG9ydHMucmVjdXJzaXZlID0gcmVjdXJzaXZlO1xyXG5mdW5jdGlvbiBjbG9uZShpbnB1dCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XHJcbiAgICAgICAgdmFyIG91dHB1dCA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBpbnB1dC5sZW5ndGg7ICsraW5kZXgpXHJcbiAgICAgICAgICAgIG91dHB1dC5wdXNoKGNsb25lKGlucHV0W2luZGV4XSkpO1xyXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGlucHV0KSkge1xyXG4gICAgICAgIHZhciBvdXRwdXQgPSB7fTtcclxuICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBpbnB1dClcclxuICAgICAgICAgICAgb3V0cHV0W2luZGV4XSA9IGNsb25lKGlucHV0W2luZGV4XSk7XHJcbiAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmNsb25lID0gY2xvbmU7XHJcbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QoaW5wdXQpIHtcclxuICAgIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGlucHV0KTtcclxufVxyXG5leHBvcnRzLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xyXG5mdW5jdGlvbiBfcmVjdXJzaXZlTWVyZ2UoYmFzZSwgZXh0ZW5kKSB7XHJcbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoYmFzZSkpXHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZDtcclxuICAgIGZvciAodmFyIGtleSBpbiBleHRlbmQpIHtcclxuICAgICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJylcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgYmFzZVtrZXldID0gKGlzUGxhaW5PYmplY3QoYmFzZVtrZXldKSAmJiBpc1BsYWluT2JqZWN0KGV4dGVuZFtrZXldKSkgP1xyXG4gICAgICAgICAgICBfcmVjdXJzaXZlTWVyZ2UoYmFzZVtrZXldLCBleHRlbmRba2V5XSkgOlxyXG4gICAgICAgICAgICBleHRlbmRba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBiYXNlO1xyXG59XHJcbmZ1bmN0aW9uIF9tZXJnZShpc0Nsb25lLCBpc1JlY3Vyc2l2ZSwgaXRlbXMpIHtcclxuICAgIHZhciByZXN1bHQ7XHJcbiAgICBpZiAoaXNDbG9uZSB8fCAhaXNQbGFpbk9iamVjdChyZXN1bHQgPSBpdGVtcy5zaGlmdCgpKSlcclxuICAgICAgICByZXN1bHQgPSB7fTtcclxuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5sZW5ndGg7ICsraW5kZXgpIHtcclxuICAgICAgICB2YXIgaXRlbSA9IGl0ZW1zW2luZGV4XTtcclxuICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoaXRlbSkpXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlzQ2xvbmUgPyBjbG9uZShpdGVtW2tleV0pIDogaXRlbVtrZXldO1xyXG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IGlzUmVjdXJzaXZlID8gX3JlY3Vyc2l2ZU1lcmdlKHJlc3VsdFtrZXldLCB2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_merge@2.1.1@merge/lib/src/index.js\n"); /***/ }), /***/ "./node_modules/_ml-array-max@1.2.3@ml-array-max/lib-es6/index.js": /*!************************************************************************!*\ !*** ./node_modules/_ml-array-max@1.2.3@ml-array-max/lib-es6/index.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var is_any_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-any-array */ \"./node_modules/_is-any-array@1.0.1@is-any-array/src/index.js\");\n\n\nfunction max(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!Object(is_any_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var _options$fromIndex = options.fromIndex,\n fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n _options$toIndex = options.toIndex,\n toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n\n if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n\n var maxValue = input[fromIndex];\n\n for (var i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] > maxValue) maxValue = input[i];\n }\n\n return maxValue;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (max);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLWFycmF5LW1heEAxLjIuM0BtbC1hcnJheS1tYXgvbGliLWVzNi9pbmRleC5qcz9kOGRlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7O0FBRW5DO0FBQ0E7O0FBRUEsT0FBTyw0REFBTztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsNkJBQTZCLGFBQWE7QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVlLGtFQUFHLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLWFycmF5LW1heEAxLjIuM0BtbC1hcnJheS1tYXgvbGliLWVzNi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbmZ1bmN0aW9uIG1heChpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJGZyb21JbmRleCA9IG9wdGlvbnMuZnJvbUluZGV4LFxuICAgICAgZnJvbUluZGV4ID0gX29wdGlvbnMkZnJvbUluZGV4ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkZnJvbUluZGV4LFxuICAgICAgX29wdGlvbnMkdG9JbmRleCA9IG9wdGlvbnMudG9JbmRleCxcbiAgICAgIHRvSW5kZXggPSBfb3B0aW9ucyR0b0luZGV4ID09PSB2b2lkIDAgPyBpbnB1dC5sZW5ndGggOiBfb3B0aW9ucyR0b0luZGV4O1xuXG4gIGlmIChmcm9tSW5kZXggPCAwIHx8IGZyb21JbmRleCA+PSBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIoZnJvbUluZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgnKTtcbiAgfVxuXG4gIGlmICh0b0luZGV4IDw9IGZyb21JbmRleCB8fCB0b0luZGV4ID4gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHRvSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCcpO1xuICB9XG5cbiAgdmFyIG1heFZhbHVlID0gaW5wdXRbZnJvbUluZGV4XTtcblxuICBmb3IgKHZhciBpID0gZnJvbUluZGV4ICsgMTsgaSA8IHRvSW5kZXg7IGkrKykge1xuICAgIGlmIChpbnB1dFtpXSA+IG1heFZhbHVlKSBtYXhWYWx1ZSA9IGlucHV0W2ldO1xuICB9XG5cbiAgcmV0dXJuIG1heFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-array-max@1.2.3@ml-array-max/lib-es6/index.js\n"); /***/ }), /***/ "./node_modules/_ml-array-min@1.2.2@ml-array-min/lib-es6/index.js": /*!************************************************************************!*\ !*** ./node_modules/_ml-array-min@1.2.2@ml-array-min/lib-es6/index.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var is_any_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-any-array */ \"./node_modules/_is-any-array@1.0.1@is-any-array/src/index.js\");\n\n\nfunction min(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!Object(is_any_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var _options$fromIndex = options.fromIndex,\n fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n _options$toIndex = options.toIndex,\n toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n\n if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n\n var minValue = input[fromIndex];\n\n for (var i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] < minValue) minValue = input[i];\n }\n\n return minValue;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (min);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLWFycmF5LW1pbkAxLjIuMkBtbC1hcnJheS1taW4vbGliLWVzNi9pbmRleC5qcz8xYzAxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBbUM7O0FBRW5DO0FBQ0E7O0FBRUEsT0FBTyw0REFBTztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsNkJBQTZCLGFBQWE7QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVlLGtFQUFHLEVBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLWFycmF5LW1pbkAxLjIuMkBtbC1hcnJheS1taW4vbGliLWVzNi9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbmZ1bmN0aW9uIG1pbihpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJGZyb21JbmRleCA9IG9wdGlvbnMuZnJvbUluZGV4LFxuICAgICAgZnJvbUluZGV4ID0gX29wdGlvbnMkZnJvbUluZGV4ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkZnJvbUluZGV4LFxuICAgICAgX29wdGlvbnMkdG9JbmRleCA9IG9wdGlvbnMudG9JbmRleCxcbiAgICAgIHRvSW5kZXggPSBfb3B0aW9ucyR0b0luZGV4ID09PSB2b2lkIDAgPyBpbnB1dC5sZW5ndGggOiBfb3B0aW9ucyR0b0luZGV4O1xuXG4gIGlmIChmcm9tSW5kZXggPCAwIHx8IGZyb21JbmRleCA+PSBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIoZnJvbUluZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgnKTtcbiAgfVxuXG4gIGlmICh0b0luZGV4IDw9IGZyb21JbmRleCB8fCB0b0luZGV4ID4gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHRvSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCcpO1xuICB9XG5cbiAgdmFyIG1pblZhbHVlID0gaW5wdXRbZnJvbUluZGV4XTtcblxuICBmb3IgKHZhciBpID0gZnJvbUluZGV4ICsgMTsgaSA8IHRvSW5kZXg7IGkrKykge1xuICAgIGlmIChpbnB1dFtpXSA8IG1pblZhbHVlKSBtaW5WYWx1ZSA9IGlucHV0W2ldO1xuICB9XG5cbiAgcmV0dXJuIG1pblZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtaW47XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-array-min@1.2.2@ml-array-min/lib-es6/index.js\n"); /***/ }), /***/ "./node_modules/_ml-array-rescale@1.3.6@ml-array-rescale/lib-es6/index.js": /*!********************************************************************************!*\ !*** ./node_modules/_ml-array-rescale@1.3.6@ml-array-rescale/lib-es6/index.js ***! \********************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rescale; });\n/* harmony import */ var is_any_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-any-array */ \"./node_modules/_is-any-array@1.0.1@is-any-array/src/index.js\");\n/* harmony import */ var ml_array_max__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ml-array-max */ \"./node_modules/_ml-array-max@1.2.3@ml-array-max/lib-es6/index.js\");\n/* harmony import */ var ml_array_min__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ml-array-min */ \"./node_modules/_ml-array-min@1.2.2@ml-array-min/lib-es6/index.js\");\n\n\n\n\nfunction rescale(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!Object(is_any_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input)) {\n throw new TypeError('input must be an array');\n } else if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var output;\n\n if (options.output !== undefined) {\n if (!Object(is_any_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(options.output)) {\n throw new TypeError('output option must be an array if specified');\n }\n\n output = options.output;\n } else {\n output = new Array(input.length);\n }\n\n var currentMin = Object(ml_array_min__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(input);\n var currentMax = Object(ml_array_max__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(input);\n\n if (currentMin === currentMax) {\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n }\n\n var _options$min = options.min,\n minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n _options$max = options.max,\n maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n if (minValue >= maxValue) {\n throw new RangeError('min option must be smaller than max option');\n }\n\n var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n for (var i = 0; i < input.length; i++) {\n output[i] = (input[i] - currentMin) * factor + minValue;\n }\n\n return output;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLWFycmF5LXJlc2NhbGVAMS4zLjZAbWwtYXJyYXktcmVzY2FsZS9saWItZXM2L2luZGV4LmpzPzNlZTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNKO0FBQ0E7O0FBRS9CO0FBQ0E7O0FBRUEsT0FBTyw0REFBTztBQUNkO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxTQUFTLDREQUFPO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxtQkFBbUIsNERBQUc7QUFDdEIsbUJBQW1CLDREQUFHOztBQUV0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBOztBQUU4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtYXJyYXktcmVzY2FsZUAxLjMuNkBtbC1hcnJheS1yZXNjYWxlL2xpYi1lczYvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheSBmcm9tICdpcy1hbnktYXJyYXknO1xuaW1wb3J0IG1heCBmcm9tICdtbC1hcnJheS1tYXgnO1xuaW1wb3J0IG1pbiBmcm9tICdtbC1hcnJheS1taW4nO1xuXG5mdW5jdGlvbiByZXNjYWxlKGlucHV0KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBpZiAoIWlzQXJyYXkoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9IGVsc2UgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICB2YXIgb3V0cHV0O1xuXG4gIGlmIChvcHRpb25zLm91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc0FycmF5KG9wdGlvbnMub3V0cHV0KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3V0cHV0IG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IGlmIHNwZWNpZmllZCcpO1xuICAgIH1cblxuICAgIG91dHB1dCA9IG9wdGlvbnMub3V0cHV0O1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IG5ldyBBcnJheShpbnB1dC5sZW5ndGgpO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRNaW4gPSBtaW4oaW5wdXQpO1xuICB2YXIgY3VycmVudE1heCA9IG1heChpbnB1dCk7XG5cbiAgaWYgKGN1cnJlbnRNaW4gPT09IGN1cnJlbnRNYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluaW11bSBhbmQgbWF4aW11bSBpbnB1dCB2YWx1ZXMgYXJlIGVxdWFsLiBDYW5ub3QgcmVzY2FsZSBhIGNvbnN0YW50IGFycmF5Jyk7XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWluID0gb3B0aW9ucy5taW4sXG4gICAgICBtaW5WYWx1ZSA9IF9vcHRpb25zJG1pbiA9PT0gdm9pZCAwID8gb3B0aW9ucy5hdXRvTWluTWF4ID8gY3VycmVudE1pbiA6IDAgOiBfb3B0aW9ucyRtaW4sXG4gICAgICBfb3B0aW9ucyRtYXggPSBvcHRpb25zLm1heCxcbiAgICAgIG1heFZhbHVlID0gX29wdGlvbnMkbWF4ID09PSB2b2lkIDAgPyBvcHRpb25zLmF1dG9NaW5NYXggPyBjdXJyZW50TWF4IDogMSA6IF9vcHRpb25zJG1heDtcblxuICBpZiAobWluVmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluIG9wdGlvbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXggb3B0aW9uJyk7XG4gIH1cblxuICB2YXIgZmFjdG9yID0gKG1heFZhbHVlIC0gbWluVmFsdWUpIC8gKGN1cnJlbnRNYXggLSBjdXJyZW50TWluKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0cHV0W2ldID0gKGlucHV0W2ldIC0gY3VycmVudE1pbikgKiBmYWN0b3IgKyBtaW5WYWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmV4cG9ydCB7IHJlc2NhbGUgYXMgZGVmYXVsdCB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-array-rescale@1.3.6@ml-array-rescale/lib-es6/index.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/correlation.js": /*!********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/correlation.js ***! \********************************************************************/ /*! exports provided: correlation */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"correlation\", function() { return correlation; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isMatrix(yMatrix) &&\n !Array.isArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n\n const { center = true, scale = true } = options;\n if (center) {\n xMatrix.center('column');\n if (!yIsSame) {\n yMatrix.center('column');\n }\n }\n if (scale) {\n xMatrix.scale('column');\n if (!yIsSame) {\n yMatrix.scale('column');\n }\n }\n\n const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n const sdy = yIsSame\n ? sdx\n : yMatrix.standardDeviation('column', { unbiased: true });\n\n const corr = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < corr.rows; i++) {\n for (let j = 0; j < corr.columns; j++) {\n corr.set(\n i,\n j,\n corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n );\n }\n }\n return corr;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2NvcnJlbGF0aW9uLmpzP2Q0ZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQThCOztBQUV2Qiw2REFBNkQ7QUFDcEUsZ0JBQWdCLCtDQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEtBQUssK0NBQU07QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGtCQUFrQiwrQ0FBTTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDhCQUE4QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbURBQW1ELGlCQUFpQjtBQUNwRTtBQUNBO0FBQ0EsMkNBQTJDLGlCQUFpQjs7QUFFNUQ7QUFDQSxpQkFBaUIsZUFBZTtBQUNoQyxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvY29ycmVsYXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0cml4IGZyb20gJy4vbWF0cml4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvcnJlbGF0aW9uKHhNYXRyaXgsIHlNYXRyaXggPSB4TWF0cml4LCBvcHRpb25zID0ge30pIHtcbiAgeE1hdHJpeCA9IG5ldyBNYXRyaXgoeE1hdHJpeCk7XG4gIGxldCB5SXNTYW1lID0gZmFsc2U7XG4gIGlmIChcbiAgICB0eXBlb2YgeU1hdHJpeCA9PT0gJ29iamVjdCcgJiZcbiAgICAhTWF0cml4LmlzTWF0cml4KHlNYXRyaXgpICYmXG4gICAgIUFycmF5LmlzQXJyYXkoeU1hdHJpeClcbiAgKSB7XG4gICAgb3B0aW9ucyA9IHlNYXRyaXg7XG4gICAgeU1hdHJpeCA9IHhNYXRyaXg7XG4gICAgeUlzU2FtZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgeU1hdHJpeCA9IG5ldyBNYXRyaXgoeU1hdHJpeCk7XG4gIH1cbiAgaWYgKHhNYXRyaXgucm93cyAhPT0geU1hdHJpeC5yb3dzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm90aCBtYXRyaWNlcyBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHJvd3MnKTtcbiAgfVxuXG4gIGNvbnN0IHsgY2VudGVyID0gdHJ1ZSwgc2NhbGUgPSB0cnVlIH0gPSBvcHRpb25zO1xuICBpZiAoY2VudGVyKSB7XG4gICAgeE1hdHJpeC5jZW50ZXIoJ2NvbHVtbicpO1xuICAgIGlmICgheUlzU2FtZSkge1xuICAgICAgeU1hdHJpeC5jZW50ZXIoJ2NvbHVtbicpO1xuICAgIH1cbiAgfVxuICBpZiAoc2NhbGUpIHtcbiAgICB4TWF0cml4LnNjYWxlKCdjb2x1bW4nKTtcbiAgICBpZiAoIXlJc1NhbWUpIHtcbiAgICAgIHlNYXRyaXguc2NhbGUoJ2NvbHVtbicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNkeCA9IHhNYXRyaXguc3RhbmRhcmREZXZpYXRpb24oJ2NvbHVtbicsIHsgdW5iaWFzZWQ6IHRydWUgfSk7XG4gIGNvbnN0IHNkeSA9IHlJc1NhbWVcbiAgICA/IHNkeFxuICAgIDogeU1hdHJpeC5zdGFuZGFyZERldmlhdGlvbignY29sdW1uJywgeyB1bmJpYXNlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBjb3JyID0geE1hdHJpeC50cmFuc3Bvc2UoKS5tbXVsKHlNYXRyaXgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcnIucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb3JyLmNvbHVtbnM7IGorKykge1xuICAgICAgY29yci5zZXQoXG4gICAgICAgIGksXG4gICAgICAgIGosXG4gICAgICAgIGNvcnIuZ2V0KGksIGopICogKDEgLyAoc2R4W2ldICogc2R5W2pdKSkgKiAoMSAvICh4TWF0cml4LnJvd3MgLSAxKSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29ycjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/correlation.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/covariance.js": /*!*******************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/covariance.js ***! \*******************************************************************/ /*! exports provided: covariance */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"covariance\", function() { return covariance; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isMatrix(yMatrix) &&\n !Array.isArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n const { center = true } = options;\n if (center) {\n xMatrix = xMatrix.center('column');\n if (!yIsSame) {\n yMatrix = yMatrix.center('column');\n }\n }\n const cov = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < cov.rows; i++) {\n for (let j = 0; j < cov.columns; j++) {\n cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n }\n }\n return cov;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2NvdmFyaWFuY2UuanM/ODk1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBOEI7O0FBRXZCLDREQUE0RDtBQUNuRSxnQkFBZ0IsK0NBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0EsS0FBSywrQ0FBTTtBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsa0JBQWtCLCtDQUFNO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxnQkFBZ0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsY0FBYztBQUMvQixtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2NvdmFyaWFuY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0cml4IGZyb20gJy4vbWF0cml4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvdmFyaWFuY2UoeE1hdHJpeCwgeU1hdHJpeCA9IHhNYXRyaXgsIG9wdGlvbnMgPSB7fSkge1xuICB4TWF0cml4ID0gbmV3IE1hdHJpeCh4TWF0cml4KTtcbiAgbGV0IHlJc1NhbWUgPSBmYWxzZTtcbiAgaWYgKFxuICAgIHR5cGVvZiB5TWF0cml4ID09PSAnb2JqZWN0JyAmJlxuICAgICFNYXRyaXguaXNNYXRyaXgoeU1hdHJpeCkgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh5TWF0cml4KVxuICApIHtcbiAgICBvcHRpb25zID0geU1hdHJpeDtcbiAgICB5TWF0cml4ID0geE1hdHJpeDtcbiAgICB5SXNTYW1lID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB5TWF0cml4ID0gbmV3IE1hdHJpeCh5TWF0cml4KTtcbiAgfVxuICBpZiAoeE1hdHJpeC5yb3dzICE9PSB5TWF0cml4LnJvd3MpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb3RoIG1hdHJpY2VzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygcm93cycpO1xuICB9XG4gIGNvbnN0IHsgY2VudGVyID0gdHJ1ZSB9ID0gb3B0aW9ucztcbiAgaWYgKGNlbnRlcikge1xuICAgIHhNYXRyaXggPSB4TWF0cml4LmNlbnRlcignY29sdW1uJyk7XG4gICAgaWYgKCF5SXNTYW1lKSB7XG4gICAgICB5TWF0cml4ID0geU1hdHJpeC5jZW50ZXIoJ2NvbHVtbicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBjb3YgPSB4TWF0cml4LnRyYW5zcG9zZSgpLm1tdWwoeU1hdHJpeCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY292LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY292LmNvbHVtbnM7IGorKykge1xuICAgICAgY292LnNldChpLCBqLCBjb3YuZ2V0KGksIGopICogKDEgLyAoeE1hdHJpeC5yb3dzIC0gMSkpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/covariance.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/cholesky.js": /*!********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/cholesky.js ***! \********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CholeskyDecomposition; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n\n\n\nclass CholeskyDecomposition {\n constructor(value) {\n value = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(value);\n if (!value.isSymmetric()) {\n throw new Error('Matrix is not symmetric');\n }\n\n let a = value;\n let dimension = a.rows;\n let l = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](dimension, dimension);\n let positiveDefinite = true;\n let i, j, k;\n\n for (j = 0; j < dimension; j++) {\n let d = 0;\n for (k = 0; k < j; k++) {\n let s = 0;\n for (i = 0; i < k; i++) {\n s += l.get(k, i) * l.get(j, i);\n }\n s = (a.get(j, k) - s) / l.get(k, k);\n l.set(j, k, s);\n d = d + s * s;\n }\n\n d = a.get(j, j) - d;\n\n positiveDefinite &= d > 0;\n l.set(j, j, Math.sqrt(Math.max(d, 0)));\n for (k = j + 1; k < dimension; k++) {\n l.set(j, k, 0);\n }\n }\n\n this.L = l;\n this.positiveDefinite = Boolean(positiveDefinite);\n }\n\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n\n solve(value) {\n value = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(value);\n\n let l = this.L;\n let dimension = l.rows;\n\n if (value.rows !== dimension) {\n throw new Error('Matrix dimensions do not match');\n }\n if (this.isPositiveDefinite() === false) {\n throw new Error('Matrix is not positive definite');\n }\n\n let count = value.columns;\n let B = value.clone();\n let i, j, k;\n\n for (k = 0; k < dimension; k++) {\n for (j = 0; j < count; j++) {\n for (i = 0; i < k; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n for (k = dimension - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n for (i = k + 1; i < dimension; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n return B;\n }\n\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL2Nob2xlc2t5LmpzPzMxYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDdUI7O0FBRXZDO0FBQ2Y7QUFDQSxZQUFZLDZEQUFlO0FBQzNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLCtDQUFNO0FBQ3RCO0FBQ0E7O0FBRUEsZUFBZSxlQUFlO0FBQzlCO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixlQUFlO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSw2REFBZTs7QUFFM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGVBQWUsZUFBZTtBQUM5QixpQkFBaUIsV0FBVztBQUM1QixtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixRQUFRO0FBQ25DLGlCQUFpQixXQUFXO0FBQzVCLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvZGMvY2hvbGVza3kuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hvbGVza3lEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG4gICAgaWYgKCF2YWx1ZS5pc1N5bW1ldHJpYygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBpcyBub3Qgc3ltbWV0cmljJyk7XG4gICAgfVxuXG4gICAgbGV0IGEgPSB2YWx1ZTtcbiAgICBsZXQgZGltZW5zaW9uID0gYS5yb3dzO1xuICAgIGxldCBsID0gbmV3IE1hdHJpeChkaW1lbnNpb24sIGRpbWVuc2lvbik7XG4gICAgbGV0IHBvc2l0aXZlRGVmaW5pdGUgPSB0cnVlO1xuICAgIGxldCBpLCBqLCBrO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGRpbWVuc2lvbjsgaisrKSB7XG4gICAgICBsZXQgZCA9IDA7XG4gICAgICBmb3IgKGsgPSAwOyBrIDwgajsgaysrKSB7XG4gICAgICAgIGxldCBzID0gMDtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykge1xuICAgICAgICAgIHMgKz0gbC5nZXQoaywgaSkgKiBsLmdldChqLCBpKTtcbiAgICAgICAgfVxuICAgICAgICBzID0gKGEuZ2V0KGosIGspIC0gcykgLyBsLmdldChrLCBrKTtcbiAgICAgICAgbC5zZXQoaiwgaywgcyk7XG4gICAgICAgIGQgPSBkICsgcyAqIHM7XG4gICAgICB9XG5cbiAgICAgIGQgPSBhLmdldChqLCBqKSAtIGQ7XG5cbiAgICAgIHBvc2l0aXZlRGVmaW5pdGUgJj0gZCA+IDA7XG4gICAgICBsLnNldChqLCBqLCBNYXRoLnNxcnQoTWF0aC5tYXgoZCwgMCkpKTtcbiAgICAgIGZvciAoayA9IGogKyAxOyBrIDwgZGltZW5zaW9uOyBrKyspIHtcbiAgICAgICAgbC5zZXQoaiwgaywgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5MID0gbDtcbiAgICB0aGlzLnBvc2l0aXZlRGVmaW5pdGUgPSBCb29sZWFuKHBvc2l0aXZlRGVmaW5pdGUpO1xuICB9XG5cbiAgaXNQb3NpdGl2ZURlZmluaXRlKCkge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aXZlRGVmaW5pdGU7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBsID0gdGhpcy5MO1xuICAgIGxldCBkaW1lbnNpb24gPSBsLnJvd3M7XG5cbiAgICBpZiAodmFsdWUucm93cyAhPT0gZGltZW5zaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1Bvc2l0aXZlRGVmaW5pdGUoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IGlzIG5vdCBwb3NpdGl2ZSBkZWZpbml0ZScpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IEIgPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBpLCBqLCBrO1xuXG4gICAgZm9yIChrID0gMDsgayA8IGRpbWVuc2lvbjsgaysrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgICAgQi5zZXQoaywgaiwgQi5nZXQoaywgaikgLSBCLmdldChpLCBqKSAqIGwuZ2V0KGssIGkpKTtcbiAgICAgICAgfVxuICAgICAgICBCLnNldChrLCBqLCBCLmdldChrLCBqKSAvIGwuZ2V0KGssIGspKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGsgPSBkaW1lbnNpb24gLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgZm9yIChpID0gayArIDE7IGkgPCBkaW1lbnNpb247IGkrKykge1xuICAgICAgICAgIEIuc2V0KGssIGosIEIuZ2V0KGssIGopIC0gQi5nZXQoaSwgaikgKiBsLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgICAgQi5zZXQoaywgaiwgQi5nZXQoaywgaikgLyBsLmdldChrLCBrKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIEI7XG4gIH1cblxuICBnZXQgbG93ZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIHJldHVybiB0aGlzLkw7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/cholesky.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/evd.js": /*!***************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/evd.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return EigenvalueDecomposition; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/util.js\");\n\n\n\n\n\nclass EigenvalueDecomposition {\n constructor(matrix, options = {}) {\n const { assumeSymmetric = false } = options;\n\n matrix = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(matrix);\n if (!matrix.isSquare()) {\n throw new Error('Matrix is not a square matrix');\n }\n\n if (matrix.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let n = matrix.columns;\n let V = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](n, n);\n let d = new Float64Array(n);\n let e = new Float64Array(n);\n let value = matrix;\n let i, j;\n\n let isSymmetric = false;\n if (assumeSymmetric) {\n isSymmetric = true;\n } else {\n isSymmetric = matrix.isSymmetric();\n }\n\n if (isSymmetric) {\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, value.get(i, j));\n }\n }\n tred2(n, e, d, V);\n tql2(n, e, d, V);\n } else {\n let H = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](n, n);\n let ort = new Float64Array(n);\n for (j = 0; j < n; j++) {\n for (i = 0; i < n; i++) {\n H.set(i, j, value.get(i, j));\n }\n }\n orthes(n, H, ort, V);\n hqr2(n, e, d, V, H);\n }\n\n this.n = n;\n this.e = e;\n this.d = d;\n this.V = V;\n }\n\n get realEigenvalues() {\n return Array.from(this.d);\n }\n\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n\n get eigenvectorMatrix() {\n return this.V;\n }\n\n get diagonalMatrix() {\n let n = this.n;\n let e = this.e;\n let d = this.d;\n let X = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n X.set(i, j, 0);\n }\n X.set(i, i, d[i]);\n if (e[i] > 0) {\n X.set(i, i + 1, e[i]);\n } else if (e[i] < 0) {\n X.set(i, i - 1, e[i]);\n }\n }\n return X;\n }\n}\n\nfunction tred2(n, e, d, V) {\n let f, g, h, i, j, k, hh, scale;\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(n - 1, j);\n }\n\n for (i = n - 1; i > 0; i--) {\n scale = 0;\n h = 0;\n for (k = 0; k < i; k++) {\n scale = scale + Math.abs(d[k]);\n }\n\n if (scale === 0) {\n e[i] = d[i - 1];\n for (j = 0; j < i; j++) {\n d[j] = V.get(i - 1, j);\n V.set(i, j, 0);\n V.set(j, i, 0);\n }\n } else {\n for (k = 0; k < i; k++) {\n d[k] /= scale;\n h += d[k] * d[k];\n }\n\n f = d[i - 1];\n g = Math.sqrt(h);\n if (f > 0) {\n g = -g;\n }\n\n e[i] = scale * g;\n h = h - f * g;\n d[i - 1] = f - g;\n for (j = 0; j < i; j++) {\n e[j] = 0;\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n V.set(j, i, f);\n g = e[j] + V.get(j, j) * f;\n for (k = j + 1; k <= i - 1; k++) {\n g += V.get(k, j) * d[k];\n e[k] += V.get(k, j) * f;\n }\n e[j] = g;\n }\n\n f = 0;\n for (j = 0; j < i; j++) {\n e[j] /= h;\n f += e[j] * d[j];\n }\n\n hh = f / (h + h);\n for (j = 0; j < i; j++) {\n e[j] -= hh * d[j];\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n g = e[j];\n for (k = j; k <= i - 1; k++) {\n V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n }\n d[j] = V.get(i - 1, j);\n V.set(i, j, 0);\n }\n }\n d[i] = h;\n }\n\n for (i = 0; i < n - 1; i++) {\n V.set(n - 1, i, V.get(i, i));\n V.set(i, i, 1);\n h = d[i + 1];\n if (h !== 0) {\n for (k = 0; k <= i; k++) {\n d[k] = V.get(k, i + 1) / h;\n }\n\n for (j = 0; j <= i; j++) {\n g = 0;\n for (k = 0; k <= i; k++) {\n g += V.get(k, i + 1) * V.get(k, j);\n }\n for (k = 0; k <= i; k++) {\n V.set(k, j, V.get(k, j) - g * d[k]);\n }\n }\n }\n\n for (k = 0; k <= i; k++) {\n V.set(k, i + 1, 0);\n }\n }\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(n - 1, j);\n V.set(n - 1, j, 0);\n }\n\n V.set(n - 1, n - 1, 1);\n e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2, iter;\n\n for (i = 1; i < n; i++) {\n e[i - 1] = e[i];\n }\n\n e[n - 1] = 0;\n\n let f = 0;\n let tst1 = 0;\n let eps = Number.EPSILON;\n\n for (l = 0; l < n; l++) {\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n m = l;\n while (m < n) {\n if (Math.abs(e[m]) <= eps * tst1) {\n break;\n }\n m++;\n }\n\n if (m > l) {\n iter = 0;\n do {\n iter = iter + 1;\n\n g = d[l];\n p = (d[l + 1] - g) / (2 * e[l]);\n r = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(p, 1);\n if (p < 0) {\n r = -r;\n }\n\n d[l] = e[l] / (p + r);\n d[l + 1] = e[l] * (p + r);\n dl1 = d[l + 1];\n h = g - d[l];\n for (i = l + 2; i < n; i++) {\n d[i] -= h;\n }\n\n f = f + h;\n\n p = d[m];\n c = 1;\n c2 = c;\n c3 = c;\n el1 = e[l + 1];\n s = 0;\n s2 = 0;\n for (i = m - 1; i >= l; i--) {\n c3 = c2;\n c2 = c;\n s2 = s;\n g = c * e[i];\n h = c * p;\n r = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(p, e[i]);\n e[i + 1] = s * r;\n s = e[i] / r;\n c = p / r;\n p = c * d[i] - s * g;\n d[i + 1] = h + s * (c * g + s * d[i]);\n\n for (k = 0; k < n; k++) {\n h = V.get(k, i + 1);\n V.set(k, i + 1, s * V.get(k, i) + c * h);\n V.set(k, i, c * V.get(k, i) - s * h);\n }\n }\n\n p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n e[l] = s * p;\n d[l] = c * p;\n } while (Math.abs(e[l]) > eps * tst1);\n }\n d[l] = d[l] + f;\n e[l] = 0;\n }\n\n for (i = 0; i < n - 1; i++) {\n k = i;\n p = d[i];\n for (j = i + 1; j < n; j++) {\n if (d[j] < p) {\n k = j;\n p = d[j];\n }\n }\n\n if (k !== i) {\n d[k] = d[i];\n d[i] = p;\n for (j = 0; j < n; j++) {\n p = V.get(j, i);\n V.set(j, i, V.get(j, k));\n V.set(j, k, p);\n }\n }\n }\n}\n\nfunction orthes(n, H, ort, V) {\n let low = 0;\n let high = n - 1;\n let f, g, h, i, j, m;\n let scale;\n\n for (m = low + 1; m <= high - 1; m++) {\n scale = 0;\n for (i = m; i <= high; i++) {\n scale = scale + Math.abs(H.get(i, m - 1));\n }\n\n if (scale !== 0) {\n h = 0;\n for (i = high; i >= m; i--) {\n ort[i] = H.get(i, m - 1) / scale;\n h += ort[i] * ort[i];\n }\n\n g = Math.sqrt(h);\n if (ort[m] > 0) {\n g = -g;\n }\n\n h = h - ort[m] * g;\n ort[m] = ort[m] - g;\n\n for (j = m; j < n; j++) {\n f = 0;\n for (i = high; i >= m; i--) {\n f += ort[i] * H.get(i, j);\n }\n\n f = f / h;\n for (i = m; i <= high; i++) {\n H.set(i, j, H.get(i, j) - f * ort[i]);\n }\n }\n\n for (i = 0; i <= high; i++) {\n f = 0;\n for (j = high; j >= m; j--) {\n f += ort[j] * H.get(i, j);\n }\n\n f = f / h;\n for (j = m; j <= high; j++) {\n H.set(i, j, H.get(i, j) - f * ort[j]);\n }\n }\n\n ort[m] = scale * ort[m];\n H.set(m, m - 1, scale * g);\n }\n }\n\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, i === j ? 1 : 0);\n }\n }\n\n for (m = high - 1; m >= low + 1; m--) {\n if (H.get(m, m - 1) !== 0) {\n for (i = m + 1; i <= high; i++) {\n ort[i] = H.get(i, m - 1);\n }\n\n for (j = m; j <= high; j++) {\n g = 0;\n for (i = m; i <= high; i++) {\n g += ort[i] * V.get(i, j);\n }\n\n g = g / ort[m] / H.get(m, m - 1);\n for (i = m; i <= high; i++) {\n V.set(i, j, V.get(i, j) + g * ort[i]);\n }\n }\n }\n }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n let n = nn - 1;\n let low = 0;\n let high = nn - 1;\n let eps = Number.EPSILON;\n let exshift = 0;\n let norm = 0;\n let p = 0;\n let q = 0;\n let r = 0;\n let s = 0;\n let z = 0;\n let iter = 0;\n let i, j, k, l, m, t, w, x, y;\n let ra, sa, vr, vi;\n let notlast, cdivres;\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n d[i] = H.get(i, i);\n e[i] = 0;\n }\n\n for (j = Math.max(i - 1, 0); j < nn; j++) {\n norm = norm + Math.abs(H.get(i, j));\n }\n }\n\n while (n >= low) {\n l = n;\n while (l > low) {\n s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n if (s === 0) {\n s = norm;\n }\n if (Math.abs(H.get(l, l - 1)) < eps * s) {\n break;\n }\n l--;\n }\n\n if (l === n) {\n H.set(n, n, H.get(n, n) + exshift);\n d[n] = H.get(n, n);\n e[n] = 0;\n n--;\n iter = 0;\n } else if (l === n - 1) {\n w = H.get(n, n - 1) * H.get(n - 1, n);\n p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n q = p * p + w;\n z = Math.sqrt(Math.abs(q));\n H.set(n, n, H.get(n, n) + exshift);\n H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n x = H.get(n, n);\n\n if (q >= 0) {\n z = p >= 0 ? p + z : p - z;\n d[n - 1] = x + z;\n d[n] = d[n - 1];\n if (z !== 0) {\n d[n] = x - w / z;\n }\n e[n - 1] = 0;\n e[n] = 0;\n x = H.get(n, n - 1);\n s = Math.abs(x) + Math.abs(z);\n p = x / s;\n q = z / s;\n r = Math.sqrt(p * p + q * q);\n p = p / r;\n q = q / r;\n\n for (j = n - 1; j < nn; j++) {\n z = H.get(n - 1, j);\n H.set(n - 1, j, q * z + p * H.get(n, j));\n H.set(n, j, q * H.get(n, j) - p * z);\n }\n\n for (i = 0; i <= n; i++) {\n z = H.get(i, n - 1);\n H.set(i, n - 1, q * z + p * H.get(i, n));\n H.set(i, n, q * H.get(i, n) - p * z);\n }\n\n for (i = low; i <= high; i++) {\n z = V.get(i, n - 1);\n V.set(i, n - 1, q * z + p * V.get(i, n));\n V.set(i, n, q * V.get(i, n) - p * z);\n }\n } else {\n d[n - 1] = x + p;\n d[n] = x + p;\n e[n - 1] = z;\n e[n] = -z;\n }\n\n n = n - 2;\n iter = 0;\n } else {\n x = H.get(n, n);\n y = 0;\n w = 0;\n if (l < n) {\n y = H.get(n - 1, n - 1);\n w = H.get(n, n - 1) * H.get(n - 1, n);\n }\n\n if (iter === 10) {\n exshift += x;\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - x);\n }\n s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n x = y = 0.75 * s;\n w = -0.4375 * s * s;\n }\n\n if (iter === 30) {\n s = (y - x) / 2;\n s = s * s + w;\n if (s > 0) {\n s = Math.sqrt(s);\n if (y < x) {\n s = -s;\n }\n s = x - w / ((y - x) / 2 + s);\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - s);\n }\n exshift += s;\n x = y = w = 0.964;\n }\n }\n\n iter = iter + 1;\n\n m = n - 2;\n while (m >= l) {\n z = H.get(m, m);\n r = x - z;\n s = y - z;\n p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n q = H.get(m + 1, m + 1) - z - r - s;\n r = H.get(m + 2, m + 1);\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n p = p / s;\n q = q / s;\n r = r / s;\n if (m === l) {\n break;\n }\n if (\n Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n eps *\n (Math.abs(p) *\n (Math.abs(H.get(m - 1, m - 1)) +\n Math.abs(z) +\n Math.abs(H.get(m + 1, m + 1))))\n ) {\n break;\n }\n m--;\n }\n\n for (i = m + 2; i <= n; i++) {\n H.set(i, i - 2, 0);\n if (i > m + 2) {\n H.set(i, i - 3, 0);\n }\n }\n\n for (k = m; k <= n - 1; k++) {\n notlast = k !== n - 1;\n if (k !== m) {\n p = H.get(k, k - 1);\n q = H.get(k + 1, k - 1);\n r = notlast ? H.get(k + 2, k - 1) : 0;\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n if (x !== 0) {\n p = p / x;\n q = q / x;\n r = r / x;\n }\n }\n\n if (x === 0) {\n break;\n }\n\n s = Math.sqrt(p * p + q * q + r * r);\n if (p < 0) {\n s = -s;\n }\n\n if (s !== 0) {\n if (k !== m) {\n H.set(k, k - 1, -s * x);\n } else if (l !== m) {\n H.set(k, k - 1, -H.get(k, k - 1));\n }\n\n p = p + s;\n x = p / s;\n y = q / s;\n z = r / s;\n q = q / p;\n r = r / p;\n\n for (j = k; j < nn; j++) {\n p = H.get(k, j) + q * H.get(k + 1, j);\n if (notlast) {\n p = p + r * H.get(k + 2, j);\n H.set(k + 2, j, H.get(k + 2, j) - p * z);\n }\n\n H.set(k, j, H.get(k, j) - p * x);\n H.set(k + 1, j, H.get(k + 1, j) - p * y);\n }\n\n for (i = 0; i <= Math.min(n, k + 3); i++) {\n p = x * H.get(i, k) + y * H.get(i, k + 1);\n if (notlast) {\n p = p + z * H.get(i, k + 2);\n H.set(i, k + 2, H.get(i, k + 2) - p * r);\n }\n\n H.set(i, k, H.get(i, k) - p);\n H.set(i, k + 1, H.get(i, k + 1) - p * q);\n }\n\n for (i = low; i <= high; i++) {\n p = x * V.get(i, k) + y * V.get(i, k + 1);\n if (notlast) {\n p = p + z * V.get(i, k + 2);\n V.set(i, k + 2, V.get(i, k + 2) - p * r);\n }\n\n V.set(i, k, V.get(i, k) - p);\n V.set(i, k + 1, V.get(i, k + 1) - p * q);\n }\n }\n }\n }\n }\n\n if (norm === 0) {\n return;\n }\n\n for (n = nn - 1; n >= 0; n--) {\n p = d[n];\n q = e[n];\n\n if (q === 0) {\n l = n;\n H.set(n, n, 1);\n for (i = n - 1; i >= 0; i--) {\n w = H.get(i, i) - p;\n r = 0;\n for (j = l; j <= n; j++) {\n r = r + H.get(i, j) * H.get(j, n);\n }\n\n if (e[i] < 0) {\n z = w;\n s = r;\n } else {\n l = i;\n if (e[i] === 0) {\n H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n t = (x * s - z * r) / q;\n H.set(i, n, t);\n H.set(\n i + 1,\n n,\n Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n );\n }\n\n t = Math.abs(H.get(i, n));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n } else if (q < 0) {\n l = n - 1;\n\n if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n H.set(n - 1, n - 1, q / H.get(n, n - 1));\n H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n } else {\n cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n H.set(n - 1, n - 1, cdivres[0]);\n H.set(n - 1, n, cdivres[1]);\n }\n\n H.set(n, n - 1, 0);\n H.set(n, n, 1);\n for (i = n - 2; i >= 0; i--) {\n ra = 0;\n sa = 0;\n for (j = l; j <= n; j++) {\n ra = ra + H.get(i, j) * H.get(j, n - 1);\n sa = sa + H.get(i, j) * H.get(j, n);\n }\n\n w = H.get(i, i) - p;\n\n if (e[i] < 0) {\n z = w;\n r = ra;\n s = sa;\n } else {\n l = i;\n if (e[i] === 0) {\n cdivres = cdiv(-ra, -sa, w, q);\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n vi = (d[i] - p) * 2 * q;\n if (vr === 0 && vi === 0) {\n vr =\n eps *\n norm *\n (Math.abs(w) +\n Math.abs(q) +\n Math.abs(x) +\n Math.abs(y) +\n Math.abs(z));\n }\n cdivres = cdiv(\n x * r - z * ra + q * sa,\n x * s - z * sa - q * ra,\n vr,\n vi,\n );\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n H.set(\n i + 1,\n n - 1,\n (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n );\n H.set(\n i + 1,\n n,\n (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n );\n } else {\n cdivres = cdiv(\n -r - y * H.get(i, n - 1),\n -s - y * H.get(i, n),\n z,\n q,\n );\n H.set(i + 1, n - 1, cdivres[0]);\n H.set(i + 1, n, cdivres[1]);\n }\n }\n\n t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n - 1, H.get(j, n - 1) / t);\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n }\n }\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n for (j = i; j < nn; j++) {\n V.set(i, j, H.get(i, j));\n }\n }\n }\n\n for (j = nn - 1; j >= low; j--) {\n for (i = low; i <= high; i++) {\n z = 0;\n for (k = low; k <= Math.min(j, high); k++) {\n z = z + V.get(i, k) * H.get(k, j);\n }\n V.set(i, j, z);\n }\n }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n let r, d;\n if (Math.abs(yr) > Math.abs(yi)) {\n r = yi / yr;\n d = yr + r * yi;\n return [(xr + r * xi) / d, (xi - r * xr) / d];\n } else {\n r = yr / yi;\n d = yi + r * yr;\n return [(r * xr + xi) / d, (r * xi - xr) / d];\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL2V2ZC5qcz81MTFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDdUI7O0FBRWxCOztBQUVyQjtBQUNmLGtDQUFrQztBQUNsQyxXQUFXLDBCQUEwQjs7QUFFckMsYUFBYSw2REFBZTtBQUM1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLCtDQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxrQkFBa0IsK0NBQU07QUFDeEI7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwrQ0FBTTtBQUN0QjtBQUNBLGVBQWUsT0FBTztBQUN0QixpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsWUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLFdBQVc7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBOztBQUVBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksd0RBQVU7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE9BQU87QUFDOUI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFVO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxXQUFXO0FBQ3hCO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQSxzQkFBc0IsUUFBUTtBQUM5QjtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixXQUFXO0FBQzVCO0FBQ0Esc0JBQXNCLFFBQVE7QUFDOUI7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEIsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBLHFCQUFxQixXQUFXO0FBQ2hDO0FBQ0E7O0FBRUEsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQSxtQkFBbUIsV0FBVztBQUM5QjtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsUUFBUTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsUUFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsV0FBVztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsUUFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHlCQUF5QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsV0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsUUFBUTtBQUMxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCLFFBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLFVBQVU7QUFDNUIsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQSxtQkFBbUIsd0JBQXdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvZGMvZXZkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmltcG9ydCB7IGh5cG90ZW51c2UgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFaWdlbnZhbHVlRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1hdHJpeCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBhc3N1bWVTeW1tZXRyaWMgPSBmYWxzZSB9ID0gb3B0aW9ucztcblxuICAgIG1hdHJpeCA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICghbWF0cml4LmlzU3F1YXJlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IGlzIG5vdCBhIHNxdWFyZSBtYXRyaXgnKTtcbiAgICB9XG5cbiAgICBpZiAobWF0cml4LmlzRW1wdHkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggbXVzdCBiZSBub24tZW1wdHknKTtcbiAgICB9XG5cbiAgICBsZXQgbiA9IG1hdHJpeC5jb2x1bW5zO1xuICAgIGxldCBWID0gbmV3IE1hdHJpeChuLCBuKTtcbiAgICBsZXQgZCA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgbGV0IGUgPSBuZXcgRmxvYXQ2NEFycmF5KG4pO1xuICAgIGxldCB2YWx1ZSA9IG1hdHJpeDtcbiAgICBsZXQgaSwgajtcblxuICAgIGxldCBpc1N5bW1ldHJpYyA9IGZhbHNlO1xuICAgIGlmIChhc3N1bWVTeW1tZXRyaWMpIHtcbiAgICAgIGlzU3ltbWV0cmljID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXNTeW1tZXRyaWMgPSBtYXRyaXguaXNTeW1tZXRyaWMoKTtcbiAgICB9XG5cbiAgICBpZiAoaXNTeW1tZXRyaWMpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgIFYuc2V0KGksIGosIHZhbHVlLmdldChpLCBqKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRyZWQyKG4sIGUsIGQsIFYpO1xuICAgICAgdHFsMihuLCBlLCBkLCBWKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IEggPSBuZXcgTWF0cml4KG4sIG4pO1xuICAgICAgbGV0IG9ydCA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBILnNldChpLCBqLCB2YWx1ZS5nZXQoaSwgaikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvcnRoZXMobiwgSCwgb3J0LCBWKTtcbiAgICAgIGhxcjIobiwgZSwgZCwgViwgSCk7XG4gICAgfVxuXG4gICAgdGhpcy5uID0gbjtcbiAgICB0aGlzLmUgPSBlO1xuICAgIHRoaXMuZCA9IGQ7XG4gICAgdGhpcy5WID0gVjtcbiAgfVxuXG4gIGdldCByZWFsRWlnZW52YWx1ZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5kKTtcbiAgfVxuXG4gIGdldCBpbWFnaW5hcnlFaWdlbnZhbHVlcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmUpO1xuICB9XG5cbiAgZ2V0IGVpZ2VudmVjdG9yTWF0cml4KCkge1xuICAgIHJldHVybiB0aGlzLlY7XG4gIH1cblxuICBnZXQgZGlhZ29uYWxNYXRyaXgoKSB7XG4gICAgbGV0IG4gPSB0aGlzLm47XG4gICAgbGV0IGUgPSB0aGlzLmU7XG4gICAgbGV0IGQgPSB0aGlzLmQ7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KG4sIG4pO1xuICAgIGxldCBpLCBqO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgWC5zZXQoaSwgaiwgMCk7XG4gICAgICB9XG4gICAgICBYLnNldChpLCBpLCBkW2ldKTtcbiAgICAgIGlmIChlW2ldID4gMCkge1xuICAgICAgICBYLnNldChpLCBpICsgMSwgZVtpXSk7XG4gICAgICB9IGVsc2UgaWYgKGVbaV0gPCAwKSB7XG4gICAgICAgIFguc2V0KGksIGkgLSAxLCBlW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJlZDIobiwgZSwgZCwgVikge1xuICBsZXQgZiwgZywgaCwgaSwgaiwgaywgaGgsIHNjYWxlO1xuXG4gIGZvciAoaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICBkW2pdID0gVi5nZXQobiAtIDEsIGopO1xuICB9XG5cbiAgZm9yIChpID0gbiAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICBzY2FsZSA9IDA7XG4gICAgaCA9IDA7XG4gICAgZm9yIChrID0gMDsgayA8IGk7IGsrKykge1xuICAgICAgc2NhbGUgPSBzY2FsZSArIE1hdGguYWJzKGRba10pO1xuICAgIH1cblxuICAgIGlmIChzY2FsZSA9PT0gMCkge1xuICAgICAgZVtpXSA9IGRbaSAtIDFdO1xuICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykge1xuICAgICAgICBkW2pdID0gVi5nZXQoaSAtIDEsIGopO1xuICAgICAgICBWLnNldChpLCBqLCAwKTtcbiAgICAgICAgVi5zZXQoaiwgaSwgMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoayA9IDA7IGsgPCBpOyBrKyspIHtcbiAgICAgICAgZFtrXSAvPSBzY2FsZTtcbiAgICAgICAgaCArPSBkW2tdICogZFtrXTtcbiAgICAgIH1cblxuICAgICAgZiA9IGRbaSAtIDFdO1xuICAgICAgZyA9IE1hdGguc3FydChoKTtcbiAgICAgIGlmIChmID4gMCkge1xuICAgICAgICBnID0gLWc7XG4gICAgICB9XG5cbiAgICAgIGVbaV0gPSBzY2FsZSAqIGc7XG4gICAgICBoID0gaCAtIGYgKiBnO1xuICAgICAgZFtpIC0gMV0gPSBmIC0gZztcbiAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHtcbiAgICAgICAgZVtqXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHtcbiAgICAgICAgZiA9IGRbal07XG4gICAgICAgIFYuc2V0KGosIGksIGYpO1xuICAgICAgICBnID0gZVtqXSArIFYuZ2V0KGosIGopICogZjtcbiAgICAgICAgZm9yIChrID0gaiArIDE7IGsgPD0gaSAtIDE7IGsrKykge1xuICAgICAgICAgIGcgKz0gVi5nZXQoaywgaikgKiBkW2tdO1xuICAgICAgICAgIGVba10gKz0gVi5nZXQoaywgaikgKiBmO1xuICAgICAgICB9XG4gICAgICAgIGVbal0gPSBnO1xuICAgICAgfVxuXG4gICAgICBmID0gMDtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHtcbiAgICAgICAgZVtqXSAvPSBoO1xuICAgICAgICBmICs9IGVbal0gKiBkW2pdO1xuICAgICAgfVxuXG4gICAgICBoaCA9IGYgLyAoaCArIGgpO1xuICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykge1xuICAgICAgICBlW2pdIC09IGhoICogZFtqXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykge1xuICAgICAgICBmID0gZFtqXTtcbiAgICAgICAgZyA9IGVbal07XG4gICAgICAgIGZvciAoayA9IGo7IGsgPD0gaSAtIDE7IGsrKykge1xuICAgICAgICAgIFYuc2V0KGssIGosIFYuZ2V0KGssIGopIC0gKGYgKiBlW2tdICsgZyAqIGRba10pKTtcbiAgICAgICAgfVxuICAgICAgICBkW2pdID0gVi5nZXQoaSAtIDEsIGopO1xuICAgICAgICBWLnNldChpLCBqLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZFtpXSA9IGg7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykge1xuICAgIFYuc2V0KG4gLSAxLCBpLCBWLmdldChpLCBpKSk7XG4gICAgVi5zZXQoaSwgaSwgMSk7XG4gICAgaCA9IGRbaSArIDFdO1xuICAgIGlmIChoICE9PSAwKSB7XG4gICAgICBmb3IgKGsgPSAwOyBrIDw9IGk7IGsrKykge1xuICAgICAgICBkW2tdID0gVi5nZXQoaywgaSArIDEpIC8gaDtcbiAgICAgIH1cblxuICAgICAgZm9yIChqID0gMDsgaiA8PSBpOyBqKyspIHtcbiAgICAgICAgZyA9IDA7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPD0gaTsgaysrKSB7XG4gICAgICAgICAgZyArPSBWLmdldChrLCBpICsgMSkgKiBWLmdldChrLCBqKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGsgPSAwOyBrIDw9IGk7IGsrKykge1xuICAgICAgICAgIFYuc2V0KGssIGosIFYuZ2V0KGssIGopIC0gZyAqIGRba10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChrID0gMDsgayA8PSBpOyBrKyspIHtcbiAgICAgIFYuc2V0KGssIGkgKyAxLCAwKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgZFtqXSA9IFYuZ2V0KG4gLSAxLCBqKTtcbiAgICBWLnNldChuIC0gMSwgaiwgMCk7XG4gIH1cblxuICBWLnNldChuIC0gMSwgbiAtIDEsIDEpO1xuICBlWzBdID0gMDtcbn1cblxuZnVuY3Rpb24gdHFsMihuLCBlLCBkLCBWKSB7XG4gIGxldCBnLCBoLCBpLCBqLCBrLCBsLCBtLCBwLCByLCBkbDEsIGMsIGMyLCBjMywgZWwxLCBzLCBzMiwgaXRlcjtcblxuICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSB7XG4gICAgZVtpIC0gMV0gPSBlW2ldO1xuICB9XG5cbiAgZVtuIC0gMV0gPSAwO1xuXG4gIGxldCBmID0gMDtcbiAgbGV0IHRzdDEgPSAwO1xuICBsZXQgZXBzID0gTnVtYmVyLkVQU0lMT047XG5cbiAgZm9yIChsID0gMDsgbCA8IG47IGwrKykge1xuICAgIHRzdDEgPSBNYXRoLm1heCh0c3QxLCBNYXRoLmFicyhkW2xdKSArIE1hdGguYWJzKGVbbF0pKTtcbiAgICBtID0gbDtcbiAgICB3aGlsZSAobSA8IG4pIHtcbiAgICAgIGlmIChNYXRoLmFicyhlW21dKSA8PSBlcHMgKiB0c3QxKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbSsrO1xuICAgIH1cblxuICAgIGlmIChtID4gbCkge1xuICAgICAgaXRlciA9IDA7XG4gICAgICBkbyB7XG4gICAgICAgIGl0ZXIgPSBpdGVyICsgMTtcblxuICAgICAgICBnID0gZFtsXTtcbiAgICAgICAgcCA9IChkW2wgKyAxXSAtIGcpIC8gKDIgKiBlW2xdKTtcbiAgICAgICAgciA9IGh5cG90ZW51c2UocCwgMSk7XG4gICAgICAgIGlmIChwIDwgMCkge1xuICAgICAgICAgIHIgPSAtcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRbbF0gPSBlW2xdIC8gKHAgKyByKTtcbiAgICAgICAgZFtsICsgMV0gPSBlW2xdICogKHAgKyByKTtcbiAgICAgICAgZGwxID0gZFtsICsgMV07XG4gICAgICAgIGggPSBnIC0gZFtsXTtcbiAgICAgICAgZm9yIChpID0gbCArIDI7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBkW2ldIC09IGg7XG4gICAgICAgIH1cblxuICAgICAgICBmID0gZiArIGg7XG5cbiAgICAgICAgcCA9IGRbbV07XG4gICAgICAgIGMgPSAxO1xuICAgICAgICBjMiA9IGM7XG4gICAgICAgIGMzID0gYztcbiAgICAgICAgZWwxID0gZVtsICsgMV07XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBzMiA9IDA7XG4gICAgICAgIGZvciAoaSA9IG0gLSAxOyBpID49IGw7IGktLSkge1xuICAgICAgICAgIGMzID0gYzI7XG4gICAgICAgICAgYzIgPSBjO1xuICAgICAgICAgIHMyID0gcztcbiAgICAgICAgICBnID0gYyAqIGVbaV07XG4gICAgICAgICAgaCA9IGMgKiBwO1xuICAgICAgICAgIHIgPSBoeXBvdGVudXNlKHAsIGVbaV0pO1xuICAgICAgICAgIGVbaSArIDFdID0gcyAqIHI7XG4gICAgICAgICAgcyA9IGVbaV0gLyByO1xuICAgICAgICAgIGMgPSBwIC8gcjtcbiAgICAgICAgICBwID0gYyAqIGRbaV0gLSBzICogZztcbiAgICAgICAgICBkW2kgKyAxXSA9IGggKyBzICogKGMgKiBnICsgcyAqIGRbaV0pO1xuXG4gICAgICAgICAgZm9yIChrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICAgICAgaCA9IFYuZ2V0KGssIGkgKyAxKTtcbiAgICAgICAgICAgIFYuc2V0KGssIGkgKyAxLCBzICogVi5nZXQoaywgaSkgKyBjICogaCk7XG4gICAgICAgICAgICBWLnNldChrLCBpLCBjICogVi5nZXQoaywgaSkgLSBzICogaCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcCA9ICgtcyAqIHMyICogYzMgKiBlbDEgKiBlW2xdKSAvIGRsMTtcbiAgICAgICAgZVtsXSA9IHMgKiBwO1xuICAgICAgICBkW2xdID0gYyAqIHA7XG4gICAgICB9IHdoaWxlIChNYXRoLmFicyhlW2xdKSA+IGVwcyAqIHRzdDEpO1xuICAgIH1cbiAgICBkW2xdID0gZFtsXSArIGY7XG4gICAgZVtsXSA9IDA7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykge1xuICAgIGsgPSBpO1xuICAgIHAgPSBkW2ldO1xuICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICBpZiAoZFtqXSA8IHApIHtcbiAgICAgICAgayA9IGo7XG4gICAgICAgIHAgPSBkW2pdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChrICE9PSBpKSB7XG4gICAgICBkW2tdID0gZFtpXTtcbiAgICAgIGRbaV0gPSBwO1xuICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBwID0gVi5nZXQoaiwgaSk7XG4gICAgICAgIFYuc2V0KGosIGksIFYuZ2V0KGosIGspKTtcbiAgICAgICAgVi5zZXQoaiwgaywgcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG9ydGhlcyhuLCBILCBvcnQsIFYpIHtcbiAgbGV0IGxvdyA9IDA7XG4gIGxldCBoaWdoID0gbiAtIDE7XG4gIGxldCBmLCBnLCBoLCBpLCBqLCBtO1xuICBsZXQgc2NhbGU7XG5cbiAgZm9yIChtID0gbG93ICsgMTsgbSA8PSBoaWdoIC0gMTsgbSsrKSB7XG4gICAgc2NhbGUgPSAwO1xuICAgIGZvciAoaSA9IG07IGkgPD0gaGlnaDsgaSsrKSB7XG4gICAgICBzY2FsZSA9IHNjYWxlICsgTWF0aC5hYnMoSC5nZXQoaSwgbSAtIDEpKTtcbiAgICB9XG5cbiAgICBpZiAoc2NhbGUgIT09IDApIHtcbiAgICAgIGggPSAwO1xuICAgICAgZm9yIChpID0gaGlnaDsgaSA+PSBtOyBpLS0pIHtcbiAgICAgICAgb3J0W2ldID0gSC5nZXQoaSwgbSAtIDEpIC8gc2NhbGU7XG4gICAgICAgIGggKz0gb3J0W2ldICogb3J0W2ldO1xuICAgICAgfVxuXG4gICAgICBnID0gTWF0aC5zcXJ0KGgpO1xuICAgICAgaWYgKG9ydFttXSA+IDApIHtcbiAgICAgICAgZyA9IC1nO1xuICAgICAgfVxuXG4gICAgICBoID0gaCAtIG9ydFttXSAqIGc7XG4gICAgICBvcnRbbV0gPSBvcnRbbV0gLSBnO1xuXG4gICAgICBmb3IgKGogPSBtOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGYgPSAwO1xuICAgICAgICBmb3IgKGkgPSBoaWdoOyBpID49IG07IGktLSkge1xuICAgICAgICAgIGYgKz0gb3J0W2ldICogSC5nZXQoaSwgaik7XG4gICAgICAgIH1cblxuICAgICAgICBmID0gZiAvIGg7XG4gICAgICAgIGZvciAoaSA9IG07IGkgPD0gaGlnaDsgaSsrKSB7XG4gICAgICAgICAgSC5zZXQoaSwgaiwgSC5nZXQoaSwgaikgLSBmICogb3J0W2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDw9IGhpZ2g7IGkrKykge1xuICAgICAgICBmID0gMDtcbiAgICAgICAgZm9yIChqID0gaGlnaDsgaiA+PSBtOyBqLS0pIHtcbiAgICAgICAgICBmICs9IG9ydFtqXSAqIEguZ2V0KGksIGopO1xuICAgICAgICB9XG5cbiAgICAgICAgZiA9IGYgLyBoO1xuICAgICAgICBmb3IgKGogPSBtOyBqIDw9IGhpZ2g7IGorKykge1xuICAgICAgICAgIEguc2V0KGksIGosIEguZ2V0KGksIGopIC0gZiAqIG9ydFtqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb3J0W21dID0gc2NhbGUgKiBvcnRbbV07XG4gICAgICBILnNldChtLCBtIC0gMSwgc2NhbGUgKiBnKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZm9yIChqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgVi5zZXQoaSwgaiwgaSA9PT0gaiA/IDEgOiAwKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKG0gPSBoaWdoIC0gMTsgbSA+PSBsb3cgKyAxOyBtLS0pIHtcbiAgICBpZiAoSC5nZXQobSwgbSAtIDEpICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSBtICsgMTsgaSA8PSBoaWdoOyBpKyspIHtcbiAgICAgICAgb3J0W2ldID0gSC5nZXQoaSwgbSAtIDEpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGogPSBtOyBqIDw9IGhpZ2g7IGorKykge1xuICAgICAgICBnID0gMDtcbiAgICAgICAgZm9yIChpID0gbTsgaSA8PSBoaWdoOyBpKyspIHtcbiAgICAgICAgICBnICs9IG9ydFtpXSAqIFYuZ2V0KGksIGopO1xuICAgICAgICB9XG5cbiAgICAgICAgZyA9IGcgLyBvcnRbbV0gLyBILmdldChtLCBtIC0gMSk7XG4gICAgICAgIGZvciAoaSA9IG07IGkgPD0gaGlnaDsgaSsrKSB7XG4gICAgICAgICAgVi5zZXQoaSwgaiwgVi5nZXQoaSwgaikgKyBnICogb3J0W2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBocXIyKG5uLCBlLCBkLCBWLCBIKSB7XG4gIGxldCBuID0gbm4gLSAxO1xuICBsZXQgbG93ID0gMDtcbiAgbGV0IGhpZ2ggPSBubiAtIDE7XG4gIGxldCBlcHMgPSBOdW1iZXIuRVBTSUxPTjtcbiAgbGV0IGV4c2hpZnQgPSAwO1xuICBsZXQgbm9ybSA9IDA7XG4gIGxldCBwID0gMDtcbiAgbGV0IHEgPSAwO1xuICBsZXQgciA9IDA7XG4gIGxldCBzID0gMDtcbiAgbGV0IHogPSAwO1xuICBsZXQgaXRlciA9IDA7XG4gIGxldCBpLCBqLCBrLCBsLCBtLCB0LCB3LCB4LCB5O1xuICBsZXQgcmEsIHNhLCB2ciwgdmk7XG4gIGxldCBub3RsYXN0LCBjZGl2cmVzO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBubjsgaSsrKSB7XG4gICAgaWYgKGkgPCBsb3cgfHwgaSA+IGhpZ2gpIHtcbiAgICAgIGRbaV0gPSBILmdldChpLCBpKTtcbiAgICAgIGVbaV0gPSAwO1xuICAgIH1cblxuICAgIGZvciAoaiA9IE1hdGgubWF4KGkgLSAxLCAwKTsgaiA8IG5uOyBqKyspIHtcbiAgICAgIG5vcm0gPSBub3JtICsgTWF0aC5hYnMoSC5nZXQoaSwgaikpO1xuICAgIH1cbiAgfVxuXG4gIHdoaWxlIChuID49IGxvdykge1xuICAgIGwgPSBuO1xuICAgIHdoaWxlIChsID4gbG93KSB7XG4gICAgICBzID0gTWF0aC5hYnMoSC5nZXQobCAtIDEsIGwgLSAxKSkgKyBNYXRoLmFicyhILmdldChsLCBsKSk7XG4gICAgICBpZiAocyA9PT0gMCkge1xuICAgICAgICBzID0gbm9ybTtcbiAgICAgIH1cbiAgICAgIGlmIChNYXRoLmFicyhILmdldChsLCBsIC0gMSkpIDwgZXBzICogcykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGwtLTtcbiAgICB9XG5cbiAgICBpZiAobCA9PT0gbikge1xuICAgICAgSC5zZXQobiwgbiwgSC5nZXQobiwgbikgKyBleHNoaWZ0KTtcbiAgICAgIGRbbl0gPSBILmdldChuLCBuKTtcbiAgICAgIGVbbl0gPSAwO1xuICAgICAgbi0tO1xuICAgICAgaXRlciA9IDA7XG4gICAgfSBlbHNlIGlmIChsID09PSBuIC0gMSkge1xuICAgICAgdyA9IEguZ2V0KG4sIG4gLSAxKSAqIEguZ2V0KG4gLSAxLCBuKTtcbiAgICAgIHAgPSAoSC5nZXQobiAtIDEsIG4gLSAxKSAtIEguZ2V0KG4sIG4pKSAvIDI7XG4gICAgICBxID0gcCAqIHAgKyB3O1xuICAgICAgeiA9IE1hdGguc3FydChNYXRoLmFicyhxKSk7XG4gICAgICBILnNldChuLCBuLCBILmdldChuLCBuKSArIGV4c2hpZnQpO1xuICAgICAgSC5zZXQobiAtIDEsIG4gLSAxLCBILmdldChuIC0gMSwgbiAtIDEpICsgZXhzaGlmdCk7XG4gICAgICB4ID0gSC5nZXQobiwgbik7XG5cbiAgICAgIGlmIChxID49IDApIHtcbiAgICAgICAgeiA9IHAgPj0gMCA/IHAgKyB6IDogcCAtIHo7XG4gICAgICAgIGRbbiAtIDFdID0geCArIHo7XG4gICAgICAgIGRbbl0gPSBkW24gLSAxXTtcbiAgICAgICAgaWYgKHogIT09IDApIHtcbiAgICAgICAgICBkW25dID0geCAtIHcgLyB6O1xuICAgICAgICB9XG4gICAgICAgIGVbbiAtIDFdID0gMDtcbiAgICAgICAgZVtuXSA9IDA7XG4gICAgICAgIHggPSBILmdldChuLCBuIC0gMSk7XG4gICAgICAgIHMgPSBNYXRoLmFicyh4KSArIE1hdGguYWJzKHopO1xuICAgICAgICBwID0geCAvIHM7XG4gICAgICAgIHEgPSB6IC8gcztcbiAgICAgICAgciA9IE1hdGguc3FydChwICogcCArIHEgKiBxKTtcbiAgICAgICAgcCA9IHAgLyByO1xuICAgICAgICBxID0gcSAvIHI7XG5cbiAgICAgICAgZm9yIChqID0gbiAtIDE7IGogPCBubjsgaisrKSB7XG4gICAgICAgICAgeiA9IEguZ2V0KG4gLSAxLCBqKTtcbiAgICAgICAgICBILnNldChuIC0gMSwgaiwgcSAqIHogKyBwICogSC5nZXQobiwgaikpO1xuICAgICAgICAgIEguc2V0KG4sIGosIHEgKiBILmdldChuLCBqKSAtIHAgKiB6KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgaSsrKSB7XG4gICAgICAgICAgeiA9IEguZ2V0KGksIG4gLSAxKTtcbiAgICAgICAgICBILnNldChpLCBuIC0gMSwgcSAqIHogKyBwICogSC5nZXQoaSwgbikpO1xuICAgICAgICAgIEguc2V0KGksIG4sIHEgKiBILmdldChpLCBuKSAtIHAgKiB6KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcbiAgICAgICAgICB6ID0gVi5nZXQoaSwgbiAtIDEpO1xuICAgICAgICAgIFYuc2V0KGksIG4gLSAxLCBxICogeiArIHAgKiBWLmdldChpLCBuKSk7XG4gICAgICAgICAgVi5zZXQoaSwgbiwgcSAqIFYuZ2V0KGksIG4pIC0gcCAqIHopO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkW24gLSAxXSA9IHggKyBwO1xuICAgICAgICBkW25dID0geCArIHA7XG4gICAgICAgIGVbbiAtIDFdID0gejtcbiAgICAgICAgZVtuXSA9IC16O1xuICAgICAgfVxuXG4gICAgICBuID0gbiAtIDI7XG4gICAgICBpdGVyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IEguZ2V0KG4sIG4pO1xuICAgICAgeSA9IDA7XG4gICAgICB3ID0gMDtcbiAgICAgIGlmIChsIDwgbikge1xuICAgICAgICB5ID0gSC5nZXQobiAtIDEsIG4gLSAxKTtcbiAgICAgICAgdyA9IEguZ2V0KG4sIG4gLSAxKSAqIEguZ2V0KG4gLSAxLCBuKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZXIgPT09IDEwKSB7XG4gICAgICAgIGV4c2hpZnQgKz0geDtcbiAgICAgICAgZm9yIChpID0gbG93OyBpIDw9IG47IGkrKykge1xuICAgICAgICAgIEguc2V0KGksIGksIEguZ2V0KGksIGkpIC0geCk7XG4gICAgICAgIH1cbiAgICAgICAgcyA9IE1hdGguYWJzKEguZ2V0KG4sIG4gLSAxKSkgKyBNYXRoLmFicyhILmdldChuIC0gMSwgbiAtIDIpKTtcbiAgICAgICAgeCA9IHkgPSAwLjc1ICogcztcbiAgICAgICAgdyA9IC0wLjQzNzUgKiBzICogcztcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZXIgPT09IDMwKSB7XG4gICAgICAgIHMgPSAoeSAtIHgpIC8gMjtcbiAgICAgICAgcyA9IHMgKiBzICsgdztcbiAgICAgICAgaWYgKHMgPiAwKSB7XG4gICAgICAgICAgcyA9IE1hdGguc3FydChzKTtcbiAgICAgICAgICBpZiAoeSA8IHgpIHtcbiAgICAgICAgICAgIHMgPSAtcztcbiAgICAgICAgICB9XG4gICAgICAgICAgcyA9IHggLSB3IC8gKCh5IC0geCkgLyAyICsgcyk7XG4gICAgICAgICAgZm9yIChpID0gbG93OyBpIDw9IG47IGkrKykge1xuICAgICAgICAgICAgSC5zZXQoaSwgaSwgSC5nZXQoaSwgaSkgLSBzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXhzaGlmdCArPSBzO1xuICAgICAgICAgIHggPSB5ID0gdyA9IDAuOTY0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGl0ZXIgPSBpdGVyICsgMTtcblxuICAgICAgbSA9IG4gLSAyO1xuICAgICAgd2hpbGUgKG0gPj0gbCkge1xuICAgICAgICB6ID0gSC5nZXQobSwgbSk7XG4gICAgICAgIHIgPSB4IC0gejtcbiAgICAgICAgcyA9IHkgLSB6O1xuICAgICAgICBwID0gKHIgKiBzIC0gdykgLyBILmdldChtICsgMSwgbSkgKyBILmdldChtLCBtICsgMSk7XG4gICAgICAgIHEgPSBILmdldChtICsgMSwgbSArIDEpIC0geiAtIHIgLSBzO1xuICAgICAgICByID0gSC5nZXQobSArIDIsIG0gKyAxKTtcbiAgICAgICAgcyA9IE1hdGguYWJzKHApICsgTWF0aC5hYnMocSkgKyBNYXRoLmFicyhyKTtcbiAgICAgICAgcCA9IHAgLyBzO1xuICAgICAgICBxID0gcSAvIHM7XG4gICAgICAgIHIgPSByIC8gcztcbiAgICAgICAgaWYgKG0gPT09IGwpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgTWF0aC5hYnMoSC5nZXQobSwgbSAtIDEpKSAqIChNYXRoLmFicyhxKSArIE1hdGguYWJzKHIpKSA8XG4gICAgICAgICAgZXBzICpcbiAgICAgICAgICAgIChNYXRoLmFicyhwKSAqXG4gICAgICAgICAgICAgIChNYXRoLmFicyhILmdldChtIC0gMSwgbSAtIDEpKSArXG4gICAgICAgICAgICAgICAgTWF0aC5hYnMoeikgK1xuICAgICAgICAgICAgICAgIE1hdGguYWJzKEguZ2V0KG0gKyAxLCBtICsgMSkpKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbS0tO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSBtICsgMjsgaSA8PSBuOyBpKyspIHtcbiAgICAgICAgSC5zZXQoaSwgaSAtIDIsIDApO1xuICAgICAgICBpZiAoaSA+IG0gKyAyKSB7XG4gICAgICAgICAgSC5zZXQoaSwgaSAtIDMsIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoayA9IG07IGsgPD0gbiAtIDE7IGsrKykge1xuICAgICAgICBub3RsYXN0ID0gayAhPT0gbiAtIDE7XG4gICAgICAgIGlmIChrICE9PSBtKSB7XG4gICAgICAgICAgcCA9IEguZ2V0KGssIGsgLSAxKTtcbiAgICAgICAgICBxID0gSC5nZXQoayArIDEsIGsgLSAxKTtcbiAgICAgICAgICByID0gbm90bGFzdCA/IEguZ2V0KGsgKyAyLCBrIC0gMSkgOiAwO1xuICAgICAgICAgIHggPSBNYXRoLmFicyhwKSArIE1hdGguYWJzKHEpICsgTWF0aC5hYnMocik7XG4gICAgICAgICAgaWYgKHggIT09IDApIHtcbiAgICAgICAgICAgIHAgPSBwIC8geDtcbiAgICAgICAgICAgIHEgPSBxIC8geDtcbiAgICAgICAgICAgIHIgPSByIC8geDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoeCA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcyA9IE1hdGguc3FydChwICogcCArIHEgKiBxICsgciAqIHIpO1xuICAgICAgICBpZiAocCA8IDApIHtcbiAgICAgICAgICBzID0gLXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocyAhPT0gMCkge1xuICAgICAgICAgIGlmIChrICE9PSBtKSB7XG4gICAgICAgICAgICBILnNldChrLCBrIC0gMSwgLXMgKiB4KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGwgIT09IG0pIHtcbiAgICAgICAgICAgIEguc2V0KGssIGsgLSAxLCAtSC5nZXQoaywgayAtIDEpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwID0gcCArIHM7XG4gICAgICAgICAgeCA9IHAgLyBzO1xuICAgICAgICAgIHkgPSBxIC8gcztcbiAgICAgICAgICB6ID0gciAvIHM7XG4gICAgICAgICAgcSA9IHEgLyBwO1xuICAgICAgICAgIHIgPSByIC8gcDtcblxuICAgICAgICAgIGZvciAoaiA9IGs7IGogPCBubjsgaisrKSB7XG4gICAgICAgICAgICBwID0gSC5nZXQoaywgaikgKyBxICogSC5nZXQoayArIDEsIGopO1xuICAgICAgICAgICAgaWYgKG5vdGxhc3QpIHtcbiAgICAgICAgICAgICAgcCA9IHAgKyByICogSC5nZXQoayArIDIsIGopO1xuICAgICAgICAgICAgICBILnNldChrICsgMiwgaiwgSC5nZXQoayArIDIsIGopIC0gcCAqIHopO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBILnNldChrLCBqLCBILmdldChrLCBqKSAtIHAgKiB4KTtcbiAgICAgICAgICAgIEguc2V0KGsgKyAxLCBqLCBILmdldChrICsgMSwgaikgLSBwICogeSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBNYXRoLm1pbihuLCBrICsgMyk7IGkrKykge1xuICAgICAgICAgICAgcCA9IHggKiBILmdldChpLCBrKSArIHkgKiBILmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICBpZiAobm90bGFzdCkge1xuICAgICAgICAgICAgICBwID0gcCArIHogKiBILmdldChpLCBrICsgMik7XG4gICAgICAgICAgICAgIEguc2V0KGksIGsgKyAyLCBILmdldChpLCBrICsgMikgLSBwICogcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEguc2V0KGksIGssIEguZ2V0KGksIGspIC0gcCk7XG4gICAgICAgICAgICBILnNldChpLCBrICsgMSwgSC5nZXQoaSwgayArIDEpIC0gcCAqIHEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcbiAgICAgICAgICAgIHAgPSB4ICogVi5nZXQoaSwgaykgKyB5ICogVi5nZXQoaSwgayArIDEpO1xuICAgICAgICAgICAgaWYgKG5vdGxhc3QpIHtcbiAgICAgICAgICAgICAgcCA9IHAgKyB6ICogVi5nZXQoaSwgayArIDIpO1xuICAgICAgICAgICAgICBWLnNldChpLCBrICsgMiwgVi5nZXQoaSwgayArIDIpIC0gcCAqIHIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBWLnNldChpLCBrLCBWLmdldChpLCBrKSAtIHApO1xuICAgICAgICAgICAgVi5zZXQoaSwgayArIDEsIFYuZ2V0KGksIGsgKyAxKSAtIHAgKiBxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobm9ybSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAobiA9IG5uIC0gMTsgbiA+PSAwOyBuLS0pIHtcbiAgICBwID0gZFtuXTtcbiAgICBxID0gZVtuXTtcblxuICAgIGlmIChxID09PSAwKSB7XG4gICAgICBsID0gbjtcbiAgICAgIEguc2V0KG4sIG4sIDEpO1xuICAgICAgZm9yIChpID0gbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHcgPSBILmdldChpLCBpKSAtIHA7XG4gICAgICAgIHIgPSAwO1xuICAgICAgICBmb3IgKGogPSBsOyBqIDw9IG47IGorKykge1xuICAgICAgICAgIHIgPSByICsgSC5nZXQoaSwgaikgKiBILmdldChqLCBuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlW2ldIDwgMCkge1xuICAgICAgICAgIHogPSB3O1xuICAgICAgICAgIHMgPSByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGwgPSBpO1xuICAgICAgICAgIGlmIChlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBILnNldChpLCBuLCB3ICE9PSAwID8gLXIgLyB3IDogLXIgLyAoZXBzICogbm9ybSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB4ID0gSC5nZXQoaSwgaSArIDEpO1xuICAgICAgICAgICAgeSA9IEguZ2V0KGkgKyAxLCBpKTtcbiAgICAgICAgICAgIHEgPSAoZFtpXSAtIHApICogKGRbaV0gLSBwKSArIGVbaV0gKiBlW2ldO1xuICAgICAgICAgICAgdCA9ICh4ICogcyAtIHogKiByKSAvIHE7XG4gICAgICAgICAgICBILnNldChpLCBuLCB0KTtcbiAgICAgICAgICAgIEguc2V0KFxuICAgICAgICAgICAgICBpICsgMSxcbiAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgTWF0aC5hYnMoeCkgPiBNYXRoLmFicyh6KSA/ICgtciAtIHcgKiB0KSAvIHggOiAoLXMgLSB5ICogdCkgLyB6LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0ID0gTWF0aC5hYnMoSC5nZXQoaSwgbikpO1xuICAgICAgICAgIGlmIChlcHMgKiB0ICogdCA+IDEpIHtcbiAgICAgICAgICAgIGZvciAoaiA9IGk7IGogPD0gbjsgaisrKSB7XG4gICAgICAgICAgICAgIEguc2V0KGosIG4sIEguZ2V0KGosIG4pIC8gdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChxIDwgMCkge1xuICAgICAgbCA9IG4gLSAxO1xuXG4gICAgICBpZiAoTWF0aC5hYnMoSC5nZXQobiwgbiAtIDEpKSA+IE1hdGguYWJzKEguZ2V0KG4gLSAxLCBuKSkpIHtcbiAgICAgICAgSC5zZXQobiAtIDEsIG4gLSAxLCBxIC8gSC5nZXQobiwgbiAtIDEpKTtcbiAgICAgICAgSC5zZXQobiAtIDEsIG4sIC0oSC5nZXQobiwgbikgLSBwKSAvIEguZ2V0KG4sIG4gLSAxKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjZGl2cmVzID0gY2RpdigwLCAtSC5nZXQobiAtIDEsIG4pLCBILmdldChuIC0gMSwgbiAtIDEpIC0gcCwgcSk7XG4gICAgICAgIEguc2V0KG4gLSAxLCBuIC0gMSwgY2RpdnJlc1swXSk7XG4gICAgICAgIEguc2V0KG4gLSAxLCBuLCBjZGl2cmVzWzFdKTtcbiAgICAgIH1cblxuICAgICAgSC5zZXQobiwgbiAtIDEsIDApO1xuICAgICAgSC5zZXQobiwgbiwgMSk7XG4gICAgICBmb3IgKGkgPSBuIC0gMjsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgcmEgPSAwO1xuICAgICAgICBzYSA9IDA7XG4gICAgICAgIGZvciAoaiA9IGw7IGogPD0gbjsgaisrKSB7XG4gICAgICAgICAgcmEgPSByYSArIEguZ2V0KGksIGopICogSC5nZXQoaiwgbiAtIDEpO1xuICAgICAgICAgIHNhID0gc2EgKyBILmdldChpLCBqKSAqIEguZ2V0KGosIG4pO1xuICAgICAgICB9XG5cbiAgICAgICAgdyA9IEguZ2V0KGksIGkpIC0gcDtcblxuICAgICAgICBpZiAoZVtpXSA8IDApIHtcbiAgICAgICAgICB6ID0gdztcbiAgICAgICAgICByID0gcmE7XG4gICAgICAgICAgcyA9IHNhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGwgPSBpO1xuICAgICAgICAgIGlmIChlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBjZGl2cmVzID0gY2RpdigtcmEsIC1zYSwgdywgcSk7XG4gICAgICAgICAgICBILnNldChpLCBuIC0gMSwgY2RpdnJlc1swXSk7XG4gICAgICAgICAgICBILnNldChpLCBuLCBjZGl2cmVzWzFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgeCA9IEguZ2V0KGksIGkgKyAxKTtcbiAgICAgICAgICAgIHkgPSBILmdldChpICsgMSwgaSk7XG4gICAgICAgICAgICB2ciA9IChkW2ldIC0gcCkgKiAoZFtpXSAtIHApICsgZVtpXSAqIGVbaV0gLSBxICogcTtcbiAgICAgICAgICAgIHZpID0gKGRbaV0gLSBwKSAqIDIgKiBxO1xuICAgICAgICAgICAgaWYgKHZyID09PSAwICYmIHZpID09PSAwKSB7XG4gICAgICAgICAgICAgIHZyID1cbiAgICAgICAgICAgICAgICBlcHMgKlxuICAgICAgICAgICAgICAgIG5vcm0gKlxuICAgICAgICAgICAgICAgIChNYXRoLmFicyh3KSArXG4gICAgICAgICAgICAgICAgICBNYXRoLmFicyhxKSArXG4gICAgICAgICAgICAgICAgICBNYXRoLmFicyh4KSArXG4gICAgICAgICAgICAgICAgICBNYXRoLmFicyh5KSArXG4gICAgICAgICAgICAgICAgICBNYXRoLmFicyh6KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjZGl2cmVzID0gY2RpdihcbiAgICAgICAgICAgICAgeCAqIHIgLSB6ICogcmEgKyBxICogc2EsXG4gICAgICAgICAgICAgIHggKiBzIC0geiAqIHNhIC0gcSAqIHJhLFxuICAgICAgICAgICAgICB2cixcbiAgICAgICAgICAgICAgdmksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgSC5zZXQoaSwgbiAtIDEsIGNkaXZyZXNbMF0pO1xuICAgICAgICAgICAgSC5zZXQoaSwgbiwgY2RpdnJlc1sxXSk7XG4gICAgICAgICAgICBpZiAoTWF0aC5hYnMoeCkgPiBNYXRoLmFicyh6KSArIE1hdGguYWJzKHEpKSB7XG4gICAgICAgICAgICAgIEguc2V0KFxuICAgICAgICAgICAgICAgIGkgKyAxLFxuICAgICAgICAgICAgICAgIG4gLSAxLFxuICAgICAgICAgICAgICAgICgtcmEgLSB3ICogSC5nZXQoaSwgbiAtIDEpICsgcSAqIEguZ2V0KGksIG4pKSAvIHgsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIEguc2V0KFxuICAgICAgICAgICAgICAgIGkgKyAxLFxuICAgICAgICAgICAgICAgIG4sXG4gICAgICAgICAgICAgICAgKC1zYSAtIHcgKiBILmdldChpLCBuKSAtIHEgKiBILmdldChpLCBuIC0gMSkpIC8geCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNkaXZyZXMgPSBjZGl2KFxuICAgICAgICAgICAgICAgIC1yIC0geSAqIEguZ2V0KGksIG4gLSAxKSxcbiAgICAgICAgICAgICAgICAtcyAtIHkgKiBILmdldChpLCBuKSxcbiAgICAgICAgICAgICAgICB6LFxuICAgICAgICAgICAgICAgIHEsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIEguc2V0KGkgKyAxLCBuIC0gMSwgY2RpdnJlc1swXSk7XG4gICAgICAgICAgICAgIEguc2V0KGkgKyAxLCBuLCBjZGl2cmVzWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0ID0gTWF0aC5tYXgoTWF0aC5hYnMoSC5nZXQoaSwgbiAtIDEpKSwgTWF0aC5hYnMoSC5nZXQoaSwgbikpKTtcbiAgICAgICAgICBpZiAoZXBzICogdCAqIHQgPiAxKSB7XG4gICAgICAgICAgICBmb3IgKGogPSBpOyBqIDw9IG47IGorKykge1xuICAgICAgICAgICAgICBILnNldChqLCBuIC0gMSwgSC5nZXQoaiwgbiAtIDEpIC8gdCk7XG4gICAgICAgICAgICAgIEguc2V0KGosIG4sIEguZ2V0KGosIG4pIC8gdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IG5uOyBpKyspIHtcbiAgICBpZiAoaSA8IGxvdyB8fCBpID4gaGlnaCkge1xuICAgICAgZm9yIChqID0gaTsgaiA8IG5uOyBqKyspIHtcbiAgICAgICAgVi5zZXQoaSwgaiwgSC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoaiA9IG5uIC0gMTsgaiA+PSBsb3c7IGotLSkge1xuICAgIGZvciAoaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcbiAgICAgIHogPSAwO1xuICAgICAgZm9yIChrID0gbG93OyBrIDw9IE1hdGgubWluKGosIGhpZ2gpOyBrKyspIHtcbiAgICAgICAgeiA9IHogKyBWLmdldChpLCBrKSAqIEguZ2V0KGssIGopO1xuICAgICAgfVxuICAgICAgVi5zZXQoaSwgaiwgeik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNkaXYoeHIsIHhpLCB5ciwgeWkpIHtcbiAgbGV0IHIsIGQ7XG4gIGlmIChNYXRoLmFicyh5cikgPiBNYXRoLmFicyh5aSkpIHtcbiAgICByID0geWkgLyB5cjtcbiAgICBkID0geXIgKyByICogeWk7XG4gICAgcmV0dXJuIFsoeHIgKyByICogeGkpIC8gZCwgKHhpIC0gciAqIHhyKSAvIGRdO1xuICB9IGVsc2Uge1xuICAgIHIgPSB5ciAvIHlpO1xuICAgIGQgPSB5aSArIHIgKiB5cjtcbiAgICByZXR1cm4gWyhyICogeHIgKyB4aSkgLyBkLCAociAqIHhpIC0geHIpIC8gZF07XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/evd.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/lu.js": /*!**************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/lu.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LuDecomposition; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n\n\n\nclass LuDecomposition {\n constructor(matrix) {\n matrix = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(matrix);\n\n let lu = matrix.clone();\n let rows = lu.rows;\n let columns = lu.columns;\n let pivotVector = new Float64Array(rows);\n let pivotSign = 1;\n let i, j, k, p, s, t, v;\n let LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Float64Array(rows);\n\n for (j = 0; j < columns; j++) {\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu.get(i, j);\n }\n\n for (i = 0; i < rows; i++) {\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += lu.get(i, k) * LUcolj[k];\n }\n LUcolj[i] -= s;\n lu.set(i, j, LUcolj[i]);\n }\n\n p = j;\n for (i = j + 1; i < rows; i++) {\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n p = i;\n }\n }\n\n if (p !== j) {\n for (k = 0; k < columns; k++) {\n t = lu.get(p, k);\n lu.set(p, k, lu.get(j, k));\n lu.set(j, k, t);\n }\n\n v = pivotVector[p];\n pivotVector[p] = pivotVector[j];\n pivotVector[j] = v;\n\n pivotSign = -pivotSign;\n }\n\n if (j < rows && lu.get(j, j) !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n }\n\n isSingular() {\n let data = this.LU;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n if (data.get(j, j) === 0) {\n return true;\n }\n }\n return false;\n }\n\n solve(value) {\n value = _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].checkMatrix(value);\n\n let lu = this.LU;\n let rows = lu.rows;\n\n if (rows !== value.rows) {\n throw new Error('Invalid matrix dimensions');\n }\n if (this.isSingular()) {\n throw new Error('LU matrix is singular');\n }\n\n let count = value.columns;\n let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n let columns = lu.columns;\n let i, j, k;\n\n for (k = 0; k < columns; k++) {\n for (i = k + 1; i < columns; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / lu.get(k, k));\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n return X;\n }\n\n get determinant() {\n let data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n let determinant = this.pivotSign;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n determinant *= data.get(j, j);\n }\n return determinant;\n }\n\n get lowerTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i > j) {\n X.set(i, j, data.get(i, j));\n } else if (i === j) {\n X.set(i, j, 1);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get upperTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i <= j) {\n X.set(i, j, data.get(i, j));\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL2x1LmpzP2ZlNDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDdUI7O0FBRXZDO0FBQ2Y7QUFDQSxhQUFhLDZEQUFlOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLFVBQVU7QUFDekI7QUFDQTs7QUFFQTs7QUFFQSxlQUFlLGFBQWE7QUFDNUIsaUJBQWlCLFVBQVU7QUFDM0I7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLCtDQUFNOztBQUVsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLGFBQWE7QUFDNUIscUJBQXFCLGFBQWE7QUFDbEMsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsUUFBUTtBQUNqQyxpQkFBaUIsV0FBVztBQUM1QjtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0NBQU07QUFDdEIsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLGFBQWE7QUFDbEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0NBQU07QUFDdEIsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLGFBQWE7QUFDbEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL2x1LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEx1RGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChtYXRyaXgpO1xuXG4gICAgbGV0IGx1ID0gbWF0cml4LmNsb25lKCk7XG4gICAgbGV0IHJvd3MgPSBsdS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbHUuY29sdW1ucztcbiAgICBsZXQgcGl2b3RWZWN0b3IgPSBuZXcgRmxvYXQ2NEFycmF5KHJvd3MpO1xuICAgIGxldCBwaXZvdFNpZ24gPSAxO1xuICAgIGxldCBpLCBqLCBrLCBwLCBzLCB0LCB2O1xuICAgIGxldCBMVWNvbGosIGttYXg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBwaXZvdFZlY3RvcltpXSA9IGk7XG4gICAgfVxuXG4gICAgTFVjb2xqID0gbmV3IEZsb2F0NjRBcnJheShyb3dzKTtcblxuICAgIGZvciAoaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgTFVjb2xqW2ldID0gbHUuZ2V0KGksIGopO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIGttYXggPSBNYXRoLm1pbihpLCBqKTtcbiAgICAgICAgcyA9IDA7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBrbWF4OyBrKyspIHtcbiAgICAgICAgICBzICs9IGx1LmdldChpLCBrKSAqIExVY29saltrXTtcbiAgICAgICAgfVxuICAgICAgICBMVWNvbGpbaV0gLT0gcztcbiAgICAgICAgbHUuc2V0KGksIGosIExVY29saltpXSk7XG4gICAgICB9XG5cbiAgICAgIHAgPSBqO1xuICAgICAgZm9yIChpID0gaiArIDE7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKExVY29saltpXSkgPiBNYXRoLmFicyhMVWNvbGpbcF0pKSB7XG4gICAgICAgICAgcCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHAgIT09IGopIHtcbiAgICAgICAgZm9yIChrID0gMDsgayA8IGNvbHVtbnM7IGsrKykge1xuICAgICAgICAgIHQgPSBsdS5nZXQocCwgayk7XG4gICAgICAgICAgbHUuc2V0KHAsIGssIGx1LmdldChqLCBrKSk7XG4gICAgICAgICAgbHUuc2V0KGosIGssIHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdiA9IHBpdm90VmVjdG9yW3BdO1xuICAgICAgICBwaXZvdFZlY3RvcltwXSA9IHBpdm90VmVjdG9yW2pdO1xuICAgICAgICBwaXZvdFZlY3RvcltqXSA9IHY7XG5cbiAgICAgICAgcGl2b3RTaWduID0gLXBpdm90U2lnbjtcbiAgICAgIH1cblxuICAgICAgaWYgKGogPCByb3dzICYmIGx1LmdldChqLCBqKSAhPT0gMCkge1xuICAgICAgICBmb3IgKGkgPSBqICsgMTsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgIGx1LnNldChpLCBqLCBsdS5nZXQoaSwgaikgLyBsdS5nZXQoaiwgaikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5MVSA9IGx1O1xuICAgIHRoaXMucGl2b3RWZWN0b3IgPSBwaXZvdFZlY3RvcjtcbiAgICB0aGlzLnBpdm90U2lnbiA9IHBpdm90U2lnbjtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGxldCBjb2wgPSBkYXRhLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2w7IGorKykge1xuICAgICAgaWYgKGRhdGEuZ2V0KGosIGopID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gTWF0cml4LmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBsdSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBsdS5yb3dzO1xuXG4gICAgaWYgKHJvd3MgIT09IHZhbHVlLnJvd3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXRyaXggZGltZW5zaW9ucycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1Npbmd1bGFyKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTFUgbWF0cml4IGlzIHNpbmd1bGFyJyk7XG4gICAgfVxuXG4gICAgbGV0IGNvdW50ID0gdmFsdWUuY29sdW1ucztcbiAgICBsZXQgWCA9IHZhbHVlLnN1Yk1hdHJpeFJvdyh0aGlzLnBpdm90VmVjdG9yLCAwLCBjb3VudCAtIDEpO1xuICAgIGxldCBjb2x1bW5zID0gbHUuY29sdW1ucztcbiAgICBsZXQgaSwgaiwgaztcblxuICAgIGZvciAoayA9IDA7IGsgPCBjb2x1bW5zOyBrKyspIHtcbiAgICAgIGZvciAoaSA9IGsgKyAxOyBpIDwgY29sdW1uczsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIGx1LmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChrID0gY29sdW1ucyAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBYLnNldChrLCBqLCBYLmdldChrLCBqKSAvIGx1LmdldChrLCBrKSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIGx1LmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgZGV0ZXJtaW5hbnQoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGlmICghZGF0YS5pc1NxdWFyZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBtdXN0IGJlIHNxdWFyZScpO1xuICAgIH1cbiAgICBsZXQgZGV0ZXJtaW5hbnQgPSB0aGlzLnBpdm90U2lnbjtcbiAgICBsZXQgY29sID0gZGF0YS5jb2x1bW5zO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sOyBqKyspIHtcbiAgICAgIGRldGVybWluYW50ICo9IGRhdGEuZ2V0KGosIGopO1xuICAgIH1cbiAgICByZXR1cm4gZGV0ZXJtaW5hbnQ7XG4gIH1cblxuICBnZXQgbG93ZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgcm93cyA9IGRhdGEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGRhdGEuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmIChpID4gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIGRhdGEuZ2V0KGksIGopKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgcm93cyA9IGRhdGEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGRhdGEuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmIChpIDw9IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBkYXRhLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgcGl2b3RQZXJtdXRhdGlvblZlY3RvcigpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBpdm90VmVjdG9yKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/lu.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/nipals.js": /*!******************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/nipals.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nipals; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n\n\n\nclass nipals {\n constructor(X, options = {}) {\n X = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(X);\n let { Y } = options;\n const {\n scaleScores = false,\n maxIterations = 1000,\n terminationCriteria = 1e-10,\n } = options;\n\n let u;\n if (Y) {\n if (Array.isArray(Y) && typeof Y[0] === 'number') {\n Y = _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].columnVector(Y);\n } else {\n Y = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(Y);\n }\n if (Y.rows !== X.rows) {\n throw new Error('Y should have the same number of rows as X');\n }\n u = Y.getColumnVector(0);\n } else {\n u = X.getColumnVector(0);\n }\n\n let diff = 1;\n let t, q, w, tOld;\n\n for (\n let counter = 0;\n counter < maxIterations && diff > terminationCriteria;\n counter++\n ) {\n w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n w = w.div(w.norm());\n\n t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n if (counter > 0) {\n diff = t.clone().sub(tOld).pow(2).sum();\n }\n tOld = t.clone();\n\n if (Y) {\n q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n q = q.div(q.norm());\n\n u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n } else {\n u = t;\n }\n }\n\n if (Y) {\n let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n p = p.div(p.norm());\n let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n let yResidual = Y.clone().sub(\n t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n );\n\n this.t = t;\n this.p = p.transpose();\n this.w = w.transpose();\n this.q = q;\n this.u = u;\n this.s = t.transpose().mmul(t);\n this.xResidual = xResidual;\n this.yResidual = yResidual;\n this.betas = residual;\n } else {\n this.w = w.transpose();\n this.s = t.transpose().mmul(t).sqrt();\n if (scaleScores) {\n this.t = t.clone().div(this.s.get(0, 0));\n } else {\n this.t = t;\n }\n this.xResidual = X.sub(t.mmul(w.transpose()));\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL25pcGFscy5qcz9iYjQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ3VCOztBQUV2QztBQUNmLDZCQUE2QjtBQUM3QixRQUFRLDZEQUFlO0FBQ3ZCLFNBQVMsSUFBSTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtDQUFNO0FBQ2xCLE9BQU87QUFDUCxZQUFZLDZEQUFlO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9kYy9uaXBhbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgbmlwYWxzIHtcbiAgY29uc3RydWN0b3IoWCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgWCA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChYKTtcbiAgICBsZXQgeyBZIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHtcbiAgICAgIHNjYWxlU2NvcmVzID0gZmFsc2UsXG4gICAgICBtYXhJdGVyYXRpb25zID0gMTAwMCxcbiAgICAgIHRlcm1pbmF0aW9uQ3JpdGVyaWEgPSAxZS0xMCxcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGxldCB1O1xuICAgIGlmIChZKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShZKSAmJiB0eXBlb2YgWVswXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgWSA9IE1hdHJpeC5jb2x1bW5WZWN0b3IoWSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBZID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KFkpO1xuICAgICAgfVxuICAgICAgaWYgKFkucm93cyAhPT0gWC5yb3dzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygcm93cyBhcyBYJyk7XG4gICAgICB9XG4gICAgICB1ID0gWS5nZXRDb2x1bW5WZWN0b3IoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHUgPSBYLmdldENvbHVtblZlY3RvcigwKTtcbiAgICB9XG5cbiAgICBsZXQgZGlmZiA9IDE7XG4gICAgbGV0IHQsIHEsIHcsIHRPbGQ7XG5cbiAgICBmb3IgKFxuICAgICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgICAgY291bnRlciA8IG1heEl0ZXJhdGlvbnMgJiYgZGlmZiA+IHRlcm1pbmF0aW9uQ3JpdGVyaWE7XG4gICAgICBjb3VudGVyKytcbiAgICApIHtcbiAgICAgIHcgPSBYLnRyYW5zcG9zZSgpLm1tdWwodSkuZGl2KHUudHJhbnNwb3NlKCkubW11bCh1KS5nZXQoMCwgMCkpO1xuICAgICAgdyA9IHcuZGl2KHcubm9ybSgpKTtcblxuICAgICAgdCA9IFgubW11bCh3KS5kaXYody50cmFuc3Bvc2UoKS5tbXVsKHcpLmdldCgwLCAwKSk7XG5cbiAgICAgIGlmIChjb3VudGVyID4gMCkge1xuICAgICAgICBkaWZmID0gdC5jbG9uZSgpLnN1Yih0T2xkKS5wb3coMikuc3VtKCk7XG4gICAgICB9XG4gICAgICB0T2xkID0gdC5jbG9uZSgpO1xuXG4gICAgICBpZiAoWSkge1xuICAgICAgICBxID0gWS50cmFuc3Bvc2UoKS5tbXVsKHQpLmRpdih0LnRyYW5zcG9zZSgpLm1tdWwodCkuZ2V0KDAsIDApKTtcbiAgICAgICAgcSA9IHEuZGl2KHEubm9ybSgpKTtcblxuICAgICAgICB1ID0gWS5tbXVsKHEpLmRpdihxLnRyYW5zcG9zZSgpLm1tdWwocSkuZ2V0KDAsIDApKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHUgPSB0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChZKSB7XG4gICAgICBsZXQgcCA9IFgudHJhbnNwb3NlKCkubW11bCh0KS5kaXYodC50cmFuc3Bvc2UoKS5tbXVsKHQpLmdldCgwLCAwKSk7XG4gICAgICBwID0gcC5kaXYocC5ub3JtKCkpO1xuICAgICAgbGV0IHhSZXNpZHVhbCA9IFguY2xvbmUoKS5zdWIodC5jbG9uZSgpLm1tdWwocC50cmFuc3Bvc2UoKSkpO1xuICAgICAgbGV0IHJlc2lkdWFsID0gdS50cmFuc3Bvc2UoKS5tbXVsKHQpLmRpdih0LnRyYW5zcG9zZSgpLm1tdWwodCkuZ2V0KDAsIDApKTtcbiAgICAgIGxldCB5UmVzaWR1YWwgPSBZLmNsb25lKCkuc3ViKFxuICAgICAgICB0LmNsb25lKCkubXVsUyhyZXNpZHVhbC5nZXQoMCwgMCkpLm1tdWwocS50cmFuc3Bvc2UoKSksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnQgPSB0O1xuICAgICAgdGhpcy5wID0gcC50cmFuc3Bvc2UoKTtcbiAgICAgIHRoaXMudyA9IHcudHJhbnNwb3NlKCk7XG4gICAgICB0aGlzLnEgPSBxO1xuICAgICAgdGhpcy51ID0gdTtcbiAgICAgIHRoaXMucyA9IHQudHJhbnNwb3NlKCkubW11bCh0KTtcbiAgICAgIHRoaXMueFJlc2lkdWFsID0geFJlc2lkdWFsO1xuICAgICAgdGhpcy55UmVzaWR1YWwgPSB5UmVzaWR1YWw7XG4gICAgICB0aGlzLmJldGFzID0gcmVzaWR1YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudyA9IHcudHJhbnNwb3NlKCk7XG4gICAgICB0aGlzLnMgPSB0LnRyYW5zcG9zZSgpLm1tdWwodCkuc3FydCgpO1xuICAgICAgaWYgKHNjYWxlU2NvcmVzKSB7XG4gICAgICAgIHRoaXMudCA9IHQuY2xvbmUoKS5kaXYodGhpcy5zLmdldCgwLCAwKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnQgPSB0O1xuICAgICAgfVxuICAgICAgdGhpcy54UmVzaWR1YWwgPSBYLnN1Yih0Lm1tdWwody50cmFuc3Bvc2UoKSkpO1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/nipals.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/qr.js": /*!**************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/qr.js ***! \**************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return QrDecomposition; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/util.js\");\n\n\n\n\n\nclass QrDecomposition {\n constructor(value) {\n value = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(value);\n\n let qr = value.clone();\n let m = value.rows;\n let n = value.columns;\n let rdiag = new Float64Array(n);\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n let nrm = 0;\n for (i = k; i < m; i++) {\n nrm = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(nrm, qr.get(i, k));\n }\n if (nrm !== 0) {\n if (qr.get(k, k) < 0) {\n nrm = -nrm;\n }\n for (i = k; i < m; i++) {\n qr.set(i, k, qr.get(i, k) / nrm);\n }\n qr.set(k, k, qr.get(k, k) + 1);\n for (j = k + 1; j < n; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * qr.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n rdiag[k] = -nrm;\n }\n\n this.QR = qr;\n this.Rdiag = rdiag;\n }\n\n solve(value) {\n value = _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].checkMatrix(value);\n\n let qr = this.QR;\n let m = qr.rows;\n\n if (value.rows !== m) {\n throw new Error('Matrix row dimensions must agree');\n }\n if (!this.isFullRank()) {\n throw new Error('Matrix is rank deficient');\n }\n\n let count = value.columns;\n let X = value.clone();\n let n = qr.columns;\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n for (j = 0; j < count; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n for (k = n - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n }\n }\n }\n\n return X.subMatrix(0, n - 1, 0, count - 1);\n }\n\n isFullRank() {\n let columns = this.QR.columns;\n for (let i = 0; i < columns; i++) {\n if (this.Rdiag[i] === 0) {\n return false;\n }\n }\n return true;\n }\n\n get upperTriangularMatrix() {\n let qr = this.QR;\n let n = qr.columns;\n let X = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i < j) {\n X.set(i, j, qr.get(i, j));\n } else if (i === j) {\n X.set(i, j, this.Rdiag[i]);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get orthogonalMatrix() {\n let qr = this.QR;\n let rows = qr.rows;\n let columns = qr.columns;\n let X = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](rows, columns);\n let i, j, k, s;\n\n for (k = columns - 1; k >= 0; k--) {\n for (i = 0; i < rows; i++) {\n X.set(i, k, 0);\n }\n X.set(k, k, 1);\n for (j = k; j < columns; j++) {\n if (qr.get(k, k) !== 0) {\n s = 0;\n for (i = k; i < rows; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n\n s = -s / qr.get(k, k);\n\n for (i = k; i < rows; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n }\n return X;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL3FyLmpzPzY5ZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUErQjtBQUN1Qjs7QUFFbEI7O0FBRXJCO0FBQ2Y7QUFDQSxZQUFZLDZEQUFlOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsT0FBTztBQUN0QjtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGNBQWMsd0RBQVU7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0EscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksK0NBQU07O0FBRWxCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsT0FBTztBQUN0QixpQkFBaUIsV0FBVztBQUM1QjtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0IsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixhQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0NBQU07QUFDdEI7QUFDQSxlQUFlLE9BQU87QUFDdEIsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0NBQU07QUFDdEI7O0FBRUEseUJBQXlCLFFBQVE7QUFDakMsaUJBQWlCLFVBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGFBQWE7QUFDOUI7QUFDQTtBQUNBLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvZGMvcXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuaW1wb3J0IHsgaHlwb3RlbnVzZSB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFFyRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IHFyID0gdmFsdWUuY2xvbmUoKTtcbiAgICBsZXQgbSA9IHZhbHVlLnJvd3M7XG4gICAgbGV0IG4gPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCByZGlhZyA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICBsZXQgbnJtID0gMDtcbiAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgbnJtID0gaHlwb3RlbnVzZShucm0sIHFyLmdldChpLCBrKSk7XG4gICAgICB9XG4gICAgICBpZiAobnJtICE9PSAwKSB7XG4gICAgICAgIGlmIChxci5nZXQoaywgaykgPCAwKSB7XG4gICAgICAgICAgbnJtID0gLW5ybTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgcXIuc2V0KGksIGssIHFyLmdldChpLCBrKSAvIG5ybSk7XG4gICAgICAgIH1cbiAgICAgICAgcXIuc2V0KGssIGssIHFyLmdldChrLCBrKSArIDEpO1xuICAgICAgICBmb3IgKGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgIHMgPSAwO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogcXIuZ2V0KGksIGopO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcXIuc2V0KGksIGosIHFyLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmRpYWdba10gPSAtbnJtO1xuICAgIH1cblxuICAgIHRoaXMuUVIgPSBxcjtcbiAgICB0aGlzLlJkaWFnID0gcmRpYWc7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gTWF0cml4LmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IG0gPSBxci5yb3dzO1xuXG4gICAgaWYgKHZhbHVlLnJvd3MgIT09IG0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IHJvdyBkaW1lbnNpb25zIG11c3QgYWdyZWUnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzRnVsbFJhbmsoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggaXMgcmFuayBkZWZpY2llbnQnKTtcbiAgICB9XG5cbiAgICBsZXQgY291bnQgPSB2YWx1ZS5jb2x1bW5zO1xuICAgIGxldCBYID0gdmFsdWUuY2xvbmUoKTtcbiAgICBsZXQgbiA9IHFyLmNvbHVtbnM7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBzID0gMDtcbiAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogWC5nZXQoaSwgaik7XG4gICAgICAgIH1cbiAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGsgPSBuIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIFguc2V0KGssIGosIFguZ2V0KGssIGopIC8gdGhpcy5SZGlhZ1trXSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWC5zdWJNYXRyaXgoMCwgbiAtIDEsIDAsIGNvdW50IC0gMSk7XG4gIH1cblxuICBpc0Z1bGxSYW5rKCkge1xuICAgIGxldCBjb2x1bW5zID0gdGhpcy5RUi5jb2x1bW5zO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5SZGlhZ1tpXSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgcXIgPSB0aGlzLlFSO1xuICAgIGxldCBuID0gcXIuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgobiwgbik7XG4gICAgbGV0IGksIGo7XG4gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICBpZiAoaSA8IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBxci5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCB0aGlzLlJkaWFnW2ldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBYLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxuXG4gIGdldCBvcnRob2dvbmFsTWF0cml4KCkge1xuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IHJvd3MgPSBxci5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gcXIuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgbGV0IGksIGosIGssIHM7XG5cbiAgICBmb3IgKGsgPSBjb2x1bW5zIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgWC5zZXQoaSwgaywgMCk7XG4gICAgICB9XG4gICAgICBYLnNldChrLCBrLCAxKTtcbiAgICAgIGZvciAoaiA9IGs7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHFyLmdldChrLCBrKSAhPT0gMCkge1xuICAgICAgICAgIHMgPSAwO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gcXIuZ2V0KGksIGspICogWC5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuXG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/qr.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js": /*!***************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js ***! \***************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SingularValueDecomposition; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/util.js\");\n\n\n\n\n\nclass SingularValueDecomposition {\n constructor(value, options = {}) {\n value = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(value);\n\n if (value.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let m = value.rows;\n let n = value.columns;\n\n const {\n computeLeftSingularVectors = true,\n computeRightSingularVectors = true,\n autoTranspose = false,\n } = options;\n\n let wantu = Boolean(computeLeftSingularVectors);\n let wantv = Boolean(computeRightSingularVectors);\n\n let swapped = false;\n let a;\n if (m < n) {\n if (!autoTranspose) {\n a = value.clone();\n // eslint-disable-next-line no-console\n console.warn(\n 'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n );\n } else {\n a = value.transpose();\n m = a.rows;\n n = a.columns;\n swapped = true;\n let aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n a = value.clone();\n }\n\n let nu = Math.min(m, n);\n let ni = Math.min(m + 1, n);\n let s = new Float64Array(ni);\n let U = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](m, nu);\n let V = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](n, n);\n\n let e = new Float64Array(n);\n let work = new Float64Array(m);\n\n let si = new Float64Array(ni);\n for (let i = 0; i < ni; i++) si[i] = i;\n\n let nct = Math.min(m - 1, n);\n let nrt = Math.max(0, Math.min(n - 2, m));\n let mrc = Math.max(nct, nrt);\n\n for (let k = 0; k < mrc; k++) {\n if (k < nct) {\n s[k] = 0;\n for (let i = k; i < m; i++) {\n s[k] = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(s[k], a.get(i, k));\n }\n if (s[k] !== 0) {\n if (a.get(k, k) < 0) {\n s[k] = -s[k];\n }\n for (let i = k; i < m; i++) {\n a.set(i, k, a.get(i, k) / s[k]);\n }\n a.set(k, k, a.get(k, k) + 1);\n }\n s[k] = -s[k];\n }\n\n for (let j = k + 1; j < n; j++) {\n if (k < nct && s[k] !== 0) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += a.get(i, k) * a.get(i, j);\n }\n t = -t / a.get(k, k);\n for (let i = k; i < m; i++) {\n a.set(i, j, a.get(i, j) + t * a.get(i, k));\n }\n }\n e[j] = a.get(k, j);\n }\n\n if (wantu && k < nct) {\n for (let i = k; i < m; i++) {\n U.set(i, k, a.get(i, k));\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (let i = k + 1; i < n; i++) {\n e[k] = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(e[k], e[i]);\n }\n if (e[k] !== 0) {\n if (e[k + 1] < 0) {\n e[k] = 0 - e[k];\n }\n for (let i = k + 1; i < n; i++) {\n e[i] /= e[k];\n }\n e[k + 1] += 1;\n }\n e[k] = -e[k];\n if (k + 1 < m && e[k] !== 0) {\n for (let i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < n; j++) {\n work[i] += e[j] * a.get(i, j);\n }\n }\n for (let j = k + 1; j < n; j++) {\n let t = -e[j] / e[k + 1];\n for (let i = k + 1; i < m; i++) {\n a.set(i, j, a.get(i, j) + t * work[i]);\n }\n }\n }\n if (wantv) {\n for (let i = k + 1; i < n; i++) {\n V.set(i, k, e[i]);\n }\n }\n }\n }\n\n let p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = a.get(nct, nct);\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = a.get(nrt, p - 1);\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (let j = nct; j < nu; j++) {\n for (let i = 0; i < m; i++) {\n U.set(i, j, 0);\n }\n U.set(j, j, 1);\n }\n for (let k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (let j = k + 1; j < nu; j++) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += U.get(i, k) * U.get(i, j);\n }\n t = -t / U.get(k, k);\n for (let i = k; i < m; i++) {\n U.set(i, j, U.get(i, j) + t * U.get(i, k));\n }\n }\n for (let i = k; i < m; i++) {\n U.set(i, k, -U.get(i, k));\n }\n U.set(k, k, 1 + U.get(k, k));\n for (let i = 0; i < k - 1; i++) {\n U.set(i, k, 0);\n }\n } else {\n for (let i = 0; i < m; i++) {\n U.set(i, k, 0);\n }\n U.set(k, k, 1);\n }\n }\n }\n\n if (wantv) {\n for (let k = n - 1; k >= 0; k--) {\n if (k < nrt && e[k] !== 0) {\n for (let j = k + 1; j < n; j++) {\n let t = 0;\n for (let i = k + 1; i < n; i++) {\n t += V.get(i, k) * V.get(i, j);\n }\n t = -t / V.get(k + 1, k);\n for (let i = k + 1; i < n; i++) {\n V.set(i, j, V.get(i, j) + t * V.get(i, k));\n }\n }\n }\n for (let i = 0; i < n; i++) {\n V.set(i, k, 0);\n }\n V.set(k, k, 1);\n }\n }\n\n let pp = p - 1;\n let iter = 0;\n let eps = Number.EPSILON;\n while (p > 0) {\n let k, kase;\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n const alpha =\n Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n let ks;\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n let t =\n (ks !== p ? Math.abs(e[ks]) : 0) +\n (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n if (Math.abs(s[ks]) <= eps * t) {\n s[ks] = 0;\n break;\n }\n }\n if (ks === k) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n k = ks;\n }\n }\n\n k++;\n\n switch (kase) {\n case 1: {\n let f = e[p - 2];\n e[p - 2] = 0;\n for (let j = p - 2; j >= k; j--) {\n let t = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n if (j !== k) {\n f = -sn * e[j - 1];\n e[j - 1] = cs * e[j - 1];\n }\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n V.set(i, j, t);\n }\n }\n }\n break;\n }\n case 2: {\n let f = e[k - 1];\n e[k - 1] = 0;\n for (let j = k; j < p; j++) {\n let t = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n U.set(i, j, t);\n }\n }\n }\n break;\n }\n case 3: {\n const scale = Math.max(\n Math.abs(s[p - 1]),\n Math.abs(s[p - 2]),\n Math.abs(e[p - 2]),\n Math.abs(s[k]),\n Math.abs(e[k]),\n );\n const sp = s[p - 1] / scale;\n const spm1 = s[p - 2] / scale;\n const epm1 = e[p - 2] / scale;\n const sk = s[k] / scale;\n const ek = e[k] / scale;\n const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n const c = sp * epm1 * (sp * epm1);\n let shift = 0;\n if (b !== 0 || c !== 0) {\n if (b < 0) {\n shift = 0 - Math.sqrt(b * b + c);\n } else {\n shift = Math.sqrt(b * b + c);\n }\n shift = c / (b + shift);\n }\n let f = (sk + sp) * (sk - sp) + shift;\n let g = sk * ek;\n for (let j = k; j < p - 1; j++) {\n let t = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n let cs = f / t;\n let sn = g / t;\n if (j !== k) {\n e[j - 1] = t;\n }\n f = cs * s[j] + sn * e[j];\n e[j] = cs * e[j] - sn * s[j];\n g = sn * s[j + 1];\n s[j + 1] = cs * s[j + 1];\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n V.set(i, j, t);\n }\n }\n t = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"hypotenuse\"])(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n cs = f / t;\n sn = g / t;\n s[j] = t;\n f = cs * e[j] + sn * s[j + 1];\n s[j + 1] = -sn * e[j] + cs * s[j + 1];\n g = sn * e[j + 1];\n e[j + 1] = cs * e[j + 1];\n if (wantu && j < m - 1) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n U.set(i, j, t);\n }\n }\n }\n e[p - 2] = f;\n iter = iter + 1;\n break;\n }\n case 4: {\n if (s[k] <= 0) {\n s[k] = s[k] < 0 ? -s[k] : 0;\n if (wantv) {\n for (let i = 0; i <= pp; i++) {\n V.set(i, k, -V.get(i, k));\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n let t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && k < n - 1) {\n for (let i = 0; i < n; i++) {\n t = V.get(i, k + 1);\n V.set(i, k + 1, V.get(i, k));\n V.set(i, k, t);\n }\n }\n if (wantu && k < m - 1) {\n for (let i = 0; i < m; i++) {\n t = U.get(i, k + 1);\n U.set(i, k + 1, U.get(i, k));\n U.set(i, k, t);\n }\n }\n k++;\n }\n iter = 0;\n p--;\n break;\n }\n // no default\n }\n }\n\n if (swapped) {\n let tmp = V;\n V = U;\n U = tmp;\n }\n\n this.m = m;\n this.n = n;\n this.s = s;\n this.U = U;\n this.V = V;\n }\n\n solve(value) {\n let Y = value;\n let e = this.threshold;\n let scols = this.s.length;\n let Ls = _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].zeros(scols, scols);\n\n for (let i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls.set(i, i, 0);\n } else {\n Ls.set(i, i, 1 / this.s[i]);\n }\n }\n\n let U = this.U;\n let V = this.rightSingularVectors;\n\n let VL = V.mmul(Ls);\n let vrows = V.rows;\n let urows = U.rows;\n let VLU = _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].zeros(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < scols; k++) {\n sum += VL.get(i, k) * U.get(j, k);\n }\n VLU.set(i, j, sum);\n }\n }\n\n return VLU.mmul(Y);\n }\n\n solveForDiagonal(value) {\n return this.solve(_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].diag(value));\n }\n\n inverse() {\n let V = this.V;\n let e = this.threshold;\n let vrows = V.rows;\n let vcols = V.columns;\n let X = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](vrows, this.s.length);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X.set(i, j, V.get(i, j) / this.s[j]);\n }\n }\n }\n\n let U = this.U;\n\n let urows = U.rows;\n let ucols = U.columns;\n let Y = new _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"](vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < ucols; k++) {\n sum += X.get(i, k) * U.get(j, k);\n }\n Y.set(i, j, sum);\n }\n }\n\n return Y;\n }\n\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n\n get norm2() {\n return this.s[0];\n }\n\n get rank() {\n let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n let r = 0;\n let s = this.s;\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n }\n\n get diagonal() {\n return Array.from(this.s);\n }\n\n get threshold() {\n return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n }\n\n get leftSingularVectors() {\n return this.U;\n }\n\n get rightSingularVectors() {\n return this.V;\n }\n\n get diagonalMatrix() {\n return _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"].diag(this.s);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL3N2ZC5qcz9mNmM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0I7QUFDdUI7O0FBRWxCOztBQUVyQjtBQUNmLGlDQUFpQztBQUNqQyxZQUFZLDZEQUFlOztBQUUzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwrQ0FBTTtBQUN0QixnQkFBZ0IsK0NBQU07O0FBRXRCO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsUUFBUTs7QUFFM0I7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QixpQkFBaUIsd0RBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixPQUFPO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsT0FBTztBQUNoQztBQUNBO0FBQ0EseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCLE9BQU87QUFDbEMsaUJBQWlCLHdEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBO0FBQ0EsNkJBQTZCLE9BQU87QUFDcEMsK0JBQStCLE9BQU87QUFDdEM7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLE9BQU87QUFDcEM7QUFDQSwrQkFBK0IsT0FBTztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLE9BQU87QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLFFBQVE7QUFDL0IsdUJBQXVCLE9BQU87QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsUUFBUTtBQUNuQztBQUNBLDZCQUE2QixRQUFRO0FBQ3JDO0FBQ0EsMkJBQTJCLE9BQU87QUFDbEM7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLE9BQU87QUFDbEM7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFdBQVc7QUFDcEM7QUFDQTtBQUNBLFNBQVM7QUFDVCx5QkFBeUIsT0FBTztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsUUFBUTtBQUNqQztBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0EsK0JBQStCLE9BQU87QUFDdEM7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLE9BQU87QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsU0FBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSx3QkFBd0IsU0FBUztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixRQUFRO0FBQ3JDLG9CQUFvQix3REFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLE9BQU87QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixPQUFPO0FBQ2hDLG9CQUFvQix3REFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFdBQVc7QUFDcEMsb0JBQW9CLHdEQUFVO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHdEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwrQ0FBTTs7QUFFbkIsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNOztBQUVwQixtQkFBbUIsV0FBVztBQUM5QixxQkFBcUIsV0FBVztBQUNoQztBQUNBLHVCQUF1QixXQUFXO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQiwrQ0FBTTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLCtDQUFNOztBQUV0QixtQkFBbUIsV0FBVztBQUM5QixxQkFBcUIsV0FBVztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0IsK0NBQU07O0FBRXRCLG1CQUFtQixXQUFXO0FBQzlCLHFCQUFxQixXQUFXO0FBQ2hDO0FBQ0EsdUJBQXVCLFdBQVc7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsUUFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVywrQ0FBTTtBQUNqQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9kYy9zdmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuaW1wb3J0IHsgaHlwb3RlbnVzZSB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IodmFsdWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIHZhbHVlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IG11c3QgYmUgbm9uLWVtcHR5Jyk7XG4gICAgfVxuXG4gICAgbGV0IG0gPSB2YWx1ZS5yb3dzO1xuICAgIGxldCBuID0gdmFsdWUuY29sdW1ucztcblxuICAgIGNvbnN0IHtcbiAgICAgIGNvbXB1dGVMZWZ0U2luZ3VsYXJWZWN0b3JzID0gdHJ1ZSxcbiAgICAgIGNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyA9IHRydWUsXG4gICAgICBhdXRvVHJhbnNwb3NlID0gZmFsc2UsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBsZXQgd2FudHUgPSBCb29sZWFuKGNvbXB1dGVMZWZ0U2luZ3VsYXJWZWN0b3JzKTtcbiAgICBsZXQgd2FudHYgPSBCb29sZWFuKGNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyk7XG5cbiAgICBsZXQgc3dhcHBlZCA9IGZhbHNlO1xuICAgIGxldCBhO1xuICAgIGlmIChtIDwgbikge1xuICAgICAgaWYgKCFhdXRvVHJhbnNwb3NlKSB7XG4gICAgICAgIGEgPSB2YWx1ZS5jbG9uZSgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ0NvbXB1dGluZyBTVkQgb24gYSBtYXRyaXggd2l0aCBtb3JlIGNvbHVtbnMgdGhhbiByb3dzLiBDb25zaWRlciBlbmFibGluZyBhdXRvVHJhbnNwb3NlJyxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEgPSB2YWx1ZS50cmFuc3Bvc2UoKTtcbiAgICAgICAgbSA9IGEucm93cztcbiAgICAgICAgbiA9IGEuY29sdW1ucztcbiAgICAgICAgc3dhcHBlZCA9IHRydWU7XG4gICAgICAgIGxldCBhdXggPSB3YW50dTtcbiAgICAgICAgd2FudHUgPSB3YW50djtcbiAgICAgICAgd2FudHYgPSBhdXg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSB2YWx1ZS5jbG9uZSgpO1xuICAgIH1cblxuICAgIGxldCBudSA9IE1hdGgubWluKG0sIG4pO1xuICAgIGxldCBuaSA9IE1hdGgubWluKG0gKyAxLCBuKTtcbiAgICBsZXQgcyA9IG5ldyBGbG9hdDY0QXJyYXkobmkpO1xuICAgIGxldCBVID0gbmV3IE1hdHJpeChtLCBudSk7XG4gICAgbGV0IFYgPSBuZXcgTWF0cml4KG4sIG4pO1xuXG4gICAgbGV0IGUgPSBuZXcgRmxvYXQ2NEFycmF5KG4pO1xuICAgIGxldCB3b3JrID0gbmV3IEZsb2F0NjRBcnJheShtKTtcblxuICAgIGxldCBzaSA9IG5ldyBGbG9hdDY0QXJyYXkobmkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmk7IGkrKykgc2lbaV0gPSBpO1xuXG4gICAgbGV0IG5jdCA9IE1hdGgubWluKG0gLSAxLCBuKTtcbiAgICBsZXQgbnJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDIsIG0pKTtcbiAgICBsZXQgbXJjID0gTWF0aC5tYXgobmN0LCBucnQpO1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtcmM7IGsrKykge1xuICAgICAgaWYgKGsgPCBuY3QpIHtcbiAgICAgICAgc1trXSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgc1trXSA9IGh5cG90ZW51c2Uoc1trXSwgYS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzW2tdICE9PSAwKSB7XG4gICAgICAgICAgaWYgKGEuZ2V0KGssIGspIDwgMCkge1xuICAgICAgICAgICAgc1trXSA9IC1zW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgYS5zZXQoaSwgaywgYS5nZXQoaSwgaykgLyBzW2tdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYS5zZXQoaywgaywgYS5nZXQoaywgaykgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBzW2tdID0gLXNba107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICBpZiAoayA8IG5jdCAmJiBzW2tdICE9PSAwKSB7XG4gICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB0ICs9IGEuZ2V0KGksIGspICogYS5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHQgPSAtdCAvIGEuZ2V0KGssIGspO1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBhLnNldChpLCBqLCBhLmdldChpLCBqKSArIHQgKiBhLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVbal0gPSBhLmdldChrLCBqKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdhbnR1ICYmIGsgPCBuY3QpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBVLnNldChpLCBrLCBhLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGsgPCBucnQpIHtcbiAgICAgICAgZVtrXSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgIGVba10gPSBoeXBvdGVudXNlKGVba10sIGVbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlW2tdICE9PSAwKSB7XG4gICAgICAgICAgaWYgKGVbayArIDFdIDwgMCkge1xuICAgICAgICAgICAgZVtrXSA9IDAgLSBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGVbaV0gLz0gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZVtrICsgMV0gKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlW2tdID0gLWVba107XG4gICAgICAgIGlmIChrICsgMSA8IG0gJiYgZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgd29ya1tpXSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgIHdvcmtbaV0gKz0gZVtqXSAqIGEuZ2V0KGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gLWVbal0gLyBlW2sgKyAxXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICBhLnNldChpLCBqLCBhLmdldChpLCBqKSArIHQgKiB3b3JrW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBWLnNldChpLCBrLCBlW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcCA9IE1hdGgubWluKG4sIG0gKyAxKTtcbiAgICBpZiAobmN0IDwgbikge1xuICAgICAgc1tuY3RdID0gYS5nZXQobmN0LCBuY3QpO1xuICAgIH1cbiAgICBpZiAobSA8IHApIHtcbiAgICAgIHNbcCAtIDFdID0gMDtcbiAgICB9XG4gICAgaWYgKG5ydCArIDEgPCBwKSB7XG4gICAgICBlW25ydF0gPSBhLmdldChucnQsIHAgLSAxKTtcbiAgICB9XG4gICAgZVtwIC0gMV0gPSAwO1xuXG4gICAgaWYgKHdhbnR1KSB7XG4gICAgICBmb3IgKGxldCBqID0gbmN0OyBqIDwgbnU7IGorKykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgIFUuc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICAgIFUuc2V0KGosIGosIDEpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgayA9IG5jdCAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICAgIGlmIChzW2tdICE9PSAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbnU7IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgdCArPSBVLmdldChpLCBrKSAqIFUuZ2V0KGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IC10IC8gVS5nZXQoaywgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICBVLnNldChpLCBqLCBVLmdldChpLCBqKSArIHQgKiBVLmdldChpLCBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBVLnNldChpLCBrLCAtVS5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBVLnNldChrLCBrLCAxICsgVS5nZXQoaywgaykpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgayAtIDE7IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBVLnNldChpLCBrLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgVS5zZXQoaywgaywgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAod2FudHYpIHtcbiAgICAgIGZvciAobGV0IGsgPSBuIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgICAgaWYgKGsgPCBucnQgJiYgZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgIHQgKz0gVi5nZXQoaSwgaykgKiBWLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtdCAvIFYuZ2V0KGsgKyAxLCBrKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICBWLnNldChpLCBqLCBWLmdldChpLCBqKSArIHQgKiBWLmdldChpLCBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgVi5zZXQoaSwgaywgMCk7XG4gICAgICAgIH1cbiAgICAgICAgVi5zZXQoaywgaywgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBwID0gcCAtIDE7XG4gICAgbGV0IGl0ZXIgPSAwO1xuICAgIGxldCBlcHMgPSBOdW1iZXIuRVBTSUxPTjtcbiAgICB3aGlsZSAocCA+IDApIHtcbiAgICAgIGxldCBrLCBrYXNlO1xuICAgICAgZm9yIChrID0gcCAtIDI7IGsgPj0gLTE7IGstLSkge1xuICAgICAgICBpZiAoayA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHBoYSA9XG4gICAgICAgICAgTnVtYmVyLk1JTl9WQUxVRSArIGVwcyAqIE1hdGguYWJzKHNba10gKyBNYXRoLmFicyhzW2sgKyAxXSkpO1xuICAgICAgICBpZiAoTWF0aC5hYnMoZVtrXSkgPD0gYWxwaGEgfHwgTnVtYmVyLmlzTmFOKGVba10pKSB7XG4gICAgICAgICAgZVtrXSA9IDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChrID09PSBwIC0gMikge1xuICAgICAgICBrYXNlID0gNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBrcztcbiAgICAgICAgZm9yIChrcyA9IHAgLSAxOyBrcyA+PSBrOyBrcy0tKSB7XG4gICAgICAgICAgaWYgKGtzID09PSBrKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgKGtzICE9PSBwID8gTWF0aC5hYnMoZVtrc10pIDogMCkgK1xuICAgICAgICAgICAgKGtzICE9PSBrICsgMSA/IE1hdGguYWJzKGVba3MgLSAxXSkgOiAwKTtcbiAgICAgICAgICBpZiAoTWF0aC5hYnMoc1trc10pIDw9IGVwcyAqIHQpIHtcbiAgICAgICAgICAgIHNba3NdID0gMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa3MgPT09IGspIHtcbiAgICAgICAgICBrYXNlID0gMztcbiAgICAgICAgfSBlbHNlIGlmIChrcyA9PT0gcCAtIDEpIHtcbiAgICAgICAgICBrYXNlID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrYXNlID0gMjtcbiAgICAgICAgICBrID0ga3M7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaysrO1xuXG4gICAgICBzd2l0Y2ggKGthc2UpIHtcbiAgICAgICAgY2FzZSAxOiB7XG4gICAgICAgICAgbGV0IGYgPSBlW3AgLSAyXTtcbiAgICAgICAgICBlW3AgLSAyXSA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IHAgLSAyOyBqID49IGs7IGotLSkge1xuICAgICAgICAgICAgbGV0IHQgPSBoeXBvdGVudXNlKHNbal0sIGYpO1xuICAgICAgICAgICAgbGV0IGNzID0gc1tqXSAvIHQ7XG4gICAgICAgICAgICBsZXQgc24gPSBmIC8gdDtcbiAgICAgICAgICAgIHNbal0gPSB0O1xuICAgICAgICAgICAgaWYgKGogIT09IGspIHtcbiAgICAgICAgICAgICAgZiA9IC1zbiAqIGVbaiAtIDFdO1xuICAgICAgICAgICAgICBlW2ogLSAxXSA9IGNzICogZVtqIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBWLmdldChpLCBqKSArIHNuICogVi5nZXQoaSwgcCAtIDEpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIHAgLSAxLCAtc24gKiBWLmdldChpLCBqKSArIGNzICogVi5nZXQoaSwgcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI6IHtcbiAgICAgICAgICBsZXQgZiA9IGVbayAtIDFdO1xuICAgICAgICAgIGVbayAtIDFdID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHA7IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSBoeXBvdGVudXNlKHNbal0sIGYpO1xuICAgICAgICAgICAgbGV0IGNzID0gc1tqXSAvIHQ7XG4gICAgICAgICAgICBsZXQgc24gPSBmIC8gdDtcbiAgICAgICAgICAgIHNbal0gPSB0O1xuICAgICAgICAgICAgZiA9IC1zbiAqIGVbal07XG4gICAgICAgICAgICBlW2pdID0gY3MgKiBlW2pdO1xuICAgICAgICAgICAgaWYgKHdhbnR1KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVS5nZXQoaSwgaikgKyBzbiAqIFUuZ2V0KGksIGsgLSAxKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrIC0gMSwgLXNuICogVS5nZXQoaSwgaikgKyBjcyAqIFUuZ2V0KGksIGsgLSAxKSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzOiB7XG4gICAgICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1heChcbiAgICAgICAgICAgIE1hdGguYWJzKHNbcCAtIDFdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKHNbcCAtIDJdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKGVbcCAtIDJdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKHNba10pLFxuICAgICAgICAgICAgTWF0aC5hYnMoZVtrXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBzcCA9IHNbcCAtIDFdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3Qgc3BtMSA9IHNbcCAtIDJdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3QgZXBtMSA9IGVbcCAtIDJdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3Qgc2sgPSBzW2tdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3QgZWsgPSBlW2tdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3QgYiA9ICgoc3BtMSArIHNwKSAqIChzcG0xIC0gc3ApICsgZXBtMSAqIGVwbTEpIC8gMjtcbiAgICAgICAgICBjb25zdCBjID0gc3AgKiBlcG0xICogKHNwICogZXBtMSk7XG4gICAgICAgICAgbGV0IHNoaWZ0ID0gMDtcbiAgICAgICAgICBpZiAoYiAhPT0gMCB8fCBjICE9PSAwKSB7XG4gICAgICAgICAgICBpZiAoYiA8IDApIHtcbiAgICAgICAgICAgICAgc2hpZnQgPSAwIC0gTWF0aC5zcXJ0KGIgKiBiICsgYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzaGlmdCA9IE1hdGguc3FydChiICogYiArIGMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hpZnQgPSBjIC8gKGIgKyBzaGlmdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBmID0gKHNrICsgc3ApICogKHNrIC0gc3ApICsgc2hpZnQ7XG4gICAgICAgICAgbGV0IGcgPSBzayAqIGVrO1xuICAgICAgICAgIGZvciAobGV0IGogPSBrOyBqIDwgcCAtIDE7IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSBoeXBvdGVudXNlKGYsIGcpO1xuICAgICAgICAgICAgaWYgKHQgPT09IDApIHQgPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgICAgICAgICAgbGV0IGNzID0gZiAvIHQ7XG4gICAgICAgICAgICBsZXQgc24gPSBnIC8gdDtcbiAgICAgICAgICAgIGlmIChqICE9PSBrKSB7XG4gICAgICAgICAgICAgIGVbaiAtIDFdID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGYgPSBjcyAqIHNbal0gKyBzbiAqIGVbal07XG4gICAgICAgICAgICBlW2pdID0gY3MgKiBlW2pdIC0gc24gKiBzW2pdO1xuICAgICAgICAgICAgZyA9IHNuICogc1tqICsgMV07XG4gICAgICAgICAgICBzW2ogKyAxXSA9IGNzICogc1tqICsgMV07XG4gICAgICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBWLmdldChpLCBqKSArIHNuICogVi5nZXQoaSwgaiArIDEpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGogKyAxLCAtc24gKiBWLmdldChpLCBqKSArIGNzICogVi5nZXQoaSwgaiArIDEpKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IGh5cG90ZW51c2UoZiwgZyk7XG4gICAgICAgICAgICBpZiAodCA9PT0gMCkgdCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICBjcyA9IGYgLyB0O1xuICAgICAgICAgICAgc24gPSBnIC8gdDtcbiAgICAgICAgICAgIHNbal0gPSB0O1xuICAgICAgICAgICAgZiA9IGNzICogZVtqXSArIHNuICogc1tqICsgMV07XG4gICAgICAgICAgICBzW2ogKyAxXSA9IC1zbiAqIGVbal0gKyBjcyAqIHNbaiArIDFdO1xuICAgICAgICAgICAgZyA9IHNuICogZVtqICsgMV07XG4gICAgICAgICAgICBlW2ogKyAxXSA9IGNzICogZVtqICsgMV07XG4gICAgICAgICAgICBpZiAod2FudHUgJiYgaiA8IG0gLSAxKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVS5nZXQoaSwgaikgKyBzbiAqIFUuZ2V0KGksIGogKyAxKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBqICsgMSwgLXNuICogVS5nZXQoaSwgaikgKyBjcyAqIFUuZ2V0KGksIGogKyAxKSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZVtwIC0gMl0gPSBmO1xuICAgICAgICAgIGl0ZXIgPSBpdGVyICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDQ6IHtcbiAgICAgICAgICBpZiAoc1trXSA8PSAwKSB7XG4gICAgICAgICAgICBzW2tdID0gc1trXSA8IDAgPyAtc1trXSA6IDA7XG4gICAgICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcHA7IGkrKykge1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGssIC1WLmdldChpLCBrKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKGsgPCBwcCkge1xuICAgICAgICAgICAgaWYgKHNba10gPj0gc1trICsgMV0pIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdCA9IHNba107XG4gICAgICAgICAgICBzW2tdID0gc1trICsgMV07XG4gICAgICAgICAgICBzW2sgKyAxXSA9IHQ7XG4gICAgICAgICAgICBpZiAod2FudHYgJiYgayA8IG4gLSAxKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IFYuZ2V0KGksIGsgKyAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrICsgMSwgVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGssIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FudHUgJiYgayA8IG0gLSAxKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IFUuZ2V0KGksIGsgKyAxKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrICsgMSwgVS5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGssIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZXIgPSAwO1xuICAgICAgICAgIHAtLTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBubyBkZWZhdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN3YXBwZWQpIHtcbiAgICAgIGxldCB0bXAgPSBWO1xuICAgICAgViA9IFU7XG4gICAgICBVID0gdG1wO1xuICAgIH1cblxuICAgIHRoaXMubSA9IG07XG4gICAgdGhpcy5uID0gbjtcbiAgICB0aGlzLnMgPSBzO1xuICAgIHRoaXMuVSA9IFU7XG4gICAgdGhpcy5WID0gVjtcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgbGV0IFkgPSB2YWx1ZTtcbiAgICBsZXQgZSA9IHRoaXMudGhyZXNob2xkO1xuICAgIGxldCBzY29scyA9IHRoaXMucy5sZW5ndGg7XG4gICAgbGV0IExzID0gTWF0cml4Lnplcm9zKHNjb2xzLCBzY29scyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjb2xzOyBpKyspIHtcbiAgICAgIGlmIChNYXRoLmFicyh0aGlzLnNbaV0pIDw9IGUpIHtcbiAgICAgICAgTHMuc2V0KGksIGksIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTHMuc2V0KGksIGksIDEgLyB0aGlzLnNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBVID0gdGhpcy5VO1xuICAgIGxldCBWID0gdGhpcy5yaWdodFNpbmd1bGFyVmVjdG9ycztcblxuICAgIGxldCBWTCA9IFYubW11bChMcyk7XG4gICAgbGV0IHZyb3dzID0gVi5yb3dzO1xuICAgIGxldCB1cm93cyA9IFUucm93cztcbiAgICBsZXQgVkxVID0gTWF0cml4Lnplcm9zKHZyb3dzLCB1cm93cyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZyb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdXJvd3M7IGorKykge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzY29sczsgaysrKSB7XG4gICAgICAgICAgc3VtICs9IFZMLmdldChpLCBrKSAqIFUuZ2V0KGosIGspO1xuICAgICAgICB9XG4gICAgICAgIFZMVS5zZXQoaSwgaiwgc3VtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gVkxVLm1tdWwoWSk7XG4gIH1cblxuICBzb2x2ZUZvckRpYWdvbmFsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc29sdmUoTWF0cml4LmRpYWcodmFsdWUpKTtcbiAgfVxuXG4gIGludmVyc2UoKSB7XG4gICAgbGV0IFYgPSB0aGlzLlY7XG4gICAgbGV0IGUgPSB0aGlzLnRocmVzaG9sZDtcbiAgICBsZXQgdnJvd3MgPSBWLnJvd3M7XG4gICAgbGV0IHZjb2xzID0gVi5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeCh2cm93cywgdGhpcy5zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZyb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmNvbHM7IGorKykge1xuICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5zW2pdKSA+IGUpIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBWLmdldChpLCBqKSAvIHRoaXMuc1tqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgVSA9IHRoaXMuVTtcblxuICAgIGxldCB1cm93cyA9IFUucm93cztcbiAgICBsZXQgdWNvbHMgPSBVLmNvbHVtbnM7XG4gICAgbGV0IFkgPSBuZXcgTWF0cml4KHZyb3dzLCB1cm93cyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZyb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdXJvd3M7IGorKykge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCB1Y29sczsgaysrKSB7XG4gICAgICAgICAgc3VtICs9IFguZ2V0KGksIGspICogVS5nZXQoaiwgayk7XG4gICAgICAgIH1cbiAgICAgICAgWS5zZXQoaSwgaiwgc3VtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWTtcbiAgfVxuXG4gIGdldCBjb25kaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc1swXSAvIHRoaXMuc1tNYXRoLm1pbih0aGlzLm0sIHRoaXMubikgLSAxXTtcbiAgfVxuXG4gIGdldCBub3JtMigpIHtcbiAgICByZXR1cm4gdGhpcy5zWzBdO1xuICB9XG5cbiAgZ2V0IHJhbmsoKSB7XG4gICAgbGV0IHRvbCA9IE1hdGgubWF4KHRoaXMubSwgdGhpcy5uKSAqIHRoaXMuc1swXSAqIE51bWJlci5FUFNJTE9OO1xuICAgIGxldCByID0gMDtcbiAgICBsZXQgcyA9IHRoaXMucztcbiAgICBmb3IgKGxldCBpID0gMCwgaWkgPSBzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgIGlmIChzW2ldID4gdG9sKSB7XG4gICAgICAgIHIrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBnZXQgZGlhZ29uYWwoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zKTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKSB7XG4gICAgcmV0dXJuIChOdW1iZXIuRVBTSUxPTiAvIDIpICogTWF0aC5tYXgodGhpcy5tLCB0aGlzLm4pICogdGhpcy5zWzBdO1xuICB9XG5cbiAgZ2V0IGxlZnRTaW5ndWxhclZlY3RvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuVTtcbiAgfVxuXG4gIGdldCByaWdodFNpbmd1bGFyVmVjdG9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5WO1xuICB9XG5cbiAgZ2V0IGRpYWdvbmFsTWF0cml4KCkge1xuICAgIHJldHVybiBNYXRyaXguZGlhZyh0aGlzLnMpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/util.js": /*!****************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/util.js ***! \****************************************************************/ /*! exports provided: hypotenuse */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hypotenuse\", function() { return hypotenuse; });\nfunction hypotenuse(a, b) {\n let r = 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n return Math.abs(a) * Math.sqrt(1 + r * r);\n }\n if (b !== 0) {\n r = a / b;\n return Math.abs(b) * Math.sqrt(1 + r * r);\n }\n return 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RjL3V0aWwuanM/M2Y3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9kYy91dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGh5cG90ZW51c2UoYSwgYikge1xuICBsZXQgciA9IDA7XG4gIGlmIChNYXRoLmFicyhhKSA+IE1hdGguYWJzKGIpKSB7XG4gICAgciA9IGIgLyBhO1xuICAgIHJldHVybiBNYXRoLmFicyhhKSAqIE1hdGguc3FydCgxICsgciAqIHIpO1xuICB9XG4gIGlmIChiICE9PSAwKSB7XG4gICAgciA9IGEgLyBiO1xuICAgIHJldHVybiBNYXRoLmFicyhiKSAqIE1hdGguc3FydCgxICsgciAqIHIpO1xuICB9XG4gIHJldHVybiAwO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/util.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/decompositions.js": /*!***********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/decompositions.js ***! \***********************************************************************/ /*! exports provided: inverse, solve */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return inverse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"solve\", function() { return solve; });\n/* harmony import */ var _dc_lu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dc/lu */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/lu.js\");\n/* harmony import */ var _dc_qr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dc/qr */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/qr.js\");\n/* harmony import */ var _dc_svd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dc/svd */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js\");\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n\n\n\n\n\n\nfunction inverse(matrix, useSVD = false) {\n matrix = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_4__[\"default\"].checkMatrix(matrix);\n if (useSVD) {\n return new _dc_svd__WEBPACK_IMPORTED_MODULE_2__[\"default\"](matrix).inverse();\n } else {\n return solve(matrix, _matrix__WEBPACK_IMPORTED_MODULE_3__[\"default\"].eye(matrix.rows));\n }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n leftHandSide = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_4__[\"default\"].checkMatrix(leftHandSide);\n rightHandSide = _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_4__[\"default\"].checkMatrix(rightHandSide);\n if (useSVD) {\n return new _dc_svd__WEBPACK_IMPORTED_MODULE_2__[\"default\"](leftHandSide).solve(rightHandSide);\n } else {\n return leftHandSide.isSquare()\n ? new _dc_lu__WEBPACK_IMPORTED_MODULE_0__[\"default\"](leftHandSide).solve(rightHandSide)\n : new _dc_qr__WEBPACK_IMPORTED_MODULE_1__[\"default\"](leftHandSide).solve(rightHandSide);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RlY29tcG9zaXRpb25zLmpzP2RhMjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzQztBQUNBO0FBQ1k7QUFDcEI7QUFDdUI7O0FBRTlDO0FBQ1AsV0FBVyw2REFBZTtBQUMxQjtBQUNBLGVBQWUsK0NBQTBCO0FBQ3pDLEdBQUc7QUFDSCx5QkFBeUIsK0NBQU07QUFDL0I7QUFDQTs7QUFFTztBQUNQLGlCQUFpQiw2REFBZTtBQUNoQyxrQkFBa0IsNkRBQWU7QUFDakM7QUFDQSxlQUFlLCtDQUEwQjtBQUN6QyxHQUFHO0FBQ0g7QUFDQSxZQUFZLDhDQUFlO0FBQzNCLFlBQVksOENBQWU7QUFDM0I7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvZGVjb21wb3NpdGlvbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTHVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvbHUnO1xuaW1wb3J0IFFyRGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL3FyJztcbmltcG9ydCBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL3N2ZCc7XG5pbXBvcnQgTWF0cml4IGZyb20gJy4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZlcnNlKG1hdHJpeCwgdXNlU1ZEID0gZmFsc2UpIHtcbiAgbWF0cml4ID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gIGlmICh1c2VTVkQpIHtcbiAgICByZXR1cm4gbmV3IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uKG1hdHJpeCkuaW52ZXJzZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzb2x2ZShtYXRyaXgsIE1hdHJpeC5leWUobWF0cml4LnJvd3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29sdmUobGVmdEhhbmRTaWRlLCByaWdodEhhbmRTaWRlLCB1c2VTVkQgPSBmYWxzZSkge1xuICBsZWZ0SGFuZFNpZGUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobGVmdEhhbmRTaWRlKTtcbiAgcmlnaHRIYW5kU2lkZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChyaWdodEhhbmRTaWRlKTtcbiAgaWYgKHVzZVNWRCkge1xuICAgIHJldHVybiBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGVmdEhhbmRTaWRlLmlzU3F1YXJlKClcbiAgICAgID8gbmV3IEx1RGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpXG4gICAgICA6IG5ldyBRckRlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/decompositions.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/determinant.js": /*!********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/determinant.js ***! \********************************************************************/ /*! exports provided: determinant */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return determinant; });\n/* harmony import */ var _dc_lu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dc/lu */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/lu.js\");\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony import */ var _views_selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./views/selection */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/selection.js\");\n\n\n\n\nfunction determinant(matrix) {\n matrix = _matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(matrix);\n if (matrix.isSquare()) {\n if (matrix.columns === 0) {\n return 1;\n }\n\n let a, b, c, d;\n if (matrix.columns === 2) {\n // 2 x 2 matrix\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(1, 0);\n d = matrix.get(1, 1);\n\n return a * d - b * c;\n } else if (matrix.columns === 3) {\n // 3 x 3 matrix\n let subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = new _views_selection__WEBPACK_IMPORTED_MODULE_2__[\"default\"](matrix, [1, 2], [1, 2]);\n subMatrix1 = new _views_selection__WEBPACK_IMPORTED_MODULE_2__[\"default\"](matrix, [1, 2], [0, 2]);\n subMatrix2 = new _views_selection__WEBPACK_IMPORTED_MODULE_2__[\"default\"](matrix, [1, 2], [0, 1]);\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(0, 2);\n\n return (\n a * determinant(subMatrix0) -\n b * determinant(subMatrix1) +\n c * determinant(subMatrix2)\n );\n } else {\n // general purpose determinant using the LU decomposition\n return new _dc_lu__WEBPACK_IMPORTED_MODULE_0__[\"default\"](matrix).determinant;\n }\n } else {\n throw Error('determinant can only be calculated for a square matrix');\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2RldGVybWluYW50LmpzPzI2MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzQztBQUNSO0FBQ3NCOztBQUU3QztBQUNQLFdBQVcsK0NBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHVCQUF1Qix3REFBbUI7QUFDMUMsdUJBQXVCLHdEQUFtQjtBQUMxQyx1QkFBdUIsd0RBQW1CO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsaUJBQWlCLDhDQUFlO0FBQ2hDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvZGV0ZXJtaW5hbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTHVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvbHUnO1xuaW1wb3J0IE1hdHJpeCBmcm9tICcuL21hdHJpeCc7XG5pbXBvcnQgTWF0cml4U2VsZWN0aW9uVmlldyBmcm9tICcuL3ZpZXdzL3NlbGVjdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlcm1pbmFudChtYXRyaXgpIHtcbiAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gIGlmIChtYXRyaXguaXNTcXVhcmUoKSkge1xuICAgIGlmIChtYXRyaXguY29sdW1ucyA9PT0gMCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgbGV0IGEsIGIsIGMsIGQ7XG4gICAgaWYgKG1hdHJpeC5jb2x1bW5zID09PSAyKSB7XG4gICAgICAvLyAyIHggMiBtYXRyaXhcbiAgICAgIGEgPSBtYXRyaXguZ2V0KDAsIDApO1xuICAgICAgYiA9IG1hdHJpeC5nZXQoMCwgMSk7XG4gICAgICBjID0gbWF0cml4LmdldCgxLCAwKTtcbiAgICAgIGQgPSBtYXRyaXguZ2V0KDEsIDEpO1xuXG4gICAgICByZXR1cm4gYSAqIGQgLSBiICogYztcbiAgICB9IGVsc2UgaWYgKG1hdHJpeC5jb2x1bW5zID09PSAzKSB7XG4gICAgICAvLyAzIHggMyBtYXRyaXhcbiAgICAgIGxldCBzdWJNYXRyaXgwLCBzdWJNYXRyaXgxLCBzdWJNYXRyaXgyO1xuICAgICAgc3ViTWF0cml4MCA9IG5ldyBNYXRyaXhTZWxlY3Rpb25WaWV3KG1hdHJpeCwgWzEsIDJdLCBbMSwgMl0pO1xuICAgICAgc3ViTWF0cml4MSA9IG5ldyBNYXRyaXhTZWxlY3Rpb25WaWV3KG1hdHJpeCwgWzEsIDJdLCBbMCwgMl0pO1xuICAgICAgc3ViTWF0cml4MiA9IG5ldyBNYXRyaXhTZWxlY3Rpb25WaWV3KG1hdHJpeCwgWzEsIDJdLCBbMCwgMV0pO1xuICAgICAgYSA9IG1hdHJpeC5nZXQoMCwgMCk7XG4gICAgICBiID0gbWF0cml4LmdldCgwLCAxKTtcbiAgICAgIGMgPSBtYXRyaXguZ2V0KDAsIDIpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBhICogZGV0ZXJtaW5hbnQoc3ViTWF0cml4MCkgLVxuICAgICAgICBiICogZGV0ZXJtaW5hbnQoc3ViTWF0cml4MSkgK1xuICAgICAgICBjICogZGV0ZXJtaW5hbnQoc3ViTWF0cml4MilcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdlbmVyYWwgcHVycG9zZSBkZXRlcm1pbmFudCB1c2luZyB0aGUgTFUgZGVjb21wb3NpdGlvblxuICAgICAgcmV0dXJuIG5ldyBMdURlY29tcG9zaXRpb24obWF0cml4KS5kZXRlcm1pbmFudDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ2RldGVybWluYW50IGNhbiBvbmx5IGJlIGNhbGN1bGF0ZWQgZm9yIGEgc3F1YXJlIG1hdHJpeCcpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/determinant.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/index.js": /*!**************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/index.js ***! \**************************************************************/ /*! exports provided: AbstractMatrix, default, Matrix, MatrixColumnView, MatrixColumnSelectionView, MatrixFlipColumnView, MatrixFlipRowView, MatrixRowView, MatrixRowSelectionView, MatrixSelectionView, MatrixSubView, MatrixTransposeView, wrap, WrapperMatrix1D, WrapperMatrix2D, solve, inverse, determinant, linearDependencies, pseudoInverse, covariance, correlation, SingularValueDecomposition, SVD, EigenvalueDecomposition, EVD, CholeskyDecomposition, CHO, LuDecomposition, LU, QrDecomposition, QR, Nipals, NIPALS */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractMatrix\", function() { return _matrix__WEBPACK_IMPORTED_MODULE_0__[\"AbstractMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Matrix\", function() { return _matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _views_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./views/index */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixColumnView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixColumnView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixColumnSelectionView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixColumnSelectionView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixFlipColumnView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixFlipColumnView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixFlipRowView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixFlipRowView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixRowView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixRowView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixRowSelectionView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixRowSelectionView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixSelectionView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixSelectionView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixSubView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixSubView\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixTransposeView\", function() { return _views_index__WEBPACK_IMPORTED_MODULE_1__[\"MatrixTransposeView\"]; });\n\n/* harmony import */ var _wrap_wrap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wrap/wrap */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/wrap.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return _wrap_wrap__WEBPACK_IMPORTED_MODULE_2__[\"wrap\"]; });\n\n/* harmony import */ var _wrap_WrapperMatrix1D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wrap/WrapperMatrix1D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix1D.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WrapperMatrix1D\", function() { return _wrap_WrapperMatrix1D__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./wrap/WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WrapperMatrix2D\", function() { return _wrap_WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _decompositions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./decompositions */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/decompositions.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"solve\", function() { return _decompositions__WEBPACK_IMPORTED_MODULE_5__[\"solve\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"inverse\", function() { return _decompositions__WEBPACK_IMPORTED_MODULE_5__[\"inverse\"]; });\n\n/* harmony import */ var _determinant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./determinant */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/determinant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"determinant\", function() { return _determinant__WEBPACK_IMPORTED_MODULE_6__[\"determinant\"]; });\n\n/* harmony import */ var _linearDependencies__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./linearDependencies */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/linearDependencies.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"linearDependencies\", function() { return _linearDependencies__WEBPACK_IMPORTED_MODULE_7__[\"linearDependencies\"]; });\n\n/* harmony import */ var _pseudoInverse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pseudoInverse */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/pseudoInverse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pseudoInverse\", function() { return _pseudoInverse__WEBPACK_IMPORTED_MODULE_8__[\"pseudoInverse\"]; });\n\n/* harmony import */ var _covariance__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./covariance */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/covariance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"covariance\", function() { return _covariance__WEBPACK_IMPORTED_MODULE_9__[\"covariance\"]; });\n\n/* harmony import */ var _correlation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./correlation */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/correlation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"correlation\", function() { return _correlation__WEBPACK_IMPORTED_MODULE_10__[\"correlation\"]; });\n\n/* harmony import */ var _dc_svd_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dc/svd.js */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SingularValueDecomposition\", function() { return _dc_svd_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SVD\", function() { return _dc_svd_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _dc_evd_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./dc/evd.js */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/evd.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EigenvalueDecomposition\", function() { return _dc_evd_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVD\", function() { return _dc_evd_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _dc_cholesky_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./dc/cholesky.js */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/cholesky.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CholeskyDecomposition\", function() { return _dc_cholesky_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CHO\", function() { return _dc_cholesky_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _dc_lu_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./dc/lu.js */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/lu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LuDecomposition\", function() { return _dc_lu_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LU\", function() { return _dc_lu_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _dc_qr_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./dc/qr.js */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/qr.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QrDecomposition\", function() { return _dc_qr_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"QR\", function() { return _dc_qr_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _dc_nipals_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./dc/nipals.js */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/nipals.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Nipals\", function() { return _dc_nipals_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NIPALS\", function() { return _dc_nipals_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2luZGV4LmpzPzFkODYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzRTtBQUN4Qzs7QUFFSztBQUNpQztBQUNBOztBQUVsQjtBQUNOO0FBQ2M7QUFDVjtBQUNOO0FBQ0U7O0FBS3ZCO0FBSUE7QUFJSztBQUM2QztBQUNBO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQWJzdHJhY3RNYXRyaXgsIGRlZmF1bHQsIGRlZmF1bHQgYXMgTWF0cml4IH0gZnJvbSAnLi9tYXRyaXgnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3cy9pbmRleCc7XG5cbmV4cG9ydCB7IHdyYXAgfSBmcm9tICcuL3dyYXAvd3JhcCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdyYXBwZXJNYXRyaXgxRCB9IGZyb20gJy4vd3JhcC9XcmFwcGVyTWF0cml4MUQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXcmFwcGVyTWF0cml4MkQgfSBmcm9tICcuL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IHsgc29sdmUsIGludmVyc2UgfSBmcm9tICcuL2RlY29tcG9zaXRpb25zJztcbmV4cG9ydCB7IGRldGVybWluYW50IH0gZnJvbSAnLi9kZXRlcm1pbmFudCc7XG5leHBvcnQgeyBsaW5lYXJEZXBlbmRlbmNpZXMgfSBmcm9tICcuL2xpbmVhckRlcGVuZGVuY2llcyc7XG5leHBvcnQgeyBwc2V1ZG9JbnZlcnNlIH0gZnJvbSAnLi9wc2V1ZG9JbnZlcnNlJztcbmV4cG9ydCB7IGNvdmFyaWFuY2UgfSBmcm9tICcuL2NvdmFyaWFuY2UnO1xuZXhwb3J0IHsgY29ycmVsYXRpb24gfSBmcm9tICcuL2NvcnJlbGF0aW9uJztcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbixcbiAgZGVmYXVsdCBhcyBTVkQsXG59IGZyb20gJy4vZGMvc3ZkLmpzJztcbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgRWlnZW52YWx1ZURlY29tcG9zaXRpb24sXG4gIGRlZmF1bHQgYXMgRVZELFxufSBmcm9tICcuL2RjL2V2ZC5qcyc7XG5leHBvcnQge1xuICBkZWZhdWx0IGFzIENob2xlc2t5RGVjb21wb3NpdGlvbixcbiAgZGVmYXVsdCBhcyBDSE8sXG59IGZyb20gJy4vZGMvY2hvbGVza3kuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMdURlY29tcG9zaXRpb24sIGRlZmF1bHQgYXMgTFUgfSBmcm9tICcuL2RjL2x1LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUXJEZWNvbXBvc2l0aW9uLCBkZWZhdWx0IGFzIFFSIH0gZnJvbSAnLi9kYy9xci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE5pcGFscywgZGVmYXVsdCBhcyBOSVBBTFMgfSBmcm9tICcuL2RjL25pcGFscy5qcyc7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/index.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/inspect.js": /*!****************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/inspect.js ***! \****************************************************************/ /*! exports provided: inspectMatrix, inspectMatrixWithOptions */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inspectMatrix\", function() { return inspectMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inspectMatrixWithOptions\", function() { return inspectMatrixWithOptions; });\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nfunction inspectMatrix() {\n return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n const { rows, columns } = matrix;\n const maxI = Math.min(rows, maxRows);\n const maxJ = Math.min(columns, maxColumns);\n const result = [];\n for (let i = 0; i < maxI; i++) {\n let line = [];\n for (let j = 0; j < maxJ; j++) {\n line.push(formatNumber(matrix.get(i, j), maxNumSize));\n }\n result.push(`${line.join(' ')}`);\n }\n if (maxJ !== columns) {\n result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n }\n if (maxI !== rows) {\n result.push(`... ${rows - maxRows} more rows`);\n }\n return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n const numStr = String(num);\n if (numStr.length <= maxNumSize) {\n return numStr.padEnd(maxNumSize, ' ');\n }\n const precise = num.toPrecision(maxNumSize - 2);\n if (precise.length <= maxNumSize) {\n return precise;\n }\n const exponential = num.toExponential(maxNumSize - 2);\n const eIndex = exponential.indexOf('e');\n const e = exponential.slice(eIndex);\n return exponential.slice(0, maxNumSize - e.length) + e;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2luc3BlY3QuanM/NTU5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTyxzREFBc0Q7QUFDN0QsU0FBUyxnREFBZ0Q7QUFDekQsWUFBWSx3QkFBd0I7QUFDcEMsRUFBRSxPQUFPO0FBQ1QsRUFBRSxXQUFXLEVBQUU7QUFDZixFQUFFLE9BQU87QUFDVCxFQUFFLE9BQU8sUUFBUTtBQUNqQixFQUFFLE9BQU8sV0FBVztBQUNwQixDQUFDO0FBQ0Q7O0FBRUE7QUFDQSxTQUFTLGdCQUFnQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQjtBQUNBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0EseUNBQXlDLHFCQUFxQjtBQUM5RDtBQUNBO0FBQ0EsdUJBQXVCLGVBQWU7QUFDdEM7QUFDQSwwQkFBMEIsV0FBVztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9pbnNwZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaW5kZW50ID0gJyAnLnJlcGVhdCgyKTtcbmNvbnN0IGluZGVudERhdGEgPSAnICcucmVwZWF0KDQpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdE1hdHJpeCgpIHtcbiAgcmV0dXJuIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyh0aGlzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyhtYXRyaXgsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IG1heFJvd3MgPSAxNSwgbWF4Q29sdW1ucyA9IDEwLCBtYXhOdW1TaXplID0gOCB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIGAke21hdHJpeC5jb25zdHJ1Y3Rvci5uYW1lfSB7XG4ke2luZGVudH1bXG4ke2luZGVudERhdGF9JHtpbnNwZWN0RGF0YShtYXRyaXgsIG1heFJvd3MsIG1heENvbHVtbnMsIG1heE51bVNpemUpfVxuJHtpbmRlbnR9XVxuJHtpbmRlbnR9cm93czogJHttYXRyaXgucm93c31cbiR7aW5kZW50fWNvbHVtbnM6ICR7bWF0cml4LmNvbHVtbnN9XG59YDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdERhdGEobWF0cml4LCBtYXhSb3dzLCBtYXhDb2x1bW5zLCBtYXhOdW1TaXplKSB7XG4gIGNvbnN0IHsgcm93cywgY29sdW1ucyB9ID0gbWF0cml4O1xuICBjb25zdCBtYXhJID0gTWF0aC5taW4ocm93cywgbWF4Um93cyk7XG4gIGNvbnN0IG1heEogPSBNYXRoLm1pbihjb2x1bW5zLCBtYXhDb2x1bW5zKTtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4STsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1heEo7IGorKykge1xuICAgICAgbGluZS5wdXNoKGZvcm1hdE51bWJlcihtYXRyaXguZ2V0KGksIGopLCBtYXhOdW1TaXplKSk7XG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGAke2xpbmUuam9pbignICcpfWApO1xuICB9XG4gIGlmIChtYXhKICE9PSBjb2x1bW5zKSB7XG4gICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSArPSBgIC4uLiAke2NvbHVtbnMgLSBtYXhDb2x1bW5zfSBtb3JlIGNvbHVtbnNgO1xuICB9XG4gIGlmIChtYXhJICE9PSByb3dzKSB7XG4gICAgcmVzdWx0LnB1c2goYC4uLiAke3Jvd3MgLSBtYXhSb3dzfSBtb3JlIHJvd3NgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oYFxcbiR7aW5kZW50RGF0YX1gKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TnVtYmVyKG51bSwgbWF4TnVtU2l6ZSkge1xuICBjb25zdCBudW1TdHIgPSBTdHJpbmcobnVtKTtcbiAgaWYgKG51bVN0ci5sZW5ndGggPD0gbWF4TnVtU2l6ZSkge1xuICAgIHJldHVybiBudW1TdHIucGFkRW5kKG1heE51bVNpemUsICcgJyk7XG4gIH1cbiAgY29uc3QgcHJlY2lzZSA9IG51bS50b1ByZWNpc2lvbihtYXhOdW1TaXplIC0gMik7XG4gIGlmIChwcmVjaXNlLmxlbmd0aCA8PSBtYXhOdW1TaXplKSB7XG4gICAgcmV0dXJuIHByZWNpc2U7XG4gIH1cbiAgY29uc3QgZXhwb25lbnRpYWwgPSBudW0udG9FeHBvbmVudGlhbChtYXhOdW1TaXplIC0gMik7XG4gIGNvbnN0IGVJbmRleCA9IGV4cG9uZW50aWFsLmluZGV4T2YoJ2UnKTtcbiAgY29uc3QgZSA9IGV4cG9uZW50aWFsLnNsaWNlKGVJbmRleCk7XG4gIHJldHVybiBleHBvbmVudGlhbC5zbGljZSgwLCBtYXhOdW1TaXplIC0gZS5sZW5ndGgpICsgZTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/inspect.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/linearDependencies.js": /*!***************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/linearDependencies.js ***! \***************************************************************************/ /*! exports provided: linearDependencies */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linearDependencies\", function() { return linearDependencies; });\n/* harmony import */ var _dc_svd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dc/svd */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js\");\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\n\nfunction xrange(n, exception) {\n let range = [];\n for (let i = 0; i < n; i++) {\n if (i !== exception) {\n range.push(i);\n }\n }\n return range;\n}\n\nfunction dependenciesOneRow(\n error,\n matrix,\n index,\n thresholdValue = 10e-10,\n thresholdError = 10e-10,\n) {\n if (error > thresholdError) {\n return new Array(matrix.rows + 1).fill(0);\n } else {\n let returnArray = matrix.addRow(index, [0]);\n for (let i = 0; i < returnArray.rows; i++) {\n if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n returnArray.set(i, 0, 0);\n }\n }\n return returnArray.to1DArray();\n }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n matrix = _matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(matrix);\n\n let n = matrix.rows;\n let results = new _matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"](n, n);\n\n for (let i = 0; i < n; i++) {\n let b = _matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"].columnVector(matrix.getRow(i));\n let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n let svd = new _dc_svd__WEBPACK_IMPORTED_MODULE_0__[\"default\"](Abis);\n let x = svd.solve(b);\n let error = _matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"].sub(b, Abis.mmul(x)).abs().max();\n results.setRow(\n i,\n dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n );\n }\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL2xpbmVhckRlcGVuZGVuY2llcy5qcz9hZjg4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEO0FBQ3BCOztBQUU5QjtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sZ0RBQWdEO0FBQ3ZELFNBQVMsbURBQW1EO0FBQzVELFdBQVcsK0NBQU07O0FBRWpCO0FBQ0Esb0JBQW9CLCtDQUFNOztBQUUxQixpQkFBaUIsT0FBTztBQUN4QixZQUFZLCtDQUFNO0FBQ2xCO0FBQ0Esa0JBQWtCLCtDQUEwQjtBQUM1QztBQUNBLGdCQUFnQiwrQ0FBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvbGluZWFyRGVwZW5kZW5jaWVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvc3ZkJztcbmltcG9ydCBNYXRyaXggZnJvbSAnLi9tYXRyaXgnO1xuXG5mdW5jdGlvbiB4cmFuZ2UobiwgZXhjZXB0aW9uKSB7XG4gIGxldCByYW5nZSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGlmIChpICE9PSBleGNlcHRpb24pIHtcbiAgICAgIHJhbmdlLnB1c2goaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByYW5nZTtcbn1cblxuZnVuY3Rpb24gZGVwZW5kZW5jaWVzT25lUm93KFxuICBlcnJvcixcbiAgbWF0cml4LFxuICBpbmRleCxcbiAgdGhyZXNob2xkVmFsdWUgPSAxMGUtMTAsXG4gIHRocmVzaG9sZEVycm9yID0gMTBlLTEwLFxuKSB7XG4gIGlmIChlcnJvciA+IHRocmVzaG9sZEVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXgucm93cyArIDEpLmZpbGwoMCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJldHVybkFycmF5ID0gbWF0cml4LmFkZFJvdyhpbmRleCwgWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldHVybkFycmF5LnJvd3M7IGkrKykge1xuICAgICAgaWYgKE1hdGguYWJzKHJldHVybkFycmF5LmdldChpLCAwKSkgPCB0aHJlc2hvbGRWYWx1ZSkge1xuICAgICAgICByZXR1cm5BcnJheS5zZXQoaSwgMCwgMCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5BcnJheS50bzFEQXJyYXkoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGluZWFyRGVwZW5kZW5jaWVzKG1hdHJpeCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgdGhyZXNob2xkVmFsdWUgPSAxMGUtMTAsIHRocmVzaG9sZEVycm9yID0gMTBlLTEwIH0gPSBvcHRpb25zO1xuICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcblxuICBsZXQgbiA9IG1hdHJpeC5yb3dzO1xuICBsZXQgcmVzdWx0cyA9IG5ldyBNYXRyaXgobiwgbik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBsZXQgYiA9IE1hdHJpeC5jb2x1bW5WZWN0b3IobWF0cml4LmdldFJvdyhpKSk7XG4gICAgbGV0IEFiaXMgPSBtYXRyaXguc3ViTWF0cml4Um93KHhyYW5nZShuLCBpKSkudHJhbnNwb3NlKCk7XG4gICAgbGV0IHN2ZCA9IG5ldyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbihBYmlzKTtcbiAgICBsZXQgeCA9IHN2ZC5zb2x2ZShiKTtcbiAgICBsZXQgZXJyb3IgPSBNYXRyaXguc3ViKGIsIEFiaXMubW11bCh4KSkuYWJzKCkubWF4KCk7XG4gICAgcmVzdWx0cy5zZXRSb3coXG4gICAgICBpLFxuICAgICAgZGVwZW5kZW5jaWVzT25lUm93KGVycm9yLCB4LCBpLCB0aHJlc2hvbGRWYWx1ZSwgdGhyZXNob2xkRXJyb3IpLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/linearDependencies.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/mathOperations.js": /*!***********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/mathOperations.js ***! \***********************************************************************/ /*! exports provided: installMathOperations */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"installMathOperations\", function() { return installMathOperations; });\nfunction installMathOperations(AbstractMatrix, Matrix) {\n AbstractMatrix.prototype.add = function add(value) {\n if (typeof value === 'number') return this.addS(value);\n return this.addM(value);\n };\n\n AbstractMatrix.prototype.addS = function addS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.addM = function addM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.add = function add(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.add(value);\n };\n\n AbstractMatrix.prototype.sub = function sub(value) {\n if (typeof value === 'number') return this.subS(value);\n return this.subM(value);\n };\n\n AbstractMatrix.prototype.subS = function subS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.subM = function subM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.sub = function sub(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sub(value);\n };\n AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n AbstractMatrix.subtract = AbstractMatrix.sub;\n\n AbstractMatrix.prototype.mul = function mul(value) {\n if (typeof value === 'number') return this.mulS(value);\n return this.mulM(value);\n };\n\n AbstractMatrix.prototype.mulS = function mulS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.mulM = function mulM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mul = function mul(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mul(value);\n };\n AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n AbstractMatrix.multiply = AbstractMatrix.mul;\n\n AbstractMatrix.prototype.div = function div(value) {\n if (typeof value === 'number') return this.divS(value);\n return this.divM(value);\n };\n\n AbstractMatrix.prototype.divS = function divS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.divM = function divM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.div = function div(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.div(value);\n };\n AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n AbstractMatrix.divide = AbstractMatrix.div;\n\n AbstractMatrix.prototype.mod = function mod(value) {\n if (typeof value === 'number') return this.modS(value);\n return this.modM(value);\n };\n\n AbstractMatrix.prototype.modS = function modS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.modM = function modM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mod = function mod(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mod(value);\n };\n AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n AbstractMatrix.modulus = AbstractMatrix.mod;\n\n AbstractMatrix.prototype.and = function and(value) {\n if (typeof value === 'number') return this.andS(value);\n return this.andM(value);\n };\n\n AbstractMatrix.prototype.andS = function andS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.andM = function andM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.and = function and(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.and(value);\n };\n\n AbstractMatrix.prototype.or = function or(value) {\n if (typeof value === 'number') return this.orS(value);\n return this.orM(value);\n };\n\n AbstractMatrix.prototype.orS = function orS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.orM = function orM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.or = function or(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.or(value);\n };\n\n AbstractMatrix.prototype.xor = function xor(value) {\n if (typeof value === 'number') return this.xorS(value);\n return this.xorM(value);\n };\n\n AbstractMatrix.prototype.xorS = function xorS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.xorM = function xorM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.xor = function xor(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.xor(value);\n };\n\n AbstractMatrix.prototype.leftShift = function leftShift(value) {\n if (typeof value === 'number') return this.leftShiftS(value);\n return this.leftShiftM(value);\n };\n\n AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.leftShift = function leftShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.leftShift(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n return this.signPropagatingRightShiftM(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.signPropagatingRightShift(value);\n };\n\n AbstractMatrix.prototype.rightShift = function rightShift(value) {\n if (typeof value === 'number') return this.rightShiftS(value);\n return this.rightShiftM(value);\n };\n\n AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.rightShift = function rightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.rightShift(value);\n };\n AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n AbstractMatrix.prototype.not = function not() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, ~(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.not = function not(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.not();\n };\n\n AbstractMatrix.prototype.abs = function abs() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.abs(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.abs = function abs(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.abs();\n };\n\n AbstractMatrix.prototype.acos = function acos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acos = function acos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acos();\n };\n\n AbstractMatrix.prototype.acosh = function acosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acosh = function acosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acosh();\n };\n\n AbstractMatrix.prototype.asin = function asin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asin = function asin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asin();\n };\n\n AbstractMatrix.prototype.asinh = function asinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asinh = function asinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asinh();\n };\n\n AbstractMatrix.prototype.atan = function atan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atan = function atan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atan();\n };\n\n AbstractMatrix.prototype.atanh = function atanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atanh = function atanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atanh();\n };\n\n AbstractMatrix.prototype.cbrt = function cbrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cbrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cbrt = function cbrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cbrt();\n };\n\n AbstractMatrix.prototype.ceil = function ceil() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.ceil(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.ceil = function ceil(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.ceil();\n };\n\n AbstractMatrix.prototype.clz32 = function clz32() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.clz32(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.clz32 = function clz32(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.clz32();\n };\n\n AbstractMatrix.prototype.cos = function cos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cos = function cos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cos();\n };\n\n AbstractMatrix.prototype.cosh = function cosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cosh = function cosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cosh();\n };\n\n AbstractMatrix.prototype.exp = function exp() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.exp(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.exp = function exp(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.exp();\n };\n\n AbstractMatrix.prototype.expm1 = function expm1() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.expm1(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.expm1 = function expm1(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.expm1();\n };\n\n AbstractMatrix.prototype.floor = function floor() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.floor(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.floor = function floor(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.floor();\n };\n\n AbstractMatrix.prototype.fround = function fround() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.fround(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.fround = function fround(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.fround();\n };\n\n AbstractMatrix.prototype.log = function log() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log = function log(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log();\n };\n\n AbstractMatrix.prototype.log1p = function log1p() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log1p(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log1p = function log1p(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log1p();\n };\n\n AbstractMatrix.prototype.log10 = function log10() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log10(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log10 = function log10(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log10();\n };\n\n AbstractMatrix.prototype.log2 = function log2() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log2(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log2 = function log2(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log2();\n };\n\n AbstractMatrix.prototype.round = function round() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.round(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.round = function round(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.round();\n };\n\n AbstractMatrix.prototype.sign = function sign() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sign(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sign = function sign(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sign();\n };\n\n AbstractMatrix.prototype.sin = function sin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sin = function sin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sin();\n };\n\n AbstractMatrix.prototype.sinh = function sinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sinh = function sinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sinh();\n };\n\n AbstractMatrix.prototype.sqrt = function sqrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sqrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sqrt = function sqrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sqrt();\n };\n\n AbstractMatrix.prototype.tan = function tan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tan = function tan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tan();\n };\n\n AbstractMatrix.prototype.tanh = function tanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tanh = function tanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tanh();\n };\n\n AbstractMatrix.prototype.trunc = function trunc() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.trunc(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.trunc = function trunc(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.trunc();\n };\n\n AbstractMatrix.pow = function pow(matrix, arg0) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.pow(arg0);\n };\n\n AbstractMatrix.prototype.pow = function pow(value) {\n if (typeof value === 'number') return this.powS(value);\n return this.powM(value);\n };\n\n AbstractMatrix.prototype.powS = function powS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.pow(this.get(i, j), value));\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.powM = function powM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n }\n }\n return this;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL21hdGhPcGVyYXRpb25zLmpzP2QxZjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL21hdGhPcGVyYXRpb25zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KSB7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuYWRkUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRkTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZFMgPSBmdW5jdGlvbiBhZGRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZE0gPSBmdW5jdGlvbiBhZGRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWRkID0gZnVuY3Rpb24gYWRkKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hZGQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuc3ViUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc3ViTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlMgPSBmdW5jdGlvbiBzdWJTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1Yk0gPSBmdW5jdGlvbiBzdWJNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc3ViID0gZnVuY3Rpb24gc3ViKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zdWIodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3RTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJ0cmFjdE0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViTTtcbiAgQWJzdHJhY3RNYXRyaXguc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5zdWI7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5tdWxTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5tdWxNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUyA9IGZ1bmN0aW9uIG11bFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsTSA9IGZ1bmN0aW9uIG11bE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5tdWwgPSBmdW5jdGlvbiBtdWwobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm11bCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWw7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseVMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bHRpcGx5TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxNO1xuICBBYnN0cmFjdE1hdHJpeC5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4Lm11bDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmRpdlModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmRpdk0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZTID0gZnVuY3Rpb24gZGl2Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZNID0gZnVuY3Rpb24gZGl2TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmRpdiA9IGZ1bmN0aW9uIGRpdihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZGl2KHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXY7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdk07XG4gIEFic3RyYWN0TWF0cml4LmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LmRpdjtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm1vZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm1vZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RTID0gZnVuY3Rpb24gbW9kUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJSB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RNID0gZnVuY3Rpb24gbW9kTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICUgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm1vZCA9IGZ1bmN0aW9uIG1vZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubW9kKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kdWx1c1MgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXNNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZE07XG4gIEFic3RyYWN0TWF0cml4Lm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5tb2Q7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5hbmRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5hbmRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kUyA9IGZ1bmN0aW9uIGFuZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICYgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kTSA9IGZ1bmN0aW9uIGFuZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAmIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hbmQgPSBmdW5jdGlvbiBhbmQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFuZCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMub3JTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5vck0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vclMgPSBmdW5jdGlvbiBvclModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIHwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3JNID0gZnVuY3Rpb24gb3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgfCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgub3IgPSBmdW5jdGlvbiBvcihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgub3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMueG9yUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMueG9yTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvclMgPSBmdW5jdGlvbiB4b3JTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSBeIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvck0gPSBmdW5jdGlvbiB4b3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgXiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgueG9yID0gZnVuY3Rpb24geG9yKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC54b3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubGVmdFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubGVmdFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxlZnRTaGlmdFMgPSBmdW5jdGlvbiBsZWZ0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA8PCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnRNID0gZnVuY3Rpb24gbGVmdFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIDw8IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxlZnRTaGlmdCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0ID0gZnVuY3Rpb24gcmlnaHRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5yaWdodFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0UyA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+Pj4gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdE0gPSBmdW5jdGlvbiByaWdodFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnQ7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0TTtcbiAgQWJzdHJhY3RNYXRyaXguemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gbm90KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgfih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5ub3QgPSBmdW5jdGlvbiBub3QobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubm90KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWJzKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFicyA9IGZ1bmN0aW9uIGFicyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hYnMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWNvcyA9IGZ1bmN0aW9uIGFjb3MoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFjb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWNvcyA9IGZ1bmN0aW9uIGFjb3MobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFjb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFzaW4gPSBmdW5jdGlvbiBhc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hc2luKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFzaW4gPSBmdW5jdGlvbiBhc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFzaW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXNpbmggPSBmdW5jdGlvbiBhc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXNpbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXNpbmggPSBmdW5jdGlvbiBhc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hc2luaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hdGFuID0gZnVuY3Rpb24gYXRhbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXRhbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hdGFuID0gZnVuY3Rpb24gYXRhbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hdGFuKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmF0YW5oID0gZnVuY3Rpb24gYXRhbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmF0YW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmF0YW5oID0gZnVuY3Rpb24gYXRhbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXRhbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2JydCA9IGZ1bmN0aW9uIGNicnQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNicnQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2JydCA9IGZ1bmN0aW9uIGNicnQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2JydCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gY2VpbCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY2VpbCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jZWlsID0gZnVuY3Rpb24gY2VpbChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jZWlsKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNsejMyID0gZnVuY3Rpb24gY2x6MzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNsejMyKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNsejMyID0gZnVuY3Rpb24gY2x6MzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2x6MzIoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY29zID0gZnVuY3Rpb24gY29zKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY29zID0gZnVuY3Rpb24gY29zKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jb3NoID0gZnVuY3Rpb24gY29zaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jb3NoID0gZnVuY3Rpb24gY29zaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmV4cCA9IGZ1bmN0aW9uIGV4cCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmV4cCA9IGZ1bmN0aW9uIGV4cChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZXhwbTEgPSBmdW5jdGlvbiBleHBtMSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwbTEodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZXhwbTEgPSBmdW5jdGlvbiBleHBtMShtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHBtMSgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5mbG9vcih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmZsb29yKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZnJvdW5kKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5mcm91bmQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gbG9nKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2codGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nID0gZnVuY3Rpb24gbG9nKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cxcCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzFwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzEwID0gZnVuY3Rpb24gbG9nMTAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzEwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzEwID0gZnVuY3Rpb24gbG9nMTAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMTAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMiA9IGZ1bmN0aW9uIGxvZzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzIodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMiA9IGZ1bmN0aW9uIGxvZzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5yb3VuZCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJvdW5kKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaWduKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpZ24gPSBmdW5jdGlvbiBzaWduKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ24oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2luID0gZnVuY3Rpb24gc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2luID0gZnVuY3Rpb24gc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaW5oID0gZnVuY3Rpb24gc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2luaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaW5oID0gZnVuY3Rpb24gc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zcXJ0KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNxcnQgPSBmdW5jdGlvbiBzcXJ0KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNxcnQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGFuID0gZnVuY3Rpb24gdGFuKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50YW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudGFuID0gZnVuY3Rpb24gdGFuKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRhbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50YW5oID0gZnVuY3Rpb24gdGFuaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudGFuaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50YW5oID0gZnVuY3Rpb24gdGFuaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50YW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRydW5jID0gZnVuY3Rpb24gdHJ1bmMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRydW5jKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRydW5jID0gZnVuY3Rpb24gdHJ1bmMobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudHJ1bmMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wb3cgPSBmdW5jdGlvbiBwb3cobWF0cml4LCBhcmcwKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgucG93KGFyZzApO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3codmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMucG93Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucG93TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd1MgPSBmdW5jdGlvbiBwb3dTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnBvdyh0aGlzLmdldChpLCBqKSwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd00gPSBmdW5jdGlvbiBwb3dNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5wb3codGhpcy5nZXQoaSwgaiksIG1hdHJpeC5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/mathOperations.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js": /*!***************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js ***! \***************************************************************/ /*! exports provided: AbstractMatrix, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AbstractMatrix\", function() { return AbstractMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Matrix; });\n/* harmony import */ var ml_array_rescale__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ml-array-rescale */ \"./node_modules/_ml-array-rescale@1.3.6@ml-array-rescale/lib-es6/index.js\");\n/* harmony import */ var _inspect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inspect */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/inspect.js\");\n/* harmony import */ var _mathOperations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mathOperations */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/mathOperations.js\");\n/* harmony import */ var _stat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stat */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/stat.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n\n\n\n\n\n\n\nclass AbstractMatrix {\n static from1DArray(newRows, newColumns, newData) {\n let length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('data length does not match given dimensions');\n }\n let newMatrix = new Matrix(newRows, newColumns);\n for (let row = 0; row < newRows; row++) {\n for (let column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n static rowVector(newData) {\n let vector = new Matrix(1, newData.length);\n for (let i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n static columnVector(newData) {\n let vector = new Matrix(newData.length, 1);\n for (let i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n static zeros(rows, columns) {\n return new Matrix(rows, columns);\n }\n\n static ones(rows, columns) {\n return new Matrix(rows, columns).fill(1);\n }\n\n static rand(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { random = Math.random } = options;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.set(i, j, random());\n }\n }\n return matrix;\n }\n\n static randInt(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1000, random = Math.random } = options;\n if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let interval = max - min;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n let value = min + Math.round(random() * interval);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n let min = Math.min(rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n static diag(data, rows, columns) {\n let l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n let min = Math.min(l, rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new this(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static checkMatrix(value) {\n return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n }\n\n static isMatrix(value) {\n return value != null && value.klass === 'Matrix';\n }\n\n get size() {\n return this.rows * this.columns;\n }\n\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n to1DArray() {\n let array = [];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n array.push(this.get(i, j));\n }\n }\n return array;\n }\n\n to2DArray() {\n let copy = [];\n for (let i = 0; i < this.rows; i++) {\n copy.push([]);\n for (let j = 0; j < this.columns; j++) {\n copy[i].push(this.get(i, j));\n }\n }\n return copy;\n }\n\n toJSON() {\n return this.to2DArray();\n }\n\n isRowVector() {\n return this.rows === 1;\n }\n\n isColumnVector() {\n return this.columns === 1;\n }\n\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n\n isSquare() {\n return this.rows === this.columns;\n }\n\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n\n isSymmetric() {\n if (this.isSquare()) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j <= i; j++) {\n if (this.get(i, j) !== this.get(j, i)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n isEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isEchelonForm = true;\n let checked = false;\n while (i < this.rows && isEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isEchelonForm = false;\n checked = true;\n }\n }\n i++;\n }\n return isEchelonForm;\n }\n\n isReducedEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isReducedEchelonForm = true;\n let checked = false;\n while (i < this.rows && isReducedEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isReducedEchelonForm = false;\n checked = true;\n }\n }\n for (let k = j + 1; k < this.rows; k++) {\n if (this.get(i, k) !== 0) {\n isReducedEchelonForm = false;\n }\n }\n i++;\n }\n return isReducedEchelonForm;\n }\n\n echelonForm() {\n let result = this.clone();\n let h = 0;\n let k = 0;\n while (h < result.rows && k < result.columns) {\n let iMax = h;\n for (let i = h; i < result.rows; i++) {\n if (result.get(i, k) > result.get(iMax, k)) {\n iMax = i;\n }\n }\n if (result.get(iMax, k) === 0) {\n k++;\n } else {\n result.swapRows(h, iMax);\n let tmp = result.get(h, k);\n for (let j = k; j < result.columns; j++) {\n result.set(h, j, result.get(h, j) / tmp);\n }\n for (let i = h + 1; i < result.rows; i++) {\n let factor = result.get(i, k) / result.get(h, k);\n result.set(i, k, 0);\n for (let j = k + 1; j < result.columns; j++) {\n result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n }\n }\n h++;\n k++;\n }\n }\n return result;\n }\n\n reducedEchelonForm() {\n let result = this.echelonForm();\n let m = result.columns;\n let n = result.rows;\n let h = n - 1;\n while (h >= 0) {\n if (result.maxRow(h) === 0) {\n h--;\n } else {\n let p = 0;\n let pivot = false;\n while (p < n && pivot === false) {\n if (result.get(h, p) === 1) {\n pivot = true;\n } else {\n p++;\n }\n }\n for (let i = 0; i < h; i++) {\n let factor = result.get(i, p);\n for (let j = p; j < m; j++) {\n let tmp = result.get(i, j) - factor * result.get(h, j);\n result.set(i, j, tmp);\n }\n }\n h--;\n }\n }\n return result;\n }\n\n set() {\n throw new Error('set method is unimplemented');\n }\n\n get() {\n throw new Error('get method is unimplemented');\n }\n\n repeat(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { rows = 1, columns = 1 } = options;\n if (!Number.isInteger(rows) || rows <= 0) {\n throw new TypeError('rows must be a positive integer');\n }\n if (!Number.isInteger(columns) || columns <= 0) {\n throw new TypeError('columns must be a positive integer');\n }\n let matrix = new Matrix(this.rows * rows, this.columns * columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n fill(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n neg() {\n return this.mulS(-1);\n }\n\n getRow(index) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, index);\n let row = [];\n for (let i = 0; i < this.columns; i++) {\n row.push(this.get(index, i));\n }\n return row;\n }\n\n getRowVector(index) {\n return Matrix.rowVector(this.getRow(index));\n }\n\n setRow(index, array) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, index);\n array = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowVector\"])(this, array);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n swapRows(row1, row2) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, row1);\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, row2);\n for (let i = 0; i < this.columns; i++) {\n let temp = this.get(row1, i);\n this.set(row1, i, this.get(row2, i));\n this.set(row2, i, temp);\n }\n return this;\n }\n\n getColumn(index) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, index);\n let column = [];\n for (let i = 0; i < this.rows; i++) {\n column.push(this.get(i, index));\n }\n return column;\n }\n\n getColumnVector(index) {\n return Matrix.columnVector(this.getColumn(index));\n }\n\n setColumn(index, array) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, index);\n array = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnVector\"])(this, array);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n swapColumns(column1, column2) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, column1);\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, column2);\n for (let i = 0; i < this.rows; i++) {\n let temp = this.get(i, column1);\n this.set(i, column1, this.get(i, column2));\n this.set(i, column2, temp);\n }\n return this;\n }\n\n addRowVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[j]);\n }\n }\n return this;\n }\n\n subRowVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[j]);\n }\n }\n return this;\n }\n\n mulRowVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[j]);\n }\n }\n return this;\n }\n\n divRowVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[j]);\n }\n }\n return this;\n }\n\n addColumnVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[i]);\n }\n }\n return this;\n }\n\n subColumnVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[i]);\n }\n }\n return this;\n }\n\n mulColumnVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[i]);\n }\n }\n return this;\n }\n\n divColumnVector(vector) {\n vector = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnVector\"])(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[i]);\n }\n }\n return this;\n }\n\n mulRow(index, value) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, index);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n mulColumn(index, value) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, index);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n max() {\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, 0);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n }\n }\n }\n return v;\n }\n\n maxIndex() {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkNonEmpty\"])(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n min() {\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, 0);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n }\n }\n }\n return v;\n }\n\n minIndex() {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkNonEmpty\"])(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n maxRow(row) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n maxRowIndex(row) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, row);\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkNonEmpty\"])(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n minRow(row) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n minRowIndex(row) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, row);\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkNonEmpty\"])(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n maxColumn(column) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n maxColumnIndex(column) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, column);\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkNonEmpty\"])(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n minColumn(column) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n minColumnIndex(column) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, column);\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkNonEmpty\"])(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n diag() {\n let min = Math.min(this.rows, this.columns);\n let diag = [];\n for (let i = 0; i < min; i++) {\n diag.push(this.get(i, i));\n }\n return diag;\n }\n\n norm(type = 'frobenius') {\n let result = 0;\n if (type === 'max') {\n return this.max();\n } else if (type === 'frobenius') {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result = result + this.get(i, j) * this.get(i, j);\n }\n }\n return Math.sqrt(result);\n } else {\n throw new RangeError(`unknown norm type: ${type}`);\n }\n }\n\n cumulativeSum() {\n let sum = 0;\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n sum += this.get(i, j);\n this.set(i, j, sum);\n }\n }\n return this;\n }\n\n dot(vector2) {\n if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n let vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n let dot = 0;\n for (let i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n mmul(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.columns;\n\n let result = new Matrix(m, p);\n\n let Bcolj = new Float64Array(n);\n for (let j = 0; j < p; j++) {\n for (let k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (let i = 0; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * Bcolj[k];\n }\n\n result.set(i, j, s);\n }\n }\n return result;\n }\n\n strassen2x2(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(2, 2);\n const a11 = this.get(0, 0);\n const b11 = other.get(0, 0);\n const a12 = this.get(0, 1);\n const b12 = other.get(0, 1);\n const a21 = this.get(1, 0);\n const b21 = other.get(1, 0);\n const a22 = this.get(1, 1);\n const b22 = other.get(1, 1);\n\n // Compute intermediate values.\n const m1 = (a11 + a22) * (b11 + b22);\n const m2 = (a21 + a22) * b11;\n const m3 = a11 * (b12 - b22);\n const m4 = a22 * (b21 - b11);\n const m5 = (a11 + a12) * b22;\n const m6 = (a21 - a11) * (b11 + b12);\n const m7 = (a12 - a22) * (b21 + b22);\n\n // Combine intermediate values into the output.\n const c00 = m1 + m4 - m5 + m7;\n const c01 = m3 + m5;\n const c10 = m2 + m4;\n const c11 = m1 - m2 + m3 + m6;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n return result;\n }\n\n strassen3x3(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(3, 3);\n\n const a00 = this.get(0, 0);\n const a01 = this.get(0, 1);\n const a02 = this.get(0, 2);\n const a10 = this.get(1, 0);\n const a11 = this.get(1, 1);\n const a12 = this.get(1, 2);\n const a20 = this.get(2, 0);\n const a21 = this.get(2, 1);\n const a22 = this.get(2, 2);\n\n const b00 = other.get(0, 0);\n const b01 = other.get(0, 1);\n const b02 = other.get(0, 2);\n const b10 = other.get(1, 0);\n const b11 = other.get(1, 1);\n const b12 = other.get(1, 2);\n const b20 = other.get(2, 0);\n const b21 = other.get(2, 1);\n const b22 = other.get(2, 2);\n\n const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n const m2 = (a00 - a10) * (-b01 + b11);\n const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n const m5 = (a10 + a11) * (-b00 + b01);\n const m6 = a00 * b00;\n const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n const m8 = (-a00 + a20) * (b02 - b12);\n const m9 = (a20 + a21) * (-b00 + b02);\n const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n const m13 = (a02 - a22) * (b11 - b21);\n const m14 = a02 * b20;\n const m15 = (a21 + a22) * (-b20 + b21);\n const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n const m17 = (a02 - a12) * (b12 - b22);\n const m18 = (a11 + a12) * (-b20 + b22);\n const m19 = a01 * b10;\n const m20 = a12 * b21;\n const m21 = a10 * b02;\n const m22 = a20 * b01;\n const m23 = a22 * b22;\n\n const c00 = m6 + m14 + m19;\n const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n const c11 = m2 + m4 + m5 + m6 + m20;\n const c12 = m14 + m16 + m17 + m18 + m21;\n const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n const c21 = m12 + m13 + m14 + m15 + m22;\n const c22 = m6 + m7 + m8 + m9 + m23;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(0, 2, c02);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n result.set(1, 2, c12);\n result.set(2, 0, c20);\n result.set(2, 1, c21);\n result.set(2, 2, c22);\n return result;\n }\n\n mmulStrassen(y) {\n y = Matrix.checkMatrix(y);\n let x = this.clone();\n let r1 = x.rows;\n let c1 = x.columns;\n let r2 = y.rows;\n let c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(\n `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n );\n }\n\n // Put a matrix into the top left of a matrix of zeros.\n // `rows` and `cols` are the dimensions of the output matrix.\n function embed(mat, rows, cols) {\n let r = mat.rows;\n let c = mat.columns;\n if (r === rows && c === cols) {\n return mat;\n } else {\n let resultat = AbstractMatrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\n }\n\n // Make sure both matrices are the same size.\n // This is exclusively for simplicity:\n // this algorithm can be implemented with matrices of different sizes.\n\n let r = Math.max(r1, r2);\n let c = Math.max(c1, c2);\n x = embed(x, r, c);\n y = embed(y, r, c);\n\n // Our recursive multiplication function.\n function blockMult(a, b, rows, cols) {\n // For small matrices, resort to naive multiplication.\n if (rows <= 512 || cols <= 512) {\n return a.mmul(b); // a is equivalent to this\n }\n\n // Apply dynamic padding.\n if (rows % 2 === 1 && cols % 2 === 1) {\n a = embed(a, rows + 1, cols + 1);\n b = embed(b, rows + 1, cols + 1);\n } else if (rows % 2 === 1) {\n a = embed(a, rows + 1, cols);\n b = embed(b, rows + 1, cols);\n } else if (cols % 2 === 1) {\n a = embed(a, rows, cols + 1);\n b = embed(b, rows, cols + 1);\n }\n\n let halfRows = parseInt(a.rows / 2, 10);\n let halfCols = parseInt(a.columns / 2, 10);\n // Subdivide input matrices.\n let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n let m1 = blockMult(\n AbstractMatrix.add(a11, a22),\n AbstractMatrix.add(b11, b22),\n halfRows,\n halfCols,\n );\n let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n let m6 = blockMult(\n AbstractMatrix.sub(a21, a11),\n AbstractMatrix.add(b11, b12),\n halfRows,\n halfCols,\n );\n let m7 = blockMult(\n AbstractMatrix.sub(a12, a22),\n AbstractMatrix.add(b21, b22),\n halfRows,\n halfCols,\n );\n\n // Combine intermediate values into the output.\n let c11 = AbstractMatrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n let c12 = AbstractMatrix.add(m3, m5);\n let c21 = AbstractMatrix.add(m2, m4);\n let c22 = AbstractMatrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n // Crop output to the desired size (undo dynamic padding).\n let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n resultat = resultat.setSubMatrix(c11, 0, 0);\n resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n }\n\n return blockMult(x, y, r, c);\n }\n\n scaleRows(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const row = this.getRow(i);\n if (row.length > 0) {\n Object(ml_array_rescale__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(row, { min, max, output: row });\n }\n newMatrix.setRow(i, row);\n }\n return newMatrix;\n }\n\n scaleColumns(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const column = this.getColumn(i);\n if (column.length) {\n Object(ml_array_rescale__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(column, {\n min: min,\n max: max,\n output: column,\n });\n }\n newMatrix.setColumn(i, column);\n }\n return newMatrix;\n }\n\n flipRows() {\n const middle = Math.ceil(this.columns / 2);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < middle; j++) {\n let first = this.get(i, j);\n let last = this.get(i, this.columns - 1 - j);\n this.set(i, j, last);\n this.set(i, this.columns - 1 - j, first);\n }\n }\n return this;\n }\n\n flipColumns() {\n const middle = Math.ceil(this.rows / 2);\n for (let j = 0; j < this.columns; j++) {\n for (let i = 0; i < middle; i++) {\n let first = this.get(i, j);\n let last = this.get(this.rows - 1 - i, j);\n this.set(i, j, last);\n this.set(this.rows - 1 - i, j, first);\n }\n }\n return this;\n }\n\n kroneckerProduct(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.rows;\n let q = other.columns;\n\n let result = new Matrix(m * p, n * q);\n for (let i = 0; i < m; i++) {\n for (let j = 0; j < n; j++) {\n for (let k = 0; k < p; k++) {\n for (let l = 0; l < q; l++) {\n result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n }\n }\n }\n }\n return result;\n }\n\n kroneckerSum(other) {\n other = Matrix.checkMatrix(other);\n if (!this.isSquare() || !other.isSquare()) {\n throw new Error('Kronecker Sum needs two Square Matrices');\n }\n let m = this.rows;\n let n = other.rows;\n let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n return AxI.add(IxB);\n }\n\n transpose() {\n let result = new Matrix(this.columns, this.rows);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n sortRows(compareFunction = compareNumbers) {\n for (let i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n sortColumns(compareFunction = compareNumbers) {\n for (let i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n subMatrix(startRow, endRow, startColumn, endColumn) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRange\"])(this, startRow, endRow, startColumn, endColumn);\n let newMatrix = new Matrix(\n endRow - startRow + 1,\n endColumn - startColumn + 1,\n );\n for (let i = startRow; i <= endRow; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n }\n }\n return newMatrix;\n }\n\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if (\n startColumn > endColumn ||\n startColumn < 0 ||\n startColumn >= this.columns ||\n endColumn < 0 ||\n endColumn >= this.columns\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n if (indices[i] < 0 || indices[i] >= this.rows) {\n throw new RangeError(`Row index out of range: ${indices[i]}`);\n }\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n }\n }\n return newMatrix;\n }\n\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if (\n startRow > endRow ||\n startRow < 0 ||\n startRow >= this.rows ||\n endRow < 0 ||\n endRow >= this.rows\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startRow; j <= endRow; j++) {\n if (indices[i] < 0 || indices[i] >= this.columns) {\n throw new RangeError(`Column index out of range: ${indices[i]}`);\n }\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n }\n }\n return newMatrix;\n }\n\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n return this;\n }\n let endRow = startRow + matrix.rows - 1;\n let endColumn = startColumn + matrix.columns - 1;\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRange\"])(this, startRow, endRow, startColumn, endColumn);\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n this.set(startRow + i, startColumn + j, matrix.get(i, j));\n }\n }\n return this;\n }\n\n selection(rowIndices, columnIndices) {\n let indices = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkIndices\"])(this, rowIndices, columnIndices);\n let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n for (let i = 0; i < indices.row.length; i++) {\n let rowIndex = indices.row[i];\n for (let j = 0; j < indices.column.length; j++) {\n let columnIndex = indices.column[j];\n newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n }\n }\n return newMatrix;\n }\n\n trace() {\n let min = Math.min(this.rows, this.columns);\n let trace = 0;\n for (let i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n clone() {\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n newMatrix.set(row, column, this.get(row, column));\n }\n }\n return newMatrix;\n }\n\n sum(by) {\n switch (by) {\n case 'row':\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"sumByRow\"])(this);\n case 'column':\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"sumByColumn\"])(this);\n case undefined:\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"sumAll\"])(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n product(by) {\n switch (by) {\n case 'row':\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"productByRow\"])(this);\n case 'column':\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"productByColumn\"])(this);\n case undefined:\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"productAll\"])(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n mean(by) {\n const sum = this.sum(by);\n switch (by) {\n case 'row': {\n for (let i = 0; i < this.rows; i++) {\n sum[i] /= this.columns;\n }\n return sum;\n }\n case 'column': {\n for (let i = 0; i < this.columns; i++) {\n sum[i] /= this.rows;\n }\n return sum;\n }\n case undefined:\n return sum / this.size;\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n variance(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { unbiased = true, mean = this.mean(by) } = options;\n if (typeof unbiased !== 'boolean') {\n throw new TypeError('unbiased must be a boolean');\n }\n switch (by) {\n case 'row': {\n if (!Array.isArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"varianceByRow\"])(this, unbiased, mean);\n }\n case 'column': {\n if (!Array.isArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"varianceByColumn\"])(this, unbiased, mean);\n }\n case undefined: {\n if (typeof mean !== 'number') {\n throw new TypeError('mean must be a number');\n }\n return Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"varianceAll\"])(this, unbiased, mean);\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n standardDeviation(by, options) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n const variance = this.variance(by, options);\n if (by === undefined) {\n return Math.sqrt(variance);\n } else {\n for (let i = 0; i < variance.length; i++) {\n variance[i] = Math.sqrt(variance[i]);\n }\n return variance;\n }\n }\n\n center(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { center = this.mean(by) } = options;\n switch (by) {\n case 'row': {\n if (!Array.isArray(center)) {\n throw new TypeError('center must be an array');\n }\n Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"centerByRow\"])(this, center);\n return this;\n }\n case 'column': {\n if (!Array.isArray(center)) {\n throw new TypeError('center must be an array');\n }\n Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"centerByColumn\"])(this, center);\n return this;\n }\n case undefined: {\n if (typeof center !== 'number') {\n throw new TypeError('center must be a number');\n }\n Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"centerAll\"])(this, center);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n scale(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n let scale = options.scale;\n switch (by) {\n case 'row': {\n if (scale === undefined) {\n scale = Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"getScaleByRow\"])(this);\n } else if (!Array.isArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"scaleByRow\"])(this, scale);\n return this;\n }\n case 'column': {\n if (scale === undefined) {\n scale = Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"getScaleByColumn\"])(this);\n } else if (!Array.isArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"scaleByColumn\"])(this, scale);\n return this;\n }\n case undefined: {\n if (scale === undefined) {\n scale = Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"getScaleAll\"])(this);\n } else if (typeof scale !== 'number') {\n throw new TypeError('scale must be a number');\n }\n Object(_stat__WEBPACK_IMPORTED_MODULE_3__[\"scaleAll\"])(this, scale);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n toString(options) {\n return Object(_inspect__WEBPACK_IMPORTED_MODULE_1__[\"inspectMatrixWithOptions\"])(this, options);\n }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n _inspect__WEBPACK_IMPORTED_MODULE_1__[\"inspectMatrix\"];\n}\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n constructor(nRows, nColumns) {\n super();\n if (Matrix.isMatrix(nRows)) {\n // eslint-disable-next-line no-constructor-return\n return nRows.clone();\n } else if (Number.isInteger(nRows) && nRows >= 0) {\n // Create an empty matrix\n this.data = [];\n if (Number.isInteger(nColumns) && nColumns >= 0) {\n for (let i = 0; i < nRows; i++) {\n this.data.push(new Float64Array(nColumns));\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n } else if (Array.isArray(nRows)) {\n // Copy the values from the 2D array\n const arrayData = nRows;\n nRows = arrayData.length;\n nColumns = nRows ? arrayData[0].length : 0;\n if (typeof nColumns !== 'number') {\n throw new TypeError(\n 'Data must be a 2D array with at least one element',\n );\n }\n this.data = [];\n for (let i = 0; i < nRows; i++) {\n if (arrayData[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n this.data.push(Float64Array.from(arrayData[i]));\n }\n } else {\n throw new TypeError(\n 'First argument must be a positive number or an array',\n );\n }\n this.rows = nRows;\n this.columns = nColumns;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n\n removeRow(index) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, index);\n this.data.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowIndex\"])(this, index, true);\n array = Float64Array.from(Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkRowVector\"])(this, array));\n this.data.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n removeColumn(index) {\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, index);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns - 1);\n for (let j = 0; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n for (let j = index + 1; j < this.columns; j++) {\n newRow[j - 1] = this.data[i][j];\n }\n this.data[i] = newRow;\n }\n this.columns -= 1;\n return this;\n }\n\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnIndex\"])(this, index, true);\n array = Object(_util__WEBPACK_IMPORTED_MODULE_4__[\"checkColumnVector\"])(this, array);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns + 1);\n let j = 0;\n for (; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n newRow[j++] = array[i];\n for (; j < this.columns + 1; j++) {\n newRow[j] = this.data[i][j - 1];\n }\n this.data[i] = newRow;\n }\n this.columns += 1;\n return this;\n }\n}\n\nObject(_mathOperations__WEBPACK_IMPORTED_MODULE_2__[\"installMathOperations\"])(AbstractMatrix, Matrix);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL21hdHJpeC5qcz83M2UzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUM7O0FBRTZCO0FBQ1g7QUFvQnpDO0FBU0E7O0FBRVQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZUFBZTtBQUNwQywwQkFBMEIscUJBQXFCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0EsV0FBVyx1QkFBdUI7QUFDbEM7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsYUFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQSxXQUFXLDRDQUE0QztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLGFBQWE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsU0FBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsYUFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixhQUFhO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQSxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQixlQUFlO0FBQ3BDLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGVBQWU7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUJBQWlCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsdUJBQXVCLG9CQUFvQjtBQUMzQztBQUNBO0FBQ0EsMkJBQTJCLGlCQUFpQjtBQUM1QztBQUNBO0FBQ0EsNkJBQTZCLG9CQUFvQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0EseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0JBQXdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLGFBQWE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDJEQUFhO0FBQ2pCO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDJEQUFhO0FBQ2pCLFlBQVksNERBQWM7QUFDMUIsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksMkRBQWE7QUFDakIsSUFBSSwyREFBYTtBQUNqQixtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksOERBQWdCO0FBQ3BCO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSw4REFBZ0I7QUFDcEIsWUFBWSwrREFBaUI7QUFDN0IsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDhEQUFnQjtBQUNwQixJQUFJLDhEQUFnQjtBQUNwQixtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLDREQUFjO0FBQzNCLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsNERBQWM7QUFDM0IsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSw0REFBYztBQUMzQixtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLDREQUFjO0FBQzNCLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsK0RBQWlCO0FBQzlCLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsK0RBQWlCO0FBQzlCLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsK0RBQWlCO0FBQzlCLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsK0RBQWlCO0FBQzlCLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksMkRBQWE7QUFDakIsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksOERBQWdCO0FBQ3BCLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSwyREFBYTtBQUNqQjtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDJEQUFhO0FBQ2pCO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQyxxQkFBcUIsa0JBQWtCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksMkRBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksMkRBQWE7QUFDakIsSUFBSSwyREFBYTtBQUNqQjtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksMkRBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksMkRBQWE7QUFDakIsSUFBSSwyREFBYTtBQUNqQjtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksOERBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSw4REFBZ0I7QUFDcEIsSUFBSSwyREFBYTtBQUNqQjtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDhEQUFnQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksOERBQWdCO0FBQ3BCLElBQUksMkRBQWE7QUFDakI7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixlQUFlO0FBQ3BDLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaURBQWlELEtBQUs7QUFDdEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTs7QUFFQSxxQkFBcUIsT0FBTztBQUM1QjtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixHQUFHLEtBQUssR0FBRyxPQUFPLEdBQUcsS0FBSyxHQUFHO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsbUJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBLFFBQVEsZ0VBQU8sT0FBTyx3QkFBd0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtQkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQSxRQUFRLGdFQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDLHFCQUFxQixZQUFZO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckMscUJBQXFCLFlBQVk7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLE9BQU87QUFDNUIsdUJBQXVCLE9BQU87QUFDOUIseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEMscUJBQXFCLGtCQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSx3REFBVTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGFBQWE7QUFDdkMsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixvQkFBb0I7QUFDdkMsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBLDBEQUEwRCxXQUFXO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDLDRCQUE0QixhQUFhO0FBQ3pDO0FBQ0EsNkRBQTZELFdBQVc7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx3REFBVTtBQUNkLG1CQUFtQixpQkFBaUI7QUFDcEMscUJBQXFCLG9CQUFvQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDBEQUFZO0FBQzlCO0FBQ0EsbUJBQW1CLHdCQUF3QjtBQUMzQztBQUNBLHFCQUFxQiwyQkFBMkI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsaUJBQWlCO0FBQ3RDLDBCQUEwQix1QkFBdUI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0EsZUFBZSx5REFBVztBQUMxQjtBQUNBLGVBQWUsb0RBQU07QUFDckI7QUFDQSwyQ0FBMkMsR0FBRztBQUM5QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMERBQVk7QUFDM0I7QUFDQSxlQUFlLDZEQUFlO0FBQzlCO0FBQ0EsZUFBZSx3REFBVTtBQUN6QjtBQUNBLDJDQUEyQyxHQUFHO0FBQzlDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxHQUFHO0FBQzlDO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx3Q0FBd0M7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMkRBQWE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsOERBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlEQUFXO0FBQzFCO0FBQ0E7QUFDQSwyQ0FBMkMsR0FBRztBQUM5QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wscUJBQXFCLHFCQUFxQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFXO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNERBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsR0FBRztBQUM5QztBQUNBOztBQUVBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFhO0FBQy9CLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSx3REFBVTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw4REFBZ0I7QUFDbEMsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLDJEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlEQUFXO0FBQzdCLFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxzREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsR0FBRztBQUM5QztBQUNBOztBQUVBO0FBQ0EsV0FBVyx5RUFBd0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHNEQUFhO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixXQUFXO0FBQ2xDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixXQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSwyREFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSwyREFBYTtBQUNqQiw4QkFBOEIsNERBQWM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLDhEQUFnQjtBQUNwQixtQkFBbUIsZUFBZTtBQUNsQztBQUNBLHFCQUFxQixXQUFXO0FBQ2hDO0FBQ0E7QUFDQSw2QkFBNkIsa0JBQWtCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDhEQUFnQjtBQUNwQixZQUFZLCtEQUFpQjtBQUM3QixtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0EsWUFBWSxXQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0JBQXNCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkVBQXFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9tYXRyaXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVzY2FsZSBmcm9tICdtbC1hcnJheS1yZXNjYWxlJztcblxuaW1wb3J0IHsgaW5zcGVjdE1hdHJpeCwgaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zIH0gZnJvbSAnLi9pbnNwZWN0JztcbmltcG9ydCB7IGluc3RhbGxNYXRoT3BlcmF0aW9ucyB9IGZyb20gJy4vbWF0aE9wZXJhdGlvbnMnO1xuaW1wb3J0IHtcbiAgc3VtQnlSb3csXG4gIHN1bUJ5Q29sdW1uLFxuICBzdW1BbGwsXG4gIHByb2R1Y3RCeVJvdyxcbiAgcHJvZHVjdEJ5Q29sdW1uLFxuICBwcm9kdWN0QWxsLFxuICB2YXJpYW5jZUJ5Um93LFxuICB2YXJpYW5jZUJ5Q29sdW1uLFxuICB2YXJpYW5jZUFsbCxcbiAgY2VudGVyQnlSb3csXG4gIGNlbnRlckJ5Q29sdW1uLFxuICBjZW50ZXJBbGwsXG4gIHNjYWxlQnlSb3csXG4gIHNjYWxlQnlDb2x1bW4sXG4gIHNjYWxlQWxsLFxuICBnZXRTY2FsZUJ5Um93LFxuICBnZXRTY2FsZUJ5Q29sdW1uLFxuICBnZXRTY2FsZUFsbCxcbn0gZnJvbSAnLi9zdGF0JztcbmltcG9ydCB7XG4gIGNoZWNrUm93VmVjdG9yLFxuICBjaGVja1Jvd0luZGV4LFxuICBjaGVja0NvbHVtbkluZGV4LFxuICBjaGVja0NvbHVtblZlY3RvcixcbiAgY2hlY2tSYW5nZSxcbiAgY2hlY2tJbmRpY2VzLFxuICBjaGVja05vbkVtcHR5LFxufSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RNYXRyaXgge1xuICBzdGF0aWMgZnJvbTFEQXJyYXkobmV3Um93cywgbmV3Q29sdW1ucywgbmV3RGF0YSkge1xuICAgIGxldCBsZW5ndGggPSBuZXdSb3dzICogbmV3Q29sdW1ucztcbiAgICBpZiAobGVuZ3RoICE9PSBuZXdEYXRhLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2RhdGEgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGdpdmVuIGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobmV3Um93cywgbmV3Q29sdW1ucyk7XG4gICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgbmV3Um93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG5ld0NvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQocm93LCBjb2x1bW4sIG5ld0RhdGFbcm93ICogbmV3Q29sdW1ucyArIGNvbHVtbl0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJvd1ZlY3RvcihuZXdEYXRhKSB7XG4gICAgbGV0IHZlY3RvciA9IG5ldyBNYXRyaXgoMSwgbmV3RGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgdmVjdG9yLnNldCgwLCBpLCBuZXdEYXRhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBjb2x1bW5WZWN0b3IobmV3RGF0YSkge1xuICAgIGxldCB2ZWN0b3IgPSBuZXcgTWF0cml4KG5ld0RhdGEubGVuZ3RoLCAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZlY3Rvci5zZXQoaSwgMCwgbmV3RGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgemVyb3Mocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICB9XG5cbiAgc3RhdGljIG9uZXMocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpLmZpbGwoMSk7XG4gIH1cblxuICBzdGF0aWMgcmFuZChyb3dzLCBjb2x1bW5zLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcmFuZG9tID0gTWF0aC5yYW5kb20gfSA9IG9wdGlvbnM7XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgcmFuZG9tKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJhbmRJbnQocm93cywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IG1pbiA9IDAsIG1heCA9IDEwMDAsIHJhbmRvbSA9IE1hdGgucmFuZG9tIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGFuIGludGVnZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgaW50ZXJ2YWwgPSBtYXggLSBtaW47XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG1pbiArIE1hdGgucm91bmQocmFuZG9tKCkgKiBpbnRlcnZhbCk7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGV5ZShyb3dzLCBjb2x1bW5zLCB2YWx1ZSkge1xuICAgIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIGNvbHVtbnMgPSByb3dzO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB2YWx1ZSA9IDE7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGRpYWcoZGF0YSwgcm93cywgY29sdW1ucykge1xuICAgIGxldCBsID0gZGF0YS5sZW5ndGg7XG4gICAgaWYgKHJvd3MgPT09IHVuZGVmaW5lZCkgcm93cyA9IGw7XG4gICAgaWYgKGNvbHVtbnMgPT09IHVuZGVmaW5lZCkgY29sdW1ucyA9IHJvd3M7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKGwsIHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgZGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgbWluKG1hdHJpeDEsIG1hdHJpeDIpIHtcbiAgICBtYXRyaXgxID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgxKTtcbiAgICBtYXRyaXgyID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgyKTtcbiAgICBsZXQgcm93cyA9IG1hdHJpeDEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IG1hdHJpeDEuY29sdW1ucztcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1pbihtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBtYXgobWF0cml4MSwgbWF0cml4Mikge1xuICAgIG1hdHJpeDEgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDEpO1xuICAgIG1hdHJpeDIgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDIpO1xuICAgIGxldCByb3dzID0gbWF0cml4MS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbWF0cml4MS5jb2x1bW5zO1xuICAgIGxldCByZXN1bHQgPSBuZXcgdGhpcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1heChtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja01hdHJpeCh2YWx1ZSkge1xuICAgIHJldHVybiBBYnN0cmFjdE1hdHJpeC5pc01hdHJpeCh2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBNYXRyaXgodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGlzTWF0cml4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUua2xhc3MgPT09ICdNYXRyaXgnO1xuICB9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyAqIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGFwcGx5KGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBpLCBqKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0bzFEQXJyYXkoKSB7XG4gICAgbGV0IGFycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBhcnJheS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgdG8yREFycmF5KCkge1xuICAgIGxldCBjb3B5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29weS5wdXNoKFtdKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY29weVtpXS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8yREFycmF5KCk7XG4gIH1cblxuICBpc1Jvd1ZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAxO1xuICB9XG5cbiAgaXNDb2x1bW5WZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucyA9PT0gMTtcbiAgfVxuXG4gIGlzVmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IDEgfHwgdGhpcy5jb2x1bW5zID09PSAxO1xuICB9XG5cbiAgaXNTcXVhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gdGhpcy5jb2x1bW5zO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAwIHx8IHRoaXMuY29sdW1ucyA9PT0gMDtcbiAgfVxuXG4gIGlzU3ltbWV0cmljKCkge1xuICAgIGlmICh0aGlzLmlzU3F1YXJlKCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gaTsgaisrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopICE9PSB0aGlzLmdldChqLCBpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNFY2hlbG9uRm9ybSA9IHRydWU7XG4gICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICB3aGlsZSAoaSA8IHRoaXMucm93cyAmJiBpc0VjaGVsb25Gb3JtKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zICYmIGNoZWNrZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMCkge1xuICAgICAgICAgIGorKztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMSAmJiBqID4gcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbiA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc0VjaGVsb25Gb3JtO1xuICB9XG5cbiAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSB0cnVlO1xuICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MgJiYgaXNSZWR1Y2VkRWNoZWxvbkZvcm0pIHtcbiAgICAgIGogPSAwO1xuICAgICAgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMgJiYgY2hlY2tlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID09PSAwKSB7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KGksIGopID09PSAxICYmIGogPiBwcmV2aW91c0NvbHVtbikge1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHByZXZpb3VzQ29sdW1uID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrID0gaiArIDE7IGsgPCB0aGlzLnJvd3M7IGsrKykge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaykgIT09IDApIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc1JlZHVjZWRFY2hlbG9uRm9ybTtcbiAgfVxuXG4gIGVjaGVsb25Gb3JtKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IGggPSAwO1xuICAgIGxldCBrID0gMDtcbiAgICB3aGlsZSAoaCA8IHJlc3VsdC5yb3dzICYmIGsgPCByZXN1bHQuY29sdW1ucykge1xuICAgICAgbGV0IGlNYXggPSBoO1xuICAgICAgZm9yIChsZXQgaSA9IGg7IGkgPCByZXN1bHQucm93czsgaSsrKSB7XG4gICAgICAgIGlmIChyZXN1bHQuZ2V0KGksIGspID4gcmVzdWx0LmdldChpTWF4LCBrKSkge1xuICAgICAgICAgIGlNYXggPSBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmdldChpTWF4LCBrKSA9PT0gMCkge1xuICAgICAgICBrKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQuc3dhcFJvd3MoaCwgaU1heCk7XG4gICAgICAgIGxldCB0bXAgPSByZXN1bHQuZ2V0KGgsIGspO1xuICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHJlc3VsdC5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGgsIGosIHJlc3VsdC5nZXQoaCwgaikgLyB0bXApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSBoICsgMTsgaSA8IHJlc3VsdC5yb3dzOyBpKyspIHtcbiAgICAgICAgICBsZXQgZmFjdG9yID0gcmVzdWx0LmdldChpLCBrKSAvIHJlc3VsdC5nZXQoaCwgayk7XG4gICAgICAgICAgcmVzdWx0LnNldChpLCBrLCAwKTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCByZXN1bHQuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHJlc3VsdC5nZXQoaSwgaikgLSByZXN1bHQuZ2V0KGgsIGopICogZmFjdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaCsrO1xuICAgICAgICBrKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZWNoZWxvbkZvcm0oKTtcbiAgICBsZXQgbSA9IHJlc3VsdC5jb2x1bW5zO1xuICAgIGxldCBuID0gcmVzdWx0LnJvd3M7XG4gICAgbGV0IGggPSBuIC0gMTtcbiAgICB3aGlsZSAoaCA+PSAwKSB7XG4gICAgICBpZiAocmVzdWx0Lm1heFJvdyhoKSA9PT0gMCkge1xuICAgICAgICBoLS07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcCA9IDA7XG4gICAgICAgIGxldCBwaXZvdCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAocCA8IG4gJiYgcGl2b3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5nZXQoaCwgcCkgPT09IDEpIHtcbiAgICAgICAgICAgIHBpdm90ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGg7IGkrKykge1xuICAgICAgICAgIGxldCBmYWN0b3IgPSByZXN1bHQuZ2V0KGksIHApO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwOyBqIDwgbTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdG1wID0gcmVzdWx0LmdldChpLCBqKSAtIGZhY3RvciAqIHJlc3VsdC5nZXQoaCwgaik7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHRtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNldCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkJyk7XG4gIH1cblxuICByZXBlYXQob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHJvd3MgPSAxLCBjb2x1bW5zID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocm93cykgfHwgcm93cyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgfVxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihjb2x1bW5zKSB8fCBjb2x1bW5zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICB9XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzICogcm93cywgdGhpcy5jb2x1bW5zICogY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXRTdWJNYXRyaXgodGhpcywgdGhpcy5yb3dzICogaSwgdGhpcy5jb2x1bW5zICogaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBmaWxsKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHJldHVybiB0aGlzLm11bFMoLTEpO1xuICB9XG5cbiAgZ2V0Um93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IHJvdyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHJvdy5wdXNoKHRoaXMuZ2V0KGluZGV4LCBpKSk7XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICBnZXRSb3dWZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LnJvd1ZlY3Rvcih0aGlzLmdldFJvdyhpbmRleCkpO1xuICB9XG5cbiAgc2V0Um93KGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tSb3dWZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcFJvd3Mocm93MSwgcm93Mikge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93MSk7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KHJvdzEsIGkpO1xuICAgICAgdGhpcy5zZXQocm93MSwgaSwgdGhpcy5nZXQocm93MiwgaSkpO1xuICAgICAgdGhpcy5zZXQocm93MiwgaSwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IGNvbHVtbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbHVtbi5wdXNoKHRoaXMuZ2V0KGksIGluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBjb2x1bW47XG4gIH1cblxuICBnZXRDb2x1bW5WZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbihpbmRleCkpO1xuICB9XG5cbiAgc2V0Q29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcENvbHVtbnMoY29sdW1uMSwgY29sdW1uMikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uMSk7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KGksIGNvbHVtbjEpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMSwgdGhpcy5nZXQoaSwgY29sdW1uMikpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMiwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Um93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Q29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93KGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCB0aGlzLmdldChpbmRleCwgaSkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uKGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCB0aGlzLmdldChpLCBpbmRleCkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWF4KCkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA+IHYpIHtcbiAgICAgICAgICB2ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhJbmRleCgpIHtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgbGV0IGlkeCA9IFswLCAwXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA+IHYpIHtcbiAgICAgICAgICB2ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgICAgICBpZHhbMV0gPSBqO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtaW4oKSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopIDwgdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pbkluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopIDwgdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1heFJvdyhyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1heFJvd0luZGV4KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBsZXQgaWR4ID0gW3JvdywgMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgICBpZHhbMV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWluUm93KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWluUm93SW5kZXgocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGxldCBpZHggPSBbcm93LCAwXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICAgIGlkeFsxXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtYXhDb2x1bW4oY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhDb2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgbGV0IGlkeCA9IFswLCBjb2x1bW5dO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbkNvbHVtbihjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pbkNvbHVtbkluZGV4KGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBsZXQgaWR4ID0gWzAsIGNvbHVtbl07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgZGlhZygpIHtcbiAgICBsZXQgbWluID0gTWF0aC5taW4odGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGxldCBkaWFnID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgZGlhZy5wdXNoKHRoaXMuZ2V0KGksIGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWc7XG4gIH1cblxuICBub3JtKHR5cGUgPSAnZnJvYmVuaXVzJykge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmICh0eXBlID09PSAnbWF4Jykge1xuICAgICAgcmV0dXJuIHRoaXMubWF4KCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZnJvYmVuaXVzJykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5nZXQoaSwgaikgKiB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBjdW11bGF0aXZlU3VtKCkge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgc3VtICs9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRvdCh2ZWN0b3IyKSB7XG4gICAgaWYgKEFic3RyYWN0TWF0cml4LmlzTWF0cml4KHZlY3RvcjIpKSB2ZWN0b3IyID0gdmVjdG9yMi50bzFEQXJyYXkoKTtcbiAgICBsZXQgdmVjdG9yMSA9IHRoaXMudG8xREFycmF5KCk7XG4gICAgaWYgKHZlY3RvcjEubGVuZ3RoICE9PSB2ZWN0b3IyLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZlY3RvcnMgZG8gbm90IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICAgIH1cbiAgICBsZXQgZG90ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZlY3RvcjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRvdCArPSB2ZWN0b3IxW2ldICogdmVjdG9yMltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGRvdDtcbiAgfVxuXG4gIG1tdWwob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG5cbiAgICBsZXQgbSA9IHRoaXMucm93cztcbiAgICBsZXQgbiA9IHRoaXMuY29sdW1ucztcbiAgICBsZXQgcCA9IG90aGVyLmNvbHVtbnM7XG5cbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChtLCBwKTtcblxuICAgIGxldCBCY29saiA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBwOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgIEJjb2xqW2tdID0gb3RoZXIuZ2V0KGssIGopO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICBsZXQgcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgICAgcyArPSB0aGlzLmdldChpLCBrKSAqIEJjb2xqW2tdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuMngyKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDIsIDIpO1xuICAgIGNvbnN0IGExMSA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGIxMSA9IG90aGVyLmdldCgwLCAwKTtcbiAgICBjb25zdCBhMTIgPSB0aGlzLmdldCgwLCAxKTtcbiAgICBjb25zdCBiMTIgPSBvdGhlci5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGEyMiA9IHRoaXMuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgxLCAxKTtcblxuICAgIC8vIENvbXB1dGUgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiAgICBjb25zdCBtMSA9IChhMTEgKyBhMjIpICogKGIxMSArIGIyMik7XG4gICAgY29uc3QgbTIgPSAoYTIxICsgYTIyKSAqIGIxMTtcbiAgICBjb25zdCBtMyA9IGExMSAqIChiMTIgLSBiMjIpO1xuICAgIGNvbnN0IG00ID0gYTIyICogKGIyMSAtIGIxMSk7XG4gICAgY29uc3QgbTUgPSAoYTExICsgYTEyKSAqIGIyMjtcbiAgICBjb25zdCBtNiA9IChhMjEgLSBhMTEpICogKGIxMSArIGIxMik7XG4gICAgY29uc3QgbTcgPSAoYTEyIC0gYTIyKSAqIChiMjEgKyBiMjIpO1xuXG4gICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICBjb25zdCBjMDAgPSBtMSArIG00IC0gbTUgKyBtNztcbiAgICBjb25zdCBjMDEgPSBtMyArIG01O1xuICAgIGNvbnN0IGMxMCA9IG0yICsgbTQ7XG4gICAgY29uc3QgYzExID0gbTEgLSBtMiArIG0zICsgbTY7XG5cbiAgICByZXN1bHQuc2V0KDAsIDAsIGMwMCk7XG4gICAgcmVzdWx0LnNldCgwLCAxLCBjMDEpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuM3gzKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDMsIDMpO1xuXG4gICAgY29uc3QgYTAwID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgY29uc3QgYTAxID0gdGhpcy5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTAyID0gdGhpcy5nZXQoMCwgMik7XG4gICAgY29uc3QgYTEwID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYTExID0gdGhpcy5nZXQoMSwgMSk7XG4gICAgY29uc3QgYTEyID0gdGhpcy5nZXQoMSwgMik7XG4gICAgY29uc3QgYTIwID0gdGhpcy5nZXQoMiwgMCk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMiwgMSk7XG4gICAgY29uc3QgYTIyID0gdGhpcy5nZXQoMiwgMik7XG5cbiAgICBjb25zdCBiMDAgPSBvdGhlci5nZXQoMCwgMCk7XG4gICAgY29uc3QgYjAxID0gb3RoZXIuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGIwMiA9IG90aGVyLmdldCgwLCAyKTtcbiAgICBjb25zdCBiMTAgPSBvdGhlci5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjExID0gb3RoZXIuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIxMiA9IG90aGVyLmdldCgxLCAyKTtcbiAgICBjb25zdCBiMjAgPSBvdGhlci5nZXQoMiwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDIsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgyLCAyKTtcblxuICAgIGNvbnN0IG0xID0gKGEwMCArIGEwMSArIGEwMiAtIGExMCAtIGExMSAtIGEyMSAtIGEyMikgKiBiMTE7XG4gICAgY29uc3QgbTIgPSAoYTAwIC0gYTEwKSAqICgtYjAxICsgYjExKTtcbiAgICBjb25zdCBtMyA9IGExMSAqICgtYjAwICsgYjAxICsgYjEwIC0gYjExIC0gYjEyIC0gYjIwICsgYjIyKTtcbiAgICBjb25zdCBtNCA9ICgtYTAwICsgYTEwICsgYTExKSAqIChiMDAgLSBiMDEgKyBiMTEpO1xuICAgIGNvbnN0IG01ID0gKGExMCArIGExMSkgKiAoLWIwMCArIGIwMSk7XG4gICAgY29uc3QgbTYgPSBhMDAgKiBiMDA7XG4gICAgY29uc3QgbTcgPSAoLWEwMCArIGEyMCArIGEyMSkgKiAoYjAwIC0gYjAyICsgYjEyKTtcbiAgICBjb25zdCBtOCA9ICgtYTAwICsgYTIwKSAqIChiMDIgLSBiMTIpO1xuICAgIGNvbnN0IG05ID0gKGEyMCArIGEyMSkgKiAoLWIwMCArIGIwMik7XG4gICAgY29uc3QgbTEwID0gKGEwMCArIGEwMSArIGEwMiAtIGExMSAtIGExMiAtIGEyMCAtIGEyMSkgKiBiMTI7XG4gICAgY29uc3QgbTExID0gYTIxICogKC1iMDAgKyBiMDIgKyBiMTAgLSBiMTEgLSBiMTIgLSBiMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xMiA9ICgtYTAyICsgYTIxICsgYTIyKSAqIChiMTEgKyBiMjAgLSBiMjEpO1xuICAgIGNvbnN0IG0xMyA9IChhMDIgLSBhMjIpICogKGIxMSAtIGIyMSk7XG4gICAgY29uc3QgbTE0ID0gYTAyICogYjIwO1xuICAgIGNvbnN0IG0xNSA9IChhMjEgKyBhMjIpICogKC1iMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xNiA9ICgtYTAyICsgYTExICsgYTEyKSAqIChiMTIgKyBiMjAgLSBiMjIpO1xuICAgIGNvbnN0IG0xNyA9IChhMDIgLSBhMTIpICogKGIxMiAtIGIyMik7XG4gICAgY29uc3QgbTE4ID0gKGExMSArIGExMikgKiAoLWIyMCArIGIyMik7XG4gICAgY29uc3QgbTE5ID0gYTAxICogYjEwO1xuICAgIGNvbnN0IG0yMCA9IGExMiAqIGIyMTtcbiAgICBjb25zdCBtMjEgPSBhMTAgKiBiMDI7XG4gICAgY29uc3QgbTIyID0gYTIwICogYjAxO1xuICAgIGNvbnN0IG0yMyA9IGEyMiAqIGIyMjtcblxuICAgIGNvbnN0IGMwMCA9IG02ICsgbTE0ICsgbTE5O1xuICAgIGNvbnN0IGMwMSA9IG0xICsgbTQgKyBtNSArIG02ICsgbTEyICsgbTE0ICsgbTE1O1xuICAgIGNvbnN0IGMwMiA9IG02ICsgbTcgKyBtOSArIG0xMCArIG0xNCArIG0xNiArIG0xODtcbiAgICBjb25zdCBjMTAgPSBtMiArIG0zICsgbTQgKyBtNiArIG0xNCArIG0xNiArIG0xNztcbiAgICBjb25zdCBjMTEgPSBtMiArIG00ICsgbTUgKyBtNiArIG0yMDtcbiAgICBjb25zdCBjMTIgPSBtMTQgKyBtMTYgKyBtMTcgKyBtMTggKyBtMjE7XG4gICAgY29uc3QgYzIwID0gbTYgKyBtNyArIG04ICsgbTExICsgbTEyICsgbTEzICsgbTE0O1xuICAgIGNvbnN0IGMyMSA9IG0xMiArIG0xMyArIG0xNCArIG0xNSArIG0yMjtcbiAgICBjb25zdCBjMjIgPSBtNiArIG03ICsgbTggKyBtOSArIG0yMztcblxuICAgIHJlc3VsdC5zZXQoMCwgMCwgYzAwKTtcbiAgICByZXN1bHQuc2V0KDAsIDEsIGMwMSk7XG4gICAgcmVzdWx0LnNldCgwLCAyLCBjMDIpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmVzdWx0LnNldCgxLCAyLCBjMTIpO1xuICAgIHJlc3VsdC5zZXQoMiwgMCwgYzIwKTtcbiAgICByZXN1bHQuc2V0KDIsIDEsIGMyMSk7XG4gICAgcmVzdWx0LnNldCgyLCAyLCBjMjIpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBtbXVsU3RyYXNzZW4oeSkge1xuICAgIHkgPSBNYXRyaXguY2hlY2tNYXRyaXgoeSk7XG4gICAgbGV0IHggPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IHIxID0geC5yb3dzO1xuICAgIGxldCBjMSA9IHguY29sdW1ucztcbiAgICBsZXQgcjIgPSB5LnJvd3M7XG4gICAgbGV0IGMyID0geS5jb2x1bW5zO1xuICAgIGlmIChjMSAhPT0gcjIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNdWx0aXBseWluZyAke3IxfSB4ICR7YzF9IGFuZCAke3IyfSB4ICR7YzJ9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUHV0IGEgbWF0cml4IGludG8gdGhlIHRvcCBsZWZ0IG9mIGEgbWF0cml4IG9mIHplcm9zLlxuICAgIC8vIGByb3dzYCBhbmQgYGNvbHNgIGFyZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgb3V0cHV0IG1hdHJpeC5cbiAgICBmdW5jdGlvbiBlbWJlZChtYXQsIHJvd3MsIGNvbHMpIHtcbiAgICAgIGxldCByID0gbWF0LnJvd3M7XG4gICAgICBsZXQgYyA9IG1hdC5jb2x1bW5zO1xuICAgICAgaWYgKHIgPT09IHJvd3MgJiYgYyA9PT0gY29scykge1xuICAgICAgICByZXR1cm4gbWF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlc3VsdGF0ID0gQWJzdHJhY3RNYXRyaXguemVyb3Mocm93cywgY29scyk7XG4gICAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KG1hdCwgMCwgMCk7XG4gICAgICAgIHJldHVybiByZXN1bHRhdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgYm90aCBtYXRyaWNlcyBhcmUgdGhlIHNhbWUgc2l6ZS5cbiAgICAvLyBUaGlzIGlzIGV4Y2x1c2l2ZWx5IGZvciBzaW1wbGljaXR5OlxuICAgIC8vIHRoaXMgYWxnb3JpdGhtIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIG1hdHJpY2VzIG9mIGRpZmZlcmVudCBzaXplcy5cblxuICAgIGxldCByID0gTWF0aC5tYXgocjEsIHIyKTtcbiAgICBsZXQgYyA9IE1hdGgubWF4KGMxLCBjMik7XG4gICAgeCA9IGVtYmVkKHgsIHIsIGMpO1xuICAgIHkgPSBlbWJlZCh5LCByLCBjKTtcblxuICAgIC8vIE91ciByZWN1cnNpdmUgbXVsdGlwbGljYXRpb24gZnVuY3Rpb24uXG4gICAgZnVuY3Rpb24gYmxvY2tNdWx0KGEsIGIsIHJvd3MsIGNvbHMpIHtcbiAgICAgIC8vIEZvciBzbWFsbCBtYXRyaWNlcywgcmVzb3J0IHRvIG5haXZlIG11bHRpcGxpY2F0aW9uLlxuICAgICAgaWYgKHJvd3MgPD0gNTEyIHx8IGNvbHMgPD0gNTEyKSB7XG4gICAgICAgIHJldHVybiBhLm1tdWwoYik7IC8vIGEgaXMgZXF1aXZhbGVudCB0byB0aGlzXG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGR5bmFtaWMgcGFkZGluZy5cbiAgICAgIGlmIChyb3dzICUgMiA9PT0gMSAmJiBjb2xzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cyArIDEsIGNvbHMgKyAxKTtcbiAgICAgICAgYiA9IGVtYmVkKGIsIHJvd3MgKyAxLCBjb2xzICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKHJvd3MgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzICsgMSwgY29scyk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzICsgMSwgY29scyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHMgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBoYWxmUm93cyA9IHBhcnNlSW50KGEucm93cyAvIDIsIDEwKTtcbiAgICAgIGxldCBoYWxmQ29scyA9IHBhcnNlSW50KGEuY29sdW1ucyAvIDIsIDEwKTtcbiAgICAgIC8vIFN1YmRpdmlkZSBpbnB1dCBtYXRyaWNlcy5cbiAgICAgIGxldCBhMTEgPSBhLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG4gICAgICBsZXQgYjExID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuXG4gICAgICBsZXQgYTEyID0gYS5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjEyID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYi5jb2x1bW5zIC0gMSk7XG5cbiAgICAgIGxldCBhMjEgPSBhLnN1Yk1hdHJpeChoYWxmUm93cywgYS5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcbiAgICAgIGxldCBiMjEgPSBiLnN1Yk1hdHJpeChoYWxmUm93cywgYi5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcblxuICAgICAgbGV0IGEyMiA9IGEuc3ViTWF0cml4KGhhbGZSb3dzLCBhLnJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjIyID0gYi5zdWJNYXRyaXgoaGFsZlJvd3MsIGIucm93cyAtIDEsIGhhbGZDb2xzLCBiLmNvbHVtbnMgLSAxKTtcblxuICAgICAgLy8gQ29tcHV0ZSBpbnRlcm1lZGlhdGUgdmFsdWVzLlxuICAgICAgbGV0IG0xID0gYmxvY2tNdWx0KFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYTExLCBhMjIpLFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYjExLCBiMjIpLFxuICAgICAgICBoYWxmUm93cyxcbiAgICAgICAgaGFsZkNvbHMsXG4gICAgICApO1xuICAgICAgbGV0IG0yID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMjEsIGEyMiksIGIxMSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtMyA9IGJsb2NrTXVsdChhMTEsIEFic3RyYWN0TWF0cml4LnN1YihiMTIsIGIyMiksIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTQgPSBibG9ja011bHQoYTIyLCBBYnN0cmFjdE1hdHJpeC5zdWIoYjIxLCBiMTEpLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG01ID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMTEsIGExMiksIGIyMiwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNiA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGEyMSwgYTExKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIxMSwgYjEyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcbiAgICAgIGxldCBtNyA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGExMiwgYTIyKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIyMSwgYjIyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICAgIGxldCBjMTEgPSBBYnN0cmFjdE1hdHJpeC5hZGQobTEsIG00KTtcbiAgICAgIGMxMS5zdWIobTUpO1xuICAgICAgYzExLmFkZChtNyk7XG4gICAgICBsZXQgYzEyID0gQWJzdHJhY3RNYXRyaXguYWRkKG0zLCBtNSk7XG4gICAgICBsZXQgYzIxID0gQWJzdHJhY3RNYXRyaXguYWRkKG0yLCBtNCk7XG4gICAgICBsZXQgYzIyID0gQWJzdHJhY3RNYXRyaXguc3ViKG0xLCBtMik7XG4gICAgICBjMjIuYWRkKG0zKTtcbiAgICAgIGMyMi5hZGQobTYpO1xuXG4gICAgICAvLyBDcm9wIG91dHB1dCB0byB0aGUgZGVzaXJlZCBzaXplICh1bmRvIGR5bmFtaWMgcGFkZGluZykuXG4gICAgICBsZXQgcmVzdWx0YXQgPSBBYnN0cmFjdE1hdHJpeC56ZXJvcygyICogYzExLnJvd3MsIDIgKiBjMTEuY29sdW1ucyk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMTEsIDAsIDApO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzEyLCBjMTEucm93cywgMCk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMjEsIDAsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMyMiwgYzExLnJvd3MsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJldHVybiByZXN1bHRhdC5zdWJNYXRyaXgoMCwgcm93cyAtIDEsIDAsIGNvbHMgLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2tNdWx0KHgsIHksIHIsIGMpO1xuICB9XG5cbiAgc2NhbGVSb3dzKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coaSk7XG4gICAgICBpZiAocm93Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzY2FsZShyb3csIHsgbWluLCBtYXgsIG91dHB1dDogcm93IH0pO1xuICAgICAgfVxuICAgICAgbmV3TWF0cml4LnNldFJvdyhpLCByb3cpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc2NhbGVDb2x1bW5zKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW4oaSk7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCkge1xuICAgICAgICByZXNjYWxlKGNvbHVtbiwge1xuICAgICAgICAgIG1pbjogbWluLFxuICAgICAgICAgIG1heDogbWF4LFxuICAgICAgICAgIG91dHB1dDogY29sdW1uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5ld01hdHJpeC5zZXRDb2x1bW4oaSwgY29sdW1uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIGZsaXBSb3dzKCkge1xuICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguY2VpbCh0aGlzLmNvbHVtbnMgLyAyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1pZGRsZTsgaisrKSB7XG4gICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZ2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgbGFzdCk7XG4gICAgICAgIHRoaXMuc2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqLCBmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxpcENvbHVtbnMoKSB7XG4gICAgY29uc3QgbWlkZGxlID0gTWF0aC5jZWlsKHRoaXMucm93cyAvIDIpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlkZGxlOyBpKyspIHtcbiAgICAgICAgbGV0IGZpcnN0ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIGxldCBsYXN0ID0gdGhpcy5nZXQodGhpcy5yb3dzIC0gMSAtIGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBsYXN0KTtcbiAgICAgICAgdGhpcy5zZXQodGhpcy5yb3dzIC0gMSAtIGksIGosIGZpcnN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBrcm9uZWNrZXJQcm9kdWN0KG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuXG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSB0aGlzLmNvbHVtbnM7XG4gICAgbGV0IHAgPSBvdGhlci5yb3dzO1xuICAgIGxldCBxID0gb3RoZXIuY29sdW1ucztcblxuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KG0gKiBwLCBuICogcSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcDsgaysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBxOyBsKyspIHtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQocCAqIGkgKyBrLCBxICogaiArIGwsIHRoaXMuZ2V0KGksIGopICogb3RoZXIuZ2V0KGssIGwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGtyb25lY2tlclN1bShvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBpZiAoIXRoaXMuaXNTcXVhcmUoKSB8fCAhb3RoZXIuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLcm9uZWNrZXIgU3VtIG5lZWRzIHR3byBTcXVhcmUgTWF0cmljZXMnKTtcbiAgICB9XG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSBvdGhlci5yb3dzO1xuICAgIGxldCBBeEkgPSB0aGlzLmtyb25lY2tlclByb2R1Y3QoTWF0cml4LmV5ZShuLCBuKSk7XG4gICAgbGV0IEl4QiA9IE1hdHJpeC5leWUobSwgbSkua3JvbmVja2VyUHJvZHVjdChvdGhlcik7XG4gICAgcmV0dXJuIEF4SS5hZGQoSXhCKTtcbiAgfVxuXG4gIHRyYW5zcG9zZSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCh0aGlzLmNvbHVtbnMsIHRoaXMucm93cyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICByZXN1bHQuc2V0KGosIGksIHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNvcnRSb3dzKGNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVOdW1iZXJzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgdGhpcy5zZXRSb3coaSwgdGhpcy5nZXRSb3coaSkuc29ydChjb21wYXJlRnVuY3Rpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzb3J0Q29sdW1ucyhjb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlTnVtYmVycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0Q29sdW1uKGksIHRoaXMuZ2V0Q29sdW1uKGkpLnNvcnQoY29tcGFyZUZ1bmN0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViTWF0cml4KHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KFxuICAgICAgZW5kUm93IC0gc3RhcnRSb3cgKyAxLFxuICAgICAgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxLFxuICAgICk7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRDb2x1bW47IGogPD0gZW5kQ29sdW1uOyBqKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChpIC0gc3RhcnRSb3csIGogLSBzdGFydENvbHVtbiwgdGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3ViTWF0cml4Um93KGluZGljZXMsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBpZiAoc3RhcnRDb2x1bW4gPT09IHVuZGVmaW5lZCkgc3RhcnRDb2x1bW4gPSAwO1xuICAgIGlmIChlbmRDb2x1bW4gPT09IHVuZGVmaW5lZCkgZW5kQ29sdW1uID0gdGhpcy5jb2x1bW5zIC0gMTtcbiAgICBpZiAoXG4gICAgICBzdGFydENvbHVtbiA+IGVuZENvbHVtbiB8fFxuICAgICAgc3RhcnRDb2x1bW4gPCAwIHx8XG4gICAgICBzdGFydENvbHVtbiA+PSB0aGlzLmNvbHVtbnMgfHxcbiAgICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICAgIGVuZENvbHVtbiA+PSB0aGlzLmNvbHVtbnNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcmd1bWVudCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChpbmRpY2VzLmxlbmd0aCwgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydENvbHVtbjsgaiA8PSBlbmRDb2x1bW47IGorKykge1xuICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB0aGlzLnJvd3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUm93IGluZGV4IG91dCBvZiByYW5nZTogJHtpbmRpY2VzW2ldfWApO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSwgaiAtIHN0YXJ0Q29sdW1uLCB0aGlzLmdldChpbmRpY2VzW2ldLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdWJNYXRyaXhDb2x1bW4oaW5kaWNlcywgc3RhcnRSb3csIGVuZFJvdykge1xuICAgIGlmIChzdGFydFJvdyA9PT0gdW5kZWZpbmVkKSBzdGFydFJvdyA9IDA7XG4gICAgaWYgKGVuZFJvdyA9PT0gdW5kZWZpbmVkKSBlbmRSb3cgPSB0aGlzLnJvd3MgLSAxO1xuICAgIGlmIChcbiAgICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgICBzdGFydFJvdyA8IDAgfHxcbiAgICAgIHN0YXJ0Um93ID49IHRoaXMucm93cyB8fFxuICAgICAgZW5kUm93IDwgMCB8fFxuICAgICAgZW5kUm93ID49IHRoaXMucm93c1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FyZ3VtZW50IG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KGVuZFJvdyAtIHN0YXJ0Um93ICsgMSwgaW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Um93OyBqIDw9IGVuZFJvdzsgaisrKSB7XG4gICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHRoaXMuY29sdW1ucykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlOiAke2luZGljZXNbaV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3TWF0cml4LnNldChqIC0gc3RhcnRSb3csIGksIHRoaXMuZ2V0KGosIGluZGljZXNbaV0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHNldFN1Yk1hdHJpeChtYXRyaXgsIHN0YXJ0Um93LCBzdGFydENvbHVtbikge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgbGV0IGVuZFJvdyA9IHN0YXJ0Um93ICsgbWF0cml4LnJvd3MgLSAxO1xuICAgIGxldCBlbmRDb2x1bW4gPSBzdGFydENvbHVtbiArIG1hdHJpeC5jb2x1bW5zIC0gMTtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KHN0YXJ0Um93ICsgaSwgc3RhcnRDb2x1bW4gKyBqLCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3Rpb24ocm93SW5kaWNlcywgY29sdW1uSW5kaWNlcykge1xuICAgIGxldCBpbmRpY2VzID0gY2hlY2tJbmRpY2VzKHRoaXMsIHJvd0luZGljZXMsIGNvbHVtbkluZGljZXMpO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHJvd0luZGljZXMubGVuZ3RoLCBjb2x1bW5JbmRpY2VzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRpY2VzLnJvdy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHJvd0luZGV4ID0gaW5kaWNlcy5yb3dbaV07XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGljZXMuY29sdW1uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGxldCBjb2x1bW5JbmRleCA9IGluZGljZXMuY29sdW1uW2pdO1xuICAgICAgICBuZXdNYXRyaXguc2V0KGksIGosIHRoaXMuZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgdHJhY2UoKSB7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBsZXQgdHJhY2UgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIHRyYWNlICs9IHRoaXMuZ2V0KGksIGkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJhY2U7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICBuZXdNYXRyaXguc2V0KHJvdywgY29sdW1uLCB0aGlzLmdldChyb3csIGNvbHVtbikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3VtKGJ5KSB7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgcmV0dXJuIHN1bUJ5Um93KHRoaXMpO1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHN1bUJ5Q29sdW1uKHRoaXMpO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBzdW1BbGwodGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHByb2R1Y3QoYnkpIHtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgICByZXR1cm4gcHJvZHVjdEJ5Um93KHRoaXMpO1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RCeUNvbHVtbih0aGlzKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gcHJvZHVjdEFsbCh0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgbWVhbihieSkge1xuICAgIGNvbnN0IHN1bSA9IHRoaXMuc3VtKGJ5KTtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgICBzdW1baV0gLz0gdGhpcy5jb2x1bW5zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgICAgICBzdW1baV0gLz0gdGhpcy5yb3dzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHN1bSAvIHRoaXMuc2l6ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgdmFyaWFuY2UoYnksIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHVuYmlhc2VkID0gdHJ1ZSwgbWVhbiA9IHRoaXMubWVhbihieSkgfSA9IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiB1bmJpYXNlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmJpYXNlZCBtdXN0IGJlIGEgYm9vbGVhbicpO1xuICAgIH1cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtZWFuKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUJ5Um93KHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG1lYW4pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVhbiBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlQnlDb2x1bW4odGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBtZWFuICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUFsbCh0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHN0YW5kYXJkRGV2aWF0aW9uKGJ5LCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB2YXJpYW5jZSA9IHRoaXMudmFyaWFuY2UoYnksIG9wdGlvbnMpO1xuICAgIGlmIChieSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gTWF0aC5zcXJ0KHZhcmlhbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YXJpYW5jZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXJpYW5jZVtpXSA9IE1hdGguc3FydCh2YXJpYW5jZVtpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFyaWFuY2U7XG4gICAgfVxuICB9XG5cbiAgY2VudGVyKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBjZW50ZXIgPSB0aGlzLm1lYW4oYnkpIH0gPSBvcHRpb25zO1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNlbnRlcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckJ5Um93KHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2VudGVyKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NlbnRlciBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyQnlDb2x1bW4odGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAodHlwZW9mIGNlbnRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckFsbCh0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgc2NhbGUoYnksIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBsZXQgc2NhbGUgPSBvcHRpb25zLnNjYWxlO1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgaWYgKHNjYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY2FsZSA9IGdldFNjYWxlQnlSb3codGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoc2NhbGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2NhbGUgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlQnlSb3codGhpcywgc2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKHNjYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY2FsZSA9IGdldFNjYWxlQnlDb2x1bW4odGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoc2NhbGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2NhbGUgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlQnlDb2x1bW4odGhpcywgc2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUFsbCh0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2NhbGUgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2NhbGUgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlQWxsKHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zKHRoaXMsIG9wdGlvbnMpO1xuICB9XG59XG5cbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5rbGFzcyA9ICdNYXRyaXgnO1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnKSB7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZVtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9XG4gICAgaW5zcGVjdE1hdHJpeDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZU51bWJlcnMoYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbi8vIFN5bm9ueW1zXG5BYnN0cmFjdE1hdHJpeC5yYW5kb20gPSBBYnN0cmFjdE1hdHJpeC5yYW5kO1xuQWJzdHJhY3RNYXRyaXgucmFuZG9tSW50ID0gQWJzdHJhY3RNYXRyaXgucmFuZEludDtcbkFic3RyYWN0TWF0cml4LmRpYWdvbmFsID0gQWJzdHJhY3RNYXRyaXguZGlhZztcbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaWFnb25hbCA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaWFnO1xuQWJzdHJhY3RNYXRyaXguaWRlbnRpdHkgPSBBYnN0cmFjdE1hdHJpeC5leWU7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubmVnYXRlID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5lZztcbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50ZW5zb3JQcm9kdWN0ID1cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmtyb25lY2tlclByb2R1Y3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFic3RyYWN0TWF0cml4IHtcbiAgY29uc3RydWN0b3IoblJvd3MsIG5Db2x1bW5zKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoTWF0cml4LmlzTWF0cml4KG5Sb3dzKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0cnVjdG9yLXJldHVyblxuICAgICAgcmV0dXJuIG5Sb3dzLmNsb25lKCk7XG4gICAgfSBlbHNlIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG5Sb3dzKSAmJiBuUm93cyA+PSAwKSB7XG4gICAgICAvLyBDcmVhdGUgYW4gZW1wdHkgbWF0cml4XG4gICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG5Db2x1bW5zKSAmJiBuQ29sdW1ucyA+PSAwKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblJvd3M7IGkrKykge1xuICAgICAgICAgIHRoaXMuZGF0YS5wdXNoKG5ldyBGbG9hdDY0QXJyYXkobkNvbHVtbnMpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbkNvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoblJvd3MpKSB7XG4gICAgICAvLyBDb3B5IHRoZSB2YWx1ZXMgZnJvbSB0aGUgMkQgYXJyYXlcbiAgICAgIGNvbnN0IGFycmF5RGF0YSA9IG5Sb3dzO1xuICAgICAgblJvd3MgPSBhcnJheURhdGEubGVuZ3RoO1xuICAgICAgbkNvbHVtbnMgPSBuUm93cyA/IGFycmF5RGF0YVswXS5sZW5ndGggOiAwO1xuICAgICAgaWYgKHR5cGVvZiBuQ29sdW1ucyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAnRGF0YSBtdXN0IGJlIGEgMkQgYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCcsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblJvd3M7IGkrKykge1xuICAgICAgICBpZiAoYXJyYXlEYXRhW2ldLmxlbmd0aCAhPT0gbkNvbHVtbnMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5jb25zaXN0ZW50IGFycmF5IGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEucHVzaChGbG9hdDY0QXJyYXkuZnJvbShhcnJheURhdGFbaV0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIgb3IgYW4gYXJyYXknLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yb3dzID0gblJvd3M7XG4gICAgdGhpcy5jb2x1bW5zID0gbkNvbHVtbnM7XG4gIH1cblxuICBzZXQocm93SW5kZXgsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtyb3dJbmRleF1bY29sdW1uSW5kZXhdO1xuICB9XG5cbiAgcmVtb3ZlUm93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5yb3dzIC09IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRSb3coaW5kZXgsIGFycmF5KSB7XG4gICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFycmF5ID0gaW5kZXg7XG4gICAgICBpbmRleCA9IHRoaXMucm93cztcbiAgICB9XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCwgdHJ1ZSk7XG4gICAgYXJyYXkgPSBGbG9hdDY0QXJyYXkuZnJvbShjaGVja1Jvd1ZlY3Rvcih0aGlzLCBhcnJheSkpO1xuICAgIHRoaXMuZGF0YS5zcGxpY2UoaW5kZXgsIDAsIGFycmF5KTtcbiAgICB0aGlzLnJvd3MgKz0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbihpbmRleCkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zIC0gMSk7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGV4OyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaiA9IGluZGV4ICsgMTsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqIC0gMV0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFbaV0gPSBuZXdSb3c7XG4gICAgfVxuICAgIHRoaXMuY29sdW1ucyAtPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGlmICh0eXBlb2YgYXJyYXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBhcnJheSA9IGluZGV4O1xuICAgICAgaW5kZXggPSB0aGlzLmNvbHVtbnM7XG4gICAgfVxuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgsIHRydWUpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IG5ld1JvdyA9IG5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zICsgMSk7XG4gICAgICBsZXQgaiA9IDA7XG4gICAgICBmb3IgKDsgaiA8IGluZGV4OyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgbmV3Um93W2orK10gPSBhcnJheVtpXTtcbiAgICAgIGZvciAoOyBqIDwgdGhpcy5jb2x1bW5zICsgMTsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqXSA9IHRoaXMuZGF0YVtpXVtqIC0gMV07XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFbaV0gPSBuZXdSb3c7XG4gICAgfVxuICAgIHRoaXMuY29sdW1ucyArPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/pseudoInverse.js": /*!**********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/pseudoInverse.js ***! \**********************************************************************/ /*! exports provided: pseudoInverse */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pseudoInverse\", function() { return pseudoInverse; });\n/* harmony import */ var _dc_svd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dc/svd */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/dc/svd.js\");\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n matrix = _matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"].checkMatrix(matrix);\n if (matrix.isEmpty()) {\n // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n // (0xn)*(nx0)*(0xn) = 0xn\n // (nx0)*(0xn)*(nx0) = nx0\n return matrix.transpose();\n }\n let svdSolution = new _dc_svd__WEBPACK_IMPORTED_MODULE_0__[\"default\"](matrix, { autoTranspose: true });\n\n let U = svdSolution.leftSingularVectors;\n let V = svdSolution.rightSingularVectors;\n let s = svdSolution.diagonal;\n\n for (let i = 0; i < s.length; i++) {\n if (Math.abs(s[i]) > threshold) {\n s[i] = 1.0 / s[i];\n } else {\n s[i] = 0.0;\n }\n }\n\n return V.mmul(_matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"].diag(s).mmul(U.transpose()));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3BzZXVkb0ludmVyc2UuanM/NDY3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQjtBQUNHOztBQUV2QjtBQUNQLFdBQVcsK0NBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLCtDQUFHLFVBQVUsc0JBQXNCOztBQUUzRDtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGNBQWM7QUFDL0I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLCtDQUFNO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9wc2V1ZG9JbnZlcnNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNWRCBmcm9tICcuL2RjL3N2ZCc7XG5pbXBvcnQgTWF0cml4IGZyb20gJy4vbWF0cml4JztcblxuZXhwb3J0IGZ1bmN0aW9uIHBzZXVkb0ludmVyc2UobWF0cml4LCB0aHJlc2hvbGQgPSBOdW1iZXIuRVBTSUxPTikge1xuICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgaWYgKG1hdHJpeC5pc0VtcHR5KCkpIHtcbiAgICAvLyB3aXRoIGEgemVybyBkaW1lbnNpb24sIHRoZSBwc2V1ZG8taW52ZXJzZSBpcyB0aGUgdHJhbnNwb3NlLCBzaW5jZSBhbGwgMHhuIGFuZCBueDAgbWF0cmljZXMgYXJlIHNpbmd1bGFyXG4gICAgLy8gKDB4bikqKG54MCkqKDB4bikgPSAweG5cbiAgICAvLyAobngwKSooMHhuKSoobngwKSA9IG54MFxuICAgIHJldHVybiBtYXRyaXgudHJhbnNwb3NlKCk7XG4gIH1cbiAgbGV0IHN2ZFNvbHV0aW9uID0gbmV3IFNWRChtYXRyaXgsIHsgYXV0b1RyYW5zcG9zZTogdHJ1ZSB9KTtcblxuICBsZXQgVSA9IHN2ZFNvbHV0aW9uLmxlZnRTaW5ndWxhclZlY3RvcnM7XG4gIGxldCBWID0gc3ZkU29sdXRpb24ucmlnaHRTaW5ndWxhclZlY3RvcnM7XG4gIGxldCBzID0gc3ZkU29sdXRpb24uZGlhZ29uYWw7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKE1hdGguYWJzKHNbaV0pID4gdGhyZXNob2xkKSB7XG4gICAgICBzW2ldID0gMS4wIC8gc1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc1tpXSA9IDAuMDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gVi5tbXVsKE1hdHJpeC5kaWFnKHMpLm1tdWwoVS50cmFuc3Bvc2UoKSkpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/pseudoInverse.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/stat.js": /*!*************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/stat.js ***! \*************************************************************/ /*! exports provided: sumByRow, sumByColumn, sumAll, productByRow, productByColumn, productAll, varianceByRow, varianceByColumn, varianceAll, centerByRow, centerByColumn, centerAll, getScaleByRow, scaleByRow, getScaleByColumn, scaleByColumn, getScaleAll, scaleAll */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sumByRow\", function() { return sumByRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sumByColumn\", function() { return sumByColumn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sumAll\", function() { return sumAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"productByRow\", function() { return productByRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"productByColumn\", function() { return productByColumn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"productAll\", function() { return productAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"varianceByRow\", function() { return varianceByRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"varianceByColumn\", function() { return varianceByColumn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"varianceAll\", function() { return varianceAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"centerByRow\", function() { return centerByRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"centerByColumn\", function() { return centerByColumn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"centerAll\", function() { return centerAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScaleByRow\", function() { return getScaleByRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleByRow\", function() { return scaleByRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScaleByColumn\", function() { return getScaleByColumn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleByColumn\", function() { return scaleByColumn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScaleAll\", function() { return getScaleAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleAll\", function() { return scaleAll; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n\n\nfunction sumByRow(matrix) {\n let sum = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"newArray\"])(matrix.rows);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumByColumn(matrix) {\n let sum = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"newArray\"])(matrix.columns);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumAll(matrix) {\n let v = 0;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction productByRow(matrix) {\n let sum = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"newArray\"])(matrix.rows, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productByColumn(matrix) {\n let sum = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"newArray\"])(matrix.columns, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productAll(matrix) {\n let v = 1;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v *= matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let i = 0; i < rows; i++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean[i];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n }\n }\n return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let j = 0; j < cols; j++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n x = matrix.get(i, j) - mean[j];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n }\n }\n return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const size = rows * cols;\n\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean;\n sum1 += x;\n sum2 += x * x;\n }\n }\n if (unbiased) {\n return (sum2 - (sum1 * sum1) / size) / (size - 1);\n } else {\n return (sum2 - (sum1 * sum1) / size) / size;\n }\n}\n\nfunction centerByRow(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[i]);\n }\n }\n}\n\nfunction centerByColumn(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[j]);\n }\n }\n}\n\nfunction centerAll(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean);\n }\n }\n}\n\nfunction getScaleByRow(matrix) {\n const scale = [];\n for (let i = 0; i < matrix.rows; i++) {\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[i]);\n }\n }\n}\n\nfunction getScaleByColumn(matrix) {\n const scale = [];\n for (let j = 0; j < matrix.columns; j++) {\n let sum = 0;\n for (let i = 0; i < matrix.rows; i++) {\n sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[j]);\n }\n }\n}\n\nfunction getScaleAll(matrix) {\n const divider = matrix.size - 1;\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n for (let i = 0; i < matrix.rows; i++) {\n sum += Math.pow(matrix.get(i, j), 2) / divider;\n }\n }\n return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3N0YXQuanM/MmY4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDOztBQUUzQjtBQUNQLFlBQVksc0RBQVE7QUFDcEIsaUJBQWlCLGlCQUFpQjtBQUNsQyxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxZQUFZLHNEQUFRO0FBQ3BCLGlCQUFpQixpQkFBaUI7QUFDbEMsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLFlBQVksc0RBQVE7QUFDcEIsaUJBQWlCLGlCQUFpQjtBQUNsQyxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxZQUFZLHNEQUFRO0FBQ3BCLGlCQUFpQixpQkFBaUI7QUFDbEMsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQixtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRU87QUFDUCxpQkFBaUIsaUJBQWlCO0FBQ2xDLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxpQkFBaUIsaUJBQWlCO0FBQ2xDLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxpQkFBaUIsaUJBQWlCO0FBQ2xDLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLGlCQUFpQixpQkFBaUI7QUFDbEMsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsaUJBQWlCLGlCQUFpQjtBQUNsQyxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixvQkFBb0I7QUFDckMsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsaUJBQWlCLGlCQUFpQjtBQUNsQyxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy9zdGF0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmV3QXJyYXkgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1CeUNvbHVtbihtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5jb2x1bW5zKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1bal0gKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUFsbChtYXRyaXgpIHtcbiAgbGV0IHYgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHYgKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlDb2x1bW4obWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXguY29sdW1ucywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2pdICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QWxsKG1hdHJpeCkge1xuICBsZXQgdiA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgdiAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQnlSb3cobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3QgdmFyaWFuY2UgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgIGxldCBzdW0xID0gMDtcbiAgICBsZXQgc3VtMiA9IDA7XG4gICAgbGV0IHggPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW5baV07XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgICBpZiAodW5iaWFzZWQpIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gY29scykgLyAoY29scyAtIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyBjb2xzKSAvIGNvbHMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFyaWFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUJ5Q29sdW1uKG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHZhcmlhbmNlID0gW107XG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICBsZXQgc3VtMSA9IDA7XG4gICAgbGV0IHN1bTIgPSAwO1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gICAgaWYgKHVuYmlhc2VkKSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHJvd3MpIC8gKHJvd3MgLSAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gcm93cykgLyByb3dzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcmlhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VBbGwobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3Qgc2l6ZSA9IHJvd3MgKiBjb2xzO1xuXG4gIGxldCBzdW0xID0gMDtcbiAgbGV0IHN1bTIgPSAwO1xuICBsZXQgeCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbjtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICB9XG4gIGlmICh1bmJpYXNlZCkge1xuICAgIHJldHVybiAoc3VtMiAtIChzdW0xICogc3VtMSkgLyBzaXplKSAvIChzaXplIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHNpemUpIC8gc2l6ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQnlSb3cobWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltpXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJCeUNvbHVtbihtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckFsbChtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlSb3cobWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5jb2x1bW5zIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlSb3cobWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlDb2x1bW4obWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5yb3dzIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlDb2x1bW4obWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQWxsKG1hdHJpeCkge1xuICBjb25zdCBkaXZpZGVyID0gbWF0cml4LnNpemUgLSAxO1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgICBzdW0gKz0gTWF0aC5wb3cobWF0cml4LmdldChpLCBqKSwgMikgLyBkaXZpZGVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFsbChtYXRyaXgsIHNjYWxlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC8gc2NhbGUpO1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/stat.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js": /*!*************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js ***! \*************************************************************/ /*! exports provided: checkRowIndex, checkColumnIndex, checkRowVector, checkColumnVector, checkIndices, checkRowIndices, checkColumnIndices, checkRange, newArray, checkNonEmpty */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRowIndex\", function() { return checkRowIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkColumnIndex\", function() { return checkColumnIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRowVector\", function() { return checkRowVector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkColumnVector\", function() { return checkColumnVector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkIndices\", function() { return checkIndices; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRowIndices\", function() { return checkRowIndices; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkColumnIndices\", function() { return checkColumnIndices; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRange\", function() { return checkRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"newArray\", function() { return newArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkNonEmpty\", function() { return checkNonEmpty; });\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n let max = outer ? matrix.rows : matrix.rows - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Row index out of range');\n }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n let max = outer ? matrix.columns : matrix.columns - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Column index out of range');\n }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError(\n 'vector size must be the same as the number of columns',\n );\n }\n return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.rows) {\n throw new RangeError('vector size must be the same as the number of rows');\n }\n return vector;\n}\n\nfunction checkIndices(matrix, rowIndices, columnIndices) {\n return {\n row: checkRowIndices(matrix, rowIndices),\n column: checkColumnIndices(matrix, columnIndices),\n };\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n if (typeof rowIndices !== 'object') {\n throw new TypeError('unexpected type for row indices');\n }\n\n let rowOut = rowIndices.some((r) => {\n return r < 0 || r >= matrix.rows;\n });\n\n if (rowOut) {\n throw new RangeError('row indices are out of range');\n }\n\n if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n return rowIndices;\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n if (typeof columnIndices !== 'object') {\n throw new TypeError('unexpected type for column indices');\n }\n\n let columnOut = columnIndices.some((c) => {\n return c < 0 || c >= matrix.columns;\n });\n\n if (columnOut) {\n throw new RangeError('column indices are out of range');\n }\n if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n return columnIndices;\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) {\n throw new RangeError('expected 4 arguments');\n }\n checkNumber('startRow', startRow);\n checkNumber('endRow', endRow);\n checkNumber('startColumn', startColumn);\n checkNumber('endColumn', endColumn);\n if (\n startRow > endRow ||\n startColumn > endColumn ||\n startRow < 0 ||\n startRow >= matrix.rows ||\n endRow < 0 ||\n endRow >= matrix.rows ||\n startColumn < 0 ||\n startColumn >= matrix.columns ||\n endColumn < 0 ||\n endColumn >= matrix.columns\n ) {\n throw new RangeError('Submatrix indices are out of range');\n }\n}\n\nfunction newArray(length, value = 0) {\n let array = [];\n for (let i = 0; i < length; i++) {\n array.push(value);\n }\n return array;\n}\n\nfunction checkNumber(name, value) {\n if (typeof value !== 'number') {\n throw new TypeError(`${name} must be a number`);\n }\n}\n\nfunction checkNonEmpty(matrix) {\n if (matrix.isEmpty()) {\n throw new Error('Empty matrix has no elements to index');\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3V0aWwuanM/YTk2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixZQUFZO0FBQ1osWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFlBQVk7QUFDWixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQixLQUFLO0FBQ2hDO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgYSByb3cgaW5kZXggaXMgbm90IG91dCBvZiBib3VuZHNcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtib29sZWFufSBbb3V0ZXJdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd0luZGV4KG1hdHJpeCwgaW5kZXgsIG91dGVyKSB7XG4gIGxldCBtYXggPSBvdXRlciA/IG1hdHJpeC5yb3dzIDogbWF0cml4LnJvd3MgLSAxO1xuICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1JvdyBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IGEgY29sdW1uIGluZGV4IGlzIG5vdCBvdXQgb2YgYm91bmRzXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW291dGVyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5JbmRleChtYXRyaXgsIGluZGV4LCBvdXRlcikge1xuICBsZXQgbWF4ID0gb3V0ZXIgPyBtYXRyaXguY29sdW1ucyA6IG1hdHJpeC5jb2x1bW5zIC0gMTtcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IG1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCB0aGUgcHJvdmlkZWQgdmVjdG9yIGlzIGFuIGFycmF5IHdpdGggdGhlIHJpZ2h0IGxlbmd0aFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtBcnJheXxNYXRyaXh9IHZlY3RvclxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dWZWN0b3IobWF0cml4LCB2ZWN0b3IpIHtcbiAgaWYgKHZlY3Rvci50bzFEQXJyYXkpIHtcbiAgICB2ZWN0b3IgPSB2ZWN0b3IudG8xREFycmF5KCk7XG4gIH1cbiAgaWYgKHZlY3Rvci5sZW5ndGggIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAndmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMnLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHZlY3Rvcjtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCB0aGUgcHJvdmlkZWQgdmVjdG9yIGlzIGFuIGFycmF5IHdpdGggdGhlIHJpZ2h0IGxlbmd0aFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtBcnJheXxNYXRyaXh9IHZlY3RvclxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5WZWN0b3IobWF0cml4LCB2ZWN0b3IpIHtcbiAgaWYgKHZlY3Rvci50bzFEQXJyYXkpIHtcbiAgICB2ZWN0b3IgPSB2ZWN0b3IudG8xREFycmF5KCk7XG4gIH1cbiAgaWYgKHZlY3Rvci5sZW5ndGggIT09IG1hdHJpeC5yb3dzKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiByb3dzJyk7XG4gIH1cbiAgcmV0dXJuIHZlY3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSW5kaWNlcyhtYXRyaXgsIHJvd0luZGljZXMsIGNvbHVtbkluZGljZXMpIHtcbiAgcmV0dXJuIHtcbiAgICByb3c6IGNoZWNrUm93SW5kaWNlcyhtYXRyaXgsIHJvd0luZGljZXMpLFxuICAgIGNvbHVtbjogY2hlY2tDb2x1bW5JbmRpY2VzKG1hdHJpeCwgY29sdW1uSW5kaWNlcyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd0luZGljZXMobWF0cml4LCByb3dJbmRpY2VzKSB7XG4gIGlmICh0eXBlb2Ygcm93SW5kaWNlcyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmV4cGVjdGVkIHR5cGUgZm9yIHJvdyBpbmRpY2VzJyk7XG4gIH1cblxuICBsZXQgcm93T3V0ID0gcm93SW5kaWNlcy5zb21lKChyKSA9PiB7XG4gICAgcmV0dXJuIHIgPCAwIHx8IHIgPj0gbWF0cml4LnJvd3M7XG4gIH0pO1xuXG4gIGlmIChyb3dPdXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigncm93IGluZGljZXMgYXJlIG91dCBvZiByYW5nZScpO1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KHJvd0luZGljZXMpKSByb3dJbmRpY2VzID0gQXJyYXkuZnJvbShyb3dJbmRpY2VzKTtcblxuICByZXR1cm4gcm93SW5kaWNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uSW5kaWNlcyhtYXRyaXgsIGNvbHVtbkluZGljZXMpIHtcbiAgaWYgKHR5cGVvZiBjb2x1bW5JbmRpY2VzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3VuZXhwZWN0ZWQgdHlwZSBmb3IgY29sdW1uIGluZGljZXMnKTtcbiAgfVxuXG4gIGxldCBjb2x1bW5PdXQgPSBjb2x1bW5JbmRpY2VzLnNvbWUoKGMpID0+IHtcbiAgICByZXR1cm4gYyA8IDAgfHwgYyA+PSBtYXRyaXguY29sdW1ucztcbiAgfSk7XG5cbiAgaWYgKGNvbHVtbk91dCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdjb2x1bW4gaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlJyk7XG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbHVtbkluZGljZXMpKSBjb2x1bW5JbmRpY2VzID0gQXJyYXkuZnJvbShjb2x1bW5JbmRpY2VzKTtcblxuICByZXR1cm4gY29sdW1uSW5kaWNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmFuZ2UobWF0cml4LCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoICE9PSA1KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGVjdGVkIDQgYXJndW1lbnRzJyk7XG4gIH1cbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Um93Jywgc3RhcnRSb3cpO1xuICBjaGVja051bWJlcignZW5kUm93JywgZW5kUm93KTtcbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Q29sdW1uJywgc3RhcnRDb2x1bW4pO1xuICBjaGVja051bWJlcignZW5kQ29sdW1uJywgZW5kQ29sdW1uKTtcbiAgaWYgKFxuICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgc3RhcnRDb2x1bW4gPiBlbmRDb2x1bW4gfHxcbiAgICBzdGFydFJvdyA8IDAgfHxcbiAgICBzdGFydFJvdyA+PSBtYXRyaXgucm93cyB8fFxuICAgIGVuZFJvdyA8IDAgfHxcbiAgICBlbmRSb3cgPj0gbWF0cml4LnJvd3MgfHxcbiAgICBzdGFydENvbHVtbiA8IDAgfHxcbiAgICBzdGFydENvbHVtbiA+PSBtYXRyaXguY29sdW1ucyB8fFxuICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICBlbmRDb2x1bW4gPj0gbWF0cml4LmNvbHVtbnNcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1N1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3QXJyYXkobGVuZ3RoLCB2YWx1ZSA9IDApIHtcbiAgbGV0IGFycmF5ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBhcnJheS5wdXNoKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTnVtYmVyKG5hbWUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTm9uRW1wdHkobWF0cml4KSB7XG4gIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Jyk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js": /*!*******************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BaseView; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\nclass BaseView extends _matrix__WEBPACK_IMPORTED_MODULE_0__[\"AbstractMatrix\"] {\n constructor(matrix, rows, columns) {\n super();\n this.matrix = matrix;\n this.rows = rows;\n this.columns = columns;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2Jhc2UuanM/ODVkNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMkM7O0FBRTVCLHVCQUF1QixzREFBYztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvdmlld3MvYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TWF0cml4IH0gZnJvbSAnLi4vbWF0cml4JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZVZpZXcgZXh0ZW5kcyBBYnN0cmFjdE1hdHJpeCB7XG4gIGNvbnN0cnVjdG9yKG1hdHJpeCwgcm93cywgY29sdW1ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tYXRyaXggPSBtYXRyaXg7XG4gICAgdGhpcy5yb3dzID0gcm93cztcbiAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/column.js": /*!*********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/column.js ***! \*********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixColumnView; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\n\n\nclass MatrixColumnView extends _base__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(matrix, column) {\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"checkColumnIndex\"])(matrix, column);\n super(matrix, matrix.rows, 1);\n this.column = column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.column, value);\n return this;\n }\n\n get(rowIndex) {\n return this.matrix.get(rowIndex, this.column);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2NvbHVtbi5qcz9kMjgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTJDOztBQUViOztBQUVmLCtCQUErQiw2Q0FBUTtBQUN0RDtBQUNBLElBQUksOERBQWdCO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvdmlld3MvY29sdW1uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2hlY2tDb2x1bW5JbmRleCB9IGZyb20gJy4uL3V0aWwnO1xuXG5pbXBvcnQgQmFzZVZpZXcgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4Q29sdW1uVmlldyBleHRlbmRzIEJhc2VWaWV3IHtcbiAgY29uc3RydWN0b3IobWF0cml4LCBjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KG1hdHJpeCwgY29sdW1uKTtcbiAgICBzdXBlcihtYXRyaXgsIG1hdHJpeC5yb3dzLCAxKTtcbiAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5tYXRyaXguc2V0KHJvd0luZGV4LCB0aGlzLmNvbHVtbiwgdmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KHJvd0luZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LmdldChyb3dJbmRleCwgdGhpcy5jb2x1bW4pO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/column.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/columnSelection.js": /*!******************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/columnSelection.js ***! \******************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixColumnSelectionView; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\n\n\nclass MatrixColumnSelectionView extends _base__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(matrix, columnIndices) {\n columnIndices = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"checkColumnIndices\"])(matrix, columnIndices);\n super(matrix, matrix.rows, columnIndices.length);\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2NvbHVtblNlbGVjdGlvbi5qcz9lMzFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDOztBQUVmOztBQUVmLHdDQUF3Qyw2Q0FBUTtBQUMvRDtBQUNBLG9CQUFvQixnRUFBa0I7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy92aWV3cy9jb2x1bW5TZWxlY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja0NvbHVtbkluZGljZXMgfSBmcm9tICcuLi91dGlsJztcblxuaW1wb3J0IEJhc2VWaWV3IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hdHJpeENvbHVtblNlbGVjdGlvblZpZXcgZXh0ZW5kcyBCYXNlVmlldyB7XG4gIGNvbnN0cnVjdG9yKG1hdHJpeCwgY29sdW1uSW5kaWNlcykge1xuICAgIGNvbHVtbkluZGljZXMgPSBjaGVja0NvbHVtbkluZGljZXMobWF0cml4LCBjb2x1bW5JbmRpY2VzKTtcbiAgICBzdXBlcihtYXRyaXgsIG1hdHJpeC5yb3dzLCBjb2x1bW5JbmRpY2VzLmxlbmd0aCk7XG4gICAgdGhpcy5jb2x1bW5JbmRpY2VzID0gY29sdW1uSW5kaWNlcztcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5tYXRyaXguc2V0KHJvd0luZGV4LCB0aGlzLmNvbHVtbkluZGljZXNbY29sdW1uSW5kZXhdLCB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LmdldChyb3dJbmRleCwgdGhpcy5jb2x1bW5JbmRpY2VzW2NvbHVtbkluZGV4XSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/columnSelection.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipColumn.js": /*!*************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipColumn.js ***! \*************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixFlipColumnView; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\nclass MatrixFlipColumnView extends _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2ZsaXBDb2x1bW4uanM/N2U4NCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBOEI7O0FBRWYsbUNBQW1DLDZDQUFRO0FBQzFEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvdmlld3MvZmxpcENvbHVtbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlVmlldyBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXhGbGlwQ29sdW1uVmlldyBleHRlbmRzIEJhc2VWaWV3IHtcbiAgY29uc3RydWN0b3IobWF0cml4KSB7XG4gICAgc3VwZXIobWF0cml4LCBtYXRyaXgucm93cywgbWF0cml4LmNvbHVtbnMpO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLm1hdHJpeC5zZXQocm93SW5kZXgsIHRoaXMuY29sdW1ucyAtIGNvbHVtbkluZGV4IC0gMSwgdmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkge1xuICAgIHJldHVybiB0aGlzLm1hdHJpeC5nZXQocm93SW5kZXgsIHRoaXMuY29sdW1ucyAtIGNvbHVtbkluZGV4IC0gMSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipColumn.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipRow.js": /*!**********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipRow.js ***! \**********************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixFlipRowView; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\nclass MatrixFlipRowView extends _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2ZsaXBSb3cuanM/ZGQzMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBOEI7O0FBRWYsZ0NBQWdDLDZDQUFRO0FBQ3ZEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvdmlld3MvZmxpcFJvdy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlVmlldyBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXhGbGlwUm93VmlldyBleHRlbmRzIEJhc2VWaWV3IHtcbiAgY29uc3RydWN0b3IobWF0cml4KSB7XG4gICAgc3VwZXIobWF0cml4LCBtYXRyaXgucm93cywgbWF0cml4LmNvbHVtbnMpO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLm1hdHJpeC5zZXQodGhpcy5yb3dzIC0gcm93SW5kZXggLSAxLCBjb2x1bW5JbmRleCwgdmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkge1xuICAgIHJldHVybiB0aGlzLm1hdHJpeC5nZXQodGhpcy5yb3dzIC0gcm93SW5kZXggLSAxLCBjb2x1bW5JbmRleCk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipRow.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/index.js": /*!********************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/index.js ***! \********************************************************************/ /*! exports provided: MatrixColumnView, MatrixColumnSelectionView, MatrixFlipColumnView, MatrixFlipRowView, MatrixRowView, MatrixRowSelectionView, MatrixSelectionView, MatrixSubView, MatrixTransposeView */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./column */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/column.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixColumnView\", function() { return _column__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _columnSelection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./columnSelection */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/columnSelection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixColumnSelectionView\", function() { return _columnSelection__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _flipColumn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flipColumn */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipColumn.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixFlipColumnView\", function() { return _flipColumn__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _flipRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./flipRow */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/flipRow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixFlipRowView\", function() { return _flipRow__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _row__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./row */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/row.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixRowView\", function() { return _row__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _rowSelection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rowSelection */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/rowSelection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixRowSelectionView\", function() { return _rowSelection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selection */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/selection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixSelectionView\", function() { return _selection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _sub__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sub */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/sub.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixSubView\", function() { return _sub__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _transpose__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./transpose */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/transpose.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MatrixTransposeView\", function() { return _transpose__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2luZGV4LmpzP2RiMTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUQ7QUFDa0I7QUFDVjtBQUNOO0FBQ1I7QUFDa0I7QUFDTjtBQUNaO0FBQ1kiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXRyaXhDb2x1bW5WaWV3IH0gZnJvbSAnLi9jb2x1bW4nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXRyaXhDb2x1bW5TZWxlY3Rpb25WaWV3IH0gZnJvbSAnLi9jb2x1bW5TZWxlY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXRyaXhGbGlwQ29sdW1uVmlldyB9IGZyb20gJy4vZmxpcENvbHVtbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hdHJpeEZsaXBSb3dWaWV3IH0gZnJvbSAnLi9mbGlwUm93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWF0cml4Um93VmlldyB9IGZyb20gJy4vcm93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWF0cml4Um93U2VsZWN0aW9uVmlldyB9IGZyb20gJy4vcm93U2VsZWN0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWF0cml4U2VsZWN0aW9uVmlldyB9IGZyb20gJy4vc2VsZWN0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWF0cml4U3ViVmlldyB9IGZyb20gJy4vc3ViJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWF0cml4VHJhbnNwb3NlVmlldyB9IGZyb20gJy4vdHJhbnNwb3NlJztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/index.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/row.js": /*!******************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/row.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixRowView; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\n\n\nclass MatrixRowView extends _base__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(matrix, row) {\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"checkRowIndex\"])(matrix, row);\n super(matrix, 1, matrix.columns);\n this.row = row;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.row, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.row, columnIndex);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL3Jvdy5qcz9kYWVjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdDOztBQUVWOztBQUVmLDRCQUE0Qiw2Q0FBUTtBQUNuRDtBQUNBLElBQUksMkRBQWE7QUFDakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy92aWV3cy9yb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja1Jvd0luZGV4IH0gZnJvbSAnLi4vdXRpbCc7XG5cbmltcG9ydCBCYXNlVmlldyBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXhSb3dWaWV3IGV4dGVuZHMgQmFzZVZpZXcge1xuICBjb25zdHJ1Y3RvcihtYXRyaXgsIHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgobWF0cml4LCByb3cpO1xuICAgIHN1cGVyKG1hdHJpeCwgMSwgbWF0cml4LmNvbHVtbnMpO1xuICAgIHRoaXMucm93ID0gcm93O1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLm1hdHJpeC5zZXQodGhpcy5yb3csIGNvbHVtbkluZGV4LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LmdldCh0aGlzLnJvdywgY29sdW1uSW5kZXgpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/row.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/rowSelection.js": /*!***************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/rowSelection.js ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixRowSelectionView; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\n\n\nclass MatrixRowSelectionView extends _base__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(matrix, rowIndices) {\n rowIndices = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"checkRowIndices\"])(matrix, rowIndices);\n super(matrix, rowIndices.length, matrix.columns);\n this.rowIndices = rowIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL3Jvd1NlbGVjdGlvbi5qcz9mNGEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBDOztBQUVaOztBQUVmLHFDQUFxQyw2Q0FBUTtBQUM1RDtBQUNBLGlCQUFpQiw2REFBZTtBQUNoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL3Jvd1NlbGVjdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNoZWNrUm93SW5kaWNlcyB9IGZyb20gJy4uL3V0aWwnO1xuXG5pbXBvcnQgQmFzZVZpZXcgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4Um93U2VsZWN0aW9uVmlldyBleHRlbmRzIEJhc2VWaWV3IHtcbiAgY29uc3RydWN0b3IobWF0cml4LCByb3dJbmRpY2VzKSB7XG4gICAgcm93SW5kaWNlcyA9IGNoZWNrUm93SW5kaWNlcyhtYXRyaXgsIHJvd0luZGljZXMpO1xuICAgIHN1cGVyKG1hdHJpeCwgcm93SW5kaWNlcy5sZW5ndGgsIG1hdHJpeC5jb2x1bW5zKTtcbiAgICB0aGlzLnJvd0luZGljZXMgPSByb3dJbmRpY2VzO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLm1hdHJpeC5zZXQodGhpcy5yb3dJbmRpY2VzW3Jvd0luZGV4XSwgY29sdW1uSW5kZXgsIHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRyaXguZ2V0KHRoaXMucm93SW5kaWNlc1tyb3dJbmRleF0sIGNvbHVtbkluZGV4KTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/rowSelection.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/selection.js": /*!************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/selection.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixSelectionView; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\n\n\nclass MatrixSelectionView extends _base__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(matrix, rowIndices, columnIndices) {\n let indices = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"checkIndices\"])(matrix, rowIndices, columnIndices);\n super(matrix, indices.row.length, indices.column.length);\n this.rowIndices = indices.row;\n this.columnIndices = indices.column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n );\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL3NlbGVjdGlvbi5qcz84NTAwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXVDOztBQUVUOztBQUVmLGtDQUFrQyw2Q0FBUTtBQUN6RDtBQUNBLGtCQUFrQiwwREFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy92aWV3cy9zZWxlY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja0luZGljZXMgfSBmcm9tICcuLi91dGlsJztcblxuaW1wb3J0IEJhc2VWaWV3IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hdHJpeFNlbGVjdGlvblZpZXcgZXh0ZW5kcyBCYXNlVmlldyB7XG4gIGNvbnN0cnVjdG9yKG1hdHJpeCwgcm93SW5kaWNlcywgY29sdW1uSW5kaWNlcykge1xuICAgIGxldCBpbmRpY2VzID0gY2hlY2tJbmRpY2VzKG1hdHJpeCwgcm93SW5kaWNlcywgY29sdW1uSW5kaWNlcyk7XG4gICAgc3VwZXIobWF0cml4LCBpbmRpY2VzLnJvdy5sZW5ndGgsIGluZGljZXMuY29sdW1uLmxlbmd0aCk7XG4gICAgdGhpcy5yb3dJbmRpY2VzID0gaW5kaWNlcy5yb3c7XG4gICAgdGhpcy5jb2x1bW5JbmRpY2VzID0gaW5kaWNlcy5jb2x1bW47XG4gIH1cblxuICBzZXQocm93SW5kZXgsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMubWF0cml4LnNldChcbiAgICAgIHRoaXMucm93SW5kaWNlc1tyb3dJbmRleF0sXG4gICAgICB0aGlzLmNvbHVtbkluZGljZXNbY29sdW1uSW5kZXhdLFxuICAgICAgdmFsdWUsXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRyaXguZ2V0KFxuICAgICAgdGhpcy5yb3dJbmRpY2VzW3Jvd0luZGV4XSxcbiAgICAgIHRoaXMuY29sdW1uSW5kaWNlc1tjb2x1bW5JbmRleF0sXG4gICAgKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/selection.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/sub.js": /*!******************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/sub.js ***! \******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixSubView; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/util.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\n\n\nclass MatrixSubView extends _base__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n constructor(matrix, startRow, endRow, startColumn, endColumn) {\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"checkRange\"])(matrix, startRow, endRow, startColumn, endColumn);\n super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n this.startRow = startRow;\n this.startColumn = startColumn;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n );\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL3N1Yi5qcz80ODEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFDOztBQUVQOztBQUVmLDRCQUE0Qiw2Q0FBUTtBQUNuRDtBQUNBLElBQUksd0RBQVU7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy92aWV3cy9zdWIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja1JhbmdlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmltcG9ydCBCYXNlVmlldyBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXhTdWJWaWV3IGV4dGVuZHMgQmFzZVZpZXcge1xuICBjb25zdHJ1Y3RvcihtYXRyaXgsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBjaGVja1JhbmdlKG1hdHJpeCwgc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7XG4gICAgc3VwZXIobWF0cml4LCBlbmRSb3cgLSBzdGFydFJvdyArIDEsIGVuZENvbHVtbiAtIHN0YXJ0Q29sdW1uICsgMSk7XG4gICAgdGhpcy5zdGFydFJvdyA9IHN0YXJ0Um93O1xuICAgIHRoaXMuc3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjtcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5tYXRyaXguc2V0KFxuICAgICAgdGhpcy5zdGFydFJvdyArIHJvd0luZGV4LFxuICAgICAgdGhpcy5zdGFydENvbHVtbiArIGNvbHVtbkluZGV4LFxuICAgICAgdmFsdWUsXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRyaXguZ2V0KFxuICAgICAgdGhpcy5zdGFydFJvdyArIHJvd0luZGV4LFxuICAgICAgdGhpcy5zdGFydENvbHVtbiArIGNvbHVtbkluZGV4LFxuICAgICk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/sub.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/transpose.js": /*!************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/transpose.js ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MatrixTransposeView; });\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/base.js\");\n\n\nclass MatrixTransposeView extends _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(matrix) {\n super(matrix, matrix.columns, matrix.rows);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(columnIndex, rowIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(columnIndex, rowIndex);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3ZpZXdzL3RyYW5zcG9zZS5qcz81NDc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUE4Qjs7QUFFZixrQ0FBa0MsNkNBQVE7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy92aWV3cy90cmFuc3Bvc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZVZpZXcgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWF0cml4VHJhbnNwb3NlVmlldyBleHRlbmRzIEJhc2VWaWV3IHtcbiAgY29uc3RydWN0b3IobWF0cml4KSB7XG4gICAgc3VwZXIobWF0cml4LCBtYXRyaXguY29sdW1ucywgbWF0cml4LnJvd3MpO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLm1hdHJpeC5zZXQoY29sdW1uSW5kZXgsIHJvd0luZGV4LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQocm93SW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LmdldChjb2x1bW5JbmRleCwgcm93SW5kZXgpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/views/transpose.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix1D.js": /*!*****************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix1D.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WrapperMatrix1D; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\nclass WrapperMatrix1D extends _matrix__WEBPACK_IMPORTED_MODULE_0__[\"AbstractMatrix\"] {\n constructor(data, options = {}) {\n const { rows = 1 } = options;\n\n if (data.length % rows !== 0) {\n throw new Error('the data length is not divisible by the number of rows');\n }\n super();\n this.rows = rows;\n this.columns = data.length / rows;\n this.data = data;\n }\n\n set(rowIndex, columnIndex, value) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n this.data[index] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n return this.data[index];\n }\n\n _calculateIndex(row, column) {\n return row * this.columns + column;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3dyYXAvV3JhcHBlck1hdHJpeDFELmpzP2NmYTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTJDOztBQUU1Qiw4QkFBOEIsc0RBQWM7QUFDM0QsZ0NBQWdDO0FBQ2hDLFdBQVcsV0FBVzs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy93cmFwL1dyYXBwZXJNYXRyaXgxRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TWF0cml4IH0gZnJvbSAnLi4vbWF0cml4JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV3JhcHBlck1hdHJpeDFEIGV4dGVuZHMgQWJzdHJhY3RNYXRyaXgge1xuICBjb25zdHJ1Y3RvcihkYXRhLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IHJvd3MgPSAxIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKGRhdGEubGVuZ3RoICUgcm93cyAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgZGF0YSBsZW5ndGggaXMgbm90IGRpdmlzaWJsZSBieSB0aGUgbnVtYmVyIG9mIHJvd3MnKTtcbiAgICB9XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJvd3MgPSByb3dzO1xuICAgIHRoaXMuY29sdW1ucyA9IGRhdGEubGVuZ3RoIC8gcm93cztcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLl9jYWxjdWxhdGVJbmRleChyb3dJbmRleCwgY29sdW1uSW5kZXgpO1xuICAgIHRoaXMuZGF0YVtpbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLl9jYWxjdWxhdGVJbmRleChyb3dJbmRleCwgY29sdW1uSW5kZXgpO1xuICAgIHJldHVybiB0aGlzLmRhdGFbaW5kZXhdO1xuICB9XG5cbiAgX2NhbGN1bGF0ZUluZGV4KHJvdywgY29sdW1uKSB7XG4gICAgcmV0dXJuIHJvdyAqIHRoaXMuY29sdW1ucyArIGNvbHVtbjtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix1D.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js": /*!*****************************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WrapperMatrix2D; });\n/* harmony import */ var _matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matrix */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/matrix.js\");\n\n\nclass WrapperMatrix2D extends _matrix__WEBPACK_IMPORTED_MODULE_0__[\"AbstractMatrix\"] {\n constructor(data) {\n super();\n this.data = data;\n this.rows = data.length;\n this.columns = data[0].length;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3dyYXAvV3JhcHBlck1hdHJpeDJELmpzPzZlNDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTJDOztBQUU1Qiw4QkFBOEIsc0RBQWM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19tbC1tYXRyaXhANi44LjJAbWwtbWF0cml4L3NyYy93cmFwL1dyYXBwZXJNYXRyaXgyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TWF0cml4IH0gZnJvbSAnLi4vbWF0cml4JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV3JhcHBlck1hdHJpeDJEIGV4dGVuZHMgQWJzdHJhY3RNYXRyaXgge1xuICBjb25zdHJ1Y3RvcihkYXRhKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMucm93cyA9IGRhdGEubGVuZ3RoO1xuICAgIHRoaXMuY29sdW1ucyA9IGRhdGFbMF0ubGVuZ3RoO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLmRhdGFbcm93SW5kZXhdW2NvbHVtbkluZGV4XSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbcm93SW5kZXhdW2NvbHVtbkluZGV4XTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\n"); /***/ }), /***/ "./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/wrap.js": /*!******************************************************************!*\ !*** ./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/wrap.js ***! \******************************************************************/ /*! exports provided: wrap */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return wrap; });\n/* harmony import */ var _WrapperMatrix1D__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./WrapperMatrix1D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix1D.js\");\n/* harmony import */ var _WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WrapperMatrix2D */ \"./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/WrapperMatrix2D.js\");\n\n\n\nfunction wrap(array, options) {\n if (Array.isArray(array)) {\n if (array[0] && Array.isArray(array[0])) {\n return new _WrapperMatrix2D__WEBPACK_IMPORTED_MODULE_1__[\"default\"](array);\n } else {\n return new _WrapperMatrix1D__WEBPACK_IMPORTED_MODULE_0__[\"default\"](array, options);\n }\n } else {\n throw new Error('the argument is not an array');\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX21sLW1hdHJpeEA2LjguMkBtbC1tYXRyaXgvc3JjL3dyYXAvd3JhcC5qcz82YzY1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdEO0FBQ0E7O0FBRXpDO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQix3REFBZTtBQUNoQyxLQUFLO0FBQ0wsaUJBQWlCLHdEQUFlO0FBQ2hDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fbWwtbWF0cml4QDYuOC4yQG1sLW1hdHJpeC9zcmMvd3JhcC93cmFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyYXBwZXJNYXRyaXgxRCBmcm9tICcuL1dyYXBwZXJNYXRyaXgxRCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4vV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXAoYXJyYXksIG9wdGlvbnMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXkpKSB7XG4gICAgaWYgKGFycmF5WzBdICYmIEFycmF5LmlzQXJyYXkoYXJyYXlbMF0pKSB7XG4gICAgICByZXR1cm4gbmV3IFdyYXBwZXJNYXRyaXgyRChhcnJheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgV3JhcHBlck1hdHJpeDFEKGFycmF5LCBvcHRpb25zKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgYXJndW1lbnQgaXMgbm90IGFuIGFycmF5Jyk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_ml-matrix@6.8.2@ml-matrix/src/wrap/wrap.js\n"); /***/ }), /***/ "./node_modules/_polyline-miter-util@1.0.1@polyline-miter-util/index.js": /*!******************************************************************************!*\ !*** ./node_modules/_polyline-miter-util@1.0.1@polyline-miter-util/index.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var add = __webpack_require__(/*! gl-vec2/add */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/add.js\")\nvar set = __webpack_require__(/*! gl-vec2/set */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/set.js\")\nvar normalize = __webpack_require__(/*! gl-vec2/normalize */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/normalize.js\")\nvar subtract = __webpack_require__(/*! gl-vec2/subtract */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/subtract.js\")\nvar dot = __webpack_require__(/*! gl-vec2/dot */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/dot.js\")\n\nvar tmp = [0, 0]\n\nmodule.exports.computeMiter = function computeMiter(tangent, miter, lineA, lineB, halfThick) {\n //get tangent line\n add(tangent, lineA, lineB)\n normalize(tangent, tangent)\n\n //get miter as a unit vector\n set(miter, -tangent[1], tangent[0])\n set(tmp, -lineA[1], lineA[0])\n\n //get the necessary length of our miter\n return halfThick / dot(miter, tmp)\n}\n\nmodule.exports.normal = function normal(out, dir) {\n //get perpendicular\n set(out, -dir[1], dir[0])\n return out\n}\n\nmodule.exports.direction = function direction(out, a, b) {\n //get unit dir of two lines\n subtract(out, a, b)\n normalize(out, out)\n return out\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3BvbHlsaW5lLW1pdGVyLXV0aWxAMS4wLjFAcG9seWxpbmUtbWl0ZXItdXRpbC9pbmRleC5qcz82OTQ3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyxpRUFBYTtBQUMvQixVQUFVLG1CQUFPLENBQUMsaUVBQWE7QUFDL0IsZ0JBQWdCLG1CQUFPLENBQUMsNkVBQW1CO0FBQzNDLGVBQWUsbUJBQU8sQ0FBQywyRUFBa0I7QUFDekMsVUFBVSxtQkFBTyxDQUFDLGlFQUFhOztBQUUvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19wb2x5bGluZS1taXRlci11dGlsQDEuMC4xQHBvbHlsaW5lLW1pdGVyLXV0aWwvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYWRkID0gcmVxdWlyZSgnZ2wtdmVjMi9hZGQnKVxudmFyIHNldCA9IHJlcXVpcmUoJ2dsLXZlYzIvc2V0JylcbnZhciBub3JtYWxpemUgPSByZXF1aXJlKCdnbC12ZWMyL25vcm1hbGl6ZScpXG52YXIgc3VidHJhY3QgPSByZXF1aXJlKCdnbC12ZWMyL3N1YnRyYWN0JylcbnZhciBkb3QgPSByZXF1aXJlKCdnbC12ZWMyL2RvdCcpXG5cbnZhciB0bXAgPSBbMCwgMF1cblxubW9kdWxlLmV4cG9ydHMuY29tcHV0ZU1pdGVyID0gZnVuY3Rpb24gY29tcHV0ZU1pdGVyKHRhbmdlbnQsIG1pdGVyLCBsaW5lQSwgbGluZUIsIGhhbGZUaGljaykge1xuICAgIC8vZ2V0IHRhbmdlbnQgbGluZVxuICAgIGFkZCh0YW5nZW50LCBsaW5lQSwgbGluZUIpXG4gICAgbm9ybWFsaXplKHRhbmdlbnQsIHRhbmdlbnQpXG5cbiAgICAvL2dldCBtaXRlciBhcyBhIHVuaXQgdmVjdG9yXG4gICAgc2V0KG1pdGVyLCAtdGFuZ2VudFsxXSwgdGFuZ2VudFswXSlcbiAgICBzZXQodG1wLCAtbGluZUFbMV0sIGxpbmVBWzBdKVxuXG4gICAgLy9nZXQgdGhlIG5lY2Vzc2FyeSBsZW5ndGggb2Ygb3VyIG1pdGVyXG4gICAgcmV0dXJuIGhhbGZUaGljayAvIGRvdChtaXRlciwgdG1wKVxufVxuXG5tb2R1bGUuZXhwb3J0cy5ub3JtYWwgPSBmdW5jdGlvbiBub3JtYWwob3V0LCBkaXIpIHtcbiAgICAvL2dldCBwZXJwZW5kaWN1bGFyXG4gICAgc2V0KG91dCwgLWRpclsxXSwgZGlyWzBdKVxuICAgIHJldHVybiBvdXRcbn1cblxubW9kdWxlLmV4cG9ydHMuZGlyZWN0aW9uID0gZnVuY3Rpb24gZGlyZWN0aW9uKG91dCwgYSwgYikge1xuICAgIC8vZ2V0IHVuaXQgZGlyIG9mIHR3byBsaW5lc1xuICAgIHN1YnRyYWN0KG91dCwgYSwgYilcbiAgICBub3JtYWxpemUob3V0LCBvdXQpXG4gICAgcmV0dXJuIG91dFxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_polyline-miter-util@1.0.1@polyline-miter-util/index.js\n"); /***/ }), /***/ "./node_modules/_process@0.11.10@process/browser.js": /*!**********************************************************!*\ !*** ./node_modules/_process@0.11.10@process/browser.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3Byb2Nlc3NAMC4xMS4xMEBwcm9jZXNzL2Jyb3dzZXIuanM/NGMzOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixVQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19wcm9jZXNzQDAuMTEuMTBAcHJvY2Vzcy9icm93c2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_process@0.11.10@process/browser.js\n"); /***/ }), /***/ "./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js": /*!***************************************************************************!*\ !*** ./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/* WEBPACK VAR INJECTION */(function(process, global) {/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../_process@0.11.10@process/browser.js */ \"./node_modules/_process@0.11.10@process/browser.js\"), __webpack_require__(/*! ./../_webpack@4.46.0@webpack/buildin/global.js */ \"./node_modules/_webpack@4.46.0@webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3JlZmxlY3QtbWV0YWRhdGFAMC4xLjEzQHJlZmxlY3QtbWV0YWRhdGEvUmVmbGVjdC5qcz8wNGJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsbURBQW1EO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRSw2QkFBNkIsZ0JBQWdCLGtCQUFrQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw0Q0FBNEM7QUFDM0U7QUFDQSxtQ0FBbUMsd0JBQXdCLGtCQUFrQixFQUFFO0FBQy9FLG1DQUFtQyx5QkFBeUIsRUFBRSxFQUFFO0FBQ2hFO0FBQ0EsdUNBQXVDLDhCQUE4QjtBQUNyRSx1Q0FBdUMsbUJBQW1CLEVBQUU7QUFDNUQ7QUFDQSx1Q0FBdUMscURBQXFEO0FBQzVGLHVDQUF1QyxpQkFBaUIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVHQUF1RztBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQWdGO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxRUFBcUU7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQywyQ0FBMkM7QUFDM0MsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsdUJBQXVCO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELDBCQUEwQjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLGFBQWE7QUFDaEYscUVBQXFFLGFBQWE7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsMEJBQTBCLEVBQUU7QUFDbEU7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixvREFBb0QsK0NBQStDO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLFVBQVU7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsMERBQTBEO0FBQzVHLG9EQUFvRCw0REFBNEQ7QUFDaEgscURBQXFELDREQUE0RDtBQUNqSCwyREFBMkQsdUJBQXVCO0FBQ2xGLDZEQUE2RCx1QkFBdUI7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsdUJBQXVCLEVBQUU7QUFDL0Q7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixzREFBc0QsNkJBQTZCO0FBQ25GLHNEQUFzRCwwQ0FBMEM7QUFDaEcseURBQXlELGdDQUFnQztBQUN6RixtREFBbUQsbUJBQW1CO0FBQ3RFLGtEQUFrRCx5QkFBeUI7QUFDM0Usb0RBQW9ELDJCQUEyQjtBQUMvRSxxREFBcUQsNEJBQTRCO0FBQ2pGLDJEQUEyRCxvQkFBb0I7QUFDL0UsNkRBQTZELG9CQUFvQjtBQUNqRjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCwwQkFBMEI7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsVUFBVTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxvQkFBb0I7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQywwQkFBMEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX3JlZmxlY3QtbWV0YWRhdGFAMC4xLjEzQHJlZmxlY3QtbWV0YWRhdGEvUmVmbGVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChDKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cblxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xudmFyIFJlZmxlY3Q7XG4oZnVuY3Rpb24gKFJlZmxlY3QpIHtcbiAgICAvLyBNZXRhZGF0YSBQcm9wb3NhbFxuICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvXG4gICAgKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgICAgIHZhciByb290ID0gdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6XG4gICAgICAgICAgICB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzID09PSBcIm9iamVjdFwiID8gdGhpcyA6XG4gICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uKFwicmV0dXJuIHRoaXM7XCIpKCk7XG4gICAgICAgIHZhciBleHBvcnRlciA9IG1ha2VFeHBvcnRlcihSZWZsZWN0KTtcbiAgICAgICAgaWYgKHR5cGVvZiByb290LlJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHJvb3QuUmVmbGVjdCA9IFJlZmxlY3Q7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBleHBvcnRlciA9IG1ha2VFeHBvcnRlcihyb290LlJlZmxlY3QsIGV4cG9ydGVyKTtcbiAgICAgICAgfVxuICAgICAgICBmYWN0b3J5KGV4cG9ydGVyKTtcbiAgICAgICAgZnVuY3Rpb24gbWFrZUV4cG9ydGVyKHRhcmdldCwgcHJldmlvdXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHsgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXMpXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pKGZ1bmN0aW9uIChleHBvcnRlcikge1xuICAgICAgICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgICAgICAgLy8gZmVhdHVyZSB0ZXN0IGZvciBTeW1ib2wgc3VwcG9ydFxuICAgICAgICB2YXIgc3VwcG9ydHNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIHZhciB0b1ByaW1pdGl2ZVN5bWJvbCA9IHN1cHBvcnRzU3ltYm9sICYmIHR5cGVvZiBTeW1ib2wudG9QcmltaXRpdmUgIT09IFwidW5kZWZpbmVkXCIgPyBTeW1ib2wudG9QcmltaXRpdmUgOiBcIkBAdG9QcmltaXRpdmVcIjtcbiAgICAgICAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gc3VwcG9ydHNTeW1ib2wgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciAhPT0gXCJ1bmRlZmluZWRcIiA/IFN5bWJvbC5pdGVyYXRvciA6IFwiQEBpdGVyYXRvclwiO1xuICAgICAgICB2YXIgc3VwcG9ydHNDcmVhdGUgPSB0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gXCJmdW5jdGlvblwiOyAvLyBmZWF0dXJlIHRlc3QgZm9yIE9iamVjdC5jcmVhdGUgc3VwcG9ydFxuICAgICAgICB2YXIgc3VwcG9ydHNQcm90byA9IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXk7IC8vIGZlYXR1cmUgdGVzdCBmb3IgX19wcm90b19fIHN1cHBvcnRcbiAgICAgICAgdmFyIGRvd25MZXZlbCA9ICFzdXBwb3J0c0NyZWF0ZSAmJiAhc3VwcG9ydHNQcm90bztcbiAgICAgICAgdmFyIEhhc2hNYXAgPSB7XG4gICAgICAgICAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IGluIGRpY3Rpb25hcnkgbW9kZSAoYS5rLmEuIFwic2xvd1wiIG1vZGUgaW4gdjgpXG4gICAgICAgICAgICBjcmVhdGU6IHN1cHBvcnRzQ3JlYXRlXG4gICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBNYWtlRGljdGlvbmFyeShPYmplY3QuY3JlYXRlKG51bGwpKTsgfVxuICAgICAgICAgICAgICAgIDogc3VwcG9ydHNQcm90b1xuICAgICAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1ha2VEaWN0aW9uYXJ5KHsgX19wcm90b19fOiBudWxsIH0pOyB9XG4gICAgICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gTWFrZURpY3Rpb25hcnkoe30pOyB9LFxuICAgICAgICAgICAgaGFzOiBkb3duTGV2ZWxcbiAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uIChtYXAsIGtleSkgeyByZXR1cm4gaGFzT3duLmNhbGwobWFwLCBrZXkpOyB9XG4gICAgICAgICAgICAgICAgOiBmdW5jdGlvbiAobWFwLCBrZXkpIHsgcmV0dXJuIGtleSBpbiBtYXA7IH0sXG4gICAgICAgICAgICBnZXQ6IGRvd25MZXZlbFxuICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBoYXNPd24uY2FsbChtYXAsIGtleSkgPyBtYXBba2V5XSA6IHVuZGVmaW5lZDsgfVxuICAgICAgICAgICAgICAgIDogZnVuY3Rpb24gKG1hcCwga2V5KSB7IHJldHVybiBtYXBba2V5XTsgfSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gTG9hZCBnbG9iYWwgb3Igc2hpbSB2ZXJzaW9ucyBvZiBNYXAsIFNldCwgYW5kIFdlYWtNYXBcbiAgICAgICAgdmFyIGZ1bmN0aW9uUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKEZ1bmN0aW9uKTtcbiAgICAgICAgdmFyIHVzZVBvbHlmaWxsID0gdHlwZW9mIHByb2Nlc3MgPT09IFwib2JqZWN0XCIgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnZbXCJSRUZMRUNUX01FVEFEQVRBX1VTRV9NQVBfUE9MWUZJTExcIl0gPT09IFwidHJ1ZVwiO1xuICAgICAgICB2YXIgX01hcCA9ICF1c2VQb2x5ZmlsbCAmJiB0eXBlb2YgTWFwID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIE1hcC5wcm90b3R5cGUuZW50cmllcyA9PT0gXCJmdW5jdGlvblwiID8gTWFwIDogQ3JlYXRlTWFwUG9seWZpbGwoKTtcbiAgICAgICAgdmFyIF9TZXQgPSAhdXNlUG9seWZpbGwgJiYgdHlwZW9mIFNldCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIiA/IFNldCA6IENyZWF0ZVNldFBvbHlmaWxsKCk7XG4gICAgICAgIHZhciBfV2Vha01hcCA9ICF1c2VQb2x5ZmlsbCAmJiB0eXBlb2YgV2Vha01hcCA9PT0gXCJmdW5jdGlvblwiID8gV2Vha01hcCA6IENyZWF0ZVdlYWtNYXBQb2x5ZmlsbCgpO1xuICAgICAgICAvLyBbW01ldGFkYXRhXV0gaW50ZXJuYWwgc2xvdFxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeS1vYmplY3QtaW50ZXJuYWwtbWV0aG9kcy1hbmQtaW50ZXJuYWwtc2xvdHNcbiAgICAgICAgdmFyIE1ldGFkYXRhID0gbmV3IF9XZWFrTWFwKCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBcHBsaWVzIGEgc2V0IG9mIGRlY29yYXRvcnMgdG8gYSBwcm9wZXJ0eSBvZiBhIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBkZWNvcmF0b3JzIEFuIGFycmF5IG9mIGRlY29yYXRvcnMuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgdG8gZGVjb3JhdGUuXG4gICAgICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSB0YXJnZXQga2V5LlxuICAgICAgICAgKiBAcmVtYXJrcyBEZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluIHJldmVyc2Ugb3JkZXIuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIEV4YW1wbGUgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnNBcnJheSwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzQXJyYXksIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIsXG4gICAgICAgICAqICAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIikpKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiLFxuICAgICAgICAgKiAgICAgICAgIFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9yc0FycmF5LCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIixcbiAgICAgICAgICogICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIikpKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc0FycmF5KGRlY29yYXRvcnMpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChhdHRyaWJ1dGVzKSAmJiAhSXNVbmRlZmluZWQoYXR0cmlidXRlcykgJiYgIUlzTnVsbChhdHRyaWJ1dGVzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmIChJc051bGwoYXR0cmlidXRlcykpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRGVjb3JhdGVQcm9wZXJ0eShkZWNvcmF0b3JzLCB0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghSXNBcnJheShkZWNvcmF0b3JzKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgIGlmICghSXNDb25zdHJ1Y3Rvcih0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERlY29yYXRlQ29uc3RydWN0b3IoZGVjb3JhdG9ycywgdGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlY29yYXRlXCIsIGRlY29yYXRlKTtcbiAgICAgICAgLy8gNC4xLjIgUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSlcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jcmVmbGVjdC5tZXRhZGF0YVxuICAgICAgICAvKipcbiAgICAgICAgICogQSBkZWZhdWx0IG1ldGFkYXRhIGRlY29yYXRvciBmYWN0b3J5IHRoYXQgY2FuIGJlIHVzZWQgb24gYSBjbGFzcywgY2xhc3MgbWVtYmVyLCBvciBwYXJhbWV0ZXIuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBUaGUga2V5IGZvciB0aGUgbWV0YWRhdGEgZW50cnkuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVZhbHVlIFRoZSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgICAgICAgKiBAcmV0dXJucyBBIGRlY29yYXRvciBmdW5jdGlvbi5cbiAgICAgICAgICogQHJlbWFya3NcbiAgICAgICAgICogSWYgYG1ldGFkYXRhS2V5YCBpcyBhbHJlYWR5IGRlZmluZWQgZm9yIHRoZSB0YXJnZXQgYW5kIHRhcmdldCBrZXksIHRoZVxuICAgICAgICAgKiBtZXRhZGF0YVZhbHVlIGZvciB0aGF0IGtleSB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvciwgVHlwZVNjcmlwdCBvbmx5KVxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgQFJlZmxlY3QubWV0YWRhdGEoa2V5LCB2YWx1ZSlcbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlLCBUeXBlU2NyaXB0IG9ubHkpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIHByb3BlcnR5O1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIEBSZWZsZWN0Lm1ldGFkYXRhKGtleSwgdmFsdWUpXG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZCgpIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICBAUmVmbGVjdC5tZXRhZGF0YShrZXksIHZhbHVlKVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZCgpIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkgJiYgIUlzUHJvcGVydHlLZXkocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwibWV0YWRhdGFcIiwgbWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVmaW5lIGEgdW5pcXVlIG1ldGFkYXRhIGVudHJ5IG9uIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIG1ldGFkYXRhVmFsdWUgQSB2YWx1ZSB0aGF0IGNvbnRhaW5zIGF0dGFjaGVkIG1ldGFkYXRhLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRvIGRlZmluZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBvcHRpb25zLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIG9wdGlvbnMsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGRlY29yYXRvciBmYWN0b3J5IGFzIG1ldGFkYXRhLXByb2R1Y2luZyBhbm5vdGF0aW9uLlxuICAgICAgICAgKiAgICAgZnVuY3Rpb24gTXlBbm5vdGF0aW9uKG9wdGlvbnMpOiBEZWNvcmF0b3Ige1xuICAgICAgICAgKiAgICAgICAgIHJldHVybiAodGFyZ2V0LCBrZXk/KSA9PiBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgb3B0aW9ucywgdGFyZ2V0LCBrZXkpO1xuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiZGVmaW5lTWV0YWRhdGFcIiwgZGVmaW5lTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluIGhhcyB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBrZXkgd2FzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIHByb3RvdHlwZSBjaGFpbjsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNQcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5oYXNNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc01ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZS5wcm90b3R5cGUsIFwibWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gaGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHtcbiAgICAgICAgICAgIGlmICghSXNPYmplY3QodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICBpZiAoIUlzVW5kZWZpbmVkKHByb3BlcnR5S2V5KSlcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUtleSA9IFRvUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cG9ydGVyKFwiaGFzTWV0YWRhdGFcIiwgaGFzTWV0YWRhdGEpO1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFyZ2V0IG9iamVjdCBoYXMgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWV0YWRhdGEga2V5IHdhcyBkZWZpbmVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0OyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0Lmhhc093bk1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuaGFzT3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBoYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlIYXNPd25NZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJoYXNPd25NZXRhZGF0YVwiLCBoYXNPd25NZXRhZGF0YSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGtleSBpZiBmb3VuZDsgb3RoZXJ3aXNlLCBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE1ldGFkYXRhXCIsIGdldE1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQgbWV0YWRhdGEga2V5IG9uIHRoZSB0YXJnZXQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIGtleSBpZiBmb3VuZDsgb3RoZXJ3aXNlLCBgdW5kZWZpbmVkYC5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY01ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcImN1c3RvbTphbm5vdGF0aW9uXCIsIEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE93bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE93bk1ldGFkYXRhXCIsIGdldE93bk1ldGFkYXRhKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG1ldGFkYXRhIGtleXMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgKE9wdGlvbmFsKSBUaGUgcHJvcGVydHkga2V5IGZvciB0aGUgdGFyZ2V0LlxuICAgICAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB1bmlxdWUgbWV0YWRhdGEga2V5cy5cbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIGNsYXNzIEV4YW1wbGUge1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5IGRlY2xhcmF0aW9ucyBhcmUgbm90IHBhcnQgb2YgRVM2LCB0aG91Z2ggdGhleSBhcmUgdmFsaWQgaW4gVHlwZVNjcmlwdDpcbiAgICAgICAgICogICAgICAgICAvLyBzdGF0aWMgc3RhdGljUHJvcGVydHk7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAgICAgY29uc3RydWN0b3IocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgc3RhdGljIHN0YXRpY01ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgICAgICBtZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBjb25zdHJ1Y3RvclxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXMoRXhhbXBsZSk7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcInByb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljTWV0aG9kXCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gbWV0aG9kIChvbiBwcm90b3R5cGUpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE1ldGFkYXRhS2V5cyhFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBnZXRNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICByZXR1cm4gT3JkaW5hcnlNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0ZXIoXCJnZXRNZXRhZGF0YUtleXNcIiwgZ2V0TWV0YWRhdGFLZXlzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIHVuaXF1ZSBtZXRhZGF0YSBrZXlzIGRlZmluZWQgb24gdGhlIHRhcmdldCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGFkYXRhIGlzIGRlZmluZWQuXG4gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAoT3B0aW9uYWwpIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICAgICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSBtZXRhZGF0YSBrZXlzLlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgY2xhc3MgRXhhbXBsZSB7XG4gICAgICAgICAqICAgICAgICAgLy8gcHJvcGVydHkgZGVjbGFyYXRpb25zIGFyZSBub3QgcGFydCBvZiBFUzYsIHRob3VnaCB0aGV5IGFyZSB2YWxpZCBpbiBUeXBlU2NyaXB0OlxuICAgICAgICAgKiAgICAgICAgIC8vIHN0YXRpYyBzdGF0aWNQcm9wZXJ0eTtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgICAgICBjb25zdHJ1Y3RvcihwKSB7IH1cbiAgICAgICAgICogICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIG1ldGhvZChwKSB7IH1cbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIGNvbnN0cnVjdG9yXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyhFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUsIFwic3RhdGljUHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBwcm9wZXJ0eSAob24gcHJvdG90eXBlKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZS5wcm90b3R5cGUsIFwicHJvcGVydHlcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIGNvbnN0cnVjdG9yKVxuICAgICAgICAgKiAgICAgcmVzdWx0ID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YUtleXMoRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKEV4YW1wbGUucHJvdG90eXBlLCBcIm1ldGhvZFwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KHRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgaWYgKCFJc1VuZGVmaW5lZChwcm9wZXJ0eUtleSkpXG4gICAgICAgICAgICAgICAgcHJvcGVydHlLZXkgPSBUb1Byb3BlcnR5S2V5KHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImdldE93bk1ldGFkYXRhS2V5c1wiLCBnZXRPd25NZXRhZGF0YUtleXMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVsZXRlcyB0aGUgbWV0YWRhdGEgZW50cnkgZnJvbSB0aGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBwcm92aWRlZCBrZXkuXG4gICAgICAgICAqIEBwYXJhbSBtZXRhZGF0YUtleSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCBvbiB3aGljaCB0aGUgbWV0YWRhdGEgaXMgZGVmaW5lZC5cbiAgICAgICAgICogQHBhcmFtIHByb3BlcnR5S2V5IChPcHRpb25hbCkgVGhlIHByb3BlcnR5IGtleSBmb3IgdGhlIHRhcmdldC5cbiAgICAgICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtZXRhZGF0YSBlbnRyeSB3YXMgZm91bmQgYW5kIGRlbGV0ZWQ7IG90aGVyd2lzZSwgZmFsc2UuXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqXG4gICAgICAgICAqICAgICBjbGFzcyBFeGFtcGxlIHtcbiAgICAgICAgICogICAgICAgICAvLyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIEVTNiwgdGhvdWdoIHRoZXkgYXJlIHZhbGlkIGluIFR5cGVTY3JpcHQ6XG4gICAgICAgICAqICAgICAgICAgLy8gc3RhdGljIHN0YXRpY1Byb3BlcnR5O1xuICAgICAgICAgKiAgICAgICAgIC8vIHByb3BlcnR5O1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgICAgIGNvbnN0cnVjdG9yKHApIHsgfVxuICAgICAgICAgKiAgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QocCkgeyB9XG4gICAgICAgICAqICAgICAgICAgbWV0aG9kKHApIHsgfVxuICAgICAgICAgKiAgICAgfVxuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIHByb3BlcnR5IChvbiBjb25zdHJ1Y3RvcilcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLCBcInN0YXRpY1Byb3BlcnR5XCIpO1xuICAgICAgICAgKlxuICAgICAgICAgKiAgICAgLy8gcHJvcGVydHkgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJwcm9wZXJ0eVwiKTtcbiAgICAgICAgICpcbiAgICAgICAgICogICAgIC8vIG1ldGhvZCAob24gY29uc3RydWN0b3IpXG4gICAgICAgICAqICAgICByZXN1bHQgPSBSZWZsZWN0LmRlbGV0ZU1ldGFkYXRhKFwiY3VzdG9tOmFubm90YXRpb25cIiwgRXhhbXBsZSwgXCJzdGF0aWNNZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqICAgICAvLyBtZXRob2QgKG9uIHByb3RvdHlwZSlcbiAgICAgICAgICogICAgIHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlTWV0YWRhdGEoXCJjdXN0b206YW5ub3RhdGlvblwiLCBFeGFtcGxlLnByb3RvdHlwZSwgXCJtZXRob2RcIik7XG4gICAgICAgICAqXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkZWxldGVNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuICAgICAgICAgICAgaWYgKCFJc09iamVjdCh0YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTtcbiAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQocHJvcGVydHlLZXkpKVxuICAgICAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gVG9Qcm9wZXJ0eUtleShwcm9wZXJ0eUtleSk7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKHRhcmdldCwgcHJvcGVydHlLZXksIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoIW1ldGFkYXRhTWFwLmRlbGV0ZShtZXRhZGF0YUtleSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhTWFwLnNpemUgPiAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgdmFyIHRhcmdldE1ldGFkYXRhID0gTWV0YWRhdGEuZ2V0KHRhcmdldCk7XG4gICAgICAgICAgICB0YXJnZXRNZXRhZGF0YS5kZWxldGUocHJvcGVydHlLZXkpO1xuICAgICAgICAgICAgaWYgKHRhcmdldE1ldGFkYXRhLnNpemUgPiAwKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgTWV0YWRhdGEuZGVsZXRlKHRhcmdldCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBleHBvcnRlcihcImRlbGV0ZU1ldGFkYXRhXCIsIGRlbGV0ZU1ldGFkYXRhKTtcbiAgICAgICAgZnVuY3Rpb24gRGVjb3JhdGVDb25zdHJ1Y3RvcihkZWNvcmF0b3JzLCB0YXJnZXQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGRlY29yYXRlZCA9IGRlY29yYXRvcih0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZGVjb3JhdGVkKSAmJiAhSXNOdWxsKGRlY29yYXRlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc0NvbnN0cnVjdG9yKGRlY29yYXRlZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGRlY29yYXRlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIERlY29yYXRlUHJvcGVydHkoZGVjb3JhdG9ycywgdGFyZ2V0LCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdG9yID0gZGVjb3JhdG9yc1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgZGVjb3JhdGVkID0gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIGlmICghSXNVbmRlZmluZWQoZGVjb3JhdGVkKSAmJiAhSXNOdWxsKGRlY29yYXRlZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChkZWNvcmF0ZWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yID0gZGVjb3JhdGVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgQ3JlYXRlKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBNZXRhZGF0YS5nZXQoTyk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQodGFyZ2V0TWV0YWRhdGEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFDcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TWV0YWRhdGEgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgIE1ldGFkYXRhLnNldChPLCB0YXJnZXRNZXRhZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSB0YXJnZXRNZXRhZGF0YS5nZXQoUCk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFDcmVhdGUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFNYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgIHRhcmdldE1ldGFkYXRhLnNldChQLCBtZXRhZGF0YU1hcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWV0YWRhdGFNYXA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjEuMSBPcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWhhc21ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBoYXNPd24gPSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIGlmIChoYXNPd24pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKTtcbiAgICAgICAgICAgIGlmICghSXNOdWxsKHBhcmVudCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5SGFzTWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjIuMSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWhhc293bm1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5SGFzT3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBtZXRhZGF0YU1hcCA9IEdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgLypDcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoSXNVbmRlZmluZWQobWV0YWRhdGFNYXApKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBUb0Jvb2xlYW4obWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMy4xLjMuMSBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKVxuICAgICAgICAvLyBodHRwczovL3JidWNrdG9uLmdpdGh1Yi5pby9yZWZsZWN0LW1ldGFkYXRhLyNvcmRpbmFyeWdldG1ldGFkYXRhXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApIHtcbiAgICAgICAgICAgIHZhciBoYXNPd24gPSBPcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgICAgICAgICAgIGlmIChoYXNPd24pXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApO1xuICAgICAgICAgICAgdmFyIHBhcmVudCA9IE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTyk7XG4gICAgICAgICAgICBpZiAoIUlzTnVsbChwYXJlbnQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeUdldE1ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNC4xIE9yZGluYXJ5R2V0T3duTWV0YWRhdGEoTWV0YWRhdGFLZXksIE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5Z2V0b3dubWV0YWRhdGFcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCkge1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhTWFwID0gR2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCAvKkNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChJc1VuZGVmaW5lZChtZXRhZGF0YU1hcCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YU1hcC5nZXQoTWV0YWRhdGFLZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS41LjEgT3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTWV0YWRhdGFWYWx1ZSwgTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnlkZWZpbmVvd25tZXRhZGF0YVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeURlZmluZU93bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKSB7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gdHJ1ZSk7XG4gICAgICAgICAgICBtZXRhZGF0YU1hcC5zZXQoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDMuMS42LjEgT3JkaW5hcnlNZXRhZGF0YUtleXMoTywgUClcbiAgICAgICAgLy8gaHR0cHM6Ly9yYnVja3Rvbi5naXRodWIuaW8vcmVmbGVjdC1tZXRhZGF0YS8jb3JkaW5hcnltZXRhZGF0YWtleXNcbiAgICAgICAgZnVuY3Rpb24gT3JkaW5hcnlNZXRhZGF0YUtleXMoTywgUCkge1xuICAgICAgICAgICAgdmFyIG93bktleXMgPSBPcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBPcmRpbmFyeUdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3duS2V5cztcbiAgICAgICAgICAgIHZhciBwYXJlbnRLZXlzID0gT3JkaW5hcnlNZXRhZGF0YUtleXMocGFyZW50LCBQKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRLZXlzLmxlbmd0aCA8PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBvd25LZXlzO1xuICAgICAgICAgICAgaWYgKG93bktleXMubGVuZ3RoIDw9IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudEtleXM7XG4gICAgICAgICAgICB2YXIgc2V0ID0gbmV3IF9TZXQoKTtcbiAgICAgICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIG93bktleXNfMSA9IG93bktleXM7IF9pIDwgb3duS2V5c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBvd25LZXlzXzFbX2ldO1xuICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSBzZXQuaGFzKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBfYSA9IDAsIHBhcmVudEtleXNfMSA9IHBhcmVudEtleXM7IF9hIDwgcGFyZW50S2V5c18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBwYXJlbnRLZXlzXzFbX2FdO1xuICAgICAgICAgICAgICAgIHZhciBoYXNLZXkgPSBzZXQuaGFzKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgICAgICAvLyAzLjEuNy4xIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApXG4gICAgICAgIC8vIGh0dHBzOi8vcmJ1Y2t0b24uZ2l0aHViLmlvL3JlZmxlY3QtbWV0YWRhdGEvI29yZGluYXJ5b3dubWV0YWRhdGFrZXlzXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5T3duTWV0YWRhdGFLZXlzKE8sIFApIHtcbiAgICAgICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFNYXAgPSBHZXRPckNyZWF0ZU1ldGFkYXRhTWFwKE8sIFAsIC8qQ3JlYXRlKi8gZmFsc2UpO1xuICAgICAgICAgICAgaWYgKElzVW5kZWZpbmVkKG1ldGFkYXRhTWFwKSlcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgICAgIHZhciBrZXlzT2JqID0gbWV0YWRhdGFNYXAua2V5cygpO1xuICAgICAgICAgICAgdmFyIGl0ZXJhdG9yID0gR2V0SXRlcmF0b3Ioa2V5c09iaik7XG4gICAgICAgICAgICB2YXIgayA9IDA7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5sZW5ndGggPSBrO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG5leHRWYWx1ZSA9IEl0ZXJhdG9yVmFsdWUobmV4dCk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAga2V5c1trXSA9IG5leHRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBrKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gNiBFQ01BU2NyaXB0IERhdGEgVHlwMGVzIGFuZCBWYWx1ZXNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1kYXRhLXR5cGVzLWFuZC12YWx1ZXNcbiAgICAgICAgZnVuY3Rpb24gVHlwZSh4KSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4gMSAvKiBOdWxsICovO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjogcmV0dXJuIDAgLyogVW5kZWZpbmVkICovO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6IHJldHVybiAyIC8qIEJvb2xlYW4gKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOiByZXR1cm4gMyAvKiBTdHJpbmcgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcInN5bWJvbFwiOiByZXR1cm4gNCAvKiBTeW1ib2wgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOiByZXR1cm4gNSAvKiBOdW1iZXIgKi87XG4gICAgICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOiByZXR1cm4geCA9PT0gbnVsbCA/IDEgLyogTnVsbCAqLyA6IDYgLyogT2JqZWN0ICovO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiA2IC8qIE9iamVjdCAqLztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuMSBUaGUgVW5kZWZpbmVkIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy11bmRlZmluZWQtdHlwZVxuICAgICAgICBmdW5jdGlvbiBJc1VuZGVmaW5lZCh4KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PT0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS4yIFRoZSBOdWxsIFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcy1udWxsLXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNOdWxsKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB4ID09PSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIDYuMS41IFRoZSBTeW1ib2wgVHlwZVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzLXN5bWJvbC10eXBlXG4gICAgICAgIGZ1bmN0aW9uIElzU3ltYm9sKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA2LjEuNyBUaGUgT2JqZWN0IFR5cGVcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LXR5cGVcbiAgICAgICAgZnVuY3Rpb24gSXNPYmplY3QoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiID8geCAhPT0gbnVsbCA6IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4xIFR5cGUgQ29udmVyc2lvblxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10eXBlLWNvbnZlcnNpb25cbiAgICAgICAgLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4gICAgICAgIGZ1bmN0aW9uIFRvUHJpbWl0aXZlKGlucHV0LCBQcmVmZXJyZWRUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKFR5cGUoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwIC8qIFVuZGVmaW5lZCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgMSAvKiBOdWxsICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSAyIC8qIEJvb2xlYW4gKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgICAgICBjYXNlIDMgLyogU3RyaW5nICovOiByZXR1cm4gaW5wdXQ7XG4gICAgICAgICAgICAgICAgY2FzZSA0IC8qIFN5bWJvbCAqLzogcmV0dXJuIGlucHV0O1xuICAgICAgICAgICAgICAgIGNhc2UgNSAvKiBOdW1iZXIgKi86IHJldHVybiBpbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBoaW50ID0gUHJlZmVycmVkVHlwZSA9PT0gMyAvKiBTdHJpbmcgKi8gPyBcInN0cmluZ1wiIDogUHJlZmVycmVkVHlwZSA9PT0gNSAvKiBOdW1iZXIgKi8gPyBcIm51bWJlclwiIDogXCJkZWZhdWx0XCI7XG4gICAgICAgICAgICB2YXIgZXhvdGljVG9QcmltID0gR2V0TWV0aG9kKGlucHV0LCB0b1ByaW1pdGl2ZVN5bWJvbCk7XG4gICAgICAgICAgICBpZiAoZXhvdGljVG9QcmltICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZXhvdGljVG9QcmltLmNhbGwoaW5wdXQsIGhpbnQpO1xuICAgICAgICAgICAgICAgIGlmIChJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBPcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBoaW50ID09PSBcImRlZmF1bHRcIiA/IFwibnVtYmVyXCIgOiBoaW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMS4xIE9yZGluYXJ5VG9QcmltaXRpdmUoTywgaGludClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxuICAgICAgICBmdW5jdGlvbiBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpIHtcbiAgICAgICAgICAgIGlmIChoaW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvU3RyaW5nXzEgPSBPLnRvU3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHRvU3RyaW5nXzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0b1N0cmluZ18xLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZU9mID0gTy52YWx1ZU9mO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHZhbHVlT2YpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZU9mLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlT2YgPSBPLnZhbHVlT2Y7XG4gICAgICAgICAgICAgICAgaWYgKElzQ2FsbGFibGUodmFsdWVPZikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlT2YuY2FsbChPKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFJc09iamVjdChyZXN1bHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHRvU3RyaW5nXzIgPSBPLnRvU3RyaW5nO1xuICAgICAgICAgICAgICAgIGlmIChJc0NhbGxhYmxlKHRvU3RyaW5nXzIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0b1N0cmluZ18yLmNhbGwoTyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghSXNPYmplY3QocmVzdWx0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4yIFRvQm9vbGVhbihhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLzIwMTYvI3NlYy10b2Jvb2xlYW5cbiAgICAgICAgZnVuY3Rpb24gVG9Cb29sZWFuKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gISFhcmd1bWVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjEuMTIgVG9TdHJpbmcoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvc3RyaW5nXG4gICAgICAgIGZ1bmN0aW9uIFRvU3RyaW5nKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIiArIGFyZ3VtZW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMS4xNCBUb1Byb3BlcnR5S2V5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG4gICAgICAgIGZ1bmN0aW9uIFRvUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBUb1ByaW1pdGl2ZShhcmd1bWVudCwgMyAvKiBTdHJpbmcgKi8pO1xuICAgICAgICAgICAgaWYgKElzU3ltYm9sKGtleSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIHJldHVybiBUb1N0cmluZyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDcuMiBUZXN0aW5nIGFuZCBDb21wYXJpc29uIE9wZXJhdGlvbnNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdGVzdGluZy1hbmQtY29tcGFyaXNvbi1vcGVyYXRpb25zXG4gICAgICAgIC8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbiAgICAgICAgZnVuY3Rpb24gSXNBcnJheShhcmd1bWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXlcbiAgICAgICAgICAgICAgICA/IEFycmF5LmlzQXJyYXkoYXJndW1lbnQpXG4gICAgICAgICAgICAgICAgOiBhcmd1bWVudCBpbnN0YW5jZW9mIE9iamVjdFxuICAgICAgICAgICAgICAgICAgICA/IGFyZ3VtZW50IGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpID09PSBcIltvYmplY3QgQXJyYXldXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjMgSXNDYWxsYWJsZShhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuICAgICAgICBmdW5jdGlvbiBJc0NhbGxhYmxlKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gYXMgd2UgY2Fubm90IGNoZWNrIGZvciBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4yLjQgSXNDb25zdHJ1Y3Rvcihhcmd1bWVudClcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxuICAgICAgICBmdW5jdGlvbiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gYXMgd2UgY2Fubm90IGNoZWNrIGZvciBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjIuNyBJc1Byb3BlcnR5S2V5KGFyZ3VtZW50KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc3Byb3BlcnR5a2V5XG4gICAgICAgIGZ1bmN0aW9uIElzUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoVHlwZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDMgLyogU3RyaW5nICovOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDQgLyogU3ltYm9sICovOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy4zIE9wZXJhdGlvbnMgb24gT2JqZWN0c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcGVyYXRpb25zLW9uLW9iamVjdHNcbiAgICAgICAgLy8gNy4zLjkgR2V0TWV0aG9kKFYsIFApXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxuICAgICAgICBmdW5jdGlvbiBHZXRNZXRob2QoViwgUCkge1xuICAgICAgICAgICAgdmFyIGZ1bmMgPSBWW1BdO1xuICAgICAgICAgICAgaWYgKGZ1bmMgPT09IHVuZGVmaW5lZCB8fCBmdW5jID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIUlzQ2FsbGFibGUoZnVuYykpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40IE9wZXJhdGlvbnMgb24gSXRlcmF0b3IgT2JqZWN0c1xuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcGVyYXRpb25zLW9uLWl0ZXJhdG9yLW9iamVjdHNcbiAgICAgICAgZnVuY3Rpb24gR2V0SXRlcmF0b3Iob2JqKSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kID0gR2V0TWV0aG9kKG9iaiwgaXRlcmF0b3JTeW1ib2wpO1xuICAgICAgICAgICAgaWYgKCFJc0NhbGxhYmxlKG1ldGhvZCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigpOyAvLyBmcm9tIENhbGxcbiAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IG1ldGhvZC5jYWxsKG9iaik7XG4gICAgICAgICAgICBpZiAoIUlzT2JqZWN0KGl0ZXJhdG9yKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7XG4gICAgICAgIH1cbiAgICAgICAgLy8gNy40LjQgSXRlcmF0b3JWYWx1ZShpdGVyUmVzdWx0KVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvMjAxNi8jc2VjLWl0ZXJhdG9ydmFsdWVcbiAgICAgICAgZnVuY3Rpb24gSXRlcmF0b3JWYWx1ZShpdGVyUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlclJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNSBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpXG4gICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWl0ZXJhdG9yc3RlcFxuICAgICAgICBmdW5jdGlvbiBJdGVyYXRvclN0ZXAoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyBmYWxzZSA6IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pdGVyYXRvcmNsb3NlXG4gICAgICAgIGZ1bmN0aW9uIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHZhciBmID0gaXRlcmF0b3JbXCJyZXR1cm5cIl07XG4gICAgICAgICAgICBpZiAoZilcbiAgICAgICAgICAgICAgICBmLmNhbGwoaXRlcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDkuMSBPcmRpbmFyeSBPYmplY3QgSW50ZXJuYWwgTWV0aG9kcyBhbmQgSW50ZXJuYWwgU2xvdHNcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnktb2JqZWN0LWludGVybmFsLW1ldGhvZHMtYW5kLWludGVybmFsLXNsb3RzXG4gICAgICAgIC8vIDkuMS4xLjEgT3JkaW5hcnlHZXRQcm90b3R5cGVPZihPKVxuICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeWdldHByb3RvdHlwZW9mXG4gICAgICAgIGZ1bmN0aW9uIE9yZGluYXJ5R2V0UHJvdG90eXBlT2YoTykge1xuICAgICAgICAgICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBPICE9PSBcImZ1bmN0aW9uXCIgfHwgTyA9PT0gZnVuY3Rpb25Qcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCBkb2Vzbid0IHNldCBfX3Byb3RvX18gaW4gRVM1LCBhcyBpdCdzIG5vbi1zdGFuZGFyZC5cbiAgICAgICAgICAgIC8vIFRyeSB0byBkZXRlcm1pbmUgdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuIENvbXBhdGlibGUgaW1wbGVtZW50YXRpb25zXG4gICAgICAgICAgICAvLyBtdXN0IGVpdGhlciBzZXQgX19wcm90b19fIG9uIGEgc3ViY2xhc3MgY29uc3RydWN0b3IgdG8gdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IsXG4gICAgICAgICAgICAvLyBvciBlbnN1cmUgZWFjaCBjbGFzcyBoYXMgYSB2YWxpZCBgY29uc3RydWN0b3JgIHByb3BlcnR5IG9uIGl0cyBwcm90b3R5cGUgdGhhdFxuICAgICAgICAgICAgLy8gcG9pbnRzIGJhY2sgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRnVuY3Rpb24uW1tQcm90b3R5cGVdXSwgdGhlbiB0aGlzIGlzIGRlZmluYXRlbHkgaW5oZXJpdGVkLlxuICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIGluIEVTNiBvciB3aGVuIHVzaW5nIF9fcHJvdG9fXyBpbiBhIGNvbXBhdGlibGUgYnJvd3Nlci5cbiAgICAgICAgICAgIGlmIChwcm90byAhPT0gZnVuY3Rpb25Qcm90b3R5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgdGhlIHN1cGVyIHByb3RvdHlwZSBpcyBPYmplY3QucHJvdG90eXBlLCBudWxsLCBvciB1bmRlZmluZWQsIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICB2YXIgcHJvdG90eXBlID0gTy5wcm90b3R5cGU7XG4gICAgICAgICAgICB2YXIgcHJvdG90eXBlUHJvdG8gPSBwcm90b3R5cGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvdHlwZSk7XG4gICAgICAgICAgICBpZiAocHJvdG90eXBlUHJvdG8gPT0gbnVsbCB8fCBwcm90b3R5cGVQcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdG87XG4gICAgICAgICAgICAvLyBJZiB0aGUgY29uc3RydWN0b3Igd2FzIG5vdCBhIGZ1bmN0aW9uLCB0aGVuIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIGhlcml0YWdlLlxuICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gcHJvdG90eXBlUHJvdG8uY29uc3RydWN0b3I7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBzb21lIGtpbmQgb2Ygc2VsZi1yZWZlcmVuY2UsIHRoZW4gd2UgY2Fubm90IGRldGVybWluZSB0aGUgaGVyaXRhZ2UuXG4gICAgICAgICAgICBpZiAoY29uc3RydWN0b3IgPT09IE8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3RvO1xuICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHByZXR0eSBnb29kIGd1ZXNzIGF0IHRoZSBoZXJpdGFnZS5cbiAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBNYXAgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVNYXBQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZVNlbnRpbmVsID0ge307XG4gICAgICAgICAgICB2YXIgYXJyYXlTZW50aW5lbCA9IFtdO1xuICAgICAgICAgICAgdmFyIE1hcEl0ZXJhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE1hcEl0ZXJhdG9yKGtleXMsIHZhbHVlcywgc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0ga2V5cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbiAgICAgICAgICAgICAgICBNYXBJdGVyYXRvci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5faW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5fa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9zZWxlY3Rvcih0aGlzLl9rZXlzW2luZGV4XSwgdGhpcy5fdmFsdWVzW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggKyAxID49IHRoaXMuX2tleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiByZXN1bHQsIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLnRocm93ID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IGFycmF5U2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgTWFwSXRlcmF0b3IucHJvdG90eXBlLnJldHVybiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMgPSBhcnJheVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gYXJyYXlTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXBJdGVyYXRvcjtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIE1hcCgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVLZXkgPSBjYWNoZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXAucHJvdG90eXBlLCBcInNpemVcIiwge1xuICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2tleXMubGVuZ3RoOyB9LFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIHRoaXMuX2ZpbmQoa2V5LCAvKmluc2VydCovIGZhbHNlKSA+PSAwOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kKGtleSwgLyppbnNlcnQqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5fdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZChrZXksIC8qaW5zZXJ0Ki8gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9rZXlzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBpbmRleCArIDE7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzW2kgLSAxXSA9IHRoaXMuX2tleXNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzW2kgLSAxXSA9IHRoaXMuX3ZhbHVlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleXMubGVuZ3RoLS07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMubGVuZ3RoLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSB0aGlzLl9jYWNoZUtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlS2V5ID0gY2FjaGVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gLTI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUtleSA9IGNhY2hlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlSW5kZXggPSAtMjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBNYXBJdGVyYXRvcih0aGlzLl9rZXlzLCB0aGlzLl92YWx1ZXMsIGdldEtleSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgTWFwSXRlcmF0b3IodGhpcy5fa2V5cywgdGhpcy5fdmFsdWVzLCBnZXRWYWx1ZSk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IE1hcEl0ZXJhdG9yKHRoaXMuX2tleXMsIHRoaXMuX3ZhbHVlcywgZ2V0RW50cnkpOyB9O1xuICAgICAgICAgICAgICAgIE1hcC5wcm90b3R5cGVbXCJAQGl0ZXJhdG9yXCJdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5lbnRyaWVzKCk7IH07XG4gICAgICAgICAgICAgICAgTWFwLnByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmVudHJpZXMoKTsgfTtcbiAgICAgICAgICAgICAgICBNYXAucHJvdG90eXBlLl9maW5kID0gZnVuY3Rpb24gKGtleSwgaW5zZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jYWNoZUtleSAhPT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gdGhpcy5fa2V5cy5pbmRleE9mKHRoaXMuX2NhY2hlS2V5ID0ga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FjaGVJbmRleCA8IDAgJiYgaW5zZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZUluZGV4ID0gdGhpcy5fa2V5cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9rZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlSW5kZXg7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWFwO1xuICAgICAgICAgICAgfSgpKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldEtleShrZXksIF8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VmFsdWUoXywgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRFbnRyeShrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtrZXksIHZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBuYWl2ZSBTZXQgc2hpbVxuICAgICAgICBmdW5jdGlvbiBDcmVhdGVTZXRQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHJldHVybiAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gU2V0KCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYXAgPSBuZXcgX01hcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0LnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAuc2l6ZTsgfSxcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5oYXModmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9tYXAuc2V0KHZhbHVlLCB2YWx1ZSksIHRoaXM7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHRoaXMuX21hcC5kZWxldGUodmFsdWUpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7IHRoaXMuX21hcC5jbGVhcigpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21hcC5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9tYXAudmFsdWVzKCk7IH07XG4gICAgICAgICAgICAgICAgU2V0LnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbWFwLmVudHJpZXMoKTsgfTtcbiAgICAgICAgICAgICAgICBTZXQucHJvdG90eXBlW1wiQEBpdGVyYXRvclwiXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMua2V5cygpOyB9O1xuICAgICAgICAgICAgICAgIFNldC5wcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5rZXlzKCk7IH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNldDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbmFpdmUgV2Vha01hcCBzaGltXG4gICAgICAgIGZ1bmN0aW9uIENyZWF0ZVdlYWtNYXBQb2x5ZmlsbCgpIHtcbiAgICAgICAgICAgIHZhciBVVUlEX1NJWkUgPSAxNjtcbiAgICAgICAgICAgIHZhciBrZXlzID0gSGFzaE1hcC5jcmVhdGUoKTtcbiAgICAgICAgICAgIHZhciByb290S2V5ID0gQ3JlYXRlVW5pcXVlS2V5KCk7XG4gICAgICAgICAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2tleSA9IENyZWF0ZVVuaXF1ZUtleSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBXZWFrTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZSAhPT0gdW5kZWZpbmVkID8gSGFzaE1hcC5oYXModGFibGUsIHRoaXMuX2tleSkgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlICE9PSB1bmRlZmluZWQgPyBIYXNoTWFwLmdldCh0YWJsZSwgdGhpcy5fa2V5KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uICh0YXJnZXQsIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgLypjcmVhdGUqLyB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVbdGhpcy5fa2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFdlYWtNYXAucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gR2V0T3JDcmVhdGVXZWFrTWFwVGFibGUodGFyZ2V0LCAvKmNyZWF0ZSovIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlICE9PSB1bmRlZmluZWQgPyBkZWxldGUgdGFibGVbdGhpcy5fa2V5XSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgV2Vha01hcC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IG5vdCBhIHJlYWwgY2xlYXIsIGp1c3QgbWFrZXMgdGhlIHByZXZpb3VzIGRhdGEgdW5yZWFjaGFibGVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fa2V5ID0gQ3JlYXRlVW5pcXVlS2V5KCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gV2Vha01hcDtcbiAgICAgICAgICAgIH0oKSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBDcmVhdGVVbmlxdWVLZXkoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleTtcbiAgICAgICAgICAgICAgICBkb1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBcIkBAV2Vha01hcEBAXCIgKyBDcmVhdGVVVUlEKCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKEhhc2hNYXAuaGFzKGtleXMsIGtleSkpO1xuICAgICAgICAgICAgICAgIGtleXNba2V5XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIEdldE9yQ3JlYXRlV2Vha01hcFRhYmxlKHRhcmdldCwgY3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNPd24uY2FsbCh0YXJnZXQsIHJvb3RLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3JlYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcm9vdEtleSwgeyB2YWx1ZTogSGFzaE1hcC5jcmVhdGUoKSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtyb290S2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIEZpbGxSYW5kb21CeXRlcyhidWZmZXIsIHNpemUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSlcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2ldID0gTWF0aC5yYW5kb20oKSAqIDB4ZmYgfCAwO1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBHZW5SYW5kb21CeXRlcyhzaXplKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBVaW50OEFycmF5ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbXNDcnlwdG8gIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KHNpemUpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpbGxSYW5kb21CeXRlcyhuZXcgVWludDhBcnJheShzaXplKSwgc2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxsUmFuZG9tQnl0ZXMobmV3IEFycmF5KHNpemUpLCBzaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIENyZWF0ZVVVSUQoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBHZW5SYW5kb21CeXRlcyhVVUlEX1NJWkUpO1xuICAgICAgICAgICAgICAgIC8vIG1hcmsgYXMgcmFuZG9tIC0gUkZDIDQxMjIgwqcgNC40XG4gICAgICAgICAgICAgICAgZGF0YVs2XSA9IGRhdGFbNl0gJiAweDRmIHwgMHg0MDtcbiAgICAgICAgICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSAmIDB4YmYgfCAweDgwO1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IFVVSURfU0laRTsgKytvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRhW29mZnNldF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT09IDQgfHwgb2Zmc2V0ID09PSA2IHx8IG9mZnNldCA9PT0gOClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBcIi1cIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGUgPCAxNilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBcIjBcIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGJ5dGUudG9TdHJpbmcoMTYpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdXNlcyBhIGhldXJpc3RpYyB1c2VkIGJ5IHY4IGFuZCBjaGFrcmEgdG8gZm9yY2UgYW4gb2JqZWN0IGludG8gZGljdGlvbmFyeSBtb2RlLlxuICAgICAgICBmdW5jdGlvbiBNYWtlRGljdGlvbmFyeShvYmopIHtcbiAgICAgICAgICAgIG9iai5fXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGRlbGV0ZSBvYmouX187XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG4gICAgfSk7XG59KShSZWZsZWN0IHx8IChSZWZsZWN0ID0ge30pKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js\n"); /***/ }), /***/ "./node_modules/_regenerator-runtime@0.13.9@regenerator-runtime/runtime.js": /*!*********************************************************************************!*\ !*** ./node_modules/_regenerator-runtime@0.13.9@regenerator-runtime/runtime.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : undefined\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3JlZ2VuZXJhdG9yLXJ1bnRpbWVAMC4xMy45QHJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz9lMTg2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLEtBQUs7QUFDTCxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QyxXQUFXO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsY0FBYztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxLQUEwQixvQkFBb0IsU0FBRTtBQUNsRDs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX3JlZ2VuZXJhdG9yLXJ1bnRpbWVAMC4xMy45QHJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcbiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICBmdW5jdGlvbiBkZWZpbmUob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqW2tleV07XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBJRSA4IGhhcyBhIGJyb2tlbiBPYmplY3QuZGVmaW5lUHJvcGVydHkgdGhhdCBvbmx5IHdvcmtzIG9uIERPTSBvYmplY3RzLlxuICAgIGRlZmluZSh7fSwgXCJcIik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGRlZmluZSA9IGZ1bmN0aW9uKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9ialtrZXldID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIGV4cG9ydHMud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIGRlZmluZShJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgZGVmaW5lKEdwLCBcImNvbnN0cnVjdG9yXCIsIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgZGVmaW5lKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcImNvbnN0cnVjdG9yXCIsIEdlbmVyYXRvckZ1bmN0aW9uKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBkZWZpbmUoXG4gICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsXG4gICAgdG9TdHJpbmdUYWdTeW1ib2wsXG4gICAgXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICk7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgZGVmaW5lKHByb3RvdHlwZSwgbWV0aG9kLCBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgZGVmaW5lKGdlbkZ1biwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBkZWZpbmUoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUsIGFzeW5jSXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG4gIGV4cG9ydHMuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIGV4cG9ydHMuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCwgUHJvbWlzZUltcGwpIHtcbiAgICBpZiAoUHJvbWlzZUltcGwgPT09IHZvaWQgMCkgUHJvbWlzZUltcGwgPSBQcm9taXNlO1xuXG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpLFxuICAgICAgUHJvbWlzZUltcGxcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIC8vIE5vdGU6IFtcInJldHVyblwiXSBtdXN0IGJlIHVzZWQgZm9yIEVTMyBwYXJzaW5nIGNvbXBhdGliaWxpdHkuXG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXSkge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIGRlZmluZShHcCwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yXCIpO1xuXG4gIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlXG4gIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yXG4gIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgZGVmaW5lKEdwLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xuXG4gIGRlZmluZShHcCwgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgaW4gbW9kZXJuIGVuZ2luZXNcbiAgLy8gd2UgY2FuIGV4cGxpY2l0bHkgYWNjZXNzIGdsb2JhbFRoaXMuIEluIG9sZGVyIGVuZ2luZXMgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSBcIm9iamVjdFwiKSB7XG4gICAgZ2xvYmFsVGhpcy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xuICB9IGVsc2Uge1xuICAgIEZ1bmN0aW9uKFwiclwiLCBcInJlZ2VuZXJhdG9yUnVudGltZSA9IHJcIikocnVudGltZSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_regenerator-runtime@0.13.9@regenerator-runtime/runtime.js\n"); /***/ }), /***/ "./node_modules/_regl@1.7.0@regl/dist/regl.js": /*!****************************************************!*\ !*** ./node_modules/_regl@1.7.0@regl/dist/regl.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("(function (global, factory) {\n true ? module.exports = factory() :\n undefined;\n}(this, (function () { 'use strict';\n\nvar isTypedArray = function (x) {\n return (\n x instanceof Uint8Array ||\n x instanceof Uint16Array ||\n x instanceof Uint32Array ||\n x instanceof Int8Array ||\n x instanceof Int16Array ||\n x instanceof Int32Array ||\n x instanceof Float32Array ||\n x instanceof Float64Array ||\n x instanceof Uint8ClampedArray\n )\n}\n\nvar extend = function (base, opts) {\n var keys = Object.keys(opts)\n for (var i = 0; i < keys.length; ++i) {\n base[keys[i]] = opts[keys[i]]\n }\n return base\n}\n\n// Error checking and parameter validation.\n//\n// Statements for the form `check.someProcedure(...)` get removed by\n// a browserify transform for optimized/minified bundles.\n//\n/* globals atob */\nvar endl = '\\n'\n\n// only used for extracting shader names. if atob not present, then errors\n// will be slightly crappier\nfunction decodeB64 (str) {\n if (typeof atob !== 'undefined') {\n return atob(str)\n }\n return 'base64:' + str\n}\n\nfunction raise (message) {\n var error = new Error('(regl) ' + message)\n console.error(error)\n throw error\n}\n\nfunction check (pred, message) {\n if (!pred) {\n raise(message)\n }\n}\n\nfunction encolon (message) {\n if (message) {\n return ': ' + message\n }\n return ''\n}\n\nfunction checkParameter (param, possibilities, message) {\n if (!(param in possibilities)) {\n raise('unknown parameter (' + param + ')' + encolon(message) +\n '. possible values: ' + Object.keys(possibilities).join())\n }\n}\n\nfunction checkIsTypedArray (data, message) {\n if (!isTypedArray(data)) {\n raise(\n 'invalid parameter type' + encolon(message) +\n '. must be a typed array')\n }\n}\n\nfunction standardTypeEh (value, type) {\n switch (type) {\n case 'number': return typeof value === 'number'\n case 'object': return typeof value === 'object'\n case 'string': return typeof value === 'string'\n case 'boolean': return typeof value === 'boolean'\n case 'function': return typeof value === 'function'\n case 'undefined': return typeof value === 'undefined'\n case 'symbol': return typeof value === 'symbol'\n }\n}\n\nfunction checkTypeOf (value, type, message) {\n if (!standardTypeEh(value, type)) {\n raise(\n 'invalid parameter type' + encolon(message) +\n '. expected ' + type + ', got ' + (typeof value))\n }\n}\n\nfunction checkNonNegativeInt (value, message) {\n if (!((value >= 0) &&\n ((value | 0) === value))) {\n raise('invalid parameter type, (' + value + ')' + encolon(message) +\n '. must be a nonnegative integer')\n }\n}\n\nfunction checkOneOf (value, list, message) {\n if (list.indexOf(value) < 0) {\n raise('invalid value' + encolon(message) + '. must be one of: ' + list)\n }\n}\n\nvar constructorKeys = [\n 'gl',\n 'canvas',\n 'container',\n 'attributes',\n 'pixelRatio',\n 'extensions',\n 'optionalExtensions',\n 'profile',\n 'onDone'\n]\n\nfunction checkConstructor (obj) {\n Object.keys(obj).forEach(function (key) {\n if (constructorKeys.indexOf(key) < 0) {\n raise('invalid regl constructor argument \"' + key + '\". must be one of ' + constructorKeys)\n }\n })\n}\n\nfunction leftPad (str, n) {\n str = str + ''\n while (str.length < n) {\n str = ' ' + str\n }\n return str\n}\n\nfunction ShaderFile () {\n this.name = 'unknown'\n this.lines = []\n this.index = {}\n this.hasErrors = false\n}\n\nfunction ShaderLine (number, line) {\n this.number = number\n this.line = line\n this.errors = []\n}\n\nfunction ShaderError (fileNumber, lineNumber, message) {\n this.file = fileNumber\n this.line = lineNumber\n this.message = message\n}\n\nfunction guessCommand () {\n var error = new Error()\n var stack = (error.stack || error).toString()\n var pat = /compileProcedure.*\\n\\s*at.*\\((.*)\\)/.exec(stack)\n if (pat) {\n return pat[1]\n }\n var pat2 = /compileProcedure.*\\n\\s*at\\s+(.*)(\\n|$)/.exec(stack)\n if (pat2) {\n return pat2[1]\n }\n return 'unknown'\n}\n\nfunction guessCallSite () {\n var error = new Error()\n var stack = (error.stack || error).toString()\n var pat = /at REGLCommand.*\\n\\s+at.*\\((.*)\\)/.exec(stack)\n if (pat) {\n return pat[1]\n }\n var pat2 = /at REGLCommand.*\\n\\s+at\\s+(.*)\\n/.exec(stack)\n if (pat2) {\n return pat2[1]\n }\n return 'unknown'\n}\n\nfunction parseSource (source, command) {\n var lines = source.split('\\n')\n var lineNumber = 1\n var fileNumber = 0\n var files = {\n unknown: new ShaderFile(),\n 0: new ShaderFile()\n }\n files.unknown.name = files[0].name = command || guessCommand()\n files.unknown.lines.push(new ShaderLine(0, ''))\n for (var i = 0; i < lines.length; ++i) {\n var line = lines[i]\n var parts = /^\\s*#\\s*(\\w+)\\s+(.+)\\s*$/.exec(line)\n if (parts) {\n switch (parts[1]) {\n case 'line':\n var lineNumberInfo = /(\\d+)(\\s+\\d+)?/.exec(parts[2])\n if (lineNumberInfo) {\n lineNumber = lineNumberInfo[1] | 0\n if (lineNumberInfo[2]) {\n fileNumber = lineNumberInfo[2] | 0\n if (!(fileNumber in files)) {\n files[fileNumber] = new ShaderFile()\n }\n }\n }\n break\n case 'define':\n var nameInfo = /SHADER_NAME(_B64)?\\s+(.*)$/.exec(parts[2])\n if (nameInfo) {\n files[fileNumber].name = (nameInfo[1]\n ? decodeB64(nameInfo[2])\n : nameInfo[2])\n }\n break\n }\n }\n files[fileNumber].lines.push(new ShaderLine(lineNumber++, line))\n }\n Object.keys(files).forEach(function (fileNumber) {\n var file = files[fileNumber]\n file.lines.forEach(function (line) {\n file.index[line.number] = line\n })\n })\n return files\n}\n\nfunction parseErrorLog (errLog) {\n var result = []\n errLog.split('\\n').forEach(function (errMsg) {\n if (errMsg.length < 5) {\n return\n }\n var parts = /^ERROR:\\s+(\\d+):(\\d+):\\s*(.*)$/.exec(errMsg)\n if (parts) {\n result.push(new ShaderError(\n parts[1] | 0,\n parts[2] | 0,\n parts[3].trim()))\n } else if (errMsg.length > 0) {\n result.push(new ShaderError('unknown', 0, errMsg))\n }\n })\n return result\n}\n\nfunction annotateFiles (files, errors) {\n errors.forEach(function (error) {\n var file = files[error.file]\n if (file) {\n var line = file.index[error.line]\n if (line) {\n line.errors.push(error)\n file.hasErrors = true\n return\n }\n }\n files.unknown.hasErrors = true\n files.unknown.lines[0].errors.push(error)\n })\n}\n\nfunction checkShaderError (gl, shader, source, type, command) {\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n var errLog = gl.getShaderInfoLog(shader)\n var typeName = type === gl.FRAGMENT_SHADER ? 'fragment' : 'vertex'\n checkCommandType(source, 'string', typeName + ' shader source must be a string', command)\n var files = parseSource(source, command)\n var errors = parseErrorLog(errLog)\n annotateFiles(files, errors)\n\n Object.keys(files).forEach(function (fileNumber) {\n var file = files[fileNumber]\n if (!file.hasErrors) {\n return\n }\n\n var strings = ['']\n var styles = ['']\n\n function push (str, style) {\n strings.push(str)\n styles.push(style || '')\n }\n\n push('file number ' + fileNumber + ': ' + file.name + '\\n', 'color:red;text-decoration:underline;font-weight:bold')\n\n file.lines.forEach(function (line) {\n if (line.errors.length > 0) {\n push(leftPad(line.number, 4) + '| ', 'background-color:yellow; font-weight:bold')\n push(line.line + endl, 'color:red; background-color:yellow; font-weight:bold')\n\n // try to guess token\n var offset = 0\n line.errors.forEach(function (error) {\n var message = error.message\n var token = /^\\s*'(.*)'\\s*:\\s*(.*)$/.exec(message)\n if (token) {\n var tokenPat = token[1]\n message = token[2]\n switch (tokenPat) {\n case 'assign':\n tokenPat = '='\n break\n }\n offset = Math.max(line.line.indexOf(tokenPat, offset), 0)\n } else {\n offset = 0\n }\n\n push(leftPad('| ', 6))\n push(leftPad('^^^', offset + 3) + endl, 'font-weight:bold')\n push(leftPad('| ', 6))\n push(message + endl, 'font-weight:bold')\n })\n push(leftPad('| ', 6) + endl)\n } else {\n push(leftPad(line.number, 4) + '| ')\n push(line.line + endl, 'color:red')\n }\n })\n if (typeof document !== 'undefined' && !window.chrome) {\n styles[0] = strings.join('%c')\n console.log.apply(console, styles)\n } else {\n console.log(strings.join(''))\n }\n })\n\n check.raise('Error compiling ' + typeName + ' shader, ' + files[0].name)\n }\n}\n\nfunction checkLinkError (gl, program, fragShader, vertShader, command) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n var errLog = gl.getProgramInfoLog(program)\n var fragParse = parseSource(fragShader, command)\n var vertParse = parseSource(vertShader, command)\n\n var header = 'Error linking program with vertex shader, \"' +\n vertParse[0].name + '\", and fragment shader \"' + fragParse[0].name + '\"'\n\n if (typeof document !== 'undefined') {\n console.log('%c' + header + endl + '%c' + errLog,\n 'color:red;text-decoration:underline;font-weight:bold',\n 'color:red')\n } else {\n console.log(header + endl + errLog)\n }\n check.raise(header)\n }\n}\n\nfunction saveCommandRef (object) {\n object._commandRef = guessCommand()\n}\n\nfunction saveDrawCommandInfo (opts, uniforms, attributes, stringStore) {\n saveCommandRef(opts)\n\n function id (str) {\n if (str) {\n return stringStore.id(str)\n }\n return 0\n }\n opts._fragId = id(opts.static.frag)\n opts._vertId = id(opts.static.vert)\n\n function addProps (dict, set) {\n Object.keys(set).forEach(function (u) {\n dict[stringStore.id(u)] = true\n })\n }\n\n var uniformSet = opts._uniformSet = {}\n addProps(uniformSet, uniforms.static)\n addProps(uniformSet, uniforms.dynamic)\n\n var attributeSet = opts._attributeSet = {}\n addProps(attributeSet, attributes.static)\n addProps(attributeSet, attributes.dynamic)\n\n opts._hasCount = (\n 'count' in opts.static ||\n 'count' in opts.dynamic ||\n 'elements' in opts.static ||\n 'elements' in opts.dynamic)\n}\n\nfunction commandRaise (message, command) {\n var callSite = guessCallSite()\n raise(message +\n ' in command ' + (command || guessCommand()) +\n (callSite === 'unknown' ? '' : ' called from ' + callSite))\n}\n\nfunction checkCommand (pred, message, command) {\n if (!pred) {\n commandRaise(message, command || guessCommand())\n }\n}\n\nfunction checkParameterCommand (param, possibilities, message, command) {\n if (!(param in possibilities)) {\n commandRaise(\n 'unknown parameter (' + param + ')' + encolon(message) +\n '. possible values: ' + Object.keys(possibilities).join(),\n command || guessCommand())\n }\n}\n\nfunction checkCommandType (value, type, message, command) {\n if (!standardTypeEh(value, type)) {\n commandRaise(\n 'invalid parameter type' + encolon(message) +\n '. expected ' + type + ', got ' + (typeof value),\n command || guessCommand())\n }\n}\n\nfunction checkOptional (block) {\n block()\n}\n\nfunction checkFramebufferFormat (attachment, texFormats, rbFormats) {\n if (attachment.texture) {\n checkOneOf(\n attachment.texture._texture.internalformat,\n texFormats,\n 'unsupported texture format for attachment')\n } else {\n checkOneOf(\n attachment.renderbuffer._renderbuffer.format,\n rbFormats,\n 'unsupported renderbuffer format for attachment')\n }\n}\n\nvar GL_CLAMP_TO_EDGE = 0x812F\n\nvar GL_NEAREST = 0x2600\nvar GL_NEAREST_MIPMAP_NEAREST = 0x2700\nvar GL_LINEAR_MIPMAP_NEAREST = 0x2701\nvar GL_NEAREST_MIPMAP_LINEAR = 0x2702\nvar GL_LINEAR_MIPMAP_LINEAR = 0x2703\n\nvar GL_BYTE = 5120\nvar GL_UNSIGNED_BYTE = 5121\nvar GL_SHORT = 5122\nvar GL_UNSIGNED_SHORT = 5123\nvar GL_INT = 5124\nvar GL_UNSIGNED_INT = 5125\nvar GL_FLOAT = 5126\n\nvar GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nvar GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nvar GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nvar GL_UNSIGNED_INT_24_8_WEBGL = 0x84FA\n\nvar GL_HALF_FLOAT_OES = 0x8D61\n\nvar TYPE_SIZE = {}\n\nTYPE_SIZE[GL_BYTE] =\nTYPE_SIZE[GL_UNSIGNED_BYTE] = 1\n\nTYPE_SIZE[GL_SHORT] =\nTYPE_SIZE[GL_UNSIGNED_SHORT] =\nTYPE_SIZE[GL_HALF_FLOAT_OES] =\nTYPE_SIZE[GL_UNSIGNED_SHORT_5_6_5] =\nTYPE_SIZE[GL_UNSIGNED_SHORT_4_4_4_4] =\nTYPE_SIZE[GL_UNSIGNED_SHORT_5_5_5_1] = 2\n\nTYPE_SIZE[GL_INT] =\nTYPE_SIZE[GL_UNSIGNED_INT] =\nTYPE_SIZE[GL_FLOAT] =\nTYPE_SIZE[GL_UNSIGNED_INT_24_8_WEBGL] = 4\n\nfunction pixelSize (type, channels) {\n if (type === GL_UNSIGNED_SHORT_5_5_5_1 ||\n type === GL_UNSIGNED_SHORT_4_4_4_4 ||\n type === GL_UNSIGNED_SHORT_5_6_5) {\n return 2\n } else if (type === GL_UNSIGNED_INT_24_8_WEBGL) {\n return 4\n } else {\n return TYPE_SIZE[type] * channels\n }\n}\n\nfunction isPow2 (v) {\n return !(v & (v - 1)) && (!!v)\n}\n\nfunction checkTexture2D (info, mipData, limits) {\n var i\n var w = mipData.width\n var h = mipData.height\n var c = mipData.channels\n\n // Check texture shape\n check(w > 0 && w <= limits.maxTextureSize &&\n h > 0 && h <= limits.maxTextureSize,\n 'invalid texture shape')\n\n // check wrap mode\n if (info.wrapS !== GL_CLAMP_TO_EDGE || info.wrapT !== GL_CLAMP_TO_EDGE) {\n check(isPow2(w) && isPow2(h),\n 'incompatible wrap mode for texture, both width and height must be power of 2')\n }\n\n if (mipData.mipmask === 1) {\n if (w !== 1 && h !== 1) {\n check(\n info.minFilter !== GL_NEAREST_MIPMAP_NEAREST &&\n info.minFilter !== GL_NEAREST_MIPMAP_LINEAR &&\n info.minFilter !== GL_LINEAR_MIPMAP_NEAREST &&\n info.minFilter !== GL_LINEAR_MIPMAP_LINEAR,\n 'min filter requires mipmap')\n }\n } else {\n // texture must be power of 2\n check(isPow2(w) && isPow2(h),\n 'texture must be a square power of 2 to support mipmapping')\n check(mipData.mipmask === (w << 1) - 1,\n 'missing or incomplete mipmap data')\n }\n\n if (mipData.type === GL_FLOAT) {\n if (limits.extensions.indexOf('oes_texture_float_linear') < 0) {\n check(info.minFilter === GL_NEAREST && info.magFilter === GL_NEAREST,\n 'filter not supported, must enable oes_texture_float_linear')\n }\n check(!info.genMipmaps,\n 'mipmap generation not supported with float textures')\n }\n\n // check image complete\n var mipimages = mipData.images\n for (i = 0; i < 16; ++i) {\n if (mipimages[i]) {\n var mw = w >> i\n var mh = h >> i\n check(mipData.mipmask & (1 << i), 'missing mipmap data')\n\n var img = mipimages[i]\n\n check(\n img.width === mw &&\n img.height === mh,\n 'invalid shape for mip images')\n\n check(\n img.format === mipData.format &&\n img.internalformat === mipData.internalformat &&\n img.type === mipData.type,\n 'incompatible type for mip image')\n\n if (img.compressed) {\n // TODO: check size for compressed images\n } else if (img.data) {\n // check(img.data.byteLength === mw * mh *\n // Math.max(pixelSize(img.type, c), img.unpackAlignment),\n var rowSize = Math.ceil(pixelSize(img.type, c) * mw / img.unpackAlignment) * img.unpackAlignment\n check(img.data.byteLength === rowSize * mh,\n 'invalid data for image, buffer size is inconsistent with image format')\n } else if (img.element) {\n // TODO: check element can be loaded\n } else if (img.copy) {\n // TODO: check compatible format and type\n }\n } else if (!info.genMipmaps) {\n check((mipData.mipmask & (1 << i)) === 0, 'extra mipmap data')\n }\n }\n\n if (mipData.compressed) {\n check(!info.genMipmaps,\n 'mipmap generation for compressed images not supported')\n }\n}\n\nfunction checkTextureCube (texture, info, faces, limits) {\n var w = texture.width\n var h = texture.height\n var c = texture.channels\n\n // Check texture shape\n check(\n w > 0 && w <= limits.maxTextureSize && h > 0 && h <= limits.maxTextureSize,\n 'invalid texture shape')\n check(\n w === h,\n 'cube map must be square')\n check(\n info.wrapS === GL_CLAMP_TO_EDGE && info.wrapT === GL_CLAMP_TO_EDGE,\n 'wrap mode not supported by cube map')\n\n for (var i = 0; i < faces.length; ++i) {\n var face = faces[i]\n check(\n face.width === w && face.height === h,\n 'inconsistent cube map face shape')\n\n if (info.genMipmaps) {\n check(!face.compressed,\n 'can not generate mipmap for compressed textures')\n check(face.mipmask === 1,\n 'can not specify mipmaps and generate mipmaps')\n } else {\n // TODO: check mip and filter mode\n }\n\n var mipmaps = face.images\n for (var j = 0; j < 16; ++j) {\n var img = mipmaps[j]\n if (img) {\n var mw = w >> j\n var mh = h >> j\n check(face.mipmask & (1 << j), 'missing mipmap data')\n check(\n img.width === mw &&\n img.height === mh,\n 'invalid shape for mip images')\n check(\n img.format === texture.format &&\n img.internalformat === texture.internalformat &&\n img.type === texture.type,\n 'incompatible type for mip image')\n\n if (img.compressed) {\n // TODO: check size for compressed images\n } else if (img.data) {\n check(img.data.byteLength === mw * mh *\n Math.max(pixelSize(img.type, c), img.unpackAlignment),\n 'invalid data for image, buffer size is inconsistent with image format')\n } else if (img.element) {\n // TODO: check element can be loaded\n } else if (img.copy) {\n // TODO: check compatible format and type\n }\n }\n }\n }\n}\n\nvar check$1 = extend(check, {\n optional: checkOptional,\n raise: raise,\n commandRaise: commandRaise,\n command: checkCommand,\n parameter: checkParameter,\n commandParameter: checkParameterCommand,\n constructor: checkConstructor,\n type: checkTypeOf,\n commandType: checkCommandType,\n isTypedArray: checkIsTypedArray,\n nni: checkNonNegativeInt,\n oneOf: checkOneOf,\n shaderError: checkShaderError,\n linkError: checkLinkError,\n callSite: guessCallSite,\n saveCommandRef: saveCommandRef,\n saveDrawInfo: saveDrawCommandInfo,\n framebufferFormat: checkFramebufferFormat,\n guessCommand: guessCommand,\n texture2D: checkTexture2D,\n textureCube: checkTextureCube\n});\n\nvar VARIABLE_COUNTER = 0\n\nvar DYN_FUNC = 0\nvar DYN_CONSTANT = 5\nvar DYN_ARRAY = 6\n\nfunction DynamicVariable (type, data) {\n this.id = (VARIABLE_COUNTER++)\n this.type = type\n this.data = data\n}\n\nfunction escapeStr (str) {\n return str.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n}\n\nfunction splitParts (str) {\n if (str.length === 0) {\n return []\n }\n\n var firstChar = str.charAt(0)\n var lastChar = str.charAt(str.length - 1)\n\n if (str.length > 1 &&\n firstChar === lastChar &&\n (firstChar === '\"' || firstChar === \"'\")) {\n return ['\"' + escapeStr(str.substr(1, str.length - 2)) + '\"']\n }\n\n var parts = /\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(str)\n if (parts) {\n return (\n splitParts(str.substr(0, parts.index))\n .concat(splitParts(parts[1]))\n .concat(splitParts(str.substr(parts.index + parts[0].length)))\n )\n }\n\n var subparts = str.split('.')\n if (subparts.length === 1) {\n return ['\"' + escapeStr(str) + '\"']\n }\n\n var result = []\n for (var i = 0; i < subparts.length; ++i) {\n result = result.concat(splitParts(subparts[i]))\n }\n return result\n}\n\nfunction toAccessorString (str) {\n return '[' + splitParts(str).join('][') + ']'\n}\n\nfunction defineDynamic (type, data) {\n return new DynamicVariable(type, toAccessorString(data + ''))\n}\n\nfunction isDynamic (x) {\n return (typeof x === 'function' && !x._reglType) || (x instanceof DynamicVariable)\n}\n\nfunction unbox (x, path) {\n if (typeof x === 'function') {\n return new DynamicVariable(DYN_FUNC, x)\n } else if (typeof x === 'number' || typeof x === 'boolean') {\n return new DynamicVariable(DYN_CONSTANT, x)\n } else if (Array.isArray(x)) {\n return new DynamicVariable(DYN_ARRAY, x.map((y, i) => unbox(y, path + '[' + i + ']')))\n } else if (x instanceof DynamicVariable) {\n return x\n }\n check$1(false, 'invalid option type in uniform ' + path)\n}\n\nvar dynamic = {\n DynamicVariable: DynamicVariable,\n define: defineDynamic,\n isDynamic: isDynamic,\n unbox: unbox,\n accessor: toAccessorString\n};\n\n/* globals requestAnimationFrame, cancelAnimationFrame */\nvar raf = {\n next: typeof requestAnimationFrame === 'function'\n ? function (cb) { return requestAnimationFrame(cb) }\n : function (cb) { return setTimeout(cb, 16) },\n cancel: typeof cancelAnimationFrame === 'function'\n ? function (raf) { return cancelAnimationFrame(raf) }\n : clearTimeout\n};\n\n/* globals performance */\nvar clock = (typeof performance !== 'undefined' && performance.now)\n ? function () { return performance.now() }\n : function () { return +(new Date()) };\n\nfunction createStringStore () {\n var stringIds = { '': 0 }\n var stringValues = ['']\n return {\n id: function (str) {\n var result = stringIds[str]\n if (result) {\n return result\n }\n result = stringIds[str] = stringValues.length\n stringValues.push(str)\n return result\n },\n\n str: function (id) {\n return stringValues[id]\n }\n }\n}\n\n// Context and canvas creation helper functions\nfunction createCanvas (element, onDone, pixelRatio) {\n var canvas = document.createElement('canvas')\n extend(canvas.style, {\n border: 0,\n margin: 0,\n padding: 0,\n top: 0,\n left: 0\n })\n element.appendChild(canvas)\n\n if (element === document.body) {\n canvas.style.position = 'absolute'\n extend(element.style, {\n margin: 0,\n padding: 0\n })\n }\n\n function resize () {\n var w = window.innerWidth\n var h = window.innerHeight\n if (element !== document.body) {\n var bounds = element.getBoundingClientRect()\n w = bounds.right - bounds.left\n h = bounds.bottom - bounds.top\n }\n canvas.width = pixelRatio * w\n canvas.height = pixelRatio * h\n extend(canvas.style, {\n width: w + 'px',\n height: h + 'px'\n })\n }\n\n var resizeObserver\n if (element !== document.body && typeof ResizeObserver === 'function') {\n // ignore 'ResizeObserver' is not defined\n // eslint-disable-next-line\n resizeObserver = new ResizeObserver(function () {\n // setTimeout to avoid flicker\n setTimeout(resize)\n })\n resizeObserver.observe(element)\n } else {\n window.addEventListener('resize', resize, false)\n }\n\n function onDestroy () {\n if (resizeObserver) {\n resizeObserver.disconnect()\n } else {\n window.removeEventListener('resize', resize)\n }\n element.removeChild(canvas)\n }\n\n resize()\n\n return {\n canvas: canvas,\n onDestroy: onDestroy\n }\n}\n\nfunction createContext (canvas, contextAttributes) {\n function get (name) {\n try {\n return canvas.getContext(name, contextAttributes)\n } catch (e) {\n return null\n }\n }\n return (\n get('webgl') ||\n get('experimental-webgl') ||\n get('webgl-experimental')\n )\n}\n\nfunction isHTMLElement (obj) {\n return (\n typeof obj.nodeName === 'string' &&\n typeof obj.appendChild === 'function' &&\n typeof obj.getBoundingClientRect === 'function'\n )\n}\n\nfunction isWebGLContext (obj) {\n return (\n typeof obj.drawArrays === 'function' ||\n typeof obj.drawElements === 'function'\n )\n}\n\nfunction parseExtensions (input) {\n if (typeof input === 'string') {\n return input.split()\n }\n check$1(Array.isArray(input), 'invalid extension array')\n return input\n}\n\nfunction getElement (desc) {\n if (typeof desc === 'string') {\n check$1(typeof document !== 'undefined', 'not supported outside of DOM')\n return document.querySelector(desc)\n }\n return desc\n}\n\nfunction parseArgs (args_) {\n var args = args_ || {}\n var element, container, canvas, gl\n var contextAttributes = {}\n var extensions = []\n var optionalExtensions = []\n var pixelRatio = (typeof window === 'undefined' ? 1 : window.devicePixelRatio)\n var profile = false\n var onDone = function (err) {\n if (err) {\n check$1.raise(err)\n }\n }\n var onDestroy = function () {}\n if (typeof args === 'string') {\n check$1(\n typeof document !== 'undefined',\n 'selector queries only supported in DOM enviroments')\n element = document.querySelector(args)\n check$1(element, 'invalid query string for element')\n } else if (typeof args === 'object') {\n if (isHTMLElement(args)) {\n element = args\n } else if (isWebGLContext(args)) {\n gl = args\n canvas = gl.canvas\n } else {\n check$1.constructor(args)\n if ('gl' in args) {\n gl = args.gl\n } else if ('canvas' in args) {\n canvas = getElement(args.canvas)\n } else if ('container' in args) {\n container = getElement(args.container)\n }\n if ('attributes' in args) {\n contextAttributes = args.attributes\n check$1.type(contextAttributes, 'object', 'invalid context attributes')\n }\n if ('extensions' in args) {\n extensions = parseExtensions(args.extensions)\n }\n if ('optionalExtensions' in args) {\n optionalExtensions = parseExtensions(args.optionalExtensions)\n }\n if ('onDone' in args) {\n check$1.type(\n args.onDone, 'function',\n 'invalid or missing onDone callback')\n onDone = args.onDone\n }\n if ('profile' in args) {\n profile = !!args.profile\n }\n if ('pixelRatio' in args) {\n pixelRatio = +args.pixelRatio\n check$1(pixelRatio > 0, 'invalid pixel ratio')\n }\n }\n } else {\n check$1.raise('invalid arguments to regl')\n }\n\n if (element) {\n if (element.nodeName.toLowerCase() === 'canvas') {\n canvas = element\n } else {\n container = element\n }\n }\n\n if (!gl) {\n if (!canvas) {\n check$1(\n typeof document !== 'undefined',\n 'must manually specify webgl context outside of DOM environments')\n var result = createCanvas(container || document.body, onDone, pixelRatio)\n if (!result) {\n return null\n }\n canvas = result.canvas\n onDestroy = result.onDestroy\n }\n // workaround for chromium bug, premultiplied alpha value is platform dependent\n if (contextAttributes.premultipliedAlpha === undefined) contextAttributes.premultipliedAlpha = true\n gl = createContext(canvas, contextAttributes)\n }\n\n if (!gl) {\n onDestroy()\n onDone('webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org')\n return null\n }\n\n return {\n gl: gl,\n canvas: canvas,\n container: container,\n extensions: extensions,\n optionalExtensions: optionalExtensions,\n pixelRatio: pixelRatio,\n profile: profile,\n onDone: onDone,\n onDestroy: onDestroy\n }\n}\n\nfunction createExtensionCache (gl, config) {\n var extensions = {}\n\n function tryLoadExtension (name_) {\n check$1.type(name_, 'string', 'extension name must be string')\n var name = name_.toLowerCase()\n var ext\n try {\n ext = extensions[name] = gl.getExtension(name)\n } catch (e) {}\n return !!ext\n }\n\n for (var i = 0; i < config.extensions.length; ++i) {\n var name = config.extensions[i]\n if (!tryLoadExtension(name)) {\n config.onDestroy()\n config.onDone('\"' + name + '\" extension is not supported by the current WebGL context, try upgrading your system or a different browser')\n return null\n }\n }\n\n config.optionalExtensions.forEach(tryLoadExtension)\n\n return {\n extensions: extensions,\n restore: function () {\n Object.keys(extensions).forEach(function (name) {\n if (extensions[name] && !tryLoadExtension(name)) {\n throw new Error('(regl): error restoring extension ' + name)\n }\n })\n }\n }\n}\n\nfunction loop (n, f) {\n var result = Array(n)\n for (var i = 0; i < n; ++i) {\n result[i] = f(i)\n }\n return result\n}\n\nvar GL_BYTE$1 = 5120\nvar GL_UNSIGNED_BYTE$2 = 5121\nvar GL_SHORT$1 = 5122\nvar GL_UNSIGNED_SHORT$1 = 5123\nvar GL_INT$1 = 5124\nvar GL_UNSIGNED_INT$1 = 5125\nvar GL_FLOAT$2 = 5126\n\nfunction nextPow16 (v) {\n for (var i = 16; i <= (1 << 28); i *= 16) {\n if (v <= i) {\n return i\n }\n }\n return 0\n}\n\nfunction log2 (v) {\n var r, shift\n r = (v > 0xFFFF) << 4\n v >>>= r\n shift = (v > 0xFF) << 3\n v >>>= shift; r |= shift\n shift = (v > 0xF) << 2\n v >>>= shift; r |= shift\n shift = (v > 0x3) << 1\n v >>>= shift; r |= shift\n return r | (v >> 1)\n}\n\nfunction createPool () {\n var bufferPool = loop(8, function () {\n return []\n })\n\n function alloc (n) {\n var sz = nextPow16(n)\n var bin = bufferPool[log2(sz) >> 2]\n if (bin.length > 0) {\n return bin.pop()\n }\n return new ArrayBuffer(sz)\n }\n\n function free (buf) {\n bufferPool[log2(buf.byteLength) >> 2].push(buf)\n }\n\n function allocType (type, n) {\n var result = null\n switch (type) {\n case GL_BYTE$1:\n result = new Int8Array(alloc(n), 0, n)\n break\n case GL_UNSIGNED_BYTE$2:\n result = new Uint8Array(alloc(n), 0, n)\n break\n case GL_SHORT$1:\n result = new Int16Array(alloc(2 * n), 0, n)\n break\n case GL_UNSIGNED_SHORT$1:\n result = new Uint16Array(alloc(2 * n), 0, n)\n break\n case GL_INT$1:\n result = new Int32Array(alloc(4 * n), 0, n)\n break\n case GL_UNSIGNED_INT$1:\n result = new Uint32Array(alloc(4 * n), 0, n)\n break\n case GL_FLOAT$2:\n result = new Float32Array(alloc(4 * n), 0, n)\n break\n default:\n return null\n }\n if (result.length !== n) {\n return result.subarray(0, n)\n }\n return result\n }\n\n function freeType (array) {\n free(array.buffer)\n }\n\n return {\n alloc: alloc,\n free: free,\n allocType: allocType,\n freeType: freeType\n }\n}\n\nvar pool = createPool()\n\n// zero pool for initial zero data\npool.zero = createPool()\n\nvar GL_SUBPIXEL_BITS = 0x0D50\nvar GL_RED_BITS = 0x0D52\nvar GL_GREEN_BITS = 0x0D53\nvar GL_BLUE_BITS = 0x0D54\nvar GL_ALPHA_BITS = 0x0D55\nvar GL_DEPTH_BITS = 0x0D56\nvar GL_STENCIL_BITS = 0x0D57\n\nvar GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nvar GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\n\nvar GL_MAX_TEXTURE_SIZE = 0x0D33\nvar GL_MAX_VIEWPORT_DIMS = 0x0D3A\nvar GL_MAX_VERTEX_ATTRIBS = 0x8869\nvar GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nvar GL_MAX_VARYING_VECTORS = 0x8DFC\nvar GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nvar GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nvar GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nvar GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nvar GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nvar GL_MAX_RENDERBUFFER_SIZE = 0x84E8\n\nvar GL_VENDOR = 0x1F00\nvar GL_RENDERER = 0x1F01\nvar GL_VERSION = 0x1F02\nvar GL_SHADING_LANGUAGE_VERSION = 0x8B8C\n\nvar GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF\n\nvar GL_MAX_COLOR_ATTACHMENTS_WEBGL = 0x8CDF\nvar GL_MAX_DRAW_BUFFERS_WEBGL = 0x8824\n\nvar GL_TEXTURE_2D = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP = 0x8513\nvar GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nvar GL_TEXTURE0 = 0x84C0\nvar GL_RGBA = 0x1908\nvar GL_FLOAT$1 = 0x1406\nvar GL_UNSIGNED_BYTE$1 = 0x1401\nvar GL_FRAMEBUFFER = 0x8D40\nvar GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nvar GL_COLOR_ATTACHMENT0 = 0x8CE0\nvar GL_COLOR_BUFFER_BIT$1 = 0x4000\n\nvar wrapLimits = function (gl, extensions) {\n var maxAnisotropic = 1\n if (extensions.ext_texture_filter_anisotropic) {\n maxAnisotropic = gl.getParameter(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n }\n\n var maxDrawbuffers = 1\n var maxColorAttachments = 1\n if (extensions.webgl_draw_buffers) {\n maxDrawbuffers = gl.getParameter(GL_MAX_DRAW_BUFFERS_WEBGL)\n maxColorAttachments = gl.getParameter(GL_MAX_COLOR_ATTACHMENTS_WEBGL)\n }\n\n // detect if reading float textures is available (Safari doesn't support)\n var readFloat = !!extensions.oes_texture_float\n if (readFloat) {\n var readFloatTexture = gl.createTexture()\n gl.bindTexture(GL_TEXTURE_2D, readFloatTexture)\n gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_FLOAT$1, null)\n\n var fbo = gl.createFramebuffer()\n gl.bindFramebuffer(GL_FRAMEBUFFER, fbo)\n gl.framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, readFloatTexture, 0)\n gl.bindTexture(GL_TEXTURE_2D, null)\n\n if (gl.checkFramebufferStatus(GL_FRAMEBUFFER) !== GL_FRAMEBUFFER_COMPLETE) readFloat = false\n\n else {\n gl.viewport(0, 0, 1, 1)\n gl.clearColor(1.0, 0.0, 0.0, 1.0)\n gl.clear(GL_COLOR_BUFFER_BIT$1)\n var pixels = pool.allocType(GL_FLOAT$1, 4)\n gl.readPixels(0, 0, 1, 1, GL_RGBA, GL_FLOAT$1, pixels)\n\n if (gl.getError()) readFloat = false\n else {\n gl.deleteFramebuffer(fbo)\n gl.deleteTexture(readFloatTexture)\n\n readFloat = pixels[0] === 1.0\n }\n\n pool.freeType(pixels)\n }\n }\n\n // detect non power of two cube textures support (IE doesn't support)\n var isIE = typeof navigator !== 'undefined' && (/MSIE/.test(navigator.userAgent) || /Trident\\//.test(navigator.appVersion) || /Edge/.test(navigator.userAgent))\n\n var npotTextureCube = true\n\n if (!isIE) {\n var cubeTexture = gl.createTexture()\n var data = pool.allocType(GL_UNSIGNED_BYTE$1, 36)\n gl.activeTexture(GL_TEXTURE0)\n gl.bindTexture(GL_TEXTURE_CUBE_MAP, cubeTexture)\n gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, 3, 3, 0, GL_RGBA, GL_UNSIGNED_BYTE$1, data)\n pool.freeType(data)\n gl.bindTexture(GL_TEXTURE_CUBE_MAP, null)\n gl.deleteTexture(cubeTexture)\n npotTextureCube = !gl.getError()\n }\n\n return {\n // drawing buffer bit depth\n colorBits: [\n gl.getParameter(GL_RED_BITS),\n gl.getParameter(GL_GREEN_BITS),\n gl.getParameter(GL_BLUE_BITS),\n gl.getParameter(GL_ALPHA_BITS)\n ],\n depthBits: gl.getParameter(GL_DEPTH_BITS),\n stencilBits: gl.getParameter(GL_STENCIL_BITS),\n subpixelBits: gl.getParameter(GL_SUBPIXEL_BITS),\n\n // supported extensions\n extensions: Object.keys(extensions).filter(function (ext) {\n return !!extensions[ext]\n }),\n\n // max aniso samples\n maxAnisotropic: maxAnisotropic,\n\n // max draw buffers\n maxDrawbuffers: maxDrawbuffers,\n maxColorAttachments: maxColorAttachments,\n\n // point and line size ranges\n pointSizeDims: gl.getParameter(GL_ALIASED_POINT_SIZE_RANGE),\n lineWidthDims: gl.getParameter(GL_ALIASED_LINE_WIDTH_RANGE),\n maxViewportDims: gl.getParameter(GL_MAX_VIEWPORT_DIMS),\n maxCombinedTextureUnits: gl.getParameter(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxCubeMapSize: gl.getParameter(GL_MAX_CUBE_MAP_TEXTURE_SIZE),\n maxRenderbufferSize: gl.getParameter(GL_MAX_RENDERBUFFER_SIZE),\n maxTextureUnits: gl.getParameter(GL_MAX_TEXTURE_IMAGE_UNITS),\n maxTextureSize: gl.getParameter(GL_MAX_TEXTURE_SIZE),\n maxAttributes: gl.getParameter(GL_MAX_VERTEX_ATTRIBS),\n maxVertexUniforms: gl.getParameter(GL_MAX_VERTEX_UNIFORM_VECTORS),\n maxVertexTextureUnits: gl.getParameter(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS),\n maxVaryingVectors: gl.getParameter(GL_MAX_VARYING_VECTORS),\n maxFragmentUniforms: gl.getParameter(GL_MAX_FRAGMENT_UNIFORM_VECTORS),\n\n // vendor info\n glsl: gl.getParameter(GL_SHADING_LANGUAGE_VERSION),\n renderer: gl.getParameter(GL_RENDERER),\n vendor: gl.getParameter(GL_VENDOR),\n version: gl.getParameter(GL_VERSION),\n\n // quirks\n readFloat: readFloat,\n npotTextureCube: npotTextureCube\n }\n}\n\nfunction isNDArrayLike (obj) {\n return (\n !!obj &&\n typeof obj === 'object' &&\n Array.isArray(obj.shape) &&\n Array.isArray(obj.stride) &&\n typeof obj.offset === 'number' &&\n obj.shape.length === obj.stride.length &&\n (Array.isArray(obj.data) ||\n isTypedArray(obj.data)))\n}\n\nvar values = function (obj) {\n return Object.keys(obj).map(function (key) { return obj[key] })\n}\n\nvar flattenUtils = {\n shape: arrayShape$1,\n flatten: flattenArray\n};\n\nfunction flatten1D (array, nx, out) {\n for (var i = 0; i < nx; ++i) {\n out[i] = array[i]\n }\n}\n\nfunction flatten2D (array, nx, ny, out) {\n var ptr = 0\n for (var i = 0; i < nx; ++i) {\n var row = array[i]\n for (var j = 0; j < ny; ++j) {\n out[ptr++] = row[j]\n }\n }\n}\n\nfunction flatten3D (array, nx, ny, nz, out, ptr_) {\n var ptr = ptr_\n for (var i = 0; i < nx; ++i) {\n var row = array[i]\n for (var j = 0; j < ny; ++j) {\n var col = row[j]\n for (var k = 0; k < nz; ++k) {\n out[ptr++] = col[k]\n }\n }\n }\n}\n\nfunction flattenRec (array, shape, level, out, ptr) {\n var stride = 1\n for (var i = level + 1; i < shape.length; ++i) {\n stride *= shape[i]\n }\n var n = shape[level]\n if (shape.length - level === 4) {\n var nx = shape[level + 1]\n var ny = shape[level + 2]\n var nz = shape[level + 3]\n for (i = 0; i < n; ++i) {\n flatten3D(array[i], nx, ny, nz, out, ptr)\n ptr += stride\n }\n } else {\n for (i = 0; i < n; ++i) {\n flattenRec(array[i], shape, level + 1, out, ptr)\n ptr += stride\n }\n }\n}\n\nfunction flattenArray (array, shape, type, out_) {\n var sz = 1\n if (shape.length) {\n for (var i = 0; i < shape.length; ++i) {\n sz *= shape[i]\n }\n } else {\n sz = 0\n }\n var out = out_ || pool.allocType(type, sz)\n switch (shape.length) {\n case 0:\n break\n case 1:\n flatten1D(array, shape[0], out)\n break\n case 2:\n flatten2D(array, shape[0], shape[1], out)\n break\n case 3:\n flatten3D(array, shape[0], shape[1], shape[2], out, 0)\n break\n default:\n flattenRec(array, shape, 0, out, 0)\n }\n return out\n}\n\nfunction arrayShape$1 (array_) {\n var shape = []\n for (var array = array_; array.length; array = array[0]) {\n shape.push(array.length)\n }\n return shape\n}\n\nvar arrayTypes = {\n\t\"[object Int8Array]\": 5120,\n\t\"[object Int16Array]\": 5122,\n\t\"[object Int32Array]\": 5124,\n\t\"[object Uint8Array]\": 5121,\n\t\"[object Uint8ClampedArray]\": 5121,\n\t\"[object Uint16Array]\": 5123,\n\t\"[object Uint32Array]\": 5125,\n\t\"[object Float32Array]\": 5126,\n\t\"[object Float64Array]\": 5121,\n\t\"[object ArrayBuffer]\": 5121\n};\n\nvar int8 = 5120;\nvar int16 = 5122;\nvar int32 = 5124;\nvar uint8 = 5121;\nvar uint16 = 5123;\nvar uint32 = 5125;\nvar float = 5126;\nvar float32 = 5126;\nvar glTypes = {\n\tint8: int8,\n\tint16: int16,\n\tint32: int32,\n\tuint8: uint8,\n\tuint16: uint16,\n\tuint32: uint32,\n\tfloat: float,\n\tfloat32: float32\n};\n\nvar dynamic$1 = 35048;\nvar stream = 35040;\nvar usageTypes = {\n\tdynamic: dynamic$1,\n\tstream: stream,\n\t\"static\": 35044\n};\n\nvar arrayFlatten = flattenUtils.flatten\nvar arrayShape = flattenUtils.shape\n\nvar GL_STATIC_DRAW = 0x88E4\nvar GL_STREAM_DRAW = 0x88E0\n\nvar GL_UNSIGNED_BYTE$3 = 5121\nvar GL_FLOAT$3 = 5126\n\nvar DTYPES_SIZES = []\nDTYPES_SIZES[5120] = 1 // int8\nDTYPES_SIZES[5122] = 2 // int16\nDTYPES_SIZES[5124] = 4 // int32\nDTYPES_SIZES[5121] = 1 // uint8\nDTYPES_SIZES[5123] = 2 // uint16\nDTYPES_SIZES[5125] = 4 // uint32\nDTYPES_SIZES[5126] = 4 // float32\n\nfunction typedArrayCode (data) {\n return arrayTypes[Object.prototype.toString.call(data)] | 0\n}\n\nfunction copyArray (out, inp) {\n for (var i = 0; i < inp.length; ++i) {\n out[i] = inp[i]\n }\n}\n\nfunction transpose (\n result, data, shapeX, shapeY, strideX, strideY, offset) {\n var ptr = 0\n for (var i = 0; i < shapeX; ++i) {\n for (var j = 0; j < shapeY; ++j) {\n result[ptr++] = data[strideX * i + strideY * j + offset]\n }\n }\n}\n\nfunction wrapBufferState (gl, stats, config, destroyBuffer) {\n var bufferCount = 0\n var bufferSet = {}\n\n function REGLBuffer (type) {\n this.id = bufferCount++\n this.buffer = gl.createBuffer()\n this.type = type\n this.usage = GL_STATIC_DRAW\n this.byteLength = 0\n this.dimension = 1\n this.dtype = GL_UNSIGNED_BYTE$3\n\n this.persistentData = null\n\n if (config.profile) {\n this.stats = { size: 0 }\n }\n }\n\n REGLBuffer.prototype.bind = function () {\n gl.bindBuffer(this.type, this.buffer)\n }\n\n REGLBuffer.prototype.destroy = function () {\n destroy(this)\n }\n\n var streamPool = []\n\n function createStream (type, data) {\n var buffer = streamPool.pop()\n if (!buffer) {\n buffer = new REGLBuffer(type)\n }\n buffer.bind()\n initBufferFromData(buffer, data, GL_STREAM_DRAW, 0, 1, false)\n return buffer\n }\n\n function destroyStream (stream$$1) {\n streamPool.push(stream$$1)\n }\n\n function initBufferFromTypedArray (buffer, data, usage) {\n buffer.byteLength = data.byteLength\n gl.bufferData(buffer.type, data, usage)\n }\n\n function initBufferFromData (buffer, data, usage, dtype, dimension, persist) {\n var shape\n buffer.usage = usage\n if (Array.isArray(data)) {\n buffer.dtype = dtype || GL_FLOAT$3\n if (data.length > 0) {\n var flatData\n if (Array.isArray(data[0])) {\n shape = arrayShape(data)\n var dim = 1\n for (var i = 1; i < shape.length; ++i) {\n dim *= shape[i]\n }\n buffer.dimension = dim\n flatData = arrayFlatten(data, shape, buffer.dtype)\n initBufferFromTypedArray(buffer, flatData, usage)\n if (persist) {\n buffer.persistentData = flatData\n } else {\n pool.freeType(flatData)\n }\n } else if (typeof data[0] === 'number') {\n buffer.dimension = dimension\n var typedData = pool.allocType(buffer.dtype, data.length)\n copyArray(typedData, data)\n initBufferFromTypedArray(buffer, typedData, usage)\n if (persist) {\n buffer.persistentData = typedData\n } else {\n pool.freeType(typedData)\n }\n } else if (isTypedArray(data[0])) {\n buffer.dimension = data[0].length\n buffer.dtype = dtype || typedArrayCode(data[0]) || GL_FLOAT$3\n flatData = arrayFlatten(\n data,\n [data.length, data[0].length],\n buffer.dtype)\n initBufferFromTypedArray(buffer, flatData, usage)\n if (persist) {\n buffer.persistentData = flatData\n } else {\n pool.freeType(flatData)\n }\n } else {\n check$1.raise('invalid buffer data')\n }\n }\n } else if (isTypedArray(data)) {\n buffer.dtype = dtype || typedArrayCode(data)\n buffer.dimension = dimension\n initBufferFromTypedArray(buffer, data, usage)\n if (persist) {\n buffer.persistentData = new Uint8Array(new Uint8Array(data.buffer))\n }\n } else if (isNDArrayLike(data)) {\n shape = data.shape\n var stride = data.stride\n var offset = data.offset\n\n var shapeX = 0\n var shapeY = 0\n var strideX = 0\n var strideY = 0\n if (shape.length === 1) {\n shapeX = shape[0]\n shapeY = 1\n strideX = stride[0]\n strideY = 0\n } else if (shape.length === 2) {\n shapeX = shape[0]\n shapeY = shape[1]\n strideX = stride[0]\n strideY = stride[1]\n } else {\n check$1.raise('invalid shape')\n }\n\n buffer.dtype = dtype || typedArrayCode(data.data) || GL_FLOAT$3\n buffer.dimension = shapeY\n\n var transposeData = pool.allocType(buffer.dtype, shapeX * shapeY)\n transpose(transposeData,\n data.data,\n shapeX, shapeY,\n strideX, strideY,\n offset)\n initBufferFromTypedArray(buffer, transposeData, usage)\n if (persist) {\n buffer.persistentData = transposeData\n } else {\n pool.freeType(transposeData)\n }\n } else if (data instanceof ArrayBuffer) {\n buffer.dtype = GL_UNSIGNED_BYTE$3\n buffer.dimension = dimension\n initBufferFromTypedArray(buffer, data, usage)\n if (persist) {\n buffer.persistentData = new Uint8Array(new Uint8Array(data))\n }\n } else {\n check$1.raise('invalid buffer data')\n }\n }\n\n function destroy (buffer) {\n stats.bufferCount--\n\n // remove attribute link\n destroyBuffer(buffer)\n\n var handle = buffer.buffer\n check$1(handle, 'buffer must not be deleted already')\n gl.deleteBuffer(handle)\n buffer.buffer = null\n delete bufferSet[buffer.id]\n }\n\n function createBuffer (options, type, deferInit, persistent) {\n stats.bufferCount++\n\n var buffer = new REGLBuffer(type)\n bufferSet[buffer.id] = buffer\n\n function reglBuffer (options) {\n var usage = GL_STATIC_DRAW\n var data = null\n var byteLength = 0\n var dtype = 0\n var dimension = 1\n if (Array.isArray(options) ||\n isTypedArray(options) ||\n isNDArrayLike(options) ||\n options instanceof ArrayBuffer) {\n data = options\n } else if (typeof options === 'number') {\n byteLength = options | 0\n } else if (options) {\n check$1.type(\n options, 'object',\n 'buffer arguments must be an object, a number or an array')\n\n if ('data' in options) {\n check$1(\n data === null ||\n Array.isArray(data) ||\n isTypedArray(data) ||\n isNDArrayLike(data),\n 'invalid data for buffer')\n data = options.data\n }\n\n if ('usage' in options) {\n check$1.parameter(options.usage, usageTypes, 'invalid buffer usage')\n usage = usageTypes[options.usage]\n }\n\n if ('type' in options) {\n check$1.parameter(options.type, glTypes, 'invalid buffer type')\n dtype = glTypes[options.type]\n }\n\n if ('dimension' in options) {\n check$1.type(options.dimension, 'number', 'invalid dimension')\n dimension = options.dimension | 0\n }\n\n if ('length' in options) {\n check$1.nni(byteLength, 'buffer length must be a nonnegative integer')\n byteLength = options.length | 0\n }\n }\n\n buffer.bind()\n if (!data) {\n // #475\n if (byteLength) gl.bufferData(buffer.type, byteLength, usage)\n buffer.dtype = dtype || GL_UNSIGNED_BYTE$3\n buffer.usage = usage\n buffer.dimension = dimension\n buffer.byteLength = byteLength\n } else {\n initBufferFromData(buffer, data, usage, dtype, dimension, persistent)\n }\n\n if (config.profile) {\n buffer.stats.size = buffer.byteLength * DTYPES_SIZES[buffer.dtype]\n }\n\n return reglBuffer\n }\n\n function setSubData (data, offset) {\n check$1(offset + data.byteLength <= buffer.byteLength,\n 'invalid buffer subdata call, buffer is too small. ' + ' Can\\'t write data of size ' + data.byteLength + ' starting from offset ' + offset + ' to a buffer of size ' + buffer.byteLength)\n\n gl.bufferSubData(buffer.type, offset, data)\n }\n\n function subdata (data, offset_) {\n var offset = (offset_ || 0) | 0\n var shape\n buffer.bind()\n if (isTypedArray(data) || data instanceof ArrayBuffer) {\n setSubData(data, offset)\n } else if (Array.isArray(data)) {\n if (data.length > 0) {\n if (typeof data[0] === 'number') {\n var converted = pool.allocType(buffer.dtype, data.length)\n copyArray(converted, data)\n setSubData(converted, offset)\n pool.freeType(converted)\n } else if (Array.isArray(data[0]) || isTypedArray(data[0])) {\n shape = arrayShape(data)\n var flatData = arrayFlatten(data, shape, buffer.dtype)\n setSubData(flatData, offset)\n pool.freeType(flatData)\n } else {\n check$1.raise('invalid buffer data')\n }\n }\n } else if (isNDArrayLike(data)) {\n shape = data.shape\n var stride = data.stride\n\n var shapeX = 0\n var shapeY = 0\n var strideX = 0\n var strideY = 0\n if (shape.length === 1) {\n shapeX = shape[0]\n shapeY = 1\n strideX = stride[0]\n strideY = 0\n } else if (shape.length === 2) {\n shapeX = shape[0]\n shapeY = shape[1]\n strideX = stride[0]\n strideY = stride[1]\n } else {\n check$1.raise('invalid shape')\n }\n var dtype = Array.isArray(data.data)\n ? buffer.dtype\n : typedArrayCode(data.data)\n\n var transposeData = pool.allocType(dtype, shapeX * shapeY)\n transpose(transposeData,\n data.data,\n shapeX, shapeY,\n strideX, strideY,\n data.offset)\n setSubData(transposeData, offset)\n pool.freeType(transposeData)\n } else {\n check$1.raise('invalid data for buffer subdata')\n }\n return reglBuffer\n }\n\n if (!deferInit) {\n reglBuffer(options)\n }\n\n reglBuffer._reglType = 'buffer'\n reglBuffer._buffer = buffer\n reglBuffer.subdata = subdata\n if (config.profile) {\n reglBuffer.stats = buffer.stats\n }\n reglBuffer.destroy = function () { destroy(buffer) }\n\n return reglBuffer\n }\n\n function restoreBuffers () {\n values(bufferSet).forEach(function (buffer) {\n buffer.buffer = gl.createBuffer()\n gl.bindBuffer(buffer.type, buffer.buffer)\n gl.bufferData(\n buffer.type, buffer.persistentData || buffer.byteLength, buffer.usage)\n })\n }\n\n if (config.profile) {\n stats.getTotalBufferSize = function () {\n var total = 0\n // TODO: Right now, the streams are not part of the total count.\n Object.keys(bufferSet).forEach(function (key) {\n total += bufferSet[key].stats.size\n })\n return total\n }\n }\n\n return {\n create: createBuffer,\n\n createStream: createStream,\n destroyStream: destroyStream,\n\n clear: function () {\n values(bufferSet).forEach(destroy)\n streamPool.forEach(destroy)\n },\n\n getBuffer: function (wrapper) {\n if (wrapper && wrapper._buffer instanceof REGLBuffer) {\n return wrapper._buffer\n }\n return null\n },\n\n restore: restoreBuffers,\n\n _initBuffer: initBufferFromData\n }\n}\n\nvar points = 0;\nvar point = 0;\nvar lines = 1;\nvar line = 1;\nvar triangles = 4;\nvar triangle = 4;\nvar primTypes = {\n\tpoints: points,\n\tpoint: point,\n\tlines: lines,\n\tline: line,\n\ttriangles: triangles,\n\ttriangle: triangle,\n\t\"line loop\": 2,\n\t\"line strip\": 3,\n\t\"triangle strip\": 5,\n\t\"triangle fan\": 6\n};\n\nvar GL_POINTS = 0\nvar GL_LINES = 1\nvar GL_TRIANGLES = 4\n\nvar GL_BYTE$2 = 5120\nvar GL_UNSIGNED_BYTE$4 = 5121\nvar GL_SHORT$2 = 5122\nvar GL_UNSIGNED_SHORT$2 = 5123\nvar GL_INT$2 = 5124\nvar GL_UNSIGNED_INT$2 = 5125\n\nvar GL_ELEMENT_ARRAY_BUFFER = 34963\n\nvar GL_STREAM_DRAW$1 = 0x88E0\nvar GL_STATIC_DRAW$1 = 0x88E4\n\nfunction wrapElementsState (gl, extensions, bufferState, stats) {\n var elementSet = {}\n var elementCount = 0\n\n var elementTypes = {\n 'uint8': GL_UNSIGNED_BYTE$4,\n 'uint16': GL_UNSIGNED_SHORT$2\n }\n\n if (extensions.oes_element_index_uint) {\n elementTypes.uint32 = GL_UNSIGNED_INT$2\n }\n\n function REGLElementBuffer (buffer) {\n this.id = elementCount++\n elementSet[this.id] = this\n this.buffer = buffer\n this.primType = GL_TRIANGLES\n this.vertCount = 0\n this.type = 0\n }\n\n REGLElementBuffer.prototype.bind = function () {\n this.buffer.bind()\n }\n\n var bufferPool = []\n\n function createElementStream (data) {\n var result = bufferPool.pop()\n if (!result) {\n result = new REGLElementBuffer(bufferState.create(\n null,\n GL_ELEMENT_ARRAY_BUFFER,\n true,\n false)._buffer)\n }\n initElements(result, data, GL_STREAM_DRAW$1, -1, -1, 0, 0)\n return result\n }\n\n function destroyElementStream (elements) {\n bufferPool.push(elements)\n }\n\n function initElements (\n elements,\n data,\n usage,\n prim,\n count,\n byteLength,\n type) {\n elements.buffer.bind()\n var dtype\n if (data) {\n var predictedType = type\n if (!type && (\n !isTypedArray(data) ||\n (isNDArrayLike(data) && !isTypedArray(data.data)))) {\n predictedType = extensions.oes_element_index_uint\n ? GL_UNSIGNED_INT$2\n : GL_UNSIGNED_SHORT$2\n }\n bufferState._initBuffer(\n elements.buffer,\n data,\n usage,\n predictedType,\n 3)\n } else {\n gl.bufferData(GL_ELEMENT_ARRAY_BUFFER, byteLength, usage)\n elements.buffer.dtype = dtype || GL_UNSIGNED_BYTE$4\n elements.buffer.usage = usage\n elements.buffer.dimension = 3\n elements.buffer.byteLength = byteLength\n }\n\n dtype = type\n if (!type) {\n switch (elements.buffer.dtype) {\n case GL_UNSIGNED_BYTE$4:\n case GL_BYTE$2:\n dtype = GL_UNSIGNED_BYTE$4\n break\n\n case GL_UNSIGNED_SHORT$2:\n case GL_SHORT$2:\n dtype = GL_UNSIGNED_SHORT$2\n break\n\n case GL_UNSIGNED_INT$2:\n case GL_INT$2:\n dtype = GL_UNSIGNED_INT$2\n break\n\n default:\n check$1.raise('unsupported type for element array')\n }\n elements.buffer.dtype = dtype\n }\n elements.type = dtype\n\n // Check oes_element_index_uint extension\n check$1(\n dtype !== GL_UNSIGNED_INT$2 ||\n !!extensions.oes_element_index_uint,\n '32 bit element buffers not supported, enable oes_element_index_uint first')\n\n // try to guess default primitive type and arguments\n var vertCount = count\n if (vertCount < 0) {\n vertCount = elements.buffer.byteLength\n if (dtype === GL_UNSIGNED_SHORT$2) {\n vertCount >>= 1\n } else if (dtype === GL_UNSIGNED_INT$2) {\n vertCount >>= 2\n }\n }\n elements.vertCount = vertCount\n\n // try to guess primitive type from cell dimension\n var primType = prim\n if (prim < 0) {\n primType = GL_TRIANGLES\n var dimension = elements.buffer.dimension\n if (dimension === 1) primType = GL_POINTS\n if (dimension === 2) primType = GL_LINES\n if (dimension === 3) primType = GL_TRIANGLES\n }\n elements.primType = primType\n }\n\n function destroyElements (elements) {\n stats.elementsCount--\n\n check$1(elements.buffer !== null, 'must not double destroy elements')\n delete elementSet[elements.id]\n elements.buffer.destroy()\n elements.buffer = null\n }\n\n function createElements (options, persistent) {\n var buffer = bufferState.create(null, GL_ELEMENT_ARRAY_BUFFER, true)\n var elements = new REGLElementBuffer(buffer._buffer)\n stats.elementsCount++\n\n function reglElements (options) {\n if (!options) {\n buffer()\n elements.primType = GL_TRIANGLES\n elements.vertCount = 0\n elements.type = GL_UNSIGNED_BYTE$4\n } else if (typeof options === 'number') {\n buffer(options)\n elements.primType = GL_TRIANGLES\n elements.vertCount = options | 0\n elements.type = GL_UNSIGNED_BYTE$4\n } else {\n var data = null\n var usage = GL_STATIC_DRAW$1\n var primType = -1\n var vertCount = -1\n var byteLength = 0\n var dtype = 0\n if (Array.isArray(options) ||\n isTypedArray(options) ||\n isNDArrayLike(options)) {\n data = options\n } else {\n check$1.type(options, 'object', 'invalid arguments for elements')\n if ('data' in options) {\n data = options.data\n check$1(\n Array.isArray(data) ||\n isTypedArray(data) ||\n isNDArrayLike(data),\n 'invalid data for element buffer')\n }\n if ('usage' in options) {\n check$1.parameter(\n options.usage,\n usageTypes,\n 'invalid element buffer usage')\n usage = usageTypes[options.usage]\n }\n if ('primitive' in options) {\n check$1.parameter(\n options.primitive,\n primTypes,\n 'invalid element buffer primitive')\n primType = primTypes[options.primitive]\n }\n if ('count' in options) {\n check$1(\n typeof options.count === 'number' && options.count >= 0,\n 'invalid vertex count for elements')\n vertCount = options.count | 0\n }\n if ('type' in options) {\n check$1.parameter(\n options.type,\n elementTypes,\n 'invalid buffer type')\n dtype = elementTypes[options.type]\n }\n if ('length' in options) {\n byteLength = options.length | 0\n } else {\n byteLength = vertCount\n if (dtype === GL_UNSIGNED_SHORT$2 || dtype === GL_SHORT$2) {\n byteLength *= 2\n } else if (dtype === GL_UNSIGNED_INT$2 || dtype === GL_INT$2) {\n byteLength *= 4\n }\n }\n }\n initElements(\n elements,\n data,\n usage,\n primType,\n vertCount,\n byteLength,\n dtype)\n }\n\n return reglElements\n }\n\n reglElements(options)\n\n reglElements._reglType = 'elements'\n reglElements._elements = elements\n reglElements.subdata = function (data, offset) {\n buffer.subdata(data, offset)\n return reglElements\n }\n reglElements.destroy = function () {\n destroyElements(elements)\n }\n\n return reglElements\n }\n\n return {\n create: createElements,\n createStream: createElementStream,\n destroyStream: destroyElementStream,\n getElements: function (elements) {\n if (typeof elements === 'function' &&\n elements._elements instanceof REGLElementBuffer) {\n return elements._elements\n }\n return null\n },\n clear: function () {\n values(elementSet).forEach(destroyElements)\n }\n }\n}\n\nvar FLOAT = new Float32Array(1)\nvar INT = new Uint32Array(FLOAT.buffer)\n\nvar GL_UNSIGNED_SHORT$4 = 5123\n\nfunction convertToHalfFloat (array) {\n var ushorts = pool.allocType(GL_UNSIGNED_SHORT$4, array.length)\n\n for (var i = 0; i < array.length; ++i) {\n if (isNaN(array[i])) {\n ushorts[i] = 0xffff\n } else if (array[i] === Infinity) {\n ushorts[i] = 0x7c00\n } else if (array[i] === -Infinity) {\n ushorts[i] = 0xfc00\n } else {\n FLOAT[0] = array[i]\n var x = INT[0]\n\n var sgn = (x >>> 31) << 15\n var exp = ((x << 1) >>> 24) - 127\n var frac = (x >> 13) & ((1 << 10) - 1)\n\n if (exp < -24) {\n // round non-representable denormals to 0\n ushorts[i] = sgn\n } else if (exp < -14) {\n // handle denormals\n var s = -14 - exp\n ushorts[i] = sgn + ((frac + (1 << 10)) >> s)\n } else if (exp > 15) {\n // round overflow to +/- Infinity\n ushorts[i] = sgn + 0x7c00\n } else {\n // otherwise convert directly\n ushorts[i] = sgn + ((exp + 15) << 10) + frac\n }\n }\n }\n\n return ushorts\n}\n\nfunction isArrayLike (s) {\n return Array.isArray(s) || isTypedArray(s)\n}\n\nvar isPow2$1 = function (v) {\n return !(v & (v - 1)) && (!!v)\n}\n\nvar GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\n\nvar GL_TEXTURE_2D$1 = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP$1 = 0x8513\nvar GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 = 0x8515\n\nvar GL_RGBA$1 = 0x1908\nvar GL_ALPHA = 0x1906\nvar GL_RGB = 0x1907\nvar GL_LUMINANCE = 0x1909\nvar GL_LUMINANCE_ALPHA = 0x190A\n\nvar GL_RGBA4 = 0x8056\nvar GL_RGB5_A1 = 0x8057\nvar GL_RGB565 = 0x8D62\n\nvar GL_UNSIGNED_SHORT_4_4_4_4$1 = 0x8033\nvar GL_UNSIGNED_SHORT_5_5_5_1$1 = 0x8034\nvar GL_UNSIGNED_SHORT_5_6_5$1 = 0x8363\nvar GL_UNSIGNED_INT_24_8_WEBGL$1 = 0x84FA\n\nvar GL_DEPTH_COMPONENT = 0x1902\nvar GL_DEPTH_STENCIL = 0x84F9\n\nvar GL_SRGB_EXT = 0x8C40\nvar GL_SRGB_ALPHA_EXT = 0x8C42\n\nvar GL_HALF_FLOAT_OES$1 = 0x8D61\n\nvar GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0\nvar GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1\nvar GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2\nvar GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3\n\nvar GL_COMPRESSED_RGB_ATC_WEBGL = 0x8C92\nvar GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93\nvar GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE\n\nvar GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00\nvar GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01\nvar GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02\nvar GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03\n\nvar GL_COMPRESSED_RGB_ETC1_WEBGL = 0x8D64\n\nvar GL_UNSIGNED_BYTE$5 = 0x1401\nvar GL_UNSIGNED_SHORT$3 = 0x1403\nvar GL_UNSIGNED_INT$3 = 0x1405\nvar GL_FLOAT$4 = 0x1406\n\nvar GL_TEXTURE_WRAP_S = 0x2802\nvar GL_TEXTURE_WRAP_T = 0x2803\n\nvar GL_REPEAT = 0x2901\nvar GL_CLAMP_TO_EDGE$1 = 0x812F\nvar GL_MIRRORED_REPEAT = 0x8370\n\nvar GL_TEXTURE_MAG_FILTER = 0x2800\nvar GL_TEXTURE_MIN_FILTER = 0x2801\n\nvar GL_NEAREST$1 = 0x2600\nvar GL_LINEAR = 0x2601\nvar GL_NEAREST_MIPMAP_NEAREST$1 = 0x2700\nvar GL_LINEAR_MIPMAP_NEAREST$1 = 0x2701\nvar GL_NEAREST_MIPMAP_LINEAR$1 = 0x2702\nvar GL_LINEAR_MIPMAP_LINEAR$1 = 0x2703\n\nvar GL_GENERATE_MIPMAP_HINT = 0x8192\nvar GL_DONT_CARE = 0x1100\nvar GL_FASTEST = 0x1101\nvar GL_NICEST = 0x1102\n\nvar GL_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE\n\nvar GL_UNPACK_ALIGNMENT = 0x0CF5\nvar GL_UNPACK_FLIP_Y_WEBGL = 0x9240\nvar GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241\nvar GL_UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243\n\nvar GL_BROWSER_DEFAULT_WEBGL = 0x9244\n\nvar GL_TEXTURE0$1 = 0x84C0\n\nvar MIPMAP_FILTERS = [\n GL_NEAREST_MIPMAP_NEAREST$1,\n GL_NEAREST_MIPMAP_LINEAR$1,\n GL_LINEAR_MIPMAP_NEAREST$1,\n GL_LINEAR_MIPMAP_LINEAR$1\n]\n\nvar CHANNELS_FORMAT = [\n 0,\n GL_LUMINANCE,\n GL_LUMINANCE_ALPHA,\n GL_RGB,\n GL_RGBA$1\n]\n\nvar FORMAT_CHANNELS = {}\nFORMAT_CHANNELS[GL_LUMINANCE] =\nFORMAT_CHANNELS[GL_ALPHA] =\nFORMAT_CHANNELS[GL_DEPTH_COMPONENT] = 1\nFORMAT_CHANNELS[GL_DEPTH_STENCIL] =\nFORMAT_CHANNELS[GL_LUMINANCE_ALPHA] = 2\nFORMAT_CHANNELS[GL_RGB] =\nFORMAT_CHANNELS[GL_SRGB_EXT] = 3\nFORMAT_CHANNELS[GL_RGBA$1] =\nFORMAT_CHANNELS[GL_SRGB_ALPHA_EXT] = 4\n\nfunction objectName (str) {\n return '[object ' + str + ']'\n}\n\nvar CANVAS_CLASS = objectName('HTMLCanvasElement')\nvar OFFSCREENCANVAS_CLASS = objectName('OffscreenCanvas')\nvar CONTEXT2D_CLASS = objectName('CanvasRenderingContext2D')\nvar BITMAP_CLASS = objectName('ImageBitmap')\nvar IMAGE_CLASS = objectName('HTMLImageElement')\nvar VIDEO_CLASS = objectName('HTMLVideoElement')\n\nvar PIXEL_CLASSES = Object.keys(arrayTypes).concat([\n CANVAS_CLASS,\n OFFSCREENCANVAS_CLASS,\n CONTEXT2D_CLASS,\n BITMAP_CLASS,\n IMAGE_CLASS,\n VIDEO_CLASS\n])\n\n// for every texture type, store\n// the size in bytes.\nvar TYPE_SIZES = []\nTYPE_SIZES[GL_UNSIGNED_BYTE$5] = 1\nTYPE_SIZES[GL_FLOAT$4] = 4\nTYPE_SIZES[GL_HALF_FLOAT_OES$1] = 2\n\nTYPE_SIZES[GL_UNSIGNED_SHORT$3] = 2\nTYPE_SIZES[GL_UNSIGNED_INT$3] = 4\n\nvar FORMAT_SIZES_SPECIAL = []\nFORMAT_SIZES_SPECIAL[GL_RGBA4] = 2\nFORMAT_SIZES_SPECIAL[GL_RGB5_A1] = 2\nFORMAT_SIZES_SPECIAL[GL_RGB565] = 2\nFORMAT_SIZES_SPECIAL[GL_DEPTH_STENCIL] = 4\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_S3TC_DXT1_EXT] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT1_EXT] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT3_EXT] = 1\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT5_EXT] = 1\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_ATC_WEBGL] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = 1\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = 1\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = 0.25\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = 0.25\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_ETC1_WEBGL] = 0.5\n\nfunction isNumericArray (arr) {\n return (\n Array.isArray(arr) &&\n (arr.length === 0 ||\n typeof arr[0] === 'number'))\n}\n\nfunction isRectArray (arr) {\n if (!Array.isArray(arr)) {\n return false\n }\n var width = arr.length\n if (width === 0 || !isArrayLike(arr[0])) {\n return false\n }\n return true\n}\n\nfunction classString (x) {\n return Object.prototype.toString.call(x)\n}\n\nfunction isCanvasElement (object) {\n return classString(object) === CANVAS_CLASS\n}\n\nfunction isOffscreenCanvas (object) {\n return classString(object) === OFFSCREENCANVAS_CLASS\n}\n\nfunction isContext2D (object) {\n return classString(object) === CONTEXT2D_CLASS\n}\n\nfunction isBitmap (object) {\n return classString(object) === BITMAP_CLASS\n}\n\nfunction isImageElement (object) {\n return classString(object) === IMAGE_CLASS\n}\n\nfunction isVideoElement (object) {\n return classString(object) === VIDEO_CLASS\n}\n\nfunction isPixelData (object) {\n if (!object) {\n return false\n }\n var className = classString(object)\n if (PIXEL_CLASSES.indexOf(className) >= 0) {\n return true\n }\n return (\n isNumericArray(object) ||\n isRectArray(object) ||\n isNDArrayLike(object))\n}\n\nfunction typedArrayCode$1 (data) {\n return arrayTypes[Object.prototype.toString.call(data)] | 0\n}\n\nfunction convertData (result, data) {\n var n = data.length\n switch (result.type) {\n case GL_UNSIGNED_BYTE$5:\n case GL_UNSIGNED_SHORT$3:\n case GL_UNSIGNED_INT$3:\n case GL_FLOAT$4:\n var converted = pool.allocType(result.type, n)\n converted.set(data)\n result.data = converted\n break\n\n case GL_HALF_FLOAT_OES$1:\n result.data = convertToHalfFloat(data)\n break\n\n default:\n check$1.raise('unsupported texture type, must specify a typed array')\n }\n}\n\nfunction preConvert (image, n) {\n return pool.allocType(\n image.type === GL_HALF_FLOAT_OES$1\n ? GL_FLOAT$4\n : image.type, n)\n}\n\nfunction postConvert (image, data) {\n if (image.type === GL_HALF_FLOAT_OES$1) {\n image.data = convertToHalfFloat(data)\n pool.freeType(data)\n } else {\n image.data = data\n }\n}\n\nfunction transposeData (image, array, strideX, strideY, strideC, offset) {\n var w = image.width\n var h = image.height\n var c = image.channels\n var n = w * h * c\n var data = preConvert(image, n)\n\n var p = 0\n for (var i = 0; i < h; ++i) {\n for (var j = 0; j < w; ++j) {\n for (var k = 0; k < c; ++k) {\n data[p++] = array[strideX * j + strideY * i + strideC * k + offset]\n }\n }\n }\n\n postConvert(image, data)\n}\n\nfunction getTextureSize (format, type, width, height, isMipmap, isCube) {\n var s\n if (typeof FORMAT_SIZES_SPECIAL[format] !== 'undefined') {\n // we have a special array for dealing with weird color formats such as RGB5A1\n s = FORMAT_SIZES_SPECIAL[format]\n } else {\n s = FORMAT_CHANNELS[format] * TYPE_SIZES[type]\n }\n\n if (isCube) {\n s *= 6\n }\n\n if (isMipmap) {\n // compute the total size of all the mipmaps.\n var total = 0\n\n var w = width\n while (w >= 1) {\n // we can only use mipmaps on a square image,\n // so we can simply use the width and ignore the height:\n total += s * w * w\n w /= 2\n }\n return total\n } else {\n return s * width * height\n }\n}\n\nfunction createTextureSet (\n gl, extensions, limits, reglPoll, contextState, stats, config) {\n // -------------------------------------------------------\n // Initialize constants and parameter tables here\n // -------------------------------------------------------\n var mipmapHint = {\n \"don't care\": GL_DONT_CARE,\n 'dont care': GL_DONT_CARE,\n 'nice': GL_NICEST,\n 'fast': GL_FASTEST\n }\n\n var wrapModes = {\n 'repeat': GL_REPEAT,\n 'clamp': GL_CLAMP_TO_EDGE$1,\n 'mirror': GL_MIRRORED_REPEAT\n }\n\n var magFilters = {\n 'nearest': GL_NEAREST$1,\n 'linear': GL_LINEAR\n }\n\n var minFilters = extend({\n 'mipmap': GL_LINEAR_MIPMAP_LINEAR$1,\n 'nearest mipmap nearest': GL_NEAREST_MIPMAP_NEAREST$1,\n 'linear mipmap nearest': GL_LINEAR_MIPMAP_NEAREST$1,\n 'nearest mipmap linear': GL_NEAREST_MIPMAP_LINEAR$1,\n 'linear mipmap linear': GL_LINEAR_MIPMAP_LINEAR$1\n }, magFilters)\n\n var colorSpace = {\n 'none': 0,\n 'browser': GL_BROWSER_DEFAULT_WEBGL\n }\n\n var textureTypes = {\n 'uint8': GL_UNSIGNED_BYTE$5,\n 'rgba4': GL_UNSIGNED_SHORT_4_4_4_4$1,\n 'rgb565': GL_UNSIGNED_SHORT_5_6_5$1,\n 'rgb5 a1': GL_UNSIGNED_SHORT_5_5_5_1$1\n }\n\n var textureFormats = {\n 'alpha': GL_ALPHA,\n 'luminance': GL_LUMINANCE,\n 'luminance alpha': GL_LUMINANCE_ALPHA,\n 'rgb': GL_RGB,\n 'rgba': GL_RGBA$1,\n 'rgba4': GL_RGBA4,\n 'rgb5 a1': GL_RGB5_A1,\n 'rgb565': GL_RGB565\n }\n\n var compressedTextureFormats = {}\n\n if (extensions.ext_srgb) {\n textureFormats.srgb = GL_SRGB_EXT\n textureFormats.srgba = GL_SRGB_ALPHA_EXT\n }\n\n if (extensions.oes_texture_float) {\n textureTypes.float32 = textureTypes.float = GL_FLOAT$4\n }\n\n if (extensions.oes_texture_half_float) {\n textureTypes['float16'] = textureTypes['half float'] = GL_HALF_FLOAT_OES$1\n }\n\n if (extensions.webgl_depth_texture) {\n extend(textureFormats, {\n 'depth': GL_DEPTH_COMPONENT,\n 'depth stencil': GL_DEPTH_STENCIL\n })\n\n extend(textureTypes, {\n 'uint16': GL_UNSIGNED_SHORT$3,\n 'uint32': GL_UNSIGNED_INT$3,\n 'depth stencil': GL_UNSIGNED_INT_24_8_WEBGL$1\n })\n }\n\n if (extensions.webgl_compressed_texture_s3tc) {\n extend(compressedTextureFormats, {\n 'rgb s3tc dxt1': GL_COMPRESSED_RGB_S3TC_DXT1_EXT,\n 'rgba s3tc dxt1': GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 'rgba s3tc dxt3': GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 'rgba s3tc dxt5': GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\n })\n }\n\n if (extensions.webgl_compressed_texture_atc) {\n extend(compressedTextureFormats, {\n 'rgb atc': GL_COMPRESSED_RGB_ATC_WEBGL,\n 'rgba atc explicit alpha': GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,\n 'rgba atc interpolated alpha': GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\n })\n }\n\n if (extensions.webgl_compressed_texture_pvrtc) {\n extend(compressedTextureFormats, {\n 'rgb pvrtc 4bppv1': GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,\n 'rgb pvrtc 2bppv1': GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG,\n 'rgba pvrtc 4bppv1': GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,\n 'rgba pvrtc 2bppv1': GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\n })\n }\n\n if (extensions.webgl_compressed_texture_etc1) {\n compressedTextureFormats['rgb etc1'] = GL_COMPRESSED_RGB_ETC1_WEBGL\n }\n\n // Copy over all texture formats\n var supportedCompressedFormats = Array.prototype.slice.call(\n gl.getParameter(GL_COMPRESSED_TEXTURE_FORMATS))\n Object.keys(compressedTextureFormats).forEach(function (name) {\n var format = compressedTextureFormats[name]\n if (supportedCompressedFormats.indexOf(format) >= 0) {\n textureFormats[name] = format\n }\n })\n\n var supportedFormats = Object.keys(textureFormats)\n limits.textureFormats = supportedFormats\n\n // associate with every format string its\n // corresponding GL-value.\n var textureFormatsInvert = []\n Object.keys(textureFormats).forEach(function (key) {\n var val = textureFormats[key]\n textureFormatsInvert[val] = key\n })\n\n // associate with every type string its\n // corresponding GL-value.\n var textureTypesInvert = []\n Object.keys(textureTypes).forEach(function (key) {\n var val = textureTypes[key]\n textureTypesInvert[val] = key\n })\n\n var magFiltersInvert = []\n Object.keys(magFilters).forEach(function (key) {\n var val = magFilters[key]\n magFiltersInvert[val] = key\n })\n\n var minFiltersInvert = []\n Object.keys(minFilters).forEach(function (key) {\n var val = minFilters[key]\n minFiltersInvert[val] = key\n })\n\n var wrapModesInvert = []\n Object.keys(wrapModes).forEach(function (key) {\n var val = wrapModes[key]\n wrapModesInvert[val] = key\n })\n\n // colorFormats[] gives the format (channels) associated to an\n // internalformat\n var colorFormats = supportedFormats.reduce(function (color, key) {\n var glenum = textureFormats[key]\n if (glenum === GL_LUMINANCE ||\n glenum === GL_ALPHA ||\n glenum === GL_LUMINANCE ||\n glenum === GL_LUMINANCE_ALPHA ||\n glenum === GL_DEPTH_COMPONENT ||\n glenum === GL_DEPTH_STENCIL ||\n (extensions.ext_srgb &&\n (glenum === GL_SRGB_EXT ||\n glenum === GL_SRGB_ALPHA_EXT))) {\n color[glenum] = glenum\n } else if (glenum === GL_RGB5_A1 || key.indexOf('rgba') >= 0) {\n color[glenum] = GL_RGBA$1\n } else {\n color[glenum] = GL_RGB\n }\n return color\n }, {})\n\n function TexFlags () {\n // format info\n this.internalformat = GL_RGBA$1\n this.format = GL_RGBA$1\n this.type = GL_UNSIGNED_BYTE$5\n this.compressed = false\n\n // pixel storage\n this.premultiplyAlpha = false\n this.flipY = false\n this.unpackAlignment = 1\n this.colorSpace = GL_BROWSER_DEFAULT_WEBGL\n\n // shape info\n this.width = 0\n this.height = 0\n this.channels = 0\n }\n\n function copyFlags (result, other) {\n result.internalformat = other.internalformat\n result.format = other.format\n result.type = other.type\n result.compressed = other.compressed\n\n result.premultiplyAlpha = other.premultiplyAlpha\n result.flipY = other.flipY\n result.unpackAlignment = other.unpackAlignment\n result.colorSpace = other.colorSpace\n\n result.width = other.width\n result.height = other.height\n result.channels = other.channels\n }\n\n function parseFlags (flags, options) {\n if (typeof options !== 'object' || !options) {\n return\n }\n\n if ('premultiplyAlpha' in options) {\n check$1.type(options.premultiplyAlpha, 'boolean',\n 'invalid premultiplyAlpha')\n flags.premultiplyAlpha = options.premultiplyAlpha\n }\n\n if ('flipY' in options) {\n check$1.type(options.flipY, 'boolean',\n 'invalid texture flip')\n flags.flipY = options.flipY\n }\n\n if ('alignment' in options) {\n check$1.oneOf(options.alignment, [1, 2, 4, 8],\n 'invalid texture unpack alignment')\n flags.unpackAlignment = options.alignment\n }\n\n if ('colorSpace' in options) {\n check$1.parameter(options.colorSpace, colorSpace,\n 'invalid colorSpace')\n flags.colorSpace = colorSpace[options.colorSpace]\n }\n\n if ('type' in options) {\n var type = options.type\n check$1(extensions.oes_texture_float ||\n !(type === 'float' || type === 'float32'),\n 'you must enable the OES_texture_float extension in order to use floating point textures.')\n check$1(extensions.oes_texture_half_float ||\n !(type === 'half float' || type === 'float16'),\n 'you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.')\n check$1(extensions.webgl_depth_texture ||\n !(type === 'uint16' || type === 'uint32' || type === 'depth stencil'),\n 'you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.')\n check$1.parameter(type, textureTypes,\n 'invalid texture type')\n flags.type = textureTypes[type]\n }\n\n var w = flags.width\n var h = flags.height\n var c = flags.channels\n var hasChannels = false\n if ('shape' in options) {\n check$1(Array.isArray(options.shape) && options.shape.length >= 2,\n 'shape must be an array')\n w = options.shape[0]\n h = options.shape[1]\n if (options.shape.length === 3) {\n c = options.shape[2]\n check$1(c > 0 && c <= 4, 'invalid number of channels')\n hasChannels = true\n }\n check$1(w >= 0 && w <= limits.maxTextureSize, 'invalid width')\n check$1(h >= 0 && h <= limits.maxTextureSize, 'invalid height')\n } else {\n if ('radius' in options) {\n w = h = options.radius\n check$1(w >= 0 && w <= limits.maxTextureSize, 'invalid radius')\n }\n if ('width' in options) {\n w = options.width\n check$1(w >= 0 && w <= limits.maxTextureSize, 'invalid width')\n }\n if ('height' in options) {\n h = options.height\n check$1(h >= 0 && h <= limits.maxTextureSize, 'invalid height')\n }\n if ('channels' in options) {\n c = options.channels\n check$1(c > 0 && c <= 4, 'invalid number of channels')\n hasChannels = true\n }\n }\n flags.width = w | 0\n flags.height = h | 0\n flags.channels = c | 0\n\n var hasFormat = false\n if ('format' in options) {\n var formatStr = options.format\n check$1(extensions.webgl_depth_texture ||\n !(formatStr === 'depth' || formatStr === 'depth stencil'),\n 'you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.')\n check$1.parameter(formatStr, textureFormats,\n 'invalid texture format')\n var internalformat = flags.internalformat = textureFormats[formatStr]\n flags.format = colorFormats[internalformat]\n if (formatStr in textureTypes) {\n if (!('type' in options)) {\n flags.type = textureTypes[formatStr]\n }\n }\n if (formatStr in compressedTextureFormats) {\n flags.compressed = true\n }\n hasFormat = true\n }\n\n // Reconcile channels and format\n if (!hasChannels && hasFormat) {\n flags.channels = FORMAT_CHANNELS[flags.format]\n } else if (hasChannels && !hasFormat) {\n if (flags.channels !== CHANNELS_FORMAT[flags.format]) {\n flags.format = flags.internalformat = CHANNELS_FORMAT[flags.channels]\n }\n } else if (hasFormat && hasChannels) {\n check$1(\n flags.channels === FORMAT_CHANNELS[flags.format],\n 'number of channels inconsistent with specified format')\n }\n }\n\n function setFlags (flags) {\n gl.pixelStorei(GL_UNPACK_FLIP_Y_WEBGL, flags.flipY)\n gl.pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL, flags.premultiplyAlpha)\n gl.pixelStorei(GL_UNPACK_COLORSPACE_CONVERSION_WEBGL, flags.colorSpace)\n gl.pixelStorei(GL_UNPACK_ALIGNMENT, flags.unpackAlignment)\n }\n\n // -------------------------------------------------------\n // Tex image data\n // -------------------------------------------------------\n function TexImage () {\n TexFlags.call(this)\n\n this.xOffset = 0\n this.yOffset = 0\n\n // data\n this.data = null\n this.needsFree = false\n\n // html element\n this.element = null\n\n // copyTexImage info\n this.needsCopy = false\n }\n\n function parseImage (image, options) {\n var data = null\n if (isPixelData(options)) {\n data = options\n } else if (options) {\n check$1.type(options, 'object', 'invalid pixel data type')\n parseFlags(image, options)\n if ('x' in options) {\n image.xOffset = options.x | 0\n }\n if ('y' in options) {\n image.yOffset = options.y | 0\n }\n if (isPixelData(options.data)) {\n data = options.data\n }\n }\n\n check$1(\n !image.compressed ||\n data instanceof Uint8Array,\n 'compressed texture data must be stored in a uint8array')\n\n if (options.copy) {\n check$1(!data, 'can not specify copy and data field for the same texture')\n var viewW = contextState.viewportWidth\n var viewH = contextState.viewportHeight\n image.width = image.width || (viewW - image.xOffset)\n image.height = image.height || (viewH - image.yOffset)\n image.needsCopy = true\n check$1(image.xOffset >= 0 && image.xOffset < viewW &&\n image.yOffset >= 0 && image.yOffset < viewH &&\n image.width > 0 && image.width <= viewW &&\n image.height > 0 && image.height <= viewH,\n 'copy texture read out of bounds')\n } else if (!data) {\n image.width = image.width || 1\n image.height = image.height || 1\n image.channels = image.channels || 4\n } else if (isTypedArray(data)) {\n image.channels = image.channels || 4\n image.data = data\n if (!('type' in options) && image.type === GL_UNSIGNED_BYTE$5) {\n image.type = typedArrayCode$1(data)\n }\n } else if (isNumericArray(data)) {\n image.channels = image.channels || 4\n convertData(image, data)\n image.alignment = 1\n image.needsFree = true\n } else if (isNDArrayLike(data)) {\n var array = data.data\n if (!Array.isArray(array) && image.type === GL_UNSIGNED_BYTE$5) {\n image.type = typedArrayCode$1(array)\n }\n var shape = data.shape\n var stride = data.stride\n var shapeX, shapeY, shapeC, strideX, strideY, strideC\n if (shape.length === 3) {\n shapeC = shape[2]\n strideC = stride[2]\n } else {\n check$1(shape.length === 2, 'invalid ndarray pixel data, must be 2 or 3D')\n shapeC = 1\n strideC = 1\n }\n shapeX = shape[0]\n shapeY = shape[1]\n strideX = stride[0]\n strideY = stride[1]\n image.alignment = 1\n image.width = shapeX\n image.height = shapeY\n image.channels = shapeC\n image.format = image.internalformat = CHANNELS_FORMAT[shapeC]\n image.needsFree = true\n transposeData(image, array, strideX, strideY, strideC, data.offset)\n } else if (isCanvasElement(data) || isOffscreenCanvas(data) || isContext2D(data)) {\n if (isCanvasElement(data) || isOffscreenCanvas(data)) {\n image.element = data\n } else {\n image.element = data.canvas\n }\n image.width = image.element.width\n image.height = image.element.height\n image.channels = 4\n } else if (isBitmap(data)) {\n image.element = data\n image.width = data.width\n image.height = data.height\n image.channels = 4\n } else if (isImageElement(data)) {\n image.element = data\n image.width = data.naturalWidth\n image.height = data.naturalHeight\n image.channels = 4\n } else if (isVideoElement(data)) {\n image.element = data\n image.width = data.videoWidth\n image.height = data.videoHeight\n image.channels = 4\n } else if (isRectArray(data)) {\n var w = image.width || data[0].length\n var h = image.height || data.length\n var c = image.channels\n if (isArrayLike(data[0][0])) {\n c = c || data[0][0].length\n } else {\n c = c || 1\n }\n var arrayShape = flattenUtils.shape(data)\n var n = 1\n for (var dd = 0; dd < arrayShape.length; ++dd) {\n n *= arrayShape[dd]\n }\n var allocData = preConvert(image, n)\n flattenUtils.flatten(data, arrayShape, '', allocData)\n postConvert(image, allocData)\n image.alignment = 1\n image.width = w\n image.height = h\n image.channels = c\n image.format = image.internalformat = CHANNELS_FORMAT[c]\n image.needsFree = true\n }\n\n if (image.type === GL_FLOAT$4) {\n check$1(limits.extensions.indexOf('oes_texture_float') >= 0,\n 'oes_texture_float extension not enabled')\n } else if (image.type === GL_HALF_FLOAT_OES$1) {\n check$1(limits.extensions.indexOf('oes_texture_half_float') >= 0,\n 'oes_texture_half_float extension not enabled')\n }\n\n // do compressed texture validation here.\n }\n\n function setImage (info, target, miplevel) {\n var element = info.element\n var data = info.data\n var internalformat = info.internalformat\n var format = info.format\n var type = info.type\n var width = info.width\n var height = info.height\n\n setFlags(info)\n\n if (element) {\n gl.texImage2D(target, miplevel, format, format, type, element)\n } else if (info.compressed) {\n gl.compressedTexImage2D(target, miplevel, internalformat, width, height, 0, data)\n } else if (info.needsCopy) {\n reglPoll()\n gl.copyTexImage2D(\n target, miplevel, format, info.xOffset, info.yOffset, width, height, 0)\n } else {\n gl.texImage2D(target, miplevel, format, width, height, 0, format, type, data || null)\n }\n }\n\n function setSubImage (info, target, x, y, miplevel) {\n var element = info.element\n var data = info.data\n var internalformat = info.internalformat\n var format = info.format\n var type = info.type\n var width = info.width\n var height = info.height\n\n setFlags(info)\n\n if (element) {\n gl.texSubImage2D(\n target, miplevel, x, y, format, type, element)\n } else if (info.compressed) {\n gl.compressedTexSubImage2D(\n target, miplevel, x, y, internalformat, width, height, data)\n } else if (info.needsCopy) {\n reglPoll()\n gl.copyTexSubImage2D(\n target, miplevel, x, y, info.xOffset, info.yOffset, width, height)\n } else {\n gl.texSubImage2D(\n target, miplevel, x, y, width, height, format, type, data)\n }\n }\n\n // texImage pool\n var imagePool = []\n\n function allocImage () {\n return imagePool.pop() || new TexImage()\n }\n\n function freeImage (image) {\n if (image.needsFree) {\n pool.freeType(image.data)\n }\n TexImage.call(image)\n imagePool.push(image)\n }\n\n // -------------------------------------------------------\n // Mip map\n // -------------------------------------------------------\n function MipMap () {\n TexFlags.call(this)\n\n this.genMipmaps = false\n this.mipmapHint = GL_DONT_CARE\n this.mipmask = 0\n this.images = Array(16)\n }\n\n function parseMipMapFromShape (mipmap, width, height) {\n var img = mipmap.images[0] = allocImage()\n mipmap.mipmask = 1\n img.width = mipmap.width = width\n img.height = mipmap.height = height\n img.channels = mipmap.channels = 4\n }\n\n function parseMipMapFromObject (mipmap, options) {\n var imgData = null\n if (isPixelData(options)) {\n imgData = mipmap.images[0] = allocImage()\n copyFlags(imgData, mipmap)\n parseImage(imgData, options)\n mipmap.mipmask = 1\n } else {\n parseFlags(mipmap, options)\n if (Array.isArray(options.mipmap)) {\n var mipData = options.mipmap\n for (var i = 0; i < mipData.length; ++i) {\n imgData = mipmap.images[i] = allocImage()\n copyFlags(imgData, mipmap)\n imgData.width >>= i\n imgData.height >>= i\n parseImage(imgData, mipData[i])\n mipmap.mipmask |= (1 << i)\n }\n } else {\n imgData = mipmap.images[0] = allocImage()\n copyFlags(imgData, mipmap)\n parseImage(imgData, options)\n mipmap.mipmask = 1\n }\n }\n copyFlags(mipmap, mipmap.images[0])\n\n // For textures of the compressed format WEBGL_compressed_texture_s3tc\n // we must have that\n //\n // \"When level equals zero width and height must be a multiple of 4.\n // When level is greater than 0 width and height must be 0, 1, 2 or a multiple of 4. \"\n //\n // but we do not yet support having multiple mipmap levels for compressed textures,\n // so we only test for level zero.\n\n if (\n mipmap.compressed &&\n (\n mipmap.internalformat === GL_COMPRESSED_RGB_S3TC_DXT1_EXT ||\n mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ||\n mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ||\n mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\n )\n ) {\n check$1(mipmap.width % 4 === 0 && mipmap.height % 4 === 0,\n 'for compressed texture formats, mipmap level 0 must have width and height that are a multiple of 4')\n }\n }\n\n function setMipMap (mipmap, target) {\n var images = mipmap.images\n for (var i = 0; i < images.length; ++i) {\n if (!images[i]) {\n return\n }\n setImage(images[i], target, i)\n }\n }\n\n var mipPool = []\n\n function allocMipMap () {\n var result = mipPool.pop() || new MipMap()\n TexFlags.call(result)\n result.mipmask = 0\n for (var i = 0; i < 16; ++i) {\n result.images[i] = null\n }\n return result\n }\n\n function freeMipMap (mipmap) {\n var images = mipmap.images\n for (var i = 0; i < images.length; ++i) {\n if (images[i]) {\n freeImage(images[i])\n }\n images[i] = null\n }\n mipPool.push(mipmap)\n }\n\n // -------------------------------------------------------\n // Tex info\n // -------------------------------------------------------\n function TexInfo () {\n this.minFilter = GL_NEAREST$1\n this.magFilter = GL_NEAREST$1\n\n this.wrapS = GL_CLAMP_TO_EDGE$1\n this.wrapT = GL_CLAMP_TO_EDGE$1\n\n this.anisotropic = 1\n\n this.genMipmaps = false\n this.mipmapHint = GL_DONT_CARE\n }\n\n function parseTexInfo (info, options) {\n if ('min' in options) {\n var minFilter = options.min\n check$1.parameter(minFilter, minFilters)\n info.minFilter = minFilters[minFilter]\n if (MIPMAP_FILTERS.indexOf(info.minFilter) >= 0 && !('faces' in options)) {\n info.genMipmaps = true\n }\n }\n\n if ('mag' in options) {\n var magFilter = options.mag\n check$1.parameter(magFilter, magFilters)\n info.magFilter = magFilters[magFilter]\n }\n\n var wrapS = info.wrapS\n var wrapT = info.wrapT\n if ('wrap' in options) {\n var wrap = options.wrap\n if (typeof wrap === 'string') {\n check$1.parameter(wrap, wrapModes)\n wrapS = wrapT = wrapModes[wrap]\n } else if (Array.isArray(wrap)) {\n check$1.parameter(wrap[0], wrapModes)\n check$1.parameter(wrap[1], wrapModes)\n wrapS = wrapModes[wrap[0]]\n wrapT = wrapModes[wrap[1]]\n }\n } else {\n if ('wrapS' in options) {\n var optWrapS = options.wrapS\n check$1.parameter(optWrapS, wrapModes)\n wrapS = wrapModes[optWrapS]\n }\n if ('wrapT' in options) {\n var optWrapT = options.wrapT\n check$1.parameter(optWrapT, wrapModes)\n wrapT = wrapModes[optWrapT]\n }\n }\n info.wrapS = wrapS\n info.wrapT = wrapT\n\n if ('anisotropic' in options) {\n var anisotropic = options.anisotropic\n check$1(typeof anisotropic === 'number' &&\n anisotropic >= 1 && anisotropic <= limits.maxAnisotropic,\n 'aniso samples must be between 1 and ')\n info.anisotropic = options.anisotropic\n }\n\n if ('mipmap' in options) {\n var hasMipMap = false\n switch (typeof options.mipmap) {\n case 'string':\n check$1.parameter(options.mipmap, mipmapHint,\n 'invalid mipmap hint')\n info.mipmapHint = mipmapHint[options.mipmap]\n info.genMipmaps = true\n hasMipMap = true\n break\n\n case 'boolean':\n hasMipMap = info.genMipmaps = options.mipmap\n break\n\n case 'object':\n check$1(Array.isArray(options.mipmap), 'invalid mipmap type')\n info.genMipmaps = false\n hasMipMap = true\n break\n\n default:\n check$1.raise('invalid mipmap type')\n }\n if (hasMipMap && !('min' in options)) {\n info.minFilter = GL_NEAREST_MIPMAP_NEAREST$1\n }\n }\n }\n\n function setTexInfo (info, target) {\n gl.texParameteri(target, GL_TEXTURE_MIN_FILTER, info.minFilter)\n gl.texParameteri(target, GL_TEXTURE_MAG_FILTER, info.magFilter)\n gl.texParameteri(target, GL_TEXTURE_WRAP_S, info.wrapS)\n gl.texParameteri(target, GL_TEXTURE_WRAP_T, info.wrapT)\n if (extensions.ext_texture_filter_anisotropic) {\n gl.texParameteri(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, info.anisotropic)\n }\n if (info.genMipmaps) {\n gl.hint(GL_GENERATE_MIPMAP_HINT, info.mipmapHint)\n gl.generateMipmap(target)\n }\n }\n\n // -------------------------------------------------------\n // Full texture object\n // -------------------------------------------------------\n var textureCount = 0\n var textureSet = {}\n var numTexUnits = limits.maxTextureUnits\n var textureUnits = Array(numTexUnits).map(function () {\n return null\n })\n\n function REGLTexture (target) {\n TexFlags.call(this)\n this.mipmask = 0\n this.internalformat = GL_RGBA$1\n\n this.id = textureCount++\n\n this.refCount = 1\n\n this.target = target\n this.texture = gl.createTexture()\n\n this.unit = -1\n this.bindCount = 0\n\n this.texInfo = new TexInfo()\n\n if (config.profile) {\n this.stats = { size: 0 }\n }\n }\n\n function tempBind (texture) {\n gl.activeTexture(GL_TEXTURE0$1)\n gl.bindTexture(texture.target, texture.texture)\n }\n\n function tempRestore () {\n var prev = textureUnits[0]\n if (prev) {\n gl.bindTexture(prev.target, prev.texture)\n } else {\n gl.bindTexture(GL_TEXTURE_2D$1, null)\n }\n }\n\n function destroy (texture) {\n var handle = texture.texture\n check$1(handle, 'must not double destroy texture')\n var unit = texture.unit\n var target = texture.target\n if (unit >= 0) {\n gl.activeTexture(GL_TEXTURE0$1 + unit)\n gl.bindTexture(target, null)\n textureUnits[unit] = null\n }\n gl.deleteTexture(handle)\n texture.texture = null\n texture.params = null\n texture.pixels = null\n texture.refCount = 0\n delete textureSet[texture.id]\n stats.textureCount--\n }\n\n extend(REGLTexture.prototype, {\n bind: function () {\n var texture = this\n texture.bindCount += 1\n var unit = texture.unit\n if (unit < 0) {\n for (var i = 0; i < numTexUnits; ++i) {\n var other = textureUnits[i]\n if (other) {\n if (other.bindCount > 0) {\n continue\n }\n other.unit = -1\n }\n textureUnits[i] = texture\n unit = i\n break\n }\n if (unit >= numTexUnits) {\n check$1.raise('insufficient number of texture units')\n }\n if (config.profile && stats.maxTextureUnits < (unit + 1)) {\n stats.maxTextureUnits = unit + 1 // +1, since the units are zero-based\n }\n texture.unit = unit\n gl.activeTexture(GL_TEXTURE0$1 + unit)\n gl.bindTexture(texture.target, texture.texture)\n }\n return unit\n },\n\n unbind: function () {\n this.bindCount -= 1\n },\n\n decRef: function () {\n if (--this.refCount <= 0) {\n destroy(this)\n }\n }\n })\n\n function createTexture2D (a, b) {\n var texture = new REGLTexture(GL_TEXTURE_2D$1)\n textureSet[texture.id] = texture\n stats.textureCount++\n\n function reglTexture2D (a, b) {\n var texInfo = texture.texInfo\n TexInfo.call(texInfo)\n var mipData = allocMipMap()\n\n if (typeof a === 'number') {\n if (typeof b === 'number') {\n parseMipMapFromShape(mipData, a | 0, b | 0)\n } else {\n parseMipMapFromShape(mipData, a | 0, a | 0)\n }\n } else if (a) {\n check$1.type(a, 'object', 'invalid arguments to regl.texture')\n parseTexInfo(texInfo, a)\n parseMipMapFromObject(mipData, a)\n } else {\n // empty textures get assigned a default shape of 1x1\n parseMipMapFromShape(mipData, 1, 1)\n }\n\n if (texInfo.genMipmaps) {\n mipData.mipmask = (mipData.width << 1) - 1\n }\n texture.mipmask = mipData.mipmask\n\n copyFlags(texture, mipData)\n\n check$1.texture2D(texInfo, mipData, limits)\n texture.internalformat = mipData.internalformat\n\n reglTexture2D.width = mipData.width\n reglTexture2D.height = mipData.height\n\n tempBind(texture)\n setMipMap(mipData, GL_TEXTURE_2D$1)\n setTexInfo(texInfo, GL_TEXTURE_2D$1)\n tempRestore()\n\n freeMipMap(mipData)\n\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n mipData.width,\n mipData.height,\n texInfo.genMipmaps,\n false)\n }\n reglTexture2D.format = textureFormatsInvert[texture.internalformat]\n reglTexture2D.type = textureTypesInvert[texture.type]\n\n reglTexture2D.mag = magFiltersInvert[texInfo.magFilter]\n reglTexture2D.min = minFiltersInvert[texInfo.minFilter]\n\n reglTexture2D.wrapS = wrapModesInvert[texInfo.wrapS]\n reglTexture2D.wrapT = wrapModesInvert[texInfo.wrapT]\n\n return reglTexture2D\n }\n\n function subimage (image, x_, y_, level_) {\n check$1(!!image, 'must specify image data')\n\n var x = x_ | 0\n var y = y_ | 0\n var level = level_ | 0\n\n var imageData = allocImage()\n copyFlags(imageData, texture)\n imageData.width = 0\n imageData.height = 0\n parseImage(imageData, image)\n imageData.width = imageData.width || ((texture.width >> level) - x)\n imageData.height = imageData.height || ((texture.height >> level) - y)\n\n check$1(\n texture.type === imageData.type &&\n texture.format === imageData.format &&\n texture.internalformat === imageData.internalformat,\n 'incompatible format for texture.subimage')\n check$1(\n x >= 0 && y >= 0 &&\n x + imageData.width <= texture.width &&\n y + imageData.height <= texture.height,\n 'texture.subimage write out of bounds')\n check$1(\n texture.mipmask & (1 << level),\n 'missing mipmap data')\n check$1(\n imageData.data || imageData.element || imageData.needsCopy,\n 'missing image data')\n\n tempBind(texture)\n setSubImage(imageData, GL_TEXTURE_2D$1, x, y, level)\n tempRestore()\n\n freeImage(imageData)\n\n return reglTexture2D\n }\n\n function resize (w_, h_) {\n var w = w_ | 0\n var h = (h_ | 0) || w\n if (w === texture.width && h === texture.height) {\n return reglTexture2D\n }\n\n reglTexture2D.width = texture.width = w\n reglTexture2D.height = texture.height = h\n\n tempBind(texture)\n\n for (var i = 0; texture.mipmask >> i; ++i) {\n var _w = w >> i\n var _h = h >> i\n if (!_w || !_h) break\n gl.texImage2D(\n GL_TEXTURE_2D$1,\n i,\n texture.format,\n _w,\n _h,\n 0,\n texture.format,\n texture.type,\n null)\n }\n tempRestore()\n\n // also, recompute the texture size.\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n w,\n h,\n false,\n false)\n }\n\n return reglTexture2D\n }\n\n reglTexture2D(a, b)\n\n reglTexture2D.subimage = subimage\n reglTexture2D.resize = resize\n reglTexture2D._reglType = 'texture2d'\n reglTexture2D._texture = texture\n if (config.profile) {\n reglTexture2D.stats = texture.stats\n }\n reglTexture2D.destroy = function () {\n texture.decRef()\n }\n\n return reglTexture2D\n }\n\n function createTextureCube (a0, a1, a2, a3, a4, a5) {\n var texture = new REGLTexture(GL_TEXTURE_CUBE_MAP$1)\n textureSet[texture.id] = texture\n stats.cubeCount++\n\n var faces = new Array(6)\n\n function reglTextureCube (a0, a1, a2, a3, a4, a5) {\n var i\n var texInfo = texture.texInfo\n TexInfo.call(texInfo)\n for (i = 0; i < 6; ++i) {\n faces[i] = allocMipMap()\n }\n\n if (typeof a0 === 'number' || !a0) {\n var s = (a0 | 0) || 1\n for (i = 0; i < 6; ++i) {\n parseMipMapFromShape(faces[i], s, s)\n }\n } else if (typeof a0 === 'object') {\n if (a1) {\n parseMipMapFromObject(faces[0], a0)\n parseMipMapFromObject(faces[1], a1)\n parseMipMapFromObject(faces[2], a2)\n parseMipMapFromObject(faces[3], a3)\n parseMipMapFromObject(faces[4], a4)\n parseMipMapFromObject(faces[5], a5)\n } else {\n parseTexInfo(texInfo, a0)\n parseFlags(texture, a0)\n if ('faces' in a0) {\n var faceInput = a0.faces\n check$1(Array.isArray(faceInput) && faceInput.length === 6,\n 'cube faces must be a length 6 array')\n for (i = 0; i < 6; ++i) {\n check$1(typeof faceInput[i] === 'object' && !!faceInput[i],\n 'invalid input for cube map face')\n copyFlags(faces[i], texture)\n parseMipMapFromObject(faces[i], faceInput[i])\n }\n } else {\n for (i = 0; i < 6; ++i) {\n parseMipMapFromObject(faces[i], a0)\n }\n }\n }\n } else {\n check$1.raise('invalid arguments to cube map')\n }\n\n copyFlags(texture, faces[0])\n\n if (!limits.npotTextureCube) {\n check$1(isPow2$1(texture.width) && isPow2$1(texture.height), 'your browser does not support non power or two texture dimensions')\n }\n\n if (texInfo.genMipmaps) {\n texture.mipmask = (faces[0].width << 1) - 1\n } else {\n texture.mipmask = faces[0].mipmask\n }\n\n check$1.textureCube(texture, texInfo, faces, limits)\n texture.internalformat = faces[0].internalformat\n\n reglTextureCube.width = faces[0].width\n reglTextureCube.height = faces[0].height\n\n tempBind(texture)\n for (i = 0; i < 6; ++i) {\n setMipMap(faces[i], GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + i)\n }\n setTexInfo(texInfo, GL_TEXTURE_CUBE_MAP$1)\n tempRestore()\n\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n reglTextureCube.width,\n reglTextureCube.height,\n texInfo.genMipmaps,\n true)\n }\n\n reglTextureCube.format = textureFormatsInvert[texture.internalformat]\n reglTextureCube.type = textureTypesInvert[texture.type]\n\n reglTextureCube.mag = magFiltersInvert[texInfo.magFilter]\n reglTextureCube.min = minFiltersInvert[texInfo.minFilter]\n\n reglTextureCube.wrapS = wrapModesInvert[texInfo.wrapS]\n reglTextureCube.wrapT = wrapModesInvert[texInfo.wrapT]\n\n for (i = 0; i < 6; ++i) {\n freeMipMap(faces[i])\n }\n\n return reglTextureCube\n }\n\n function subimage (face, image, x_, y_, level_) {\n check$1(!!image, 'must specify image data')\n check$1(typeof face === 'number' && face === (face | 0) &&\n face >= 0 && face < 6, 'invalid face')\n\n var x = x_ | 0\n var y = y_ | 0\n var level = level_ | 0\n\n var imageData = allocImage()\n copyFlags(imageData, texture)\n imageData.width = 0\n imageData.height = 0\n parseImage(imageData, image)\n imageData.width = imageData.width || ((texture.width >> level) - x)\n imageData.height = imageData.height || ((texture.height >> level) - y)\n\n check$1(\n texture.type === imageData.type &&\n texture.format === imageData.format &&\n texture.internalformat === imageData.internalformat,\n 'incompatible format for texture.subimage')\n check$1(\n x >= 0 && y >= 0 &&\n x + imageData.width <= texture.width &&\n y + imageData.height <= texture.height,\n 'texture.subimage write out of bounds')\n check$1(\n texture.mipmask & (1 << level),\n 'missing mipmap data')\n check$1(\n imageData.data || imageData.element || imageData.needsCopy,\n 'missing image data')\n\n tempBind(texture)\n setSubImage(imageData, GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + face, x, y, level)\n tempRestore()\n\n freeImage(imageData)\n\n return reglTextureCube\n }\n\n function resize (radius_) {\n var radius = radius_ | 0\n if (radius === texture.width) {\n return\n }\n\n reglTextureCube.width = texture.width = radius\n reglTextureCube.height = texture.height = radius\n\n tempBind(texture)\n for (var i = 0; i < 6; ++i) {\n for (var j = 0; texture.mipmask >> j; ++j) {\n gl.texImage2D(\n GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + i,\n j,\n texture.format,\n radius >> j,\n radius >> j,\n 0,\n texture.format,\n texture.type,\n null)\n }\n }\n tempRestore()\n\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n reglTextureCube.width,\n reglTextureCube.height,\n false,\n true)\n }\n\n return reglTextureCube\n }\n\n reglTextureCube(a0, a1, a2, a3, a4, a5)\n\n reglTextureCube.subimage = subimage\n reglTextureCube.resize = resize\n reglTextureCube._reglType = 'textureCube'\n reglTextureCube._texture = texture\n if (config.profile) {\n reglTextureCube.stats = texture.stats\n }\n reglTextureCube.destroy = function () {\n texture.decRef()\n }\n\n return reglTextureCube\n }\n\n // Called when regl is destroyed\n function destroyTextures () {\n for (var i = 0; i < numTexUnits; ++i) {\n gl.activeTexture(GL_TEXTURE0$1 + i)\n gl.bindTexture(GL_TEXTURE_2D$1, null)\n textureUnits[i] = null\n }\n values(textureSet).forEach(destroy)\n\n stats.cubeCount = 0\n stats.textureCount = 0\n }\n\n if (config.profile) {\n stats.getTotalTextureSize = function () {\n var total = 0\n Object.keys(textureSet).forEach(function (key) {\n total += textureSet[key].stats.size\n })\n return total\n }\n }\n\n function restoreTextures () {\n for (var i = 0; i < numTexUnits; ++i) {\n var tex = textureUnits[i]\n if (tex) {\n tex.bindCount = 0\n tex.unit = -1\n textureUnits[i] = null\n }\n }\n\n values(textureSet).forEach(function (texture) {\n texture.texture = gl.createTexture()\n gl.bindTexture(texture.target, texture.texture)\n for (var i = 0; i < 32; ++i) {\n if ((texture.mipmask & (1 << i)) === 0) {\n continue\n }\n if (texture.target === GL_TEXTURE_2D$1) {\n gl.texImage2D(GL_TEXTURE_2D$1,\n i,\n texture.internalformat,\n texture.width >> i,\n texture.height >> i,\n 0,\n texture.internalformat,\n texture.type,\n null)\n } else {\n for (var j = 0; j < 6; ++j) {\n gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + j,\n i,\n texture.internalformat,\n texture.width >> i,\n texture.height >> i,\n 0,\n texture.internalformat,\n texture.type,\n null)\n }\n }\n }\n setTexInfo(texture.texInfo, texture.target)\n })\n }\n\n function refreshTextures () {\n for (var i = 0; i < numTexUnits; ++i) {\n var tex = textureUnits[i]\n if (tex) {\n tex.bindCount = 0\n tex.unit = -1\n textureUnits[i] = null\n }\n gl.activeTexture(GL_TEXTURE0$1 + i)\n gl.bindTexture(GL_TEXTURE_2D$1, null)\n gl.bindTexture(GL_TEXTURE_CUBE_MAP$1, null)\n }\n }\n\n return {\n create2D: createTexture2D,\n createCube: createTextureCube,\n clear: destroyTextures,\n getTexture: function (wrapper) {\n return null\n },\n restore: restoreTextures,\n refresh: refreshTextures\n }\n}\n\nvar GL_RENDERBUFFER = 0x8D41\n\nvar GL_RGBA4$1 = 0x8056\nvar GL_RGB5_A1$1 = 0x8057\nvar GL_RGB565$1 = 0x8D62\nvar GL_DEPTH_COMPONENT16 = 0x81A5\nvar GL_STENCIL_INDEX8 = 0x8D48\nvar GL_DEPTH_STENCIL$1 = 0x84F9\n\nvar GL_SRGB8_ALPHA8_EXT = 0x8C43\n\nvar GL_RGBA32F_EXT = 0x8814\n\nvar GL_RGBA16F_EXT = 0x881A\nvar GL_RGB16F_EXT = 0x881B\n\nvar FORMAT_SIZES = []\n\nFORMAT_SIZES[GL_RGBA4$1] = 2\nFORMAT_SIZES[GL_RGB5_A1$1] = 2\nFORMAT_SIZES[GL_RGB565$1] = 2\n\nFORMAT_SIZES[GL_DEPTH_COMPONENT16] = 2\nFORMAT_SIZES[GL_STENCIL_INDEX8] = 1\nFORMAT_SIZES[GL_DEPTH_STENCIL$1] = 4\n\nFORMAT_SIZES[GL_SRGB8_ALPHA8_EXT] = 4\nFORMAT_SIZES[GL_RGBA32F_EXT] = 16\nFORMAT_SIZES[GL_RGBA16F_EXT] = 8\nFORMAT_SIZES[GL_RGB16F_EXT] = 6\n\nfunction getRenderbufferSize (format, width, height) {\n return FORMAT_SIZES[format] * width * height\n}\n\nvar wrapRenderbuffers = function (gl, extensions, limits, stats, config) {\n var formatTypes = {\n 'rgba4': GL_RGBA4$1,\n 'rgb565': GL_RGB565$1,\n 'rgb5 a1': GL_RGB5_A1$1,\n 'depth': GL_DEPTH_COMPONENT16,\n 'stencil': GL_STENCIL_INDEX8,\n 'depth stencil': GL_DEPTH_STENCIL$1\n }\n\n if (extensions.ext_srgb) {\n formatTypes['srgba'] = GL_SRGB8_ALPHA8_EXT\n }\n\n if (extensions.ext_color_buffer_half_float) {\n formatTypes['rgba16f'] = GL_RGBA16F_EXT\n formatTypes['rgb16f'] = GL_RGB16F_EXT\n }\n\n if (extensions.webgl_color_buffer_float) {\n formatTypes['rgba32f'] = GL_RGBA32F_EXT\n }\n\n var formatTypesInvert = []\n Object.keys(formatTypes).forEach(function (key) {\n var val = formatTypes[key]\n formatTypesInvert[val] = key\n })\n\n var renderbufferCount = 0\n var renderbufferSet = {}\n\n function REGLRenderbuffer (renderbuffer) {\n this.id = renderbufferCount++\n this.refCount = 1\n\n this.renderbuffer = renderbuffer\n\n this.format = GL_RGBA4$1\n this.width = 0\n this.height = 0\n\n if (config.profile) {\n this.stats = { size: 0 }\n }\n }\n\n REGLRenderbuffer.prototype.decRef = function () {\n if (--this.refCount <= 0) {\n destroy(this)\n }\n }\n\n function destroy (rb) {\n var handle = rb.renderbuffer\n check$1(handle, 'must not double destroy renderbuffer')\n gl.bindRenderbuffer(GL_RENDERBUFFER, null)\n gl.deleteRenderbuffer(handle)\n rb.renderbuffer = null\n rb.refCount = 0\n delete renderbufferSet[rb.id]\n stats.renderbufferCount--\n }\n\n function createRenderbuffer (a, b) {\n var renderbuffer = new REGLRenderbuffer(gl.createRenderbuffer())\n renderbufferSet[renderbuffer.id] = renderbuffer\n stats.renderbufferCount++\n\n function reglRenderbuffer (a, b) {\n var w = 0\n var h = 0\n var format = GL_RGBA4$1\n\n if (typeof a === 'object' && a) {\n var options = a\n if ('shape' in options) {\n var shape = options.shape\n check$1(Array.isArray(shape) && shape.length >= 2,\n 'invalid renderbuffer shape')\n w = shape[0] | 0\n h = shape[1] | 0\n } else {\n if ('radius' in options) {\n w = h = options.radius | 0\n }\n if ('width' in options) {\n w = options.width | 0\n }\n if ('height' in options) {\n h = options.height | 0\n }\n }\n if ('format' in options) {\n check$1.parameter(options.format, formatTypes,\n 'invalid renderbuffer format')\n format = formatTypes[options.format]\n }\n } else if (typeof a === 'number') {\n w = a | 0\n if (typeof b === 'number') {\n h = b | 0\n } else {\n h = w\n }\n } else if (!a) {\n w = h = 1\n } else {\n check$1.raise('invalid arguments to renderbuffer constructor')\n }\n\n // check shape\n check$1(\n w > 0 && h > 0 &&\n w <= limits.maxRenderbufferSize && h <= limits.maxRenderbufferSize,\n 'invalid renderbuffer size')\n\n if (w === renderbuffer.width &&\n h === renderbuffer.height &&\n format === renderbuffer.format) {\n return\n }\n\n reglRenderbuffer.width = renderbuffer.width = w\n reglRenderbuffer.height = renderbuffer.height = h\n renderbuffer.format = format\n\n gl.bindRenderbuffer(GL_RENDERBUFFER, renderbuffer.renderbuffer)\n gl.renderbufferStorage(GL_RENDERBUFFER, format, w, h)\n\n check$1(\n gl.getError() === 0,\n 'invalid render buffer format')\n\n if (config.profile) {\n renderbuffer.stats.size = getRenderbufferSize(renderbuffer.format, renderbuffer.width, renderbuffer.height)\n }\n reglRenderbuffer.format = formatTypesInvert[renderbuffer.format]\n\n return reglRenderbuffer\n }\n\n function resize (w_, h_) {\n var w = w_ | 0\n var h = (h_ | 0) || w\n\n if (w === renderbuffer.width && h === renderbuffer.height) {\n return reglRenderbuffer\n }\n\n // check shape\n check$1(\n w > 0 && h > 0 &&\n w <= limits.maxRenderbufferSize && h <= limits.maxRenderbufferSize,\n 'invalid renderbuffer size')\n\n reglRenderbuffer.width = renderbuffer.width = w\n reglRenderbuffer.height = renderbuffer.height = h\n\n gl.bindRenderbuffer(GL_RENDERBUFFER, renderbuffer.renderbuffer)\n gl.renderbufferStorage(GL_RENDERBUFFER, renderbuffer.format, w, h)\n\n check$1(\n gl.getError() === 0,\n 'invalid render buffer format')\n\n // also, recompute size.\n if (config.profile) {\n renderbuffer.stats.size = getRenderbufferSize(\n renderbuffer.format, renderbuffer.width, renderbuffer.height)\n }\n\n return reglRenderbuffer\n }\n\n reglRenderbuffer(a, b)\n\n reglRenderbuffer.resize = resize\n reglRenderbuffer._reglType = 'renderbuffer'\n reglRenderbuffer._renderbuffer = renderbuffer\n if (config.profile) {\n reglRenderbuffer.stats = renderbuffer.stats\n }\n reglRenderbuffer.destroy = function () {\n renderbuffer.decRef()\n }\n\n return reglRenderbuffer\n }\n\n if (config.profile) {\n stats.getTotalRenderbufferSize = function () {\n var total = 0\n Object.keys(renderbufferSet).forEach(function (key) {\n total += renderbufferSet[key].stats.size\n })\n return total\n }\n }\n\n function restoreRenderbuffers () {\n values(renderbufferSet).forEach(function (rb) {\n rb.renderbuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(GL_RENDERBUFFER, rb.renderbuffer)\n gl.renderbufferStorage(GL_RENDERBUFFER, rb.format, rb.width, rb.height)\n })\n gl.bindRenderbuffer(GL_RENDERBUFFER, null)\n }\n\n return {\n create: createRenderbuffer,\n clear: function () {\n values(renderbufferSet).forEach(destroy)\n },\n restore: restoreRenderbuffers\n }\n}\n\n// We store these constants so that the minifier can inline them\nvar GL_FRAMEBUFFER$1 = 0x8D40\nvar GL_RENDERBUFFER$1 = 0x8D41\n\nvar GL_TEXTURE_2D$2 = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 = 0x8515\n\nvar GL_COLOR_ATTACHMENT0$1 = 0x8CE0\nvar GL_DEPTH_ATTACHMENT = 0x8D00\nvar GL_STENCIL_ATTACHMENT = 0x8D20\nvar GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\n\nvar GL_FRAMEBUFFER_COMPLETE$1 = 0x8CD5\nvar GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nvar GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nvar GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9\nvar GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\n\nvar GL_HALF_FLOAT_OES$2 = 0x8D61\nvar GL_UNSIGNED_BYTE$6 = 0x1401\nvar GL_FLOAT$5 = 0x1406\n\nvar GL_RGB$1 = 0x1907\nvar GL_RGBA$2 = 0x1908\n\nvar GL_DEPTH_COMPONENT$1 = 0x1902\n\nvar colorTextureFormatEnums = [\n GL_RGB$1,\n GL_RGBA$2\n]\n\n// for every texture format, store\n// the number of channels\nvar textureFormatChannels = []\ntextureFormatChannels[GL_RGBA$2] = 4\ntextureFormatChannels[GL_RGB$1] = 3\n\n// for every texture type, store\n// the size in bytes.\nvar textureTypeSizes = []\ntextureTypeSizes[GL_UNSIGNED_BYTE$6] = 1\ntextureTypeSizes[GL_FLOAT$5] = 4\ntextureTypeSizes[GL_HALF_FLOAT_OES$2] = 2\n\nvar GL_RGBA4$2 = 0x8056\nvar GL_RGB5_A1$2 = 0x8057\nvar GL_RGB565$2 = 0x8D62\nvar GL_DEPTH_COMPONENT16$1 = 0x81A5\nvar GL_STENCIL_INDEX8$1 = 0x8D48\nvar GL_DEPTH_STENCIL$2 = 0x84F9\n\nvar GL_SRGB8_ALPHA8_EXT$1 = 0x8C43\n\nvar GL_RGBA32F_EXT$1 = 0x8814\n\nvar GL_RGBA16F_EXT$1 = 0x881A\nvar GL_RGB16F_EXT$1 = 0x881B\n\nvar colorRenderbufferFormatEnums = [\n GL_RGBA4$2,\n GL_RGB5_A1$2,\n GL_RGB565$2,\n GL_SRGB8_ALPHA8_EXT$1,\n GL_RGBA16F_EXT$1,\n GL_RGB16F_EXT$1,\n GL_RGBA32F_EXT$1\n]\n\nvar statusCode = {}\nstatusCode[GL_FRAMEBUFFER_COMPLETE$1] = 'complete'\nstatusCode[GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT] = 'incomplete attachment'\nstatusCode[GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS] = 'incomplete dimensions'\nstatusCode[GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT] = 'incomplete, missing attachment'\nstatusCode[GL_FRAMEBUFFER_UNSUPPORTED] = 'unsupported'\n\nfunction wrapFBOState (\n gl,\n extensions,\n limits,\n textureState,\n renderbufferState,\n stats) {\n var framebufferState = {\n cur: null,\n next: null,\n dirty: false,\n setFBO: null\n }\n\n var colorTextureFormats = ['rgba']\n var colorRenderbufferFormats = ['rgba4', 'rgb565', 'rgb5 a1']\n\n if (extensions.ext_srgb) {\n colorRenderbufferFormats.push('srgba')\n }\n\n if (extensions.ext_color_buffer_half_float) {\n colorRenderbufferFormats.push('rgba16f', 'rgb16f')\n }\n\n if (extensions.webgl_color_buffer_float) {\n colorRenderbufferFormats.push('rgba32f')\n }\n\n var colorTypes = ['uint8']\n if (extensions.oes_texture_half_float) {\n colorTypes.push('half float', 'float16')\n }\n if (extensions.oes_texture_float) {\n colorTypes.push('float', 'float32')\n }\n\n function FramebufferAttachment (target, texture, renderbuffer) {\n this.target = target\n this.texture = texture\n this.renderbuffer = renderbuffer\n\n var w = 0\n var h = 0\n if (texture) {\n w = texture.width\n h = texture.height\n } else if (renderbuffer) {\n w = renderbuffer.width\n h = renderbuffer.height\n }\n this.width = w\n this.height = h\n }\n\n function decRef (attachment) {\n if (attachment) {\n if (attachment.texture) {\n attachment.texture._texture.decRef()\n }\n if (attachment.renderbuffer) {\n attachment.renderbuffer._renderbuffer.decRef()\n }\n }\n }\n\n function incRefAndCheckShape (attachment, width, height) {\n if (!attachment) {\n return\n }\n if (attachment.texture) {\n var texture = attachment.texture._texture\n var tw = Math.max(1, texture.width)\n var th = Math.max(1, texture.height)\n check$1(tw === width && th === height,\n 'inconsistent width/height for supplied texture')\n texture.refCount += 1\n } else {\n var renderbuffer = attachment.renderbuffer._renderbuffer\n check$1(\n renderbuffer.width === width && renderbuffer.height === height,\n 'inconsistent width/height for renderbuffer')\n renderbuffer.refCount += 1\n }\n }\n\n function attach (location, attachment) {\n if (attachment) {\n if (attachment.texture) {\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n location,\n attachment.target,\n attachment.texture._texture.texture,\n 0)\n } else {\n gl.framebufferRenderbuffer(\n GL_FRAMEBUFFER$1,\n location,\n GL_RENDERBUFFER$1,\n attachment.renderbuffer._renderbuffer.renderbuffer)\n }\n }\n }\n\n function parseAttachment (attachment) {\n var target = GL_TEXTURE_2D$2\n var texture = null\n var renderbuffer = null\n\n var data = attachment\n if (typeof attachment === 'object') {\n data = attachment.data\n if ('target' in attachment) {\n target = attachment.target | 0\n }\n }\n\n check$1.type(data, 'function', 'invalid attachment data')\n\n var type = data._reglType\n if (type === 'texture2d') {\n texture = data\n check$1(target === GL_TEXTURE_2D$2)\n } else if (type === 'textureCube') {\n texture = data\n check$1(\n target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 &&\n target < GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 + 6,\n 'invalid cube map target')\n } else if (type === 'renderbuffer') {\n renderbuffer = data\n target = GL_RENDERBUFFER$1\n } else {\n check$1.raise('invalid regl object for attachment')\n }\n\n return new FramebufferAttachment(target, texture, renderbuffer)\n }\n\n function allocAttachment (\n width,\n height,\n isTexture,\n format,\n type) {\n if (isTexture) {\n var texture = textureState.create2D({\n width: width,\n height: height,\n format: format,\n type: type\n })\n texture._texture.refCount = 0\n return new FramebufferAttachment(GL_TEXTURE_2D$2, texture, null)\n } else {\n var rb = renderbufferState.create({\n width: width,\n height: height,\n format: format\n })\n rb._renderbuffer.refCount = 0\n return new FramebufferAttachment(GL_RENDERBUFFER$1, null, rb)\n }\n }\n\n function unwrapAttachment (attachment) {\n return attachment && (attachment.texture || attachment.renderbuffer)\n }\n\n function resizeAttachment (attachment, w, h) {\n if (attachment) {\n if (attachment.texture) {\n attachment.texture.resize(w, h)\n } else if (attachment.renderbuffer) {\n attachment.renderbuffer.resize(w, h)\n }\n attachment.width = w\n attachment.height = h\n }\n }\n\n var framebufferCount = 0\n var framebufferSet = {}\n\n function REGLFramebuffer () {\n this.id = framebufferCount++\n framebufferSet[this.id] = this\n\n this.framebuffer = gl.createFramebuffer()\n this.width = 0\n this.height = 0\n\n this.colorAttachments = []\n this.depthAttachment = null\n this.stencilAttachment = null\n this.depthStencilAttachment = null\n }\n\n function decFBORefs (framebuffer) {\n framebuffer.colorAttachments.forEach(decRef)\n decRef(framebuffer.depthAttachment)\n decRef(framebuffer.stencilAttachment)\n decRef(framebuffer.depthStencilAttachment)\n }\n\n function destroy (framebuffer) {\n var handle = framebuffer.framebuffer\n check$1(handle, 'must not double destroy framebuffer')\n gl.deleteFramebuffer(handle)\n framebuffer.framebuffer = null\n stats.framebufferCount--\n delete framebufferSet[framebuffer.id]\n }\n\n function updateFramebuffer (framebuffer) {\n var i\n\n gl.bindFramebuffer(GL_FRAMEBUFFER$1, framebuffer.framebuffer)\n var colorAttachments = framebuffer.colorAttachments\n for (i = 0; i < colorAttachments.length; ++i) {\n attach(GL_COLOR_ATTACHMENT0$1 + i, colorAttachments[i])\n }\n for (i = colorAttachments.length; i < limits.maxColorAttachments; ++i) {\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_COLOR_ATTACHMENT0$1 + i,\n GL_TEXTURE_2D$2,\n null,\n 0)\n }\n\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_DEPTH_STENCIL_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0)\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_DEPTH_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0)\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_STENCIL_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0)\n\n attach(GL_DEPTH_ATTACHMENT, framebuffer.depthAttachment)\n attach(GL_STENCIL_ATTACHMENT, framebuffer.stencilAttachment)\n attach(GL_DEPTH_STENCIL_ATTACHMENT, framebuffer.depthStencilAttachment)\n\n // Check status code\n var status = gl.checkFramebufferStatus(GL_FRAMEBUFFER$1)\n if (!gl.isContextLost() && status !== GL_FRAMEBUFFER_COMPLETE$1) {\n check$1.raise('framebuffer configuration not supported, status = ' +\n statusCode[status])\n }\n\n gl.bindFramebuffer(GL_FRAMEBUFFER$1, framebufferState.next ? framebufferState.next.framebuffer : null)\n framebufferState.cur = framebufferState.next\n\n // FIXME: Clear error code here. This is a work around for a bug in\n // headless-gl\n gl.getError()\n }\n\n function createFBO (a0, a1) {\n var framebuffer = new REGLFramebuffer()\n stats.framebufferCount++\n\n function reglFramebuffer (a, b) {\n var i\n\n check$1(framebufferState.next !== framebuffer,\n 'can not update framebuffer which is currently in use')\n\n var width = 0\n var height = 0\n\n var needsDepth = true\n var needsStencil = true\n\n var colorBuffer = null\n var colorTexture = true\n var colorFormat = 'rgba'\n var colorType = 'uint8'\n var colorCount = 1\n\n var depthBuffer = null\n var stencilBuffer = null\n var depthStencilBuffer = null\n var depthStencilTexture = false\n\n if (typeof a === 'number') {\n width = a | 0\n height = (b | 0) || width\n } else if (!a) {\n width = height = 1\n } else {\n check$1.type(a, 'object', 'invalid arguments for framebuffer')\n var options = a\n\n if ('shape' in options) {\n var shape = options.shape\n check$1(Array.isArray(shape) && shape.length >= 2,\n 'invalid shape for framebuffer')\n width = shape[0]\n height = shape[1]\n } else {\n if ('radius' in options) {\n width = height = options.radius\n }\n if ('width' in options) {\n width = options.width\n }\n if ('height' in options) {\n height = options.height\n }\n }\n\n if ('color' in options ||\n 'colors' in options) {\n colorBuffer =\n options.color ||\n options.colors\n if (Array.isArray(colorBuffer)) {\n check$1(\n colorBuffer.length === 1 || extensions.webgl_draw_buffers,\n 'multiple render targets not supported')\n }\n }\n\n if (!colorBuffer) {\n if ('colorCount' in options) {\n colorCount = options.colorCount | 0\n check$1(colorCount > 0, 'invalid color buffer count')\n }\n\n if ('colorTexture' in options) {\n colorTexture = !!options.colorTexture\n colorFormat = 'rgba4'\n }\n\n if ('colorType' in options) {\n colorType = options.colorType\n if (!colorTexture) {\n if (colorType === 'half float' || colorType === 'float16') {\n check$1(extensions.ext_color_buffer_half_float,\n 'you must enable EXT_color_buffer_half_float to use 16-bit render buffers')\n colorFormat = 'rgba16f'\n } else if (colorType === 'float' || colorType === 'float32') {\n check$1(extensions.webgl_color_buffer_float,\n 'you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers')\n colorFormat = 'rgba32f'\n }\n } else {\n check$1(extensions.oes_texture_float ||\n !(colorType === 'float' || colorType === 'float32'),\n 'you must enable OES_texture_float in order to use floating point framebuffer objects')\n check$1(extensions.oes_texture_half_float ||\n !(colorType === 'half float' || colorType === 'float16'),\n 'you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects')\n }\n check$1.oneOf(colorType, colorTypes, 'invalid color type')\n }\n\n if ('colorFormat' in options) {\n colorFormat = options.colorFormat\n if (colorTextureFormats.indexOf(colorFormat) >= 0) {\n colorTexture = true\n } else if (colorRenderbufferFormats.indexOf(colorFormat) >= 0) {\n colorTexture = false\n } else {\n if (colorTexture) {\n check$1.oneOf(\n options.colorFormat, colorTextureFormats,\n 'invalid color format for texture')\n } else {\n check$1.oneOf(\n options.colorFormat, colorRenderbufferFormats,\n 'invalid color format for renderbuffer')\n }\n }\n }\n }\n\n if ('depthTexture' in options || 'depthStencilTexture' in options) {\n depthStencilTexture = !!(options.depthTexture ||\n options.depthStencilTexture)\n check$1(!depthStencilTexture || extensions.webgl_depth_texture,\n 'webgl_depth_texture extension not supported')\n }\n\n if ('depth' in options) {\n if (typeof options.depth === 'boolean') {\n needsDepth = options.depth\n } else {\n depthBuffer = options.depth\n needsStencil = false\n }\n }\n\n if ('stencil' in options) {\n if (typeof options.stencil === 'boolean') {\n needsStencil = options.stencil\n } else {\n stencilBuffer = options.stencil\n needsDepth = false\n }\n }\n\n if ('depthStencil' in options) {\n if (typeof options.depthStencil === 'boolean') {\n needsDepth = needsStencil = options.depthStencil\n } else {\n depthStencilBuffer = options.depthStencil\n needsDepth = false\n needsStencil = false\n }\n }\n }\n\n // parse attachments\n var colorAttachments = null\n var depthAttachment = null\n var stencilAttachment = null\n var depthStencilAttachment = null\n\n // Set up color attachments\n if (Array.isArray(colorBuffer)) {\n colorAttachments = colorBuffer.map(parseAttachment)\n } else if (colorBuffer) {\n colorAttachments = [parseAttachment(colorBuffer)]\n } else {\n colorAttachments = new Array(colorCount)\n for (i = 0; i < colorCount; ++i) {\n colorAttachments[i] = allocAttachment(\n width,\n height,\n colorTexture,\n colorFormat,\n colorType)\n }\n }\n\n check$1(extensions.webgl_draw_buffers || colorAttachments.length <= 1,\n 'you must enable the WEBGL_draw_buffers extension in order to use multiple color buffers.')\n check$1(colorAttachments.length <= limits.maxColorAttachments,\n 'too many color attachments, not supported')\n\n width = width || colorAttachments[0].width\n height = height || colorAttachments[0].height\n\n if (depthBuffer) {\n depthAttachment = parseAttachment(depthBuffer)\n } else if (needsDepth && !needsStencil) {\n depthAttachment = allocAttachment(\n width,\n height,\n depthStencilTexture,\n 'depth',\n 'uint32')\n }\n\n if (stencilBuffer) {\n stencilAttachment = parseAttachment(stencilBuffer)\n } else if (needsStencil && !needsDepth) {\n stencilAttachment = allocAttachment(\n width,\n height,\n false,\n 'stencil',\n 'uint8')\n }\n\n if (depthStencilBuffer) {\n depthStencilAttachment = parseAttachment(depthStencilBuffer)\n } else if (!depthBuffer && !stencilBuffer && needsStencil && needsDepth) {\n depthStencilAttachment = allocAttachment(\n width,\n height,\n depthStencilTexture,\n 'depth stencil',\n 'depth stencil')\n }\n\n check$1(\n (!!depthBuffer) + (!!stencilBuffer) + (!!depthStencilBuffer) <= 1,\n 'invalid framebuffer configuration, can specify exactly one depth/stencil attachment')\n\n var commonColorAttachmentSize = null\n\n for (i = 0; i < colorAttachments.length; ++i) {\n incRefAndCheckShape(colorAttachments[i], width, height)\n check$1(!colorAttachments[i] ||\n (colorAttachments[i].texture &&\n colorTextureFormatEnums.indexOf(colorAttachments[i].texture._texture.format) >= 0) ||\n (colorAttachments[i].renderbuffer &&\n colorRenderbufferFormatEnums.indexOf(colorAttachments[i].renderbuffer._renderbuffer.format) >= 0),\n 'framebuffer color attachment ' + i + ' is invalid')\n\n if (colorAttachments[i] && colorAttachments[i].texture) {\n var colorAttachmentSize =\n textureFormatChannels[colorAttachments[i].texture._texture.format] *\n textureTypeSizes[colorAttachments[i].texture._texture.type]\n\n if (commonColorAttachmentSize === null) {\n commonColorAttachmentSize = colorAttachmentSize\n } else {\n // We need to make sure that all color attachments have the same number of bitplanes\n // (that is, the same numer of bits per pixel)\n // This is required by the GLES2.0 standard. See the beginning of Chapter 4 in that document.\n check$1(commonColorAttachmentSize === colorAttachmentSize,\n 'all color attachments much have the same number of bits per pixel.')\n }\n }\n }\n incRefAndCheckShape(depthAttachment, width, height)\n check$1(!depthAttachment ||\n (depthAttachment.texture &&\n depthAttachment.texture._texture.format === GL_DEPTH_COMPONENT$1) ||\n (depthAttachment.renderbuffer &&\n depthAttachment.renderbuffer._renderbuffer.format === GL_DEPTH_COMPONENT16$1),\n 'invalid depth attachment for framebuffer object')\n incRefAndCheckShape(stencilAttachment, width, height)\n check$1(!stencilAttachment ||\n (stencilAttachment.renderbuffer &&\n stencilAttachment.renderbuffer._renderbuffer.format === GL_STENCIL_INDEX8$1),\n 'invalid stencil attachment for framebuffer object')\n incRefAndCheckShape(depthStencilAttachment, width, height)\n check$1(!depthStencilAttachment ||\n (depthStencilAttachment.texture &&\n depthStencilAttachment.texture._texture.format === GL_DEPTH_STENCIL$2) ||\n (depthStencilAttachment.renderbuffer &&\n depthStencilAttachment.renderbuffer._renderbuffer.format === GL_DEPTH_STENCIL$2),\n 'invalid depth-stencil attachment for framebuffer object')\n\n // decrement references\n decFBORefs(framebuffer)\n\n framebuffer.width = width\n framebuffer.height = height\n\n framebuffer.colorAttachments = colorAttachments\n framebuffer.depthAttachment = depthAttachment\n framebuffer.stencilAttachment = stencilAttachment\n framebuffer.depthStencilAttachment = depthStencilAttachment\n\n reglFramebuffer.color = colorAttachments.map(unwrapAttachment)\n reglFramebuffer.depth = unwrapAttachment(depthAttachment)\n reglFramebuffer.stencil = unwrapAttachment(stencilAttachment)\n reglFramebuffer.depthStencil = unwrapAttachment(depthStencilAttachment)\n\n reglFramebuffer.width = framebuffer.width\n reglFramebuffer.height = framebuffer.height\n\n updateFramebuffer(framebuffer)\n\n return reglFramebuffer\n }\n\n function resize (w_, h_) {\n check$1(framebufferState.next !== framebuffer,\n 'can not resize a framebuffer which is currently in use')\n\n var w = Math.max(w_ | 0, 1)\n var h = Math.max((h_ | 0) || w, 1)\n if (w === framebuffer.width && h === framebuffer.height) {\n return reglFramebuffer\n }\n\n // resize all buffers\n var colorAttachments = framebuffer.colorAttachments\n for (var i = 0; i < colorAttachments.length; ++i) {\n resizeAttachment(colorAttachments[i], w, h)\n }\n resizeAttachment(framebuffer.depthAttachment, w, h)\n resizeAttachment(framebuffer.stencilAttachment, w, h)\n resizeAttachment(framebuffer.depthStencilAttachment, w, h)\n\n framebuffer.width = reglFramebuffer.width = w\n framebuffer.height = reglFramebuffer.height = h\n\n updateFramebuffer(framebuffer)\n\n return reglFramebuffer\n }\n\n reglFramebuffer(a0, a1)\n\n return extend(reglFramebuffer, {\n resize: resize,\n _reglType: 'framebuffer',\n _framebuffer: framebuffer,\n destroy: function () {\n destroy(framebuffer)\n decFBORefs(framebuffer)\n },\n use: function (block) {\n framebufferState.setFBO({\n framebuffer: reglFramebuffer\n }, block)\n }\n })\n }\n\n function createCubeFBO (options) {\n var faces = Array(6)\n\n function reglFramebufferCube (a) {\n var i\n\n check$1(faces.indexOf(framebufferState.next) < 0,\n 'can not update framebuffer which is currently in use')\n\n var params = {\n color: null\n }\n\n var radius = 0\n\n var colorBuffer = null\n var colorFormat = 'rgba'\n var colorType = 'uint8'\n var colorCount = 1\n\n if (typeof a === 'number') {\n radius = a | 0\n } else if (!a) {\n radius = 1\n } else {\n check$1.type(a, 'object', 'invalid arguments for framebuffer')\n var options = a\n\n if ('shape' in options) {\n var shape = options.shape\n check$1(\n Array.isArray(shape) && shape.length >= 2,\n 'invalid shape for framebuffer')\n check$1(\n shape[0] === shape[1],\n 'cube framebuffer must be square')\n radius = shape[0]\n } else {\n if ('radius' in options) {\n radius = options.radius | 0\n }\n if ('width' in options) {\n radius = options.width | 0\n if ('height' in options) {\n check$1(options.height === radius, 'must be square')\n }\n } else if ('height' in options) {\n radius = options.height | 0\n }\n }\n\n if ('color' in options ||\n 'colors' in options) {\n colorBuffer =\n options.color ||\n options.colors\n if (Array.isArray(colorBuffer)) {\n check$1(\n colorBuffer.length === 1 || extensions.webgl_draw_buffers,\n 'multiple render targets not supported')\n }\n }\n\n if (!colorBuffer) {\n if ('colorCount' in options) {\n colorCount = options.colorCount | 0\n check$1(colorCount > 0, 'invalid color buffer count')\n }\n\n if ('colorType' in options) {\n check$1.oneOf(\n options.colorType, colorTypes,\n 'invalid color type')\n colorType = options.colorType\n }\n\n if ('colorFormat' in options) {\n colorFormat = options.colorFormat\n check$1.oneOf(\n options.colorFormat, colorTextureFormats,\n 'invalid color format for texture')\n }\n }\n\n if ('depth' in options) {\n params.depth = options.depth\n }\n\n if ('stencil' in options) {\n params.stencil = options.stencil\n }\n\n if ('depthStencil' in options) {\n params.depthStencil = options.depthStencil\n }\n }\n\n var colorCubes\n if (colorBuffer) {\n if (Array.isArray(colorBuffer)) {\n colorCubes = []\n for (i = 0; i < colorBuffer.length; ++i) {\n colorCubes[i] = colorBuffer[i]\n }\n } else {\n colorCubes = [ colorBuffer ]\n }\n } else {\n colorCubes = Array(colorCount)\n var cubeMapParams = {\n radius: radius,\n format: colorFormat,\n type: colorType\n }\n for (i = 0; i < colorCount; ++i) {\n colorCubes[i] = textureState.createCube(cubeMapParams)\n }\n }\n\n // Check color cubes\n params.color = Array(colorCubes.length)\n for (i = 0; i < colorCubes.length; ++i) {\n var cube = colorCubes[i]\n check$1(\n typeof cube === 'function' && cube._reglType === 'textureCube',\n 'invalid cube map')\n radius = radius || cube.width\n check$1(\n cube.width === radius && cube.height === radius,\n 'invalid cube map shape')\n params.color[i] = {\n target: GL_TEXTURE_CUBE_MAP_POSITIVE_X$2,\n data: colorCubes[i]\n }\n }\n\n for (i = 0; i < 6; ++i) {\n for (var j = 0; j < colorCubes.length; ++j) {\n params.color[j].target = GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 + i\n }\n // reuse depth-stencil attachments across all cube maps\n if (i > 0) {\n params.depth = faces[0].depth\n params.stencil = faces[0].stencil\n params.depthStencil = faces[0].depthStencil\n }\n if (faces[i]) {\n (faces[i])(params)\n } else {\n faces[i] = createFBO(params)\n }\n }\n\n return extend(reglFramebufferCube, {\n width: radius,\n height: radius,\n color: colorCubes\n })\n }\n\n function resize (radius_) {\n var i\n var radius = radius_ | 0\n check$1(radius > 0 && radius <= limits.maxCubeMapSize,\n 'invalid radius for cube fbo')\n\n if (radius === reglFramebufferCube.width) {\n return reglFramebufferCube\n }\n\n var colors = reglFramebufferCube.color\n for (i = 0; i < colors.length; ++i) {\n colors[i].resize(radius)\n }\n\n for (i = 0; i < 6; ++i) {\n faces[i].resize(radius)\n }\n\n reglFramebufferCube.width = reglFramebufferCube.height = radius\n\n return reglFramebufferCube\n }\n\n reglFramebufferCube(options)\n\n return extend(reglFramebufferCube, {\n faces: faces,\n resize: resize,\n _reglType: 'framebufferCube',\n destroy: function () {\n faces.forEach(function (f) {\n f.destroy()\n })\n }\n })\n }\n\n function restoreFramebuffers () {\n framebufferState.cur = null\n framebufferState.next = null\n framebufferState.dirty = true\n values(framebufferSet).forEach(function (fb) {\n fb.framebuffer = gl.createFramebuffer()\n updateFramebuffer(fb)\n })\n }\n\n return extend(framebufferState, {\n getFramebuffer: function (object) {\n if (typeof object === 'function' && object._reglType === 'framebuffer') {\n var fbo = object._framebuffer\n if (fbo instanceof REGLFramebuffer) {\n return fbo\n }\n }\n return null\n },\n create: createFBO,\n createCube: createCubeFBO,\n clear: function () {\n values(framebufferSet).forEach(destroy)\n },\n restore: restoreFramebuffers\n })\n}\n\nvar GL_FLOAT$6 = 5126\nvar GL_ARRAY_BUFFER$1 = 34962\n\nfunction AttributeRecord () {\n this.state = 0\n\n this.x = 0.0\n this.y = 0.0\n this.z = 0.0\n this.w = 0.0\n\n this.buffer = null\n this.size = 0\n this.normalized = false\n this.type = GL_FLOAT$6\n this.offset = 0\n this.stride = 0\n this.divisor = 0\n}\n\nfunction wrapAttributeState (\n gl,\n extensions,\n limits,\n stats,\n bufferState) {\n var NUM_ATTRIBUTES = limits.maxAttributes\n var attributeBindings = new Array(NUM_ATTRIBUTES)\n for (var i = 0; i < NUM_ATTRIBUTES; ++i) {\n attributeBindings[i] = new AttributeRecord()\n }\n var vaoCount = 0\n var vaoSet = {}\n\n var state = {\n Record: AttributeRecord,\n scope: {},\n state: attributeBindings,\n currentVAO: null,\n targetVAO: null,\n restore: extVAO() ? restoreVAO : function () {},\n createVAO: createVAO,\n getVAO: getVAO,\n destroyBuffer: destroyBuffer,\n setVAO: extVAO() ? setVAOEXT : setVAOEmulated,\n clear: extVAO() ? destroyVAOEXT : function () {}\n }\n\n function destroyBuffer (buffer) {\n for (var i = 0; i < attributeBindings.length; ++i) {\n var record = attributeBindings[i]\n if (record.buffer === buffer) {\n gl.disableVertexAttribArray(i)\n record.buffer = null\n }\n }\n }\n\n function extVAO () {\n return extensions.oes_vertex_array_object\n }\n\n function extInstanced () {\n return extensions.angle_instanced_arrays\n }\n\n function getVAO (vao) {\n if (typeof vao === 'function' && vao._vao) {\n return vao._vao\n }\n return null\n }\n\n function setVAOEXT (vao) {\n if (vao === state.currentVAO) {\n return\n }\n var ext = extVAO()\n if (vao) {\n ext.bindVertexArrayOES(vao.vao)\n } else {\n ext.bindVertexArrayOES(null)\n }\n state.currentVAO = vao\n }\n\n function setVAOEmulated (vao) {\n if (vao === state.currentVAO) {\n return\n }\n if (vao) {\n vao.bindAttrs()\n } else {\n var exti = extInstanced()\n for (var i = 0; i < attributeBindings.length; ++i) {\n var binding = attributeBindings[i]\n if (binding.buffer) {\n gl.enableVertexAttribArray(i)\n gl.vertexAttribPointer(i, binding.size, binding.type, binding.normalized, binding.stride, binding.offfset)\n if (exti && binding.divisor) {\n exti.vertexAttribDivisorANGLE(i, binding.divisor)\n }\n } else {\n gl.disableVertexAttribArray(i)\n gl.vertexAttrib4f(i, binding.x, binding.y, binding.z, binding.w)\n }\n }\n }\n state.currentVAO = vao\n }\n\n function destroyVAOEXT () {\n values(vaoSet).forEach(function (vao) {\n vao.destroy()\n })\n }\n\n function REGLVAO () {\n this.id = ++vaoCount\n this.attributes = []\n var extension = extVAO()\n if (extension) {\n this.vao = extension.createVertexArrayOES()\n } else {\n this.vao = null\n }\n vaoSet[this.id] = this\n this.buffers = []\n }\n\n REGLVAO.prototype.bindAttrs = function () {\n var exti = extInstanced()\n var attributes = this.attributes\n for (var i = 0; i < attributes.length; ++i) {\n var attr = attributes[i]\n if (attr.buffer) {\n gl.enableVertexAttribArray(i)\n gl.bindBuffer(GL_ARRAY_BUFFER$1, attr.buffer.buffer)\n gl.vertexAttribPointer(i, attr.size, attr.type, attr.normalized, attr.stride, attr.offset)\n if (exti && attr.divisor) {\n exti.vertexAttribDivisorANGLE(i, attr.divisor)\n }\n } else {\n gl.disableVertexAttribArray(i)\n gl.vertexAttrib4f(i, attr.x, attr.y, attr.z, attr.w)\n }\n }\n for (var j = attributes.length; j < NUM_ATTRIBUTES; ++j) {\n gl.disableVertexAttribArray(j)\n }\n }\n\n REGLVAO.prototype.refresh = function () {\n var ext = extVAO()\n if (ext) {\n ext.bindVertexArrayOES(this.vao)\n this.bindAttrs()\n state.currentVAO = this\n }\n }\n\n REGLVAO.prototype.destroy = function () {\n if (this.vao) {\n var extension = extVAO()\n if (this === state.currentVAO) {\n state.currentVAO = null\n extension.bindVertexArrayOES(null)\n }\n extension.deleteVertexArrayOES(this.vao)\n this.vao = null\n }\n if (vaoSet[this.id]) {\n delete vaoSet[this.id]\n stats.vaoCount -= 1\n }\n }\n\n function restoreVAO () {\n var ext = extVAO()\n if (ext) {\n values(vaoSet).forEach(function (vao) {\n vao.refresh()\n })\n }\n }\n\n function createVAO (_attr) {\n var vao = new REGLVAO()\n stats.vaoCount += 1\n\n function updateVAO (attributes) {\n check$1(Array.isArray(attributes), 'arguments to vertex array constructor must be an array')\n check$1(attributes.length < NUM_ATTRIBUTES, 'too many attributes')\n check$1(attributes.length > 0, 'must specify at least one attribute')\n\n var bufUpdated = {}\n var nattributes = vao.attributes\n nattributes.length = attributes.length\n for (var i = 0; i < attributes.length; ++i) {\n var spec = attributes[i]\n var rec = nattributes[i] = new AttributeRecord()\n var data = spec.data || spec\n if (Array.isArray(data) || isTypedArray(data) || isNDArrayLike(data)) {\n var buf\n if (vao.buffers[i]) {\n buf = vao.buffers[i]\n if (isTypedArray(data) && buf._buffer.byteLength >= data.byteLength) {\n buf.subdata(data)\n } else {\n buf.destroy()\n vao.buffers[i] = null\n }\n }\n if (!vao.buffers[i]) {\n buf = vao.buffers[i] = bufferState.create(spec, GL_ARRAY_BUFFER$1, false, true)\n }\n rec.buffer = bufferState.getBuffer(buf)\n rec.size = rec.buffer.dimension | 0\n rec.normalized = false\n rec.type = rec.buffer.dtype\n rec.offset = 0\n rec.stride = 0\n rec.divisor = 0\n rec.state = 1\n bufUpdated[i] = 1\n } else if (bufferState.getBuffer(spec)) {\n rec.buffer = bufferState.getBuffer(spec)\n rec.size = rec.buffer.dimension | 0\n rec.normalized = false\n rec.type = rec.buffer.dtype\n rec.offset = 0\n rec.stride = 0\n rec.divisor = 0\n rec.state = 1\n } else if (bufferState.getBuffer(spec.buffer)) {\n rec.buffer = bufferState.getBuffer(spec.buffer)\n rec.size = ((+spec.size) || rec.buffer.dimension) | 0\n rec.normalized = !!spec.normalized || false\n if ('type' in spec) {\n check$1.parameter(spec.type, glTypes, 'invalid buffer type')\n rec.type = glTypes[spec.type]\n } else {\n rec.type = rec.buffer.dtype\n }\n rec.offset = (spec.offset || 0) | 0\n rec.stride = (spec.stride || 0) | 0\n rec.divisor = (spec.divisor || 0) | 0\n rec.state = 1\n\n check$1(rec.size >= 1 && rec.size <= 4, 'size must be between 1 and 4')\n check$1(rec.offset >= 0, 'invalid offset')\n check$1(rec.stride >= 0 && rec.stride <= 255, 'stride must be between 0 and 255')\n check$1(rec.divisor >= 0, 'divisor must be positive')\n check$1(!rec.divisor || !!extensions.angle_instanced_arrays, 'ANGLE_instanced_arrays must be enabled to use divisor')\n } else if ('x' in spec) {\n check$1(i > 0, 'first attribute must not be a constant')\n rec.x = +spec.x || 0\n rec.y = +spec.y || 0\n rec.z = +spec.z || 0\n rec.w = +spec.w || 0\n rec.state = 2\n } else {\n check$1(false, 'invalid attribute spec for location ' + i)\n }\n }\n\n // retire unused buffers\n for (var j = 0; j < vao.buffers.length; ++j) {\n if (!bufUpdated[j] && vao.buffers[j]) {\n vao.buffers[j].destroy()\n vao.buffers[j] = null\n }\n }\n\n vao.refresh()\n return updateVAO\n }\n\n updateVAO.destroy = function () {\n for (var j = 0; j < vao.buffers.length; ++j) {\n if (vao.buffers[j]) {\n vao.buffers[j].destroy()\n }\n }\n vao.buffers.length = 0\n vao.destroy()\n }\n\n updateVAO._vao = vao\n updateVAO._reglType = 'vao'\n\n return updateVAO(_attr)\n }\n\n return state\n}\n\nvar GL_FRAGMENT_SHADER = 35632\nvar GL_VERTEX_SHADER = 35633\n\nvar GL_ACTIVE_UNIFORMS = 0x8B86\nvar GL_ACTIVE_ATTRIBUTES = 0x8B89\n\nfunction wrapShaderState (gl, stringStore, stats, config) {\n // ===================================================\n // glsl compilation and linking\n // ===================================================\n var fragShaders = {}\n var vertShaders = {}\n\n function ActiveInfo (name, id, location, info) {\n this.name = name\n this.id = id\n this.location = location\n this.info = info\n }\n\n function insertActiveInfo (list, info) {\n for (var i = 0; i < list.length; ++i) {\n if (list[i].id === info.id) {\n list[i].location = info.location\n return\n }\n }\n list.push(info)\n }\n\n function getShader (type, id, command) {\n var cache = type === GL_FRAGMENT_SHADER ? fragShaders : vertShaders\n var shader = cache[id]\n\n if (!shader) {\n var source = stringStore.str(id)\n shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n check$1.shaderError(gl, shader, source, type, command)\n cache[id] = shader\n }\n\n return shader\n }\n\n // ===================================================\n // program linking\n // ===================================================\n var programCache = {}\n var programList = []\n\n var PROGRAM_COUNTER = 0\n\n function REGLProgram (fragId, vertId) {\n this.id = PROGRAM_COUNTER++\n this.fragId = fragId\n this.vertId = vertId\n this.program = null\n this.uniforms = []\n this.attributes = []\n this.refCount = 1\n\n if (config.profile) {\n this.stats = {\n uniformsCount: 0,\n attributesCount: 0\n }\n }\n }\n\n function linkProgram (desc, command, attributeLocations) {\n var i, info\n\n // -------------------------------\n // compile & link\n // -------------------------------\n var fragShader = getShader(GL_FRAGMENT_SHADER, desc.fragId)\n var vertShader = getShader(GL_VERTEX_SHADER, desc.vertId)\n\n var program = desc.program = gl.createProgram()\n gl.attachShader(program, fragShader)\n gl.attachShader(program, vertShader)\n if (attributeLocations) {\n for (i = 0; i < attributeLocations.length; ++i) {\n var binding = attributeLocations[i]\n gl.bindAttribLocation(program, binding[0], binding[1])\n }\n }\n\n gl.linkProgram(program)\n check$1.linkError(\n gl,\n program,\n stringStore.str(desc.fragId),\n stringStore.str(desc.vertId),\n command)\n\n // -------------------------------\n // grab uniforms\n // -------------------------------\n var numUniforms = gl.getProgramParameter(program, GL_ACTIVE_UNIFORMS)\n if (config.profile) {\n desc.stats.uniformsCount = numUniforms\n }\n var uniforms = desc.uniforms\n for (i = 0; i < numUniforms; ++i) {\n info = gl.getActiveUniform(program, i)\n if (info) {\n if (info.size > 1) {\n for (var j = 0; j < info.size; ++j) {\n var name = info.name.replace('[0]', '[' + j + ']')\n insertActiveInfo(uniforms, new ActiveInfo(\n name,\n stringStore.id(name),\n gl.getUniformLocation(program, name),\n info))\n }\n } else {\n insertActiveInfo(uniforms, new ActiveInfo(\n info.name,\n stringStore.id(info.name),\n gl.getUniformLocation(program, info.name),\n info))\n }\n }\n }\n\n // -------------------------------\n // grab attributes\n // -------------------------------\n var numAttributes = gl.getProgramParameter(program, GL_ACTIVE_ATTRIBUTES)\n if (config.profile) {\n desc.stats.attributesCount = numAttributes\n }\n\n var attributes = desc.attributes\n for (i = 0; i < numAttributes; ++i) {\n info = gl.getActiveAttrib(program, i)\n if (info) {\n insertActiveInfo(attributes, new ActiveInfo(\n info.name,\n stringStore.id(info.name),\n gl.getAttribLocation(program, info.name),\n info))\n }\n }\n }\n\n if (config.profile) {\n stats.getMaxUniformsCount = function () {\n var m = 0\n programList.forEach(function (desc) {\n if (desc.stats.uniformsCount > m) {\n m = desc.stats.uniformsCount\n }\n })\n return m\n }\n\n stats.getMaxAttributesCount = function () {\n var m = 0\n programList.forEach(function (desc) {\n if (desc.stats.attributesCount > m) {\n m = desc.stats.attributesCount\n }\n })\n return m\n }\n }\n\n function restoreShaders () {\n fragShaders = {}\n vertShaders = {}\n for (var i = 0; i < programList.length; ++i) {\n linkProgram(programList[i], null, programList[i].attributes.map(function (info) {\n return [info.location, info.name]\n }))\n }\n }\n\n return {\n clear: function () {\n var deleteShader = gl.deleteShader.bind(gl)\n values(fragShaders).forEach(deleteShader)\n fragShaders = {}\n values(vertShaders).forEach(deleteShader)\n vertShaders = {}\n\n programList.forEach(function (desc) {\n gl.deleteProgram(desc.program)\n })\n programList.length = 0\n programCache = {}\n\n stats.shaderCount = 0\n },\n\n program: function (vertId, fragId, command, attribLocations) {\n check$1.command(vertId >= 0, 'missing vertex shader', command)\n check$1.command(fragId >= 0, 'missing fragment shader', command)\n\n var cache = programCache[fragId]\n if (!cache) {\n cache = programCache[fragId] = {}\n }\n var prevProgram = cache[vertId]\n if (prevProgram) {\n prevProgram.refCount++\n if (!attribLocations) {\n return prevProgram\n }\n }\n var program = new REGLProgram(fragId, vertId)\n stats.shaderCount++\n linkProgram(program, command, attribLocations)\n if (!prevProgram) {\n cache[vertId] = program\n }\n programList.push(program)\n return extend(program, {\n destroy: function () {\n program.refCount--\n if (program.refCount <= 0) {\n gl.deleteProgram(program.program)\n var idx = programList.indexOf(program)\n programList.splice(idx, 1)\n stats.shaderCount--\n }\n // no program is linked to this vert anymore\n if (cache[program.vertId].refCount <= 0) {\n gl.deleteShader(vertShaders[program.vertId])\n delete vertShaders[program.vertId]\n delete programCache[program.fragId][program.vertId]\n }\n // no program is linked to this frag anymore\n if (!Object.keys(programCache[program.fragId]).length) {\n gl.deleteShader(fragShaders[program.fragId])\n delete fragShaders[program.fragId]\n delete programCache[program.fragId]\n }\n }\n })\n },\n\n restore: restoreShaders,\n\n shader: getShader,\n\n frag: -1,\n vert: -1\n }\n}\n\nvar GL_RGBA$3 = 6408\nvar GL_UNSIGNED_BYTE$7 = 5121\nvar GL_PACK_ALIGNMENT = 0x0D05\nvar GL_FLOAT$7 = 0x1406 // 5126\n\nfunction wrapReadPixels (\n gl,\n framebufferState,\n reglPoll,\n context,\n glAttributes,\n extensions,\n limits) {\n function readPixelsImpl (input) {\n var type\n if (framebufferState.next === null) {\n check$1(\n glAttributes.preserveDrawingBuffer,\n 'you must create a webgl context with \"preserveDrawingBuffer\":true in order to read pixels from the drawing buffer')\n type = GL_UNSIGNED_BYTE$7\n } else {\n check$1(\n framebufferState.next.colorAttachments[0].texture !== null,\n 'You cannot read from a renderbuffer')\n type = framebufferState.next.colorAttachments[0].texture._texture.type\n\n if (extensions.oes_texture_float) {\n check$1(\n type === GL_UNSIGNED_BYTE$7 || type === GL_FLOAT$7,\n 'Reading from a framebuffer is only allowed for the types \\'uint8\\' and \\'float\\'')\n\n if (type === GL_FLOAT$7) {\n check$1(limits.readFloat, 'Reading \\'float\\' values is not permitted in your browser. For a fallback, please see: https://www.npmjs.com/package/glsl-read-float')\n }\n } else {\n check$1(\n type === GL_UNSIGNED_BYTE$7,\n 'Reading from a framebuffer is only allowed for the type \\'uint8\\'')\n }\n }\n\n var x = 0\n var y = 0\n var width = context.framebufferWidth\n var height = context.framebufferHeight\n var data = null\n\n if (isTypedArray(input)) {\n data = input\n } else if (input) {\n check$1.type(input, 'object', 'invalid arguments to regl.read()')\n x = input.x | 0\n y = input.y | 0\n check$1(\n x >= 0 && x < context.framebufferWidth,\n 'invalid x offset for regl.read')\n check$1(\n y >= 0 && y < context.framebufferHeight,\n 'invalid y offset for regl.read')\n width = (input.width || (context.framebufferWidth - x)) | 0\n height = (input.height || (context.framebufferHeight - y)) | 0\n data = input.data || null\n }\n\n // sanity check input.data\n if (data) {\n if (type === GL_UNSIGNED_BYTE$7) {\n check$1(\n data instanceof Uint8Array,\n 'buffer must be \\'Uint8Array\\' when reading from a framebuffer of type \\'uint8\\'')\n } else if (type === GL_FLOAT$7) {\n check$1(\n data instanceof Float32Array,\n 'buffer must be \\'Float32Array\\' when reading from a framebuffer of type \\'float\\'')\n }\n }\n\n check$1(\n width > 0 && width + x <= context.framebufferWidth,\n 'invalid width for read pixels')\n check$1(\n height > 0 && height + y <= context.framebufferHeight,\n 'invalid height for read pixels')\n\n // Update WebGL state\n reglPoll()\n\n // Compute size\n var size = width * height * 4\n\n // Allocate data\n if (!data) {\n if (type === GL_UNSIGNED_BYTE$7) {\n data = new Uint8Array(size)\n } else if (type === GL_FLOAT$7) {\n data = data || new Float32Array(size)\n }\n }\n\n // Type check\n check$1.isTypedArray(data, 'data buffer for regl.read() must be a typedarray')\n check$1(data.byteLength >= size, 'data buffer for regl.read() too small')\n\n // Run read pixels\n gl.pixelStorei(GL_PACK_ALIGNMENT, 4)\n gl.readPixels(x, y, width, height, GL_RGBA$3,\n type,\n data)\n\n return data\n }\n\n function readPixelsFBO (options) {\n var result\n framebufferState.setFBO({\n framebuffer: options.framebuffer\n }, function () {\n result = readPixelsImpl(options)\n })\n return result\n }\n\n function readPixels (options) {\n if (!options || !('framebuffer' in options)) {\n return readPixelsImpl(options)\n } else {\n return readPixelsFBO(options)\n }\n }\n\n return readPixels\n}\n\nfunction slice (x) {\n return Array.prototype.slice.call(x)\n}\n\nfunction join (x) {\n return slice(x).join('')\n}\n\nfunction createEnvironment () {\n // Unique variable id counter\n var varCounter = 0\n\n // Linked values are passed from this scope into the generated code block\n // Calling link() passes a value into the generated scope and returns\n // the variable name which it is bound to\n var linkedNames = []\n var linkedValues = []\n function link (value) {\n for (var i = 0; i < linkedValues.length; ++i) {\n if (linkedValues[i] === value) {\n return linkedNames[i]\n }\n }\n\n var name = 'g' + (varCounter++)\n linkedNames.push(name)\n linkedValues.push(value)\n return name\n }\n\n // create a code block\n function block () {\n var code = []\n function push () {\n code.push.apply(code, slice(arguments))\n }\n\n var vars = []\n function def () {\n var name = 'v' + (varCounter++)\n vars.push(name)\n\n if (arguments.length > 0) {\n code.push(name, '=')\n code.push.apply(code, slice(arguments))\n code.push(';')\n }\n\n return name\n }\n\n return extend(push, {\n def: def,\n toString: function () {\n return join([\n (vars.length > 0 ? 'var ' + vars.join(',') + ';' : ''),\n join(code)\n ])\n }\n })\n }\n\n function scope () {\n var entry = block()\n var exit = block()\n\n var entryToString = entry.toString\n var exitToString = exit.toString\n\n function save (object, prop) {\n exit(object, prop, '=', entry.def(object, prop), ';')\n }\n\n return extend(function () {\n entry.apply(entry, slice(arguments))\n }, {\n def: entry.def,\n entry: entry,\n exit: exit,\n save: save,\n set: function (object, prop, value) {\n save(object, prop)\n entry(object, prop, '=', value, ';')\n },\n toString: function () {\n return entryToString() + exitToString()\n }\n })\n }\n\n function conditional () {\n var pred = join(arguments)\n var thenBlock = scope()\n var elseBlock = scope()\n\n var thenToString = thenBlock.toString\n var elseToString = elseBlock.toString\n\n return extend(thenBlock, {\n then: function () {\n thenBlock.apply(thenBlock, slice(arguments))\n return this\n },\n else: function () {\n elseBlock.apply(elseBlock, slice(arguments))\n return this\n },\n toString: function () {\n var elseClause = elseToString()\n if (elseClause) {\n elseClause = 'else{' + elseClause + '}'\n }\n return join([\n 'if(', pred, '){',\n thenToString(),\n '}', elseClause\n ])\n }\n })\n }\n\n // procedure list\n var globalBlock = block()\n var procedures = {}\n function proc (name, count) {\n var args = []\n function arg () {\n var name = 'a' + args.length\n args.push(name)\n return name\n }\n\n count = count || 0\n for (var i = 0; i < count; ++i) {\n arg()\n }\n\n var body = scope()\n var bodyToString = body.toString\n\n var result = procedures[name] = extend(body, {\n arg: arg,\n toString: function () {\n return join([\n 'function(', args.join(), '){',\n bodyToString(),\n '}'\n ])\n }\n })\n\n return result\n }\n\n function compile () {\n var code = ['\"use strict\";',\n globalBlock,\n 'return {']\n Object.keys(procedures).forEach(function (name) {\n code.push('\"', name, '\":', procedures[name].toString(), ',')\n })\n code.push('}')\n var src = join(code)\n .replace(/;/g, ';\\n')\n .replace(/}/g, '}\\n')\n .replace(/{/g, '{\\n')\n var proc = Function.apply(null, linkedNames.concat(src))\n return proc.apply(null, linkedValues)\n }\n\n return {\n global: globalBlock,\n link: link,\n block: block,\n proc: proc,\n scope: scope,\n cond: conditional,\n compile: compile\n }\n}\n\n// \"cute\" names for vector components\nvar CUTE_COMPONENTS = 'xyzw'.split('')\n\nvar GL_UNSIGNED_BYTE$8 = 5121\n\nvar ATTRIB_STATE_POINTER = 1\nvar ATTRIB_STATE_CONSTANT = 2\n\nvar DYN_FUNC$1 = 0\nvar DYN_PROP$1 = 1\nvar DYN_CONTEXT$1 = 2\nvar DYN_STATE$1 = 3\nvar DYN_THUNK = 4\nvar DYN_CONSTANT$1 = 5\nvar DYN_ARRAY$1 = 6\n\nvar S_DITHER = 'dither'\nvar S_BLEND_ENABLE = 'blend.enable'\nvar S_BLEND_COLOR = 'blend.color'\nvar S_BLEND_EQUATION = 'blend.equation'\nvar S_BLEND_FUNC = 'blend.func'\nvar S_DEPTH_ENABLE = 'depth.enable'\nvar S_DEPTH_FUNC = 'depth.func'\nvar S_DEPTH_RANGE = 'depth.range'\nvar S_DEPTH_MASK = 'depth.mask'\nvar S_COLOR_MASK = 'colorMask'\nvar S_CULL_ENABLE = 'cull.enable'\nvar S_CULL_FACE = 'cull.face'\nvar S_FRONT_FACE = 'frontFace'\nvar S_LINE_WIDTH = 'lineWidth'\nvar S_POLYGON_OFFSET_ENABLE = 'polygonOffset.enable'\nvar S_POLYGON_OFFSET_OFFSET = 'polygonOffset.offset'\nvar S_SAMPLE_ALPHA = 'sample.alpha'\nvar S_SAMPLE_ENABLE = 'sample.enable'\nvar S_SAMPLE_COVERAGE = 'sample.coverage'\nvar S_STENCIL_ENABLE = 'stencil.enable'\nvar S_STENCIL_MASK = 'stencil.mask'\nvar S_STENCIL_FUNC = 'stencil.func'\nvar S_STENCIL_OPFRONT = 'stencil.opFront'\nvar S_STENCIL_OPBACK = 'stencil.opBack'\nvar S_SCISSOR_ENABLE = 'scissor.enable'\nvar S_SCISSOR_BOX = 'scissor.box'\nvar S_VIEWPORT = 'viewport'\n\nvar S_PROFILE = 'profile'\n\nvar S_FRAMEBUFFER = 'framebuffer'\nvar S_VERT = 'vert'\nvar S_FRAG = 'frag'\nvar S_ELEMENTS = 'elements'\nvar S_PRIMITIVE = 'primitive'\nvar S_COUNT = 'count'\nvar S_OFFSET = 'offset'\nvar S_INSTANCES = 'instances'\nvar S_VAO = 'vao'\n\nvar SUFFIX_WIDTH = 'Width'\nvar SUFFIX_HEIGHT = 'Height'\n\nvar S_FRAMEBUFFER_WIDTH = S_FRAMEBUFFER + SUFFIX_WIDTH\nvar S_FRAMEBUFFER_HEIGHT = S_FRAMEBUFFER + SUFFIX_HEIGHT\nvar S_VIEWPORT_WIDTH = S_VIEWPORT + SUFFIX_WIDTH\nvar S_VIEWPORT_HEIGHT = S_VIEWPORT + SUFFIX_HEIGHT\nvar S_DRAWINGBUFFER = 'drawingBuffer'\nvar S_DRAWINGBUFFER_WIDTH = S_DRAWINGBUFFER + SUFFIX_WIDTH\nvar S_DRAWINGBUFFER_HEIGHT = S_DRAWINGBUFFER + SUFFIX_HEIGHT\n\nvar NESTED_OPTIONS = [\n S_BLEND_FUNC,\n S_BLEND_EQUATION,\n S_STENCIL_FUNC,\n S_STENCIL_OPFRONT,\n S_STENCIL_OPBACK,\n S_SAMPLE_COVERAGE,\n S_VIEWPORT,\n S_SCISSOR_BOX,\n S_POLYGON_OFFSET_OFFSET\n]\n\nvar GL_ARRAY_BUFFER$2 = 34962\nvar GL_ELEMENT_ARRAY_BUFFER$1 = 34963\n\nvar GL_FRAGMENT_SHADER$1 = 35632\nvar GL_VERTEX_SHADER$1 = 35633\n\nvar GL_TEXTURE_2D$3 = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP$2 = 0x8513\n\nvar GL_CULL_FACE = 0x0B44\nvar GL_BLEND = 0x0BE2\nvar GL_DITHER = 0x0BD0\nvar GL_STENCIL_TEST = 0x0B90\nvar GL_DEPTH_TEST = 0x0B71\nvar GL_SCISSOR_TEST = 0x0C11\nvar GL_POLYGON_OFFSET_FILL = 0x8037\nvar GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nvar GL_SAMPLE_COVERAGE = 0x80A0\n\nvar GL_FLOAT$8 = 5126\nvar GL_FLOAT_VEC2 = 35664\nvar GL_FLOAT_VEC3 = 35665\nvar GL_FLOAT_VEC4 = 35666\nvar GL_INT$3 = 5124\nvar GL_INT_VEC2 = 35667\nvar GL_INT_VEC3 = 35668\nvar GL_INT_VEC4 = 35669\nvar GL_BOOL = 35670\nvar GL_BOOL_VEC2 = 35671\nvar GL_BOOL_VEC3 = 35672\nvar GL_BOOL_VEC4 = 35673\nvar GL_FLOAT_MAT2 = 35674\nvar GL_FLOAT_MAT3 = 35675\nvar GL_FLOAT_MAT4 = 35676\nvar GL_SAMPLER_2D = 35678\nvar GL_SAMPLER_CUBE = 35680\n\nvar GL_TRIANGLES$1 = 4\n\nvar GL_FRONT = 1028\nvar GL_BACK = 1029\nvar GL_CW = 0x0900\nvar GL_CCW = 0x0901\nvar GL_MIN_EXT = 0x8007\nvar GL_MAX_EXT = 0x8008\nvar GL_ALWAYS = 519\nvar GL_KEEP = 7680\nvar GL_ZERO = 0\nvar GL_ONE = 1\nvar GL_FUNC_ADD = 0x8006\nvar GL_LESS = 513\n\nvar GL_FRAMEBUFFER$2 = 0x8D40\nvar GL_COLOR_ATTACHMENT0$2 = 0x8CE0\n\nvar blendFuncs = {\n '0': 0,\n '1': 1,\n 'zero': 0,\n 'one': 1,\n 'src color': 768,\n 'one minus src color': 769,\n 'src alpha': 770,\n 'one minus src alpha': 771,\n 'dst color': 774,\n 'one minus dst color': 775,\n 'dst alpha': 772,\n 'one minus dst alpha': 773,\n 'constant color': 32769,\n 'one minus constant color': 32770,\n 'constant alpha': 32771,\n 'one minus constant alpha': 32772,\n 'src alpha saturate': 776\n}\n\n// There are invalid values for srcRGB and dstRGB. See:\n// https://www.khronos.org/registry/webgl/specs/1.0/#6.13\n// https://github.com/KhronosGroup/WebGL/blob/0d3201f5f7ec3c0060bc1f04077461541f1987b9/conformance-suites/1.0.3/conformance/misc/webgl-specific.html#L56\nvar invalidBlendCombinations = [\n 'constant color, constant alpha',\n 'one minus constant color, constant alpha',\n 'constant color, one minus constant alpha',\n 'one minus constant color, one minus constant alpha',\n 'constant alpha, constant color',\n 'constant alpha, one minus constant color',\n 'one minus constant alpha, constant color',\n 'one minus constant alpha, one minus constant color'\n]\n\nvar compareFuncs = {\n 'never': 512,\n 'less': 513,\n '<': 513,\n 'equal': 514,\n '=': 514,\n '==': 514,\n '===': 514,\n 'lequal': 515,\n '<=': 515,\n 'greater': 516,\n '>': 516,\n 'notequal': 517,\n '!=': 517,\n '!==': 517,\n 'gequal': 518,\n '>=': 518,\n 'always': 519\n}\n\nvar stencilOps = {\n '0': 0,\n 'zero': 0,\n 'keep': 7680,\n 'replace': 7681,\n 'increment': 7682,\n 'decrement': 7683,\n 'increment wrap': 34055,\n 'decrement wrap': 34056,\n 'invert': 5386\n}\n\nvar shaderType = {\n 'frag': GL_FRAGMENT_SHADER$1,\n 'vert': GL_VERTEX_SHADER$1\n}\n\nvar orientationType = {\n 'cw': GL_CW,\n 'ccw': GL_CCW\n}\n\nfunction isBufferArgs (x) {\n return Array.isArray(x) ||\n isTypedArray(x) ||\n isNDArrayLike(x)\n}\n\n// Make sure viewport is processed first\nfunction sortState (state) {\n return state.sort(function (a, b) {\n if (a === S_VIEWPORT) {\n return -1\n } else if (b === S_VIEWPORT) {\n return 1\n }\n return (a < b) ? -1 : 1\n })\n}\n\nfunction Declaration (thisDep, contextDep, propDep, append) {\n this.thisDep = thisDep\n this.contextDep = contextDep\n this.propDep = propDep\n this.append = append\n}\n\nfunction isStatic (decl) {\n return decl && !(decl.thisDep || decl.contextDep || decl.propDep)\n}\n\nfunction createStaticDecl (append) {\n return new Declaration(false, false, false, append)\n}\n\nfunction createDynamicDecl (dyn, append) {\n var type = dyn.type\n if (type === DYN_FUNC$1) {\n var numArgs = dyn.data.length\n return new Declaration(\n true,\n numArgs >= 1,\n numArgs >= 2,\n append)\n } else if (type === DYN_THUNK) {\n var data = dyn.data\n return new Declaration(\n data.thisDep,\n data.contextDep,\n data.propDep,\n append)\n } else if (type === DYN_CONSTANT$1) {\n return new Declaration(\n false,\n false,\n false,\n append)\n } else if (type === DYN_ARRAY$1) {\n var thisDep = false\n var contextDep = false\n var propDep = false\n for (var i = 0; i < dyn.data.length; ++i) {\n var subDyn = dyn.data[i]\n if (subDyn.type === DYN_PROP$1) {\n propDep = true\n } else if (subDyn.type === DYN_CONTEXT$1) {\n contextDep = true\n } else if (subDyn.type === DYN_STATE$1) {\n thisDep = true\n } else if (subDyn.type === DYN_FUNC$1) {\n thisDep = true\n var subArgs = subDyn.data\n if (subArgs >= 1) {\n contextDep = true\n }\n if (subArgs >= 2) {\n propDep = true\n }\n } else if (subDyn.type === DYN_THUNK) {\n thisDep = thisDep || subDyn.data.thisDep\n contextDep = contextDep || subDyn.data.contextDep\n propDep = propDep || subDyn.data.propDep\n }\n }\n return new Declaration(\n thisDep,\n contextDep,\n propDep,\n append)\n } else {\n return new Declaration(\n type === DYN_STATE$1,\n type === DYN_CONTEXT$1,\n type === DYN_PROP$1,\n append)\n }\n}\n\nvar SCOPE_DECL = new Declaration(false, false, false, function () {})\n\nfunction reglCore (\n gl,\n stringStore,\n extensions,\n limits,\n bufferState,\n elementState,\n textureState,\n framebufferState,\n uniformState,\n attributeState,\n shaderState,\n drawState,\n contextState,\n timer,\n config) {\n var AttributeRecord = attributeState.Record\n\n var blendEquations = {\n 'add': 32774,\n 'subtract': 32778,\n 'reverse subtract': 32779\n }\n if (extensions.ext_blend_minmax) {\n blendEquations.min = GL_MIN_EXT\n blendEquations.max = GL_MAX_EXT\n }\n\n var extInstancing = extensions.angle_instanced_arrays\n var extDrawBuffers = extensions.webgl_draw_buffers\n\n // ===================================================\n // ===================================================\n // WEBGL STATE\n // ===================================================\n // ===================================================\n var currentState = {\n dirty: true,\n profile: config.profile\n }\n var nextState = {}\n var GL_STATE_NAMES = []\n var GL_FLAGS = {}\n var GL_VARIABLES = {}\n\n function propName (name) {\n return name.replace('.', '_')\n }\n\n function stateFlag (sname, cap, init) {\n var name = propName(sname)\n GL_STATE_NAMES.push(sname)\n nextState[name] = currentState[name] = !!init\n GL_FLAGS[name] = cap\n }\n\n function stateVariable (sname, func, init) {\n var name = propName(sname)\n GL_STATE_NAMES.push(sname)\n if (Array.isArray(init)) {\n currentState[name] = init.slice()\n nextState[name] = init.slice()\n } else {\n currentState[name] = nextState[name] = init\n }\n GL_VARIABLES[name] = func\n }\n\n // Dithering\n stateFlag(S_DITHER, GL_DITHER)\n\n // Blending\n stateFlag(S_BLEND_ENABLE, GL_BLEND)\n stateVariable(S_BLEND_COLOR, 'blendColor', [0, 0, 0, 0])\n stateVariable(S_BLEND_EQUATION, 'blendEquationSeparate',\n [GL_FUNC_ADD, GL_FUNC_ADD])\n stateVariable(S_BLEND_FUNC, 'blendFuncSeparate',\n [GL_ONE, GL_ZERO, GL_ONE, GL_ZERO])\n\n // Depth\n stateFlag(S_DEPTH_ENABLE, GL_DEPTH_TEST, true)\n stateVariable(S_DEPTH_FUNC, 'depthFunc', GL_LESS)\n stateVariable(S_DEPTH_RANGE, 'depthRange', [0, 1])\n stateVariable(S_DEPTH_MASK, 'depthMask', true)\n\n // Color mask\n stateVariable(S_COLOR_MASK, S_COLOR_MASK, [true, true, true, true])\n\n // Face culling\n stateFlag(S_CULL_ENABLE, GL_CULL_FACE)\n stateVariable(S_CULL_FACE, 'cullFace', GL_BACK)\n\n // Front face orientation\n stateVariable(S_FRONT_FACE, S_FRONT_FACE, GL_CCW)\n\n // Line width\n stateVariable(S_LINE_WIDTH, S_LINE_WIDTH, 1)\n\n // Polygon offset\n stateFlag(S_POLYGON_OFFSET_ENABLE, GL_POLYGON_OFFSET_FILL)\n stateVariable(S_POLYGON_OFFSET_OFFSET, 'polygonOffset', [0, 0])\n\n // Sample coverage\n stateFlag(S_SAMPLE_ALPHA, GL_SAMPLE_ALPHA_TO_COVERAGE)\n stateFlag(S_SAMPLE_ENABLE, GL_SAMPLE_COVERAGE)\n stateVariable(S_SAMPLE_COVERAGE, 'sampleCoverage', [1, false])\n\n // Stencil\n stateFlag(S_STENCIL_ENABLE, GL_STENCIL_TEST)\n stateVariable(S_STENCIL_MASK, 'stencilMask', -1)\n stateVariable(S_STENCIL_FUNC, 'stencilFunc', [GL_ALWAYS, 0, -1])\n stateVariable(S_STENCIL_OPFRONT, 'stencilOpSeparate',\n [GL_FRONT, GL_KEEP, GL_KEEP, GL_KEEP])\n stateVariable(S_STENCIL_OPBACK, 'stencilOpSeparate',\n [GL_BACK, GL_KEEP, GL_KEEP, GL_KEEP])\n\n // Scissor\n stateFlag(S_SCISSOR_ENABLE, GL_SCISSOR_TEST)\n stateVariable(S_SCISSOR_BOX, 'scissor',\n [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight])\n\n // Viewport\n stateVariable(S_VIEWPORT, S_VIEWPORT,\n [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight])\n\n // ===================================================\n // ===================================================\n // ENVIRONMENT\n // ===================================================\n // ===================================================\n var sharedState = {\n gl: gl,\n context: contextState,\n strings: stringStore,\n next: nextState,\n current: currentState,\n draw: drawState,\n elements: elementState,\n buffer: bufferState,\n shader: shaderState,\n attributes: attributeState.state,\n vao: attributeState,\n uniforms: uniformState,\n framebuffer: framebufferState,\n extensions: extensions,\n\n timer: timer,\n isBufferArgs: isBufferArgs\n }\n\n var sharedConstants = {\n primTypes: primTypes,\n compareFuncs: compareFuncs,\n blendFuncs: blendFuncs,\n blendEquations: blendEquations,\n stencilOps: stencilOps,\n glTypes: glTypes,\n orientationType: orientationType\n }\n\n check$1.optional(function () {\n sharedState.isArrayLike = isArrayLike\n })\n\n if (extDrawBuffers) {\n sharedConstants.backBuffer = [GL_BACK]\n sharedConstants.drawBuffer = loop(limits.maxDrawbuffers, function (i) {\n if (i === 0) {\n return [0]\n }\n return loop(i, function (j) {\n return GL_COLOR_ATTACHMENT0$2 + j\n })\n })\n }\n\n var drawCallCounter = 0\n function createREGLEnvironment () {\n var env = createEnvironment()\n var link = env.link\n var global = env.global\n env.id = drawCallCounter++\n\n env.batchId = '0'\n\n // link shared state\n var SHARED = link(sharedState)\n var shared = env.shared = {\n props: 'a0'\n }\n Object.keys(sharedState).forEach(function (prop) {\n shared[prop] = global.def(SHARED, '.', prop)\n })\n\n // Inject runtime assertion stuff for debug builds\n check$1.optional(function () {\n env.CHECK = link(check$1)\n env.commandStr = check$1.guessCommand()\n env.command = link(env.commandStr)\n env.assert = function (block, pred, message) {\n block(\n 'if(!(', pred, '))',\n this.CHECK, '.commandRaise(', link(message), ',', this.command, ');')\n }\n\n sharedConstants.invalidBlendCombinations = invalidBlendCombinations\n })\n\n // Copy GL state variables over\n var nextVars = env.next = {}\n var currentVars = env.current = {}\n Object.keys(GL_VARIABLES).forEach(function (variable) {\n if (Array.isArray(currentState[variable])) {\n nextVars[variable] = global.def(shared.next, '.', variable)\n currentVars[variable] = global.def(shared.current, '.', variable)\n }\n })\n\n // Initialize shared constants\n var constants = env.constants = {}\n Object.keys(sharedConstants).forEach(function (name) {\n constants[name] = global.def(JSON.stringify(sharedConstants[name]))\n })\n\n // Helper function for calling a block\n env.invoke = function (block, x) {\n switch (x.type) {\n case DYN_FUNC$1:\n var argList = [\n 'this',\n shared.context,\n shared.props,\n env.batchId\n ]\n return block.def(\n link(x.data), '.call(',\n argList.slice(0, Math.max(x.data.length + 1, 4)),\n ')')\n case DYN_PROP$1:\n return block.def(shared.props, x.data)\n case DYN_CONTEXT$1:\n return block.def(shared.context, x.data)\n case DYN_STATE$1:\n return block.def('this', x.data)\n case DYN_THUNK:\n x.data.append(env, block)\n return x.data.ref\n case DYN_CONSTANT$1:\n return x.data.toString()\n case DYN_ARRAY$1:\n return x.data.map(function (y) {\n return env.invoke(block, y)\n })\n }\n }\n\n env.attribCache = {}\n\n var scopeAttribs = {}\n env.scopeAttrib = function (name) {\n var id = stringStore.id(name)\n if (id in scopeAttribs) {\n return scopeAttribs[id]\n }\n var binding = attributeState.scope[id]\n if (!binding) {\n binding = attributeState.scope[id] = new AttributeRecord()\n }\n var result = scopeAttribs[id] = link(binding)\n return result\n }\n\n return env\n }\n\n // ===================================================\n // ===================================================\n // PARSING\n // ===================================================\n // ===================================================\n function parseProfile (options) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n var profileEnable\n if (S_PROFILE in staticOptions) {\n var value = !!staticOptions[S_PROFILE]\n profileEnable = createStaticDecl(function (env, scope) {\n return value\n })\n profileEnable.enable = value\n } else if (S_PROFILE in dynamicOptions) {\n var dyn = dynamicOptions[S_PROFILE]\n profileEnable = createDynamicDecl(dyn, function (env, scope) {\n return env.invoke(scope, dyn)\n })\n }\n\n return profileEnable\n }\n\n function parseFramebuffer (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n if (S_FRAMEBUFFER in staticOptions) {\n var framebuffer = staticOptions[S_FRAMEBUFFER]\n if (framebuffer) {\n framebuffer = framebufferState.getFramebuffer(framebuffer)\n check$1.command(framebuffer, 'invalid framebuffer object')\n return createStaticDecl(function (env, block) {\n var FRAMEBUFFER = env.link(framebuffer)\n var shared = env.shared\n block.set(\n shared.framebuffer,\n '.next',\n FRAMEBUFFER)\n var CONTEXT = shared.context\n block.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_WIDTH,\n FRAMEBUFFER + '.width')\n block.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_HEIGHT,\n FRAMEBUFFER + '.height')\n return FRAMEBUFFER\n })\n } else {\n return createStaticDecl(function (env, scope) {\n var shared = env.shared\n scope.set(\n shared.framebuffer,\n '.next',\n 'null')\n var CONTEXT = shared.context\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_WIDTH,\n CONTEXT + '.' + S_DRAWINGBUFFER_WIDTH)\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_HEIGHT,\n CONTEXT + '.' + S_DRAWINGBUFFER_HEIGHT)\n return 'null'\n })\n }\n } else if (S_FRAMEBUFFER in dynamicOptions) {\n var dyn = dynamicOptions[S_FRAMEBUFFER]\n return createDynamicDecl(dyn, function (env, scope) {\n var FRAMEBUFFER_FUNC = env.invoke(scope, dyn)\n var shared = env.shared\n var FRAMEBUFFER_STATE = shared.framebuffer\n var FRAMEBUFFER = scope.def(\n FRAMEBUFFER_STATE, '.getFramebuffer(', FRAMEBUFFER_FUNC, ')')\n\n check$1.optional(function () {\n env.assert(scope,\n '!' + FRAMEBUFFER_FUNC + '||' + FRAMEBUFFER,\n 'invalid framebuffer object')\n })\n\n scope.set(\n FRAMEBUFFER_STATE,\n '.next',\n FRAMEBUFFER)\n var CONTEXT = shared.context\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_WIDTH,\n FRAMEBUFFER + '?' + FRAMEBUFFER + '.width:' +\n CONTEXT + '.' + S_DRAWINGBUFFER_WIDTH)\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_HEIGHT,\n FRAMEBUFFER +\n '?' + FRAMEBUFFER + '.height:' +\n CONTEXT + '.' + S_DRAWINGBUFFER_HEIGHT)\n return FRAMEBUFFER\n })\n } else {\n return null\n }\n }\n\n function parseViewportScissor (options, framebuffer, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n function parseBox (param) {\n if (param in staticOptions) {\n var box = staticOptions[param]\n check$1.commandType(box, 'object', 'invalid ' + param, env.commandStr)\n\n var isStatic = true\n var x = box.x | 0\n var y = box.y | 0\n var w, h\n if ('width' in box) {\n w = box.width | 0\n check$1.command(w >= 0, 'invalid ' + param, env.commandStr)\n } else {\n isStatic = false\n }\n if ('height' in box) {\n h = box.height | 0\n check$1.command(h >= 0, 'invalid ' + param, env.commandStr)\n } else {\n isStatic = false\n }\n\n return new Declaration(\n !isStatic && framebuffer && framebuffer.thisDep,\n !isStatic && framebuffer && framebuffer.contextDep,\n !isStatic && framebuffer && framebuffer.propDep,\n function (env, scope) {\n var CONTEXT = env.shared.context\n var BOX_W = w\n if (!('width' in box)) {\n BOX_W = scope.def(CONTEXT, '.', S_FRAMEBUFFER_WIDTH, '-', x)\n }\n var BOX_H = h\n if (!('height' in box)) {\n BOX_H = scope.def(CONTEXT, '.', S_FRAMEBUFFER_HEIGHT, '-', y)\n }\n return [x, y, BOX_W, BOX_H]\n })\n } else if (param in dynamicOptions) {\n var dynBox = dynamicOptions[param]\n var result = createDynamicDecl(dynBox, function (env, scope) {\n var BOX = env.invoke(scope, dynBox)\n\n check$1.optional(function () {\n env.assert(scope,\n BOX + '&&typeof ' + BOX + '===\"object\"',\n 'invalid ' + param)\n })\n\n var CONTEXT = env.shared.context\n var BOX_X = scope.def(BOX, '.x|0')\n var BOX_Y = scope.def(BOX, '.y|0')\n var BOX_W = scope.def(\n '\"width\" in ', BOX, '?', BOX, '.width|0:',\n '(', CONTEXT, '.', S_FRAMEBUFFER_WIDTH, '-', BOX_X, ')')\n var BOX_H = scope.def(\n '\"height\" in ', BOX, '?', BOX, '.height|0:',\n '(', CONTEXT, '.', S_FRAMEBUFFER_HEIGHT, '-', BOX_Y, ')')\n\n check$1.optional(function () {\n env.assert(scope,\n BOX_W + '>=0&&' +\n BOX_H + '>=0',\n 'invalid ' + param)\n })\n\n return [BOX_X, BOX_Y, BOX_W, BOX_H]\n })\n if (framebuffer) {\n result.thisDep = result.thisDep || framebuffer.thisDep\n result.contextDep = result.contextDep || framebuffer.contextDep\n result.propDep = result.propDep || framebuffer.propDep\n }\n return result\n } else if (framebuffer) {\n return new Declaration(\n framebuffer.thisDep,\n framebuffer.contextDep,\n framebuffer.propDep,\n function (env, scope) {\n var CONTEXT = env.shared.context\n return [\n 0, 0,\n scope.def(CONTEXT, '.', S_FRAMEBUFFER_WIDTH),\n scope.def(CONTEXT, '.', S_FRAMEBUFFER_HEIGHT)]\n })\n } else {\n return null\n }\n }\n\n var viewport = parseBox(S_VIEWPORT)\n\n if (viewport) {\n var prevViewport = viewport\n viewport = new Declaration(\n viewport.thisDep,\n viewport.contextDep,\n viewport.propDep,\n function (env, scope) {\n var VIEWPORT = prevViewport.append(env, scope)\n var CONTEXT = env.shared.context\n scope.set(\n CONTEXT,\n '.' + S_VIEWPORT_WIDTH,\n VIEWPORT[2])\n scope.set(\n CONTEXT,\n '.' + S_VIEWPORT_HEIGHT,\n VIEWPORT[3])\n return VIEWPORT\n })\n }\n\n return {\n viewport: viewport,\n scissor_box: parseBox(S_SCISSOR_BOX)\n }\n }\n\n function parseAttribLocations (options, attributes) {\n var staticOptions = options.static\n var staticProgram =\n typeof staticOptions[S_FRAG] === 'string' &&\n typeof staticOptions[S_VERT] === 'string'\n if (staticProgram) {\n if (Object.keys(attributes.dynamic).length > 0) {\n return null\n }\n var staticAttributes = attributes.static\n var sAttributes = Object.keys(staticAttributes)\n if (sAttributes.length > 0 && typeof staticAttributes[sAttributes[0]] === 'number') {\n var bindings = []\n for (var i = 0; i < sAttributes.length; ++i) {\n check$1(typeof staticAttributes[sAttributes[i]] === 'number', 'must specify all vertex attribute locations when using vaos')\n bindings.push([staticAttributes[sAttributes[i]] | 0, sAttributes[i]])\n }\n return bindings\n }\n }\n return null\n }\n\n function parseProgram (options, env, attribLocations) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n function parseShader (name) {\n if (name in staticOptions) {\n var id = stringStore.id(staticOptions[name])\n check$1.optional(function () {\n shaderState.shader(shaderType[name], id, check$1.guessCommand())\n })\n var result = createStaticDecl(function () {\n return id\n })\n result.id = id\n return result\n } else if (name in dynamicOptions) {\n var dyn = dynamicOptions[name]\n return createDynamicDecl(dyn, function (env, scope) {\n var str = env.invoke(scope, dyn)\n var id = scope.def(env.shared.strings, '.id(', str, ')')\n check$1.optional(function () {\n scope(\n env.shared.shader, '.shader(',\n shaderType[name], ',',\n id, ',',\n env.command, ');')\n })\n return id\n })\n }\n return null\n }\n\n var frag = parseShader(S_FRAG)\n var vert = parseShader(S_VERT)\n\n var program = null\n var progVar\n if (isStatic(frag) && isStatic(vert)) {\n program = shaderState.program(vert.id, frag.id, null, attribLocations)\n progVar = createStaticDecl(function (env, scope) {\n return env.link(program)\n })\n } else {\n progVar = new Declaration(\n (frag && frag.thisDep) || (vert && vert.thisDep),\n (frag && frag.contextDep) || (vert && vert.contextDep),\n (frag && frag.propDep) || (vert && vert.propDep),\n function (env, scope) {\n var SHADER_STATE = env.shared.shader\n var fragId\n if (frag) {\n fragId = frag.append(env, scope)\n } else {\n fragId = scope.def(SHADER_STATE, '.', S_FRAG)\n }\n var vertId\n if (vert) {\n vertId = vert.append(env, scope)\n } else {\n vertId = scope.def(SHADER_STATE, '.', S_VERT)\n }\n var progDef = SHADER_STATE + '.program(' + vertId + ',' + fragId\n check$1.optional(function () {\n progDef += ',' + env.command\n })\n return scope.def(progDef + ')')\n })\n }\n\n return {\n frag: frag,\n vert: vert,\n progVar: progVar,\n program: program\n }\n }\n\n function parseDraw (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n function parseElements () {\n if (S_ELEMENTS in staticOptions) {\n var elements = staticOptions[S_ELEMENTS]\n if (isBufferArgs(elements)) {\n elements = elementState.getElements(elementState.create(elements, true))\n } else if (elements) {\n elements = elementState.getElements(elements)\n check$1.command(elements, 'invalid elements', env.commandStr)\n }\n var result = createStaticDecl(function (env, scope) {\n if (elements) {\n var result = env.link(elements)\n env.ELEMENTS = result\n return result\n }\n env.ELEMENTS = null\n return null\n })\n result.value = elements\n return result\n } else if (S_ELEMENTS in dynamicOptions) {\n var dyn = dynamicOptions[S_ELEMENTS]\n return createDynamicDecl(dyn, function (env, scope) {\n var shared = env.shared\n\n var IS_BUFFER_ARGS = shared.isBufferArgs\n var ELEMENT_STATE = shared.elements\n\n var elementDefn = env.invoke(scope, dyn)\n var elements = scope.def('null')\n var elementStream = scope.def(IS_BUFFER_ARGS, '(', elementDefn, ')')\n\n var ifte = env.cond(elementStream)\n .then(elements, '=', ELEMENT_STATE, '.createStream(', elementDefn, ');')\n .else(elements, '=', ELEMENT_STATE, '.getElements(', elementDefn, ');')\n\n check$1.optional(function () {\n env.assert(ifte.else,\n '!' + elementDefn + '||' + elements,\n 'invalid elements')\n })\n\n scope.entry(ifte)\n scope.exit(\n env.cond(elementStream)\n .then(ELEMENT_STATE, '.destroyStream(', elements, ');'))\n\n env.ELEMENTS = elements\n\n return elements\n })\n }\n\n return null\n }\n\n var elements = parseElements()\n\n function parsePrimitive () {\n if (S_PRIMITIVE in staticOptions) {\n var primitive = staticOptions[S_PRIMITIVE]\n check$1.commandParameter(primitive, primTypes, 'invalid primitve', env.commandStr)\n return createStaticDecl(function (env, scope) {\n return primTypes[primitive]\n })\n } else if (S_PRIMITIVE in dynamicOptions) {\n var dynPrimitive = dynamicOptions[S_PRIMITIVE]\n return createDynamicDecl(dynPrimitive, function (env, scope) {\n var PRIM_TYPES = env.constants.primTypes\n var prim = env.invoke(scope, dynPrimitive)\n check$1.optional(function () {\n env.assert(scope,\n prim + ' in ' + PRIM_TYPES,\n 'invalid primitive, must be one of ' + Object.keys(primTypes))\n })\n return scope.def(PRIM_TYPES, '[', prim, ']')\n })\n } else if (elements) {\n if (isStatic(elements)) {\n if (elements.value) {\n return createStaticDecl(function (env, scope) {\n return scope.def(env.ELEMENTS, '.primType')\n })\n } else {\n return createStaticDecl(function () {\n return GL_TRIANGLES$1\n })\n }\n } else {\n return new Declaration(\n elements.thisDep,\n elements.contextDep,\n elements.propDep,\n function (env, scope) {\n var elements = env.ELEMENTS\n return scope.def(elements, '?', elements, '.primType:', GL_TRIANGLES$1)\n })\n }\n }\n return null\n }\n\n function parseParam (param, isOffset) {\n if (param in staticOptions) {\n var value = staticOptions[param] | 0\n check$1.command(!isOffset || value >= 0, 'invalid ' + param, env.commandStr)\n return createStaticDecl(function (env, scope) {\n if (isOffset) {\n env.OFFSET = value\n }\n return value\n })\n } else if (param in dynamicOptions) {\n var dynValue = dynamicOptions[param]\n return createDynamicDecl(dynValue, function (env, scope) {\n var result = env.invoke(scope, dynValue)\n if (isOffset) {\n env.OFFSET = result\n check$1.optional(function () {\n env.assert(scope,\n result + '>=0',\n 'invalid ' + param)\n })\n }\n return result\n })\n } else if (isOffset && elements) {\n return createStaticDecl(function (env, scope) {\n env.OFFSET = '0'\n return 0\n })\n }\n return null\n }\n\n var OFFSET = parseParam(S_OFFSET, true)\n\n function parseVertCount () {\n if (S_COUNT in staticOptions) {\n var count = staticOptions[S_COUNT] | 0\n check$1.command(\n typeof count === 'number' && count >= 0, 'invalid vertex count', env.commandStr)\n return createStaticDecl(function () {\n return count\n })\n } else if (S_COUNT in dynamicOptions) {\n var dynCount = dynamicOptions[S_COUNT]\n return createDynamicDecl(dynCount, function (env, scope) {\n var result = env.invoke(scope, dynCount)\n check$1.optional(function () {\n env.assert(scope,\n 'typeof ' + result + '===\"number\"&&' +\n result + '>=0&&' +\n result + '===(' + result + '|0)',\n 'invalid vertex count')\n })\n return result\n })\n } else if (elements) {\n if (isStatic(elements)) {\n if (elements) {\n if (OFFSET) {\n return new Declaration(\n OFFSET.thisDep,\n OFFSET.contextDep,\n OFFSET.propDep,\n function (env, scope) {\n var result = scope.def(\n env.ELEMENTS, '.vertCount-', env.OFFSET)\n\n check$1.optional(function () {\n env.assert(scope,\n result + '>=0',\n 'invalid vertex offset/element buffer too small')\n })\n\n return result\n })\n } else {\n return createStaticDecl(function (env, scope) {\n return scope.def(env.ELEMENTS, '.vertCount')\n })\n }\n } else {\n var result = createStaticDecl(function () {\n return -1\n })\n check$1.optional(function () {\n result.MISSING = true\n })\n return result\n }\n } else {\n var variable = new Declaration(\n elements.thisDep || OFFSET.thisDep,\n elements.contextDep || OFFSET.contextDep,\n elements.propDep || OFFSET.propDep,\n function (env, scope) {\n var elements = env.ELEMENTS\n if (env.OFFSET) {\n return scope.def(elements, '?', elements, '.vertCount-',\n env.OFFSET, ':-1')\n }\n return scope.def(elements, '?', elements, '.vertCount:-1')\n })\n check$1.optional(function () {\n variable.DYNAMIC = true\n })\n return variable\n }\n }\n return null\n }\n\n return {\n elements: elements,\n primitive: parsePrimitive(),\n count: parseVertCount(),\n instances: parseParam(S_INSTANCES, false),\n offset: OFFSET\n }\n }\n\n function parseGLState (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n var STATE = {}\n\n GL_STATE_NAMES.forEach(function (prop) {\n var param = propName(prop)\n\n function parseParam (parseStatic, parseDynamic) {\n if (prop in staticOptions) {\n var value = parseStatic(staticOptions[prop])\n STATE[param] = createStaticDecl(function () {\n return value\n })\n } else if (prop in dynamicOptions) {\n var dyn = dynamicOptions[prop]\n STATE[param] = createDynamicDecl(dyn, function (env, scope) {\n return parseDynamic(env, scope, env.invoke(scope, dyn))\n })\n }\n }\n\n switch (prop) {\n case S_CULL_ENABLE:\n case S_BLEND_ENABLE:\n case S_DITHER:\n case S_STENCIL_ENABLE:\n case S_DEPTH_ENABLE:\n case S_SCISSOR_ENABLE:\n case S_POLYGON_OFFSET_ENABLE:\n case S_SAMPLE_ALPHA:\n case S_SAMPLE_ENABLE:\n case S_DEPTH_MASK:\n return parseParam(\n function (value) {\n check$1.commandType(value, 'boolean', prop, env.commandStr)\n return value\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n 'typeof ' + value + '===\"boolean\"',\n 'invalid flag ' + prop, env.commandStr)\n })\n return value\n })\n\n case S_DEPTH_FUNC:\n return parseParam(\n function (value) {\n check$1.commandParameter(value, compareFuncs, 'invalid ' + prop, env.commandStr)\n return compareFuncs[value]\n },\n function (env, scope, value) {\n var COMPARE_FUNCS = env.constants.compareFuncs\n check$1.optional(function () {\n env.assert(scope,\n value + ' in ' + COMPARE_FUNCS,\n 'invalid ' + prop + ', must be one of ' + Object.keys(compareFuncs))\n })\n return scope.def(COMPARE_FUNCS, '[', value, ']')\n })\n\n case S_DEPTH_RANGE:\n return parseParam(\n function (value) {\n check$1.command(\n isArrayLike(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number' &&\n value[0] <= value[1],\n 'depth range is 2d array',\n env.commandStr)\n return value\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n env.shared.isArrayLike + '(' + value + ')&&' +\n value + '.length===2&&' +\n 'typeof ' + value + '[0]===\"number\"&&' +\n 'typeof ' + value + '[1]===\"number\"&&' +\n value + '[0]<=' + value + '[1]',\n 'depth range must be a 2d array')\n })\n\n var Z_NEAR = scope.def('+', value, '[0]')\n var Z_FAR = scope.def('+', value, '[1]')\n return [Z_NEAR, Z_FAR]\n })\n\n case S_BLEND_FUNC:\n return parseParam(\n function (value) {\n check$1.commandType(value, 'object', 'blend.func', env.commandStr)\n var srcRGB = ('srcRGB' in value ? value.srcRGB : value.src)\n var srcAlpha = ('srcAlpha' in value ? value.srcAlpha : value.src)\n var dstRGB = ('dstRGB' in value ? value.dstRGB : value.dst)\n var dstAlpha = ('dstAlpha' in value ? value.dstAlpha : value.dst)\n check$1.commandParameter(srcRGB, blendFuncs, param + '.srcRGB', env.commandStr)\n check$1.commandParameter(srcAlpha, blendFuncs, param + '.srcAlpha', env.commandStr)\n check$1.commandParameter(dstRGB, blendFuncs, param + '.dstRGB', env.commandStr)\n check$1.commandParameter(dstAlpha, blendFuncs, param + '.dstAlpha', env.commandStr)\n\n check$1.command(\n (invalidBlendCombinations.indexOf(srcRGB + ', ' + dstRGB) === -1),\n 'unallowed blending combination (srcRGB, dstRGB) = (' + srcRGB + ', ' + dstRGB + ')', env.commandStr)\n\n return [\n blendFuncs[srcRGB],\n blendFuncs[dstRGB],\n blendFuncs[srcAlpha],\n blendFuncs[dstAlpha]\n ]\n },\n function (env, scope, value) {\n var BLEND_FUNCS = env.constants.blendFuncs\n\n check$1.optional(function () {\n env.assert(scope,\n value + '&&typeof ' + value + '===\"object\"',\n 'invalid blend func, must be an object')\n })\n\n function read (prefix, suffix) {\n var func = scope.def(\n '\"', prefix, suffix, '\" in ', value,\n '?', value, '.', prefix, suffix,\n ':', value, '.', prefix)\n\n check$1.optional(function () {\n env.assert(scope,\n func + ' in ' + BLEND_FUNCS,\n 'invalid ' + prop + '.' + prefix + suffix + ', must be one of ' + Object.keys(blendFuncs))\n })\n\n return func\n }\n\n var srcRGB = read('src', 'RGB')\n var dstRGB = read('dst', 'RGB')\n\n check$1.optional(function () {\n var INVALID_BLEND_COMBINATIONS = env.constants.invalidBlendCombinations\n\n env.assert(scope,\n INVALID_BLEND_COMBINATIONS +\n '.indexOf(' + srcRGB + '+\", \"+' + dstRGB + ') === -1 ',\n 'unallowed blending combination for (srcRGB, dstRGB)'\n )\n })\n\n var SRC_RGB = scope.def(BLEND_FUNCS, '[', srcRGB, ']')\n var SRC_ALPHA = scope.def(BLEND_FUNCS, '[', read('src', 'Alpha'), ']')\n var DST_RGB = scope.def(BLEND_FUNCS, '[', dstRGB, ']')\n var DST_ALPHA = scope.def(BLEND_FUNCS, '[', read('dst', 'Alpha'), ']')\n\n return [SRC_RGB, DST_RGB, SRC_ALPHA, DST_ALPHA]\n })\n\n case S_BLEND_EQUATION:\n return parseParam(\n function (value) {\n if (typeof value === 'string') {\n check$1.commandParameter(value, blendEquations, 'invalid ' + prop, env.commandStr)\n return [\n blendEquations[value],\n blendEquations[value]\n ]\n } else if (typeof value === 'object') {\n check$1.commandParameter(\n value.rgb, blendEquations, prop + '.rgb', env.commandStr)\n check$1.commandParameter(\n value.alpha, blendEquations, prop + '.alpha', env.commandStr)\n return [\n blendEquations[value.rgb],\n blendEquations[value.alpha]\n ]\n } else {\n check$1.commandRaise('invalid blend.equation', env.commandStr)\n }\n },\n function (env, scope, value) {\n var BLEND_EQUATIONS = env.constants.blendEquations\n\n var RGB = scope.def()\n var ALPHA = scope.def()\n\n var ifte = env.cond('typeof ', value, '===\"string\"')\n\n check$1.optional(function () {\n function checkProp (block, name, value) {\n env.assert(block,\n value + ' in ' + BLEND_EQUATIONS,\n 'invalid ' + name + ', must be one of ' + Object.keys(blendEquations))\n }\n checkProp(ifte.then, prop, value)\n\n env.assert(ifte.else,\n value + '&&typeof ' + value + '===\"object\"',\n 'invalid ' + prop)\n checkProp(ifte.else, prop + '.rgb', value + '.rgb')\n checkProp(ifte.else, prop + '.alpha', value + '.alpha')\n })\n\n ifte.then(\n RGB, '=', ALPHA, '=', BLEND_EQUATIONS, '[', value, '];')\n ifte.else(\n RGB, '=', BLEND_EQUATIONS, '[', value, '.rgb];',\n ALPHA, '=', BLEND_EQUATIONS, '[', value, '.alpha];')\n\n scope(ifte)\n\n return [RGB, ALPHA]\n })\n\n case S_BLEND_COLOR:\n return parseParam(\n function (value) {\n check$1.command(\n isArrayLike(value) &&\n value.length === 4,\n 'blend.color must be a 4d array', env.commandStr)\n return loop(4, function (i) {\n return +value[i]\n })\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n env.shared.isArrayLike + '(' + value + ')&&' +\n value + '.length===4',\n 'blend.color must be a 4d array')\n })\n return loop(4, function (i) {\n return scope.def('+', value, '[', i, ']')\n })\n })\n\n case S_STENCIL_MASK:\n return parseParam(\n function (value) {\n check$1.commandType(value, 'number', param, env.commandStr)\n return value | 0\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n 'typeof ' + value + '===\"number\"',\n 'invalid stencil.mask')\n })\n return scope.def(value, '|0')\n })\n\n case S_STENCIL_FUNC:\n return parseParam(\n function (value) {\n check$1.commandType(value, 'object', param, env.commandStr)\n var cmp = value.cmp || 'keep'\n var ref = value.ref || 0\n var mask = 'mask' in value ? value.mask : -1\n check$1.commandParameter(cmp, compareFuncs, prop + '.cmp', env.commandStr)\n check$1.commandType(ref, 'number', prop + '.ref', env.commandStr)\n check$1.commandType(mask, 'number', prop + '.mask', env.commandStr)\n return [\n compareFuncs[cmp],\n ref,\n mask\n ]\n },\n function (env, scope, value) {\n var COMPARE_FUNCS = env.constants.compareFuncs\n check$1.optional(function () {\n function assert () {\n env.assert(scope,\n Array.prototype.join.call(arguments, ''),\n 'invalid stencil.func')\n }\n assert(value + '&&typeof ', value, '===\"object\"')\n assert('!(\"cmp\" in ', value, ')||(',\n value, '.cmp in ', COMPARE_FUNCS, ')')\n })\n var cmp = scope.def(\n '\"cmp\" in ', value,\n '?', COMPARE_FUNCS, '[', value, '.cmp]',\n ':', GL_KEEP)\n var ref = scope.def(value, '.ref|0')\n var mask = scope.def(\n '\"mask\" in ', value,\n '?', value, '.mask|0:-1')\n return [cmp, ref, mask]\n })\n\n case S_STENCIL_OPFRONT:\n case S_STENCIL_OPBACK:\n return parseParam(\n function (value) {\n check$1.commandType(value, 'object', param, env.commandStr)\n var fail = value.fail || 'keep'\n var zfail = value.zfail || 'keep'\n var zpass = value.zpass || 'keep'\n check$1.commandParameter(fail, stencilOps, prop + '.fail', env.commandStr)\n check$1.commandParameter(zfail, stencilOps, prop + '.zfail', env.commandStr)\n check$1.commandParameter(zpass, stencilOps, prop + '.zpass', env.commandStr)\n return [\n prop === S_STENCIL_OPBACK ? GL_BACK : GL_FRONT,\n stencilOps[fail],\n stencilOps[zfail],\n stencilOps[zpass]\n ]\n },\n function (env, scope, value) {\n var STENCIL_OPS = env.constants.stencilOps\n\n check$1.optional(function () {\n env.assert(scope,\n value + '&&typeof ' + value + '===\"object\"',\n 'invalid ' + prop)\n })\n\n function read (name) {\n check$1.optional(function () {\n env.assert(scope,\n '!(\"' + name + '\" in ' + value + ')||' +\n '(' + value + '.' + name + ' in ' + STENCIL_OPS + ')',\n 'invalid ' + prop + '.' + name + ', must be one of ' + Object.keys(stencilOps))\n })\n\n return scope.def(\n '\"', name, '\" in ', value,\n '?', STENCIL_OPS, '[', value, '.', name, ']:',\n GL_KEEP)\n }\n\n return [\n prop === S_STENCIL_OPBACK ? GL_BACK : GL_FRONT,\n read('fail'),\n read('zfail'),\n read('zpass')\n ]\n })\n\n case S_POLYGON_OFFSET_OFFSET:\n return parseParam(\n function (value) {\n check$1.commandType(value, 'object', param, env.commandStr)\n var factor = value.factor | 0\n var units = value.units | 0\n check$1.commandType(factor, 'number', param + '.factor', env.commandStr)\n check$1.commandType(units, 'number', param + '.units', env.commandStr)\n return [factor, units]\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n value + '&&typeof ' + value + '===\"object\"',\n 'invalid ' + prop)\n })\n\n var FACTOR = scope.def(value, '.factor|0')\n var UNITS = scope.def(value, '.units|0')\n\n return [FACTOR, UNITS]\n })\n\n case S_CULL_FACE:\n return parseParam(\n function (value) {\n var face = 0\n if (value === 'front') {\n face = GL_FRONT\n } else if (value === 'back') {\n face = GL_BACK\n }\n check$1.command(!!face, param, env.commandStr)\n return face\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n value + '===\"front\"||' +\n value + '===\"back\"',\n 'invalid cull.face')\n })\n return scope.def(value, '===\"front\"?', GL_FRONT, ':', GL_BACK)\n })\n\n case S_LINE_WIDTH:\n return parseParam(\n function (value) {\n check$1.command(\n typeof value === 'number' &&\n value >= limits.lineWidthDims[0] &&\n value <= limits.lineWidthDims[1],\n 'invalid line width, must be a positive number between ' +\n limits.lineWidthDims[0] + ' and ' + limits.lineWidthDims[1], env.commandStr)\n return value\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n 'typeof ' + value + '===\"number\"&&' +\n value + '>=' + limits.lineWidthDims[0] + '&&' +\n value + '<=' + limits.lineWidthDims[1],\n 'invalid line width')\n })\n\n return value\n })\n\n case S_FRONT_FACE:\n return parseParam(\n function (value) {\n check$1.commandParameter(value, orientationType, param, env.commandStr)\n return orientationType[value]\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n value + '===\"cw\"||' +\n value + '===\"ccw\"',\n 'invalid frontFace, must be one of cw,ccw')\n })\n return scope.def(value + '===\"cw\"?' + GL_CW + ':' + GL_CCW)\n })\n\n case S_COLOR_MASK:\n return parseParam(\n function (value) {\n check$1.command(\n isArrayLike(value) && value.length === 4,\n 'color.mask must be length 4 array', env.commandStr)\n return value.map(function (v) { return !!v })\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n env.shared.isArrayLike + '(' + value + ')&&' +\n value + '.length===4',\n 'invalid color.mask')\n })\n return loop(4, function (i) {\n return '!!' + value + '[' + i + ']'\n })\n })\n\n case S_SAMPLE_COVERAGE:\n return parseParam(\n function (value) {\n check$1.command(typeof value === 'object' && value, param, env.commandStr)\n var sampleValue = 'value' in value ? value.value : 1\n var sampleInvert = !!value.invert\n check$1.command(\n typeof sampleValue === 'number' &&\n sampleValue >= 0 && sampleValue <= 1,\n 'sample.coverage.value must be a number between 0 and 1', env.commandStr)\n return [sampleValue, sampleInvert]\n },\n function (env, scope, value) {\n check$1.optional(function () {\n env.assert(scope,\n value + '&&typeof ' + value + '===\"object\"',\n 'invalid sample.coverage')\n })\n var VALUE = scope.def(\n '\"value\" in ', value, '?+', value, '.value:1')\n var INVERT = scope.def('!!', value, '.invert')\n return [VALUE, INVERT]\n })\n }\n })\n\n return STATE\n }\n\n function parseUniforms (uniforms, env) {\n var staticUniforms = uniforms.static\n var dynamicUniforms = uniforms.dynamic\n\n var UNIFORMS = {}\n\n Object.keys(staticUniforms).forEach(function (name) {\n var value = staticUniforms[name]\n var result\n if (typeof value === 'number' ||\n typeof value === 'boolean') {\n result = createStaticDecl(function () {\n return value\n })\n } else if (typeof value === 'function') {\n var reglType = value._reglType\n if (reglType === 'texture2d' ||\n reglType === 'textureCube') {\n result = createStaticDecl(function (env) {\n return env.link(value)\n })\n } else if (reglType === 'framebuffer' ||\n reglType === 'framebufferCube') {\n check$1.command(value.color.length > 0,\n 'missing color attachment for framebuffer sent to uniform \"' + name + '\"', env.commandStr)\n result = createStaticDecl(function (env) {\n return env.link(value.color[0])\n })\n } else {\n check$1.commandRaise('invalid data for uniform \"' + name + '\"', env.commandStr)\n }\n } else if (isArrayLike(value)) {\n result = createStaticDecl(function (env) {\n var ITEM = env.global.def('[',\n loop(value.length, function (i) {\n check$1.command(\n typeof value[i] === 'number' ||\n typeof value[i] === 'boolean',\n 'invalid uniform ' + name, env.commandStr)\n return value[i]\n }), ']')\n return ITEM\n })\n } else {\n check$1.commandRaise('invalid or missing data for uniform \"' + name + '\"', env.commandStr)\n }\n result.value = value\n UNIFORMS[name] = result\n })\n\n Object.keys(dynamicUniforms).forEach(function (key) {\n var dyn = dynamicUniforms[key]\n UNIFORMS[key] = createDynamicDecl(dyn, function (env, scope) {\n return env.invoke(scope, dyn)\n })\n })\n\n return UNIFORMS\n }\n\n function parseAttributes (attributes, env) {\n var staticAttributes = attributes.static\n var dynamicAttributes = attributes.dynamic\n\n var attributeDefs = {}\n\n Object.keys(staticAttributes).forEach(function (attribute) {\n var value = staticAttributes[attribute]\n var id = stringStore.id(attribute)\n\n var record = new AttributeRecord()\n if (isBufferArgs(value)) {\n record.state = ATTRIB_STATE_POINTER\n record.buffer = bufferState.getBuffer(\n bufferState.create(value, GL_ARRAY_BUFFER$2, false, true))\n record.type = 0\n } else {\n var buffer = bufferState.getBuffer(value)\n if (buffer) {\n record.state = ATTRIB_STATE_POINTER\n record.buffer = buffer\n record.type = 0\n } else {\n check$1.command(typeof value === 'object' && value,\n 'invalid data for attribute ' + attribute, env.commandStr)\n if ('constant' in value) {\n var constant = value.constant\n record.buffer = 'null'\n record.state = ATTRIB_STATE_CONSTANT\n if (typeof constant === 'number') {\n record.x = constant\n } else {\n check$1.command(\n isArrayLike(constant) &&\n constant.length > 0 &&\n constant.length <= 4,\n 'invalid constant for attribute ' + attribute, env.commandStr)\n CUTE_COMPONENTS.forEach(function (c, i) {\n if (i < constant.length) {\n record[c] = constant[i]\n }\n })\n }\n } else {\n if (isBufferArgs(value.buffer)) {\n buffer = bufferState.getBuffer(\n bufferState.create(value.buffer, GL_ARRAY_BUFFER$2, false, true))\n } else {\n buffer = bufferState.getBuffer(value.buffer)\n }\n check$1.command(!!buffer, 'missing buffer for attribute \"' + attribute + '\"', env.commandStr)\n\n var offset = value.offset | 0\n check$1.command(offset >= 0,\n 'invalid offset for attribute \"' + attribute + '\"', env.commandStr)\n\n var stride = value.stride | 0\n check$1.command(stride >= 0 && stride < 256,\n 'invalid stride for attribute \"' + attribute + '\", must be integer betweeen [0, 255]', env.commandStr)\n\n var size = value.size | 0\n check$1.command(!('size' in value) || (size > 0 && size <= 4),\n 'invalid size for attribute \"' + attribute + '\", must be 1,2,3,4', env.commandStr)\n\n var normalized = !!value.normalized\n\n var type = 0\n if ('type' in value) {\n check$1.commandParameter(\n value.type, glTypes,\n 'invalid type for attribute ' + attribute, env.commandStr)\n type = glTypes[value.type]\n }\n\n var divisor = value.divisor | 0\n if ('divisor' in value) {\n check$1.command(divisor === 0 || extInstancing,\n 'cannot specify divisor for attribute \"' + attribute + '\", instancing not supported', env.commandStr)\n check$1.command(divisor >= 0,\n 'invalid divisor for attribute \"' + attribute + '\"', env.commandStr)\n }\n\n check$1.optional(function () {\n var command = env.commandStr\n\n var VALID_KEYS = [\n 'buffer',\n 'offset',\n 'divisor',\n 'normalized',\n 'type',\n 'size',\n 'stride'\n ]\n\n Object.keys(value).forEach(function (prop) {\n check$1.command(\n VALID_KEYS.indexOf(prop) >= 0,\n 'unknown parameter \"' + prop + '\" for attribute pointer \"' + attribute + '\" (valid parameters are ' + VALID_KEYS + ')',\n command)\n })\n })\n\n record.buffer = buffer\n record.state = ATTRIB_STATE_POINTER\n record.size = size\n record.normalized = normalized\n record.type = type || buffer.dtype\n record.offset = offset\n record.stride = stride\n record.divisor = divisor\n }\n }\n }\n\n attributeDefs[attribute] = createStaticDecl(function (env, scope) {\n var cache = env.attribCache\n if (id in cache) {\n return cache[id]\n }\n var result = {\n isStream: false\n }\n Object.keys(record).forEach(function (key) {\n result[key] = record[key]\n })\n if (record.buffer) {\n result.buffer = env.link(record.buffer)\n result.type = result.type || (result.buffer + '.dtype')\n }\n cache[id] = result\n return result\n })\n })\n\n Object.keys(dynamicAttributes).forEach(function (attribute) {\n var dyn = dynamicAttributes[attribute]\n\n function appendAttributeCode (env, block) {\n var VALUE = env.invoke(block, dyn)\n\n var shared = env.shared\n var constants = env.constants\n\n var IS_BUFFER_ARGS = shared.isBufferArgs\n var BUFFER_STATE = shared.buffer\n\n // Perform validation on attribute\n check$1.optional(function () {\n env.assert(block,\n VALUE + '&&(typeof ' + VALUE + '===\"object\"||typeof ' +\n VALUE + '===\"function\")&&(' +\n IS_BUFFER_ARGS + '(' + VALUE + ')||' +\n BUFFER_STATE + '.getBuffer(' + VALUE + ')||' +\n BUFFER_STATE + '.getBuffer(' + VALUE + '.buffer)||' +\n IS_BUFFER_ARGS + '(' + VALUE + '.buffer)||' +\n '(\"constant\" in ' + VALUE +\n '&&(typeof ' + VALUE + '.constant===\"number\"||' +\n shared.isArrayLike + '(' + VALUE + '.constant))))',\n 'invalid dynamic attribute \"' + attribute + '\"')\n })\n\n // allocate names for result\n var result = {\n isStream: block.def(false)\n }\n var defaultRecord = new AttributeRecord()\n defaultRecord.state = ATTRIB_STATE_POINTER\n Object.keys(defaultRecord).forEach(function (key) {\n result[key] = block.def('' + defaultRecord[key])\n })\n\n var BUFFER = result.buffer\n var TYPE = result.type\n block(\n 'if(', IS_BUFFER_ARGS, '(', VALUE, ')){',\n result.isStream, '=true;',\n BUFFER, '=', BUFFER_STATE, '.createStream(', GL_ARRAY_BUFFER$2, ',', VALUE, ');',\n TYPE, '=', BUFFER, '.dtype;',\n '}else{',\n BUFFER, '=', BUFFER_STATE, '.getBuffer(', VALUE, ');',\n 'if(', BUFFER, '){',\n TYPE, '=', BUFFER, '.dtype;',\n '}else if(\"constant\" in ', VALUE, '){',\n result.state, '=', ATTRIB_STATE_CONSTANT, ';',\n 'if(typeof ' + VALUE + '.constant === \"number\"){',\n result[CUTE_COMPONENTS[0]], '=', VALUE, '.constant;',\n CUTE_COMPONENTS.slice(1).map(function (n) {\n return result[n]\n }).join('='), '=0;',\n '}else{',\n CUTE_COMPONENTS.map(function (name, i) {\n return (\n result[name] + '=' + VALUE + '.constant.length>' + i +\n '?' + VALUE + '.constant[' + i + ']:0;'\n )\n }).join(''),\n '}}else{',\n 'if(', IS_BUFFER_ARGS, '(', VALUE, '.buffer)){',\n BUFFER, '=', BUFFER_STATE, '.createStream(', GL_ARRAY_BUFFER$2, ',', VALUE, '.buffer);',\n '}else{',\n BUFFER, '=', BUFFER_STATE, '.getBuffer(', VALUE, '.buffer);',\n '}',\n TYPE, '=\"type\" in ', VALUE, '?',\n constants.glTypes, '[', VALUE, '.type]:', BUFFER, '.dtype;',\n result.normalized, '=!!', VALUE, '.normalized;')\n function emitReadRecord (name) {\n block(result[name], '=', VALUE, '.', name, '|0;')\n }\n emitReadRecord('size')\n emitReadRecord('offset')\n emitReadRecord('stride')\n emitReadRecord('divisor')\n\n block('}}')\n\n block.exit(\n 'if(', result.isStream, '){',\n BUFFER_STATE, '.destroyStream(', BUFFER, ');',\n '}')\n\n return result\n }\n\n attributeDefs[attribute] = createDynamicDecl(dyn, appendAttributeCode)\n })\n\n return attributeDefs\n }\n\n function parseVAO (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n if (S_VAO in staticOptions) {\n var vao = staticOptions[S_VAO]\n if (vao !== null && attributeState.getVAO(vao) === null) {\n vao = attributeState.createVAO(vao)\n }\n return createStaticDecl(function (env) {\n return env.link(attributeState.getVAO(vao))\n })\n } else if (S_VAO in dynamicOptions) {\n var dyn = dynamicOptions[S_VAO]\n return createDynamicDecl(dyn, function (env, scope) {\n var vaoRef = env.invoke(scope, dyn)\n return scope.def(env.shared.vao + '.getVAO(' + vaoRef + ')')\n })\n }\n return null\n }\n\n function parseContext (context) {\n var staticContext = context.static\n var dynamicContext = context.dynamic\n var result = {}\n\n Object.keys(staticContext).forEach(function (name) {\n var value = staticContext[name]\n result[name] = createStaticDecl(function (env, scope) {\n if (typeof value === 'number' || typeof value === 'boolean') {\n return '' + value\n } else {\n return env.link(value)\n }\n })\n })\n\n Object.keys(dynamicContext).forEach(function (name) {\n var dyn = dynamicContext[name]\n result[name] = createDynamicDecl(dyn, function (env, scope) {\n return env.invoke(scope, dyn)\n })\n })\n\n return result\n }\n\n function parseArguments (options, attributes, uniforms, context, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n check$1.optional(function () {\n var KEY_NAMES = [\n S_FRAMEBUFFER,\n S_VERT,\n S_FRAG,\n S_ELEMENTS,\n S_PRIMITIVE,\n S_OFFSET,\n S_COUNT,\n S_INSTANCES,\n S_PROFILE,\n S_VAO\n ].concat(GL_STATE_NAMES)\n\n function checkKeys (dict) {\n Object.keys(dict).forEach(function (key) {\n check$1.command(\n KEY_NAMES.indexOf(key) >= 0,\n 'unknown parameter \"' + key + '\"',\n env.commandStr)\n })\n }\n\n checkKeys(staticOptions)\n checkKeys(dynamicOptions)\n })\n\n var attribLocations = parseAttribLocations(options, attributes)\n\n var framebuffer = parseFramebuffer(options, env)\n var viewportAndScissor = parseViewportScissor(options, framebuffer, env)\n var draw = parseDraw(options, env)\n var state = parseGLState(options, env)\n var shader = parseProgram(options, env, attribLocations)\n\n function copyBox (name) {\n var defn = viewportAndScissor[name]\n if (defn) {\n state[name] = defn\n }\n }\n copyBox(S_VIEWPORT)\n copyBox(propName(S_SCISSOR_BOX))\n\n var dirty = Object.keys(state).length > 0\n\n var result = {\n framebuffer: framebuffer,\n draw: draw,\n shader: shader,\n state: state,\n dirty: dirty,\n scopeVAO: null,\n drawVAO: null,\n useVAO: false,\n attributes: {}\n }\n\n result.profile = parseProfile(options, env)\n result.uniforms = parseUniforms(uniforms, env)\n result.drawVAO = result.scopeVAO = parseVAO(options, env)\n // special case: check if we can statically allocate a vertex array object for this program\n if (!result.drawVAO && shader.program && !attribLocations && extensions.angle_instanced_arrays) {\n var useVAO = true\n var staticBindings = shader.program.attributes.map(function (attr) {\n var binding = attributes.static[attr]\n useVAO = useVAO && !!binding\n return binding\n })\n if (useVAO && staticBindings.length > 0) {\n var vao = attributeState.getVAO(attributeState.createVAO(staticBindings))\n result.drawVAO = new Declaration(null, null, null, function (env, scope) {\n return env.link(vao)\n })\n result.useVAO = true\n }\n }\n if (attribLocations) {\n result.useVAO = true\n } else {\n result.attributes = parseAttributes(attributes, env)\n }\n result.context = parseContext(context, env)\n return result\n }\n\n // ===================================================\n // ===================================================\n // COMMON UPDATE FUNCTIONS\n // ===================================================\n // ===================================================\n function emitContext (env, scope, context) {\n var shared = env.shared\n var CONTEXT = shared.context\n\n var contextEnter = env.scope()\n\n Object.keys(context).forEach(function (name) {\n scope.save(CONTEXT, '.' + name)\n var defn = context[name]\n var value = defn.append(env, scope)\n if (Array.isArray(value)) {\n contextEnter(CONTEXT, '.', name, '=[', value.join(), '];')\n } else {\n contextEnter(CONTEXT, '.', name, '=', value, ';')\n }\n })\n\n scope(contextEnter)\n }\n\n // ===================================================\n // ===================================================\n // COMMON DRAWING FUNCTIONS\n // ===================================================\n // ===================================================\n function emitPollFramebuffer (env, scope, framebuffer, skipCheck) {\n var shared = env.shared\n\n var GL = shared.gl\n var FRAMEBUFFER_STATE = shared.framebuffer\n var EXT_DRAW_BUFFERS\n if (extDrawBuffers) {\n EXT_DRAW_BUFFERS = scope.def(shared.extensions, '.webgl_draw_buffers')\n }\n\n var constants = env.constants\n\n var DRAW_BUFFERS = constants.drawBuffer\n var BACK_BUFFER = constants.backBuffer\n\n var NEXT\n if (framebuffer) {\n NEXT = framebuffer.append(env, scope)\n } else {\n NEXT = scope.def(FRAMEBUFFER_STATE, '.next')\n }\n\n if (!skipCheck) {\n scope('if(', NEXT, '!==', FRAMEBUFFER_STATE, '.cur){')\n }\n scope(\n 'if(', NEXT, '){',\n GL, '.bindFramebuffer(', GL_FRAMEBUFFER$2, ',', NEXT, '.framebuffer);')\n if (extDrawBuffers) {\n scope(EXT_DRAW_BUFFERS, '.drawBuffersWEBGL(',\n DRAW_BUFFERS, '[', NEXT, '.colorAttachments.length]);')\n }\n scope('}else{',\n GL, '.bindFramebuffer(', GL_FRAMEBUFFER$2, ',null);')\n if (extDrawBuffers) {\n scope(EXT_DRAW_BUFFERS, '.drawBuffersWEBGL(', BACK_BUFFER, ');')\n }\n scope(\n '}',\n FRAMEBUFFER_STATE, '.cur=', NEXT, ';')\n if (!skipCheck) {\n scope('}')\n }\n }\n\n function emitPollState (env, scope, args) {\n var shared = env.shared\n\n var GL = shared.gl\n\n var CURRENT_VARS = env.current\n var NEXT_VARS = env.next\n var CURRENT_STATE = shared.current\n var NEXT_STATE = shared.next\n\n var block = env.cond(CURRENT_STATE, '.dirty')\n\n GL_STATE_NAMES.forEach(function (prop) {\n var param = propName(prop)\n if (param in args.state) {\n return\n }\n\n var NEXT, CURRENT\n if (param in NEXT_VARS) {\n NEXT = NEXT_VARS[param]\n CURRENT = CURRENT_VARS[param]\n var parts = loop(currentState[param].length, function (i) {\n return block.def(NEXT, '[', i, ']')\n })\n block(env.cond(parts.map(function (p, i) {\n return p + '!==' + CURRENT + '[' + i + ']'\n }).join('||'))\n .then(\n GL, '.', GL_VARIABLES[param], '(', parts, ');',\n parts.map(function (p, i) {\n return CURRENT + '[' + i + ']=' + p\n }).join(';'), ';'))\n } else {\n NEXT = block.def(NEXT_STATE, '.', param)\n var ifte = env.cond(NEXT, '!==', CURRENT_STATE, '.', param)\n block(ifte)\n if (param in GL_FLAGS) {\n ifte(\n env.cond(NEXT)\n .then(GL, '.enable(', GL_FLAGS[param], ');')\n .else(GL, '.disable(', GL_FLAGS[param], ');'),\n CURRENT_STATE, '.', param, '=', NEXT, ';')\n } else {\n ifte(\n GL, '.', GL_VARIABLES[param], '(', NEXT, ');',\n CURRENT_STATE, '.', param, '=', NEXT, ';')\n }\n }\n })\n if (Object.keys(args.state).length === 0) {\n block(CURRENT_STATE, '.dirty=false;')\n }\n scope(block)\n }\n\n function emitSetOptions (env, scope, options, filter) {\n var shared = env.shared\n var CURRENT_VARS = env.current\n var CURRENT_STATE = shared.current\n var GL = shared.gl\n sortState(Object.keys(options)).forEach(function (param) {\n var defn = options[param]\n if (filter && !filter(defn)) {\n return\n }\n var variable = defn.append(env, scope)\n if (GL_FLAGS[param]) {\n var flag = GL_FLAGS[param]\n if (isStatic(defn)) {\n if (variable) {\n scope(GL, '.enable(', flag, ');')\n } else {\n scope(GL, '.disable(', flag, ');')\n }\n } else {\n scope(env.cond(variable)\n .then(GL, '.enable(', flag, ');')\n .else(GL, '.disable(', flag, ');'))\n }\n scope(CURRENT_STATE, '.', param, '=', variable, ';')\n } else if (isArrayLike(variable)) {\n var CURRENT = CURRENT_VARS[param]\n scope(\n GL, '.', GL_VARIABLES[param], '(', variable, ');',\n variable.map(function (v, i) {\n return CURRENT + '[' + i + ']=' + v\n }).join(';'), ';')\n } else {\n scope(\n GL, '.', GL_VARIABLES[param], '(', variable, ');',\n CURRENT_STATE, '.', param, '=', variable, ';')\n }\n })\n }\n\n function injectExtensions (env, scope) {\n if (extInstancing) {\n env.instancing = scope.def(\n env.shared.extensions, '.angle_instanced_arrays')\n }\n }\n\n function emitProfile (env, scope, args, useScope, incrementCounter) {\n var shared = env.shared\n var STATS = env.stats\n var CURRENT_STATE = shared.current\n var TIMER = shared.timer\n var profileArg = args.profile\n\n function perfCounter () {\n if (typeof performance === 'undefined') {\n return 'Date.now()'\n } else {\n return 'performance.now()'\n }\n }\n\n var CPU_START, QUERY_COUNTER\n function emitProfileStart (block) {\n CPU_START = scope.def()\n block(CPU_START, '=', perfCounter(), ';')\n if (typeof incrementCounter === 'string') {\n block(STATS, '.count+=', incrementCounter, ';')\n } else {\n block(STATS, '.count++;')\n }\n if (timer) {\n if (useScope) {\n QUERY_COUNTER = scope.def()\n block(QUERY_COUNTER, '=', TIMER, '.getNumPendingQueries();')\n } else {\n block(TIMER, '.beginQuery(', STATS, ');')\n }\n }\n }\n\n function emitProfileEnd (block) {\n block(STATS, '.cpuTime+=', perfCounter(), '-', CPU_START, ';')\n if (timer) {\n if (useScope) {\n block(TIMER, '.pushScopeStats(',\n QUERY_COUNTER, ',',\n TIMER, '.getNumPendingQueries(),',\n STATS, ');')\n } else {\n block(TIMER, '.endQuery();')\n }\n }\n }\n\n function scopeProfile (value) {\n var prev = scope.def(CURRENT_STATE, '.profile')\n scope(CURRENT_STATE, '.profile=', value, ';')\n scope.exit(CURRENT_STATE, '.profile=', prev, ';')\n }\n\n var USE_PROFILE\n if (profileArg) {\n if (isStatic(profileArg)) {\n if (profileArg.enable) {\n emitProfileStart(scope)\n emitProfileEnd(scope.exit)\n scopeProfile('true')\n } else {\n scopeProfile('false')\n }\n return\n }\n USE_PROFILE = profileArg.append(env, scope)\n scopeProfile(USE_PROFILE)\n } else {\n USE_PROFILE = scope.def(CURRENT_STATE, '.profile')\n }\n\n var start = env.block()\n emitProfileStart(start)\n scope('if(', USE_PROFILE, '){', start, '}')\n var end = env.block()\n emitProfileEnd(end)\n scope.exit('if(', USE_PROFILE, '){', end, '}')\n }\n\n function emitAttributes (env, scope, args, attributes, filter) {\n var shared = env.shared\n\n function typeLength (x) {\n switch (x) {\n case GL_FLOAT_VEC2:\n case GL_INT_VEC2:\n case GL_BOOL_VEC2:\n return 2\n case GL_FLOAT_VEC3:\n case GL_INT_VEC3:\n case GL_BOOL_VEC3:\n return 3\n case GL_FLOAT_VEC4:\n case GL_INT_VEC4:\n case GL_BOOL_VEC4:\n return 4\n default:\n return 1\n }\n }\n\n function emitBindAttribute (ATTRIBUTE, size, record) {\n var GL = shared.gl\n\n var LOCATION = scope.def(ATTRIBUTE, '.location')\n var BINDING = scope.def(shared.attributes, '[', LOCATION, ']')\n\n var STATE = record.state\n var BUFFER = record.buffer\n var CONST_COMPONENTS = [\n record.x,\n record.y,\n record.z,\n record.w\n ]\n\n var COMMON_KEYS = [\n 'buffer',\n 'normalized',\n 'offset',\n 'stride'\n ]\n\n function emitBuffer () {\n scope(\n 'if(!', BINDING, '.buffer){',\n GL, '.enableVertexAttribArray(', LOCATION, ');}')\n\n var TYPE = record.type\n var SIZE\n if (!record.size) {\n SIZE = size\n } else {\n SIZE = scope.def(record.size, '||', size)\n }\n\n scope('if(',\n BINDING, '.type!==', TYPE, '||',\n BINDING, '.size!==', SIZE, '||',\n COMMON_KEYS.map(function (key) {\n return BINDING + '.' + key + '!==' + record[key]\n }).join('||'),\n '){',\n GL, '.bindBuffer(', GL_ARRAY_BUFFER$2, ',', BUFFER, '.buffer);',\n GL, '.vertexAttribPointer(', [\n LOCATION,\n SIZE,\n TYPE,\n record.normalized,\n record.stride,\n record.offset\n ], ');',\n BINDING, '.type=', TYPE, ';',\n BINDING, '.size=', SIZE, ';',\n COMMON_KEYS.map(function (key) {\n return BINDING + '.' + key + '=' + record[key] + ';'\n }).join(''),\n '}')\n\n if (extInstancing) {\n var DIVISOR = record.divisor\n scope(\n 'if(', BINDING, '.divisor!==', DIVISOR, '){',\n env.instancing, '.vertexAttribDivisorANGLE(', [LOCATION, DIVISOR], ');',\n BINDING, '.divisor=', DIVISOR, ';}')\n }\n }\n\n function emitConstant () {\n scope(\n 'if(', BINDING, '.buffer){',\n GL, '.disableVertexAttribArray(', LOCATION, ');',\n BINDING, '.buffer=null;',\n '}if(', CUTE_COMPONENTS.map(function (c, i) {\n return BINDING + '.' + c + '!==' + CONST_COMPONENTS[i]\n }).join('||'), '){',\n GL, '.vertexAttrib4f(', LOCATION, ',', CONST_COMPONENTS, ');',\n CUTE_COMPONENTS.map(function (c, i) {\n return BINDING + '.' + c + '=' + CONST_COMPONENTS[i] + ';'\n }).join(''),\n '}')\n }\n\n if (STATE === ATTRIB_STATE_POINTER) {\n emitBuffer()\n } else if (STATE === ATTRIB_STATE_CONSTANT) {\n emitConstant()\n } else {\n scope('if(', STATE, '===', ATTRIB_STATE_POINTER, '){')\n emitBuffer()\n scope('}else{')\n emitConstant()\n scope('}')\n }\n }\n\n attributes.forEach(function (attribute) {\n var name = attribute.name\n var arg = args.attributes[name]\n var record\n if (arg) {\n if (!filter(arg)) {\n return\n }\n record = arg.append(env, scope)\n } else {\n if (!filter(SCOPE_DECL)) {\n return\n }\n var scopeAttrib = env.scopeAttrib(name)\n check$1.optional(function () {\n env.assert(scope,\n scopeAttrib + '.state',\n 'missing attribute ' + name)\n })\n record = {}\n Object.keys(new AttributeRecord()).forEach(function (key) {\n record[key] = scope.def(scopeAttrib, '.', key)\n })\n }\n emitBindAttribute(\n env.link(attribute), typeLength(attribute.info.type), record)\n })\n }\n\n function emitUniforms (env, scope, args, uniforms, filter) {\n var shared = env.shared\n var GL = shared.gl\n\n var infix\n for (var i = 0; i < uniforms.length; ++i) {\n var uniform = uniforms[i]\n var name = uniform.name\n var type = uniform.info.type\n var arg = args.uniforms[name]\n var UNIFORM = env.link(uniform)\n var LOCATION = UNIFORM + '.location'\n\n var VALUE\n if (arg) {\n if (!filter(arg)) {\n continue\n }\n if (isStatic(arg)) {\n var value = arg.value\n check$1.command(\n value !== null && typeof value !== 'undefined',\n 'missing uniform \"' + name + '\"', env.commandStr)\n if (type === GL_SAMPLER_2D || type === GL_SAMPLER_CUBE) {\n check$1.command(\n typeof value === 'function' &&\n ((type === GL_SAMPLER_2D &&\n (value._reglType === 'texture2d' ||\n value._reglType === 'framebuffer')) ||\n (type === GL_SAMPLER_CUBE &&\n (value._reglType === 'textureCube' ||\n value._reglType === 'framebufferCube'))),\n 'invalid texture for uniform ' + name, env.commandStr)\n var TEX_VALUE = env.link(value._texture || value.color[0]._texture)\n scope(GL, '.uniform1i(', LOCATION, ',', TEX_VALUE + '.bind());')\n scope.exit(TEX_VALUE, '.unbind();')\n } else if (\n type === GL_FLOAT_MAT2 ||\n type === GL_FLOAT_MAT3 ||\n type === GL_FLOAT_MAT4) {\n check$1.optional(function () {\n check$1.command(isArrayLike(value),\n 'invalid matrix for uniform ' + name, env.commandStr)\n check$1.command(\n (type === GL_FLOAT_MAT2 && value.length === 4) ||\n (type === GL_FLOAT_MAT3 && value.length === 9) ||\n (type === GL_FLOAT_MAT4 && value.length === 16),\n 'invalid length for matrix uniform ' + name, env.commandStr)\n })\n var MAT_VALUE = env.global.def('new Float32Array([' +\n Array.prototype.slice.call(value) + '])')\n var dim = 2\n if (type === GL_FLOAT_MAT3) {\n dim = 3\n } else if (type === GL_FLOAT_MAT4) {\n dim = 4\n }\n scope(\n GL, '.uniformMatrix', dim, 'fv(',\n LOCATION, ',false,', MAT_VALUE, ');')\n } else {\n switch (type) {\n case GL_FLOAT$8:\n check$1.commandType(value, 'number', 'uniform ' + name, env.commandStr)\n infix = '1f'\n break\n case GL_FLOAT_VEC2:\n check$1.command(\n isArrayLike(value) && value.length === 2,\n 'uniform ' + name, env.commandStr)\n infix = '2f'\n break\n case GL_FLOAT_VEC3:\n check$1.command(\n isArrayLike(value) && value.length === 3,\n 'uniform ' + name, env.commandStr)\n infix = '3f'\n break\n case GL_FLOAT_VEC4:\n check$1.command(\n isArrayLike(value) && value.length === 4,\n 'uniform ' + name, env.commandStr)\n infix = '4f'\n break\n case GL_BOOL:\n check$1.commandType(value, 'boolean', 'uniform ' + name, env.commandStr)\n infix = '1i'\n break\n case GL_INT$3:\n check$1.commandType(value, 'number', 'uniform ' + name, env.commandStr)\n infix = '1i'\n break\n case GL_BOOL_VEC2:\n check$1.command(\n isArrayLike(value) && value.length === 2,\n 'uniform ' + name, env.commandStr)\n infix = '2i'\n break\n case GL_INT_VEC2:\n check$1.command(\n isArrayLike(value) && value.length === 2,\n 'uniform ' + name, env.commandStr)\n infix = '2i'\n break\n case GL_BOOL_VEC3:\n check$1.command(\n isArrayLike(value) && value.length === 3,\n 'uniform ' + name, env.commandStr)\n infix = '3i'\n break\n case GL_INT_VEC3:\n check$1.command(\n isArrayLike(value) && value.length === 3,\n 'uniform ' + name, env.commandStr)\n infix = '3i'\n break\n case GL_BOOL_VEC4:\n check$1.command(\n isArrayLike(value) && value.length === 4,\n 'uniform ' + name, env.commandStr)\n infix = '4i'\n break\n case GL_INT_VEC4:\n check$1.command(\n isArrayLike(value) && value.length === 4,\n 'uniform ' + name, env.commandStr)\n infix = '4i'\n break\n }\n scope(GL, '.uniform', infix, '(', LOCATION, ',',\n isArrayLike(value) ? Array.prototype.slice.call(value) : value,\n ');')\n }\n continue\n } else {\n VALUE = arg.append(env, scope)\n }\n } else {\n if (!filter(SCOPE_DECL)) {\n continue\n }\n VALUE = scope.def(shared.uniforms, '[', stringStore.id(name), ']')\n }\n\n if (type === GL_SAMPLER_2D) {\n check$1(!Array.isArray(VALUE), 'must specify a scalar prop for textures')\n scope(\n 'if(', VALUE, '&&', VALUE, '._reglType===\"framebuffer\"){',\n VALUE, '=', VALUE, '.color[0];',\n '}')\n } else if (type === GL_SAMPLER_CUBE) {\n check$1(!Array.isArray(VALUE), 'must specify a scalar prop for cube maps')\n scope(\n 'if(', VALUE, '&&', VALUE, '._reglType===\"framebufferCube\"){',\n VALUE, '=', VALUE, '.color[0];',\n '}')\n }\n\n // perform type validation\n check$1.optional(function () {\n function emitCheck (pred, message) {\n env.assert(scope, pred,\n 'bad data or missing for uniform \"' + name + '\". ' + message)\n }\n\n function checkType (type) {\n check$1(!Array.isArray(VALUE), 'must not specify an array type for uniform')\n emitCheck(\n 'typeof ' + VALUE + '===\"' + type + '\"',\n 'invalid type, expected ' + type)\n }\n\n function checkVector (n, type) {\n if (Array.isArray(VALUE)) {\n check$1(VALUE.length === n, 'must have length ' + n)\n } else {\n emitCheck(\n shared.isArrayLike + '(' + VALUE + ')&&' + VALUE + '.length===' + n,\n 'invalid vector, should have length ' + n, env.commandStr)\n }\n }\n\n function checkTexture (target) {\n check$1(!Array.isArray(VALUE), 'must not specify a value type')\n emitCheck(\n 'typeof ' + VALUE + '===\"function\"&&' +\n VALUE + '._reglType===\"texture' +\n (target === GL_TEXTURE_2D$3 ? '2d' : 'Cube') + '\"',\n 'invalid texture type', env.commandStr)\n }\n\n switch (type) {\n case GL_INT$3:\n checkType('number')\n break\n case GL_INT_VEC2:\n checkVector(2, 'number')\n break\n case GL_INT_VEC3:\n checkVector(3, 'number')\n break\n case GL_INT_VEC4:\n checkVector(4, 'number')\n break\n case GL_FLOAT$8:\n checkType('number')\n break\n case GL_FLOAT_VEC2:\n checkVector(2, 'number')\n break\n case GL_FLOAT_VEC3:\n checkVector(3, 'number')\n break\n case GL_FLOAT_VEC4:\n checkVector(4, 'number')\n break\n case GL_BOOL:\n checkType('boolean')\n break\n case GL_BOOL_VEC2:\n checkVector(2, 'boolean')\n break\n case GL_BOOL_VEC3:\n checkVector(3, 'boolean')\n break\n case GL_BOOL_VEC4:\n checkVector(4, 'boolean')\n break\n case GL_FLOAT_MAT2:\n checkVector(4, 'number')\n break\n case GL_FLOAT_MAT3:\n checkVector(9, 'number')\n break\n case GL_FLOAT_MAT4:\n checkVector(16, 'number')\n break\n case GL_SAMPLER_2D:\n checkTexture(GL_TEXTURE_2D$3)\n break\n case GL_SAMPLER_CUBE:\n checkTexture(GL_TEXTURE_CUBE_MAP$2)\n break\n }\n })\n\n var unroll = 1\n switch (type) {\n case GL_SAMPLER_2D:\n case GL_SAMPLER_CUBE:\n var TEX = scope.def(VALUE, '._texture')\n scope(GL, '.uniform1i(', LOCATION, ',', TEX, '.bind());')\n scope.exit(TEX, '.unbind();')\n continue\n\n case GL_INT$3:\n case GL_BOOL:\n infix = '1i'\n break\n\n case GL_INT_VEC2:\n case GL_BOOL_VEC2:\n infix = '2i'\n unroll = 2\n break\n\n case GL_INT_VEC3:\n case GL_BOOL_VEC3:\n infix = '3i'\n unroll = 3\n break\n\n case GL_INT_VEC4:\n case GL_BOOL_VEC4:\n infix = '4i'\n unroll = 4\n break\n\n case GL_FLOAT$8:\n infix = '1f'\n break\n\n case GL_FLOAT_VEC2:\n infix = '2f'\n unroll = 2\n break\n\n case GL_FLOAT_VEC3:\n infix = '3f'\n unroll = 3\n break\n\n case GL_FLOAT_VEC4:\n infix = '4f'\n unroll = 4\n break\n\n case GL_FLOAT_MAT2:\n infix = 'Matrix2fv'\n break\n\n case GL_FLOAT_MAT3:\n infix = 'Matrix3fv'\n break\n\n case GL_FLOAT_MAT4:\n infix = 'Matrix4fv'\n break\n }\n\n scope(GL, '.uniform', infix, '(', LOCATION, ',')\n if (infix.charAt(0) === 'M') {\n var matSize = Math.pow(type - GL_FLOAT_MAT2 + 2, 2)\n var STORAGE = env.global.def('new Float32Array(', matSize, ')')\n if (Array.isArray(VALUE)) {\n scope(\n 'false,(',\n loop(matSize, function (i) {\n return STORAGE + '[' + i + ']=' + VALUE[i]\n }), ',', STORAGE, ')')\n } else {\n scope(\n 'false,(Array.isArray(', VALUE, ')||', VALUE, ' instanceof Float32Array)?', VALUE, ':(',\n loop(matSize, function (i) {\n return STORAGE + '[' + i + ']=' + VALUE + '[' + i + ']'\n }), ',', STORAGE, ')')\n }\n } else if (unroll > 1) {\n scope(loop(unroll, function (i) {\n return Array.isArray(VALUE) ? VALUE[i] : VALUE + '[' + i + ']'\n }))\n } else {\n check$1(!Array.isArray(VALUE), 'uniform value must not be an array')\n scope(VALUE)\n }\n scope(');')\n }\n }\n\n function emitDraw (env, outer, inner, args) {\n var shared = env.shared\n var GL = shared.gl\n var DRAW_STATE = shared.draw\n\n var drawOptions = args.draw\n\n function emitElements () {\n var defn = drawOptions.elements\n var ELEMENTS\n var scope = outer\n if (defn) {\n if ((defn.contextDep && args.contextDynamic) || defn.propDep) {\n scope = inner\n }\n ELEMENTS = defn.append(env, scope)\n } else {\n ELEMENTS = scope.def(DRAW_STATE, '.', S_ELEMENTS)\n }\n if (ELEMENTS) {\n scope(\n 'if(' + ELEMENTS + ')' +\n GL + '.bindBuffer(' + GL_ELEMENT_ARRAY_BUFFER$1 + ',' + ELEMENTS + '.buffer.buffer);')\n }\n return ELEMENTS\n }\n\n function emitCount () {\n var defn = drawOptions.count\n var COUNT\n var scope = outer\n if (defn) {\n if ((defn.contextDep && args.contextDynamic) || defn.propDep) {\n scope = inner\n }\n COUNT = defn.append(env, scope)\n check$1.optional(function () {\n if (defn.MISSING) {\n env.assert(outer, 'false', 'missing vertex count')\n }\n if (defn.DYNAMIC) {\n env.assert(scope, COUNT + '>=0', 'missing vertex count')\n }\n })\n } else {\n COUNT = scope.def(DRAW_STATE, '.', S_COUNT)\n check$1.optional(function () {\n env.assert(scope, COUNT + '>=0', 'missing vertex count')\n })\n }\n return COUNT\n }\n\n var ELEMENTS = emitElements()\n function emitValue (name) {\n var defn = drawOptions[name]\n if (defn) {\n if ((defn.contextDep && args.contextDynamic) || defn.propDep) {\n return defn.append(env, inner)\n } else {\n return defn.append(env, outer)\n }\n } else {\n return outer.def(DRAW_STATE, '.', name)\n }\n }\n\n var PRIMITIVE = emitValue(S_PRIMITIVE)\n var OFFSET = emitValue(S_OFFSET)\n\n var COUNT = emitCount()\n if (typeof COUNT === 'number') {\n if (COUNT === 0) {\n return\n }\n } else {\n inner('if(', COUNT, '){')\n inner.exit('}')\n }\n\n var INSTANCES, EXT_INSTANCING\n if (extInstancing) {\n INSTANCES = emitValue(S_INSTANCES)\n EXT_INSTANCING = env.instancing\n }\n\n var ELEMENT_TYPE = ELEMENTS + '.type'\n\n var elementsStatic = drawOptions.elements && isStatic(drawOptions.elements)\n\n function emitInstancing () {\n function drawElements () {\n inner(EXT_INSTANCING, '.drawElementsInstancedANGLE(', [\n PRIMITIVE,\n COUNT,\n ELEMENT_TYPE,\n OFFSET + '<<((' + ELEMENT_TYPE + '-' + GL_UNSIGNED_BYTE$8 + ')>>1)',\n INSTANCES\n ], ');')\n }\n\n function drawArrays () {\n inner(EXT_INSTANCING, '.drawArraysInstancedANGLE(',\n [PRIMITIVE, OFFSET, COUNT, INSTANCES], ');')\n }\n\n if (ELEMENTS) {\n if (!elementsStatic) {\n inner('if(', ELEMENTS, '){')\n drawElements()\n inner('}else{')\n drawArrays()\n inner('}')\n } else {\n drawElements()\n }\n } else {\n drawArrays()\n }\n }\n\n function emitRegular () {\n function drawElements () {\n inner(GL + '.drawElements(' + [\n PRIMITIVE,\n COUNT,\n ELEMENT_TYPE,\n OFFSET + '<<((' + ELEMENT_TYPE + '-' + GL_UNSIGNED_BYTE$8 + ')>>1)'\n ] + ');')\n }\n\n function drawArrays () {\n inner(GL + '.drawArrays(' + [PRIMITIVE, OFFSET, COUNT] + ');')\n }\n\n if (ELEMENTS) {\n if (!elementsStatic) {\n inner('if(', ELEMENTS, '){')\n drawElements()\n inner('}else{')\n drawArrays()\n inner('}')\n } else {\n drawElements()\n }\n } else {\n drawArrays()\n }\n }\n\n if (extInstancing && (typeof INSTANCES !== 'number' || INSTANCES >= 0)) {\n if (typeof INSTANCES === 'string') {\n inner('if(', INSTANCES, '>0){')\n emitInstancing()\n inner('}else if(', INSTANCES, '<0){')\n emitRegular()\n inner('}')\n } else {\n emitInstancing()\n }\n } else {\n emitRegular()\n }\n }\n\n function createBody (emitBody, parentEnv, args, program, count) {\n var env = createREGLEnvironment()\n var scope = env.proc('body', count)\n check$1.optional(function () {\n env.commandStr = parentEnv.commandStr\n env.command = env.link(parentEnv.commandStr)\n })\n if (extInstancing) {\n env.instancing = scope.def(\n env.shared.extensions, '.angle_instanced_arrays')\n }\n emitBody(env, scope, args, program)\n return env.compile().body\n }\n\n // ===================================================\n // ===================================================\n // DRAW PROC\n // ===================================================\n // ===================================================\n function emitDrawBody (env, draw, args, program) {\n injectExtensions(env, draw)\n if (args.useVAO) {\n if (args.drawVAO) {\n draw(env.shared.vao, '.setVAO(', args.drawVAO.append(env, draw), ');')\n } else {\n draw(env.shared.vao, '.setVAO(', env.shared.vao, '.targetVAO);')\n }\n } else {\n draw(env.shared.vao, '.setVAO(null);')\n emitAttributes(env, draw, args, program.attributes, function () {\n return true\n })\n }\n emitUniforms(env, draw, args, program.uniforms, function () {\n return true\n })\n emitDraw(env, draw, draw, args)\n }\n\n function emitDrawProc (env, args) {\n var draw = env.proc('draw', 1)\n\n injectExtensions(env, draw)\n\n emitContext(env, draw, args.context)\n emitPollFramebuffer(env, draw, args.framebuffer)\n\n emitPollState(env, draw, args)\n emitSetOptions(env, draw, args.state)\n\n emitProfile(env, draw, args, false, true)\n\n var program = args.shader.progVar.append(env, draw)\n draw(env.shared.gl, '.useProgram(', program, '.program);')\n\n if (args.shader.program) {\n emitDrawBody(env, draw, args, args.shader.program)\n } else {\n draw(env.shared.vao, '.setVAO(null);')\n var drawCache = env.global.def('{}')\n var PROG_ID = draw.def(program, '.id')\n var CACHED_PROC = draw.def(drawCache, '[', PROG_ID, ']')\n draw(\n env.cond(CACHED_PROC)\n .then(CACHED_PROC, '.call(this,a0);')\n .else(\n CACHED_PROC, '=', drawCache, '[', PROG_ID, ']=',\n env.link(function (program) {\n return createBody(emitDrawBody, env, args, program, 1)\n }), '(', program, ');',\n CACHED_PROC, '.call(this,a0);'))\n }\n\n if (Object.keys(args.state).length > 0) {\n draw(env.shared.current, '.dirty=true;')\n }\n }\n\n // ===================================================\n // ===================================================\n // BATCH PROC\n // ===================================================\n // ===================================================\n\n function emitBatchDynamicShaderBody (env, scope, args, program) {\n env.batchId = 'a1'\n\n injectExtensions(env, scope)\n\n function all () {\n return true\n }\n\n emitAttributes(env, scope, args, program.attributes, all)\n emitUniforms(env, scope, args, program.uniforms, all)\n emitDraw(env, scope, scope, args)\n }\n\n function emitBatchBody (env, scope, args, program) {\n injectExtensions(env, scope)\n\n var contextDynamic = args.contextDep\n\n var BATCH_ID = scope.def()\n var PROP_LIST = 'a0'\n var NUM_PROPS = 'a1'\n var PROPS = scope.def()\n env.shared.props = PROPS\n env.batchId = BATCH_ID\n\n var outer = env.scope()\n var inner = env.scope()\n\n scope(\n outer.entry,\n 'for(', BATCH_ID, '=0;', BATCH_ID, '<', NUM_PROPS, ';++', BATCH_ID, '){',\n PROPS, '=', PROP_LIST, '[', BATCH_ID, '];',\n inner,\n '}',\n outer.exit)\n\n function isInnerDefn (defn) {\n return ((defn.contextDep && contextDynamic) || defn.propDep)\n }\n\n function isOuterDefn (defn) {\n return !isInnerDefn(defn)\n }\n\n if (args.needsContext) {\n emitContext(env, inner, args.context)\n }\n if (args.needsFramebuffer) {\n emitPollFramebuffer(env, inner, args.framebuffer)\n }\n emitSetOptions(env, inner, args.state, isInnerDefn)\n\n if (args.profile && isInnerDefn(args.profile)) {\n emitProfile(env, inner, args, false, true)\n }\n\n if (!program) {\n var progCache = env.global.def('{}')\n var PROGRAM = args.shader.progVar.append(env, inner)\n var PROG_ID = inner.def(PROGRAM, '.id')\n var CACHED_PROC = inner.def(progCache, '[', PROG_ID, ']')\n inner(\n env.shared.gl, '.useProgram(', PROGRAM, '.program);',\n 'if(!', CACHED_PROC, '){',\n CACHED_PROC, '=', progCache, '[', PROG_ID, ']=',\n env.link(function (program) {\n return createBody(\n emitBatchDynamicShaderBody, env, args, program, 2)\n }), '(', PROGRAM, ');}',\n CACHED_PROC, '.call(this,a0[', BATCH_ID, '],', BATCH_ID, ');')\n } else {\n if (args.useVAO) {\n if (args.drawVAO) {\n if (isInnerDefn(args.drawVAO)) {\n // vao is a prop\n inner(env.shared.vao, '.setVAO(', args.drawVAO.append(env, inner), ');')\n } else {\n // vao is invariant\n outer(env.shared.vao, '.setVAO(', args.drawVAO.append(env, outer), ');')\n }\n } else {\n // scoped vao binding\n outer(env.shared.vao, '.setVAO(', env.shared.vao, '.targetVAO);')\n }\n } else {\n outer(env.shared.vao, '.setVAO(null);')\n emitAttributes(env, outer, args, program.attributes, isOuterDefn)\n emitAttributes(env, inner, args, program.attributes, isInnerDefn)\n }\n emitUniforms(env, outer, args, program.uniforms, isOuterDefn)\n emitUniforms(env, inner, args, program.uniforms, isInnerDefn)\n emitDraw(env, outer, inner, args)\n }\n }\n\n function emitBatchProc (env, args) {\n var batch = env.proc('batch', 2)\n env.batchId = '0'\n\n injectExtensions(env, batch)\n\n // Check if any context variables depend on props\n var contextDynamic = false\n var needsContext = true\n Object.keys(args.context).forEach(function (name) {\n contextDynamic = contextDynamic || args.context[name].propDep\n })\n if (!contextDynamic) {\n emitContext(env, batch, args.context)\n needsContext = false\n }\n\n // framebuffer state affects framebufferWidth/height context vars\n var framebuffer = args.framebuffer\n var needsFramebuffer = false\n if (framebuffer) {\n if (framebuffer.propDep) {\n contextDynamic = needsFramebuffer = true\n } else if (framebuffer.contextDep && contextDynamic) {\n needsFramebuffer = true\n }\n if (!needsFramebuffer) {\n emitPollFramebuffer(env, batch, framebuffer)\n }\n } else {\n emitPollFramebuffer(env, batch, null)\n }\n\n // viewport is weird because it can affect context vars\n if (args.state.viewport && args.state.viewport.propDep) {\n contextDynamic = true\n }\n\n function isInnerDefn (defn) {\n return (defn.contextDep && contextDynamic) || defn.propDep\n }\n\n // set webgl options\n emitPollState(env, batch, args)\n emitSetOptions(env, batch, args.state, function (defn) {\n return !isInnerDefn(defn)\n })\n\n if (!args.profile || !isInnerDefn(args.profile)) {\n emitProfile(env, batch, args, false, 'a1')\n }\n\n // Save these values to args so that the batch body routine can use them\n args.contextDep = contextDynamic\n args.needsContext = needsContext\n args.needsFramebuffer = needsFramebuffer\n\n // determine if shader is dynamic\n var progDefn = args.shader.progVar\n if ((progDefn.contextDep && contextDynamic) || progDefn.propDep) {\n emitBatchBody(\n env,\n batch,\n args,\n null)\n } else {\n var PROGRAM = progDefn.append(env, batch)\n batch(env.shared.gl, '.useProgram(', PROGRAM, '.program);')\n if (args.shader.program) {\n emitBatchBody(\n env,\n batch,\n args,\n args.shader.program)\n } else {\n batch(env.shared.vao, '.setVAO(null);')\n var batchCache = env.global.def('{}')\n var PROG_ID = batch.def(PROGRAM, '.id')\n var CACHED_PROC = batch.def(batchCache, '[', PROG_ID, ']')\n batch(\n env.cond(CACHED_PROC)\n .then(CACHED_PROC, '.call(this,a0,a1);')\n .else(\n CACHED_PROC, '=', batchCache, '[', PROG_ID, ']=',\n env.link(function (program) {\n return createBody(emitBatchBody, env, args, program, 2)\n }), '(', PROGRAM, ');',\n CACHED_PROC, '.call(this,a0,a1);'))\n }\n }\n\n if (Object.keys(args.state).length > 0) {\n batch(env.shared.current, '.dirty=true;')\n }\n }\n\n // ===================================================\n // ===================================================\n // SCOPE COMMAND\n // ===================================================\n // ===================================================\n function emitScopeProc (env, args) {\n var scope = env.proc('scope', 3)\n env.batchId = 'a2'\n\n var shared = env.shared\n var CURRENT_STATE = shared.current\n\n emitContext(env, scope, args.context)\n\n if (args.framebuffer) {\n args.framebuffer.append(env, scope)\n }\n\n sortState(Object.keys(args.state)).forEach(function (name) {\n var defn = args.state[name]\n var value = defn.append(env, scope)\n if (isArrayLike(value)) {\n value.forEach(function (v, i) {\n scope.set(env.next[name], '[' + i + ']', v)\n })\n } else {\n scope.set(shared.next, '.' + name, value)\n }\n })\n\n emitProfile(env, scope, args, true, true)\n\n ;[S_ELEMENTS, S_OFFSET, S_COUNT, S_INSTANCES, S_PRIMITIVE].forEach(\n function (opt) {\n var variable = args.draw[opt]\n if (!variable) {\n return\n }\n scope.set(shared.draw, '.' + opt, '' + variable.append(env, scope))\n })\n\n Object.keys(args.uniforms).forEach(function (opt) {\n var value = args.uniforms[opt].append(env, scope)\n if (Array.isArray(value)) {\n value = '[' + value.join() + ']'\n }\n scope.set(\n shared.uniforms,\n '[' + stringStore.id(opt) + ']',\n value)\n })\n\n Object.keys(args.attributes).forEach(function (name) {\n var record = args.attributes[name].append(env, scope)\n var scopeAttrib = env.scopeAttrib(name)\n Object.keys(new AttributeRecord()).forEach(function (prop) {\n scope.set(scopeAttrib, '.' + prop, record[prop])\n })\n })\n\n if (args.scopeVAO) {\n scope.set(shared.vao, '.targetVAO', args.scopeVAO.append(env, scope))\n }\n\n function saveShader (name) {\n var shader = args.shader[name]\n if (shader) {\n scope.set(shared.shader, '.' + name, shader.append(env, scope))\n }\n }\n saveShader(S_VERT)\n saveShader(S_FRAG)\n\n if (Object.keys(args.state).length > 0) {\n scope(CURRENT_STATE, '.dirty=true;')\n scope.exit(CURRENT_STATE, '.dirty=true;')\n }\n\n scope('a1(', env.shared.context, ',a0,', env.batchId, ');')\n }\n\n function isDynamicObject (object) {\n if (typeof object !== 'object' || isArrayLike(object)) {\n return\n }\n var props = Object.keys(object)\n for (var i = 0; i < props.length; ++i) {\n if (dynamic.isDynamic(object[props[i]])) {\n return true\n }\n }\n return false\n }\n\n function splatObject (env, options, name) {\n var object = options.static[name]\n if (!object || !isDynamicObject(object)) {\n return\n }\n\n var globals = env.global\n var keys = Object.keys(object)\n var thisDep = false\n var contextDep = false\n var propDep = false\n var objectRef = env.global.def('{}')\n keys.forEach(function (key) {\n var value = object[key]\n if (dynamic.isDynamic(value)) {\n if (typeof value === 'function') {\n value = object[key] = dynamic.unbox(value)\n }\n var deps = createDynamicDecl(value, null)\n thisDep = thisDep || deps.thisDep\n propDep = propDep || deps.propDep\n contextDep = contextDep || deps.contextDep\n } else {\n globals(objectRef, '.', key, '=')\n switch (typeof value) {\n case 'number':\n globals(value)\n break\n case 'string':\n globals('\"', value, '\"')\n break\n case 'object':\n if (Array.isArray(value)) {\n globals('[', value.join(), ']')\n }\n break\n default:\n globals(env.link(value))\n break\n }\n globals(';')\n }\n })\n\n function appendBlock (env, block) {\n keys.forEach(function (key) {\n var value = object[key]\n if (!dynamic.isDynamic(value)) {\n return\n }\n var ref = env.invoke(block, value)\n block(objectRef, '.', key, '=', ref, ';')\n })\n }\n\n options.dynamic[name] = new dynamic.DynamicVariable(DYN_THUNK, {\n thisDep: thisDep,\n contextDep: contextDep,\n propDep: propDep,\n ref: objectRef,\n append: appendBlock\n })\n delete options.static[name]\n }\n\n // ===========================================================================\n // ===========================================================================\n // MAIN DRAW COMMAND\n // ===========================================================================\n // ===========================================================================\n function compileCommand (options, attributes, uniforms, context, stats) {\n var env = createREGLEnvironment()\n\n // link stats, so that we can easily access it in the program.\n env.stats = env.link(stats)\n\n // splat options and attributes to allow for dynamic nested properties\n Object.keys(attributes.static).forEach(function (key) {\n splatObject(env, attributes, key)\n })\n NESTED_OPTIONS.forEach(function (name) {\n splatObject(env, options, name)\n })\n\n var args = parseArguments(options, attributes, uniforms, context, env)\n\n emitDrawProc(env, args)\n emitScopeProc(env, args)\n emitBatchProc(env, args)\n\n return extend(env.compile(), {\n destroy: function () {\n args.shader.program.destroy()\n }\n })\n }\n\n // ===========================================================================\n // ===========================================================================\n // POLL / REFRESH\n // ===========================================================================\n // ===========================================================================\n return {\n next: nextState,\n current: currentState,\n procs: (function () {\n var env = createREGLEnvironment()\n var poll = env.proc('poll')\n var refresh = env.proc('refresh')\n var common = env.block()\n poll(common)\n refresh(common)\n\n var shared = env.shared\n var GL = shared.gl\n var NEXT_STATE = shared.next\n var CURRENT_STATE = shared.current\n\n common(CURRENT_STATE, '.dirty=false;')\n\n emitPollFramebuffer(env, poll)\n emitPollFramebuffer(env, refresh, null, true)\n\n // Refresh updates all attribute state changes\n var INSTANCING\n if (extInstancing) {\n INSTANCING = env.link(extInstancing)\n }\n\n // update vertex array bindings\n if (extensions.oes_vertex_array_object) {\n refresh(env.link(extensions.oes_vertex_array_object), '.bindVertexArrayOES(null);')\n }\n for (var i = 0; i < limits.maxAttributes; ++i) {\n var BINDING = refresh.def(shared.attributes, '[', i, ']')\n var ifte = env.cond(BINDING, '.buffer')\n ifte.then(\n GL, '.enableVertexAttribArray(', i, ');',\n GL, '.bindBuffer(',\n GL_ARRAY_BUFFER$2, ',',\n BINDING, '.buffer.buffer);',\n GL, '.vertexAttribPointer(',\n i, ',',\n BINDING, '.size,',\n BINDING, '.type,',\n BINDING, '.normalized,',\n BINDING, '.stride,',\n BINDING, '.offset);'\n ).else(\n GL, '.disableVertexAttribArray(', i, ');',\n GL, '.vertexAttrib4f(',\n i, ',',\n BINDING, '.x,',\n BINDING, '.y,',\n BINDING, '.z,',\n BINDING, '.w);',\n BINDING, '.buffer=null;')\n refresh(ifte)\n if (extInstancing) {\n refresh(\n INSTANCING, '.vertexAttribDivisorANGLE(',\n i, ',',\n BINDING, '.divisor);')\n }\n }\n refresh(\n env.shared.vao, '.currentVAO=null;',\n env.shared.vao, '.setVAO(', env.shared.vao, '.targetVAO);')\n\n Object.keys(GL_FLAGS).forEach(function (flag) {\n var cap = GL_FLAGS[flag]\n var NEXT = common.def(NEXT_STATE, '.', flag)\n var block = env.block()\n block('if(', NEXT, '){',\n GL, '.enable(', cap, ')}else{',\n GL, '.disable(', cap, ')}',\n CURRENT_STATE, '.', flag, '=', NEXT, ';')\n refresh(block)\n poll(\n 'if(', NEXT, '!==', CURRENT_STATE, '.', flag, '){',\n block,\n '}')\n })\n\n Object.keys(GL_VARIABLES).forEach(function (name) {\n var func = GL_VARIABLES[name]\n var init = currentState[name]\n var NEXT, CURRENT\n var block = env.block()\n block(GL, '.', func, '(')\n if (isArrayLike(init)) {\n var n = init.length\n NEXT = env.global.def(NEXT_STATE, '.', name)\n CURRENT = env.global.def(CURRENT_STATE, '.', name)\n block(\n loop(n, function (i) {\n return NEXT + '[' + i + ']'\n }), ');',\n loop(n, function (i) {\n return CURRENT + '[' + i + ']=' + NEXT + '[' + i + '];'\n }).join(''))\n poll(\n 'if(', loop(n, function (i) {\n return NEXT + '[' + i + ']!==' + CURRENT + '[' + i + ']'\n }).join('||'), '){',\n block,\n '}')\n } else {\n NEXT = common.def(NEXT_STATE, '.', name)\n CURRENT = common.def(CURRENT_STATE, '.', name)\n block(\n NEXT, ');',\n CURRENT_STATE, '.', name, '=', NEXT, ';')\n poll(\n 'if(', NEXT, '!==', CURRENT, '){',\n block,\n '}')\n }\n refresh(block)\n })\n\n return env.compile()\n })(),\n compile: compileCommand\n }\n}\n\nfunction stats () {\n return {\n vaoCount: 0,\n bufferCount: 0,\n elementsCount: 0,\n framebufferCount: 0,\n shaderCount: 0,\n textureCount: 0,\n cubeCount: 0,\n renderbufferCount: 0,\n maxTextureUnits: 0\n }\n}\n\nvar GL_QUERY_RESULT_EXT = 0x8866\nvar GL_QUERY_RESULT_AVAILABLE_EXT = 0x8867\nvar GL_TIME_ELAPSED_EXT = 0x88BF\n\nvar createTimer = function (gl, extensions) {\n if (!extensions.ext_disjoint_timer_query) {\n return null\n }\n\n // QUERY POOL BEGIN\n var queryPool = []\n function allocQuery () {\n return queryPool.pop() || extensions.ext_disjoint_timer_query.createQueryEXT()\n }\n function freeQuery (query) {\n queryPool.push(query)\n }\n // QUERY POOL END\n\n var pendingQueries = []\n function beginQuery (stats) {\n var query = allocQuery()\n extensions.ext_disjoint_timer_query.beginQueryEXT(GL_TIME_ELAPSED_EXT, query)\n pendingQueries.push(query)\n pushScopeStats(pendingQueries.length - 1, pendingQueries.length, stats)\n }\n\n function endQuery () {\n extensions.ext_disjoint_timer_query.endQueryEXT(GL_TIME_ELAPSED_EXT)\n }\n\n //\n // Pending stats pool.\n //\n function PendingStats () {\n this.startQueryIndex = -1\n this.endQueryIndex = -1\n this.sum = 0\n this.stats = null\n }\n var pendingStatsPool = []\n function allocPendingStats () {\n return pendingStatsPool.pop() || new PendingStats()\n }\n function freePendingStats (pendingStats) {\n pendingStatsPool.push(pendingStats)\n }\n // Pending stats pool end\n\n var pendingStats = []\n function pushScopeStats (start, end, stats) {\n var ps = allocPendingStats()\n ps.startQueryIndex = start\n ps.endQueryIndex = end\n ps.sum = 0\n ps.stats = stats\n pendingStats.push(ps)\n }\n\n // we should call this at the beginning of the frame,\n // in order to update gpuTime\n var timeSum = []\n var queryPtr = []\n function update () {\n var ptr, i\n\n var n = pendingQueries.length\n if (n === 0) {\n return\n }\n\n // Reserve space\n queryPtr.length = Math.max(queryPtr.length, n + 1)\n timeSum.length = Math.max(timeSum.length, n + 1)\n timeSum[0] = 0\n queryPtr[0] = 0\n\n // Update all pending timer queries\n var queryTime = 0\n ptr = 0\n for (i = 0; i < pendingQueries.length; ++i) {\n var query = pendingQueries[i]\n if (extensions.ext_disjoint_timer_query.getQueryObjectEXT(query, GL_QUERY_RESULT_AVAILABLE_EXT)) {\n queryTime += extensions.ext_disjoint_timer_query.getQueryObjectEXT(query, GL_QUERY_RESULT_EXT)\n freeQuery(query)\n } else {\n pendingQueries[ptr++] = query\n }\n timeSum[i + 1] = queryTime\n queryPtr[i + 1] = ptr\n }\n pendingQueries.length = ptr\n\n // Update all pending stat queries\n ptr = 0\n for (i = 0; i < pendingStats.length; ++i) {\n var stats = pendingStats[i]\n var start = stats.startQueryIndex\n var end = stats.endQueryIndex\n stats.sum += timeSum[end] - timeSum[start]\n var startPtr = queryPtr[start]\n var endPtr = queryPtr[end]\n if (endPtr === startPtr) {\n stats.stats.gpuTime += stats.sum / 1e6\n freePendingStats(stats)\n } else {\n stats.startQueryIndex = startPtr\n stats.endQueryIndex = endPtr\n pendingStats[ptr++] = stats\n }\n }\n pendingStats.length = ptr\n }\n\n return {\n beginQuery: beginQuery,\n endQuery: endQuery,\n pushScopeStats: pushScopeStats,\n update: update,\n getNumPendingQueries: function () {\n return pendingQueries.length\n },\n clear: function () {\n queryPool.push.apply(queryPool, pendingQueries)\n for (var i = 0; i < queryPool.length; i++) {\n extensions.ext_disjoint_timer_query.deleteQueryEXT(queryPool[i])\n }\n pendingQueries.length = 0\n queryPool.length = 0\n },\n restore: function () {\n pendingQueries.length = 0\n queryPool.length = 0\n }\n }\n}\n\nvar GL_COLOR_BUFFER_BIT = 16384\nvar GL_DEPTH_BUFFER_BIT = 256\nvar GL_STENCIL_BUFFER_BIT = 1024\n\nvar GL_ARRAY_BUFFER = 34962\n\nvar CONTEXT_LOST_EVENT = 'webglcontextlost'\nvar CONTEXT_RESTORED_EVENT = 'webglcontextrestored'\n\nvar DYN_PROP = 1\nvar DYN_CONTEXT = 2\nvar DYN_STATE = 3\n\nfunction find (haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) {\n return i\n }\n }\n return -1\n}\n\nfunction wrapREGL (args) {\n var config = parseArgs(args)\n if (!config) {\n return null\n }\n\n var gl = config.gl\n var glAttributes = gl.getContextAttributes()\n var contextLost = gl.isContextLost()\n\n var extensionState = createExtensionCache(gl, config)\n if (!extensionState) {\n return null\n }\n\n var stringStore = createStringStore()\n var stats$$1 = stats()\n var extensions = extensionState.extensions\n var timer = createTimer(gl, extensions)\n\n var START_TIME = clock()\n var WIDTH = gl.drawingBufferWidth\n var HEIGHT = gl.drawingBufferHeight\n\n var contextState = {\n tick: 0,\n time: 0,\n viewportWidth: WIDTH,\n viewportHeight: HEIGHT,\n framebufferWidth: WIDTH,\n framebufferHeight: HEIGHT,\n drawingBufferWidth: WIDTH,\n drawingBufferHeight: HEIGHT,\n pixelRatio: config.pixelRatio\n }\n var uniformState = {}\n var drawState = {\n elements: null,\n primitive: 4, // GL_TRIANGLES\n count: -1,\n offset: 0,\n instances: -1\n }\n\n var limits = wrapLimits(gl, extensions)\n var bufferState = wrapBufferState(\n gl,\n stats$$1,\n config,\n destroyBuffer)\n var attributeState = wrapAttributeState(\n gl,\n extensions,\n limits,\n stats$$1,\n bufferState)\n function destroyBuffer (buffer) {\n return attributeState.destroyBuffer(buffer)\n }\n var elementState = wrapElementsState(gl, extensions, bufferState, stats$$1)\n var shaderState = wrapShaderState(gl, stringStore, stats$$1, config)\n var textureState = createTextureSet(\n gl,\n extensions,\n limits,\n function () { core.procs.poll() },\n contextState,\n stats$$1,\n config)\n var renderbufferState = wrapRenderbuffers(gl, extensions, limits, stats$$1, config)\n var framebufferState = wrapFBOState(\n gl,\n extensions,\n limits,\n textureState,\n renderbufferState,\n stats$$1)\n var core = reglCore(\n gl,\n stringStore,\n extensions,\n limits,\n bufferState,\n elementState,\n textureState,\n framebufferState,\n uniformState,\n attributeState,\n shaderState,\n drawState,\n contextState,\n timer,\n config)\n var readPixels = wrapReadPixels(\n gl,\n framebufferState,\n core.procs.poll,\n contextState,\n glAttributes, extensions, limits)\n\n var nextState = core.next\n var canvas = gl.canvas\n\n var rafCallbacks = []\n var lossCallbacks = []\n var restoreCallbacks = []\n var destroyCallbacks = [config.onDestroy]\n\n var activeRAF = null\n function handleRAF () {\n if (rafCallbacks.length === 0) {\n if (timer) {\n timer.update()\n }\n activeRAF = null\n return\n }\n\n // schedule next animation frame\n activeRAF = raf.next(handleRAF)\n\n // poll for changes\n poll()\n\n // fire a callback for all pending rafs\n for (var i = rafCallbacks.length - 1; i >= 0; --i) {\n var cb = rafCallbacks[i]\n if (cb) {\n cb(contextState, null, 0)\n }\n }\n\n // flush all pending webgl calls\n gl.flush()\n\n // poll GPU timers *after* gl.flush so we don't delay command dispatch\n if (timer) {\n timer.update()\n }\n }\n\n function startRAF () {\n if (!activeRAF && rafCallbacks.length > 0) {\n activeRAF = raf.next(handleRAF)\n }\n }\n\n function stopRAF () {\n if (activeRAF) {\n raf.cancel(handleRAF)\n activeRAF = null\n }\n }\n\n function handleContextLoss (event) {\n event.preventDefault()\n\n // set context lost flag\n contextLost = true\n\n // pause request animation frame\n stopRAF()\n\n // lose context\n lossCallbacks.forEach(function (cb) {\n cb()\n })\n }\n\n function handleContextRestored (event) {\n // clear error code\n gl.getError()\n\n // clear context lost flag\n contextLost = false\n\n // refresh state\n extensionState.restore()\n shaderState.restore()\n bufferState.restore()\n textureState.restore()\n renderbufferState.restore()\n framebufferState.restore()\n attributeState.restore()\n if (timer) {\n timer.restore()\n }\n\n // refresh state\n core.procs.refresh()\n\n // restart RAF\n startRAF()\n\n // restore context\n restoreCallbacks.forEach(function (cb) {\n cb()\n })\n }\n\n if (canvas) {\n canvas.addEventListener(CONTEXT_LOST_EVENT, handleContextLoss, false)\n canvas.addEventListener(CONTEXT_RESTORED_EVENT, handleContextRestored, false)\n }\n\n function destroy () {\n rafCallbacks.length = 0\n stopRAF()\n\n if (canvas) {\n canvas.removeEventListener(CONTEXT_LOST_EVENT, handleContextLoss)\n canvas.removeEventListener(CONTEXT_RESTORED_EVENT, handleContextRestored)\n }\n\n shaderState.clear()\n framebufferState.clear()\n renderbufferState.clear()\n textureState.clear()\n elementState.clear()\n bufferState.clear()\n attributeState.clear()\n\n if (timer) {\n timer.clear()\n }\n\n destroyCallbacks.forEach(function (cb) {\n cb()\n })\n }\n\n function compileProcedure (options) {\n check$1(!!options, 'invalid args to regl({...})')\n check$1.type(options, 'object', 'invalid args to regl({...})')\n\n function flattenNestedOptions (options) {\n var result = extend({}, options)\n delete result.uniforms\n delete result.attributes\n delete result.context\n delete result.vao\n\n if ('stencil' in result && result.stencil.op) {\n result.stencil.opBack = result.stencil.opFront = result.stencil.op\n delete result.stencil.op\n }\n\n function merge (name) {\n if (name in result) {\n var child = result[name]\n delete result[name]\n Object.keys(child).forEach(function (prop) {\n result[name + '.' + prop] = child[prop]\n })\n }\n }\n merge('blend')\n merge('depth')\n merge('cull')\n merge('stencil')\n merge('polygonOffset')\n merge('scissor')\n merge('sample')\n\n if ('vao' in options) {\n result.vao = options.vao\n }\n\n return result\n }\n\n function separateDynamic (object, useArrays) {\n var staticItems = {}\n var dynamicItems = {}\n Object.keys(object).forEach(function (option) {\n var value = object[option]\n if (dynamic.isDynamic(value)) {\n dynamicItems[option] = dynamic.unbox(value, option)\n return\n } else if (useArrays && Array.isArray(value)) {\n for (var i = 0; i < value.length; ++i) {\n if (dynamic.isDynamic(value[i])) {\n dynamicItems[option] = dynamic.unbox(value, option)\n return\n }\n }\n }\n staticItems[option] = value\n })\n return {\n dynamic: dynamicItems,\n static: staticItems\n }\n }\n\n // Treat context variables separate from other dynamic variables\n var context = separateDynamic(options.context || {}, true)\n var uniforms = separateDynamic(options.uniforms || {}, true)\n var attributes = separateDynamic(options.attributes || {}, false)\n var opts = separateDynamic(flattenNestedOptions(options), false)\n\n var stats$$1 = {\n gpuTime: 0.0,\n cpuTime: 0.0,\n count: 0\n }\n\n var compiled = core.compile(opts, attributes, uniforms, context, stats$$1)\n\n var draw = compiled.draw\n var batch = compiled.batch\n var scope = compiled.scope\n\n // FIXME: we should modify code generation for batch commands so this\n // isn't necessary\n var EMPTY_ARRAY = []\n function reserve (count) {\n while (EMPTY_ARRAY.length < count) {\n EMPTY_ARRAY.push(null)\n }\n return EMPTY_ARRAY\n }\n\n function REGLCommand (args, body) {\n var i\n if (contextLost) {\n check$1.raise('context lost')\n }\n if (typeof args === 'function') {\n return scope.call(this, null, args, 0)\n } else if (typeof body === 'function') {\n if (typeof args === 'number') {\n for (i = 0; i < args; ++i) {\n scope.call(this, null, body, i)\n }\n } else if (Array.isArray(args)) {\n for (i = 0; i < args.length; ++i) {\n scope.call(this, args[i], body, i)\n }\n } else {\n return scope.call(this, args, body, 0)\n }\n } else if (typeof args === 'number') {\n if (args > 0) {\n return batch.call(this, reserve(args | 0), args | 0)\n }\n } else if (Array.isArray(args)) {\n if (args.length) {\n return batch.call(this, args, args.length)\n }\n } else {\n return draw.call(this, args)\n }\n }\n\n return extend(REGLCommand, {\n stats: stats$$1,\n destroy: function () {\n compiled.destroy()\n }\n })\n }\n\n var setFBO = framebufferState.setFBO = compileProcedure({\n framebuffer: dynamic.define.call(null, DYN_PROP, 'framebuffer')\n })\n\n function clearImpl (_, options) {\n var clearFlags = 0\n core.procs.poll()\n\n var c = options.color\n if (c) {\n gl.clearColor(+c[0] || 0, +c[1] || 0, +c[2] || 0, +c[3] || 0)\n clearFlags |= GL_COLOR_BUFFER_BIT\n }\n if ('depth' in options) {\n gl.clearDepth(+options.depth)\n clearFlags |= GL_DEPTH_BUFFER_BIT\n }\n if ('stencil' in options) {\n gl.clearStencil(options.stencil | 0)\n clearFlags |= GL_STENCIL_BUFFER_BIT\n }\n\n check$1(!!clearFlags, 'called regl.clear with no buffer specified')\n gl.clear(clearFlags)\n }\n\n function clear (options) {\n check$1(\n typeof options === 'object' && options,\n 'regl.clear() takes an object as input')\n if ('framebuffer' in options) {\n if (options.framebuffer &&\n options.framebuffer_reglType === 'framebufferCube') {\n for (var i = 0; i < 6; ++i) {\n setFBO(extend({\n framebuffer: options.framebuffer.faces[i]\n }, options), clearImpl)\n }\n } else {\n setFBO(options, clearImpl)\n }\n } else {\n clearImpl(null, options)\n }\n }\n\n function frame (cb) {\n check$1.type(cb, 'function', 'regl.frame() callback must be a function')\n rafCallbacks.push(cb)\n\n function cancel () {\n // FIXME: should we check something other than equals cb here?\n // what if a user calls frame twice with the same callback...\n //\n var i = find(rafCallbacks, cb)\n check$1(i >= 0, 'cannot cancel a frame twice')\n function pendingCancel () {\n var index = find(rafCallbacks, pendingCancel)\n rafCallbacks[index] = rafCallbacks[rafCallbacks.length - 1]\n rafCallbacks.length -= 1\n if (rafCallbacks.length <= 0) {\n stopRAF()\n }\n }\n rafCallbacks[i] = pendingCancel\n }\n\n startRAF()\n\n return {\n cancel: cancel\n }\n }\n\n // poll viewport\n function pollViewport () {\n var viewport = nextState.viewport\n var scissorBox = nextState.scissor_box\n viewport[0] = viewport[1] = scissorBox[0] = scissorBox[1] = 0\n contextState.viewportWidth =\n contextState.framebufferWidth =\n contextState.drawingBufferWidth =\n viewport[2] =\n scissorBox[2] = gl.drawingBufferWidth\n contextState.viewportHeight =\n contextState.framebufferHeight =\n contextState.drawingBufferHeight =\n viewport[3] =\n scissorBox[3] = gl.drawingBufferHeight\n }\n\n function poll () {\n contextState.tick += 1\n contextState.time = now()\n pollViewport()\n core.procs.poll()\n }\n\n function refresh () {\n textureState.refresh()\n pollViewport()\n core.procs.refresh()\n if (timer) {\n timer.update()\n }\n }\n\n function now () {\n return (clock() - START_TIME) / 1000.0\n }\n\n refresh()\n\n function addListener (event, callback) {\n check$1.type(callback, 'function', 'listener callback must be a function')\n\n var callbacks\n switch (event) {\n case 'frame':\n return frame(callback)\n case 'lost':\n callbacks = lossCallbacks\n break\n case 'restore':\n callbacks = restoreCallbacks\n break\n case 'destroy':\n callbacks = destroyCallbacks\n break\n default:\n check$1.raise('invalid event, must be one of frame,lost,restore,destroy')\n }\n\n callbacks.push(callback)\n return {\n cancel: function () {\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i] === callback) {\n callbacks[i] = callbacks[callbacks.length - 1]\n callbacks.pop()\n return\n }\n }\n }\n }\n }\n\n var regl = extend(compileProcedure, {\n // Clear current FBO\n clear: clear,\n\n // Short cuts for dynamic variables\n prop: dynamic.define.bind(null, DYN_PROP),\n context: dynamic.define.bind(null, DYN_CONTEXT),\n this: dynamic.define.bind(null, DYN_STATE),\n\n // executes an empty draw command\n draw: compileProcedure({}),\n\n // Resources\n buffer: function (options) {\n return bufferState.create(options, GL_ARRAY_BUFFER, false, false)\n },\n elements: function (options) {\n return elementState.create(options, false)\n },\n texture: textureState.create2D,\n cube: textureState.createCube,\n renderbuffer: renderbufferState.create,\n framebuffer: framebufferState.create,\n framebufferCube: framebufferState.createCube,\n vao: attributeState.createVAO,\n\n // Expose context attributes\n attributes: glAttributes,\n\n // Frame rendering\n frame: frame,\n on: addListener,\n\n // System limits\n limits: limits,\n hasExtension: function (name) {\n return limits.extensions.indexOf(name.toLowerCase()) >= 0\n },\n\n // Read pixels\n read: readPixels,\n\n // Destroy regl and all associated resources\n destroy: destroy,\n\n // Direct GL state manipulation\n _gl: gl,\n _refresh: refresh,\n\n poll: function () {\n poll()\n if (timer) {\n timer.update()\n }\n },\n\n // Current time\n now: now,\n\n // regl Statistics Information\n stats: stats$$1\n })\n\n config.onDone(null, regl)\n\n return regl\n}\n\nreturn wrapREGL;\n\n})));\n//# sourceMappingURL=regl.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3JlZ2xAMS43LjBAcmVnbC9kaXN0L3JlZ2wuanM/NGY0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLElBQUksS0FBNEQ7QUFDaEUsSUFBSSxTQUMrQjtBQUNuQyxDQUFDLHFCQUFxQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2RUFBNkUsMEJBQTBCOztBQUV2RztBQUNBO0FBQ0EseUVBQXlFO0FBQ3pFLDRDQUE0Qyx5QkFBeUI7O0FBRXJFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQiwwQkFBMEI7QUFDN0M7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHFCQUFxQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLHFCQUFxQiw0QkFBNEI7QUFDakQ7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLG1CQUFtQjs7QUFFbkI7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLGlCQUFpQiw4QkFBOEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixnQkFBZ0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QyxrQkFBa0I7QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQSxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsa0JBQWtCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixZQUFZO0FBQzdCLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGtCQUFrQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsbUJBQW1CLE9BQU87QUFDMUIscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUcsSUFBSTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHdCQUF3QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsb0JBQW9CO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFFBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixpQkFBaUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsT0FBTztBQUM1Qix1QkFBdUIsc0JBQXNCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHlCQUF5QixPQUFPO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLDZCQUE2QjtBQUM1QztBQUNBO0FBQ0EscUNBQXFDLGdDQUFnQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxpQkFBaUIsNkJBQTZCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix3QkFBd0I7QUFDN0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCLHVCQUF1Qix1QkFBdUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLDhCQUE4QjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQkFBcUIsOEJBQThCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsb0JBQW9CO0FBQ3ZEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix1QkFBdUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsd0JBQXdCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLHdCQUF3QjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtCQUErQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpQkFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGVBQWU7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsbUJBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsd0JBQXdCO0FBQzNDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIseUJBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQyxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixtQkFBbUI7QUFDaEQ7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLEtBQUs7QUFDTCxnQkFBZ0I7QUFDaEI7QUFDQSxpQkFBaUIsTUFBTTtBQUN2QixpQkFBaUIsTUFBTTtBQUN2QixpQkFBaUIsTUFBTTtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZFQUE2RTtBQUM3RTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3QkFBd0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtGQUFrRjtBQUNsRixpRkFBaUY7O0FBRWpGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxtRUFBbUU7O0FBRW5FOztBQUVBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixXQUFXO0FBQ1g7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7O0FBRWY7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTs7QUFFZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTs7QUFFZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7O0FBRWY7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQSw4REFBOEQ7QUFDOUQsa0VBQWtFOztBQUVsRTs7QUFFQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLGVBQWU7QUFDZixhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTs7QUFFZjtBQUNBOztBQUVBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7O0FBRWY7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsYUFBYTtBQUMxRCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRCxrQ0FBa0M7QUFDbEMseUZBQXlGO0FBQ3pGLHFDQUFxQztBQUNyQyxZQUFZLEtBQUs7QUFDakIsOERBQThEO0FBQzlELDRCQUE0QjtBQUM1QixxQ0FBcUM7QUFDckMsWUFBWSxtQ0FBbUM7QUFDL0Msc0RBQXNEO0FBQ3RELDBEQUEwRDtBQUMxRCw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCLFlBQVksS0FBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQSxXQUFXO0FBQ1gsYUFBYSxLQUFLO0FBQ2xCLHdEQUF3RDtBQUN4RCxnR0FBZ0c7QUFDaEcsWUFBWSxLQUFLO0FBQ2pCLHFFQUFxRTtBQUNyRSxZQUFZO0FBQ1o7QUFDQSxvRUFBb0U7QUFDcEUsd0RBQXdEO0FBQ3hEO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCOztBQUVqQjtBQUNBLHFDQUFxQztBQUNyQyxzREFBc0Q7QUFDdEQsWUFBWTs7QUFFWjtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRSxPQUFPO0FBQ1AsdURBQXVEO0FBQ3ZEO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsMERBQTBEO0FBQzFEO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQSxZQUFZLEtBQUs7QUFDakIseURBQXlEO0FBQ3pEO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsMENBQTBDO0FBQzFDO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQSxhQUFhLFNBQVMsTUFBTTtBQUM1QixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hELHlEQUF5RDtBQUN6RCxvREFBb0Q7QUFDcEQsU0FBUztBQUNUO0FBQ0Esd0RBQXdEO0FBQ3hELG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0MsV0FBVztBQUNYLDRDQUE0QztBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBLDJDQUEyQztBQUMzQyw0Q0FBNEM7QUFDNUM7QUFDQSwwREFBMEQ7QUFDMUQsT0FBTztBQUNQO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBLFdBQVcsU0FBUyxNQUFNO0FBQzFCLE9BQU87QUFDUDtBQUNBLDBEQUEwRDtBQUMxRCxzREFBc0Q7QUFDdEQ7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBLHFEQUFxRDtBQUNyRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFLFNBQVM7QUFDVCxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0VBQWtFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsU0FBUztBQUNULG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRCxxREFBcUQ7QUFDckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxZQUFZO0FBQzdDO0FBQ0E7QUFDQSxzQ0FBc0MsVUFBVTtBQUNoRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyx5REFBeUQ7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxhQUFhO0FBQ2Isd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCLHFDQUFxQztBQUNyQyxxQ0FBcUM7QUFDckM7QUFDQSwrREFBK0Q7QUFDL0QsV0FBVztBQUNYLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0EsdURBQXVEO0FBQ3ZELGtGQUFrRjtBQUNsRiw4Q0FBOEM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLHlEQUF5RDtBQUN6RCxpQ0FBaUM7QUFDakMsWUFBWTtBQUNaO0FBQ0EsV0FBVyxpQkFBaUI7QUFDNUIsc0VBQXNFO0FBQ3RFO0FBQ0EscUVBQXFFO0FBQ3JFLFdBQVc7QUFDWCxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUCw0REFBNEQ7QUFDNUQ7QUFDQSxnQkFBZ0IsS0FBSztBQUNyQjtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFO0FBQzFFLDZDQUE2QztBQUM3QyxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pELFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrRUFBa0U7QUFDbEUsd0NBQXdDO0FBQ3hDLFlBQVk7QUFDWixPQUFPO0FBQ1A7QUFDQTtBQUNBLHNFQUFzRTtBQUN0RSx3Q0FBd0M7QUFDeEMsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFLHFDQUFxQztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGO0FBQzlGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDZCQUE2QjtBQUM3QixtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBLGtCQUFrQixLQUFLO0FBQ3ZCO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBLG9FQUFvRTtBQUNwRTs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0Esa0JBQWtCLEtBQUs7QUFDdkI7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxnQkFBZ0IsMkJBQTJCO0FBQzNDO0FBQ0EsZ0JBQWdCO0FBQ2hCLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFO0FBQzVFLE9BQU87QUFDUCxzRUFBc0U7QUFDdEU7QUFDQSxLQUFLO0FBQ0wsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSw0REFBNEQ7O0FBRTVEO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsMENBQTBDO0FBQzFDLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDLHlDQUF5QztBQUN6Qzs7QUFFQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCLCtCQUErQixrQkFBa0I7QUFDN0UsK0NBQStDO0FBQy9DO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNELGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMscUJBQXFCO0FBQzlCLG9FQUFvRTtBQUNwRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRkFBa0Y7QUFDbEYsV0FBVztBQUNYO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0EsU0FBUztBQUNUO0FBQ0EseUVBQXlFO0FBQ3pFO0FBQ0EsT0FBTztBQUNQLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkNBQTZDO0FBQzdDLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DLDhDQUE4QztBQUM5QztBQUNBOztBQUVBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDO0FBQ3hDLDZDQUE2QztBQUM3Qzs7QUFFQSw2REFBNkQ7QUFDN0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQyxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUZBQXlGO0FBQ3pGO0FBQ0EscUJBQXFCLDBCQUEwQjtBQUMvQztBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUMsaUVBQWlFOztBQUVqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixrQ0FBa0MsS0FBSztBQUN2QyxtQ0FBbUM7QUFDbkMsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQSxZQUFZO0FBQ1osT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBLG9FQUFvRTtBQUNwRSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQSxjQUFjO0FBQ2QsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixtREFBbUQ7QUFDbkQ7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMkJBQTJCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIscUJBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EseUNBQXlDLFFBQVE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSw4Q0FBOEMsSUFBSTtBQUNsRCwyREFBMkQsSUFBSTs7QUFFL0Q7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVEQUF1RDtBQUN2RCx5REFBeUQ7QUFDekQsNkRBQTZEO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQSxTQUFTO0FBQ1QscUJBQXFCLGlCQUFpQjtBQUN0QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLE9BQU87QUFDOUI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBOztBQUVBOztBQUVBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fcmVnbEAxLjcuMEByZWdsL2Rpc3QvcmVnbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gICAgKGdsb2JhbC5jcmVhdGVSRUdMID0gZmFjdG9yeSgpKTtcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNUeXBlZEFycmF5ID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIChcbiAgICB4IGluc3RhbmNlb2YgVWludDhBcnJheSB8fFxuICAgIHggaW5zdGFuY2VvZiBVaW50MTZBcnJheSB8fFxuICAgIHggaW5zdGFuY2VvZiBVaW50MzJBcnJheSB8fFxuICAgIHggaW5zdGFuY2VvZiBJbnQ4QXJyYXkgfHxcbiAgICB4IGluc3RhbmNlb2YgSW50MTZBcnJheSB8fFxuICAgIHggaW5zdGFuY2VvZiBJbnQzMkFycmF5IHx8XG4gICAgeCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSB8fFxuICAgIHggaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkgfHxcbiAgICB4IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXlcbiAgKVxufVxuXG52YXIgZXh0ZW5kID0gZnVuY3Rpb24gKGJhc2UsIG9wdHMpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRzKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICBiYXNlW2tleXNbaV1dID0gb3B0c1trZXlzW2ldXVxuICB9XG4gIHJldHVybiBiYXNlXG59XG5cbi8vIEVycm9yIGNoZWNraW5nIGFuZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbi5cbi8vXG4vLyBTdGF0ZW1lbnRzIGZvciB0aGUgZm9ybSBgY2hlY2suc29tZVByb2NlZHVyZSguLi4pYCBnZXQgcmVtb3ZlZCBieVxuLy8gYSBicm93c2VyaWZ5IHRyYW5zZm9ybSBmb3Igb3B0aW1pemVkL21pbmlmaWVkIGJ1bmRsZXMuXG4vL1xuLyogZ2xvYmFscyBhdG9iICovXG52YXIgZW5kbCA9ICdcXG4nXG5cbi8vIG9ubHkgdXNlZCBmb3IgZXh0cmFjdGluZyBzaGFkZXIgbmFtZXMuICBpZiBhdG9iIG5vdCBwcmVzZW50LCB0aGVuIGVycm9yc1xuLy8gd2lsbCBiZSBzbGlnaHRseSBjcmFwcGllclxuZnVuY3Rpb24gZGVjb2RlQjY0IChzdHIpIHtcbiAgaWYgKHR5cGVvZiBhdG9iICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBhdG9iKHN0cilcbiAgfVxuICByZXR1cm4gJ2Jhc2U2NDonICsgc3RyXG59XG5cbmZ1bmN0aW9uIHJhaXNlIChtZXNzYWdlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcignKHJlZ2wpICcgKyBtZXNzYWdlKVxuICBjb25zb2xlLmVycm9yKGVycm9yKVxuICB0aHJvdyBlcnJvclxufVxuXG5mdW5jdGlvbiBjaGVjayAocHJlZCwgbWVzc2FnZSkge1xuICBpZiAoIXByZWQpIHtcbiAgICByYWlzZShtZXNzYWdlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuY29sb24gKG1lc3NhZ2UpIHtcbiAgaWYgKG1lc3NhZ2UpIHtcbiAgICByZXR1cm4gJzogJyArIG1lc3NhZ2VcbiAgfVxuICByZXR1cm4gJydcbn1cblxuZnVuY3Rpb24gY2hlY2tQYXJhbWV0ZXIgKHBhcmFtLCBwb3NzaWJpbGl0aWVzLCBtZXNzYWdlKSB7XG4gIGlmICghKHBhcmFtIGluIHBvc3NpYmlsaXRpZXMpKSB7XG4gICAgcmFpc2UoJ3Vua25vd24gcGFyYW1ldGVyICgnICsgcGFyYW0gKyAnKScgKyBlbmNvbG9uKG1lc3NhZ2UpICtcbiAgICAgICAgICAnLiBwb3NzaWJsZSB2YWx1ZXM6ICcgKyBPYmplY3Qua2V5cyhwb3NzaWJpbGl0aWVzKS5qb2luKCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tJc1R5cGVkQXJyYXkgKGRhdGEsIG1lc3NhZ2UpIHtcbiAgaWYgKCFpc1R5cGVkQXJyYXkoZGF0YSkpIHtcbiAgICByYWlzZShcbiAgICAgICdpbnZhbGlkIHBhcmFtZXRlciB0eXBlJyArIGVuY29sb24obWVzc2FnZSkgK1xuICAgICAgJy4gbXVzdCBiZSBhIHR5cGVkIGFycmF5JylcbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFuZGFyZFR5cGVFaCAodmFsdWUsIHR5cGUpIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnbnVtYmVyJzogcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbiAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgIGNhc2UgJ3N0cmluZyc6IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgY2FzZSAnYm9vbGVhbic6IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJ1xuICAgIGNhc2UgJ2Z1bmN0aW9uJzogcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnXG4gICAgY2FzZSAnc3ltYm9sJzogcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCdcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1R5cGVPZiAodmFsdWUsIHR5cGUsIG1lc3NhZ2UpIHtcbiAgaWYgKCFzdGFuZGFyZFR5cGVFaCh2YWx1ZSwgdHlwZSkpIHtcbiAgICByYWlzZShcbiAgICAgICdpbnZhbGlkIHBhcmFtZXRlciB0eXBlJyArIGVuY29sb24obWVzc2FnZSkgK1xuICAgICAgJy4gZXhwZWN0ZWQgJyArIHR5cGUgKyAnLCBnb3QgJyArICh0eXBlb2YgdmFsdWUpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrTm9uTmVnYXRpdmVJbnQgKHZhbHVlLCBtZXNzYWdlKSB7XG4gIGlmICghKCh2YWx1ZSA+PSAwKSAmJlxuICAgICAgICAoKHZhbHVlIHwgMCkgPT09IHZhbHVlKSkpIHtcbiAgICByYWlzZSgnaW52YWxpZCBwYXJhbWV0ZXIgdHlwZSwgKCcgKyB2YWx1ZSArICcpJyArIGVuY29sb24obWVzc2FnZSkgK1xuICAgICAgICAgICcuIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyJylcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja09uZU9mICh2YWx1ZSwgbGlzdCwgbWVzc2FnZSkge1xuICBpZiAobGlzdC5pbmRleE9mKHZhbHVlKSA8IDApIHtcbiAgICByYWlzZSgnaW52YWxpZCB2YWx1ZScgKyBlbmNvbG9uKG1lc3NhZ2UpICsgJy4gbXVzdCBiZSBvbmUgb2Y6ICcgKyBsaXN0KVxuICB9XG59XG5cbnZhciBjb25zdHJ1Y3RvcktleXMgPSBbXG4gICdnbCcsXG4gICdjYW52YXMnLFxuICAnY29udGFpbmVyJyxcbiAgJ2F0dHJpYnV0ZXMnLFxuICAncGl4ZWxSYXRpbycsXG4gICdleHRlbnNpb25zJyxcbiAgJ29wdGlvbmFsRXh0ZW5zaW9ucycsXG4gICdwcm9maWxlJyxcbiAgJ29uRG9uZSdcbl1cblxuZnVuY3Rpb24gY2hlY2tDb25zdHJ1Y3RvciAob2JqKSB7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGNvbnN0cnVjdG9yS2V5cy5pbmRleE9mKGtleSkgPCAwKSB7XG4gICAgICByYWlzZSgnaW52YWxpZCByZWdsIGNvbnN0cnVjdG9yIGFyZ3VtZW50IFwiJyArIGtleSArICdcIi4gbXVzdCBiZSBvbmUgb2YgJyArIGNvbnN0cnVjdG9yS2V5cylcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGxlZnRQYWQgKHN0ciwgbikge1xuICBzdHIgPSBzdHIgKyAnJ1xuICB3aGlsZSAoc3RyLmxlbmd0aCA8IG4pIHtcbiAgICBzdHIgPSAnICcgKyBzdHJcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIFNoYWRlckZpbGUgKCkge1xuICB0aGlzLm5hbWUgPSAndW5rbm93bidcbiAgdGhpcy5saW5lcyA9IFtdXG4gIHRoaXMuaW5kZXggPSB7fVxuICB0aGlzLmhhc0Vycm9ycyA9IGZhbHNlXG59XG5cbmZ1bmN0aW9uIFNoYWRlckxpbmUgKG51bWJlciwgbGluZSkge1xuICB0aGlzLm51bWJlciA9IG51bWJlclxuICB0aGlzLmxpbmUgPSBsaW5lXG4gIHRoaXMuZXJyb3JzID0gW11cbn1cblxuZnVuY3Rpb24gU2hhZGVyRXJyb3IgKGZpbGVOdW1iZXIsIGxpbmVOdW1iZXIsIG1lc3NhZ2UpIHtcbiAgdGhpcy5maWxlID0gZmlsZU51bWJlclxuICB0aGlzLmxpbmUgPSBsaW5lTnVtYmVyXG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2Vcbn1cblxuZnVuY3Rpb24gZ3Vlc3NDb21tYW5kICgpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKClcbiAgdmFyIHN0YWNrID0gKGVycm9yLnN0YWNrIHx8IGVycm9yKS50b1N0cmluZygpXG4gIHZhciBwYXQgPSAvY29tcGlsZVByb2NlZHVyZS4qXFxuXFxzKmF0LipcXCgoLiopXFwpLy5leGVjKHN0YWNrKVxuICBpZiAocGF0KSB7XG4gICAgcmV0dXJuIHBhdFsxXVxuICB9XG4gIHZhciBwYXQyID0gL2NvbXBpbGVQcm9jZWR1cmUuKlxcblxccyphdFxccysoLiopKFxcbnwkKS8uZXhlYyhzdGFjaylcbiAgaWYgKHBhdDIpIHtcbiAgICByZXR1cm4gcGF0MlsxXVxuICB9XG4gIHJldHVybiAndW5rbm93bidcbn1cblxuZnVuY3Rpb24gZ3Vlc3NDYWxsU2l0ZSAoKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcigpXG4gIHZhciBzdGFjayA9IChlcnJvci5zdGFjayB8fCBlcnJvcikudG9TdHJpbmcoKVxuICB2YXIgcGF0ID0gL2F0IFJFR0xDb21tYW5kLipcXG5cXHMrYXQuKlxcKCguKilcXCkvLmV4ZWMoc3RhY2spXG4gIGlmIChwYXQpIHtcbiAgICByZXR1cm4gcGF0WzFdXG4gIH1cbiAgdmFyIHBhdDIgPSAvYXQgUkVHTENvbW1hbmQuKlxcblxccythdFxccysoLiopXFxuLy5leGVjKHN0YWNrKVxuICBpZiAocGF0Mikge1xuICAgIHJldHVybiBwYXQyWzFdXG4gIH1cbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG5mdW5jdGlvbiBwYXJzZVNvdXJjZSAoc291cmNlLCBjb21tYW5kKSB7XG4gIHZhciBsaW5lcyA9IHNvdXJjZS5zcGxpdCgnXFxuJylcbiAgdmFyIGxpbmVOdW1iZXIgPSAxXG4gIHZhciBmaWxlTnVtYmVyID0gMFxuICB2YXIgZmlsZXMgPSB7XG4gICAgdW5rbm93bjogbmV3IFNoYWRlckZpbGUoKSxcbiAgICAwOiBuZXcgU2hhZGVyRmlsZSgpXG4gIH1cbiAgZmlsZXMudW5rbm93bi5uYW1lID0gZmlsZXNbMF0ubmFtZSA9IGNvbW1hbmQgfHwgZ3Vlc3NDb21tYW5kKClcbiAgZmlsZXMudW5rbm93bi5saW5lcy5wdXNoKG5ldyBTaGFkZXJMaW5lKDAsICcnKSlcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7ICsraSkge1xuICAgIHZhciBsaW5lID0gbGluZXNbaV1cbiAgICB2YXIgcGFydHMgPSAvXlxccyojXFxzKihcXHcrKVxccysoLispXFxzKiQvLmV4ZWMobGluZSlcbiAgICBpZiAocGFydHMpIHtcbiAgICAgIHN3aXRjaCAocGFydHNbMV0pIHtcbiAgICAgICAgY2FzZSAnbGluZSc6XG4gICAgICAgICAgdmFyIGxpbmVOdW1iZXJJbmZvID0gLyhcXGQrKShcXHMrXFxkKyk/Ly5leGVjKHBhcnRzWzJdKVxuICAgICAgICAgIGlmIChsaW5lTnVtYmVySW5mbykge1xuICAgICAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXJJbmZvWzFdIHwgMFxuICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXJJbmZvWzJdKSB7XG4gICAgICAgICAgICAgIGZpbGVOdW1iZXIgPSBsaW5lTnVtYmVySW5mb1syXSB8IDBcbiAgICAgICAgICAgICAgaWYgKCEoZmlsZU51bWJlciBpbiBmaWxlcykpIHtcbiAgICAgICAgICAgICAgICBmaWxlc1tmaWxlTnVtYmVyXSA9IG5ldyBTaGFkZXJGaWxlKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkZWZpbmUnOlxuICAgICAgICAgIHZhciBuYW1lSW5mbyA9IC9TSEFERVJfTkFNRShfQjY0KT9cXHMrKC4qKSQvLmV4ZWMocGFydHNbMl0pXG4gICAgICAgICAgaWYgKG5hbWVJbmZvKSB7XG4gICAgICAgICAgICBmaWxlc1tmaWxlTnVtYmVyXS5uYW1lID0gKG5hbWVJbmZvWzFdXG4gICAgICAgICAgICAgID8gZGVjb2RlQjY0KG5hbWVJbmZvWzJdKVxuICAgICAgICAgICAgICA6IG5hbWVJbmZvWzJdKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICBmaWxlc1tmaWxlTnVtYmVyXS5saW5lcy5wdXNoKG5ldyBTaGFkZXJMaW5lKGxpbmVOdW1iZXIrKywgbGluZSkpXG4gIH1cbiAgT2JqZWN0LmtleXMoZmlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGZpbGVOdW1iZXIpIHtcbiAgICB2YXIgZmlsZSA9IGZpbGVzW2ZpbGVOdW1iZXJdXG4gICAgZmlsZS5saW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICBmaWxlLmluZGV4W2xpbmUubnVtYmVyXSA9IGxpbmVcbiAgICB9KVxuICB9KVxuICByZXR1cm4gZmlsZXNcbn1cblxuZnVuY3Rpb24gcGFyc2VFcnJvckxvZyAoZXJyTG9nKSB7XG4gIHZhciByZXN1bHQgPSBbXVxuICBlcnJMb2cuc3BsaXQoJ1xcbicpLmZvckVhY2goZnVuY3Rpb24gKGVyck1zZykge1xuICAgIGlmIChlcnJNc2cubGVuZ3RoIDwgNSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHZhciBwYXJ0cyA9IC9eRVJST1I6XFxzKyhcXGQrKTooXFxkKyk6XFxzKiguKikkLy5leGVjKGVyck1zZylcbiAgICBpZiAocGFydHMpIHtcbiAgICAgIHJlc3VsdC5wdXNoKG5ldyBTaGFkZXJFcnJvcihcbiAgICAgICAgcGFydHNbMV0gfCAwLFxuICAgICAgICBwYXJ0c1syXSB8IDAsXG4gICAgICAgIHBhcnRzWzNdLnRyaW0oKSkpXG4gICAgfSBlbHNlIGlmIChlcnJNc2cubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0LnB1c2gobmV3IFNoYWRlckVycm9yKCd1bmtub3duJywgMCwgZXJyTXNnKSlcbiAgICB9XG4gIH0pXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gYW5ub3RhdGVGaWxlcyAoZmlsZXMsIGVycm9ycykge1xuICBlcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICB2YXIgZmlsZSA9IGZpbGVzW2Vycm9yLmZpbGVdXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHZhciBsaW5lID0gZmlsZS5pbmRleFtlcnJvci5saW5lXVxuICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgbGluZS5lcnJvcnMucHVzaChlcnJvcilcbiAgICAgICAgZmlsZS5oYXNFcnJvcnMgPSB0cnVlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBmaWxlcy51bmtub3duLmhhc0Vycm9ycyA9IHRydWVcbiAgICBmaWxlcy51bmtub3duLmxpbmVzWzBdLmVycm9ycy5wdXNoKGVycm9yKVxuICB9KVxufVxuXG5mdW5jdGlvbiBjaGVja1NoYWRlckVycm9yIChnbCwgc2hhZGVyLCBzb3VyY2UsIHR5cGUsIGNvbW1hbmQpIHtcbiAgaWYgKCFnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykpIHtcbiAgICB2YXIgZXJyTG9nID0gZ2wuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpXG4gICAgdmFyIHR5cGVOYW1lID0gdHlwZSA9PT0gZ2wuRlJBR01FTlRfU0hBREVSID8gJ2ZyYWdtZW50JyA6ICd2ZXJ0ZXgnXG4gICAgY2hlY2tDb21tYW5kVHlwZShzb3VyY2UsICdzdHJpbmcnLCB0eXBlTmFtZSArICcgc2hhZGVyIHNvdXJjZSBtdXN0IGJlIGEgc3RyaW5nJywgY29tbWFuZClcbiAgICB2YXIgZmlsZXMgPSBwYXJzZVNvdXJjZShzb3VyY2UsIGNvbW1hbmQpXG4gICAgdmFyIGVycm9ycyA9IHBhcnNlRXJyb3JMb2coZXJyTG9nKVxuICAgIGFubm90YXRlRmlsZXMoZmlsZXMsIGVycm9ycylcblxuICAgIE9iamVjdC5rZXlzKGZpbGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlTnVtYmVyKSB7XG4gICAgICB2YXIgZmlsZSA9IGZpbGVzW2ZpbGVOdW1iZXJdXG4gICAgICBpZiAoIWZpbGUuaGFzRXJyb3JzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB2YXIgc3RyaW5ncyA9IFsnJ11cbiAgICAgIHZhciBzdHlsZXMgPSBbJyddXG5cbiAgICAgIGZ1bmN0aW9uIHB1c2ggKHN0ciwgc3R5bGUpIHtcbiAgICAgICAgc3RyaW5ncy5wdXNoKHN0cilcbiAgICAgICAgc3R5bGVzLnB1c2goc3R5bGUgfHwgJycpXG4gICAgICB9XG5cbiAgICAgIHB1c2goJ2ZpbGUgbnVtYmVyICcgKyBmaWxlTnVtYmVyICsgJzogJyArIGZpbGUubmFtZSArICdcXG4nLCAnY29sb3I6cmVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Zm9udC13ZWlnaHQ6Ym9sZCcpXG5cbiAgICAgIGZpbGUubGluZXMuZm9yRWFjaChmdW5jdGlvbiAobGluZSkge1xuICAgICAgICBpZiAobGluZS5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHB1c2gobGVmdFBhZChsaW5lLm51bWJlciwgNCkgKyAnfCAgJywgJ2JhY2tncm91bmQtY29sb3I6eWVsbG93OyBmb250LXdlaWdodDpib2xkJylcbiAgICAgICAgICBwdXNoKGxpbmUubGluZSArIGVuZGwsICdjb2xvcjpyZWQ7IGJhY2tncm91bmQtY29sb3I6eWVsbG93OyBmb250LXdlaWdodDpib2xkJylcblxuICAgICAgICAgIC8vIHRyeSB0byBndWVzcyB0b2tlblxuICAgICAgICAgIHZhciBvZmZzZXQgPSAwXG4gICAgICAgICAgbGluZS5lcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZXJyb3IubWVzc2FnZVxuICAgICAgICAgICAgdmFyIHRva2VuID0gL15cXHMqJyguKiknXFxzKjpcXHMqKC4qKSQvLmV4ZWMobWVzc2FnZSlcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICB2YXIgdG9rZW5QYXQgPSB0b2tlblsxXVxuICAgICAgICAgICAgICBtZXNzYWdlID0gdG9rZW5bMl1cbiAgICAgICAgICAgICAgc3dpdGNoICh0b2tlblBhdCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Fzc2lnbic6XG4gICAgICAgICAgICAgICAgICB0b2tlblBhdCA9ICc9J1xuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvZmZzZXQgPSBNYXRoLm1heChsaW5lLmxpbmUuaW5kZXhPZih0b2tlblBhdCwgb2Zmc2V0KSwgMClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9mZnNldCA9IDBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHVzaChsZWZ0UGFkKCd8ICcsIDYpKVxuICAgICAgICAgICAgcHVzaChsZWZ0UGFkKCdeXl4nLCBvZmZzZXQgKyAzKSArIGVuZGwsICdmb250LXdlaWdodDpib2xkJylcbiAgICAgICAgICAgIHB1c2gobGVmdFBhZCgnfCAnLCA2KSlcbiAgICAgICAgICAgIHB1c2gobWVzc2FnZSArIGVuZGwsICdmb250LXdlaWdodDpib2xkJylcbiAgICAgICAgICB9KVxuICAgICAgICAgIHB1c2gobGVmdFBhZCgnfCAnLCA2KSArIGVuZGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHVzaChsZWZ0UGFkKGxpbmUubnVtYmVyLCA0KSArICd8ICAnKVxuICAgICAgICAgIHB1c2gobGluZS5saW5lICsgZW5kbCwgJ2NvbG9yOnJlZCcpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhd2luZG93LmNocm9tZSkge1xuICAgICAgICBzdHlsZXNbMF0gPSBzdHJpbmdzLmpvaW4oJyVjJylcbiAgICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgc3R5bGVzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coc3RyaW5ncy5qb2luKCcnKSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY2hlY2sucmFpc2UoJ0Vycm9yIGNvbXBpbGluZyAnICsgdHlwZU5hbWUgKyAnIHNoYWRlciwgJyArIGZpbGVzWzBdLm5hbWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tMaW5rRXJyb3IgKGdsLCBwcm9ncmFtLCBmcmFnU2hhZGVyLCB2ZXJ0U2hhZGVyLCBjb21tYW5kKSB7XG4gIGlmICghZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykpIHtcbiAgICB2YXIgZXJyTG9nID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSlcbiAgICB2YXIgZnJhZ1BhcnNlID0gcGFyc2VTb3VyY2UoZnJhZ1NoYWRlciwgY29tbWFuZClcbiAgICB2YXIgdmVydFBhcnNlID0gcGFyc2VTb3VyY2UodmVydFNoYWRlciwgY29tbWFuZClcblxuICAgIHZhciBoZWFkZXIgPSAnRXJyb3IgbGlua2luZyBwcm9ncmFtIHdpdGggdmVydGV4IHNoYWRlciwgXCInICtcbiAgICAgIHZlcnRQYXJzZVswXS5uYW1lICsgJ1wiLCBhbmQgZnJhZ21lbnQgc2hhZGVyIFwiJyArIGZyYWdQYXJzZVswXS5uYW1lICsgJ1wiJ1xuXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUubG9nKCclYycgKyBoZWFkZXIgKyBlbmRsICsgJyVjJyArIGVyckxvZyxcbiAgICAgICAgJ2NvbG9yOnJlZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2ZvbnQtd2VpZ2h0OmJvbGQnLFxuICAgICAgICAnY29sb3I6cmVkJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coaGVhZGVyICsgZW5kbCArIGVyckxvZylcbiAgICB9XG4gICAgY2hlY2sucmFpc2UoaGVhZGVyKVxuICB9XG59XG5cbmZ1bmN0aW9uIHNhdmVDb21tYW5kUmVmIChvYmplY3QpIHtcbiAgb2JqZWN0Ll9jb21tYW5kUmVmID0gZ3Vlc3NDb21tYW5kKClcbn1cblxuZnVuY3Rpb24gc2F2ZURyYXdDb21tYW5kSW5mbyAob3B0cywgdW5pZm9ybXMsIGF0dHJpYnV0ZXMsIHN0cmluZ1N0b3JlKSB7XG4gIHNhdmVDb21tYW5kUmVmKG9wdHMpXG5cbiAgZnVuY3Rpb24gaWQgKHN0cikge1xuICAgIGlmIChzdHIpIHtcbiAgICAgIHJldHVybiBzdHJpbmdTdG9yZS5pZChzdHIpXG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cbiAgb3B0cy5fZnJhZ0lkID0gaWQob3B0cy5zdGF0aWMuZnJhZylcbiAgb3B0cy5fdmVydElkID0gaWQob3B0cy5zdGF0aWMudmVydClcblxuICBmdW5jdGlvbiBhZGRQcm9wcyAoZGljdCwgc2V0KSB7XG4gICAgT2JqZWN0LmtleXMoc2V0KS5mb3JFYWNoKGZ1bmN0aW9uICh1KSB7XG4gICAgICBkaWN0W3N0cmluZ1N0b3JlLmlkKHUpXSA9IHRydWVcbiAgICB9KVxuICB9XG5cbiAgdmFyIHVuaWZvcm1TZXQgPSBvcHRzLl91bmlmb3JtU2V0ID0ge31cbiAgYWRkUHJvcHModW5pZm9ybVNldCwgdW5pZm9ybXMuc3RhdGljKVxuICBhZGRQcm9wcyh1bmlmb3JtU2V0LCB1bmlmb3Jtcy5keW5hbWljKVxuXG4gIHZhciBhdHRyaWJ1dGVTZXQgPSBvcHRzLl9hdHRyaWJ1dGVTZXQgPSB7fVxuICBhZGRQcm9wcyhhdHRyaWJ1dGVTZXQsIGF0dHJpYnV0ZXMuc3RhdGljKVxuICBhZGRQcm9wcyhhdHRyaWJ1dGVTZXQsIGF0dHJpYnV0ZXMuZHluYW1pYylcblxuICBvcHRzLl9oYXNDb3VudCA9IChcbiAgICAnY291bnQnIGluIG9wdHMuc3RhdGljIHx8XG4gICAgJ2NvdW50JyBpbiBvcHRzLmR5bmFtaWMgfHxcbiAgICAnZWxlbWVudHMnIGluIG9wdHMuc3RhdGljIHx8XG4gICAgJ2VsZW1lbnRzJyBpbiBvcHRzLmR5bmFtaWMpXG59XG5cbmZ1bmN0aW9uIGNvbW1hbmRSYWlzZSAobWVzc2FnZSwgY29tbWFuZCkge1xuICB2YXIgY2FsbFNpdGUgPSBndWVzc0NhbGxTaXRlKClcbiAgcmFpc2UobWVzc2FnZSArXG4gICAgJyBpbiBjb21tYW5kICcgKyAoY29tbWFuZCB8fCBndWVzc0NvbW1hbmQoKSkgK1xuICAgIChjYWxsU2l0ZSA9PT0gJ3Vua25vd24nID8gJycgOiAnIGNhbGxlZCBmcm9tICcgKyBjYWxsU2l0ZSkpXG59XG5cbmZ1bmN0aW9uIGNoZWNrQ29tbWFuZCAocHJlZCwgbWVzc2FnZSwgY29tbWFuZCkge1xuICBpZiAoIXByZWQpIHtcbiAgICBjb21tYW5kUmFpc2UobWVzc2FnZSwgY29tbWFuZCB8fCBndWVzc0NvbW1hbmQoKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1BhcmFtZXRlckNvbW1hbmQgKHBhcmFtLCBwb3NzaWJpbGl0aWVzLCBtZXNzYWdlLCBjb21tYW5kKSB7XG4gIGlmICghKHBhcmFtIGluIHBvc3NpYmlsaXRpZXMpKSB7XG4gICAgY29tbWFuZFJhaXNlKFxuICAgICAgJ3Vua25vd24gcGFyYW1ldGVyICgnICsgcGFyYW0gKyAnKScgKyBlbmNvbG9uKG1lc3NhZ2UpICtcbiAgICAgICcuIHBvc3NpYmxlIHZhbHVlczogJyArIE9iamVjdC5rZXlzKHBvc3NpYmlsaXRpZXMpLmpvaW4oKSxcbiAgICAgIGNvbW1hbmQgfHwgZ3Vlc3NDb21tYW5kKCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tDb21tYW5kVHlwZSAodmFsdWUsIHR5cGUsIG1lc3NhZ2UsIGNvbW1hbmQpIHtcbiAgaWYgKCFzdGFuZGFyZFR5cGVFaCh2YWx1ZSwgdHlwZSkpIHtcbiAgICBjb21tYW5kUmFpc2UoXG4gICAgICAnaW52YWxpZCBwYXJhbWV0ZXIgdHlwZScgKyBlbmNvbG9uKG1lc3NhZ2UpICtcbiAgICAgICcuIGV4cGVjdGVkICcgKyB0eXBlICsgJywgZ290ICcgKyAodHlwZW9mIHZhbHVlKSxcbiAgICAgIGNvbW1hbmQgfHwgZ3Vlc3NDb21tYW5kKCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tPcHRpb25hbCAoYmxvY2spIHtcbiAgYmxvY2soKVxufVxuXG5mdW5jdGlvbiBjaGVja0ZyYW1lYnVmZmVyRm9ybWF0IChhdHRhY2htZW50LCB0ZXhGb3JtYXRzLCByYkZvcm1hdHMpIHtcbiAgaWYgKGF0dGFjaG1lbnQudGV4dHVyZSkge1xuICAgIGNoZWNrT25lT2YoXG4gICAgICBhdHRhY2htZW50LnRleHR1cmUuX3RleHR1cmUuaW50ZXJuYWxmb3JtYXQsXG4gICAgICB0ZXhGb3JtYXRzLFxuICAgICAgJ3Vuc3VwcG9ydGVkIHRleHR1cmUgZm9ybWF0IGZvciBhdHRhY2htZW50JylcbiAgfSBlbHNlIHtcbiAgICBjaGVja09uZU9mKFxuICAgICAgYXR0YWNobWVudC5yZW5kZXJidWZmZXIuX3JlbmRlcmJ1ZmZlci5mb3JtYXQsXG4gICAgICByYkZvcm1hdHMsXG4gICAgICAndW5zdXBwb3J0ZWQgcmVuZGVyYnVmZmVyIGZvcm1hdCBmb3IgYXR0YWNobWVudCcpXG4gIH1cbn1cblxudmFyIEdMX0NMQU1QX1RPX0VER0UgPSAweDgxMkZcblxudmFyIEdMX05FQVJFU1QgPSAweDI2MDBcbnZhciBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUID0gMHgyNzAwXG52YXIgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUID0gMHgyNzAxXG52YXIgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSID0gMHgyNzAyXG52YXIgR0xfTElORUFSX01JUE1BUF9MSU5FQVIgPSAweDI3MDNcblxudmFyIEdMX0JZVEUgPSA1MTIwXG52YXIgR0xfVU5TSUdORURfQllURSA9IDUxMjFcbnZhciBHTF9TSE9SVCA9IDUxMjJcbnZhciBHTF9VTlNJR05FRF9TSE9SVCA9IDUxMjNcbnZhciBHTF9JTlQgPSA1MTI0XG52YXIgR0xfVU5TSUdORURfSU5UID0gNTEyNVxudmFyIEdMX0ZMT0FUID0gNTEyNlxuXG52YXIgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCA9IDB4ODAzM1xudmFyIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEgPSAweDgwMzRcbnZhciBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSA9IDB4ODM2M1xudmFyIEdMX1VOU0lHTkVEX0lOVF8yNF84X1dFQkdMID0gMHg4NEZBXG5cbnZhciBHTF9IQUxGX0ZMT0FUX09FUyA9IDB4OEQ2MVxuXG52YXIgVFlQRV9TSVpFID0ge31cblxuVFlQRV9TSVpFW0dMX0JZVEVdID1cblRZUEVfU0laRVtHTF9VTlNJR05FRF9CWVRFXSA9IDFcblxuVFlQRV9TSVpFW0dMX1NIT1JUXSA9XG5UWVBFX1NJWkVbR0xfVU5TSUdORURfU0hPUlRdID1cblRZUEVfU0laRVtHTF9IQUxGX0ZMT0FUX09FU10gPVxuVFlQRV9TSVpFW0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81XSA9XG5UWVBFX1NJWkVbR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF0gPVxuVFlQRV9TSVpFW0dMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFdID0gMlxuXG5UWVBFX1NJWkVbR0xfSU5UXSA9XG5UWVBFX1NJWkVbR0xfVU5TSUdORURfSU5UXSA9XG5UWVBFX1NJWkVbR0xfRkxPQVRdID1cblRZUEVfU0laRVtHTF9VTlNJR05FRF9JTlRfMjRfOF9XRUJHTF0gPSA0XG5cbmZ1bmN0aW9uIHBpeGVsU2l6ZSAodHlwZSwgY2hhbm5lbHMpIHtcbiAgaWYgKHR5cGUgPT09IEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEgfHxcbiAgICAgIHR5cGUgPT09IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQgfHxcbiAgICAgIHR5cGUgPT09IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81KSB7XG4gICAgcmV0dXJuIDJcbiAgfSBlbHNlIGlmICh0eXBlID09PSBHTF9VTlNJR05FRF9JTlRfMjRfOF9XRUJHTCkge1xuICAgIHJldHVybiA0XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFRZUEVfU0laRVt0eXBlXSAqIGNoYW5uZWxzXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQb3cyICh2KSB7XG4gIHJldHVybiAhKHYgJiAodiAtIDEpKSAmJiAoISF2KVxufVxuXG5mdW5jdGlvbiBjaGVja1RleHR1cmUyRCAoaW5mbywgbWlwRGF0YSwgbGltaXRzKSB7XG4gIHZhciBpXG4gIHZhciB3ID0gbWlwRGF0YS53aWR0aFxuICB2YXIgaCA9IG1pcERhdGEuaGVpZ2h0XG4gIHZhciBjID0gbWlwRGF0YS5jaGFubmVsc1xuXG4gIC8vIENoZWNrIHRleHR1cmUgc2hhcGVcbiAgY2hlY2sodyA+IDAgJiYgdyA8PSBsaW1pdHMubWF4VGV4dHVyZVNpemUgJiZcbiAgICAgICAgaCA+IDAgJiYgaCA8PSBsaW1pdHMubWF4VGV4dHVyZVNpemUsXG4gICdpbnZhbGlkIHRleHR1cmUgc2hhcGUnKVxuXG4gIC8vIGNoZWNrIHdyYXAgbW9kZVxuICBpZiAoaW5mby53cmFwUyAhPT0gR0xfQ0xBTVBfVE9fRURHRSB8fCBpbmZvLndyYXBUICE9PSBHTF9DTEFNUF9UT19FREdFKSB7XG4gICAgY2hlY2soaXNQb3cyKHcpICYmIGlzUG93MihoKSxcbiAgICAgICdpbmNvbXBhdGlibGUgd3JhcCBtb2RlIGZvciB0ZXh0dXJlLCBib3RoIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBwb3dlciBvZiAyJylcbiAgfVxuXG4gIGlmIChtaXBEYXRhLm1pcG1hc2sgPT09IDEpIHtcbiAgICBpZiAodyAhPT0gMSAmJiBoICE9PSAxKSB7XG4gICAgICBjaGVjayhcbiAgICAgICAgaW5mby5taW5GaWx0ZXIgIT09IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QgJiZcbiAgICAgICAgaW5mby5taW5GaWx0ZXIgIT09IEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiAmJlxuICAgICAgICBpbmZvLm1pbkZpbHRlciAhPT0gR0xfTElORUFSX01JUE1BUF9ORUFSRVNUICYmXG4gICAgICAgIGluZm8ubWluRmlsdGVyICE9PSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUixcbiAgICAgICAgJ21pbiBmaWx0ZXIgcmVxdWlyZXMgbWlwbWFwJylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gdGV4dHVyZSBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBjaGVjayhpc1BvdzIodykgJiYgaXNQb3cyKGgpLFxuICAgICAgJ3RleHR1cmUgbXVzdCBiZSBhIHNxdWFyZSBwb3dlciBvZiAyIHRvIHN1cHBvcnQgbWlwbWFwcGluZycpXG4gICAgY2hlY2sobWlwRGF0YS5taXBtYXNrID09PSAodyA8PCAxKSAtIDEsXG4gICAgICAnbWlzc2luZyBvciBpbmNvbXBsZXRlIG1pcG1hcCBkYXRhJylcbiAgfVxuXG4gIGlmIChtaXBEYXRhLnR5cGUgPT09IEdMX0ZMT0FUKSB7XG4gICAgaWYgKGxpbWl0cy5leHRlbnNpb25zLmluZGV4T2YoJ29lc190ZXh0dXJlX2Zsb2F0X2xpbmVhcicpIDwgMCkge1xuICAgICAgY2hlY2soaW5mby5taW5GaWx0ZXIgPT09IEdMX05FQVJFU1QgJiYgaW5mby5tYWdGaWx0ZXIgPT09IEdMX05FQVJFU1QsXG4gICAgICAgICdmaWx0ZXIgbm90IHN1cHBvcnRlZCwgbXVzdCBlbmFibGUgb2VzX3RleHR1cmVfZmxvYXRfbGluZWFyJylcbiAgICB9XG4gICAgY2hlY2soIWluZm8uZ2VuTWlwbWFwcyxcbiAgICAgICdtaXBtYXAgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIHdpdGggZmxvYXQgdGV4dHVyZXMnKVxuICB9XG5cbiAgLy8gY2hlY2sgaW1hZ2UgY29tcGxldGVcbiAgdmFyIG1pcGltYWdlcyA9IG1pcERhdGEuaW1hZ2VzXG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgaWYgKG1pcGltYWdlc1tpXSkge1xuICAgICAgdmFyIG13ID0gdyA+PiBpXG4gICAgICB2YXIgbWggPSBoID4+IGlcbiAgICAgIGNoZWNrKG1pcERhdGEubWlwbWFzayAmICgxIDw8IGkpLCAnbWlzc2luZyBtaXBtYXAgZGF0YScpXG5cbiAgICAgIHZhciBpbWcgPSBtaXBpbWFnZXNbaV1cblxuICAgICAgY2hlY2soXG4gICAgICAgIGltZy53aWR0aCA9PT0gbXcgJiZcbiAgICAgICAgaW1nLmhlaWdodCA9PT0gbWgsXG4gICAgICAgICdpbnZhbGlkIHNoYXBlIGZvciBtaXAgaW1hZ2VzJylcblxuICAgICAgY2hlY2soXG4gICAgICAgIGltZy5mb3JtYXQgPT09IG1pcERhdGEuZm9ybWF0ICYmXG4gICAgICAgIGltZy5pbnRlcm5hbGZvcm1hdCA9PT0gbWlwRGF0YS5pbnRlcm5hbGZvcm1hdCAmJlxuICAgICAgICBpbWcudHlwZSA9PT0gbWlwRGF0YS50eXBlLFxuICAgICAgICAnaW5jb21wYXRpYmxlIHR5cGUgZm9yIG1pcCBpbWFnZScpXG5cbiAgICAgIGlmIChpbWcuY29tcHJlc3NlZCkge1xuICAgICAgICAvLyBUT0RPOiBjaGVjayBzaXplIGZvciBjb21wcmVzc2VkIGltYWdlc1xuICAgICAgfSBlbHNlIGlmIChpbWcuZGF0YSkge1xuICAgICAgICAvLyBjaGVjayhpbWcuZGF0YS5ieXRlTGVuZ3RoID09PSBtdyAqIG1oICpcbiAgICAgICAgLy8gTWF0aC5tYXgocGl4ZWxTaXplKGltZy50eXBlLCBjKSwgaW1nLnVucGFja0FsaWdubWVudCksXG4gICAgICAgIHZhciByb3dTaXplID0gTWF0aC5jZWlsKHBpeGVsU2l6ZShpbWcudHlwZSwgYykgKiBtdyAvIGltZy51bnBhY2tBbGlnbm1lbnQpICogaW1nLnVucGFja0FsaWdubWVudFxuICAgICAgICBjaGVjayhpbWcuZGF0YS5ieXRlTGVuZ3RoID09PSByb3dTaXplICogbWgsXG4gICAgICAgICAgJ2ludmFsaWQgZGF0YSBmb3IgaW1hZ2UsIGJ1ZmZlciBzaXplIGlzIGluY29uc2lzdGVudCB3aXRoIGltYWdlIGZvcm1hdCcpXG4gICAgICB9IGVsc2UgaWYgKGltZy5lbGVtZW50KSB7XG4gICAgICAgIC8vIFRPRE86IGNoZWNrIGVsZW1lbnQgY2FuIGJlIGxvYWRlZFxuICAgICAgfSBlbHNlIGlmIChpbWcuY29weSkge1xuICAgICAgICAvLyBUT0RPOiBjaGVjayBjb21wYXRpYmxlIGZvcm1hdCBhbmQgdHlwZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWluZm8uZ2VuTWlwbWFwcykge1xuICAgICAgY2hlY2soKG1pcERhdGEubWlwbWFzayAmICgxIDw8IGkpKSA9PT0gMCwgJ2V4dHJhIG1pcG1hcCBkYXRhJylcbiAgICB9XG4gIH1cblxuICBpZiAobWlwRGF0YS5jb21wcmVzc2VkKSB7XG4gICAgY2hlY2soIWluZm8uZ2VuTWlwbWFwcyxcbiAgICAgICdtaXBtYXAgZ2VuZXJhdGlvbiBmb3IgY29tcHJlc3NlZCBpbWFnZXMgbm90IHN1cHBvcnRlZCcpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tUZXh0dXJlQ3ViZSAodGV4dHVyZSwgaW5mbywgZmFjZXMsIGxpbWl0cykge1xuICB2YXIgdyA9IHRleHR1cmUud2lkdGhcbiAgdmFyIGggPSB0ZXh0dXJlLmhlaWdodFxuICB2YXIgYyA9IHRleHR1cmUuY2hhbm5lbHNcblxuICAvLyBDaGVjayB0ZXh0dXJlIHNoYXBlXG4gIGNoZWNrKFxuICAgIHcgPiAwICYmIHcgPD0gbGltaXRzLm1heFRleHR1cmVTaXplICYmIGggPiAwICYmIGggPD0gbGltaXRzLm1heFRleHR1cmVTaXplLFxuICAgICdpbnZhbGlkIHRleHR1cmUgc2hhcGUnKVxuICBjaGVjayhcbiAgICB3ID09PSBoLFxuICAgICdjdWJlIG1hcCBtdXN0IGJlIHNxdWFyZScpXG4gIGNoZWNrKFxuICAgIGluZm8ud3JhcFMgPT09IEdMX0NMQU1QX1RPX0VER0UgJiYgaW5mby53cmFwVCA9PT0gR0xfQ0xBTVBfVE9fRURHRSxcbiAgICAnd3JhcCBtb2RlIG5vdCBzdXBwb3J0ZWQgYnkgY3ViZSBtYXAnKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZmFjZXMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgZmFjZSA9IGZhY2VzW2ldXG4gICAgY2hlY2soXG4gICAgICBmYWNlLndpZHRoID09PSB3ICYmIGZhY2UuaGVpZ2h0ID09PSBoLFxuICAgICAgJ2luY29uc2lzdGVudCBjdWJlIG1hcCBmYWNlIHNoYXBlJylcblxuICAgIGlmIChpbmZvLmdlbk1pcG1hcHMpIHtcbiAgICAgIGNoZWNrKCFmYWNlLmNvbXByZXNzZWQsXG4gICAgICAgICdjYW4gbm90IGdlbmVyYXRlIG1pcG1hcCBmb3IgY29tcHJlc3NlZCB0ZXh0dXJlcycpXG4gICAgICBjaGVjayhmYWNlLm1pcG1hc2sgPT09IDEsXG4gICAgICAgICdjYW4gbm90IHNwZWNpZnkgbWlwbWFwcyBhbmQgZ2VuZXJhdGUgbWlwbWFwcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IGNoZWNrIG1pcCBhbmQgZmlsdGVyIG1vZGVcbiAgICB9XG5cbiAgICB2YXIgbWlwbWFwcyA9IGZhY2UuaW1hZ2VzXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjsgKytqKSB7XG4gICAgICB2YXIgaW1nID0gbWlwbWFwc1tqXVxuICAgICAgaWYgKGltZykge1xuICAgICAgICB2YXIgbXcgPSB3ID4+IGpcbiAgICAgICAgdmFyIG1oID0gaCA+PiBqXG4gICAgICAgIGNoZWNrKGZhY2UubWlwbWFzayAmICgxIDw8IGopLCAnbWlzc2luZyBtaXBtYXAgZGF0YScpXG4gICAgICAgIGNoZWNrKFxuICAgICAgICAgIGltZy53aWR0aCA9PT0gbXcgJiZcbiAgICAgICAgICBpbWcuaGVpZ2h0ID09PSBtaCxcbiAgICAgICAgICAnaW52YWxpZCBzaGFwZSBmb3IgbWlwIGltYWdlcycpXG4gICAgICAgIGNoZWNrKFxuICAgICAgICAgIGltZy5mb3JtYXQgPT09IHRleHR1cmUuZm9ybWF0ICYmXG4gICAgICAgICAgaW1nLmludGVybmFsZm9ybWF0ID09PSB0ZXh0dXJlLmludGVybmFsZm9ybWF0ICYmXG4gICAgICAgICAgaW1nLnR5cGUgPT09IHRleHR1cmUudHlwZSxcbiAgICAgICAgICAnaW5jb21wYXRpYmxlIHR5cGUgZm9yIG1pcCBpbWFnZScpXG5cbiAgICAgICAgaWYgKGltZy5jb21wcmVzc2VkKSB7XG4gICAgICAgICAgLy8gVE9ETzogY2hlY2sgc2l6ZSBmb3IgY29tcHJlc3NlZCBpbWFnZXNcbiAgICAgICAgfSBlbHNlIGlmIChpbWcuZGF0YSkge1xuICAgICAgICAgIGNoZWNrKGltZy5kYXRhLmJ5dGVMZW5ndGggPT09IG13ICogbWggKlxuICAgICAgICAgICAgTWF0aC5tYXgocGl4ZWxTaXplKGltZy50eXBlLCBjKSwgaW1nLnVucGFja0FsaWdubWVudCksXG4gICAgICAgICAgJ2ludmFsaWQgZGF0YSBmb3IgaW1hZ2UsIGJ1ZmZlciBzaXplIGlzIGluY29uc2lzdGVudCB3aXRoIGltYWdlIGZvcm1hdCcpXG4gICAgICAgIH0gZWxzZSBpZiAoaW1nLmVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBUT0RPOiBjaGVjayBlbGVtZW50IGNhbiBiZSBsb2FkZWRcbiAgICAgICAgfSBlbHNlIGlmIChpbWcuY29weSkge1xuICAgICAgICAgIC8vIFRPRE86IGNoZWNrIGNvbXBhdGlibGUgZm9ybWF0IGFuZCB0eXBlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIGNoZWNrJDEgPSBleHRlbmQoY2hlY2ssIHtcbiAgb3B0aW9uYWw6IGNoZWNrT3B0aW9uYWwsXG4gIHJhaXNlOiByYWlzZSxcbiAgY29tbWFuZFJhaXNlOiBjb21tYW5kUmFpc2UsXG4gIGNvbW1hbmQ6IGNoZWNrQ29tbWFuZCxcbiAgcGFyYW1ldGVyOiBjaGVja1BhcmFtZXRlcixcbiAgY29tbWFuZFBhcmFtZXRlcjogY2hlY2tQYXJhbWV0ZXJDb21tYW5kLFxuICBjb25zdHJ1Y3RvcjogY2hlY2tDb25zdHJ1Y3RvcixcbiAgdHlwZTogY2hlY2tUeXBlT2YsXG4gIGNvbW1hbmRUeXBlOiBjaGVja0NvbW1hbmRUeXBlLFxuICBpc1R5cGVkQXJyYXk6IGNoZWNrSXNUeXBlZEFycmF5LFxuICBubmk6IGNoZWNrTm9uTmVnYXRpdmVJbnQsXG4gIG9uZU9mOiBjaGVja09uZU9mLFxuICBzaGFkZXJFcnJvcjogY2hlY2tTaGFkZXJFcnJvcixcbiAgbGlua0Vycm9yOiBjaGVja0xpbmtFcnJvcixcbiAgY2FsbFNpdGU6IGd1ZXNzQ2FsbFNpdGUsXG4gIHNhdmVDb21tYW5kUmVmOiBzYXZlQ29tbWFuZFJlZixcbiAgc2F2ZURyYXdJbmZvOiBzYXZlRHJhd0NvbW1hbmRJbmZvLFxuICBmcmFtZWJ1ZmZlckZvcm1hdDogY2hlY2tGcmFtZWJ1ZmZlckZvcm1hdCxcbiAgZ3Vlc3NDb21tYW5kOiBndWVzc0NvbW1hbmQsXG4gIHRleHR1cmUyRDogY2hlY2tUZXh0dXJlMkQsXG4gIHRleHR1cmVDdWJlOiBjaGVja1RleHR1cmVDdWJlXG59KTtcblxudmFyIFZBUklBQkxFX0NPVU5URVIgPSAwXG5cbnZhciBEWU5fRlVOQyA9IDBcbnZhciBEWU5fQ09OU1RBTlQgPSA1XG52YXIgRFlOX0FSUkFZID0gNlxuXG5mdW5jdGlvbiBEeW5hbWljVmFyaWFibGUgKHR5cGUsIGRhdGEpIHtcbiAgdGhpcy5pZCA9IChWQVJJQUJMRV9DT1VOVEVSKyspXG4gIHRoaXMudHlwZSA9IHR5cGVcbiAgdGhpcy5kYXRhID0gZGF0YVxufVxuXG5mdW5jdGlvbiBlc2NhcGVTdHIgKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJykucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpXG59XG5cbmZ1bmN0aW9uIHNwbGl0UGFydHMgKHN0cikge1xuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXVxuICB9XG5cbiAgdmFyIGZpcnN0Q2hhciA9IHN0ci5jaGFyQXQoMClcbiAgdmFyIGxhc3RDaGFyID0gc3RyLmNoYXJBdChzdHIubGVuZ3RoIC0gMSlcblxuICBpZiAoc3RyLmxlbmd0aCA+IDEgJiZcbiAgICAgIGZpcnN0Q2hhciA9PT0gbGFzdENoYXIgJiZcbiAgICAgIChmaXJzdENoYXIgPT09ICdcIicgfHwgZmlyc3RDaGFyID09PSBcIidcIikpIHtcbiAgICByZXR1cm4gWydcIicgKyBlc2NhcGVTdHIoc3RyLnN1YnN0cigxLCBzdHIubGVuZ3RoIC0gMikpICsgJ1wiJ11cbiAgfVxuXG4gIHZhciBwYXJ0cyA9IC9cXFsoZmFsc2V8dHJ1ZXxudWxsfFxcZCt8J1teJ10qJ3xcIlteXCJdKlwiKVxcXS8uZXhlYyhzdHIpXG4gIGlmIChwYXJ0cykge1xuICAgIHJldHVybiAoXG4gICAgICBzcGxpdFBhcnRzKHN0ci5zdWJzdHIoMCwgcGFydHMuaW5kZXgpKVxuICAgICAgICAuY29uY2F0KHNwbGl0UGFydHMocGFydHNbMV0pKVxuICAgICAgICAuY29uY2F0KHNwbGl0UGFydHMoc3RyLnN1YnN0cihwYXJ0cy5pbmRleCArIHBhcnRzWzBdLmxlbmd0aCkpKVxuICAgIClcbiAgfVxuXG4gIHZhciBzdWJwYXJ0cyA9IHN0ci5zcGxpdCgnLicpXG4gIGlmIChzdWJwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gWydcIicgKyBlc2NhcGVTdHIoc3RyKSArICdcIiddXG4gIH1cblxuICB2YXIgcmVzdWx0ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJwYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoc3BsaXRQYXJ0cyhzdWJwYXJ0c1tpXSkpXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB0b0FjY2Vzc29yU3RyaW5nIChzdHIpIHtcbiAgcmV0dXJuICdbJyArIHNwbGl0UGFydHMoc3RyKS5qb2luKCddWycpICsgJ10nXG59XG5cbmZ1bmN0aW9uIGRlZmluZUR5bmFtaWMgKHR5cGUsIGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBEeW5hbWljVmFyaWFibGUodHlwZSwgdG9BY2Nlc3NvclN0cmluZyhkYXRhICsgJycpKVxufVxuXG5mdW5jdGlvbiBpc0R5bmFtaWMgKHgpIHtcbiAgcmV0dXJuICh0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJyAmJiAheC5fcmVnbFR5cGUpIHx8ICh4IGluc3RhbmNlb2YgRHluYW1pY1ZhcmlhYmxlKVxufVxuXG5mdW5jdGlvbiB1bmJveCAoeCwgcGF0aCkge1xuICBpZiAodHlwZW9mIHggPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbmV3IER5bmFtaWNWYXJpYWJsZShEWU5fRlVOQywgeClcbiAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHggPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBuZXcgRHluYW1pY1ZhcmlhYmxlKERZTl9DT05TVEFOVCwgeClcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIG5ldyBEeW5hbWljVmFyaWFibGUoRFlOX0FSUkFZLCB4Lm1hcCgoeSwgaSkgPT4gdW5ib3goeSwgcGF0aCArICdbJyArIGkgKyAnXScpKSlcbiAgfSBlbHNlIGlmICh4IGluc3RhbmNlb2YgRHluYW1pY1ZhcmlhYmxlKSB7XG4gICAgcmV0dXJuIHhcbiAgfVxuICBjaGVjayQxKGZhbHNlLCAnaW52YWxpZCBvcHRpb24gdHlwZSBpbiB1bmlmb3JtICcgKyBwYXRoKVxufVxuXG52YXIgZHluYW1pYyA9IHtcbiAgRHluYW1pY1ZhcmlhYmxlOiBEeW5hbWljVmFyaWFibGUsXG4gIGRlZmluZTogZGVmaW5lRHluYW1pYyxcbiAgaXNEeW5hbWljOiBpc0R5bmFtaWMsXG4gIHVuYm94OiB1bmJveCxcbiAgYWNjZXNzb3I6IHRvQWNjZXNzb3JTdHJpbmdcbn07XG5cbi8qIGdsb2JhbHMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBjYW5jZWxBbmltYXRpb25GcmFtZSAqL1xudmFyIHJhZiA9IHtcbiAgbmV4dDogdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gZnVuY3Rpb24gKGNiKSB7IHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpIH1cbiAgICA6IGZ1bmN0aW9uIChjYikgeyByZXR1cm4gc2V0VGltZW91dChjYiwgMTYpIH0sXG4gIGNhbmNlbDogdHlwZW9mIGNhbmNlbEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nXG4gICAgPyBmdW5jdGlvbiAocmFmKSB7IHJldHVybiBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpIH1cbiAgICA6IGNsZWFyVGltZW91dFxufTtcblxuLyogZ2xvYmFscyBwZXJmb3JtYW5jZSAqL1xudmFyIGNsb2NrID0gKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcgJiYgcGVyZm9ybWFuY2Uubm93KVxuICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gcGVyZm9ybWFuY2Uubm93KCkgfVxuICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKyhuZXcgRGF0ZSgpKSB9O1xuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdTdG9yZSAoKSB7XG4gIHZhciBzdHJpbmdJZHMgPSB7ICcnOiAwIH1cbiAgdmFyIHN0cmluZ1ZhbHVlcyA9IFsnJ11cbiAgcmV0dXJuIHtcbiAgICBpZDogZnVuY3Rpb24gKHN0cikge1xuICAgICAgdmFyIHJlc3VsdCA9IHN0cmluZ0lkc1tzdHJdXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IHN0cmluZ0lkc1tzdHJdID0gc3RyaW5nVmFsdWVzLmxlbmd0aFxuICAgICAgc3RyaW5nVmFsdWVzLnB1c2goc3RyKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG5cbiAgICBzdHI6IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlc1tpZF1cbiAgICB9XG4gIH1cbn1cblxuLy8gQ29udGV4dCBhbmQgY2FudmFzIGNyZWF0aW9uIGhlbHBlciBmdW5jdGlvbnNcbmZ1bmN0aW9uIGNyZWF0ZUNhbnZhcyAoZWxlbWVudCwgb25Eb25lLCBwaXhlbFJhdGlvKSB7XG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxuICBleHRlbmQoY2FudmFzLnN0eWxlLCB7XG4gICAgYm9yZGVyOiAwLFxuICAgIG1hcmdpbjogMCxcbiAgICBwYWRkaW5nOiAwLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAwXG4gIH0pXG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FudmFzKVxuXG4gIGlmIChlbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgY2FudmFzLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xuICAgIGV4dGVuZChlbGVtZW50LnN0eWxlLCB7XG4gICAgICBtYXJnaW46IDAsXG4gICAgICBwYWRkaW5nOiAwXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2l6ZSAoKSB7XG4gICAgdmFyIHcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIHZhciBoID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgaWYgKGVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIHZhciBib3VuZHMgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICB3ID0gYm91bmRzLnJpZ2h0IC0gYm91bmRzLmxlZnRcbiAgICAgIGggPSBib3VuZHMuYm90dG9tIC0gYm91bmRzLnRvcFxuICAgIH1cbiAgICBjYW52YXMud2lkdGggPSBwaXhlbFJhdGlvICogd1xuICAgIGNhbnZhcy5oZWlnaHQgPSBwaXhlbFJhdGlvICogaFxuICAgIGV4dGVuZChjYW52YXMuc3R5bGUsIHtcbiAgICAgIHdpZHRoOiB3ICsgJ3B4JyxcbiAgICAgIGhlaWdodDogaCArICdweCdcbiAgICB9KVxuICB9XG5cbiAgdmFyIHJlc2l6ZU9ic2VydmVyXG4gIGlmIChlbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5ICYmIHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIGlnbm9yZSAnUmVzaXplT2JzZXJ2ZXInIGlzIG5vdCBkZWZpbmVkXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc2V0VGltZW91dCB0byBhdm9pZCBmbGlja2VyXG4gICAgICBzZXRUaW1lb3V0KHJlc2l6ZSlcbiAgICB9KVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudClcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplLCBmYWxzZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGVzdHJveSAoKSB7XG4gICAgaWYgKHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZSlcbiAgICB9XG4gICAgZWxlbWVudC5yZW1vdmVDaGlsZChjYW52YXMpXG4gIH1cblxuICByZXNpemUoKVxuXG4gIHJldHVybiB7XG4gICAgY2FudmFzOiBjYW52YXMsXG4gICAgb25EZXN0cm95OiBvbkRlc3Ryb3lcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0IChjYW52YXMsIGNvbnRleHRBdHRyaWJ1dGVzKSB7XG4gIGZ1bmN0aW9uIGdldCAobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQobmFtZSwgY29udGV4dEF0dHJpYnV0ZXMpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChcbiAgICBnZXQoJ3dlYmdsJykgfHxcbiAgICBnZXQoJ2V4cGVyaW1lbnRhbC13ZWJnbCcpIHx8XG4gICAgZ2V0KCd3ZWJnbC1leHBlcmltZW50YWwnKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQgKG9iaikge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBvYmoubm9kZU5hbWUgPT09ICdzdHJpbmcnICYmXG4gICAgdHlwZW9mIG9iai5hcHBlbmRDaGlsZCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBvYmouZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nXG4gIClcbn1cblxuZnVuY3Rpb24gaXNXZWJHTENvbnRleHQgKG9iaikge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBvYmouZHJhd0FycmF5cyA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgIHR5cGVvZiBvYmouZHJhd0VsZW1lbnRzID09PSAnZnVuY3Rpb24nXG4gIClcbn1cblxuZnVuY3Rpb24gcGFyc2VFeHRlbnNpb25zIChpbnB1dCkge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpbnB1dC5zcGxpdCgpXG4gIH1cbiAgY2hlY2skMShBcnJheS5pc0FycmF5KGlucHV0KSwgJ2ludmFsaWQgZXh0ZW5zaW9uIGFycmF5JylcbiAgcmV0dXJuIGlucHV0XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnQgKGRlc2MpIHtcbiAgaWYgKHR5cGVvZiBkZXNjID09PSAnc3RyaW5nJykge1xuICAgIGNoZWNrJDEodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJywgJ25vdCBzdXBwb3J0ZWQgb3V0c2lkZSBvZiBET00nKVxuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGRlc2MpXG4gIH1cbiAgcmV0dXJuIGRlc2Ncbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzIChhcmdzXykge1xuICB2YXIgYXJncyA9IGFyZ3NfIHx8IHt9XG4gIHZhciBlbGVtZW50LCBjb250YWluZXIsIGNhbnZhcywgZ2xcbiAgdmFyIGNvbnRleHRBdHRyaWJ1dGVzID0ge31cbiAgdmFyIGV4dGVuc2lvbnMgPSBbXVxuICB2YXIgb3B0aW9uYWxFeHRlbnNpb25zID0gW11cbiAgdmFyIHBpeGVsUmF0aW8gPSAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyAxIDogd2luZG93LmRldmljZVBpeGVsUmF0aW8pXG4gIHZhciBwcm9maWxlID0gZmFsc2VcbiAgdmFyIG9uRG9uZSA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjaGVjayQxLnJhaXNlKGVycilcbiAgICB9XG4gIH1cbiAgdmFyIG9uRGVzdHJveSA9IGZ1bmN0aW9uICgpIHt9XG4gIGlmICh0eXBlb2YgYXJncyA9PT0gJ3N0cmluZycpIHtcbiAgICBjaGVjayQxKFxuICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICdzZWxlY3RvciBxdWVyaWVzIG9ubHkgc3VwcG9ydGVkIGluIERPTSBlbnZpcm9tZW50cycpXG4gICAgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYXJncylcbiAgICBjaGVjayQxKGVsZW1lbnQsICdpbnZhbGlkIHF1ZXJ5IHN0cmluZyBmb3IgZWxlbWVudCcpXG4gIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQoYXJncykpIHtcbiAgICAgIGVsZW1lbnQgPSBhcmdzXG4gICAgfSBlbHNlIGlmIChpc1dlYkdMQ29udGV4dChhcmdzKSkge1xuICAgICAgZ2wgPSBhcmdzXG4gICAgICBjYW52YXMgPSBnbC5jYW52YXNcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2skMS5jb25zdHJ1Y3RvcihhcmdzKVxuICAgICAgaWYgKCdnbCcgaW4gYXJncykge1xuICAgICAgICBnbCA9IGFyZ3MuZ2xcbiAgICAgIH0gZWxzZSBpZiAoJ2NhbnZhcycgaW4gYXJncykge1xuICAgICAgICBjYW52YXMgPSBnZXRFbGVtZW50KGFyZ3MuY2FudmFzKVxuICAgICAgfSBlbHNlIGlmICgnY29udGFpbmVyJyBpbiBhcmdzKSB7XG4gICAgICAgIGNvbnRhaW5lciA9IGdldEVsZW1lbnQoYXJncy5jb250YWluZXIpXG4gICAgICB9XG4gICAgICBpZiAoJ2F0dHJpYnV0ZXMnIGluIGFyZ3MpIHtcbiAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMgPSBhcmdzLmF0dHJpYnV0ZXNcbiAgICAgICAgY2hlY2skMS50eXBlKGNvbnRleHRBdHRyaWJ1dGVzLCAnb2JqZWN0JywgJ2ludmFsaWQgY29udGV4dCBhdHRyaWJ1dGVzJylcbiAgICAgIH1cbiAgICAgIGlmICgnZXh0ZW5zaW9ucycgaW4gYXJncykge1xuICAgICAgICBleHRlbnNpb25zID0gcGFyc2VFeHRlbnNpb25zKGFyZ3MuZXh0ZW5zaW9ucylcbiAgICAgIH1cbiAgICAgIGlmICgnb3B0aW9uYWxFeHRlbnNpb25zJyBpbiBhcmdzKSB7XG4gICAgICAgIG9wdGlvbmFsRXh0ZW5zaW9ucyA9IHBhcnNlRXh0ZW5zaW9ucyhhcmdzLm9wdGlvbmFsRXh0ZW5zaW9ucylcbiAgICAgIH1cbiAgICAgIGlmICgnb25Eb25lJyBpbiBhcmdzKSB7XG4gICAgICAgIGNoZWNrJDEudHlwZShcbiAgICAgICAgICBhcmdzLm9uRG9uZSwgJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAnaW52YWxpZCBvciBtaXNzaW5nIG9uRG9uZSBjYWxsYmFjaycpXG4gICAgICAgIG9uRG9uZSA9IGFyZ3Mub25Eb25lXG4gICAgICB9XG4gICAgICBpZiAoJ3Byb2ZpbGUnIGluIGFyZ3MpIHtcbiAgICAgICAgcHJvZmlsZSA9ICEhYXJncy5wcm9maWxlXG4gICAgICB9XG4gICAgICBpZiAoJ3BpeGVsUmF0aW8nIGluIGFyZ3MpIHtcbiAgICAgICAgcGl4ZWxSYXRpbyA9ICthcmdzLnBpeGVsUmF0aW9cbiAgICAgICAgY2hlY2skMShwaXhlbFJhdGlvID4gMCwgJ2ludmFsaWQgcGl4ZWwgcmF0aW8nKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjaGVjayQxLnJhaXNlKCdpbnZhbGlkIGFyZ3VtZW50cyB0byByZWdsJylcbiAgfVxuXG4gIGlmIChlbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2NhbnZhcycpIHtcbiAgICAgIGNhbnZhcyA9IGVsZW1lbnRcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyID0gZWxlbWVudFxuICAgIH1cbiAgfVxuXG4gIGlmICghZ2wpIHtcbiAgICBpZiAoIWNhbnZhcykge1xuICAgICAgY2hlY2skMShcbiAgICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgJ211c3QgbWFudWFsbHkgc3BlY2lmeSB3ZWJnbCBjb250ZXh0IG91dHNpZGUgb2YgRE9NIGVudmlyb25tZW50cycpXG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQ2FudmFzKGNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5LCBvbkRvbmUsIHBpeGVsUmF0aW8pXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgY2FudmFzID0gcmVzdWx0LmNhbnZhc1xuICAgICAgb25EZXN0cm95ID0gcmVzdWx0Lm9uRGVzdHJveVxuICAgIH1cbiAgICAvLyB3b3JrYXJvdW5kIGZvciBjaHJvbWl1bSBidWcsIHByZW11bHRpcGxpZWQgYWxwaGEgdmFsdWUgaXMgcGxhdGZvcm0gZGVwZW5kZW50XG4gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSA9PT0gdW5kZWZpbmVkKSBjb250ZXh0QXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlXG4gICAgZ2wgPSBjcmVhdGVDb250ZXh0KGNhbnZhcywgY29udGV4dEF0dHJpYnV0ZXMpXG4gIH1cblxuICBpZiAoIWdsKSB7XG4gICAgb25EZXN0cm95KClcbiAgICBvbkRvbmUoJ3dlYmdsIG5vdCBzdXBwb3J0ZWQsIHRyeSB1cGdyYWRpbmcgeW91ciBicm93c2VyIG9yIGdyYXBoaWNzIGRyaXZlcnMgaHR0cDovL2dldC53ZWJnbC5vcmcnKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdsOiBnbCxcbiAgICBjYW52YXM6IGNhbnZhcyxcbiAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICBleHRlbnNpb25zOiBleHRlbnNpb25zLFxuICAgIG9wdGlvbmFsRXh0ZW5zaW9uczogb3B0aW9uYWxFeHRlbnNpb25zLFxuICAgIHBpeGVsUmF0aW86IHBpeGVsUmF0aW8sXG4gICAgcHJvZmlsZTogcHJvZmlsZSxcbiAgICBvbkRvbmU6IG9uRG9uZSxcbiAgICBvbkRlc3Ryb3k6IG9uRGVzdHJveVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUV4dGVuc2lvbkNhY2hlIChnbCwgY29uZmlnKSB7XG4gIHZhciBleHRlbnNpb25zID0ge31cblxuICBmdW5jdGlvbiB0cnlMb2FkRXh0ZW5zaW9uIChuYW1lXykge1xuICAgIGNoZWNrJDEudHlwZShuYW1lXywgJ3N0cmluZycsICdleHRlbnNpb24gbmFtZSBtdXN0IGJlIHN0cmluZycpXG4gICAgdmFyIG5hbWUgPSBuYW1lXy50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGV4dFxuICAgIHRyeSB7XG4gICAgICBleHQgPSBleHRlbnNpb25zW25hbWVdID0gZ2wuZ2V0RXh0ZW5zaW9uKG5hbWUpXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gISFleHRcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmlnLmV4dGVuc2lvbnMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgbmFtZSA9IGNvbmZpZy5leHRlbnNpb25zW2ldXG4gICAgaWYgKCF0cnlMb2FkRXh0ZW5zaW9uKG5hbWUpKSB7XG4gICAgICBjb25maWcub25EZXN0cm95KClcbiAgICAgIGNvbmZpZy5vbkRvbmUoJ1wiJyArIG5hbWUgKyAnXCIgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgV2ViR0wgY29udGV4dCwgdHJ5IHVwZ3JhZGluZyB5b3VyIHN5c3RlbSBvciBhIGRpZmZlcmVudCBicm93c2VyJylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG5cbiAgY29uZmlnLm9wdGlvbmFsRXh0ZW5zaW9ucy5mb3JFYWNoKHRyeUxvYWRFeHRlbnNpb24pXG5cbiAgcmV0dXJuIHtcbiAgICBleHRlbnNpb25zOiBleHRlbnNpb25zLFxuICAgIHJlc3RvcmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIE9iamVjdC5rZXlzKGV4dGVuc2lvbnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbnNbbmFtZV0gJiYgIXRyeUxvYWRFeHRlbnNpb24obmFtZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyhyZWdsKTogZXJyb3IgcmVzdG9yaW5nIGV4dGVuc2lvbiAnICsgbmFtZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9vcCAobiwgZikge1xuICB2YXIgcmVzdWx0ID0gQXJyYXkobilcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICByZXN1bHRbaV0gPSBmKGkpXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG52YXIgR0xfQllURSQxID0gNTEyMFxudmFyIEdMX1VOU0lHTkVEX0JZVEUkMiA9IDUxMjFcbnZhciBHTF9TSE9SVCQxID0gNTEyMlxudmFyIEdMX1VOU0lHTkVEX1NIT1JUJDEgPSA1MTIzXG52YXIgR0xfSU5UJDEgPSA1MTI0XG52YXIgR0xfVU5TSUdORURfSU5UJDEgPSA1MTI1XG52YXIgR0xfRkxPQVQkMiA9IDUxMjZcblxuZnVuY3Rpb24gbmV4dFBvdzE2ICh2KSB7XG4gIGZvciAodmFyIGkgPSAxNjsgaSA8PSAoMSA8PCAyOCk7IGkgKj0gMTYpIHtcbiAgICBpZiAodiA8PSBpKSB7XG4gICAgICByZXR1cm4gaVxuICAgIH1cbiAgfVxuICByZXR1cm4gMFxufVxuXG5mdW5jdGlvbiBsb2cyICh2KSB7XG4gIHZhciByLCBzaGlmdFxuICByID0gKHYgPiAweEZGRkYpIDw8IDRcbiAgdiA+Pj49IHJcbiAgc2hpZnQgPSAodiA+IDB4RkYpIDw8IDNcbiAgdiA+Pj49IHNoaWZ0OyByIHw9IHNoaWZ0XG4gIHNoaWZ0ID0gKHYgPiAweEYpIDw8IDJcbiAgdiA+Pj49IHNoaWZ0OyByIHw9IHNoaWZ0XG4gIHNoaWZ0ID0gKHYgPiAweDMpIDw8IDFcbiAgdiA+Pj49IHNoaWZ0OyByIHw9IHNoaWZ0XG4gIHJldHVybiByIHwgKHYgPj4gMSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlUG9vbCAoKSB7XG4gIHZhciBidWZmZXJQb29sID0gbG9vcCg4LCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFtdXG4gIH0pXG5cbiAgZnVuY3Rpb24gYWxsb2MgKG4pIHtcbiAgICB2YXIgc3ogPSBuZXh0UG93MTYobilcbiAgICB2YXIgYmluID0gYnVmZmVyUG9vbFtsb2cyKHN6KSA+PiAyXVxuICAgIGlmIChiaW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGJpbi5wb3AoKVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEFycmF5QnVmZmVyKHN6KVxuICB9XG5cbiAgZnVuY3Rpb24gZnJlZSAoYnVmKSB7XG4gICAgYnVmZmVyUG9vbFtsb2cyKGJ1Zi5ieXRlTGVuZ3RoKSA+PiAyXS5wdXNoKGJ1ZilcbiAgfVxuXG4gIGZ1bmN0aW9uIGFsbG9jVHlwZSAodHlwZSwgbikge1xuICAgIHZhciByZXN1bHQgPSBudWxsXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEdMX0JZVEUkMTpcbiAgICAgICAgcmVzdWx0ID0gbmV3IEludDhBcnJheShhbGxvYyhuKSwgMCwgbilcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURSQyOlxuICAgICAgICByZXN1bHQgPSBuZXcgVWludDhBcnJheShhbGxvYyhuKSwgMCwgbilcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgR0xfU0hPUlQkMTpcbiAgICAgICAgcmVzdWx0ID0gbmV3IEludDE2QXJyYXkoYWxsb2MoMiAqIG4pLCAwLCBuKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVCQxOlxuICAgICAgICByZXN1bHQgPSBuZXcgVWludDE2QXJyYXkoYWxsb2MoMiAqIG4pLCAwLCBuKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBHTF9JTlQkMTpcbiAgICAgICAgcmVzdWx0ID0gbmV3IEludDMyQXJyYXkoYWxsb2MoNCAqIG4pLCAwLCBuKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQkMTpcbiAgICAgICAgcmVzdWx0ID0gbmV3IFVpbnQzMkFycmF5KGFsbG9jKDQgKiBuKSwgMCwgbilcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgR0xfRkxPQVQkMjpcbiAgICAgICAgcmVzdWx0ID0gbmV3IEZsb2F0MzJBcnJheShhbGxvYyg0ICogbiksIDAsIG4pXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPT0gbikge1xuICAgICAgcmV0dXJuIHJlc3VsdC5zdWJhcnJheSgwLCBuKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBmcmVlVHlwZSAoYXJyYXkpIHtcbiAgICBmcmVlKGFycmF5LmJ1ZmZlcilcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWxsb2M6IGFsbG9jLFxuICAgIGZyZWU6IGZyZWUsXG4gICAgYWxsb2NUeXBlOiBhbGxvY1R5cGUsXG4gICAgZnJlZVR5cGU6IGZyZWVUeXBlXG4gIH1cbn1cblxudmFyIHBvb2wgPSBjcmVhdGVQb29sKClcblxuLy8gemVybyBwb29sIGZvciBpbml0aWFsIHplcm8gZGF0YVxucG9vbC56ZXJvID0gY3JlYXRlUG9vbCgpXG5cbnZhciBHTF9TVUJQSVhFTF9CSVRTID0gMHgwRDUwXG52YXIgR0xfUkVEX0JJVFMgPSAweDBENTJcbnZhciBHTF9HUkVFTl9CSVRTID0gMHgwRDUzXG52YXIgR0xfQkxVRV9CSVRTID0gMHgwRDU0XG52YXIgR0xfQUxQSEFfQklUUyA9IDB4MEQ1NVxudmFyIEdMX0RFUFRIX0JJVFMgPSAweDBENTZcbnZhciBHTF9TVEVOQ0lMX0JJVFMgPSAweDBENTdcblxudmFyIEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSA9IDB4ODQ2RFxudmFyIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRSA9IDB4ODQ2RVxuXG52YXIgR0xfTUFYX1RFWFRVUkVfU0laRSA9IDB4MEQzM1xudmFyIEdMX01BWF9WSUVXUE9SVF9ESU1TID0gMHgwRDNBXG52YXIgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTID0gMHg4ODY5XG52YXIgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgPSAweDhERkJcbnZhciBHTF9NQVhfVkFSWUlOR19WRUNUT1JTID0gMHg4REZDXG52YXIgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDhCNERcbnZhciBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDhCNENcbnZhciBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyA9IDB4ODg3MlxudmFyIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgPSAweDhERkRcbnZhciBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFID0gMHg4NTFDXG52YXIgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFID0gMHg4NEU4XG5cbnZhciBHTF9WRU5ET1IgPSAweDFGMDBcbnZhciBHTF9SRU5ERVJFUiA9IDB4MUYwMVxudmFyIEdMX1ZFUlNJT04gPSAweDFGMDJcbnZhciBHTF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04gPSAweDhCOENcblxudmFyIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCA9IDB4ODRGRlxuXG52YXIgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX1dFQkdMID0gMHg4Q0RGXG52YXIgR0xfTUFYX0RSQVdfQlVGRkVSU19XRUJHTCA9IDB4ODgyNFxuXG52YXIgR0xfVEVYVFVSRV8yRCA9IDB4MERFMVxudmFyIEdMX1RFWFRVUkVfQ1VCRV9NQVAgPSAweDg1MTNcbnZhciBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPSAweDg1MTVcbnZhciBHTF9URVhUVVJFMCA9IDB4ODRDMFxudmFyIEdMX1JHQkEgPSAweDE5MDhcbnZhciBHTF9GTE9BVCQxID0gMHgxNDA2XG52YXIgR0xfVU5TSUdORURfQllURSQxID0gMHgxNDAxXG52YXIgR0xfRlJBTUVCVUZGRVIgPSAweDhENDBcbnZhciBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSA9IDB4OENENVxudmFyIEdMX0NPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwXG52YXIgR0xfQ09MT1JfQlVGRkVSX0JJVCQxID0gMHg0MDAwXG5cbnZhciB3cmFwTGltaXRzID0gZnVuY3Rpb24gKGdsLCBleHRlbnNpb25zKSB7XG4gIHZhciBtYXhBbmlzb3Ryb3BpYyA9IDFcbiAgaWYgKGV4dGVuc2lvbnMuZXh0X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljKSB7XG4gICAgbWF4QW5pc290cm9waWMgPSBnbC5nZXRQYXJhbWV0ZXIoR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKVxuICB9XG5cbiAgdmFyIG1heERyYXdidWZmZXJzID0gMVxuICB2YXIgbWF4Q29sb3JBdHRhY2htZW50cyA9IDFcbiAgaWYgKGV4dGVuc2lvbnMud2ViZ2xfZHJhd19idWZmZXJzKSB7XG4gICAgbWF4RHJhd2J1ZmZlcnMgPSBnbC5nZXRQYXJhbWV0ZXIoR0xfTUFYX0RSQVdfQlVGRkVSU19XRUJHTClcbiAgICBtYXhDb2xvckF0dGFjaG1lbnRzID0gZ2wuZ2V0UGFyYW1ldGVyKEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UU19XRUJHTClcbiAgfVxuXG4gIC8vIGRldGVjdCBpZiByZWFkaW5nIGZsb2F0IHRleHR1cmVzIGlzIGF2YWlsYWJsZSAoU2FmYXJpIGRvZXNuJ3Qgc3VwcG9ydClcbiAgdmFyIHJlYWRGbG9hdCA9ICEhZXh0ZW5zaW9ucy5vZXNfdGV4dHVyZV9mbG9hdFxuICBpZiAocmVhZEZsb2F0KSB7XG4gICAgdmFyIHJlYWRGbG9hdFRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKClcbiAgICBnbC5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCByZWFkRmxvYXRUZXh0dXJlKVxuICAgIGdsLnRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfRkxPQVQkMSwgbnVsbClcblxuICAgIHZhciBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpXG4gICAgZ2wuYmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pXG4gICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCByZWFkRmxvYXRUZXh0dXJlLCAwKVxuICAgIGdsLmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG51bGwpXG5cbiAgICBpZiAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikgIT09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKSByZWFkRmxvYXQgPSBmYWxzZVxuXG4gICAgZWxzZSB7XG4gICAgICBnbC52aWV3cG9ydCgwLCAwLCAxLCAxKVxuICAgICAgZ2wuY2xlYXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApXG4gICAgICBnbC5jbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUJDEpXG4gICAgICB2YXIgcGl4ZWxzID0gcG9vbC5hbGxvY1R5cGUoR0xfRkxPQVQkMSwgNClcbiAgICAgIGdsLnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfRkxPQVQkMSwgcGl4ZWxzKVxuXG4gICAgICBpZiAoZ2wuZ2V0RXJyb3IoKSkgcmVhZEZsb2F0ID0gZmFsc2VcbiAgICAgIGVsc2Uge1xuICAgICAgICBnbC5kZWxldGVGcmFtZWJ1ZmZlcihmYm8pXG4gICAgICAgIGdsLmRlbGV0ZVRleHR1cmUocmVhZEZsb2F0VGV4dHVyZSlcblxuICAgICAgICByZWFkRmxvYXQgPSBwaXhlbHNbMF0gPT09IDEuMFxuICAgICAgfVxuXG4gICAgICBwb29sLmZyZWVUeXBlKHBpeGVscylcbiAgICB9XG4gIH1cblxuICAvLyBkZXRlY3Qgbm9uIHBvd2VyIG9mIHR3byBjdWJlIHRleHR1cmVzIHN1cHBvcnQgKElFIGRvZXNuJ3Qgc3VwcG9ydClcbiAgdmFyIGlzSUUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAoL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgL1RyaWRlbnRcXC8vLnRlc3QobmF2aWdhdG9yLmFwcFZlcnNpb24pIHx8IC9FZGdlLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKVxuXG4gIHZhciBucG90VGV4dHVyZUN1YmUgPSB0cnVlXG5cbiAgaWYgKCFpc0lFKSB7XG4gICAgdmFyIGN1YmVUZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpXG4gICAgdmFyIGRhdGEgPSBwb29sLmFsbG9jVHlwZShHTF9VTlNJR05FRF9CWVRFJDEsIDM2KVxuICAgIGdsLmFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApXG4gICAgZ2wuYmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgY3ViZVRleHR1cmUpXG4gICAgZ2wudGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIEdMX1JHQkEsIDMsIDMsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUkMSwgZGF0YSlcbiAgICBwb29sLmZyZWVUeXBlKGRhdGEpXG4gICAgZ2wuYmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbnVsbClcbiAgICBnbC5kZWxldGVUZXh0dXJlKGN1YmVUZXh0dXJlKVxuICAgIG5wb3RUZXh0dXJlQ3ViZSA9ICFnbC5nZXRFcnJvcigpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIGRyYXdpbmcgYnVmZmVyIGJpdCBkZXB0aFxuICAgIGNvbG9yQml0czogW1xuICAgICAgZ2wuZ2V0UGFyYW1ldGVyKEdMX1JFRF9CSVRTKSxcbiAgICAgIGdsLmdldFBhcmFtZXRlcihHTF9HUkVFTl9CSVRTKSxcbiAgICAgIGdsLmdldFBhcmFtZXRlcihHTF9CTFVFX0JJVFMpLFxuICAgICAgZ2wuZ2V0UGFyYW1ldGVyKEdMX0FMUEhBX0JJVFMpXG4gICAgXSxcbiAgICBkZXB0aEJpdHM6IGdsLmdldFBhcmFtZXRlcihHTF9ERVBUSF9CSVRTKSxcbiAgICBzdGVuY2lsQml0czogZ2wuZ2V0UGFyYW1ldGVyKEdMX1NURU5DSUxfQklUUyksXG4gICAgc3VicGl4ZWxCaXRzOiBnbC5nZXRQYXJhbWV0ZXIoR0xfU1VCUElYRUxfQklUUyksXG5cbiAgICAvLyBzdXBwb3J0ZWQgZXh0ZW5zaW9uc1xuICAgIGV4dGVuc2lvbnM6IE9iamVjdC5rZXlzKGV4dGVuc2lvbnMpLmZpbHRlcihmdW5jdGlvbiAoZXh0KSB7XG4gICAgICByZXR1cm4gISFleHRlbnNpb25zW2V4dF1cbiAgICB9KSxcblxuICAgIC8vIG1heCBhbmlzbyBzYW1wbGVzXG4gICAgbWF4QW5pc290cm9waWM6IG1heEFuaXNvdHJvcGljLFxuXG4gICAgLy8gbWF4IGRyYXcgYnVmZmVyc1xuICAgIG1heERyYXdidWZmZXJzOiBtYXhEcmF3YnVmZmVycyxcbiAgICBtYXhDb2xvckF0dGFjaG1lbnRzOiBtYXhDb2xvckF0dGFjaG1lbnRzLFxuXG4gICAgLy8gcG9pbnQgYW5kIGxpbmUgc2l6ZSByYW5nZXNcbiAgICBwb2ludFNpemVEaW1zOiBnbC5nZXRQYXJhbWV0ZXIoR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKSxcbiAgICBsaW5lV2lkdGhEaW1zOiBnbC5nZXRQYXJhbWV0ZXIoR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKSxcbiAgICBtYXhWaWV3cG9ydERpbXM6IGdsLmdldFBhcmFtZXRlcihHTF9NQVhfVklFV1BPUlRfRElNUyksXG4gICAgbWF4Q29tYmluZWRUZXh0dXJlVW5pdHM6IGdsLmdldFBhcmFtZXRlcihHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyksXG4gICAgbWF4Q3ViZU1hcFNpemU6IGdsLmdldFBhcmFtZXRlcihHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKSxcbiAgICBtYXhSZW5kZXJidWZmZXJTaXplOiBnbC5nZXRQYXJhbWV0ZXIoR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFKSxcbiAgICBtYXhUZXh0dXJlVW5pdHM6IGdsLmdldFBhcmFtZXRlcihHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyksXG4gICAgbWF4VGV4dHVyZVNpemU6IGdsLmdldFBhcmFtZXRlcihHTF9NQVhfVEVYVFVSRV9TSVpFKSxcbiAgICBtYXhBdHRyaWJ1dGVzOiBnbC5nZXRQYXJhbWV0ZXIoR0xfTUFYX1ZFUlRFWF9BVFRSSUJTKSxcbiAgICBtYXhWZXJ0ZXhVbmlmb3JtczogZ2wuZ2V0UGFyYW1ldGVyKEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKSxcbiAgICBtYXhWZXJ0ZXhUZXh0dXJlVW5pdHM6IGdsLmdldFBhcmFtZXRlcihHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMpLFxuICAgIG1heFZhcnlpbmdWZWN0b3JzOiBnbC5nZXRQYXJhbWV0ZXIoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUyksXG4gICAgbWF4RnJhZ21lbnRVbmlmb3JtczogZ2wuZ2V0UGFyYW1ldGVyKEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMpLFxuXG4gICAgLy8gdmVuZG9yIGluZm9cbiAgICBnbHNsOiBnbC5nZXRQYXJhbWV0ZXIoR0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OKSxcbiAgICByZW5kZXJlcjogZ2wuZ2V0UGFyYW1ldGVyKEdMX1JFTkRFUkVSKSxcbiAgICB2ZW5kb3I6IGdsLmdldFBhcmFtZXRlcihHTF9WRU5ET1IpLFxuICAgIHZlcnNpb246IGdsLmdldFBhcmFtZXRlcihHTF9WRVJTSU9OKSxcblxuICAgIC8vIHF1aXJrc1xuICAgIHJlYWRGbG9hdDogcmVhZEZsb2F0LFxuICAgIG5wb3RUZXh0dXJlQ3ViZTogbnBvdFRleHR1cmVDdWJlXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNOREFycmF5TGlrZSAob2JqKSB7XG4gIHJldHVybiAoXG4gICAgISFvYmogJiZcbiAgICB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJlxuICAgIEFycmF5LmlzQXJyYXkob2JqLnNoYXBlKSAmJlxuICAgIEFycmF5LmlzQXJyYXkob2JqLnN0cmlkZSkgJiZcbiAgICB0eXBlb2Ygb2JqLm9mZnNldCA9PT0gJ251bWJlcicgJiZcbiAgICBvYmouc2hhcGUubGVuZ3RoID09PSBvYmouc3RyaWRlLmxlbmd0aCAmJlxuICAgIChBcnJheS5pc0FycmF5KG9iai5kYXRhKSB8fFxuICAgICAgaXNUeXBlZEFycmF5KG9iai5kYXRhKSkpXG59XG5cbnZhciB2YWx1ZXMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBvYmpba2V5XSB9KVxufVxuXG52YXIgZmxhdHRlblV0aWxzID0ge1xuICBzaGFwZTogYXJyYXlTaGFwZSQxLFxuICBmbGF0dGVuOiBmbGF0dGVuQXJyYXlcbn07XG5cbmZ1bmN0aW9uIGZsYXR0ZW4xRCAoYXJyYXksIG54LCBvdXQpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBueDsgKytpKSB7XG4gICAgb3V0W2ldID0gYXJyYXlbaV1cbiAgfVxufVxuXG5mdW5jdGlvbiBmbGF0dGVuMkQgKGFycmF5LCBueCwgbnksIG91dCkge1xuICB2YXIgcHRyID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IG54OyArK2kpIHtcbiAgICB2YXIgcm93ID0gYXJyYXlbaV1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG55OyArK2opIHtcbiAgICAgIG91dFtwdHIrK10gPSByb3dbal1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdHRlbjNEIChhcnJheSwgbngsIG55LCBueiwgb3V0LCBwdHJfKSB7XG4gIHZhciBwdHIgPSBwdHJfXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbng7ICsraSkge1xuICAgIHZhciByb3cgPSBhcnJheVtpXVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbnk7ICsraikge1xuICAgICAgdmFyIGNvbCA9IHJvd1tqXVxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBuejsgKytrKSB7XG4gICAgICAgIG91dFtwdHIrK10gPSBjb2xba11cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdHRlblJlYyAoYXJyYXksIHNoYXBlLCBsZXZlbCwgb3V0LCBwdHIpIHtcbiAgdmFyIHN0cmlkZSA9IDFcbiAgZm9yICh2YXIgaSA9IGxldmVsICsgMTsgaSA8IHNoYXBlLmxlbmd0aDsgKytpKSB7XG4gICAgc3RyaWRlICo9IHNoYXBlW2ldXG4gIH1cbiAgdmFyIG4gPSBzaGFwZVtsZXZlbF1cbiAgaWYgKHNoYXBlLmxlbmd0aCAtIGxldmVsID09PSA0KSB7XG4gICAgdmFyIG54ID0gc2hhcGVbbGV2ZWwgKyAxXVxuICAgIHZhciBueSA9IHNoYXBlW2xldmVsICsgMl1cbiAgICB2YXIgbnogPSBzaGFwZVtsZXZlbCArIDNdXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgZmxhdHRlbjNEKGFycmF5W2ldLCBueCwgbnksIG56LCBvdXQsIHB0cilcbiAgICAgIHB0ciArPSBzdHJpZGVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgZmxhdHRlblJlYyhhcnJheVtpXSwgc2hhcGUsIGxldmVsICsgMSwgb3V0LCBwdHIpXG4gICAgICBwdHIgKz0gc3RyaWRlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5BcnJheSAoYXJyYXksIHNoYXBlLCB0eXBlLCBvdXRfKSB7XG4gIHZhciBzeiA9IDFcbiAgaWYgKHNoYXBlLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hhcGUubGVuZ3RoOyArK2kpIHtcbiAgICAgIHN6ICo9IHNoYXBlW2ldXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN6ID0gMFxuICB9XG4gIHZhciBvdXQgPSBvdXRfIHx8IHBvb2wuYWxsb2NUeXBlKHR5cGUsIHN6KVxuICBzd2l0Y2ggKHNoYXBlLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAxOlxuICAgICAgZmxhdHRlbjFEKGFycmF5LCBzaGFwZVswXSwgb3V0KVxuICAgICAgYnJlYWtcbiAgICBjYXNlIDI6XG4gICAgICBmbGF0dGVuMkQoYXJyYXksIHNoYXBlWzBdLCBzaGFwZVsxXSwgb3V0KVxuICAgICAgYnJlYWtcbiAgICBjYXNlIDM6XG4gICAgICBmbGF0dGVuM0QoYXJyYXksIHNoYXBlWzBdLCBzaGFwZVsxXSwgc2hhcGVbMl0sIG91dCwgMClcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGZsYXR0ZW5SZWMoYXJyYXksIHNoYXBlLCAwLCBvdXQsIDApXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBhcnJheVNoYXBlJDEgKGFycmF5Xykge1xuICB2YXIgc2hhcGUgPSBbXVxuICBmb3IgKHZhciBhcnJheSA9IGFycmF5XzsgYXJyYXkubGVuZ3RoOyBhcnJheSA9IGFycmF5WzBdKSB7XG4gICAgc2hhcGUucHVzaChhcnJheS5sZW5ndGgpXG4gIH1cbiAgcmV0dXJuIHNoYXBlXG59XG5cbnZhciBhcnJheVR5cGVzID0gIHtcblx0XCJbb2JqZWN0IEludDhBcnJheV1cIjogNTEyMCxcblx0XCJbb2JqZWN0IEludDE2QXJyYXldXCI6IDUxMjIsXG5cdFwiW29iamVjdCBJbnQzMkFycmF5XVwiOiA1MTI0LFxuXHRcIltvYmplY3QgVWludDhBcnJheV1cIjogNTEyMSxcblx0XCJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XVwiOiA1MTIxLFxuXHRcIltvYmplY3QgVWludDE2QXJyYXldXCI6IDUxMjMsXG5cdFwiW29iamVjdCBVaW50MzJBcnJheV1cIjogNTEyNSxcblx0XCJbb2JqZWN0IEZsb2F0MzJBcnJheV1cIjogNTEyNixcblx0XCJbb2JqZWN0IEZsb2F0NjRBcnJheV1cIjogNTEyMSxcblx0XCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiOiA1MTIxXG59O1xuXG52YXIgaW50OCA9IDUxMjA7XG52YXIgaW50MTYgPSA1MTIyO1xudmFyIGludDMyID0gNTEyNDtcbnZhciB1aW50OCA9IDUxMjE7XG52YXIgdWludDE2ID0gNTEyMztcbnZhciB1aW50MzIgPSA1MTI1O1xudmFyIGZsb2F0ID0gNTEyNjtcbnZhciBmbG9hdDMyID0gNTEyNjtcbnZhciBnbFR5cGVzID0ge1xuXHRpbnQ4OiBpbnQ4LFxuXHRpbnQxNjogaW50MTYsXG5cdGludDMyOiBpbnQzMixcblx0dWludDg6IHVpbnQ4LFxuXHR1aW50MTY6IHVpbnQxNixcblx0dWludDMyOiB1aW50MzIsXG5cdGZsb2F0OiBmbG9hdCxcblx0ZmxvYXQzMjogZmxvYXQzMlxufTtcblxudmFyIGR5bmFtaWMkMSA9IDM1MDQ4O1xudmFyIHN0cmVhbSA9IDM1MDQwO1xudmFyIHVzYWdlVHlwZXMgPSB7XG5cdGR5bmFtaWM6IGR5bmFtaWMkMSxcblx0c3RyZWFtOiBzdHJlYW0sXG5cdFwic3RhdGljXCI6IDM1MDQ0XG59O1xuXG52YXIgYXJyYXlGbGF0dGVuID0gZmxhdHRlblV0aWxzLmZsYXR0ZW5cbnZhciBhcnJheVNoYXBlID0gZmxhdHRlblV0aWxzLnNoYXBlXG5cbnZhciBHTF9TVEFUSUNfRFJBVyA9IDB4ODhFNFxudmFyIEdMX1NUUkVBTV9EUkFXID0gMHg4OEUwXG5cbnZhciBHTF9VTlNJR05FRF9CWVRFJDMgPSA1MTIxXG52YXIgR0xfRkxPQVQkMyA9IDUxMjZcblxudmFyIERUWVBFU19TSVpFUyA9IFtdXG5EVFlQRVNfU0laRVNbNTEyMF0gPSAxIC8vIGludDhcbkRUWVBFU19TSVpFU1s1MTIyXSA9IDIgLy8gaW50MTZcbkRUWVBFU19TSVpFU1s1MTI0XSA9IDQgLy8gaW50MzJcbkRUWVBFU19TSVpFU1s1MTIxXSA9IDEgLy8gdWludDhcbkRUWVBFU19TSVpFU1s1MTIzXSA9IDIgLy8gdWludDE2XG5EVFlQRVNfU0laRVNbNTEyNV0gPSA0IC8vIHVpbnQzMlxuRFRZUEVTX1NJWkVTWzUxMjZdID0gNCAvLyBmbG9hdDMyXG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlDb2RlIChkYXRhKSB7XG4gIHJldHVybiBhcnJheVR5cGVzW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRhKV0gfCAwXG59XG5cbmZ1bmN0aW9uIGNvcHlBcnJheSAob3V0LCBpbnApIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnAubGVuZ3RoOyArK2kpIHtcbiAgICBvdXRbaV0gPSBpbnBbaV1cbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc3Bvc2UgKFxuICByZXN1bHQsIGRhdGEsIHNoYXBlWCwgc2hhcGVZLCBzdHJpZGVYLCBzdHJpZGVZLCBvZmZzZXQpIHtcbiAgdmFyIHB0ciA9IDBcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFwZVg7ICsraSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2hhcGVZOyArK2opIHtcbiAgICAgIHJlc3VsdFtwdHIrK10gPSBkYXRhW3N0cmlkZVggKiBpICsgc3RyaWRlWSAqIGogKyBvZmZzZXRdXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHdyYXBCdWZmZXJTdGF0ZSAoZ2wsIHN0YXRzLCBjb25maWcsIGRlc3Ryb3lCdWZmZXIpIHtcbiAgdmFyIGJ1ZmZlckNvdW50ID0gMFxuICB2YXIgYnVmZmVyU2V0ID0ge31cblxuICBmdW5jdGlvbiBSRUdMQnVmZmVyICh0eXBlKSB7XG4gICAgdGhpcy5pZCA9IGJ1ZmZlckNvdW50KytcbiAgICB0aGlzLmJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpXG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMudXNhZ2UgPSBHTF9TVEFUSUNfRFJBV1xuICAgIHRoaXMuYnl0ZUxlbmd0aCA9IDBcbiAgICB0aGlzLmRpbWVuc2lvbiA9IDFcbiAgICB0aGlzLmR0eXBlID0gR0xfVU5TSUdORURfQllURSQzXG5cbiAgICB0aGlzLnBlcnNpc3RlbnREYXRhID0gbnVsbFxuXG4gICAgaWYgKGNvbmZpZy5wcm9maWxlKSB7XG4gICAgICB0aGlzLnN0YXRzID0geyBzaXplOiAwIH1cbiAgICB9XG4gIH1cblxuICBSRUdMQnVmZmVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKCkge1xuICAgIGdsLmJpbmRCdWZmZXIodGhpcy50eXBlLCB0aGlzLmJ1ZmZlcilcbiAgfVxuXG4gIFJFR0xCdWZmZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgZGVzdHJveSh0aGlzKVxuICB9XG5cbiAgdmFyIHN0cmVhbVBvb2wgPSBbXVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbSAodHlwZSwgZGF0YSkge1xuICAgIHZhciBidWZmZXIgPSBzdHJlYW1Qb29sLnBvcCgpXG4gICAgaWYgKCFidWZmZXIpIHtcbiAgICAgIGJ1ZmZlciA9IG5ldyBSRUdMQnVmZmVyKHR5cGUpXG4gICAgfVxuICAgIGJ1ZmZlci5iaW5kKClcbiAgICBpbml0QnVmZmVyRnJvbURhdGEoYnVmZmVyLCBkYXRhLCBHTF9TVFJFQU1fRFJBVywgMCwgMSwgZmFsc2UpXG4gICAgcmV0dXJuIGJ1ZmZlclxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveVN0cmVhbSAoc3RyZWFtJCQxKSB7XG4gICAgc3RyZWFtUG9vbC5wdXNoKHN0cmVhbSQkMSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRCdWZmZXJGcm9tVHlwZWRBcnJheSAoYnVmZmVyLCBkYXRhLCB1c2FnZSkge1xuICAgIGJ1ZmZlci5ieXRlTGVuZ3RoID0gZGF0YS5ieXRlTGVuZ3RoXG4gICAgZ2wuYnVmZmVyRGF0YShidWZmZXIudHlwZSwgZGF0YSwgdXNhZ2UpXG4gIH1cblxuICBmdW5jdGlvbiBpbml0QnVmZmVyRnJvbURhdGEgKGJ1ZmZlciwgZGF0YSwgdXNhZ2UsIGR0eXBlLCBkaW1lbnNpb24sIHBlcnNpc3QpIHtcbiAgICB2YXIgc2hhcGVcbiAgICBidWZmZXIudXNhZ2UgPSB1c2FnZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICBidWZmZXIuZHR5cGUgPSBkdHlwZSB8fCBHTF9GTE9BVCQzXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBmbGF0RGF0YVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhWzBdKSkge1xuICAgICAgICAgIHNoYXBlID0gYXJyYXlTaGFwZShkYXRhKVxuICAgICAgICAgIHZhciBkaW0gPSAxXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzaGFwZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgZGltICo9IHNoYXBlW2ldXG4gICAgICAgICAgfVxuICAgICAgICAgIGJ1ZmZlci5kaW1lbnNpb24gPSBkaW1cbiAgICAgICAgICBmbGF0RGF0YSA9IGFycmF5RmxhdHRlbihkYXRhLCBzaGFwZSwgYnVmZmVyLmR0eXBlKVxuICAgICAgICAgIGluaXRCdWZmZXJGcm9tVHlwZWRBcnJheShidWZmZXIsIGZsYXREYXRhLCB1c2FnZSlcbiAgICAgICAgICBpZiAocGVyc2lzdCkge1xuICAgICAgICAgICAgYnVmZmVyLnBlcnNpc3RlbnREYXRhID0gZmxhdERhdGFcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9vbC5mcmVlVHlwZShmbGF0RGF0YSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGFbMF0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgYnVmZmVyLmRpbWVuc2lvbiA9IGRpbWVuc2lvblxuICAgICAgICAgIHZhciB0eXBlZERhdGEgPSBwb29sLmFsbG9jVHlwZShidWZmZXIuZHR5cGUsIGRhdGEubGVuZ3RoKVxuICAgICAgICAgIGNvcHlBcnJheSh0eXBlZERhdGEsIGRhdGEpXG4gICAgICAgICAgaW5pdEJ1ZmZlckZyb21UeXBlZEFycmF5KGJ1ZmZlciwgdHlwZWREYXRhLCB1c2FnZSlcbiAgICAgICAgICBpZiAocGVyc2lzdCkge1xuICAgICAgICAgICAgYnVmZmVyLnBlcnNpc3RlbnREYXRhID0gdHlwZWREYXRhXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvb2wuZnJlZVR5cGUodHlwZWREYXRhKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoZGF0YVswXSkpIHtcbiAgICAgICAgICBidWZmZXIuZGltZW5zaW9uID0gZGF0YVswXS5sZW5ndGhcbiAgICAgICAgICBidWZmZXIuZHR5cGUgPSBkdHlwZSB8fCB0eXBlZEFycmF5Q29kZShkYXRhWzBdKSB8fCBHTF9GTE9BVCQzXG4gICAgICAgICAgZmxhdERhdGEgPSBhcnJheUZsYXR0ZW4oXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgW2RhdGEubGVuZ3RoLCBkYXRhWzBdLmxlbmd0aF0sXG4gICAgICAgICAgICBidWZmZXIuZHR5cGUpXG4gICAgICAgICAgaW5pdEJ1ZmZlckZyb21UeXBlZEFycmF5KGJ1ZmZlciwgZmxhdERhdGEsIHVzYWdlKVxuICAgICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICBidWZmZXIucGVyc2lzdGVudERhdGEgPSBmbGF0RGF0YVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb29sLmZyZWVUeXBlKGZsYXREYXRhKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGVjayQxLnJhaXNlKCdpbnZhbGlkIGJ1ZmZlciBkYXRhJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUeXBlZEFycmF5KGRhdGEpKSB7XG4gICAgICBidWZmZXIuZHR5cGUgPSBkdHlwZSB8fCB0eXBlZEFycmF5Q29kZShkYXRhKVxuICAgICAgYnVmZmVyLmRpbWVuc2lvbiA9IGRpbWVuc2lvblxuICAgICAgaW5pdEJ1ZmZlckZyb21UeXBlZEFycmF5KGJ1ZmZlciwgZGF0YSwgdXNhZ2UpXG4gICAgICBpZiAocGVyc2lzdCkge1xuICAgICAgICBidWZmZXIucGVyc2lzdGVudERhdGEgPSBuZXcgVWludDhBcnJheShuZXcgVWludDhBcnJheShkYXRhLmJ1ZmZlcikpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc05EQXJyYXlMaWtlKGRhdGEpKSB7XG4gICAgICBzaGFwZSA9IGRhdGEuc2hhcGVcbiAgICAgIHZhciBzdHJpZGUgPSBkYXRhLnN0cmlkZVxuICAgICAgdmFyIG9mZnNldCA9IGRhdGEub2Zmc2V0XG5cbiAgICAgIHZhciBzaGFwZVggPSAwXG4gICAgICB2YXIgc2hhcGVZID0gMFxuICAgICAgdmFyIHN0cmlkZVggPSAwXG4gICAgICB2YXIgc3RyaWRlWSA9IDBcbiAgICAgIGlmIChzaGFwZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgc2hhcGVYID0gc2hhcGVbMF1cbiAgICAgICAgc2hhcGVZID0gMVxuICAgICAgICBzdHJpZGVYID0gc3RyaWRlWzBdXG4gICAgICAgIHN0cmlkZVkgPSAwXG4gICAgICB9IGVsc2UgaWYgKHNoYXBlLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBzaGFwZVggPSBzaGFwZVswXVxuICAgICAgICBzaGFwZVkgPSBzaGFwZVsxXVxuICAgICAgICBzdHJpZGVYID0gc3RyaWRlWzBdXG4gICAgICAgIHN0cmlkZVkgPSBzdHJpZGVbMV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoZWNrJDEucmFpc2UoJ2ludmFsaWQgc2hhcGUnKVxuICAgICAgfVxuXG4gICAgICBidWZmZXIuZHR5cGUgPSBkdHlwZSB8fCB0eXBlZEFycmF5Q29kZShkYXRhLmRhdGEpIHx8IEdMX0ZMT0FUJDNcbiAgICAgIGJ1ZmZlci5kaW1lbnNpb24gPSBzaGFwZVlcblxuICAgICAgdmFyIHRyYW5zcG9zZURhdGEgPSBwb29sLmFsbG9jVHlwZShidWZmZXIuZHR5cGUsIHNoYXBlWCAqIHNoYXBlWSlcbiAgICAgIHRyYW5zcG9zZSh0cmFuc3Bvc2VEYXRhLFxuICAgICAgICBkYXRhLmRhdGEsXG4gICAgICAgIHNoYXBlWCwgc2hhcGVZLFxuICAgICAgICBzdHJpZGVYLCBzdHJpZGVZLFxuICAgICAgICBvZmZzZXQpXG4gICAgICBpbml0QnVmZmVyRnJvbVR5cGVkQXJyYXkoYnVmZmVyLCB0cmFuc3Bvc2VEYXRhLCB1c2FnZSlcbiAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgIGJ1ZmZlci5wZXJzaXN0ZW50RGF0YSA9IHRyYW5zcG9zZURhdGFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvb2wuZnJlZVR5cGUodHJhbnNwb3NlRGF0YSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgYnVmZmVyLmR0eXBlID0gR0xfVU5TSUdORURfQllURSQzXG4gICAgICBidWZmZXIuZGltZW5zaW9uID0gZGltZW5zaW9uXG4gICAgICBpbml0QnVmZmVyRnJvbVR5cGVkQXJyYXkoYnVmZmVyLCBkYXRhLCB1c2FnZSlcbiAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgIGJ1ZmZlci5wZXJzaXN0ZW50RGF0YSA9IG5ldyBVaW50OEFycmF5KG5ldyBVaW50OEFycmF5KGRhdGEpKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjaGVjayQxLnJhaXNlKCdpbnZhbGlkIGJ1ZmZlciBkYXRhJylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95IChidWZmZXIpIHtcbiAgICBzdGF0cy5idWZmZXJDb3VudC0tXG5cbiAgICAvLyByZW1vdmUgYXR0cmlidXRlIGxpbmtcbiAgICBkZXN0cm95QnVmZmVyKGJ1ZmZlcilcblxuICAgIHZhciBoYW5kbGUgPSBidWZmZXIuYnVmZmVyXG4gICAgY2hlY2skMShoYW5kbGUsICdidWZmZXIgbXVzdCBub3QgYmUgZGVsZXRlZCBhbHJlYWR5JylcbiAgICBnbC5kZWxldGVCdWZmZXIoaGFuZGxlKVxuICAgIGJ1ZmZlci5idWZmZXIgPSBudWxsXG4gICAgZGVsZXRlIGJ1ZmZlclNldFtidWZmZXIuaWRdXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVCdWZmZXIgKG9wdGlvbnMsIHR5cGUsIGRlZmVySW5pdCwgcGVyc2lzdGVudCkge1xuICAgIHN0YXRzLmJ1ZmZlckNvdW50KytcblxuICAgIHZhciBidWZmZXIgPSBuZXcgUkVHTEJ1ZmZlcih0eXBlKVxuICAgIGJ1ZmZlclNldFtidWZmZXIuaWRdID0gYnVmZmVyXG5cbiAgICBmdW5jdGlvbiByZWdsQnVmZmVyIChvcHRpb25zKSB7XG4gICAgICB2YXIgdXNhZ2UgPSBHTF9TVEFUSUNfRFJBV1xuICAgICAgdmFyIGRhdGEgPSBudWxsXG4gICAgICB2YXIgYnl0ZUxlbmd0aCA9IDBcbiAgICAgIHZhciBkdHlwZSA9IDBcbiAgICAgIHZhciBkaW1lbnNpb24gPSAxXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSB8fFxuICAgICAgICAgIGlzVHlwZWRBcnJheShvcHRpb25zKSB8fFxuICAgICAgICAgIGlzTkRBcnJheUxpa2Uob3B0aW9ucykgfHxcbiAgICAgICAgICBvcHRpb25zIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgZGF0YSA9IG9wdGlvbnNcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGJ5dGVMZW5ndGggPSBvcHRpb25zIHwgMFxuICAgICAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgICAgIGNoZWNrJDEudHlwZShcbiAgICAgICAgICBvcHRpb25zLCAnb2JqZWN0JyxcbiAgICAgICAgICAnYnVmZmVyIGFyZ3VtZW50cyBtdXN0IGJlIGFuIG9iamVjdCwgYSBudW1iZXIgb3IgYW4gYXJyYXknKVxuXG4gICAgICAgIGlmICgnZGF0YScgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGNoZWNrJDEoXG4gICAgICAgICAgICBkYXRhID09PSBudWxsIHx8XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGRhdGEpIHx8XG4gICAgICAgICAgICBpc1R5cGVkQXJyYXkoZGF0YSkgfHxcbiAgICAgICAgICAgIGlzTkRBcnJheUxpa2UoZGF0YSksXG4gICAgICAgICAgICAnaW52YWxpZCBkYXRhIGZvciBidWZmZXInKVxuICAgICAgICAgIGRhdGEgPSBvcHRpb25zLmRhdGFcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgndXNhZ2UnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBjaGVjayQxLnBhcmFtZXRlcihvcHRpb25zLnVzYWdlLCB1c2FnZVR5cGVzLCAnaW52YWxpZCBidWZmZXIgdXNhZ2UnKVxuICAgICAgICAgIHVzYWdlID0gdXNhZ2VUeXBlc1tvcHRpb25zLnVzYWdlXVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCd0eXBlJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgY2hlY2skMS5wYXJhbWV0ZXIob3B0aW9ucy50eXBlLCBnbFR5cGVzLCAnaW52YWxpZCBidWZmZXIgdHlwZScpXG4gICAgICAgICAgZHR5cGUgPSBnbFR5cGVzW29wdGlvbnMudHlwZV1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnZGltZW5zaW9uJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgY2hlY2skMS50eXBlKG9wdGlvbnMuZGltZW5zaW9uLCAnbnVtYmVyJywgJ2ludmFsaWQgZGltZW5zaW9uJylcbiAgICAgICAgICBkaW1lbnNpb24gPSBvcHRpb25zLmRpbWVuc2lvbiB8IDBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnbGVuZ3RoJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgY2hlY2skMS5ubmkoYnl0ZUxlbmd0aCwgJ2J1ZmZlciBsZW5ndGggbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXInKVxuICAgICAgICAgIGJ5dGVMZW5ndGggPSBvcHRpb25zLmxlbmd0aCB8IDBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBidWZmZXIuYmluZCgpXG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgLy8gIzQ3NVxuICAgICAgICBpZiAoYnl0ZUxlbmd0aCkgZ2wuYnVmZmVyRGF0YShidWZmZXIudHlwZSwgYnl0ZUxlbmd0aCwgdXNhZ2UpXG4gICAgICAgIGJ1ZmZlci5kdHlwZSA9IGR0eXBlIHx8IEdMX1VOU0lHTkVEX0JZVEUkM1xuICAgICAgICBidWZmZXIudXNhZ2UgPSB1c2FnZVxuICAgICAgICBidWZmZXIuZGltZW5zaW9uID0gZGltZW5zaW9uXG4gICAgICAgIGJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdEJ1ZmZlckZyb21EYXRhKGJ1ZmZlciwgZGF0YSwgdXNhZ2UsIGR0eXBlLCBkaW1lbnNpb24sIHBlcnNpc3RlbnQpXG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgICBidWZmZXIuc3RhdHMuc2l6ZSA9IGJ1ZmZlci5ieXRlTGVuZ3RoICogRFRZUEVTX1NJWkVTW2J1ZmZlci5kdHlwZV1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlZ2xCdWZmZXJcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRTdWJEYXRhIChkYXRhLCBvZmZzZXQpIHtcbiAgICAgIGNoZWNrJDEob2Zmc2V0ICsgZGF0YS5ieXRlTGVuZ3RoIDw9IGJ1ZmZlci5ieXRlTGVuZ3RoLFxuICAgICAgICAnaW52YWxpZCBidWZmZXIgc3ViZGF0YSBjYWxsLCBidWZmZXIgaXMgdG9vIHNtYWxsLiAnICsgJyBDYW5cXCd0IHdyaXRlIGRhdGEgb2Ygc2l6ZSAnICsgZGF0YS5ieXRlTGVuZ3RoICsgJyBzdGFydGluZyBmcm9tIG9mZnNldCAnICsgb2Zmc2V0ICsgJyB0byBhIGJ1ZmZlciBvZiBzaXplICcgKyBidWZmZXIuYnl0ZUxlbmd0aClcblxuICAgICAgZ2wuYnVmZmVyU3ViRGF0YShidWZmZXIudHlwZSwgb2Zmc2V0LCBkYXRhKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YmRhdGEgKGRhdGEsIG9mZnNldF8pIHtcbiAgICAgIHZhciBvZmZzZXQgPSAob2Zmc2V0XyB8fCAwKSB8IDBcbiAgICAgIHZhciBzaGFwZVxuICAgICAgYnVmZmVyLmJpbmQoKVxuICAgICAgaWYgKGlzVHlwZWRBcnJheShkYXRhKSB8fCBkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgc2V0U3ViRGF0YShkYXRhLCBvZmZzZXQpXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgZGF0YVswXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHZhciBjb252ZXJ0ZWQgPSBwb29sLmFsbG9jVHlwZShidWZmZXIuZHR5cGUsIGRhdGEubGVuZ3RoKVxuICAgICAgICAgICAgY29weUFycmF5KGNvbnZlcnRlZCwgZGF0YSlcbiAgICAgICAgICAgIHNldFN1YkRhdGEoY29udmVydGVkLCBvZmZzZXQpXG4gICAgICAgICAgICBwb29sLmZyZWVUeXBlKGNvbnZlcnRlZClcbiAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVswXSkgfHwgaXNUeXBlZEFycmF5KGRhdGFbMF0pKSB7XG4gICAgICAgICAgICBzaGFwZSA9IGFycmF5U2hhcGUoZGF0YSlcbiAgICAgICAgICAgIHZhciBmbGF0RGF0YSA9IGFycmF5RmxhdHRlbihkYXRhLCBzaGFwZSwgYnVmZmVyLmR0eXBlKVxuICAgICAgICAgICAgc2V0U3ViRGF0YShmbGF0RGF0YSwgb2Zmc2V0KVxuICAgICAgICAgICAgcG9vbC5mcmVlVHlwZShmbGF0RGF0YSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hlY2skMS5yYWlzZSgnaW52YWxpZCBidWZmZXIgZGF0YScpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzTkRBcnJheUxpa2UoZGF0YSkpIHtcbiAgICAgICAgc2hhcGUgPSBkYXRhLnNoYXBlXG4gICAgICAgIHZhciBzdHJpZGUgPSBkYXRhLnN0cmlkZVxuXG4gICAgICAgIHZhciBzaGFwZVggPSAwXG4gICAgICAgIHZhciBzaGFwZVkgPSAwXG4gICAgICAgIHZhciBzdHJpZGVYID0gMFxuICAgICAgICB2YXIgc3RyaWRlWSA9IDBcbiAgICAgICAgaWYgKHNoYXBlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHNoYXBlWCA9IHNoYXBlWzBdXG4gICAgICAgICAgc2hhcGVZID0gMVxuICAgICAgICAgIHN0cmlkZVggPSBzdHJpZGVbMF1cbiAgICAgICAgICBzdHJpZGVZID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHNoYXBlLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIHNoYXBlWCA9IHNoYXBlWzBdXG4gICAgICAgICAgc2hhcGVZID0gc2hhcGVbMV1cbiAgICAgICAgICBzdHJpZGVYID0gc3RyaWRlWzBdXG4gICAgICAgICAgc3RyaWRlWSA9IHN0cmlkZVsxXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoZWNrJDEucmFpc2UoJ2ludmFsaWQgc2hhcGUnKVxuICAgICAgICB9XG4gICAgICAgIHZhciBkdHlwZSA9IEFycmF5LmlzQXJyYXkoZGF0YS5kYXRhKVxuICAgICAgICAgID8gYnVmZmVyLmR0eXBlXG4gICAgICAgICAgOiB0eXBlZEFycmF5Q29kZShkYXRhLmRhdGEpXG5cbiAgICAgICAgdmFyIHRyYW5zcG9zZURhdGEgPSBwb29sLmFsbG9jVHlwZShkdHlwZSwgc2hhcGVYICogc2hhcGVZKVxuICAgICAgICB0cmFuc3Bvc2UodHJhbnNwb3NlRGF0YSxcbiAgICAgICAgICBkYXRhLmRhdGEsXG4gICAgICAgICAgc2hhcGVYLCBzaGFwZVksXG4gICAgICAgICAgc3RyaWRlWCwgc3RyaWRlWSxcbiAgICAgICAgICBkYXRhLm9mZnNldClcbiAgICAgICAgc2V0U3ViRGF0YSh0cmFuc3Bvc2VEYXRhLCBvZmZzZXQpXG4gICAgICAgIHBvb2wuZnJlZVR5cGUodHJhbnNwb3NlRGF0YSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoZWNrJDEucmFpc2UoJ2ludmFsaWQgZGF0YSBmb3IgYnVmZmVyIHN1YmRhdGEnKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZ2xCdWZmZXJcbiAgICB9XG5cbiAgICBpZiAoIWRlZmVySW5pdCkge1xuICAgICAgcmVnbEJ1ZmZlcihvcHRpb25zKVxuICAgIH1cblxuICAgIHJlZ2xCdWZmZXIuX3JlZ2xUeXBlID0gJ2J1ZmZlcidcbiAgICByZWdsQnVmZmVyLl9idWZmZXIgPSBidWZmZXJcbiAgICByZWdsQnVmZmVyLnN1YmRhdGEgPSBzdWJkYXRhXG4gICAgaWYgKGNvbmZpZy5wcm9maWxlKSB7XG4gICAgICByZWdsQnVmZmVyLnN0YXRzID0gYnVmZmVyLnN0YXRzXG4gICAgfVxuICAgIHJlZ2xCdWZmZXIuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHsgZGVzdHJveShidWZmZXIpIH1cblxuICAgIHJldHVybiByZWdsQnVmZmVyXG4gIH1cblxuICBmdW5jdGlvbiByZXN0b3JlQnVmZmVycyAoKSB7XG4gICAgdmFsdWVzKGJ1ZmZlclNldCkuZm9yRWFjaChmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICBidWZmZXIuYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKClcbiAgICAgIGdsLmJpbmRCdWZmZXIoYnVmZmVyLnR5cGUsIGJ1ZmZlci5idWZmZXIpXG4gICAgICBnbC5idWZmZXJEYXRhKFxuICAgICAgICBidWZmZXIudHlwZSwgYnVmZmVyLnBlcnNpc3RlbnREYXRhIHx8IGJ1ZmZlci5ieXRlTGVuZ3RoLCBidWZmZXIudXNhZ2UpXG4gICAgfSlcbiAgfVxuXG4gIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgIHN0YXRzLmdldFRvdGFsQnVmZmVyU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0b3RhbCA9IDBcbiAgICAgIC8vIFRPRE86IFJpZ2h0IG5vdywgdGhlIHN0cmVhbXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSB0b3RhbCBjb3VudC5cbiAgICAgIE9iamVjdC5rZXlzKGJ1ZmZlclNldCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHRvdGFsICs9IGJ1ZmZlclNldFtrZXldLnN0YXRzLnNpemVcbiAgICAgIH0pXG4gICAgICByZXR1cm4gdG90YWxcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogY3JlYXRlQnVmZmVyLFxuXG4gICAgY3JlYXRlU3RyZWFtOiBjcmVhdGVTdHJlYW0sXG4gICAgZGVzdHJveVN0cmVhbTogZGVzdHJveVN0cmVhbSxcblxuICAgIGNsZWFyOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YWx1ZXMoYnVmZmVyU2V0KS5mb3JFYWNoKGRlc3Ryb3kpXG4gICAgICBzdHJlYW1Qb29sLmZvckVhY2goZGVzdHJveSlcbiAgICB9LFxuXG4gICAgZ2V0QnVmZmVyOiBmdW5jdGlvbiAod3JhcHBlcikge1xuICAgICAgaWYgKHdyYXBwZXIgJiYgd3JhcHBlci5fYnVmZmVyIGluc3RhbmNlb2YgUkVHTEJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gd3JhcHBlci5fYnVmZmVyXG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG5cbiAgICByZXN0b3JlOiByZXN0b3JlQnVmZmVycyxcblxuICAgIF9pbml0QnVmZmVyOiBpbml0QnVmZmVyRnJvbURhdGFcbiAgfVxufVxuXG52YXIgcG9pbnRzID0gMDtcbnZhciBwb2ludCA9IDA7XG52YXIgbGluZXMgPSAxO1xudmFyIGxpbmUgPSAxO1xudmFyIHRyaWFuZ2xlcyA9IDQ7XG52YXIgdHJpYW5nbGUgPSA0O1xudmFyIHByaW1UeXBlcyA9IHtcblx0cG9pbnRzOiBwb2ludHMsXG5cdHBvaW50OiBwb2ludCxcblx0bGluZXM6IGxpbmVzLFxuXHRsaW5lOiBsaW5lLFxuXHR0cmlhbmdsZXM6IHRyaWFuZ2xlcyxcblx0dHJpYW5nbGU6IHRyaWFuZ2xlLFxuXHRcImxpbmUgbG9vcFwiOiAyLFxuXHRcImxpbmUgc3RyaXBcIjogMyxcblx0XCJ0cmlhbmdsZSBzdHJpcFwiOiA1LFxuXHRcInRyaWFuZ2xlIGZhblwiOiA2XG59O1xuXG52YXIgR0xfUE9JTlRTID0gMFxudmFyIEdMX0xJTkVTID0gMVxudmFyIEdMX1RSSUFOR0xFUyA9IDRcblxudmFyIEdMX0JZVEUkMiA9IDUxMjBcbnZhciBHTF9VTlNJR05FRF9CWVRFJDQgPSA1MTIxXG52YXIgR0xfU0hPUlQkMiA9IDUxMjJcbnZhciBHTF9VTlNJR05FRF9TSE9SVCQyID0gNTEyM1xudmFyIEdMX0lOVCQyID0gNTEyNFxudmFyIEdMX1VOU0lHTkVEX0lOVCQyID0gNTEyNVxuXG52YXIgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIgPSAzNDk2M1xuXG52YXIgR0xfU1RSRUFNX0RSQVckMSA9IDB4ODhFMFxudmFyIEdMX1NUQVRJQ19EUkFXJDEgPSAweDg4RTRcblxuZnVuY3Rpb24gd3JhcEVsZW1lbnRzU3RhdGUgKGdsLCBleHRlbnNpb25zLCBidWZmZXJTdGF0ZSwgc3RhdHMpIHtcbiAgdmFyIGVsZW1lbnRTZXQgPSB7fVxuICB2YXIgZWxlbWVudENvdW50ID0gMFxuXG4gIHZhciBlbGVtZW50VHlwZXMgPSB7XG4gICAgJ3VpbnQ4JzogR0xfVU5TSUdORURfQllURSQ0LFxuICAgICd1aW50MTYnOiBHTF9VTlNJR05FRF9TSE9SVCQyXG4gIH1cblxuICBpZiAoZXh0ZW5zaW9ucy5vZXNfZWxlbWVudF9pbmRleF91aW50KSB7XG4gICAgZWxlbWVudFR5cGVzLnVpbnQzMiA9IEdMX1VOU0lHTkVEX0lOVCQyXG4gIH1cblxuICBmdW5jdGlvbiBSRUdMRWxlbWVudEJ1ZmZlciAoYnVmZmVyKSB7XG4gICAgdGhpcy5pZCA9IGVsZW1lbnRDb3VudCsrXG4gICAgZWxlbWVudFNldFt0aGlzLmlkXSA9IHRoaXNcbiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlclxuICAgIHRoaXMucHJpbVR5cGUgPSBHTF9UUklBTkdMRVNcbiAgICB0aGlzLnZlcnRDb3VudCA9IDBcbiAgICB0aGlzLnR5cGUgPSAwXG4gIH1cblxuICBSRUdMRWxlbWVudEJ1ZmZlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmJ1ZmZlci5iaW5kKClcbiAgfVxuXG4gIHZhciBidWZmZXJQb29sID0gW11cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50U3RyZWFtIChkYXRhKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJ1ZmZlclBvb2wucG9wKClcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmVzdWx0ID0gbmV3IFJFR0xFbGVtZW50QnVmZmVyKGJ1ZmZlclN0YXRlLmNyZWF0ZShcbiAgICAgICAgbnVsbCxcbiAgICAgICAgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGZhbHNlKS5fYnVmZmVyKVxuICAgIH1cbiAgICBpbml0RWxlbWVudHMocmVzdWx0LCBkYXRhLCBHTF9TVFJFQU1fRFJBVyQxLCAtMSwgLTEsIDAsIDApXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveUVsZW1lbnRTdHJlYW0gKGVsZW1lbnRzKSB7XG4gICAgYnVmZmVyUG9vbC5wdXNoKGVsZW1lbnRzKVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdEVsZW1lbnRzIChcbiAgICBlbGVtZW50cyxcbiAgICBkYXRhLFxuICAgIHVzYWdlLFxuICAgIHByaW0sXG4gICAgY291bnQsXG4gICAgYnl0ZUxlbmd0aCxcbiAgICB0eXBlKSB7XG4gICAgZWxlbWVudHMuYnVmZmVyLmJpbmQoKVxuICAgIHZhciBkdHlwZVxuICAgIGlmIChkYXRhKSB7XG4gICAgICB2YXIgcHJlZGljdGVkVHlwZSA9IHR5cGVcbiAgICAgIGlmICghdHlwZSAmJiAoXG4gICAgICAgICFpc1R5cGVkQXJyYXkoZGF0YSkgfHxcbiAgICAgICAgIChpc05EQXJyYXlMaWtlKGRhdGEpICYmICFpc1R5cGVkQXJyYXkoZGF0YS5kYXRhKSkpKSB7XG4gICAgICAgIHByZWRpY3RlZFR5cGUgPSBleHRlbnNpb25zLm9lc19lbGVtZW50X2luZGV4X3VpbnRcbiAgICAgICAgICA/IEdMX1VOU0lHTkVEX0lOVCQyXG4gICAgICAgICAgOiBHTF9VTlNJR05FRF9TSE9SVCQyXG4gICAgICB9XG4gICAgICBidWZmZXJTdGF0ZS5faW5pdEJ1ZmZlcihcbiAgICAgICAgZWxlbWVudHMuYnVmZmVyLFxuICAgICAgICBkYXRhLFxuICAgICAgICB1c2FnZSxcbiAgICAgICAgcHJlZGljdGVkVHlwZSxcbiAgICAgICAgMylcbiAgICB9IGVsc2Uge1xuICAgICAgZ2wuYnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgYnl0ZUxlbmd0aCwgdXNhZ2UpXG4gICAgICBlbGVtZW50cy5idWZmZXIuZHR5cGUgPSBkdHlwZSB8fCBHTF9VTlNJR05FRF9CWVRFJDRcbiAgICAgIGVsZW1lbnRzLmJ1ZmZlci51c2FnZSA9IHVzYWdlXG4gICAgICBlbGVtZW50cy5idWZmZXIuZGltZW5zaW9uID0gM1xuICAgICAgZWxlbWVudHMuYnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG4gICAgfVxuXG4gICAgZHR5cGUgPSB0eXBlXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICBzd2l0Y2ggKGVsZW1lbnRzLmJ1ZmZlci5kdHlwZSkge1xuICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEUkNDpcbiAgICAgICAgY2FzZSBHTF9CWVRFJDI6XG4gICAgICAgICAgZHR5cGUgPSBHTF9VTlNJR05FRF9CWVRFJDRcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQkMjpcbiAgICAgICAgY2FzZSBHTF9TSE9SVCQyOlxuICAgICAgICAgIGR0eXBlID0gR0xfVU5TSUdORURfU0hPUlQkMlxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQkMjpcbiAgICAgICAgY2FzZSBHTF9JTlQkMjpcbiAgICAgICAgICBkdHlwZSA9IEdMX1VOU0lHTkVEX0lOVCQyXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNoZWNrJDEucmFpc2UoJ3Vuc3VwcG9ydGVkIHR5cGUgZm9yIGVsZW1lbnQgYXJyYXknKVxuICAgICAgfVxuICAgICAgZWxlbWVudHMuYnVmZmVyLmR0eXBlID0gZHR5cGVcbiAgICB9XG4gICAgZWxlbWVudHMudHlwZSA9IGR0eXBlXG5cbiAgICAvLyBDaGVjayBvZXNfZWxlbWVudF9pbmRleF91aW50IGV4dGVuc2lvblxuICAgIGNoZWNrJDEoXG4gICAgICBkdHlwZSAhPT0gR0xfVU5TSUdORURfSU5UJDIgfHxcbiAgICAgICEhZXh0ZW5zaW9ucy5vZXNfZWxlbWVudF9pbmRleF91aW50LFxuICAgICAgJzMyIGJpdCBlbGVtZW50IGJ1ZmZlcnMgbm90IHN1cHBvcnRlZCwgZW5hYmxlIG9lc19lbGVtZW50X2luZGV4X3VpbnQgZmlyc3QnKVxuXG4gICAgLy8gdHJ5IHRvIGd1ZXNzIGRlZmF1bHQgcHJpbWl0aXZlIHR5cGUgYW5kIGFyZ3VtZW50c1xuICAgIHZhciB2ZXJ0Q291bnQgPSBjb3VudFxuICAgIGlmICh2ZXJ0Q291bnQgPCAwKSB7XG4gICAgICB2ZXJ0Q291bnQgPSBlbGVtZW50cy5idWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgaWYgKGR0eXBlID09PSBHTF9VTlNJR05FRF9TSE9SVCQyKSB7XG4gICAgICAgIHZlcnRDb3VudCA+Pj0gMVxuICAgICAgfSBlbHNlIGlmIChkdHlwZSA9PT0gR0xfVU5TSUdORURfSU5UJDIpIHtcbiAgICAgICAgdmVydENvdW50ID4+PSAyXG4gICAgICB9XG4gICAgfVxuICAgIGVsZW1lbnRzLnZlcnRDb3VudCA9IHZlcnRDb3VudFxuXG4gICAgLy8gdHJ5IHRvIGd1ZXNzIHByaW1pdGl2ZSB0eXBlIGZyb20gY2VsbCBkaW1lbnNpb25cbiAgICB2YXIgcHJpbVR5cGUgPSBwcmltXG4gICAgaWYgKHByaW0gPCAwKSB7XG4gICAgICBwcmltVHlwZSA9IEdMX1RSSUFOR0xFU1xuICAgICAgdmFyIGRpbWVuc2lvbiA9IGVsZW1lbnRzLmJ1ZmZlci5kaW1lbnNpb25cbiAgICAgIGlmIChkaW1lbnNpb24gPT09IDEpIHByaW1UeXBlID0gR0xfUE9JTlRTXG4gICAgICBpZiAoZGltZW5zaW9uID09PSAyKSBwcmltVHlwZSA9IEdMX0xJTkVTXG4gICAgICBpZiAoZGltZW5zaW9uID09PSAzKSBwcmltVHlwZSA9IEdMX1RSSUFOR0xFU1xuICAgIH1cbiAgICBlbGVtZW50cy5wcmltVHlwZSA9IHByaW1UeXBlXG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95RWxlbWVudHMgKGVsZW1lbnRzKSB7XG4gICAgc3RhdHMuZWxlbWVudHNDb3VudC0tXG5cbiAgICBjaGVjayQxKGVsZW1lbnRzLmJ1ZmZlciAhPT0gbnVsbCwgJ211c3Qgbm90IGRvdWJsZSBkZXN0cm95IGVsZW1lbnRzJylcbiAgICBkZWxldGUgZWxlbWVudFNldFtlbGVtZW50cy5pZF1cbiAgICBlbGVtZW50cy5idWZmZXIuZGVzdHJveSgpXG4gICAgZWxlbWVudHMuYnVmZmVyID0gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudHMgKG9wdGlvbnMsIHBlcnNpc3RlbnQpIHtcbiAgICB2YXIgYnVmZmVyID0gYnVmZmVyU3RhdGUuY3JlYXRlKG51bGwsIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCB0cnVlKVxuICAgIHZhciBlbGVtZW50cyA9IG5ldyBSRUdMRWxlbWVudEJ1ZmZlcihidWZmZXIuX2J1ZmZlcilcbiAgICBzdGF0cy5lbGVtZW50c0NvdW50KytcblxuICAgIGZ1bmN0aW9uIHJlZ2xFbGVtZW50cyAob3B0aW9ucykge1xuICAgICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgIGJ1ZmZlcigpXG4gICAgICAgIGVsZW1lbnRzLnByaW1UeXBlID0gR0xfVFJJQU5HTEVTXG4gICAgICAgIGVsZW1lbnRzLnZlcnRDb3VudCA9IDBcbiAgICAgICAgZWxlbWVudHMudHlwZSA9IEdMX1VOU0lHTkVEX0JZVEUkNFxuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgYnVmZmVyKG9wdGlvbnMpXG4gICAgICAgIGVsZW1lbnRzLnByaW1UeXBlID0gR0xfVFJJQU5HTEVTXG4gICAgICAgIGVsZW1lbnRzLnZlcnRDb3VudCA9IG9wdGlvbnMgfCAwXG4gICAgICAgIGVsZW1lbnRzLnR5cGUgPSBHTF9VTlNJR05FRF9CWVRFJDRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBkYXRhID0gbnVsbFxuICAgICAgICB2YXIgdXNhZ2UgPSBHTF9TVEFUSUNfRFJBVyQxXG4gICAgICAgIHZhciBwcmltVHlwZSA9IC0xXG4gICAgICAgIHZhciB2ZXJ0Q291bnQgPSAtMVxuICAgICAgICB2YXIgYnl0ZUxlbmd0aCA9IDBcbiAgICAgICAgdmFyIGR0eXBlID0gMFxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSB8fFxuICAgICAgICAgICAgaXNUeXBlZEFycmF5KG9wdGlvbnMpIHx8XG4gICAgICAgICAgICBpc05EQXJyYXlMaWtlKG9wdGlvbnMpKSB7XG4gICAgICAgICAgZGF0YSA9IG9wdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGVjayQxLnR5cGUob3B0aW9ucywgJ29iamVjdCcsICdpbnZhbGlkIGFyZ3VtZW50cyBmb3IgZWxlbWVudHMnKVxuICAgICAgICAgIGlmICgnZGF0YScgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YVxuICAgICAgICAgICAgY2hlY2skMShcbiAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShkYXRhKSB8fFxuICAgICAgICAgICAgICAgIGlzVHlwZWRBcnJheShkYXRhKSB8fFxuICAgICAgICAgICAgICAgIGlzTkRBcnJheUxpa2UoZGF0YSksXG4gICAgICAgICAgICAgICdpbnZhbGlkIGRhdGEgZm9yIGVsZW1lbnQgYnVmZmVyJylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCd1c2FnZScgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgY2hlY2skMS5wYXJhbWV0ZXIoXG4gICAgICAgICAgICAgIG9wdGlvbnMudXNhZ2UsXG4gICAgICAgICAgICAgIHVzYWdlVHlwZXMsXG4gICAgICAgICAgICAgICdpbnZhbGlkIGVsZW1lbnQgYnVmZmVyIHVzYWdlJylcbiAgICAgICAgICAgIHVzYWdlID0gdXNhZ2VUeXBlc1tvcHRpb25zLnVzYWdlXVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ3ByaW1pdGl2ZScgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgY2hlY2skMS5wYXJhbWV0ZXIoXG4gICAgICAgICAgICAgIG9wdGlvbnMucHJpbWl0aXZlLFxuICAgICAgICAgICAgICBwcmltVHlwZXMsXG4gICAgICAgICAgICAgICdpbnZhbGlkIGVsZW1lbnQgYnVmZmVyIHByaW1pdGl2ZScpXG4gICAgICAgICAgICBwcmltVHlwZSA9IHByaW1UeXBlc1tvcHRpb25zLnByaW1pdGl2ZV1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCdjb3VudCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgY2hlY2skMShcbiAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbnMuY291bnQgPT09ICdudW1iZXInICYmIG9wdGlvbnMuY291bnQgPj0gMCxcbiAgICAgICAgICAgICAgJ2ludmFsaWQgdmVydGV4IGNvdW50IGZvciBlbGVtZW50cycpXG4gICAgICAgICAgICB2ZXJ0Q291bnQgPSBvcHRpb25zLmNvdW50IHwgMFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ3R5cGUnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNoZWNrJDEucGFyYW1ldGVyKFxuICAgICAgICAgICAgICBvcHRpb25zLnR5cGUsXG4gICAgICAgICAgICAgIGVsZW1lbnRUeXBlcyxcbiAgICAgICAgICAgICAgJ2ludmFsaWQgYnVmZmVyIHR5cGUnKVxuICAgICAgICAgICAgZHR5cGUgPSBlbGVtZW50VHlwZXNbb3B0aW9ucy50eXBlXVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ2xlbmd0aCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IG9wdGlvbnMubGVuZ3RoIHwgMFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBieXRlTGVuZ3RoID0gdmVydENvdW50XG4gICAgICAgICAgICBpZiAoZHR5cGUgPT09IEdMX1VOU0lHTkVEX1NIT1JUJDIgfHwgZHR5cGUgPT09IEdMX1NIT1JUJDIpIHtcbiAgICAgICAgICAgICAgYnl0ZUxlbmd0aCAqPSAyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGR0eXBlID09PSBHTF9VTlNJR05FRF9JTlQkMiB8fCBkdHlwZSA9PT0gR0xfSU5UJDIpIHtcbiAgICAgICAgICAgICAgYnl0ZUxlbmd0aCAqPSA0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluaXRFbGVtZW50cyhcbiAgICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIHVzYWdlLFxuICAgICAgICAgIHByaW1UeXBlLFxuICAgICAgICAgIHZlcnRDb3VudCxcbiAgICAgICAgICBieXRlTGVuZ3RoLFxuICAgICAgICAgIGR0eXBlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVnbEVsZW1lbnRzXG4gICAgfVxuXG4gICAgcmVnbEVsZW1lbnRzKG9wdGlvbnMpXG5cbiAgICByZWdsRWxlbWVudHMuX3JlZ2xUeXBlID0gJ2VsZW1lbnRzJ1xuICAgIHJlZ2xFbGVtZW50cy5fZWxlbWVudHMgPSBlbGVtZW50c1xuICAgIHJlZ2xFbGVtZW50cy5zdWJkYXRhID0gZnVuY3Rpb24gKGRhdGEsIG9mZnNldCkge1xuICAgICAgYnVmZmVyLnN1YmRhdGEoZGF0YSwgb2Zmc2V0KVxuICAgICAgcmV0dXJuIHJlZ2xFbGVtZW50c1xuICAgIH1cbiAgICByZWdsRWxlbWVudHMuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlc3Ryb3lFbGVtZW50cyhlbGVtZW50cylcbiAgICB9XG5cbiAgICByZXR1cm4gcmVnbEVsZW1lbnRzXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogY3JlYXRlRWxlbWVudHMsXG4gICAgY3JlYXRlU3RyZWFtOiBjcmVhdGVFbGVtZW50U3RyZWFtLFxuICAgIGRlc3Ryb3lTdHJlYW06IGRlc3Ryb3lFbGVtZW50U3RyZWFtLFxuICAgIGdldEVsZW1lbnRzOiBmdW5jdGlvbiAoZWxlbWVudHMpIHtcbiAgICAgIGlmICh0eXBlb2YgZWxlbWVudHMgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICBlbGVtZW50cy5fZWxlbWVudHMgaW5zdGFuY2VvZiBSRUdMRWxlbWVudEJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gZWxlbWVudHMuX2VsZW1lbnRzXG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgY2xlYXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhbHVlcyhlbGVtZW50U2V0KS5mb3JFYWNoKGRlc3Ryb3lFbGVtZW50cylcbiAgICB9XG4gIH1cbn1cblxudmFyIEZMT0FUID0gbmV3IEZsb2F0MzJBcnJheSgxKVxudmFyIElOVCA9IG5ldyBVaW50MzJBcnJheShGTE9BVC5idWZmZXIpXG5cbnZhciBHTF9VTlNJR05FRF9TSE9SVCQ0ID0gNTEyM1xuXG5mdW5jdGlvbiBjb252ZXJ0VG9IYWxmRmxvYXQgKGFycmF5KSB7XG4gIHZhciB1c2hvcnRzID0gcG9vbC5hbGxvY1R5cGUoR0xfVU5TSUdORURfU0hPUlQkNCwgYXJyYXkubGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaXNOYU4oYXJyYXlbaV0pKSB7XG4gICAgICB1c2hvcnRzW2ldID0gMHhmZmZmXG4gICAgfSBlbHNlIGlmIChhcnJheVtpXSA9PT0gSW5maW5pdHkpIHtcbiAgICAgIHVzaG9ydHNbaV0gPSAweDdjMDBcbiAgICB9IGVsc2UgaWYgKGFycmF5W2ldID09PSAtSW5maW5pdHkpIHtcbiAgICAgIHVzaG9ydHNbaV0gPSAweGZjMDBcbiAgICB9IGVsc2Uge1xuICAgICAgRkxPQVRbMF0gPSBhcnJheVtpXVxuICAgICAgdmFyIHggPSBJTlRbMF1cblxuICAgICAgdmFyIHNnbiA9ICh4ID4+PiAzMSkgPDwgMTVcbiAgICAgIHZhciBleHAgPSAoKHggPDwgMSkgPj4+IDI0KSAtIDEyN1xuICAgICAgdmFyIGZyYWMgPSAoeCA+PiAxMykgJiAoKDEgPDwgMTApIC0gMSlcblxuICAgICAgaWYgKGV4cCA8IC0yNCkge1xuICAgICAgICAvLyByb3VuZCBub24tcmVwcmVzZW50YWJsZSBkZW5vcm1hbHMgdG8gMFxuICAgICAgICB1c2hvcnRzW2ldID0gc2duXG4gICAgICB9IGVsc2UgaWYgKGV4cCA8IC0xNCkge1xuICAgICAgICAvLyBoYW5kbGUgZGVub3JtYWxzXG4gICAgICAgIHZhciBzID0gLTE0IC0gZXhwXG4gICAgICAgIHVzaG9ydHNbaV0gPSBzZ24gKyAoKGZyYWMgKyAoMSA8PCAxMCkpID4+IHMpXG4gICAgICB9IGVsc2UgaWYgKGV4cCA+IDE1KSB7XG4gICAgICAgIC8vIHJvdW5kIG92ZXJmbG93IHRvICsvLSBJbmZpbml0eVxuICAgICAgICB1c2hvcnRzW2ldID0gc2duICsgMHg3YzAwXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvdGhlcndpc2UgY29udmVydCBkaXJlY3RseVxuICAgICAgICB1c2hvcnRzW2ldID0gc2duICsgKChleHAgKyAxNSkgPDwgMTApICsgZnJhY1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1c2hvcnRzXG59XG5cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlIChzKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHMpIHx8IGlzVHlwZWRBcnJheShzKVxufVxuXG52YXIgaXNQb3cyJDEgPSBmdW5jdGlvbiAodikge1xuICByZXR1cm4gISh2ICYgKHYgLSAxKSkgJiYgKCEhdilcbn1cblxudmFyIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTID0gMHg4NkEzXG5cbnZhciBHTF9URVhUVVJFXzJEJDEgPSAweDBERTFcbnZhciBHTF9URVhUVVJFX0NVQkVfTUFQJDEgPSAweDg1MTNcbnZhciBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gkMSA9IDB4ODUxNVxuXG52YXIgR0xfUkdCQSQxID0gMHgxOTA4XG52YXIgR0xfQUxQSEEgPSAweDE5MDZcbnZhciBHTF9SR0IgPSAweDE5MDdcbnZhciBHTF9MVU1JTkFOQ0UgPSAweDE5MDlcbnZhciBHTF9MVU1JTkFOQ0VfQUxQSEEgPSAweDE5MEFcblxudmFyIEdMX1JHQkE0ID0gMHg4MDU2XG52YXIgR0xfUkdCNV9BMSA9IDB4ODA1N1xudmFyIEdMX1JHQjU2NSA9IDB4OEQ2MlxuXG52YXIgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCQxID0gMHg4MDMzXG52YXIgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSQxID0gMHg4MDM0XG52YXIgR0xfVU5TSUdORURfU0hPUlRfNV82XzUkMSA9IDB4ODM2M1xudmFyIEdMX1VOU0lHTkVEX0lOVF8yNF84X1dFQkdMJDEgPSAweDg0RkFcblxudmFyIEdMX0RFUFRIX0NPTVBPTkVOVCA9IDB4MTkwMlxudmFyIEdMX0RFUFRIX1NURU5DSUwgPSAweDg0RjlcblxudmFyIEdMX1NSR0JfRVhUID0gMHg4QzQwXG52YXIgR0xfU1JHQl9BTFBIQV9FWFQgPSAweDhDNDJcblxudmFyIEdMX0hBTEZfRkxPQVRfT0VTJDEgPSAweDhENjFcblxudmFyIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQgPSAweDgzRjBcbnZhciBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMVxudmFyIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUID0gMHg4M0YyXG52YXIgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgPSAweDgzRjNcblxudmFyIEdMX0NPTVBSRVNTRURfUkdCX0FUQ19XRUJHTCA9IDB4OEM5MlxudmFyIEdMX0NPTVBSRVNTRURfUkdCQV9BVENfRVhQTElDSVRfQUxQSEFfV0VCR0wgPSAweDhDOTNcbnZhciBHTF9DT01QUkVTU0VEX1JHQkFfQVRDX0lOVEVSUE9MQVRFRF9BTFBIQV9XRUJHTCA9IDB4ODdFRVxuXG52YXIgR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMFxudmFyIEdMX0NPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDFcbnZhciBHTF9DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMlxudmFyIEdMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzXG5cbnZhciBHTF9DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMID0gMHg4RDY0XG5cbnZhciBHTF9VTlNJR05FRF9CWVRFJDUgPSAweDE0MDFcbnZhciBHTF9VTlNJR05FRF9TSE9SVCQzID0gMHgxNDAzXG52YXIgR0xfVU5TSUdORURfSU5UJDMgPSAweDE0MDVcbnZhciBHTF9GTE9BVCQ0ID0gMHgxNDA2XG5cbnZhciBHTF9URVhUVVJFX1dSQVBfUyA9IDB4MjgwMlxudmFyIEdMX1RFWFRVUkVfV1JBUF9UID0gMHgyODAzXG5cbnZhciBHTF9SRVBFQVQgPSAweDI5MDFcbnZhciBHTF9DTEFNUF9UT19FREdFJDEgPSAweDgxMkZcbnZhciBHTF9NSVJST1JFRF9SRVBFQVQgPSAweDgzNzBcblxudmFyIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiA9IDB4MjgwMFxudmFyIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiA9IDB4MjgwMVxuXG52YXIgR0xfTkVBUkVTVCQxID0gMHgyNjAwXG52YXIgR0xfTElORUFSID0gMHgyNjAxXG52YXIgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCQxID0gMHgyNzAwXG52YXIgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUJDEgPSAweDI3MDFcbnZhciBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIkMSA9IDB4MjcwMlxudmFyIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSJDEgPSAweDI3MDNcblxudmFyIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UID0gMHg4MTkyXG52YXIgR0xfRE9OVF9DQVJFID0gMHgxMTAwXG52YXIgR0xfRkFTVEVTVCA9IDB4MTEwMVxudmFyIEdMX05JQ0VTVCA9IDB4MTEwMlxuXG52YXIgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgPSAweDg0RkVcblxudmFyIEdMX1VOUEFDS19BTElHTk1FTlQgPSAweDBDRjVcbnZhciBHTF9VTlBBQ0tfRkxJUF9ZX1dFQkdMID0gMHg5MjQwXG52YXIgR0xfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMID0gMHg5MjQxXG52YXIgR0xfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCA9IDB4OTI0M1xuXG52YXIgR0xfQlJPV1NFUl9ERUZBVUxUX1dFQkdMID0gMHg5MjQ0XG5cbnZhciBHTF9URVhUVVJFMCQxID0gMHg4NEMwXG5cbnZhciBNSVBNQVBfRklMVEVSUyA9IFtcbiAgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCQxLFxuICBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIkMSxcbiAgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUJDEsXG4gIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSJDFcbl1cblxudmFyIENIQU5ORUxTX0ZPUk1BVCA9IFtcbiAgMCxcbiAgR0xfTFVNSU5BTkNFLFxuICBHTF9MVU1JTkFOQ0VfQUxQSEEsXG4gIEdMX1JHQixcbiAgR0xfUkdCQSQxXG5dXG5cbnZhciBGT1JNQVRfQ0hBTk5FTFMgPSB7fVxuRk9STUFUX0NIQU5ORUxTW0dMX0xVTUlOQU5DRV0gPVxuRk9STUFUX0NIQU5ORUxTW0dMX0FMUEhBXSA9XG5GT1JNQVRfQ0hBTk5FTFNbR0xfREVQVEhfQ09NUE9ORU5UXSA9IDFcbkZPUk1BVF9DSEFOTkVMU1tHTF9ERVBUSF9TVEVOQ0lMXSA9XG5GT1JNQVRfQ0hBTk5FTFNbR0xfTFVNSU5BTkNFX0FMUEhBXSA9IDJcbkZPUk1BVF9DSEFOTkVMU1tHTF9SR0JdID1cbkZPUk1BVF9DSEFOTkVMU1tHTF9TUkdCX0VYVF0gPSAzXG5GT1JNQVRfQ0hBTk5FTFNbR0xfUkdCQSQxXSA9XG5GT1JNQVRfQ0hBTk5FTFNbR0xfU1JHQl9BTFBIQV9FWFRdID0gNFxuXG5mdW5jdGlvbiBvYmplY3ROYW1lIChzdHIpIHtcbiAgcmV0dXJuICdbb2JqZWN0ICcgKyBzdHIgKyAnXSdcbn1cblxudmFyIENBTlZBU19DTEFTUyA9IG9iamVjdE5hbWUoJ0hUTUxDYW52YXNFbGVtZW50JylcbnZhciBPRkZTQ1JFRU5DQU5WQVNfQ0xBU1MgPSBvYmplY3ROYW1lKCdPZmZzY3JlZW5DYW52YXMnKVxudmFyIENPTlRFWFQyRF9DTEFTUyA9IG9iamVjdE5hbWUoJ0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCcpXG52YXIgQklUTUFQX0NMQVNTID0gb2JqZWN0TmFtZSgnSW1hZ2VCaXRtYXAnKVxudmFyIElNQUdFX0NMQVNTID0gb2JqZWN0TmFtZSgnSFRNTEltYWdlRWxlbWVudCcpXG52YXIgVklERU9fQ0xBU1MgPSBvYmplY3ROYW1lKCdIVE1MVmlkZW9FbGVtZW50JylcblxudmFyIFBJWEVMX0NMQVNTRVMgPSBPYmplY3Qua2V5cyhhcnJheVR5cGVzKS5jb25jYXQoW1xuICBDQU5WQVNfQ0xBU1MsXG4gIE9GRlNDUkVFTkNBTlZBU19DTEFTUyxcbiAgQ09OVEVYVDJEX0NMQVNTLFxuICBCSVRNQVBfQ0xBU1MsXG4gIElNQUdFX0NMQVNTLFxuICBWSURFT19DTEFTU1xuXSlcblxuLy8gZm9yIGV2ZXJ5IHRleHR1cmUgdHlwZSwgc3RvcmVcbi8vIHRoZSBzaXplIGluIGJ5dGVzLlxudmFyIFRZUEVfU0laRVMgPSBbXVxuVFlQRV9TSVpFU1tHTF9VTlNJR05FRF9CWVRFJDVdID0gMVxuVFlQRV9TSVpFU1tHTF9GTE9BVCQ0XSA9IDRcblRZUEVfU0laRVNbR0xfSEFMRl9GTE9BVF9PRVMkMV0gPSAyXG5cblRZUEVfU0laRVNbR0xfVU5TSUdORURfU0hPUlQkM10gPSAyXG5UWVBFX1NJWkVTW0dMX1VOU0lHTkVEX0lOVCQzXSA9IDRcblxudmFyIEZPUk1BVF9TSVpFU19TUEVDSUFMID0gW11cbkZPUk1BVF9TSVpFU19TUEVDSUFMW0dMX1JHQkE0XSA9IDJcbkZPUk1BVF9TSVpFU19TUEVDSUFMW0dMX1JHQjVfQTFdID0gMlxuRk9STUFUX1NJWkVTX1NQRUNJQUxbR0xfUkdCNTY1XSA9IDJcbkZPUk1BVF9TSVpFU19TUEVDSUFMW0dMX0RFUFRIX1NURU5DSUxdID0gNFxuXG5GT1JNQVRfU0laRVNfU1BFQ0lBTFtHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUXSA9IDAuNVxuRk9STUFUX1NJWkVTX1NQRUNJQUxbR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFRdID0gMC41XG5GT1JNQVRfU0laRVNfU1BFQ0lBTFtHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVF0gPSAxXG5GT1JNQVRfU0laRVNfU1BFQ0lBTFtHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVF0gPSAxXG5cbkZPUk1BVF9TSVpFU19TUEVDSUFMW0dMX0NPTVBSRVNTRURfUkdCX0FUQ19XRUJHTF0gPSAwLjVcbkZPUk1BVF9TSVpFU19TUEVDSUFMW0dMX0NPTVBSRVNTRURfUkdCQV9BVENfRVhQTElDSVRfQUxQSEFfV0VCR0xdID0gMVxuRk9STUFUX1NJWkVTX1NQRUNJQUxbR0xfQ09NUFJFU1NFRF9SR0JBX0FUQ19JTlRFUlBPTEFURURfQUxQSEFfV0VCR0xdID0gMVxuXG5GT1JNQVRfU0laRVNfU1BFQ0lBTFtHTF9DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HXSA9IDAuNVxuRk9STUFUX1NJWkVTX1NQRUNJQUxbR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNR10gPSAwLjI1XG5GT1JNQVRfU0laRVNfU1BFQ0lBTFtHTF9DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNR10gPSAwLjVcbkZPUk1BVF9TSVpFU19TUEVDSUFMW0dMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HXSA9IDAuMjVcblxuRk9STUFUX1NJWkVTX1NQRUNJQUxbR0xfQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTF0gPSAwLjVcblxuZnVuY3Rpb24gaXNOdW1lcmljQXJyYXkgKGFycikge1xuICByZXR1cm4gKFxuICAgIEFycmF5LmlzQXJyYXkoYXJyKSAmJlxuICAgIChhcnIubGVuZ3RoID09PSAwIHx8XG4gICAgdHlwZW9mIGFyclswXSA9PT0gJ251bWJlcicpKVxufVxuXG5mdW5jdGlvbiBpc1JlY3RBcnJheSAoYXJyKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdmFyIHdpZHRoID0gYXJyLmxlbmd0aFxuICBpZiAod2lkdGggPT09IDAgfHwgIWlzQXJyYXlMaWtlKGFyclswXSkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBjbGFzc1N0cmluZyAoeCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHgpXG59XG5cbmZ1bmN0aW9uIGlzQ2FudmFzRWxlbWVudCAob2JqZWN0KSB7XG4gIHJldHVybiBjbGFzc1N0cmluZyhvYmplY3QpID09PSBDQU5WQVNfQ0xBU1Ncbn1cblxuZnVuY3Rpb24gaXNPZmZzY3JlZW5DYW52YXMgKG9iamVjdCkge1xuICByZXR1cm4gY2xhc3NTdHJpbmcob2JqZWN0KSA9PT0gT0ZGU0NSRUVOQ0FOVkFTX0NMQVNTXG59XG5cbmZ1bmN0aW9uIGlzQ29udGV4dDJEIChvYmplY3QpIHtcbiAgcmV0dXJuIGNsYXNzU3RyaW5nKG9iamVjdCkgPT09IENPTlRFWFQyRF9DTEFTU1xufVxuXG5mdW5jdGlvbiBpc0JpdG1hcCAob2JqZWN0KSB7XG4gIHJldHVybiBjbGFzc1N0cmluZyhvYmplY3QpID09PSBCSVRNQVBfQ0xBU1Ncbn1cblxuZnVuY3Rpb24gaXNJbWFnZUVsZW1lbnQgKG9iamVjdCkge1xuICByZXR1cm4gY2xhc3NTdHJpbmcob2JqZWN0KSA9PT0gSU1BR0VfQ0xBU1Ncbn1cblxuZnVuY3Rpb24gaXNWaWRlb0VsZW1lbnQgKG9iamVjdCkge1xuICByZXR1cm4gY2xhc3NTdHJpbmcob2JqZWN0KSA9PT0gVklERU9fQ0xBU1Ncbn1cblxuZnVuY3Rpb24gaXNQaXhlbERhdGEgKG9iamVjdCkge1xuICBpZiAoIW9iamVjdCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHZhciBjbGFzc05hbWUgPSBjbGFzc1N0cmluZyhvYmplY3QpXG4gIGlmIChQSVhFTF9DTEFTU0VTLmluZGV4T2YoY2xhc3NOYW1lKSA+PSAwKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gKFxuICAgIGlzTnVtZXJpY0FycmF5KG9iamVjdCkgfHxcbiAgICBpc1JlY3RBcnJheShvYmplY3QpIHx8XG4gICAgaXNOREFycmF5TGlrZShvYmplY3QpKVxufVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5Q29kZSQxIChkYXRhKSB7XG4gIHJldHVybiBhcnJheVR5cGVzW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChkYXRhKV0gfCAwXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRhIChyZXN1bHQsIGRhdGEpIHtcbiAgdmFyIG4gPSBkYXRhLmxlbmd0aFxuICBzd2l0Y2ggKHJlc3VsdC50eXBlKSB7XG4gICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFJDU6XG4gICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVCQzOlxuICAgIGNhc2UgR0xfVU5TSUdORURfSU5UJDM6XG4gICAgY2FzZSBHTF9GTE9BVCQ0OlxuICAgICAgdmFyIGNvbnZlcnRlZCA9IHBvb2wuYWxsb2NUeXBlKHJlc3VsdC50eXBlLCBuKVxuICAgICAgY29udmVydGVkLnNldChkYXRhKVxuICAgICAgcmVzdWx0LmRhdGEgPSBjb252ZXJ0ZWRcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTJDE6XG4gICAgICByZXN1bHQuZGF0YSA9IGNvbnZlcnRUb0hhbGZGbG9hdChkYXRhKVxuICAgICAgYnJlYWtcblxuICAgIGRlZmF1bHQ6XG4gICAgICBjaGVjayQxLnJhaXNlKCd1bnN1cHBvcnRlZCB0ZXh0dXJlIHR5cGUsIG11c3Qgc3BlY2lmeSBhIHR5cGVkIGFycmF5JylcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVDb252ZXJ0IChpbWFnZSwgbikge1xuICByZXR1cm4gcG9vbC5hbGxvY1R5cGUoXG4gICAgaW1hZ2UudHlwZSA9PT0gR0xfSEFMRl9GTE9BVF9PRVMkMVxuICAgICAgPyBHTF9GTE9BVCQ0XG4gICAgICA6IGltYWdlLnR5cGUsIG4pXG59XG5cbmZ1bmN0aW9uIHBvc3RDb252ZXJ0IChpbWFnZSwgZGF0YSkge1xuICBpZiAoaW1hZ2UudHlwZSA9PT0gR0xfSEFMRl9GTE9BVF9PRVMkMSkge1xuICAgIGltYWdlLmRhdGEgPSBjb252ZXJ0VG9IYWxmRmxvYXQoZGF0YSlcbiAgICBwb29sLmZyZWVUeXBlKGRhdGEpXG4gIH0gZWxzZSB7XG4gICAgaW1hZ2UuZGF0YSA9IGRhdGFcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc3Bvc2VEYXRhIChpbWFnZSwgYXJyYXksIHN0cmlkZVgsIHN0cmlkZVksIHN0cmlkZUMsIG9mZnNldCkge1xuICB2YXIgdyA9IGltYWdlLndpZHRoXG4gIHZhciBoID0gaW1hZ2UuaGVpZ2h0XG4gIHZhciBjID0gaW1hZ2UuY2hhbm5lbHNcbiAgdmFyIG4gPSB3ICogaCAqIGNcbiAgdmFyIGRhdGEgPSBwcmVDb252ZXJ0KGltYWdlLCBuKVxuXG4gIHZhciBwID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IGg7ICsraSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgdzsgKytqKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGM7ICsraykge1xuICAgICAgICBkYXRhW3ArK10gPSBhcnJheVtzdHJpZGVYICogaiArIHN0cmlkZVkgKiBpICsgc3RyaWRlQyAqIGsgKyBvZmZzZXRdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcG9zdENvbnZlcnQoaW1hZ2UsIGRhdGEpXG59XG5cbmZ1bmN0aW9uIGdldFRleHR1cmVTaXplIChmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIGlzTWlwbWFwLCBpc0N1YmUpIHtcbiAgdmFyIHNcbiAgaWYgKHR5cGVvZiBGT1JNQVRfU0laRVNfU1BFQ0lBTFtmb3JtYXRdICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIHdlIGhhdmUgYSBzcGVjaWFsIGFycmF5IGZvciBkZWFsaW5nIHdpdGggd2VpcmQgY29sb3IgZm9ybWF0cyBzdWNoIGFzIFJHQjVBMVxuICAgIHMgPSBGT1JNQVRfU0laRVNfU1BFQ0lBTFtmb3JtYXRdXG4gIH0gZWxzZSB7XG4gICAgcyA9IEZPUk1BVF9DSEFOTkVMU1tmb3JtYXRdICogVFlQRV9TSVpFU1t0eXBlXVxuICB9XG5cbiAgaWYgKGlzQ3ViZSkge1xuICAgIHMgKj0gNlxuICB9XG5cbiAgaWYgKGlzTWlwbWFwKSB7XG4gICAgLy8gY29tcHV0ZSB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgdGhlIG1pcG1hcHMuXG4gICAgdmFyIHRvdGFsID0gMFxuXG4gICAgdmFyIHcgPSB3aWR0aFxuICAgIHdoaWxlICh3ID49IDEpIHtcbiAgICAgIC8vIHdlIGNhbiBvbmx5IHVzZSBtaXBtYXBzIG9uIGEgc3F1YXJlIGltYWdlLFxuICAgICAgLy8gc28gd2UgY2FuIHNpbXBseSB1c2UgdGhlIHdpZHRoIGFuZCBpZ25vcmUgdGhlIGhlaWdodDpcbiAgICAgIHRvdGFsICs9IHMgKiB3ICogd1xuICAgICAgdyAvPSAyXG4gICAgfVxuICAgIHJldHVybiB0b3RhbFxuICB9IGVsc2Uge1xuICAgIHJldHVybiBzICogd2lkdGggKiBoZWlnaHRcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXh0dXJlU2V0IChcbiAgZ2wsIGV4dGVuc2lvbnMsIGxpbWl0cywgcmVnbFBvbGwsIGNvbnRleHRTdGF0ZSwgc3RhdHMsIGNvbmZpZykge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEluaXRpYWxpemUgY29uc3RhbnRzIGFuZCBwYXJhbWV0ZXIgdGFibGVzIGhlcmVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICB2YXIgbWlwbWFwSGludCA9IHtcbiAgICBcImRvbid0IGNhcmVcIjogR0xfRE9OVF9DQVJFLFxuICAgICdkb250IGNhcmUnOiBHTF9ET05UX0NBUkUsXG4gICAgJ25pY2UnOiBHTF9OSUNFU1QsXG4gICAgJ2Zhc3QnOiBHTF9GQVNURVNUXG4gIH1cblxuICB2YXIgd3JhcE1vZGVzID0ge1xuICAgICdyZXBlYXQnOiBHTF9SRVBFQVQsXG4gICAgJ2NsYW1wJzogR0xfQ0xBTVBfVE9fRURHRSQxLFxuICAgICdtaXJyb3InOiBHTF9NSVJST1JFRF9SRVBFQVRcbiAgfVxuXG4gIHZhciBtYWdGaWx0ZXJzID0ge1xuICAgICduZWFyZXN0JzogR0xfTkVBUkVTVCQxLFxuICAgICdsaW5lYXInOiBHTF9MSU5FQVJcbiAgfVxuXG4gIHZhciBtaW5GaWx0ZXJzID0gZXh0ZW5kKHtcbiAgICAnbWlwbWFwJzogR0xfTElORUFSX01JUE1BUF9MSU5FQVIkMSxcbiAgICAnbmVhcmVzdCBtaXBtYXAgbmVhcmVzdCc6IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QkMSxcbiAgICAnbGluZWFyIG1pcG1hcCBuZWFyZXN0JzogR0xfTElORUFSX01JUE1BUF9ORUFSRVNUJDEsXG4gICAgJ25lYXJlc3QgbWlwbWFwIGxpbmVhcic6IEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiQxLFxuICAgICdsaW5lYXIgbWlwbWFwIGxpbmVhcic6IEdMX0xJTkVBUl9NSVBNQVBfTElORUFSJDFcbiAgfSwgbWFnRmlsdGVycylcblxuICB2YXIgY29sb3JTcGFjZSA9IHtcbiAgICAnbm9uZSc6IDAsXG4gICAgJ2Jyb3dzZXInOiBHTF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xcbiAgfVxuXG4gIHZhciB0ZXh0dXJlVHlwZXMgPSB7XG4gICAgJ3VpbnQ4JzogR0xfVU5TSUdORURfQllURSQ1LFxuICAgICdyZ2JhNCc6IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQkMSxcbiAgICAncmdiNTY1JzogR0xfVU5TSUdORURfU0hPUlRfNV82XzUkMSxcbiAgICAncmdiNSBhMSc6IEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEkMVxuICB9XG5cbiAgdmFyIHRleHR1cmVGb3JtYXRzID0ge1xuICAgICdhbHBoYSc6IEdMX0FMUEhBLFxuICAgICdsdW1pbmFuY2UnOiBHTF9MVU1JTkFOQ0UsXG4gICAgJ2x1bWluYW5jZSBhbHBoYSc6IEdMX0xVTUlOQU5DRV9BTFBIQSxcbiAgICAncmdiJzogR0xfUkdCLFxuICAgICdyZ2JhJzogR0xfUkdCQSQxLFxuICAgICdyZ2JhNCc6IEdMX1JHQkE0LFxuICAgICdyZ2I1IGExJzogR0xfUkdCNV9BMSxcbiAgICAncmdiNTY1JzogR0xfUkdCNTY1XG4gIH1cblxuICB2YXIgY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzID0ge31cblxuICBpZiAoZXh0ZW5zaW9ucy5leHRfc3JnYikge1xuICAgIHRleHR1cmVGb3JtYXRzLnNyZ2IgPSBHTF9TUkdCX0VYVFxuICAgIHRleHR1cmVGb3JtYXRzLnNyZ2JhID0gR0xfU1JHQl9BTFBIQV9FWFRcbiAgfVxuXG4gIGlmIChleHRlbnNpb25zLm9lc190ZXh0dXJlX2Zsb2F0KSB7XG4gICAgdGV4dHVyZVR5cGVzLmZsb2F0MzIgPSB0ZXh0dXJlVHlwZXMuZmxvYXQgPSBHTF9GTE9BVCQ0XG4gIH1cblxuICBpZiAoZXh0ZW5zaW9ucy5vZXNfdGV4dHVyZV9oYWxmX2Zsb2F0KSB7XG4gICAgdGV4dHVyZVR5cGVzWydmbG9hdDE2J10gPSB0ZXh0dXJlVHlwZXNbJ2hhbGYgZmxvYXQnXSA9IEdMX0hBTEZfRkxPQVRfT0VTJDFcbiAgfVxuXG4gIGlmIChleHRlbnNpb25zLndlYmdsX2RlcHRoX3RleHR1cmUpIHtcbiAgICBleHRlbmQodGV4dHVyZUZvcm1hdHMsIHtcbiAgICAgICdkZXB0aCc6IEdMX0RFUFRIX0NPTVBPTkVOVCxcbiAgICAgICdkZXB0aCBzdGVuY2lsJzogR0xfREVQVEhfU1RFTkNJTFxuICAgIH0pXG5cbiAgICBleHRlbmQodGV4dHVyZVR5cGVzLCB7XG4gICAgICAndWludDE2JzogR0xfVU5TSUdORURfU0hPUlQkMyxcbiAgICAgICd1aW50MzInOiBHTF9VTlNJR05FRF9JTlQkMyxcbiAgICAgICdkZXB0aCBzdGVuY2lsJzogR0xfVU5TSUdORURfSU5UXzI0XzhfV0VCR0wkMVxuICAgIH0pXG4gIH1cblxuICBpZiAoZXh0ZW5zaW9ucy53ZWJnbF9jb21wcmVzc2VkX3RleHR1cmVfczN0Yykge1xuICAgIGV4dGVuZChjb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMsIHtcbiAgICAgICdyZ2IgczN0YyBkeHQxJzogR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCxcbiAgICAgICdyZ2JhIHMzdGMgZHh0MSc6IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULFxuICAgICAgJ3JnYmEgczN0YyBkeHQzJzogR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsXG4gICAgICAncmdiYSBzM3RjIGR4dDUnOiBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVFxuICAgIH0pXG4gIH1cblxuICBpZiAoZXh0ZW5zaW9ucy53ZWJnbF9jb21wcmVzc2VkX3RleHR1cmVfYXRjKSB7XG4gICAgZXh0ZW5kKGNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cywge1xuICAgICAgJ3JnYiBhdGMnOiBHTF9DT01QUkVTU0VEX1JHQl9BVENfV0VCR0wsXG4gICAgICAncmdiYSBhdGMgZXhwbGljaXQgYWxwaGEnOiBHTF9DT01QUkVTU0VEX1JHQkFfQVRDX0VYUExJQ0lUX0FMUEhBX1dFQkdMLFxuICAgICAgJ3JnYmEgYXRjIGludGVycG9sYXRlZCBhbHBoYSc6IEdMX0NPTVBSRVNTRURfUkdCQV9BVENfSU5URVJQT0xBVEVEX0FMUEhBX1dFQkdMXG4gICAgfSlcbiAgfVxuXG4gIGlmIChleHRlbnNpb25zLndlYmdsX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0Yykge1xuICAgIGV4dGVuZChjb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMsIHtcbiAgICAgICdyZ2IgcHZydGMgNGJwcHYxJzogR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyxcbiAgICAgICdyZ2IgcHZydGMgMmJwcHYxJzogR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyxcbiAgICAgICdyZ2JhIHB2cnRjIDRicHB2MSc6IEdMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HLFxuICAgICAgJ3JnYmEgcHZydGMgMmJwcHYxJzogR0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUdcbiAgICB9KVxuICB9XG5cbiAgaWYgKGV4dGVuc2lvbnMud2ViZ2xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEpIHtcbiAgICBjb21wcmVzc2VkVGV4dHVyZUZvcm1hdHNbJ3JnYiBldGMxJ10gPSBHTF9DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMXG4gIH1cblxuICAvLyBDb3B5IG92ZXIgYWxsIHRleHR1cmUgZm9ybWF0c1xuICB2YXIgc3VwcG9ydGVkQ29tcHJlc3NlZEZvcm1hdHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChcbiAgICBnbC5nZXRQYXJhbWV0ZXIoR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMpKVxuICBPYmplY3Qua2V5cyhjb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgZm9ybWF0ID0gY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzW25hbWVdXG4gICAgaWYgKHN1cHBvcnRlZENvbXByZXNzZWRGb3JtYXRzLmluZGV4T2YoZm9ybWF0KSA+PSAwKSB7XG4gICAgICB0ZXh0dXJlRm9ybWF0c1tuYW1lXSA9IGZvcm1hdFxuICAgIH1cbiAgfSlcblxuICB2YXIgc3VwcG9ydGVkRm9ybWF0cyA9IE9iamVjdC5rZXlzKHRleHR1cmVGb3JtYXRzKVxuICBsaW1pdHMudGV4dHVyZUZvcm1hdHMgPSBzdXBwb3J0ZWRGb3JtYXRzXG5cbiAgLy8gYXNzb2NpYXRlIHdpdGggZXZlcnkgZm9ybWF0IHN0cmluZyBpdHNcbiAgLy8gY29ycmVzcG9uZGluZyBHTC12YWx1ZS5cbiAgdmFyIHRleHR1cmVGb3JtYXRzSW52ZXJ0ID0gW11cbiAgT2JqZWN0LmtleXModGV4dHVyZUZvcm1hdHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWwgPSB0ZXh0dXJlRm9ybWF0c1trZXldXG4gICAgdGV4dHVyZUZvcm1hdHNJbnZlcnRbdmFsXSA9IGtleVxuICB9KVxuXG4gIC8vIGFzc29jaWF0ZSB3aXRoIGV2ZXJ5IHR5cGUgc3RyaW5nIGl0c1xuICAvLyBjb3JyZXNwb25kaW5nIEdMLXZhbHVlLlxuICB2YXIgdGV4dHVyZVR5cGVzSW52ZXJ0ID0gW11cbiAgT2JqZWN0LmtleXModGV4dHVyZVR5cGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsID0gdGV4dHVyZVR5cGVzW2tleV1cbiAgICB0ZXh0dXJlVHlwZXNJbnZlcnRbdmFsXSA9IGtleVxuICB9KVxuXG4gIHZhciBtYWdGaWx0ZXJzSW52ZXJ0ID0gW11cbiAgT2JqZWN0LmtleXMobWFnRmlsdGVycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbCA9IG1hZ0ZpbHRlcnNba2V5XVxuICAgIG1hZ0ZpbHRlcnNJbnZlcnRbdmFsXSA9IGtleVxuICB9KVxuXG4gIHZhciBtaW5GaWx0ZXJzSW52ZXJ0ID0gW11cbiAgT2JqZWN0LmtleXMobWluRmlsdGVycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbCA9IG1pbkZpbHRlcnNba2V5XVxuICAgIG1pbkZpbHRlcnNJbnZlcnRbdmFsXSA9IGtleVxuICB9KVxuXG4gIHZhciB3cmFwTW9kZXNJbnZlcnQgPSBbXVxuICBPYmplY3Qua2V5cyh3cmFwTW9kZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWwgPSB3cmFwTW9kZXNba2V5XVxuICAgIHdyYXBNb2Rlc0ludmVydFt2YWxdID0ga2V5XG4gIH0pXG5cbiAgLy8gY29sb3JGb3JtYXRzW10gZ2l2ZXMgdGhlIGZvcm1hdCAoY2hhbm5lbHMpIGFzc29jaWF0ZWQgdG8gYW5cbiAgLy8gaW50ZXJuYWxmb3JtYXRcbiAgdmFyIGNvbG9yRm9ybWF0cyA9IHN1cHBvcnRlZEZvcm1hdHMucmVkdWNlKGZ1bmN0aW9uIChjb2xvciwga2V5KSB7XG4gICAgdmFyIGdsZW51bSA9IHRleHR1cmVGb3JtYXRzW2tleV1cbiAgICBpZiAoZ2xlbnVtID09PSBHTF9MVU1JTkFOQ0UgfHxcbiAgICAgICAgZ2xlbnVtID09PSBHTF9BTFBIQSB8fFxuICAgICAgICBnbGVudW0gPT09IEdMX0xVTUlOQU5DRSB8fFxuICAgICAgICBnbGVudW0gPT09IEdMX0xVTUlOQU5DRV9BTFBIQSB8fFxuICAgICAgICBnbGVudW0gPT09IEdMX0RFUFRIX0NPTVBPTkVOVCB8fFxuICAgICAgICBnbGVudW0gPT09IEdMX0RFUFRIX1NURU5DSUwgfHxcbiAgICAgICAgKGV4dGVuc2lvbnMuZXh0X3NyZ2IgJiZcbiAgICAgICAgICAgICAgICAoZ2xlbnVtID09PSBHTF9TUkdCX0VYVCB8fFxuICAgICAgICAgICAgICAgICBnbGVudW0gPT09IEdMX1NSR0JfQUxQSEFfRVhUKSkpIHtcbiAgICAgIGNvbG9yW2dsZW51bV0gPSBnbGVudW1cbiAgICB9IGVsc2UgaWYgKGdsZW51bSA9PT0gR0xfUkdCNV9BMSB8fCBrZXkuaW5kZXhPZigncmdiYScpID49IDApIHtcbiAgICAgIGNvbG9yW2dsZW51bV0gPSBHTF9SR0JBJDFcbiAgICB9IGVsc2Uge1xuICAgICAgY29sb3JbZ2xlbnVtXSA9IEdMX1JHQlxuICAgIH1cbiAgICByZXR1cm4gY29sb3JcbiAgfSwge30pXG5cbiAgZnVuY3Rpb24gVGV4RmxhZ3MgKCkge1xuICAgIC8vIGZvcm1hdCBpbmZvXG4gICAgdGhpcy5pbnRlcm5hbGZvcm1hdCA9IEdMX1JHQkEkMVxuICAgIHRoaXMuZm9ybWF0ID0gR0xfUkdCQSQxXG4gICAgdGhpcy50eXBlID0gR0xfVU5TSUdORURfQllURSQ1XG4gICAgdGhpcy5jb21wcmVzc2VkID0gZmFsc2VcblxuICAgIC8vIHBpeGVsIHN0b3JhZ2VcbiAgICB0aGlzLnByZW11bHRpcGx5QWxwaGEgPSBmYWxzZVxuICAgIHRoaXMuZmxpcFkgPSBmYWxzZVxuICAgIHRoaXMudW5wYWNrQWxpZ25tZW50ID0gMVxuICAgIHRoaXMuY29sb3JTcGFjZSA9IEdMX0JST1dTRVJfREVGQVVMVF9XRUJHTFxuXG4gICAgLy8gc2hhcGUgaW5mb1xuICAgIHRoaXMud2lkdGggPSAwXG4gICAgdGhpcy5oZWlnaHQgPSAwXG4gICAgdGhpcy5jaGFubmVscyA9IDBcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcHlGbGFncyAocmVzdWx0LCBvdGhlcikge1xuICAgIHJlc3VsdC5pbnRlcm5hbGZvcm1hdCA9IG90aGVyLmludGVybmFsZm9ybWF0XG4gICAgcmVzdWx0LmZvcm1hdCA9IG90aGVyLmZvcm1hdFxuICAgIHJlc3VsdC50eXBlID0gb3RoZXIudHlwZVxuICAgIHJlc3VsdC5jb21wcmVzc2VkID0gb3RoZXIuY29tcHJlc3NlZFxuXG4gICAgcmVzdWx0LnByZW11bHRpcGx5QWxwaGEgPSBvdGhlci5wcmVtdWx0aXBseUFscGhhXG4gICAgcmVzdWx0LmZsaXBZID0gb3RoZXIuZmxpcFlcbiAgICByZXN1bHQudW5wYWNrQWxpZ25tZW50ID0gb3RoZXIudW5wYWNrQWxpZ25tZW50XG4gICAgcmVzdWx0LmNvbG9yU3BhY2UgPSBvdGhlci5jb2xvclNwYWNlXG5cbiAgICByZXN1bHQud2lkdGggPSBvdGhlci53aWR0aFxuICAgIHJlc3VsdC5oZWlnaHQgPSBvdGhlci5oZWlnaHRcbiAgICByZXN1bHQuY2hhbm5lbHMgPSBvdGhlci5jaGFubmVsc1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VGbGFncyAoZmxhZ3MsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnIHx8ICFvcHRpb25zKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoJ3ByZW11bHRpcGx5QWxwaGEnIGluIG9wdGlvbnMpIHtcbiAgICAgIGNoZWNrJDEudHlwZShvcHRpb25zLnByZW11bHRpcGx5QWxwaGEsICdib29sZWFuJyxcbiAgICAgICAgJ2ludmFsaWQgcHJlbXVsdGlwbHlBbHBoYScpXG4gICAgICBmbGFncy5wcmVtdWx0aXBseUFscGhhID0gb3B0aW9ucy5wcmVtdWx0aXBseUFscGhhXG4gICAgfVxuXG4gICAgaWYgKCdmbGlwWScgaW4gb3B0aW9ucykge1xuICAgICAgY2hlY2skMS50eXBlKG9wdGlvbnMuZmxpcFksICdib29sZWFuJyxcbiAgICAgICAgJ2ludmFsaWQgdGV4dHVyZSBmbGlwJylcbiAgICAgIGZsYWdzLmZsaXBZID0gb3B0aW9ucy5mbGlwWVxuICAgIH1cblxuICAgIGlmICgnYWxpZ25tZW50JyBpbiBvcHRpb25zKSB7XG4gICAgICBjaGVjayQxLm9uZU9mKG9wdGlvbnMuYWxpZ25tZW50LCBbMSwgMiwgNCwgOF0sXG4gICAgICAgICdpbnZhbGlkIHRleHR1cmUgdW5wYWNrIGFsaWdubWVudCcpXG4gICAgICBmbGFncy51bnBhY2tBbGlnbm1lbnQgPSBvcHRpb25zLmFsaWdubWVudFxuICAgIH1cblxuICAgIGlmICgnY29sb3JTcGFjZScgaW4gb3B0aW9ucykge1xuICAgICAgY2hlY2skMS5wYXJhbWV0ZXIob3B0aW9ucy5jb2xvclNwYWNlLCBjb2xvclNwYWNlLFxuICAgICAgICAnaW52YWxpZCBjb2xvclNwYWNlJylcbiAgICAgIGZsYWdzLmNvbG9yU3BhY2UgPSBjb2xvclNwYWNlW29wdGlvbnMuY29sb3JTcGFjZV1cbiAgICB9XG5cbiAgICBpZiAoJ3R5cGUnIGluIG9wdGlvbnMpIHtcbiAgICAgIHZhciB0eXBlID0gb3B0aW9ucy50eXBlXG4gICAgICBjaGVjayQxKGV4dGVuc2lvbnMub2VzX3RleHR1cmVfZmxvYXQgfHxcbiAgICAgICAgISh0eXBlID09PSAnZmxvYXQnIHx8IHR5cGUgPT09ICdmbG9hdDMyJyksXG4gICAgICAneW91IG11c3QgZW5hYmxlIHRoZSBPRVNfdGV4dHVyZV9mbG9hdCBleHRlbnNpb24gaW4gb3JkZXIgdG8gdXNlIGZsb2F0aW5nIHBvaW50IHRleHR1cmVzLicpXG4gICAgICBjaGVjayQxKGV4dGVuc2lvbnMub2VzX3RleHR1cmVfaGFsZl9mbG9hdCB8fFxuICAgICAgICAhKHR5cGUgPT09ICdoYWxmIGZsb2F0JyB8fCB0eXBlID09PSAnZmxvYXQxNicpLFxuICAgICAgJ3lvdSBtdXN0IGVuYWJsZSB0aGUgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBleHRlbnNpb24gaW4gb3JkZXIgdG8gdXNlIDE2LWJpdCBmbG9hdGluZyBwb2ludCB0ZXh0dXJlcy4nKVxuICAgICAgY2hlY2skMShleHRlbnNpb25zLndlYmdsX2RlcHRoX3RleHR1cmUgfHxcbiAgICAgICAgISh0eXBlID09PSAndWludDE2JyB8fCB0eXBlID09PSAndWludDMyJyB8fCB0eXBlID09PSAnZGVwdGggc3RlbmNpbCcpLFxuICAgICAgJ3lvdSBtdXN0IGVuYWJsZSB0aGUgV0VCR0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24gaW4gb3JkZXIgdG8gdXNlIGRlcHRoL3N0ZW5jaWwgdGV4dHVyZXMuJylcbiAgICAgIGNoZWNrJDEucGFyYW1ldGVyKHR5cGUsIHRleHR1cmVUeXBlcyxcbiAgICAgICAgJ2ludmFsaWQgdGV4dHVyZSB0eXBlJylcbiAgICAgIGZsYWdzLnR5cGUgPSB0ZXh0dXJlVHlwZXNbdHlwZV1cbiAgICB9XG5cbiAgICB2YXIgdyA9IGZsYWdzLndpZHRoXG4gICAgdmFyIGggPSBmbGFncy5oZWlnaHRcbiAgICB2YXIgYyA9IGZsYWdzLmNoYW5uZWxzXG4gICAgdmFyIGhhc0NoYW5uZWxzID0gZmFsc2VcbiAgICBpZiAoJ3NoYXBlJyBpbiBvcHRpb25zKSB7XG4gICAgICBjaGVjayQxKEFycmF5LmlzQXJyYXkob3B0aW9ucy5zaGFwZSkgJiYgb3B0aW9ucy5zaGFwZS5sZW5ndGggPj0gMixcbiAgICAgICAgJ3NoYXBlIG11c3QgYmUgYW4gYXJyYXknKVxuICAgICAgdyA9IG9wdGlvbnMuc2hhcGVbMF1cbiAgICAgIGggPSBvcHRpb25zLnNoYXBlWzFdXG4gICAgICBpZiAob3B0aW9ucy5zaGFwZS5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgYyA9IG9wdGlvbnMuc2hhcGVbMl1cbiAgICAgICAgY2hlY2skMShjID4gMCAmJiBjIDw9IDQsICdpbnZhbGlkIG51bWJlciBvZiBjaGFubmVscycpXG4gICAgICAgIGhhc0NoYW5uZWxzID0gdHJ1ZVxuICAgICAgfVxuICAgICAgY2hlY2skMSh3ID49IDAgJiYgdyA8PSBsaW1pdHMubWF4VGV4dHVyZVNpemUsICdpbnZhbGlkIHdpZHRoJylcbiAgICAgIGNoZWNrJDEoaCA+PSAwICYmIGggPD0gbGltaXRzLm1heFRleHR1cmVTaXplLCAnaW52YWxpZCBoZWlnaHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJ3JhZGl1cycgaW4gb3B0aW9ucykge1xuICAgICAgICB3ID0gaCA9IG9wdGlvbnMucmFkaXVzXG4gICAgICAgIGNoZWNrJDEodyA+PSAwICYmIHcgPD0gbGltaXRzLm1heFRleHR1cmVTaXplLCAnaW52YWxpZCByYWRpdXMnKVxuICAgICAgfVxuICAgICAgaWYgKCd3aWR0aCcgaW4gb3B0aW9ucykge1xuICAgICAgICB3ID0gb3B0aW9ucy53aWR0aFxuICAgICAgICBjaGVjayQxKHcgPj0gMCAmJiB3IDw9IGxpbWl0cy5tYXhUZXh0dXJlU2l6ZSwgJ2ludmFsaWQgd2lkdGgnKVxuICAgICAgfVxuICAgICAgaWYgKCdoZWlnaHQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgaCA9IG9wdGlvbnMuaGVpZ2h0XG4gICAgICAgIGNoZWNrJDEoaCA+PSAwICYmIGggPD0gbGltaXRzLm1heFRleHR1cmVTaXplLCAnaW52YWxpZCBoZWlnaHQnKVxuICAgICAgfVxuICAgICAgaWYgKCdjaGFubmVscycgaW4gb3B0aW9ucykge1xuICAgICAgICBjID0gb3B0aW9ucy5jaGFubmVsc1xuICAgICAgICBjaGVjayQxKGMgPiAwICYmIGMgPD0gNCwgJ2ludmFsaWQgbnVtYmVyIG9mIGNoYW5uZWxzJylcbiAgICAgICAgaGFzQ2hhbm5lbHMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIGZsYWdzLndpZHRoID0gdyB8IDBcbiAgICBmbGFncy5oZWlnaHQgPSBoIHwgMFxuICAgIGZsYWdzLmNoYW5uZWxzID0gYyB8IDBcblxuICAgIHZhciBoYXNGb3JtYXQgPSBmYWxzZVxuICAgIGlmICgnZm9ybWF0JyBpbiBvcHRpb25zKSB7XG4gICAgICB2YXIgZm9ybWF0U3RyID0gb3B0aW9ucy5mb3JtYXRcbiAgICAgIGNoZWNrJDEoZXh0ZW5zaW9ucy53ZWJnbF9kZXB0aF90ZXh0dXJlIHx8XG4gICAgICAgICEoZm9ybWF0U3RyID09PSAnZGVwdGgnIHx8IGZvcm1hdFN0ciA9PT0gJ2RlcHRoIHN0ZW5jaWwnKSxcbiAgICAgICd5b3UgbXVzdCBlbmFibGUgdGhlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uIGluIG9yZGVyIHRvIHVzZSBkZXB0aC9zdGVuY2lsIHRleHR1cmVzLicpXG4gICAgICBjaGVjayQxLnBhcmFtZXRlcihmb3JtYXRTdHIsIHRleHR1cmVGb3JtYXRzLFxuICAgICAgICAnaW52YWxpZCB0ZXh0dXJlIGZvcm1hdCcpXG4gICAgICB2YXIgaW50ZXJuYWxmb3JtYXQgPSBmbGFncy5pbnRlcm5hbGZvcm1hdCA9IHRleHR1cmVGb3JtYXRzW2Zvcm1hdFN0cl1cbiAgICAgIGZsYWdzLmZvcm1hdCA9IGNvbG9yRm9ybWF0c1tpbnRlcm5hbGZvcm1hdF1cbiAgICAgIGlmIChmb3JtYXRTdHIgaW4gdGV4dHVyZVR5cGVzKSB7XG4gICAgICAgIGlmICghKCd0eXBlJyBpbiBvcHRpb25zKSkge1xuICAgICAgICAgIGZsYWdzLnR5cGUgPSB0ZXh0dXJlVHlwZXNbZm9ybWF0U3RyXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm9ybWF0U3RyIGluIGNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cykge1xuICAgICAgICBmbGFncy5jb21wcmVzc2VkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgaGFzRm9ybWF0ID0gdHJ1ZVxuICAgIH1cblxuICAgIC8vIFJlY29uY2lsZSBjaGFubmVscyBhbmQgZm9ybWF0XG4gICAgaWYgKCFoYXNDaGFubmVscyAmJiBoYXNGb3JtYXQpIHtcbiAgICAgIGZsYWdzLmNoYW5uZWxzID0gRk9STUFUX0NIQU5ORUxTW2ZsYWdzLmZvcm1hdF1cbiAgICB9IGVsc2UgaWYgKGhhc0NoYW5uZWxzICYmICFoYXNGb3JtYXQpIHtcbiAgICAgIGlmIChmbGFncy5jaGFubmVscyAhPT0gQ0hBTk5FTFNfRk9STUFUW2ZsYWdzLmZvcm1hdF0pIHtcbiAgICAgICAgZmxhZ3MuZm9ybWF0ID0gZmxhZ3MuaW50ZXJuYWxmb3JtYXQgPSBDSEFOTkVMU19GT1JNQVRbZmxhZ3MuY2hhbm5lbHNdXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChoYXNGb3JtYXQgJiYgaGFzQ2hhbm5lbHMpIHtcbiAgICAgIGNoZWNrJDEoXG4gICAgICAgIGZsYWdzLmNoYW5uZWxzID09PSBGT1JNQVRfQ0hBTk5FTFNbZmxhZ3MuZm9ybWF0XSxcbiAgICAgICAgJ251bWJlciBvZiBjaGFubmVscyBpbmNvbnNpc3RlbnQgd2l0aCBzcGVjaWZpZWQgZm9ybWF0JylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzZXRGbGFncyAoZmxhZ3MpIHtcbiAgICBnbC5waXhlbFN0b3JlaShHTF9VTlBBQ0tfRkxJUF9ZX1dFQkdMLCBmbGFncy5mbGlwWSlcbiAgICBnbC5waXhlbFN0b3JlaShHTF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIGZsYWdzLnByZW11bHRpcGx5QWxwaGEpXG4gICAgZ2wucGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCwgZmxhZ3MuY29sb3JTcGFjZSlcbiAgICBnbC5waXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCBmbGFncy51bnBhY2tBbGlnbm1lbnQpXG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFRleCBpbWFnZSBkYXRhXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZnVuY3Rpb24gVGV4SW1hZ2UgKCkge1xuICAgIFRleEZsYWdzLmNhbGwodGhpcylcblxuICAgIHRoaXMueE9mZnNldCA9IDBcbiAgICB0aGlzLnlPZmZzZXQgPSAwXG5cbiAgICAvLyBkYXRhXG4gICAgdGhpcy5kYXRhID0gbnVsbFxuICAgIHRoaXMubmVlZHNGcmVlID0gZmFsc2VcblxuICAgIC8vIGh0bWwgZWxlbWVudFxuICAgIHRoaXMuZWxlbWVudCA9IG51bGxcblxuICAgIC8vIGNvcHlUZXhJbWFnZSBpbmZvXG4gICAgdGhpcy5uZWVkc0NvcHkgPSBmYWxzZVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VJbWFnZSAoaW1hZ2UsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGF0YSA9IG51bGxcbiAgICBpZiAoaXNQaXhlbERhdGEob3B0aW9ucykpIHtcbiAgICAgIGRhdGEgPSBvcHRpb25zXG4gICAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgICBjaGVjayQxLnR5cGUob3B0aW9ucywgJ29iamVjdCcsICdpbnZhbGlkIHBpeGVsIGRhdGEgdHlwZScpXG4gICAgICBwYXJzZUZsYWdzKGltYWdlLCBvcHRpb25zKVxuICAgICAgaWYgKCd4JyBpbiBvcHRpb25zKSB7XG4gICAgICAgIGltYWdlLnhPZmZzZXQgPSBvcHRpb25zLnggfCAwXG4gICAgICB9XG4gICAgICBpZiAoJ3knIGluIG9wdGlvbnMpIHtcbiAgICAgICAgaW1hZ2UueU9mZnNldCA9IG9wdGlvbnMueSB8IDBcbiAgICAgIH1cbiAgICAgIGlmIChpc1BpeGVsRGF0YShvcHRpb25zLmRhdGEpKSB7XG4gICAgICAgIGRhdGEgPSBvcHRpb25zLmRhdGFcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVjayQxKFxuICAgICAgIWltYWdlLmNvbXByZXNzZWQgfHxcbiAgICAgIGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5LFxuICAgICAgJ2NvbXByZXNzZWQgdGV4dHVyZSBkYXRhIG11c3QgYmUgc3RvcmVkIGluIGEgdWludDhhcnJheScpXG5cbiAgICBpZiAob3B0aW9ucy5jb3B5KSB7XG4gICAgICBjaGVjayQxKCFkYXRhLCAnY2FuIG5vdCBzcGVjaWZ5IGNvcHkgYW5kIGRhdGEgZmllbGQgZm9yIHRoZSBzYW1lIHRleHR1cmUnKVxuICAgICAgdmFyIHZpZXdXID0gY29udGV4dFN0YXRlLnZpZXdwb3J0V2lkdGhcbiAgICAgIHZhciB2aWV3SCA9IGNvbnRleHRTdGF0ZS52aWV3cG9ydEhlaWdodFxuICAgICAgaW1hZ2Uud2lkdGggPSBpbWFnZS53aWR0aCB8fCAodmlld1cgLSBpbWFnZS54T2Zmc2V0KVxuICAgICAgaW1hZ2UuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0IHx8ICh2aWV3SCAtIGltYWdlLnlPZmZzZXQpXG4gICAgICBpbWFnZS5uZWVkc0NvcHkgPSB0cnVlXG4gICAgICBjaGVjayQxKGltYWdlLnhPZmZzZXQgPj0gMCAmJiBpbWFnZS54T2Zmc2V0IDwgdmlld1cgJiZcbiAgICAgICAgICAgIGltYWdlLnlPZmZzZXQgPj0gMCAmJiBpbWFnZS55T2Zmc2V0IDwgdmlld0ggJiZcbiAgICAgICAgICAgIGltYWdlLndpZHRoID4gMCAmJiBpbWFnZS53aWR0aCA8PSB2aWV3VyAmJlxuICAgICAgICAgICAgaW1hZ2UuaGVpZ2h0ID4gMCAmJiBpbWFnZS5oZWlnaHQgPD0gdmlld0gsXG4gICAgICAnY29weSB0ZXh0dXJlIHJlYWQgb3V0IG9mIGJvdW5kcycpXG4gICAgfSBlbHNlIGlmICghZGF0YSkge1xuICAgICAgaW1hZ2Uud2lkdGggPSBpbWFnZS53aWR0aCB8fCAxXG4gICAgICBpbWFnZS5oZWlnaHQgPSBpbWFnZS5oZWlnaHQgfHwgMVxuICAgICAgaW1hZ2UuY2hhbm5lbHMgPSBpbWFnZS5jaGFubmVscyB8fCA0XG4gICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoZGF0YSkpIHtcbiAgICAgIGltYWdlLmNoYW5uZWxzID0gaW1hZ2UuY2hhbm5lbHMgfHwgNFxuICAgICAgaW1hZ2UuZGF0YSA9IGRhdGFcbiAgICAgIGlmICghKCd0eXBlJyBpbiBvcHRpb25zKSAmJiBpbWFnZS50eXBlID09PSBHTF9VTlNJR05FRF9CWVRFJDUpIHtcbiAgICAgICAgaW1hZ2UudHlwZSA9IHR5cGVkQXJyYXlDb2RlJDEoZGF0YSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzTnVtZXJpY0FycmF5KGRhdGEpKSB7XG4gICAgICBpbWFnZS5jaGFubmVscyA9IGltYWdlLmNoYW5uZWxzIHx8IDRcbiAgICAgIGNvbnZlcnREYXRhKGltYWdlLCBkYXRhKVxuICAgICAgaW1hZ2UuYWxpZ25tZW50ID0gMVxuICAgICAgaW1hZ2UubmVlZHNGcmVlID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoaXNOREFycmF5TGlrZShkYXRhKSkge1xuICAgICAgdmFyIGFycmF5ID0gZGF0YS5kYXRhXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXkpICYmIGltYWdlLnR5cGUgPT09IEdMX1VOU0lHTkVEX0JZVEUkNSkge1xuICAgICAgICBpbWFnZS50eXBlID0gdHlwZWRBcnJheUNvZGUkMShhcnJheSlcbiAgICAgIH1cbiAgICAgIHZhciBzaGFwZSA9IGRhdGEuc2hhcGVcbiAgICAgIHZhciBzdHJpZGUgPSBkYXRhLnN0cmlkZVxuICAgICAgdmFyIHNoYXBlWCwgc2hhcGVZLCBzaGFwZUMsIHN0cmlkZVgsIHN0cmlkZVksIHN0cmlkZUNcbiAgICAgIGlmIChzaGFwZS5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgc2hhcGVDID0gc2hhcGVbMl1cbiAgICAgICAgc3RyaWRlQyA9IHN0cmlkZVsyXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2skMShzaGFwZS5sZW5ndGggPT09IDIsICdpbnZhbGlkIG5kYXJyYXkgcGl4ZWwgZGF0YSwgbXVzdCBiZSAyIG9yIDNEJylcbiAgICAgICAgc2hhcGVDID0gMVxuICAgICAgICBzdHJpZGVDID0gMVxuICAgICAgfVxuICAgICAgc2hhcGVYID0gc2hhcGVbMF1cbiAgICAgIHNoYXBlWSA9IHNoYXBlWzFdXG4gICAgICBzdHJpZGVYID0gc3RyaWRlWzBdXG4gICAgICBzdHJpZGVZID0gc3RyaWRlWzFdXG4gICAgICBpbWFnZS5hbGlnbm1lbnQgPSAxXG4gICAgICBpbWFnZS53aWR0aCA9IHNoYXBlWFxuICAgICAgaW1hZ2UuaGVpZ2h0ID0gc2hhcGVZXG4gICAgICBpbWFnZS5jaGFubmVscyA9IHNoYXBlQ1xuICAgICAgaW1hZ2UuZm9ybWF0ID0gaW1hZ2UuaW50ZXJuYWxmb3JtYXQgPSBDSEFOTkVMU19GT1JNQVRbc2hhcGVDXVxuICAgICAgaW1hZ2UubmVlZHNGcmVlID0gdHJ1ZVxuICAgICAgdHJhbnNwb3NlRGF0YShpbWFnZSwgYXJyYXksIHN0cmlkZVgsIHN0cmlkZVksIHN0cmlkZUMsIGRhdGEub2Zmc2V0KVxuICAgIH0gZWxzZSBpZiAoaXNDYW52YXNFbGVtZW50KGRhdGEpIHx8IGlzT2Zmc2NyZWVuQ2FudmFzKGRhdGEpIHx8IGlzQ29udGV4dDJEKGRhdGEpKSB7XG4gICAgICBpZiAoaXNDYW52YXNFbGVtZW50KGRhdGEpIHx8IGlzT2Zmc2NyZWVuQ2FudmFzKGRhdGEpKSB7XG4gICAgICAgIGltYWdlLmVsZW1lbnQgPSBkYXRhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWFnZS5lbGVtZW50ID0gZGF0YS5jYW52YXNcbiAgICAgIH1cbiAgICAgIGltYWdlLndpZHRoID0gaW1hZ2UuZWxlbWVudC53aWR0aFxuICAgICAgaW1hZ2UuaGVpZ2h0ID0gaW1hZ2UuZWxlbWVudC5oZWlnaHRcbiAgICAgIGltYWdlLmNoYW5uZWxzID0gNFxuICAgIH0gZWxzZSBpZiAoaXNCaXRtYXAoZGF0YSkpIHtcbiAgICAgIGltYWdlLmVsZW1lbnQgPSBkYXRhXG4gICAgICBpbWFnZS53aWR0aCA9IGRhdGEud2lkdGhcbiAgICAgIGltYWdlLmhlaWdodCA9IGRhdGEuaGVpZ2h0XG4gICAgICBpbWFnZS5jaGFubmVscyA9IDRcbiAgICB9IGVsc2UgaWYgKGlzSW1hZ2VFbGVtZW50KGRhdGEpKSB7XG4gICAgICBpbWFnZS5lbGVtZW50ID0gZGF0YVxuICAgICAgaW1hZ2Uud2lkdGggPSBkYXRhLm5hdHVyYWxXaWR0aFxuICAgICAgaW1hZ2UuaGVpZ2h0ID0gZGF0YS5uYXR1cmFsSGVpZ2h0XG4gICAgICBpbWFnZS5jaGFubmVscyA9IDRcbiAgICB9IGVsc2UgaWYgKGlzVmlkZW9FbGVtZW50KGRhdGEpKSB7XG4gICAgICBpbWFnZS5lbGVtZW50ID0gZGF0YVxuICAgICAgaW1hZ2Uud2lkdGggPSBkYXRhLnZpZGVvV2lkdGhcbiAgICAgIGltYWdlLmhlaWdodCA9IGRhdGEudmlkZW9IZWlnaHRcbiAgICAgIGltYWdlLmNoYW5uZWxzID0gNFxuICAgIH0gZWxzZSBpZiAoaXNSZWN0QXJyYXkoZGF0YSkpIHtcbiAgICAgIHZhciB3ID0gaW1hZ2Uud2lkdGggfHwgZGF0YVswXS5sZW5ndGhcbiAgICAgIHZhciBoID0gaW1hZ2UuaGVpZ2h0IHx8IGRhdGEubGVuZ3RoXG4gICAgICB2YXIgYyA9IGltYWdlLmNoYW5uZWxzXG4gICAgICBpZiAoaXNBcnJheUxpa2UoZGF0YVswXVswXSkpIHtcbiAgICAgICAgYyA9IGMgfHwgZGF0YVswXVswXS5sZW5ndGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGMgPSBjIHx8IDFcbiAgICAgIH1cbiAgICAgIHZhciBhcnJheVNoYXBlID0gZmxhdHRlblV0aWxzLnNoYXBlKGRhdGEpXG4gICAgICB2YXIgbiA9IDFcbiAgICAgIGZvciAodmFyIGRkID0gMDsgZGQgPCBhcnJheVNoYXBlLmxlbmd0aDsgKytkZCkge1xuICAgICAgICBuICo9IGFycmF5U2hhcGVbZGRdXG4gICAgICB9XG4gICAgICB2YXIgYWxsb2NEYXRhID0gcHJlQ29udmVydChpbWFnZSwgbilcbiAgICAgIGZsYXR0ZW5VdGlscy5mbGF0dGVuKGRhdGEsIGFycmF5U2hhcGUsICcnLCBhbGxvY0RhdGEpXG4gICAgICBwb3N0Q29udmVydChpbWFnZSwgYWxsb2NEYXRhKVxuICAgICAgaW1hZ2UuYWxpZ25tZW50ID0gMVxuICAgICAgaW1hZ2Uud2lkdGggPSB3XG4gICAgICBpbWFnZS5oZWlnaHQgPSBoXG4gICAgICBpbWFnZS5jaGFubmVscyA9IGNcbiAgICAgIGltYWdlLmZvcm1hdCA9IGltYWdlLmludGVybmFsZm9ybWF0ID0gQ0hBTk5FTFNfRk9STUFUW2NdXG4gICAgICBpbWFnZS5uZWVkc0ZyZWUgPSB0cnVlXG4gICAgfVxuXG4gICAgaWYgKGltYWdlLnR5cGUgPT09IEdMX0ZMT0FUJDQpIHtcbiAgICAgIGNoZWNrJDEobGltaXRzLmV4dGVuc2lvbnMuaW5kZXhPZignb2VzX3RleHR1cmVfZmxvYXQnKSA+PSAwLFxuICAgICAgICAnb2VzX3RleHR1cmVfZmxvYXQgZXh0ZW5zaW9uIG5vdCBlbmFibGVkJylcbiAgICB9IGVsc2UgaWYgKGltYWdlLnR5cGUgPT09IEdMX0hBTEZfRkxPQVRfT0VTJDEpIHtcbiAgICAgIGNoZWNrJDEobGltaXRzLmV4dGVuc2lvbnMuaW5kZXhPZignb2VzX3RleHR1cmVfaGFsZl9mbG9hdCcpID49IDAsXG4gICAgICAgICdvZXNfdGV4dHVyZV9oYWxmX2Zsb2F0IGV4dGVuc2lvbiBub3QgZW5hYmxlZCcpXG4gICAgfVxuXG4gICAgLy8gZG8gY29tcHJlc3NlZCB0ZXh0dXJlICB2YWxpZGF0aW9uIGhlcmUuXG4gIH1cblxuICBmdW5jdGlvbiBzZXRJbWFnZSAoaW5mbywgdGFyZ2V0LCBtaXBsZXZlbCkge1xuICAgIHZhciBlbGVtZW50ID0gaW5mby5lbGVtZW50XG4gICAgdmFyIGRhdGEgPSBpbmZvLmRhdGFcbiAgICB2YXIgaW50ZXJuYWxmb3JtYXQgPSBpbmZvLmludGVybmFsZm9ybWF0XG4gICAgdmFyIGZvcm1hdCA9IGluZm8uZm9ybWF0XG4gICAgdmFyIHR5cGUgPSBpbmZvLnR5cGVcbiAgICB2YXIgd2lkdGggPSBpbmZvLndpZHRoXG4gICAgdmFyIGhlaWdodCA9IGluZm8uaGVpZ2h0XG5cbiAgICBzZXRGbGFncyhpbmZvKVxuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGdsLnRleEltYWdlMkQodGFyZ2V0LCBtaXBsZXZlbCwgZm9ybWF0LCBmb3JtYXQsIHR5cGUsIGVsZW1lbnQpXG4gICAgfSBlbHNlIGlmIChpbmZvLmNvbXByZXNzZWQpIHtcbiAgICAgIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbWlwbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBkYXRhKVxuICAgIH0gZWxzZSBpZiAoaW5mby5uZWVkc0NvcHkpIHtcbiAgICAgIHJlZ2xQb2xsKClcbiAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKFxuICAgICAgICB0YXJnZXQsIG1pcGxldmVsLCBmb3JtYXQsIGluZm8ueE9mZnNldCwgaW5mby55T2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCAwKVxuICAgIH0gZWxzZSB7XG4gICAgICBnbC50ZXhJbWFnZTJEKHRhcmdldCwgbWlwbGV2ZWwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBkYXRhIHx8IG51bGwpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3ViSW1hZ2UgKGluZm8sIHRhcmdldCwgeCwgeSwgbWlwbGV2ZWwpIHtcbiAgICB2YXIgZWxlbWVudCA9IGluZm8uZWxlbWVudFxuICAgIHZhciBkYXRhID0gaW5mby5kYXRhXG4gICAgdmFyIGludGVybmFsZm9ybWF0ID0gaW5mby5pbnRlcm5hbGZvcm1hdFxuICAgIHZhciBmb3JtYXQgPSBpbmZvLmZvcm1hdFxuICAgIHZhciB0eXBlID0gaW5mby50eXBlXG4gICAgdmFyIHdpZHRoID0gaW5mby53aWR0aFxuICAgIHZhciBoZWlnaHQgPSBpbmZvLmhlaWdodFxuXG4gICAgc2V0RmxhZ3MoaW5mbylcblxuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBnbC50ZXhTdWJJbWFnZTJEKFxuICAgICAgICB0YXJnZXQsIG1pcGxldmVsLCB4LCB5LCBmb3JtYXQsIHR5cGUsIGVsZW1lbnQpXG4gICAgfSBlbHNlIGlmIChpbmZvLmNvbXByZXNzZWQpIHtcbiAgICAgIGdsLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFxuICAgICAgICB0YXJnZXQsIG1pcGxldmVsLCB4LCB5LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGF0YSlcbiAgICB9IGVsc2UgaWYgKGluZm8ubmVlZHNDb3B5KSB7XG4gICAgICByZWdsUG9sbCgpXG4gICAgICBnbC5jb3B5VGV4U3ViSW1hZ2UyRChcbiAgICAgICAgdGFyZ2V0LCBtaXBsZXZlbCwgeCwgeSwgaW5mby54T2Zmc2V0LCBpbmZvLnlPZmZzZXQsIHdpZHRoLCBoZWlnaHQpXG4gICAgfSBlbHNlIHtcbiAgICAgIGdsLnRleFN1YkltYWdlMkQoXG4gICAgICAgIHRhcmdldCwgbWlwbGV2ZWwsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSlcbiAgICB9XG4gIH1cblxuICAvLyB0ZXhJbWFnZSBwb29sXG4gIHZhciBpbWFnZVBvb2wgPSBbXVxuXG4gIGZ1bmN0aW9uIGFsbG9jSW1hZ2UgKCkge1xuICAgIHJldHVybiBpbWFnZVBvb2wucG9wKCkgfHwgbmV3IFRleEltYWdlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGZyZWVJbWFnZSAoaW1hZ2UpIHtcbiAgICBpZiAoaW1hZ2UubmVlZHNGcmVlKSB7XG4gICAgICBwb29sLmZyZWVUeXBlKGltYWdlLmRhdGEpXG4gICAgfVxuICAgIFRleEltYWdlLmNhbGwoaW1hZ2UpXG4gICAgaW1hZ2VQb29sLnB1c2goaW1hZ2UpXG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1pcCBtYXBcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBmdW5jdGlvbiBNaXBNYXAgKCkge1xuICAgIFRleEZsYWdzLmNhbGwodGhpcylcblxuICAgIHRoaXMuZ2VuTWlwbWFwcyA9IGZhbHNlXG4gICAgdGhpcy5taXBtYXBIaW50ID0gR0xfRE9OVF9DQVJFXG4gICAgdGhpcy5taXBtYXNrID0gMFxuICAgIHRoaXMuaW1hZ2VzID0gQXJyYXkoMTYpXG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZU1pcE1hcEZyb21TaGFwZSAobWlwbWFwLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIGltZyA9IG1pcG1hcC5pbWFnZXNbMF0gPSBhbGxvY0ltYWdlKClcbiAgICBtaXBtYXAubWlwbWFzayA9IDFcbiAgICBpbWcud2lkdGggPSBtaXBtYXAud2lkdGggPSB3aWR0aFxuICAgIGltZy5oZWlnaHQgPSBtaXBtYXAuaGVpZ2h0ID0gaGVpZ2h0XG4gICAgaW1nLmNoYW5uZWxzID0gbWlwbWFwLmNoYW5uZWxzID0gNFxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VNaXBNYXBGcm9tT2JqZWN0IChtaXBtYXAsIG9wdGlvbnMpIHtcbiAgICB2YXIgaW1nRGF0YSA9IG51bGxcbiAgICBpZiAoaXNQaXhlbERhdGEob3B0aW9ucykpIHtcbiAgICAgIGltZ0RhdGEgPSBtaXBtYXAuaW1hZ2VzWzBdID0gYWxsb2NJbWFnZSgpXG4gICAgICBjb3B5RmxhZ3MoaW1nRGF0YSwgbWlwbWFwKVxuICAgICAgcGFyc2VJbWFnZShpbWdEYXRhLCBvcHRpb25zKVxuICAgICAgbWlwbWFwLm1pcG1hc2sgPSAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlRmxhZ3MobWlwbWFwLCBvcHRpb25zKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5taXBtYXApKSB7XG4gICAgICAgIHZhciBtaXBEYXRhID0gb3B0aW9ucy5taXBtYXBcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXBEYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgaW1nRGF0YSA9IG1pcG1hcC5pbWFnZXNbaV0gPSBhbGxvY0ltYWdlKClcbiAgICAgICAgICBjb3B5RmxhZ3MoaW1nRGF0YSwgbWlwbWFwKVxuICAgICAgICAgIGltZ0RhdGEud2lkdGggPj49IGlcbiAgICAgICAgICBpbWdEYXRhLmhlaWdodCA+Pj0gaVxuICAgICAgICAgIHBhcnNlSW1hZ2UoaW1nRGF0YSwgbWlwRGF0YVtpXSlcbiAgICAgICAgICBtaXBtYXAubWlwbWFzayB8PSAoMSA8PCBpKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWdEYXRhID0gbWlwbWFwLmltYWdlc1swXSA9IGFsbG9jSW1hZ2UoKVxuICAgICAgICBjb3B5RmxhZ3MoaW1nRGF0YSwgbWlwbWFwKVxuICAgICAgICBwYXJzZUltYWdlKGltZ0RhdGEsIG9wdGlvbnMpXG4gICAgICAgIG1pcG1hcC5taXBtYXNrID0gMVxuICAgICAgfVxuICAgIH1cbiAgICBjb3B5RmxhZ3MobWlwbWFwLCBtaXBtYXAuaW1hZ2VzWzBdKVxuXG4gICAgLy8gRm9yIHRleHR1cmVzIG9mIHRoZSBjb21wcmVzc2VkIGZvcm1hdCBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y1xuICAgIC8vIHdlIG11c3QgaGF2ZSB0aGF0XG4gICAgLy9cbiAgICAvLyBcIldoZW4gbGV2ZWwgZXF1YWxzIHplcm8gd2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiAgICAvLyBXaGVuIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiAwIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSAwLCAxLCAyIG9yIGEgbXVsdGlwbGUgb2YgNC4gXCJcbiAgICAvL1xuICAgIC8vIGJ1dCB3ZSBkbyBub3QgeWV0IHN1cHBvcnQgaGF2aW5nIG11bHRpcGxlIG1pcG1hcCBsZXZlbHMgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMsXG4gICAgLy8gc28gd2Ugb25seSB0ZXN0IGZvciBsZXZlbCB6ZXJvLlxuXG4gICAgaWYgKFxuICAgICAgbWlwbWFwLmNvbXByZXNzZWQgJiZcbiAgICAgIChcbiAgICAgICAgbWlwbWFwLmludGVybmFsZm9ybWF0ID09PSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIHx8XG4gICAgICAgIG1pcG1hcC5pbnRlcm5hbGZvcm1hdCA9PT0gR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgfHxcbiAgICAgICAgbWlwbWFwLmludGVybmFsZm9ybWF0ID09PSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCB8fFxuICAgICAgICBtaXBtYXAuaW50ZXJuYWxmb3JtYXQgPT09IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjaGVjayQxKG1pcG1hcC53aWR0aCAlIDQgPT09IDAgJiYgbWlwbWFwLmhlaWdodCAlIDQgPT09IDAsXG4gICAgICAgICdmb3IgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdHMsIG1pcG1hcCBsZXZlbCAwIG11c3QgaGF2ZSB3aWR0aCBhbmQgaGVpZ2h0IHRoYXQgYXJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0TWlwTWFwIChtaXBtYXAsIHRhcmdldCkge1xuICAgIHZhciBpbWFnZXMgPSBtaXBtYXAuaW1hZ2VzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmICghaW1hZ2VzW2ldKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0SW1hZ2UoaW1hZ2VzW2ldLCB0YXJnZXQsIGkpXG4gICAgfVxuICB9XG5cbiAgdmFyIG1pcFBvb2wgPSBbXVxuXG4gIGZ1bmN0aW9uIGFsbG9jTWlwTWFwICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gbWlwUG9vbC5wb3AoKSB8fCBuZXcgTWlwTWFwKClcbiAgICBUZXhGbGFncy5jYWxsKHJlc3VsdClcbiAgICByZXN1bHQubWlwbWFzayA9IDBcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgIHJlc3VsdC5pbWFnZXNbaV0gPSBudWxsXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGZ1bmN0aW9uIGZyZWVNaXBNYXAgKG1pcG1hcCkge1xuICAgIHZhciBpbWFnZXMgPSBtaXBtYXAuaW1hZ2VzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpbWFnZXNbaV0pIHtcbiAgICAgICAgZnJlZUltYWdlKGltYWdlc1tpXSlcbiAgICAgIH1cbiAgICAgIGltYWdlc1tpXSA9IG51bGxcbiAgICB9XG4gICAgbWlwUG9vbC5wdXNoKG1pcG1hcClcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gVGV4IGluZm9cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBmdW5jdGlvbiBUZXhJbmZvICgpIHtcbiAgICB0aGlzLm1pbkZpbHRlciA9IEdMX05FQVJFU1QkMVxuICAgIHRoaXMubWFnRmlsdGVyID0gR0xfTkVBUkVTVCQxXG5cbiAgICB0aGlzLndyYXBTID0gR0xfQ0xBTVBfVE9fRURHRSQxXG4gICAgdGhpcy53cmFwVCA9IEdMX0NMQU1QX1RPX0VER0UkMVxuXG4gICAgdGhpcy5hbmlzb3Ryb3BpYyA9IDFcblxuICAgIHRoaXMuZ2VuTWlwbWFwcyA9IGZhbHNlXG4gICAgdGhpcy5taXBtYXBIaW50ID0gR0xfRE9OVF9DQVJFXG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVRleEluZm8gKGluZm8sIG9wdGlvbnMpIHtcbiAgICBpZiAoJ21pbicgaW4gb3B0aW9ucykge1xuICAgICAgdmFyIG1pbkZpbHRlciA9IG9wdGlvbnMubWluXG4gICAgICBjaGVjayQxLnBhcmFtZXRlcihtaW5GaWx0ZXIsIG1pbkZpbHRlcnMpXG4gICAgICBpbmZvLm1pbkZpbHRlciA9IG1pbkZpbHRlcnNbbWluRmlsdGVyXVxuICAgICAgaWYgKE1JUE1BUF9GSUxURVJTLmluZGV4T2YoaW5mby5taW5GaWx0ZXIpID49IDAgJiYgISgnZmFjZXMnIGluIG9wdGlvbnMpKSB7XG4gICAgICAgIGluZm8uZ2VuTWlwbWFwcyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoJ21hZycgaW4gb3B0aW9ucykge1xuICAgICAgdmFyIG1hZ0ZpbHRlciA9IG9wdGlvbnMubWFnXG4gICAgICBjaGVjayQxLnBhcmFtZXRlcihtYWdGaWx0ZXIsIG1hZ0ZpbHRlcnMpXG4gICAgICBpbmZvLm1hZ0ZpbHRlciA9IG1hZ0ZpbHRlcnNbbWFnRmlsdGVyXVxuICAgIH1cblxuICAgIHZhciB3cmFwUyA9IGluZm8ud3JhcFNcbiAgICB2YXIgd3JhcFQgPSBpbmZvLndyYXBUXG4gICAgaWYgKCd3cmFwJyBpbiBvcHRpb25zKSB7XG4gICAgICB2YXIgd3JhcCA9IG9wdGlvbnMud3JhcFxuICAgICAgaWYgKHR5cGVvZiB3cmFwID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaGVjayQxLnBhcmFtZXRlcih3cmFwLCB3cmFwTW9kZXMpXG4gICAgICAgIHdyYXBTID0gd3JhcFQgPSB3cmFwTW9kZXNbd3JhcF1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh3cmFwKSkge1xuICAgICAgICBjaGVjayQxLnBhcmFtZXRlcih3cmFwWzBdLCB3cmFwTW9kZXMpXG4gICAgICAgIGNoZWNrJDEucGFyYW1ldGVyKHdyYXBbMV0sIHdyYXBNb2RlcylcbiAgICAgICAgd3JhcFMgPSB3cmFwTW9kZXNbd3JhcFswXV1cbiAgICAgICAgd3JhcFQgPSB3cmFwTW9kZXNbd3JhcFsxXV1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCd3cmFwUycgaW4gb3B0aW9ucykge1xuICAgICAgICB2YXIgb3B0V3JhcFMgPSBvcHRpb25zLndyYXBTXG4gICAgICAgIGNoZWNrJDEucGFyYW1ldGVyKG9wdFdyYXBTLCB3cmFwTW9kZXMpXG4gICAgICAgIHdyYXBTID0gd3JhcE1vZGVzW29wdFdyYXBTXVxuICAgICAgfVxuICAgICAgaWYgKCd3cmFwVCcgaW4gb3B0aW9ucykge1xuICAgICAgICB2YXIgb3B0V3JhcFQgPSBvcHRpb25zLndyYXBUXG4gICAgICAgIGNoZWNrJDEucGFyYW1ldGVyKG9wdFdyYXBULCB3cmFwTW9kZXMpXG4gICAgICAgIHdyYXBUID0gd3JhcE1vZGVzW29wdFdyYXBUXVxuICAgICAgfVxuICAgIH1cbiAgICBpbmZvLndyYXBTID0gd3JhcFNcbiAgICBpbmZvLndyYXBUID0gd3JhcFRcblxuICAgIGlmICgnYW5pc290cm9waWMnIGluIG9wdGlvbnMpIHtcbiAgICAgIHZhciBhbmlzb3Ryb3BpYyA9IG9wdGlvbnMuYW5pc290cm9waWNcbiAgICAgIGNoZWNrJDEodHlwZW9mIGFuaXNvdHJvcGljID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgYW5pc290cm9waWMgPj0gMSAmJiBhbmlzb3Ryb3BpYyA8PSBsaW1pdHMubWF4QW5pc290cm9waWMsXG4gICAgICAnYW5pc28gc2FtcGxlcyBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJylcbiAgICAgIGluZm8uYW5pc290cm9waWMgPSBvcHRpb25zLmFuaXNvdHJvcGljXG4gICAgfVxuXG4gICAgaWYgKCdtaXBtYXAnIGluIG9wdGlvbnMpIHtcbiAgICAgIHZhciBoYXNNaXBNYXAgPSBmYWxzZVxuICAgICAgc3dpdGNoICh0eXBlb2Ygb3B0aW9ucy5taXBtYXApIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBjaGVjayQxLnBhcmFtZXRlcihvcHRpb25zLm1pcG1hcCwgbWlwbWFwSGludCxcbiAgICAgICAgICAgICdpbnZhbGlkIG1pcG1hcCBoaW50JylcbiAgICAgICAgICBpbmZvLm1pcG1hcEhpbnQgPSBtaXBtYXBIaW50W29wdGlvbnMubWlwbWFwXVxuICAgICAgICAgIGluZm8uZ2VuTWlwbWFwcyA9IHRydWVcbiAgICAgICAgICBoYXNNaXBNYXAgPSB0cnVlXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICBoYXNNaXBNYXAgPSBpbmZvLmdlbk1pcG1hcHMgPSBvcHRpb25zLm1pcG1hcFxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBjaGVjayQxKEFycmF5LmlzQXJyYXkob3B0aW9ucy5taXBtYXApLCAnaW52YWxpZCBtaXBtYXAgdHlwZScpXG4gICAgICAgICAgaW5mby5nZW5NaXBtYXBzID0gZmFsc2VcbiAgICAgICAgICBoYXNNaXBNYXAgPSB0cnVlXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNoZWNrJDEucmFpc2UoJ2ludmFsaWQgbWlwbWFwIHR5cGUnKVxuICAgICAgfVxuICAgICAgaWYgKGhhc01pcE1hcCAmJiAhKCdtaW4nIGluIG9wdGlvbnMpKSB7XG4gICAgICAgIGluZm8ubWluRmlsdGVyID0gR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCQxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0VGV4SW5mbyAoaW5mbywgdGFyZ2V0KSB7XG4gICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgaW5mby5taW5GaWx0ZXIpXG4gICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgaW5mby5tYWdGaWx0ZXIpXG4gICAgZ2wudGV4UGFyYW1ldGVyaSh0YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9TLCBpbmZvLndyYXBTKVxuICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgaW5mby53cmFwVClcbiAgICBpZiAoZXh0ZW5zaW9ucy5leHRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMpIHtcbiAgICAgIGdsLnRleFBhcmFtZXRlcmkodGFyZ2V0LCBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCwgaW5mby5hbmlzb3Ryb3BpYylcbiAgICB9XG4gICAgaWYgKGluZm8uZ2VuTWlwbWFwcykge1xuICAgICAgZ2wuaGludChHTF9HRU5FUkFURV9NSVBNQVBfSElOVCwgaW5mby5taXBtYXBIaW50KVxuICAgICAgZ2wuZ2VuZXJhdGVNaXBtYXAodGFyZ2V0KVxuICAgIH1cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gRnVsbCB0ZXh0dXJlIG9iamVjdFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHZhciB0ZXh0dXJlQ291bnQgPSAwXG4gIHZhciB0ZXh0dXJlU2V0ID0ge31cbiAgdmFyIG51bVRleFVuaXRzID0gbGltaXRzLm1heFRleHR1cmVVbml0c1xuICB2YXIgdGV4dHVyZVVuaXRzID0gQXJyYXkobnVtVGV4VW5pdHMpLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfSlcblxuICBmdW5jdGlvbiBSRUdMVGV4dHVyZSAodGFyZ2V0KSB7XG4gICAgVGV4RmxhZ3MuY2FsbCh0aGlzKVxuICAgIHRoaXMubWlwbWFzayA9IDBcbiAgICB0aGlzLmludGVybmFsZm9ybWF0ID0gR0xfUkdCQSQxXG5cbiAgICB0aGlzLmlkID0gdGV4dHVyZUNvdW50KytcblxuICAgIHRoaXMucmVmQ291bnQgPSAxXG5cbiAgICB0aGlzLnRhcmdldCA9IHRhcmdldFxuICAgIHRoaXMudGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKVxuXG4gICAgdGhpcy51bml0ID0gLTFcbiAgICB0aGlzLmJpbmRDb3VudCA9IDBcblxuICAgIHRoaXMudGV4SW5mbyA9IG5ldyBUZXhJbmZvKClcblxuICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgdGhpcy5zdGF0cyA9IHsgc2l6ZTogMCB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdGVtcEJpbmQgKHRleHR1cmUpIHtcbiAgICBnbC5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwJDEpXG4gICAgZ2wuYmluZFRleHR1cmUodGV4dHVyZS50YXJnZXQsIHRleHR1cmUudGV4dHVyZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlbXBSZXN0b3JlICgpIHtcbiAgICB2YXIgcHJldiA9IHRleHR1cmVVbml0c1swXVxuICAgIGlmIChwcmV2KSB7XG4gICAgICBnbC5iaW5kVGV4dHVyZShwcmV2LnRhcmdldCwgcHJldi50ZXh0dXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICBnbC5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEJDEsIG51bGwpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSAodGV4dHVyZSkge1xuICAgIHZhciBoYW5kbGUgPSB0ZXh0dXJlLnRleHR1cmVcbiAgICBjaGVjayQxKGhhbmRsZSwgJ211c3Qgbm90IGRvdWJsZSBkZXN0cm95IHRleHR1cmUnKVxuICAgIHZhciB1bml0ID0gdGV4dHVyZS51bml0XG4gICAgdmFyIHRhcmdldCA9IHRleHR1cmUudGFyZ2V0XG4gICAgaWYgKHVuaXQgPj0gMCkge1xuICAgICAgZ2wuYWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCQxICsgdW5pdClcbiAgICAgIGdsLmJpbmRUZXh0dXJlKHRhcmdldCwgbnVsbClcbiAgICAgIHRleHR1cmVVbml0c1t1bml0XSA9IG51bGxcbiAgICB9XG4gICAgZ2wuZGVsZXRlVGV4dHVyZShoYW5kbGUpXG4gICAgdGV4dHVyZS50ZXh0dXJlID0gbnVsbFxuICAgIHRleHR1cmUucGFyYW1zID0gbnVsbFxuICAgIHRleHR1cmUucGl4ZWxzID0gbnVsbFxuICAgIHRleHR1cmUucmVmQ291bnQgPSAwXG4gICAgZGVsZXRlIHRleHR1cmVTZXRbdGV4dHVyZS5pZF1cbiAgICBzdGF0cy50ZXh0dXJlQ291bnQtLVxuICB9XG5cbiAgZXh0ZW5kKFJFR0xUZXh0dXJlLnByb3RvdHlwZSwge1xuICAgIGJpbmQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0ZXh0dXJlID0gdGhpc1xuICAgICAgdGV4dHVyZS5iaW5kQ291bnQgKz0gMVxuICAgICAgdmFyIHVuaXQgPSB0ZXh0dXJlLnVuaXRcbiAgICAgIGlmICh1bml0IDwgMCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVRleFVuaXRzOyArK2kpIHtcbiAgICAgICAgICB2YXIgb3RoZXIgPSB0ZXh0dXJlVW5pdHNbaV1cbiAgICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICAgIGlmIChvdGhlci5iaW5kQ291bnQgPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdGhlci51bml0ID0gLTFcbiAgICAgICAgICB9XG4gICAgICAgICAgdGV4dHVyZVVuaXRzW2ldID0gdGV4dHVyZVxuICAgICAgICAgIHVuaXQgPSBpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAodW5pdCA+PSBudW1UZXhVbml0cykge1xuICAgICAgICAgIGNoZWNrJDEucmFpc2UoJ2luc3VmZmljaWVudCBudW1iZXIgb2YgdGV4dHVyZSB1bml0cycpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy5wcm9maWxlICYmIHN0YXRzLm1heFRleHR1cmVVbml0cyA8ICh1bml0ICsgMSkpIHtcbiAgICAgICAgICBzdGF0cy5tYXhUZXh0dXJlVW5pdHMgPSB1bml0ICsgMSAvLyArMSwgc2luY2UgdGhlIHVuaXRzIGFyZSB6ZXJvLWJhc2VkXG4gICAgICAgIH1cbiAgICAgICAgdGV4dHVyZS51bml0ID0gdW5pdFxuICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwJDEgKyB1bml0KVxuICAgICAgICBnbC5iaW5kVGV4dHVyZSh0ZXh0dXJlLnRhcmdldCwgdGV4dHVyZS50ZXh0dXJlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuaXRcbiAgICB9LFxuXG4gICAgdW5iaW5kOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJpbmRDb3VudCAtPSAxXG4gICAgfSxcblxuICAgIGRlY1JlZjogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKC0tdGhpcy5yZWZDb3VudCA8PSAwKSB7XG4gICAgICAgIGRlc3Ryb3kodGhpcylcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgZnVuY3Rpb24gY3JlYXRlVGV4dHVyZTJEIChhLCBiKSB7XG4gICAgdmFyIHRleHR1cmUgPSBuZXcgUkVHTFRleHR1cmUoR0xfVEVYVFVSRV8yRCQxKVxuICAgIHRleHR1cmVTZXRbdGV4dHVyZS5pZF0gPSB0ZXh0dXJlXG4gICAgc3RhdHMudGV4dHVyZUNvdW50KytcblxuICAgIGZ1bmN0aW9uIHJlZ2xUZXh0dXJlMkQgKGEsIGIpIHtcbiAgICAgIHZhciB0ZXhJbmZvID0gdGV4dHVyZS50ZXhJbmZvXG4gICAgICBUZXhJbmZvLmNhbGwodGV4SW5mbylcbiAgICAgIHZhciBtaXBEYXRhID0gYWxsb2NNaXBNYXAoKVxuXG4gICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBwYXJzZU1pcE1hcEZyb21TaGFwZShtaXBEYXRhLCBhIHwgMCwgYiB8IDApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFyc2VNaXBNYXBGcm9tU2hhcGUobWlwRGF0YSwgYSB8IDAsIGEgfCAwKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGEpIHtcbiAgICAgICAgY2hlY2skMS50eXBlKGEsICdvYmplY3QnLCAnaW52YWxpZCBhcmd1bWVudHMgdG8gcmVnbC50ZXh0dXJlJylcbiAgICAgICAgcGFyc2VUZXhJbmZvKHRleEluZm8sIGEpXG4gICAgICAgIHBhcnNlTWlwTWFwRnJvbU9iamVjdChtaXBEYXRhLCBhKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZW1wdHkgdGV4dHVyZXMgZ2V0IGFzc2lnbmVkIGEgZGVmYXVsdCBzaGFwZSBvZiAxeDFcbiAgICAgICAgcGFyc2VNaXBNYXBGcm9tU2hhcGUobWlwRGF0YSwgMSwgMSlcbiAgICAgIH1cblxuICAgICAgaWYgKHRleEluZm8uZ2VuTWlwbWFwcykge1xuICAgICAgICBtaXBEYXRhLm1pcG1hc2sgPSAobWlwRGF0YS53aWR0aCA8PCAxKSAtIDFcbiAgICAgIH1cbiAgICAgIHRleHR1cmUubWlwbWFzayA9IG1pcERhdGEubWlwbWFza1xuXG4gICAgICBjb3B5RmxhZ3ModGV4dHVyZSwgbWlwRGF0YSlcblxuICAgICAgY2hlY2skMS50ZXh0dXJlMkQodGV4SW5mbywgbWlwRGF0YSwgbGltaXRzKVxuICAgICAgdGV4dHVyZS5pbnRlcm5hbGZvcm1hdCA9IG1pcERhdGEuaW50ZXJuYWxmb3JtYXRcblxuICAgICAgcmVnbFRleHR1cmUyRC53aWR0aCA9IG1pcERhdGEud2lkdGhcbiAgICAgIHJlZ2xUZXh0dXJlMkQuaGVpZ2h0ID0gbWlwRGF0YS5oZWlnaHRcblxuICAgICAgdGVtcEJpbmQodGV4dHVyZSlcbiAgICAgIHNldE1pcE1hcChtaXBEYXRhLCBHTF9URVhUVVJFXzJEJDEpXG4gICAgICBzZXRUZXhJbmZvKHRleEluZm8sIEdMX1RFWFRVUkVfMkQkMSlcbiAgICAgIHRlbXBSZXN0b3JlKClcblxuICAgICAgZnJlZU1pcE1hcChtaXBEYXRhKVxuXG4gICAgICBpZiAoY29uZmlnLnByb2ZpbGUpIHtcbiAgICAgICAgdGV4dHVyZS5zdGF0cy5zaXplID0gZ2V0VGV4dHVyZVNpemUoXG4gICAgICAgICAgdGV4dHVyZS5pbnRlcm5hbGZvcm1hdCxcbiAgICAgICAgICB0ZXh0dXJlLnR5cGUsXG4gICAgICAgICAgbWlwRGF0YS53aWR0aCxcbiAgICAgICAgICBtaXBEYXRhLmhlaWdodCxcbiAgICAgICAgICB0ZXhJbmZvLmdlbk1pcG1hcHMsXG4gICAgICAgICAgZmFsc2UpXG4gICAgICB9XG4gICAgICByZWdsVGV4dHVyZTJELmZvcm1hdCA9IHRleHR1cmVGb3JtYXRzSW52ZXJ0W3RleHR1cmUuaW50ZXJuYWxmb3JtYXRdXG4gICAgICByZWdsVGV4dHVyZTJELnR5cGUgPSB0ZXh0dXJlVHlwZXNJbnZlcnRbdGV4dHVyZS50eXBlXVxuXG4gICAgICByZWdsVGV4dHVyZTJELm1hZyA9IG1hZ0ZpbHRlcnNJbnZlcnRbdGV4SW5mby5tYWdGaWx0ZXJdXG4gICAgICByZWdsVGV4dHVyZTJELm1pbiA9IG1pbkZpbHRlcnNJbnZlcnRbdGV4SW5mby5taW5GaWx0ZXJdXG5cbiAgICAgIHJlZ2xUZXh0dXJlMkQud3JhcFMgPSB3cmFwTW9kZXNJbnZlcnRbdGV4SW5mby53cmFwU11cbiAgICAgIHJlZ2xUZXh0dXJlMkQud3JhcFQgPSB3cmFwTW9kZXNJbnZlcnRbdGV4SW5mby53cmFwVF1cblxuICAgICAgcmV0dXJuIHJlZ2xUZXh0dXJlMkRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdWJpbWFnZSAoaW1hZ2UsIHhfLCB5XywgbGV2ZWxfKSB7XG4gICAgICBjaGVjayQxKCEhaW1hZ2UsICdtdXN0IHNwZWNpZnkgaW1hZ2UgZGF0YScpXG5cbiAgICAgIHZhciB4ID0geF8gfCAwXG4gICAgICB2YXIgeSA9IHlfIHwgMFxuICAgICAgdmFyIGxldmVsID0gbGV2ZWxfIHwgMFxuXG4gICAgICB2YXIgaW1hZ2VEYXRhID0gYWxsb2NJbWFnZSgpXG4gICAgICBjb3B5RmxhZ3MoaW1hZ2VEYXRhLCB0ZXh0dXJlKVxuICAgICAgaW1hZ2VEYXRhLndpZHRoID0gMFxuICAgICAgaW1hZ2VEYXRhLmhlaWdodCA9IDBcbiAgICAgIHBhcnNlSW1hZ2UoaW1hZ2VEYXRhLCBpbWFnZSlcbiAgICAgIGltYWdlRGF0YS53aWR0aCA9IGltYWdlRGF0YS53aWR0aCB8fCAoKHRleHR1cmUud2lkdGggPj4gbGV2ZWwpIC0geClcbiAgICAgIGltYWdlRGF0YS5oZWlnaHQgPSBpbWFnZURhdGEuaGVpZ2h0IHx8ICgodGV4dHVyZS5oZWlnaHQgPj4gbGV2ZWwpIC0geSlcblxuICAgICAgY2hlY2skMShcbiAgICAgICAgdGV4dHVyZS50eXBlID09PSBpbWFnZURhdGEudHlwZSAmJlxuICAgICAgICB0ZXh0dXJlLmZvcm1hdCA9PT0gaW1hZ2VEYXRhLmZvcm1hdCAmJlxuICAgICAgICB0ZXh0dXJlLmludGVybmFsZm9ybWF0ID09PSBpbWFnZURhdGEuaW50ZXJuYWxmb3JtYXQsXG4gICAgICAgICdpbmNvbXBhdGlibGUgZm9ybWF0IGZvciB0ZXh0dXJlLnN1YmltYWdlJylcbiAgICAgIGNoZWNrJDEoXG4gICAgICAgIHggPj0gMCAmJiB5ID49IDAgJiZcbiAgICAgICAgeCArIGltYWdlRGF0YS53aWR0aCA8PSB0ZXh0dXJlLndpZHRoICYmXG4gICAgICAgIHkgKyBpbWFnZURhdGEuaGVpZ2h0IDw9IHRleHR1cmUuaGVpZ2h0LFxuICAgICAgICAndGV4dHVyZS5zdWJpbWFnZSB3cml0ZSBvdXQgb2YgYm91bmRzJylcbiAgICAgIGNoZWNrJDEoXG4gICAgICAgIHRleHR1cmUubWlwbWFzayAmICgxIDw8IGxldmVsKSxcbiAgICAgICAgJ21pc3NpbmcgbWlwbWFwIGRhdGEnKVxuICAgICAgY2hlY2skMShcbiAgICAgICAgaW1hZ2VEYXRhLmRhdGEgfHwgaW1hZ2VEYXRhLmVsZW1lbnQgfHwgaW1hZ2VEYXRhLm5lZWRzQ29weSxcbiAgICAgICAgJ21pc3NpbmcgaW1hZ2UgZGF0YScpXG5cbiAgICAgIHRlbXBCaW5kKHRleHR1cmUpXG4gICAgICBzZXRTdWJJbWFnZShpbWFnZURhdGEsIEdMX1RFWFRVUkVfMkQkMSwgeCwgeSwgbGV2ZWwpXG4gICAgICB0ZW1wUmVzdG9yZSgpXG5cbiAgICAgIGZyZWVJbWFnZShpbWFnZURhdGEpXG5cbiAgICAgIHJldHVybiByZWdsVGV4dHVyZTJEXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzaXplICh3XywgaF8pIHtcbiAgICAgIHZhciB3ID0gd18gfCAwXG4gICAgICB2YXIgaCA9IChoXyB8IDApIHx8IHdcbiAgICAgIGlmICh3ID09PSB0ZXh0dXJlLndpZHRoICYmIGggPT09IHRleHR1cmUuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiByZWdsVGV4dHVyZTJEXG4gICAgICB9XG5cbiAgICAgIHJlZ2xUZXh0dXJlMkQud2lkdGggPSB0ZXh0dXJlLndpZHRoID0gd1xuICAgICAgcmVnbFRleHR1cmUyRC5oZWlnaHQgPSB0ZXh0dXJlLmhlaWdodCA9IGhcblxuICAgICAgdGVtcEJpbmQodGV4dHVyZSlcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IHRleHR1cmUubWlwbWFzayA+PiBpOyArK2kpIHtcbiAgICAgICAgdmFyIF93ID0gdyA+PiBpXG4gICAgICAgIHZhciBfaCA9IGggPj4gaVxuICAgICAgICBpZiAoIV93IHx8ICFfaCkgYnJlYWtcbiAgICAgICAgZ2wudGV4SW1hZ2UyRChcbiAgICAgICAgICBHTF9URVhUVVJFXzJEJDEsXG4gICAgICAgICAgaSxcbiAgICAgICAgICB0ZXh0dXJlLmZvcm1hdCxcbiAgICAgICAgICBfdyxcbiAgICAgICAgICBfaCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRleHR1cmUuZm9ybWF0LFxuICAgICAgICAgIHRleHR1cmUudHlwZSxcbiAgICAgICAgICBudWxsKVxuICAgICAgfVxuICAgICAgdGVtcFJlc3RvcmUoKVxuXG4gICAgICAvLyBhbHNvLCByZWNvbXB1dGUgdGhlIHRleHR1cmUgc2l6ZS5cbiAgICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgICB0ZXh0dXJlLnN0YXRzLnNpemUgPSBnZXRUZXh0dXJlU2l6ZShcbiAgICAgICAgICB0ZXh0dXJlLmludGVybmFsZm9ybWF0LFxuICAgICAgICAgIHRleHR1cmUudHlwZSxcbiAgICAgICAgICB3LFxuICAgICAgICAgIGgsXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgZmFsc2UpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWdsVGV4dHVyZTJEXG4gICAgfVxuXG4gICAgcmVnbFRleHR1cmUyRChhLCBiKVxuXG4gICAgcmVnbFRleHR1cmUyRC5zdWJpbWFnZSA9IHN1YmltYWdlXG4gICAgcmVnbFRleHR1cmUyRC5yZXNpemUgPSByZXNpemVcbiAgICByZWdsVGV4dHVyZTJELl9yZWdsVHlwZSA9ICd0ZXh0dXJlMmQnXG4gICAgcmVnbFRleHR1cmUyRC5fdGV4dHVyZSA9IHRleHR1cmVcbiAgICBpZiAoY29uZmlnLnByb2ZpbGUpIHtcbiAgICAgIHJlZ2xUZXh0dXJlMkQuc3RhdHMgPSB0ZXh0dXJlLnN0YXRzXG4gICAgfVxuICAgIHJlZ2xUZXh0dXJlMkQuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRleHR1cmUuZGVjUmVmKClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVnbFRleHR1cmUyRFxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlVGV4dHVyZUN1YmUgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIHtcbiAgICB2YXIgdGV4dHVyZSA9IG5ldyBSRUdMVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQJDEpXG4gICAgdGV4dHVyZVNldFt0ZXh0dXJlLmlkXSA9IHRleHR1cmVcbiAgICBzdGF0cy5jdWJlQ291bnQrK1xuXG4gICAgdmFyIGZhY2VzID0gbmV3IEFycmF5KDYpXG5cbiAgICBmdW5jdGlvbiByZWdsVGV4dHVyZUN1YmUgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIHtcbiAgICAgIHZhciBpXG4gICAgICB2YXIgdGV4SW5mbyA9IHRleHR1cmUudGV4SW5mb1xuICAgICAgVGV4SW5mby5jYWxsKHRleEluZm8pXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgIGZhY2VzW2ldID0gYWxsb2NNaXBNYXAoKVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGEwID09PSAnbnVtYmVyJyB8fCAhYTApIHtcbiAgICAgICAgdmFyIHMgPSAoYTAgfCAwKSB8fCAxXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA2OyArK2kpIHtcbiAgICAgICAgICBwYXJzZU1pcE1hcEZyb21TaGFwZShmYWNlc1tpXSwgcywgcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYTAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChhMSkge1xuICAgICAgICAgIHBhcnNlTWlwTWFwRnJvbU9iamVjdChmYWNlc1swXSwgYTApXG4gICAgICAgICAgcGFyc2VNaXBNYXBGcm9tT2JqZWN0KGZhY2VzWzFdLCBhMSlcbiAgICAgICAgICBwYXJzZU1pcE1hcEZyb21PYmplY3QoZmFjZXNbMl0sIGEyKVxuICAgICAgICAgIHBhcnNlTWlwTWFwRnJvbU9iamVjdChmYWNlc1szXSwgYTMpXG4gICAgICAgICAgcGFyc2VNaXBNYXBGcm9tT2JqZWN0KGZhY2VzWzRdLCBhNClcbiAgICAgICAgICBwYXJzZU1pcE1hcEZyb21PYmplY3QoZmFjZXNbNV0sIGE1KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcnNlVGV4SW5mbyh0ZXhJbmZvLCBhMClcbiAgICAgICAgICBwYXJzZUZsYWdzKHRleHR1cmUsIGEwKVxuICAgICAgICAgIGlmICgnZmFjZXMnIGluIGEwKSB7XG4gICAgICAgICAgICB2YXIgZmFjZUlucHV0ID0gYTAuZmFjZXNcbiAgICAgICAgICAgIGNoZWNrJDEoQXJyYXkuaXNBcnJheShmYWNlSW5wdXQpICYmIGZhY2VJbnB1dC5sZW5ndGggPT09IDYsXG4gICAgICAgICAgICAgICdjdWJlIGZhY2VzIG11c3QgYmUgYSBsZW5ndGggNiBhcnJheScpXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEodHlwZW9mIGZhY2VJbnB1dFtpXSA9PT0gJ29iamVjdCcgJiYgISFmYWNlSW5wdXRbaV0sXG4gICAgICAgICAgICAgICAgJ2ludmFsaWQgaW5wdXQgZm9yIGN1YmUgbWFwIGZhY2UnKVxuICAgICAgICAgICAgICBjb3B5RmxhZ3MoZmFjZXNbaV0sIHRleHR1cmUpXG4gICAgICAgICAgICAgIHBhcnNlTWlwTWFwRnJvbU9iamVjdChmYWNlc1tpXSwgZmFjZUlucHV0W2ldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgICAgICAgIHBhcnNlTWlwTWFwRnJvbU9iamVjdChmYWNlc1tpXSwgYTApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGVjayQxLnJhaXNlKCdpbnZhbGlkIGFyZ3VtZW50cyB0byBjdWJlIG1hcCcpXG4gICAgICB9XG5cbiAgICAgIGNvcHlGbGFncyh0ZXh0dXJlLCBmYWNlc1swXSlcblxuICAgICAgaWYgKCFsaW1pdHMubnBvdFRleHR1cmVDdWJlKSB7XG4gICAgICAgIGNoZWNrJDEoaXNQb3cyJDEodGV4dHVyZS53aWR0aCkgJiYgaXNQb3cyJDEodGV4dHVyZS5oZWlnaHQpLCAneW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgbm9uIHBvd2VyIG9yIHR3byB0ZXh0dXJlIGRpbWVuc2lvbnMnKVxuICAgICAgfVxuXG4gICAgICBpZiAodGV4SW5mby5nZW5NaXBtYXBzKSB7XG4gICAgICAgIHRleHR1cmUubWlwbWFzayA9IChmYWNlc1swXS53aWR0aCA8PCAxKSAtIDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRleHR1cmUubWlwbWFzayA9IGZhY2VzWzBdLm1pcG1hc2tcbiAgICAgIH1cblxuICAgICAgY2hlY2skMS50ZXh0dXJlQ3ViZSh0ZXh0dXJlLCB0ZXhJbmZvLCBmYWNlcywgbGltaXRzKVxuICAgICAgdGV4dHVyZS5pbnRlcm5hbGZvcm1hdCA9IGZhY2VzWzBdLmludGVybmFsZm9ybWF0XG5cbiAgICAgIHJlZ2xUZXh0dXJlQ3ViZS53aWR0aCA9IGZhY2VzWzBdLndpZHRoXG4gICAgICByZWdsVGV4dHVyZUN1YmUuaGVpZ2h0ID0gZmFjZXNbMF0uaGVpZ2h0XG5cbiAgICAgIHRlbXBCaW5kKHRleHR1cmUpXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgIHNldE1pcE1hcChmYWNlc1tpXSwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJDEgKyBpKVxuICAgICAgfVxuICAgICAgc2V0VGV4SW5mbyh0ZXhJbmZvLCBHTF9URVhUVVJFX0NVQkVfTUFQJDEpXG4gICAgICB0ZW1wUmVzdG9yZSgpXG5cbiAgICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgICB0ZXh0dXJlLnN0YXRzLnNpemUgPSBnZXRUZXh0dXJlU2l6ZShcbiAgICAgICAgICB0ZXh0dXJlLmludGVybmFsZm9ybWF0LFxuICAgICAgICAgIHRleHR1cmUudHlwZSxcbiAgICAgICAgICByZWdsVGV4dHVyZUN1YmUud2lkdGgsXG4gICAgICAgICAgcmVnbFRleHR1cmVDdWJlLmhlaWdodCxcbiAgICAgICAgICB0ZXhJbmZvLmdlbk1pcG1hcHMsXG4gICAgICAgICAgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmVnbFRleHR1cmVDdWJlLmZvcm1hdCA9IHRleHR1cmVGb3JtYXRzSW52ZXJ0W3RleHR1cmUuaW50ZXJuYWxmb3JtYXRdXG4gICAgICByZWdsVGV4dHVyZUN1YmUudHlwZSA9IHRleHR1cmVUeXBlc0ludmVydFt0ZXh0dXJlLnR5cGVdXG5cbiAgICAgIHJlZ2xUZXh0dXJlQ3ViZS5tYWcgPSBtYWdGaWx0ZXJzSW52ZXJ0W3RleEluZm8ubWFnRmlsdGVyXVxuICAgICAgcmVnbFRleHR1cmVDdWJlLm1pbiA9IG1pbkZpbHRlcnNJbnZlcnRbdGV4SW5mby5taW5GaWx0ZXJdXG5cbiAgICAgIHJlZ2xUZXh0dXJlQ3ViZS53cmFwUyA9IHdyYXBNb2Rlc0ludmVydFt0ZXhJbmZvLndyYXBTXVxuICAgICAgcmVnbFRleHR1cmVDdWJlLndyYXBUID0gd3JhcE1vZGVzSW52ZXJ0W3RleEluZm8ud3JhcFRdXG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCA2OyArK2kpIHtcbiAgICAgICAgZnJlZU1pcE1hcChmYWNlc1tpXSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlZ2xUZXh0dXJlQ3ViZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1YmltYWdlIChmYWNlLCBpbWFnZSwgeF8sIHlfLCBsZXZlbF8pIHtcbiAgICAgIGNoZWNrJDEoISFpbWFnZSwgJ211c3Qgc3BlY2lmeSBpbWFnZSBkYXRhJylcbiAgICAgIGNoZWNrJDEodHlwZW9mIGZhY2UgPT09ICdudW1iZXInICYmIGZhY2UgPT09IChmYWNlIHwgMCkgJiZcbiAgICAgICAgZmFjZSA+PSAwICYmIGZhY2UgPCA2LCAnaW52YWxpZCBmYWNlJylcblxuICAgICAgdmFyIHggPSB4XyB8IDBcbiAgICAgIHZhciB5ID0geV8gfCAwXG4gICAgICB2YXIgbGV2ZWwgPSBsZXZlbF8gfCAwXG5cbiAgICAgIHZhciBpbWFnZURhdGEgPSBhbGxvY0ltYWdlKClcbiAgICAgIGNvcHlGbGFncyhpbWFnZURhdGEsIHRleHR1cmUpXG4gICAgICBpbWFnZURhdGEud2lkdGggPSAwXG4gICAgICBpbWFnZURhdGEuaGVpZ2h0ID0gMFxuICAgICAgcGFyc2VJbWFnZShpbWFnZURhdGEsIGltYWdlKVxuICAgICAgaW1hZ2VEYXRhLndpZHRoID0gaW1hZ2VEYXRhLndpZHRoIHx8ICgodGV4dHVyZS53aWR0aCA+PiBsZXZlbCkgLSB4KVxuICAgICAgaW1hZ2VEYXRhLmhlaWdodCA9IGltYWdlRGF0YS5oZWlnaHQgfHwgKCh0ZXh0dXJlLmhlaWdodCA+PiBsZXZlbCkgLSB5KVxuXG4gICAgICBjaGVjayQxKFxuICAgICAgICB0ZXh0dXJlLnR5cGUgPT09IGltYWdlRGF0YS50eXBlICYmXG4gICAgICAgIHRleHR1cmUuZm9ybWF0ID09PSBpbWFnZURhdGEuZm9ybWF0ICYmXG4gICAgICAgIHRleHR1cmUuaW50ZXJuYWxmb3JtYXQgPT09IGltYWdlRGF0YS5pbnRlcm5hbGZvcm1hdCxcbiAgICAgICAgJ2luY29tcGF0aWJsZSBmb3JtYXQgZm9yIHRleHR1cmUuc3ViaW1hZ2UnKVxuICAgICAgY2hlY2skMShcbiAgICAgICAgeCA+PSAwICYmIHkgPj0gMCAmJlxuICAgICAgICB4ICsgaW1hZ2VEYXRhLndpZHRoIDw9IHRleHR1cmUud2lkdGggJiZcbiAgICAgICAgeSArIGltYWdlRGF0YS5oZWlnaHQgPD0gdGV4dHVyZS5oZWlnaHQsXG4gICAgICAgICd0ZXh0dXJlLnN1YmltYWdlIHdyaXRlIG91dCBvZiBib3VuZHMnKVxuICAgICAgY2hlY2skMShcbiAgICAgICAgdGV4dHVyZS5taXBtYXNrICYgKDEgPDwgbGV2ZWwpLFxuICAgICAgICAnbWlzc2luZyBtaXBtYXAgZGF0YScpXG4gICAgICBjaGVjayQxKFxuICAgICAgICBpbWFnZURhdGEuZGF0YSB8fCBpbWFnZURhdGEuZWxlbWVudCB8fCBpbWFnZURhdGEubmVlZHNDb3B5LFxuICAgICAgICAnbWlzc2luZyBpbWFnZSBkYXRhJylcblxuICAgICAgdGVtcEJpbmQodGV4dHVyZSlcbiAgICAgIHNldFN1YkltYWdlKGltYWdlRGF0YSwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJDEgKyBmYWNlLCB4LCB5LCBsZXZlbClcbiAgICAgIHRlbXBSZXN0b3JlKClcblxuICAgICAgZnJlZUltYWdlKGltYWdlRGF0YSlcblxuICAgICAgcmV0dXJuIHJlZ2xUZXh0dXJlQ3ViZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2l6ZSAocmFkaXVzXykge1xuICAgICAgdmFyIHJhZGl1cyA9IHJhZGl1c18gfCAwXG4gICAgICBpZiAocmFkaXVzID09PSB0ZXh0dXJlLndpZHRoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZWdsVGV4dHVyZUN1YmUud2lkdGggPSB0ZXh0dXJlLndpZHRoID0gcmFkaXVzXG4gICAgICByZWdsVGV4dHVyZUN1YmUuaGVpZ2h0ID0gdGV4dHVyZS5oZWlnaHQgPSByYWRpdXNcblxuICAgICAgdGVtcEJpbmQodGV4dHVyZSlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyB0ZXh0dXJlLm1pcG1hc2sgPj4gajsgKytqKSB7XG4gICAgICAgICAgZ2wudGV4SW1hZ2UyRChcbiAgICAgICAgICAgIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCQxICsgaSxcbiAgICAgICAgICAgIGosXG4gICAgICAgICAgICB0ZXh0dXJlLmZvcm1hdCxcbiAgICAgICAgICAgIHJhZGl1cyA+PiBqLFxuICAgICAgICAgICAgcmFkaXVzID4+IGosXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgdGV4dHVyZS5mb3JtYXQsXG4gICAgICAgICAgICB0ZXh0dXJlLnR5cGUsXG4gICAgICAgICAgICBudWxsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0ZW1wUmVzdG9yZSgpXG5cbiAgICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgICB0ZXh0dXJlLnN0YXRzLnNpemUgPSBnZXRUZXh0dXJlU2l6ZShcbiAgICAgICAgICB0ZXh0dXJlLmludGVybmFsZm9ybWF0LFxuICAgICAgICAgIHRleHR1cmUudHlwZSxcbiAgICAgICAgICByZWdsVGV4dHVyZUN1YmUud2lkdGgsXG4gICAgICAgICAgcmVnbFRleHR1cmVDdWJlLmhlaWdodCxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICB0cnVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVnbFRleHR1cmVDdWJlXG4gICAgfVxuXG4gICAgcmVnbFRleHR1cmVDdWJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpXG5cbiAgICByZWdsVGV4dHVyZUN1YmUuc3ViaW1hZ2UgPSBzdWJpbWFnZVxuICAgIHJlZ2xUZXh0dXJlQ3ViZS5yZXNpemUgPSByZXNpemVcbiAgICByZWdsVGV4dHVyZUN1YmUuX3JlZ2xUeXBlID0gJ3RleHR1cmVDdWJlJ1xuICAgIHJlZ2xUZXh0dXJlQ3ViZS5fdGV4dHVyZSA9IHRleHR1cmVcbiAgICBpZiAoY29uZmlnLnByb2ZpbGUpIHtcbiAgICAgIHJlZ2xUZXh0dXJlQ3ViZS5zdGF0cyA9IHRleHR1cmUuc3RhdHNcbiAgICB9XG4gICAgcmVnbFRleHR1cmVDdWJlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0ZXh0dXJlLmRlY1JlZigpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZ2xUZXh0dXJlQ3ViZVxuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gcmVnbCBpcyBkZXN0cm95ZWRcbiAgZnVuY3Rpb24gZGVzdHJveVRleHR1cmVzICgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVRleFVuaXRzOyArK2kpIHtcbiAgICAgIGdsLmFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAkMSArIGkpXG4gICAgICBnbC5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEJDEsIG51bGwpXG4gICAgICB0ZXh0dXJlVW5pdHNbaV0gPSBudWxsXG4gICAgfVxuICAgIHZhbHVlcyh0ZXh0dXJlU2V0KS5mb3JFYWNoKGRlc3Ryb3kpXG5cbiAgICBzdGF0cy5jdWJlQ291bnQgPSAwXG4gICAgc3RhdHMudGV4dHVyZUNvdW50ID0gMFxuICB9XG5cbiAgaWYgKGNvbmZpZy5wcm9maWxlKSB7XG4gICAgc3RhdHMuZ2V0VG90YWxUZXh0dXJlU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0b3RhbCA9IDBcbiAgICAgIE9iamVjdC5rZXlzKHRleHR1cmVTZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB0b3RhbCArPSB0ZXh0dXJlU2V0W2tleV0uc3RhdHMuc2l6ZVxuICAgICAgfSlcbiAgICAgIHJldHVybiB0b3RhbFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVUZXh0dXJlcyAoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1UZXhVbml0czsgKytpKSB7XG4gICAgICB2YXIgdGV4ID0gdGV4dHVyZVVuaXRzW2ldXG4gICAgICBpZiAodGV4KSB7XG4gICAgICAgIHRleC5iaW5kQ291bnQgPSAwXG4gICAgICAgIHRleC51bml0ID0gLTFcbiAgICAgICAgdGV4dHVyZVVuaXRzW2ldID0gbnVsbFxuICAgICAgfVxuICAgIH1cblxuICAgIHZhbHVlcyh0ZXh0dXJlU2V0KS5mb3JFYWNoKGZ1bmN0aW9uICh0ZXh0dXJlKSB7XG4gICAgICB0ZXh0dXJlLnRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKClcbiAgICAgIGdsLmJpbmRUZXh0dXJlKHRleHR1cmUudGFyZ2V0LCB0ZXh0dXJlLnRleHR1cmUpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyArK2kpIHtcbiAgICAgICAgaWYgKCh0ZXh0dXJlLm1pcG1hc2sgJiAoMSA8PCBpKSkgPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0dXJlLnRhcmdldCA9PT0gR0xfVEVYVFVSRV8yRCQxKSB7XG4gICAgICAgICAgZ2wudGV4SW1hZ2UyRChHTF9URVhUVVJFXzJEJDEsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgdGV4dHVyZS5pbnRlcm5hbGZvcm1hdCxcbiAgICAgICAgICAgIHRleHR1cmUud2lkdGggPj4gaSxcbiAgICAgICAgICAgIHRleHR1cmUuaGVpZ2h0ID4+IGksXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgdGV4dHVyZS5pbnRlcm5hbGZvcm1hdCxcbiAgICAgICAgICAgIHRleHR1cmUudHlwZSxcbiAgICAgICAgICAgIG51bGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA2OyArK2opIHtcbiAgICAgICAgICAgIGdsLnRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJDEgKyBqLFxuICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICB0ZXh0dXJlLmludGVybmFsZm9ybWF0LFxuICAgICAgICAgICAgICB0ZXh0dXJlLndpZHRoID4+IGksXG4gICAgICAgICAgICAgIHRleHR1cmUuaGVpZ2h0ID4+IGksXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIHRleHR1cmUuaW50ZXJuYWxmb3JtYXQsXG4gICAgICAgICAgICAgIHRleHR1cmUudHlwZSxcbiAgICAgICAgICAgICAgbnVsbClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFRleEluZm8odGV4dHVyZS50ZXhJbmZvLCB0ZXh0dXJlLnRhcmdldClcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVmcmVzaFRleHR1cmVzICgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bVRleFVuaXRzOyArK2kpIHtcbiAgICAgIHZhciB0ZXggPSB0ZXh0dXJlVW5pdHNbaV1cbiAgICAgIGlmICh0ZXgpIHtcbiAgICAgICAgdGV4LmJpbmRDb3VudCA9IDBcbiAgICAgICAgdGV4LnVuaXQgPSAtMVxuICAgICAgICB0ZXh0dXJlVW5pdHNbaV0gPSBudWxsXG4gICAgICB9XG4gICAgICBnbC5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwJDEgKyBpKVxuICAgICAgZ2wuYmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCQxLCBudWxsKVxuICAgICAgZ2wuYmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCQxLCBudWxsKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY3JlYXRlMkQ6IGNyZWF0ZVRleHR1cmUyRCxcbiAgICBjcmVhdGVDdWJlOiBjcmVhdGVUZXh0dXJlQ3ViZSxcbiAgICBjbGVhcjogZGVzdHJveVRleHR1cmVzLFxuICAgIGdldFRleHR1cmU6IGZ1bmN0aW9uICh3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgcmVzdG9yZTogcmVzdG9yZVRleHR1cmVzLFxuICAgIHJlZnJlc2g6IHJlZnJlc2hUZXh0dXJlc1xuICB9XG59XG5cbnZhciBHTF9SRU5ERVJCVUZGRVIgPSAweDhENDFcblxudmFyIEdMX1JHQkE0JDEgPSAweDgwNTZcbnZhciBHTF9SR0I1X0ExJDEgPSAweDgwNTdcbnZhciBHTF9SR0I1NjUkMSA9IDB4OEQ2MlxudmFyIEdMX0RFUFRIX0NPTVBPTkVOVDE2ID0gMHg4MUE1XG52YXIgR0xfU1RFTkNJTF9JTkRFWDggPSAweDhENDhcbnZhciBHTF9ERVBUSF9TVEVOQ0lMJDEgPSAweDg0RjlcblxudmFyIEdMX1NSR0I4X0FMUEhBOF9FWFQgPSAweDhDNDNcblxudmFyIEdMX1JHQkEzMkZfRVhUID0gMHg4ODE0XG5cbnZhciBHTF9SR0JBMTZGX0VYVCA9IDB4ODgxQVxudmFyIEdMX1JHQjE2Rl9FWFQgPSAweDg4MUJcblxudmFyIEZPUk1BVF9TSVpFUyA9IFtdXG5cbkZPUk1BVF9TSVpFU1tHTF9SR0JBNCQxXSA9IDJcbkZPUk1BVF9TSVpFU1tHTF9SR0I1X0ExJDFdID0gMlxuRk9STUFUX1NJWkVTW0dMX1JHQjU2NSQxXSA9IDJcblxuRk9STUFUX1NJWkVTW0dMX0RFUFRIX0NPTVBPTkVOVDE2XSA9IDJcbkZPUk1BVF9TSVpFU1tHTF9TVEVOQ0lMX0lOREVYOF0gPSAxXG5GT1JNQVRfU0laRVNbR0xfREVQVEhfU1RFTkNJTCQxXSA9IDRcblxuRk9STUFUX1NJWkVTW0dMX1NSR0I4X0FMUEhBOF9FWFRdID0gNFxuRk9STUFUX1NJWkVTW0dMX1JHQkEzMkZfRVhUXSA9IDE2XG5GT1JNQVRfU0laRVNbR0xfUkdCQTE2Rl9FWFRdID0gOFxuRk9STUFUX1NJWkVTW0dMX1JHQjE2Rl9FWFRdID0gNlxuXG5mdW5jdGlvbiBnZXRSZW5kZXJidWZmZXJTaXplIChmb3JtYXQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgcmV0dXJuIEZPUk1BVF9TSVpFU1tmb3JtYXRdICogd2lkdGggKiBoZWlnaHRcbn1cblxudmFyIHdyYXBSZW5kZXJidWZmZXJzID0gZnVuY3Rpb24gKGdsLCBleHRlbnNpb25zLCBsaW1pdHMsIHN0YXRzLCBjb25maWcpIHtcbiAgdmFyIGZvcm1hdFR5cGVzID0ge1xuICAgICdyZ2JhNCc6IEdMX1JHQkE0JDEsXG4gICAgJ3JnYjU2NSc6IEdMX1JHQjU2NSQxLFxuICAgICdyZ2I1IGExJzogR0xfUkdCNV9BMSQxLFxuICAgICdkZXB0aCc6IEdMX0RFUFRIX0NPTVBPTkVOVDE2LFxuICAgICdzdGVuY2lsJzogR0xfU1RFTkNJTF9JTkRFWDgsXG4gICAgJ2RlcHRoIHN0ZW5jaWwnOiBHTF9ERVBUSF9TVEVOQ0lMJDFcbiAgfVxuXG4gIGlmIChleHRlbnNpb25zLmV4dF9zcmdiKSB7XG4gICAgZm9ybWF0VHlwZXNbJ3NyZ2JhJ10gPSBHTF9TUkdCOF9BTFBIQThfRVhUXG4gIH1cblxuICBpZiAoZXh0ZW5zaW9ucy5leHRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQpIHtcbiAgICBmb3JtYXRUeXBlc1sncmdiYTE2ZiddID0gR0xfUkdCQTE2Rl9FWFRcbiAgICBmb3JtYXRUeXBlc1sncmdiMTZmJ10gPSBHTF9SR0IxNkZfRVhUXG4gIH1cblxuICBpZiAoZXh0ZW5zaW9ucy53ZWJnbF9jb2xvcl9idWZmZXJfZmxvYXQpIHtcbiAgICBmb3JtYXRUeXBlc1sncmdiYTMyZiddID0gR0xfUkdCQTMyRl9FWFRcbiAgfVxuXG4gIHZhciBmb3JtYXRUeXBlc0ludmVydCA9IFtdXG4gIE9iamVjdC5rZXlzKGZvcm1hdFR5cGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsID0gZm9ybWF0VHlwZXNba2V5XVxuICAgIGZvcm1hdFR5cGVzSW52ZXJ0W3ZhbF0gPSBrZXlcbiAgfSlcblxuICB2YXIgcmVuZGVyYnVmZmVyQ291bnQgPSAwXG4gIHZhciByZW5kZXJidWZmZXJTZXQgPSB7fVxuXG4gIGZ1bmN0aW9uIFJFR0xSZW5kZXJidWZmZXIgKHJlbmRlcmJ1ZmZlcikge1xuICAgIHRoaXMuaWQgPSByZW5kZXJidWZmZXJDb3VudCsrXG4gICAgdGhpcy5yZWZDb3VudCA9IDFcblxuICAgIHRoaXMucmVuZGVyYnVmZmVyID0gcmVuZGVyYnVmZmVyXG5cbiAgICB0aGlzLmZvcm1hdCA9IEdMX1JHQkE0JDFcbiAgICB0aGlzLndpZHRoID0gMFxuICAgIHRoaXMuaGVpZ2h0ID0gMFxuXG4gICAgaWYgKGNvbmZpZy5wcm9maWxlKSB7XG4gICAgICB0aGlzLnN0YXRzID0geyBzaXplOiAwIH1cbiAgICB9XG4gIH1cblxuICBSRUdMUmVuZGVyYnVmZmVyLnByb3RvdHlwZS5kZWNSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKC0tdGhpcy5yZWZDb3VudCA8PSAwKSB7XG4gICAgICBkZXN0cm95KHRoaXMpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSAocmIpIHtcbiAgICB2YXIgaGFuZGxlID0gcmIucmVuZGVyYnVmZmVyXG4gICAgY2hlY2skMShoYW5kbGUsICdtdXN0IG5vdCBkb3VibGUgZGVzdHJveSByZW5kZXJidWZmZXInKVxuICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBudWxsKVxuICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihoYW5kbGUpXG4gICAgcmIucmVuZGVyYnVmZmVyID0gbnVsbFxuICAgIHJiLnJlZkNvdW50ID0gMFxuICAgIGRlbGV0ZSByZW5kZXJidWZmZXJTZXRbcmIuaWRdXG4gICAgc3RhdHMucmVuZGVyYnVmZmVyQ291bnQtLVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUmVuZGVyYnVmZmVyIChhLCBiKSB7XG4gICAgdmFyIHJlbmRlcmJ1ZmZlciA9IG5ldyBSRUdMUmVuZGVyYnVmZmVyKGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKVxuICAgIHJlbmRlcmJ1ZmZlclNldFtyZW5kZXJidWZmZXIuaWRdID0gcmVuZGVyYnVmZmVyXG4gICAgc3RhdHMucmVuZGVyYnVmZmVyQ291bnQrK1xuXG4gICAgZnVuY3Rpb24gcmVnbFJlbmRlcmJ1ZmZlciAoYSwgYikge1xuICAgICAgdmFyIHcgPSAwXG4gICAgICB2YXIgaCA9IDBcbiAgICAgIHZhciBmb3JtYXQgPSBHTF9SR0JBNCQxXG5cbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcgJiYgYSkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IGFcbiAgICAgICAgaWYgKCdzaGFwZScgaW4gb3B0aW9ucykge1xuICAgICAgICAgIHZhciBzaGFwZSA9IG9wdGlvbnMuc2hhcGVcbiAgICAgICAgICBjaGVjayQxKEFycmF5LmlzQXJyYXkoc2hhcGUpICYmIHNoYXBlLmxlbmd0aCA+PSAyLFxuICAgICAgICAgICAgJ2ludmFsaWQgcmVuZGVyYnVmZmVyIHNoYXBlJylcbiAgICAgICAgICB3ID0gc2hhcGVbMF0gfCAwXG4gICAgICAgICAgaCA9IHNoYXBlWzFdIHwgMFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgncmFkaXVzJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICB3ID0gaCA9IG9wdGlvbnMucmFkaXVzIHwgMFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ3dpZHRoJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICB3ID0gb3B0aW9ucy53aWR0aCB8IDBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCdoZWlnaHQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGggPSBvcHRpb25zLmhlaWdodCB8IDBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdmb3JtYXQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBjaGVjayQxLnBhcmFtZXRlcihvcHRpb25zLmZvcm1hdCwgZm9ybWF0VHlwZXMsXG4gICAgICAgICAgICAnaW52YWxpZCByZW5kZXJidWZmZXIgZm9ybWF0JylcbiAgICAgICAgICBmb3JtYXQgPSBmb3JtYXRUeXBlc1tvcHRpb25zLmZvcm1hdF1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdyA9IGEgfCAwXG4gICAgICAgIGlmICh0eXBlb2YgYiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBoID0gYiB8IDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoID0gd1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFhKSB7XG4gICAgICAgIHcgPSBoID0gMVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2skMS5yYWlzZSgnaW52YWxpZCBhcmd1bWVudHMgdG8gcmVuZGVyYnVmZmVyIGNvbnN0cnVjdG9yJylcbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgc2hhcGVcbiAgICAgIGNoZWNrJDEoXG4gICAgICAgIHcgPiAwICYmIGggPiAwICYmXG4gICAgICAgIHcgPD0gbGltaXRzLm1heFJlbmRlcmJ1ZmZlclNpemUgJiYgaCA8PSBsaW1pdHMubWF4UmVuZGVyYnVmZmVyU2l6ZSxcbiAgICAgICAgJ2ludmFsaWQgcmVuZGVyYnVmZmVyIHNpemUnKVxuXG4gICAgICBpZiAodyA9PT0gcmVuZGVyYnVmZmVyLndpZHRoICYmXG4gICAgICAgICAgaCA9PT0gcmVuZGVyYnVmZmVyLmhlaWdodCAmJlxuICAgICAgICAgIGZvcm1hdCA9PT0gcmVuZGVyYnVmZmVyLmZvcm1hdCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmVnbFJlbmRlcmJ1ZmZlci53aWR0aCA9IHJlbmRlcmJ1ZmZlci53aWR0aCA9IHdcbiAgICAgIHJlZ2xSZW5kZXJidWZmZXIuaGVpZ2h0ID0gcmVuZGVyYnVmZmVyLmhlaWdodCA9IGhcbiAgICAgIHJlbmRlcmJ1ZmZlci5mb3JtYXQgPSBmb3JtYXRcblxuICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlci5yZW5kZXJidWZmZXIpXG4gICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgZm9ybWF0LCB3LCBoKVxuXG4gICAgICBjaGVjayQxKFxuICAgICAgICBnbC5nZXRFcnJvcigpID09PSAwLFxuICAgICAgICAnaW52YWxpZCByZW5kZXIgYnVmZmVyIGZvcm1hdCcpXG5cbiAgICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgICByZW5kZXJidWZmZXIuc3RhdHMuc2l6ZSA9IGdldFJlbmRlcmJ1ZmZlclNpemUocmVuZGVyYnVmZmVyLmZvcm1hdCwgcmVuZGVyYnVmZmVyLndpZHRoLCByZW5kZXJidWZmZXIuaGVpZ2h0KVxuICAgICAgfVxuICAgICAgcmVnbFJlbmRlcmJ1ZmZlci5mb3JtYXQgPSBmb3JtYXRUeXBlc0ludmVydFtyZW5kZXJidWZmZXIuZm9ybWF0XVxuXG4gICAgICByZXR1cm4gcmVnbFJlbmRlcmJ1ZmZlclxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2l6ZSAod18sIGhfKSB7XG4gICAgICB2YXIgdyA9IHdfIHwgMFxuICAgICAgdmFyIGggPSAoaF8gfCAwKSB8fCB3XG5cbiAgICAgIGlmICh3ID09PSByZW5kZXJidWZmZXIud2lkdGggJiYgaCA9PT0gcmVuZGVyYnVmZmVyLmhlaWdodCkge1xuICAgICAgICByZXR1cm4gcmVnbFJlbmRlcmJ1ZmZlclxuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayBzaGFwZVxuICAgICAgY2hlY2skMShcbiAgICAgICAgdyA+IDAgJiYgaCA+IDAgJiZcbiAgICAgICAgdyA8PSBsaW1pdHMubWF4UmVuZGVyYnVmZmVyU2l6ZSAmJiBoIDw9IGxpbWl0cy5tYXhSZW5kZXJidWZmZXJTaXplLFxuICAgICAgICAnaW52YWxpZCByZW5kZXJidWZmZXIgc2l6ZScpXG5cbiAgICAgIHJlZ2xSZW5kZXJidWZmZXIud2lkdGggPSByZW5kZXJidWZmZXIud2lkdGggPSB3XG4gICAgICByZWdsUmVuZGVyYnVmZmVyLmhlaWdodCA9IHJlbmRlcmJ1ZmZlci5oZWlnaHQgPSBoXG5cbiAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIucmVuZGVyYnVmZmVyKVxuICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlci5mb3JtYXQsIHcsIGgpXG5cbiAgICAgIGNoZWNrJDEoXG4gICAgICAgIGdsLmdldEVycm9yKCkgPT09IDAsXG4gICAgICAgICdpbnZhbGlkIHJlbmRlciBidWZmZXIgZm9ybWF0JylcblxuICAgICAgLy8gYWxzbywgcmVjb21wdXRlIHNpemUuXG4gICAgICBpZiAoY29uZmlnLnByb2ZpbGUpIHtcbiAgICAgICAgcmVuZGVyYnVmZmVyLnN0YXRzLnNpemUgPSBnZXRSZW5kZXJidWZmZXJTaXplKFxuICAgICAgICAgIHJlbmRlcmJ1ZmZlci5mb3JtYXQsIHJlbmRlcmJ1ZmZlci53aWR0aCwgcmVuZGVyYnVmZmVyLmhlaWdodClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlZ2xSZW5kZXJidWZmZXJcbiAgICB9XG5cbiAgICByZWdsUmVuZGVyYnVmZmVyKGEsIGIpXG5cbiAgICByZWdsUmVuZGVyYnVmZmVyLnJlc2l6ZSA9IHJlc2l6ZVxuICAgIHJlZ2xSZW5kZXJidWZmZXIuX3JlZ2xUeXBlID0gJ3JlbmRlcmJ1ZmZlcidcbiAgICByZWdsUmVuZGVyYnVmZmVyLl9yZW5kZXJidWZmZXIgPSByZW5kZXJidWZmZXJcbiAgICBpZiAoY29uZmlnLnByb2ZpbGUpIHtcbiAgICAgIHJlZ2xSZW5kZXJidWZmZXIuc3RhdHMgPSByZW5kZXJidWZmZXIuc3RhdHNcbiAgICB9XG4gICAgcmVnbFJlbmRlcmJ1ZmZlci5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmVuZGVyYnVmZmVyLmRlY1JlZigpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZ2xSZW5kZXJidWZmZXJcbiAgfVxuXG4gIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgIHN0YXRzLmdldFRvdGFsUmVuZGVyYnVmZmVyU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0b3RhbCA9IDBcbiAgICAgIE9iamVjdC5rZXlzKHJlbmRlcmJ1ZmZlclNldCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHRvdGFsICs9IHJlbmRlcmJ1ZmZlclNldFtrZXldLnN0YXRzLnNpemVcbiAgICAgIH0pXG4gICAgICByZXR1cm4gdG90YWxcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXN0b3JlUmVuZGVyYnVmZmVycyAoKSB7XG4gICAgdmFsdWVzKHJlbmRlcmJ1ZmZlclNldCkuZm9yRWFjaChmdW5jdGlvbiAocmIpIHtcbiAgICAgIHJiLnJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpXG4gICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmIucmVuZGVyYnVmZmVyKVxuICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIHJiLmZvcm1hdCwgcmIud2lkdGgsIHJiLmhlaWdodClcbiAgICB9KVxuICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBudWxsKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGU6IGNyZWF0ZVJlbmRlcmJ1ZmZlcixcbiAgICBjbGVhcjogZnVuY3Rpb24gKCkge1xuICAgICAgdmFsdWVzKHJlbmRlcmJ1ZmZlclNldCkuZm9yRWFjaChkZXN0cm95KVxuICAgIH0sXG4gICAgcmVzdG9yZTogcmVzdG9yZVJlbmRlcmJ1ZmZlcnNcbiAgfVxufVxuXG4vLyBXZSBzdG9yZSB0aGVzZSBjb25zdGFudHMgc28gdGhhdCB0aGUgbWluaWZpZXIgY2FuIGlubGluZSB0aGVtXG52YXIgR0xfRlJBTUVCVUZGRVIkMSA9IDB4OEQ0MFxudmFyIEdMX1JFTkRFUkJVRkZFUiQxID0gMHg4RDQxXG5cbnZhciBHTF9URVhUVVJFXzJEJDIgPSAweDBERTFcbnZhciBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gkMiA9IDB4ODUxNVxuXG52YXIgR0xfQ09MT1JfQVRUQUNITUVOVDAkMSA9IDB4OENFMFxudmFyIEdMX0RFUFRIX0FUVEFDSE1FTlQgPSAweDhEMDBcbnZhciBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDhEMjBcbnZhciBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDgyMUFcblxudmFyIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFJDEgPSAweDhDRDVcbnZhciBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgPSAweDhDRDZcbnZhciBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCA9IDB4OENEN1xudmFyIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyA9IDB4OENEOVxudmFyIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEID0gMHg4Q0REXG5cbnZhciBHTF9IQUxGX0ZMT0FUX09FUyQyID0gMHg4RDYxXG52YXIgR0xfVU5TSUdORURfQllURSQ2ID0gMHgxNDAxXG52YXIgR0xfRkxPQVQkNSA9IDB4MTQwNlxuXG52YXIgR0xfUkdCJDEgPSAweDE5MDdcbnZhciBHTF9SR0JBJDIgPSAweDE5MDhcblxudmFyIEdMX0RFUFRIX0NPTVBPTkVOVCQxID0gMHgxOTAyXG5cbnZhciBjb2xvclRleHR1cmVGb3JtYXRFbnVtcyA9IFtcbiAgR0xfUkdCJDEsXG4gIEdMX1JHQkEkMlxuXVxuXG4vLyBmb3IgZXZlcnkgdGV4dHVyZSBmb3JtYXQsIHN0b3JlXG4vLyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzXG52YXIgdGV4dHVyZUZvcm1hdENoYW5uZWxzID0gW11cbnRleHR1cmVGb3JtYXRDaGFubmVsc1tHTF9SR0JBJDJdID0gNFxudGV4dHVyZUZvcm1hdENoYW5uZWxzW0dMX1JHQiQxXSA9IDNcblxuLy8gZm9yIGV2ZXJ5IHRleHR1cmUgdHlwZSwgc3RvcmVcbi8vIHRoZSBzaXplIGluIGJ5dGVzLlxudmFyIHRleHR1cmVUeXBlU2l6ZXMgPSBbXVxudGV4dHVyZVR5cGVTaXplc1tHTF9VTlNJR05FRF9CWVRFJDZdID0gMVxudGV4dHVyZVR5cGVTaXplc1tHTF9GTE9BVCQ1XSA9IDRcbnRleHR1cmVUeXBlU2l6ZXNbR0xfSEFMRl9GTE9BVF9PRVMkMl0gPSAyXG5cbnZhciBHTF9SR0JBNCQyID0gMHg4MDU2XG52YXIgR0xfUkdCNV9BMSQyID0gMHg4MDU3XG52YXIgR0xfUkdCNTY1JDIgPSAweDhENjJcbnZhciBHTF9ERVBUSF9DT01QT05FTlQxNiQxID0gMHg4MUE1XG52YXIgR0xfU1RFTkNJTF9JTkRFWDgkMSA9IDB4OEQ0OFxudmFyIEdMX0RFUFRIX1NURU5DSUwkMiA9IDB4ODRGOVxuXG52YXIgR0xfU1JHQjhfQUxQSEE4X0VYVCQxID0gMHg4QzQzXG5cbnZhciBHTF9SR0JBMzJGX0VYVCQxID0gMHg4ODE0XG5cbnZhciBHTF9SR0JBMTZGX0VYVCQxID0gMHg4ODFBXG52YXIgR0xfUkdCMTZGX0VYVCQxID0gMHg4ODFCXG5cbnZhciBjb2xvclJlbmRlcmJ1ZmZlckZvcm1hdEVudW1zID0gW1xuICBHTF9SR0JBNCQyLFxuICBHTF9SR0I1X0ExJDIsXG4gIEdMX1JHQjU2NSQyLFxuICBHTF9TUkdCOF9BTFBIQThfRVhUJDEsXG4gIEdMX1JHQkExNkZfRVhUJDEsXG4gIEdMX1JHQjE2Rl9FWFQkMSxcbiAgR0xfUkdCQTMyRl9FWFQkMVxuXVxuXG52YXIgc3RhdHVzQ29kZSA9IHt9XG5zdGF0dXNDb2RlW0dMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFJDFdID0gJ2NvbXBsZXRlJ1xuc3RhdHVzQ29kZVtHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRdID0gJ2luY29tcGxldGUgYXR0YWNobWVudCdcbnN0YXR1c0NvZGVbR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXSA9ICdpbmNvbXBsZXRlIGRpbWVuc2lvbnMnXG5zdGF0dXNDb2RlW0dMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXSA9ICdpbmNvbXBsZXRlLCBtaXNzaW5nIGF0dGFjaG1lbnQnXG5zdGF0dXNDb2RlW0dMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXSA9ICd1bnN1cHBvcnRlZCdcblxuZnVuY3Rpb24gd3JhcEZCT1N0YXRlIChcbiAgZ2wsXG4gIGV4dGVuc2lvbnMsXG4gIGxpbWl0cyxcbiAgdGV4dHVyZVN0YXRlLFxuICByZW5kZXJidWZmZXJTdGF0ZSxcbiAgc3RhdHMpIHtcbiAgdmFyIGZyYW1lYnVmZmVyU3RhdGUgPSB7XG4gICAgY3VyOiBudWxsLFxuICAgIG5leHQ6IG51bGwsXG4gICAgZGlydHk6IGZhbHNlLFxuICAgIHNldEZCTzogbnVsbFxuICB9XG5cbiAgdmFyIGNvbG9yVGV4dHVyZUZvcm1hdHMgPSBbJ3JnYmEnXVxuICB2YXIgY29sb3JSZW5kZXJidWZmZXJGb3JtYXRzID0gWydyZ2JhNCcsICdyZ2I1NjUnLCAncmdiNSBhMSddXG5cbiAgaWYgKGV4dGVuc2lvbnMuZXh0X3NyZ2IpIHtcbiAgICBjb2xvclJlbmRlcmJ1ZmZlckZvcm1hdHMucHVzaCgnc3JnYmEnKVxuICB9XG5cbiAgaWYgKGV4dGVuc2lvbnMuZXh0X2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0KSB7XG4gICAgY29sb3JSZW5kZXJidWZmZXJGb3JtYXRzLnB1c2goJ3JnYmExNmYnLCAncmdiMTZmJylcbiAgfVxuXG4gIGlmIChleHRlbnNpb25zLndlYmdsX2NvbG9yX2J1ZmZlcl9mbG9hdCkge1xuICAgIGNvbG9yUmVuZGVyYnVmZmVyRm9ybWF0cy5wdXNoKCdyZ2JhMzJmJylcbiAgfVxuXG4gIHZhciBjb2xvclR5cGVzID0gWyd1aW50OCddXG4gIGlmIChleHRlbnNpb25zLm9lc190ZXh0dXJlX2hhbGZfZmxvYXQpIHtcbiAgICBjb2xvclR5cGVzLnB1c2goJ2hhbGYgZmxvYXQnLCAnZmxvYXQxNicpXG4gIH1cbiAgaWYgKGV4dGVuc2lvbnMub2VzX3RleHR1cmVfZmxvYXQpIHtcbiAgICBjb2xvclR5cGVzLnB1c2goJ2Zsb2F0JywgJ2Zsb2F0MzInKVxuICB9XG5cbiAgZnVuY3Rpb24gRnJhbWVidWZmZXJBdHRhY2htZW50ICh0YXJnZXQsIHRleHR1cmUsIHJlbmRlcmJ1ZmZlcikge1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0XG4gICAgdGhpcy50ZXh0dXJlID0gdGV4dHVyZVxuICAgIHRoaXMucmVuZGVyYnVmZmVyID0gcmVuZGVyYnVmZmVyXG5cbiAgICB2YXIgdyA9IDBcbiAgICB2YXIgaCA9IDBcbiAgICBpZiAodGV4dHVyZSkge1xuICAgICAgdyA9IHRleHR1cmUud2lkdGhcbiAgICAgIGggPSB0ZXh0dXJlLmhlaWdodFxuICAgIH0gZWxzZSBpZiAocmVuZGVyYnVmZmVyKSB7XG4gICAgICB3ID0gcmVuZGVyYnVmZmVyLndpZHRoXG4gICAgICBoID0gcmVuZGVyYnVmZmVyLmhlaWdodFxuICAgIH1cbiAgICB0aGlzLndpZHRoID0gd1xuICAgIHRoaXMuaGVpZ2h0ID0gaFxuICB9XG5cbiAgZnVuY3Rpb24gZGVjUmVmIChhdHRhY2htZW50KSB7XG4gICAgaWYgKGF0dGFjaG1lbnQpIHtcbiAgICAgIGlmIChhdHRhY2htZW50LnRleHR1cmUpIHtcbiAgICAgICAgYXR0YWNobWVudC50ZXh0dXJlLl90ZXh0dXJlLmRlY1JlZigpXG4gICAgICB9XG4gICAgICBpZiAoYXR0YWNobWVudC5yZW5kZXJidWZmZXIpIHtcbiAgICAgICAgYXR0YWNobWVudC5yZW5kZXJidWZmZXIuX3JlbmRlcmJ1ZmZlci5kZWNSZWYoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluY1JlZkFuZENoZWNrU2hhcGUgKGF0dGFjaG1lbnQsIHdpZHRoLCBoZWlnaHQpIHtcbiAgICBpZiAoIWF0dGFjaG1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudC50ZXh0dXJlKSB7XG4gICAgICB2YXIgdGV4dHVyZSA9IGF0dGFjaG1lbnQudGV4dHVyZS5fdGV4dHVyZVxuICAgICAgdmFyIHR3ID0gTWF0aC5tYXgoMSwgdGV4dHVyZS53aWR0aClcbiAgICAgIHZhciB0aCA9IE1hdGgubWF4KDEsIHRleHR1cmUuaGVpZ2h0KVxuICAgICAgY2hlY2skMSh0dyA9PT0gd2lkdGggJiYgdGggPT09IGhlaWdodCxcbiAgICAgICAgJ2luY29uc2lzdGVudCB3aWR0aC9oZWlnaHQgZm9yIHN1cHBsaWVkIHRleHR1cmUnKVxuICAgICAgdGV4dHVyZS5yZWZDb3VudCArPSAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZW5kZXJidWZmZXIgPSBhdHRhY2htZW50LnJlbmRlcmJ1ZmZlci5fcmVuZGVyYnVmZmVyXG4gICAgICBjaGVjayQxKFxuICAgICAgICByZW5kZXJidWZmZXIud2lkdGggPT09IHdpZHRoICYmIHJlbmRlcmJ1ZmZlci5oZWlnaHQgPT09IGhlaWdodCxcbiAgICAgICAgJ2luY29uc2lzdGVudCB3aWR0aC9oZWlnaHQgZm9yIHJlbmRlcmJ1ZmZlcicpXG4gICAgICByZW5kZXJidWZmZXIucmVmQ291bnQgKz0gMVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGF0dGFjaCAobG9jYXRpb24sIGF0dGFjaG1lbnQpIHtcbiAgICBpZiAoYXR0YWNobWVudCkge1xuICAgICAgaWYgKGF0dGFjaG1lbnQudGV4dHVyZSkge1xuICAgICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChcbiAgICAgICAgICBHTF9GUkFNRUJVRkZFUiQxLFxuICAgICAgICAgIGxvY2F0aW9uLFxuICAgICAgICAgIGF0dGFjaG1lbnQudGFyZ2V0LFxuICAgICAgICAgIGF0dGFjaG1lbnQudGV4dHVyZS5fdGV4dHVyZS50ZXh0dXJlLFxuICAgICAgICAgIDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihcbiAgICAgICAgICBHTF9GUkFNRUJVRkZFUiQxLFxuICAgICAgICAgIGxvY2F0aW9uLFxuICAgICAgICAgIEdMX1JFTkRFUkJVRkZFUiQxLFxuICAgICAgICAgIGF0dGFjaG1lbnQucmVuZGVyYnVmZmVyLl9yZW5kZXJidWZmZXIucmVuZGVyYnVmZmVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlQXR0YWNobWVudCAoYXR0YWNobWVudCkge1xuICAgIHZhciB0YXJnZXQgPSBHTF9URVhUVVJFXzJEJDJcbiAgICB2YXIgdGV4dHVyZSA9IG51bGxcbiAgICB2YXIgcmVuZGVyYnVmZmVyID0gbnVsbFxuXG4gICAgdmFyIGRhdGEgPSBhdHRhY2htZW50XG4gICAgaWYgKHR5cGVvZiBhdHRhY2htZW50ID09PSAnb2JqZWN0Jykge1xuICAgICAgZGF0YSA9IGF0dGFjaG1lbnQuZGF0YVxuICAgICAgaWYgKCd0YXJnZXQnIGluIGF0dGFjaG1lbnQpIHtcbiAgICAgICAgdGFyZ2V0ID0gYXR0YWNobWVudC50YXJnZXQgfCAwXG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2skMS50eXBlKGRhdGEsICdmdW5jdGlvbicsICdpbnZhbGlkIGF0dGFjaG1lbnQgZGF0YScpXG5cbiAgICB2YXIgdHlwZSA9IGRhdGEuX3JlZ2xUeXBlXG4gICAgaWYgKHR5cGUgPT09ICd0ZXh0dXJlMmQnKSB7XG4gICAgICB0ZXh0dXJlID0gZGF0YVxuICAgICAgY2hlY2skMSh0YXJnZXQgPT09IEdMX1RFWFRVUkVfMkQkMilcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0ZXh0dXJlQ3ViZScpIHtcbiAgICAgIHRleHR1cmUgPSBkYXRhXG4gICAgICBjaGVjayQxKFxuICAgICAgICB0YXJnZXQgPj0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJDIgJiZcbiAgICAgICAgdGFyZ2V0IDwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YJDIgKyA2LFxuICAgICAgICAnaW52YWxpZCBjdWJlIG1hcCB0YXJnZXQnKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JlbmRlcmJ1ZmZlcicpIHtcbiAgICAgIHJlbmRlcmJ1ZmZlciA9IGRhdGFcbiAgICAgIHRhcmdldCA9IEdMX1JFTkRFUkJVRkZFUiQxXG4gICAgfSBlbHNlIHtcbiAgICAgIGNoZWNrJDEucmFpc2UoJ2ludmFsaWQgcmVnbCBvYmplY3QgZm9yIGF0dGFjaG1lbnQnKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJBdHRhY2htZW50KHRhcmdldCwgdGV4dHVyZSwgcmVuZGVyYnVmZmVyKVxuICB9XG5cbiAgZnVuY3Rpb24gYWxsb2NBdHRhY2htZW50IChcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgaXNUZXh0dXJlLFxuICAgIGZvcm1hdCxcbiAgICB0eXBlKSB7XG4gICAgaWYgKGlzVGV4dHVyZSkge1xuICAgICAgdmFyIHRleHR1cmUgPSB0ZXh0dXJlU3RhdGUuY3JlYXRlMkQoe1xuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgdHlwZTogdHlwZVxuICAgICAgfSlcbiAgICAgIHRleHR1cmUuX3RleHR1cmUucmVmQ291bnQgPSAwXG4gICAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyQXR0YWNobWVudChHTF9URVhUVVJFXzJEJDIsIHRleHR1cmUsIG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByYiA9IHJlbmRlcmJ1ZmZlclN0YXRlLmNyZWF0ZSh7XG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGZvcm1hdDogZm9ybWF0XG4gICAgICB9KVxuICAgICAgcmIuX3JlbmRlcmJ1ZmZlci5yZWZDb3VudCA9IDBcbiAgICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJBdHRhY2htZW50KEdMX1JFTkRFUkJVRkZFUiQxLCBudWxsLCByYilcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1bndyYXBBdHRhY2htZW50IChhdHRhY2htZW50KSB7XG4gICAgcmV0dXJuIGF0dGFjaG1lbnQgJiYgKGF0dGFjaG1lbnQudGV4dHVyZSB8fCBhdHRhY2htZW50LnJlbmRlcmJ1ZmZlcilcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2l6ZUF0dGFjaG1lbnQgKGF0dGFjaG1lbnQsIHcsIGgpIHtcbiAgICBpZiAoYXR0YWNobWVudCkge1xuICAgICAgaWYgKGF0dGFjaG1lbnQudGV4dHVyZSkge1xuICAgICAgICBhdHRhY2htZW50LnRleHR1cmUucmVzaXplKHcsIGgpXG4gICAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQucmVuZGVyYnVmZmVyKSB7XG4gICAgICAgIGF0dGFjaG1lbnQucmVuZGVyYnVmZmVyLnJlc2l6ZSh3LCBoKVxuICAgICAgfVxuICAgICAgYXR0YWNobWVudC53aWR0aCA9IHdcbiAgICAgIGF0dGFjaG1lbnQuaGVpZ2h0ID0gaFxuICAgIH1cbiAgfVxuXG4gIHZhciBmcmFtZWJ1ZmZlckNvdW50ID0gMFxuICB2YXIgZnJhbWVidWZmZXJTZXQgPSB7fVxuXG4gIGZ1bmN0aW9uIFJFR0xGcmFtZWJ1ZmZlciAoKSB7XG4gICAgdGhpcy5pZCA9IGZyYW1lYnVmZmVyQ291bnQrK1xuICAgIGZyYW1lYnVmZmVyU2V0W3RoaXMuaWRdID0gdGhpc1xuXG4gICAgdGhpcy5mcmFtZWJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKClcbiAgICB0aGlzLndpZHRoID0gMFxuICAgIHRoaXMuaGVpZ2h0ID0gMFxuXG4gICAgdGhpcy5jb2xvckF0dGFjaG1lbnRzID0gW11cbiAgICB0aGlzLmRlcHRoQXR0YWNobWVudCA9IG51bGxcbiAgICB0aGlzLnN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbFxuICAgIHRoaXMuZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlY0ZCT1JlZnMgKGZyYW1lYnVmZmVyKSB7XG4gICAgZnJhbWVidWZmZXIuY29sb3JBdHRhY2htZW50cy5mb3JFYWNoKGRlY1JlZilcbiAgICBkZWNSZWYoZnJhbWVidWZmZXIuZGVwdGhBdHRhY2htZW50KVxuICAgIGRlY1JlZihmcmFtZWJ1ZmZlci5zdGVuY2lsQXR0YWNobWVudClcbiAgICBkZWNSZWYoZnJhbWVidWZmZXIuZGVwdGhTdGVuY2lsQXR0YWNobWVudClcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3kgKGZyYW1lYnVmZmVyKSB7XG4gICAgdmFyIGhhbmRsZSA9IGZyYW1lYnVmZmVyLmZyYW1lYnVmZmVyXG4gICAgY2hlY2skMShoYW5kbGUsICdtdXN0IG5vdCBkb3VibGUgZGVzdHJveSBmcmFtZWJ1ZmZlcicpXG4gICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIoaGFuZGxlKVxuICAgIGZyYW1lYnVmZmVyLmZyYW1lYnVmZmVyID0gbnVsbFxuICAgIHN0YXRzLmZyYW1lYnVmZmVyQ291bnQtLVxuICAgIGRlbGV0ZSBmcmFtZWJ1ZmZlclNldFtmcmFtZWJ1ZmZlci5pZF1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUZyYW1lYnVmZmVyIChmcmFtZWJ1ZmZlcikge1xuICAgIHZhciBpXG5cbiAgICBnbC5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIkMSwgZnJhbWVidWZmZXIuZnJhbWVidWZmZXIpXG4gICAgdmFyIGNvbG9yQXR0YWNobWVudHMgPSBmcmFtZWJ1ZmZlci5jb2xvckF0dGFjaG1lbnRzXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbG9yQXR0YWNobWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGF0dGFjaChHTF9DT0xPUl9BVFRBQ0hNRU5UMCQxICsgaSwgY29sb3JBdHRhY2htZW50c1tpXSlcbiAgICB9XG4gICAgZm9yIChpID0gY29sb3JBdHRhY2htZW50cy5sZW5ndGg7IGkgPCBsaW1pdHMubWF4Q29sb3JBdHRhY2htZW50czsgKytpKSB7XG4gICAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChcbiAgICAgICAgR0xfRlJBTUVCVUZGRVIkMSxcbiAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDAkMSArIGksXG4gICAgICAgIEdMX1RFWFRVUkVfMkQkMixcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMClcbiAgICB9XG5cbiAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChcbiAgICAgIEdMX0ZSQU1FQlVGRkVSJDEsXG4gICAgICBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsXG4gICAgICBHTF9URVhUVVJFXzJEJDIsXG4gICAgICBudWxsLFxuICAgICAgMClcbiAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChcbiAgICAgIEdMX0ZSQU1FQlVGRkVSJDEsXG4gICAgICBHTF9ERVBUSF9BVFRBQ0hNRU5ULFxuICAgICAgR0xfVEVYVFVSRV8yRCQyLFxuICAgICAgbnVsbCxcbiAgICAgIDApXG4gICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoXG4gICAgICBHTF9GUkFNRUJVRkZFUiQxLFxuICAgICAgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULFxuICAgICAgR0xfVEVYVFVSRV8yRCQyLFxuICAgICAgbnVsbCxcbiAgICAgIDApXG5cbiAgICBhdHRhY2goR0xfREVQVEhfQVRUQUNITUVOVCwgZnJhbWVidWZmZXIuZGVwdGhBdHRhY2htZW50KVxuICAgIGF0dGFjaChHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGZyYW1lYnVmZmVyLnN0ZW5jaWxBdHRhY2htZW50KVxuICAgIGF0dGFjaChHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGZyYW1lYnVmZmVyLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpXG5cbiAgICAvLyBDaGVjayBzdGF0dXMgY29kZVxuICAgIHZhciBzdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSJDEpXG4gICAgaWYgKCFnbC5pc0NvbnRleHRMb3N0KCkgJiYgc3RhdHVzICE9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSQxKSB7XG4gICAgICBjaGVjayQxLnJhaXNlKCdmcmFtZWJ1ZmZlciBjb25maWd1cmF0aW9uIG5vdCBzdXBwb3J0ZWQsIHN0YXR1cyA9ICcgK1xuICAgICAgICBzdGF0dXNDb2RlW3N0YXR1c10pXG4gICAgfVxuXG4gICAgZ2wuYmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSJDEsIGZyYW1lYnVmZmVyU3RhdGUubmV4dCA/IGZyYW1lYnVmZmVyU3RhdGUubmV4dC5mcmFtZWJ1ZmZlciA6IG51bGwpXG4gICAgZnJhbWVidWZmZXJTdGF0ZS5jdXIgPSBmcmFtZWJ1ZmZlclN0YXRlLm5leHRcblxuICAgIC8vIEZJWE1FOiBDbGVhciBlcnJvciBjb2RlIGhlcmUuICBUaGlzIGlzIGEgd29yayBhcm91bmQgZm9yIGEgYnVnIGluXG4gICAgLy8gaGVhZGxlc3MtZ2xcbiAgICBnbC5nZXRFcnJvcigpXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVGQk8gKGEwLCBhMSkge1xuICAgIHZhciBmcmFtZWJ1ZmZlciA9IG5ldyBSRUdMRnJhbWVidWZmZXIoKVxuICAgIHN0YXRzLmZyYW1lYnVmZmVyQ291bnQrK1xuXG4gICAgZnVuY3Rpb24gcmVnbEZyYW1lYnVmZmVyIChhLCBiKSB7XG4gICAgICB2YXIgaVxuXG4gICAgICBjaGVjayQxKGZyYW1lYnVmZmVyU3RhdGUubmV4dCAhPT0gZnJhbWVidWZmZXIsXG4gICAgICAgICdjYW4gbm90IHVwZGF0ZSBmcmFtZWJ1ZmZlciB3aGljaCBpcyBjdXJyZW50bHkgaW4gdXNlJylcblxuICAgICAgdmFyIHdpZHRoID0gMFxuICAgICAgdmFyIGhlaWdodCA9IDBcblxuICAgICAgdmFyIG5lZWRzRGVwdGggPSB0cnVlXG4gICAgICB2YXIgbmVlZHNTdGVuY2lsID0gdHJ1ZVxuXG4gICAgICB2YXIgY29sb3JCdWZmZXIgPSBudWxsXG4gICAgICB2YXIgY29sb3JUZXh0dXJlID0gdHJ1ZVxuICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gJ3JnYmEnXG4gICAgICB2YXIgY29sb3JUeXBlID0gJ3VpbnQ4J1xuICAgICAgdmFyIGNvbG9yQ291bnQgPSAxXG5cbiAgICAgIHZhciBkZXB0aEJ1ZmZlciA9IG51bGxcbiAgICAgIHZhciBzdGVuY2lsQnVmZmVyID0gbnVsbFxuICAgICAgdmFyIGRlcHRoU3RlbmNpbEJ1ZmZlciA9IG51bGxcbiAgICAgIHZhciBkZXB0aFN0ZW5jaWxUZXh0dXJlID0gZmFsc2VcblxuICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJykge1xuICAgICAgICB3aWR0aCA9IGEgfCAwXG4gICAgICAgIGhlaWdodCA9IChiIHwgMCkgfHwgd2lkdGhcbiAgICAgIH0gZWxzZSBpZiAoIWEpIHtcbiAgICAgICAgd2lkdGggPSBoZWlnaHQgPSAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGVjayQxLnR5cGUoYSwgJ29iamVjdCcsICdpbnZhbGlkIGFyZ3VtZW50cyBmb3IgZnJhbWVidWZmZXInKVxuICAgICAgICB2YXIgb3B0aW9ucyA9IGFcblxuICAgICAgICBpZiAoJ3NoYXBlJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgdmFyIHNoYXBlID0gb3B0aW9ucy5zaGFwZVxuICAgICAgICAgIGNoZWNrJDEoQXJyYXkuaXNBcnJheShzaGFwZSkgJiYgc2hhcGUubGVuZ3RoID49IDIsXG4gICAgICAgICAgICAnaW52YWxpZCBzaGFwZSBmb3IgZnJhbWVidWZmZXInKVxuICAgICAgICAgIHdpZHRoID0gc2hhcGVbMF1cbiAgICAgICAgICBoZWlnaHQgPSBzaGFwZVsxXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgncmFkaXVzJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9IG9wdGlvbnMucmFkaXVzXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgnd2lkdGgnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHdpZHRoID0gb3B0aW9ucy53aWR0aFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoJ2hlaWdodCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ2NvbG9yJyBpbiBvcHRpb25zIHx8XG4gICAgICAgICAgICAnY29sb3JzJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgY29sb3JCdWZmZXIgPVxuICAgICAgICAgICAgb3B0aW9ucy5jb2xvciB8fFxuICAgICAgICAgICAgb3B0aW9ucy5jb2xvcnNcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2xvckJ1ZmZlcikpIHtcbiAgICAgICAgICAgIGNoZWNrJDEoXG4gICAgICAgICAgICAgIGNvbG9yQnVmZmVyLmxlbmd0aCA9PT0gMSB8fCBleHRlbnNpb25zLndlYmdsX2RyYXdfYnVmZmVycyxcbiAgICAgICAgICAgICAgJ211bHRpcGxlIHJlbmRlciB0YXJnZXRzIG5vdCBzdXBwb3J0ZWQnKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY29sb3JCdWZmZXIpIHtcbiAgICAgICAgICBpZiAoJ2NvbG9yQ291bnQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbG9yQ291bnQgPSBvcHRpb25zLmNvbG9yQ291bnQgfCAwXG4gICAgICAgICAgICBjaGVjayQxKGNvbG9yQ291bnQgPiAwLCAnaW52YWxpZCBjb2xvciBidWZmZXIgY291bnQnKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICgnY29sb3JUZXh0dXJlJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb2xvclRleHR1cmUgPSAhIW9wdGlvbnMuY29sb3JUZXh0dXJlXG4gICAgICAgICAgICBjb2xvckZvcm1hdCA9ICdyZ2JhNCdcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoJ2NvbG9yVHlwZScgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgY29sb3JUeXBlID0gb3B0aW9ucy5jb2xvclR5cGVcbiAgICAgICAgICAgIGlmICghY29sb3JUZXh0dXJlKSB7XG4gICAgICAgICAgICAgIGlmIChjb2xvclR5cGUgPT09ICdoYWxmIGZsb2F0JyB8fCBjb2xvclR5cGUgPT09ICdmbG9hdDE2Jykge1xuICAgICAgICAgICAgICAgIGNoZWNrJDEoZXh0ZW5zaW9ucy5leHRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQsXG4gICAgICAgICAgICAgICAgICAneW91IG11c3QgZW5hYmxlIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCB0byB1c2UgMTYtYml0IHJlbmRlciBidWZmZXJzJylcbiAgICAgICAgICAgICAgICBjb2xvckZvcm1hdCA9ICdyZ2JhMTZmJ1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbG9yVHlwZSA9PT0gJ2Zsb2F0JyB8fCBjb2xvclR5cGUgPT09ICdmbG9hdDMyJykge1xuICAgICAgICAgICAgICAgIGNoZWNrJDEoZXh0ZW5zaW9ucy53ZWJnbF9jb2xvcl9idWZmZXJfZmxvYXQsXG4gICAgICAgICAgICAgICAgICAneW91IG11c3QgZW5hYmxlIFdFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCBpbiBvcmRlciB0byB1c2UgMzItYml0IGZsb2F0aW5nIHBvaW50IHJlbmRlcmJ1ZmZlcnMnKVxuICAgICAgICAgICAgICAgIGNvbG9yRm9ybWF0ID0gJ3JnYmEzMmYnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEoZXh0ZW5zaW9ucy5vZXNfdGV4dHVyZV9mbG9hdCB8fFxuICAgICAgICAgICAgICAgICEoY29sb3JUeXBlID09PSAnZmxvYXQnIHx8IGNvbG9yVHlwZSA9PT0gJ2Zsb2F0MzInKSxcbiAgICAgICAgICAgICAgJ3lvdSBtdXN0IGVuYWJsZSBPRVNfdGV4dHVyZV9mbG9hdCBpbiBvcmRlciB0byB1c2UgZmxvYXRpbmcgcG9pbnQgZnJhbWVidWZmZXIgb2JqZWN0cycpXG4gICAgICAgICAgICAgIGNoZWNrJDEoZXh0ZW5zaW9ucy5vZXNfdGV4dHVyZV9oYWxmX2Zsb2F0IHx8XG4gICAgICAgICAgICAgICAgIShjb2xvclR5cGUgPT09ICdoYWxmIGZsb2F0JyB8fCBjb2xvclR5cGUgPT09ICdmbG9hdDE2JyksXG4gICAgICAgICAgICAgICd5b3UgbXVzdCBlbmFibGUgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBpbiBvcmRlciB0byB1c2UgMTYtYml0IGZsb2F0aW5nIHBvaW50IGZyYW1lYnVmZmVyIG9iamVjdHMnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hlY2skMS5vbmVPZihjb2xvclR5cGUsIGNvbG9yVHlwZXMsICdpbnZhbGlkIGNvbG9yIHR5cGUnKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICgnY29sb3JGb3JtYXQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbG9yRm9ybWF0ID0gb3B0aW9ucy5jb2xvckZvcm1hdFxuICAgICAgICAgICAgaWYgKGNvbG9yVGV4dHVyZUZvcm1hdHMuaW5kZXhPZihjb2xvckZvcm1hdCkgPj0gMCkge1xuICAgICAgICAgICAgICBjb2xvclRleHR1cmUgPSB0cnVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbG9yUmVuZGVyYnVmZmVyRm9ybWF0cy5pbmRleE9mKGNvbG9yRm9ybWF0KSA+PSAwKSB7XG4gICAgICAgICAgICAgIGNvbG9yVGV4dHVyZSA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoY29sb3JUZXh0dXJlKSB7XG4gICAgICAgICAgICAgICAgY2hlY2skMS5vbmVPZihcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29sb3JGb3JtYXQsIGNvbG9yVGV4dHVyZUZvcm1hdHMsXG4gICAgICAgICAgICAgICAgICAnaW52YWxpZCBjb2xvciBmb3JtYXQgZm9yIHRleHR1cmUnKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoZWNrJDEub25lT2YoXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbG9yRm9ybWF0LCBjb2xvclJlbmRlcmJ1ZmZlckZvcm1hdHMsXG4gICAgICAgICAgICAgICAgICAnaW52YWxpZCBjb2xvciBmb3JtYXQgZm9yIHJlbmRlcmJ1ZmZlcicpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ2RlcHRoVGV4dHVyZScgaW4gb3B0aW9ucyB8fCAnZGVwdGhTdGVuY2lsVGV4dHVyZScgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmUgPSAhIShvcHRpb25zLmRlcHRoVGV4dHVyZSB8fFxuICAgICAgICAgICAgb3B0aW9ucy5kZXB0aFN0ZW5jaWxUZXh0dXJlKVxuICAgICAgICAgIGNoZWNrJDEoIWRlcHRoU3RlbmNpbFRleHR1cmUgfHwgZXh0ZW5zaW9ucy53ZWJnbF9kZXB0aF90ZXh0dXJlLFxuICAgICAgICAgICAgJ3dlYmdsX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdkZXB0aCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXB0aCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBuZWVkc0RlcHRoID0gb3B0aW9ucy5kZXB0aFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXB0aEJ1ZmZlciA9IG9wdGlvbnMuZGVwdGhcbiAgICAgICAgICAgIG5lZWRzU3RlbmNpbCA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdzdGVuY2lsJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnN0ZW5jaWwgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgbmVlZHNTdGVuY2lsID0gb3B0aW9ucy5zdGVuY2lsXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0ZW5jaWxCdWZmZXIgPSBvcHRpb25zLnN0ZW5jaWxcbiAgICAgICAgICAgIG5lZWRzRGVwdGggPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnZGVwdGhTdGVuY2lsJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlcHRoU3RlbmNpbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBuZWVkc0RlcHRoID0gbmVlZHNTdGVuY2lsID0gb3B0aW9ucy5kZXB0aFN0ZW5jaWxcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVwdGhTdGVuY2lsQnVmZmVyID0gb3B0aW9ucy5kZXB0aFN0ZW5jaWxcbiAgICAgICAgICAgIG5lZWRzRGVwdGggPSBmYWxzZVxuICAgICAgICAgICAgbmVlZHNTdGVuY2lsID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcGFyc2UgYXR0YWNobWVudHNcbiAgICAgIHZhciBjb2xvckF0dGFjaG1lbnRzID0gbnVsbFxuICAgICAgdmFyIGRlcHRoQXR0YWNobWVudCA9IG51bGxcbiAgICAgIHZhciBzdGVuY2lsQXR0YWNobWVudCA9IG51bGxcbiAgICAgIHZhciBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbnVsbFxuXG4gICAgICAvLyBTZXQgdXAgY29sb3IgYXR0YWNobWVudHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yQnVmZmVyKSkge1xuICAgICAgICBjb2xvckF0dGFjaG1lbnRzID0gY29sb3JCdWZmZXIubWFwKHBhcnNlQXR0YWNobWVudClcbiAgICAgIH0gZWxzZSBpZiAoY29sb3JCdWZmZXIpIHtcbiAgICAgICAgY29sb3JBdHRhY2htZW50cyA9IFtwYXJzZUF0dGFjaG1lbnQoY29sb3JCdWZmZXIpXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sb3JBdHRhY2htZW50cyA9IG5ldyBBcnJheShjb2xvckNvdW50KVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29sb3JDb3VudDsgKytpKSB7XG4gICAgICAgICAgY29sb3JBdHRhY2htZW50c1tpXSA9IGFsbG9jQXR0YWNobWVudChcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgY29sb3JUZXh0dXJlLFxuICAgICAgICAgICAgY29sb3JGb3JtYXQsXG4gICAgICAgICAgICBjb2xvclR5cGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2hlY2skMShleHRlbnNpb25zLndlYmdsX2RyYXdfYnVmZmVycyB8fCBjb2xvckF0dGFjaG1lbnRzLmxlbmd0aCA8PSAxLFxuICAgICAgICAneW91IG11c3QgZW5hYmxlIHRoZSBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uIGluIG9yZGVyIHRvIHVzZSBtdWx0aXBsZSBjb2xvciBidWZmZXJzLicpXG4gICAgICBjaGVjayQxKGNvbG9yQXR0YWNobWVudHMubGVuZ3RoIDw9IGxpbWl0cy5tYXhDb2xvckF0dGFjaG1lbnRzLFxuICAgICAgICAndG9vIG1hbnkgY29sb3IgYXR0YWNobWVudHMsIG5vdCBzdXBwb3J0ZWQnKVxuXG4gICAgICB3aWR0aCA9IHdpZHRoIHx8IGNvbG9yQXR0YWNobWVudHNbMF0ud2lkdGhcbiAgICAgIGhlaWdodCA9IGhlaWdodCB8fCBjb2xvckF0dGFjaG1lbnRzWzBdLmhlaWdodFxuXG4gICAgICBpZiAoZGVwdGhCdWZmZXIpIHtcbiAgICAgICAgZGVwdGhBdHRhY2htZW50ID0gcGFyc2VBdHRhY2htZW50KGRlcHRoQnVmZmVyKVxuICAgICAgfSBlbHNlIGlmIChuZWVkc0RlcHRoICYmICFuZWVkc1N0ZW5jaWwpIHtcbiAgICAgICAgZGVwdGhBdHRhY2htZW50ID0gYWxsb2NBdHRhY2htZW50KFxuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlLFxuICAgICAgICAgICdkZXB0aCcsXG4gICAgICAgICAgJ3VpbnQzMicpXG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVuY2lsQnVmZmVyKSB7XG4gICAgICAgIHN0ZW5jaWxBdHRhY2htZW50ID0gcGFyc2VBdHRhY2htZW50KHN0ZW5jaWxCdWZmZXIpXG4gICAgICB9IGVsc2UgaWYgKG5lZWRzU3RlbmNpbCAmJiAhbmVlZHNEZXB0aCkge1xuICAgICAgICBzdGVuY2lsQXR0YWNobWVudCA9IGFsbG9jQXR0YWNobWVudChcbiAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgJ3N0ZW5jaWwnLFxuICAgICAgICAgICd1aW50OCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXB0aFN0ZW5jaWxCdWZmZXIpIHtcbiAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IHBhcnNlQXR0YWNobWVudChkZXB0aFN0ZW5jaWxCdWZmZXIpXG4gICAgICB9IGVsc2UgaWYgKCFkZXB0aEJ1ZmZlciAmJiAhc3RlbmNpbEJ1ZmZlciAmJiBuZWVkc1N0ZW5jaWwgJiYgbmVlZHNEZXB0aCkge1xuICAgICAgICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gYWxsb2NBdHRhY2htZW50KFxuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlLFxuICAgICAgICAgICdkZXB0aCBzdGVuY2lsJyxcbiAgICAgICAgICAnZGVwdGggc3RlbmNpbCcpXG4gICAgICB9XG5cbiAgICAgIGNoZWNrJDEoXG4gICAgICAgICghIWRlcHRoQnVmZmVyKSArICghIXN0ZW5jaWxCdWZmZXIpICsgKCEhZGVwdGhTdGVuY2lsQnVmZmVyKSA8PSAxLFxuICAgICAgICAnaW52YWxpZCBmcmFtZWJ1ZmZlciBjb25maWd1cmF0aW9uLCBjYW4gc3BlY2lmeSBleGFjdGx5IG9uZSBkZXB0aC9zdGVuY2lsIGF0dGFjaG1lbnQnKVxuXG4gICAgICB2YXIgY29tbW9uQ29sb3JBdHRhY2htZW50U2l6ZSA9IG51bGxcblxuICAgICAgZm9yIChpID0gMDsgaSA8IGNvbG9yQXR0YWNobWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaW5jUmVmQW5kQ2hlY2tTaGFwZShjb2xvckF0dGFjaG1lbnRzW2ldLCB3aWR0aCwgaGVpZ2h0KVxuICAgICAgICBjaGVjayQxKCFjb2xvckF0dGFjaG1lbnRzW2ldIHx8XG4gICAgICAgICAgKGNvbG9yQXR0YWNobWVudHNbaV0udGV4dHVyZSAmJlxuICAgICAgICAgICAgY29sb3JUZXh0dXJlRm9ybWF0RW51bXMuaW5kZXhPZihjb2xvckF0dGFjaG1lbnRzW2ldLnRleHR1cmUuX3RleHR1cmUuZm9ybWF0KSA+PSAwKSB8fFxuICAgICAgICAgIChjb2xvckF0dGFjaG1lbnRzW2ldLnJlbmRlcmJ1ZmZlciAmJlxuICAgICAgICAgICAgY29sb3JSZW5kZXJidWZmZXJGb3JtYXRFbnVtcy5pbmRleE9mKGNvbG9yQXR0YWNobWVudHNbaV0ucmVuZGVyYnVmZmVyLl9yZW5kZXJidWZmZXIuZm9ybWF0KSA+PSAwKSxcbiAgICAgICAgJ2ZyYW1lYnVmZmVyIGNvbG9yIGF0dGFjaG1lbnQgJyArIGkgKyAnIGlzIGludmFsaWQnKVxuXG4gICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnRzW2ldICYmIGNvbG9yQXR0YWNobWVudHNbaV0udGV4dHVyZSkge1xuICAgICAgICAgIHZhciBjb2xvckF0dGFjaG1lbnRTaXplID1cbiAgICAgICAgICAgICAgdGV4dHVyZUZvcm1hdENoYW5uZWxzW2NvbG9yQXR0YWNobWVudHNbaV0udGV4dHVyZS5fdGV4dHVyZS5mb3JtYXRdICpcbiAgICAgICAgICAgICAgdGV4dHVyZVR5cGVTaXplc1tjb2xvckF0dGFjaG1lbnRzW2ldLnRleHR1cmUuX3RleHR1cmUudHlwZV1cblxuICAgICAgICAgIGlmIChjb21tb25Db2xvckF0dGFjaG1lbnRTaXplID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb21tb25Db2xvckF0dGFjaG1lbnRTaXplID0gY29sb3JBdHRhY2htZW50U2l6ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBjb2xvciBhdHRhY2htZW50cyBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBiaXRwbGFuZXNcbiAgICAgICAgICAgIC8vICh0aGF0IGlzLCB0aGUgc2FtZSBudW1lciBvZiBiaXRzIHBlciBwaXhlbClcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIEdMRVMyLjAgc3RhbmRhcmQuIFNlZSB0aGUgYmVnaW5uaW5nIG9mIENoYXB0ZXIgNCBpbiB0aGF0IGRvY3VtZW50LlxuICAgICAgICAgICAgY2hlY2skMShjb21tb25Db2xvckF0dGFjaG1lbnRTaXplID09PSBjb2xvckF0dGFjaG1lbnRTaXplLFxuICAgICAgICAgICAgICAnYWxsIGNvbG9yIGF0dGFjaG1lbnRzIG11Y2ggaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwuJylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGluY1JlZkFuZENoZWNrU2hhcGUoZGVwdGhBdHRhY2htZW50LCB3aWR0aCwgaGVpZ2h0KVxuICAgICAgY2hlY2skMSghZGVwdGhBdHRhY2htZW50IHx8XG4gICAgICAgIChkZXB0aEF0dGFjaG1lbnQudGV4dHVyZSAmJlxuICAgICAgICAgIGRlcHRoQXR0YWNobWVudC50ZXh0dXJlLl90ZXh0dXJlLmZvcm1hdCA9PT0gR0xfREVQVEhfQ09NUE9ORU5UJDEpIHx8XG4gICAgICAgIChkZXB0aEF0dGFjaG1lbnQucmVuZGVyYnVmZmVyICYmXG4gICAgICAgICAgZGVwdGhBdHRhY2htZW50LnJlbmRlcmJ1ZmZlci5fcmVuZGVyYnVmZmVyLmZvcm1hdCA9PT0gR0xfREVQVEhfQ09NUE9ORU5UMTYkMSksXG4gICAgICAnaW52YWxpZCBkZXB0aCBhdHRhY2htZW50IGZvciBmcmFtZWJ1ZmZlciBvYmplY3QnKVxuICAgICAgaW5jUmVmQW5kQ2hlY2tTaGFwZShzdGVuY2lsQXR0YWNobWVudCwgd2lkdGgsIGhlaWdodClcbiAgICAgIGNoZWNrJDEoIXN0ZW5jaWxBdHRhY2htZW50IHx8XG4gICAgICAgIChzdGVuY2lsQXR0YWNobWVudC5yZW5kZXJidWZmZXIgJiZcbiAgICAgICAgICBzdGVuY2lsQXR0YWNobWVudC5yZW5kZXJidWZmZXIuX3JlbmRlcmJ1ZmZlci5mb3JtYXQgPT09IEdMX1NURU5DSUxfSU5ERVg4JDEpLFxuICAgICAgJ2ludmFsaWQgc3RlbmNpbCBhdHRhY2htZW50IGZvciBmcmFtZWJ1ZmZlciBvYmplY3QnKVxuICAgICAgaW5jUmVmQW5kQ2hlY2tTaGFwZShkZXB0aFN0ZW5jaWxBdHRhY2htZW50LCB3aWR0aCwgaGVpZ2h0KVxuICAgICAgY2hlY2skMSghZGVwdGhTdGVuY2lsQXR0YWNobWVudCB8fFxuICAgICAgICAoZGVwdGhTdGVuY2lsQXR0YWNobWVudC50ZXh0dXJlICYmXG4gICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudC50ZXh0dXJlLl90ZXh0dXJlLmZvcm1hdCA9PT0gR0xfREVQVEhfU1RFTkNJTCQyKSB8fFxuICAgICAgICAoZGVwdGhTdGVuY2lsQXR0YWNobWVudC5yZW5kZXJidWZmZXIgJiZcbiAgICAgICAgICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LnJlbmRlcmJ1ZmZlci5fcmVuZGVyYnVmZmVyLmZvcm1hdCA9PT0gR0xfREVQVEhfU1RFTkNJTCQyKSxcbiAgICAgICdpbnZhbGlkIGRlcHRoLXN0ZW5jaWwgYXR0YWNobWVudCBmb3IgZnJhbWVidWZmZXIgb2JqZWN0JylcblxuICAgICAgLy8gZGVjcmVtZW50IHJlZmVyZW5jZXNcbiAgICAgIGRlY0ZCT1JlZnMoZnJhbWVidWZmZXIpXG5cbiAgICAgIGZyYW1lYnVmZmVyLndpZHRoID0gd2lkdGhcbiAgICAgIGZyYW1lYnVmZmVyLmhlaWdodCA9IGhlaWdodFxuXG4gICAgICBmcmFtZWJ1ZmZlci5jb2xvckF0dGFjaG1lbnRzID0gY29sb3JBdHRhY2htZW50c1xuICAgICAgZnJhbWVidWZmZXIuZGVwdGhBdHRhY2htZW50ID0gZGVwdGhBdHRhY2htZW50XG4gICAgICBmcmFtZWJ1ZmZlci5zdGVuY2lsQXR0YWNobWVudCA9IHN0ZW5jaWxBdHRhY2htZW50XG4gICAgICBmcmFtZWJ1ZmZlci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gZGVwdGhTdGVuY2lsQXR0YWNobWVudFxuXG4gICAgICByZWdsRnJhbWVidWZmZXIuY29sb3IgPSBjb2xvckF0dGFjaG1lbnRzLm1hcCh1bndyYXBBdHRhY2htZW50KVxuICAgICAgcmVnbEZyYW1lYnVmZmVyLmRlcHRoID0gdW53cmFwQXR0YWNobWVudChkZXB0aEF0dGFjaG1lbnQpXG4gICAgICByZWdsRnJhbWVidWZmZXIuc3RlbmNpbCA9IHVud3JhcEF0dGFjaG1lbnQoc3RlbmNpbEF0dGFjaG1lbnQpXG4gICAgICByZWdsRnJhbWVidWZmZXIuZGVwdGhTdGVuY2lsID0gdW53cmFwQXR0YWNobWVudChkZXB0aFN0ZW5jaWxBdHRhY2htZW50KVxuXG4gICAgICByZWdsRnJhbWVidWZmZXIud2lkdGggPSBmcmFtZWJ1ZmZlci53aWR0aFxuICAgICAgcmVnbEZyYW1lYnVmZmVyLmhlaWdodCA9IGZyYW1lYnVmZmVyLmhlaWdodFxuXG4gICAgICB1cGRhdGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcilcblxuICAgICAgcmV0dXJuIHJlZ2xGcmFtZWJ1ZmZlclxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2l6ZSAod18sIGhfKSB7XG4gICAgICBjaGVjayQxKGZyYW1lYnVmZmVyU3RhdGUubmV4dCAhPT0gZnJhbWVidWZmZXIsXG4gICAgICAgICdjYW4gbm90IHJlc2l6ZSBhIGZyYW1lYnVmZmVyIHdoaWNoIGlzIGN1cnJlbnRseSBpbiB1c2UnKVxuXG4gICAgICB2YXIgdyA9IE1hdGgubWF4KHdfIHwgMCwgMSlcbiAgICAgIHZhciBoID0gTWF0aC5tYXgoKGhfIHwgMCkgfHwgdywgMSlcbiAgICAgIGlmICh3ID09PSBmcmFtZWJ1ZmZlci53aWR0aCAmJiBoID09PSBmcmFtZWJ1ZmZlci5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2xGcmFtZWJ1ZmZlclxuICAgICAgfVxuXG4gICAgICAvLyByZXNpemUgYWxsIGJ1ZmZlcnNcbiAgICAgIHZhciBjb2xvckF0dGFjaG1lbnRzID0gZnJhbWVidWZmZXIuY29sb3JBdHRhY2htZW50c1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xvckF0dGFjaG1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHJlc2l6ZUF0dGFjaG1lbnQoY29sb3JBdHRhY2htZW50c1tpXSwgdywgaClcbiAgICAgIH1cbiAgICAgIHJlc2l6ZUF0dGFjaG1lbnQoZnJhbWVidWZmZXIuZGVwdGhBdHRhY2htZW50LCB3LCBoKVxuICAgICAgcmVzaXplQXR0YWNobWVudChmcmFtZWJ1ZmZlci5zdGVuY2lsQXR0YWNobWVudCwgdywgaClcbiAgICAgIHJlc2l6ZUF0dGFjaG1lbnQoZnJhbWVidWZmZXIuZGVwdGhTdGVuY2lsQXR0YWNobWVudCwgdywgaClcblxuICAgICAgZnJhbWVidWZmZXIud2lkdGggPSByZWdsRnJhbWVidWZmZXIud2lkdGggPSB3XG4gICAgICBmcmFtZWJ1ZmZlci5oZWlnaHQgPSByZWdsRnJhbWVidWZmZXIuaGVpZ2h0ID0gaFxuXG4gICAgICB1cGRhdGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcilcblxuICAgICAgcmV0dXJuIHJlZ2xGcmFtZWJ1ZmZlclxuICAgIH1cblxuICAgIHJlZ2xGcmFtZWJ1ZmZlcihhMCwgYTEpXG5cbiAgICByZXR1cm4gZXh0ZW5kKHJlZ2xGcmFtZWJ1ZmZlciwge1xuICAgICAgcmVzaXplOiByZXNpemUsXG4gICAgICBfcmVnbFR5cGU6ICdmcmFtZWJ1ZmZlcicsXG4gICAgICBfZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gKCkge1xuICAgICAgICBkZXN0cm95KGZyYW1lYnVmZmVyKVxuICAgICAgICBkZWNGQk9SZWZzKGZyYW1lYnVmZmVyKVxuICAgICAgfSxcbiAgICAgIHVzZTogZnVuY3Rpb24gKGJsb2NrKSB7XG4gICAgICAgIGZyYW1lYnVmZmVyU3RhdGUuc2V0RkJPKHtcbiAgICAgICAgICBmcmFtZWJ1ZmZlcjogcmVnbEZyYW1lYnVmZmVyXG4gICAgICAgIH0sIGJsb2NrKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVDdWJlRkJPIChvcHRpb25zKSB7XG4gICAgdmFyIGZhY2VzID0gQXJyYXkoNilcblxuICAgIGZ1bmN0aW9uIHJlZ2xGcmFtZWJ1ZmZlckN1YmUgKGEpIHtcbiAgICAgIHZhciBpXG5cbiAgICAgIGNoZWNrJDEoZmFjZXMuaW5kZXhPZihmcmFtZWJ1ZmZlclN0YXRlLm5leHQpIDwgMCxcbiAgICAgICAgJ2NhbiBub3QgdXBkYXRlIGZyYW1lYnVmZmVyIHdoaWNoIGlzIGN1cnJlbnRseSBpbiB1c2UnKVxuXG4gICAgICB2YXIgcGFyYW1zID0ge1xuICAgICAgICBjb2xvcjogbnVsbFxuICAgICAgfVxuXG4gICAgICB2YXIgcmFkaXVzID0gMFxuXG4gICAgICB2YXIgY29sb3JCdWZmZXIgPSBudWxsXG4gICAgICB2YXIgY29sb3JGb3JtYXQgPSAncmdiYSdcbiAgICAgIHZhciBjb2xvclR5cGUgPSAndWludDgnXG4gICAgICB2YXIgY29sb3JDb3VudCA9IDFcblxuICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJykge1xuICAgICAgICByYWRpdXMgPSBhIHwgMFxuICAgICAgfSBlbHNlIGlmICghYSkge1xuICAgICAgICByYWRpdXMgPSAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGVjayQxLnR5cGUoYSwgJ29iamVjdCcsICdpbnZhbGlkIGFyZ3VtZW50cyBmb3IgZnJhbWVidWZmZXInKVxuICAgICAgICB2YXIgb3B0aW9ucyA9IGFcblxuICAgICAgICBpZiAoJ3NoYXBlJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgdmFyIHNoYXBlID0gb3B0aW9ucy5zaGFwZVxuICAgICAgICAgIGNoZWNrJDEoXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHNoYXBlKSAmJiBzaGFwZS5sZW5ndGggPj0gMixcbiAgICAgICAgICAgICdpbnZhbGlkIHNoYXBlIGZvciBmcmFtZWJ1ZmZlcicpXG4gICAgICAgICAgY2hlY2skMShcbiAgICAgICAgICAgIHNoYXBlWzBdID09PSBzaGFwZVsxXSxcbiAgICAgICAgICAgICdjdWJlIGZyYW1lYnVmZmVyIG11c3QgYmUgc3F1YXJlJylcbiAgICAgICAgICByYWRpdXMgPSBzaGFwZVswXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgncmFkaXVzJyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICByYWRpdXMgPSBvcHRpb25zLnJhZGl1cyB8IDBcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCd3aWR0aCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgcmFkaXVzID0gb3B0aW9ucy53aWR0aCB8IDBcbiAgICAgICAgICAgIGlmICgnaGVpZ2h0JyBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEob3B0aW9ucy5oZWlnaHQgPT09IHJhZGl1cywgJ211c3QgYmUgc3F1YXJlJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCdoZWlnaHQnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJhZGl1cyA9IG9wdGlvbnMuaGVpZ2h0IHwgMFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnY29sb3InIGluIG9wdGlvbnMgfHxcbiAgICAgICAgICAgICdjb2xvcnMnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBjb2xvckJ1ZmZlciA9XG4gICAgICAgICAgICBvcHRpb25zLmNvbG9yIHx8XG4gICAgICAgICAgICBvcHRpb25zLmNvbG9yc1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yQnVmZmVyKSkge1xuICAgICAgICAgICAgY2hlY2skMShcbiAgICAgICAgICAgICAgY29sb3JCdWZmZXIubGVuZ3RoID09PSAxIHx8IGV4dGVuc2lvbnMud2ViZ2xfZHJhd19idWZmZXJzLFxuICAgICAgICAgICAgICAnbXVsdGlwbGUgcmVuZGVyIHRhcmdldHMgbm90IHN1cHBvcnRlZCcpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjb2xvckJ1ZmZlcikge1xuICAgICAgICAgIGlmICgnY29sb3JDb3VudCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgY29sb3JDb3VudCA9IG9wdGlvbnMuY29sb3JDb3VudCB8IDBcbiAgICAgICAgICAgIGNoZWNrJDEoY29sb3JDb3VudCA+IDAsICdpbnZhbGlkIGNvbG9yIGJ1ZmZlciBjb3VudCcpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCdjb2xvclR5cGUnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNoZWNrJDEub25lT2YoXG4gICAgICAgICAgICAgIG9wdGlvbnMuY29sb3JUeXBlLCBjb2xvclR5cGVzLFxuICAgICAgICAgICAgICAnaW52YWxpZCBjb2xvciB0eXBlJylcbiAgICAgICAgICAgIGNvbG9yVHlwZSA9IG9wdGlvbnMuY29sb3JUeXBlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCdjb2xvckZvcm1hdCcgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgY29sb3JGb3JtYXQgPSBvcHRpb25zLmNvbG9yRm9ybWF0XG4gICAgICAgICAgICBjaGVjayQxLm9uZU9mKFxuICAgICAgICAgICAgICBvcHRpb25zLmNvbG9yRm9ybWF0LCBjb2xvclRleHR1cmVGb3JtYXRzLFxuICAgICAgICAgICAgICAnaW52YWxpZCBjb2xvciBmb3JtYXQgZm9yIHRleHR1cmUnKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgnZGVwdGgnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBwYXJhbXMuZGVwdGggPSBvcHRpb25zLmRlcHRoXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ3N0ZW5jaWwnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBwYXJhbXMuc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdkZXB0aFN0ZW5jaWwnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICBwYXJhbXMuZGVwdGhTdGVuY2lsID0gb3B0aW9ucy5kZXB0aFN0ZW5jaWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgY29sb3JDdWJlc1xuICAgICAgaWYgKGNvbG9yQnVmZmVyKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yQnVmZmVyKSkge1xuICAgICAgICAgIGNvbG9yQ3ViZXMgPSBbXVxuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb2xvckJ1ZmZlci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29sb3JDdWJlc1tpXSA9IGNvbG9yQnVmZmVyW2ldXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbG9yQ3ViZXMgPSBbIGNvbG9yQnVmZmVyIF1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sb3JDdWJlcyA9IEFycmF5KGNvbG9yQ291bnQpXG4gICAgICAgIHZhciBjdWJlTWFwUGFyYW1zID0ge1xuICAgICAgICAgIHJhZGl1czogcmFkaXVzLFxuICAgICAgICAgIGZvcm1hdDogY29sb3JGb3JtYXQsXG4gICAgICAgICAgdHlwZTogY29sb3JUeXBlXG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbG9yQ291bnQ7ICsraSkge1xuICAgICAgICAgIGNvbG9yQ3ViZXNbaV0gPSB0ZXh0dXJlU3RhdGUuY3JlYXRlQ3ViZShjdWJlTWFwUGFyYW1zKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGNvbG9yIGN1YmVzXG4gICAgICBwYXJhbXMuY29sb3IgPSBBcnJheShjb2xvckN1YmVzLmxlbmd0aClcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjb2xvckN1YmVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjdWJlID0gY29sb3JDdWJlc1tpXVxuICAgICAgICBjaGVjayQxKFxuICAgICAgICAgIHR5cGVvZiBjdWJlID09PSAnZnVuY3Rpb24nICYmIGN1YmUuX3JlZ2xUeXBlID09PSAndGV4dHVyZUN1YmUnLFxuICAgICAgICAgICdpbnZhbGlkIGN1YmUgbWFwJylcbiAgICAgICAgcmFkaXVzID0gcmFkaXVzIHx8IGN1YmUud2lkdGhcbiAgICAgICAgY2hlY2skMShcbiAgICAgICAgICBjdWJlLndpZHRoID09PSByYWRpdXMgJiYgY3ViZS5oZWlnaHQgPT09IHJhZGl1cyxcbiAgICAgICAgICAnaW52YWxpZCBjdWJlIG1hcCBzaGFwZScpXG4gICAgICAgIHBhcmFtcy5jb2xvcltpXSA9IHtcbiAgICAgICAgICB0YXJnZXQ6IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCQyLFxuICAgICAgICAgIGRhdGE6IGNvbG9yQ3ViZXNbaV1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29sb3JDdWJlcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgIHBhcmFtcy5jb2xvcltqXS50YXJnZXQgPSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gkMiArIGlcbiAgICAgICAgfVxuICAgICAgICAvLyByZXVzZSBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnRzIGFjcm9zcyBhbGwgY3ViZSBtYXBzXG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIHBhcmFtcy5kZXB0aCA9IGZhY2VzWzBdLmRlcHRoXG4gICAgICAgICAgcGFyYW1zLnN0ZW5jaWwgPSBmYWNlc1swXS5zdGVuY2lsXG4gICAgICAgICAgcGFyYW1zLmRlcHRoU3RlbmNpbCA9IGZhY2VzWzBdLmRlcHRoU3RlbmNpbFxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWNlc1tpXSkge1xuICAgICAgICAgIChmYWNlc1tpXSkocGFyYW1zKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhY2VzW2ldID0gY3JlYXRlRkJPKHBhcmFtcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXh0ZW5kKHJlZ2xGcmFtZWJ1ZmZlckN1YmUsIHtcbiAgICAgICAgd2lkdGg6IHJhZGl1cyxcbiAgICAgICAgaGVpZ2h0OiByYWRpdXMsXG4gICAgICAgIGNvbG9yOiBjb2xvckN1YmVzXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2l6ZSAocmFkaXVzXykge1xuICAgICAgdmFyIGlcbiAgICAgIHZhciByYWRpdXMgPSByYWRpdXNfIHwgMFxuICAgICAgY2hlY2skMShyYWRpdXMgPiAwICYmIHJhZGl1cyA8PSBsaW1pdHMubWF4Q3ViZU1hcFNpemUsXG4gICAgICAgICdpbnZhbGlkIHJhZGl1cyBmb3IgY3ViZSBmYm8nKVxuXG4gICAgICBpZiAocmFkaXVzID09PSByZWdsRnJhbWVidWZmZXJDdWJlLndpZHRoKSB7XG4gICAgICAgIHJldHVybiByZWdsRnJhbWVidWZmZXJDdWJlXG4gICAgICB9XG5cbiAgICAgIHZhciBjb2xvcnMgPSByZWdsRnJhbWVidWZmZXJDdWJlLmNvbG9yXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY29sb3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbG9yc1tpXS5yZXNpemUocmFkaXVzKVxuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgICAgIGZhY2VzW2ldLnJlc2l6ZShyYWRpdXMpXG4gICAgICB9XG5cbiAgICAgIHJlZ2xGcmFtZWJ1ZmZlckN1YmUud2lkdGggPSByZWdsRnJhbWVidWZmZXJDdWJlLmhlaWdodCA9IHJhZGl1c1xuXG4gICAgICByZXR1cm4gcmVnbEZyYW1lYnVmZmVyQ3ViZVxuICAgIH1cblxuICAgIHJlZ2xGcmFtZWJ1ZmZlckN1YmUob3B0aW9ucylcblxuICAgIHJldHVybiBleHRlbmQocmVnbEZyYW1lYnVmZmVyQ3ViZSwge1xuICAgICAgZmFjZXM6IGZhY2VzLFxuICAgICAgcmVzaXplOiByZXNpemUsXG4gICAgICBfcmVnbFR5cGU6ICdmcmFtZWJ1ZmZlckN1YmUnLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gKCkge1xuICAgICAgICBmYWNlcy5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgZi5kZXN0cm95KClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVzdG9yZUZyYW1lYnVmZmVycyAoKSB7XG4gICAgZnJhbWVidWZmZXJTdGF0ZS5jdXIgPSBudWxsXG4gICAgZnJhbWVidWZmZXJTdGF0ZS5uZXh0ID0gbnVsbFxuICAgIGZyYW1lYnVmZmVyU3RhdGUuZGlydHkgPSB0cnVlXG4gICAgdmFsdWVzKGZyYW1lYnVmZmVyU2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChmYikge1xuICAgICAgZmIuZnJhbWVidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpXG4gICAgICB1cGRhdGVGcmFtZWJ1ZmZlcihmYilcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGV4dGVuZChmcmFtZWJ1ZmZlclN0YXRlLCB7XG4gICAgZ2V0RnJhbWVidWZmZXI6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnZnVuY3Rpb24nICYmIG9iamVjdC5fcmVnbFR5cGUgPT09ICdmcmFtZWJ1ZmZlcicpIHtcbiAgICAgICAgdmFyIGZibyA9IG9iamVjdC5fZnJhbWVidWZmZXJcbiAgICAgICAgaWYgKGZibyBpbnN0YW5jZW9mIFJFR0xGcmFtZWJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBmYm9cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9LFxuICAgIGNyZWF0ZTogY3JlYXRlRkJPLFxuICAgIGNyZWF0ZUN1YmU6IGNyZWF0ZUN1YmVGQk8sXG4gICAgY2xlYXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhbHVlcyhmcmFtZWJ1ZmZlclNldCkuZm9yRWFjaChkZXN0cm95KVxuICAgIH0sXG4gICAgcmVzdG9yZTogcmVzdG9yZUZyYW1lYnVmZmVyc1xuICB9KVxufVxuXG52YXIgR0xfRkxPQVQkNiA9IDUxMjZcbnZhciBHTF9BUlJBWV9CVUZGRVIkMSA9IDM0OTYyXG5cbmZ1bmN0aW9uIEF0dHJpYnV0ZVJlY29yZCAoKSB7XG4gIHRoaXMuc3RhdGUgPSAwXG5cbiAgdGhpcy54ID0gMC4wXG4gIHRoaXMueSA9IDAuMFxuICB0aGlzLnogPSAwLjBcbiAgdGhpcy53ID0gMC4wXG5cbiAgdGhpcy5idWZmZXIgPSBudWxsXG4gIHRoaXMuc2l6ZSA9IDBcbiAgdGhpcy5ub3JtYWxpemVkID0gZmFsc2VcbiAgdGhpcy50eXBlID0gR0xfRkxPQVQkNlxuICB0aGlzLm9mZnNldCA9IDBcbiAgdGhpcy5zdHJpZGUgPSAwXG4gIHRoaXMuZGl2aXNvciA9IDBcbn1cblxuZnVuY3Rpb24gd3JhcEF0dHJpYnV0ZVN0YXRlIChcbiAgZ2wsXG4gIGV4dGVuc2lvbnMsXG4gIGxpbWl0cyxcbiAgc3RhdHMsXG4gIGJ1ZmZlclN0YXRlKSB7XG4gIHZhciBOVU1fQVRUUklCVVRFUyA9IGxpbWl0cy5tYXhBdHRyaWJ1dGVzXG4gIHZhciBhdHRyaWJ1dGVCaW5kaW5ncyA9IG5ldyBBcnJheShOVU1fQVRUUklCVVRFUylcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBOVU1fQVRUUklCVVRFUzsgKytpKSB7XG4gICAgYXR0cmlidXRlQmluZGluZ3NbaV0gPSBuZXcgQXR0cmlidXRlUmVjb3JkKClcbiAgfVxuICB2YXIgdmFvQ291bnQgPSAwXG4gIHZhciB2YW9TZXQgPSB7fVxuXG4gIHZhciBzdGF0ZSA9IHtcbiAgICBSZWNvcmQ6IEF0dHJpYnV0ZVJlY29yZCxcbiAgICBzY29wZToge30sXG4gICAgc3RhdGU6IGF0dHJpYnV0ZUJpbmRpbmdzLFxuICAgIGN1cnJlbnRWQU86IG51bGwsXG4gICAgdGFyZ2V0VkFPOiBudWxsLFxuICAgIHJlc3RvcmU6IGV4dFZBTygpID8gcmVzdG9yZVZBTyA6IGZ1bmN0aW9uICgpIHt9LFxuICAgIGNyZWF0ZVZBTzogY3JlYXRlVkFPLFxuICAgIGdldFZBTzogZ2V0VkFPLFxuICAgIGRlc3Ryb3lCdWZmZXI6IGRlc3Ryb3lCdWZmZXIsXG4gICAgc2V0VkFPOiBleHRWQU8oKSA/IHNldFZBT0VYVCA6IHNldFZBT0VtdWxhdGVkLFxuICAgIGNsZWFyOiBleHRWQU8oKSA/IGRlc3Ryb3lWQU9FWFQgOiBmdW5jdGlvbiAoKSB7fVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveUJ1ZmZlciAoYnVmZmVyKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVCaW5kaW5ncy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHJlY29yZCA9IGF0dHJpYnV0ZUJpbmRpbmdzW2ldXG4gICAgICBpZiAocmVjb3JkLmJ1ZmZlciA9PT0gYnVmZmVyKSB7XG4gICAgICAgIGdsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpKVxuICAgICAgICByZWNvcmQuYnVmZmVyID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dFZBTyAoKSB7XG4gICAgcmV0dXJuIGV4dGVuc2lvbnMub2VzX3ZlcnRleF9hcnJheV9vYmplY3RcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dEluc3RhbmNlZCAoKSB7XG4gICAgcmV0dXJuIGV4dGVuc2lvbnMuYW5nbGVfaW5zdGFuY2VkX2FycmF5c1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VkFPICh2YW8pIHtcbiAgICBpZiAodHlwZW9mIHZhbyA9PT0gJ2Z1bmN0aW9uJyAmJiB2YW8uX3Zhbykge1xuICAgICAgcmV0dXJuIHZhby5fdmFvXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmdW5jdGlvbiBzZXRWQU9FWFQgKHZhbykge1xuICAgIGlmICh2YW8gPT09IHN0YXRlLmN1cnJlbnRWQU8pIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB2YXIgZXh0ID0gZXh0VkFPKClcbiAgICBpZiAodmFvKSB7XG4gICAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHZhby52YW8pXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbClcbiAgICB9XG4gICAgc3RhdGUuY3VycmVudFZBTyA9IHZhb1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0VkFPRW11bGF0ZWQgKHZhbykge1xuICAgIGlmICh2YW8gPT09IHN0YXRlLmN1cnJlbnRWQU8pIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodmFvKSB7XG4gICAgICB2YW8uYmluZEF0dHJzKClcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGV4dGkgPSBleHRJbnN0YW5jZWQoKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVCaW5kaW5ncy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgYmluZGluZyA9IGF0dHJpYnV0ZUJpbmRpbmdzW2ldXG4gICAgICAgIGlmIChiaW5kaW5nLmJ1ZmZlcikge1xuICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpXG4gICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihpLCBiaW5kaW5nLnNpemUsIGJpbmRpbmcudHlwZSwgYmluZGluZy5ub3JtYWxpemVkLCBiaW5kaW5nLnN0cmlkZSwgYmluZGluZy5vZmZmc2V0KVxuICAgICAgICAgIGlmIChleHRpICYmIGJpbmRpbmcuZGl2aXNvcikge1xuICAgICAgICAgICAgZXh0aS52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaSwgYmluZGluZy5kaXZpc29yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaSlcbiAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWI0ZihpLCBiaW5kaW5nLngsIGJpbmRpbmcueSwgYmluZGluZy56LCBiaW5kaW5nLncpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgc3RhdGUuY3VycmVudFZBTyA9IHZhb1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveVZBT0VYVCAoKSB7XG4gICAgdmFsdWVzKHZhb1NldCkuZm9yRWFjaChmdW5jdGlvbiAodmFvKSB7XG4gICAgICB2YW8uZGVzdHJveSgpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIFJFR0xWQU8gKCkge1xuICAgIHRoaXMuaWQgPSArK3Zhb0NvdW50XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gW11cbiAgICB2YXIgZXh0ZW5zaW9uID0gZXh0VkFPKClcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICB0aGlzLnZhbyA9IGV4dGVuc2lvbi5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFvID0gbnVsbFxuICAgIH1cbiAgICB2YW9TZXRbdGhpcy5pZF0gPSB0aGlzXG4gICAgdGhpcy5idWZmZXJzID0gW11cbiAgfVxuXG4gIFJFR0xWQU8ucHJvdG90eXBlLmJpbmRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0aSA9IGV4dEluc3RhbmNlZCgpXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBhdHRyID0gYXR0cmlidXRlc1tpXVxuICAgICAgaWYgKGF0dHIuYnVmZmVyKSB7XG4gICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpXG4gICAgICAgIGdsLmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSJDEsIGF0dHIuYnVmZmVyLmJ1ZmZlcilcbiAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihpLCBhdHRyLnNpemUsIGF0dHIudHlwZSwgYXR0ci5ub3JtYWxpemVkLCBhdHRyLnN0cmlkZSwgYXR0ci5vZmZzZXQpXG4gICAgICAgIGlmIChleHRpICYmIGF0dHIuZGl2aXNvcikge1xuICAgICAgICAgIGV4dGkudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGksIGF0dHIuZGl2aXNvcilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpXG4gICAgICAgIGdsLnZlcnRleEF0dHJpYjRmKGksIGF0dHIueCwgYXR0ci55LCBhdHRyLnosIGF0dHIudylcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBqIDwgTlVNX0FUVFJJQlVURVM7ICsraikge1xuICAgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGopXG4gICAgfVxuICB9XG5cbiAgUkVHTFZBTy5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ID0gZXh0VkFPKClcbiAgICBpZiAoZXh0KSB7XG4gICAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHRoaXMudmFvKVxuICAgICAgdGhpcy5iaW5kQXR0cnMoKVxuICAgICAgc3RhdGUuY3VycmVudFZBTyA9IHRoaXNcbiAgICB9XG4gIH1cblxuICBSRUdMVkFPLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnZhbykge1xuICAgICAgdmFyIGV4dGVuc2lvbiA9IGV4dFZBTygpXG4gICAgICBpZiAodGhpcyA9PT0gc3RhdGUuY3VycmVudFZBTykge1xuICAgICAgICBzdGF0ZS5jdXJyZW50VkFPID0gbnVsbFxuICAgICAgICBleHRlbnNpb24uYmluZFZlcnRleEFycmF5T0VTKG51bGwpXG4gICAgICB9XG4gICAgICBleHRlbnNpb24uZGVsZXRlVmVydGV4QXJyYXlPRVModGhpcy52YW8pXG4gICAgICB0aGlzLnZhbyA9IG51bGxcbiAgICB9XG4gICAgaWYgKHZhb1NldFt0aGlzLmlkXSkge1xuICAgICAgZGVsZXRlIHZhb1NldFt0aGlzLmlkXVxuICAgICAgc3RhdHMudmFvQ291bnQgLT0gMVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVWQU8gKCkge1xuICAgIHZhciBleHQgPSBleHRWQU8oKVxuICAgIGlmIChleHQpIHtcbiAgICAgIHZhbHVlcyh2YW9TZXQpLmZvckVhY2goZnVuY3Rpb24gKHZhbykge1xuICAgICAgICB2YW8ucmVmcmVzaCgpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVZBTyAoX2F0dHIpIHtcbiAgICB2YXIgdmFvID0gbmV3IFJFR0xWQU8oKVxuICAgIHN0YXRzLnZhb0NvdW50ICs9IDFcblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVZBTyAoYXR0cmlidXRlcykge1xuICAgICAgY2hlY2skMShBcnJheS5pc0FycmF5KGF0dHJpYnV0ZXMpLCAnYXJndW1lbnRzIHRvIHZlcnRleCBhcnJheSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGFycmF5JylcbiAgICAgIGNoZWNrJDEoYXR0cmlidXRlcy5sZW5ndGggPCBOVU1fQVRUUklCVVRFUywgJ3RvbyBtYW55IGF0dHJpYnV0ZXMnKVxuICAgICAgY2hlY2skMShhdHRyaWJ1dGVzLmxlbmd0aCA+IDAsICdtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZScpXG5cbiAgICAgIHZhciBidWZVcGRhdGVkID0ge31cbiAgICAgIHZhciBuYXR0cmlidXRlcyA9IHZhby5hdHRyaWJ1dGVzXG4gICAgICBuYXR0cmlidXRlcy5sZW5ndGggPSBhdHRyaWJ1dGVzLmxlbmd0aFxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBzcGVjID0gYXR0cmlidXRlc1tpXVxuICAgICAgICB2YXIgcmVjID0gbmF0dHJpYnV0ZXNbaV0gPSBuZXcgQXR0cmlidXRlUmVjb3JkKClcbiAgICAgICAgdmFyIGRhdGEgPSBzcGVjLmRhdGEgfHwgc3BlY1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1R5cGVkQXJyYXkoZGF0YSkgfHwgaXNOREFycmF5TGlrZShkYXRhKSkge1xuICAgICAgICAgIHZhciBidWZcbiAgICAgICAgICBpZiAodmFvLmJ1ZmZlcnNbaV0pIHtcbiAgICAgICAgICAgIGJ1ZiA9IHZhby5idWZmZXJzW2ldXG4gICAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KGRhdGEpICYmIGJ1Zi5fYnVmZmVyLmJ5dGVMZW5ndGggPj0gZGF0YS5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGJ1Zi5zdWJkYXRhKGRhdGEpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBidWYuZGVzdHJveSgpXG4gICAgICAgICAgICAgIHZhby5idWZmZXJzW2ldID0gbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXZhby5idWZmZXJzW2ldKSB7XG4gICAgICAgICAgICBidWYgPSB2YW8uYnVmZmVyc1tpXSA9IGJ1ZmZlclN0YXRlLmNyZWF0ZShzcGVjLCBHTF9BUlJBWV9CVUZGRVIkMSwgZmFsc2UsIHRydWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlYy5idWZmZXIgPSBidWZmZXJTdGF0ZS5nZXRCdWZmZXIoYnVmKVxuICAgICAgICAgIHJlYy5zaXplID0gcmVjLmJ1ZmZlci5kaW1lbnNpb24gfCAwXG4gICAgICAgICAgcmVjLm5vcm1hbGl6ZWQgPSBmYWxzZVxuICAgICAgICAgIHJlYy50eXBlID0gcmVjLmJ1ZmZlci5kdHlwZVxuICAgICAgICAgIHJlYy5vZmZzZXQgPSAwXG4gICAgICAgICAgcmVjLnN0cmlkZSA9IDBcbiAgICAgICAgICByZWMuZGl2aXNvciA9IDBcbiAgICAgICAgICByZWMuc3RhdGUgPSAxXG4gICAgICAgICAgYnVmVXBkYXRlZFtpXSA9IDFcbiAgICAgICAgfSBlbHNlIGlmIChidWZmZXJTdGF0ZS5nZXRCdWZmZXIoc3BlYykpIHtcbiAgICAgICAgICByZWMuYnVmZmVyID0gYnVmZmVyU3RhdGUuZ2V0QnVmZmVyKHNwZWMpXG4gICAgICAgICAgcmVjLnNpemUgPSByZWMuYnVmZmVyLmRpbWVuc2lvbiB8IDBcbiAgICAgICAgICByZWMubm9ybWFsaXplZCA9IGZhbHNlXG4gICAgICAgICAgcmVjLnR5cGUgPSByZWMuYnVmZmVyLmR0eXBlXG4gICAgICAgICAgcmVjLm9mZnNldCA9IDBcbiAgICAgICAgICByZWMuc3RyaWRlID0gMFxuICAgICAgICAgIHJlYy5kaXZpc29yID0gMFxuICAgICAgICAgIHJlYy5zdGF0ZSA9IDFcbiAgICAgICAgfSBlbHNlIGlmIChidWZmZXJTdGF0ZS5nZXRCdWZmZXIoc3BlYy5idWZmZXIpKSB7XG4gICAgICAgICAgcmVjLmJ1ZmZlciA9IGJ1ZmZlclN0YXRlLmdldEJ1ZmZlcihzcGVjLmJ1ZmZlcilcbiAgICAgICAgICByZWMuc2l6ZSA9ICgoK3NwZWMuc2l6ZSkgfHwgcmVjLmJ1ZmZlci5kaW1lbnNpb24pIHwgMFxuICAgICAgICAgIHJlYy5ub3JtYWxpemVkID0gISFzcGVjLm5vcm1hbGl6ZWQgfHwgZmFsc2VcbiAgICAgICAgICBpZiAoJ3R5cGUnIGluIHNwZWMpIHtcbiAgICAgICAgICAgIGNoZWNrJDEucGFyYW1ldGVyKHNwZWMudHlwZSwgZ2xUeXBlcywgJ2ludmFsaWQgYnVmZmVyIHR5cGUnKVxuICAgICAgICAgICAgcmVjLnR5cGUgPSBnbFR5cGVzW3NwZWMudHlwZV1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjLnR5cGUgPSByZWMuYnVmZmVyLmR0eXBlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlYy5vZmZzZXQgPSAoc3BlYy5vZmZzZXQgfHwgMCkgfCAwXG4gICAgICAgICAgcmVjLnN0cmlkZSA9IChzcGVjLnN0cmlkZSB8fCAwKSB8IDBcbiAgICAgICAgICByZWMuZGl2aXNvciA9IChzcGVjLmRpdmlzb3IgfHwgMCkgfCAwXG4gICAgICAgICAgcmVjLnN0YXRlID0gMVxuXG4gICAgICAgICAgY2hlY2skMShyZWMuc2l6ZSA+PSAxICYmIHJlYy5zaXplIDw9IDQsICdzaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0JylcbiAgICAgICAgICBjaGVjayQxKHJlYy5vZmZzZXQgPj0gMCwgJ2ludmFsaWQgb2Zmc2V0JylcbiAgICAgICAgICBjaGVjayQxKHJlYy5zdHJpZGUgPj0gMCAmJiByZWMuc3RyaWRlIDw9IDI1NSwgJ3N0cmlkZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1JylcbiAgICAgICAgICBjaGVjayQxKHJlYy5kaXZpc29yID49IDAsICdkaXZpc29yIG11c3QgYmUgcG9zaXRpdmUnKVxuICAgICAgICAgIGNoZWNrJDEoIXJlYy5kaXZpc29yIHx8ICEhZXh0ZW5zaW9ucy5hbmdsZV9pbnN0YW5jZWRfYXJyYXlzLCAnQU5HTEVfaW5zdGFuY2VkX2FycmF5cyBtdXN0IGJlIGVuYWJsZWQgdG8gdXNlIGRpdmlzb3InKVxuICAgICAgICB9IGVsc2UgaWYgKCd4JyBpbiBzcGVjKSB7XG4gICAgICAgICAgY2hlY2skMShpID4gMCwgJ2ZpcnN0IGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSBhIGNvbnN0YW50JylcbiAgICAgICAgICByZWMueCA9ICtzcGVjLnggfHwgMFxuICAgICAgICAgIHJlYy55ID0gK3NwZWMueSB8fCAwXG4gICAgICAgICAgcmVjLnogPSArc3BlYy56IHx8IDBcbiAgICAgICAgICByZWMudyA9ICtzcGVjLncgfHwgMFxuICAgICAgICAgIHJlYy5zdGF0ZSA9IDJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGVjayQxKGZhbHNlLCAnaW52YWxpZCBhdHRyaWJ1dGUgc3BlYyBmb3IgbG9jYXRpb24gJyArIGkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcmV0aXJlIHVudXNlZCBidWZmZXJzXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhby5idWZmZXJzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIGlmICghYnVmVXBkYXRlZFtqXSAmJiB2YW8uYnVmZmVyc1tqXSkge1xuICAgICAgICAgIHZhby5idWZmZXJzW2pdLmRlc3Ryb3koKVxuICAgICAgICAgIHZhby5idWZmZXJzW2pdID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhby5yZWZyZXNoKClcbiAgICAgIHJldHVybiB1cGRhdGVWQU9cbiAgICB9XG5cbiAgICB1cGRhdGVWQU8uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFvLmJ1ZmZlcnMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgaWYgKHZhby5idWZmZXJzW2pdKSB7XG4gICAgICAgICAgdmFvLmJ1ZmZlcnNbal0uZGVzdHJveSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhby5idWZmZXJzLmxlbmd0aCA9IDBcbiAgICAgIHZhby5kZXN0cm95KClcbiAgICB9XG5cbiAgICB1cGRhdGVWQU8uX3ZhbyA9IHZhb1xuICAgIHVwZGF0ZVZBTy5fcmVnbFR5cGUgPSAndmFvJ1xuXG4gICAgcmV0dXJuIHVwZGF0ZVZBTyhfYXR0cilcbiAgfVxuXG4gIHJldHVybiBzdGF0ZVxufVxuXG52YXIgR0xfRlJBR01FTlRfU0hBREVSID0gMzU2MzJcbnZhciBHTF9WRVJURVhfU0hBREVSID0gMzU2MzNcblxudmFyIEdMX0FDVElWRV9VTklGT1JNUyA9IDB4OEI4NlxudmFyIEdMX0FDVElWRV9BVFRSSUJVVEVTID0gMHg4Qjg5XG5cbmZ1bmN0aW9uIHdyYXBTaGFkZXJTdGF0ZSAoZ2wsIHN0cmluZ1N0b3JlLCBzdGF0cywgY29uZmlnKSB7XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBnbHNsIGNvbXBpbGF0aW9uIGFuZCBsaW5raW5nXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgZnJhZ1NoYWRlcnMgPSB7fVxuICB2YXIgdmVydFNoYWRlcnMgPSB7fVxuXG4gIGZ1bmN0aW9uIEFjdGl2ZUluZm8gKG5hbWUsIGlkLCBsb2NhdGlvbiwgaW5mbykge1xuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB0aGlzLmlkID0gaWRcbiAgICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb25cbiAgICB0aGlzLmluZm8gPSBpbmZvXG4gIH1cblxuICBmdW5jdGlvbiBpbnNlcnRBY3RpdmVJbmZvIChsaXN0LCBpbmZvKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAobGlzdFtpXS5pZCA9PT0gaW5mby5pZCkge1xuICAgICAgICBsaXN0W2ldLmxvY2F0aW9uID0gaW5mby5sb2NhdGlvblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgbGlzdC5wdXNoKGluZm8pXG4gIH1cblxuICBmdW5jdGlvbiBnZXRTaGFkZXIgKHR5cGUsIGlkLCBjb21tYW5kKSB7XG4gICAgdmFyIGNhY2hlID0gdHlwZSA9PT0gR0xfRlJBR01FTlRfU0hBREVSID8gZnJhZ1NoYWRlcnMgOiB2ZXJ0U2hhZGVyc1xuICAgIHZhciBzaGFkZXIgPSBjYWNoZVtpZF1cblxuICAgIGlmICghc2hhZGVyKSB7XG4gICAgICB2YXIgc291cmNlID0gc3RyaW5nU3RvcmUuc3RyKGlkKVxuICAgICAgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKHR5cGUpXG4gICAgICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UpXG4gICAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcilcbiAgICAgIGNoZWNrJDEuc2hhZGVyRXJyb3IoZ2wsIHNoYWRlciwgc291cmNlLCB0eXBlLCBjb21tYW5kKVxuICAgICAgY2FjaGVbaWRdID0gc2hhZGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYWRlclxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIHByb2dyYW0gbGlua2luZ1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgdmFyIHByb2dyYW1DYWNoZSA9IHt9XG4gIHZhciBwcm9ncmFtTGlzdCA9IFtdXG5cbiAgdmFyIFBST0dSQU1fQ09VTlRFUiA9IDBcblxuICBmdW5jdGlvbiBSRUdMUHJvZ3JhbSAoZnJhZ0lkLCB2ZXJ0SWQpIHtcbiAgICB0aGlzLmlkID0gUFJPR1JBTV9DT1VOVEVSKytcbiAgICB0aGlzLmZyYWdJZCA9IGZyYWdJZFxuICAgIHRoaXMudmVydElkID0gdmVydElkXG4gICAgdGhpcy5wcm9ncmFtID0gbnVsbFxuICAgIHRoaXMudW5pZm9ybXMgPSBbXVxuICAgIHRoaXMuYXR0cmlidXRlcyA9IFtdXG4gICAgdGhpcy5yZWZDb3VudCA9IDFcblxuICAgIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgICAgdGhpcy5zdGF0cyA9IHtcbiAgICAgICAgdW5pZm9ybXNDb3VudDogMCxcbiAgICAgICAgYXR0cmlidXRlc0NvdW50OiAwXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGlua1Byb2dyYW0gKGRlc2MsIGNvbW1hbmQsIGF0dHJpYnV0ZUxvY2F0aW9ucykge1xuICAgIHZhciBpLCBpbmZvXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gY29tcGlsZSAmIGxpbmtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdmFyIGZyYWdTaGFkZXIgPSBnZXRTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBkZXNjLmZyYWdJZClcbiAgICB2YXIgdmVydFNoYWRlciA9IGdldFNoYWRlcihHTF9WRVJURVhfU0hBREVSLCBkZXNjLnZlcnRJZClcblxuICAgIHZhciBwcm9ncmFtID0gZGVzYy5wcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpXG4gICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGZyYWdTaGFkZXIpXG4gICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRTaGFkZXIpXG4gICAgaWYgKGF0dHJpYnV0ZUxvY2F0aW9ucykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGF0dHJpYnV0ZUxvY2F0aW9ucy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgYmluZGluZyA9IGF0dHJpYnV0ZUxvY2F0aW9uc1tpXVxuICAgICAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgYmluZGluZ1swXSwgYmluZGluZ1sxXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKVxuICAgIGNoZWNrJDEubGlua0Vycm9yKFxuICAgICAgZ2wsXG4gICAgICBwcm9ncmFtLFxuICAgICAgc3RyaW5nU3RvcmUuc3RyKGRlc2MuZnJhZ0lkKSxcbiAgICAgIHN0cmluZ1N0b3JlLnN0cihkZXNjLnZlcnRJZCksXG4gICAgICBjb21tYW5kKVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGdyYWIgdW5pZm9ybXNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdmFyIG51bVVuaWZvcm1zID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STVMpXG4gICAgaWYgKGNvbmZpZy5wcm9maWxlKSB7XG4gICAgICBkZXNjLnN0YXRzLnVuaWZvcm1zQ291bnQgPSBudW1Vbmlmb3Jtc1xuICAgIH1cbiAgICB2YXIgdW5pZm9ybXMgPSBkZXNjLnVuaWZvcm1zXG4gICAgZm9yIChpID0gMDsgaSA8IG51bVVuaWZvcm1zOyArK2kpIHtcbiAgICAgIGluZm8gPSBnbC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGkpXG4gICAgICBpZiAoaW5mbykge1xuICAgICAgICBpZiAoaW5mby5zaXplID4gMSkge1xuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5mby5zaXplOyArK2opIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gaW5mby5uYW1lLnJlcGxhY2UoJ1swXScsICdbJyArIGogKyAnXScpXG4gICAgICAgICAgICBpbnNlcnRBY3RpdmVJbmZvKHVuaWZvcm1zLCBuZXcgQWN0aXZlSW5mbyhcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgc3RyaW5nU3RvcmUuaWQobmFtZSksXG4gICAgICAgICAgICAgIGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lKSxcbiAgICAgICAgICAgICAgaW5mbykpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluc2VydEFjdGl2ZUluZm8odW5pZm9ybXMsIG5ldyBBY3RpdmVJbmZvKFxuICAgICAgICAgICAgaW5mby5uYW1lLFxuICAgICAgICAgICAgc3RyaW5nU3RvcmUuaWQoaW5mby5uYW1lKSxcbiAgICAgICAgICAgIGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBpbmZvLm5hbWUpLFxuICAgICAgICAgICAgaW5mbykpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gZ3JhYiBhdHRyaWJ1dGVzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHZhciBudW1BdHRyaWJ1dGVzID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFUylcbiAgICBpZiAoY29uZmlnLnByb2ZpbGUpIHtcbiAgICAgIGRlc2Muc3RhdHMuYXR0cmlidXRlc0NvdW50ID0gbnVtQXR0cmlidXRlc1xuICAgIH1cblxuICAgIHZhciBhdHRyaWJ1dGVzID0gZGVzYy5hdHRyaWJ1dGVzXG4gICAgZm9yIChpID0gMDsgaSA8IG51bUF0dHJpYnV0ZXM7ICsraSkge1xuICAgICAgaW5mbyA9IGdsLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpKVxuICAgICAgaWYgKGluZm8pIHtcbiAgICAgICAgaW5zZXJ0QWN0aXZlSW5mbyhhdHRyaWJ1dGVzLCBuZXcgQWN0aXZlSW5mbyhcbiAgICAgICAgICBpbmZvLm5hbWUsXG4gICAgICAgICAgc3RyaW5nU3RvcmUuaWQoaW5mby5uYW1lKSxcbiAgICAgICAgICBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmZvLm5hbWUpLFxuICAgICAgICAgIGluZm8pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChjb25maWcucHJvZmlsZSkge1xuICAgIHN0YXRzLmdldE1heFVuaWZvcm1zQ291bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbSA9IDBcbiAgICAgIHByb2dyYW1MaXN0LmZvckVhY2goZnVuY3Rpb24gKGRlc2MpIHtcbiAgICAgICAgaWYgKGRlc2Muc3RhdHMudW5pZm9ybXNDb3VudCA+IG0pIHtcbiAgICAgICAgICBtID0gZGVzYy5zdGF0cy51bmlmb3Jtc0NvdW50XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gbVxuICAgIH1cblxuICAgIHN0YXRzLmdldE1heEF0dHJpYnV0ZXNDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBtID0gMFxuICAgICAgcHJvZ3JhbUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGVzYykge1xuICAgICAgICBpZiAoZGVzYy5zdGF0cy5hdHRyaWJ1dGVzQ291bnQgPiBtKSB7XG4gICAgICAgICAgbSA9IGRlc2Muc3RhdHMuYXR0cmlidXRlc0NvdW50XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gbVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc3RvcmVTaGFkZXJzICgpIHtcbiAgICBmcmFnU2hhZGVycyA9IHt9XG4gICAgdmVydFNoYWRlcnMgPSB7fVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvZ3JhbUxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxpbmtQcm9ncmFtKHByb2dyYW1MaXN0W2ldLCBudWxsLCBwcm9ncmFtTGlzdFtpXS5hdHRyaWJ1dGVzLm1hcChmdW5jdGlvbiAoaW5mbykge1xuICAgICAgICByZXR1cm4gW2luZm8ubG9jYXRpb24sIGluZm8ubmFtZV1cbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2xlYXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBkZWxldGVTaGFkZXIgPSBnbC5kZWxldGVTaGFkZXIuYmluZChnbClcbiAgICAgIHZhbHVlcyhmcmFnU2hhZGVycykuZm9yRWFjaChkZWxldGVTaGFkZXIpXG4gICAgICBmcmFnU2hhZGVycyA9IHt9XG4gICAgICB2YWx1ZXModmVydFNoYWRlcnMpLmZvckVhY2goZGVsZXRlU2hhZGVyKVxuICAgICAgdmVydFNoYWRlcnMgPSB7fVxuXG4gICAgICBwcm9ncmFtTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZXNjKSB7XG4gICAgICAgIGdsLmRlbGV0ZVByb2dyYW0oZGVzYy5wcm9ncmFtKVxuICAgICAgfSlcbiAgICAgIHByb2dyYW1MaXN0Lmxlbmd0aCA9IDBcbiAgICAgIHByb2dyYW1DYWNoZSA9IHt9XG5cbiAgICAgIHN0YXRzLnNoYWRlckNvdW50ID0gMFxuICAgIH0sXG5cbiAgICBwcm9ncmFtOiBmdW5jdGlvbiAodmVydElkLCBmcmFnSWQsIGNvbW1hbmQsIGF0dHJpYkxvY2F0aW9ucykge1xuICAgICAgY2hlY2skMS5jb21tYW5kKHZlcnRJZCA+PSAwLCAnbWlzc2luZyB2ZXJ0ZXggc2hhZGVyJywgY29tbWFuZClcbiAgICAgIGNoZWNrJDEuY29tbWFuZChmcmFnSWQgPj0gMCwgJ21pc3NpbmcgZnJhZ21lbnQgc2hhZGVyJywgY29tbWFuZClcblxuICAgICAgdmFyIGNhY2hlID0gcHJvZ3JhbUNhY2hlW2ZyYWdJZF1cbiAgICAgIGlmICghY2FjaGUpIHtcbiAgICAgICAgY2FjaGUgPSBwcm9ncmFtQ2FjaGVbZnJhZ0lkXSA9IHt9XG4gICAgICB9XG4gICAgICB2YXIgcHJldlByb2dyYW0gPSBjYWNoZVt2ZXJ0SWRdXG4gICAgICBpZiAocHJldlByb2dyYW0pIHtcbiAgICAgICAgcHJldlByb2dyYW0ucmVmQ291bnQrK1xuICAgICAgICBpZiAoIWF0dHJpYkxvY2F0aW9ucykge1xuICAgICAgICAgIHJldHVybiBwcmV2UHJvZ3JhbVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgcHJvZ3JhbSA9IG5ldyBSRUdMUHJvZ3JhbShmcmFnSWQsIHZlcnRJZClcbiAgICAgIHN0YXRzLnNoYWRlckNvdW50KytcbiAgICAgIGxpbmtQcm9ncmFtKHByb2dyYW0sIGNvbW1hbmQsIGF0dHJpYkxvY2F0aW9ucylcbiAgICAgIGlmICghcHJldlByb2dyYW0pIHtcbiAgICAgICAgY2FjaGVbdmVydElkXSA9IHByb2dyYW1cbiAgICAgIH1cbiAgICAgIHByb2dyYW1MaXN0LnB1c2gocHJvZ3JhbSlcbiAgICAgIHJldHVybiBleHRlbmQocHJvZ3JhbSwge1xuICAgICAgICBkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcHJvZ3JhbS5yZWZDb3VudC0tXG4gICAgICAgICAgaWYgKHByb2dyYW0ucmVmQ291bnQgPD0gMCkge1xuICAgICAgICAgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtLnByb2dyYW0pXG4gICAgICAgICAgICB2YXIgaWR4ID0gcHJvZ3JhbUxpc3QuaW5kZXhPZihwcm9ncmFtKVxuICAgICAgICAgICAgcHJvZ3JhbUxpc3Quc3BsaWNlKGlkeCwgMSlcbiAgICAgICAgICAgIHN0YXRzLnNoYWRlckNvdW50LS1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbm8gcHJvZ3JhbSBpcyBsaW5rZWQgdG8gdGhpcyB2ZXJ0IGFueW1vcmVcbiAgICAgICAgICBpZiAoY2FjaGVbcHJvZ3JhbS52ZXJ0SWRdLnJlZkNvdW50IDw9IDApIHtcbiAgICAgICAgICAgIGdsLmRlbGV0ZVNoYWRlcih2ZXJ0U2hhZGVyc1twcm9ncmFtLnZlcnRJZF0pXG4gICAgICAgICAgICBkZWxldGUgdmVydFNoYWRlcnNbcHJvZ3JhbS52ZXJ0SWRdXG4gICAgICAgICAgICBkZWxldGUgcHJvZ3JhbUNhY2hlW3Byb2dyYW0uZnJhZ0lkXVtwcm9ncmFtLnZlcnRJZF1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbm8gcHJvZ3JhbSBpcyBsaW5rZWQgdG8gdGhpcyBmcmFnIGFueW1vcmVcbiAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHByb2dyYW1DYWNoZVtwcm9ncmFtLmZyYWdJZF0pLmxlbmd0aCkge1xuICAgICAgICAgICAgZ2wuZGVsZXRlU2hhZGVyKGZyYWdTaGFkZXJzW3Byb2dyYW0uZnJhZ0lkXSlcbiAgICAgICAgICAgIGRlbGV0ZSBmcmFnU2hhZGVyc1twcm9ncmFtLmZyYWdJZF1cbiAgICAgICAgICAgIGRlbGV0ZSBwcm9ncmFtQ2FjaGVbcHJvZ3JhbS5mcmFnSWRdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG5cbiAgICByZXN0b3JlOiByZXN0b3JlU2hhZGVycyxcblxuICAgIHNoYWRlcjogZ2V0U2hhZGVyLFxuXG4gICAgZnJhZzogLTEsXG4gICAgdmVydDogLTFcbiAgfVxufVxuXG52YXIgR0xfUkdCQSQzID0gNjQwOFxudmFyIEdMX1VOU0lHTkVEX0JZVEUkNyA9IDUxMjFcbnZhciBHTF9QQUNLX0FMSUdOTUVOVCA9IDB4MEQwNVxudmFyIEdMX0ZMT0FUJDcgPSAweDE0MDYgLy8gNTEyNlxuXG5mdW5jdGlvbiB3cmFwUmVhZFBpeGVscyAoXG4gIGdsLFxuICBmcmFtZWJ1ZmZlclN0YXRlLFxuICByZWdsUG9sbCxcbiAgY29udGV4dCxcbiAgZ2xBdHRyaWJ1dGVzLFxuICBleHRlbnNpb25zLFxuICBsaW1pdHMpIHtcbiAgZnVuY3Rpb24gcmVhZFBpeGVsc0ltcGwgKGlucHV0KSB7XG4gICAgdmFyIHR5cGVcbiAgICBpZiAoZnJhbWVidWZmZXJTdGF0ZS5uZXh0ID09PSBudWxsKSB7XG4gICAgICBjaGVjayQxKFxuICAgICAgICBnbEF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyLFxuICAgICAgICAneW91IG11c3QgY3JlYXRlIGEgd2ViZ2wgY29udGV4dCB3aXRoIFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCI6dHJ1ZSBpbiBvcmRlciB0byByZWFkIHBpeGVscyBmcm9tIHRoZSBkcmF3aW5nIGJ1ZmZlcicpXG4gICAgICB0eXBlID0gR0xfVU5TSUdORURfQllURSQ3XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoZWNrJDEoXG4gICAgICAgIGZyYW1lYnVmZmVyU3RhdGUubmV4dC5jb2xvckF0dGFjaG1lbnRzWzBdLnRleHR1cmUgIT09IG51bGwsXG4gICAgICAgICdZb3UgY2Fubm90IHJlYWQgZnJvbSBhIHJlbmRlcmJ1ZmZlcicpXG4gICAgICB0eXBlID0gZnJhbWVidWZmZXJTdGF0ZS5uZXh0LmNvbG9yQXR0YWNobWVudHNbMF0udGV4dHVyZS5fdGV4dHVyZS50eXBlXG5cbiAgICAgIGlmIChleHRlbnNpb25zLm9lc190ZXh0dXJlX2Zsb2F0KSB7XG4gICAgICAgIGNoZWNrJDEoXG4gICAgICAgICAgdHlwZSA9PT0gR0xfVU5TSUdORURfQllURSQ3IHx8IHR5cGUgPT09IEdMX0ZMT0FUJDcsXG4gICAgICAgICAgJ1JlYWRpbmcgZnJvbSBhIGZyYW1lYnVmZmVyIGlzIG9ubHkgYWxsb3dlZCBmb3IgdGhlIHR5cGVzIFxcJ3VpbnQ4XFwnIGFuZCBcXCdmbG9hdFxcJycpXG5cbiAgICAgICAgaWYgKHR5cGUgPT09IEdMX0ZMT0FUJDcpIHtcbiAgICAgICAgICBjaGVjayQxKGxpbWl0cy5yZWFkRmxvYXQsICdSZWFkaW5nIFxcJ2Zsb2F0XFwnIHZhbHVlcyBpcyBub3QgcGVybWl0dGVkIGluIHlvdXIgYnJvd3Nlci4gRm9yIGEgZmFsbGJhY2ssIHBsZWFzZSBzZWU6IGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2dsc2wtcmVhZC1mbG9hdCcpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoZWNrJDEoXG4gICAgICAgICAgdHlwZSA9PT0gR0xfVU5TSUdORURfQllURSQ3LFxuICAgICAgICAgICdSZWFkaW5nIGZyb20gYSBmcmFtZWJ1ZmZlciBpcyBvbmx5IGFsbG93ZWQgZm9yIHRoZSB0eXBlIFxcJ3VpbnQ4XFwnJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgeCA9IDBcbiAgICB2YXIgeSA9IDBcbiAgICB2YXIgd2lkdGggPSBjb250ZXh0LmZyYW1lYnVmZmVyV2lkdGhcbiAgICB2YXIgaGVpZ2h0ID0gY29udGV4dC5mcmFtZWJ1ZmZlckhlaWdodFxuICAgIHZhciBkYXRhID0gbnVsbFxuXG4gICAgaWYgKGlzVHlwZWRBcnJheShpbnB1dCkpIHtcbiAgICAgIGRhdGEgPSBpbnB1dFxuICAgIH0gZWxzZSBpZiAoaW5wdXQpIHtcbiAgICAgIGNoZWNrJDEudHlwZShpbnB1dCwgJ29iamVjdCcsICdpbnZhbGlkIGFyZ3VtZW50cyB0byByZWdsLnJlYWQoKScpXG4gICAgICB4ID0gaW5wdXQueCB8IDBcbiAgICAgIHkgPSBpbnB1dC55IHwgMFxuICAgICAgY2hlY2skMShcbiAgICAgICAgeCA+PSAwICYmIHggPCBjb250ZXh0LmZyYW1lYnVmZmVyV2lkdGgsXG4gICAgICAgICdpbnZhbGlkIHggb2Zmc2V0IGZvciByZWdsLnJlYWQnKVxuICAgICAgY2hlY2skMShcbiAgICAgICAgeSA+PSAwICYmIHkgPCBjb250ZXh0LmZyYW1lYnVmZmVySGVpZ2h0LFxuICAgICAgICAnaW52YWxpZCB5IG9mZnNldCBmb3IgcmVnbC5yZWFkJylcbiAgICAgIHdpZHRoID0gKGlucHV0LndpZHRoIHx8IChjb250ZXh0LmZyYW1lYnVmZmVyV2lkdGggLSB4KSkgfCAwXG4gICAgICBoZWlnaHQgPSAoaW5wdXQuaGVpZ2h0IHx8IChjb250ZXh0LmZyYW1lYnVmZmVySGVpZ2h0IC0geSkpIHwgMFxuICAgICAgZGF0YSA9IGlucHV0LmRhdGEgfHwgbnVsbFxuICAgIH1cblxuICAgIC8vIHNhbml0eSBjaGVjayBpbnB1dC5kYXRhXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlID09PSBHTF9VTlNJR05FRF9CWVRFJDcpIHtcbiAgICAgICAgY2hlY2skMShcbiAgICAgICAgICBkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSxcbiAgICAgICAgICAnYnVmZmVyIG11c3QgYmUgXFwnVWludDhBcnJheVxcJyB3aGVuIHJlYWRpbmcgZnJvbSBhIGZyYW1lYnVmZmVyIG9mIHR5cGUgXFwndWludDhcXCcnKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBHTF9GTE9BVCQ3KSB7XG4gICAgICAgIGNoZWNrJDEoXG4gICAgICAgICAgZGF0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSxcbiAgICAgICAgICAnYnVmZmVyIG11c3QgYmUgXFwnRmxvYXQzMkFycmF5XFwnIHdoZW4gcmVhZGluZyBmcm9tIGEgZnJhbWVidWZmZXIgb2YgdHlwZSBcXCdmbG9hdFxcJycpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2skMShcbiAgICAgIHdpZHRoID4gMCAmJiB3aWR0aCArIHggPD0gY29udGV4dC5mcmFtZWJ1ZmZlcldpZHRoLFxuICAgICAgJ2ludmFsaWQgd2lkdGggZm9yIHJlYWQgcGl4ZWxzJylcbiAgICBjaGVjayQxKFxuICAgICAgaGVpZ2h0ID4gMCAmJiBoZWlnaHQgKyB5IDw9IGNvbnRleHQuZnJhbWVidWZmZXJIZWlnaHQsXG4gICAgICAnaW52YWxpZCBoZWlnaHQgZm9yIHJlYWQgcGl4ZWxzJylcblxuICAgIC8vIFVwZGF0ZSBXZWJHTCBzdGF0ZVxuICAgIHJlZ2xQb2xsKClcblxuICAgIC8vIENvbXB1dGUgc2l6ZVxuICAgIHZhciBzaXplID0gd2lkdGggKiBoZWlnaHQgKiA0XG5cbiAgICAvLyBBbGxvY2F0ZSBkYXRhXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBpZiAodHlwZSA9PT0gR0xfVU5TSUdORURfQllURSQ3KSB7XG4gICAgICAgIGRhdGEgPSBuZXcgVWludDhBcnJheShzaXplKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBHTF9GTE9BVCQ3KSB7XG4gICAgICAgIGRhdGEgPSBkYXRhIHx8IG5ldyBGbG9hdDMyQXJyYXkoc2l6ZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUeXBlIGNoZWNrXG4gICAgY2hlY2skMS5pc1R5cGVkQXJyYXkoZGF0YSwgJ2RhdGEgYnVmZmVyIGZvciByZWdsLnJlYWQoKSBtdXN0IGJlIGEgdHlwZWRhcnJheScpXG4gICAgY2hlY2skMShkYXRhLmJ5dGVMZW5ndGggPj0gc2l6ZSwgJ2RhdGEgYnVmZmVyIGZvciByZWdsLnJlYWQoKSB0b28gc21hbGwnKVxuXG4gICAgLy8gUnVuIHJlYWQgcGl4ZWxzXG4gICAgZ2wucGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpXG4gICAgZ2wucmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9SR0JBJDMsXG4gICAgICB0eXBlLFxuICAgICAgZGF0YSlcblxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICBmdW5jdGlvbiByZWFkUGl4ZWxzRkJPIChvcHRpb25zKSB7XG4gICAgdmFyIHJlc3VsdFxuICAgIGZyYW1lYnVmZmVyU3RhdGUuc2V0RkJPKHtcbiAgICAgIGZyYW1lYnVmZmVyOiBvcHRpb25zLmZyYW1lYnVmZmVyXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgcmVzdWx0ID0gcmVhZFBpeGVsc0ltcGwob3B0aW9ucylcbiAgICB9KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRQaXhlbHMgKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMgfHwgISgnZnJhbWVidWZmZXInIGluIG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gcmVhZFBpeGVsc0ltcGwob3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlYWRQaXhlbHNGQk8ob3B0aW9ucylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVhZFBpeGVsc1xufVxuXG5mdW5jdGlvbiBzbGljZSAoeCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoeClcbn1cblxuZnVuY3Rpb24gam9pbiAoeCkge1xuICByZXR1cm4gc2xpY2UoeCkuam9pbignJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlRW52aXJvbm1lbnQgKCkge1xuICAvLyBVbmlxdWUgdmFyaWFibGUgaWQgY291bnRlclxuICB2YXIgdmFyQ291bnRlciA9IDBcblxuICAvLyBMaW5rZWQgdmFsdWVzIGFyZSBwYXNzZWQgZnJvbSB0aGlzIHNjb3BlIGludG8gdGhlIGdlbmVyYXRlZCBjb2RlIGJsb2NrXG4gIC8vIENhbGxpbmcgbGluaygpIHBhc3NlcyBhIHZhbHVlIGludG8gdGhlIGdlbmVyYXRlZCBzY29wZSBhbmQgcmV0dXJuc1xuICAvLyB0aGUgdmFyaWFibGUgbmFtZSB3aGljaCBpdCBpcyBib3VuZCB0b1xuICB2YXIgbGlua2VkTmFtZXMgPSBbXVxuICB2YXIgbGlua2VkVmFsdWVzID0gW11cbiAgZnVuY3Rpb24gbGluayAodmFsdWUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtlZFZhbHVlcy5sZW5ndGg7ICsraSkge1xuICAgICAgaWYgKGxpbmtlZFZhbHVlc1tpXSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGxpbmtlZE5hbWVzW2ldXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSAnZycgKyAodmFyQ291bnRlcisrKVxuICAgIGxpbmtlZE5hbWVzLnB1c2gobmFtZSlcbiAgICBsaW5rZWRWYWx1ZXMucHVzaCh2YWx1ZSlcbiAgICByZXR1cm4gbmFtZVxuICB9XG5cbiAgLy8gY3JlYXRlIGEgY29kZSBibG9ja1xuICBmdW5jdGlvbiBibG9jayAoKSB7XG4gICAgdmFyIGNvZGUgPSBbXVxuICAgIGZ1bmN0aW9uIHB1c2ggKCkge1xuICAgICAgY29kZS5wdXNoLmFwcGx5KGNvZGUsIHNsaWNlKGFyZ3VtZW50cykpXG4gICAgfVxuXG4gICAgdmFyIHZhcnMgPSBbXVxuICAgIGZ1bmN0aW9uIGRlZiAoKSB7XG4gICAgICB2YXIgbmFtZSA9ICd2JyArICh2YXJDb3VudGVyKyspXG4gICAgICB2YXJzLnB1c2gobmFtZSlcblxuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvZGUucHVzaChuYW1lLCAnPScpXG4gICAgICAgIGNvZGUucHVzaC5hcHBseShjb2RlLCBzbGljZShhcmd1bWVudHMpKVxuICAgICAgICBjb2RlLnB1c2goJzsnKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmFtZVxuICAgIH1cblxuICAgIHJldHVybiBleHRlbmQocHVzaCwge1xuICAgICAgZGVmOiBkZWYsXG4gICAgICB0b1N0cmluZzogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gam9pbihbXG4gICAgICAgICAgKHZhcnMubGVuZ3RoID4gMCA/ICd2YXIgJyArIHZhcnMuam9pbignLCcpICsgJzsnIDogJycpLFxuICAgICAgICAgIGpvaW4oY29kZSlcbiAgICAgICAgXSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gc2NvcGUgKCkge1xuICAgIHZhciBlbnRyeSA9IGJsb2NrKClcbiAgICB2YXIgZXhpdCA9IGJsb2NrKClcblxuICAgIHZhciBlbnRyeVRvU3RyaW5nID0gZW50cnkudG9TdHJpbmdcbiAgICB2YXIgZXhpdFRvU3RyaW5nID0gZXhpdC50b1N0cmluZ1xuXG4gICAgZnVuY3Rpb24gc2F2ZSAob2JqZWN0LCBwcm9wKSB7XG4gICAgICBleGl0KG9iamVjdCwgcHJvcCwgJz0nLCBlbnRyeS5kZWYob2JqZWN0LCBwcm9wKSwgJzsnKVxuICAgIH1cblxuICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgZW50cnkuYXBwbHkoZW50cnksIHNsaWNlKGFyZ3VtZW50cykpXG4gICAgfSwge1xuICAgICAgZGVmOiBlbnRyeS5kZWYsXG4gICAgICBlbnRyeTogZW50cnksXG4gICAgICBleGl0OiBleGl0LFxuICAgICAgc2F2ZTogc2F2ZSxcbiAgICAgIHNldDogZnVuY3Rpb24gKG9iamVjdCwgcHJvcCwgdmFsdWUpIHtcbiAgICAgICAgc2F2ZShvYmplY3QsIHByb3ApXG4gICAgICAgIGVudHJ5KG9iamVjdCwgcHJvcCwgJz0nLCB2YWx1ZSwgJzsnKVxuICAgICAgfSxcbiAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBlbnRyeVRvU3RyaW5nKCkgKyBleGl0VG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjb25kaXRpb25hbCAoKSB7XG4gICAgdmFyIHByZWQgPSBqb2luKGFyZ3VtZW50cylcbiAgICB2YXIgdGhlbkJsb2NrID0gc2NvcGUoKVxuICAgIHZhciBlbHNlQmxvY2sgPSBzY29wZSgpXG5cbiAgICB2YXIgdGhlblRvU3RyaW5nID0gdGhlbkJsb2NrLnRvU3RyaW5nXG4gICAgdmFyIGVsc2VUb1N0cmluZyA9IGVsc2VCbG9jay50b1N0cmluZ1xuXG4gICAgcmV0dXJuIGV4dGVuZCh0aGVuQmxvY2ssIHtcbiAgICAgIHRoZW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhlbkJsb2NrLmFwcGx5KHRoZW5CbG9jaywgc2xpY2UoYXJndW1lbnRzKSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH0sXG4gICAgICBlbHNlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVsc2VCbG9jay5hcHBseShlbHNlQmxvY2ssIHNsaWNlKGFyZ3VtZW50cykpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9LFxuICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsc2VDbGF1c2UgPSBlbHNlVG9TdHJpbmcoKVxuICAgICAgICBpZiAoZWxzZUNsYXVzZSkge1xuICAgICAgICAgIGVsc2VDbGF1c2UgPSAnZWxzZXsnICsgZWxzZUNsYXVzZSArICd9J1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqb2luKFtcbiAgICAgICAgICAnaWYoJywgcHJlZCwgJyl7JyxcbiAgICAgICAgICB0aGVuVG9TdHJpbmcoKSxcbiAgICAgICAgICAnfScsIGVsc2VDbGF1c2VcbiAgICAgICAgXSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLy8gcHJvY2VkdXJlIGxpc3RcbiAgdmFyIGdsb2JhbEJsb2NrID0gYmxvY2soKVxuICB2YXIgcHJvY2VkdXJlcyA9IHt9XG4gIGZ1bmN0aW9uIHByb2MgKG5hbWUsIGNvdW50KSB7XG4gICAgdmFyIGFyZ3MgPSBbXVxuICAgIGZ1bmN0aW9uIGFyZyAoKSB7XG4gICAgICB2YXIgbmFtZSA9ICdhJyArIGFyZ3MubGVuZ3RoXG4gICAgICBhcmdzLnB1c2gobmFtZSlcbiAgICAgIHJldHVybiBuYW1lXG4gICAgfVxuXG4gICAgY291bnQgPSBjb3VudCB8fCAwXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7XG4gICAgICBhcmcoKVxuICAgIH1cblxuICAgIHZhciBib2R5ID0gc2NvcGUoKVxuICAgIHZhciBib2R5VG9TdHJpbmcgPSBib2R5LnRvU3RyaW5nXG5cbiAgICB2YXIgcmVzdWx0ID0gcHJvY2VkdXJlc1tuYW1lXSA9IGV4dGVuZChib2R5LCB7XG4gICAgICBhcmc6IGFyZyxcbiAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBqb2luKFtcbiAgICAgICAgICAnZnVuY3Rpb24oJywgYXJncy5qb2luKCksICcpeycsXG4gICAgICAgICAgYm9keVRvU3RyaW5nKCksXG4gICAgICAgICAgJ30nXG4gICAgICAgIF0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBpbGUgKCkge1xuICAgIHZhciBjb2RlID0gWydcInVzZSBzdHJpY3RcIjsnLFxuICAgICAgZ2xvYmFsQmxvY2ssXG4gICAgICAncmV0dXJuIHsnXVxuICAgIE9iamVjdC5rZXlzKHByb2NlZHVyZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGNvZGUucHVzaCgnXCInLCBuYW1lLCAnXCI6JywgcHJvY2VkdXJlc1tuYW1lXS50b1N0cmluZygpLCAnLCcpXG4gICAgfSlcbiAgICBjb2RlLnB1c2goJ30nKVxuICAgIHZhciBzcmMgPSBqb2luKGNvZGUpXG4gICAgICAucmVwbGFjZSgvOy9nLCAnO1xcbicpXG4gICAgICAucmVwbGFjZSgvfS9nLCAnfVxcbicpXG4gICAgICAucmVwbGFjZSgvey9nLCAne1xcbicpXG4gICAgdmFyIHByb2MgPSBGdW5jdGlvbi5hcHBseShudWxsLCBsaW5rZWROYW1lcy5jb25jYXQoc3JjKSlcbiAgICByZXR1cm4gcHJvYy5hcHBseShudWxsLCBsaW5rZWRWYWx1ZXMpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdsb2JhbDogZ2xvYmFsQmxvY2ssXG4gICAgbGluazogbGluayxcbiAgICBibG9jazogYmxvY2ssXG4gICAgcHJvYzogcHJvYyxcbiAgICBzY29wZTogc2NvcGUsXG4gICAgY29uZDogY29uZGl0aW9uYWwsXG4gICAgY29tcGlsZTogY29tcGlsZVxuICB9XG59XG5cbi8vIFwiY3V0ZVwiIG5hbWVzIGZvciB2ZWN0b3IgY29tcG9uZW50c1xudmFyIENVVEVfQ09NUE9ORU5UUyA9ICd4eXp3Jy5zcGxpdCgnJylcblxudmFyIEdMX1VOU0lHTkVEX0JZVEUkOCA9IDUxMjFcblxudmFyIEFUVFJJQl9TVEFURV9QT0lOVEVSID0gMVxudmFyIEFUVFJJQl9TVEFURV9DT05TVEFOVCA9IDJcblxudmFyIERZTl9GVU5DJDEgPSAwXG52YXIgRFlOX1BST1AkMSA9IDFcbnZhciBEWU5fQ09OVEVYVCQxID0gMlxudmFyIERZTl9TVEFURSQxID0gM1xudmFyIERZTl9USFVOSyA9IDRcbnZhciBEWU5fQ09OU1RBTlQkMSA9IDVcbnZhciBEWU5fQVJSQVkkMSA9IDZcblxudmFyIFNfRElUSEVSID0gJ2RpdGhlcidcbnZhciBTX0JMRU5EX0VOQUJMRSA9ICdibGVuZC5lbmFibGUnXG52YXIgU19CTEVORF9DT0xPUiA9ICdibGVuZC5jb2xvcidcbnZhciBTX0JMRU5EX0VRVUFUSU9OID0gJ2JsZW5kLmVxdWF0aW9uJ1xudmFyIFNfQkxFTkRfRlVOQyA9ICdibGVuZC5mdW5jJ1xudmFyIFNfREVQVEhfRU5BQkxFID0gJ2RlcHRoLmVuYWJsZSdcbnZhciBTX0RFUFRIX0ZVTkMgPSAnZGVwdGguZnVuYydcbnZhciBTX0RFUFRIX1JBTkdFID0gJ2RlcHRoLnJhbmdlJ1xudmFyIFNfREVQVEhfTUFTSyA9ICdkZXB0aC5tYXNrJ1xudmFyIFNfQ09MT1JfTUFTSyA9ICdjb2xvck1hc2snXG52YXIgU19DVUxMX0VOQUJMRSA9ICdjdWxsLmVuYWJsZSdcbnZhciBTX0NVTExfRkFDRSA9ICdjdWxsLmZhY2UnXG52YXIgU19GUk9OVF9GQUNFID0gJ2Zyb250RmFjZSdcbnZhciBTX0xJTkVfV0lEVEggPSAnbGluZVdpZHRoJ1xudmFyIFNfUE9MWUdPTl9PRkZTRVRfRU5BQkxFID0gJ3BvbHlnb25PZmZzZXQuZW5hYmxlJ1xudmFyIFNfUE9MWUdPTl9PRkZTRVRfT0ZGU0VUID0gJ3BvbHlnb25PZmZzZXQub2Zmc2V0J1xudmFyIFNfU0FNUExFX0FMUEhBID0gJ3NhbXBsZS5hbHBoYSdcbnZhciBTX1NBTVBMRV9FTkFCTEUgPSAnc2FtcGxlLmVuYWJsZSdcbnZhciBTX1NBTVBMRV9DT1ZFUkFHRSA9ICdzYW1wbGUuY292ZXJhZ2UnXG52YXIgU19TVEVOQ0lMX0VOQUJMRSA9ICdzdGVuY2lsLmVuYWJsZSdcbnZhciBTX1NURU5DSUxfTUFTSyA9ICdzdGVuY2lsLm1hc2snXG52YXIgU19TVEVOQ0lMX0ZVTkMgPSAnc3RlbmNpbC5mdW5jJ1xudmFyIFNfU1RFTkNJTF9PUEZST05UID0gJ3N0ZW5jaWwub3BGcm9udCdcbnZhciBTX1NURU5DSUxfT1BCQUNLID0gJ3N0ZW5jaWwub3BCYWNrJ1xudmFyIFNfU0NJU1NPUl9FTkFCTEUgPSAnc2Npc3Nvci5lbmFibGUnXG52YXIgU19TQ0lTU09SX0JPWCA9ICdzY2lzc29yLmJveCdcbnZhciBTX1ZJRVdQT1JUID0gJ3ZpZXdwb3J0J1xuXG52YXIgU19QUk9GSUxFID0gJ3Byb2ZpbGUnXG5cbnZhciBTX0ZSQU1FQlVGRkVSID0gJ2ZyYW1lYnVmZmVyJ1xudmFyIFNfVkVSVCA9ICd2ZXJ0J1xudmFyIFNfRlJBRyA9ICdmcmFnJ1xudmFyIFNfRUxFTUVOVFMgPSAnZWxlbWVudHMnXG52YXIgU19QUklNSVRJVkUgPSAncHJpbWl0aXZlJ1xudmFyIFNfQ09VTlQgPSAnY291bnQnXG52YXIgU19PRkZTRVQgPSAnb2Zmc2V0J1xudmFyIFNfSU5TVEFOQ0VTID0gJ2luc3RhbmNlcydcbnZhciBTX1ZBTyA9ICd2YW8nXG5cbnZhciBTVUZGSVhfV0lEVEggPSAnV2lkdGgnXG52YXIgU1VGRklYX0hFSUdIVCA9ICdIZWlnaHQnXG5cbnZhciBTX0ZSQU1FQlVGRkVSX1dJRFRIID0gU19GUkFNRUJVRkZFUiArIFNVRkZJWF9XSURUSFxudmFyIFNfRlJBTUVCVUZGRVJfSEVJR0hUID0gU19GUkFNRUJVRkZFUiArIFNVRkZJWF9IRUlHSFRcbnZhciBTX1ZJRVdQT1JUX1dJRFRIID0gU19WSUVXUE9SVCArIFNVRkZJWF9XSURUSFxudmFyIFNfVklFV1BPUlRfSEVJR0hUID0gU19WSUVXUE9SVCArIFNVRkZJWF9IRUlHSFRcbnZhciBTX0RSQVdJTkdCVUZGRVIgPSAnZHJhd2luZ0J1ZmZlcidcbnZhciBTX0RSQVdJTkdCVUZGRVJfV0lEVEggPSBTX0RSQVdJTkdCVUZGRVIgKyBTVUZGSVhfV0lEVEhcbnZhciBTX0RSQVdJTkdCVUZGRVJfSEVJR0hUID0gU19EUkFXSU5HQlVGRkVSICsgU1VGRklYX0hFSUdIVFxuXG52YXIgTkVTVEVEX09QVElPTlMgPSBbXG4gIFNfQkxFTkRfRlVOQyxcbiAgU19CTEVORF9FUVVBVElPTixcbiAgU19TVEVOQ0lMX0ZVTkMsXG4gIFNfU1RFTkNJTF9PUEZST05ULFxuICBTX1NURU5DSUxfT1BCQUNLLFxuICBTX1NBTVBMRV9DT1ZFUkFHRSxcbiAgU19WSUVXUE9SVCxcbiAgU19TQ0lTU09SX0JPWCxcbiAgU19QT0xZR09OX09GRlNFVF9PRkZTRVRcbl1cblxudmFyIEdMX0FSUkFZX0JVRkZFUiQyID0gMzQ5NjJcbnZhciBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiQxID0gMzQ5NjNcblxudmFyIEdMX0ZSQUdNRU5UX1NIQURFUiQxID0gMzU2MzJcbnZhciBHTF9WRVJURVhfU0hBREVSJDEgPSAzNTYzM1xuXG52YXIgR0xfVEVYVFVSRV8yRCQzID0gMHgwREUxXG52YXIgR0xfVEVYVFVSRV9DVUJFX01BUCQyID0gMHg4NTEzXG5cbnZhciBHTF9DVUxMX0ZBQ0UgPSAweDBCNDRcbnZhciBHTF9CTEVORCA9IDB4MEJFMlxudmFyIEdMX0RJVEhFUiA9IDB4MEJEMFxudmFyIEdMX1NURU5DSUxfVEVTVCA9IDB4MEI5MFxudmFyIEdMX0RFUFRIX1RFU1QgPSAweDBCNzFcbnZhciBHTF9TQ0lTU09SX1RFU1QgPSAweDBDMTFcbnZhciBHTF9QT0xZR09OX09GRlNFVF9GSUxMID0gMHg4MDM3XG52YXIgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFID0gMHg4MDlFXG52YXIgR0xfU0FNUExFX0NPVkVSQUdFID0gMHg4MEEwXG5cbnZhciBHTF9GTE9BVCQ4ID0gNTEyNlxudmFyIEdMX0ZMT0FUX1ZFQzIgPSAzNTY2NFxudmFyIEdMX0ZMT0FUX1ZFQzMgPSAzNTY2NVxudmFyIEdMX0ZMT0FUX1ZFQzQgPSAzNTY2NlxudmFyIEdMX0lOVCQzID0gNTEyNFxudmFyIEdMX0lOVF9WRUMyID0gMzU2NjdcbnZhciBHTF9JTlRfVkVDMyA9IDM1NjY4XG52YXIgR0xfSU5UX1ZFQzQgPSAzNTY2OVxudmFyIEdMX0JPT0wgPSAzNTY3MFxudmFyIEdMX0JPT0xfVkVDMiA9IDM1NjcxXG52YXIgR0xfQk9PTF9WRUMzID0gMzU2NzJcbnZhciBHTF9CT09MX1ZFQzQgPSAzNTY3M1xudmFyIEdMX0ZMT0FUX01BVDIgPSAzNTY3NFxudmFyIEdMX0ZMT0FUX01BVDMgPSAzNTY3NVxudmFyIEdMX0ZMT0FUX01BVDQgPSAzNTY3NlxudmFyIEdMX1NBTVBMRVJfMkQgPSAzNTY3OFxudmFyIEdMX1NBTVBMRVJfQ1VCRSA9IDM1NjgwXG5cbnZhciBHTF9UUklBTkdMRVMkMSA9IDRcblxudmFyIEdMX0ZST05UID0gMTAyOFxudmFyIEdMX0JBQ0sgPSAxMDI5XG52YXIgR0xfQ1cgPSAweDA5MDBcbnZhciBHTF9DQ1cgPSAweDA5MDFcbnZhciBHTF9NSU5fRVhUID0gMHg4MDA3XG52YXIgR0xfTUFYX0VYVCA9IDB4ODAwOFxudmFyIEdMX0FMV0FZUyA9IDUxOVxudmFyIEdMX0tFRVAgPSA3NjgwXG52YXIgR0xfWkVSTyA9IDBcbnZhciBHTF9PTkUgPSAxXG52YXIgR0xfRlVOQ19BREQgPSAweDgwMDZcbnZhciBHTF9MRVNTID0gNTEzXG5cbnZhciBHTF9GUkFNRUJVRkZFUiQyID0gMHg4RDQwXG52YXIgR0xfQ09MT1JfQVRUQUNITUVOVDAkMiA9IDB4OENFMFxuXG52YXIgYmxlbmRGdW5jcyA9IHtcbiAgJzAnOiAwLFxuICAnMSc6IDEsXG4gICd6ZXJvJzogMCxcbiAgJ29uZSc6IDEsXG4gICdzcmMgY29sb3InOiA3NjgsXG4gICdvbmUgbWludXMgc3JjIGNvbG9yJzogNzY5LFxuICAnc3JjIGFscGhhJzogNzcwLFxuICAnb25lIG1pbnVzIHNyYyBhbHBoYSc6IDc3MSxcbiAgJ2RzdCBjb2xvcic6IDc3NCxcbiAgJ29uZSBtaW51cyBkc3QgY29sb3InOiA3NzUsXG4gICdkc3QgYWxwaGEnOiA3NzIsXG4gICdvbmUgbWludXMgZHN0IGFscGhhJzogNzczLFxuICAnY29uc3RhbnQgY29sb3InOiAzMjc2OSxcbiAgJ29uZSBtaW51cyBjb25zdGFudCBjb2xvcic6IDMyNzcwLFxuICAnY29uc3RhbnQgYWxwaGEnOiAzMjc3MSxcbiAgJ29uZSBtaW51cyBjb25zdGFudCBhbHBoYSc6IDMyNzcyLFxuICAnc3JjIGFscGhhIHNhdHVyYXRlJzogNzc2XG59XG5cbi8vIFRoZXJlIGFyZSBpbnZhbGlkIHZhbHVlcyBmb3Igc3JjUkdCIGFuZCBkc3RSR0IuIFNlZTpcbi8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzLzEuMC8jNi4xM1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9XZWJHTC9ibG9iLzBkMzIwMWY1ZjdlYzNjMDA2MGJjMWYwNDA3NzQ2MTU0MWYxOTg3YjkvY29uZm9ybWFuY2Utc3VpdGVzLzEuMC4zL2NvbmZvcm1hbmNlL21pc2Mvd2ViZ2wtc3BlY2lmaWMuaHRtbCNMNTZcbnZhciBpbnZhbGlkQmxlbmRDb21iaW5hdGlvbnMgPSBbXG4gICdjb25zdGFudCBjb2xvciwgY29uc3RhbnQgYWxwaGEnLFxuICAnb25lIG1pbnVzIGNvbnN0YW50IGNvbG9yLCBjb25zdGFudCBhbHBoYScsXG4gICdjb25zdGFudCBjb2xvciwgb25lIG1pbnVzIGNvbnN0YW50IGFscGhhJyxcbiAgJ29uZSBtaW51cyBjb25zdGFudCBjb2xvciwgb25lIG1pbnVzIGNvbnN0YW50IGFscGhhJyxcbiAgJ2NvbnN0YW50IGFscGhhLCBjb25zdGFudCBjb2xvcicsXG4gICdjb25zdGFudCBhbHBoYSwgb25lIG1pbnVzIGNvbnN0YW50IGNvbG9yJyxcbiAgJ29uZSBtaW51cyBjb25zdGFudCBhbHBoYSwgY29uc3RhbnQgY29sb3InLFxuICAnb25lIG1pbnVzIGNvbnN0YW50IGFscGhhLCBvbmUgbWludXMgY29uc3RhbnQgY29sb3InXG5dXG5cbnZhciBjb21wYXJlRnVuY3MgPSB7XG4gICduZXZlcic6IDUxMixcbiAgJ2xlc3MnOiA1MTMsXG4gICc8JzogNTEzLFxuICAnZXF1YWwnOiA1MTQsXG4gICc9JzogNTE0LFxuICAnPT0nOiA1MTQsXG4gICc9PT0nOiA1MTQsXG4gICdsZXF1YWwnOiA1MTUsXG4gICc8PSc6IDUxNSxcbiAgJ2dyZWF0ZXInOiA1MTYsXG4gICc+JzogNTE2LFxuICAnbm90ZXF1YWwnOiA1MTcsXG4gICchPSc6IDUxNyxcbiAgJyE9PSc6IDUxNyxcbiAgJ2dlcXVhbCc6IDUxOCxcbiAgJz49JzogNTE4LFxuICAnYWx3YXlzJzogNTE5XG59XG5cbnZhciBzdGVuY2lsT3BzID0ge1xuICAnMCc6IDAsXG4gICd6ZXJvJzogMCxcbiAgJ2tlZXAnOiA3NjgwLFxuICAncmVwbGFjZSc6IDc2ODEsXG4gICdpbmNyZW1lbnQnOiA3NjgyLFxuICAnZGVjcmVtZW50JzogNzY4MyxcbiAgJ2luY3JlbWVudCB3cmFwJzogMzQwNTUsXG4gICdkZWNyZW1lbnQgd3JhcCc6IDM0MDU2LFxuICAnaW52ZXJ0JzogNTM4NlxufVxuXG52YXIgc2hhZGVyVHlwZSA9IHtcbiAgJ2ZyYWcnOiBHTF9GUkFHTUVOVF9TSEFERVIkMSxcbiAgJ3ZlcnQnOiBHTF9WRVJURVhfU0hBREVSJDFcbn1cblxudmFyIG9yaWVudGF0aW9uVHlwZSA9IHtcbiAgJ2N3JzogR0xfQ1csXG4gICdjY3cnOiBHTF9DQ1dcbn1cblxuZnVuY3Rpb24gaXNCdWZmZXJBcmdzICh4KSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHgpIHx8XG4gICAgaXNUeXBlZEFycmF5KHgpIHx8XG4gICAgaXNOREFycmF5TGlrZSh4KVxufVxuXG4vLyBNYWtlIHN1cmUgdmlld3BvcnQgaXMgcHJvY2Vzc2VkIGZpcnN0XG5mdW5jdGlvbiBzb3J0U3RhdGUgKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgaWYgKGEgPT09IFNfVklFV1BPUlQpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH0gZWxzZSBpZiAoYiA9PT0gU19WSUVXUE9SVCkge1xuICAgICAgcmV0dXJuIDFcbiAgICB9XG4gICAgcmV0dXJuIChhIDwgYikgPyAtMSA6IDFcbiAgfSlcbn1cblxuZnVuY3Rpb24gRGVjbGFyYXRpb24gKHRoaXNEZXAsIGNvbnRleHREZXAsIHByb3BEZXAsIGFwcGVuZCkge1xuICB0aGlzLnRoaXNEZXAgPSB0aGlzRGVwXG4gIHRoaXMuY29udGV4dERlcCA9IGNvbnRleHREZXBcbiAgdGhpcy5wcm9wRGVwID0gcHJvcERlcFxuICB0aGlzLmFwcGVuZCA9IGFwcGVuZFxufVxuXG5mdW5jdGlvbiBpc1N0YXRpYyAoZGVjbCkge1xuICByZXR1cm4gZGVjbCAmJiAhKGRlY2wudGhpc0RlcCB8fCBkZWNsLmNvbnRleHREZXAgfHwgZGVjbC5wcm9wRGVwKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdGF0aWNEZWNsIChhcHBlbmQpIHtcbiAgcmV0dXJuIG5ldyBEZWNsYXJhdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBhcHBlbmQpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUR5bmFtaWNEZWNsIChkeW4sIGFwcGVuZCkge1xuICB2YXIgdHlwZSA9IGR5bi50eXBlXG4gIGlmICh0eXBlID09PSBEWU5fRlVOQyQxKSB7XG4gICAgdmFyIG51bUFyZ3MgPSBkeW4uZGF0YS5sZW5ndGhcbiAgICByZXR1cm4gbmV3IERlY2xhcmF0aW9uKFxuICAgICAgdHJ1ZSxcbiAgICAgIG51bUFyZ3MgPj0gMSxcbiAgICAgIG51bUFyZ3MgPj0gMixcbiAgICAgIGFwcGVuZClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBEWU5fVEhVTkspIHtcbiAgICB2YXIgZGF0YSA9IGR5bi5kYXRhXG4gICAgcmV0dXJuIG5ldyBEZWNsYXJhdGlvbihcbiAgICAgIGRhdGEudGhpc0RlcCxcbiAgICAgIGRhdGEuY29udGV4dERlcCxcbiAgICAgIGRhdGEucHJvcERlcCxcbiAgICAgIGFwcGVuZClcbiAgfSBlbHNlIGlmICh0eXBlID09PSBEWU5fQ09OU1RBTlQkMSkge1xuICAgIHJldHVybiBuZXcgRGVjbGFyYXRpb24oXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICAgZmFsc2UsXG4gICAgICBhcHBlbmQpXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gRFlOX0FSUkFZJDEpIHtcbiAgICB2YXIgdGhpc0RlcCA9IGZhbHNlXG4gICAgdmFyIGNvbnRleHREZXAgPSBmYWxzZVxuICAgIHZhciBwcm9wRGVwID0gZmFsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGR5bi5kYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgc3ViRHluID0gZHluLmRhdGFbaV1cbiAgICAgIGlmIChzdWJEeW4udHlwZSA9PT0gRFlOX1BST1AkMSkge1xuICAgICAgICBwcm9wRGVwID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChzdWJEeW4udHlwZSA9PT0gRFlOX0NPTlRFWFQkMSkge1xuICAgICAgICBjb250ZXh0RGVwID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChzdWJEeW4udHlwZSA9PT0gRFlOX1NUQVRFJDEpIHtcbiAgICAgICAgdGhpc0RlcCA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoc3ViRHluLnR5cGUgPT09IERZTl9GVU5DJDEpIHtcbiAgICAgICAgdGhpc0RlcCA9IHRydWVcbiAgICAgICAgdmFyIHN1YkFyZ3MgPSBzdWJEeW4uZGF0YVxuICAgICAgICBpZiAoc3ViQXJncyA+PSAxKSB7XG4gICAgICAgICAgY29udGV4dERlcCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3ViQXJncyA+PSAyKSB7XG4gICAgICAgICAgcHJvcERlcCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdWJEeW4udHlwZSA9PT0gRFlOX1RIVU5LKSB7XG4gICAgICAgIHRoaXNEZXAgPSB0aGlzRGVwIHx8IHN1YkR5bi5kYXRhLnRoaXNEZXBcbiAgICAgICAgY29udGV4dERlcCA9IGNvbnRleHREZXAgfHwgc3ViRHluLmRhdGEuY29udGV4dERlcFxuICAgICAgICBwcm9wRGVwID0gcHJvcERlcCB8fCBzdWJEeW4uZGF0YS5wcm9wRGVwXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGVjbGFyYXRpb24oXG4gICAgICB0aGlzRGVwLFxuICAgICAgY29udGV4dERlcCxcbiAgICAgIHByb3BEZXAsXG4gICAgICBhcHBlbmQpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEZWNsYXJhdGlvbihcbiAgICAgIHR5cGUgPT09IERZTl9TVEFURSQxLFxuICAgICAgdHlwZSA9PT0gRFlOX0NPTlRFWFQkMSxcbiAgICAgIHR5cGUgPT09IERZTl9QUk9QJDEsXG4gICAgICBhcHBlbmQpXG4gIH1cbn1cblxudmFyIFNDT1BFX0RFQ0wgPSBuZXcgRGVjbGFyYXRpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSwgZnVuY3Rpb24gKCkge30pXG5cbmZ1bmN0aW9uIHJlZ2xDb3JlIChcbiAgZ2wsXG4gIHN0cmluZ1N0b3JlLFxuICBleHRlbnNpb25zLFxuICBsaW1pdHMsXG4gIGJ1ZmZlclN0YXRlLFxuICBlbGVtZW50U3RhdGUsXG4gIHRleHR1cmVTdGF0ZSxcbiAgZnJhbWVidWZmZXJTdGF0ZSxcbiAgdW5pZm9ybVN0YXRlLFxuICBhdHRyaWJ1dGVTdGF0ZSxcbiAgc2hhZGVyU3RhdGUsXG4gIGRyYXdTdGF0ZSxcbiAgY29udGV4dFN0YXRlLFxuICB0aW1lcixcbiAgY29uZmlnKSB7XG4gIHZhciBBdHRyaWJ1dGVSZWNvcmQgPSBhdHRyaWJ1dGVTdGF0ZS5SZWNvcmRcblxuICB2YXIgYmxlbmRFcXVhdGlvbnMgPSB7XG4gICAgJ2FkZCc6IDMyNzc0LFxuICAgICdzdWJ0cmFjdCc6IDMyNzc4LFxuICAgICdyZXZlcnNlIHN1YnRyYWN0JzogMzI3NzlcbiAgfVxuICBpZiAoZXh0ZW5zaW9ucy5leHRfYmxlbmRfbWlubWF4KSB7XG4gICAgYmxlbmRFcXVhdGlvbnMubWluID0gR0xfTUlOX0VYVFxuICAgIGJsZW5kRXF1YXRpb25zLm1heCA9IEdMX01BWF9FWFRcbiAgfVxuXG4gIHZhciBleHRJbnN0YW5jaW5nID0gZXh0ZW5zaW9ucy5hbmdsZV9pbnN0YW5jZWRfYXJyYXlzXG4gIHZhciBleHREcmF3QnVmZmVycyA9IGV4dGVuc2lvbnMud2ViZ2xfZHJhd19idWZmZXJzXG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBXRUJHTCBTVEFURVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHZhciBjdXJyZW50U3RhdGUgPSB7XG4gICAgZGlydHk6IHRydWUsXG4gICAgcHJvZmlsZTogY29uZmlnLnByb2ZpbGVcbiAgfVxuICB2YXIgbmV4dFN0YXRlID0ge31cbiAgdmFyIEdMX1NUQVRFX05BTUVTID0gW11cbiAgdmFyIEdMX0ZMQUdTID0ge31cbiAgdmFyIEdMX1ZBUklBQkxFUyA9IHt9XG5cbiAgZnVuY3Rpb24gcHJvcE5hbWUgKG5hbWUpIHtcbiAgICByZXR1cm4gbmFtZS5yZXBsYWNlKCcuJywgJ18nKVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhdGVGbGFnIChzbmFtZSwgY2FwLCBpbml0KSB7XG4gICAgdmFyIG5hbWUgPSBwcm9wTmFtZShzbmFtZSlcbiAgICBHTF9TVEFURV9OQU1FUy5wdXNoKHNuYW1lKVxuICAgIG5leHRTdGF0ZVtuYW1lXSA9IGN1cnJlbnRTdGF0ZVtuYW1lXSA9ICEhaW5pdFxuICAgIEdMX0ZMQUdTW25hbWVdID0gY2FwXG4gIH1cblxuICBmdW5jdGlvbiBzdGF0ZVZhcmlhYmxlIChzbmFtZSwgZnVuYywgaW5pdCkge1xuICAgIHZhciBuYW1lID0gcHJvcE5hbWUoc25hbWUpXG4gICAgR0xfU1RBVEVfTkFNRVMucHVzaChzbmFtZSlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbml0KSkge1xuICAgICAgY3VycmVudFN0YXRlW25hbWVdID0gaW5pdC5zbGljZSgpXG4gICAgICBuZXh0U3RhdGVbbmFtZV0gPSBpbml0LnNsaWNlKClcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFN0YXRlW25hbWVdID0gbmV4dFN0YXRlW25hbWVdID0gaW5pdFxuICAgIH1cbiAgICBHTF9WQVJJQUJMRVNbbmFtZV0gPSBmdW5jXG4gIH1cblxuICAvLyBEaXRoZXJpbmdcbiAgc3RhdGVGbGFnKFNfRElUSEVSLCBHTF9ESVRIRVIpXG5cbiAgLy8gQmxlbmRpbmdcbiAgc3RhdGVGbGFnKFNfQkxFTkRfRU5BQkxFLCBHTF9CTEVORClcbiAgc3RhdGVWYXJpYWJsZShTX0JMRU5EX0NPTE9SLCAnYmxlbmRDb2xvcicsIFswLCAwLCAwLCAwXSlcbiAgc3RhdGVWYXJpYWJsZShTX0JMRU5EX0VRVUFUSU9OLCAnYmxlbmRFcXVhdGlvblNlcGFyYXRlJyxcbiAgICBbR0xfRlVOQ19BREQsIEdMX0ZVTkNfQUREXSlcbiAgc3RhdGVWYXJpYWJsZShTX0JMRU5EX0ZVTkMsICdibGVuZEZ1bmNTZXBhcmF0ZScsXG4gICAgW0dMX09ORSwgR0xfWkVSTywgR0xfT05FLCBHTF9aRVJPXSlcblxuICAvLyBEZXB0aFxuICBzdGF0ZUZsYWcoU19ERVBUSF9FTkFCTEUsIEdMX0RFUFRIX1RFU1QsIHRydWUpXG4gIHN0YXRlVmFyaWFibGUoU19ERVBUSF9GVU5DLCAnZGVwdGhGdW5jJywgR0xfTEVTUylcbiAgc3RhdGVWYXJpYWJsZShTX0RFUFRIX1JBTkdFLCAnZGVwdGhSYW5nZScsIFswLCAxXSlcbiAgc3RhdGVWYXJpYWJsZShTX0RFUFRIX01BU0ssICdkZXB0aE1hc2snLCB0cnVlKVxuXG4gIC8vIENvbG9yIG1hc2tcbiAgc3RhdGVWYXJpYWJsZShTX0NPTE9SX01BU0ssIFNfQ09MT1JfTUFTSywgW3RydWUsIHRydWUsIHRydWUsIHRydWVdKVxuXG4gIC8vIEZhY2UgY3VsbGluZ1xuICBzdGF0ZUZsYWcoU19DVUxMX0VOQUJMRSwgR0xfQ1VMTF9GQUNFKVxuICBzdGF0ZVZhcmlhYmxlKFNfQ1VMTF9GQUNFLCAnY3VsbEZhY2UnLCBHTF9CQUNLKVxuXG4gIC8vIEZyb250IGZhY2Ugb3JpZW50YXRpb25cbiAgc3RhdGVWYXJpYWJsZShTX0ZST05UX0ZBQ0UsIFNfRlJPTlRfRkFDRSwgR0xfQ0NXKVxuXG4gIC8vIExpbmUgd2lkdGhcbiAgc3RhdGVWYXJpYWJsZShTX0xJTkVfV0lEVEgsIFNfTElORV9XSURUSCwgMSlcblxuICAvLyBQb2x5Z29uIG9mZnNldFxuICBzdGF0ZUZsYWcoU19QT0xZR09OX09GRlNFVF9FTkFCTEUsIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwpXG4gIHN0YXRlVmFyaWFibGUoU19QT0xZR09OX09GRlNFVF9PRkZTRVQsICdwb2x5Z29uT2Zmc2V0JywgWzAsIDBdKVxuXG4gIC8vIFNhbXBsZSBjb3ZlcmFnZVxuICBzdGF0ZUZsYWcoU19TQU1QTEVfQUxQSEEsIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSlcbiAgc3RhdGVGbGFnKFNfU0FNUExFX0VOQUJMRSwgR0xfU0FNUExFX0NPVkVSQUdFKVxuICBzdGF0ZVZhcmlhYmxlKFNfU0FNUExFX0NPVkVSQUdFLCAnc2FtcGxlQ292ZXJhZ2UnLCBbMSwgZmFsc2VdKVxuXG4gIC8vIFN0ZW5jaWxcbiAgc3RhdGVGbGFnKFNfU1RFTkNJTF9FTkFCTEUsIEdMX1NURU5DSUxfVEVTVClcbiAgc3RhdGVWYXJpYWJsZShTX1NURU5DSUxfTUFTSywgJ3N0ZW5jaWxNYXNrJywgLTEpXG4gIHN0YXRlVmFyaWFibGUoU19TVEVOQ0lMX0ZVTkMsICdzdGVuY2lsRnVuYycsIFtHTF9BTFdBWVMsIDAsIC0xXSlcbiAgc3RhdGVWYXJpYWJsZShTX1NURU5DSUxfT1BGUk9OVCwgJ3N0ZW5jaWxPcFNlcGFyYXRlJyxcbiAgICBbR0xfRlJPTlQsIEdMX0tFRVAsIEdMX0tFRVAsIEdMX0tFRVBdKVxuICBzdGF0ZVZhcmlhYmxlKFNfU1RFTkNJTF9PUEJBQ0ssICdzdGVuY2lsT3BTZXBhcmF0ZScsXG4gICAgW0dMX0JBQ0ssIEdMX0tFRVAsIEdMX0tFRVAsIEdMX0tFRVBdKVxuXG4gIC8vIFNjaXNzb3JcbiAgc3RhdGVGbGFnKFNfU0NJU1NPUl9FTkFCTEUsIEdMX1NDSVNTT1JfVEVTVClcbiAgc3RhdGVWYXJpYWJsZShTX1NDSVNTT1JfQk9YLCAnc2Npc3NvcicsXG4gICAgWzAsIDAsIGdsLmRyYXdpbmdCdWZmZXJXaWR0aCwgZ2wuZHJhd2luZ0J1ZmZlckhlaWdodF0pXG5cbiAgLy8gVmlld3BvcnRcbiAgc3RhdGVWYXJpYWJsZShTX1ZJRVdQT1JULCBTX1ZJRVdQT1JULFxuICAgIFswLCAwLCBnbC5kcmF3aW5nQnVmZmVyV2lkdGgsIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHRdKVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRU5WSVJPTk1FTlRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICB2YXIgc2hhcmVkU3RhdGUgPSB7XG4gICAgZ2w6IGdsLFxuICAgIGNvbnRleHQ6IGNvbnRleHRTdGF0ZSxcbiAgICBzdHJpbmdzOiBzdHJpbmdTdG9yZSxcbiAgICBuZXh0OiBuZXh0U3RhdGUsXG4gICAgY3VycmVudDogY3VycmVudFN0YXRlLFxuICAgIGRyYXc6IGRyYXdTdGF0ZSxcbiAgICBlbGVtZW50czogZWxlbWVudFN0YXRlLFxuICAgIGJ1ZmZlcjogYnVmZmVyU3RhdGUsXG4gICAgc2hhZGVyOiBzaGFkZXJTdGF0ZSxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVTdGF0ZS5zdGF0ZSxcbiAgICB2YW86IGF0dHJpYnV0ZVN0YXRlLFxuICAgIHVuaWZvcm1zOiB1bmlmb3JtU3RhdGUsXG4gICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyU3RhdGUsXG4gICAgZXh0ZW5zaW9uczogZXh0ZW5zaW9ucyxcblxuICAgIHRpbWVyOiB0aW1lcixcbiAgICBpc0J1ZmZlckFyZ3M6IGlzQnVmZmVyQXJnc1xuICB9XG5cbiAgdmFyIHNoYXJlZENvbnN0YW50cyA9IHtcbiAgICBwcmltVHlwZXM6IHByaW1UeXBlcyxcbiAgICBjb21wYXJlRnVuY3M6IGNvbXBhcmVGdW5jcyxcbiAgICBibGVuZEZ1bmNzOiBibGVuZEZ1bmNzLFxuICAgIGJsZW5kRXF1YXRpb25zOiBibGVuZEVxdWF0aW9ucyxcbiAgICBzdGVuY2lsT3BzOiBzdGVuY2lsT3BzLFxuICAgIGdsVHlwZXM6IGdsVHlwZXMsXG4gICAgb3JpZW50YXRpb25UeXBlOiBvcmllbnRhdGlvblR5cGVcbiAgfVxuXG4gIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgIHNoYXJlZFN0YXRlLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2VcbiAgfSlcblxuICBpZiAoZXh0RHJhd0J1ZmZlcnMpIHtcbiAgICBzaGFyZWRDb25zdGFudHMuYmFja0J1ZmZlciA9IFtHTF9CQUNLXVxuICAgIHNoYXJlZENvbnN0YW50cy5kcmF3QnVmZmVyID0gbG9vcChsaW1pdHMubWF4RHJhd2J1ZmZlcnMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gWzBdXG4gICAgICB9XG4gICAgICByZXR1cm4gbG9vcChpLCBmdW5jdGlvbiAoaikge1xuICAgICAgICByZXR1cm4gR0xfQ09MT1JfQVRUQUNITUVOVDAkMiArIGpcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHZhciBkcmF3Q2FsbENvdW50ZXIgPSAwXG4gIGZ1bmN0aW9uIGNyZWF0ZVJFR0xFbnZpcm9ubWVudCAoKSB7XG4gICAgdmFyIGVudiA9IGNyZWF0ZUVudmlyb25tZW50KClcbiAgICB2YXIgbGluayA9IGVudi5saW5rXG4gICAgdmFyIGdsb2JhbCA9IGVudi5nbG9iYWxcbiAgICBlbnYuaWQgPSBkcmF3Q2FsbENvdW50ZXIrK1xuXG4gICAgZW52LmJhdGNoSWQgPSAnMCdcblxuICAgIC8vIGxpbmsgc2hhcmVkIHN0YXRlXG4gICAgdmFyIFNIQVJFRCA9IGxpbmsoc2hhcmVkU3RhdGUpXG4gICAgdmFyIHNoYXJlZCA9IGVudi5zaGFyZWQgPSB7XG4gICAgICBwcm9wczogJ2EwJ1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhzaGFyZWRTdGF0ZSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgc2hhcmVkW3Byb3BdID0gZ2xvYmFsLmRlZihTSEFSRUQsICcuJywgcHJvcClcbiAgICB9KVxuXG4gICAgLy8gSW5qZWN0IHJ1bnRpbWUgYXNzZXJ0aW9uIHN0dWZmIGZvciBkZWJ1ZyBidWlsZHNcbiAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIGVudi5DSEVDSyA9IGxpbmsoY2hlY2skMSlcbiAgICAgIGVudi5jb21tYW5kU3RyID0gY2hlY2skMS5ndWVzc0NvbW1hbmQoKVxuICAgICAgZW52LmNvbW1hbmQgPSBsaW5rKGVudi5jb21tYW5kU3RyKVxuICAgICAgZW52LmFzc2VydCA9IGZ1bmN0aW9uIChibG9jaywgcHJlZCwgbWVzc2FnZSkge1xuICAgICAgICBibG9jayhcbiAgICAgICAgICAnaWYoISgnLCBwcmVkLCAnKSknLFxuICAgICAgICAgIHRoaXMuQ0hFQ0ssICcuY29tbWFuZFJhaXNlKCcsIGxpbmsobWVzc2FnZSksICcsJywgdGhpcy5jb21tYW5kLCAnKTsnKVxuICAgICAgfVxuXG4gICAgICBzaGFyZWRDb25zdGFudHMuaW52YWxpZEJsZW5kQ29tYmluYXRpb25zID0gaW52YWxpZEJsZW5kQ29tYmluYXRpb25zXG4gICAgfSlcblxuICAgIC8vIENvcHkgR0wgc3RhdGUgdmFyaWFibGVzIG92ZXJcbiAgICB2YXIgbmV4dFZhcnMgPSBlbnYubmV4dCA9IHt9XG4gICAgdmFyIGN1cnJlbnRWYXJzID0gZW52LmN1cnJlbnQgPSB7fVxuICAgIE9iamVjdC5rZXlzKEdMX1ZBUklBQkxFUykuZm9yRWFjaChmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRTdGF0ZVt2YXJpYWJsZV0pKSB7XG4gICAgICAgIG5leHRWYXJzW3ZhcmlhYmxlXSA9IGdsb2JhbC5kZWYoc2hhcmVkLm5leHQsICcuJywgdmFyaWFibGUpXG4gICAgICAgIGN1cnJlbnRWYXJzW3ZhcmlhYmxlXSA9IGdsb2JhbC5kZWYoc2hhcmVkLmN1cnJlbnQsICcuJywgdmFyaWFibGUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEluaXRpYWxpemUgc2hhcmVkIGNvbnN0YW50c1xuICAgIHZhciBjb25zdGFudHMgPSBlbnYuY29uc3RhbnRzID0ge31cbiAgICBPYmplY3Qua2V5cyhzaGFyZWRDb25zdGFudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGNvbnN0YW50c1tuYW1lXSA9IGdsb2JhbC5kZWYoSlNPTi5zdHJpbmdpZnkoc2hhcmVkQ29uc3RhbnRzW25hbWVdKSlcbiAgICB9KVxuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBjYWxsaW5nIGEgYmxvY2tcbiAgICBlbnYuaW52b2tlID0gZnVuY3Rpb24gKGJsb2NrLCB4KSB7XG4gICAgICBzd2l0Y2ggKHgudHlwZSkge1xuICAgICAgICBjYXNlIERZTl9GVU5DJDE6XG4gICAgICAgICAgdmFyIGFyZ0xpc3QgPSBbXG4gICAgICAgICAgICAndGhpcycsXG4gICAgICAgICAgICBzaGFyZWQuY29udGV4dCxcbiAgICAgICAgICAgIHNoYXJlZC5wcm9wcyxcbiAgICAgICAgICAgIGVudi5iYXRjaElkXG4gICAgICAgICAgXVxuICAgICAgICAgIHJldHVybiBibG9jay5kZWYoXG4gICAgICAgICAgICBsaW5rKHguZGF0YSksICcuY2FsbCgnLFxuICAgICAgICAgICAgYXJnTGlzdC5zbGljZSgwLCBNYXRoLm1heCh4LmRhdGEubGVuZ3RoICsgMSwgNCkpLFxuICAgICAgICAgICAgJyknKVxuICAgICAgICBjYXNlIERZTl9QUk9QJDE6XG4gICAgICAgICAgcmV0dXJuIGJsb2NrLmRlZihzaGFyZWQucHJvcHMsIHguZGF0YSlcbiAgICAgICAgY2FzZSBEWU5fQ09OVEVYVCQxOlxuICAgICAgICAgIHJldHVybiBibG9jay5kZWYoc2hhcmVkLmNvbnRleHQsIHguZGF0YSlcbiAgICAgICAgY2FzZSBEWU5fU1RBVEUkMTpcbiAgICAgICAgICByZXR1cm4gYmxvY2suZGVmKCd0aGlzJywgeC5kYXRhKVxuICAgICAgICBjYXNlIERZTl9USFVOSzpcbiAgICAgICAgICB4LmRhdGEuYXBwZW5kKGVudiwgYmxvY2spXG4gICAgICAgICAgcmV0dXJuIHguZGF0YS5yZWZcbiAgICAgICAgY2FzZSBEWU5fQ09OU1RBTlQkMTpcbiAgICAgICAgICByZXR1cm4geC5kYXRhLnRvU3RyaW5nKClcbiAgICAgICAgY2FzZSBEWU5fQVJSQVkkMTpcbiAgICAgICAgICByZXR1cm4geC5kYXRhLm1hcChmdW5jdGlvbiAoeSkge1xuICAgICAgICAgICAgcmV0dXJuIGVudi5pbnZva2UoYmxvY2ssIHkpXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbnYuYXR0cmliQ2FjaGUgPSB7fVxuXG4gICAgdmFyIHNjb3BlQXR0cmlicyA9IHt9XG4gICAgZW52LnNjb3BlQXR0cmliID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBpZCA9IHN0cmluZ1N0b3JlLmlkKG5hbWUpXG4gICAgICBpZiAoaWQgaW4gc2NvcGVBdHRyaWJzKSB7XG4gICAgICAgIHJldHVybiBzY29wZUF0dHJpYnNbaWRdXG4gICAgICB9XG4gICAgICB2YXIgYmluZGluZyA9IGF0dHJpYnV0ZVN0YXRlLnNjb3BlW2lkXVxuICAgICAgaWYgKCFiaW5kaW5nKSB7XG4gICAgICAgIGJpbmRpbmcgPSBhdHRyaWJ1dGVTdGF0ZS5zY29wZVtpZF0gPSBuZXcgQXR0cmlidXRlUmVjb3JkKClcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzY29wZUF0dHJpYnNbaWRdID0gbGluayhiaW5kaW5nKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiBlbnZcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUEFSU0lOR1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGZ1bmN0aW9uIHBhcnNlUHJvZmlsZSAob3B0aW9ucykge1xuICAgIHZhciBzdGF0aWNPcHRpb25zID0gb3B0aW9ucy5zdGF0aWNcbiAgICB2YXIgZHluYW1pY09wdGlvbnMgPSBvcHRpb25zLmR5bmFtaWNcblxuICAgIHZhciBwcm9maWxlRW5hYmxlXG4gICAgaWYgKFNfUFJPRklMRSBpbiBzdGF0aWNPcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWUgPSAhIXN0YXRpY09wdGlvbnNbU19QUk9GSUxFXVxuICAgICAgcHJvZmlsZUVuYWJsZSA9IGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICB9KVxuICAgICAgcHJvZmlsZUVuYWJsZS5lbmFibGUgPSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAoU19QUk9GSUxFIGluIGR5bmFtaWNPcHRpb25zKSB7XG4gICAgICB2YXIgZHluID0gZHluYW1pY09wdGlvbnNbU19QUk9GSUxFXVxuICAgICAgcHJvZmlsZUVuYWJsZSA9IGNyZWF0ZUR5bmFtaWNEZWNsKGR5biwgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgcmV0dXJuIGVudi5pbnZva2Uoc2NvcGUsIGR5bilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2ZpbGVFbmFibGVcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlRnJhbWVidWZmZXIgKG9wdGlvbnMsIGVudikge1xuICAgIHZhciBzdGF0aWNPcHRpb25zID0gb3B0aW9ucy5zdGF0aWNcbiAgICB2YXIgZHluYW1pY09wdGlvbnMgPSBvcHRpb25zLmR5bmFtaWNcblxuICAgIGlmIChTX0ZSQU1FQlVGRkVSIGluIHN0YXRpY09wdGlvbnMpIHtcbiAgICAgIHZhciBmcmFtZWJ1ZmZlciA9IHN0YXRpY09wdGlvbnNbU19GUkFNRUJVRkZFUl1cbiAgICAgIGlmIChmcmFtZWJ1ZmZlcikge1xuICAgICAgICBmcmFtZWJ1ZmZlciA9IGZyYW1lYnVmZmVyU3RhdGUuZ2V0RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpXG4gICAgICAgIGNoZWNrJDEuY29tbWFuZChmcmFtZWJ1ZmZlciwgJ2ludmFsaWQgZnJhbWVidWZmZXIgb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudiwgYmxvY2spIHtcbiAgICAgICAgICB2YXIgRlJBTUVCVUZGRVIgPSBlbnYubGluayhmcmFtZWJ1ZmZlcilcbiAgICAgICAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuICAgICAgICAgIGJsb2NrLnNldChcbiAgICAgICAgICAgIHNoYXJlZC5mcmFtZWJ1ZmZlcixcbiAgICAgICAgICAgICcubmV4dCcsXG4gICAgICAgICAgICBGUkFNRUJVRkZFUilcbiAgICAgICAgICB2YXIgQ09OVEVYVCA9IHNoYXJlZC5jb250ZXh0XG4gICAgICAgICAgYmxvY2suc2V0KFxuICAgICAgICAgICAgQ09OVEVYVCxcbiAgICAgICAgICAgICcuJyArIFNfRlJBTUVCVUZGRVJfV0lEVEgsXG4gICAgICAgICAgICBGUkFNRUJVRkZFUiArICcud2lkdGgnKVxuICAgICAgICAgIGJsb2NrLnNldChcbiAgICAgICAgICAgIENPTlRFWFQsXG4gICAgICAgICAgICAnLicgKyBTX0ZSQU1FQlVGRkVSX0hFSUdIVCxcbiAgICAgICAgICAgIEZSQU1FQlVGRkVSICsgJy5oZWlnaHQnKVxuICAgICAgICAgIHJldHVybiBGUkFNRUJVRkZFUlxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuICAgICAgICAgIHNjb3BlLnNldChcbiAgICAgICAgICAgIHNoYXJlZC5mcmFtZWJ1ZmZlcixcbiAgICAgICAgICAgICcubmV4dCcsXG4gICAgICAgICAgICAnbnVsbCcpXG4gICAgICAgICAgdmFyIENPTlRFWFQgPSBzaGFyZWQuY29udGV4dFxuICAgICAgICAgIHNjb3BlLnNldChcbiAgICAgICAgICAgIENPTlRFWFQsXG4gICAgICAgICAgICAnLicgKyBTX0ZSQU1FQlVGRkVSX1dJRFRILFxuICAgICAgICAgICAgQ09OVEVYVCArICcuJyArIFNfRFJBV0lOR0JVRkZFUl9XSURUSClcbiAgICAgICAgICBzY29wZS5zZXQoXG4gICAgICAgICAgICBDT05URVhULFxuICAgICAgICAgICAgJy4nICsgU19GUkFNRUJVRkZFUl9IRUlHSFQsXG4gICAgICAgICAgICBDT05URVhUICsgJy4nICsgU19EUkFXSU5HQlVGRkVSX0hFSUdIVClcbiAgICAgICAgICByZXR1cm4gJ251bGwnXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChTX0ZSQU1FQlVGRkVSIGluIGR5bmFtaWNPcHRpb25zKSB7XG4gICAgICB2YXIgZHluID0gZHluYW1pY09wdGlvbnNbU19GUkFNRUJVRkZFUl1cbiAgICAgIHJldHVybiBjcmVhdGVEeW5hbWljRGVjbChkeW4sIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgIHZhciBGUkFNRUJVRkZFUl9GVU5DID0gZW52Lmludm9rZShzY29wZSwgZHluKVxuICAgICAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuICAgICAgICB2YXIgRlJBTUVCVUZGRVJfU1RBVEUgPSBzaGFyZWQuZnJhbWVidWZmZXJcbiAgICAgICAgdmFyIEZSQU1FQlVGRkVSID0gc2NvcGUuZGVmKFxuICAgICAgICAgIEZSQU1FQlVGRkVSX1NUQVRFLCAnLmdldEZyYW1lYnVmZmVyKCcsIEZSQU1FQlVGRkVSX0ZVTkMsICcpJylcblxuICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgJyEnICsgRlJBTUVCVUZGRVJfRlVOQyArICd8fCcgKyBGUkFNRUJVRkZFUixcbiAgICAgICAgICAgICdpbnZhbGlkIGZyYW1lYnVmZmVyIG9iamVjdCcpXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2NvcGUuc2V0KFxuICAgICAgICAgIEZSQU1FQlVGRkVSX1NUQVRFLFxuICAgICAgICAgICcubmV4dCcsXG4gICAgICAgICAgRlJBTUVCVUZGRVIpXG4gICAgICAgIHZhciBDT05URVhUID0gc2hhcmVkLmNvbnRleHRcbiAgICAgICAgc2NvcGUuc2V0KFxuICAgICAgICAgIENPTlRFWFQsXG4gICAgICAgICAgJy4nICsgU19GUkFNRUJVRkZFUl9XSURUSCxcbiAgICAgICAgICBGUkFNRUJVRkZFUiArICc/JyArIEZSQU1FQlVGRkVSICsgJy53aWR0aDonICtcbiAgICAgICAgICBDT05URVhUICsgJy4nICsgU19EUkFXSU5HQlVGRkVSX1dJRFRIKVxuICAgICAgICBzY29wZS5zZXQoXG4gICAgICAgICAgQ09OVEVYVCxcbiAgICAgICAgICAnLicgKyBTX0ZSQU1FQlVGRkVSX0hFSUdIVCxcbiAgICAgICAgICBGUkFNRUJVRkZFUiArXG4gICAgICAgICAgJz8nICsgRlJBTUVCVUZGRVIgKyAnLmhlaWdodDonICtcbiAgICAgICAgICBDT05URVhUICsgJy4nICsgU19EUkFXSU5HQlVGRkVSX0hFSUdIVClcbiAgICAgICAgcmV0dXJuIEZSQU1FQlVGRkVSXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlVmlld3BvcnRTY2lzc29yIChvcHRpb25zLCBmcmFtZWJ1ZmZlciwgZW52KSB7XG4gICAgdmFyIHN0YXRpY09wdGlvbnMgPSBvcHRpb25zLnN0YXRpY1xuICAgIHZhciBkeW5hbWljT3B0aW9ucyA9IG9wdGlvbnMuZHluYW1pY1xuXG4gICAgZnVuY3Rpb24gcGFyc2VCb3ggKHBhcmFtKSB7XG4gICAgICBpZiAocGFyYW0gaW4gc3RhdGljT3B0aW9ucykge1xuICAgICAgICB2YXIgYm94ID0gc3RhdGljT3B0aW9uc1twYXJhbV1cbiAgICAgICAgY2hlY2skMS5jb21tYW5kVHlwZShib3gsICdvYmplY3QnLCAnaW52YWxpZCAnICsgcGFyYW0sIGVudi5jb21tYW5kU3RyKVxuXG4gICAgICAgIHZhciBpc1N0YXRpYyA9IHRydWVcbiAgICAgICAgdmFyIHggPSBib3gueCB8IDBcbiAgICAgICAgdmFyIHkgPSBib3gueSB8IDBcbiAgICAgICAgdmFyIHcsIGhcbiAgICAgICAgaWYgKCd3aWR0aCcgaW4gYm94KSB7XG4gICAgICAgICAgdyA9IGJveC53aWR0aCB8IDBcbiAgICAgICAgICBjaGVjayQxLmNvbW1hbmQodyA+PSAwLCAnaW52YWxpZCAnICsgcGFyYW0sIGVudi5jb21tYW5kU3RyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzU3RhdGljID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBpZiAoJ2hlaWdodCcgaW4gYm94KSB7XG4gICAgICAgICAgaCA9IGJveC5oZWlnaHQgfCAwXG4gICAgICAgICAgY2hlY2skMS5jb21tYW5kKGggPj0gMCwgJ2ludmFsaWQgJyArIHBhcmFtLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc1N0YXRpYyA9IGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IERlY2xhcmF0aW9uKFxuICAgICAgICAgICFpc1N0YXRpYyAmJiBmcmFtZWJ1ZmZlciAmJiBmcmFtZWJ1ZmZlci50aGlzRGVwLFxuICAgICAgICAgICFpc1N0YXRpYyAmJiBmcmFtZWJ1ZmZlciAmJiBmcmFtZWJ1ZmZlci5jb250ZXh0RGVwLFxuICAgICAgICAgICFpc1N0YXRpYyAmJiBmcmFtZWJ1ZmZlciAmJiBmcmFtZWJ1ZmZlci5wcm9wRGVwLFxuICAgICAgICAgIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgICB2YXIgQ09OVEVYVCA9IGVudi5zaGFyZWQuY29udGV4dFxuICAgICAgICAgICAgdmFyIEJPWF9XID0gd1xuICAgICAgICAgICAgaWYgKCEoJ3dpZHRoJyBpbiBib3gpKSB7XG4gICAgICAgICAgICAgIEJPWF9XID0gc2NvcGUuZGVmKENPTlRFWFQsICcuJywgU19GUkFNRUJVRkZFUl9XSURUSCwgJy0nLCB4KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIEJPWF9IID0gaFxuICAgICAgICAgICAgaWYgKCEoJ2hlaWdodCcgaW4gYm94KSkge1xuICAgICAgICAgICAgICBCT1hfSCA9IHNjb3BlLmRlZihDT05URVhULCAnLicsIFNfRlJBTUVCVUZGRVJfSEVJR0hULCAnLScsIHkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW3gsIHksIEJPWF9XLCBCT1hfSF1cbiAgICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChwYXJhbSBpbiBkeW5hbWljT3B0aW9ucykge1xuICAgICAgICB2YXIgZHluQm94ID0gZHluYW1pY09wdGlvbnNbcGFyYW1dXG4gICAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVEeW5hbWljRGVjbChkeW5Cb3gsIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgdmFyIEJPWCA9IGVudi5pbnZva2Uoc2NvcGUsIGR5bkJveClcblxuICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgQk9YICsgJyYmdHlwZW9mICcgKyBCT1ggKyAnPT09XCJvYmplY3RcIicsXG4gICAgICAgICAgICAgICdpbnZhbGlkICcgKyBwYXJhbSlcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgdmFyIENPTlRFWFQgPSBlbnYuc2hhcmVkLmNvbnRleHRcbiAgICAgICAgICB2YXIgQk9YX1ggPSBzY29wZS5kZWYoQk9YLCAnLnh8MCcpXG4gICAgICAgICAgdmFyIEJPWF9ZID0gc2NvcGUuZGVmKEJPWCwgJy55fDAnKVxuICAgICAgICAgIHZhciBCT1hfVyA9IHNjb3BlLmRlZihcbiAgICAgICAgICAgICdcIndpZHRoXCIgaW4gJywgQk9YLCAnPycsIEJPWCwgJy53aWR0aHwwOicsXG4gICAgICAgICAgICAnKCcsIENPTlRFWFQsICcuJywgU19GUkFNRUJVRkZFUl9XSURUSCwgJy0nLCBCT1hfWCwgJyknKVxuICAgICAgICAgIHZhciBCT1hfSCA9IHNjb3BlLmRlZihcbiAgICAgICAgICAgICdcImhlaWdodFwiIGluICcsIEJPWCwgJz8nLCBCT1gsICcuaGVpZ2h0fDA6JyxcbiAgICAgICAgICAgICcoJywgQ09OVEVYVCwgJy4nLCBTX0ZSQU1FQlVGRkVSX0hFSUdIVCwgJy0nLCBCT1hfWSwgJyknKVxuXG4gICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICBCT1hfVyArICc+PTAmJicgK1xuICAgICAgICAgICAgICBCT1hfSCArICc+PTAnLFxuICAgICAgICAgICAgICAnaW52YWxpZCAnICsgcGFyYW0pXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiBbQk9YX1gsIEJPWF9ZLCBCT1hfVywgQk9YX0hdXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChmcmFtZWJ1ZmZlcikge1xuICAgICAgICAgIHJlc3VsdC50aGlzRGVwID0gcmVzdWx0LnRoaXNEZXAgfHwgZnJhbWVidWZmZXIudGhpc0RlcFxuICAgICAgICAgIHJlc3VsdC5jb250ZXh0RGVwID0gcmVzdWx0LmNvbnRleHREZXAgfHwgZnJhbWVidWZmZXIuY29udGV4dERlcFxuICAgICAgICAgIHJlc3VsdC5wcm9wRGVwID0gcmVzdWx0LnByb3BEZXAgfHwgZnJhbWVidWZmZXIucHJvcERlcFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0gZWxzZSBpZiAoZnJhbWVidWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZWNsYXJhdGlvbihcbiAgICAgICAgICBmcmFtZWJ1ZmZlci50aGlzRGVwLFxuICAgICAgICAgIGZyYW1lYnVmZmVyLmNvbnRleHREZXAsXG4gICAgICAgICAgZnJhbWVidWZmZXIucHJvcERlcCxcbiAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICAgICAgdmFyIENPTlRFWFQgPSBlbnYuc2hhcmVkLmNvbnRleHRcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIDAsIDAsXG4gICAgICAgICAgICAgIHNjb3BlLmRlZihDT05URVhULCAnLicsIFNfRlJBTUVCVUZGRVJfV0lEVEgpLFxuICAgICAgICAgICAgICBzY29wZS5kZWYoQ09OVEVYVCwgJy4nLCBTX0ZSQU1FQlVGRkVSX0hFSUdIVCldXG4gICAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHZpZXdwb3J0ID0gcGFyc2VCb3goU19WSUVXUE9SVClcblxuICAgIGlmICh2aWV3cG9ydCkge1xuICAgICAgdmFyIHByZXZWaWV3cG9ydCA9IHZpZXdwb3J0XG4gICAgICB2aWV3cG9ydCA9IG5ldyBEZWNsYXJhdGlvbihcbiAgICAgICAgdmlld3BvcnQudGhpc0RlcCxcbiAgICAgICAgdmlld3BvcnQuY29udGV4dERlcCxcbiAgICAgICAgdmlld3BvcnQucHJvcERlcCxcbiAgICAgICAgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICB2YXIgVklFV1BPUlQgPSBwcmV2Vmlld3BvcnQuYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgICAgICAgdmFyIENPTlRFWFQgPSBlbnYuc2hhcmVkLmNvbnRleHRcbiAgICAgICAgICBzY29wZS5zZXQoXG4gICAgICAgICAgICBDT05URVhULFxuICAgICAgICAgICAgJy4nICsgU19WSUVXUE9SVF9XSURUSCxcbiAgICAgICAgICAgIFZJRVdQT1JUWzJdKVxuICAgICAgICAgIHNjb3BlLnNldChcbiAgICAgICAgICAgIENPTlRFWFQsXG4gICAgICAgICAgICAnLicgKyBTX1ZJRVdQT1JUX0hFSUdIVCxcbiAgICAgICAgICAgIFZJRVdQT1JUWzNdKVxuICAgICAgICAgIHJldHVybiBWSUVXUE9SVFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2aWV3cG9ydDogdmlld3BvcnQsXG4gICAgICBzY2lzc29yX2JveDogcGFyc2VCb3goU19TQ0lTU09SX0JPWClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUF0dHJpYkxvY2F0aW9ucyAob3B0aW9ucywgYXR0cmlidXRlcykge1xuICAgIHZhciBzdGF0aWNPcHRpb25zID0gb3B0aW9ucy5zdGF0aWNcbiAgICB2YXIgc3RhdGljUHJvZ3JhbSA9XG4gICAgICB0eXBlb2Ygc3RhdGljT3B0aW9uc1tTX0ZSQUddID09PSAnc3RyaW5nJyAmJlxuICAgICAgdHlwZW9mIHN0YXRpY09wdGlvbnNbU19WRVJUXSA9PT0gJ3N0cmluZydcbiAgICBpZiAoc3RhdGljUHJvZ3JhbSkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMuZHluYW1pYykubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgdmFyIHN0YXRpY0F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLnN0YXRpY1xuICAgICAgdmFyIHNBdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMoc3RhdGljQXR0cmlidXRlcylcbiAgICAgIGlmIChzQXR0cmlidXRlcy5sZW5ndGggPiAwICYmIHR5cGVvZiBzdGF0aWNBdHRyaWJ1dGVzW3NBdHRyaWJ1dGVzWzBdXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdmFyIGJpbmRpbmdzID0gW11cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzQXR0cmlidXRlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNoZWNrJDEodHlwZW9mIHN0YXRpY0F0dHJpYnV0ZXNbc0F0dHJpYnV0ZXNbaV1dID09PSAnbnVtYmVyJywgJ211c3Qgc3BlY2lmeSBhbGwgdmVydGV4IGF0dHJpYnV0ZSBsb2NhdGlvbnMgd2hlbiB1c2luZyB2YW9zJylcbiAgICAgICAgICBiaW5kaW5ncy5wdXNoKFtzdGF0aWNBdHRyaWJ1dGVzW3NBdHRyaWJ1dGVzW2ldXSB8IDAsIHNBdHRyaWJ1dGVzW2ldXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluZGluZ3NcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlUHJvZ3JhbSAob3B0aW9ucywgZW52LCBhdHRyaWJMb2NhdGlvbnMpIHtcbiAgICB2YXIgc3RhdGljT3B0aW9ucyA9IG9wdGlvbnMuc3RhdGljXG4gICAgdmFyIGR5bmFtaWNPcHRpb25zID0gb3B0aW9ucy5keW5hbWljXG5cbiAgICBmdW5jdGlvbiBwYXJzZVNoYWRlciAobmFtZSkge1xuICAgICAgaWYgKG5hbWUgaW4gc3RhdGljT3B0aW9ucykge1xuICAgICAgICB2YXIgaWQgPSBzdHJpbmdTdG9yZS5pZChzdGF0aWNPcHRpb25zW25hbWVdKVxuICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzaGFkZXJTdGF0ZS5zaGFkZXIoc2hhZGVyVHlwZVtuYW1lXSwgaWQsIGNoZWNrJDEuZ3Vlc3NDb21tYW5kKCkpXG4gICAgICAgIH0pXG4gICAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gaWRcbiAgICAgICAgfSlcbiAgICAgICAgcmVzdWx0LmlkID0gaWRcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBlbHNlIGlmIChuYW1lIGluIGR5bmFtaWNPcHRpb25zKSB7XG4gICAgICAgIHZhciBkeW4gPSBkeW5hbWljT3B0aW9uc1tuYW1lXVxuICAgICAgICByZXR1cm4gY3JlYXRlRHluYW1pY0RlY2woZHluLCBmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICAgIHZhciBzdHIgPSBlbnYuaW52b2tlKHNjb3BlLCBkeW4pXG4gICAgICAgICAgdmFyIGlkID0gc2NvcGUuZGVmKGVudi5zaGFyZWQuc3RyaW5ncywgJy5pZCgnLCBzdHIsICcpJylcbiAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNjb3BlKFxuICAgICAgICAgICAgICBlbnYuc2hhcmVkLnNoYWRlciwgJy5zaGFkZXIoJyxcbiAgICAgICAgICAgICAgc2hhZGVyVHlwZVtuYW1lXSwgJywnLFxuICAgICAgICAgICAgICBpZCwgJywnLFxuICAgICAgICAgICAgICBlbnYuY29tbWFuZCwgJyk7JylcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiBpZFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIgZnJhZyA9IHBhcnNlU2hhZGVyKFNfRlJBRylcbiAgICB2YXIgdmVydCA9IHBhcnNlU2hhZGVyKFNfVkVSVClcblxuICAgIHZhciBwcm9ncmFtID0gbnVsbFxuICAgIHZhciBwcm9nVmFyXG4gICAgaWYgKGlzU3RhdGljKGZyYWcpICYmIGlzU3RhdGljKHZlcnQpKSB7XG4gICAgICBwcm9ncmFtID0gc2hhZGVyU3RhdGUucHJvZ3JhbSh2ZXJ0LmlkLCBmcmFnLmlkLCBudWxsLCBhdHRyaWJMb2NhdGlvbnMpXG4gICAgICBwcm9nVmFyID0gY3JlYXRlU3RhdGljRGVjbChmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICByZXR1cm4gZW52LmxpbmsocHJvZ3JhbSlcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2dWYXIgPSBuZXcgRGVjbGFyYXRpb24oXG4gICAgICAgIChmcmFnICYmIGZyYWcudGhpc0RlcCkgfHwgKHZlcnQgJiYgdmVydC50aGlzRGVwKSxcbiAgICAgICAgKGZyYWcgJiYgZnJhZy5jb250ZXh0RGVwKSB8fCAodmVydCAmJiB2ZXJ0LmNvbnRleHREZXApLFxuICAgICAgICAoZnJhZyAmJiBmcmFnLnByb3BEZXApIHx8ICh2ZXJ0ICYmIHZlcnQucHJvcERlcCksXG4gICAgICAgIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgdmFyIFNIQURFUl9TVEFURSA9IGVudi5zaGFyZWQuc2hhZGVyXG4gICAgICAgICAgdmFyIGZyYWdJZFxuICAgICAgICAgIGlmIChmcmFnKSB7XG4gICAgICAgICAgICBmcmFnSWQgPSBmcmFnLmFwcGVuZChlbnYsIHNjb3BlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmFnSWQgPSBzY29wZS5kZWYoU0hBREVSX1NUQVRFLCAnLicsIFNfRlJBRylcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHZlcnRJZFxuICAgICAgICAgIGlmICh2ZXJ0KSB7XG4gICAgICAgICAgICB2ZXJ0SWQgPSB2ZXJ0LmFwcGVuZChlbnYsIHNjb3BlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJ0SWQgPSBzY29wZS5kZWYoU0hBREVSX1NUQVRFLCAnLicsIFNfVkVSVClcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHByb2dEZWYgPSBTSEFERVJfU1RBVEUgKyAnLnByb2dyYW0oJyArIHZlcnRJZCArICcsJyArIGZyYWdJZFxuICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHJvZ0RlZiArPSAnLCcgKyBlbnYuY29tbWFuZFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHNjb3BlLmRlZihwcm9nRGVmICsgJyknKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBmcmFnOiBmcmFnLFxuICAgICAgdmVydDogdmVydCxcbiAgICAgIHByb2dWYXI6IHByb2dWYXIsXG4gICAgICBwcm9ncmFtOiBwcm9ncmFtXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VEcmF3IChvcHRpb25zLCBlbnYpIHtcbiAgICB2YXIgc3RhdGljT3B0aW9ucyA9IG9wdGlvbnMuc3RhdGljXG4gICAgdmFyIGR5bmFtaWNPcHRpb25zID0gb3B0aW9ucy5keW5hbWljXG5cbiAgICBmdW5jdGlvbiBwYXJzZUVsZW1lbnRzICgpIHtcbiAgICAgIGlmIChTX0VMRU1FTlRTIGluIHN0YXRpY09wdGlvbnMpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gc3RhdGljT3B0aW9uc1tTX0VMRU1FTlRTXVxuICAgICAgICBpZiAoaXNCdWZmZXJBcmdzKGVsZW1lbnRzKSkge1xuICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudFN0YXRlLmdldEVsZW1lbnRzKGVsZW1lbnRTdGF0ZS5jcmVhdGUoZWxlbWVudHMsIHRydWUpKVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzKSB7XG4gICAgICAgICAgZWxlbWVudHMgPSBlbGVtZW50U3RhdGUuZ2V0RWxlbWVudHMoZWxlbWVudHMpXG4gICAgICAgICAgY2hlY2skMS5jb21tYW5kKGVsZW1lbnRzLCAnaW52YWxpZCBlbGVtZW50cycsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnRzKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZW52LmxpbmsoZWxlbWVudHMpXG4gICAgICAgICAgICBlbnYuRUxFTUVOVFMgPSByZXN1bHRcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9XG4gICAgICAgICAgZW52LkVMRU1FTlRTID0gbnVsbFxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0pXG4gICAgICAgIHJlc3VsdC52YWx1ZSA9IGVsZW1lbnRzXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0gZWxzZSBpZiAoU19FTEVNRU5UUyBpbiBkeW5hbWljT3B0aW9ucykge1xuICAgICAgICB2YXIgZHluID0gZHluYW1pY09wdGlvbnNbU19FTEVNRU5UU11cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR5bmFtaWNEZWNsKGR5biwgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuXG4gICAgICAgICAgdmFyIElTX0JVRkZFUl9BUkdTID0gc2hhcmVkLmlzQnVmZmVyQXJnc1xuICAgICAgICAgIHZhciBFTEVNRU5UX1NUQVRFID0gc2hhcmVkLmVsZW1lbnRzXG5cbiAgICAgICAgICB2YXIgZWxlbWVudERlZm4gPSBlbnYuaW52b2tlKHNjb3BlLCBkeW4pXG4gICAgICAgICAgdmFyIGVsZW1lbnRzID0gc2NvcGUuZGVmKCdudWxsJylcbiAgICAgICAgICB2YXIgZWxlbWVudFN0cmVhbSA9IHNjb3BlLmRlZihJU19CVUZGRVJfQVJHUywgJygnLCBlbGVtZW50RGVmbiwgJyknKVxuXG4gICAgICAgICAgdmFyIGlmdGUgPSBlbnYuY29uZChlbGVtZW50U3RyZWFtKVxuICAgICAgICAgICAgLnRoZW4oZWxlbWVudHMsICc9JywgRUxFTUVOVF9TVEFURSwgJy5jcmVhdGVTdHJlYW0oJywgZWxlbWVudERlZm4sICcpOycpXG4gICAgICAgICAgICAuZWxzZShlbGVtZW50cywgJz0nLCBFTEVNRU5UX1NUQVRFLCAnLmdldEVsZW1lbnRzKCcsIGVsZW1lbnREZWZuLCAnKTsnKVxuXG4gICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbnYuYXNzZXJ0KGlmdGUuZWxzZSxcbiAgICAgICAgICAgICAgJyEnICsgZWxlbWVudERlZm4gKyAnfHwnICsgZWxlbWVudHMsXG4gICAgICAgICAgICAgICdpbnZhbGlkIGVsZW1lbnRzJylcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgc2NvcGUuZW50cnkoaWZ0ZSlcbiAgICAgICAgICBzY29wZS5leGl0KFxuICAgICAgICAgICAgZW52LmNvbmQoZWxlbWVudFN0cmVhbSlcbiAgICAgICAgICAgICAgLnRoZW4oRUxFTUVOVF9TVEFURSwgJy5kZXN0cm95U3RyZWFtKCcsIGVsZW1lbnRzLCAnKTsnKSlcblxuICAgICAgICAgIGVudi5FTEVNRU5UUyA9IGVsZW1lbnRzXG5cbiAgICAgICAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIgZWxlbWVudHMgPSBwYXJzZUVsZW1lbnRzKClcblxuICAgIGZ1bmN0aW9uIHBhcnNlUHJpbWl0aXZlICgpIHtcbiAgICAgIGlmIChTX1BSSU1JVElWRSBpbiBzdGF0aWNPcHRpb25zKSB7XG4gICAgICAgIHZhciBwcmltaXRpdmUgPSBzdGF0aWNPcHRpb25zW1NfUFJJTUlUSVZFXVxuICAgICAgICBjaGVjayQxLmNvbW1hbmRQYXJhbWV0ZXIocHJpbWl0aXZlLCBwcmltVHlwZXMsICdpbnZhbGlkIHByaW1pdHZlJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuIHByaW1UeXBlc1twcmltaXRpdmVdXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKFNfUFJJTUlUSVZFIGluIGR5bmFtaWNPcHRpb25zKSB7XG4gICAgICAgIHZhciBkeW5QcmltaXRpdmUgPSBkeW5hbWljT3B0aW9uc1tTX1BSSU1JVElWRV1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR5bmFtaWNEZWNsKGR5blByaW1pdGl2ZSwgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICB2YXIgUFJJTV9UWVBFUyA9IGVudi5jb25zdGFudHMucHJpbVR5cGVzXG4gICAgICAgICAgdmFyIHByaW0gPSBlbnYuaW52b2tlKHNjb3BlLCBkeW5QcmltaXRpdmUpXG4gICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICBwcmltICsgJyBpbiAnICsgUFJJTV9UWVBFUyxcbiAgICAgICAgICAgICAgJ2ludmFsaWQgcHJpbWl0aXZlLCBtdXN0IGJlIG9uZSBvZiAnICsgT2JqZWN0LmtleXMocHJpbVR5cGVzKSlcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiBzY29wZS5kZWYoUFJJTV9UWVBFUywgJ1snLCBwcmltLCAnXScpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChpc1N0YXRpYyhlbGVtZW50cykpIHtcbiAgICAgICAgICBpZiAoZWxlbWVudHMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzY29wZS5kZWYoZW52LkVMRU1FTlRTLCAnLnByaW1UeXBlJylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEdMX1RSSUFOR0xFUyQxXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbmV3IERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgZWxlbWVudHMudGhpc0RlcCxcbiAgICAgICAgICAgIGVsZW1lbnRzLmNvbnRleHREZXAsXG4gICAgICAgICAgICBlbGVtZW50cy5wcm9wRGVwLFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gZW52LkVMRU1FTlRTXG4gICAgICAgICAgICAgIHJldHVybiBzY29wZS5kZWYoZWxlbWVudHMsICc/JywgZWxlbWVudHMsICcucHJpbVR5cGU6JywgR0xfVFJJQU5HTEVTJDEpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW0gKHBhcmFtLCBpc09mZnNldCkge1xuICAgICAgaWYgKHBhcmFtIGluIHN0YXRpY09wdGlvbnMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc3RhdGljT3B0aW9uc1twYXJhbV0gfCAwXG4gICAgICAgIGNoZWNrJDEuY29tbWFuZCghaXNPZmZzZXQgfHwgdmFsdWUgPj0gMCwgJ2ludmFsaWQgJyArIHBhcmFtLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICBpZiAoaXNPZmZzZXQpIHtcbiAgICAgICAgICAgIGVudi5PRkZTRVQgPSB2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAocGFyYW0gaW4gZHluYW1pY09wdGlvbnMpIHtcbiAgICAgICAgdmFyIGR5blZhbHVlID0gZHluYW1pY09wdGlvbnNbcGFyYW1dXG4gICAgICAgIHJldHVybiBjcmVhdGVEeW5hbWljRGVjbChkeW5WYWx1ZSwgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZW52Lmludm9rZShzY29wZSwgZHluVmFsdWUpXG4gICAgICAgICAgaWYgKGlzT2Zmc2V0KSB7XG4gICAgICAgICAgICBlbnYuT0ZGU0VUID0gcmVzdWx0XG4gICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICByZXN1bHQgKyAnPj0wJyxcbiAgICAgICAgICAgICAgICAnaW52YWxpZCAnICsgcGFyYW0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGlzT2Zmc2V0ICYmIGVsZW1lbnRzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgZW52Lk9GRlNFVCA9ICcwJ1xuICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBPRkZTRVQgPSBwYXJzZVBhcmFtKFNfT0ZGU0VULCB0cnVlKVxuXG4gICAgZnVuY3Rpb24gcGFyc2VWZXJ0Q291bnQgKCkge1xuICAgICAgaWYgKFNfQ09VTlQgaW4gc3RhdGljT3B0aW9ucykge1xuICAgICAgICB2YXIgY291bnQgPSBzdGF0aWNPcHRpb25zW1NfQ09VTlRdIHwgMFxuICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgdHlwZW9mIGNvdW50ID09PSAnbnVtYmVyJyAmJiBjb3VudCA+PSAwLCAnaW52YWxpZCB2ZXJ0ZXggY291bnQnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBjb3VudFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChTX0NPVU5UIGluIGR5bmFtaWNPcHRpb25zKSB7XG4gICAgICAgIHZhciBkeW5Db3VudCA9IGR5bmFtaWNPcHRpb25zW1NfQ09VTlRdXG4gICAgICAgIHJldHVybiBjcmVhdGVEeW5hbWljRGVjbChkeW5Db3VudCwgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZW52Lmludm9rZShzY29wZSwgZHluQ291bnQpXG4gICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICAndHlwZW9mICcgKyByZXN1bHQgKyAnPT09XCJudW1iZXJcIiYmJyArXG4gICAgICAgICAgICAgIHJlc3VsdCArICc+PTAmJicgK1xuICAgICAgICAgICAgICByZXN1bHQgKyAnPT09KCcgKyByZXN1bHQgKyAnfDApJyxcbiAgICAgICAgICAgICAgJ2ludmFsaWQgdmVydGV4IGNvdW50JylcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHMpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljKGVsZW1lbnRzKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKE9GRlNFVCkge1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICAgIE9GRlNFVC50aGlzRGVwLFxuICAgICAgICAgICAgICAgIE9GRlNFVC5jb250ZXh0RGVwLFxuICAgICAgICAgICAgICAgIE9GRlNFVC5wcm9wRGVwLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gc2NvcGUuZGVmKFxuICAgICAgICAgICAgICAgICAgICBlbnYuRUxFTUVOVFMsICcudmVydENvdW50LScsIGVudi5PRkZTRVQpXG5cbiAgICAgICAgICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArICc+PTAnLFxuICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIHZlcnRleCBvZmZzZXQvZWxlbWVudCBidWZmZXIgdG9vIHNtYWxsJylcbiAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZGVmKGVudi5FTEVNRU5UUywgJy52ZXJ0Q291bnQnKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlU3RhdGljRGVjbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXN1bHQuTUlTU0lORyA9IHRydWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciB2YXJpYWJsZSA9IG5ldyBEZWNsYXJhdGlvbihcbiAgICAgICAgICAgIGVsZW1lbnRzLnRoaXNEZXAgfHwgT0ZGU0VULnRoaXNEZXAsXG4gICAgICAgICAgICBlbGVtZW50cy5jb250ZXh0RGVwIHx8IE9GRlNFVC5jb250ZXh0RGVwLFxuICAgICAgICAgICAgZWxlbWVudHMucHJvcERlcCB8fCBPRkZTRVQucHJvcERlcCxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IGVudi5FTEVNRU5UU1xuICAgICAgICAgICAgICBpZiAoZW52Lk9GRlNFVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY29wZS5kZWYoZWxlbWVudHMsICc/JywgZWxlbWVudHMsICcudmVydENvdW50LScsXG4gICAgICAgICAgICAgICAgICBlbnYuT0ZGU0VULCAnOi0xJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZGVmKGVsZW1lbnRzLCAnPycsIGVsZW1lbnRzLCAnLnZlcnRDb3VudDotMScpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyaWFibGUuRFlOQU1JQyA9IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiB2YXJpYWJsZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50czogZWxlbWVudHMsXG4gICAgICBwcmltaXRpdmU6IHBhcnNlUHJpbWl0aXZlKCksXG4gICAgICBjb3VudDogcGFyc2VWZXJ0Q291bnQoKSxcbiAgICAgIGluc3RhbmNlczogcGFyc2VQYXJhbShTX0lOU1RBTkNFUywgZmFsc2UpLFxuICAgICAgb2Zmc2V0OiBPRkZTRVRcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUdMU3RhdGUgKG9wdGlvbnMsIGVudikge1xuICAgIHZhciBzdGF0aWNPcHRpb25zID0gb3B0aW9ucy5zdGF0aWNcbiAgICB2YXIgZHluYW1pY09wdGlvbnMgPSBvcHRpb25zLmR5bmFtaWNcblxuICAgIHZhciBTVEFURSA9IHt9XG5cbiAgICBHTF9TVEFURV9OQU1FUy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICB2YXIgcGFyYW0gPSBwcm9wTmFtZShwcm9wKVxuXG4gICAgICBmdW5jdGlvbiBwYXJzZVBhcmFtIChwYXJzZVN0YXRpYywgcGFyc2VEeW5hbWljKSB7XG4gICAgICAgIGlmIChwcm9wIGluIHN0YXRpY09wdGlvbnMpIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZVN0YXRpYyhzdGF0aWNPcHRpb25zW3Byb3BdKVxuICAgICAgICAgIFNUQVRFW3BhcmFtXSA9IGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wIGluIGR5bmFtaWNPcHRpb25zKSB7XG4gICAgICAgICAgdmFyIGR5biA9IGR5bmFtaWNPcHRpb25zW3Byb3BdXG4gICAgICAgICAgU1RBVEVbcGFyYW1dID0gY3JlYXRlRHluYW1pY0RlY2woZHluLCBmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRHluYW1pYyhlbnYsIHNjb3BlLCBlbnYuaW52b2tlKHNjb3BlLCBkeW4pKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChwcm9wKSB7XG4gICAgICAgIGNhc2UgU19DVUxMX0VOQUJMRTpcbiAgICAgICAgY2FzZSBTX0JMRU5EX0VOQUJMRTpcbiAgICAgICAgY2FzZSBTX0RJVEhFUjpcbiAgICAgICAgY2FzZSBTX1NURU5DSUxfRU5BQkxFOlxuICAgICAgICBjYXNlIFNfREVQVEhfRU5BQkxFOlxuICAgICAgICBjYXNlIFNfU0NJU1NPUl9FTkFCTEU6XG4gICAgICAgIGNhc2UgU19QT0xZR09OX09GRlNFVF9FTkFCTEU6XG4gICAgICAgIGNhc2UgU19TQU1QTEVfQUxQSEE6XG4gICAgICAgIGNhc2UgU19TQU1QTEVfRU5BQkxFOlxuICAgICAgICBjYXNlIFNfREVQVEhfTUFTSzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VQYXJhbShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRUeXBlKHZhbHVlLCAnYm9vbGVhbicsIHByb3AsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgICd0eXBlb2YgJyArIHZhbHVlICsgJz09PVwiYm9vbGVhblwiJyxcbiAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGZsYWcgJyArIHByb3AsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgY2FzZSBTX0RFUFRIX0ZVTkM6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlUGFyYW0oXG4gICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kUGFyYW1ldGVyKHZhbHVlLCBjb21wYXJlRnVuY3MsICdpbnZhbGlkICcgKyBwcm9wLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVGdW5jc1t2YWx1ZV1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFyIENPTVBBUkVfRlVOQ1MgPSBlbnYuY29uc3RhbnRzLmNvbXBhcmVGdW5jc1xuICAgICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICAgICAgdmFsdWUgKyAnIGluICcgKyBDT01QQVJFX0ZVTkNTLFxuICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgJyArIHByb3AgKyAnLCBtdXN0IGJlIG9uZSBvZiAnICsgT2JqZWN0LmtleXMoY29tcGFyZUZ1bmNzKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmRlZihDT01QQVJFX0ZVTkNTLCAnWycsIHZhbHVlLCAnXScpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19ERVBUSF9SQU5HRTpcbiAgICAgICAgICByZXR1cm4gcGFyc2VQYXJhbShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09PSAyICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlWzBdID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZVsxXSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZVswXSA8PSB2YWx1ZVsxXSxcbiAgICAgICAgICAgICAgICAnZGVwdGggcmFuZ2UgaXMgMmQgYXJyYXknLFxuICAgICAgICAgICAgICAgIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgIGVudi5zaGFyZWQuaXNBcnJheUxpa2UgKyAnKCcgKyB2YWx1ZSArICcpJiYnICtcbiAgICAgICAgICAgICAgICAgIHZhbHVlICsgJy5sZW5ndGg9PT0yJiYnICtcbiAgICAgICAgICAgICAgICAgICd0eXBlb2YgJyArIHZhbHVlICsgJ1swXT09PVwibnVtYmVyXCImJicgK1xuICAgICAgICAgICAgICAgICAgJ3R5cGVvZiAnICsgdmFsdWUgKyAnWzFdPT09XCJudW1iZXJcIiYmJyArXG4gICAgICAgICAgICAgICAgICB2YWx1ZSArICdbMF08PScgKyB2YWx1ZSArICdbMV0nLFxuICAgICAgICAgICAgICAgICAgJ2RlcHRoIHJhbmdlIG11c3QgYmUgYSAyZCBhcnJheScpXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgdmFyIFpfTkVBUiA9IHNjb3BlLmRlZignKycsIHZhbHVlLCAnWzBdJylcbiAgICAgICAgICAgICAgdmFyIFpfRkFSID0gc2NvcGUuZGVmKCcrJywgdmFsdWUsICdbMV0nKVxuICAgICAgICAgICAgICByZXR1cm4gW1pfTkVBUiwgWl9GQVJdXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19CTEVORF9GVU5DOlxuICAgICAgICAgIHJldHVybiBwYXJzZVBhcmFtKFxuICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFR5cGUodmFsdWUsICdvYmplY3QnLCAnYmxlbmQuZnVuYycsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICB2YXIgc3JjUkdCID0gKCdzcmNSR0InIGluIHZhbHVlID8gdmFsdWUuc3JjUkdCIDogdmFsdWUuc3JjKVxuICAgICAgICAgICAgICB2YXIgc3JjQWxwaGEgPSAoJ3NyY0FscGhhJyBpbiB2YWx1ZSA/IHZhbHVlLnNyY0FscGhhIDogdmFsdWUuc3JjKVxuICAgICAgICAgICAgICB2YXIgZHN0UkdCID0gKCdkc3RSR0InIGluIHZhbHVlID8gdmFsdWUuZHN0UkdCIDogdmFsdWUuZHN0KVxuICAgICAgICAgICAgICB2YXIgZHN0QWxwaGEgPSAoJ2RzdEFscGhhJyBpbiB2YWx1ZSA/IHZhbHVlLmRzdEFscGhhIDogdmFsdWUuZHN0KVxuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRQYXJhbWV0ZXIoc3JjUkdCLCBibGVuZEZ1bmNzLCBwYXJhbSArICcuc3JjUkdCJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFBhcmFtZXRlcihzcmNBbHBoYSwgYmxlbmRGdW5jcywgcGFyYW0gKyAnLnNyY0FscGhhJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFBhcmFtZXRlcihkc3RSR0IsIGJsZW5kRnVuY3MsIHBhcmFtICsgJy5kc3RSR0InLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kUGFyYW1ldGVyKGRzdEFscGhhLCBibGVuZEZ1bmNzLCBwYXJhbSArICcuZHN0QWxwaGEnLCBlbnYuY29tbWFuZFN0cilcblxuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgKGludmFsaWRCbGVuZENvbWJpbmF0aW9ucy5pbmRleE9mKHNyY1JHQiArICcsICcgKyBkc3RSR0IpID09PSAtMSksXG4gICAgICAgICAgICAgICAgJ3VuYWxsb3dlZCBibGVuZGluZyBjb21iaW5hdGlvbiAoc3JjUkdCLCBkc3RSR0IpID0gKCcgKyBzcmNSR0IgKyAnLCAnICsgZHN0UkdCICsgJyknLCBlbnYuY29tbWFuZFN0cilcblxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGJsZW5kRnVuY3Nbc3JjUkdCXSxcbiAgICAgICAgICAgICAgICBibGVuZEZ1bmNzW2RzdFJHQl0sXG4gICAgICAgICAgICAgICAgYmxlbmRGdW5jc1tzcmNBbHBoYV0sXG4gICAgICAgICAgICAgICAgYmxlbmRGdW5jc1tkc3RBbHBoYV1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChlbnYsIHNjb3BlLCB2YWx1ZSkge1xuICAgICAgICAgICAgICB2YXIgQkxFTkRfRlVOQ1MgPSBlbnYuY29uc3RhbnRzLmJsZW5kRnVuY3NcblxuICAgICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICAgICAgdmFsdWUgKyAnJiZ0eXBlb2YgJyArIHZhbHVlICsgJz09PVwib2JqZWN0XCInLFxuICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgYmxlbmQgZnVuYywgbXVzdCBiZSBhbiBvYmplY3QnKVxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIHJlYWQgKHByZWZpeCwgc3VmZml4KSB7XG4gICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBzY29wZS5kZWYoXG4gICAgICAgICAgICAgICAgICAnXCInLCBwcmVmaXgsIHN1ZmZpeCwgJ1wiIGluICcsIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgJz8nLCB2YWx1ZSwgJy4nLCBwcmVmaXgsIHN1ZmZpeCxcbiAgICAgICAgICAgICAgICAgICc6JywgdmFsdWUsICcuJywgcHJlZml4KVxuXG4gICAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICAgICAgICBmdW5jICsgJyBpbiAnICsgQkxFTkRfRlVOQ1MsXG4gICAgICAgICAgICAgICAgICAgICdpbnZhbGlkICcgKyBwcm9wICsgJy4nICsgcHJlZml4ICsgc3VmZml4ICsgJywgbXVzdCBiZSBvbmUgb2YgJyArIE9iamVjdC5rZXlzKGJsZW5kRnVuY3MpKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdmFyIHNyY1JHQiA9IHJlYWQoJ3NyYycsICdSR0InKVxuICAgICAgICAgICAgICB2YXIgZHN0UkdCID0gcmVhZCgnZHN0JywgJ1JHQicpXG5cbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIElOVkFMSURfQkxFTkRfQ09NQklOQVRJT05TID0gZW52LmNvbnN0YW50cy5pbnZhbGlkQmxlbmRDb21iaW5hdGlvbnNcblxuICAgICAgICAgICAgICAgIGVudi5hc3NlcnQoc2NvcGUsXG4gICAgICAgICAgICAgICAgICBJTlZBTElEX0JMRU5EX0NPTUJJTkFUSU9OUyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAnLmluZGV4T2YoJyArIHNyY1JHQiArICcrXCIsIFwiKycgKyBkc3RSR0IgKyAnKSA9PT0gLTEgJyxcbiAgICAgICAgICAgICAgICAgICd1bmFsbG93ZWQgYmxlbmRpbmcgY29tYmluYXRpb24gZm9yIChzcmNSR0IsIGRzdFJHQiknXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIHZhciBTUkNfUkdCID0gc2NvcGUuZGVmKEJMRU5EX0ZVTkNTLCAnWycsIHNyY1JHQiwgJ10nKVxuICAgICAgICAgICAgICB2YXIgU1JDX0FMUEhBID0gc2NvcGUuZGVmKEJMRU5EX0ZVTkNTLCAnWycsIHJlYWQoJ3NyYycsICdBbHBoYScpLCAnXScpXG4gICAgICAgICAgICAgIHZhciBEU1RfUkdCID0gc2NvcGUuZGVmKEJMRU5EX0ZVTkNTLCAnWycsIGRzdFJHQiwgJ10nKVxuICAgICAgICAgICAgICB2YXIgRFNUX0FMUEhBID0gc2NvcGUuZGVmKEJMRU5EX0ZVTkNTLCAnWycsIHJlYWQoJ2RzdCcsICdBbHBoYScpLCAnXScpXG5cbiAgICAgICAgICAgICAgcmV0dXJuIFtTUkNfUkdCLCBEU1RfUkdCLCBTUkNfQUxQSEEsIERTVF9BTFBIQV1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgY2FzZSBTX0JMRU5EX0VRVUFUSU9OOlxuICAgICAgICAgIHJldHVybiBwYXJzZVBhcmFtKFxuICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kUGFyYW1ldGVyKHZhbHVlLCBibGVuZEVxdWF0aW9ucywgJ2ludmFsaWQgJyArIHByb3AsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICBibGVuZEVxdWF0aW9uc1t2YWx1ZV0sXG4gICAgICAgICAgICAgICAgICBibGVuZEVxdWF0aW9uc1t2YWx1ZV1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFBhcmFtZXRlcihcbiAgICAgICAgICAgICAgICAgIHZhbHVlLnJnYiwgYmxlbmRFcXVhdGlvbnMsIHByb3AgKyAnLnJnYicsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFBhcmFtZXRlcihcbiAgICAgICAgICAgICAgICAgIHZhbHVlLmFscGhhLCBibGVuZEVxdWF0aW9ucywgcHJvcCArICcuYWxwaGEnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgYmxlbmRFcXVhdGlvbnNbdmFsdWUucmdiXSxcbiAgICAgICAgICAgICAgICAgIGJsZW5kRXF1YXRpb25zW3ZhbHVlLmFscGhhXVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRSYWlzZSgnaW52YWxpZCBibGVuZC5lcXVhdGlvbicsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVudiwgc2NvcGUsIHZhbHVlKSB7XG4gICAgICAgICAgICAgIHZhciBCTEVORF9FUVVBVElPTlMgPSBlbnYuY29uc3RhbnRzLmJsZW5kRXF1YXRpb25zXG5cbiAgICAgICAgICAgICAgdmFyIFJHQiA9IHNjb3BlLmRlZigpXG4gICAgICAgICAgICAgIHZhciBBTFBIQSA9IHNjb3BlLmRlZigpXG5cbiAgICAgICAgICAgICAgdmFyIGlmdGUgPSBlbnYuY29uZCgndHlwZW9mICcsIHZhbHVlLCAnPT09XCJzdHJpbmdcIicpXG5cbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tQcm9wIChibG9jaywgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGVudi5hc3NlcnQoYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlICsgJyBpbiAnICsgQkxFTkRfRVFVQVRJT05TLFxuICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCAnICsgbmFtZSArICcsIG11c3QgYmUgb25lIG9mICcgKyBPYmplY3Qua2V5cyhibGVuZEVxdWF0aW9ucykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNoZWNrUHJvcChpZnRlLnRoZW4sIHByb3AsIHZhbHVlKVxuXG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChpZnRlLmVsc2UsXG4gICAgICAgICAgICAgICAgICB2YWx1ZSArICcmJnR5cGVvZiAnICsgdmFsdWUgKyAnPT09XCJvYmplY3RcIicsXG4gICAgICAgICAgICAgICAgICAnaW52YWxpZCAnICsgcHJvcClcbiAgICAgICAgICAgICAgICBjaGVja1Byb3AoaWZ0ZS5lbHNlLCBwcm9wICsgJy5yZ2InLCB2YWx1ZSArICcucmdiJylcbiAgICAgICAgICAgICAgICBjaGVja1Byb3AoaWZ0ZS5lbHNlLCBwcm9wICsgJy5hbHBoYScsIHZhbHVlICsgJy5hbHBoYScpXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgaWZ0ZS50aGVuKFxuICAgICAgICAgICAgICAgIFJHQiwgJz0nLCBBTFBIQSwgJz0nLCBCTEVORF9FUVVBVElPTlMsICdbJywgdmFsdWUsICddOycpXG4gICAgICAgICAgICAgIGlmdGUuZWxzZShcbiAgICAgICAgICAgICAgICBSR0IsICc9JywgQkxFTkRfRVFVQVRJT05TLCAnWycsIHZhbHVlLCAnLnJnYl07JyxcbiAgICAgICAgICAgICAgICBBTFBIQSwgJz0nLCBCTEVORF9FUVVBVElPTlMsICdbJywgdmFsdWUsICcuYWxwaGFdOycpXG5cbiAgICAgICAgICAgICAgc2NvcGUoaWZ0ZSlcblxuICAgICAgICAgICAgICByZXR1cm4gW1JHQiwgQUxQSEFdXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19CTEVORF9DT0xPUjpcbiAgICAgICAgICByZXR1cm4gcGFyc2VQYXJhbShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09PSA0LFxuICAgICAgICAgICAgICAgICdibGVuZC5jb2xvciBtdXN0IGJlIGEgNGQgYXJyYXknLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgcmV0dXJuIGxvb3AoNCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gK3ZhbHVlW2ldXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVudiwgc2NvcGUsIHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVudi5hc3NlcnQoc2NvcGUsXG4gICAgICAgICAgICAgICAgICBlbnYuc2hhcmVkLmlzQXJyYXlMaWtlICsgJygnICsgdmFsdWUgKyAnKSYmJyArXG4gICAgICAgICAgICAgICAgICB2YWx1ZSArICcubGVuZ3RoPT09NCcsXG4gICAgICAgICAgICAgICAgICAnYmxlbmQuY29sb3IgbXVzdCBiZSBhIDRkIGFycmF5JylcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmV0dXJuIGxvb3AoNCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZGVmKCcrJywgdmFsdWUsICdbJywgaSwgJ10nKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcblxuICAgICAgICBjYXNlIFNfU1RFTkNJTF9NQVNLOlxuICAgICAgICAgIHJldHVybiBwYXJzZVBhcmFtKFxuICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFR5cGUodmFsdWUsICdudW1iZXInLCBwYXJhbSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSB8IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgICd0eXBlb2YgJyArIHZhbHVlICsgJz09PVwibnVtYmVyXCInLFxuICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgc3RlbmNpbC5tYXNrJylcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmRlZih2YWx1ZSwgJ3wwJylcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgY2FzZSBTX1NURU5DSUxfRlVOQzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VQYXJhbShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRUeXBlKHZhbHVlLCAnb2JqZWN0JywgcGFyYW0sIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICB2YXIgY21wID0gdmFsdWUuY21wIHx8ICdrZWVwJ1xuICAgICAgICAgICAgICB2YXIgcmVmID0gdmFsdWUucmVmIHx8IDBcbiAgICAgICAgICAgICAgdmFyIG1hc2sgPSAnbWFzaycgaW4gdmFsdWUgPyB2YWx1ZS5tYXNrIDogLTFcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kUGFyYW1ldGVyKGNtcCwgY29tcGFyZUZ1bmNzLCBwcm9wICsgJy5jbXAnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kVHlwZShyZWYsICdudW1iZXInLCBwcm9wICsgJy5yZWYnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kVHlwZShtYXNrLCAnbnVtYmVyJywgcHJvcCArICcubWFzaycsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGNvbXBhcmVGdW5jc1tjbXBdLFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICBtYXNrXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFyIENPTVBBUkVfRlVOQ1MgPSBlbnYuY29uc3RhbnRzLmNvbXBhcmVGdW5jc1xuICAgICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnQgKCkge1xuICAgICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChhcmd1bWVudHMsICcnKSxcbiAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgc3RlbmNpbC5mdW5jJylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXNzZXJ0KHZhbHVlICsgJyYmdHlwZW9mICcsIHZhbHVlLCAnPT09XCJvYmplY3RcIicpXG4gICAgICAgICAgICAgICAgYXNzZXJ0KCchKFwiY21wXCIgaW4gJywgdmFsdWUsICcpfHwoJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLCAnLmNtcCBpbiAnLCBDT01QQVJFX0ZVTkNTLCAnKScpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHZhciBjbXAgPSBzY29wZS5kZWYoXG4gICAgICAgICAgICAgICAgJ1wiY21wXCIgaW4gJywgdmFsdWUsXG4gICAgICAgICAgICAgICAgJz8nLCBDT01QQVJFX0ZVTkNTLCAnWycsIHZhbHVlLCAnLmNtcF0nLFxuICAgICAgICAgICAgICAgICc6JywgR0xfS0VFUClcbiAgICAgICAgICAgICAgdmFyIHJlZiA9IHNjb3BlLmRlZih2YWx1ZSwgJy5yZWZ8MCcpXG4gICAgICAgICAgICAgIHZhciBtYXNrID0gc2NvcGUuZGVmKFxuICAgICAgICAgICAgICAgICdcIm1hc2tcIiBpbiAnLCB2YWx1ZSxcbiAgICAgICAgICAgICAgICAnPycsIHZhbHVlLCAnLm1hc2t8MDotMScpXG4gICAgICAgICAgICAgIHJldHVybiBbY21wLCByZWYsIG1hc2tdXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19TVEVOQ0lMX09QRlJPTlQ6XG4gICAgICAgIGNhc2UgU19TVEVOQ0lMX09QQkFDSzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VQYXJhbShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRUeXBlKHZhbHVlLCAnb2JqZWN0JywgcGFyYW0sIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICB2YXIgZmFpbCA9IHZhbHVlLmZhaWwgfHwgJ2tlZXAnXG4gICAgICAgICAgICAgIHZhciB6ZmFpbCA9IHZhbHVlLnpmYWlsIHx8ICdrZWVwJ1xuICAgICAgICAgICAgICB2YXIgenBhc3MgPSB2YWx1ZS56cGFzcyB8fCAna2VlcCdcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kUGFyYW1ldGVyKGZhaWwsIHN0ZW5jaWxPcHMsIHByb3AgKyAnLmZhaWwnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kUGFyYW1ldGVyKHpmYWlsLCBzdGVuY2lsT3BzLCBwcm9wICsgJy56ZmFpbCcsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRQYXJhbWV0ZXIoenBhc3MsIHN0ZW5jaWxPcHMsIHByb3AgKyAnLnpwYXNzJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgcHJvcCA9PT0gU19TVEVOQ0lMX09QQkFDSyA/IEdMX0JBQ0sgOiBHTF9GUk9OVCxcbiAgICAgICAgICAgICAgICBzdGVuY2lsT3BzW2ZhaWxdLFxuICAgICAgICAgICAgICAgIHN0ZW5jaWxPcHNbemZhaWxdLFxuICAgICAgICAgICAgICAgIHN0ZW5jaWxPcHNbenBhc3NdXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFyIFNURU5DSUxfT1BTID0gZW52LmNvbnN0YW50cy5zdGVuY2lsT3BzXG5cbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlICsgJyYmdHlwZW9mICcgKyB2YWx1ZSArICc9PT1cIm9iamVjdFwiJyxcbiAgICAgICAgICAgICAgICAgICdpbnZhbGlkICcgKyBwcm9wKVxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIHJlYWQgKG5hbWUpIHtcbiAgICAgICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIGVudi5hc3NlcnQoc2NvcGUsXG4gICAgICAgICAgICAgICAgICAgICchKFwiJyArIG5hbWUgKyAnXCIgaW4gJyArIHZhbHVlICsgJyl8fCcgK1xuICAgICAgICAgICAgICAgICAgICAnKCcgKyB2YWx1ZSArICcuJyArIG5hbWUgKyAnIGluICcgKyBTVEVOQ0lMX09QUyArICcpJyxcbiAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgJyArIHByb3AgKyAnLicgKyBuYW1lICsgJywgbXVzdCBiZSBvbmUgb2YgJyArIE9iamVjdC5rZXlzKHN0ZW5jaWxPcHMpKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZGVmKFxuICAgICAgICAgICAgICAgICAgJ1wiJywgbmFtZSwgJ1wiIGluICcsIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgJz8nLCBTVEVOQ0lMX09QUywgJ1snLCB2YWx1ZSwgJy4nLCBuYW1lLCAnXTonLFxuICAgICAgICAgICAgICAgICAgR0xfS0VFUClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgcHJvcCA9PT0gU19TVEVOQ0lMX09QQkFDSyA/IEdMX0JBQ0sgOiBHTF9GUk9OVCxcbiAgICAgICAgICAgICAgICByZWFkKCdmYWlsJyksXG4gICAgICAgICAgICAgICAgcmVhZCgnemZhaWwnKSxcbiAgICAgICAgICAgICAgICByZWFkKCd6cGFzcycpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgY2FzZSBTX1BPTFlHT05fT0ZGU0VUX09GRlNFVDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VQYXJhbShcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRUeXBlKHZhbHVlLCAnb2JqZWN0JywgcGFyYW0sIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICB2YXIgZmFjdG9yID0gdmFsdWUuZmFjdG9yIHwgMFxuICAgICAgICAgICAgICB2YXIgdW5pdHMgPSB2YWx1ZS51bml0cyB8IDBcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kVHlwZShmYWN0b3IsICdudW1iZXInLCBwYXJhbSArICcuZmFjdG9yJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFR5cGUodW5pdHMsICdudW1iZXInLCBwYXJhbSArICcudW5pdHMnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgcmV0dXJuIFtmYWN0b3IsIHVuaXRzXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChlbnYsIHNjb3BlLCB2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgICAgICAgdmFsdWUgKyAnJiZ0eXBlb2YgJyArIHZhbHVlICsgJz09PVwib2JqZWN0XCInLFxuICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgJyArIHByb3ApXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgdmFyIEZBQ1RPUiA9IHNjb3BlLmRlZih2YWx1ZSwgJy5mYWN0b3J8MCcpXG4gICAgICAgICAgICAgIHZhciBVTklUUyA9IHNjb3BlLmRlZih2YWx1ZSwgJy51bml0c3wwJylcblxuICAgICAgICAgICAgICByZXR1cm4gW0ZBQ1RPUiwgVU5JVFNdXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19DVUxMX0ZBQ0U6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlUGFyYW0oXG4gICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFyIGZhY2UgPSAwXG4gICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ2Zyb250Jykge1xuICAgICAgICAgICAgICAgIGZhY2UgPSBHTF9GUk9OVFxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnYmFjaycpIHtcbiAgICAgICAgICAgICAgICBmYWNlID0gR0xfQkFDS1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZCghIWZhY2UsIHBhcmFtLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgcmV0dXJuIGZhY2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlICsgJz09PVwiZnJvbnRcInx8JyArXG4gICAgICAgICAgICAgICAgICB2YWx1ZSArICc9PT1cImJhY2tcIicsXG4gICAgICAgICAgICAgICAgICAnaW52YWxpZCBjdWxsLmZhY2UnKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICByZXR1cm4gc2NvcGUuZGVmKHZhbHVlLCAnPT09XCJmcm9udFwiPycsIEdMX0ZST05ULCAnOicsIEdMX0JBQ0spXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19MSU5FX1dJRFRIOlxuICAgICAgICAgIHJldHVybiBwYXJzZVBhcmFtKFxuICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChcbiAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgICAgdmFsdWUgPj0gbGltaXRzLmxpbmVXaWR0aERpbXNbMF0gJiZcbiAgICAgICAgICAgICAgICB2YWx1ZSA8PSBsaW1pdHMubGluZVdpZHRoRGltc1sxXSxcbiAgICAgICAgICAgICAgICAnaW52YWxpZCBsaW5lIHdpZHRoLCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gJyArXG4gICAgICAgICAgICAgICAgbGltaXRzLmxpbmVXaWR0aERpbXNbMF0gKyAnIGFuZCAnICsgbGltaXRzLmxpbmVXaWR0aERpbXNbMV0sIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgICd0eXBlb2YgJyArIHZhbHVlICsgJz09PVwibnVtYmVyXCImJicgK1xuICAgICAgICAgICAgICAgICAgdmFsdWUgKyAnPj0nICsgbGltaXRzLmxpbmVXaWR0aERpbXNbMF0gKyAnJiYnICtcbiAgICAgICAgICAgICAgICAgIHZhbHVlICsgJzw9JyArIGxpbWl0cy5saW5lV2lkdGhEaW1zWzFdLFxuICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgbGluZSB3aWR0aCcpXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19GUk9OVF9GQUNFOlxuICAgICAgICAgIHJldHVybiBwYXJzZVBhcmFtKFxuICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZFBhcmFtZXRlcih2YWx1ZSwgb3JpZW50YXRpb25UeXBlLCBwYXJhbSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIHJldHVybiBvcmllbnRhdGlvblR5cGVbdmFsdWVdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVudiwgc2NvcGUsIHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVudi5hc3NlcnQoc2NvcGUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZSArICc9PT1cImN3XCJ8fCcgK1xuICAgICAgICAgICAgICAgICAgdmFsdWUgKyAnPT09XCJjY3dcIicsXG4gICAgICAgICAgICAgICAgICAnaW52YWxpZCBmcm9udEZhY2UsIG11c3QgYmUgb25lIG9mIGN3LGNjdycpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHJldHVybiBzY29wZS5kZWYodmFsdWUgKyAnPT09XCJjd1wiPycgKyBHTF9DVyArICc6JyArIEdMX0NDVylcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgY2FzZSBTX0NPTE9SX01BU0s6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlUGFyYW0oXG4gICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgIGlzQXJyYXlMaWtlKHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDQsXG4gICAgICAgICAgICAgICAgJ2NvbG9yLm1hc2sgbXVzdCBiZSBsZW5ndGggNCBhcnJheScsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiAhIXYgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdW5jdGlvbiAoZW52LCBzY29wZSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZW52LmFzc2VydChzY29wZSxcbiAgICAgICAgICAgICAgICAgIGVudi5zaGFyZWQuaXNBcnJheUxpa2UgKyAnKCcgKyB2YWx1ZSArICcpJiYnICtcbiAgICAgICAgICAgICAgICAgIHZhbHVlICsgJy5sZW5ndGg9PT00JyxcbiAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGNvbG9yLm1hc2snKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICByZXR1cm4gbG9vcCg0LCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnISEnICsgdmFsdWUgKyAnWycgKyBpICsgJ10nXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgIGNhc2UgU19TQU1QTEVfQ09WRVJBR0U6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlUGFyYW0oXG4gICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUsIHBhcmFtLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgdmFyIHNhbXBsZVZhbHVlID0gJ3ZhbHVlJyBpbiB2YWx1ZSA/IHZhbHVlLnZhbHVlIDogMVxuICAgICAgICAgICAgICB2YXIgc2FtcGxlSW52ZXJ0ID0gISF2YWx1ZS5pbnZlcnRcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgIHR5cGVvZiBzYW1wbGVWYWx1ZSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgICAgICBzYW1wbGVWYWx1ZSA+PSAwICYmIHNhbXBsZVZhbHVlIDw9IDEsXG4gICAgICAgICAgICAgICAgJ3NhbXBsZS5jb3ZlcmFnZS52YWx1ZSBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMScsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICByZXR1cm4gW3NhbXBsZVZhbHVlLCBzYW1wbGVJbnZlcnRdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVudiwgc2NvcGUsIHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVudi5hc3NlcnQoc2NvcGUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZSArICcmJnR5cGVvZiAnICsgdmFsdWUgKyAnPT09XCJvYmplY3RcIicsXG4gICAgICAgICAgICAgICAgICAnaW52YWxpZCBzYW1wbGUuY292ZXJhZ2UnKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB2YXIgVkFMVUUgPSBzY29wZS5kZWYoXG4gICAgICAgICAgICAgICAgJ1widmFsdWVcIiBpbiAnLCB2YWx1ZSwgJz8rJywgdmFsdWUsICcudmFsdWU6MScpXG4gICAgICAgICAgICAgIHZhciBJTlZFUlQgPSBzY29wZS5kZWYoJyEhJywgdmFsdWUsICcuaW52ZXJ0JylcbiAgICAgICAgICAgICAgcmV0dXJuIFtWQUxVRSwgSU5WRVJUXVxuICAgICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIFNUQVRFXG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVVuaWZvcm1zICh1bmlmb3JtcywgZW52KSB7XG4gICAgdmFyIHN0YXRpY1VuaWZvcm1zID0gdW5pZm9ybXMuc3RhdGljXG4gICAgdmFyIGR5bmFtaWNVbmlmb3JtcyA9IHVuaWZvcm1zLmR5bmFtaWNcblxuICAgIHZhciBVTklGT1JNUyA9IHt9XG5cbiAgICBPYmplY3Qua2V5cyhzdGF0aWNVbmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gc3RhdGljVW5pZm9ybXNbbmFtZV1cbiAgICAgIHZhciByZXN1bHRcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlU3RhdGljRGVjbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgcmVnbFR5cGUgPSB2YWx1ZS5fcmVnbFR5cGVcbiAgICAgICAgaWYgKHJlZ2xUeXBlID09PSAndGV4dHVyZTJkJyB8fFxuICAgICAgICAgICAgcmVnbFR5cGUgPT09ICd0ZXh0dXJlQ3ViZScpIHtcbiAgICAgICAgICByZXN1bHQgPSBjcmVhdGVTdGF0aWNEZWNsKGZ1bmN0aW9uIChlbnYpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnYubGluayh2YWx1ZSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHJlZ2xUeXBlID09PSAnZnJhbWVidWZmZXInIHx8XG4gICAgICAgICAgICAgICAgICAgcmVnbFR5cGUgPT09ICdmcmFtZWJ1ZmZlckN1YmUnKSB7XG4gICAgICAgICAgY2hlY2skMS5jb21tYW5kKHZhbHVlLmNvbG9yLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICAnbWlzc2luZyBjb2xvciBhdHRhY2htZW50IGZvciBmcmFtZWJ1ZmZlciBzZW50IHRvIHVuaWZvcm0gXCInICsgbmFtZSArICdcIicsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudikge1xuICAgICAgICAgICAgcmV0dXJuIGVudi5saW5rKHZhbHVlLmNvbG9yWzBdKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hlY2skMS5jb21tYW5kUmFpc2UoJ2ludmFsaWQgZGF0YSBmb3IgdW5pZm9ybSBcIicgKyBuYW1lICsgJ1wiJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudikge1xuICAgICAgICAgIHZhciBJVEVNID0gZW52Lmdsb2JhbC5kZWYoJ1snLFxuICAgICAgICAgICAgbG9vcCh2YWx1ZS5sZW5ndGgsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChcbiAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWVbaV0gPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlW2ldID09PSAnYm9vbGVhbicsXG4gICAgICAgICAgICAgICAgJ2ludmFsaWQgdW5pZm9ybSAnICsgbmFtZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZVtpXVxuICAgICAgICAgICAgfSksICddJylcbiAgICAgICAgICByZXR1cm4gSVRFTVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2skMS5jb21tYW5kUmFpc2UoJ2ludmFsaWQgb3IgbWlzc2luZyBkYXRhIGZvciB1bmlmb3JtIFwiJyArIG5hbWUgKyAnXCInLCBlbnYuY29tbWFuZFN0cilcbiAgICAgIH1cbiAgICAgIHJlc3VsdC52YWx1ZSA9IHZhbHVlXG4gICAgICBVTklGT1JNU1tuYW1lXSA9IHJlc3VsdFxuICAgIH0pXG5cbiAgICBPYmplY3Qua2V5cyhkeW5hbWljVW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGR5biA9IGR5bmFtaWNVbmlmb3Jtc1trZXldXG4gICAgICBVTklGT1JNU1trZXldID0gY3JlYXRlRHluYW1pY0RlY2woZHluLCBmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICByZXR1cm4gZW52Lmludm9rZShzY29wZSwgZHluKVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIFVOSUZPUk1TXG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUF0dHJpYnV0ZXMgKGF0dHJpYnV0ZXMsIGVudikge1xuICAgIHZhciBzdGF0aWNBdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5zdGF0aWNcbiAgICB2YXIgZHluYW1pY0F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLmR5bmFtaWNcblxuICAgIHZhciBhdHRyaWJ1dGVEZWZzID0ge31cblxuICAgIE9iamVjdC5rZXlzKHN0YXRpY0F0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgdmFyIHZhbHVlID0gc3RhdGljQXR0cmlidXRlc1thdHRyaWJ1dGVdXG4gICAgICB2YXIgaWQgPSBzdHJpbmdTdG9yZS5pZChhdHRyaWJ1dGUpXG5cbiAgICAgIHZhciByZWNvcmQgPSBuZXcgQXR0cmlidXRlUmVjb3JkKClcbiAgICAgIGlmIChpc0J1ZmZlckFyZ3ModmFsdWUpKSB7XG4gICAgICAgIHJlY29yZC5zdGF0ZSA9IEFUVFJJQl9TVEFURV9QT0lOVEVSXG4gICAgICAgIHJlY29yZC5idWZmZXIgPSBidWZmZXJTdGF0ZS5nZXRCdWZmZXIoXG4gICAgICAgICAgYnVmZmVyU3RhdGUuY3JlYXRlKHZhbHVlLCBHTF9BUlJBWV9CVUZGRVIkMiwgZmFsc2UsIHRydWUpKVxuICAgICAgICByZWNvcmQudHlwZSA9IDBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBidWZmZXIgPSBidWZmZXJTdGF0ZS5nZXRCdWZmZXIodmFsdWUpXG4gICAgICAgIGlmIChidWZmZXIpIHtcbiAgICAgICAgICByZWNvcmQuc3RhdGUgPSBBVFRSSUJfU1RBVEVfUE9JTlRFUlxuICAgICAgICAgIHJlY29yZC5idWZmZXIgPSBidWZmZXJcbiAgICAgICAgICByZWNvcmQudHlwZSA9IDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGVjayQxLmNvbW1hbmQodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSxcbiAgICAgICAgICAgICdpbnZhbGlkIGRhdGEgZm9yIGF0dHJpYnV0ZSAnICsgYXR0cmlidXRlLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICBpZiAoJ2NvbnN0YW50JyBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIGNvbnN0YW50ID0gdmFsdWUuY29uc3RhbnRcbiAgICAgICAgICAgIHJlY29yZC5idWZmZXIgPSAnbnVsbCdcbiAgICAgICAgICAgIHJlY29yZC5zdGF0ZSA9IEFUVFJJQl9TVEFURV9DT05TVEFOVFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zdGFudCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgcmVjb3JkLnggPSBjb25zdGFudFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgIGlzQXJyYXlMaWtlKGNvbnN0YW50KSAmJlxuICAgICAgICAgICAgICAgIGNvbnN0YW50Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICBjb25zdGFudC5sZW5ndGggPD0gNCxcbiAgICAgICAgICAgICAgICAnaW52YWxpZCBjb25zdGFudCBmb3IgYXR0cmlidXRlICcgKyBhdHRyaWJ1dGUsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICBDVVRFX0NPTVBPTkVOVFMuZm9yRWFjaChmdW5jdGlvbiAoYywgaSkge1xuICAgICAgICAgICAgICAgIGlmIChpIDwgY29uc3RhbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICByZWNvcmRbY10gPSBjb25zdGFudFtpXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzQnVmZmVyQXJncyh2YWx1ZS5idWZmZXIpKSB7XG4gICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlclN0YXRlLmdldEJ1ZmZlcihcbiAgICAgICAgICAgICAgICBidWZmZXJTdGF0ZS5jcmVhdGUodmFsdWUuYnVmZmVyLCBHTF9BUlJBWV9CVUZGRVIkMiwgZmFsc2UsIHRydWUpKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnVmZmVyID0gYnVmZmVyU3RhdGUuZ2V0QnVmZmVyKHZhbHVlLmJ1ZmZlcilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZCghIWJ1ZmZlciwgJ21pc3NpbmcgYnVmZmVyIGZvciBhdHRyaWJ1dGUgXCInICsgYXR0cmlidXRlICsgJ1wiJywgZW52LmNvbW1hbmRTdHIpXG5cbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB2YWx1ZS5vZmZzZXQgfCAwXG4gICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQob2Zmc2V0ID49IDAsXG4gICAgICAgICAgICAgICdpbnZhbGlkIG9mZnNldCBmb3IgYXR0cmlidXRlIFwiJyArIGF0dHJpYnV0ZSArICdcIicsIGVudi5jb21tYW5kU3RyKVxuXG4gICAgICAgICAgICB2YXIgc3RyaWRlID0gdmFsdWUuc3RyaWRlIHwgMFxuICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKHN0cmlkZSA+PSAwICYmIHN0cmlkZSA8IDI1NixcbiAgICAgICAgICAgICAgJ2ludmFsaWQgc3RyaWRlIGZvciBhdHRyaWJ1dGUgXCInICsgYXR0cmlidXRlICsgJ1wiLCBtdXN0IGJlIGludGVnZXIgYmV0d2VlZW4gWzAsIDI1NV0nLCBlbnYuY29tbWFuZFN0cilcblxuICAgICAgICAgICAgdmFyIHNpemUgPSB2YWx1ZS5zaXplIHwgMFxuICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKCEoJ3NpemUnIGluIHZhbHVlKSB8fCAoc2l6ZSA+IDAgJiYgc2l6ZSA8PSA0KSxcbiAgICAgICAgICAgICAgJ2ludmFsaWQgc2l6ZSBmb3IgYXR0cmlidXRlIFwiJyArIGF0dHJpYnV0ZSArICdcIiwgbXVzdCBiZSAxLDIsMyw0JywgZW52LmNvbW1hbmRTdHIpXG5cbiAgICAgICAgICAgIHZhciBub3JtYWxpemVkID0gISF2YWx1ZS5ub3JtYWxpemVkXG5cbiAgICAgICAgICAgIHZhciB0eXBlID0gMFxuICAgICAgICAgICAgaWYgKCd0eXBlJyBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRQYXJhbWV0ZXIoXG4gICAgICAgICAgICAgICAgdmFsdWUudHlwZSwgZ2xUeXBlcyxcbiAgICAgICAgICAgICAgICAnaW52YWxpZCB0eXBlIGZvciBhdHRyaWJ1dGUgJyArIGF0dHJpYnV0ZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIHR5cGUgPSBnbFR5cGVzW3ZhbHVlLnR5cGVdXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBkaXZpc29yID0gdmFsdWUuZGl2aXNvciB8IDBcbiAgICAgICAgICAgIGlmICgnZGl2aXNvcicgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKGRpdmlzb3IgPT09IDAgfHwgZXh0SW5zdGFuY2luZyxcbiAgICAgICAgICAgICAgICAnY2Fubm90IHNwZWNpZnkgZGl2aXNvciBmb3IgYXR0cmlidXRlIFwiJyArIGF0dHJpYnV0ZSArICdcIiwgaW5zdGFuY2luZyBub3Qgc3VwcG9ydGVkJywgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChkaXZpc29yID49IDAsXG4gICAgICAgICAgICAgICAgJ2ludmFsaWQgZGl2aXNvciBmb3IgYXR0cmlidXRlIFwiJyArIGF0dHJpYnV0ZSArICdcIicsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdmFyIGNvbW1hbmQgPSBlbnYuY29tbWFuZFN0clxuXG4gICAgICAgICAgICAgIHZhciBWQUxJRF9LRVlTID0gW1xuICAgICAgICAgICAgICAgICdidWZmZXInLFxuICAgICAgICAgICAgICAgICdvZmZzZXQnLFxuICAgICAgICAgICAgICAgICdkaXZpc29yJyxcbiAgICAgICAgICAgICAgICAnbm9ybWFsaXplZCcsXG4gICAgICAgICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICAgICAgICdzaXplJyxcbiAgICAgICAgICAgICAgICAnc3RyaWRlJ1xuICAgICAgICAgICAgICBdXG5cbiAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgICBWQUxJRF9LRVlTLmluZGV4T2YocHJvcCkgPj0gMCxcbiAgICAgICAgICAgICAgICAgICd1bmtub3duIHBhcmFtZXRlciBcIicgKyBwcm9wICsgJ1wiIGZvciBhdHRyaWJ1dGUgcG9pbnRlciBcIicgKyBhdHRyaWJ1dGUgKyAnXCIgKHZhbGlkIHBhcmFtZXRlcnMgYXJlICcgKyBWQUxJRF9LRVlTICsgJyknLFxuICAgICAgICAgICAgICAgICAgY29tbWFuZClcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJlY29yZC5idWZmZXIgPSBidWZmZXJcbiAgICAgICAgICAgIHJlY29yZC5zdGF0ZSA9IEFUVFJJQl9TVEFURV9QT0lOVEVSXG4gICAgICAgICAgICByZWNvcmQuc2l6ZSA9IHNpemVcbiAgICAgICAgICAgIHJlY29yZC5ub3JtYWxpemVkID0gbm9ybWFsaXplZFxuICAgICAgICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlIHx8IGJ1ZmZlci5kdHlwZVxuICAgICAgICAgICAgcmVjb3JkLm9mZnNldCA9IG9mZnNldFxuICAgICAgICAgICAgcmVjb3JkLnN0cmlkZSA9IHN0cmlkZVxuICAgICAgICAgICAgcmVjb3JkLmRpdmlzb3IgPSBkaXZpc29yXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF0dHJpYnV0ZURlZnNbYXR0cmlidXRlXSA9IGNyZWF0ZVN0YXRpY0RlY2woZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgdmFyIGNhY2hlID0gZW52LmF0dHJpYkNhY2hlXG4gICAgICAgIGlmIChpZCBpbiBjYWNoZSkge1xuICAgICAgICAgIHJldHVybiBjYWNoZVtpZF1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgIGlzU3RyZWFtOiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKHJlY29yZCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSByZWNvcmRba2V5XVxuICAgICAgICB9KVxuICAgICAgICBpZiAocmVjb3JkLmJ1ZmZlcikge1xuICAgICAgICAgIHJlc3VsdC5idWZmZXIgPSBlbnYubGluayhyZWNvcmQuYnVmZmVyKVxuICAgICAgICAgIHJlc3VsdC50eXBlID0gcmVzdWx0LnR5cGUgfHwgKHJlc3VsdC5idWZmZXIgKyAnLmR0eXBlJylcbiAgICAgICAgfVxuICAgICAgICBjYWNoZVtpZF0gPSByZXN1bHRcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgT2JqZWN0LmtleXMoZHluYW1pY0F0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgdmFyIGR5biA9IGR5bmFtaWNBdHRyaWJ1dGVzW2F0dHJpYnV0ZV1cblxuICAgICAgZnVuY3Rpb24gYXBwZW5kQXR0cmlidXRlQ29kZSAoZW52LCBibG9jaykge1xuICAgICAgICB2YXIgVkFMVUUgPSBlbnYuaW52b2tlKGJsb2NrLCBkeW4pXG5cbiAgICAgICAgdmFyIHNoYXJlZCA9IGVudi5zaGFyZWRcbiAgICAgICAgdmFyIGNvbnN0YW50cyA9IGVudi5jb25zdGFudHNcblxuICAgICAgICB2YXIgSVNfQlVGRkVSX0FSR1MgPSBzaGFyZWQuaXNCdWZmZXJBcmdzXG4gICAgICAgIHZhciBCVUZGRVJfU1RBVEUgPSBzaGFyZWQuYnVmZmVyXG5cbiAgICAgICAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIG9uIGF0dHJpYnV0ZVxuICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbnYuYXNzZXJ0KGJsb2NrLFxuICAgICAgICAgICAgVkFMVUUgKyAnJiYodHlwZW9mICcgKyBWQUxVRSArICc9PT1cIm9iamVjdFwifHx0eXBlb2YgJyArXG4gICAgICAgICAgICBWQUxVRSArICc9PT1cImZ1bmN0aW9uXCIpJiYoJyArXG4gICAgICAgICAgICBJU19CVUZGRVJfQVJHUyArICcoJyArIFZBTFVFICsgJyl8fCcgK1xuICAgICAgICAgICAgQlVGRkVSX1NUQVRFICsgJy5nZXRCdWZmZXIoJyArIFZBTFVFICsgJyl8fCcgK1xuICAgICAgICAgICAgQlVGRkVSX1NUQVRFICsgJy5nZXRCdWZmZXIoJyArIFZBTFVFICsgJy5idWZmZXIpfHwnICtcbiAgICAgICAgICAgIElTX0JVRkZFUl9BUkdTICsgJygnICsgVkFMVUUgKyAnLmJ1ZmZlcil8fCcgK1xuICAgICAgICAgICAgJyhcImNvbnN0YW50XCIgaW4gJyArIFZBTFVFICtcbiAgICAgICAgICAgICcmJih0eXBlb2YgJyArIFZBTFVFICsgJy5jb25zdGFudD09PVwibnVtYmVyXCJ8fCcgK1xuICAgICAgICAgICAgc2hhcmVkLmlzQXJyYXlMaWtlICsgJygnICsgVkFMVUUgKyAnLmNvbnN0YW50KSkpKScsXG4gICAgICAgICAgICAnaW52YWxpZCBkeW5hbWljIGF0dHJpYnV0ZSBcIicgKyBhdHRyaWJ1dGUgKyAnXCInKVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIGFsbG9jYXRlIG5hbWVzIGZvciByZXN1bHRcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICBpc1N0cmVhbTogYmxvY2suZGVmKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIHZhciBkZWZhdWx0UmVjb3JkID0gbmV3IEF0dHJpYnV0ZVJlY29yZCgpXG4gICAgICAgIGRlZmF1bHRSZWNvcmQuc3RhdGUgPSBBVFRSSUJfU1RBVEVfUE9JTlRFUlxuICAgICAgICBPYmplY3Qua2V5cyhkZWZhdWx0UmVjb3JkKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IGJsb2NrLmRlZignJyArIGRlZmF1bHRSZWNvcmRba2V5XSlcbiAgICAgICAgfSlcblxuICAgICAgICB2YXIgQlVGRkVSID0gcmVzdWx0LmJ1ZmZlclxuICAgICAgICB2YXIgVFlQRSA9IHJlc3VsdC50eXBlXG4gICAgICAgIGJsb2NrKFxuICAgICAgICAgICdpZignLCBJU19CVUZGRVJfQVJHUywgJygnLCBWQUxVRSwgJykpeycsXG4gICAgICAgICAgcmVzdWx0LmlzU3RyZWFtLCAnPXRydWU7JyxcbiAgICAgICAgICBCVUZGRVIsICc9JywgQlVGRkVSX1NUQVRFLCAnLmNyZWF0ZVN0cmVhbSgnLCBHTF9BUlJBWV9CVUZGRVIkMiwgJywnLCBWQUxVRSwgJyk7JyxcbiAgICAgICAgICBUWVBFLCAnPScsIEJVRkZFUiwgJy5kdHlwZTsnLFxuICAgICAgICAgICd9ZWxzZXsnLFxuICAgICAgICAgIEJVRkZFUiwgJz0nLCBCVUZGRVJfU1RBVEUsICcuZ2V0QnVmZmVyKCcsIFZBTFVFLCAnKTsnLFxuICAgICAgICAgICdpZignLCBCVUZGRVIsICcpeycsXG4gICAgICAgICAgVFlQRSwgJz0nLCBCVUZGRVIsICcuZHR5cGU7JyxcbiAgICAgICAgICAnfWVsc2UgaWYoXCJjb25zdGFudFwiIGluICcsIFZBTFVFLCAnKXsnLFxuICAgICAgICAgIHJlc3VsdC5zdGF0ZSwgJz0nLCBBVFRSSUJfU1RBVEVfQ09OU1RBTlQsICc7JyxcbiAgICAgICAgICAnaWYodHlwZW9mICcgKyBWQUxVRSArICcuY29uc3RhbnQgPT09IFwibnVtYmVyXCIpeycsXG4gICAgICAgICAgcmVzdWx0W0NVVEVfQ09NUE9ORU5UU1swXV0sICc9JywgVkFMVUUsICcuY29uc3RhbnQ7JyxcbiAgICAgICAgICBDVVRFX0NPTVBPTkVOVFMuc2xpY2UoMSkubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0W25dXG4gICAgICAgICAgfSkuam9pbignPScpLCAnPTA7JyxcbiAgICAgICAgICAnfWVsc2V7JyxcbiAgICAgICAgICBDVVRFX0NPTVBPTkVOVFMubWFwKGZ1bmN0aW9uIChuYW1lLCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gKyAnPScgKyBWQUxVRSArICcuY29uc3RhbnQubGVuZ3RoPicgKyBpICtcbiAgICAgICAgICAgICAgJz8nICsgVkFMVUUgKyAnLmNvbnN0YW50WycgKyBpICsgJ106MDsnXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSkuam9pbignJyksXG4gICAgICAgICAgJ319ZWxzZXsnLFxuICAgICAgICAgICdpZignLCBJU19CVUZGRVJfQVJHUywgJygnLCBWQUxVRSwgJy5idWZmZXIpKXsnLFxuICAgICAgICAgIEJVRkZFUiwgJz0nLCBCVUZGRVJfU1RBVEUsICcuY3JlYXRlU3RyZWFtKCcsIEdMX0FSUkFZX0JVRkZFUiQyLCAnLCcsIFZBTFVFLCAnLmJ1ZmZlcik7JyxcbiAgICAgICAgICAnfWVsc2V7JyxcbiAgICAgICAgICBCVUZGRVIsICc9JywgQlVGRkVSX1NUQVRFLCAnLmdldEJ1ZmZlcignLCBWQUxVRSwgJy5idWZmZXIpOycsXG4gICAgICAgICAgJ30nLFxuICAgICAgICAgIFRZUEUsICc9XCJ0eXBlXCIgaW4gJywgVkFMVUUsICc/JyxcbiAgICAgICAgICBjb25zdGFudHMuZ2xUeXBlcywgJ1snLCBWQUxVRSwgJy50eXBlXTonLCBCVUZGRVIsICcuZHR5cGU7JyxcbiAgICAgICAgICByZXN1bHQubm9ybWFsaXplZCwgJz0hIScsIFZBTFVFLCAnLm5vcm1hbGl6ZWQ7JylcbiAgICAgICAgZnVuY3Rpb24gZW1pdFJlYWRSZWNvcmQgKG5hbWUpIHtcbiAgICAgICAgICBibG9jayhyZXN1bHRbbmFtZV0sICc9JywgVkFMVUUsICcuJywgbmFtZSwgJ3wwOycpXG4gICAgICAgIH1cbiAgICAgICAgZW1pdFJlYWRSZWNvcmQoJ3NpemUnKVxuICAgICAgICBlbWl0UmVhZFJlY29yZCgnb2Zmc2V0JylcbiAgICAgICAgZW1pdFJlYWRSZWNvcmQoJ3N0cmlkZScpXG4gICAgICAgIGVtaXRSZWFkUmVjb3JkKCdkaXZpc29yJylcblxuICAgICAgICBibG9jaygnfX0nKVxuXG4gICAgICAgIGJsb2NrLmV4aXQoXG4gICAgICAgICAgJ2lmKCcsIHJlc3VsdC5pc1N0cmVhbSwgJyl7JyxcbiAgICAgICAgICBCVUZGRVJfU1RBVEUsICcuZGVzdHJveVN0cmVhbSgnLCBCVUZGRVIsICcpOycsXG4gICAgICAgICAgJ30nKVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgYXR0cmlidXRlRGVmc1thdHRyaWJ1dGVdID0gY3JlYXRlRHluYW1pY0RlY2woZHluLCBhcHBlbmRBdHRyaWJ1dGVDb2RlKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlRGVmc1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VWQU8gKG9wdGlvbnMsIGVudikge1xuICAgIHZhciBzdGF0aWNPcHRpb25zID0gb3B0aW9ucy5zdGF0aWNcbiAgICB2YXIgZHluYW1pY09wdGlvbnMgPSBvcHRpb25zLmR5bmFtaWNcbiAgICBpZiAoU19WQU8gaW4gc3RhdGljT3B0aW9ucykge1xuICAgICAgdmFyIHZhbyA9IHN0YXRpY09wdGlvbnNbU19WQU9dXG4gICAgICBpZiAodmFvICE9PSBudWxsICYmIGF0dHJpYnV0ZVN0YXRlLmdldFZBTyh2YW8pID09PSBudWxsKSB7XG4gICAgICAgIHZhbyA9IGF0dHJpYnV0ZVN0YXRlLmNyZWF0ZVZBTyh2YW8pXG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlU3RhdGljRGVjbChmdW5jdGlvbiAoZW52KSB7XG4gICAgICAgIHJldHVybiBlbnYubGluayhhdHRyaWJ1dGVTdGF0ZS5nZXRWQU8odmFvKSlcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChTX1ZBTyBpbiBkeW5hbWljT3B0aW9ucykge1xuICAgICAgdmFyIGR5biA9IGR5bmFtaWNPcHRpb25zW1NfVkFPXVxuICAgICAgcmV0dXJuIGNyZWF0ZUR5bmFtaWNEZWNsKGR5biwgZnVuY3Rpb24gKGVudiwgc2NvcGUpIHtcbiAgICAgICAgdmFyIHZhb1JlZiA9IGVudi5pbnZva2Uoc2NvcGUsIGR5bilcbiAgICAgICAgcmV0dXJuIHNjb3BlLmRlZihlbnYuc2hhcmVkLnZhbyArICcuZ2V0VkFPKCcgKyB2YW9SZWYgKyAnKScpXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VDb250ZXh0IChjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRpY0NvbnRleHQgPSBjb250ZXh0LnN0YXRpY1xuICAgIHZhciBkeW5hbWljQ29udGV4dCA9IGNvbnRleHQuZHluYW1pY1xuICAgIHZhciByZXN1bHQgPSB7fVxuXG4gICAgT2JqZWN0LmtleXMoc3RhdGljQ29udGV4dCkuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gc3RhdGljQ29udGV4dFtuYW1lXVxuICAgICAgcmVzdWx0W25hbWVdID0gY3JlYXRlU3RhdGljRGVjbChmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHJldHVybiAnJyArIHZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGVudi5saW5rKHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBPYmplY3Qua2V5cyhkeW5hbWljQ29udGV4dCkuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGR5biA9IGR5bmFtaWNDb250ZXh0W25hbWVdXG4gICAgICByZXN1bHRbbmFtZV0gPSBjcmVhdGVEeW5hbWljRGVjbChkeW4sIGZ1bmN0aW9uIChlbnYsIHNjb3BlKSB7XG4gICAgICAgIHJldHVybiBlbnYuaW52b2tlKHNjb3BlLCBkeW4pXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUFyZ3VtZW50cyAob3B0aW9ucywgYXR0cmlidXRlcywgdW5pZm9ybXMsIGNvbnRleHQsIGVudikge1xuICAgIHZhciBzdGF0aWNPcHRpb25zID0gb3B0aW9ucy5zdGF0aWNcbiAgICB2YXIgZHluYW1pY09wdGlvbnMgPSBvcHRpb25zLmR5bmFtaWNcblxuICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIEtFWV9OQU1FUyA9IFtcbiAgICAgICAgU19GUkFNRUJVRkZFUixcbiAgICAgICAgU19WRVJULFxuICAgICAgICBTX0ZSQUcsXG4gICAgICAgIFNfRUxFTUVOVFMsXG4gICAgICAgIFNfUFJJTUlUSVZFLFxuICAgICAgICBTX09GRlNFVCxcbiAgICAgICAgU19DT1VOVCxcbiAgICAgICAgU19JTlNUQU5DRVMsXG4gICAgICAgIFNfUFJPRklMRSxcbiAgICAgICAgU19WQU9cbiAgICAgIF0uY29uY2F0KEdMX1NUQVRFX05BTUVTKVxuXG4gICAgICBmdW5jdGlvbiBjaGVja0tleXMgKGRpY3QpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZGljdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgS0VZX05BTUVTLmluZGV4T2Yoa2V5KSA+PSAwLFxuICAgICAgICAgICAgJ3Vua25vd24gcGFyYW1ldGVyIFwiJyArIGtleSArICdcIicsXG4gICAgICAgICAgICBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2hlY2tLZXlzKHN0YXRpY09wdGlvbnMpXG4gICAgICBjaGVja0tleXMoZHluYW1pY09wdGlvbnMpXG4gICAgfSlcblxuICAgIHZhciBhdHRyaWJMb2NhdGlvbnMgPSBwYXJzZUF0dHJpYkxvY2F0aW9ucyhvcHRpb25zLCBhdHRyaWJ1dGVzKVxuXG4gICAgdmFyIGZyYW1lYnVmZmVyID0gcGFyc2VGcmFtZWJ1ZmZlcihvcHRpb25zLCBlbnYpXG4gICAgdmFyIHZpZXdwb3J0QW5kU2Npc3NvciA9IHBhcnNlVmlld3BvcnRTY2lzc29yKG9wdGlvbnMsIGZyYW1lYnVmZmVyLCBlbnYpXG4gICAgdmFyIGRyYXcgPSBwYXJzZURyYXcob3B0aW9ucywgZW52KVxuICAgIHZhciBzdGF0ZSA9IHBhcnNlR0xTdGF0ZShvcHRpb25zLCBlbnYpXG4gICAgdmFyIHNoYWRlciA9IHBhcnNlUHJvZ3JhbShvcHRpb25zLCBlbnYsIGF0dHJpYkxvY2F0aW9ucylcblxuICAgIGZ1bmN0aW9uIGNvcHlCb3ggKG5hbWUpIHtcbiAgICAgIHZhciBkZWZuID0gdmlld3BvcnRBbmRTY2lzc29yW25hbWVdXG4gICAgICBpZiAoZGVmbikge1xuICAgICAgICBzdGF0ZVtuYW1lXSA9IGRlZm5cbiAgICAgIH1cbiAgICB9XG4gICAgY29weUJveChTX1ZJRVdQT1JUKVxuICAgIGNvcHlCb3gocHJvcE5hbWUoU19TQ0lTU09SX0JPWCkpXG5cbiAgICB2YXIgZGlydHkgPSBPYmplY3Qua2V5cyhzdGF0ZSkubGVuZ3RoID4gMFxuXG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIGZyYW1lYnVmZmVyOiBmcmFtZWJ1ZmZlcixcbiAgICAgIGRyYXc6IGRyYXcsXG4gICAgICBzaGFkZXI6IHNoYWRlcixcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIGRpcnR5OiBkaXJ0eSxcbiAgICAgIHNjb3BlVkFPOiBudWxsLFxuICAgICAgZHJhd1ZBTzogbnVsbCxcbiAgICAgIHVzZVZBTzogZmFsc2UsXG4gICAgICBhdHRyaWJ1dGVzOiB7fVxuICAgIH1cblxuICAgIHJlc3VsdC5wcm9maWxlID0gcGFyc2VQcm9maWxlKG9wdGlvbnMsIGVudilcbiAgICByZXN1bHQudW5pZm9ybXMgPSBwYXJzZVVuaWZvcm1zKHVuaWZvcm1zLCBlbnYpXG4gICAgcmVzdWx0LmRyYXdWQU8gPSByZXN1bHQuc2NvcGVWQU8gPSBwYXJzZVZBTyhvcHRpb25zLCBlbnYpXG4gICAgLy8gc3BlY2lhbCBjYXNlOiBjaGVjayBpZiB3ZSBjYW4gc3RhdGljYWxseSBhbGxvY2F0ZSBhIHZlcnRleCBhcnJheSBvYmplY3QgZm9yIHRoaXMgcHJvZ3JhbVxuICAgIGlmICghcmVzdWx0LmRyYXdWQU8gJiYgc2hhZGVyLnByb2dyYW0gJiYgIWF0dHJpYkxvY2F0aW9ucyAmJiBleHRlbnNpb25zLmFuZ2xlX2luc3RhbmNlZF9hcnJheXMpIHtcbiAgICAgIHZhciB1c2VWQU8gPSB0cnVlXG4gICAgICB2YXIgc3RhdGljQmluZGluZ3MgPSBzaGFkZXIucHJvZ3JhbS5hdHRyaWJ1dGVzLm1hcChmdW5jdGlvbiAoYXR0cikge1xuICAgICAgICB2YXIgYmluZGluZyA9IGF0dHJpYnV0ZXMuc3RhdGljW2F0dHJdXG4gICAgICAgIHVzZVZBTyA9IHVzZVZBTyAmJiAhIWJpbmRpbmdcbiAgICAgICAgcmV0dXJuIGJpbmRpbmdcbiAgICAgIH0pXG4gICAgICBpZiAodXNlVkFPICYmIHN0YXRpY0JpbmRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHZhbyA9IGF0dHJpYnV0ZVN0YXRlLmdldFZBTyhhdHRyaWJ1dGVTdGF0ZS5jcmVhdGVWQU8oc3RhdGljQmluZGluZ3MpKVxuICAgICAgICByZXN1bHQuZHJhd1ZBTyA9IG5ldyBEZWNsYXJhdGlvbihudWxsLCBudWxsLCBudWxsLCBmdW5jdGlvbiAoZW52LCBzY29wZSkge1xuICAgICAgICAgIHJldHVybiBlbnYubGluayh2YW8pXG4gICAgICAgIH0pXG4gICAgICAgIHJlc3VsdC51c2VWQU8gPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhdHRyaWJMb2NhdGlvbnMpIHtcbiAgICAgIHJlc3VsdC51c2VWQU8gPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5hdHRyaWJ1dGVzID0gcGFyc2VBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGVudilcbiAgICB9XG4gICAgcmVzdWx0LmNvbnRleHQgPSBwYXJzZUNvbnRleHQoY29udGV4dCwgZW52KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ09NTU9OIFVQREFURSBGVU5DVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBmdW5jdGlvbiBlbWl0Q29udGV4dCAoZW52LCBzY29wZSwgY29udGV4dCkge1xuICAgIHZhciBzaGFyZWQgPSBlbnYuc2hhcmVkXG4gICAgdmFyIENPTlRFWFQgPSBzaGFyZWQuY29udGV4dFxuXG4gICAgdmFyIGNvbnRleHRFbnRlciA9IGVudi5zY29wZSgpXG5cbiAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICBzY29wZS5zYXZlKENPTlRFWFQsICcuJyArIG5hbWUpXG4gICAgICB2YXIgZGVmbiA9IGNvbnRleHRbbmFtZV1cbiAgICAgIHZhciB2YWx1ZSA9IGRlZm4uYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgY29udGV4dEVudGVyKENPTlRFWFQsICcuJywgbmFtZSwgJz1bJywgdmFsdWUuam9pbigpLCAnXTsnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dEVudGVyKENPTlRFWFQsICcuJywgbmFtZSwgJz0nLCB2YWx1ZSwgJzsnKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBzY29wZShjb250ZXh0RW50ZXIpXG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENPTU1PTiBEUkFXSU5HIEZVTkNUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGZ1bmN0aW9uIGVtaXRQb2xsRnJhbWVidWZmZXIgKGVudiwgc2NvcGUsIGZyYW1lYnVmZmVyLCBza2lwQ2hlY2spIHtcbiAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuXG4gICAgdmFyIEdMID0gc2hhcmVkLmdsXG4gICAgdmFyIEZSQU1FQlVGRkVSX1NUQVRFID0gc2hhcmVkLmZyYW1lYnVmZmVyXG4gICAgdmFyIEVYVF9EUkFXX0JVRkZFUlNcbiAgICBpZiAoZXh0RHJhd0J1ZmZlcnMpIHtcbiAgICAgIEVYVF9EUkFXX0JVRkZFUlMgPSBzY29wZS5kZWYoc2hhcmVkLmV4dGVuc2lvbnMsICcud2ViZ2xfZHJhd19idWZmZXJzJylcbiAgICB9XG5cbiAgICB2YXIgY29uc3RhbnRzID0gZW52LmNvbnN0YW50c1xuXG4gICAgdmFyIERSQVdfQlVGRkVSUyA9IGNvbnN0YW50cy5kcmF3QnVmZmVyXG4gICAgdmFyIEJBQ0tfQlVGRkVSID0gY29uc3RhbnRzLmJhY2tCdWZmZXJcblxuICAgIHZhciBORVhUXG4gICAgaWYgKGZyYW1lYnVmZmVyKSB7XG4gICAgICBORVhUID0gZnJhbWVidWZmZXIuYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIE5FWFQgPSBzY29wZS5kZWYoRlJBTUVCVUZGRVJfU1RBVEUsICcubmV4dCcpXG4gICAgfVxuXG4gICAgaWYgKCFza2lwQ2hlY2spIHtcbiAgICAgIHNjb3BlKCdpZignLCBORVhULCAnIT09JywgRlJBTUVCVUZGRVJfU1RBVEUsICcuY3VyKXsnKVxuICAgIH1cbiAgICBzY29wZShcbiAgICAgICdpZignLCBORVhULCAnKXsnLFxuICAgICAgR0wsICcuYmluZEZyYW1lYnVmZmVyKCcsIEdMX0ZSQU1FQlVGRkVSJDIsICcsJywgTkVYVCwgJy5mcmFtZWJ1ZmZlcik7JylcbiAgICBpZiAoZXh0RHJhd0J1ZmZlcnMpIHtcbiAgICAgIHNjb3BlKEVYVF9EUkFXX0JVRkZFUlMsICcuZHJhd0J1ZmZlcnNXRUJHTCgnLFxuICAgICAgICBEUkFXX0JVRkZFUlMsICdbJywgTkVYVCwgJy5jb2xvckF0dGFjaG1lbnRzLmxlbmd0aF0pOycpXG4gICAgfVxuICAgIHNjb3BlKCd9ZWxzZXsnLFxuICAgICAgR0wsICcuYmluZEZyYW1lYnVmZmVyKCcsIEdMX0ZSQU1FQlVGRkVSJDIsICcsbnVsbCk7JylcbiAgICBpZiAoZXh0RHJhd0J1ZmZlcnMpIHtcbiAgICAgIHNjb3BlKEVYVF9EUkFXX0JVRkZFUlMsICcuZHJhd0J1ZmZlcnNXRUJHTCgnLCBCQUNLX0JVRkZFUiwgJyk7JylcbiAgICB9XG4gICAgc2NvcGUoXG4gICAgICAnfScsXG4gICAgICBGUkFNRUJVRkZFUl9TVEFURSwgJy5jdXI9JywgTkVYVCwgJzsnKVxuICAgIGlmICghc2tpcENoZWNrKSB7XG4gICAgICBzY29wZSgnfScpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdFBvbGxTdGF0ZSAoZW52LCBzY29wZSwgYXJncykge1xuICAgIHZhciBzaGFyZWQgPSBlbnYuc2hhcmVkXG5cbiAgICB2YXIgR0wgPSBzaGFyZWQuZ2xcblxuICAgIHZhciBDVVJSRU5UX1ZBUlMgPSBlbnYuY3VycmVudFxuICAgIHZhciBORVhUX1ZBUlMgPSBlbnYubmV4dFxuICAgIHZhciBDVVJSRU5UX1NUQVRFID0gc2hhcmVkLmN1cnJlbnRcbiAgICB2YXIgTkVYVF9TVEFURSA9IHNoYXJlZC5uZXh0XG5cbiAgICB2YXIgYmxvY2sgPSBlbnYuY29uZChDVVJSRU5UX1NUQVRFLCAnLmRpcnR5JylcblxuICAgIEdMX1NUQVRFX05BTUVTLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgIHZhciBwYXJhbSA9IHByb3BOYW1lKHByb3ApXG4gICAgICBpZiAocGFyYW0gaW4gYXJncy5zdGF0ZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdmFyIE5FWFQsIENVUlJFTlRcbiAgICAgIGlmIChwYXJhbSBpbiBORVhUX1ZBUlMpIHtcbiAgICAgICAgTkVYVCA9IE5FWFRfVkFSU1twYXJhbV1cbiAgICAgICAgQ1VSUkVOVCA9IENVUlJFTlRfVkFSU1twYXJhbV1cbiAgICAgICAgdmFyIHBhcnRzID0gbG9vcChjdXJyZW50U3RhdGVbcGFyYW1dLmxlbmd0aCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gYmxvY2suZGVmKE5FWFQsICdbJywgaSwgJ10nKVxuICAgICAgICB9KVxuICAgICAgICBibG9jayhlbnYuY29uZChwYXJ0cy5tYXAoZnVuY3Rpb24gKHAsIGkpIHtcbiAgICAgICAgICByZXR1cm4gcCArICchPT0nICsgQ1VSUkVOVCArICdbJyArIGkgKyAnXSdcbiAgICAgICAgfSkuam9pbignfHwnKSlcbiAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgIEdMLCAnLicsIEdMX1ZBUklBQkxFU1twYXJhbV0sICcoJywgcGFydHMsICcpOycsXG4gICAgICAgICAgICBwYXJ0cy5tYXAoZnVuY3Rpb24gKHAsIGkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIENVUlJFTlQgKyAnWycgKyBpICsgJ109JyArIHBcbiAgICAgICAgICAgIH0pLmpvaW4oJzsnKSwgJzsnKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE5FWFQgPSBibG9jay5kZWYoTkVYVF9TVEFURSwgJy4nLCBwYXJhbSlcbiAgICAgICAgdmFyIGlmdGUgPSBlbnYuY29uZChORVhULCAnIT09JywgQ1VSUkVOVF9TVEFURSwgJy4nLCBwYXJhbSlcbiAgICAgICAgYmxvY2soaWZ0ZSlcbiAgICAgICAgaWYgKHBhcmFtIGluIEdMX0ZMQUdTKSB7XG4gICAgICAgICAgaWZ0ZShcbiAgICAgICAgICAgIGVudi5jb25kKE5FWFQpXG4gICAgICAgICAgICAgIC50aGVuKEdMLCAnLmVuYWJsZSgnLCBHTF9GTEFHU1twYXJhbV0sICcpOycpXG4gICAgICAgICAgICAgIC5lbHNlKEdMLCAnLmRpc2FibGUoJywgR0xfRkxBR1NbcGFyYW1dLCAnKTsnKSxcbiAgICAgICAgICAgIENVUlJFTlRfU1RBVEUsICcuJywgcGFyYW0sICc9JywgTkVYVCwgJzsnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmdGUoXG4gICAgICAgICAgICBHTCwgJy4nLCBHTF9WQVJJQUJMRVNbcGFyYW1dLCAnKCcsIE5FWFQsICcpOycsXG4gICAgICAgICAgICBDVVJSRU5UX1NUQVRFLCAnLicsIHBhcmFtLCAnPScsIE5FWFQsICc7JylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKE9iamVjdC5rZXlzKGFyZ3Muc3RhdGUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYmxvY2soQ1VSUkVOVF9TVEFURSwgJy5kaXJ0eT1mYWxzZTsnKVxuICAgIH1cbiAgICBzY29wZShibG9jaylcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXRTZXRPcHRpb25zIChlbnYsIHNjb3BlLCBvcHRpb25zLCBmaWx0ZXIpIHtcbiAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuICAgIHZhciBDVVJSRU5UX1ZBUlMgPSBlbnYuY3VycmVudFxuICAgIHZhciBDVVJSRU5UX1NUQVRFID0gc2hhcmVkLmN1cnJlbnRcbiAgICB2YXIgR0wgPSBzaGFyZWQuZ2xcbiAgICBzb3J0U3RhdGUoT2JqZWN0LmtleXMob3B0aW9ucykpLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICB2YXIgZGVmbiA9IG9wdGlvbnNbcGFyYW1dXG4gICAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIoZGVmbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB2YXIgdmFyaWFibGUgPSBkZWZuLmFwcGVuZChlbnYsIHNjb3BlKVxuICAgICAgaWYgKEdMX0ZMQUdTW3BhcmFtXSkge1xuICAgICAgICB2YXIgZmxhZyA9IEdMX0ZMQUdTW3BhcmFtXVxuICAgICAgICBpZiAoaXNTdGF0aWMoZGVmbikpIHtcbiAgICAgICAgICBpZiAodmFyaWFibGUpIHtcbiAgICAgICAgICAgIHNjb3BlKEdMLCAnLmVuYWJsZSgnLCBmbGFnLCAnKTsnKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY29wZShHTCwgJy5kaXNhYmxlKCcsIGZsYWcsICcpOycpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjb3BlKGVudi5jb25kKHZhcmlhYmxlKVxuICAgICAgICAgICAgLnRoZW4oR0wsICcuZW5hYmxlKCcsIGZsYWcsICcpOycpXG4gICAgICAgICAgICAuZWxzZShHTCwgJy5kaXNhYmxlKCcsIGZsYWcsICcpOycpKVxuICAgICAgICB9XG4gICAgICAgIHNjb3BlKENVUlJFTlRfU1RBVEUsICcuJywgcGFyYW0sICc9JywgdmFyaWFibGUsICc7JylcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheUxpa2UodmFyaWFibGUpKSB7XG4gICAgICAgIHZhciBDVVJSRU5UID0gQ1VSUkVOVF9WQVJTW3BhcmFtXVxuICAgICAgICBzY29wZShcbiAgICAgICAgICBHTCwgJy4nLCBHTF9WQVJJQUJMRVNbcGFyYW1dLCAnKCcsIHZhcmlhYmxlLCAnKTsnLFxuICAgICAgICAgIHZhcmlhYmxlLm1hcChmdW5jdGlvbiAodiwgaSkge1xuICAgICAgICAgICAgcmV0dXJuIENVUlJFTlQgKyAnWycgKyBpICsgJ109JyArIHZcbiAgICAgICAgICB9KS5qb2luKCc7JyksICc7JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjb3BlKFxuICAgICAgICAgIEdMLCAnLicsIEdMX1ZBUklBQkxFU1twYXJhbV0sICcoJywgdmFyaWFibGUsICcpOycsXG4gICAgICAgICAgQ1VSUkVOVF9TVEFURSwgJy4nLCBwYXJhbSwgJz0nLCB2YXJpYWJsZSwgJzsnKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBpbmplY3RFeHRlbnNpb25zIChlbnYsIHNjb3BlKSB7XG4gICAgaWYgKGV4dEluc3RhbmNpbmcpIHtcbiAgICAgIGVudi5pbnN0YW5jaW5nID0gc2NvcGUuZGVmKFxuICAgICAgICBlbnYuc2hhcmVkLmV4dGVuc2lvbnMsICcuYW5nbGVfaW5zdGFuY2VkX2FycmF5cycpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdFByb2ZpbGUgKGVudiwgc2NvcGUsIGFyZ3MsIHVzZVNjb3BlLCBpbmNyZW1lbnRDb3VudGVyKSB7XG4gICAgdmFyIHNoYXJlZCA9IGVudi5zaGFyZWRcbiAgICB2YXIgU1RBVFMgPSBlbnYuc3RhdHNcbiAgICB2YXIgQ1VSUkVOVF9TVEFURSA9IHNoYXJlZC5jdXJyZW50XG4gICAgdmFyIFRJTUVSID0gc2hhcmVkLnRpbWVyXG4gICAgdmFyIHByb2ZpbGVBcmcgPSBhcmdzLnByb2ZpbGVcblxuICAgIGZ1bmN0aW9uIHBlcmZDb3VudGVyICgpIHtcbiAgICAgIGlmICh0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiAnRGF0ZS5ub3coKSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAncGVyZm9ybWFuY2Uubm93KCknXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIENQVV9TVEFSVCwgUVVFUllfQ09VTlRFUlxuICAgIGZ1bmN0aW9uIGVtaXRQcm9maWxlU3RhcnQgKGJsb2NrKSB7XG4gICAgICBDUFVfU1RBUlQgPSBzY29wZS5kZWYoKVxuICAgICAgYmxvY2soQ1BVX1NUQVJULCAnPScsIHBlcmZDb3VudGVyKCksICc7JylcbiAgICAgIGlmICh0eXBlb2YgaW5jcmVtZW50Q291bnRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgYmxvY2soU1RBVFMsICcuY291bnQrPScsIGluY3JlbWVudENvdW50ZXIsICc7JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJsb2NrKFNUQVRTLCAnLmNvdW50Kys7JylcbiAgICAgIH1cbiAgICAgIGlmICh0aW1lcikge1xuICAgICAgICBpZiAodXNlU2NvcGUpIHtcbiAgICAgICAgICBRVUVSWV9DT1VOVEVSID0gc2NvcGUuZGVmKClcbiAgICAgICAgICBibG9jayhRVUVSWV9DT1VOVEVSLCAnPScsIFRJTUVSLCAnLmdldE51bVBlbmRpbmdRdWVyaWVzKCk7JylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBibG9jayhUSU1FUiwgJy5iZWdpblF1ZXJ5KCcsIFNUQVRTLCAnKTsnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdFByb2ZpbGVFbmQgKGJsb2NrKSB7XG4gICAgICBibG9jayhTVEFUUywgJy5jcHVUaW1lKz0nLCBwZXJmQ291bnRlcigpLCAnLScsIENQVV9TVEFSVCwgJzsnKVxuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIGlmICh1c2VTY29wZSkge1xuICAgICAgICAgIGJsb2NrKFRJTUVSLCAnLnB1c2hTY29wZVN0YXRzKCcsXG4gICAgICAgICAgICBRVUVSWV9DT1VOVEVSLCAnLCcsXG4gICAgICAgICAgICBUSU1FUiwgJy5nZXROdW1QZW5kaW5nUXVlcmllcygpLCcsXG4gICAgICAgICAgICBTVEFUUywgJyk7JylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBibG9jayhUSU1FUiwgJy5lbmRRdWVyeSgpOycpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY29wZVByb2ZpbGUgKHZhbHVlKSB7XG4gICAgICB2YXIgcHJldiA9IHNjb3BlLmRlZihDVVJSRU5UX1NUQVRFLCAnLnByb2ZpbGUnKVxuICAgICAgc2NvcGUoQ1VSUkVOVF9TVEFURSwgJy5wcm9maWxlPScsIHZhbHVlLCAnOycpXG4gICAgICBzY29wZS5leGl0KENVUlJFTlRfU1RBVEUsICcucHJvZmlsZT0nLCBwcmV2LCAnOycpXG4gICAgfVxuXG4gICAgdmFyIFVTRV9QUk9GSUxFXG4gICAgaWYgKHByb2ZpbGVBcmcpIHtcbiAgICAgIGlmIChpc1N0YXRpYyhwcm9maWxlQXJnKSkge1xuICAgICAgICBpZiAocHJvZmlsZUFyZy5lbmFibGUpIHtcbiAgICAgICAgICBlbWl0UHJvZmlsZVN0YXJ0KHNjb3BlKVxuICAgICAgICAgIGVtaXRQcm9maWxlRW5kKHNjb3BlLmV4aXQpXG4gICAgICAgICAgc2NvcGVQcm9maWxlKCd0cnVlJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY29wZVByb2ZpbGUoJ2ZhbHNlJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIFVTRV9QUk9GSUxFID0gcHJvZmlsZUFyZy5hcHBlbmQoZW52LCBzY29wZSlcbiAgICAgIHNjb3BlUHJvZmlsZShVU0VfUFJPRklMRSlcbiAgICB9IGVsc2Uge1xuICAgICAgVVNFX1BST0ZJTEUgPSBzY29wZS5kZWYoQ1VSUkVOVF9TVEFURSwgJy5wcm9maWxlJylcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQgPSBlbnYuYmxvY2soKVxuICAgIGVtaXRQcm9maWxlU3RhcnQoc3RhcnQpXG4gICAgc2NvcGUoJ2lmKCcsIFVTRV9QUk9GSUxFLCAnKXsnLCBzdGFydCwgJ30nKVxuICAgIHZhciBlbmQgPSBlbnYuYmxvY2soKVxuICAgIGVtaXRQcm9maWxlRW5kKGVuZClcbiAgICBzY29wZS5leGl0KCdpZignLCBVU0VfUFJPRklMRSwgJyl7JywgZW5kLCAnfScpXG4gIH1cblxuICBmdW5jdGlvbiBlbWl0QXR0cmlidXRlcyAoZW52LCBzY29wZSwgYXJncywgYXR0cmlidXRlcywgZmlsdGVyKSB7XG4gICAgdmFyIHNoYXJlZCA9IGVudi5zaGFyZWRcblxuICAgIGZ1bmN0aW9uIHR5cGVMZW5ndGggKHgpIHtcbiAgICAgIHN3aXRjaCAoeCkge1xuICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6XG4gICAgICAgIGNhc2UgR0xfSU5UX1ZFQzI6XG4gICAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOlxuICAgICAgICAgIHJldHVybiAyXG4gICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzpcbiAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzpcbiAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6XG4gICAgICAgICAgcmV0dXJuIDNcbiAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OlxuICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OlxuICAgICAgICBjYXNlIEdMX0JPT0xfVkVDNDpcbiAgICAgICAgICByZXR1cm4gNFxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdEJpbmRBdHRyaWJ1dGUgKEFUVFJJQlVURSwgc2l6ZSwgcmVjb3JkKSB7XG4gICAgICB2YXIgR0wgPSBzaGFyZWQuZ2xcblxuICAgICAgdmFyIExPQ0FUSU9OID0gc2NvcGUuZGVmKEFUVFJJQlVURSwgJy5sb2NhdGlvbicpXG4gICAgICB2YXIgQklORElORyA9IHNjb3BlLmRlZihzaGFyZWQuYXR0cmlidXRlcywgJ1snLCBMT0NBVElPTiwgJ10nKVxuXG4gICAgICB2YXIgU1RBVEUgPSByZWNvcmQuc3RhdGVcbiAgICAgIHZhciBCVUZGRVIgPSByZWNvcmQuYnVmZmVyXG4gICAgICB2YXIgQ09OU1RfQ09NUE9ORU5UUyA9IFtcbiAgICAgICAgcmVjb3JkLngsXG4gICAgICAgIHJlY29yZC55LFxuICAgICAgICByZWNvcmQueixcbiAgICAgICAgcmVjb3JkLndcbiAgICAgIF1cblxuICAgICAgdmFyIENPTU1PTl9LRVlTID0gW1xuICAgICAgICAnYnVmZmVyJyxcbiAgICAgICAgJ25vcm1hbGl6ZWQnLFxuICAgICAgICAnb2Zmc2V0JyxcbiAgICAgICAgJ3N0cmlkZSdcbiAgICAgIF1cblxuICAgICAgZnVuY3Rpb24gZW1pdEJ1ZmZlciAoKSB7XG4gICAgICAgIHNjb3BlKFxuICAgICAgICAgICdpZighJywgQklORElORywgJy5idWZmZXIpeycsXG4gICAgICAgICAgR0wsICcuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoJywgTE9DQVRJT04sICcpO30nKVxuXG4gICAgICAgIHZhciBUWVBFID0gcmVjb3JkLnR5cGVcbiAgICAgICAgdmFyIFNJWkVcbiAgICAgICAgaWYgKCFyZWNvcmQuc2l6ZSkge1xuICAgICAgICAgIFNJWkUgPSBzaXplXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgU0laRSA9IHNjb3BlLmRlZihyZWNvcmQuc2l6ZSwgJ3x8Jywgc2l6ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHNjb3BlKCdpZignLFxuICAgICAgICAgIEJJTkRJTkcsICcudHlwZSE9PScsIFRZUEUsICd8fCcsXG4gICAgICAgICAgQklORElORywgJy5zaXplIT09JywgU0laRSwgJ3x8JyxcbiAgICAgICAgICBDT01NT05fS0VZUy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIEJJTkRJTkcgKyAnLicgKyBrZXkgKyAnIT09JyArIHJlY29yZFtrZXldXG4gICAgICAgICAgfSkuam9pbignfHwnKSxcbiAgICAgICAgICAnKXsnLFxuICAgICAgICAgIEdMLCAnLmJpbmRCdWZmZXIoJywgR0xfQVJSQVlfQlVGRkVSJDIsICcsJywgQlVGRkVSLCAnLmJ1ZmZlcik7JyxcbiAgICAgICAgICBHTCwgJy52ZXJ0ZXhBdHRyaWJQb2ludGVyKCcsIFtcbiAgICAgICAgICAgIExPQ0FUSU9OLFxuICAgICAgICAgICAgU0laRSxcbiAgICAgICAgICAgIFRZUEUsXG4gICAgICAgICAgICByZWNvcmQubm9ybWFsaXplZCxcbiAgICAgICAgICAgIHJlY29yZC5zdHJpZGUsXG4gICAgICAgICAgICByZWNvcmQub2Zmc2V0XG4gICAgICAgICAgXSwgJyk7JyxcbiAgICAgICAgICBCSU5ESU5HLCAnLnR5cGU9JywgVFlQRSwgJzsnLFxuICAgICAgICAgIEJJTkRJTkcsICcuc2l6ZT0nLCBTSVpFLCAnOycsXG4gICAgICAgICAgQ09NTU9OX0tFWVMubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBCSU5ESU5HICsgJy4nICsga2V5ICsgJz0nICsgcmVjb3JkW2tleV0gKyAnOydcbiAgICAgICAgICB9KS5qb2luKCcnKSxcbiAgICAgICAgICAnfScpXG5cbiAgICAgICAgaWYgKGV4dEluc3RhbmNpbmcpIHtcbiAgICAgICAgICB2YXIgRElWSVNPUiA9IHJlY29yZC5kaXZpc29yXG4gICAgICAgICAgc2NvcGUoXG4gICAgICAgICAgICAnaWYoJywgQklORElORywgJy5kaXZpc29yIT09JywgRElWSVNPUiwgJyl7JyxcbiAgICAgICAgICAgIGVudi5pbnN0YW5jaW5nLCAnLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSgnLCBbTE9DQVRJT04sIERJVklTT1JdLCAnKTsnLFxuICAgICAgICAgICAgQklORElORywgJy5kaXZpc29yPScsIERJVklTT1IsICc7fScpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZW1pdENvbnN0YW50ICgpIHtcbiAgICAgICAgc2NvcGUoXG4gICAgICAgICAgJ2lmKCcsIEJJTkRJTkcsICcuYnVmZmVyKXsnLFxuICAgICAgICAgIEdMLCAnLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgnLCBMT0NBVElPTiwgJyk7JyxcbiAgICAgICAgICBCSU5ESU5HLCAnLmJ1ZmZlcj1udWxsOycsXG4gICAgICAgICAgJ31pZignLCBDVVRFX0NPTVBPTkVOVFMubWFwKGZ1bmN0aW9uIChjLCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gQklORElORyArICcuJyArIGMgKyAnIT09JyArIENPTlNUX0NPTVBPTkVOVFNbaV1cbiAgICAgICAgICB9KS5qb2luKCd8fCcpLCAnKXsnLFxuICAgICAgICAgIEdMLCAnLnZlcnRleEF0dHJpYjRmKCcsIExPQ0FUSU9OLCAnLCcsIENPTlNUX0NPTVBPTkVOVFMsICcpOycsXG4gICAgICAgICAgQ1VURV9DT01QT05FTlRTLm1hcChmdW5jdGlvbiAoYywgaSkge1xuICAgICAgICAgICAgcmV0dXJuIEJJTkRJTkcgKyAnLicgKyBjICsgJz0nICsgQ09OU1RfQ09NUE9ORU5UU1tpXSArICc7J1xuICAgICAgICAgIH0pLmpvaW4oJycpLFxuICAgICAgICAgICd9JylcbiAgICAgIH1cblxuICAgICAgaWYgKFNUQVRFID09PSBBVFRSSUJfU1RBVEVfUE9JTlRFUikge1xuICAgICAgICBlbWl0QnVmZmVyKClcbiAgICAgIH0gZWxzZSBpZiAoU1RBVEUgPT09IEFUVFJJQl9TVEFURV9DT05TVEFOVCkge1xuICAgICAgICBlbWl0Q29uc3RhbnQoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NvcGUoJ2lmKCcsIFNUQVRFLCAnPT09JywgQVRUUklCX1NUQVRFX1BPSU5URVIsICcpeycpXG4gICAgICAgIGVtaXRCdWZmZXIoKVxuICAgICAgICBzY29wZSgnfWVsc2V7JylcbiAgICAgICAgZW1pdENvbnN0YW50KClcbiAgICAgICAgc2NvcGUoJ30nKVxuICAgICAgfVxuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICB2YXIgbmFtZSA9IGF0dHJpYnV0ZS5uYW1lXG4gICAgICB2YXIgYXJnID0gYXJncy5hdHRyaWJ1dGVzW25hbWVdXG4gICAgICB2YXIgcmVjb3JkXG4gICAgICBpZiAoYXJnKSB7XG4gICAgICAgIGlmICghZmlsdGVyKGFyZykpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICByZWNvcmQgPSBhcmcuYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIWZpbHRlcihTQ09QRV9ERUNMKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHZhciBzY29wZUF0dHJpYiA9IGVudi5zY29wZUF0dHJpYihuYW1lKVxuICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLFxuICAgICAgICAgICAgc2NvcGVBdHRyaWIgKyAnLnN0YXRlJyxcbiAgICAgICAgICAgICdtaXNzaW5nIGF0dHJpYnV0ZSAnICsgbmFtZSlcbiAgICAgICAgfSlcbiAgICAgICAgcmVjb3JkID0ge31cbiAgICAgICAgT2JqZWN0LmtleXMobmV3IEF0dHJpYnV0ZVJlY29yZCgpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZWNvcmRba2V5XSA9IHNjb3BlLmRlZihzY29wZUF0dHJpYiwgJy4nLCBrZXkpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBlbWl0QmluZEF0dHJpYnV0ZShcbiAgICAgICAgZW52LmxpbmsoYXR0cmlidXRlKSwgdHlwZUxlbmd0aChhdHRyaWJ1dGUuaW5mby50eXBlKSwgcmVjb3JkKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBlbWl0VW5pZm9ybXMgKGVudiwgc2NvcGUsIGFyZ3MsIHVuaWZvcm1zLCBmaWx0ZXIpIHtcbiAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuICAgIHZhciBHTCA9IHNoYXJlZC5nbFxuXG4gICAgdmFyIGluZml4XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bmlmb3Jtcy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHVuaWZvcm0gPSB1bmlmb3Jtc1tpXVxuICAgICAgdmFyIG5hbWUgPSB1bmlmb3JtLm5hbWVcbiAgICAgIHZhciB0eXBlID0gdW5pZm9ybS5pbmZvLnR5cGVcbiAgICAgIHZhciBhcmcgPSBhcmdzLnVuaWZvcm1zW25hbWVdXG4gICAgICB2YXIgVU5JRk9STSA9IGVudi5saW5rKHVuaWZvcm0pXG4gICAgICB2YXIgTE9DQVRJT04gPSBVTklGT1JNICsgJy5sb2NhdGlvbidcblxuICAgICAgdmFyIFZBTFVFXG4gICAgICBpZiAoYXJnKSB7XG4gICAgICAgIGlmICghZmlsdGVyKGFyZykpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0YXRpYyhhcmcpKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gYXJnLnZhbHVlXG4gICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgICAgICdtaXNzaW5nIHVuaWZvcm0gXCInICsgbmFtZSArICdcIicsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgIGlmICh0eXBlID09PSBHTF9TQU1QTEVSXzJEIHx8IHR5cGUgPT09IEdMX1NBTVBMRVJfQ1VCRSkge1xuICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICAgKCh0eXBlID09PSBHTF9TQU1QTEVSXzJEICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlLl9yZWdsVHlwZSA9PT0gJ3RleHR1cmUyZCcgfHxcbiAgICAgICAgICAgICAgICB2YWx1ZS5fcmVnbFR5cGUgPT09ICdmcmFtZWJ1ZmZlcicpKSB8fFxuICAgICAgICAgICAgICAodHlwZSA9PT0gR0xfU0FNUExFUl9DVUJFICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlLl9yZWdsVHlwZSA9PT0gJ3RleHR1cmVDdWJlJyB8fFxuICAgICAgICAgICAgICAgIHZhbHVlLl9yZWdsVHlwZSA9PT0gJ2ZyYW1lYnVmZmVyQ3ViZScpKSksXG4gICAgICAgICAgICAgICdpbnZhbGlkIHRleHR1cmUgZm9yIHVuaWZvcm0gJyArIG5hbWUsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgdmFyIFRFWF9WQUxVRSA9IGVudi5saW5rKHZhbHVlLl90ZXh0dXJlIHx8IHZhbHVlLmNvbG9yWzBdLl90ZXh0dXJlKVxuICAgICAgICAgICAgc2NvcGUoR0wsICcudW5pZm9ybTFpKCcsIExPQ0FUSU9OLCAnLCcsIFRFWF9WQUxVRSArICcuYmluZCgpKTsnKVxuICAgICAgICAgICAgc2NvcGUuZXhpdChURVhfVkFMVUUsICcudW5iaW5kKCk7JylcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdHlwZSA9PT0gR0xfRkxPQVRfTUFUMiB8fFxuICAgICAgICAgICAgdHlwZSA9PT0gR0xfRkxPQVRfTUFUMyB8fFxuICAgICAgICAgICAgdHlwZSA9PT0gR0xfRkxPQVRfTUFUNCkge1xuICAgICAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChpc0FycmF5TGlrZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgJ2ludmFsaWQgbWF0cml4IGZvciB1bmlmb3JtICcgKyBuYW1lLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgICh0eXBlID09PSBHTF9GTE9BVF9NQVQyICYmIHZhbHVlLmxlbmd0aCA9PT0gNCkgfHxcbiAgICAgICAgICAgICAgICAodHlwZSA9PT0gR0xfRkxPQVRfTUFUMyAmJiB2YWx1ZS5sZW5ndGggPT09IDkpIHx8XG4gICAgICAgICAgICAgICAgKHR5cGUgPT09IEdMX0ZMT0FUX01BVDQgJiYgdmFsdWUubGVuZ3RoID09PSAxNiksXG4gICAgICAgICAgICAgICAgJ2ludmFsaWQgbGVuZ3RoIGZvciBtYXRyaXggdW5pZm9ybSAnICsgbmFtZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdmFyIE1BVF9WQUxVRSA9IGVudi5nbG9iYWwuZGVmKCduZXcgRmxvYXQzMkFycmF5KFsnICtcbiAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodmFsdWUpICsgJ10pJylcbiAgICAgICAgICAgIHZhciBkaW0gPSAyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gR0xfRkxPQVRfTUFUMykge1xuICAgICAgICAgICAgICBkaW0gPSAzXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEdMX0ZMT0FUX01BVDQpIHtcbiAgICAgICAgICAgICAgZGltID0gNFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NvcGUoXG4gICAgICAgICAgICAgIEdMLCAnLnVuaWZvcm1NYXRyaXgnLCBkaW0sICdmdignLFxuICAgICAgICAgICAgICBMT0NBVElPTiwgJyxmYWxzZSwnLCBNQVRfVkFMVUUsICcpOycpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUJDg6XG4gICAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kVHlwZSh2YWx1ZSwgJ251bWJlcicsICd1bmlmb3JtICcgKyBuYW1lLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgICBpbmZpeCA9ICcxZidcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6XG4gICAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgICAgaXNBcnJheUxpa2UodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMixcbiAgICAgICAgICAgICAgICAgICd1bmlmb3JtICcgKyBuYW1lLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgICBpbmZpeCA9ICcyZidcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6XG4gICAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgICAgaXNBcnJheUxpa2UodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMyxcbiAgICAgICAgICAgICAgICAgICd1bmlmb3JtICcgKyBuYW1lLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgICBpbmZpeCA9ICczZidcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6XG4gICAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kKFxuICAgICAgICAgICAgICAgICAgaXNBcnJheUxpa2UodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gNCxcbiAgICAgICAgICAgICAgICAgICd1bmlmb3JtICcgKyBuYW1lLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICAgICAgICBpbmZpeCA9ICc0ZidcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlIEdMX0JPT0w6XG4gICAgICAgICAgICAgICAgY2hlY2skMS5jb21tYW5kVHlwZSh2YWx1ZSwgJ2Jvb2xlYW4nLCAndW5pZm9ybSAnICsgbmFtZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgICAgaW5maXggPSAnMWknXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSBHTF9JTlQkMzpcbiAgICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmRUeXBlKHZhbHVlLCAnbnVtYmVyJywgJ3VuaWZvcm0gJyArIG5hbWUsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICAgIGluZml4ID0gJzFpJ1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOlxuICAgICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChcbiAgICAgICAgICAgICAgICAgIGlzQXJyYXlMaWtlKHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDIsXG4gICAgICAgICAgICAgICAgICAndW5pZm9ybSAnICsgbmFtZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgICAgaW5maXggPSAnMmknXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSBHTF9JTlRfVkVDMjpcbiAgICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgICBpc0FycmF5TGlrZSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAyLFxuICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJyArIG5hbWUsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICAgIGluZml4ID0gJzJpJ1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOlxuICAgICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChcbiAgICAgICAgICAgICAgICAgIGlzQXJyYXlMaWtlKHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDMsXG4gICAgICAgICAgICAgICAgICAndW5pZm9ybSAnICsgbmFtZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgICAgaW5maXggPSAnM2knXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzpcbiAgICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgICBpc0FycmF5TGlrZSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAzLFxuICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJyArIG5hbWUsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICAgIGluZml4ID0gJzNpJ1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUM0OlxuICAgICAgICAgICAgICAgIGNoZWNrJDEuY29tbWFuZChcbiAgICAgICAgICAgICAgICAgIGlzQXJyYXlMaWtlKHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDQsXG4gICAgICAgICAgICAgICAgICAndW5pZm9ybSAnICsgbmFtZSwgZW52LmNvbW1hbmRTdHIpXG4gICAgICAgICAgICAgICAgaW5maXggPSAnNGknXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSBHTF9JTlRfVkVDNDpcbiAgICAgICAgICAgICAgICBjaGVjayQxLmNvbW1hbmQoXG4gICAgICAgICAgICAgICAgICBpc0FycmF5TGlrZSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSA0LFxuICAgICAgICAgICAgICAgICAgJ3VuaWZvcm0gJyArIG5hbWUsIGVudi5jb21tYW5kU3RyKVxuICAgICAgICAgICAgICAgIGluZml4ID0gJzRpJ1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY29wZShHTCwgJy51bmlmb3JtJywgaW5maXgsICcoJywgTE9DQVRJT04sICcsJyxcbiAgICAgICAgICAgICAgaXNBcnJheUxpa2UodmFsdWUpID8gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodmFsdWUpIDogdmFsdWUsXG4gICAgICAgICAgICAgICcpOycpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgVkFMVUUgPSBhcmcuYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghZmlsdGVyKFNDT1BFX0RFQ0wpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBWQUxVRSA9IHNjb3BlLmRlZihzaGFyZWQudW5pZm9ybXMsICdbJywgc3RyaW5nU3RvcmUuaWQobmFtZSksICddJylcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09IEdMX1NBTVBMRVJfMkQpIHtcbiAgICAgICAgY2hlY2skMSghQXJyYXkuaXNBcnJheShWQUxVRSksICdtdXN0IHNwZWNpZnkgYSBzY2FsYXIgcHJvcCBmb3IgdGV4dHVyZXMnKVxuICAgICAgICBzY29wZShcbiAgICAgICAgICAnaWYoJywgVkFMVUUsICcmJicsIFZBTFVFLCAnLl9yZWdsVHlwZT09PVwiZnJhbWVidWZmZXJcIil7JyxcbiAgICAgICAgICBWQUxVRSwgJz0nLCBWQUxVRSwgJy5jb2xvclswXTsnLFxuICAgICAgICAgICd9JylcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gR0xfU0FNUExFUl9DVUJFKSB7XG4gICAgICAgIGNoZWNrJDEoIUFycmF5LmlzQXJyYXkoVkFMVUUpLCAnbXVzdCBzcGVjaWZ5IGEgc2NhbGFyIHByb3AgZm9yIGN1YmUgbWFwcycpXG4gICAgICAgIHNjb3BlKFxuICAgICAgICAgICdpZignLCBWQUxVRSwgJyYmJywgVkFMVUUsICcuX3JlZ2xUeXBlPT09XCJmcmFtZWJ1ZmZlckN1YmVcIil7JyxcbiAgICAgICAgICBWQUxVRSwgJz0nLCBWQUxVRSwgJy5jb2xvclswXTsnLFxuICAgICAgICAgICd9JylcbiAgICAgIH1cblxuICAgICAgLy8gcGVyZm9ybSB0eXBlIHZhbGlkYXRpb25cbiAgICAgIGNoZWNrJDEub3B0aW9uYWwoZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiBlbWl0Q2hlY2sgKHByZWQsIG1lc3NhZ2UpIHtcbiAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLCBwcmVkLFxuICAgICAgICAgICAgJ2JhZCBkYXRhIG9yIG1pc3NpbmcgZm9yIHVuaWZvcm0gXCInICsgbmFtZSArICdcIi4gICcgKyBtZXNzYWdlKVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY2hlY2tUeXBlICh0eXBlKSB7XG4gICAgICAgICAgY2hlY2skMSghQXJyYXkuaXNBcnJheShWQUxVRSksICdtdXN0IG5vdCBzcGVjaWZ5IGFuIGFycmF5IHR5cGUgZm9yIHVuaWZvcm0nKVxuICAgICAgICAgIGVtaXRDaGVjayhcbiAgICAgICAgICAgICd0eXBlb2YgJyArIFZBTFVFICsgJz09PVwiJyArIHR5cGUgKyAnXCInLFxuICAgICAgICAgICAgJ2ludmFsaWQgdHlwZSwgZXhwZWN0ZWQgJyArIHR5cGUpXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjaGVja1ZlY3RvciAobiwgdHlwZSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KFZBTFVFKSkge1xuICAgICAgICAgICAgY2hlY2skMShWQUxVRS5sZW5ndGggPT09IG4sICdtdXN0IGhhdmUgbGVuZ3RoICcgKyBuKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbWl0Q2hlY2soXG4gICAgICAgICAgICAgIHNoYXJlZC5pc0FycmF5TGlrZSArICcoJyArIFZBTFVFICsgJykmJicgKyBWQUxVRSArICcubGVuZ3RoPT09JyArIG4sXG4gICAgICAgICAgICAgICdpbnZhbGlkIHZlY3Rvciwgc2hvdWxkIGhhdmUgbGVuZ3RoICcgKyBuLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjaGVja1RleHR1cmUgKHRhcmdldCkge1xuICAgICAgICAgIGNoZWNrJDEoIUFycmF5LmlzQXJyYXkoVkFMVUUpLCAnbXVzdCBub3Qgc3BlY2lmeSBhIHZhbHVlIHR5cGUnKVxuICAgICAgICAgIGVtaXRDaGVjayhcbiAgICAgICAgICAgICd0eXBlb2YgJyArIFZBTFVFICsgJz09PVwiZnVuY3Rpb25cIiYmJyArXG4gICAgICAgICAgICBWQUxVRSArICcuX3JlZ2xUeXBlPT09XCJ0ZXh0dXJlJyArXG4gICAgICAgICAgICAodGFyZ2V0ID09PSBHTF9URVhUVVJFXzJEJDMgPyAnMmQnIDogJ0N1YmUnKSArICdcIicsXG4gICAgICAgICAgICAnaW52YWxpZCB0ZXh0dXJlIHR5cGUnLCBlbnYuY29tbWFuZFN0cilcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgR0xfSU5UJDM6XG4gICAgICAgICAgICBjaGVja1R5cGUoJ251bWJlcicpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzI6XG4gICAgICAgICAgICBjaGVja1ZlY3RvcigyLCAnbnVtYmVyJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzpcbiAgICAgICAgICAgIGNoZWNrVmVjdG9yKDMsICdudW1iZXInKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIEdMX0lOVF9WRUM0OlxuICAgICAgICAgICAgY2hlY2tWZWN0b3IoNCwgJ251bWJlcicpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfRkxPQVQkODpcbiAgICAgICAgICAgIGNoZWNrVHlwZSgnbnVtYmVyJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOlxuICAgICAgICAgICAgY2hlY2tWZWN0b3IoMiwgJ251bWJlcicpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzpcbiAgICAgICAgICAgIGNoZWNrVmVjdG9yKDMsICdudW1iZXInKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6XG4gICAgICAgICAgICBjaGVja1ZlY3Rvcig0LCAnbnVtYmVyJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBHTF9CT09MOlxuICAgICAgICAgICAgY2hlY2tUeXBlKCdib29sZWFuJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6XG4gICAgICAgICAgICBjaGVja1ZlY3RvcigyLCAnYm9vbGVhbicpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOlxuICAgICAgICAgICAgY2hlY2tWZWN0b3IoMywgJ2Jvb2xlYW4nKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIEdMX0JPT0xfVkVDNDpcbiAgICAgICAgICAgIGNoZWNrVmVjdG9yKDQsICdib29sZWFuJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOlxuICAgICAgICAgICAgY2hlY2tWZWN0b3IoNCwgJ251bWJlcicpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzpcbiAgICAgICAgICAgIGNoZWNrVmVjdG9yKDksICdudW1iZXInKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6XG4gICAgICAgICAgICBjaGVja1ZlY3RvcigxNiwgJ251bWJlcicpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRDpcbiAgICAgICAgICAgIGNoZWNrVGV4dHVyZShHTF9URVhUVVJFXzJEJDMpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOlxuICAgICAgICAgICAgY2hlY2tUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAkMilcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHZhciB1bnJvbGwgPSAxXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOlxuICAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRTpcbiAgICAgICAgICB2YXIgVEVYID0gc2NvcGUuZGVmKFZBTFVFLCAnLl90ZXh0dXJlJylcbiAgICAgICAgICBzY29wZShHTCwgJy51bmlmb3JtMWkoJywgTE9DQVRJT04sICcsJywgVEVYLCAnLmJpbmQoKSk7JylcbiAgICAgICAgICBzY29wZS5leGl0KFRFWCwgJy51bmJpbmQoKTsnKVxuICAgICAgICAgIGNvbnRpbnVlXG5cbiAgICAgICAgY2FzZSBHTF9JTlQkMzpcbiAgICAgICAgY2FzZSBHTF9CT09MOlxuICAgICAgICAgIGluZml4ID0gJzFpJ1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9JTlRfVkVDMjpcbiAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6XG4gICAgICAgICAgaW5maXggPSAnMmknXG4gICAgICAgICAgdW5yb2xsID0gMlxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzpcbiAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6XG4gICAgICAgICAgaW5maXggPSAnM2knXG4gICAgICAgICAgdW5yb2xsID0gM1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9JTlRfVkVDNDpcbiAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzQ6XG4gICAgICAgICAgaW5maXggPSAnNGknXG4gICAgICAgICAgdW5yb2xsID0gNFxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9GTE9BVCQ4OlxuICAgICAgICAgIGluZml4ID0gJzFmJ1xuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOlxuICAgICAgICAgIGluZml4ID0gJzJmJ1xuICAgICAgICAgIHVucm9sbCA9IDJcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzpcbiAgICAgICAgICBpbmZpeCA9ICczZidcbiAgICAgICAgICB1bnJvbGwgPSAzXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6XG4gICAgICAgICAgaW5maXggPSAnNGYnXG4gICAgICAgICAgdW5yb2xsID0gNFxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOlxuICAgICAgICAgIGluZml4ID0gJ01hdHJpeDJmdidcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzpcbiAgICAgICAgICBpbmZpeCA9ICdNYXRyaXgzZnYnXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6XG4gICAgICAgICAgaW5maXggPSAnTWF0cml4NGZ2J1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHNjb3BlKEdMLCAnLnVuaWZvcm0nLCBpbmZpeCwgJygnLCBMT0NBVElPTiwgJywnKVxuICAgICAgaWYgKGluZml4LmNoYXJBdCgwKSA9PT0gJ00nKSB7XG4gICAgICAgIHZhciBtYXRTaXplID0gTWF0aC5wb3codHlwZSAtIEdMX0ZMT0FUX01BVDIgKyAyLCAyKVxuICAgICAgICB2YXIgU1RPUkFHRSA9IGVudi5nbG9iYWwuZGVmKCduZXcgRmxvYXQzMkFycmF5KCcsIG1hdFNpemUsICcpJylcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoVkFMVUUpKSB7XG4gICAgICAgICAgc2NvcGUoXG4gICAgICAgICAgICAnZmFsc2UsKCcsXG4gICAgICAgICAgICBsb29wKG1hdFNpemUsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBTVE9SQUdFICsgJ1snICsgaSArICddPScgKyBWQUxVRVtpXVxuICAgICAgICAgICAgfSksICcsJywgU1RPUkFHRSwgJyknKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjb3BlKFxuICAgICAgICAgICAgJ2ZhbHNlLChBcnJheS5pc0FycmF5KCcsIFZBTFVFLCAnKXx8JywgVkFMVUUsICcgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpPycsIFZBTFVFLCAnOignLFxuICAgICAgICAgICAgbG9vcChtYXRTaXplLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICByZXR1cm4gU1RPUkFHRSArICdbJyArIGkgKyAnXT0nICsgVkFMVUUgKyAnWycgKyBpICsgJ10nXG4gICAgICAgICAgICB9KSwgJywnLCBTVE9SQUdFLCAnKScpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodW5yb2xsID4gMSkge1xuICAgICAgICBzY29wZShsb29wKHVucm9sbCwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShWQUxVRSkgPyBWQUxVRVtpXSA6IFZBTFVFICsgJ1snICsgaSArICddJ1xuICAgICAgICB9KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoZWNrJDEoIUFycmF5LmlzQXJyYXkoVkFMVUUpLCAndW5pZm9ybSB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBhcnJheScpXG4gICAgICAgIHNjb3BlKFZBTFVFKVxuICAgICAgfVxuICAgICAgc2NvcGUoJyk7JylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlbWl0RHJhdyAoZW52LCBvdXRlciwgaW5uZXIsIGFyZ3MpIHtcbiAgICB2YXIgc2hhcmVkID0gZW52LnNoYXJlZFxuICAgIHZhciBHTCA9IHNoYXJlZC5nbFxuICAgIHZhciBEUkFXX1NUQVRFID0gc2hhcmVkLmRyYXdcblxuICAgIHZhciBkcmF3T3B0aW9ucyA9IGFyZ3MuZHJhd1xuXG4gICAgZnVuY3Rpb24gZW1pdEVsZW1lbnRzICgpIHtcbiAgICAgIHZhciBkZWZuID0gZHJhd09wdGlvbnMuZWxlbWVudHNcbiAgICAgIHZhciBFTEVNRU5UU1xuICAgICAgdmFyIHNjb3BlID0gb3V0ZXJcbiAgICAgIGlmIChkZWZuKSB7XG4gICAgICAgIGlmICgoZGVmbi5jb250ZXh0RGVwICYmIGFyZ3MuY29udGV4dER5bmFtaWMpIHx8IGRlZm4ucHJvcERlcCkge1xuICAgICAgICAgIHNjb3BlID0gaW5uZXJcbiAgICAgICAgfVxuICAgICAgICBFTEVNRU5UUyA9IGRlZm4uYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBFTEVNRU5UUyA9IHNjb3BlLmRlZihEUkFXX1NUQVRFLCAnLicsIFNfRUxFTUVOVFMpXG4gICAgICB9XG4gICAgICBpZiAoRUxFTUVOVFMpIHtcbiAgICAgICAgc2NvcGUoXG4gICAgICAgICAgJ2lmKCcgKyBFTEVNRU5UUyArICcpJyArXG4gICAgICAgICAgR0wgKyAnLmJpbmRCdWZmZXIoJyArIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSJDEgKyAnLCcgKyBFTEVNRU5UUyArICcuYnVmZmVyLmJ1ZmZlcik7JylcbiAgICAgIH1cbiAgICAgIHJldHVybiBFTEVNRU5UU1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRDb3VudCAoKSB7XG4gICAgICB2YXIgZGVmbiA9IGRyYXdPcHRpb25zLmNvdW50XG4gICAgICB2YXIgQ09VTlRcbiAgICAgIHZhciBzY29wZSA9IG91dGVyXG4gICAgICBpZiAoZGVmbikge1xuICAgICAgICBpZiAoKGRlZm4uY29udGV4dERlcCAmJiBhcmdzLmNvbnRleHREeW5hbWljKSB8fCBkZWZuLnByb3BEZXApIHtcbiAgICAgICAgICBzY29wZSA9IGlubmVyXG4gICAgICAgIH1cbiAgICAgICAgQ09VTlQgPSBkZWZuLmFwcGVuZChlbnYsIHNjb3BlKVxuICAgICAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoZGVmbi5NSVNTSU5HKSB7XG4gICAgICAgICAgICBlbnYuYXNzZXJ0KG91dGVyLCAnZmFsc2UnLCAnbWlzc2luZyB2ZXJ0ZXggY291bnQnKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVmbi5EWU5BTUlDKSB7XG4gICAgICAgICAgICBlbnYuYXNzZXJ0KHNjb3BlLCBDT1VOVCArICc+PTAnLCAnbWlzc2luZyB2ZXJ0ZXggY291bnQnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIENPVU5UID0gc2NvcGUuZGVmKERSQVdfU1RBVEUsICcuJywgU19DT1VOVClcbiAgICAgICAgY2hlY2skMS5vcHRpb25hbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZW52LmFzc2VydChzY29wZSwgQ09VTlQgKyAnPj0wJywgJ21pc3NpbmcgdmVydGV4IGNvdW50JylcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDT1VOVFxuICAgIH1cblxuICAgIHZhciBFTEVNRU5UUyA9IGVtaXRFbGVtZW50cygpXG4gICAgZnVuY3Rpb24gZW1pdFZhbHVlIChuYW1lKSB7XG4gICAgICB2YXIgZGVmbiA9IGRyYXdPcHRpb25zW25hbWVdXG4gICAgICBpZiAoZGVmbikge1xuICAgICAgICBpZiAoKGRlZm4uY29udGV4dERlcCAmJiBhcmdzLmNvbnRleHREeW5hbWljKSB8fCBkZWZuLnByb3BEZXApIHtcbiAgICAgICAgICByZXR1cm4gZGVmbi5hcHBlbmQoZW52LCBpbm5lcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZGVmbi5hcHBlbmQoZW52LCBvdXRlcilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG91dGVyLmRlZihEUkFXX1NUQVRFLCAnLicsIG5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFBSSU1JVElWRSA9IGVtaXRWYWx1ZShTX1BSSU1JVElWRSlcbiAgICB2YXIgT0ZGU0VUID0gZW1pdFZhbHVlKFNfT0ZGU0VUKVxuXG4gICAgdmFyIENPVU5UID0gZW1pdENvdW50KClcbiAgICBpZiAodHlwZW9mIENPVU5UID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKENPVU5UID09PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbm5lcignaWYoJywgQ09VTlQsICcpeycpXG4gICAgICBpbm5lci5leGl0KCd9JylcbiAgICB9XG5cbiAgICB2YXIgSU5TVEFOQ0VTLCBFWFRfSU5TVEFOQ0lOR1xuICAgIGlmIChleHRJbnN0YW5jaW5nKSB7XG4gICAgICBJTlNUQU5DRVMgPSBlbWl0VmFsdWUoU19JTlNUQU5DRVMpXG4gICAgICBFWFRfSU5TVEFOQ0lORyA9IGVudi5pbnN0YW5jaW5nXG4gICAgfVxuXG4gICAgdmFyIEVMRU1FTlRfVFlQRSA9IEVMRU1FTlRTICsgJy50eXBlJ1xuXG4gICAgdmFyIGVsZW1lbnRzU3RhdGljID0gZHJhd09wdGlvbnMuZWxlbWVudHMgJiYgaXNTdGF0aWMoZHJhd09wdGlvbnMuZWxlbWVudHMpXG5cbiAgICBmdW5jdGlvbiBlbWl0SW5zdGFuY2luZyAoKSB7XG4gICAgICBmdW5jdGlvbiBkcmF3RWxlbWVudHMgKCkge1xuICAgICAgICBpbm5lcihFWFRfSU5TVEFOQ0lORywgJy5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSgnLCBbXG4gICAgICAgICAgUFJJTUlUSVZFLFxuICAgICAgICAgIENPVU5ULFxuICAgICAgICAgIEVMRU1FTlRfVFlQRSxcbiAgICAgICAgICBPRkZTRVQgKyAnPDwoKCcgKyBFTEVNRU5UX1RZUEUgKyAnLScgKyBHTF9VTlNJR05FRF9CWVRFJDggKyAnKT4+MSknLFxuICAgICAgICAgIElOU1RBTkNFU1xuICAgICAgICBdLCAnKTsnKVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkcmF3QXJyYXlzICgpIHtcbiAgICAgICAgaW5uZXIoRVhUX0lOU1RBTkNJTkcsICcuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKCcsXG4gICAgICAgICAgW1BSSU1JVElWRSwgT0ZGU0VULCBDT1VOVCwgSU5TVEFOQ0VTXSwgJyk7JylcbiAgICAgIH1cblxuICAgICAgaWYgKEVMRU1FTlRTKSB7XG4gICAgICAgIGlmICghZWxlbWVudHNTdGF0aWMpIHtcbiAgICAgICAgICBpbm5lcignaWYoJywgRUxFTUVOVFMsICcpeycpXG4gICAgICAgICAgZHJhd0VsZW1lbnRzKClcbiAgICAgICAgICBpbm5lcignfWVsc2V7JylcbiAgICAgICAgICBkcmF3QXJyYXlzKClcbiAgICAgICAgICBpbm5lcignfScpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZHJhd0VsZW1lbnRzKClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhd0FycmF5cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdFJlZ3VsYXIgKCkge1xuICAgICAgZnVuY3Rpb24gZHJhd0VsZW1lbnRzICgpIHtcbiAgICAgICAgaW5uZXIoR0wgKyAnLmRyYXdFbGVtZW50cygnICsgW1xuICAgICAgICAgIFBSSU1JVElWRSxcbiAgICAgICAgICBDT1VOVCxcbiAgICAgICAgICBFTEVNRU5UX1RZUEUsXG4gICAgICAgICAgT0ZGU0VUICsgJzw8KCgnICsgRUxFTUVOVF9UWVBFICsgJy0nICsgR0xfVU5TSUdORURfQllURSQ4ICsgJyk+PjEpJ1xuICAgICAgICBdICsgJyk7JylcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZHJhd0FycmF5cyAoKSB7XG4gICAgICAgIGlubmVyKEdMICsgJy5kcmF3QXJyYXlzKCcgKyBbUFJJTUlUSVZFLCBPRkZTRVQsIENPVU5UXSArICcpOycpXG4gICAgICB9XG5cbiAgICAgIGlmIChFTEVNRU5UUykge1xuICAgICAgICBpZiAoIWVsZW1lbnRzU3RhdGljKSB7XG4gICAgICAgICAgaW5uZXIoJ2lmKCcsIEVMRU1FTlRTLCAnKXsnKVxuICAgICAgICAgIGRyYXdFbGVtZW50cygpXG4gICAgICAgICAgaW5uZXIoJ31lbHNleycpXG4gICAgICAgICAgZHJhd0FycmF5cygpXG4gICAgICAgICAgaW5uZXIoJ30nKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRyYXdFbGVtZW50cygpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYXdBcnJheXMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHRJbnN0YW5jaW5nICYmICh0eXBlb2YgSU5TVEFOQ0VTICE9PSAnbnVtYmVyJyB8fCBJTlNUQU5DRVMgPj0gMCkpIHtcbiAgICAgIGlmICh0eXBlb2YgSU5TVEFOQ0VTID09PSAnc3RyaW5nJykge1xuICAgICAgICBpbm5lcignaWYoJywgSU5TVEFOQ0VTLCAnPjApeycpXG4gICAgICAgIGVtaXRJbnN0YW5jaW5nKClcbiAgICAgICAgaW5uZXIoJ31lbHNlIGlmKCcsIElOU1RBTkNFUywgJzwwKXsnKVxuICAgICAgICBlbWl0UmVndWxhcigpXG4gICAgICAgIGlubmVyKCd9JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVtaXRJbnN0YW5jaW5nKClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdFJlZ3VsYXIoKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUJvZHkgKGVtaXRCb2R5LCBwYXJlbnRFbnYsIGFyZ3MsIHByb2dyYW0sIGNvdW50KSB7XG4gICAgdmFyIGVudiA9IGNyZWF0ZVJFR0xFbnZpcm9ubWVudCgpXG4gICAgdmFyIHNjb3BlID0gZW52LnByb2MoJ2JvZHknLCBjb3VudClcbiAgICBjaGVjayQxLm9wdGlvbmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgIGVudi5jb21tYW5kU3RyID0gcGFyZW50RW52LmNvbW1hbmRTdHJcbiAgICAgIGVudi5jb21tYW5kID0gZW52LmxpbmsocGFyZW50RW52LmNvbW1hbmRTdHIpXG4gICAgfSlcbiAgICBpZiAoZXh0SW5zdGFuY2luZykge1xuICAgICAgZW52Lmluc3RhbmNpbmcgPSBzY29wZS5kZWYoXG4gICAgICAgIGVudi5zaGFyZWQuZXh0ZW5zaW9ucywgJy5hbmdsZV9pbnN0YW5jZWRfYXJyYXlzJylcbiAgICB9XG4gICAgZW1pdEJvZHkoZW52LCBzY29wZSwgYXJncywgcHJvZ3JhbSlcbiAgICByZXR1cm4gZW52LmNvbXBpbGUoKS5ib2R5XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERSQVcgUFJPQ1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGZ1bmN0aW9uIGVtaXREcmF3Qm9keSAoZW52LCBkcmF3LCBhcmdzLCBwcm9ncmFtKSB7XG4gICAgaW5qZWN0RXh0ZW5zaW9ucyhlbnYsIGRyYXcpXG4gICAgaWYgKGFyZ3MudXNlVkFPKSB7XG4gICAgICBpZiAoYXJncy5kcmF3VkFPKSB7XG4gICAgICAgIGRyYXcoZW52LnNoYXJlZC52YW8sICcuc2V0VkFPKCcsIGFyZ3MuZHJhd1ZBTy5hcHBlbmQoZW52LCBkcmF3KSwgJyk7JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYXcoZW52LnNoYXJlZC52YW8sICcuc2V0VkFPKCcsIGVudi5zaGFyZWQudmFvLCAnLnRhcmdldFZBTyk7JylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZHJhdyhlbnYuc2hhcmVkLnZhbywgJy5zZXRWQU8obnVsbCk7JylcbiAgICAgIGVtaXRBdHRyaWJ1dGVzKGVudiwgZHJhdywgYXJncywgcHJvZ3JhbS5hdHRyaWJ1dGVzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9KVxuICAgIH1cbiAgICBlbWl0VW5pZm9ybXMoZW52LCBkcmF3LCBhcmdzLCBwcm9ncmFtLnVuaWZvcm1zLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pXG4gICAgZW1pdERyYXcoZW52LCBkcmF3LCBkcmF3LCBhcmdzKVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdERyYXdQcm9jIChlbnYsIGFyZ3MpIHtcbiAgICB2YXIgZHJhdyA9IGVudi5wcm9jKCdkcmF3JywgMSlcblxuICAgIGluamVjdEV4dGVuc2lvbnMoZW52LCBkcmF3KVxuXG4gICAgZW1pdENvbnRleHQoZW52LCBkcmF3LCBhcmdzLmNvbnRleHQpXG4gICAgZW1pdFBvbGxGcmFtZWJ1ZmZlcihlbnYsIGRyYXcsIGFyZ3MuZnJhbWVidWZmZXIpXG5cbiAgICBlbWl0UG9sbFN0YXRlKGVudiwgZHJhdywgYXJncylcbiAgICBlbWl0U2V0T3B0aW9ucyhlbnYsIGRyYXcsIGFyZ3Muc3RhdGUpXG5cbiAgICBlbWl0UHJvZmlsZShlbnYsIGRyYXcsIGFyZ3MsIGZhbHNlLCB0cnVlKVxuXG4gICAgdmFyIHByb2dyYW0gPSBhcmdzLnNoYWRlci5wcm9nVmFyLmFwcGVuZChlbnYsIGRyYXcpXG4gICAgZHJhdyhlbnYuc2hhcmVkLmdsLCAnLnVzZVByb2dyYW0oJywgcHJvZ3JhbSwgJy5wcm9ncmFtKTsnKVxuXG4gICAgaWYgKGFyZ3Muc2hhZGVyLnByb2dyYW0pIHtcbiAgICAgIGVtaXREcmF3Qm9keShlbnYsIGRyYXcsIGFyZ3MsIGFyZ3Muc2hhZGVyLnByb2dyYW0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGRyYXcoZW52LnNoYXJlZC52YW8sICcuc2V0VkFPKG51bGwpOycpXG4gICAgICB2YXIgZHJhd0NhY2hlID0gZW52Lmdsb2JhbC5kZWYoJ3t9JylcbiAgICAgIHZhciBQUk9HX0lEID0gZHJhdy5kZWYocHJvZ3JhbSwgJy5pZCcpXG4gICAgICB2YXIgQ0FDSEVEX1BST0MgPSBkcmF3LmRlZihkcmF3Q2FjaGUsICdbJywgUFJPR19JRCwgJ10nKVxuICAgICAgZHJhdyhcbiAgICAgICAgZW52LmNvbmQoQ0FDSEVEX1BST0MpXG4gICAgICAgICAgLnRoZW4oQ0FDSEVEX1BST0MsICcuY2FsbCh0aGlzLGEwKTsnKVxuICAgICAgICAgIC5lbHNlKFxuICAgICAgICAgICAgQ0FDSEVEX1BST0MsICc9JywgZHJhd0NhY2hlLCAnWycsIFBST0dfSUQsICddPScsXG4gICAgICAgICAgICBlbnYubGluayhmdW5jdGlvbiAocHJvZ3JhbSkge1xuICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQm9keShlbWl0RHJhd0JvZHksIGVudiwgYXJncywgcHJvZ3JhbSwgMSlcbiAgICAgICAgICAgIH0pLCAnKCcsIHByb2dyYW0sICcpOycsXG4gICAgICAgICAgICBDQUNIRURfUFJPQywgJy5jYWxsKHRoaXMsYTApOycpKVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhhcmdzLnN0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICBkcmF3KGVudi5zaGFyZWQuY3VycmVudCwgJy5kaXJ0eT10cnVlOycpXG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBCQVRDSCBQUk9DXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBmdW5jdGlvbiBlbWl0QmF0Y2hEeW5hbWljU2hhZGVyQm9keSAoZW52LCBzY29wZSwgYXJncywgcHJvZ3JhbSkge1xuICAgIGVudi5iYXRjaElkID0gJ2ExJ1xuXG4gICAgaW5qZWN0RXh0ZW5zaW9ucyhlbnYsIHNjb3BlKVxuXG4gICAgZnVuY3Rpb24gYWxsICgpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZW1pdEF0dHJpYnV0ZXMoZW52LCBzY29wZSwgYXJncywgcHJvZ3JhbS5hdHRyaWJ1dGVzLCBhbGwpXG4gICAgZW1pdFVuaWZvcm1zKGVudiwgc2NvcGUsIGFyZ3MsIHByb2dyYW0udW5pZm9ybXMsIGFsbClcbiAgICBlbWl0RHJhdyhlbnYsIHNjb3BlLCBzY29wZSwgYXJncylcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXRCYXRjaEJvZHkgKGVudiwgc2NvcGUsIGFyZ3MsIHByb2dyYW0pIHtcbiAgICBpbmplY3RFeHRlbnNpb25zKGVudiwgc2NvcGUpXG5cbiAgICB2YXIgY29udGV4dER5bmFtaWMgPSBhcmdzLmNvbnRleHREZXBcblxuICAgIHZhciBCQVRDSF9JRCA9IHNjb3BlLmRlZigpXG4gICAgdmFyIFBST1BfTElTVCA9ICdhMCdcbiAgICB2YXIgTlVNX1BST1BTID0gJ2ExJ1xuICAgIHZhciBQUk9QUyA9IHNjb3BlLmRlZigpXG4gICAgZW52LnNoYXJlZC5wcm9wcyA9IFBST1BTXG4gICAgZW52LmJhdGNoSWQgPSBCQVRDSF9JRFxuXG4gICAgdmFyIG91dGVyID0gZW52LnNjb3BlKClcbiAgICB2YXIgaW5uZXIgPSBlbnYuc2NvcGUoKVxuXG4gICAgc2NvcGUoXG4gICAgICBvdXRlci5lbnRyeSxcbiAgICAgICdmb3IoJywgQkFUQ0hfSUQsICc9MDsnLCBCQVRDSF9JRCwgJzwnLCBOVU1fUFJPUFMsICc7KysnLCBCQVRDSF9JRCwgJyl7JyxcbiAgICAgIFBST1BTLCAnPScsIFBST1BfTElTVCwgJ1snLCBCQVRDSF9JRCwgJ107JyxcbiAgICAgIGlubmVyLFxuICAgICAgJ30nLFxuICAgICAgb3V0ZXIuZXhpdClcblxuICAgIGZ1bmN0aW9uIGlzSW5uZXJEZWZuIChkZWZuKSB7XG4gICAgICByZXR1cm4gKChkZWZuLmNvbnRleHREZXAgJiYgY29udGV4dER5bmFtaWMpIHx8IGRlZm4ucHJvcERlcClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc091dGVyRGVmbiAoZGVmbikge1xuICAgICAgcmV0dXJuICFpc0lubmVyRGVmbihkZWZuKVxuICAgIH1cblxuICAgIGlmIChhcmdzLm5lZWRzQ29udGV4dCkge1xuICAgICAgZW1pdENvbnRleHQoZW52LCBpbm5lciwgYXJncy5jb250ZXh0KVxuICAgIH1cbiAgICBpZiAoYXJncy5uZWVkc0ZyYW1lYnVmZmVyKSB7XG4gICAgICBlbWl0UG9sbEZyYW1lYnVmZmVyKGVudiwgaW5uZXIsIGFyZ3MuZnJhbWVidWZmZXIpXG4gICAgfVxuICAgIGVtaXRTZXRPcHRpb25zKGVudiwgaW5uZXIsIGFyZ3Muc3RhdGUsIGlzSW5uZXJEZWZuKVxuXG4gICAgaWYgKGFyZ3MucHJvZmlsZSAmJiBpc0lubmVyRGVmbihhcmdzLnByb2ZpbGUpKSB7XG4gICAgICBlbWl0UHJvZmlsZShlbnYsIGlubmVyLCBhcmdzLCBmYWxzZSwgdHJ1ZSlcbiAgICB9XG5cbiAgICBpZiAoIXByb2dyYW0pIHtcbiAgICAgIHZhciBwcm9nQ2FjaGUgPSBlbnYuZ2xvYmFsLmRlZigne30nKVxuICAgICAgdmFyIFBST0dSQU0gPSBhcmdzLnNoYWRlci5wcm9nVmFyLmFwcGVuZChlbnYsIGlubmVyKVxuICAgICAgdmFyIFBST0dfSUQgPSBpbm5lci5kZWYoUFJPR1JBTSwgJy5pZCcpXG4gICAgICB2YXIgQ0FDSEVEX1BST0MgPSBpbm5lci5kZWYocHJvZ0NhY2hlLCAnWycsIFBST0dfSUQsICddJylcbiAgICAgIGlubmVyKFxuICAgICAgICBlbnYuc2hhcmVkLmdsLCAnLnVzZVByb2dyYW0oJywgUFJPR1JBTSwgJy5wcm9ncmFtKTsnLFxuICAgICAgICAnaWYoIScsIENBQ0hFRF9QUk9DLCAnKXsnLFxuICAgICAgICBDQUNIRURfUFJPQywgJz0nLCBwcm9nQ2FjaGUsICdbJywgUFJPR19JRCwgJ109JyxcbiAgICAgICAgZW52LmxpbmsoZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQm9keShcbiAgICAgICAgICAgIGVtaXRCYXRjaER5bmFtaWNTaGFkZXJCb2R5LCBlbnYsIGFyZ3MsIHByb2dyYW0sIDIpXG4gICAgICAgIH0pLCAnKCcsIFBST0dSQU0sICcpO30nLFxuICAgICAgICBDQUNIRURfUFJPQywgJy5jYWxsKHRoaXMsYTBbJywgQkFUQ0hfSUQsICddLCcsIEJBVENIX0lELCAnKTsnKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoYXJncy51c2VWQU8pIHtcbiAgICAgICAgaWYgKGFyZ3MuZHJhd1ZBTykge1xuICAgICAgICAgIGlmIChpc0lubmVyRGVmbihhcmdzLmRyYXdWQU8pKSB7XG4gICAgICAgICAgICAvLyB2YW8gaXMgYSBwcm9wXG4gICAgICAgICAgICBpbm5lcihlbnYuc2hhcmVkLnZhbywgJy5zZXRWQU8oJywgYXJncy5kcmF3VkFPLmFwcGVuZChlbnYsIGlubmVyKSwgJyk7JylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdmFvIGlzIGludmFyaWFudFxuICAgICAgICAgICAgb3V0ZXIoZW52LnNoYXJlZC52YW8sICcuc2V0VkFPKCcsIGFyZ3MuZHJhd1ZBTy5hcHBlbmQoZW52LCBvdXRlciksICcpOycpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHNjb3BlZCB2YW8gYmluZGluZ1xuICAgICAgICAgIG91dGVyKGVudi5zaGFyZWQudmFvLCAnLnNldFZBTygnLCBlbnYuc2hhcmVkLnZhbywgJy50YXJnZXRWQU8pOycpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dGVyKGVudi5zaGFyZWQudmFvLCAnLnNldFZBTyhudWxsKTsnKVxuICAgICAgICBlbWl0QXR0cmlidXRlcyhlbnYsIG91dGVyLCBhcmdzLCBwcm9ncmFtLmF0dHJpYnV0ZXMsIGlzT3V0ZXJEZWZuKVxuICAgICAgICBlbWl0QXR0cmlidXRlcyhlbnYsIGlubmVyLCBhcmdzLCBwcm9ncmFtLmF0dHJpYnV0ZXMsIGlzSW5uZXJEZWZuKVxuICAgICAgfVxuICAgICAgZW1pdFVuaWZvcm1zKGVudiwgb3V0ZXIsIGFyZ3MsIHByb2dyYW0udW5pZm9ybXMsIGlzT3V0ZXJEZWZuKVxuICAgICAgZW1pdFVuaWZvcm1zKGVudiwgaW5uZXIsIGFyZ3MsIHByb2dyYW0udW5pZm9ybXMsIGlzSW5uZXJEZWZuKVxuICAgICAgZW1pdERyYXcoZW52LCBvdXRlciwgaW5uZXIsIGFyZ3MpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdEJhdGNoUHJvYyAoZW52LCBhcmdzKSB7XG4gICAgdmFyIGJhdGNoID0gZW52LnByb2MoJ2JhdGNoJywgMilcbiAgICBlbnYuYmF0Y2hJZCA9ICcwJ1xuXG4gICAgaW5qZWN0RXh0ZW5zaW9ucyhlbnYsIGJhdGNoKVxuXG4gICAgLy8gQ2hlY2sgaWYgYW55IGNvbnRleHQgdmFyaWFibGVzIGRlcGVuZCBvbiBwcm9wc1xuICAgIHZhciBjb250ZXh0RHluYW1pYyA9IGZhbHNlXG4gICAgdmFyIG5lZWRzQ29udGV4dCA9IHRydWVcbiAgICBPYmplY3Qua2V5cyhhcmdzLmNvbnRleHQpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGNvbnRleHREeW5hbWljID0gY29udGV4dER5bmFtaWMgfHwgYXJncy5jb250ZXh0W25hbWVdLnByb3BEZXBcbiAgICB9KVxuICAgIGlmICghY29udGV4dER5bmFtaWMpIHtcbiAgICAgIGVtaXRDb250ZXh0KGVudiwgYmF0Y2gsIGFyZ3MuY29udGV4dClcbiAgICAgIG5lZWRzQ29udGV4dCA9IGZhbHNlXG4gICAgfVxuXG4gICAgLy8gZnJhbWVidWZmZXIgc3RhdGUgYWZmZWN0cyBmcmFtZWJ1ZmZlcldpZHRoL2hlaWdodCBjb250ZXh0IHZhcnNcbiAgICB2YXIgZnJhbWVidWZmZXIgPSBhcmdzLmZyYW1lYnVmZmVyXG4gICAgdmFyIG5lZWRzRnJhbWVidWZmZXIgPSBmYWxzZVxuICAgIGlmIChmcmFtZWJ1ZmZlcikge1xuICAgICAgaWYgKGZyYW1lYnVmZmVyLnByb3BEZXApIHtcbiAgICAgICAgY29udGV4dER5bmFtaWMgPSBuZWVkc0ZyYW1lYnVmZmVyID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChmcmFtZWJ1ZmZlci5jb250ZXh0RGVwICYmIGNvbnRleHREeW5hbWljKSB7XG4gICAgICAgIG5lZWRzRnJhbWVidWZmZXIgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoIW5lZWRzRnJhbWVidWZmZXIpIHtcbiAgICAgICAgZW1pdFBvbGxGcmFtZWJ1ZmZlcihlbnYsIGJhdGNoLCBmcmFtZWJ1ZmZlcilcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdFBvbGxGcmFtZWJ1ZmZlcihlbnYsIGJhdGNoLCBudWxsKVxuICAgIH1cblxuICAgIC8vIHZpZXdwb3J0IGlzIHdlaXJkIGJlY2F1c2UgaXQgY2FuIGFmZmVjdCBjb250ZXh0IHZhcnNcbiAgICBpZiAoYXJncy5zdGF0ZS52aWV3cG9ydCAmJiBhcmdzLnN0YXRlLnZpZXdwb3J0LnByb3BEZXApIHtcbiAgICAgIGNvbnRleHREeW5hbWljID0gdHJ1ZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzSW5uZXJEZWZuIChkZWZuKSB7XG4gICAgICByZXR1cm4gKGRlZm4uY29udGV4dERlcCAmJiBjb250ZXh0RHluYW1pYykgfHwgZGVmbi5wcm9wRGVwXG4gICAgfVxuXG4gICAgLy8gc2V0IHdlYmdsIG9wdGlvbnNcbiAgICBlbWl0UG9sbFN0YXRlKGVudiwgYmF0Y2gsIGFyZ3MpXG4gICAgZW1pdFNldE9wdGlvbnMoZW52LCBiYXRjaCwgYXJncy5zdGF0ZSwgZnVuY3Rpb24gKGRlZm4pIHtcbiAgICAgIHJldHVybiAhaXNJbm5lckRlZm4oZGVmbilcbiAgICB9KVxuXG4gICAgaWYgKCFhcmdzLnByb2ZpbGUgfHwgIWlzSW5uZXJEZWZuKGFyZ3MucHJvZmlsZSkpIHtcbiAgICAgIGVtaXRQcm9maWxlKGVudiwgYmF0Y2gsIGFyZ3MsIGZhbHNlLCAnYTEnKVxuICAgIH1cblxuICAgIC8vIFNhdmUgdGhlc2UgdmFsdWVzIHRvIGFyZ3Mgc28gdGhhdCB0aGUgYmF0Y2ggYm9keSByb3V0aW5lIGNhbiB1c2UgdGhlbVxuICAgIGFyZ3MuY29udGV4dERlcCA9IGNvbnRleHREeW5hbWljXG4gICAgYXJncy5uZWVkc0NvbnRleHQgPSBuZWVkc0NvbnRleHRcbiAgICBhcmdzLm5lZWRzRnJhbWVidWZmZXIgPSBuZWVkc0ZyYW1lYnVmZmVyXG5cbiAgICAvLyBkZXRlcm1pbmUgaWYgc2hhZGVyIGlzIGR5bmFtaWNcbiAgICB2YXIgcHJvZ0RlZm4gPSBhcmdzLnNoYWRlci5wcm9nVmFyXG4gICAgaWYgKChwcm9nRGVmbi5jb250ZXh0RGVwICYmIGNvbnRleHREeW5hbWljKSB8fCBwcm9nRGVmbi5wcm9wRGVwKSB7XG4gICAgICBlbWl0QmF0Y2hCb2R5KFxuICAgICAgICBlbnYsXG4gICAgICAgIGJhdGNoLFxuICAgICAgICBhcmdzLFxuICAgICAgICBudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgUFJPR1JBTSA9IHByb2dEZWZuLmFwcGVuZChlbnYsIGJhdGNoKVxuICAgICAgYmF0Y2goZW52LnNoYXJlZC5nbCwgJy51c2VQcm9ncmFtKCcsIFBST0dSQU0sICcucHJvZ3JhbSk7JylcbiAgICAgIGlmIChhcmdzLnNoYWRlci5wcm9ncmFtKSB7XG4gICAgICAgIGVtaXRCYXRjaEJvZHkoXG4gICAgICAgICAgZW52LFxuICAgICAgICAgIGJhdGNoLFxuICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgYXJncy5zaGFkZXIucHJvZ3JhbSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhdGNoKGVudi5zaGFyZWQudmFvLCAnLnNldFZBTyhudWxsKTsnKVxuICAgICAgICB2YXIgYmF0Y2hDYWNoZSA9IGVudi5nbG9iYWwuZGVmKCd7fScpXG4gICAgICAgIHZhciBQUk9HX0lEID0gYmF0Y2guZGVmKFBST0dSQU0sICcuaWQnKVxuICAgICAgICB2YXIgQ0FDSEVEX1BST0MgPSBiYXRjaC5kZWYoYmF0Y2hDYWNoZSwgJ1snLCBQUk9HX0lELCAnXScpXG4gICAgICAgIGJhdGNoKFxuICAgICAgICAgIGVudi5jb25kKENBQ0hFRF9QUk9DKVxuICAgICAgICAgICAgLnRoZW4oQ0FDSEVEX1BST0MsICcuY2FsbCh0aGlzLGEwLGExKTsnKVxuICAgICAgICAgICAgLmVsc2UoXG4gICAgICAgICAgICAgIENBQ0hFRF9QUk9DLCAnPScsIGJhdGNoQ2FjaGUsICdbJywgUFJPR19JRCwgJ109JyxcbiAgICAgICAgICAgICAgZW52LmxpbmsoZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQm9keShlbWl0QmF0Y2hCb2R5LCBlbnYsIGFyZ3MsIHByb2dyYW0sIDIpXG4gICAgICAgICAgICAgIH0pLCAnKCcsIFBST0dSQU0sICcpOycsXG4gICAgICAgICAgICAgIENBQ0hFRF9QUk9DLCAnLmNhbGwodGhpcyxhMCxhMSk7JykpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKGFyZ3Muc3RhdGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIGJhdGNoKGVudi5zaGFyZWQuY3VycmVudCwgJy5kaXJ0eT10cnVlOycpXG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTQ09QRSBDT01NQU5EXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgZnVuY3Rpb24gZW1pdFNjb3BlUHJvYyAoZW52LCBhcmdzKSB7XG4gICAgdmFyIHNjb3BlID0gZW52LnByb2MoJ3Njb3BlJywgMylcbiAgICBlbnYuYmF0Y2hJZCA9ICdhMidcblxuICAgIHZhciBzaGFyZWQgPSBlbnYuc2hhcmVkXG4gICAgdmFyIENVUlJFTlRfU1RBVEUgPSBzaGFyZWQuY3VycmVudFxuXG4gICAgZW1pdENvbnRleHQoZW52LCBzY29wZSwgYXJncy5jb250ZXh0KVxuXG4gICAgaWYgKGFyZ3MuZnJhbWVidWZmZXIpIHtcbiAgICAgIGFyZ3MuZnJhbWVidWZmZXIuYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgfVxuXG4gICAgc29ydFN0YXRlKE9iamVjdC5rZXlzKGFyZ3Muc3RhdGUpKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZGVmbiA9IGFyZ3Muc3RhdGVbbmFtZV1cbiAgICAgIHZhciB2YWx1ZSA9IGRlZm4uYXBwZW5kKGVudiwgc2NvcGUpXG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICBzY29wZS5zZXQoZW52Lm5leHRbbmFtZV0sICdbJyArIGkgKyAnXScsIHYpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY29wZS5zZXQoc2hhcmVkLm5leHQsICcuJyArIG5hbWUsIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBlbWl0UHJvZmlsZShlbnYsIHNjb3BlLCBhcmdzLCB0cnVlLCB0cnVlKVxuXG4gICAgO1tTX0VMRU1FTlRTLCBTX09GRlNFVCwgU19DT1VOVCwgU19JTlNUQU5DRVMsIFNfUFJJTUlUSVZFXS5mb3JFYWNoKFxuICAgICAgZnVuY3Rpb24gKG9wdCkge1xuICAgICAgICB2YXIgdmFyaWFibGUgPSBhcmdzLmRyYXdbb3B0XVxuICAgICAgICBpZiAoIXZhcmlhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgc2NvcGUuc2V0KHNoYXJlZC5kcmF3LCAnLicgKyBvcHQsICcnICsgdmFyaWFibGUuYXBwZW5kKGVudiwgc2NvcGUpKVxuICAgICAgfSlcblxuICAgIE9iamVjdC5rZXlzKGFyZ3MudW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKG9wdCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJncy51bmlmb3Jtc1tvcHRdLmFwcGVuZChlbnYsIHNjb3BlKVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gJ1snICsgdmFsdWUuam9pbigpICsgJ10nXG4gICAgICB9XG4gICAgICBzY29wZS5zZXQoXG4gICAgICAgIHNoYXJlZC51bmlmb3JtcyxcbiAgICAgICAgJ1snICsgc3RyaW5nU3RvcmUuaWQob3B0KSArICddJyxcbiAgICAgICAgdmFsdWUpXG4gICAgfSlcblxuICAgIE9iamVjdC5rZXlzKGFyZ3MuYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHJlY29yZCA9IGFyZ3MuYXR0cmlidXRlc1tuYW1lXS5hcHBlbmQoZW52LCBzY29wZSlcbiAgICAgIHZhciBzY29wZUF0dHJpYiA9IGVudi5zY29wZUF0dHJpYihuYW1lKVxuICAgICAgT2JqZWN0LmtleXMobmV3IEF0dHJpYnV0ZVJlY29yZCgpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIHNjb3BlLnNldChzY29wZUF0dHJpYiwgJy4nICsgcHJvcCwgcmVjb3JkW3Byb3BdKVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgaWYgKGFyZ3Muc2NvcGVWQU8pIHtcbiAgICAgIHNjb3BlLnNldChzaGFyZWQudmFvLCAnLnRhcmdldFZBTycsIGFyZ3Muc2NvcGVWQU8uYXBwZW5kKGVudiwgc2NvcGUpKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNhdmVTaGFkZXIgKG5hbWUpIHtcbiAgICAgIHZhciBzaGFkZXIgPSBhcmdzLnNoYWRlcltuYW1lXVxuICAgICAgaWYgKHNoYWRlcikge1xuICAgICAgICBzY29wZS5zZXQoc2hhcmVkLnNoYWRlciwgJy4nICsgbmFtZSwgc2hhZGVyLmFwcGVuZChlbnYsIHNjb3BlKSlcbiAgICAgIH1cbiAgICB9XG4gICAgc2F2ZVNoYWRlcihTX1ZFUlQpXG4gICAgc2F2ZVNoYWRlcihTX0ZSQUcpXG5cbiAgICBpZiAoT2JqZWN0LmtleXMoYXJncy5zdGF0ZSkubGVuZ3RoID4gMCkge1xuICAgICAgc2NvcGUoQ1VSUkVOVF9TVEFURSwgJy5kaXJ0eT10cnVlOycpXG4gICAgICBzY29wZS5leGl0KENVUlJFTlRfU1RBVEUsICcuZGlydHk9dHJ1ZTsnKVxuICAgIH1cblxuICAgIHNjb3BlKCdhMSgnLCBlbnYuc2hhcmVkLmNvbnRleHQsICcsYTAsJywgZW52LmJhdGNoSWQsICcpOycpXG4gIH1cblxuICBmdW5jdGlvbiBpc0R5bmFtaWNPYmplY3QgKG9iamVjdCkge1xuICAgIGlmICh0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0JyB8fCBpc0FycmF5TGlrZShvYmplY3QpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdmFyIHByb3BzID0gT2JqZWN0LmtleXMob2JqZWN0KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChkeW5hbWljLmlzRHluYW1pYyhvYmplY3RbcHJvcHNbaV1dKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIHNwbGF0T2JqZWN0IChlbnYsIG9wdGlvbnMsIG5hbWUpIHtcbiAgICB2YXIgb2JqZWN0ID0gb3B0aW9ucy5zdGF0aWNbbmFtZV1cbiAgICBpZiAoIW9iamVjdCB8fCAhaXNEeW5hbWljT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBnbG9iYWxzID0gZW52Lmdsb2JhbFxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KVxuICAgIHZhciB0aGlzRGVwID0gZmFsc2VcbiAgICB2YXIgY29udGV4dERlcCA9IGZhbHNlXG4gICAgdmFyIHByb3BEZXAgPSBmYWxzZVxuICAgIHZhciBvYmplY3RSZWYgPSBlbnYuZ2xvYmFsLmRlZigne30nKVxuICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XVxuICAgICAgaWYgKGR5bmFtaWMuaXNEeW5hbWljKHZhbHVlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XSA9IGR5bmFtaWMudW5ib3godmFsdWUpXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlcHMgPSBjcmVhdGVEeW5hbWljRGVjbCh2YWx1ZSwgbnVsbClcbiAgICAgICAgdGhpc0RlcCA9IHRoaXNEZXAgfHwgZGVwcy50aGlzRGVwXG4gICAgICAgIHByb3BEZXAgPSBwcm9wRGVwIHx8IGRlcHMucHJvcERlcFxuICAgICAgICBjb250ZXh0RGVwID0gY29udGV4dERlcCB8fCBkZXBzLmNvbnRleHREZXBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdsb2JhbHMob2JqZWN0UmVmLCAnLicsIGtleSwgJz0nKVxuICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICBnbG9iYWxzKHZhbHVlKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgZ2xvYmFscygnXCInLCB2YWx1ZSwgJ1wiJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICBnbG9iYWxzKCdbJywgdmFsdWUuam9pbigpLCAnXScpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBnbG9iYWxzKGVudi5saW5rKHZhbHVlKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFscygnOycpXG4gICAgICB9XG4gICAgfSlcblxuICAgIGZ1bmN0aW9uIGFwcGVuZEJsb2NrIChlbnYsIGJsb2NrKSB7XG4gICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XVxuICAgICAgICBpZiAoIWR5bmFtaWMuaXNEeW5hbWljKHZhbHVlKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHZhciByZWYgPSBlbnYuaW52b2tlKGJsb2NrLCB2YWx1ZSlcbiAgICAgICAgYmxvY2sob2JqZWN0UmVmLCAnLicsIGtleSwgJz0nLCByZWYsICc7JylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgb3B0aW9ucy5keW5hbWljW25hbWVdID0gbmV3IGR5bmFtaWMuRHluYW1pY1ZhcmlhYmxlKERZTl9USFVOSywge1xuICAgICAgdGhpc0RlcDogdGhpc0RlcCxcbiAgICAgIGNvbnRleHREZXA6IGNvbnRleHREZXAsXG4gICAgICBwcm9wRGVwOiBwcm9wRGVwLFxuICAgICAgcmVmOiBvYmplY3RSZWYsXG4gICAgICBhcHBlbmQ6IGFwcGVuZEJsb2NrXG4gICAgfSlcbiAgICBkZWxldGUgb3B0aW9ucy5zdGF0aWNbbmFtZV1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTUFJTiBEUkFXIENPTU1BTkRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBmdW5jdGlvbiBjb21waWxlQ29tbWFuZCAob3B0aW9ucywgYXR0cmlidXRlcywgdW5pZm9ybXMsIGNvbnRleHQsIHN0YXRzKSB7XG4gICAgdmFyIGVudiA9IGNyZWF0ZVJFR0xFbnZpcm9ubWVudCgpXG5cbiAgICAvLyBsaW5rIHN0YXRzLCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgYWNjZXNzIGl0IGluIHRoZSBwcm9ncmFtLlxuICAgIGVudi5zdGF0cyA9IGVudi5saW5rKHN0YXRzKVxuXG4gICAgLy8gc3BsYXQgb3B0aW9ucyBhbmQgYXR0cmlidXRlcyB0byBhbGxvdyBmb3IgZHluYW1pYyBuZXN0ZWQgcHJvcGVydGllc1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMuc3RhdGljKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHNwbGF0T2JqZWN0KGVudiwgYXR0cmlidXRlcywga2V5KVxuICAgIH0pXG4gICAgTkVTVEVEX09QVElPTlMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgc3BsYXRPYmplY3QoZW52LCBvcHRpb25zLCBuYW1lKVxuICAgIH0pXG5cbiAgICB2YXIgYXJncyA9IHBhcnNlQXJndW1lbnRzKG9wdGlvbnMsIGF0dHJpYnV0ZXMsIHVuaWZvcm1zLCBjb250ZXh0LCBlbnYpXG5cbiAgICBlbWl0RHJhd1Byb2MoZW52LCBhcmdzKVxuICAgIGVtaXRTY29wZVByb2MoZW52LCBhcmdzKVxuICAgIGVtaXRCYXRjaFByb2MoZW52LCBhcmdzKVxuXG4gICAgcmV0dXJuIGV4dGVuZChlbnYuY29tcGlsZSgpLCB7XG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFyZ3Muc2hhZGVyLnByb2dyYW0uZGVzdHJveSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUE9MTCAvIFJFRlJFU0hcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICByZXR1cm4ge1xuICAgIG5leHQ6IG5leHRTdGF0ZSxcbiAgICBjdXJyZW50OiBjdXJyZW50U3RhdGUsXG4gICAgcHJvY3M6IChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZW52ID0gY3JlYXRlUkVHTEVudmlyb25tZW50KClcbiAgICAgIHZhciBwb2xsID0gZW52LnByb2MoJ3BvbGwnKVxuICAgICAgdmFyIHJlZnJlc2ggPSBlbnYucHJvYygncmVmcmVzaCcpXG4gICAgICB2YXIgY29tbW9uID0gZW52LmJsb2NrKClcbiAgICAgIHBvbGwoY29tbW9uKVxuICAgICAgcmVmcmVzaChjb21tb24pXG5cbiAgICAgIHZhciBzaGFyZWQgPSBlbnYuc2hhcmVkXG4gICAgICB2YXIgR0wgPSBzaGFyZWQuZ2xcbiAgICAgIHZhciBORVhUX1NUQVRFID0gc2hhcmVkLm5leHRcbiAgICAgIHZhciBDVVJSRU5UX1NUQVRFID0gc2hhcmVkLmN1cnJlbnRcblxuICAgICAgY29tbW9uKENVUlJFTlRfU1RBVEUsICcuZGlydHk9ZmFsc2U7JylcblxuICAgICAgZW1pdFBvbGxGcmFtZWJ1ZmZlcihlbnYsIHBvbGwpXG4gICAgICBlbWl0UG9sbEZyYW1lYnVmZmVyKGVudiwgcmVmcmVzaCwgbnVsbCwgdHJ1ZSlcblxuICAgICAgLy8gUmVmcmVzaCB1cGRhdGVzIGFsbCBhdHRyaWJ1dGUgc3RhdGUgY2hhbmdlc1xuICAgICAgdmFyIElOU1RBTkNJTkdcbiAgICAgIGlmIChleHRJbnN0YW5jaW5nKSB7XG4gICAgICAgIElOU1RBTkNJTkcgPSBlbnYubGluayhleHRJbnN0YW5jaW5nKVxuICAgICAgfVxuXG4gICAgICAvLyB1cGRhdGUgdmVydGV4IGFycmF5IGJpbmRpbmdzXG4gICAgICBpZiAoZXh0ZW5zaW9ucy5vZXNfdmVydGV4X2FycmF5X29iamVjdCkge1xuICAgICAgICByZWZyZXNoKGVudi5saW5rKGV4dGVuc2lvbnMub2VzX3ZlcnRleF9hcnJheV9vYmplY3QpLCAnLmJpbmRWZXJ0ZXhBcnJheU9FUyhudWxsKTsnKVxuICAgICAgfVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW1pdHMubWF4QXR0cmlidXRlczsgKytpKSB7XG4gICAgICAgIHZhciBCSU5ESU5HID0gcmVmcmVzaC5kZWYoc2hhcmVkLmF0dHJpYnV0ZXMsICdbJywgaSwgJ10nKVxuICAgICAgICB2YXIgaWZ0ZSA9IGVudi5jb25kKEJJTkRJTkcsICcuYnVmZmVyJylcbiAgICAgICAgaWZ0ZS50aGVuKFxuICAgICAgICAgIEdMLCAnLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KCcsIGksICcpOycsXG4gICAgICAgICAgR0wsICcuYmluZEJ1ZmZlcignLFxuICAgICAgICAgIEdMX0FSUkFZX0JVRkZFUiQyLCAnLCcsXG4gICAgICAgICAgQklORElORywgJy5idWZmZXIuYnVmZmVyKTsnLFxuICAgICAgICAgIEdMLCAnLnZlcnRleEF0dHJpYlBvaW50ZXIoJyxcbiAgICAgICAgICBpLCAnLCcsXG4gICAgICAgICAgQklORElORywgJy5zaXplLCcsXG4gICAgICAgICAgQklORElORywgJy50eXBlLCcsXG4gICAgICAgICAgQklORElORywgJy5ub3JtYWxpemVkLCcsXG4gICAgICAgICAgQklORElORywgJy5zdHJpZGUsJyxcbiAgICAgICAgICBCSU5ESU5HLCAnLm9mZnNldCk7J1xuICAgICAgICApLmVsc2UoXG4gICAgICAgICAgR0wsICcuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KCcsIGksICcpOycsXG4gICAgICAgICAgR0wsICcudmVydGV4QXR0cmliNGYoJyxcbiAgICAgICAgICBpLCAnLCcsXG4gICAgICAgICAgQklORElORywgJy54LCcsXG4gICAgICAgICAgQklORElORywgJy55LCcsXG4gICAgICAgICAgQklORElORywgJy56LCcsXG4gICAgICAgICAgQklORElORywgJy53KTsnLFxuICAgICAgICAgIEJJTkRJTkcsICcuYnVmZmVyPW51bGw7JylcbiAgICAgICAgcmVmcmVzaChpZnRlKVxuICAgICAgICBpZiAoZXh0SW5zdGFuY2luZykge1xuICAgICAgICAgIHJlZnJlc2goXG4gICAgICAgICAgICBJTlNUQU5DSU5HLCAnLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSgnLFxuICAgICAgICAgICAgaSwgJywnLFxuICAgICAgICAgICAgQklORElORywgJy5kaXZpc29yKTsnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWZyZXNoKFxuICAgICAgICBlbnYuc2hhcmVkLnZhbywgJy5jdXJyZW50VkFPPW51bGw7JyxcbiAgICAgICAgZW52LnNoYXJlZC52YW8sICcuc2V0VkFPKCcsIGVudi5zaGFyZWQudmFvLCAnLnRhcmdldFZBTyk7JylcblxuICAgICAgT2JqZWN0LmtleXMoR0xfRkxBR1MpLmZvckVhY2goZnVuY3Rpb24gKGZsYWcpIHtcbiAgICAgICAgdmFyIGNhcCA9IEdMX0ZMQUdTW2ZsYWddXG4gICAgICAgIHZhciBORVhUID0gY29tbW9uLmRlZihORVhUX1NUQVRFLCAnLicsIGZsYWcpXG4gICAgICAgIHZhciBibG9jayA9IGVudi5ibG9jaygpXG4gICAgICAgIGJsb2NrKCdpZignLCBORVhULCAnKXsnLFxuICAgICAgICAgIEdMLCAnLmVuYWJsZSgnLCBjYXAsICcpfWVsc2V7JyxcbiAgICAgICAgICBHTCwgJy5kaXNhYmxlKCcsIGNhcCwgJyl9JyxcbiAgICAgICAgICBDVVJSRU5UX1NUQVRFLCAnLicsIGZsYWcsICc9JywgTkVYVCwgJzsnKVxuICAgICAgICByZWZyZXNoKGJsb2NrKVxuICAgICAgICBwb2xsKFxuICAgICAgICAgICdpZignLCBORVhULCAnIT09JywgQ1VSUkVOVF9TVEFURSwgJy4nLCBmbGFnLCAnKXsnLFxuICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICd9JylcbiAgICAgIH0pXG5cbiAgICAgIE9iamVjdC5rZXlzKEdMX1ZBUklBQkxFUykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB2YXIgZnVuYyA9IEdMX1ZBUklBQkxFU1tuYW1lXVxuICAgICAgICB2YXIgaW5pdCA9IGN1cnJlbnRTdGF0ZVtuYW1lXVxuICAgICAgICB2YXIgTkVYVCwgQ1VSUkVOVFxuICAgICAgICB2YXIgYmxvY2sgPSBlbnYuYmxvY2soKVxuICAgICAgICBibG9jayhHTCwgJy4nLCBmdW5jLCAnKCcpXG4gICAgICAgIGlmIChpc0FycmF5TGlrZShpbml0KSkge1xuICAgICAgICAgIHZhciBuID0gaW5pdC5sZW5ndGhcbiAgICAgICAgICBORVhUID0gZW52Lmdsb2JhbC5kZWYoTkVYVF9TVEFURSwgJy4nLCBuYW1lKVxuICAgICAgICAgIENVUlJFTlQgPSBlbnYuZ2xvYmFsLmRlZihDVVJSRU5UX1NUQVRFLCAnLicsIG5hbWUpXG4gICAgICAgICAgYmxvY2soXG4gICAgICAgICAgICBsb29wKG4sIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBORVhUICsgJ1snICsgaSArICddJ1xuICAgICAgICAgICAgfSksICcpOycsXG4gICAgICAgICAgICBsb29wKG4sIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBDVVJSRU5UICsgJ1snICsgaSArICddPScgKyBORVhUICsgJ1snICsgaSArICddOydcbiAgICAgICAgICAgIH0pLmpvaW4oJycpKVxuICAgICAgICAgIHBvbGwoXG4gICAgICAgICAgICAnaWYoJywgbG9vcChuLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICByZXR1cm4gTkVYVCArICdbJyArIGkgKyAnXSE9PScgKyBDVVJSRU5UICsgJ1snICsgaSArICddJ1xuICAgICAgICAgICAgfSkuam9pbignfHwnKSwgJyl7JyxcbiAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgJ30nKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE5FWFQgPSBjb21tb24uZGVmKE5FWFRfU1RBVEUsICcuJywgbmFtZSlcbiAgICAgICAgICBDVVJSRU5UID0gY29tbW9uLmRlZihDVVJSRU5UX1NUQVRFLCAnLicsIG5hbWUpXG4gICAgICAgICAgYmxvY2soXG4gICAgICAgICAgICBORVhULCAnKTsnLFxuICAgICAgICAgICAgQ1VSUkVOVF9TVEFURSwgJy4nLCBuYW1lLCAnPScsIE5FWFQsICc7JylcbiAgICAgICAgICBwb2xsKFxuICAgICAgICAgICAgJ2lmKCcsIE5FWFQsICchPT0nLCBDVVJSRU5ULCAnKXsnLFxuICAgICAgICAgICAgYmxvY2ssXG4gICAgICAgICAgICAnfScpXG4gICAgICAgIH1cbiAgICAgICAgcmVmcmVzaChibG9jaylcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBlbnYuY29tcGlsZSgpXG4gICAgfSkoKSxcbiAgICBjb21waWxlOiBjb21waWxlQ29tbWFuZFxuICB9XG59XG5cbmZ1bmN0aW9uIHN0YXRzICgpIHtcbiAgcmV0dXJuIHtcbiAgICB2YW9Db3VudDogMCxcbiAgICBidWZmZXJDb3VudDogMCxcbiAgICBlbGVtZW50c0NvdW50OiAwLFxuICAgIGZyYW1lYnVmZmVyQ291bnQ6IDAsXG4gICAgc2hhZGVyQ291bnQ6IDAsXG4gICAgdGV4dHVyZUNvdW50OiAwLFxuICAgIGN1YmVDb3VudDogMCxcbiAgICByZW5kZXJidWZmZXJDb3VudDogMCxcbiAgICBtYXhUZXh0dXJlVW5pdHM6IDBcbiAgfVxufVxuXG52YXIgR0xfUVVFUllfUkVTVUxUX0VYVCA9IDB4ODg2NlxudmFyIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUID0gMHg4ODY3XG52YXIgR0xfVElNRV9FTEFQU0VEX0VYVCA9IDB4ODhCRlxuXG52YXIgY3JlYXRlVGltZXIgPSBmdW5jdGlvbiAoZ2wsIGV4dGVuc2lvbnMpIHtcbiAgaWYgKCFleHRlbnNpb25zLmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBRVUVSWSBQT09MIEJFR0lOXG4gIHZhciBxdWVyeVBvb2wgPSBbXVxuICBmdW5jdGlvbiBhbGxvY1F1ZXJ5ICgpIHtcbiAgICByZXR1cm4gcXVlcnlQb29sLnBvcCgpIHx8IGV4dGVuc2lvbnMuZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmNyZWF0ZVF1ZXJ5RVhUKClcbiAgfVxuICBmdW5jdGlvbiBmcmVlUXVlcnkgKHF1ZXJ5KSB7XG4gICAgcXVlcnlQb29sLnB1c2gocXVlcnkpXG4gIH1cbiAgLy8gUVVFUlkgUE9PTCBFTkRcblxuICB2YXIgcGVuZGluZ1F1ZXJpZXMgPSBbXVxuICBmdW5jdGlvbiBiZWdpblF1ZXJ5IChzdGF0cykge1xuICAgIHZhciBxdWVyeSA9IGFsbG9jUXVlcnkoKVxuICAgIGV4dGVuc2lvbnMuZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpXG4gICAgcGVuZGluZ1F1ZXJpZXMucHVzaChxdWVyeSlcbiAgICBwdXNoU2NvcGVTdGF0cyhwZW5kaW5nUXVlcmllcy5sZW5ndGggLSAxLCBwZW5kaW5nUXVlcmllcy5sZW5ndGgsIHN0YXRzKVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kUXVlcnkgKCkge1xuICAgIGV4dGVuc2lvbnMuZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpXG4gIH1cblxuICAvL1xuICAvLyBQZW5kaW5nIHN0YXRzIHBvb2wuXG4gIC8vXG4gIGZ1bmN0aW9uIFBlbmRpbmdTdGF0cyAoKSB7XG4gICAgdGhpcy5zdGFydFF1ZXJ5SW5kZXggPSAtMVxuICAgIHRoaXMuZW5kUXVlcnlJbmRleCA9IC0xXG4gICAgdGhpcy5zdW0gPSAwXG4gICAgdGhpcy5zdGF0cyA9IG51bGxcbiAgfVxuICB2YXIgcGVuZGluZ1N0YXRzUG9vbCA9IFtdXG4gIGZ1bmN0aW9uIGFsbG9jUGVuZGluZ1N0YXRzICgpIHtcbiAgICByZXR1cm4gcGVuZGluZ1N0YXRzUG9vbC5wb3AoKSB8fCBuZXcgUGVuZGluZ1N0YXRzKClcbiAgfVxuICBmdW5jdGlvbiBmcmVlUGVuZGluZ1N0YXRzIChwZW5kaW5nU3RhdHMpIHtcbiAgICBwZW5kaW5nU3RhdHNQb29sLnB1c2gocGVuZGluZ1N0YXRzKVxuICB9XG4gIC8vIFBlbmRpbmcgc3RhdHMgcG9vbCBlbmRcblxuICB2YXIgcGVuZGluZ1N0YXRzID0gW11cbiAgZnVuY3Rpb24gcHVzaFNjb3BlU3RhdHMgKHN0YXJ0LCBlbmQsIHN0YXRzKSB7XG4gICAgdmFyIHBzID0gYWxsb2NQZW5kaW5nU3RhdHMoKVxuICAgIHBzLnN0YXJ0UXVlcnlJbmRleCA9IHN0YXJ0XG4gICAgcHMuZW5kUXVlcnlJbmRleCA9IGVuZFxuICAgIHBzLnN1bSA9IDBcbiAgICBwcy5zdGF0cyA9IHN0YXRzXG4gICAgcGVuZGluZ1N0YXRzLnB1c2gocHMpXG4gIH1cblxuICAvLyB3ZSBzaG91bGQgY2FsbCB0aGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZyYW1lLFxuICAvLyBpbiBvcmRlciB0byB1cGRhdGUgZ3B1VGltZVxuICB2YXIgdGltZVN1bSA9IFtdXG4gIHZhciBxdWVyeVB0ciA9IFtdXG4gIGZ1bmN0aW9uIHVwZGF0ZSAoKSB7XG4gICAgdmFyIHB0ciwgaVxuXG4gICAgdmFyIG4gPSBwZW5kaW5nUXVlcmllcy5sZW5ndGhcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gUmVzZXJ2ZSBzcGFjZVxuICAgIHF1ZXJ5UHRyLmxlbmd0aCA9IE1hdGgubWF4KHF1ZXJ5UHRyLmxlbmd0aCwgbiArIDEpXG4gICAgdGltZVN1bS5sZW5ndGggPSBNYXRoLm1heCh0aW1lU3VtLmxlbmd0aCwgbiArIDEpXG4gICAgdGltZVN1bVswXSA9IDBcbiAgICBxdWVyeVB0clswXSA9IDBcblxuICAgIC8vIFVwZGF0ZSBhbGwgcGVuZGluZyB0aW1lciBxdWVyaWVzXG4gICAgdmFyIHF1ZXJ5VGltZSA9IDBcbiAgICBwdHIgPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IHBlbmRpbmdRdWVyaWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgcXVlcnkgPSBwZW5kaW5nUXVlcmllc1tpXVxuICAgICAgaWYgKGV4dGVuc2lvbnMuZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmdldFF1ZXJ5T2JqZWN0RVhUKHF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCkpIHtcbiAgICAgICAgcXVlcnlUaW1lICs9IGV4dGVuc2lvbnMuZXh0X2Rpc2pvaW50X3RpbWVyX3F1ZXJ5LmdldFF1ZXJ5T2JqZWN0RVhUKHF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhUKVxuICAgICAgICBmcmVlUXVlcnkocXVlcnkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZW5kaW5nUXVlcmllc1twdHIrK10gPSBxdWVyeVxuICAgICAgfVxuICAgICAgdGltZVN1bVtpICsgMV0gPSBxdWVyeVRpbWVcbiAgICAgIHF1ZXJ5UHRyW2kgKyAxXSA9IHB0clxuICAgIH1cbiAgICBwZW5kaW5nUXVlcmllcy5sZW5ndGggPSBwdHJcblxuICAgIC8vIFVwZGF0ZSBhbGwgcGVuZGluZyBzdGF0IHF1ZXJpZXNcbiAgICBwdHIgPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IHBlbmRpbmdTdGF0cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHN0YXRzID0gcGVuZGluZ1N0YXRzW2ldXG4gICAgICB2YXIgc3RhcnQgPSBzdGF0cy5zdGFydFF1ZXJ5SW5kZXhcbiAgICAgIHZhciBlbmQgPSBzdGF0cy5lbmRRdWVyeUluZGV4XG4gICAgICBzdGF0cy5zdW0gKz0gdGltZVN1bVtlbmRdIC0gdGltZVN1bVtzdGFydF1cbiAgICAgIHZhciBzdGFydFB0ciA9IHF1ZXJ5UHRyW3N0YXJ0XVxuICAgICAgdmFyIGVuZFB0ciA9IHF1ZXJ5UHRyW2VuZF1cbiAgICAgIGlmIChlbmRQdHIgPT09IHN0YXJ0UHRyKSB7XG4gICAgICAgIHN0YXRzLnN0YXRzLmdwdVRpbWUgKz0gc3RhdHMuc3VtIC8gMWU2XG4gICAgICAgIGZyZWVQZW5kaW5nU3RhdHMoc3RhdHMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0cy5zdGFydFF1ZXJ5SW5kZXggPSBzdGFydFB0clxuICAgICAgICBzdGF0cy5lbmRRdWVyeUluZGV4ID0gZW5kUHRyXG4gICAgICAgIHBlbmRpbmdTdGF0c1twdHIrK10gPSBzdGF0c1xuICAgICAgfVxuICAgIH1cbiAgICBwZW5kaW5nU3RhdHMubGVuZ3RoID0gcHRyXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJlZ2luUXVlcnk6IGJlZ2luUXVlcnksXG4gICAgZW5kUXVlcnk6IGVuZFF1ZXJ5LFxuICAgIHB1c2hTY29wZVN0YXRzOiBwdXNoU2NvcGVTdGF0cyxcbiAgICB1cGRhdGU6IHVwZGF0ZSxcbiAgICBnZXROdW1QZW5kaW5nUXVlcmllczogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBlbmRpbmdRdWVyaWVzLmxlbmd0aFxuICAgIH0sXG4gICAgY2xlYXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHF1ZXJ5UG9vbC5wdXNoLmFwcGx5KHF1ZXJ5UG9vbCwgcGVuZGluZ1F1ZXJpZXMpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UG9vbC5sZW5ndGg7IGkrKykge1xuICAgICAgICBleHRlbnNpb25zLmV4dF9kaXNqb2ludF90aW1lcl9xdWVyeS5kZWxldGVRdWVyeUVYVChxdWVyeVBvb2xbaV0pXG4gICAgICB9XG4gICAgICBwZW5kaW5nUXVlcmllcy5sZW5ndGggPSAwXG4gICAgICBxdWVyeVBvb2wubGVuZ3RoID0gMFxuICAgIH0sXG4gICAgcmVzdG9yZTogZnVuY3Rpb24gKCkge1xuICAgICAgcGVuZGluZ1F1ZXJpZXMubGVuZ3RoID0gMFxuICAgICAgcXVlcnlQb29sLmxlbmd0aCA9IDBcbiAgICB9XG4gIH1cbn1cblxudmFyIEdMX0NPTE9SX0JVRkZFUl9CSVQgPSAxNjM4NFxudmFyIEdMX0RFUFRIX0JVRkZFUl9CSVQgPSAyNTZcbnZhciBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQgPSAxMDI0XG5cbnZhciBHTF9BUlJBWV9CVUZGRVIgPSAzNDk2MlxuXG52YXIgQ09OVEVYVF9MT1NUX0VWRU5UID0gJ3dlYmdsY29udGV4dGxvc3QnXG52YXIgQ09OVEVYVF9SRVNUT1JFRF9FVkVOVCA9ICd3ZWJnbGNvbnRleHRyZXN0b3JlZCdcblxudmFyIERZTl9QUk9QID0gMVxudmFyIERZTl9DT05URVhUID0gMlxudmFyIERZTl9TVEFURSA9IDNcblxuZnVuY3Rpb24gZmluZCAoaGF5c3RhY2ssIG5lZWRsZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhheXN0YWNrLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGhheXN0YWNrW2ldID09PSBuZWVkbGUpIHtcbiAgICAgIHJldHVybiBpXG4gICAgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG5mdW5jdGlvbiB3cmFwUkVHTCAoYXJncykge1xuICB2YXIgY29uZmlnID0gcGFyc2VBcmdzKGFyZ3MpXG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHZhciBnbCA9IGNvbmZpZy5nbFxuICB2YXIgZ2xBdHRyaWJ1dGVzID0gZ2wuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKVxuICB2YXIgY29udGV4dExvc3QgPSBnbC5pc0NvbnRleHRMb3N0KClcblxuICB2YXIgZXh0ZW5zaW9uU3RhdGUgPSBjcmVhdGVFeHRlbnNpb25DYWNoZShnbCwgY29uZmlnKVxuICBpZiAoIWV4dGVuc2lvblN0YXRlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHZhciBzdHJpbmdTdG9yZSA9IGNyZWF0ZVN0cmluZ1N0b3JlKClcbiAgdmFyIHN0YXRzJCQxID0gc3RhdHMoKVxuICB2YXIgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvblN0YXRlLmV4dGVuc2lvbnNcbiAgdmFyIHRpbWVyID0gY3JlYXRlVGltZXIoZ2wsIGV4dGVuc2lvbnMpXG5cbiAgdmFyIFNUQVJUX1RJTUUgPSBjbG9jaygpXG4gIHZhciBXSURUSCA9IGdsLmRyYXdpbmdCdWZmZXJXaWR0aFxuICB2YXIgSEVJR0hUID0gZ2wuZHJhd2luZ0J1ZmZlckhlaWdodFxuXG4gIHZhciBjb250ZXh0U3RhdGUgPSB7XG4gICAgdGljazogMCxcbiAgICB0aW1lOiAwLFxuICAgIHZpZXdwb3J0V2lkdGg6IFdJRFRILFxuICAgIHZpZXdwb3J0SGVpZ2h0OiBIRUlHSFQsXG4gICAgZnJhbWVidWZmZXJXaWR0aDogV0lEVEgsXG4gICAgZnJhbWVidWZmZXJIZWlnaHQ6IEhFSUdIVCxcbiAgICBkcmF3aW5nQnVmZmVyV2lkdGg6IFdJRFRILFxuICAgIGRyYXdpbmdCdWZmZXJIZWlnaHQ6IEhFSUdIVCxcbiAgICBwaXhlbFJhdGlvOiBjb25maWcucGl4ZWxSYXRpb1xuICB9XG4gIHZhciB1bmlmb3JtU3RhdGUgPSB7fVxuICB2YXIgZHJhd1N0YXRlID0ge1xuICAgIGVsZW1lbnRzOiBudWxsLFxuICAgIHByaW1pdGl2ZTogNCwgLy8gR0xfVFJJQU5HTEVTXG4gICAgY291bnQ6IC0xLFxuICAgIG9mZnNldDogMCxcbiAgICBpbnN0YW5jZXM6IC0xXG4gIH1cblxuICB2YXIgbGltaXRzID0gd3JhcExpbWl0cyhnbCwgZXh0ZW5zaW9ucylcbiAgdmFyIGJ1ZmZlclN0YXRlID0gd3JhcEJ1ZmZlclN0YXRlKFxuICAgIGdsLFxuICAgIHN0YXRzJCQxLFxuICAgIGNvbmZpZyxcbiAgICBkZXN0cm95QnVmZmVyKVxuICB2YXIgYXR0cmlidXRlU3RhdGUgPSB3cmFwQXR0cmlidXRlU3RhdGUoXG4gICAgZ2wsXG4gICAgZXh0ZW5zaW9ucyxcbiAgICBsaW1pdHMsXG4gICAgc3RhdHMkJDEsXG4gICAgYnVmZmVyU3RhdGUpXG4gIGZ1bmN0aW9uIGRlc3Ryb3lCdWZmZXIgKGJ1ZmZlcikge1xuICAgIHJldHVybiBhdHRyaWJ1dGVTdGF0ZS5kZXN0cm95QnVmZmVyKGJ1ZmZlcilcbiAgfVxuICB2YXIgZWxlbWVudFN0YXRlID0gd3JhcEVsZW1lbnRzU3RhdGUoZ2wsIGV4dGVuc2lvbnMsIGJ1ZmZlclN0YXRlLCBzdGF0cyQkMSlcbiAgdmFyIHNoYWRlclN0YXRlID0gd3JhcFNoYWRlclN0YXRlKGdsLCBzdHJpbmdTdG9yZSwgc3RhdHMkJDEsIGNvbmZpZylcbiAgdmFyIHRleHR1cmVTdGF0ZSA9IGNyZWF0ZVRleHR1cmVTZXQoXG4gICAgZ2wsXG4gICAgZXh0ZW5zaW9ucyxcbiAgICBsaW1pdHMsXG4gICAgZnVuY3Rpb24gKCkgeyBjb3JlLnByb2NzLnBvbGwoKSB9LFxuICAgIGNvbnRleHRTdGF0ZSxcbiAgICBzdGF0cyQkMSxcbiAgICBjb25maWcpXG4gIHZhciByZW5kZXJidWZmZXJTdGF0ZSA9IHdyYXBSZW5kZXJidWZmZXJzKGdsLCBleHRlbnNpb25zLCBsaW1pdHMsIHN0YXRzJCQxLCBjb25maWcpXG4gIHZhciBmcmFtZWJ1ZmZlclN0YXRlID0gd3JhcEZCT1N0YXRlKFxuICAgIGdsLFxuICAgIGV4dGVuc2lvbnMsXG4gICAgbGltaXRzLFxuICAgIHRleHR1cmVTdGF0ZSxcbiAgICByZW5kZXJidWZmZXJTdGF0ZSxcbiAgICBzdGF0cyQkMSlcbiAgdmFyIGNvcmUgPSByZWdsQ29yZShcbiAgICBnbCxcbiAgICBzdHJpbmdTdG9yZSxcbiAgICBleHRlbnNpb25zLFxuICAgIGxpbWl0cyxcbiAgICBidWZmZXJTdGF0ZSxcbiAgICBlbGVtZW50U3RhdGUsXG4gICAgdGV4dHVyZVN0YXRlLFxuICAgIGZyYW1lYnVmZmVyU3RhdGUsXG4gICAgdW5pZm9ybVN0YXRlLFxuICAgIGF0dHJpYnV0ZVN0YXRlLFxuICAgIHNoYWRlclN0YXRlLFxuICAgIGRyYXdTdGF0ZSxcbiAgICBjb250ZXh0U3RhdGUsXG4gICAgdGltZXIsXG4gICAgY29uZmlnKVxuICB2YXIgcmVhZFBpeGVscyA9IHdyYXBSZWFkUGl4ZWxzKFxuICAgIGdsLFxuICAgIGZyYW1lYnVmZmVyU3RhdGUsXG4gICAgY29yZS5wcm9jcy5wb2xsLFxuICAgIGNvbnRleHRTdGF0ZSxcbiAgICBnbEF0dHJpYnV0ZXMsIGV4dGVuc2lvbnMsIGxpbWl0cylcblxuICB2YXIgbmV4dFN0YXRlID0gY29yZS5uZXh0XG4gIHZhciBjYW52YXMgPSBnbC5jYW52YXNcblxuICB2YXIgcmFmQ2FsbGJhY2tzID0gW11cbiAgdmFyIGxvc3NDYWxsYmFja3MgPSBbXVxuICB2YXIgcmVzdG9yZUNhbGxiYWNrcyA9IFtdXG4gIHZhciBkZXN0cm95Q2FsbGJhY2tzID0gW2NvbmZpZy5vbkRlc3Ryb3ldXG5cbiAgdmFyIGFjdGl2ZVJBRiA9IG51bGxcbiAgZnVuY3Rpb24gaGFuZGxlUkFGICgpIHtcbiAgICBpZiAocmFmQ2FsbGJhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIHRpbWVyLnVwZGF0ZSgpXG4gICAgICB9XG4gICAgICBhY3RpdmVSQUYgPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBzY2hlZHVsZSBuZXh0IGFuaW1hdGlvbiBmcmFtZVxuICAgIGFjdGl2ZVJBRiA9IHJhZi5uZXh0KGhhbmRsZVJBRilcblxuICAgIC8vIHBvbGwgZm9yIGNoYW5nZXNcbiAgICBwb2xsKClcblxuICAgIC8vIGZpcmUgYSBjYWxsYmFjayBmb3IgYWxsIHBlbmRpbmcgcmFmc1xuICAgIGZvciAodmFyIGkgPSByYWZDYWxsYmFja3MubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHZhciBjYiA9IHJhZkNhbGxiYWNrc1tpXVxuICAgICAgaWYgKGNiKSB7XG4gICAgICAgIGNiKGNvbnRleHRTdGF0ZSwgbnVsbCwgMClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmbHVzaCBhbGwgcGVuZGluZyB3ZWJnbCBjYWxsc1xuICAgIGdsLmZsdXNoKClcblxuICAgIC8vIHBvbGwgR1BVIHRpbWVycyAqYWZ0ZXIqIGdsLmZsdXNoIHNvIHdlIGRvbid0IGRlbGF5IGNvbW1hbmQgZGlzcGF0Y2hcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIHRpbWVyLnVwZGF0ZSgpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnRSQUYgKCkge1xuICAgIGlmICghYWN0aXZlUkFGICYmIHJhZkNhbGxiYWNrcy5sZW5ndGggPiAwKSB7XG4gICAgICBhY3RpdmVSQUYgPSByYWYubmV4dChoYW5kbGVSQUYpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RvcFJBRiAoKSB7XG4gICAgaWYgKGFjdGl2ZVJBRikge1xuICAgICAgcmFmLmNhbmNlbChoYW5kbGVSQUYpXG4gICAgICBhY3RpdmVSQUYgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ29udGV4dExvc3MgKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgLy8gc2V0IGNvbnRleHQgbG9zdCBmbGFnXG4gICAgY29udGV4dExvc3QgPSB0cnVlXG5cbiAgICAvLyBwYXVzZSByZXF1ZXN0IGFuaW1hdGlvbiBmcmFtZVxuICAgIHN0b3BSQUYoKVxuXG4gICAgLy8gbG9zZSBjb250ZXh0XG4gICAgbG9zc0NhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgY2IoKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDb250ZXh0UmVzdG9yZWQgKGV2ZW50KSB7XG4gICAgLy8gY2xlYXIgZXJyb3IgY29kZVxuICAgIGdsLmdldEVycm9yKClcblxuICAgIC8vIGNsZWFyIGNvbnRleHQgbG9zdCBmbGFnXG4gICAgY29udGV4dExvc3QgPSBmYWxzZVxuXG4gICAgLy8gcmVmcmVzaCBzdGF0ZVxuICAgIGV4dGVuc2lvblN0YXRlLnJlc3RvcmUoKVxuICAgIHNoYWRlclN0YXRlLnJlc3RvcmUoKVxuICAgIGJ1ZmZlclN0YXRlLnJlc3RvcmUoKVxuICAgIHRleHR1cmVTdGF0ZS5yZXN0b3JlKClcbiAgICByZW5kZXJidWZmZXJTdGF0ZS5yZXN0b3JlKClcbiAgICBmcmFtZWJ1ZmZlclN0YXRlLnJlc3RvcmUoKVxuICAgIGF0dHJpYnV0ZVN0YXRlLnJlc3RvcmUoKVxuICAgIGlmICh0aW1lcikge1xuICAgICAgdGltZXIucmVzdG9yZSgpXG4gICAgfVxuXG4gICAgLy8gcmVmcmVzaCBzdGF0ZVxuICAgIGNvcmUucHJvY3MucmVmcmVzaCgpXG5cbiAgICAvLyByZXN0YXJ0IFJBRlxuICAgIHN0YXJ0UkFGKClcblxuICAgIC8vIHJlc3RvcmUgY29udGV4dFxuICAgIHJlc3RvcmVDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHtcbiAgICAgIGNiKClcbiAgICB9KVxuICB9XG5cbiAgaWYgKGNhbnZhcykge1xuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKENPTlRFWFRfTE9TVF9FVkVOVCwgaGFuZGxlQ29udGV4dExvc3MsIGZhbHNlKVxuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKENPTlRFWFRfUkVTVE9SRURfRVZFTlQsIGhhbmRsZUNvbnRleHRSZXN0b3JlZCwgZmFsc2UpXG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95ICgpIHtcbiAgICByYWZDYWxsYmFja3MubGVuZ3RoID0gMFxuICAgIHN0b3BSQUYoKVxuXG4gICAgaWYgKGNhbnZhcykge1xuICAgICAgY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoQ09OVEVYVF9MT1NUX0VWRU5ULCBoYW5kbGVDb250ZXh0TG9zcylcbiAgICAgIGNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKENPTlRFWFRfUkVTVE9SRURfRVZFTlQsIGhhbmRsZUNvbnRleHRSZXN0b3JlZClcbiAgICB9XG5cbiAgICBzaGFkZXJTdGF0ZS5jbGVhcigpXG4gICAgZnJhbWVidWZmZXJTdGF0ZS5jbGVhcigpXG4gICAgcmVuZGVyYnVmZmVyU3RhdGUuY2xlYXIoKVxuICAgIHRleHR1cmVTdGF0ZS5jbGVhcigpXG4gICAgZWxlbWVudFN0YXRlLmNsZWFyKClcbiAgICBidWZmZXJTdGF0ZS5jbGVhcigpXG4gICAgYXR0cmlidXRlU3RhdGUuY2xlYXIoKVxuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICB0aW1lci5jbGVhcigpXG4gICAgfVxuXG4gICAgZGVzdHJveUNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgY2IoKVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjb21waWxlUHJvY2VkdXJlIChvcHRpb25zKSB7XG4gICAgY2hlY2skMSghIW9wdGlvbnMsICdpbnZhbGlkIGFyZ3MgdG8gcmVnbCh7Li4ufSknKVxuICAgIGNoZWNrJDEudHlwZShvcHRpb25zLCAnb2JqZWN0JywgJ2ludmFsaWQgYXJncyB0byByZWdsKHsuLi59KScpXG5cbiAgICBmdW5jdGlvbiBmbGF0dGVuTmVzdGVkT3B0aW9ucyAob3B0aW9ucykge1xuICAgICAgdmFyIHJlc3VsdCA9IGV4dGVuZCh7fSwgb3B0aW9ucylcbiAgICAgIGRlbGV0ZSByZXN1bHQudW5pZm9ybXNcbiAgICAgIGRlbGV0ZSByZXN1bHQuYXR0cmlidXRlc1xuICAgICAgZGVsZXRlIHJlc3VsdC5jb250ZXh0XG4gICAgICBkZWxldGUgcmVzdWx0LnZhb1xuXG4gICAgICBpZiAoJ3N0ZW5jaWwnIGluIHJlc3VsdCAmJiByZXN1bHQuc3RlbmNpbC5vcCkge1xuICAgICAgICByZXN1bHQuc3RlbmNpbC5vcEJhY2sgPSByZXN1bHQuc3RlbmNpbC5vcEZyb250ID0gcmVzdWx0LnN0ZW5jaWwub3BcbiAgICAgICAgZGVsZXRlIHJlc3VsdC5zdGVuY2lsLm9wXG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIG1lcmdlIChuYW1lKSB7XG4gICAgICAgIGlmIChuYW1lIGluIHJlc3VsdCkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IHJlc3VsdFtuYW1lXVxuICAgICAgICAgIGRlbGV0ZSByZXN1bHRbbmFtZV1cbiAgICAgICAgICBPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgICAgcmVzdWx0W25hbWUgKyAnLicgKyBwcm9wXSA9IGNoaWxkW3Byb3BdXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWVyZ2UoJ2JsZW5kJylcbiAgICAgIG1lcmdlKCdkZXB0aCcpXG4gICAgICBtZXJnZSgnY3VsbCcpXG4gICAgICBtZXJnZSgnc3RlbmNpbCcpXG4gICAgICBtZXJnZSgncG9seWdvbk9mZnNldCcpXG4gICAgICBtZXJnZSgnc2Npc3NvcicpXG4gICAgICBtZXJnZSgnc2FtcGxlJylcblxuICAgICAgaWYgKCd2YW8nIGluIG9wdGlvbnMpIHtcbiAgICAgICAgcmVzdWx0LnZhbyA9IG9wdGlvbnMudmFvXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXBhcmF0ZUR5bmFtaWMgKG9iamVjdCwgdXNlQXJyYXlzKSB7XG4gICAgICB2YXIgc3RhdGljSXRlbXMgPSB7fVxuICAgICAgdmFyIGR5bmFtaWNJdGVtcyA9IHt9XG4gICAgICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rbb3B0aW9uXVxuICAgICAgICBpZiAoZHluYW1pYy5pc0R5bmFtaWModmFsdWUpKSB7XG4gICAgICAgICAgZHluYW1pY0l0ZW1zW29wdGlvbl0gPSBkeW5hbWljLnVuYm94KHZhbHVlLCBvcHRpb24pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gZWxzZSBpZiAodXNlQXJyYXlzICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKGR5bmFtaWMuaXNEeW5hbWljKHZhbHVlW2ldKSkge1xuICAgICAgICAgICAgICBkeW5hbWljSXRlbXNbb3B0aW9uXSA9IGR5bmFtaWMudW5ib3godmFsdWUsIG9wdGlvbilcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRpY0l0ZW1zW29wdGlvbl0gPSB2YWx1ZVxuICAgICAgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGR5bmFtaWM6IGR5bmFtaWNJdGVtcyxcbiAgICAgICAgc3RhdGljOiBzdGF0aWNJdGVtc1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyZWF0IGNvbnRleHQgdmFyaWFibGVzIHNlcGFyYXRlIGZyb20gb3RoZXIgZHluYW1pYyB2YXJpYWJsZXNcbiAgICB2YXIgY29udGV4dCA9IHNlcGFyYXRlRHluYW1pYyhvcHRpb25zLmNvbnRleHQgfHwge30sIHRydWUpXG4gICAgdmFyIHVuaWZvcm1zID0gc2VwYXJhdGVEeW5hbWljKG9wdGlvbnMudW5pZm9ybXMgfHwge30sIHRydWUpXG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBzZXBhcmF0ZUR5bmFtaWMob3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9LCBmYWxzZSlcbiAgICB2YXIgb3B0cyA9IHNlcGFyYXRlRHluYW1pYyhmbGF0dGVuTmVzdGVkT3B0aW9ucyhvcHRpb25zKSwgZmFsc2UpXG5cbiAgICB2YXIgc3RhdHMkJDEgPSB7XG4gICAgICBncHVUaW1lOiAwLjAsXG4gICAgICBjcHVUaW1lOiAwLjAsXG4gICAgICBjb3VudDogMFxuICAgIH1cblxuICAgIHZhciBjb21waWxlZCA9IGNvcmUuY29tcGlsZShvcHRzLCBhdHRyaWJ1dGVzLCB1bmlmb3JtcywgY29udGV4dCwgc3RhdHMkJDEpXG5cbiAgICB2YXIgZHJhdyA9IGNvbXBpbGVkLmRyYXdcbiAgICB2YXIgYmF0Y2ggPSBjb21waWxlZC5iYXRjaFxuICAgIHZhciBzY29wZSA9IGNvbXBpbGVkLnNjb3BlXG5cbiAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIG1vZGlmeSBjb2RlIGdlbmVyYXRpb24gZm9yIGJhdGNoIGNvbW1hbmRzIHNvIHRoaXNcbiAgICAvLyBpc24ndCBuZWNlc3NhcnlcbiAgICB2YXIgRU1QVFlfQVJSQVkgPSBbXVxuICAgIGZ1bmN0aW9uIHJlc2VydmUgKGNvdW50KSB7XG4gICAgICB3aGlsZSAoRU1QVFlfQVJSQVkubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgICAgRU1QVFlfQVJSQVkucHVzaChudWxsKVxuICAgICAgfVxuICAgICAgcmV0dXJuIEVNUFRZX0FSUkFZXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gUkVHTENvbW1hbmQgKGFyZ3MsIGJvZHkpIHtcbiAgICAgIHZhciBpXG4gICAgICBpZiAoY29udGV4dExvc3QpIHtcbiAgICAgICAgY2hlY2skMS5yYWlzZSgnY29udGV4dCBsb3N0JylcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gc2NvcGUuY2FsbCh0aGlzLCBudWxsLCBhcmdzLCAwKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ3M7ICsraSkge1xuICAgICAgICAgICAgc2NvcGUuY2FsbCh0aGlzLCBudWxsLCBib2R5LCBpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIHNjb3BlLmNhbGwodGhpcywgYXJnc1tpXSwgYm9keSwgaSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHNjb3BlLmNhbGwodGhpcywgYXJncywgYm9keSwgMClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJncyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGFyZ3MgPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJhdGNoLmNhbGwodGhpcywgcmVzZXJ2ZShhcmdzIHwgMCksIGFyZ3MgfCAwKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJncykpIHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGJhdGNoLmNhbGwodGhpcywgYXJncywgYXJncy5sZW5ndGgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkcmF3LmNhbGwodGhpcywgYXJncylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXh0ZW5kKFJFR0xDb21tYW5kLCB7XG4gICAgICBzdGF0czogc3RhdHMkJDEsXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbXBpbGVkLmRlc3Ryb3koKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICB2YXIgc2V0RkJPID0gZnJhbWVidWZmZXJTdGF0ZS5zZXRGQk8gPSBjb21waWxlUHJvY2VkdXJlKHtcbiAgICBmcmFtZWJ1ZmZlcjogZHluYW1pYy5kZWZpbmUuY2FsbChudWxsLCBEWU5fUFJPUCwgJ2ZyYW1lYnVmZmVyJylcbiAgfSlcblxuICBmdW5jdGlvbiBjbGVhckltcGwgKF8sIG9wdGlvbnMpIHtcbiAgICB2YXIgY2xlYXJGbGFncyA9IDBcbiAgICBjb3JlLnByb2NzLnBvbGwoKVxuXG4gICAgdmFyIGMgPSBvcHRpb25zLmNvbG9yXG4gICAgaWYgKGMpIHtcbiAgICAgIGdsLmNsZWFyQ29sb3IoK2NbMF0gfHwgMCwgK2NbMV0gfHwgMCwgK2NbMl0gfHwgMCwgK2NbM10gfHwgMClcbiAgICAgIGNsZWFyRmxhZ3MgfD0gR0xfQ09MT1JfQlVGRkVSX0JJVFxuICAgIH1cbiAgICBpZiAoJ2RlcHRoJyBpbiBvcHRpb25zKSB7XG4gICAgICBnbC5jbGVhckRlcHRoKCtvcHRpb25zLmRlcHRoKVxuICAgICAgY2xlYXJGbGFncyB8PSBHTF9ERVBUSF9CVUZGRVJfQklUXG4gICAgfVxuICAgIGlmICgnc3RlbmNpbCcgaW4gb3B0aW9ucykge1xuICAgICAgZ2wuY2xlYXJTdGVuY2lsKG9wdGlvbnMuc3RlbmNpbCB8IDApXG4gICAgICBjbGVhckZsYWdzIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVFxuICAgIH1cblxuICAgIGNoZWNrJDEoISFjbGVhckZsYWdzLCAnY2FsbGVkIHJlZ2wuY2xlYXIgd2l0aCBubyBidWZmZXIgc3BlY2lmaWVkJylcbiAgICBnbC5jbGVhcihjbGVhckZsYWdzKVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXIgKG9wdGlvbnMpIHtcbiAgICBjaGVjayQxKFxuICAgICAgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnICYmIG9wdGlvbnMsXG4gICAgICAncmVnbC5jbGVhcigpIHRha2VzIGFuIG9iamVjdCBhcyBpbnB1dCcpXG4gICAgaWYgKCdmcmFtZWJ1ZmZlcicgaW4gb3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMuZnJhbWVidWZmZXIgJiZcbiAgICAgICAgICBvcHRpb25zLmZyYW1lYnVmZmVyX3JlZ2xUeXBlID09PSAnZnJhbWVidWZmZXJDdWJlJykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7ICsraSkge1xuICAgICAgICAgIHNldEZCTyhleHRlbmQoe1xuICAgICAgICAgICAgZnJhbWVidWZmZXI6IG9wdGlvbnMuZnJhbWVidWZmZXIuZmFjZXNbaV1cbiAgICAgICAgICB9LCBvcHRpb25zKSwgY2xlYXJJbXBsKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRGQk8ob3B0aW9ucywgY2xlYXJJbXBsKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjbGVhckltcGwobnVsbCwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBmcmFtZSAoY2IpIHtcbiAgICBjaGVjayQxLnR5cGUoY2IsICdmdW5jdGlvbicsICdyZWdsLmZyYW1lKCkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJylcbiAgICByYWZDYWxsYmFja3MucHVzaChjYilcblxuICAgIGZ1bmN0aW9uIGNhbmNlbCAoKSB7XG4gICAgICAvLyBGSVhNRTogIHNob3VsZCB3ZSBjaGVjayBzb21ldGhpbmcgb3RoZXIgdGhhbiBlcXVhbHMgY2IgaGVyZT9cbiAgICAgIC8vIHdoYXQgaWYgYSB1c2VyIGNhbGxzIGZyYW1lIHR3aWNlIHdpdGggdGhlIHNhbWUgY2FsbGJhY2suLi5cbiAgICAgIC8vXG4gICAgICB2YXIgaSA9IGZpbmQocmFmQ2FsbGJhY2tzLCBjYilcbiAgICAgIGNoZWNrJDEoaSA+PSAwLCAnY2Fubm90IGNhbmNlbCBhIGZyYW1lIHR3aWNlJylcbiAgICAgIGZ1bmN0aW9uIHBlbmRpbmdDYW5jZWwgKCkge1xuICAgICAgICB2YXIgaW5kZXggPSBmaW5kKHJhZkNhbGxiYWNrcywgcGVuZGluZ0NhbmNlbClcbiAgICAgICAgcmFmQ2FsbGJhY2tzW2luZGV4XSA9IHJhZkNhbGxiYWNrc1tyYWZDYWxsYmFja3MubGVuZ3RoIC0gMV1cbiAgICAgICAgcmFmQ2FsbGJhY2tzLmxlbmd0aCAtPSAxXG4gICAgICAgIGlmIChyYWZDYWxsYmFja3MubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICBzdG9wUkFGKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmFmQ2FsbGJhY2tzW2ldID0gcGVuZGluZ0NhbmNlbFxuICAgIH1cblxuICAgIHN0YXJ0UkFGKClcblxuICAgIHJldHVybiB7XG4gICAgICBjYW5jZWw6IGNhbmNlbFxuICAgIH1cbiAgfVxuXG4gIC8vIHBvbGwgdmlld3BvcnRcbiAgZnVuY3Rpb24gcG9sbFZpZXdwb3J0ICgpIHtcbiAgICB2YXIgdmlld3BvcnQgPSBuZXh0U3RhdGUudmlld3BvcnRcbiAgICB2YXIgc2Npc3NvckJveCA9IG5leHRTdGF0ZS5zY2lzc29yX2JveFxuICAgIHZpZXdwb3J0WzBdID0gdmlld3BvcnRbMV0gPSBzY2lzc29yQm94WzBdID0gc2Npc3NvckJveFsxXSA9IDBcbiAgICBjb250ZXh0U3RhdGUudmlld3BvcnRXaWR0aCA9XG4gICAgICBjb250ZXh0U3RhdGUuZnJhbWVidWZmZXJXaWR0aCA9XG4gICAgICBjb250ZXh0U3RhdGUuZHJhd2luZ0J1ZmZlcldpZHRoID1cbiAgICAgIHZpZXdwb3J0WzJdID1cbiAgICAgIHNjaXNzb3JCb3hbMl0gPSBnbC5kcmF3aW5nQnVmZmVyV2lkdGhcbiAgICBjb250ZXh0U3RhdGUudmlld3BvcnRIZWlnaHQgPVxuICAgICAgY29udGV4dFN0YXRlLmZyYW1lYnVmZmVySGVpZ2h0ID1cbiAgICAgIGNvbnRleHRTdGF0ZS5kcmF3aW5nQnVmZmVySGVpZ2h0ID1cbiAgICAgIHZpZXdwb3J0WzNdID1cbiAgICAgIHNjaXNzb3JCb3hbM10gPSBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0XG4gIH1cblxuICBmdW5jdGlvbiBwb2xsICgpIHtcbiAgICBjb250ZXh0U3RhdGUudGljayArPSAxXG4gICAgY29udGV4dFN0YXRlLnRpbWUgPSBub3coKVxuICAgIHBvbGxWaWV3cG9ydCgpXG4gICAgY29yZS5wcm9jcy5wb2xsKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZnJlc2ggKCkge1xuICAgIHRleHR1cmVTdGF0ZS5yZWZyZXNoKClcbiAgICBwb2xsVmlld3BvcnQoKVxuICAgIGNvcmUucHJvY3MucmVmcmVzaCgpXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICB0aW1lci51cGRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG5vdyAoKSB7XG4gICAgcmV0dXJuIChjbG9jaygpIC0gU1RBUlRfVElNRSkgLyAxMDAwLjBcbiAgfVxuXG4gIHJlZnJlc2goKVxuXG4gIGZ1bmN0aW9uIGFkZExpc3RlbmVyIChldmVudCwgY2FsbGJhY2spIHtcbiAgICBjaGVjayQxLnR5cGUoY2FsbGJhY2ssICdmdW5jdGlvbicsICdsaXN0ZW5lciBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuXG4gICAgdmFyIGNhbGxiYWNrc1xuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ2ZyYW1lJzpcbiAgICAgICAgcmV0dXJuIGZyYW1lKGNhbGxiYWNrKVxuICAgICAgY2FzZSAnbG9zdCc6XG4gICAgICAgIGNhbGxiYWNrcyA9IGxvc3NDYWxsYmFja3NcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Jlc3RvcmUnOlxuICAgICAgICBjYWxsYmFja3MgPSByZXN0b3JlQ2FsbGJhY2tzXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdkZXN0cm95JzpcbiAgICAgICAgY2FsbGJhY2tzID0gZGVzdHJveUNhbGxiYWNrc1xuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2hlY2skMS5yYWlzZSgnaW52YWxpZCBldmVudCwgbXVzdCBiZSBvbmUgb2YgZnJhbWUsbG9zdCxyZXN0b3JlLGRlc3Ryb3knKVxuICAgIH1cblxuICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKVxuICAgIHJldHVybiB7XG4gICAgICBjYW5jZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBpZiAoY2FsbGJhY2tzW2ldID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgY2FsbGJhY2tzW2ldID0gY2FsbGJhY2tzW2NhbGxiYWNrcy5sZW5ndGggLSAxXVxuICAgICAgICAgICAgY2FsbGJhY2tzLnBvcCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgcmVnbCA9IGV4dGVuZChjb21waWxlUHJvY2VkdXJlLCB7XG4gICAgLy8gQ2xlYXIgY3VycmVudCBGQk9cbiAgICBjbGVhcjogY2xlYXIsXG5cbiAgICAvLyBTaG9ydCBjdXRzIGZvciBkeW5hbWljIHZhcmlhYmxlc1xuICAgIHByb3A6IGR5bmFtaWMuZGVmaW5lLmJpbmQobnVsbCwgRFlOX1BST1ApLFxuICAgIGNvbnRleHQ6IGR5bmFtaWMuZGVmaW5lLmJpbmQobnVsbCwgRFlOX0NPTlRFWFQpLFxuICAgIHRoaXM6IGR5bmFtaWMuZGVmaW5lLmJpbmQobnVsbCwgRFlOX1NUQVRFKSxcblxuICAgIC8vIGV4ZWN1dGVzIGFuIGVtcHR5IGRyYXcgY29tbWFuZFxuICAgIGRyYXc6IGNvbXBpbGVQcm9jZWR1cmUoe30pLFxuXG4gICAgLy8gUmVzb3VyY2VzXG4gICAgYnVmZmVyOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIGJ1ZmZlclN0YXRlLmNyZWF0ZShvcHRpb25zLCBHTF9BUlJBWV9CVUZGRVIsIGZhbHNlLCBmYWxzZSlcbiAgICB9LFxuICAgIGVsZW1lbnRzOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIGVsZW1lbnRTdGF0ZS5jcmVhdGUob3B0aW9ucywgZmFsc2UpXG4gICAgfSxcbiAgICB0ZXh0dXJlOiB0ZXh0dXJlU3RhdGUuY3JlYXRlMkQsXG4gICAgY3ViZTogdGV4dHVyZVN0YXRlLmNyZWF0ZUN1YmUsXG4gICAgcmVuZGVyYnVmZmVyOiByZW5kZXJidWZmZXJTdGF0ZS5jcmVhdGUsXG4gICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyU3RhdGUuY3JlYXRlLFxuICAgIGZyYW1lYnVmZmVyQ3ViZTogZnJhbWVidWZmZXJTdGF0ZS5jcmVhdGVDdWJlLFxuICAgIHZhbzogYXR0cmlidXRlU3RhdGUuY3JlYXRlVkFPLFxuXG4gICAgLy8gRXhwb3NlIGNvbnRleHQgYXR0cmlidXRlc1xuICAgIGF0dHJpYnV0ZXM6IGdsQXR0cmlidXRlcyxcblxuICAgIC8vIEZyYW1lIHJlbmRlcmluZ1xuICAgIGZyYW1lOiBmcmFtZSxcbiAgICBvbjogYWRkTGlzdGVuZXIsXG5cbiAgICAvLyBTeXN0ZW0gbGltaXRzXG4gICAgbGltaXRzOiBsaW1pdHMsXG4gICAgaGFzRXh0ZW5zaW9uOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIGxpbWl0cy5leHRlbnNpb25zLmluZGV4T2YobmFtZS50b0xvd2VyQ2FzZSgpKSA+PSAwXG4gICAgfSxcblxuICAgIC8vIFJlYWQgcGl4ZWxzXG4gICAgcmVhZDogcmVhZFBpeGVscyxcblxuICAgIC8vIERlc3Ryb3kgcmVnbCBhbmQgYWxsIGFzc29jaWF0ZWQgcmVzb3VyY2VzXG4gICAgZGVzdHJveTogZGVzdHJveSxcblxuICAgIC8vIERpcmVjdCBHTCBzdGF0ZSBtYW5pcHVsYXRpb25cbiAgICBfZ2w6IGdsLFxuICAgIF9yZWZyZXNoOiByZWZyZXNoLFxuXG4gICAgcG9sbDogZnVuY3Rpb24gKCkge1xuICAgICAgcG9sbCgpXG4gICAgICBpZiAodGltZXIpIHtcbiAgICAgICAgdGltZXIudXBkYXRlKClcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gQ3VycmVudCB0aW1lXG4gICAgbm93OiBub3csXG5cbiAgICAvLyByZWdsIFN0YXRpc3RpY3MgSW5mb3JtYXRpb25cbiAgICBzdGF0czogc3RhdHMkJDFcbiAgfSlcblxuICBjb25maWcub25Eb25lKG51bGwsIHJlZ2wpXG5cbiAgcmV0dXJuIHJlZ2xcbn1cblxucmV0dXJuIHdyYXBSRUdMO1xuXG59KSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVnbC5qcy5tYXBcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_regl@1.7.0@regl/dist/regl.js\n"); /***/ }), /***/ "./node_modules/_simple-swizzle@0.2.2@simple-swizzle/index.js": /*!********************************************************************!*\ !*** ./node_modules/_simple-swizzle@0.2.2@simple-swizzle/index.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar isArrayish = __webpack_require__(/*! is-arrayish */ \"./node_modules/_is-arrayish@0.3.2@is-arrayish/index.js\");\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3NpbXBsZS1zd2l6emxlQDAuMi4yQHNpbXBsZS1zd2l6emxlL2luZGV4LmpzPzJjYTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWE7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQ0FBbUMsU0FBUztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fc2ltcGxlLXN3aXp6bGVAMC4yLjJAc2ltcGxlLXN3aXp6bGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5aXNoID0gcmVxdWlyZSgnaXMtYXJyYXlpc2gnKTtcblxudmFyIGNvbmNhdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQ7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbnZhciBzd2l6emxlID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzd2l6emxlKGFyZ3MpIHtcblx0dmFyIHJlc3VsdHMgPSBbXTtcblxuXHRmb3IgKHZhciBpID0gMCwgbGVuID0gYXJncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdHZhciBhcmcgPSBhcmdzW2ldO1xuXG5cdFx0aWYgKGlzQXJyYXlpc2goYXJnKSkge1xuXHRcdFx0Ly8gaHR0cDovL2pzcGVyZi5jb20vamF2YXNjcmlwdC1hcnJheS1jb25jYXQtdnMtcHVzaC85OFxuXHRcdFx0cmVzdWx0cyA9IGNvbmNhdC5jYWxsKHJlc3VsdHMsIHNsaWNlLmNhbGwoYXJnKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdHMucHVzaChhcmcpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuc3dpenpsZS53cmFwID0gZnVuY3Rpb24gKGZuKSB7XG5cdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGZuKHN3aXp6bGUoYXJndW1lbnRzKSk7XG5cdH07XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_simple-swizzle@0.2.2@simple-swizzle/index.js\n"); /***/ }), /***/ "./node_modules/_tinycolor2@1.4.2@tinycolor2/tinycolor.js": /*!****************************************************************!*\ !*** ./node_modules/_tinycolor2@1.4.2@tinycolor2/tinycolor.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { eval("var __WEBPACK_AMD_DEFINE_RESULT__;// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif ( true && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (true) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {return tinycolor;}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n// Browser: Expose to window\nelse {}\n\n})(Math);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3Rpbnljb2xvcjJAMS40LjJAdGlueWNvbG9yMi90aW55Y29sb3IuanM/YWI4MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDhCQUE4QjtBQUNwRCxzQkFBc0IsOEJBQThCO0FBQ3BELHNCQUFzQiw4QkFBOEI7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQixtQkFBbUIsT0FBTztBQUN6RCwrQkFBK0IsbUJBQW1CLE9BQU87QUFDekQsK0JBQStCLG1CQUFtQixPQUFPO0FBQ3pEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGdCQUFnQjtBQUNoQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxnQkFBZ0I7QUFDaEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFVBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4Qzs7QUFFQTtBQUNBOztBQUVBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFVBQVU7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFVBQVU7QUFDekI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGNBQWM7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix5Q0FBeUM7QUFDNUQsbUJBQW1CLHlDQUF5QztBQUM1RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsd0NBQXdDO0FBQzNELG1CQUFtQix5Q0FBeUM7QUFDNUQsbUJBQW1CLHlDQUF5QztBQUM1RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdUNBQXVDO0FBQzFELG1CQUFtQix3Q0FBd0M7QUFDM0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLCtEQUErRCxXQUFXO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLGtCQUFrQjtBQUM5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELHdCQUF3Qjs7QUFFbkY7QUFDQTtBQUNBLDJDQUEyQyx3QkFBd0I7QUFDbkU7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RSw0QkFBNEIsZ0JBQWdCO0FBQzFILDhFQUE4RSwyQkFBMkIsZ0JBQWdCO0FBQ3pILHFEQUFxRCxvREFBb0QsZ0JBQWdCO0FBQ3pILHFEQUFxRCxvREFBb0QsZ0JBQWdCO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsdUJBQXVCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvREFBb0QsMEJBQTBCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLEtBQUssa0JBQWtCLFlBQVksa0JBQWtCO0FBQ3JEO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCLFlBQVk7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRTtBQUNqRSwrQkFBK0IsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO0FBQ2pFLCtCQUErQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO0FBQ2pGLCtCQUErQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO0FBQ2pGO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QyxVQUFVLE9BQU8sVUFBVSxPQUFPLFNBQVM7QUFDbkY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0EsSUFBSSxLQUE2QjtBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQTBDO0FBQ25ELElBQUksbUNBQU8sYUFBYSxrQkFBa0I7QUFBQSxvR0FBQztBQUMzQztBQUNBO0FBQ0EsS0FBSyxFQUVKOztBQUVELENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX3Rpbnljb2xvcjJAMS40LjJAdGlueWNvbG9yMi90aW55Y29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaW55Q29sb3IgdjEuNC4yXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYmdyaW5zL1RpbnlDb2xvclxuLy8gQnJpYW4gR3JpbnN0ZWFkLCBNSVQgTGljZW5zZVxuXG4oZnVuY3Rpb24oTWF0aCkge1xuXG52YXIgdHJpbUxlZnQgPSAvXlxccysvLFxuICAgIHRyaW1SaWdodCA9IC9cXHMrJC8sXG4gICAgdGlueUNvdW50ZXIgPSAwLFxuICAgIG1hdGhSb3VuZCA9IE1hdGgucm91bmQsXG4gICAgbWF0aE1pbiA9IE1hdGgubWluLFxuICAgIG1hdGhNYXggPSBNYXRoLm1heCxcbiAgICBtYXRoUmFuZG9tID0gTWF0aC5yYW5kb207XG5cbmZ1bmN0aW9uIHRpbnljb2xvciAoY29sb3IsIG9wdHMpIHtcblxuICAgIGNvbG9yID0gKGNvbG9yKSA/IGNvbG9yIDogJyc7XG4gICAgb3B0cyA9IG9wdHMgfHwgeyB9O1xuXG4gICAgLy8gSWYgaW5wdXQgaXMgYWxyZWFkeSBhIHRpbnljb2xvciwgcmV0dXJuIGl0c2VsZlxuICAgIGlmIChjb2xvciBpbnN0YW5jZW9mIHRpbnljb2xvcikge1xuICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgLy8gSWYgd2UgYXJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBjYWxsIHVzaW5nIG5ldyBpbnN0ZWFkXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIHRpbnljb2xvcikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aW55Y29sb3IoY29sb3IsIG9wdHMpO1xuICAgIH1cblxuICAgIHZhciByZ2IgPSBpbnB1dFRvUkdCKGNvbG9yKTtcbiAgICB0aGlzLl9vcmlnaW5hbElucHV0ID0gY29sb3IsXG4gICAgdGhpcy5fciA9IHJnYi5yLFxuICAgIHRoaXMuX2cgPSByZ2IuZyxcbiAgICB0aGlzLl9iID0gcmdiLmIsXG4gICAgdGhpcy5fYSA9IHJnYi5hLFxuICAgIHRoaXMuX3JvdW5kQSA9IG1hdGhSb3VuZCgxMDAqdGhpcy5fYSkgLyAxMDAsXG4gICAgdGhpcy5fZm9ybWF0ID0gb3B0cy5mb3JtYXQgfHwgcmdiLmZvcm1hdDtcbiAgICB0aGlzLl9ncmFkaWVudFR5cGUgPSBvcHRzLmdyYWRpZW50VHlwZTtcblxuICAgIC8vIERvbid0IGxldCB0aGUgcmFuZ2Ugb2YgWzAsMjU1XSBjb21lIGJhY2sgaW4gWzAsMV0uXG4gICAgLy8gUG90ZW50aWFsbHkgbG9zZSBhIGxpdHRsZSBiaXQgb2YgcHJlY2lzaW9uIGhlcmUsIGJ1dCB3aWxsIGZpeCBpc3N1ZXMgd2hlcmVcbiAgICAvLyAuNSBnZXRzIGludGVycHJldGVkIGFzIGhhbGYgb2YgdGhlIHRvdGFsLCBpbnN0ZWFkIG9mIGhhbGYgb2YgMVxuICAgIC8vIElmIGl0IHdhcyBzdXBwb3NlZCB0byBiZSAxMjgsIHRoaXMgd2FzIGFscmVhZHkgdGFrZW4gY2FyZSBvZiBieSBgaW5wdXRUb1JnYmBcbiAgICBpZiAodGhpcy5fciA8IDEpIHsgdGhpcy5fciA9IG1hdGhSb3VuZCh0aGlzLl9yKTsgfVxuICAgIGlmICh0aGlzLl9nIDwgMSkgeyB0aGlzLl9nID0gbWF0aFJvdW5kKHRoaXMuX2cpOyB9XG4gICAgaWYgKHRoaXMuX2IgPCAxKSB7IHRoaXMuX2IgPSBtYXRoUm91bmQodGhpcy5fYik7IH1cblxuICAgIHRoaXMuX29rID0gcmdiLm9rO1xuICAgIHRoaXMuX3RjX2lkID0gdGlueUNvdW50ZXIrKztcbn1cblxudGlueWNvbG9yLnByb3RvdHlwZSA9IHtcbiAgICBpc0Rhcms6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCcmlnaHRuZXNzKCkgPCAxMjg7XG4gICAgfSxcbiAgICBpc0xpZ2h0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGFyaygpO1xuICAgIH0sXG4gICAgaXNWYWxpZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vaztcbiAgICB9LFxuICAgIGdldE9yaWdpbmFsSW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsSW5wdXQ7XG4gICAgfSxcbiAgICBnZXRGb3JtYXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0O1xuICAgIH0sXG4gICAgZ2V0QWxwaGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYTtcbiAgICB9LFxuICAgIGdldEJyaWdodG5lc3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICAvL2h0dHA6Ly93d3cudzMub3JnL1RSL0FFUlQjY29sb3ItY29udHJhc3RcbiAgICAgICAgdmFyIHJnYiA9IHRoaXMudG9SZ2IoKTtcbiAgICAgICAgcmV0dXJuIChyZ2IuciAqIDI5OSArIHJnYi5nICogNTg3ICsgcmdiLmIgKiAxMTQpIC8gMTAwMDtcbiAgICB9LFxuICAgIGdldEx1bWluYW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuICAgICAgICB2YXIgcmdiID0gdGhpcy50b1JnYigpO1xuICAgICAgICB2YXIgUnNSR0IsIEdzUkdCLCBCc1JHQiwgUiwgRywgQjtcbiAgICAgICAgUnNSR0IgPSByZ2Iuci8yNTU7XG4gICAgICAgIEdzUkdCID0gcmdiLmcvMjU1O1xuICAgICAgICBCc1JHQiA9IHJnYi5iLzI1NTtcblxuICAgICAgICBpZiAoUnNSR0IgPD0gMC4wMzkyOCkge1IgPSBSc1JHQiAvIDEyLjkyO30gZWxzZSB7UiA9IE1hdGgucG93KCgoUnNSR0IgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7fVxuICAgICAgICBpZiAoR3NSR0IgPD0gMC4wMzkyOCkge0cgPSBHc1JHQiAvIDEyLjkyO30gZWxzZSB7RyA9IE1hdGgucG93KCgoR3NSR0IgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7fVxuICAgICAgICBpZiAoQnNSR0IgPD0gMC4wMzkyOCkge0IgPSBCc1JHQiAvIDEyLjkyO30gZWxzZSB7QiA9IE1hdGgucG93KCgoQnNSR0IgKyAwLjA1NSkgLyAxLjA1NSksIDIuNCk7fVxuICAgICAgICByZXR1cm4gKDAuMjEyNiAqIFIpICsgKDAuNzE1MiAqIEcpICsgKDAuMDcyMiAqIEIpO1xuICAgIH0sXG4gICAgc2V0QWxwaGE6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2EgPSBib3VuZEFscGhhKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fcm91bmRBID0gbWF0aFJvdW5kKDEwMCp0aGlzLl9hKSAvIDEwMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICB0b0hzdjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoc3YgPSByZ2JUb0hzdih0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iKTtcbiAgICAgICAgcmV0dXJuIHsgaDogaHN2LmggKiAzNjAsIHM6IGhzdi5zLCB2OiBoc3YudiwgYTogdGhpcy5fYSB9O1xuICAgIH0sXG4gICAgdG9Ic3ZTdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaHN2ID0gcmdiVG9Ic3YodGhpcy5fciwgdGhpcy5fZywgdGhpcy5fYik7XG4gICAgICAgIHZhciBoID0gbWF0aFJvdW5kKGhzdi5oICogMzYwKSwgcyA9IG1hdGhSb3VuZChoc3YucyAqIDEwMCksIHYgPSBtYXRoUm91bmQoaHN2LnYgKiAxMDApO1xuICAgICAgICByZXR1cm4gKHRoaXMuX2EgPT0gMSkgP1xuICAgICAgICAgIFwiaHN2KFwiICArIGggKyBcIiwgXCIgKyBzICsgXCIlLCBcIiArIHYgKyBcIiUpXCIgOlxuICAgICAgICAgIFwiaHN2YShcIiArIGggKyBcIiwgXCIgKyBzICsgXCIlLCBcIiArIHYgKyBcIiUsIFwiKyB0aGlzLl9yb3VuZEEgKyBcIilcIjtcbiAgICB9LFxuICAgIHRvSHNsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGhzbCA9IHJnYlRvSHNsKHRoaXMuX3IsIHRoaXMuX2csIHRoaXMuX2IpO1xuICAgICAgICByZXR1cm4geyBoOiBoc2wuaCAqIDM2MCwgczogaHNsLnMsIGw6IGhzbC5sLCBhOiB0aGlzLl9hIH07XG4gICAgfSxcbiAgICB0b0hzbFN0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoc2wgPSByZ2JUb0hzbCh0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iKTtcbiAgICAgICAgdmFyIGggPSBtYXRoUm91bmQoaHNsLmggKiAzNjApLCBzID0gbWF0aFJvdW5kKGhzbC5zICogMTAwKSwgbCA9IG1hdGhSb3VuZChoc2wubCAqIDEwMCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fYSA9PSAxKSA/XG4gICAgICAgICAgXCJoc2woXCIgICsgaCArIFwiLCBcIiArIHMgKyBcIiUsIFwiICsgbCArIFwiJSlcIiA6XG4gICAgICAgICAgXCJoc2xhKFwiICsgaCArIFwiLCBcIiArIHMgKyBcIiUsIFwiICsgbCArIFwiJSwgXCIrIHRoaXMuX3JvdW5kQSArIFwiKVwiO1xuICAgIH0sXG4gICAgdG9IZXg6IGZ1bmN0aW9uKGFsbG93M0NoYXIpIHtcbiAgICAgICAgcmV0dXJuIHJnYlRvSGV4KHRoaXMuX3IsIHRoaXMuX2csIHRoaXMuX2IsIGFsbG93M0NoYXIpO1xuICAgIH0sXG4gICAgdG9IZXhTdHJpbmc6IGZ1bmN0aW9uKGFsbG93M0NoYXIpIHtcbiAgICAgICAgcmV0dXJuICcjJyArIHRoaXMudG9IZXgoYWxsb3czQ2hhcik7XG4gICAgfSxcbiAgICB0b0hleDg6IGZ1bmN0aW9uKGFsbG93NENoYXIpIHtcbiAgICAgICAgcmV0dXJuIHJnYmFUb0hleCh0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iLCB0aGlzLl9hLCBhbGxvdzRDaGFyKTtcbiAgICB9LFxuICAgIHRvSGV4OFN0cmluZzogZnVuY3Rpb24oYWxsb3c0Q2hhcikge1xuICAgICAgICByZXR1cm4gJyMnICsgdGhpcy50b0hleDgoYWxsb3c0Q2hhcik7XG4gICAgfSxcbiAgICB0b1JnYjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB7IHI6IG1hdGhSb3VuZCh0aGlzLl9yKSwgZzogbWF0aFJvdW5kKHRoaXMuX2cpLCBiOiBtYXRoUm91bmQodGhpcy5fYiksIGE6IHRoaXMuX2EgfTtcbiAgICB9LFxuICAgIHRvUmdiU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9hID09IDEpID9cbiAgICAgICAgICBcInJnYihcIiAgKyBtYXRoUm91bmQodGhpcy5fcikgKyBcIiwgXCIgKyBtYXRoUm91bmQodGhpcy5fZykgKyBcIiwgXCIgKyBtYXRoUm91bmQodGhpcy5fYikgKyBcIilcIiA6XG4gICAgICAgICAgXCJyZ2JhKFwiICsgbWF0aFJvdW5kKHRoaXMuX3IpICsgXCIsIFwiICsgbWF0aFJvdW5kKHRoaXMuX2cpICsgXCIsIFwiICsgbWF0aFJvdW5kKHRoaXMuX2IpICsgXCIsIFwiICsgdGhpcy5fcm91bmRBICsgXCIpXCI7XG4gICAgfSxcbiAgICB0b1BlcmNlbnRhZ2VSZ2I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9yLCAyNTUpICogMTAwKSArIFwiJVwiLCBnOiBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9nLCAyNTUpICogMTAwKSArIFwiJVwiLCBiOiBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9iLCAyNTUpICogMTAwKSArIFwiJVwiLCBhOiB0aGlzLl9hIH07XG4gICAgfSxcbiAgICB0b1BlcmNlbnRhZ2VSZ2JTdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2EgPT0gMSkgP1xuICAgICAgICAgIFwicmdiKFwiICArIG1hdGhSb3VuZChib3VuZDAxKHRoaXMuX3IsIDI1NSkgKiAxMDApICsgXCIlLCBcIiArIG1hdGhSb3VuZChib3VuZDAxKHRoaXMuX2csIDI1NSkgKiAxMDApICsgXCIlLCBcIiArIG1hdGhSb3VuZChib3VuZDAxKHRoaXMuX2IsIDI1NSkgKiAxMDApICsgXCIlKVwiIDpcbiAgICAgICAgICBcInJnYmEoXCIgKyBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9yLCAyNTUpICogMTAwKSArIFwiJSwgXCIgKyBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9nLCAyNTUpICogMTAwKSArIFwiJSwgXCIgKyBtYXRoUm91bmQoYm91bmQwMSh0aGlzLl9iLCAyNTUpICogMTAwKSArIFwiJSwgXCIgKyB0aGlzLl9yb3VuZEEgKyBcIilcIjtcbiAgICB9LFxuICAgIHRvTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9hID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJ0cmFuc3BhcmVudFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2EgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGV4TmFtZXNbcmdiVG9IZXgodGhpcy5fciwgdGhpcy5fZywgdGhpcy5fYiwgdHJ1ZSldIHx8IGZhbHNlO1xuICAgIH0sXG4gICAgdG9GaWx0ZXI6IGZ1bmN0aW9uKHNlY29uZENvbG9yKSB7XG4gICAgICAgIHZhciBoZXg4U3RyaW5nID0gJyMnICsgcmdiYVRvQXJnYkhleCh0aGlzLl9yLCB0aGlzLl9nLCB0aGlzLl9iLCB0aGlzLl9hKTtcbiAgICAgICAgdmFyIHNlY29uZEhleDhTdHJpbmcgPSBoZXg4U3RyaW5nO1xuICAgICAgICB2YXIgZ3JhZGllbnRUeXBlID0gdGhpcy5fZ3JhZGllbnRUeXBlID8gXCJHcmFkaWVudFR5cGUgPSAxLCBcIiA6IFwiXCI7XG5cbiAgICAgICAgaWYgKHNlY29uZENvbG9yKSB7XG4gICAgICAgICAgICB2YXIgcyA9IHRpbnljb2xvcihzZWNvbmRDb2xvcik7XG4gICAgICAgICAgICBzZWNvbmRIZXg4U3RyaW5nID0gJyMnICsgcmdiYVRvQXJnYkhleChzLl9yLCBzLl9nLCBzLl9iLCBzLl9hKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChcIitncmFkaWVudFR5cGUrXCJzdGFydENvbG9yc3RyPVwiK2hleDhTdHJpbmcrXCIsZW5kQ29sb3JzdHI9XCIrc2Vjb25kSGV4OFN0cmluZytcIilcIjtcbiAgICB9LFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbihmb3JtYXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdFNldCA9ICEhZm9ybWF0O1xuICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgdGhpcy5fZm9ybWF0O1xuXG4gICAgICAgIHZhciBmb3JtYXR0ZWRTdHJpbmcgPSBmYWxzZTtcbiAgICAgICAgdmFyIGhhc0FscGhhID0gdGhpcy5fYSA8IDEgJiYgdGhpcy5fYSA+PSAwO1xuICAgICAgICB2YXIgbmVlZHNBbHBoYUZvcm1hdCA9ICFmb3JtYXRTZXQgJiYgaGFzQWxwaGEgJiYgKGZvcm1hdCA9PT0gXCJoZXhcIiB8fCBmb3JtYXQgPT09IFwiaGV4NlwiIHx8IGZvcm1hdCA9PT0gXCJoZXgzXCIgfHwgZm9ybWF0ID09PSBcImhleDRcIiB8fCBmb3JtYXQgPT09IFwiaGV4OFwiIHx8IGZvcm1hdCA9PT0gXCJuYW1lXCIpO1xuXG4gICAgICAgIGlmIChuZWVkc0FscGhhRm9ybWF0KSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIFwidHJhbnNwYXJlbnRcIiwgYWxsIG90aGVyIG5vbi1hbHBoYSBmb3JtYXRzXG4gICAgICAgICAgICAvLyB3aWxsIHJldHVybiByZ2JhIHdoZW4gdGhlcmUgaXMgdHJhbnNwYXJlbmN5LlxuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJuYW1lXCIgJiYgdGhpcy5fYSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvTmFtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9SZ2JTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0ID09PSBcInJnYlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvUmdiU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJwcmdiXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9QZXJjZW50YWdlUmdiU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXhcIiB8fCBmb3JtYXQgPT09IFwiaGV4NlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSGV4U3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXgzXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9IZXhTdHJpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJoZXg0XCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9IZXg4U3RyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwiaGV4OFwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSGV4OFN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwibmFtZVwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvTmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgPT09IFwiaHNsXCIpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZyA9IHRoaXMudG9Ic2xTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0ID09PSBcImhzdlwiKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcgPSB0aGlzLnRvSHN2U3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkU3RyaW5nIHx8IHRoaXMudG9IZXhTdHJpbmcoKTtcbiAgICB9LFxuICAgIGNsb25lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvcih0aGlzLnRvU3RyaW5nKCkpO1xuICAgIH0sXG5cbiAgICBfYXBwbHlNb2RpZmljYXRpb246IGZ1bmN0aW9uKGZuLCBhcmdzKSB7XG4gICAgICAgIHZhciBjb2xvciA9IGZuLmFwcGx5KG51bGwsIFt0aGlzXS5jb25jYXQoW10uc2xpY2UuY2FsbChhcmdzKSkpO1xuICAgICAgICB0aGlzLl9yID0gY29sb3IuX3I7XG4gICAgICAgIHRoaXMuX2cgPSBjb2xvci5fZztcbiAgICAgICAgdGhpcy5fYiA9IGNvbG9yLl9iO1xuICAgICAgICB0aGlzLnNldEFscGhhKGNvbG9yLl9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBsaWdodGVuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGxpZ2h0ZW4sIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBicmlnaHRlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihicmlnaHRlbiwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGRhcmtlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihkYXJrZW4sIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBkZXNhdHVyYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKGRlc2F0dXJhdGUsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBzYXR1cmF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihzYXR1cmF0ZSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGdyZXlzY2FsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseU1vZGlmaWNhdGlvbihncmV5c2NhbGUsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBzcGluOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5TW9kaWZpY2F0aW9uKHNwaW4sIGFyZ3VtZW50cyk7XG4gICAgfSxcblxuICAgIF9hcHBseUNvbWJpbmF0aW9uOiBmdW5jdGlvbihmbiwgYXJncykge1xuICAgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgW3RoaXNdLmNvbmNhdChbXS5zbGljZS5jYWxsKGFyZ3MpKSk7XG4gICAgfSxcbiAgICBhbmFsb2dvdXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihhbmFsb2dvdXMsIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBjb21wbGVtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oY29tcGxlbWVudCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIG1vbm9jaHJvbWF0aWM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbihtb25vY2hyb21hdGljLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgc3BsaXRjb21wbGVtZW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGx5Q29tYmluYXRpb24oc3BsaXRjb21wbGVtZW50LCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgdHJpYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwbHlDb21iaW5hdGlvbih0cmlhZCwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHRldHJhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBseUNvbWJpbmF0aW9uKHRldHJhZCwgYXJndW1lbnRzKTtcbiAgICB9XG59O1xuXG4vLyBJZiBpbnB1dCBpcyBhbiBvYmplY3QsIGZvcmNlIDEgaW50byBcIjEuMFwiIHRvIGhhbmRsZSByYXRpb3MgcHJvcGVybHlcbi8vIFN0cmluZyBpbnB1dCByZXF1aXJlcyBcIjEuMFwiIGFzIGlucHV0LCBzbyAxIHdpbGwgYmUgdHJlYXRlZCBhcyAxXG50aW55Y29sb3IuZnJvbVJhdGlvID0gZnVuY3Rpb24oY29sb3IsIG9wdHMpIHtcbiAgICBpZiAodHlwZW9mIGNvbG9yID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdmFyIG5ld0NvbG9yID0ge307XG4gICAgICAgIGZvciAodmFyIGkgaW4gY29sb3IpIHtcbiAgICAgICAgICAgIGlmIChjb2xvci5oYXNPd25Qcm9wZXJ0eShpKSkge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSBcImFcIikge1xuICAgICAgICAgICAgICAgICAgICBuZXdDb2xvcltpXSA9IGNvbG9yW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29sb3JbaV0gPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29sb3IgPSBuZXdDb2xvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlueWNvbG9yKGNvbG9yLCBvcHRzKTtcbn07XG5cbi8vIEdpdmVuIGEgc3RyaW5nIG9yIG9iamVjdCwgY29udmVydCB0aGF0IGlucHV0IHRvIFJHQlxuLy8gUG9zc2libGUgc3RyaW5nIGlucHV0czpcbi8vXG4vLyAgICAgXCJyZWRcIlxuLy8gICAgIFwiI2YwMFwiIG9yIFwiZjAwXCJcbi8vICAgICBcIiNmZjAwMDBcIiBvciBcImZmMDAwMFwiXG4vLyAgICAgXCIjZmYwMDAwMDBcIiBvciBcImZmMDAwMDAwXCJcbi8vICAgICBcInJnYiAyNTUgMCAwXCIgb3IgXCJyZ2IgKDI1NSwgMCwgMClcIlxuLy8gICAgIFwicmdiIDEuMCAwIDBcIiBvciBcInJnYiAoMSwgMCwgMClcIlxuLy8gICAgIFwicmdiYSAoMjU1LCAwLCAwLCAxKVwiIG9yIFwicmdiYSAyNTUsIDAsIDAsIDFcIlxuLy8gICAgIFwicmdiYSAoMS4wLCAwLCAwLCAxKVwiIG9yIFwicmdiYSAxLjAsIDAsIDAsIDFcIlxuLy8gICAgIFwiaHNsKDAsIDEwMCUsIDUwJSlcIiBvciBcImhzbCAwIDEwMCUgNTAlXCJcbi8vICAgICBcImhzbGEoMCwgMTAwJSwgNTAlLCAxKVwiIG9yIFwiaHNsYSAwIDEwMCUgNTAlLCAxXCJcbi8vICAgICBcImhzdigwLCAxMDAlLCAxMDAlKVwiIG9yIFwiaHN2IDAgMTAwJSAxMDAlXCJcbi8vXG5mdW5jdGlvbiBpbnB1dFRvUkdCKGNvbG9yKSB7XG5cbiAgICB2YXIgcmdiID0geyByOiAwLCBnOiAwLCBiOiAwIH07XG4gICAgdmFyIGEgPSAxO1xuICAgIHZhciBzID0gbnVsbDtcbiAgICB2YXIgdiA9IG51bGw7XG4gICAgdmFyIGwgPSBudWxsO1xuICAgIHZhciBvayA9IGZhbHNlO1xuICAgIHZhciBmb3JtYXQgPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgY29sb3IgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICBjb2xvciA9IHN0cmluZ0lucHV0VG9PYmplY3QoY29sb3IpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29sb3IgPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoaXNWYWxpZENTU1VuaXQoY29sb3IucikgJiYgaXNWYWxpZENTU1VuaXQoY29sb3IuZykgJiYgaXNWYWxpZENTU1VuaXQoY29sb3IuYikpIHtcbiAgICAgICAgICAgIHJnYiA9IHJnYlRvUmdiKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuICAgICAgICAgICAgb2sgPSB0cnVlO1xuICAgICAgICAgICAgZm9ybWF0ID0gU3RyaW5nKGNvbG9yLnIpLnN1YnN0cigtMSkgPT09IFwiJVwiID8gXCJwcmdiXCIgOiBcInJnYlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzVmFsaWRDU1NVbml0KGNvbG9yLmgpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLnMpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLnYpKSB7XG4gICAgICAgICAgICBzID0gY29udmVydFRvUGVyY2VudGFnZShjb2xvci5zKTtcbiAgICAgICAgICAgIHYgPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yLnYpO1xuICAgICAgICAgICAgcmdiID0gaHN2VG9SZ2IoY29sb3IuaCwgcywgdik7XG4gICAgICAgICAgICBvayA9IHRydWU7XG4gICAgICAgICAgICBmb3JtYXQgPSBcImhzdlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzVmFsaWRDU1NVbml0KGNvbG9yLmgpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLnMpICYmIGlzVmFsaWRDU1NVbml0KGNvbG9yLmwpKSB7XG4gICAgICAgICAgICBzID0gY29udmVydFRvUGVyY2VudGFnZShjb2xvci5zKTtcbiAgICAgICAgICAgIGwgPSBjb252ZXJ0VG9QZXJjZW50YWdlKGNvbG9yLmwpO1xuICAgICAgICAgICAgcmdiID0gaHNsVG9SZ2IoY29sb3IuaCwgcywgbCk7XG4gICAgICAgICAgICBvayA9IHRydWU7XG4gICAgICAgICAgICBmb3JtYXQgPSBcImhzbFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbG9yLmhhc093blByb3BlcnR5KFwiYVwiKSkge1xuICAgICAgICAgICAgYSA9IGNvbG9yLmE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhID0gYm91bmRBbHBoYShhKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG9rOiBvayxcbiAgICAgICAgZm9ybWF0OiBjb2xvci5mb3JtYXQgfHwgZm9ybWF0LFxuICAgICAgICByOiBtYXRoTWluKDI1NSwgbWF0aE1heChyZ2IuciwgMCkpLFxuICAgICAgICBnOiBtYXRoTWluKDI1NSwgbWF0aE1heChyZ2IuZywgMCkpLFxuICAgICAgICBiOiBtYXRoTWluKDI1NSwgbWF0aE1heChyZ2IuYiwgMCkpLFxuICAgICAgICBhOiBhXG4gICAgfTtcbn1cblxuXG4vLyBDb252ZXJzaW9uIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gYHJnYlRvSHNsYCwgYHJnYlRvSHN2YCwgYGhzbFRvUmdiYCwgYGhzdlRvUmdiYCBtb2RpZmllZCBmcm9tOlxuLy8gPGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHQ+XG5cbi8vIGByZ2JUb1JnYmBcbi8vIEhhbmRsZSBib3VuZHMgLyBwZXJjZW50YWdlIGNoZWNraW5nIHRvIGNvbmZvcm0gdG8gQ1NTIGNvbG9yIHNwZWNcbi8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWNvbG9yLz5cbi8vICpBc3N1bWVzOiogciwgZywgYiBpbiBbMCwgMjU1XSBvciBbMCwgMV1cbi8vICpSZXR1cm5zOiogeyByLCBnLCBiIH0gaW4gWzAsIDI1NV1cbmZ1bmN0aW9uIHJnYlRvUmdiKHIsIGcsIGIpe1xuICAgIHJldHVybiB7XG4gICAgICAgIHI6IGJvdW5kMDEociwgMjU1KSAqIDI1NSxcbiAgICAgICAgZzogYm91bmQwMShnLCAyNTUpICogMjU1LFxuICAgICAgICBiOiBib3VuZDAxKGIsIDI1NSkgKiAyNTVcbiAgICB9O1xufVxuXG4vLyBgcmdiVG9Ic2xgXG4vLyBDb252ZXJ0cyBhbiBSR0IgY29sb3IgdmFsdWUgdG8gSFNMLlxuLy8gKkFzc3VtZXM6KiByLCBnLCBhbmQgYiBhcmUgY29udGFpbmVkIGluIFswLCAyNTVdIG9yIFswLCAxXVxuLy8gKlJldHVybnM6KiB7IGgsIHMsIGwgfSBpbiBbMCwxXVxuZnVuY3Rpb24gcmdiVG9Ic2wociwgZywgYikge1xuXG4gICAgciA9IGJvdW5kMDEociwgMjU1KTtcbiAgICBnID0gYm91bmQwMShnLCAyNTUpO1xuICAgIGIgPSBib3VuZDAxKGIsIDI1NSk7XG5cbiAgICB2YXIgbWF4ID0gbWF0aE1heChyLCBnLCBiKSwgbWluID0gbWF0aE1pbihyLCBnLCBiKTtcbiAgICB2YXIgaCwgcywgbCA9IChtYXggKyBtaW4pIC8gMjtcblxuICAgIGlmKG1heCA9PSBtaW4pIHtcbiAgICAgICAgaCA9IHMgPSAwOyAvLyBhY2hyb21hdGljXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgZCA9IG1heCAtIG1pbjtcbiAgICAgICAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuICAgICAgICBzd2l0Y2gobWF4KSB7XG4gICAgICAgICAgICBjYXNlIHI6IGggPSAoZyAtIGIpIC8gZCArIChnIDwgYiA/IDYgOiAwKTsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGc6IGggPSAoYiAtIHIpIC8gZCArIDI7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBiOiBoID0gKHIgLSBnKSAvIGQgKyA0OyBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGggLz0gNjtcbiAgICB9XG5cbiAgICByZXR1cm4geyBoOiBoLCBzOiBzLCBsOiBsIH07XG59XG5cbi8vIGBoc2xUb1JnYmBcbi8vIENvbnZlcnRzIGFuIEhTTCBjb2xvciB2YWx1ZSB0byBSR0IuXG4vLyAqQXNzdW1lczoqIGggaXMgY29udGFpbmVkIGluIFswLCAxXSBvciBbMCwgMzYwXSBhbmQgcyBhbmQgbCBhcmUgY29udGFpbmVkIFswLCAxXSBvciBbMCwgMTAwXVxuLy8gKlJldHVybnM6KiB7IHIsIGcsIGIgfSBpbiB0aGUgc2V0IFswLCAyNTVdXG5mdW5jdGlvbiBoc2xUb1JnYihoLCBzLCBsKSB7XG4gICAgdmFyIHIsIGcsIGI7XG5cbiAgICBoID0gYm91bmQwMShoLCAzNjApO1xuICAgIHMgPSBib3VuZDAxKHMsIDEwMCk7XG4gICAgbCA9IGJvdW5kMDEobCwgMTAwKTtcblxuICAgIGZ1bmN0aW9uIGh1ZTJyZ2IocCwgcSwgdCkge1xuICAgICAgICBpZih0IDwgMCkgdCArPSAxO1xuICAgICAgICBpZih0ID4gMSkgdCAtPSAxO1xuICAgICAgICBpZih0IDwgMS82KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICAgICAgaWYodCA8IDEvMikgcmV0dXJuIHE7XG4gICAgICAgIGlmKHQgPCAyLzMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyLzMgLSB0KSAqIDY7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGlmKHMgPT09IDApIHtcbiAgICAgICAgciA9IGcgPSBiID0gbDsgLy8gYWNocm9tYXRpY1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHEgPSBsIDwgMC41ID8gbCAqICgxICsgcykgOiBsICsgcyAtIGwgKiBzO1xuICAgICAgICB2YXIgcCA9IDIgKiBsIC0gcTtcbiAgICAgICAgciA9IGh1ZTJyZ2IocCwgcSwgaCArIDEvMyk7XG4gICAgICAgIGcgPSBodWUycmdiKHAsIHEsIGgpO1xuICAgICAgICBiID0gaHVlMnJnYihwLCBxLCBoIC0gMS8zKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByOiByICogMjU1LCBnOiBnICogMjU1LCBiOiBiICogMjU1IH07XG59XG5cbi8vIGByZ2JUb0hzdmBcbi8vIENvbnZlcnRzIGFuIFJHQiBjb2xvciB2YWx1ZSB0byBIU1Zcbi8vICpBc3N1bWVzOiogciwgZywgYW5kIGIgYXJlIGNvbnRhaW5lZCBpbiB0aGUgc2V0IFswLCAyNTVdIG9yIFswLCAxXVxuLy8gKlJldHVybnM6KiB7IGgsIHMsIHYgfSBpbiBbMCwxXVxuZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xuXG4gICAgciA9IGJvdW5kMDEociwgMjU1KTtcbiAgICBnID0gYm91bmQwMShnLCAyNTUpO1xuICAgIGIgPSBib3VuZDAxKGIsIDI1NSk7XG5cbiAgICB2YXIgbWF4ID0gbWF0aE1heChyLCBnLCBiKSwgbWluID0gbWF0aE1pbihyLCBnLCBiKTtcbiAgICB2YXIgaCwgcywgdiA9IG1heDtcblxuICAgIHZhciBkID0gbWF4IC0gbWluO1xuICAgIHMgPSBtYXggPT09IDAgPyAwIDogZCAvIG1heDtcblxuICAgIGlmKG1heCA9PSBtaW4pIHtcbiAgICAgICAgaCA9IDA7IC8vIGFjaHJvbWF0aWNcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN3aXRjaChtYXgpIHtcbiAgICAgICAgICAgIGNhc2UgcjogaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgZzogaCA9IChiIC0gcikgLyBkICsgMjsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGI6IGggPSAociAtIGcpIC8gZCArIDQ7IGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGggLz0gNjtcbiAgICB9XG4gICAgcmV0dXJuIHsgaDogaCwgczogcywgdjogdiB9O1xufVxuXG4vLyBgaHN2VG9SZ2JgXG4vLyBDb252ZXJ0cyBhbiBIU1YgY29sb3IgdmFsdWUgdG8gUkdCLlxuLy8gKkFzc3VtZXM6KiBoIGlzIGNvbnRhaW5lZCBpbiBbMCwgMV0gb3IgWzAsIDM2MF0gYW5kIHMgYW5kIHYgYXJlIGNvbnRhaW5lZCBpbiBbMCwgMV0gb3IgWzAsIDEwMF1cbi8vICpSZXR1cm5zOiogeyByLCBnLCBiIH0gaW4gdGhlIHNldCBbMCwgMjU1XVxuIGZ1bmN0aW9uIGhzdlRvUmdiKGgsIHMsIHYpIHtcblxuICAgIGggPSBib3VuZDAxKGgsIDM2MCkgKiA2O1xuICAgIHMgPSBib3VuZDAxKHMsIDEwMCk7XG4gICAgdiA9IGJvdW5kMDEodiwgMTAwKTtcblxuICAgIHZhciBpID0gTWF0aC5mbG9vcihoKSxcbiAgICAgICAgZiA9IGggLSBpLFxuICAgICAgICBwID0gdiAqICgxIC0gcyksXG4gICAgICAgIHEgPSB2ICogKDEgLSBmICogcyksXG4gICAgICAgIHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyksXG4gICAgICAgIG1vZCA9IGkgJSA2LFxuICAgICAgICByID0gW3YsIHEsIHAsIHAsIHQsIHZdW21vZF0sXG4gICAgICAgIGcgPSBbdCwgdiwgdiwgcSwgcCwgcF1bbW9kXSxcbiAgICAgICAgYiA9IFtwLCBwLCB0LCB2LCB2LCBxXVttb2RdO1xuXG4gICAgcmV0dXJuIHsgcjogciAqIDI1NSwgZzogZyAqIDI1NSwgYjogYiAqIDI1NSB9O1xufVxuXG4vLyBgcmdiVG9IZXhgXG4vLyBDb252ZXJ0cyBhbiBSR0IgY29sb3IgdG8gaGV4XG4vLyBBc3N1bWVzIHIsIGcsIGFuZCBiIGFyZSBjb250YWluZWQgaW4gdGhlIHNldCBbMCwgMjU1XVxuLy8gUmV0dXJucyBhIDMgb3IgNiBjaGFyYWN0ZXIgaGV4XG5mdW5jdGlvbiByZ2JUb0hleChyLCBnLCBiLCBhbGxvdzNDaGFyKSB7XG5cbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICBwYWQyKG1hdGhSb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChiKS50b1N0cmluZygxNikpXG4gICAgXTtcblxuICAgIC8vIFJldHVybiBhIDMgY2hhcmFjdGVyIGhleCBpZiBwb3NzaWJsZVxuICAgIGlmIChhbGxvdzNDaGFyICYmIGhleFswXS5jaGFyQXQoMCkgPT0gaGV4WzBdLmNoYXJBdCgxKSAmJiBoZXhbMV0uY2hhckF0KDApID09IGhleFsxXS5jaGFyQXQoMSkgJiYgaGV4WzJdLmNoYXJBdCgwKSA9PSBoZXhbMl0uY2hhckF0KDEpKSB7XG4gICAgICAgIHJldHVybiBoZXhbMF0uY2hhckF0KDApICsgaGV4WzFdLmNoYXJBdCgwKSArIGhleFsyXS5jaGFyQXQoMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhleC5qb2luKFwiXCIpO1xufVxuXG4vLyBgcmdiYVRvSGV4YFxuLy8gQ29udmVydHMgYW4gUkdCQSBjb2xvciBwbHVzIGFscGhhIHRyYW5zcGFyZW5jeSB0byBoZXhcbi8vIEFzc3VtZXMgciwgZywgYiBhcmUgY29udGFpbmVkIGluIHRoZSBzZXQgWzAsIDI1NV0gYW5kXG4vLyBhIGluIFswLCAxXS4gUmV0dXJucyBhIDQgb3IgOCBjaGFyYWN0ZXIgcmdiYSBoZXhcbmZ1bmN0aW9uIHJnYmFUb0hleChyLCBnLCBiLCBhLCBhbGxvdzRDaGFyKSB7XG5cbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICBwYWQyKG1hdGhSb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChiKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKGNvbnZlcnREZWNpbWFsVG9IZXgoYSkpXG4gICAgXTtcblxuICAgIC8vIFJldHVybiBhIDQgY2hhcmFjdGVyIGhleCBpZiBwb3NzaWJsZVxuICAgIGlmIChhbGxvdzRDaGFyICYmIGhleFswXS5jaGFyQXQoMCkgPT0gaGV4WzBdLmNoYXJBdCgxKSAmJiBoZXhbMV0uY2hhckF0KDApID09IGhleFsxXS5jaGFyQXQoMSkgJiYgaGV4WzJdLmNoYXJBdCgwKSA9PSBoZXhbMl0uY2hhckF0KDEpICYmIGhleFszXS5jaGFyQXQoMCkgPT0gaGV4WzNdLmNoYXJBdCgxKSkge1xuICAgICAgICByZXR1cm4gaGV4WzBdLmNoYXJBdCgwKSArIGhleFsxXS5jaGFyQXQoMCkgKyBoZXhbMl0uY2hhckF0KDApICsgaGV4WzNdLmNoYXJBdCgwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGV4LmpvaW4oXCJcIik7XG59XG5cbi8vIGByZ2JhVG9BcmdiSGV4YFxuLy8gQ29udmVydHMgYW4gUkdCQSBjb2xvciB0byBhbiBBUkdCIEhleDggc3RyaW5nXG4vLyBSYXJlbHkgdXNlZCwgYnV0IHJlcXVpcmVkIGZvciBcInRvRmlsdGVyKClcIlxuZnVuY3Rpb24gcmdiYVRvQXJnYkhleChyLCBnLCBiLCBhKSB7XG5cbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICBwYWQyKGNvbnZlcnREZWNpbWFsVG9IZXgoYSkpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChyKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChnKS50b1N0cmluZygxNikpLFxuICAgICAgICBwYWQyKG1hdGhSb3VuZChiKS50b1N0cmluZygxNikpXG4gICAgXTtcblxuICAgIHJldHVybiBoZXguam9pbihcIlwiKTtcbn1cblxuLy8gYGVxdWFsc2Bcbi8vIENhbiBiZSBjYWxsZWQgd2l0aCBhbnkgdGlueWNvbG9yIGlucHV0XG50aW55Y29sb3IuZXF1YWxzID0gZnVuY3Rpb24gKGNvbG9yMSwgY29sb3IyKSB7XG4gICAgaWYgKCFjb2xvcjEgfHwgIWNvbG9yMikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICByZXR1cm4gdGlueWNvbG9yKGNvbG9yMSkudG9SZ2JTdHJpbmcoKSA9PSB0aW55Y29sb3IoY29sb3IyKS50b1JnYlN0cmluZygpO1xufTtcblxudGlueWNvbG9yLnJhbmRvbSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aW55Y29sb3IuZnJvbVJhdGlvKHtcbiAgICAgICAgcjogbWF0aFJhbmRvbSgpLFxuICAgICAgICBnOiBtYXRoUmFuZG9tKCksXG4gICAgICAgIGI6IG1hdGhSYW5kb20oKVxuICAgIH0pO1xufTtcblxuXG4vLyBNb2RpZmljYXRpb24gRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGFua3MgdG8gbGVzcy5qcyBmb3Igc29tZSBvZiB0aGUgYmFzaWNzIGhlcmVcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vY2xvdWRoZWFkL2xlc3MuanMvYmxvYi9tYXN0ZXIvbGliL2xlc3MvZnVuY3Rpb25zLmpzPlxuXG5mdW5jdGlvbiBkZXNhdHVyYXRlKGNvbG9yLCBhbW91bnQpIHtcbiAgICBhbW91bnQgPSAoYW1vdW50ID09PSAwKSA/IDAgOiAoYW1vdW50IHx8IDEwKTtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIGhzbC5zIC09IGFtb3VudCAvIDEwMDtcbiAgICBoc2wucyA9IGNsYW1wMDEoaHNsLnMpO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuZnVuY3Rpb24gc2F0dXJhdGUoY29sb3IsIGFtb3VudCkge1xuICAgIGFtb3VudCA9IChhbW91bnQgPT09IDApID8gMCA6IChhbW91bnQgfHwgMTApO1xuICAgIHZhciBoc2wgPSB0aW55Y29sb3IoY29sb3IpLnRvSHNsKCk7XG4gICAgaHNsLnMgKz0gYW1vdW50IC8gMTAwO1xuICAgIGhzbC5zID0gY2xhbXAwMShoc2wucyk7XG4gICAgcmV0dXJuIHRpbnljb2xvcihoc2wpO1xufVxuXG5mdW5jdGlvbiBncmV5c2NhbGUoY29sb3IpIHtcbiAgICByZXR1cm4gdGlueWNvbG9yKGNvbG9yKS5kZXNhdHVyYXRlKDEwMCk7XG59XG5cbmZ1bmN0aW9uIGxpZ2h0ZW4gKGNvbG9yLCBhbW91bnQpIHtcbiAgICBhbW91bnQgPSAoYW1vdW50ID09PSAwKSA/IDAgOiAoYW1vdW50IHx8IDEwKTtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIGhzbC5sICs9IGFtb3VudCAvIDEwMDtcbiAgICBoc2wubCA9IGNsYW1wMDEoaHNsLmwpO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuZnVuY3Rpb24gYnJpZ2h0ZW4oY29sb3IsIGFtb3VudCkge1xuICAgIGFtb3VudCA9IChhbW91bnQgPT09IDApID8gMCA6IChhbW91bnQgfHwgMTApO1xuICAgIHZhciByZ2IgPSB0aW55Y29sb3IoY29sb3IpLnRvUmdiKCk7XG4gICAgcmdiLnIgPSBtYXRoTWF4KDAsIG1hdGhNaW4oMjU1LCByZ2IuciAtIG1hdGhSb3VuZCgyNTUgKiAtIChhbW91bnQgLyAxMDApKSkpO1xuICAgIHJnYi5nID0gbWF0aE1heCgwLCBtYXRoTWluKDI1NSwgcmdiLmcgLSBtYXRoUm91bmQoMjU1ICogLSAoYW1vdW50IC8gMTAwKSkpKTtcbiAgICByZ2IuYiA9IG1hdGhNYXgoMCwgbWF0aE1pbigyNTUsIHJnYi5iIC0gbWF0aFJvdW5kKDI1NSAqIC0gKGFtb3VudCAvIDEwMCkpKSk7XG4gICAgcmV0dXJuIHRpbnljb2xvcihyZ2IpO1xufVxuXG5mdW5jdGlvbiBkYXJrZW4gKGNvbG9yLCBhbW91bnQpIHtcbiAgICBhbW91bnQgPSAoYW1vdW50ID09PSAwKSA/IDAgOiAoYW1vdW50IHx8IDEwKTtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIGhzbC5sIC09IGFtb3VudCAvIDEwMDtcbiAgICBoc2wubCA9IGNsYW1wMDEoaHNsLmwpO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuLy8gU3BpbiB0YWtlcyBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGFtb3VudCB3aXRoaW4gWy0zNjAsIDM2MF0gaW5kaWNhdGluZyB0aGUgY2hhbmdlIG9mIGh1ZS5cbi8vIFZhbHVlcyBvdXRzaWRlIG9mIHRoaXMgcmFuZ2Ugd2lsbCBiZSB3cmFwcGVkIGludG8gdGhpcyByYW5nZS5cbmZ1bmN0aW9uIHNwaW4oY29sb3IsIGFtb3VudCkge1xuICAgIHZhciBoc2wgPSB0aW55Y29sb3IoY29sb3IpLnRvSHNsKCk7XG4gICAgdmFyIGh1ZSA9IChoc2wuaCArIGFtb3VudCkgJSAzNjA7XG4gICAgaHNsLmggPSBodWUgPCAwID8gMzYwICsgaHVlIDogaHVlO1xuICAgIHJldHVybiB0aW55Y29sb3IoaHNsKTtcbn1cblxuLy8gQ29tYmluYXRpb24gRnVuY3Rpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoYW5rcyB0byBqUXVlcnkgeENvbG9yIGZvciBzb21lIG9mIHRoZSBpZGVhcyBiZWhpbmQgdGhlc2Vcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vaW5mdXNpb24valF1ZXJ5LXhjb2xvci9ibG9iL21hc3Rlci9qcXVlcnkueGNvbG9yLmpzPlxuXG5mdW5jdGlvbiBjb21wbGVtZW50KGNvbG9yKSB7XG4gICAgdmFyIGhzbCA9IHRpbnljb2xvcihjb2xvcikudG9Ic2woKTtcbiAgICBoc2wuaCA9IChoc2wuaCArIDE4MCkgJSAzNjA7XG4gICAgcmV0dXJuIHRpbnljb2xvcihoc2wpO1xufVxuXG5mdW5jdGlvbiB0cmlhZChjb2xvcikge1xuICAgIHZhciBoc2wgPSB0aW55Y29sb3IoY29sb3IpLnRvSHNsKCk7XG4gICAgdmFyIGggPSBoc2wuaDtcbiAgICByZXR1cm4gW1xuICAgICAgICB0aW55Y29sb3IoY29sb3IpLFxuICAgICAgICB0aW55Y29sb3IoeyBoOiAoaCArIDEyMCkgJSAzNjAsIHM6IGhzbC5zLCBsOiBoc2wubCB9KSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyAyNDApICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmwgfSlcbiAgICBdO1xufVxuXG5mdW5jdGlvbiB0ZXRyYWQoY29sb3IpIHtcbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIHZhciBoID0gaHNsLmg7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgdGlueWNvbG9yKGNvbG9yKSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyA5MCkgJSAzNjAsIHM6IGhzbC5zLCBsOiBoc2wubCB9KSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyAxODApICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmwgfSksXG4gICAgICAgIHRpbnljb2xvcih7IGg6IChoICsgMjcwKSAlIDM2MCwgczogaHNsLnMsIGw6IGhzbC5sIH0pXG4gICAgXTtcbn1cblxuZnVuY3Rpb24gc3BsaXRjb21wbGVtZW50KGNvbG9yKSB7XG4gICAgdmFyIGhzbCA9IHRpbnljb2xvcihjb2xvcikudG9Ic2woKTtcbiAgICB2YXIgaCA9IGhzbC5oO1xuICAgIHJldHVybiBbXG4gICAgICAgIHRpbnljb2xvcihjb2xvciksXG4gICAgICAgIHRpbnljb2xvcih7IGg6IChoICsgNzIpICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmx9KSxcbiAgICAgICAgdGlueWNvbG9yKHsgaDogKGggKyAyMTYpICUgMzYwLCBzOiBoc2wucywgbDogaHNsLmx9KVxuICAgIF07XG59XG5cbmZ1bmN0aW9uIGFuYWxvZ291cyhjb2xvciwgcmVzdWx0cywgc2xpY2VzKSB7XG4gICAgcmVzdWx0cyA9IHJlc3VsdHMgfHwgNjtcbiAgICBzbGljZXMgPSBzbGljZXMgfHwgMzA7XG5cbiAgICB2YXIgaHNsID0gdGlueWNvbG9yKGNvbG9yKS50b0hzbCgpO1xuICAgIHZhciBwYXJ0ID0gMzYwIC8gc2xpY2VzO1xuICAgIHZhciByZXQgPSBbdGlueWNvbG9yKGNvbG9yKV07XG5cbiAgICBmb3IgKGhzbC5oID0gKChoc2wuaCAtIChwYXJ0ICogcmVzdWx0cyA+PiAxKSkgKyA3MjApICUgMzYwOyAtLXJlc3VsdHM7ICkge1xuICAgICAgICBoc2wuaCA9IChoc2wuaCArIHBhcnQpICUgMzYwO1xuICAgICAgICByZXQucHVzaCh0aW55Y29sb3IoaHNsKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG1vbm9jaHJvbWF0aWMoY29sb3IsIHJlc3VsdHMpIHtcbiAgICByZXN1bHRzID0gcmVzdWx0cyB8fCA2O1xuICAgIHZhciBoc3YgPSB0aW55Y29sb3IoY29sb3IpLnRvSHN2KCk7XG4gICAgdmFyIGggPSBoc3YuaCwgcyA9IGhzdi5zLCB2ID0gaHN2LnY7XG4gICAgdmFyIHJldCA9IFtdO1xuICAgIHZhciBtb2RpZmljYXRpb24gPSAxIC8gcmVzdWx0cztcblxuICAgIHdoaWxlIChyZXN1bHRzLS0pIHtcbiAgICAgICAgcmV0LnB1c2godGlueWNvbG9yKHsgaDogaCwgczogcywgdjogdn0pKTtcbiAgICAgICAgdiA9ICh2ICsgbW9kaWZpY2F0aW9uKSAlIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbn1cblxuLy8gVXRpbGl0eSBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50aW55Y29sb3IubWl4ID0gZnVuY3Rpb24oY29sb3IxLCBjb2xvcjIsIGFtb3VudCkge1xuICAgIGFtb3VudCA9IChhbW91bnQgPT09IDApID8gMCA6IChhbW91bnQgfHwgNTApO1xuXG4gICAgdmFyIHJnYjEgPSB0aW55Y29sb3IoY29sb3IxKS50b1JnYigpO1xuICAgIHZhciByZ2IyID0gdGlueWNvbG9yKGNvbG9yMikudG9SZ2IoKTtcblxuICAgIHZhciBwID0gYW1vdW50IC8gMTAwO1xuXG4gICAgdmFyIHJnYmEgPSB7XG4gICAgICAgIHI6ICgocmdiMi5yIC0gcmdiMS5yKSAqIHApICsgcmdiMS5yLFxuICAgICAgICBnOiAoKHJnYjIuZyAtIHJnYjEuZykgKiBwKSArIHJnYjEuZyxcbiAgICAgICAgYjogKChyZ2IyLmIgLSByZ2IxLmIpICogcCkgKyByZ2IxLmIsXG4gICAgICAgIGE6ICgocmdiMi5hIC0gcmdiMS5hKSAqIHApICsgcmdiMS5hXG4gICAgfTtcblxuICAgIHJldHVybiB0aW55Y29sb3IocmdiYSk7XG59O1xuXG5cbi8vIFJlYWRhYmlsaXR5IEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZiAoV0NBRyBWZXJzaW9uIDIpXG5cbi8vIGBjb250cmFzdGBcbi8vIEFuYWx5emUgdGhlIDIgY29sb3JzIGFuZCByZXR1cm5zIHRoZSBjb2xvciBjb250cmFzdCBkZWZpbmVkIGJ5IChXQ0FHIFZlcnNpb24gMilcbnRpbnljb2xvci5yZWFkYWJpbGl0eSA9IGZ1bmN0aW9uKGNvbG9yMSwgY29sb3IyKSB7XG4gICAgdmFyIGMxID0gdGlueWNvbG9yKGNvbG9yMSk7XG4gICAgdmFyIGMyID0gdGlueWNvbG9yKGNvbG9yMik7XG4gICAgcmV0dXJuIChNYXRoLm1heChjMS5nZXRMdW1pbmFuY2UoKSxjMi5nZXRMdW1pbmFuY2UoKSkrMC4wNSkgLyAoTWF0aC5taW4oYzEuZ2V0THVtaW5hbmNlKCksYzIuZ2V0THVtaW5hbmNlKCkpKzAuMDUpO1xufTtcblxuLy8gYGlzUmVhZGFibGVgXG4vLyBFbnN1cmUgdGhhdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9yIGNvbWJpbmF0aW9ucyBtZWV0IFdDQUcyIGd1aWRlbGluZXMuXG4vLyBUaGUgdGhpcmQgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgT2JqZWN0LlxuLy8gICAgICB0aGUgJ2xldmVsJyBwcm9wZXJ0eSBzdGF0ZXMgJ0FBJyBvciAnQUFBJyAtIGlmIG1pc3Npbmcgb3IgaW52YWxpZCwgaXQgZGVmYXVsdHMgdG8gJ0FBJztcbi8vICAgICAgdGhlICdzaXplJyBwcm9wZXJ0eSBzdGF0ZXMgJ2xhcmdlJyBvciAnc21hbGwnIC0gaWYgbWlzc2luZyBvciBpbnZhbGlkLCBpdCBkZWZhdWx0cyB0byAnc21hbGwnLlxuLy8gSWYgdGhlIGVudGlyZSBvYmplY3QgaXMgYWJzZW50LCBpc1JlYWRhYmxlIGRlZmF1bHRzIHRvIHtsZXZlbDpcIkFBXCIsc2l6ZTpcInNtYWxsXCJ9LlxuXG4vLyAqRXhhbXBsZSpcbi8vICAgIHRpbnljb2xvci5pc1JlYWRhYmxlKFwiIzAwMFwiLCBcIiMxMTFcIikgPT4gZmFsc2Vcbi8vICAgIHRpbnljb2xvci5pc1JlYWRhYmxlKFwiIzAwMFwiLCBcIiMxMTFcIix7bGV2ZWw6XCJBQVwiLHNpemU6XCJsYXJnZVwifSkgPT4gZmFsc2VcbnRpbnljb2xvci5pc1JlYWRhYmxlID0gZnVuY3Rpb24oY29sb3IxLCBjb2xvcjIsIHdjYWcyKSB7XG4gICAgdmFyIHJlYWRhYmlsaXR5ID0gdGlueWNvbG9yLnJlYWRhYmlsaXR5KGNvbG9yMSwgY29sb3IyKTtcbiAgICB2YXIgd2NhZzJQYXJtcywgb3V0O1xuXG4gICAgb3V0ID0gZmFsc2U7XG5cbiAgICB3Y2FnMlBhcm1zID0gdmFsaWRhdGVXQ0FHMlBhcm1zKHdjYWcyKTtcbiAgICBzd2l0Y2ggKHdjYWcyUGFybXMubGV2ZWwgKyB3Y2FnMlBhcm1zLnNpemUpIHtcbiAgICAgICAgY2FzZSBcIkFBc21hbGxcIjpcbiAgICAgICAgY2FzZSBcIkFBQWxhcmdlXCI6XG4gICAgICAgICAgICBvdXQgPSByZWFkYWJpbGl0eSA+PSA0LjU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFBbGFyZ2VcIjpcbiAgICAgICAgICAgIG91dCA9IHJlYWRhYmlsaXR5ID49IDM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFBQXNtYWxsXCI6XG4gICAgICAgICAgICBvdXQgPSByZWFkYWJpbGl0eSA+PSA3O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG5cbn07XG5cbi8vIGBtb3N0UmVhZGFibGVgXG4vLyBHaXZlbiBhIGJhc2UgY29sb3IgYW5kIGEgbGlzdCBvZiBwb3NzaWJsZSBmb3JlZ3JvdW5kIG9yIGJhY2tncm91bmRcbi8vIGNvbG9ycyBmb3IgdGhhdCBiYXNlLCByZXR1cm5zIHRoZSBtb3N0IHJlYWRhYmxlIGNvbG9yLlxuLy8gT3B0aW9uYWxseSByZXR1cm5zIEJsYWNrIG9yIFdoaXRlIGlmIHRoZSBtb3N0IHJlYWRhYmxlIGNvbG9yIGlzIHVucmVhZGFibGUuXG4vLyAqRXhhbXBsZSpcbi8vICAgIHRpbnljb2xvci5tb3N0UmVhZGFibGUodGlueWNvbG9yLm1vc3RSZWFkYWJsZShcIiMxMjNcIiwgW1wiIzEyNFwiLCBcIiMxMjVcIl0se2luY2x1ZGVGYWxsYmFja0NvbG9yczpmYWxzZX0pLnRvSGV4U3RyaW5nKCk7IC8vIFwiIzExMjI1NVwiXG4vLyAgICB0aW55Y29sb3IubW9zdFJlYWRhYmxlKHRpbnljb2xvci5tb3N0UmVhZGFibGUoXCIjMTIzXCIsIFtcIiMxMjRcIiwgXCIjMTI1XCJdLHtpbmNsdWRlRmFsbGJhY2tDb2xvcnM6dHJ1ZX0pLnRvSGV4U3RyaW5nKCk7ICAvLyBcIiNmZmZmZmZcIlxuLy8gICAgdGlueWNvbG9yLm1vc3RSZWFkYWJsZShcIiNhODAxNWFcIiwgW1wiI2ZhZjNmM1wiXSx7aW5jbHVkZUZhbGxiYWNrQ29sb3JzOnRydWUsbGV2ZWw6XCJBQUFcIixzaXplOlwibGFyZ2VcIn0pLnRvSGV4U3RyaW5nKCk7IC8vIFwiI2ZhZjNmM1wiXG4vLyAgICB0aW55Y29sb3IubW9zdFJlYWRhYmxlKFwiI2E4MDE1YVwiLCBbXCIjZmFmM2YzXCJdLHtpbmNsdWRlRmFsbGJhY2tDb2xvcnM6dHJ1ZSxsZXZlbDpcIkFBQVwiLHNpemU6XCJzbWFsbFwifSkudG9IZXhTdHJpbmcoKTsgLy8gXCIjZmZmZmZmXCJcbnRpbnljb2xvci5tb3N0UmVhZGFibGUgPSBmdW5jdGlvbihiYXNlQ29sb3IsIGNvbG9yTGlzdCwgYXJncykge1xuICAgIHZhciBiZXN0Q29sb3IgPSBudWxsO1xuICAgIHZhciBiZXN0U2NvcmUgPSAwO1xuICAgIHZhciByZWFkYWJpbGl0eTtcbiAgICB2YXIgaW5jbHVkZUZhbGxiYWNrQ29sb3JzLCBsZXZlbCwgc2l6ZSA7XG4gICAgYXJncyA9IGFyZ3MgfHwge307XG4gICAgaW5jbHVkZUZhbGxiYWNrQ29sb3JzID0gYXJncy5pbmNsdWRlRmFsbGJhY2tDb2xvcnMgO1xuICAgIGxldmVsID0gYXJncy5sZXZlbDtcbiAgICBzaXplID0gYXJncy5zaXplO1xuXG4gICAgZm9yICh2YXIgaT0gMDsgaSA8IGNvbG9yTGlzdC5sZW5ndGggOyBpKyspIHtcbiAgICAgICAgcmVhZGFiaWxpdHkgPSB0aW55Y29sb3IucmVhZGFiaWxpdHkoYmFzZUNvbG9yLCBjb2xvckxpc3RbaV0pO1xuICAgICAgICBpZiAocmVhZGFiaWxpdHkgPiBiZXN0U2NvcmUpIHtcbiAgICAgICAgICAgIGJlc3RTY29yZSA9IHJlYWRhYmlsaXR5O1xuICAgICAgICAgICAgYmVzdENvbG9yID0gdGlueWNvbG9yKGNvbG9yTGlzdFtpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGlueWNvbG9yLmlzUmVhZGFibGUoYmFzZUNvbG9yLCBiZXN0Q29sb3IsIHtcImxldmVsXCI6bGV2ZWwsXCJzaXplXCI6c2l6ZX0pIHx8ICFpbmNsdWRlRmFsbGJhY2tDb2xvcnMpIHtcbiAgICAgICAgcmV0dXJuIGJlc3RDb2xvcjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGFyZ3MuaW5jbHVkZUZhbGxiYWNrQ29sb3JzPWZhbHNlO1xuICAgICAgICByZXR1cm4gdGlueWNvbG9yLm1vc3RSZWFkYWJsZShiYXNlQ29sb3IsW1wiI2ZmZlwiLCBcIiMwMDBcIl0sYXJncyk7XG4gICAgfVxufTtcblxuXG4vLyBCaWcgTGlzdCBvZiBDb2xvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29sb3IvI3N2Zy1jb2xvcj5cbnZhciBuYW1lcyA9IHRpbnljb2xvci5uYW1lcyA9IHtcbiAgICBhbGljZWJsdWU6IFwiZjBmOGZmXCIsXG4gICAgYW50aXF1ZXdoaXRlOiBcImZhZWJkN1wiLFxuICAgIGFxdWE6IFwiMGZmXCIsXG4gICAgYXF1YW1hcmluZTogXCI3ZmZmZDRcIixcbiAgICBhenVyZTogXCJmMGZmZmZcIixcbiAgICBiZWlnZTogXCJmNWY1ZGNcIixcbiAgICBiaXNxdWU6IFwiZmZlNGM0XCIsXG4gICAgYmxhY2s6IFwiMDAwXCIsXG4gICAgYmxhbmNoZWRhbG1vbmQ6IFwiZmZlYmNkXCIsXG4gICAgYmx1ZTogXCIwMGZcIixcbiAgICBibHVldmlvbGV0OiBcIjhhMmJlMlwiLFxuICAgIGJyb3duOiBcImE1MmEyYVwiLFxuICAgIGJ1cmx5d29vZDogXCJkZWI4ODdcIixcbiAgICBidXJudHNpZW5uYTogXCJlYTdlNWRcIixcbiAgICBjYWRldGJsdWU6IFwiNWY5ZWEwXCIsXG4gICAgY2hhcnRyZXVzZTogXCI3ZmZmMDBcIixcbiAgICBjaG9jb2xhdGU6IFwiZDI2OTFlXCIsXG4gICAgY29yYWw6IFwiZmY3ZjUwXCIsXG4gICAgY29ybmZsb3dlcmJsdWU6IFwiNjQ5NWVkXCIsXG4gICAgY29ybnNpbGs6IFwiZmZmOGRjXCIsXG4gICAgY3JpbXNvbjogXCJkYzE0M2NcIixcbiAgICBjeWFuOiBcIjBmZlwiLFxuICAgIGRhcmtibHVlOiBcIjAwMDA4YlwiLFxuICAgIGRhcmtjeWFuOiBcIjAwOGI4YlwiLFxuICAgIGRhcmtnb2xkZW5yb2Q6IFwiYjg4NjBiXCIsXG4gICAgZGFya2dyYXk6IFwiYTlhOWE5XCIsXG4gICAgZGFya2dyZWVuOiBcIjAwNjQwMFwiLFxuICAgIGRhcmtncmV5OiBcImE5YTlhOVwiLFxuICAgIGRhcmtraGFraTogXCJiZGI3NmJcIixcbiAgICBkYXJrbWFnZW50YTogXCI4YjAwOGJcIixcbiAgICBkYXJrb2xpdmVncmVlbjogXCI1NTZiMmZcIixcbiAgICBkYXJrb3JhbmdlOiBcImZmOGMwMFwiLFxuICAgIGRhcmtvcmNoaWQ6IFwiOTkzMmNjXCIsXG4gICAgZGFya3JlZDogXCI4YjAwMDBcIixcbiAgICBkYXJrc2FsbW9uOiBcImU5OTY3YVwiLFxuICAgIGRhcmtzZWFncmVlbjogXCI4ZmJjOGZcIixcbiAgICBkYXJrc2xhdGVibHVlOiBcIjQ4M2Q4YlwiLFxuICAgIGRhcmtzbGF0ZWdyYXk6IFwiMmY0ZjRmXCIsXG4gICAgZGFya3NsYXRlZ3JleTogXCIyZjRmNGZcIixcbiAgICBkYXJrdHVycXVvaXNlOiBcIjAwY2VkMVwiLFxuICAgIGRhcmt2aW9sZXQ6IFwiOTQwMGQzXCIsXG4gICAgZGVlcHBpbms6IFwiZmYxNDkzXCIsXG4gICAgZGVlcHNreWJsdWU6IFwiMDBiZmZmXCIsXG4gICAgZGltZ3JheTogXCI2OTY5NjlcIixcbiAgICBkaW1ncmV5OiBcIjY5Njk2OVwiLFxuICAgIGRvZGdlcmJsdWU6IFwiMWU5MGZmXCIsXG4gICAgZmlyZWJyaWNrOiBcImIyMjIyMlwiLFxuICAgIGZsb3JhbHdoaXRlOiBcImZmZmFmMFwiLFxuICAgIGZvcmVzdGdyZWVuOiBcIjIyOGIyMlwiLFxuICAgIGZ1Y2hzaWE6IFwiZjBmXCIsXG4gICAgZ2FpbnNib3JvOiBcImRjZGNkY1wiLFxuICAgIGdob3N0d2hpdGU6IFwiZjhmOGZmXCIsXG4gICAgZ29sZDogXCJmZmQ3MDBcIixcbiAgICBnb2xkZW5yb2Q6IFwiZGFhNTIwXCIsXG4gICAgZ3JheTogXCI4MDgwODBcIixcbiAgICBncmVlbjogXCIwMDgwMDBcIixcbiAgICBncmVlbnllbGxvdzogXCJhZGZmMmZcIixcbiAgICBncmV5OiBcIjgwODA4MFwiLFxuICAgIGhvbmV5ZGV3OiBcImYwZmZmMFwiLFxuICAgIGhvdHBpbms6IFwiZmY2OWI0XCIsXG4gICAgaW5kaWFucmVkOiBcImNkNWM1Y1wiLFxuICAgIGluZGlnbzogXCI0YjAwODJcIixcbiAgICBpdm9yeTogXCJmZmZmZjBcIixcbiAgICBraGFraTogXCJmMGU2OGNcIixcbiAgICBsYXZlbmRlcjogXCJlNmU2ZmFcIixcbiAgICBsYXZlbmRlcmJsdXNoOiBcImZmZjBmNVwiLFxuICAgIGxhd25ncmVlbjogXCI3Y2ZjMDBcIixcbiAgICBsZW1vbmNoaWZmb246IFwiZmZmYWNkXCIsXG4gICAgbGlnaHRibHVlOiBcImFkZDhlNlwiLFxuICAgIGxpZ2h0Y29yYWw6IFwiZjA4MDgwXCIsXG4gICAgbGlnaHRjeWFuOiBcImUwZmZmZlwiLFxuICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiBcImZhZmFkMlwiLFxuICAgIGxpZ2h0Z3JheTogXCJkM2QzZDNcIixcbiAgICBsaWdodGdyZWVuOiBcIjkwZWU5MFwiLFxuICAgIGxpZ2h0Z3JleTogXCJkM2QzZDNcIixcbiAgICBsaWdodHBpbms6IFwiZmZiNmMxXCIsXG4gICAgbGlnaHRzYWxtb246IFwiZmZhMDdhXCIsXG4gICAgbGlnaHRzZWFncmVlbjogXCIyMGIyYWFcIixcbiAgICBsaWdodHNreWJsdWU6IFwiODdjZWZhXCIsXG4gICAgbGlnaHRzbGF0ZWdyYXk6IFwiNzg5XCIsXG4gICAgbGlnaHRzbGF0ZWdyZXk6IFwiNzg5XCIsXG4gICAgbGlnaHRzdGVlbGJsdWU6IFwiYjBjNGRlXCIsXG4gICAgbGlnaHR5ZWxsb3c6IFwiZmZmZmUwXCIsXG4gICAgbGltZTogXCIwZjBcIixcbiAgICBsaW1lZ3JlZW46IFwiMzJjZDMyXCIsXG4gICAgbGluZW46IFwiZmFmMGU2XCIsXG4gICAgbWFnZW50YTogXCJmMGZcIixcbiAgICBtYXJvb246IFwiODAwMDAwXCIsXG4gICAgbWVkaXVtYXF1YW1hcmluZTogXCI2NmNkYWFcIixcbiAgICBtZWRpdW1ibHVlOiBcIjAwMDBjZFwiLFxuICAgIG1lZGl1bW9yY2hpZDogXCJiYTU1ZDNcIixcbiAgICBtZWRpdW1wdXJwbGU6IFwiOTM3MGRiXCIsXG4gICAgbWVkaXVtc2VhZ3JlZW46IFwiM2NiMzcxXCIsXG4gICAgbWVkaXVtc2xhdGVibHVlOiBcIjdiNjhlZVwiLFxuICAgIG1lZGl1bXNwcmluZ2dyZWVuOiBcIjAwZmE5YVwiLFxuICAgIG1lZGl1bXR1cnF1b2lzZTogXCI0OGQxY2NcIixcbiAgICBtZWRpdW12aW9sZXRyZWQ6IFwiYzcxNTg1XCIsXG4gICAgbWlkbmlnaHRibHVlOiBcIjE5MTk3MFwiLFxuICAgIG1pbnRjcmVhbTogXCJmNWZmZmFcIixcbiAgICBtaXN0eXJvc2U6IFwiZmZlNGUxXCIsXG4gICAgbW9jY2FzaW46IFwiZmZlNGI1XCIsXG4gICAgbmF2YWpvd2hpdGU6IFwiZmZkZWFkXCIsXG4gICAgbmF2eTogXCIwMDAwODBcIixcbiAgICBvbGRsYWNlOiBcImZkZjVlNlwiLFxuICAgIG9saXZlOiBcIjgwODAwMFwiLFxuICAgIG9saXZlZHJhYjogXCI2YjhlMjNcIixcbiAgICBvcmFuZ2U6IFwiZmZhNTAwXCIsXG4gICAgb3JhbmdlcmVkOiBcImZmNDUwMFwiLFxuICAgIG9yY2hpZDogXCJkYTcwZDZcIixcbiAgICBwYWxlZ29sZGVucm9kOiBcImVlZThhYVwiLFxuICAgIHBhbGVncmVlbjogXCI5OGZiOThcIixcbiAgICBwYWxldHVycXVvaXNlOiBcImFmZWVlZVwiLFxuICAgIHBhbGV2aW9sZXRyZWQ6IFwiZGI3MDkzXCIsXG4gICAgcGFwYXlhd2hpcDogXCJmZmVmZDVcIixcbiAgICBwZWFjaHB1ZmY6IFwiZmZkYWI5XCIsXG4gICAgcGVydTogXCJjZDg1M2ZcIixcbiAgICBwaW5rOiBcImZmYzBjYlwiLFxuICAgIHBsdW06IFwiZGRhMGRkXCIsXG4gICAgcG93ZGVyYmx1ZTogXCJiMGUwZTZcIixcbiAgICBwdXJwbGU6IFwiODAwMDgwXCIsXG4gICAgcmViZWNjYXB1cnBsZTogXCI2NjMzOTlcIixcbiAgICByZWQ6IFwiZjAwXCIsXG4gICAgcm9zeWJyb3duOiBcImJjOGY4ZlwiLFxuICAgIHJveWFsYmx1ZTogXCI0MTY5ZTFcIixcbiAgICBzYWRkbGVicm93bjogXCI4YjQ1MTNcIixcbiAgICBzYWxtb246IFwiZmE4MDcyXCIsXG4gICAgc2FuZHlicm93bjogXCJmNGE0NjBcIixcbiAgICBzZWFncmVlbjogXCIyZThiNTdcIixcbiAgICBzZWFzaGVsbDogXCJmZmY1ZWVcIixcbiAgICBzaWVubmE6IFwiYTA1MjJkXCIsXG4gICAgc2lsdmVyOiBcImMwYzBjMFwiLFxuICAgIHNreWJsdWU6IFwiODdjZWViXCIsXG4gICAgc2xhdGVibHVlOiBcIjZhNWFjZFwiLFxuICAgIHNsYXRlZ3JheTogXCI3MDgwOTBcIixcbiAgICBzbGF0ZWdyZXk6IFwiNzA4MDkwXCIsXG4gICAgc25vdzogXCJmZmZhZmFcIixcbiAgICBzcHJpbmdncmVlbjogXCIwMGZmN2ZcIixcbiAgICBzdGVlbGJsdWU6IFwiNDY4MmI0XCIsXG4gICAgdGFuOiBcImQyYjQ4Y1wiLFxuICAgIHRlYWw6IFwiMDA4MDgwXCIsXG4gICAgdGhpc3RsZTogXCJkOGJmZDhcIixcbiAgICB0b21hdG86IFwiZmY2MzQ3XCIsXG4gICAgdHVycXVvaXNlOiBcIjQwZTBkMFwiLFxuICAgIHZpb2xldDogXCJlZTgyZWVcIixcbiAgICB3aGVhdDogXCJmNWRlYjNcIixcbiAgICB3aGl0ZTogXCJmZmZcIixcbiAgICB3aGl0ZXNtb2tlOiBcImY1ZjVmNVwiLFxuICAgIHllbGxvdzogXCJmZjBcIixcbiAgICB5ZWxsb3dncmVlbjogXCI5YWNkMzJcIlxufTtcblxuLy8gTWFrZSBpdCBlYXN5IHRvIGFjY2VzcyBjb2xvcnMgdmlhIGBoZXhOYW1lc1toZXhdYFxudmFyIGhleE5hbWVzID0gdGlueWNvbG9yLmhleE5hbWVzID0gZmxpcChuYW1lcyk7XG5cblxuLy8gVXRpbGl0aWVzXG4vLyAtLS0tLS0tLS1cblxuLy8gYHsgJ25hbWUxJzogJ3ZhbDEnIH1gIGJlY29tZXMgYHsgJ3ZhbDEnOiAnbmFtZTEnIH1gXG5mdW5jdGlvbiBmbGlwKG8pIHtcbiAgICB2YXIgZmxpcHBlZCA9IHsgfTtcbiAgICBmb3IgKHZhciBpIGluIG8pIHtcbiAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkoaSkpIHtcbiAgICAgICAgICAgIGZsaXBwZWRbb1tpXV0gPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmbGlwcGVkO1xufVxuXG4vLyBSZXR1cm4gYSB2YWxpZCBhbHBoYSB2YWx1ZSBbMCwxXSB3aXRoIGFsbCBpbnZhbGlkIHZhbHVlcyBiZWluZyBzZXQgdG8gMVxuZnVuY3Rpb24gYm91bmRBbHBoYShhKSB7XG4gICAgYSA9IHBhcnNlRmxvYXQoYSk7XG5cbiAgICBpZiAoaXNOYU4oYSkgfHwgYSA8IDAgfHwgYSA+IDEpIHtcbiAgICAgICAgYSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGE7XG59XG5cbi8vIFRha2UgaW5wdXQgZnJvbSBbMCwgbl0gYW5kIHJldHVybiBpdCBhcyBbMCwgMV1cbmZ1bmN0aW9uIGJvdW5kMDEobiwgbWF4KSB7XG4gICAgaWYgKGlzT25lUG9pbnRaZXJvKG4pKSB7IG4gPSBcIjEwMCVcIjsgfVxuXG4gICAgdmFyIHByb2Nlc3NQZXJjZW50ID0gaXNQZXJjZW50YWdlKG4pO1xuICAgIG4gPSBtYXRoTWluKG1heCwgbWF0aE1heCgwLCBwYXJzZUZsb2F0KG4pKSk7XG5cbiAgICAvLyBBdXRvbWF0aWNhbGx5IGNvbnZlcnQgcGVyY2VudGFnZSBpbnRvIG51bWJlclxuICAgIGlmIChwcm9jZXNzUGVyY2VudCkge1xuICAgICAgICBuID0gcGFyc2VJbnQobiAqIG1heCwgMTApIC8gMTAwO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnNcbiAgICBpZiAoKE1hdGguYWJzKG4gLSBtYXgpIDwgMC4wMDAwMDEpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgaW50byBbMCwgMV0gcmFuZ2UgaWYgaXQgaXNuJ3QgYWxyZWFkeVxuICAgIHJldHVybiAobiAlIG1heCkgLyBwYXJzZUZsb2F0KG1heCk7XG59XG5cbi8vIEZvcmNlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMVxuZnVuY3Rpb24gY2xhbXAwMSh2YWwpIHtcbiAgICByZXR1cm4gbWF0aE1pbigxLCBtYXRoTWF4KDAsIHZhbCkpO1xufVxuXG4vLyBQYXJzZSBhIGJhc2UtMTYgaGV4IHZhbHVlIGludG8gYSBiYXNlLTEwIGludGVnZXJcbmZ1bmN0aW9uIHBhcnNlSW50RnJvbUhleCh2YWwpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQodmFsLCAxNik7XG59XG5cbi8vIE5lZWQgdG8gaGFuZGxlIDEuMCBhcyAxMDAlLCBzaW5jZSBvbmNlIGl0IGlzIGEgbnVtYmVyLCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gaXQgYW5kIDFcbi8vIDxodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzc0MjIwNzIvamF2YXNjcmlwdC1ob3ctdG8tZGV0ZWN0LW51bWJlci1hcy1hLWRlY2ltYWwtaW5jbHVkaW5nLTEtMD5cbmZ1bmN0aW9uIGlzT25lUG9pbnRaZXJvKG4pIHtcbiAgICByZXR1cm4gdHlwZW9mIG4gPT0gXCJzdHJpbmdcIiAmJiBuLmluZGV4T2YoJy4nKSAhPSAtMSAmJiBwYXJzZUZsb2F0KG4pID09PSAxO1xufVxuXG4vLyBDaGVjayB0byBzZWUgaWYgc3RyaW5nIHBhc3NlZCBpbiBpcyBhIHBlcmNlbnRhZ2VcbmZ1bmN0aW9uIGlzUGVyY2VudGFnZShuKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBuID09PSBcInN0cmluZ1wiICYmIG4uaW5kZXhPZignJScpICE9IC0xO1xufVxuXG4vLyBGb3JjZSBhIGhleCB2YWx1ZSB0byBoYXZlIDIgY2hhcmFjdGVyc1xuZnVuY3Rpb24gcGFkMihjKSB7XG4gICAgcmV0dXJuIGMubGVuZ3RoID09IDEgPyAnMCcgKyBjIDogJycgKyBjO1xufVxuXG4vLyBSZXBsYWNlIGEgZGVjaW1hbCB3aXRoIGl0J3MgcGVyY2VudGFnZSB2YWx1ZVxuZnVuY3Rpb24gY29udmVydFRvUGVyY2VudGFnZShuKSB7XG4gICAgaWYgKG4gPD0gMSkge1xuICAgICAgICBuID0gKG4gKiAxMDApICsgXCIlXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG47XG59XG5cbi8vIENvbnZlcnRzIGEgZGVjaW1hbCB0byBhIGhleCB2YWx1ZVxuZnVuY3Rpb24gY29udmVydERlY2ltYWxUb0hleChkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChkKSAqIDI1NSkudG9TdHJpbmcoMTYpO1xufVxuLy8gQ29udmVydHMgYSBoZXggdmFsdWUgdG8gYSBkZWNpbWFsXG5mdW5jdGlvbiBjb252ZXJ0SGV4VG9EZWNpbWFsKGgpIHtcbiAgICByZXR1cm4gKHBhcnNlSW50RnJvbUhleChoKSAvIDI1NSk7XG59XG5cbnZhciBtYXRjaGVycyA9IChmdW5jdGlvbigpIHtcblxuICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jaW50ZWdlcnM+XG4gICAgdmFyIENTU19JTlRFR0VSID0gXCJbLVxcXFwrXT9cXFxcZCslP1wiO1xuXG4gICAgLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNudW1iZXItdmFsdWU+XG4gICAgdmFyIENTU19OVU1CRVIgPSBcIlstXFxcXCtdP1xcXFxkKlxcXFwuXFxcXGQrJT9cIjtcblxuICAgIC8vIEFsbG93IHBvc2l0aXZlL25lZ2F0aXZlIGludGVnZXIvbnVtYmVyLiAgRG9uJ3QgY2FwdHVyZSB0aGUgZWl0aGVyL29yLCBqdXN0IHRoZSBlbnRpcmUgb3V0Y29tZS5cbiAgICB2YXIgQ1NTX1VOSVQgPSBcIig/OlwiICsgQ1NTX05VTUJFUiArIFwiKXwoPzpcIiArIENTU19JTlRFR0VSICsgXCIpXCI7XG5cbiAgICAvLyBBY3R1YWwgbWF0Y2hpbmcuXG4gICAgLy8gUGFyZW50aGVzZXMgYW5kIGNvbW1hcyBhcmUgb3B0aW9uYWwsIGJ1dCBub3QgcmVxdWlyZWQuXG4gICAgLy8gV2hpdGVzcGFjZSBjYW4gdGFrZSB0aGUgcGxhY2Ugb2YgY29tbWFzIG9yIG9wZW5pbmcgcGFyZW5cbiAgICB2YXIgUEVSTUlTU0lWRV9NQVRDSDMgPSBcIltcXFxcc3xcXFxcKF0rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilcXFxccypcXFxcKT9cIjtcbiAgICB2YXIgUEVSTUlTU0lWRV9NQVRDSDQgPSBcIltcXFxcc3xcXFxcKF0rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilbLHxcXFxcc10rKFwiICsgQ1NTX1VOSVQgKyBcIilcXFxccypcXFxcKT9cIjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIENTU19VTklUOiBuZXcgUmVnRXhwKENTU19VTklUKSxcbiAgICAgICAgcmdiOiBuZXcgUmVnRXhwKFwicmdiXCIgKyBQRVJNSVNTSVZFX01BVENIMyksXG4gICAgICAgIHJnYmE6IG5ldyBSZWdFeHAoXCJyZ2JhXCIgKyBQRVJNSVNTSVZFX01BVENINCksXG4gICAgICAgIGhzbDogbmV3IFJlZ0V4cChcImhzbFwiICsgUEVSTUlTU0lWRV9NQVRDSDMpLFxuICAgICAgICBoc2xhOiBuZXcgUmVnRXhwKFwiaHNsYVwiICsgUEVSTUlTU0lWRV9NQVRDSDQpLFxuICAgICAgICBoc3Y6IG5ldyBSZWdFeHAoXCJoc3ZcIiArIFBFUk1JU1NJVkVfTUFUQ0gzKSxcbiAgICAgICAgaHN2YTogbmV3IFJlZ0V4cChcImhzdmFcIiArIFBFUk1JU1NJVkVfTUFUQ0g0KSxcbiAgICAgICAgaGV4MzogL14jPyhbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KSQvLFxuICAgICAgICBoZXg2OiAvXiM/KFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC8sXG4gICAgICAgIGhleDQ6IC9eIz8oWzAtOWEtZkEtRl17MX0pKFswLTlhLWZBLUZdezF9KShbMC05YS1mQS1GXXsxfSkoWzAtOWEtZkEtRl17MX0pJC8sXG4gICAgICAgIGhleDg6IC9eIz8oWzAtOWEtZkEtRl17Mn0pKFswLTlhLWZBLUZdezJ9KShbMC05YS1mQS1GXXsyfSkoWzAtOWEtZkEtRl17Mn0pJC9cbiAgICB9O1xufSkoKTtcblxuLy8gYGlzVmFsaWRDU1NVbml0YFxuLy8gVGFrZSBpbiBhIHNpbmdsZSBzdHJpbmcgLyBudW1iZXIgYW5kIGNoZWNrIHRvIHNlZSBpZiBpdCBsb29rcyBsaWtlIGEgQ1NTIHVuaXRcbi8vIChzZWUgYG1hdGNoZXJzYCBhYm92ZSBmb3IgZGVmaW5pdGlvbikuXG5mdW5jdGlvbiBpc1ZhbGlkQ1NTVW5pdChjb2xvcikge1xuICAgIHJldHVybiAhIW1hdGNoZXJzLkNTU19VTklULmV4ZWMoY29sb3IpO1xufVxuXG4vLyBgc3RyaW5nSW5wdXRUb09iamVjdGBcbi8vIFBlcm1pc3NpdmUgc3RyaW5nIHBhcnNpbmcuICBUYWtlIGluIGEgbnVtYmVyIG9mIGZvcm1hdHMsIGFuZCBvdXRwdXQgYW4gb2JqZWN0XG4vLyBiYXNlZCBvbiBkZXRlY3RlZCBmb3JtYXQuICBSZXR1cm5zIGB7IHIsIGcsIGIgfWAgb3IgYHsgaCwgcywgbCB9YCBvciBgeyBoLCBzLCB2fWBcbmZ1bmN0aW9uIHN0cmluZ0lucHV0VG9PYmplY3QoY29sb3IpIHtcblxuICAgIGNvbG9yID0gY29sb3IucmVwbGFjZSh0cmltTGVmdCwnJykucmVwbGFjZSh0cmltUmlnaHQsICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBuYW1lZCA9IGZhbHNlO1xuICAgIGlmIChuYW1lc1tjb2xvcl0pIHtcbiAgICAgICAgY29sb3IgPSBuYW1lc1tjb2xvcl07XG4gICAgICAgIG5hbWVkID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29sb3IgPT0gJ3RyYW5zcGFyZW50Jykge1xuICAgICAgICByZXR1cm4geyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwLCBmb3JtYXQ6IFwibmFtZVwiIH07XG4gICAgfVxuXG4gICAgLy8gVHJ5IHRvIG1hdGNoIHN0cmluZyBpbnB1dCB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zLlxuICAgIC8vIEtlZXAgbW9zdCBvZiB0aGUgbnVtYmVyIGJvdW5kaW5nIG91dCBvZiB0aGlzIGZ1bmN0aW9uIC0gZG9uJ3Qgd29ycnkgYWJvdXQgWzAsMV0gb3IgWzAsMTAwXSBvciBbMCwzNjBdXG4gICAgLy8gSnVzdCByZXR1cm4gYW4gb2JqZWN0IGFuZCBsZXQgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb25zIGhhbmRsZSB0aGF0LlxuICAgIC8vIFRoaXMgd2F5IHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgc2FtZSB3aGV0aGVyIHRoZSB0aW55Y29sb3IgaXMgaW5pdGlhbGl6ZWQgd2l0aCBzdHJpbmcgb3Igb2JqZWN0LlxuICAgIHZhciBtYXRjaDtcbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMucmdiLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRjaFsxXSwgZzogbWF0Y2hbMl0sIGI6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5yZ2JhLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyByOiBtYXRjaFsxXSwgZzogbWF0Y2hbMl0sIGI6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMuaHNsLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIGw6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5oc2xhLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIGw6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMuaHN2LmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIHY6IG1hdGNoWzNdIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5oc3ZhLmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4geyBoOiBtYXRjaFsxXSwgczogbWF0Y2hbMl0sIHY6IG1hdGNoWzNdLCBhOiBtYXRjaFs0XSB9O1xuICAgIH1cbiAgICBpZiAoKG1hdGNoID0gbWF0Y2hlcnMuaGV4OC5leGVjKGNvbG9yKSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHI6IHBhcnNlSW50RnJvbUhleChtYXRjaFsxXSksXG4gICAgICAgICAgICBnOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMl0pLFxuICAgICAgICAgICAgYjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzNdKSxcbiAgICAgICAgICAgIGE6IGNvbnZlcnRIZXhUb0RlY2ltYWwobWF0Y2hbNF0pLFxuICAgICAgICAgICAgZm9ybWF0OiBuYW1lZCA/IFwibmFtZVwiIDogXCJoZXg4XCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKChtYXRjaCA9IG1hdGNoZXJzLmhleDYuZXhlYyhjb2xvcikpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMV0pLFxuICAgICAgICAgICAgZzogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzJdKSxcbiAgICAgICAgICAgIGI6IHBhcnNlSW50RnJvbUhleChtYXRjaFszXSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gXCJuYW1lXCIgOiBcImhleFwiXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmICgobWF0Y2ggPSBtYXRjaGVycy5oZXg0LmV4ZWMoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzFdICsgJycgKyBtYXRjaFsxXSksXG4gICAgICAgICAgICBnOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMl0gKyAnJyArIG1hdGNoWzJdKSxcbiAgICAgICAgICAgIGI6IHBhcnNlSW50RnJvbUhleChtYXRjaFszXSArICcnICsgbWF0Y2hbM10pLFxuICAgICAgICAgICAgYTogY29udmVydEhleFRvRGVjaW1hbChtYXRjaFs0XSArICcnICsgbWF0Y2hbNF0pLFxuICAgICAgICAgICAgZm9ybWF0OiBuYW1lZCA/IFwibmFtZVwiIDogXCJoZXg4XCJcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKChtYXRjaCA9IG1hdGNoZXJzLmhleDMuZXhlYyhjb2xvcikpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByOiBwYXJzZUludEZyb21IZXgobWF0Y2hbMV0gKyAnJyArIG1hdGNoWzFdKSxcbiAgICAgICAgICAgIGc6IHBhcnNlSW50RnJvbUhleChtYXRjaFsyXSArICcnICsgbWF0Y2hbMl0pLFxuICAgICAgICAgICAgYjogcGFyc2VJbnRGcm9tSGV4KG1hdGNoWzNdICsgJycgKyBtYXRjaFszXSksXG4gICAgICAgICAgICBmb3JtYXQ6IG5hbWVkID8gXCJuYW1lXCIgOiBcImhleFwiXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdDQUcyUGFybXMocGFybXMpIHtcbiAgICAvLyByZXR1cm4gdmFsaWQgV0NBRzIgcGFybXMgZm9yIGlzUmVhZGFibGUuXG4gICAgLy8gSWYgaW5wdXQgcGFybXMgYXJlIGludmFsaWQsIHJldHVybiB7XCJsZXZlbFwiOlwiQUFcIiwgXCJzaXplXCI6XCJzbWFsbFwifVxuICAgIHZhciBsZXZlbCwgc2l6ZTtcbiAgICBwYXJtcyA9IHBhcm1zIHx8IHtcImxldmVsXCI6XCJBQVwiLCBcInNpemVcIjpcInNtYWxsXCJ9O1xuICAgIGxldmVsID0gKHBhcm1zLmxldmVsIHx8IFwiQUFcIikudG9VcHBlckNhc2UoKTtcbiAgICBzaXplID0gKHBhcm1zLnNpemUgfHwgXCJzbWFsbFwiKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsZXZlbCAhPT0gXCJBQVwiICYmIGxldmVsICE9PSBcIkFBQVwiKSB7XG4gICAgICAgIGxldmVsID0gXCJBQVwiO1xuICAgIH1cbiAgICBpZiAoc2l6ZSAhPT0gXCJzbWFsbFwiICYmIHNpemUgIT09IFwibGFyZ2VcIikge1xuICAgICAgICBzaXplID0gXCJzbWFsbFwiO1xuICAgIH1cbiAgICByZXR1cm4ge1wibGV2ZWxcIjpsZXZlbCwgXCJzaXplXCI6c2l6ZX07XG59XG5cbi8vIE5vZGU6IEV4cG9ydCBmdW5jdGlvblxuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHRpbnljb2xvcjtcbn1cbi8vIEFNRC9yZXF1aXJlanM6IERlZmluZSB0aGUgbW9kdWxlXG5lbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICBkZWZpbmUoZnVuY3Rpb24gKCkge3JldHVybiB0aW55Y29sb3I7fSk7XG59XG4vLyBCcm93c2VyOiBFeHBvc2UgdG8gd2luZG93XG5lbHNlIHtcbiAgICB3aW5kb3cudGlueWNvbG9yID0gdGlueWNvbG9yO1xufVxuXG59KShNYXRoKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_tinycolor2@1.4.2@tinycolor2/tinycolor.js\n"); /***/ }), /***/ "./node_modules/_tslib@2.3.1@tslib/tslib.es6.js": /*!******************************************************!*\ !*** ./node_modules/_tslib@2.3.1@tslib/tslib.es6.js ***! \******************************************************/ /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__extends\", function() { return __extends; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__rest\", function() { return __rest; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__decorate\", function() { return __decorate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__param\", function() { return __param; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__metadata\", function() { return __metadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__awaiter\", function() { return __awaiter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__generator\", function() { return __generator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__createBinding\", function() { return __createBinding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__exportStar\", function() { return __exportStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__values\", function() { return __values; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__read\", function() { return __read; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spread\", function() { return __spread; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function() { return __spreadArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__spreadArray\", function() { return __spreadArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__await\", function() { return __await; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function() { return __asyncGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function() { return __asyncDelegator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function() { return __asyncValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function() { return __makeTemplateObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importStar\", function() { return __importStar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__importDefault\", function() { return __importDefault; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function() { return __classPrivateFieldGet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function() { return __classPrivateFieldSet; });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nfunction __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX3RzbGliQDIuMy4xQHRzbGliL3RzbGliLmVzNi5qcz9hN2EwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxnQkFBZ0Isc0NBQXNDLGlCQUFpQixFQUFFO0FBQ25GLHlCQUF5Qiw4RUFBOEU7QUFDdkc7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTs7QUFFTztBQUNQO0FBQ0EsZ0RBQWdELE9BQU87QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxjQUFjO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsNENBQTRDLFFBQVE7QUFDcEQ7QUFDQTs7QUFFTztBQUNQLG1DQUFtQyxvQ0FBb0M7QUFDdkU7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1AsMkJBQTJCLCtEQUErRCxnQkFBZ0IsRUFBRSxFQUFFO0FBQzlHO0FBQ0EsbUNBQW1DLE1BQU0sNkJBQTZCLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDakcsa0NBQWtDLE1BQU0saUNBQWlDLEVBQUUsWUFBWSxXQUFXLEVBQUU7QUFDcEcsK0JBQStCLHFGQUFxRjtBQUNwSDtBQUNBLEtBQUs7QUFDTDs7QUFFTztBQUNQLGFBQWEsNkJBQTZCLDBCQUEwQixhQUFhLEVBQUUscUJBQXFCO0FBQ3hHLGdCQUFnQixxREFBcUQsb0VBQW9FLGFBQWEsRUFBRTtBQUN4SixzQkFBc0Isc0JBQXNCLHFCQUFxQixHQUFHO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QyxrQ0FBa0MsU0FBUztBQUMzQyxrQ0FBa0MsV0FBVyxVQUFVO0FBQ3ZELHlDQUF5QyxjQUFjO0FBQ3ZEO0FBQ0EsNkdBQTZHLE9BQU8sVUFBVTtBQUM5SCxnRkFBZ0YsaUJBQWlCLE9BQU87QUFDeEcsd0RBQXdELGdCQUFnQixRQUFRLE9BQU87QUFDdkYsOENBQThDLGdCQUFnQixnQkFBZ0IsT0FBTztBQUNyRjtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsU0FBUyxZQUFZLGFBQWEsT0FBTyxFQUFFLFVBQVUsV0FBVztBQUNoRSxtQ0FBbUMsU0FBUztBQUM1QztBQUNBOztBQUVPO0FBQ1A7QUFDQSxrQ0FBa0Msb0NBQW9DLGFBQWEsRUFBRSxFQUFFO0FBQ3ZGLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE1BQU0sZ0JBQWdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNCQUFzQjtBQUN2QztBQUNBO0FBQ0E7O0FBRUE7QUFDTztBQUNQLDRCQUE0QixzQkFBc0I7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ087QUFDUCxpREFBaUQsUUFBUTtBQUN6RCx3Q0FBd0MsUUFBUTtBQUNoRCx3REFBd0QsUUFBUTtBQUNoRTtBQUNBO0FBQ0E7O0FBRU87QUFDUCw0RUFBNEUsT0FBTztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsaUJBQWlCLHNGQUFzRixhQUFhLEVBQUU7QUFDdEgsc0JBQXNCLGdDQUFnQyxxQ0FBcUMsMENBQTBDLEVBQUUsRUFBRSxHQUFHO0FBQzVJLDJCQUEyQixNQUFNLGVBQWUsRUFBRSxZQUFZLG9CQUFvQixFQUFFO0FBQ3BGLHNCQUFzQixvR0FBb0c7QUFDMUgsNkJBQTZCLHVCQUF1QjtBQUNwRCw0QkFBNEIsd0JBQXdCO0FBQ3BELDJCQUEyQix5REFBeUQ7QUFDcEY7O0FBRU87QUFDUDtBQUNBLGlCQUFpQiw0Q0FBNEMsU0FBUyxFQUFFLHFEQUFxRCxhQUFhLEVBQUU7QUFDNUkseUJBQXlCLDZCQUE2QixvQkFBb0IsZ0RBQWdELGdCQUFnQixFQUFFLEtBQUs7QUFDako7O0FBRU87QUFDUDtBQUNBO0FBQ0EsMkdBQTJHLHNGQUFzRixhQUFhLEVBQUU7QUFDaE4sc0JBQXNCLDhCQUE4QixnREFBZ0QsdURBQXVELEVBQUUsRUFBRSxHQUFHO0FBQ2xLLDRDQUE0QyxzQ0FBc0MsVUFBVSxvQkFBb0IsRUFBRSxFQUFFLFVBQVU7QUFDOUg7O0FBRU87QUFDUCxnQ0FBZ0MsdUNBQXVDLGFBQWEsRUFBRSxFQUFFLE9BQU8sa0JBQWtCO0FBQ2pIO0FBQ0E7O0FBRUE7QUFDQSx5Q0FBeUMsNkJBQTZCO0FBQ3RFLENBQUM7QUFDRDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsNENBQTRDO0FBQzVDOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL190c2xpYkAyLjMuMUB0c2xpYi90c2xpYi5lczYuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\n"); /***/ }), /***/ "./node_modules/_webpack@4.46.0@webpack/buildin/global.js": /*!***********************************!*\ !*** (webpack)/buildin/global.js ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzP2NkMDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL193ZWJwYWNrQDQuNDYuMEB3ZWJwYWNrL2J1aWxkaW4vZ2xvYmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_webpack@4.46.0@webpack/buildin/global.js\n"); /***/ }), /***/ "./node_modules/_webpack@4.46.0@webpack/buildin/module.js": /*!***********************************!*\ !*** (webpack)/buildin/module.js ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzP2NlZDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL193ZWJwYWNrQDQuNDYuMEB3ZWJwYWNrL2J1aWxkaW4vbW9kdWxlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0aWYgKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XG5cdFx0bW9kdWxlLnBhdGhzID0gW107XG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XG5cdFx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xuXHR9XG5cdHJldHVybiBtb2R1bGU7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_webpack@4.46.0@webpack/buildin/module.js\n"); /***/ }), /***/ "./src/BehaviorHelper/behaviorIssueHelper.ts": /*!***************************************************!*\ !*** ./src/BehaviorHelper/behaviorIssueHelper.ts ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SolveZoomCanvasWithLeak = exports.SolveDragCanvasWithLeak = exports.SolveBrushSelectDrag = exports.SolveNodeAppendagesDrag = exports.DetermineNodeDrag = void 0;\r\nconst eventBus_1 = __webpack_require__(/*! ../Common/eventBus */ \"./src/Common/eventBus.ts\");\r\nconst SVNode_1 = __webpack_require__(/*! ../Model/SVNode */ \"./src/Model/SVNode.ts\");\r\nconst checkNodeDragAlone = function (node, dragNodeOption) {\r\n const nodeSourceType = node.sourceType;\r\n if (Array.isArray(dragNodeOption)) {\r\n return dragNodeOption.includes(nodeSourceType);\r\n }\r\n if (dragNodeOption === undefined || dragNodeOption === true) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nexports.DetermineNodeDrag = function (layoutGroupTable, node, brushSelectedModels) {\r\n var _a;\r\n const layoutGroup = layoutGroupTable.get(node.group), dragNodeOption = (_a = layoutGroup.options.behavior) === null || _a === void 0 ? void 0 : _a.dragNode, canNodeDragAlone = checkNodeDragAlone(node, dragNodeOption);\r\n if (canNodeDragAlone) {\r\n return true;\r\n }\r\n const nodeSourceType = node.sourceType, nodeModelType = node.getModelType(), modelList = layoutGroup[nodeModelType].filter(item => item.sourceType === nodeSourceType), brushSelectedSameTypeModels = brushSelectedModels.filter(item => {\r\n return item.group === node.group &&\r\n item.getModelType() === nodeModelType &&\r\n item.sourceType === nodeSourceType;\r\n });\r\n return modelList.length === brushSelectedSameTypeModels.length;\r\n};\r\nfunction SolveNodeAppendagesDrag(viewContainer) {\r\n const g6Instance = viewContainer.getG6Instance();\r\n g6Instance.on('node:dragstart', event => {\r\n let node = event.item['SVModel'];\r\n if (node instanceof SVNode_1.SVNode === false) {\r\n return;\r\n }\r\n const isNodeSelected = viewContainer.brushSelectedModels.find(item => item.id === node.id);\r\n if (isNodeSelected === undefined) {\r\n viewContainer.brushSelectedModels.forEach(item => {\r\n item.setSelectedState(false);\r\n if (item instanceof SVNode_1.SVNode) {\r\n item.appendages.forEach(appendage => appendage.setSelectedState(false));\r\n }\r\n });\r\n viewContainer.brushSelectedModels.length = 0;\r\n }\r\n });\r\n g6Instance.on('node:dragend', event => {\r\n let node = event.item['SVModel'];\r\n if (node instanceof SVNode_1.SVNode === false) {\r\n return;\r\n }\r\n const isNodeSelected = viewContainer.brushSelectedModels.find(item => item.id === node.id);\r\n if (isNodeSelected === undefined) {\r\n node.setSelectedState(false);\r\n node.set({\r\n x: node.G6Item.getModel().x,\r\n y: node.G6Item.getModel().y\r\n });\r\n node.appendages.forEach(item => {\r\n item.setSelectedState(false);\r\n item.set({\r\n x: item.G6Item.getModel().x,\r\n y: item.G6Item.getModel().y\r\n });\r\n });\r\n }\r\n viewContainer.brushSelectedModels.forEach(item => {\r\n item.set({\r\n x: item.G6Item.getModel().x,\r\n y: item.G6Item.getModel().y\r\n });\r\n if (item instanceof SVNode_1.SVNode) {\r\n item.appendages.forEach(appendage => {\r\n appendage.set({\r\n x: appendage.G6Item.getModel().x,\r\n y: appendage.G6Item.getModel().y\r\n });\r\n });\r\n }\r\n });\r\n });\r\n}\r\nexports.SolveNodeAppendagesDrag = SolveNodeAppendagesDrag;\r\nfunction SolveBrushSelectDrag(viewContainer) {\r\n const g6Instance = viewContainer.getG6Instance();\r\n g6Instance.on('nodeselectchange', event => {\r\n const selectedItems = event.selectedItems, tmpSelectedModelList = [];\r\n if (event.target) {\r\n return;\r\n }\r\n viewContainer.brushSelectedModels.length = 0;\r\n selectedItems.nodes.forEach(item => {\r\n tmpSelectedModelList.push(item['SVModel']);\r\n });\r\n selectedItems.nodes.forEach(item => {\r\n const node = item['SVModel'];\r\n if (exports.DetermineNodeDrag(viewContainer.getLayoutGroupTable(), node, tmpSelectedModelList)) {\r\n viewContainer.brushSelectedModels.push(node);\r\n }\r\n else {\r\n node.setSelectedState(false);\r\n }\r\n });\r\n });\r\n}\r\nexports.SolveBrushSelectDrag = SolveBrushSelectDrag;\r\nfunction SolveDragCanvasWithLeak(viewContainer) {\r\n let g6Instance = viewContainer.getG6Instance(), prevDy = 0;\r\n g6Instance.on('viewportchange', event => {\r\n if (event.action !== 'translate') {\r\n return false;\r\n }\r\n let translateX = event.matrix[7], dy = translateX - prevDy;\r\n prevDy = translateX;\r\n viewContainer.leakAreaY = viewContainer.leakAreaY + dy;\r\n if (viewContainer.hasLeak) {\r\n eventBus_1.EventBus.emit('onLeakAreaUpdate', {\r\n leakAreaY: viewContainer.leakAreaY,\r\n hasLeak: viewContainer.hasLeak\r\n });\r\n }\r\n });\r\n}\r\nexports.SolveDragCanvasWithLeak = SolveDragCanvasWithLeak;\r\nfunction SolveZoomCanvasWithLeak(viewContainer) {\r\n}\r\nexports.SolveZoomCanvasWithLeak = SolveZoomCanvasWithLeak;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQmVoYXZpb3JIZWxwZXIvYmVoYXZpb3JJc3N1ZUhlbHBlci50cz85ZTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxtQkFBbUIsbUJBQU8sQ0FBQyxvREFBb0I7QUFDL0MsaUJBQWlCLG1CQUFPLENBQUMsOENBQWlCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9CZWhhdmlvckhlbHBlci9iZWhhdmlvcklzc3VlSGVscGVyLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5Tb2x2ZVpvb21DYW52YXNXaXRoTGVhayA9IGV4cG9ydHMuU29sdmVEcmFnQ2FudmFzV2l0aExlYWsgPSBleHBvcnRzLlNvbHZlQnJ1c2hTZWxlY3REcmFnID0gZXhwb3J0cy5Tb2x2ZU5vZGVBcHBlbmRhZ2VzRHJhZyA9IGV4cG9ydHMuRGV0ZXJtaW5lTm9kZURyYWcgPSB2b2lkIDA7XHJcbmNvbnN0IGV2ZW50QnVzXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL2V2ZW50QnVzXCIpO1xyXG5jb25zdCBTVk5vZGVfMSA9IHJlcXVpcmUoXCIuLi9Nb2RlbC9TVk5vZGVcIik7XHJcbmNvbnN0IGNoZWNrTm9kZURyYWdBbG9uZSA9IGZ1bmN0aW9uIChub2RlLCBkcmFnTm9kZU9wdGlvbikge1xyXG4gICAgY29uc3Qgbm9kZVNvdXJjZVR5cGUgPSBub2RlLnNvdXJjZVR5cGU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkcmFnTm9kZU9wdGlvbikpIHtcclxuICAgICAgICByZXR1cm4gZHJhZ05vZGVPcHRpb24uaW5jbHVkZXMobm9kZVNvdXJjZVR5cGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGRyYWdOb2RlT3B0aW9uID09PSB1bmRlZmluZWQgfHwgZHJhZ05vZGVPcHRpb24gPT09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufTtcclxuZXhwb3J0cy5EZXRlcm1pbmVOb2RlRHJhZyA9IGZ1bmN0aW9uIChsYXlvdXRHcm91cFRhYmxlLCBub2RlLCBicnVzaFNlbGVjdGVkTW9kZWxzKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICBjb25zdCBsYXlvdXRHcm91cCA9IGxheW91dEdyb3VwVGFibGUuZ2V0KG5vZGUuZ3JvdXApLCBkcmFnTm9kZU9wdGlvbiA9IChfYSA9IGxheW91dEdyb3VwLm9wdGlvbnMuYmVoYXZpb3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kcmFnTm9kZSwgY2FuTm9kZURyYWdBbG9uZSA9IGNoZWNrTm9kZURyYWdBbG9uZShub2RlLCBkcmFnTm9kZU9wdGlvbik7XHJcbiAgICBpZiAoY2FuTm9kZURyYWdBbG9uZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgbm9kZVNvdXJjZVR5cGUgPSBub2RlLnNvdXJjZVR5cGUsIG5vZGVNb2RlbFR5cGUgPSBub2RlLmdldE1vZGVsVHlwZSgpLCBtb2RlbExpc3QgPSBsYXlvdXRHcm91cFtub2RlTW9kZWxUeXBlXS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNvdXJjZVR5cGUgPT09IG5vZGVTb3VyY2VUeXBlKSwgYnJ1c2hTZWxlY3RlZFNhbWVUeXBlTW9kZWxzID0gYnJ1c2hTZWxlY3RlZE1vZGVscy5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uZ3JvdXAgPT09IG5vZGUuZ3JvdXAgJiZcclxuICAgICAgICAgICAgaXRlbS5nZXRNb2RlbFR5cGUoKSA9PT0gbm9kZU1vZGVsVHlwZSAmJlxyXG4gICAgICAgICAgICBpdGVtLnNvdXJjZVR5cGUgPT09IG5vZGVTb3VyY2VUeXBlO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbW9kZWxMaXN0Lmxlbmd0aCA9PT0gYnJ1c2hTZWxlY3RlZFNhbWVUeXBlTW9kZWxzLmxlbmd0aDtcclxufTtcclxuZnVuY3Rpb24gU29sdmVOb2RlQXBwZW5kYWdlc0RyYWcodmlld0NvbnRhaW5lcikge1xyXG4gICAgY29uc3QgZzZJbnN0YW5jZSA9IHZpZXdDb250YWluZXIuZ2V0RzZJbnN0YW5jZSgpO1xyXG4gICAgZzZJbnN0YW5jZS5vbignbm9kZTpkcmFnc3RhcnQnLCBldmVudCA9PiB7XHJcbiAgICAgICAgbGV0IG5vZGUgPSBldmVudC5pdGVtWydTVk1vZGVsJ107XHJcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTVk5vZGVfMS5TVk5vZGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNOb2RlU2VsZWN0ZWQgPSB2aWV3Q29udGFpbmVyLmJydXNoU2VsZWN0ZWRNb2RlbHMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICAgIGlmIChpc05vZGVTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHZpZXdDb250YWluZXIuYnJ1c2hTZWxlY3RlZE1vZGVscy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRTZWxlY3RlZFN0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgU1ZOb2RlXzEuU1ZOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRhZ2VzLmZvckVhY2goYXBwZW5kYWdlID0+IGFwcGVuZGFnZS5zZXRTZWxlY3RlZFN0YXRlKGZhbHNlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyLmJydXNoU2VsZWN0ZWRNb2RlbHMubGVuZ3RoID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIGc2SW5zdGFuY2Uub24oJ25vZGU6ZHJhZ2VuZCcsIGV2ZW50ID0+IHtcclxuICAgICAgICBsZXQgbm9kZSA9IGV2ZW50Lml0ZW1bJ1NWTW9kZWwnXTtcclxuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFNWTm9kZV8xLlNWTm9kZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc05vZGVTZWxlY3RlZCA9IHZpZXdDb250YWluZXIuYnJ1c2hTZWxlY3RlZE1vZGVscy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgaWYgKGlzTm9kZVNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZFN0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgbm9kZS5zZXQoe1xyXG4gICAgICAgICAgICAgICAgeDogbm9kZS5HNkl0ZW0uZ2V0TW9kZWwoKS54LFxyXG4gICAgICAgICAgICAgICAgeTogbm9kZS5HNkl0ZW0uZ2V0TW9kZWwoKS55XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBub2RlLmFwcGVuZGFnZXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldCh7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5HNkl0ZW0uZ2V0TW9kZWwoKS54LFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IGl0ZW0uRzZJdGVtLmdldE1vZGVsKCkueVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2aWV3Q29udGFpbmVyLmJydXNoU2VsZWN0ZWRNb2RlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS5zZXQoe1xyXG4gICAgICAgICAgICAgICAgeDogaXRlbS5HNkl0ZW0uZ2V0TW9kZWwoKS54LFxyXG4gICAgICAgICAgICAgICAgeTogaXRlbS5HNkl0ZW0uZ2V0TW9kZWwoKS55XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFNWTm9kZV8xLlNWTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRhZ2VzLmZvckVhY2goYXBwZW5kYWdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhcHBlbmRhZ2Uuc2V0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDogYXBwZW5kYWdlLkc2SXRlbS5nZXRNb2RlbCgpLngsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGFwcGVuZGFnZS5HNkl0ZW0uZ2V0TW9kZWwoKS55XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuZXhwb3J0cy5Tb2x2ZU5vZGVBcHBlbmRhZ2VzRHJhZyA9IFNvbHZlTm9kZUFwcGVuZGFnZXNEcmFnO1xyXG5mdW5jdGlvbiBTb2x2ZUJydXNoU2VsZWN0RHJhZyh2aWV3Q29udGFpbmVyKSB7XHJcbiAgICBjb25zdCBnNkluc3RhbmNlID0gdmlld0NvbnRhaW5lci5nZXRHNkluc3RhbmNlKCk7XHJcbiAgICBnNkluc3RhbmNlLm9uKCdub2Rlc2VsZWN0Y2hhbmdlJywgZXZlbnQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBldmVudC5zZWxlY3RlZEl0ZW1zLCB0bXBTZWxlY3RlZE1vZGVsTGlzdCA9IFtdO1xyXG4gICAgICAgIGlmIChldmVudC50YXJnZXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2aWV3Q29udGFpbmVyLmJydXNoU2VsZWN0ZWRNb2RlbHMubGVuZ3RoID0gMDtcclxuICAgICAgICBzZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHRtcFNlbGVjdGVkTW9kZWxMaXN0LnB1c2goaXRlbVsnU1ZNb2RlbCddKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBpdGVtWydTVk1vZGVsJ107XHJcbiAgICAgICAgICAgIGlmIChleHBvcnRzLkRldGVybWluZU5vZGVEcmFnKHZpZXdDb250YWluZXIuZ2V0TGF5b3V0R3JvdXBUYWJsZSgpLCBub2RlLCB0bXBTZWxlY3RlZE1vZGVsTGlzdCkpIHtcclxuICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXIuYnJ1c2hTZWxlY3RlZE1vZGVscy5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZFN0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuZXhwb3J0cy5Tb2x2ZUJydXNoU2VsZWN0RHJhZyA9IFNvbHZlQnJ1c2hTZWxlY3REcmFnO1xyXG5mdW5jdGlvbiBTb2x2ZURyYWdDYW52YXNXaXRoTGVhayh2aWV3Q29udGFpbmVyKSB7XHJcbiAgICBsZXQgZzZJbnN0YW5jZSA9IHZpZXdDb250YWluZXIuZ2V0RzZJbnN0YW5jZSgpLCBwcmV2RHkgPSAwO1xyXG4gICAgZzZJbnN0YW5jZS5vbigndmlld3BvcnRjaGFuZ2UnLCBldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiAhPT0gJ3RyYW5zbGF0ZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdHJhbnNsYXRlWCA9IGV2ZW50Lm1hdHJpeFs3XSwgZHkgPSB0cmFuc2xhdGVYIC0gcHJldkR5O1xyXG4gICAgICAgIHByZXZEeSA9IHRyYW5zbGF0ZVg7XHJcbiAgICAgICAgdmlld0NvbnRhaW5lci5sZWFrQXJlYVkgPSB2aWV3Q29udGFpbmVyLmxlYWtBcmVhWSArIGR5O1xyXG4gICAgICAgIGlmICh2aWV3Q29udGFpbmVyLmhhc0xlYWspIHtcclxuICAgICAgICAgICAgZXZlbnRCdXNfMS5FdmVudEJ1cy5lbWl0KCdvbkxlYWtBcmVhVXBkYXRlJywge1xyXG4gICAgICAgICAgICAgICAgbGVha0FyZWFZOiB2aWV3Q29udGFpbmVyLmxlYWtBcmVhWSxcclxuICAgICAgICAgICAgICAgIGhhc0xlYWs6IHZpZXdDb250YWluZXIuaGFzTGVha1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5leHBvcnRzLlNvbHZlRHJhZ0NhbnZhc1dpdGhMZWFrID0gU29sdmVEcmFnQ2FudmFzV2l0aExlYWs7XHJcbmZ1bmN0aW9uIFNvbHZlWm9vbUNhbnZhc1dpdGhMZWFrKHZpZXdDb250YWluZXIpIHtcclxufVxyXG5leHBvcnRzLlNvbHZlWm9vbUNhbnZhc1dpdGhMZWFrID0gU29sdmVab29tQ2FudmFzV2l0aExlYWs7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/BehaviorHelper/behaviorIssueHelper.ts\n"); /***/ }), /***/ "./src/BehaviorHelper/initG6Behaviors.ts": /*!***********************************************!*\ !*** ./src/BehaviorHelper/initG6Behaviors.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.InitG6Behaviors = void 0;\r\nconst behaviorIssueHelper_1 = __webpack_require__(/*! ./behaviorIssueHelper */ \"./src/BehaviorHelper/behaviorIssueHelper.ts\");\r\nfunction InitG6Behaviors(engine, viewContainer) {\r\n const dragNodeFilter = event => {\r\n let g6Item = event.item, node = g6Item.SVModel;\r\n if (g6Item === null || node.isNode() === false) {\r\n return false;\r\n }\r\n const enableDrag = behaviorIssueHelper_1.DetermineNodeDrag(viewContainer.getLayoutGroupTable(), node, viewContainer.brushSelectedModels);\r\n if (enableDrag === false) {\r\n return false;\r\n }\r\n if (viewContainer.clickSelectNode) {\r\n const isPrevSelectInBrush = viewContainer.brushSelectedModels.find(item => item.id === viewContainer.clickSelectNode.id);\r\n if (isPrevSelectInBrush === undefined) {\r\n viewContainer.clickSelectNode.setSelectedState(false);\r\n viewContainer.clickSelectNode = null;\r\n }\r\n }\r\n node.setSelectedState(true);\r\n node.appendages.forEach(item => {\r\n item.setSelectedState(true);\r\n });\r\n return true;\r\n };\r\n const selectNodeFilter = event => {\r\n let g6Item = event.item, node = g6Item.SVModel;\r\n if (g6Item === null || node.isNode() === false) {\r\n return false;\r\n }\r\n viewContainer.clickSelectNode = node;\r\n return true;\r\n };\r\n const brushSelectNodeFilter = G6Item => {\r\n const model = G6Item.SVModel;\r\n if (model.leaked || model.isNode() === false) {\r\n return false;\r\n }\r\n model.setSelectedState(true);\r\n return true;\r\n };\r\n const dragNode = {\r\n type: 'drag-node',\r\n shouldBegin: dragNodeFilter\r\n };\r\n const dragCanvas = {\r\n type: 'drag-canvas'\r\n };\r\n const zoomCanvas = {\r\n type: 'zoom-canvas'\r\n };\r\n const clickSelect = {\r\n type: 'click-select',\r\n multiple: false,\r\n shouldBegin: selectNodeFilter\r\n };\r\n const brushSelect = {\r\n type: 'brush-select',\r\n trigger: 'drag',\r\n includeEdges: false,\r\n shouldUpdate: brushSelectNodeFilter\r\n };\r\n return {\r\n default: [dragNode, dragCanvas, clickSelect],\r\n brush: [brushSelect, dragNode]\r\n };\r\n}\r\nexports.InitG6Behaviors = InitG6Behaviors;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQmVoYXZpb3JIZWxwZXIvaW5pdEc2QmVoYXZpb3JzLnRzPzQ3YTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLDhCQUE4QixtQkFBTyxDQUFDLDBFQUF1QjtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9CZWhhdmlvckhlbHBlci9pbml0RzZCZWhhdmlvcnMudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLkluaXRHNkJlaGF2aW9ycyA9IHZvaWQgMDtcclxuY29uc3QgYmVoYXZpb3JJc3N1ZUhlbHBlcl8xID0gcmVxdWlyZShcIi4vYmVoYXZpb3JJc3N1ZUhlbHBlclwiKTtcclxuZnVuY3Rpb24gSW5pdEc2QmVoYXZpb3JzKGVuZ2luZSwgdmlld0NvbnRhaW5lcikge1xyXG4gICAgY29uc3QgZHJhZ05vZGVGaWx0ZXIgPSBldmVudCA9PiB7XHJcbiAgICAgICAgbGV0IGc2SXRlbSA9IGV2ZW50Lml0ZW0sIG5vZGUgPSBnNkl0ZW0uU1ZNb2RlbDtcclxuICAgICAgICBpZiAoZzZJdGVtID09PSBudWxsIHx8IG5vZGUuaXNOb2RlKCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZW5hYmxlRHJhZyA9IGJlaGF2aW9ySXNzdWVIZWxwZXJfMS5EZXRlcm1pbmVOb2RlRHJhZyh2aWV3Q29udGFpbmVyLmdldExheW91dEdyb3VwVGFibGUoKSwgbm9kZSwgdmlld0NvbnRhaW5lci5icnVzaFNlbGVjdGVkTW9kZWxzKTtcclxuICAgICAgICBpZiAoZW5hYmxlRHJhZyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmlld0NvbnRhaW5lci5jbGlja1NlbGVjdE5vZGUpIHtcclxuICAgICAgICAgICAgY29uc3QgaXNQcmV2U2VsZWN0SW5CcnVzaCA9IHZpZXdDb250YWluZXIuYnJ1c2hTZWxlY3RlZE1vZGVscy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdmlld0NvbnRhaW5lci5jbGlja1NlbGVjdE5vZGUuaWQpO1xyXG4gICAgICAgICAgICBpZiAoaXNQcmV2U2VsZWN0SW5CcnVzaCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyLmNsaWNrU2VsZWN0Tm9kZS5zZXRTZWxlY3RlZFN0YXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXIuY2xpY2tTZWxlY3ROb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLnNldFNlbGVjdGVkU3RhdGUodHJ1ZSk7XHJcbiAgICAgICAgbm9kZS5hcHBlbmRhZ2VzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uc2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBzZWxlY3ROb2RlRmlsdGVyID0gZXZlbnQgPT4ge1xyXG4gICAgICAgIGxldCBnNkl0ZW0gPSBldmVudC5pdGVtLCBub2RlID0gZzZJdGVtLlNWTW9kZWw7XHJcbiAgICAgICAgaWYgKGc2SXRlbSA9PT0gbnVsbCB8fCBub2RlLmlzTm9kZSgpID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZpZXdDb250YWluZXIuY2xpY2tTZWxlY3ROb2RlID0gbm9kZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICBjb25zdCBicnVzaFNlbGVjdE5vZGVGaWx0ZXIgPSBHNkl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IG1vZGVsID0gRzZJdGVtLlNWTW9kZWw7XHJcbiAgICAgICAgaWYgKG1vZGVsLmxlYWtlZCB8fCBtb2RlbC5pc05vZGUoKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtb2RlbC5zZXRTZWxlY3RlZFN0YXRlKHRydWUpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGRyYWdOb2RlID0ge1xyXG4gICAgICAgIHR5cGU6ICdkcmFnLW5vZGUnLFxyXG4gICAgICAgIHNob3VsZEJlZ2luOiBkcmFnTm9kZUZpbHRlclxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRyYWdDYW52YXMgPSB7XHJcbiAgICAgICAgdHlwZTogJ2RyYWctY2FudmFzJ1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHpvb21DYW52YXMgPSB7XHJcbiAgICAgICAgdHlwZTogJ3pvb20tY2FudmFzJ1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNsaWNrU2VsZWN0ID0ge1xyXG4gICAgICAgIHR5cGU6ICdjbGljay1zZWxlY3QnLFxyXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZSxcclxuICAgICAgICBzaG91bGRCZWdpbjogc2VsZWN0Tm9kZUZpbHRlclxyXG4gICAgfTtcclxuICAgIGNvbnN0IGJydXNoU2VsZWN0ID0ge1xyXG4gICAgICAgIHR5cGU6ICdicnVzaC1zZWxlY3QnLFxyXG4gICAgICAgIHRyaWdnZXI6ICdkcmFnJyxcclxuICAgICAgICBpbmNsdWRlRWRnZXM6IGZhbHNlLFxyXG4gICAgICAgIHNob3VsZFVwZGF0ZTogYnJ1c2hTZWxlY3ROb2RlRmlsdGVyXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBkZWZhdWx0OiBbZHJhZ05vZGUsIGRyYWdDYW52YXMsIGNsaWNrU2VsZWN0XSxcclxuICAgICAgICBicnVzaDogW2JydXNoU2VsZWN0LCBkcmFnTm9kZV1cclxuICAgIH07XHJcbn1cclxuZXhwb3J0cy5Jbml0RzZCZWhhdmlvcnMgPSBJbml0RzZCZWhhdmlvcnM7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/BehaviorHelper/initG6Behaviors.ts\n"); /***/ }), /***/ "./src/Common/boundingRect.ts": /*!************************************!*\ !*** ./src/Common/boundingRect.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Bound = void 0;\r\nconst vector_1 = __webpack_require__(/*! ./vector */ \"./src/Common/vector.ts\");\r\nexports.Bound = {\r\n fromPoints(points) {\r\n let maxX = -Infinity, minX = Infinity, maxY = -Infinity, minY = Infinity;\r\n points.map(item => {\r\n if (item[0] > maxX)\r\n maxX = item[0];\r\n if (item[0] < minX)\r\n minX = item[0];\r\n if (item[1] > maxY)\r\n maxY = item[1];\r\n if (item[1] < minY)\r\n minY = item[1];\r\n });\r\n return {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n },\r\n toPoints(bound) {\r\n return [\r\n [bound.x, bound.y],\r\n [bound.x + bound.width, bound.y],\r\n [bound.x + bound.width, bound.y + bound.height],\r\n [bound.x, bound.y + bound.height]\r\n ];\r\n },\r\n union(...arg) {\r\n return arg.length > 1 ?\r\n arg.reduce((total, cur) => {\r\n let minX = total.x < cur.x ? total.x : cur.x, maxX = total.x + total.width < cur.x + cur.width ? cur.x + cur.width : total.x + total.width, minY = total.y < cur.y ? total.y : cur.y, maxY = total.y + total.height < cur.y + cur.height ? cur.y + cur.height : total.y + total.height;\r\n return {\r\n x: minX,\r\n y: minY,\r\n width: maxX - minX,\r\n height: maxY - minY\r\n };\r\n }) : arg[0];\r\n },\r\n intersect(b1, b2) {\r\n let x, y, maxX, maxY, overlapsX, overlapsY;\r\n if (b1.x < b2.x + b2.width && b1.x + b1.width > b2.x) {\r\n x = b1.x < b2.x ? b2.x : b1.x;\r\n maxX = b1.x + b1.width;\r\n overlapsX = maxX - x;\r\n }\r\n if (b1.y < b2.y + b2.height && b1.y + b1.height > b2.y) {\r\n y = b1.y < b2.y ? b2.y : b1.y;\r\n maxY = b1.y + b1.height < b2.y + b2.height ? b1.y + b1.height : b2.y + b2.height;\r\n overlapsY = maxY - y;\r\n }\r\n if (!overlapsX || !overlapsY)\r\n return null;\r\n return {\r\n x,\r\n y,\r\n width: overlapsX,\r\n height: overlapsY\r\n };\r\n },\r\n translate(bound, dx, dy) {\r\n bound.x += dx;\r\n bound.y += dy;\r\n },\r\n rotation(bound, rot) {\r\n let cx = bound.x + bound.width / 2, cy = bound.y + bound.height / 2;\r\n return exports.Bound.fromPoints(exports.Bound.toPoints(bound).map(item => vector_1.Vector.rotation(rot, item, [cx, cy])));\r\n },\r\n isOverlap(b1, b2) {\r\n let maxX1 = b1.x + b1.width, maxY1 = b1.y + b1.height, maxX2 = b2.x + b2.width, maxY2 = b2.y + b2.height;\r\n if (b1.x < maxX2 && b2.x < maxX1 && b1.y < maxY2 && b2.y < maxY1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL2JvdW5kaW5nUmVjdC50cz8wNjc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyx3Q0FBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9Db21tb24vYm91bmRpbmdSZWN0LnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5Cb3VuZCA9IHZvaWQgMDtcclxuY29uc3QgdmVjdG9yXzEgPSByZXF1aXJlKFwiLi92ZWN0b3JcIik7XHJcbmV4cG9ydHMuQm91bmQgPSB7XHJcbiAgICBmcm9tUG9pbnRzKHBvaW50cykge1xyXG4gICAgICAgIGxldCBtYXhYID0gLUluZmluaXR5LCBtaW5YID0gSW5maW5pdHksIG1heFkgPSAtSW5maW5pdHksIG1pblkgPSBJbmZpbml0eTtcclxuICAgICAgICBwb2ludHMubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbVswXSA+IG1heFgpXHJcbiAgICAgICAgICAgICAgICBtYXhYID0gaXRlbVswXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1bMF0gPCBtaW5YKVxyXG4gICAgICAgICAgICAgICAgbWluWCA9IGl0ZW1bMF07XHJcbiAgICAgICAgICAgIGlmIChpdGVtWzFdID4gbWF4WSlcclxuICAgICAgICAgICAgICAgIG1heFkgPSBpdGVtWzFdO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVsxXSA8IG1pblkpXHJcbiAgICAgICAgICAgICAgICBtaW5ZID0gaXRlbVsxXTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB4OiBtaW5YLFxyXG4gICAgICAgICAgICB5OiBtaW5ZLFxyXG4gICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXHJcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pbllcclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIHRvUG9pbnRzKGJvdW5kKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgW2JvdW5kLngsIGJvdW5kLnldLFxyXG4gICAgICAgICAgICBbYm91bmQueCArIGJvdW5kLndpZHRoLCBib3VuZC55XSxcclxuICAgICAgICAgICAgW2JvdW5kLnggKyBib3VuZC53aWR0aCwgYm91bmQueSArIGJvdW5kLmhlaWdodF0sXHJcbiAgICAgICAgICAgIFtib3VuZC54LCBib3VuZC55ICsgYm91bmQuaGVpZ2h0XVxyXG4gICAgICAgIF07XHJcbiAgICB9LFxyXG4gICAgdW5pb24oLi4uYXJnKSB7XHJcbiAgICAgICAgcmV0dXJuIGFyZy5sZW5ndGggPiAxID9cclxuICAgICAgICAgICAgYXJnLnJlZHVjZSgodG90YWwsIGN1cikgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pblggPSB0b3RhbC54IDwgY3VyLnggPyB0b3RhbC54IDogY3VyLngsIG1heFggPSB0b3RhbC54ICsgdG90YWwud2lkdGggPCBjdXIueCArIGN1ci53aWR0aCA/IGN1ci54ICsgY3VyLndpZHRoIDogdG90YWwueCArIHRvdGFsLndpZHRoLCBtaW5ZID0gdG90YWwueSA8IGN1ci55ID8gdG90YWwueSA6IGN1ci55LCBtYXhZID0gdG90YWwueSArIHRvdGFsLmhlaWdodCA8IGN1ci55ICsgY3VyLmhlaWdodCA/IGN1ci55ICsgY3VyLmhlaWdodCA6IHRvdGFsLnkgKyB0b3RhbC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IG1pblgsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogbWluWSxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSkgOiBhcmdbMF07XHJcbiAgICB9LFxyXG4gICAgaW50ZXJzZWN0KGIxLCBiMikge1xyXG4gICAgICAgIGxldCB4LCB5LCBtYXhYLCBtYXhZLCBvdmVybGFwc1gsIG92ZXJsYXBzWTtcclxuICAgICAgICBpZiAoYjEueCA8IGIyLnggKyBiMi53aWR0aCAmJiBiMS54ICsgYjEud2lkdGggPiBiMi54KSB7XHJcbiAgICAgICAgICAgIHggPSBiMS54IDwgYjIueCA/IGIyLnggOiBiMS54O1xyXG4gICAgICAgICAgICBtYXhYID0gYjEueCArIGIxLndpZHRoO1xyXG4gICAgICAgICAgICBvdmVybGFwc1ggPSBtYXhYIC0geDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGIxLnkgPCBiMi55ICsgYjIuaGVpZ2h0ICYmIGIxLnkgKyBiMS5oZWlnaHQgPiBiMi55KSB7XHJcbiAgICAgICAgICAgIHkgPSBiMS55IDwgYjIueSA/IGIyLnkgOiBiMS55O1xyXG4gICAgICAgICAgICBtYXhZID0gYjEueSArIGIxLmhlaWdodCA8IGIyLnkgKyBiMi5oZWlnaHQgPyBiMS55ICsgYjEuaGVpZ2h0IDogYjIueSArIGIyLmhlaWdodDtcclxuICAgICAgICAgICAgb3ZlcmxhcHNZID0gbWF4WSAtIHk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghb3ZlcmxhcHNYIHx8ICFvdmVybGFwc1kpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICAgIHdpZHRoOiBvdmVybGFwc1gsXHJcbiAgICAgICAgICAgIGhlaWdodDogb3ZlcmxhcHNZXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbiAgICB0cmFuc2xhdGUoYm91bmQsIGR4LCBkeSkge1xyXG4gICAgICAgIGJvdW5kLnggKz0gZHg7XHJcbiAgICAgICAgYm91bmQueSArPSBkeTtcclxuICAgIH0sXHJcbiAgICByb3RhdGlvbihib3VuZCwgcm90KSB7XHJcbiAgICAgICAgbGV0IGN4ID0gYm91bmQueCArIGJvdW5kLndpZHRoIC8gMiwgY3kgPSBib3VuZC55ICsgYm91bmQuaGVpZ2h0IC8gMjtcclxuICAgICAgICByZXR1cm4gZXhwb3J0cy5Cb3VuZC5mcm9tUG9pbnRzKGV4cG9ydHMuQm91bmQudG9Qb2ludHMoYm91bmQpLm1hcChpdGVtID0+IHZlY3Rvcl8xLlZlY3Rvci5yb3RhdGlvbihyb3QsIGl0ZW0sIFtjeCwgY3ldKSkpO1xyXG4gICAgfSxcclxuICAgIGlzT3ZlcmxhcChiMSwgYjIpIHtcclxuICAgICAgICBsZXQgbWF4WDEgPSBiMS54ICsgYjEud2lkdGgsIG1heFkxID0gYjEueSArIGIxLmhlaWdodCwgbWF4WDIgPSBiMi54ICsgYjIud2lkdGgsIG1heFkyID0gYjIueSArIGIyLmhlaWdodDtcclxuICAgICAgICBpZiAoYjEueCA8IG1heFgyICYmIGIyLnggPCBtYXhYMSAmJiBiMS55IDwgbWF4WTIgJiYgYjIueSA8IG1heFkxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Common/boundingRect.ts\n"); /***/ }), /***/ "./src/Common/eventBus.ts": /*!********************************!*\ !*** ./src/Common/eventBus.ts ***! \********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EventBus = void 0;\r\nexports.EventBus = {\r\n events: {},\r\n on(eventName, callback) {\r\n if (exports.EventBus.events[eventName] === undefined) {\r\n exports.EventBus.events[eventName] = [];\r\n }\r\n exports.EventBus.events[eventName].push(callback);\r\n },\r\n emit(eventName, payload) {\r\n if (exports.EventBus.events[eventName] === undefined) {\r\n return;\r\n }\r\n exports.EventBus.events[eventName].map(item => item(payload));\r\n }\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL2V2ZW50QnVzLnRzPzdlNTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvQ29tbW9uL2V2ZW50QnVzLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5FdmVudEJ1cyA9IHZvaWQgMDtcclxuZXhwb3J0cy5FdmVudEJ1cyA9IHtcclxuICAgIGV2ZW50czoge30sXHJcbiAgICBvbihldmVudE5hbWUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKGV4cG9ydHMuRXZlbnRCdXMuZXZlbnRzW2V2ZW50TmFtZV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBleHBvcnRzLkV2ZW50QnVzLmV2ZW50c1tldmVudE5hbWVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV4cG9ydHMuRXZlbnRCdXMuZXZlbnRzW2V2ZW50TmFtZV0ucHVzaChjYWxsYmFjayk7XHJcbiAgICB9LFxyXG4gICAgZW1pdChldmVudE5hbWUsIHBheWxvYWQpIHtcclxuICAgICAgICBpZiAoZXhwb3J0cy5FdmVudEJ1cy5ldmVudHNbZXZlbnROYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXhwb3J0cy5FdmVudEJ1cy5ldmVudHNbZXZlbnROYW1lXS5tYXAoaXRlbSA9PiBpdGVtKHBheWxvYWQpKTtcclxuICAgIH1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Common/eventBus.ts\n"); /***/ }), /***/ "./src/Common/group.ts": /*!*****************************!*\ !*** ./src/Common/group.ts ***! \*****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Group = void 0;\r\nconst util_1 = __webpack_require__(/*! ./util */ \"./src/Common/util.ts\");\r\nconst boundingRect_1 = __webpack_require__(/*! ./boundingRect */ \"./src/Common/boundingRect.ts\");\r\nconst matrix_util_1 = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\r\nclass Group {\r\n constructor(...arg) {\r\n this.models = [];\r\n this.id = util_1.Util.generateId();\r\n if (arg) {\r\n this.add(...arg);\r\n }\r\n }\r\n add(...arg) {\r\n arg.map(ele => {\r\n this.models.push(ele);\r\n });\r\n }\r\n remove(model) {\r\n util_1.Util.removeFromList(this.models, item => item.id === model.id);\r\n }\r\n getBound() {\r\n return this.models.length ?\r\n boundingRect_1.Bound.union(...this.models.map(item => item.getBound())) :\r\n { x: 0, y: 0, width: 0, height: 0 };\r\n }\r\n getPaddingBound(padding = 0) {\r\n const bound = this.getBound();\r\n bound.x -= padding;\r\n bound.y -= padding;\r\n bound.width += padding * 2;\r\n bound.height += padding * 2;\r\n return bound;\r\n }\r\n getModels() {\r\n return this.models;\r\n }\r\n translate(dx, dy) {\r\n this.models.map(item => {\r\n if (item instanceof Group) {\r\n item.translate(dx, dy);\r\n }\r\n else {\r\n item.set('x', item.get('x') + dx);\r\n item.set('y', item.get('y') + dy);\r\n }\r\n });\r\n }\r\n scale(center, ratio) {\r\n this.models.map(item => {\r\n if (item instanceof Group) {\r\n item.scale(center, ratio);\r\n }\r\n else {\r\n const matrix = matrix_util_1.ext.transform(item.getMatrix(), [\r\n ['t', -center[0], -center[1]],\r\n ['s', ratio, ratio],\r\n ['t', center[0], center[1]],\r\n ]);\r\n item.setMatrix(matrix);\r\n }\r\n });\r\n }\r\n clear() {\r\n this.models.length = 0;\r\n }\r\n}\r\nexports.Group = Group;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL2dyb3VwLnRzPzcyNjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxvQ0FBUTtBQUMvQix1QkFBdUIsbUJBQU8sQ0FBQyxvREFBZ0I7QUFDL0Msc0JBQXNCLG1CQUFPLENBQUMsd0dBQW1CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL0NvbW1vbi9ncm91cC50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuR3JvdXAgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XHJcbmNvbnN0IGJvdW5kaW5nUmVjdF8xID0gcmVxdWlyZShcIi4vYm91bmRpbmdSZWN0XCIpO1xyXG5jb25zdCBtYXRyaXhfdXRpbF8xID0gcmVxdWlyZShcIkBhbnR2L21hdHJpeC11dGlsXCIpO1xyXG5jbGFzcyBHcm91cCB7XHJcbiAgICBjb25zdHJ1Y3RvciguLi5hcmcpIHtcclxuICAgICAgICB0aGlzLm1vZGVscyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaWQgPSB1dGlsXzEuVXRpbC5nZW5lcmF0ZUlkKCk7XHJcbiAgICAgICAgaWYgKGFyZykge1xyXG4gICAgICAgICAgICB0aGlzLmFkZCguLi5hcmcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFkZCguLi5hcmcpIHtcclxuICAgICAgICBhcmcubWFwKGVsZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxzLnB1c2goZWxlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJlbW92ZShtb2RlbCkge1xyXG4gICAgICAgIHV0aWxfMS5VdGlsLnJlbW92ZUZyb21MaXN0KHRoaXMubW9kZWxzLCBpdGVtID0+IGl0ZW0uaWQgPT09IG1vZGVsLmlkKTtcclxuICAgIH1cclxuICAgIGdldEJvdW5kKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVscy5sZW5ndGggP1xyXG4gICAgICAgICAgICBib3VuZGluZ1JlY3RfMS5Cb3VuZC51bmlvbiguLi50aGlzLm1vZGVscy5tYXAoaXRlbSA9PiBpdGVtLmdldEJvdW5kKCkpKSA6XHJcbiAgICAgICAgICAgIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgfVxyXG4gICAgZ2V0UGFkZGluZ0JvdW5kKHBhZGRpbmcgPSAwKSB7XHJcbiAgICAgICAgY29uc3QgYm91bmQgPSB0aGlzLmdldEJvdW5kKCk7XHJcbiAgICAgICAgYm91bmQueCAtPSBwYWRkaW5nO1xyXG4gICAgICAgIGJvdW5kLnkgLT0gcGFkZGluZztcclxuICAgICAgICBib3VuZC53aWR0aCArPSBwYWRkaW5nICogMjtcclxuICAgICAgICBib3VuZC5oZWlnaHQgKz0gcGFkZGluZyAqIDI7XHJcbiAgICAgICAgcmV0dXJuIGJvdW5kO1xyXG4gICAgfVxyXG4gICAgZ2V0TW9kZWxzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVscztcclxuICAgIH1cclxuICAgIHRyYW5zbGF0ZShkeCwgZHkpIHtcclxuICAgICAgICB0aGlzLm1vZGVscy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0udHJhbnNsYXRlKGR4LCBkeSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldCgneCcsIGl0ZW0uZ2V0KCd4JykgKyBkeCk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldCgneScsIGl0ZW0uZ2V0KCd5JykgKyBkeSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHNjYWxlKGNlbnRlciwgcmF0aW8pIHtcclxuICAgICAgICB0aGlzLm1vZGVscy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2NhbGUoY2VudGVyLCByYXRpbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRyaXggPSBtYXRyaXhfdXRpbF8xLmV4dC50cmFuc2Zvcm0oaXRlbS5nZXRNYXRyaXgoKSwgW1xyXG4gICAgICAgICAgICAgICAgICAgIFsndCcsIC1jZW50ZXJbMF0sIC1jZW50ZXJbMV1dLFxyXG4gICAgICAgICAgICAgICAgICAgIFsncycsIHJhdGlvLCByYXRpb10sXHJcbiAgICAgICAgICAgICAgICAgICAgWyd0JywgY2VudGVyWzBdLCBjZW50ZXJbMV1dLFxyXG4gICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldE1hdHJpeChtYXRyaXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjbGVhcigpIHtcclxuICAgICAgICB0aGlzLm1vZGVscy5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuR3JvdXAgPSBHcm91cDtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Common/group.ts\n"); /***/ }), /***/ "./src/Common/util.ts": /*!****************************!*\ !*** ./src/Common/util.ts ***! \****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Util = void 0;\r\nconst g6_core_1 = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\r\nconst SVLink_1 = __webpack_require__(/*! ../Model/SVLink */ \"./src/Model/SVLink.ts\");\r\nconst g6_1 = __webpack_require__(/*! @antv/g6 */ \"./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js\");\r\nexports.Util = {\r\n generateId() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n },\r\n objectClone(obj) {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n },\r\n removeFromList(list, fn) {\r\n const res = [];\r\n for (let i = 0; i < list.length; i++) {\r\n if (fn(list[i])) {\r\n let removeItem = list.splice(i, 1);\r\n res.push(...removeItem);\r\n i--;\r\n }\r\n }\r\n return res;\r\n },\r\n groupBy(list, category) {\r\n const result = {};\r\n list.forEach(item => {\r\n let value = item[category];\r\n if (result[value] === undefined) {\r\n result[value] = [];\r\n }\r\n result[value].push(item);\r\n });\r\n return result;\r\n },\r\n assert(condition, errorText) {\r\n if (condition) {\r\n throw errorText;\r\n }\r\n },\r\n textParser(text) {\r\n let fieldReg = /\\[[^\\]]*\\]/g;\r\n if (fieldReg.test(text)) {\r\n let contents = text.match(fieldReg), values = contents.map(item => item.replace(/\\[|\\]/g, ''));\r\n return values;\r\n }\r\n else {\r\n return text;\r\n }\r\n },\r\n clamp(value, max, min) {\r\n if (value <= max && value >= min)\r\n return value;\r\n if (value > max)\r\n return max;\r\n if (value < min)\r\n return min;\r\n },\r\n convertGroupTable2ModelList(groupTable) {\r\n const list = [];\r\n groupTable.forEach(item => {\r\n list.push(...item.modelList);\r\n });\r\n return list;\r\n },\r\n convertG6Data(layoutGroup) {\r\n let nodes = [...layoutGroup.node, ...layoutGroup.marker], edges = layoutGroup.link;\r\n return {\r\n nodes: nodes.map(item => item.getG6ModelProps()),\r\n edges: edges.map(item => item.getG6ModelProps())\r\n };\r\n },\r\n convertModelList2G6Data(modelList) {\r\n return {\r\n nodes: (modelList.filter(item => !(item instanceof SVLink_1.SVLink)).map(item => item.getG6ModelProps())),\r\n edges: (modelList.filter(item => item instanceof SVLink_1.SVLink).map(item => item.getG6ModelProps()))\r\n };\r\n },\r\n calcRotateMatrix(matrix, rotation) {\r\n const Mat3 = g6_1.Util.mat3;\r\n Mat3.rotate(matrix, matrix, rotation);\r\n return matrix;\r\n },\r\n registerShape(shapeName, shapeDefinition, extendShapeType) {\r\n shapeDefinition.update = undefined;\r\n return g6_core_1.registerNode(shapeName, shapeDefinition, extendShapeType);\r\n }\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL3V0aWwudHM/MjFjNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsb0ZBQWU7QUFDekMsaUJBQWlCLG1CQUFPLENBQUMsOENBQWlCO0FBQzFDLGFBQWEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx1QkFBdUIsaUJBQWlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvQ29tbW9uL3V0aWwudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLlV0aWwgPSB2b2lkIDA7XHJcbmNvbnN0IGc2X2NvcmVfMSA9IHJlcXVpcmUoXCJAYW50di9nNi1jb3JlXCIpO1xyXG5jb25zdCBTVkxpbmtfMSA9IHJlcXVpcmUoXCIuLi9Nb2RlbC9TVkxpbmtcIik7XHJcbmNvbnN0IGc2XzEgPSByZXF1aXJlKFwiQGFudHYvZzZcIik7XHJcbmV4cG9ydHMuVXRpbCA9IHtcclxuICAgIGdlbmVyYXRlSWQoKSB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgbGV0IHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgb2JqZWN0Q2xvbmUob2JqKSB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSkgOiBudWxsO1xyXG4gICAgfSxcclxuICAgIHJlbW92ZUZyb21MaXN0KGxpc3QsIGZuKSB7XHJcbiAgICAgICAgY29uc3QgcmVzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChmbihsaXN0W2ldKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlbW92ZUl0ZW0gPSBsaXN0LnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIHJlcy5wdXNoKC4uLnJlbW92ZUl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9LFxyXG4gICAgZ3JvdXBCeShsaXN0LCBjYXRlZ29yeSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG4gICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlID0gaXRlbVtjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHRbdmFsdWVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFt2YWx1ZV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHRbdmFsdWVdLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBhc3NlcnQoY29uZGl0aW9uLCBlcnJvclRleHQpIHtcclxuICAgICAgICBpZiAoY29uZGl0aW9uKSB7XHJcbiAgICAgICAgICAgIHRocm93IGVycm9yVGV4dDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgdGV4dFBhcnNlcih0ZXh0KSB7XHJcbiAgICAgICAgbGV0IGZpZWxkUmVnID0gL1xcW1teXFxdXSpcXF0vZztcclxuICAgICAgICBpZiAoZmllbGRSZWcudGVzdCh0ZXh0KSkge1xyXG4gICAgICAgICAgICBsZXQgY29udGVudHMgPSB0ZXh0Lm1hdGNoKGZpZWxkUmVnKSwgdmFsdWVzID0gY29udGVudHMubWFwKGl0ZW0gPT4gaXRlbS5yZXBsYWNlKC9cXFt8XFxdL2csICcnKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2xhbXAodmFsdWUsIG1heCwgbWluKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSBtaW4pXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgPiBtYXgpXHJcbiAgICAgICAgICAgIHJldHVybiBtYXg7XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgbWluKVxyXG4gICAgICAgICAgICByZXR1cm4gbWluO1xyXG4gICAgfSxcclxuICAgIGNvbnZlcnRHcm91cFRhYmxlMk1vZGVsTGlzdChncm91cFRhYmxlKSB7XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IFtdO1xyXG4gICAgICAgIGdyb3VwVGFibGUuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgbGlzdC5wdXNoKC4uLml0ZW0ubW9kZWxMaXN0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbGlzdDtcclxuICAgIH0sXHJcbiAgICBjb252ZXJ0RzZEYXRhKGxheW91dEdyb3VwKSB7XHJcbiAgICAgICAgbGV0IG5vZGVzID0gWy4uLmxheW91dEdyb3VwLm5vZGUsIC4uLmxheW91dEdyb3VwLm1hcmtlcl0sIGVkZ2VzID0gbGF5b3V0R3JvdXAubGluaztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBub2Rlczogbm9kZXMubWFwKGl0ZW0gPT4gaXRlbS5nZXRHNk1vZGVsUHJvcHMoKSksXHJcbiAgICAgICAgICAgIGVkZ2VzOiBlZGdlcy5tYXAoaXRlbSA9PiBpdGVtLmdldEc2TW9kZWxQcm9wcygpKVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgY29udmVydE1vZGVsTGlzdDJHNkRhdGEobW9kZWxMaXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbm9kZXM6IChtb2RlbExpc3QuZmlsdGVyKGl0ZW0gPT4gIShpdGVtIGluc3RhbmNlb2YgU1ZMaW5rXzEuU1ZMaW5rKSkubWFwKGl0ZW0gPT4gaXRlbS5nZXRHNk1vZGVsUHJvcHMoKSkpLFxyXG4gICAgICAgICAgICBlZGdlczogKG1vZGVsTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtIGluc3RhbmNlb2YgU1ZMaW5rXzEuU1ZMaW5rKS5tYXAoaXRlbSA9PiBpdGVtLmdldEc2TW9kZWxQcm9wcygpKSlcclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIGNhbGNSb3RhdGVNYXRyaXgobWF0cml4LCByb3RhdGlvbikge1xyXG4gICAgICAgIGNvbnN0IE1hdDMgPSBnNl8xLlV0aWwubWF0MztcclxuICAgICAgICBNYXQzLnJvdGF0ZShtYXRyaXgsIG1hdHJpeCwgcm90YXRpb24pO1xyXG4gICAgICAgIHJldHVybiBtYXRyaXg7XHJcbiAgICB9LFxyXG4gICAgcmVnaXN0ZXJTaGFwZShzaGFwZU5hbWUsIHNoYXBlRGVmaW5pdGlvbiwgZXh0ZW5kU2hhcGVUeXBlKSB7XHJcbiAgICAgICAgc2hhcGVEZWZpbml0aW9uLnVwZGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gZzZfY29yZV8xLnJlZ2lzdGVyTm9kZShzaGFwZU5hbWUsIHNoYXBlRGVmaW5pdGlvbiwgZXh0ZW5kU2hhcGVUeXBlKTtcclxuICAgIH1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Common/util.ts\n"); /***/ }), /***/ "./src/Common/vector.ts": /*!******************************!*\ !*** ./src/Common/vector.ts ***! \******************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Vector = void 0;\r\nexports.Vector = {\r\n add(v1, v2) {\r\n return [v1[0] + v2[0], v1[1] + v2[1]];\r\n },\r\n subtract(v1, v2) {\r\n return [v1[0] - v2[0], v1[1] - v2[1]];\r\n },\r\n dot(v1, v2) {\r\n return v1[0] * v2[0] + v1[1] * v2[1];\r\n },\r\n scale(v, n) {\r\n return [v[0] * n, v[1] * n];\r\n },\r\n length(v) {\r\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\r\n },\r\n rotation(radian, point, center = [0, 0]) {\r\n if (radian === 0)\r\n return point;\r\n radian = -radian;\r\n let cos = Math.cos(radian), sin = Math.sin(radian), dv = [point[0] - center[0], point[1] - center[1]], v = [0, 0];\r\n v[0] = center[0] + (dv[0] * cos - dv[1] * sin);\r\n v[1] = center[1] + (dv[0] * sin + dv[1] * cos);\r\n return v;\r\n },\r\n tangent(v) {\r\n return [-v[1], v[0]];\r\n },\r\n normalize(v) {\r\n let len = exports.Vector.length(v);\r\n if (len === 0) {\r\n return [0, 0];\r\n }\r\n else if (len === 1) {\r\n return v;\r\n }\r\n else {\r\n return [v[0] / len, v[1] / len];\r\n }\r\n },\r\n location(v, direction, len) {\r\n return exports.Vector.add(v, exports.Vector.scale(exports.Vector.normalize(direction), len));\r\n },\r\n negative(v) {\r\n return exports.Vector.scale(v, -1);\r\n }\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL3ZlY3Rvci50cz9hNjk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL0NvbW1vbi92ZWN0b3IudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLlZlY3RvciA9IHZvaWQgMDtcclxuZXhwb3J0cy5WZWN0b3IgPSB7XHJcbiAgICBhZGQodjEsIHYyKSB7XHJcbiAgICAgICAgcmV0dXJuIFt2MVswXSArIHYyWzBdLCB2MVsxXSArIHYyWzFdXTtcclxuICAgIH0sXHJcbiAgICBzdWJ0cmFjdCh2MSwgdjIpIHtcclxuICAgICAgICByZXR1cm4gW3YxWzBdIC0gdjJbMF0sIHYxWzFdIC0gdjJbMV1dO1xyXG4gICAgfSxcclxuICAgIGRvdCh2MSwgdjIpIHtcclxuICAgICAgICByZXR1cm4gdjFbMF0gKiB2MlswXSArIHYxWzFdICogdjJbMV07XHJcbiAgICB9LFxyXG4gICAgc2NhbGUodiwgbikge1xyXG4gICAgICAgIHJldHVybiBbdlswXSAqIG4sIHZbMV0gKiBuXTtcclxuICAgIH0sXHJcbiAgICBsZW5ndGgodikge1xyXG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codlswXSwgMikgKyBNYXRoLnBvdyh2WzFdLCAyKSk7XHJcbiAgICB9LFxyXG4gICAgcm90YXRpb24ocmFkaWFuLCBwb2ludCwgY2VudGVyID0gWzAsIDBdKSB7XHJcbiAgICAgICAgaWYgKHJhZGlhbiA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIHBvaW50O1xyXG4gICAgICAgIHJhZGlhbiA9IC1yYWRpYW47XHJcbiAgICAgICAgbGV0IGNvcyA9IE1hdGguY29zKHJhZGlhbiksIHNpbiA9IE1hdGguc2luKHJhZGlhbiksIGR2ID0gW3BvaW50WzBdIC0gY2VudGVyWzBdLCBwb2ludFsxXSAtIGNlbnRlclsxXV0sIHYgPSBbMCwgMF07XHJcbiAgICAgICAgdlswXSA9IGNlbnRlclswXSArIChkdlswXSAqIGNvcyAtIGR2WzFdICogc2luKTtcclxuICAgICAgICB2WzFdID0gY2VudGVyWzFdICsgKGR2WzBdICogc2luICsgZHZbMV0gKiBjb3MpO1xyXG4gICAgICAgIHJldHVybiB2O1xyXG4gICAgfSxcclxuICAgIHRhbmdlbnQodikge1xyXG4gICAgICAgIHJldHVybiBbLXZbMV0sIHZbMF1dO1xyXG4gICAgfSxcclxuICAgIG5vcm1hbGl6ZSh2KSB7XHJcbiAgICAgICAgbGV0IGxlbiA9IGV4cG9ydHMuVmVjdG9yLmxlbmd0aCh2KTtcclxuICAgICAgICBpZiAobGVuID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbMCwgMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxlbiA9PT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbdlswXSAvIGxlbiwgdlsxXSAvIGxlbl07XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uKHYsIGRpcmVjdGlvbiwgbGVuKSB7XHJcbiAgICAgICAgcmV0dXJuIGV4cG9ydHMuVmVjdG9yLmFkZCh2LCBleHBvcnRzLlZlY3Rvci5zY2FsZShleHBvcnRzLlZlY3Rvci5ub3JtYWxpemUoZGlyZWN0aW9uKSwgbGVuKSk7XHJcbiAgICB9LFxyXG4gICAgbmVnYXRpdmUodikge1xyXG4gICAgICAgIHJldHVybiBleHBvcnRzLlZlY3Rvci5zY2FsZSh2LCAtMSk7XHJcbiAgICB9XHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Common/vector.ts\n"); /***/ }), /***/ "./src/Model/SVLink.ts": /*!*****************************!*\ !*** ./src/Model/SVLink.ts ***! \*****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SVLink = void 0;\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst SVModel_1 = __webpack_require__(/*! ./SVModel */ \"./src/Model/SVModel.ts\");\r\nclass SVLink extends SVModel_1.SVModel {\r\n constructor(id, type, group, layout, node, target, index, options) {\r\n super(id, type, group, layout, 'link');\r\n this.node = node;\r\n this.target = target;\r\n this.linkIndex = index;\r\n node.links.outDegree.push(this);\r\n target.links.inDegree.push(this);\r\n this.G6ModelProps = this.generateG6ModelProps(options);\r\n }\r\n generateG6ModelProps(options) {\r\n let sourceAnchor = options.sourceAnchor, targetAnchor = options.targetAnchor;\r\n if (options.sourceAnchor && typeof options.sourceAnchor === 'function' && this.linkIndex !== null) {\r\n sourceAnchor = options.sourceAnchor(this.linkIndex);\r\n }\r\n if (options.targetAnchor && typeof options.targetAnchor === 'function' && this.linkIndex !== null) {\r\n targetAnchor = options.targetAnchor(this.linkIndex);\r\n }\r\n return {\r\n id: this.id,\r\n type: options.type,\r\n source: this.node.id,\r\n target: this.target.id,\r\n sourceAnchor,\r\n targetAnchor,\r\n label: options.label,\r\n style: util_1.Util.objectClone(options.style),\r\n labelCfg: util_1.Util.objectClone(options.labelOptions),\r\n curveOffset: options.curveOffset\r\n };\r\n }\r\n}\r\nexports.SVLink = SVLink;\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW9kZWwvU1ZMaW5rLnRzPzhjODgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGVBQWUsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDdkMsa0JBQWtCLG1CQUFPLENBQUMseUNBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvTW9kZWwvU1ZMaW5rLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5TVkxpbmsgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgU1ZNb2RlbF8xID0gcmVxdWlyZShcIi4vU1ZNb2RlbFwiKTtcclxuY2xhc3MgU1ZMaW5rIGV4dGVuZHMgU1ZNb2RlbF8xLlNWTW9kZWwge1xyXG4gICAgY29uc3RydWN0b3IoaWQsIHR5cGUsIGdyb3VwLCBsYXlvdXQsIG5vZGUsIHRhcmdldCwgaW5kZXgsIG9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihpZCwgdHlwZSwgZ3JvdXAsIGxheW91dCwgJ2xpbmsnKTtcclxuICAgICAgICB0aGlzLm5vZGUgPSBub2RlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xyXG4gICAgICAgIHRoaXMubGlua0luZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgbm9kZS5saW5rcy5vdXREZWdyZWUucHVzaCh0aGlzKTtcclxuICAgICAgICB0YXJnZXQubGlua3MuaW5EZWdyZWUucHVzaCh0aGlzKTtcclxuICAgICAgICB0aGlzLkc2TW9kZWxQcm9wcyA9IHRoaXMuZ2VuZXJhdGVHNk1vZGVsUHJvcHMob3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBnZW5lcmF0ZUc2TW9kZWxQcm9wcyhvcHRpb25zKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZUFuY2hvciA9IG9wdGlvbnMuc291cmNlQW5jaG9yLCB0YXJnZXRBbmNob3IgPSBvcHRpb25zLnRhcmdldEFuY2hvcjtcclxuICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VBbmNob3IgJiYgdHlwZW9mIG9wdGlvbnMuc291cmNlQW5jaG9yID09PSAnZnVuY3Rpb24nICYmIHRoaXMubGlua0luZGV4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHNvdXJjZUFuY2hvciA9IG9wdGlvbnMuc291cmNlQW5jaG9yKHRoaXMubGlua0luZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMudGFyZ2V0QW5jaG9yICYmIHR5cGVvZiBvcHRpb25zLnRhcmdldEFuY2hvciA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmxpbmtJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0YXJnZXRBbmNob3IgPSBvcHRpb25zLnRhcmdldEFuY2hvcih0aGlzLmxpbmtJbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGUsXHJcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5ub2RlLmlkLFxyXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0LmlkLFxyXG4gICAgICAgICAgICBzb3VyY2VBbmNob3IsXHJcbiAgICAgICAgICAgIHRhcmdldEFuY2hvcixcclxuICAgICAgICAgICAgbGFiZWw6IG9wdGlvbnMubGFiZWwsXHJcbiAgICAgICAgICAgIHN0eWxlOiB1dGlsXzEuVXRpbC5vYmplY3RDbG9uZShvcHRpb25zLnN0eWxlKSxcclxuICAgICAgICAgICAgbGFiZWxDZmc6IHV0aWxfMS5VdGlsLm9iamVjdENsb25lKG9wdGlvbnMubGFiZWxPcHRpb25zKSxcclxuICAgICAgICAgICAgY3VydmVPZmZzZXQ6IG9wdGlvbnMuY3VydmVPZmZzZXRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuU1ZMaW5rID0gU1ZMaW5rO1xyXG47XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Model/SVLink.ts\n"); /***/ }), /***/ "./src/Model/SVModel.ts": /*!******************************!*\ !*** ./src/Model/SVModel.ts ***! \******************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SVModel = void 0;\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst merge_1 = __webpack_require__(/*! merge */ \"./node_modules/_merge@2.1.1@merge/lib/src/index.js\");\r\nclass SVModel {\r\n constructor(id, type, group, layout, modelType) {\r\n this.id = id;\r\n this.sourceType = type;\r\n this.group = group;\r\n this.layout = layout;\r\n this.shadowG6Item = null;\r\n this.G6Item = null;\r\n this.preLayout = false;\r\n this.discarded = false;\r\n this.freed = false;\r\n this.leaked = false;\r\n this.transformMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\r\n this.modelType = modelType;\r\n }\r\n generateG6ModelProps(options) {\r\n return null;\r\n }\r\n get(attr) {\r\n return this.G6ModelProps[attr];\r\n }\r\n set(attr, value) {\r\n if (this.discarded) {\r\n return;\r\n }\r\n if (typeof attr === 'object') {\r\n Object.keys(attr).map(item => {\r\n this.set(item, attr[item]);\r\n });\r\n return;\r\n }\r\n if (this.G6ModelProps[attr] === value) {\r\n return;\r\n }\r\n if (attr === 'style' || attr === 'labelCfg') {\r\n this.G6ModelProps[attr] = merge_1.default(this.G6ModelProps[attr] || {}, value);\r\n }\r\n else {\r\n this.G6ModelProps[attr] = value;\r\n }\r\n if (attr === 'rotation') {\r\n const matrix = util_1.Util.calcRotateMatrix(this.getMatrix(), value);\r\n this.setMatrix(matrix);\r\n }\r\n if (this.G6Item) {\r\n if (this.preLayout) {\r\n const G6ItemModel = this.G6Item.getModel();\r\n G6ItemModel[attr] = value;\r\n }\r\n else {\r\n this.g6Instance.updateItem(this.G6Item, this.G6ModelProps);\r\n }\r\n }\r\n if (this.shadowG6Item) {\r\n this.shadowG6Instance.updateItem(this.shadowG6Item, this.G6ModelProps);\r\n }\r\n }\r\n updateG6ModelStyle(G6ModelProps) {\r\n const newG6ModelProps = {\r\n style: Object.assign({}, G6ModelProps.style),\r\n labelCfg: Object.assign({}, G6ModelProps.labelCfg)\r\n };\r\n this.G6ModelProps = merge_1.default.recursive(this.G6ModelProps, newG6ModelProps);\r\n if (this.G6Item) {\r\n this.g6Instance.updateItem(this.G6Item, this.G6ModelProps);\r\n }\r\n if (this.shadowG6Item) {\r\n this.shadowG6Instance.updateItem(this.shadowG6Item, this.G6ModelProps);\r\n }\r\n }\r\n getBound() {\r\n return this.shadowG6Item.getBBox();\r\n }\r\n getMatrix() {\r\n return [...this.transformMatrix];\r\n }\r\n setMatrix(matrix) {\r\n this.transformMatrix = matrix;\r\n this.set('style', { matrix });\r\n }\r\n setSelectedState(isSelected) {\r\n if (this.G6Item === null) {\r\n return;\r\n }\r\n this.G6Item.setState('selected', isSelected);\r\n }\r\n getG6ModelProps() {\r\n return util_1.Util.objectClone(this.G6ModelProps);\r\n }\r\n getModelType() {\r\n return this.modelType;\r\n }\r\n isNode() {\r\n return false;\r\n }\r\n}\r\nexports.SVModel = SVModel;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW9kZWwvU1ZNb2RlbC50cz9iOWZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDLGdCQUFnQixtQkFBTyxDQUFDLGlFQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL01vZGVsL1NWTW9kZWwudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLlNWTW9kZWwgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgbWVyZ2VfMSA9IHJlcXVpcmUoXCJtZXJnZVwiKTtcclxuY2xhc3MgU1ZNb2RlbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgdHlwZSwgZ3JvdXAsIGxheW91dCwgbW9kZWxUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuc291cmNlVHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5ncm91cCA9IGdyb3VwO1xyXG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xyXG4gICAgICAgIHRoaXMuc2hhZG93RzZJdGVtID0gbnVsbDtcclxuICAgICAgICB0aGlzLkc2SXRlbSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5wcmVMYXlvdXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc2NhcmRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZnJlZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxlYWtlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHJhbnNmb3JtTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xyXG4gICAgICAgIHRoaXMubW9kZWxUeXBlID0gbW9kZWxUeXBlO1xyXG4gICAgfVxyXG4gICAgZ2VuZXJhdGVHNk1vZGVsUHJvcHMob3B0aW9ucykge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZ2V0KGF0dHIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5HNk1vZGVsUHJvcHNbYXR0cl07XHJcbiAgICB9XHJcbiAgICBzZXQoYXR0ciwgdmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNjYXJkZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGF0dHIgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGF0dHIpLm1hcChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0KGl0ZW0sIGF0dHJbaXRlbV0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5HNk1vZGVsUHJvcHNbYXR0cl0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHIgPT09ICdzdHlsZScgfHwgYXR0ciA9PT0gJ2xhYmVsQ2ZnJykge1xyXG4gICAgICAgICAgICB0aGlzLkc2TW9kZWxQcm9wc1thdHRyXSA9IG1lcmdlXzEuZGVmYXVsdCh0aGlzLkc2TW9kZWxQcm9wc1thdHRyXSB8fCB7fSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5HNk1vZGVsUHJvcHNbYXR0cl0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHIgPT09ICdyb3RhdGlvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0cml4ID0gdXRpbF8xLlV0aWwuY2FsY1JvdGF0ZU1hdHJpeCh0aGlzLmdldE1hdHJpeCgpLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TWF0cml4KG1hdHJpeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLkc2SXRlbSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcmVMYXlvdXQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IEc2SXRlbU1vZGVsID0gdGhpcy5HNkl0ZW0uZ2V0TW9kZWwoKTtcclxuICAgICAgICAgICAgICAgIEc2SXRlbU1vZGVsW2F0dHJdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmc2SW5zdGFuY2UudXBkYXRlSXRlbSh0aGlzLkc2SXRlbSwgdGhpcy5HNk1vZGVsUHJvcHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNoYWRvd0c2SXRlbSkge1xyXG4gICAgICAgICAgICB0aGlzLnNoYWRvd0c2SW5zdGFuY2UudXBkYXRlSXRlbSh0aGlzLnNoYWRvd0c2SXRlbSwgdGhpcy5HNk1vZGVsUHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHVwZGF0ZUc2TW9kZWxTdHlsZShHNk1vZGVsUHJvcHMpIHtcclxuICAgICAgICBjb25zdCBuZXdHNk1vZGVsUHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKHt9LCBHNk1vZGVsUHJvcHMuc3R5bGUpLFxyXG4gICAgICAgICAgICBsYWJlbENmZzogT2JqZWN0LmFzc2lnbih7fSwgRzZNb2RlbFByb3BzLmxhYmVsQ2ZnKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5HNk1vZGVsUHJvcHMgPSBtZXJnZV8xLmRlZmF1bHQucmVjdXJzaXZlKHRoaXMuRzZNb2RlbFByb3BzLCBuZXdHNk1vZGVsUHJvcHMpO1xyXG4gICAgICAgIGlmICh0aGlzLkc2SXRlbSkge1xyXG4gICAgICAgICAgICB0aGlzLmc2SW5zdGFuY2UudXBkYXRlSXRlbSh0aGlzLkc2SXRlbSwgdGhpcy5HNk1vZGVsUHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaGFkb3dHNkl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5zaGFkb3dHNkluc3RhbmNlLnVwZGF0ZUl0ZW0odGhpcy5zaGFkb3dHNkl0ZW0sIHRoaXMuRzZNb2RlbFByb3BzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXRCb3VuZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGFkb3dHNkl0ZW0uZ2V0QkJveCgpO1xyXG4gICAgfVxyXG4gICAgZ2V0TWF0cml4KCkge1xyXG4gICAgICAgIHJldHVybiBbLi4udGhpcy50cmFuc2Zvcm1NYXRyaXhdO1xyXG4gICAgfVxyXG4gICAgc2V0TWF0cml4KG1hdHJpeCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNmb3JtTWF0cml4ID0gbWF0cml4O1xyXG4gICAgICAgIHRoaXMuc2V0KCdzdHlsZScsIHsgbWF0cml4IH0pO1xyXG4gICAgfVxyXG4gICAgc2V0U2VsZWN0ZWRTdGF0ZShpc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRzZJdGVtID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5HNkl0ZW0uc2V0U3RhdGUoJ3NlbGVjdGVkJywgaXNTZWxlY3RlZCk7XHJcbiAgICB9XHJcbiAgICBnZXRHNk1vZGVsUHJvcHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHV0aWxfMS5VdGlsLm9iamVjdENsb25lKHRoaXMuRzZNb2RlbFByb3BzKTtcclxuICAgIH1cclxuICAgIGdldE1vZGVsVHlwZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFR5cGU7XHJcbiAgICB9XHJcbiAgICBpc05vZGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuU1ZNb2RlbCA9IFNWTW9kZWw7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Model/SVModel.ts\n"); /***/ }), /***/ "./src/Model/SVNode.ts": /*!*****************************!*\ !*** ./src/Model/SVNode.ts ***! \*****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SVNode = void 0;\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst SVModel_1 = __webpack_require__(/*! ./SVModel */ \"./src/Model/SVModel.ts\");\r\nclass SVNode extends SVModel_1.SVModel {\r\n constructor(id, type, group, layout, sourceNode, label, options) {\r\n super(id, type, group, layout, 'node');\r\n this.group = group;\r\n this.layout = layout;\r\n Object.keys(sourceNode).map(prop => {\r\n if (prop !== 'id') {\r\n this[prop] = sourceNode[prop];\r\n }\r\n });\r\n this.sourceNode = sourceNode;\r\n this.sourceId = sourceNode.id.toString();\r\n this.links = { inDegree: [], outDegree: [] };\r\n this.appendages = [];\r\n this.sourceNode = sourceNode;\r\n this.label = label;\r\n this.G6ModelProps = this.generateG6ModelProps(options);\r\n }\r\n generateG6ModelProps(options) {\r\n const style = util_1.Util.objectClone(options.style);\r\n return Object.assign(Object.assign({}, this.sourceNode), { id: this.id, x: 0, y: 0, rotation: options.rotation || 0, type: options.type, size: options.size || [60, 30], anchorPoints: options.anchorPoints, label: this.label, style: Object.assign(Object.assign({}, style), { fill: this.disable ? '#ccc' : style.fill }), labelCfg: util_1.Util.objectClone(options.labelOptions) });\r\n }\r\n isNode() {\r\n return true;\r\n }\r\n setSelectedState(isSelected) {\r\n if (this.G6Item === null) {\r\n return;\r\n }\r\n this.G6Item.setState('selected', isSelected);\r\n this.appendages.forEach(item => {\r\n item.setSelectedState(isSelected);\r\n });\r\n }\r\n getSourceId() {\r\n return this.sourceId;\r\n }\r\n}\r\nexports.SVNode = SVNode;\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW9kZWwvU1ZOb2RlLnRzPzFmMDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGVBQWUsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDdkMsa0JBQWtCLG1CQUFPLENBQUMseUNBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMscUJBQXFCLDJNQUEyTSxXQUFXLDJDQUEyQyw0REFBNEQ7QUFDL1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9Nb2RlbC9TVk5vZGUudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLlNWTm9kZSA9IHZvaWQgMDtcclxuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcIi4uL0NvbW1vbi91dGlsXCIpO1xyXG5jb25zdCBTVk1vZGVsXzEgPSByZXF1aXJlKFwiLi9TVk1vZGVsXCIpO1xyXG5jbGFzcyBTVk5vZGUgZXh0ZW5kcyBTVk1vZGVsXzEuU1ZNb2RlbCB7XHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgdHlwZSwgZ3JvdXAsIGxheW91dCwgc291cmNlTm9kZSwgbGFiZWwsIG9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihpZCwgdHlwZSwgZ3JvdXAsIGxheW91dCwgJ25vZGUnKTtcclxuICAgICAgICB0aGlzLmdyb3VwID0gZ3JvdXA7XHJcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoc291cmNlTm9kZSkubWFwKHByb3AgPT4ge1xyXG4gICAgICAgICAgICBpZiAocHJvcCAhPT0gJ2lkJykge1xyXG4gICAgICAgICAgICAgICAgdGhpc1twcm9wXSA9IHNvdXJjZU5vZGVbcHJvcF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNvdXJjZU5vZGUgPSBzb3VyY2VOb2RlO1xyXG4gICAgICAgIHRoaXMuc291cmNlSWQgPSBzb3VyY2VOb2RlLmlkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5saW5rcyA9IHsgaW5EZWdyZWU6IFtdLCBvdXREZWdyZWU6IFtdIH07XHJcbiAgICAgICAgdGhpcy5hcHBlbmRhZ2VzID0gW107XHJcbiAgICAgICAgdGhpcy5zb3VyY2VOb2RlID0gc291cmNlTm9kZTtcclxuICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7XHJcbiAgICAgICAgdGhpcy5HNk1vZGVsUHJvcHMgPSB0aGlzLmdlbmVyYXRlRzZNb2RlbFByb3BzKG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgZ2VuZXJhdGVHNk1vZGVsUHJvcHMob3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdXRpbF8xLlV0aWwub2JqZWN0Q2xvbmUob3B0aW9ucy5zdHlsZSk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zb3VyY2VOb2RlKSwgeyBpZDogdGhpcy5pZCwgeDogMCwgeTogMCwgcm90YXRpb246IG9wdGlvbnMucm90YXRpb24gfHwgMCwgdHlwZTogb3B0aW9ucy50eXBlLCBzaXplOiBvcHRpb25zLnNpemUgfHwgWzYwLCAzMF0sIGFuY2hvclBvaW50czogb3B0aW9ucy5hbmNob3JQb2ludHMsIGxhYmVsOiB0aGlzLmxhYmVsLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdHlsZSksIHsgZmlsbDogdGhpcy5kaXNhYmxlID8gJyNjY2MnIDogc3R5bGUuZmlsbCB9KSwgbGFiZWxDZmc6IHV0aWxfMS5VdGlsLm9iamVjdENsb25lKG9wdGlvbnMubGFiZWxPcHRpb25zKSB9KTtcclxuICAgIH1cclxuICAgIGlzTm9kZSgpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHNldFNlbGVjdGVkU3RhdGUoaXNTZWxlY3RlZCkge1xyXG4gICAgICAgIGlmICh0aGlzLkc2SXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuRzZJdGVtLnNldFN0YXRlKCdzZWxlY3RlZCcsIGlzU2VsZWN0ZWQpO1xyXG4gICAgICAgIHRoaXMuYXBwZW5kYWdlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnNldFNlbGVjdGVkU3RhdGUoaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBnZXRTb3VyY2VJZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VJZDtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLlNWTm9kZSA9IFNWTm9kZTtcclxuO1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Model/SVNode.ts\n"); /***/ }), /***/ "./src/Model/SVNodeAppendage.ts": /*!**************************************!*\ !*** ./src/Model/SVNodeAppendage.ts ***! \**************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SVMarker = exports.SVIndexLabel = exports.SVAddressLabel = exports.SVFreedLabel = exports.SVNodeAppendage = void 0;\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst SVModel_1 = __webpack_require__(/*! ./SVModel */ \"./src/Model/SVModel.ts\");\r\nclass SVNodeAppendage extends SVModel_1.SVModel {\r\n constructor(id, type, group, layout, modelType, target) {\r\n super(id, type, group, layout, modelType);\r\n this.target = target;\r\n this.target.appendages.push(this);\r\n }\r\n}\r\nexports.SVNodeAppendage = SVNodeAppendage;\r\nclass SVFreedLabel extends SVNodeAppendage {\r\n constructor(id, type, group, layout, target) {\r\n super(id, type, group, layout, 'freedLabel', target);\r\n this.target.freedLabel = this;\r\n this.G6ModelProps = this.generateG6ModelProps();\r\n }\r\n generateG6ModelProps() {\r\n return {\r\n id: this.id,\r\n x: 0,\r\n y: 0,\r\n type: 'rect',\r\n label: '已释放',\r\n labelCfg: {\r\n style: {\r\n fill: '#b83b5e',\r\n opacity: 0.6\r\n }\r\n },\r\n size: [0, 0],\r\n style: {\r\n opacity: 0,\r\n stroke: null,\r\n fill: 'transparent'\r\n }\r\n };\r\n }\r\n}\r\nexports.SVFreedLabel = SVFreedLabel;\r\nclass SVAddressLabel extends SVNodeAppendage {\r\n constructor(id, type, group, layout, target, options) {\r\n super(id, type, group, layout, 'addressLabel', target);\r\n this.sourceId = target.sourceId;\r\n this.target.addressLabel = this;\r\n this.G6ModelProps = this.generateG6ModelProps(options);\r\n }\r\n generateG6ModelProps(options) {\r\n return {\r\n id: this.id,\r\n x: 0,\r\n y: 0,\r\n type: 'rect',\r\n label: this.sourceId,\r\n labelCfg: {\r\n style: Object.assign({ fill: '#666', fontSize: 16 }, options.style)\r\n },\r\n size: [0, 0],\r\n style: {\r\n stroke: null,\r\n fill: 'transparent'\r\n }\r\n };\r\n }\r\n}\r\nexports.SVAddressLabel = SVAddressLabel;\r\nclass SVIndexLabel extends SVNodeAppendage {\r\n constructor(id, indexName, group, layout, value, target, options) {\r\n super(id, indexName, group, layout, 'indexLabel', target);\r\n this.target.indexLabel = this;\r\n this.value = value;\r\n this.G6ModelProps = this.generateG6ModelProps(options);\r\n }\r\n generateG6ModelProps(options) {\r\n return {\r\n id: this.id,\r\n x: 0,\r\n y: 0,\r\n type: 'rect',\r\n label: this.value,\r\n labelCfg: {\r\n style: Object.assign({ fill: '#bbb', textAlign: 'center', textBaseline: 'middle', fontSize: 14, fontStyle: 'italic' }, options.style)\r\n },\r\n size: [0, 0],\r\n style: {\r\n stroke: null,\r\n fill: 'transparent'\r\n }\r\n };\r\n }\r\n}\r\nexports.SVIndexLabel = SVIndexLabel;\r\nclass SVMarker extends SVNodeAppendage {\r\n constructor(id, type, group, layout, label, target, options) {\r\n super(id, type, group, layout, 'marker', target);\r\n this.label = label;\r\n this.target.marker = this;\r\n this.G6ModelProps = this.generateG6ModelProps(options);\r\n }\r\n generateG6ModelProps(options) {\r\n this.anchor = options.anchor;\r\n const type = options.type, defaultSize = type === 'pointer' ? [8, 30] : [12, 12];\r\n return {\r\n id: this.id,\r\n x: 0,\r\n y: 0,\r\n rotation: 0,\r\n type: options.type || 'marker',\r\n size: options.size || defaultSize,\r\n anchorPoints: null,\r\n label: typeof this.label === 'string' ? this.label : this.label.join(', '),\r\n style: util_1.Util.objectClone(options.style),\r\n labelCfg: util_1.Util.objectClone(options.labelOptions)\r\n };\r\n }\r\n getLabelSizeRadius() {\r\n const { width, height } = this.shadowG6Item.getContainer().getChildren()[2].getBBox();\r\n return Math.max(width, height);\r\n }\r\n}\r\nexports.SVMarker = SVMarker;\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW9kZWwvU1ZOb2RlQXBwZW5kYWdlLnRzPzY3MzYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLGVBQWUsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDdkMsa0JBQWtCLG1CQUFPLENBQUMseUNBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2QkFBNkI7QUFDbkUsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQywrRkFBK0Y7QUFDckksYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsZ0JBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvTW9kZWwvU1ZOb2RlQXBwZW5kYWdlLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5TVk1hcmtlciA9IGV4cG9ydHMuU1ZJbmRleExhYmVsID0gZXhwb3J0cy5TVkFkZHJlc3NMYWJlbCA9IGV4cG9ydHMuU1ZGcmVlZExhYmVsID0gZXhwb3J0cy5TVk5vZGVBcHBlbmRhZ2UgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgU1ZNb2RlbF8xID0gcmVxdWlyZShcIi4vU1ZNb2RlbFwiKTtcclxuY2xhc3MgU1ZOb2RlQXBwZW5kYWdlIGV4dGVuZHMgU1ZNb2RlbF8xLlNWTW9kZWwge1xyXG4gICAgY29uc3RydWN0b3IoaWQsIHR5cGUsIGdyb3VwLCBsYXlvdXQsIG1vZGVsVHlwZSwgdGFyZ2V0KSB7XHJcbiAgICAgICAgc3VwZXIoaWQsIHR5cGUsIGdyb3VwLCBsYXlvdXQsIG1vZGVsVHlwZSk7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XHJcbiAgICAgICAgdGhpcy50YXJnZXQuYXBwZW5kYWdlcy5wdXNoKHRoaXMpO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuU1ZOb2RlQXBwZW5kYWdlID0gU1ZOb2RlQXBwZW5kYWdlO1xyXG5jbGFzcyBTVkZyZWVkTGFiZWwgZXh0ZW5kcyBTVk5vZGVBcHBlbmRhZ2Uge1xyXG4gICAgY29uc3RydWN0b3IoaWQsIHR5cGUsIGdyb3VwLCBsYXlvdXQsIHRhcmdldCkge1xyXG4gICAgICAgIHN1cGVyKGlkLCB0eXBlLCBncm91cCwgbGF5b3V0LCAnZnJlZWRMYWJlbCcsIHRhcmdldCk7XHJcbiAgICAgICAgdGhpcy50YXJnZXQuZnJlZWRMYWJlbCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5HNk1vZGVsUHJvcHMgPSB0aGlzLmdlbmVyYXRlRzZNb2RlbFByb3BzKCk7XHJcbiAgICB9XHJcbiAgICBnZW5lcmF0ZUc2TW9kZWxQcm9wcygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgdHlwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ+W3sumHiuaUvicsXHJcbiAgICAgICAgICAgIGxhYmVsQ2ZnOiB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICcjYjgzYjVlJyxcclxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjZcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2l6ZTogWzAsIDBdLFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5TVkZyZWVkTGFiZWwgPSBTVkZyZWVkTGFiZWw7XHJcbmNsYXNzIFNWQWRkcmVzc0xhYmVsIGV4dGVuZHMgU1ZOb2RlQXBwZW5kYWdlIHtcclxuICAgIGNvbnN0cnVjdG9yKGlkLCB0eXBlLCBncm91cCwgbGF5b3V0LCB0YXJnZXQsIG9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihpZCwgdHlwZSwgZ3JvdXAsIGxheW91dCwgJ2FkZHJlc3NMYWJlbCcsIHRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VJZCA9IHRhcmdldC5zb3VyY2VJZDtcclxuICAgICAgICB0aGlzLnRhcmdldC5hZGRyZXNzTGFiZWwgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuRzZNb2RlbFByb3BzID0gdGhpcy5nZW5lcmF0ZUc2TW9kZWxQcm9wcyhvcHRpb25zKTtcclxuICAgIH1cclxuICAgIGdlbmVyYXRlRzZNb2RlbFByb3BzKG9wdGlvbnMpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgdHlwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5zb3VyY2VJZCxcclxuICAgICAgICAgICAgbGFiZWxDZmc6IHtcclxuICAgICAgICAgICAgICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKHsgZmlsbDogJyM2NjYnLCBmb250U2l6ZTogMTYgfSwgb3B0aW9ucy5zdHlsZSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2l6ZTogWzAsIDBdLFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLlNWQWRkcmVzc0xhYmVsID0gU1ZBZGRyZXNzTGFiZWw7XHJcbmNsYXNzIFNWSW5kZXhMYWJlbCBleHRlbmRzIFNWTm9kZUFwcGVuZGFnZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihpZCwgaW5kZXhOYW1lLCBncm91cCwgbGF5b3V0LCB2YWx1ZSwgdGFyZ2V0LCBvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoaWQsIGluZGV4TmFtZSwgZ3JvdXAsIGxheW91dCwgJ2luZGV4TGFiZWwnLCB0YXJnZXQpO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0LmluZGV4TGFiZWwgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLkc2TW9kZWxQcm9wcyA9IHRoaXMuZ2VuZXJhdGVHNk1vZGVsUHJvcHMob3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBnZW5lcmF0ZUc2TW9kZWxQcm9wcyhvcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgIHR5cGU6ICdyZWN0JyxcclxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudmFsdWUsXHJcbiAgICAgICAgICAgIGxhYmVsQ2ZnOiB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7IGZpbGw6ICcjYmJiJywgdGV4dEFsaWduOiAnY2VudGVyJywgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJywgZm9udFNpemU6IDE0LCBmb250U3R5bGU6ICdpdGFsaWMnIH0sIG9wdGlvbnMuc3R5bGUpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNpemU6IFswLCAwXSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5TVkluZGV4TGFiZWwgPSBTVkluZGV4TGFiZWw7XHJcbmNsYXNzIFNWTWFya2VyIGV4dGVuZHMgU1ZOb2RlQXBwZW5kYWdlIHtcclxuICAgIGNvbnN0cnVjdG9yKGlkLCB0eXBlLCBncm91cCwgbGF5b3V0LCBsYWJlbCwgdGFyZ2V0LCBvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIoaWQsIHR5cGUsIGdyb3VwLCBsYXlvdXQsICdtYXJrZXInLCB0YXJnZXQpO1xyXG4gICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcclxuICAgICAgICB0aGlzLnRhcmdldC5tYXJrZXIgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuRzZNb2RlbFByb3BzID0gdGhpcy5nZW5lcmF0ZUc2TW9kZWxQcm9wcyhvcHRpb25zKTtcclxuICAgIH1cclxuICAgIGdlbmVyYXRlRzZNb2RlbFByb3BzKG9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmFuY2hvciA9IG9wdGlvbnMuYW5jaG9yO1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBvcHRpb25zLnR5cGUsIGRlZmF1bHRTaXplID0gdHlwZSA9PT0gJ3BvaW50ZXInID8gWzgsIDMwXSA6IFsxMiwgMTJdO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvbjogMCxcclxuICAgICAgICAgICAgdHlwZTogb3B0aW9ucy50eXBlIHx8ICdtYXJrZXInLFxyXG4gICAgICAgICAgICBzaXplOiBvcHRpb25zLnNpemUgfHwgZGVmYXVsdFNpemUsXHJcbiAgICAgICAgICAgIGFuY2hvclBvaW50czogbnVsbCxcclxuICAgICAgICAgICAgbGFiZWw6IHR5cGVvZiB0aGlzLmxhYmVsID09PSAnc3RyaW5nJyA/IHRoaXMubGFiZWwgOiB0aGlzLmxhYmVsLmpvaW4oJywgJyksXHJcbiAgICAgICAgICAgIHN0eWxlOiB1dGlsXzEuVXRpbC5vYmplY3RDbG9uZShvcHRpb25zLnN0eWxlKSxcclxuICAgICAgICAgICAgbGFiZWxDZmc6IHV0aWxfMS5VdGlsLm9iamVjdENsb25lKG9wdGlvbnMubGFiZWxPcHRpb25zKVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBnZXRMYWJlbFNpemVSYWRpdXMoKSB7XHJcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLnNoYWRvd0c2SXRlbS5nZXRDb250YWluZXIoKS5nZXRDaGlsZHJlbigpWzJdLmdldEJCb3goKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5TVk1hcmtlciA9IFNWTWFya2VyO1xyXG47XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Model/SVNodeAppendage.ts\n"); /***/ }), /***/ "./src/Model/modelConstructor.ts": /*!***************************************!*\ !*** ./src/Model/modelConstructor.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ModelConstructor = void 0;\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst StructV_1 = __webpack_require__(/*! ../StructV */ \"./src/StructV.ts\");\r\nconst SVLink_1 = __webpack_require__(/*! ./SVLink */ \"./src/Model/SVLink.ts\");\r\nconst SVNode_1 = __webpack_require__(/*! ./SVNode */ \"./src/Model/SVNode.ts\");\r\nconst SVNodeAppendage_1 = __webpack_require__(/*! ./SVNodeAppendage */ \"./src/Model/SVNodeAppendage.ts\");\r\nclass ModelConstructor {\r\n constructor(engine) {\r\n this.engine = engine;\r\n this.prevSourcesStringMap = {};\r\n }\r\n construct(sources) {\r\n const layoutGroupTable = new Map(), layoutMap = StructV_1.SV.registeredLayout;\r\n Object.keys(sources).forEach(group => {\r\n let sourceGroup = sources[group], layout = sourceGroup.layouter, layoutCreator = layoutMap[layout];\r\n if (!layout || !layoutCreator) {\r\n return;\r\n }\r\n let sourceDataString = JSON.stringify(sourceGroup.data), prevString = this.prevSourcesStringMap[group], nodeList = [], freedLabelList = [], addressLabelList = [], indexLabelList = [], markerList = [];\r\n if (prevString === sourceDataString) {\r\n return;\r\n }\r\n const options = layoutCreator.defineOptions(sourceGroup.data), sourceData = layoutCreator.sourcesPreprocess(sourceGroup.data, options), nodeOptions = options.node || options['element'] || {}, markerOptions = options.marker || {}, indexLabelOptions = options.indexLabel || {}, addressLabelOption = options.addressLabel || {};\r\n nodeList = this.constructNodes(group, layout, nodeOptions, sourceData);\r\n markerList = this.constructMarkers(group, layout, markerOptions, nodeList);\r\n indexLabelList = this.constructIndexLabel(group, layout, indexLabelOptions, nodeList);\r\n addressLabelList = this.constructAddressLabel(group, layout, addressLabelOption, nodeList);\r\n nodeList.forEach(item => {\r\n if (item.freedLabel) {\r\n freedLabelList.push(item.freedLabel);\r\n }\r\n });\r\n layoutGroupTable.set(group, {\r\n name: group,\r\n node: nodeList,\r\n freedLabel: freedLabelList,\r\n addressLabel: addressLabelList,\r\n indexLabel: indexLabelList,\r\n link: [],\r\n marker: markerList,\r\n options,\r\n layoutCreator,\r\n modelList: [\r\n ...nodeList,\r\n ...markerList,\r\n ...freedLabelList,\r\n ...addressLabelList,\r\n ...indexLabelList\r\n ],\r\n layout,\r\n isHide: false\r\n });\r\n });\r\n layoutGroupTable.forEach((layoutGroup, group) => {\r\n const linkOptions = layoutGroup.options.link || {}, linkList = this.constructLinks(group, layoutGroup.layout, linkOptions, layoutGroup.node, layoutGroupTable);\r\n layoutGroup.link = linkList;\r\n layoutGroup.modelList.push(...linkList);\r\n });\r\n this.layoutGroupTable = layoutGroupTable;\r\n return this.layoutGroupTable;\r\n }\r\n constructNodes(group, layout, nodeOptions, sourceList) {\r\n let defaultSourceNodeType = 'default', nodeList = [];\r\n sourceList.forEach(item => {\r\n if (item === null) {\r\n return;\r\n }\r\n if (item.type === undefined || item.type === null) {\r\n item.type = defaultSourceNodeType;\r\n }\r\n nodeList.push(this.createNode(item, item.type, group, layout, nodeOptions[item.type]));\r\n });\r\n return nodeList;\r\n }\r\n constructLinks(group, layout, linkOptions, nodes, layoutGroupTable) {\r\n let linkList = [], linkNames = Object.keys(linkOptions);\r\n linkNames.forEach(name => {\r\n for (let i = 0; i < nodes.length; i++) {\r\n let node = nodes[i], sourceLinkData = node.sourceNode[name], targetNode = null, link = null;\r\n if (sourceLinkData === undefined || sourceLinkData === null) {\r\n node[name] = null;\r\n continue;\r\n }\r\n if (Array.isArray(sourceLinkData)) {\r\n node[name] = sourceLinkData.map((item, index) => {\r\n targetNode = this.fetchTargetNodes(layoutGroupTable, node, item);\r\n let isGeneralLink = this.isGeneralLink(sourceLinkData.toString());\r\n if (targetNode) {\r\n link = this.createLink(name, group, layout, node, targetNode, index, linkOptions[name]);\r\n linkList.push(link);\r\n }\r\n return isGeneralLink ? targetNode : null;\r\n });\r\n }\r\n else {\r\n targetNode = this.fetchTargetNodes(layoutGroupTable, node, sourceLinkData);\r\n let isGeneralLink = this.isGeneralLink(sourceLinkData.toString());\r\n if (targetNode) {\r\n link = this.createLink(name, group, layout, node, targetNode, null, linkOptions[name]);\r\n linkList.push(link);\r\n }\r\n node[name] = isGeneralLink ? targetNode : null;\r\n }\r\n }\r\n });\r\n return linkList;\r\n }\r\n constructIndexLabel(group, layout, indexLabelOptions, nodes) {\r\n let indexLabelList = [], indexNames = Object.keys(indexLabelOptions);\r\n indexNames.forEach(name => {\r\n for (let i = 0; i < nodes.length; i++) {\r\n let node = nodes[i], value = node[name];\r\n if (value === undefined || value === null)\r\n continue;\r\n let id = `${group}.${name}#${value}`, indexLabel = new SVNodeAppendage_1.SVIndexLabel(id, name, group, layout, value.toString(), node, indexLabelOptions[name]);\r\n indexLabelList.push(indexLabel);\r\n }\r\n });\r\n return indexLabelList;\r\n }\r\n constructAddressLabel(group, layout, addressLabelOption, nodes) {\r\n let addressLabelList = [];\r\n nodes.forEach(item => {\r\n const addressLabel = new SVNodeAppendage_1.SVAddressLabel(`${item.id}-address-label`, item.sourceType, group, layout, item, addressLabelOption);\r\n addressLabelList.push(addressLabel);\r\n });\r\n return addressLabelList;\r\n }\r\n constructMarkers(group, layout, markerOptions, nodes) {\r\n let markerList = [], markerNames = Object.keys(markerOptions);\r\n markerNames.forEach(name => {\r\n for (let i = 0; i < nodes.length; i++) {\r\n let node = nodes[i], markerData = node[name];\r\n if (!markerData)\r\n continue;\r\n let id = `${group}.${name}.${Array.isArray(markerData) ? markerData.join('-') : markerData}`, marker = new SVNodeAppendage_1.SVMarker(id, name, group, layout, markerData, node, markerOptions[name]);\r\n markerList.push(marker);\r\n }\r\n });\r\n return markerList;\r\n }\r\n resolveNodeLabel(label, sourceNode) {\r\n let targetLabel = '';\r\n if (Array.isArray(label)) {\r\n targetLabel = label.map(item => { var _a; return (_a = this.parserNodeContent(sourceNode, item)) !== null && _a !== void 0 ? _a : ''; });\r\n }\r\n else {\r\n targetLabel = this.parserNodeContent(sourceNode, label);\r\n }\r\n if (targetLabel === 'undefined') {\r\n targetLabel = '';\r\n }\r\n return targetLabel !== null && targetLabel !== void 0 ? targetLabel : '';\r\n }\r\n createNode(sourceNode, sourceNodeType, group, layout, options) {\r\n let label = this.resolveNodeLabel(options.label, sourceNode), id = sourceNodeType + '.' + sourceNode.id.toString(), node = new SVNode_1.SVNode(id, sourceNodeType, group, layout, sourceNode, label, options);\r\n if (node.freed) {\r\n node.freedLabel = new SVNodeAppendage_1.SVFreedLabel(`${id}-freed-label`, sourceNodeType, group, layout, node);\r\n }\r\n return node;\r\n }\r\n createLink(linkName, group, layout, node, target, index, options) {\r\n let id = `${linkName}(${node.id}-${target.id})`;\r\n return new SVLink_1.SVLink(id, linkName, group, layout, node, target, index, options);\r\n }\r\n parserNodeContent(sourceNode, formatLabel) {\r\n let fields = util_1.Util.textParser(formatLabel);\r\n if (Array.isArray(fields)) {\r\n let values = fields.map(item => sourceNode[item]);\r\n values.map((item, index) => {\r\n formatLabel = formatLabel.replace('[' + fields[index] + ']', item);\r\n });\r\n }\r\n return formatLabel;\r\n }\r\n fetchTargetNodes(layoutGroupTable, node, linkTarget) {\r\n let group = node.group, sourceNodeType = node.sourceType, nodeList, targetId = linkTarget, targetGroupName = group, targetNode = null;\r\n if (linkTarget === null || linkTarget === undefined) {\r\n return null;\r\n }\r\n if (typeof linkTarget === 'number' || (typeof linkTarget === 'string' && !linkTarget.includes('#'))) {\r\n linkTarget = 'default#' + linkTarget;\r\n }\r\n let info = linkTarget.split('#');\r\n targetId = info.pop();\r\n if (info.length > 1) {\r\n sourceNodeType = info.pop();\r\n targetGroupName = info.pop();\r\n }\r\n else {\r\n let field = info.pop();\r\n if (layoutGroupTable.get(targetGroupName).node.find(item => item.sourceType === field)) {\r\n sourceNodeType = field;\r\n }\r\n else if (layoutGroupTable.has(field)) {\r\n targetGroupName = field;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n nodeList = layoutGroupTable.get(targetGroupName).node.filter(item => item.sourceType === sourceNodeType);\r\n if (nodeList === undefined) {\r\n return null;\r\n }\r\n targetNode = nodeList.find(item => item.sourceId === targetId);\r\n return targetNode || null;\r\n }\r\n isGeneralLink(linkId) {\r\n let counter = 0;\r\n for (let i = 0; i < linkId.length; i++) {\r\n if (linkId[i] === '#') {\r\n counter++;\r\n }\r\n }\r\n return counter <= 2;\r\n }\r\n getLayoutGroupTable() {\r\n return this.layoutGroupTable;\r\n }\r\n destroy() {\r\n this.layoutGroupTable = null;\r\n this.prevSourcesStringMap = null;\r\n }\r\n}\r\nexports.ModelConstructor = ModelConstructor;\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW9kZWwvbW9kZWxDb25zdHJ1Y3Rvci50cz81NmMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDLGtCQUFrQixtQkFBTyxDQUFDLG9DQUFZO0FBQ3RDLGlCQUFpQixtQkFBTyxDQUFDLHVDQUFVO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHVDQUFVO0FBQ25DLDBCQUEwQixtQkFBTyxDQUFDLHlEQUFtQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBNQUEwTSxzQ0FBc0MsOENBQThDO0FBQzlSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixrQkFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0JBQWtCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixNQUFNLEdBQUcsS0FBSyxHQUFHLE1BQU07QUFDbkQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUVBQXlFLFFBQVE7QUFDakY7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixrQkFBa0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLE1BQU0sR0FBRyxLQUFLLEdBQUcsOERBQThEO0FBQzNHO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxRQUFRLDRGQUE0RixFQUFFO0FBQ25KO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxHQUFHO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFNBQVMsR0FBRyxRQUFRLEdBQUcsVUFBVTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL01vZGVsL21vZGVsQ29uc3RydWN0b3IudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLk1vZGVsQ29uc3RydWN0b3IgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgU3RydWN0Vl8xID0gcmVxdWlyZShcIi4uL1N0cnVjdFZcIik7XHJcbmNvbnN0IFNWTGlua18xID0gcmVxdWlyZShcIi4vU1ZMaW5rXCIpO1xyXG5jb25zdCBTVk5vZGVfMSA9IHJlcXVpcmUoXCIuL1NWTm9kZVwiKTtcclxuY29uc3QgU1ZOb2RlQXBwZW5kYWdlXzEgPSByZXF1aXJlKFwiLi9TVk5vZGVBcHBlbmRhZ2VcIik7XHJcbmNsYXNzIE1vZGVsQ29uc3RydWN0b3Ige1xyXG4gICAgY29uc3RydWN0b3IoZW5naW5lKSB7XHJcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XHJcbiAgICAgICAgdGhpcy5wcmV2U291cmNlc1N0cmluZ01hcCA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3RydWN0KHNvdXJjZXMpIHtcclxuICAgICAgICBjb25zdCBsYXlvdXRHcm91cFRhYmxlID0gbmV3IE1hcCgpLCBsYXlvdXRNYXAgPSBTdHJ1Y3RWXzEuU1YucmVnaXN0ZXJlZExheW91dDtcclxuICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2VzKS5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICAgICAgbGV0IHNvdXJjZUdyb3VwID0gc291cmNlc1tncm91cF0sIGxheW91dCA9IHNvdXJjZUdyb3VwLmxheW91dGVyLCBsYXlvdXRDcmVhdG9yID0gbGF5b3V0TWFwW2xheW91dF07XHJcbiAgICAgICAgICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXRDcmVhdG9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHNvdXJjZURhdGFTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShzb3VyY2VHcm91cC5kYXRhKSwgcHJldlN0cmluZyA9IHRoaXMucHJldlNvdXJjZXNTdHJpbmdNYXBbZ3JvdXBdLCBub2RlTGlzdCA9IFtdLCBmcmVlZExhYmVsTGlzdCA9IFtdLCBhZGRyZXNzTGFiZWxMaXN0ID0gW10sIGluZGV4TGFiZWxMaXN0ID0gW10sIG1hcmtlckxpc3QgPSBbXTtcclxuICAgICAgICAgICAgaWYgKHByZXZTdHJpbmcgPT09IHNvdXJjZURhdGFTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gbGF5b3V0Q3JlYXRvci5kZWZpbmVPcHRpb25zKHNvdXJjZUdyb3VwLmRhdGEpLCBzb3VyY2VEYXRhID0gbGF5b3V0Q3JlYXRvci5zb3VyY2VzUHJlcHJvY2Vzcyhzb3VyY2VHcm91cC5kYXRhLCBvcHRpb25zKSwgbm9kZU9wdGlvbnMgPSBvcHRpb25zLm5vZGUgfHwgb3B0aW9uc1snZWxlbWVudCddIHx8IHt9LCBtYXJrZXJPcHRpb25zID0gb3B0aW9ucy5tYXJrZXIgfHwge30sIGluZGV4TGFiZWxPcHRpb25zID0gb3B0aW9ucy5pbmRleExhYmVsIHx8IHt9LCBhZGRyZXNzTGFiZWxPcHRpb24gPSBvcHRpb25zLmFkZHJlc3NMYWJlbCB8fCB7fTtcclxuICAgICAgICAgICAgbm9kZUxpc3QgPSB0aGlzLmNvbnN0cnVjdE5vZGVzKGdyb3VwLCBsYXlvdXQsIG5vZGVPcHRpb25zLCBzb3VyY2VEYXRhKTtcclxuICAgICAgICAgICAgbWFya2VyTGlzdCA9IHRoaXMuY29uc3RydWN0TWFya2Vycyhncm91cCwgbGF5b3V0LCBtYXJrZXJPcHRpb25zLCBub2RlTGlzdCk7XHJcbiAgICAgICAgICAgIGluZGV4TGFiZWxMaXN0ID0gdGhpcy5jb25zdHJ1Y3RJbmRleExhYmVsKGdyb3VwLCBsYXlvdXQsIGluZGV4TGFiZWxPcHRpb25zLCBub2RlTGlzdCk7XHJcbiAgICAgICAgICAgIGFkZHJlc3NMYWJlbExpc3QgPSB0aGlzLmNvbnN0cnVjdEFkZHJlc3NMYWJlbChncm91cCwgbGF5b3V0LCBhZGRyZXNzTGFiZWxPcHRpb24sIG5vZGVMaXN0KTtcclxuICAgICAgICAgICAgbm9kZUxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmZyZWVkTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBmcmVlZExhYmVsTGlzdC5wdXNoKGl0ZW0uZnJlZWRMYWJlbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBsYXlvdXRHcm91cFRhYmxlLnNldChncm91cCwge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogZ3JvdXAsXHJcbiAgICAgICAgICAgICAgICBub2RlOiBub2RlTGlzdCxcclxuICAgICAgICAgICAgICAgIGZyZWVkTGFiZWw6IGZyZWVkTGFiZWxMaXN0LFxyXG4gICAgICAgICAgICAgICAgYWRkcmVzc0xhYmVsOiBhZGRyZXNzTGFiZWxMaXN0LFxyXG4gICAgICAgICAgICAgICAgaW5kZXhMYWJlbDogaW5kZXhMYWJlbExpc3QsXHJcbiAgICAgICAgICAgICAgICBsaW5rOiBbXSxcclxuICAgICAgICAgICAgICAgIG1hcmtlcjogbWFya2VyTGlzdCxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICBsYXlvdXRDcmVhdG9yLFxyXG4gICAgICAgICAgICAgICAgbW9kZWxMaXN0OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ubm9kZUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ubWFya2VyTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAuLi5mcmVlZExhYmVsTGlzdCxcclxuICAgICAgICAgICAgICAgICAgICAuLi5hZGRyZXNzTGFiZWxMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmluZGV4TGFiZWxMaXN0XHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgbGF5b3V0LFxyXG4gICAgICAgICAgICAgICAgaXNIaWRlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBsYXlvdXRHcm91cFRhYmxlLmZvckVhY2goKGxheW91dEdyb3VwLCBncm91cCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rT3B0aW9ucyA9IGxheW91dEdyb3VwLm9wdGlvbnMubGluayB8fCB7fSwgbGlua0xpc3QgPSB0aGlzLmNvbnN0cnVjdExpbmtzKGdyb3VwLCBsYXlvdXRHcm91cC5sYXlvdXQsIGxpbmtPcHRpb25zLCBsYXlvdXRHcm91cC5ub2RlLCBsYXlvdXRHcm91cFRhYmxlKTtcclxuICAgICAgICAgICAgbGF5b3V0R3JvdXAubGluayA9IGxpbmtMaXN0O1xyXG4gICAgICAgICAgICBsYXlvdXRHcm91cC5tb2RlbExpc3QucHVzaCguLi5saW5rTGlzdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRHcm91cFRhYmxlID0gbGF5b3V0R3JvdXBUYWJsZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRHcm91cFRhYmxlO1xyXG4gICAgfVxyXG4gICAgY29uc3RydWN0Tm9kZXMoZ3JvdXAsIGxheW91dCwgbm9kZU9wdGlvbnMsIHNvdXJjZUxpc3QpIHtcclxuICAgICAgICBsZXQgZGVmYXVsdFNvdXJjZU5vZGVUeXBlID0gJ2RlZmF1bHQnLCBub2RlTGlzdCA9IFtdO1xyXG4gICAgICAgIHNvdXJjZUxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSB1bmRlZmluZWQgfHwgaXRlbS50eXBlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnR5cGUgPSBkZWZhdWx0U291cmNlTm9kZVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZUxpc3QucHVzaCh0aGlzLmNyZWF0ZU5vZGUoaXRlbSwgaXRlbS50eXBlLCBncm91cCwgbGF5b3V0LCBub2RlT3B0aW9uc1tpdGVtLnR5cGVdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG5vZGVMaXN0O1xyXG4gICAgfVxyXG4gICAgY29uc3RydWN0TGlua3MoZ3JvdXAsIGxheW91dCwgbGlua09wdGlvbnMsIG5vZGVzLCBsYXlvdXRHcm91cFRhYmxlKSB7XHJcbiAgICAgICAgbGV0IGxpbmtMaXN0ID0gW10sIGxpbmtOYW1lcyA9IE9iamVjdC5rZXlzKGxpbmtPcHRpb25zKTtcclxuICAgICAgICBsaW5rTmFtZXMuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBub2Rlc1tpXSwgc291cmNlTGlua0RhdGEgPSBub2RlLnNvdXJjZU5vZGVbbmFtZV0sIHRhcmdldE5vZGUgPSBudWxsLCBsaW5rID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmIChzb3VyY2VMaW5rRGF0YSA9PT0gdW5kZWZpbmVkIHx8IHNvdXJjZUxpbmtEYXRhID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZVtuYW1lXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VMaW5rRGF0YSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlW25hbWVdID0gc291cmNlTGlua0RhdGEubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXROb2RlID0gdGhpcy5mZXRjaFRhcmdldE5vZGVzKGxheW91dEdyb3VwVGFibGUsIG5vZGUsIGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNHZW5lcmFsTGluayA9IHRoaXMuaXNHZW5lcmFsTGluayhzb3VyY2VMaW5rRGF0YS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSB0aGlzLmNyZWF0ZUxpbmsobmFtZSwgZ3JvdXAsIGxheW91dCwgbm9kZSwgdGFyZ2V0Tm9kZSwgaW5kZXgsIGxpbmtPcHRpb25zW25hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtMaXN0LnB1c2gobGluayk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzR2VuZXJhbExpbmsgPyB0YXJnZXROb2RlIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldE5vZGUgPSB0aGlzLmZldGNoVGFyZ2V0Tm9kZXMobGF5b3V0R3JvdXBUYWJsZSwgbm9kZSwgc291cmNlTGlua0RhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpc0dlbmVyYWxMaW5rID0gdGhpcy5pc0dlbmVyYWxMaW5rKHNvdXJjZUxpbmtEYXRhLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSB0aGlzLmNyZWF0ZUxpbmsobmFtZSwgZ3JvdXAsIGxheW91dCwgbm9kZSwgdGFyZ2V0Tm9kZSwgbnVsbCwgbGlua09wdGlvbnNbbmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rTGlzdC5wdXNoKGxpbmspO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBub2RlW25hbWVdID0gaXNHZW5lcmFsTGluayA/IHRhcmdldE5vZGUgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGxpbmtMaXN0O1xyXG4gICAgfVxyXG4gICAgY29uc3RydWN0SW5kZXhMYWJlbChncm91cCwgbGF5b3V0LCBpbmRleExhYmVsT3B0aW9ucywgbm9kZXMpIHtcclxuICAgICAgICBsZXQgaW5kZXhMYWJlbExpc3QgPSBbXSwgaW5kZXhOYW1lcyA9IE9iamVjdC5rZXlzKGluZGV4TGFiZWxPcHRpb25zKTtcclxuICAgICAgICBpbmRleE5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCBub2RlID0gbm9kZXNbaV0sIHZhbHVlID0gbm9kZVtuYW1lXTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gYCR7Z3JvdXB9LiR7bmFtZX0jJHt2YWx1ZX1gLCBpbmRleExhYmVsID0gbmV3IFNWTm9kZUFwcGVuZGFnZV8xLlNWSW5kZXhMYWJlbChpZCwgbmFtZSwgZ3JvdXAsIGxheW91dCwgdmFsdWUudG9TdHJpbmcoKSwgbm9kZSwgaW5kZXhMYWJlbE9wdGlvbnNbbmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgaW5kZXhMYWJlbExpc3QucHVzaChpbmRleExhYmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBpbmRleExhYmVsTGlzdDtcclxuICAgIH1cclxuICAgIGNvbnN0cnVjdEFkZHJlc3NMYWJlbChncm91cCwgbGF5b3V0LCBhZGRyZXNzTGFiZWxPcHRpb24sIG5vZGVzKSB7XHJcbiAgICAgICAgbGV0IGFkZHJlc3NMYWJlbExpc3QgPSBbXTtcclxuICAgICAgICBub2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzTGFiZWwgPSBuZXcgU1ZOb2RlQXBwZW5kYWdlXzEuU1ZBZGRyZXNzTGFiZWwoYCR7aXRlbS5pZH0tYWRkcmVzcy1sYWJlbGAsIGl0ZW0uc291cmNlVHlwZSwgZ3JvdXAsIGxheW91dCwgaXRlbSwgYWRkcmVzc0xhYmVsT3B0aW9uKTtcclxuICAgICAgICAgICAgYWRkcmVzc0xhYmVsTGlzdC5wdXNoKGFkZHJlc3NMYWJlbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFkZHJlc3NMYWJlbExpc3Q7XHJcbiAgICB9XHJcbiAgICBjb25zdHJ1Y3RNYXJrZXJzKGdyb3VwLCBsYXlvdXQsIG1hcmtlck9wdGlvbnMsIG5vZGVzKSB7XHJcbiAgICAgICAgbGV0IG1hcmtlckxpc3QgPSBbXSwgbWFya2VyTmFtZXMgPSBPYmplY3Qua2V5cyhtYXJrZXJPcHRpb25zKTtcclxuICAgICAgICBtYXJrZXJOYW1lcy5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IG5vZGVzW2ldLCBtYXJrZXJEYXRhID0gbm9kZVtuYW1lXTtcclxuICAgICAgICAgICAgICAgIGlmICghbWFya2VyRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGxldCBpZCA9IGAke2dyb3VwfS4ke25hbWV9LiR7QXJyYXkuaXNBcnJheShtYXJrZXJEYXRhKSA/IG1hcmtlckRhdGEuam9pbignLScpIDogbWFya2VyRGF0YX1gLCBtYXJrZXIgPSBuZXcgU1ZOb2RlQXBwZW5kYWdlXzEuU1ZNYXJrZXIoaWQsIG5hbWUsIGdyb3VwLCBsYXlvdXQsIG1hcmtlckRhdGEsIG5vZGUsIG1hcmtlck9wdGlvbnNbbmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgbWFya2VyTGlzdC5wdXNoKG1hcmtlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbWFya2VyTGlzdDtcclxuICAgIH1cclxuICAgIHJlc29sdmVOb2RlTGFiZWwobGFiZWwsIHNvdXJjZU5vZGUpIHtcclxuICAgICAgICBsZXQgdGFyZ2V0TGFiZWwgPSAnJztcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsYWJlbCkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0TGFiZWwgPSBsYWJlbC5tYXAoaXRlbSA9PiB7IHZhciBfYTsgcmV0dXJuIChfYSA9IHRoaXMucGFyc2VyTm9kZUNvbnRlbnQoc291cmNlTm9kZSwgaXRlbSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnOyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRhcmdldExhYmVsID0gdGhpcy5wYXJzZXJOb2RlQ29udGVudChzb3VyY2VOb2RlLCBsYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGFyZ2V0TGFiZWwgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldExhYmVsICE9PSBudWxsICYmIHRhcmdldExhYmVsICE9PSB2b2lkIDAgPyB0YXJnZXRMYWJlbCA6ICcnO1xyXG4gICAgfVxyXG4gICAgY3JlYXRlTm9kZShzb3VyY2VOb2RlLCBzb3VyY2VOb2RlVHlwZSwgZ3JvdXAsIGxheW91dCwgb3B0aW9ucykge1xyXG4gICAgICAgIGxldCBsYWJlbCA9IHRoaXMucmVzb2x2ZU5vZGVMYWJlbChvcHRpb25zLmxhYmVsLCBzb3VyY2VOb2RlKSwgaWQgPSBzb3VyY2VOb2RlVHlwZSArICcuJyArIHNvdXJjZU5vZGUuaWQudG9TdHJpbmcoKSwgbm9kZSA9IG5ldyBTVk5vZGVfMS5TVk5vZGUoaWQsIHNvdXJjZU5vZGVUeXBlLCBncm91cCwgbGF5b3V0LCBzb3VyY2VOb2RlLCBsYWJlbCwgb3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKG5vZGUuZnJlZWQpIHtcclxuICAgICAgICAgICAgbm9kZS5mcmVlZExhYmVsID0gbmV3IFNWTm9kZUFwcGVuZGFnZV8xLlNWRnJlZWRMYWJlbChgJHtpZH0tZnJlZWQtbGFiZWxgLCBzb3VyY2VOb2RlVHlwZSwgZ3JvdXAsIGxheW91dCwgbm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG4gICAgY3JlYXRlTGluayhsaW5rTmFtZSwgZ3JvdXAsIGxheW91dCwgbm9kZSwgdGFyZ2V0LCBpbmRleCwgb3B0aW9ucykge1xyXG4gICAgICAgIGxldCBpZCA9IGAke2xpbmtOYW1lfSgke25vZGUuaWR9LSR7dGFyZ2V0LmlkfSlgO1xyXG4gICAgICAgIHJldHVybiBuZXcgU1ZMaW5rXzEuU1ZMaW5rKGlkLCBsaW5rTmFtZSwgZ3JvdXAsIGxheW91dCwgbm9kZSwgdGFyZ2V0LCBpbmRleCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBwYXJzZXJOb2RlQ29udGVudChzb3VyY2VOb2RlLCBmb3JtYXRMYWJlbCkge1xyXG4gICAgICAgIGxldCBmaWVsZHMgPSB1dGlsXzEuVXRpbC50ZXh0UGFyc2VyKGZvcm1hdExhYmVsKTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZHMpKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBmaWVsZHMubWFwKGl0ZW0gPT4gc291cmNlTm9kZVtpdGVtXSk7XHJcbiAgICAgICAgICAgIHZhbHVlcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmb3JtYXRMYWJlbCA9IGZvcm1hdExhYmVsLnJlcGxhY2UoJ1snICsgZmllbGRzW2luZGV4XSArICddJywgaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZm9ybWF0TGFiZWw7XHJcbiAgICB9XHJcbiAgICBmZXRjaFRhcmdldE5vZGVzKGxheW91dEdyb3VwVGFibGUsIG5vZGUsIGxpbmtUYXJnZXQpIHtcclxuICAgICAgICBsZXQgZ3JvdXAgPSBub2RlLmdyb3VwLCBzb3VyY2VOb2RlVHlwZSA9IG5vZGUuc291cmNlVHlwZSwgbm9kZUxpc3QsIHRhcmdldElkID0gbGlua1RhcmdldCwgdGFyZ2V0R3JvdXBOYW1lID0gZ3JvdXAsIHRhcmdldE5vZGUgPSBudWxsO1xyXG4gICAgICAgIGlmIChsaW5rVGFyZ2V0ID09PSBudWxsIHx8IGxpbmtUYXJnZXQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsaW5rVGFyZ2V0ID09PSAnbnVtYmVyJyB8fCAodHlwZW9mIGxpbmtUYXJnZXQgPT09ICdzdHJpbmcnICYmICFsaW5rVGFyZ2V0LmluY2x1ZGVzKCcjJykpKSB7XHJcbiAgICAgICAgICAgIGxpbmtUYXJnZXQgPSAnZGVmYXVsdCMnICsgbGlua1RhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGluZm8gPSBsaW5rVGFyZ2V0LnNwbGl0KCcjJyk7XHJcbiAgICAgICAgdGFyZ2V0SWQgPSBpbmZvLnBvcCgpO1xyXG4gICAgICAgIGlmIChpbmZvLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgc291cmNlTm9kZVR5cGUgPSBpbmZvLnBvcCgpO1xyXG4gICAgICAgICAgICB0YXJnZXRHcm91cE5hbWUgPSBpbmZvLnBvcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGZpZWxkID0gaW5mby5wb3AoKTtcclxuICAgICAgICAgICAgaWYgKGxheW91dEdyb3VwVGFibGUuZ2V0KHRhcmdldEdyb3VwTmFtZSkubm9kZS5maW5kKGl0ZW0gPT4gaXRlbS5zb3VyY2VUeXBlID09PSBmaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZU5vZGVUeXBlID0gZmllbGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0R3JvdXBUYWJsZS5oYXMoZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXRHcm91cE5hbWUgPSBmaWVsZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGVMaXN0ID0gbGF5b3V0R3JvdXBUYWJsZS5nZXQodGFyZ2V0R3JvdXBOYW1lKS5ub2RlLmZpbHRlcihpdGVtID0+IGl0ZW0uc291cmNlVHlwZSA9PT0gc291cmNlTm9kZVR5cGUpO1xyXG4gICAgICAgIGlmIChub2RlTGlzdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0YXJnZXROb2RlID0gbm9kZUxpc3QuZmluZChpdGVtID0+IGl0ZW0uc291cmNlSWQgPT09IHRhcmdldElkKTtcclxuICAgICAgICByZXR1cm4gdGFyZ2V0Tm9kZSB8fCBudWxsO1xyXG4gICAgfVxyXG4gICAgaXNHZW5lcmFsTGluayhsaW5rSWQpIHtcclxuICAgICAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5rSWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGxpbmtJZFtpXSA9PT0gJyMnKSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvdW50ZXIgPD0gMjtcclxuICAgIH1cclxuICAgIGdldExheW91dEdyb3VwVGFibGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0R3JvdXBUYWJsZTtcclxuICAgIH1cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRHcm91cFRhYmxlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnByZXZTb3VyY2VzU3RyaW5nTWFwID0gbnVsbDtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLk1vZGVsQ29uc3RydWN0b3IgPSBNb2RlbENvbnN0cnVjdG9yO1xyXG47XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Model/modelConstructor.ts\n"); /***/ }), /***/ "./src/RegisteredShape/arrayNode.ts": /*!******************************************!*\ !*** ./src/RegisteredShape/arrayNode.ts ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nexports.default = util_1.Util.registerShape('array-node', {\r\n getAnchorPoints() {\r\n return [\r\n [0.5, 0],\r\n [1, 0.5],\r\n [0.5, 1],\r\n [0, 0.5]\r\n ];\r\n }\r\n}, 'rect');\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL2FycmF5Tm9kZS50cz83NWQxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDRDQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vc3JjL1JlZ2lzdGVyZWRTaGFwZS9hcnJheU5vZGUudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL3V0aWxcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHV0aWxfMS5VdGlsLnJlZ2lzdGVyU2hhcGUoJ2FycmF5LW5vZGUnLCB7XHJcbiAgICBnZXRBbmNob3JQb2ludHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgWzAuNSwgMF0sXHJcbiAgICAgICAgICAgIFsxLCAwLjVdLFxyXG4gICAgICAgICAgICBbMC41LCAxXSxcclxuICAgICAgICAgICAgWzAsIDAuNV1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG59LCAncmVjdCcpO1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/RegisteredShape/arrayNode.ts\n"); /***/ }), /***/ "./src/RegisteredShape/binaryTreeNode.ts": /*!***********************************************!*\ !*** ./src/RegisteredShape/binaryTreeNode.ts ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nexports.default = util_1.Util.registerShape('binary-tree-node', {\r\n draw(cfg, group) {\r\n cfg.size = cfg.size;\r\n const width = cfg.size[0], height = cfg.size[1];\r\n const wrapperRect = group.addShape('rect', {\r\n attrs: {\r\n x: width / 2,\r\n y: height / 2,\r\n width: width,\r\n height: height,\r\n stroke: cfg.style.stroke || '#333',\r\n cursor: cfg.style.cursor,\r\n fill: cfg.style.backgroundFill || '#eee'\r\n },\r\n name: 'wrapper'\r\n });\r\n group.addShape('rect', {\r\n attrs: {\r\n x: width / 4 + width / 2,\r\n y: height / 2,\r\n width: width / 2,\r\n height: height,\r\n fill: cfg.style.fill,\r\n stroke: cfg.style.stroke || '#333',\r\n cursor: cfg.style.cursor\r\n },\r\n name: 'mid',\r\n draggable: true\r\n });\r\n if (cfg.label) {\r\n const style = (cfg.labelCfg && cfg.labelCfg.style) || {};\r\n group.addShape('text', {\r\n attrs: {\r\n x: width,\r\n y: height,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: cfg.label,\r\n fill: style.fill || '#000',\r\n fontSize: style.fontSize || 16,\r\n cursor: cfg.style.cursor\r\n },\r\n name: 'text',\r\n draggable: true\r\n });\r\n }\r\n return wrapperRect;\r\n },\r\n getAnchorPoints() {\r\n return [\r\n [0.5, 0],\r\n [0.875, 0.5],\r\n [0.5, 1],\r\n [0.125, 0.5]\r\n ];\r\n },\r\n}, 'rect');\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL2JpbmFyeVRyZWVOb2RlLnRzPzc1YjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQyIsImZpbGUiOiIuL3NyYy9SZWdpc3RlcmVkU2hhcGUvYmluYXJ5VHJlZU5vZGUudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL3V0aWxcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHV0aWxfMS5VdGlsLnJlZ2lzdGVyU2hhcGUoJ2JpbmFyeS10cmVlLW5vZGUnLCB7XHJcbiAgICBkcmF3KGNmZywgZ3JvdXApIHtcclxuICAgICAgICBjZmcuc2l6ZSA9IGNmZy5zaXplO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gY2ZnLnNpemVbMF0sIGhlaWdodCA9IGNmZy5zaXplWzFdO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XHJcbiAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICB4OiB3aWR0aCAvIDIsXHJcbiAgICAgICAgICAgICAgICB5OiBoZWlnaHQgLyAyLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBzdHJva2U6IGNmZy5zdHlsZS5zdHJva2UgfHwgJyMzMzMnLFxyXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBjZmcuc3R5bGUuY3Vyc29yLFxyXG4gICAgICAgICAgICAgICAgZmlsbDogY2ZnLnN0eWxlLmJhY2tncm91bmRGaWxsIHx8ICcjZWVlJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBuYW1lOiAnd3JhcHBlcidcclxuICAgICAgICB9KTtcclxuICAgICAgICBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcclxuICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgIHg6IHdpZHRoIC8gNCArIHdpZHRoIC8gMixcclxuICAgICAgICAgICAgICAgIHk6IGhlaWdodCAvIDIsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBjZmcuc3R5bGUuZmlsbCxcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogY2ZnLnN0eWxlLnN0cm9rZSB8fCAnIzMzMycsXHJcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGNmZy5zdHlsZS5jdXJzb3JcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmFtZTogJ21pZCcsXHJcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjZmcubGFiZWwpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSAoY2ZnLmxhYmVsQ2ZnICYmIGNmZy5sYWJlbENmZy5zdHlsZSkgfHwge307XHJcbiAgICAgICAgICAgIGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xyXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgICAgICB4OiB3aWR0aCxcclxuICAgICAgICAgICAgICAgICAgICB5OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBzdHlsZS5maWxsIHx8ICcjMDAwJyxcclxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogc3R5bGUuZm9udFNpemUgfHwgMTYsXHJcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBjZmcuc3R5bGUuY3Vyc29yXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gd3JhcHBlclJlY3Q7XHJcbiAgICB9LFxyXG4gICAgZ2V0QW5jaG9yUG9pbnRzKCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIFswLjUsIDBdLFxyXG4gICAgICAgICAgICBbMC44NzUsIDAuNV0sXHJcbiAgICAgICAgICAgIFswLjUsIDFdLFxyXG4gICAgICAgICAgICBbMC4xMjUsIDAuNV1cclxuICAgICAgICBdO1xyXG4gICAgfSxcclxufSwgJ3JlY3QnKTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/RegisteredShape/binaryTreeNode.ts\n"); /***/ }), /***/ "./src/RegisteredShape/clenQueuePointer.ts": /*!*************************************************!*\ !*** ./src/RegisteredShape/clenQueuePointer.ts ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst g6_1 = __webpack_require__(/*! @antv/g6 */ \"./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js\");\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nfunction rotate(shape, angle, transform) {\r\n const matrix1 = shape.getMatrix();\r\n const newMatrix1 = transform(matrix1, [\r\n ['r', angle],\r\n ]);\r\n shape.setMatrix(newMatrix1);\r\n}\r\nexports.default = rotate;\r\nfunction translate(shape, x, y, transform) {\r\n const matrix1 = shape.getMatrix();\r\n const newMatrix1 = transform(matrix1, [\r\n ['t', x, y],\r\n ]);\r\n shape.setMatrix(newMatrix1);\r\n}\r\nfunction culcuRotate(angle, R) {\r\n let offsetX = Math.cos(angle) * R;\r\n let offsetY = -Math.sin(angle) * R;\r\n console.log(offsetX, offsetY, R);\r\n return {\r\n offsetX,\r\n offsetY,\r\n };\r\n}\r\nutil_1.Util.registerShape('clen-queue-pointer', {\r\n draw(cfg, group) {\r\n let id = cfg.id;\r\n const index = parseInt(id.split('-')[1]);\r\n const len = parseInt(id.split('-')[2]);\r\n const keyShape = group.addShape('path', {\r\n attrs: {\r\n x: 0,\r\n y: 0,\r\n path: this.getPath(cfg),\r\n fill: cfg.style.fill,\r\n },\r\n name: 'pointer-path'\r\n });\r\n const angle = index * Math.PI * 2 / len;\r\n if (cfg.label) {\r\n const style = (cfg.labelCfg && cfg.labelCfg.style) || {};\r\n const bgRect = group.addShape('rect', {\r\n attrs: {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n text: cfg.label,\r\n fill: null,\r\n radius: 2\r\n },\r\n name: 'bgRect'\r\n });\r\n let label = cfg.label;\r\n let pointerText = label.split('-')[0];\r\n let y = pointerText == \"front\" ? 30 : 15;\r\n const text = group.addShape('text', {\r\n attrs: {\r\n x: culcuRotate(Math.PI / 2 - angle, y).offsetX,\r\n y: culcuRotate(Math.PI / 2 - angle, y).offsetY,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: pointerText,\r\n fill: style.fill || '#999',\r\n fontSize: style.fontSize || 16\r\n },\r\n name: 'pointer-text-shape'\r\n });\r\n translate(text, 0, -75, g6_1.default.Util.transform);\r\n }\r\n rotate(keyShape, angle, g6_1.default.Util.transform);\r\n translate(keyShape, 0, -75, g6_1.default.Util.transform);\r\n return keyShape;\r\n },\r\n getPath(cfg) {\r\n let width = 1, height = 38, arrowWidth = width + 4, arrowHeight = height * 0.3;\r\n const path = [\r\n ['M', 0, 0],\r\n ['L', -width / 2, 0],\r\n ['L', -width / 2, -height],\r\n ['L', -width / 2 - (arrowWidth / 2), -height],\r\n ['L', 0, -height - arrowHeight],\r\n ['L', width / 2 + (arrowWidth / 2), -height],\r\n ['L', width / 2, -height],\r\n ['L', width / 2, 0],\r\n ['Z'],\r\n ];\r\n return path;\r\n },\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL2NsZW5RdWV1ZVBvaW50ZXIudHM/MzJiZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGFBQWEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMvQixlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQyIsImZpbGUiOiIuL3NyYy9SZWdpc3RlcmVkU2hhcGUvY2xlblF1ZXVlUG9pbnRlci50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IGc2XzEgPSByZXF1aXJlKFwiQGFudHYvZzZcIik7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuZnVuY3Rpb24gcm90YXRlKHNoYXBlLCBhbmdsZSwgdHJhbnNmb3JtKSB7XHJcbiAgICBjb25zdCBtYXRyaXgxID0gc2hhcGUuZ2V0TWF0cml4KCk7XHJcbiAgICBjb25zdCBuZXdNYXRyaXgxID0gdHJhbnNmb3JtKG1hdHJpeDEsIFtcclxuICAgICAgICBbJ3InLCBhbmdsZV0sXHJcbiAgICBdKTtcclxuICAgIHNoYXBlLnNldE1hdHJpeChuZXdNYXRyaXgxKTtcclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSByb3RhdGU7XHJcbmZ1bmN0aW9uIHRyYW5zbGF0ZShzaGFwZSwgeCwgeSwgdHJhbnNmb3JtKSB7XHJcbiAgICBjb25zdCBtYXRyaXgxID0gc2hhcGUuZ2V0TWF0cml4KCk7XHJcbiAgICBjb25zdCBuZXdNYXRyaXgxID0gdHJhbnNmb3JtKG1hdHJpeDEsIFtcclxuICAgICAgICBbJ3QnLCB4LCB5XSxcclxuICAgIF0pO1xyXG4gICAgc2hhcGUuc2V0TWF0cml4KG5ld01hdHJpeDEpO1xyXG59XHJcbmZ1bmN0aW9uIGN1bGN1Um90YXRlKGFuZ2xlLCBSKSB7XHJcbiAgICBsZXQgb2Zmc2V0WCA9IE1hdGguY29zKGFuZ2xlKSAqIFI7XHJcbiAgICBsZXQgb2Zmc2V0WSA9IC1NYXRoLnNpbihhbmdsZSkgKiBSO1xyXG4gICAgY29uc29sZS5sb2cob2Zmc2V0WCwgb2Zmc2V0WSwgUik7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG9mZnNldFgsXHJcbiAgICAgICAgb2Zmc2V0WSxcclxuICAgIH07XHJcbn1cclxudXRpbF8xLlV0aWwucmVnaXN0ZXJTaGFwZSgnY2xlbi1xdWV1ZS1wb2ludGVyJywge1xyXG4gICAgZHJhdyhjZmcsIGdyb3VwKSB7XHJcbiAgICAgICAgbGV0IGlkID0gY2ZnLmlkO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQoaWQuc3BsaXQoJy0nKVsxXSk7XHJcbiAgICAgICAgY29uc3QgbGVuID0gcGFyc2VJbnQoaWQuc3BsaXQoJy0nKVsyXSk7XHJcbiAgICAgICAgY29uc3Qga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcclxuICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZXRQYXRoKGNmZyksXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBjZmcuc3R5bGUuZmlsbCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmFtZTogJ3BvaW50ZXItcGF0aCdcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBhbmdsZSA9IGluZGV4ICogTWF0aC5QSSAqIDIgLyBsZW47XHJcbiAgICAgICAgaWYgKGNmZy5sYWJlbCkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IChjZmcubGFiZWxDZmcgJiYgY2ZnLmxhYmVsQ2ZnLnN0eWxlKSB8fCB7fTtcclxuICAgICAgICAgICAgY29uc3QgYmdSZWN0ID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XHJcbiAgICAgICAgICAgICAgICBhdHRyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCxcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiAyXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JnUmVjdCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IGNmZy5sYWJlbDtcclxuICAgICAgICAgICAgbGV0IHBvaW50ZXJUZXh0ID0gbGFiZWwuc3BsaXQoJy0nKVswXTtcclxuICAgICAgICAgICAgbGV0IHkgPSBwb2ludGVyVGV4dCA9PSBcImZyb250XCIgPyAzMCA6IDE1O1xyXG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XHJcbiAgICAgICAgICAgICAgICBhdHRyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IGN1bGN1Um90YXRlKE1hdGguUEkgLyAyIC0gYW5nbGUsIHkpLm9mZnNldFgsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogY3VsY3VSb3RhdGUoTWF0aC5QSSAvIDIgLSBhbmdsZSwgeSkub2Zmc2V0WSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogcG9pbnRlclRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogc3R5bGUuZmlsbCB8fCAnIzk5OScsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IHN0eWxlLmZvbnRTaXplIHx8IDE2XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3BvaW50ZXItdGV4dC1zaGFwZSdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZSh0ZXh0LCAwLCAtNzUsIGc2XzEuZGVmYXVsdC5VdGlsLnRyYW5zZm9ybSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvdGF0ZShrZXlTaGFwZSwgYW5nbGUsIGc2XzEuZGVmYXVsdC5VdGlsLnRyYW5zZm9ybSk7XHJcbiAgICAgICAgdHJhbnNsYXRlKGtleVNoYXBlLCAwLCAtNzUsIGc2XzEuZGVmYXVsdC5VdGlsLnRyYW5zZm9ybSk7XHJcbiAgICAgICAgcmV0dXJuIGtleVNoYXBlO1xyXG4gICAgfSxcclxuICAgIGdldFBhdGgoY2ZnKSB7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMSwgaGVpZ2h0ID0gMzgsIGFycm93V2lkdGggPSB3aWR0aCArIDQsIGFycm93SGVpZ2h0ID0gaGVpZ2h0ICogMC4zO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSBbXHJcbiAgICAgICAgICAgIFsnTScsIDAsIDBdLFxyXG4gICAgICAgICAgICBbJ0wnLCAtd2lkdGggLyAyLCAwXSxcclxuICAgICAgICAgICAgWydMJywgLXdpZHRoIC8gMiwgLWhlaWdodF0sXHJcbiAgICAgICAgICAgIFsnTCcsIC13aWR0aCAvIDIgLSAoYXJyb3dXaWR0aCAvIDIpLCAtaGVpZ2h0XSxcclxuICAgICAgICAgICAgWydMJywgMCwgLWhlaWdodCAtIGFycm93SGVpZ2h0XSxcclxuICAgICAgICAgICAgWydMJywgd2lkdGggLyAyICsgKGFycm93V2lkdGggLyAyKSwgLWhlaWdodF0sXHJcbiAgICAgICAgICAgIFsnTCcsIHdpZHRoIC8gMiwgLWhlaWdodF0sXHJcbiAgICAgICAgICAgIFsnTCcsIHdpZHRoIC8gMiwgMF0sXHJcbiAgICAgICAgICAgIFsnWiddLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICB9LFxyXG59KTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/RegisteredShape/clenQueuePointer.ts\n"); /***/ }), /***/ "./src/RegisteredShape/cursor.ts": /*!***************************************!*\ !*** ./src/RegisteredShape/cursor.ts ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nexports.default = util_1.Util.registerShape('cursor', {\r\n draw(cfg, group) {\r\n const keyShape = group.addShape('path', {\r\n attrs: {\r\n path: this.getPath(cfg),\r\n fill: cfg.style.fill,\r\n matrix: cfg.style.matrix\r\n },\r\n name: 'cursor-path'\r\n });\r\n if (cfg.label) {\r\n const style = (cfg.labelCfg && cfg.labelCfg.style) || {};\r\n const bgRect = group.addShape('rect', {\r\n attrs: {\r\n x: 0,\r\n y: 0,\r\n text: cfg.label,\r\n fill: 'transparent',\r\n radius: 2,\r\n },\r\n name: 'bgRect'\r\n });\r\n const text = group.addShape('text', {\r\n attrs: {\r\n x: 0,\r\n y: 0,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: cfg.label,\r\n fill: style.fill || '#999',\r\n fontSize: style.fontSize || 16\r\n },\r\n name: 'cursor-text-shape'\r\n });\r\n const { width: textWidth, height: textHeight } = text.getBBox();\r\n bgRect.attr({\r\n width: textWidth + 6,\r\n height: textHeight + 6\r\n });\r\n const markerEndPosition = cfg.markerEndPosition;\r\n if (markerEndPosition) {\r\n let textX = markerEndPosition[0], textY = markerEndPosition[1];\r\n text.attr({\r\n x: textX,\r\n y: textY\r\n });\r\n bgRect.attr({\r\n x: textX - textWidth / 2 - 3,\r\n y: textY - textHeight / 2 - 3\r\n });\r\n }\r\n }\r\n return keyShape;\r\n },\r\n getPath(cfg) {\r\n let width = cfg.size[0], height = cfg.size[1];\r\n const path = [\r\n ['M', 0, 0],\r\n ['L', -width / 2, -height],\r\n ['L', width / 2, -height],\r\n ['L', 0, 0],\r\n ['Z'],\r\n ];\r\n return path;\r\n }\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL2N1cnNvci50cz85Mzk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDRDQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiLG1CQUFtQix1Q0FBdUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vc3JjL1JlZ2lzdGVyZWRTaGFwZS9jdXJzb3IudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL3V0aWxcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHV0aWxfMS5VdGlsLnJlZ2lzdGVyU2hhcGUoJ2N1cnNvcicsIHtcclxuICAgIGRyYXcoY2ZnLCBncm91cCkge1xyXG4gICAgICAgIGNvbnN0IGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XHJcbiAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoY2ZnKSxcclxuICAgICAgICAgICAgICAgIGZpbGw6IGNmZy5zdHlsZS5maWxsLFxyXG4gICAgICAgICAgICAgICAgbWF0cml4OiBjZmcuc3R5bGUubWF0cml4XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5hbWU6ICdjdXJzb3ItcGF0aCdcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoY2ZnLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gKGNmZy5sYWJlbENmZyAmJiBjZmcubGFiZWxDZmcuc3R5bGUpIHx8IHt9O1xyXG4gICAgICAgICAgICBjb25zdCBiZ1JlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcclxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJhZGl1czogMixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmdSZWN0J1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xyXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBzdHlsZS5maWxsIHx8ICcjOTk5JyxcclxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogc3R5bGUuZm9udFNpemUgfHwgMTZcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnY3Vyc29yLXRleHQtc2hhcGUnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoOiB0ZXh0V2lkdGgsIGhlaWdodDogdGV4dEhlaWdodCB9ID0gdGV4dC5nZXRCQm94KCk7XHJcbiAgICAgICAgICAgIGJnUmVjdC5hdHRyKHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiB0ZXh0V2lkdGggKyA2LFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0ZXh0SGVpZ2h0ICsgNlxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgbWFya2VyRW5kUG9zaXRpb24gPSBjZmcubWFya2VyRW5kUG9zaXRpb247XHJcbiAgICAgICAgICAgIGlmIChtYXJrZXJFbmRQb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRleHRYID0gbWFya2VyRW5kUG9zaXRpb25bMF0sIHRleHRZID0gbWFya2VyRW5kUG9zaXRpb25bMV07XHJcbiAgICAgICAgICAgICAgICB0ZXh0LmF0dHIoe1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IHRleHRYLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IHRleHRZXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGJnUmVjdC5hdHRyKHtcclxuICAgICAgICAgICAgICAgICAgICB4OiB0ZXh0WCAtIHRleHRXaWR0aCAvIDIgLSAzLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IHRleHRZIC0gdGV4dEhlaWdodCAvIDIgLSAzXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ga2V5U2hhcGU7XHJcbiAgICB9LFxyXG4gICAgZ2V0UGF0aChjZmcpIHtcclxuICAgICAgICBsZXQgd2lkdGggPSBjZmcuc2l6ZVswXSwgaGVpZ2h0ID0gY2ZnLnNpemVbMV07XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IFtcclxuICAgICAgICAgICAgWydNJywgMCwgMF0sXHJcbiAgICAgICAgICAgIFsnTCcsIC13aWR0aCAvIDIsIC1oZWlnaHRdLFxyXG4gICAgICAgICAgICBbJ0wnLCB3aWR0aCAvIDIsIC1oZWlnaHRdLFxyXG4gICAgICAgICAgICBbJ0wnLCAwLCAwXSxcclxuICAgICAgICAgICAgWydaJ10sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxufSk7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/RegisteredShape/cursor.ts\n"); /***/ }), /***/ "./src/RegisteredShape/linkListNode.ts": /*!*********************************************!*\ !*** ./src/RegisteredShape/linkListNode.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nexports.default = util_1.Util.registerShape('link-list-node', {\r\n draw(cfg, group) {\r\n cfg.size = cfg.size || [30, 10];\r\n const width = cfg.size[0], height = cfg.size[1];\r\n const wrapperRect = group.addShape('rect', {\r\n attrs: {\r\n x: width / 2,\r\n y: height / 2,\r\n width: width,\r\n height: height,\r\n stroke: cfg.style.stroke || '#333',\r\n fill: cfg.style.backgroundFill || '#eee',\r\n cursor: cfg.style.cursor\r\n },\r\n name: 'wrapper'\r\n });\r\n group.addShape('rect', {\r\n attrs: {\r\n x: width / 2,\r\n y: height / 2,\r\n width: width * (2 / 3),\r\n height: height,\r\n fill: cfg.style.fill,\r\n stroke: cfg.style.stroke || '#333',\r\n cursor: cfg.style.cursor\r\n },\r\n name: 'main-rect',\r\n draggable: true\r\n });\r\n if (cfg.label) {\r\n const style = (cfg.labelCfg && cfg.labelCfg.style) || {};\r\n group.addShape('text', {\r\n attrs: {\r\n x: width * (5 / 6),\r\n y: height,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: cfg.label,\r\n fill: style.fill || '#000',\r\n fontSize: style.fontSize || 16\r\n },\r\n name: 'text',\r\n draggable: true\r\n });\r\n }\r\n return wrapperRect;\r\n },\r\n getAnchorPoints() {\r\n return [\r\n [0.5, 0],\r\n [5 / 6, 0],\r\n [5 / 6, 0.5],\r\n [1, 0.5],\r\n [5 / 6, 1],\r\n [0.5, 1],\r\n [0, 0.5],\r\n [1 / 3, 1]\r\n ];\r\n }\r\n}, 'rect');\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL2xpbmtMaXN0Tm9kZS50cz8yZjZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDRDQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vc3JjL1JlZ2lzdGVyZWRTaGFwZS9saW5rTGlzdE5vZGUudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL3V0aWxcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHV0aWxfMS5VdGlsLnJlZ2lzdGVyU2hhcGUoJ2xpbmstbGlzdC1ub2RlJywge1xyXG4gICAgZHJhdyhjZmcsIGdyb3VwKSB7XHJcbiAgICAgICAgY2ZnLnNpemUgPSBjZmcuc2l6ZSB8fCBbMzAsIDEwXTtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IGNmZy5zaXplWzBdLCBoZWlnaHQgPSBjZmcuc2l6ZVsxXTtcclxuICAgICAgICBjb25zdCB3cmFwcGVyUmVjdCA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xyXG4gICAgICAgICAgICBhdHRyczoge1xyXG4gICAgICAgICAgICAgICAgeDogd2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgeTogaGVpZ2h0IC8gMixcclxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBjZmcuc3R5bGUuc3Ryb2tlIHx8ICcjMzMzJyxcclxuICAgICAgICAgICAgICAgIGZpbGw6IGNmZy5zdHlsZS5iYWNrZ3JvdW5kRmlsbCB8fCAnI2VlZScsXHJcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGNmZy5zdHlsZS5jdXJzb3JcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmFtZTogJ3dyYXBwZXInXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XHJcbiAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICB4OiB3aWR0aCAvIDIsXHJcbiAgICAgICAgICAgICAgICB5OiBoZWlnaHQgLyAyLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoICogKDIgLyAzKSxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgZmlsbDogY2ZnLnN0eWxlLmZpbGwsXHJcbiAgICAgICAgICAgICAgICBzdHJva2U6IGNmZy5zdHlsZS5zdHJva2UgfHwgJyMzMzMnLFxyXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBjZmcuc3R5bGUuY3Vyc29yXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5hbWU6ICdtYWluLXJlY3QnLFxyXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoY2ZnLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gKGNmZy5sYWJlbENmZyAmJiBjZmcubGFiZWxDZmcuc3R5bGUpIHx8IHt9O1xyXG4gICAgICAgICAgICBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcclxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogd2lkdGggKiAoNSAvIDYpLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IGhlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IHN0eWxlLmZpbGwgfHwgJyMwMDAnLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBzdHlsZS5mb250U2l6ZSB8fCAxNlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHdyYXBwZXJSZWN0O1xyXG4gICAgfSxcclxuICAgIGdldEFuY2hvclBvaW50cygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICBbMC41LCAwXSxcclxuICAgICAgICAgICAgWzUgLyA2LCAwXSxcclxuICAgICAgICAgICAgWzUgLyA2LCAwLjVdLFxyXG4gICAgICAgICAgICBbMSwgMC41XSxcclxuICAgICAgICAgICAgWzUgLyA2LCAxXSxcclxuICAgICAgICAgICAgWzAuNSwgMV0sXHJcbiAgICAgICAgICAgIFswLCAwLjVdLFxyXG4gICAgICAgICAgICBbMSAvIDMsIDFdXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufSwgJ3JlY3QnKTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/RegisteredShape/linkListNode.ts\n"); /***/ }), /***/ "./src/RegisteredShape/pointer.ts": /*!****************************************!*\ !*** ./src/RegisteredShape/pointer.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nexports.default = util_1.Util.registerShape('pointer', {\r\n draw(cfg, group) {\r\n const keyShape = group.addShape('path', {\r\n attrs: {\r\n path: this.getPath(cfg),\r\n fill: cfg.style.fill,\r\n matrix: cfg.style.matrix\r\n },\r\n name: 'pointer-path'\r\n });\r\n if (cfg.label) {\r\n const labelStyle = (cfg.labelCfg && cfg.labelCfg.style) || {};\r\n const bgRect = group.addShape('rect', {\r\n attrs: {\r\n x: 0,\r\n y: 0,\r\n text: cfg.label,\r\n fill: null,\r\n radius: 2\r\n },\r\n name: 'bgRect'\r\n });\r\n const text = group.addShape('text', {\r\n attrs: {\r\n x: 0,\r\n y: 0,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: cfg.label,\r\n fill: labelStyle.fill || '#999',\r\n fontSize: labelStyle.fontSize || 16\r\n },\r\n name: 'pointer-text-shape'\r\n });\r\n const { width: textWidth, height: textHeight } = text.getBBox();\r\n bgRect.attr({\r\n width: textWidth + 6,\r\n height: textHeight + 6\r\n });\r\n const markerEndPosition = cfg.markerEndPosition;\r\n if (markerEndPosition) {\r\n let textX = markerEndPosition[0], textY = markerEndPosition[1];\r\n text.attr({\r\n x: textX,\r\n y: textY\r\n });\r\n bgRect.attr({\r\n x: textX - textWidth / 2 - 3,\r\n y: textY - textHeight / 2 - 3\r\n });\r\n }\r\n }\r\n return keyShape;\r\n },\r\n getPath(cfg) {\r\n let width = cfg.size[0], height = cfg.size[1], arrowWidth = width + 4, arrowHeight = height * 0.3;\r\n const path = [\r\n ['M', 0, 0],\r\n ['L', -width / 2 - (arrowWidth / 2), -arrowHeight],\r\n ['L', -width / 2, -arrowHeight],\r\n ['L', -width / 2, -height],\r\n ['L', width / 2, -height],\r\n ['L', width / 2, -arrowHeight],\r\n ['L', width / 2 + (arrowWidth / 2), -arrowHeight],\r\n ['Z'],\r\n ];\r\n return path;\r\n }\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL3BvaW50ZXIudHM/OWUxOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVELGVBQWUsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGFBQWE7QUFDYixtQkFBbUIsdUNBQXVDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL3NyYy9SZWdpc3RlcmVkU2hhcGUvcG9pbnRlci50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gdXRpbF8xLlV0aWwucmVnaXN0ZXJTaGFwZSgncG9pbnRlcicsIHtcclxuICAgIGRyYXcoY2ZnLCBncm91cCkge1xyXG4gICAgICAgIGNvbnN0IGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XHJcbiAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoY2ZnKSxcclxuICAgICAgICAgICAgICAgIGZpbGw6IGNmZy5zdHlsZS5maWxsLFxyXG4gICAgICAgICAgICAgICAgbWF0cml4OiBjZmcuc3R5bGUubWF0cml4XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5hbWU6ICdwb2ludGVyLXBhdGgnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNmZy5sYWJlbCkge1xyXG4gICAgICAgICAgICBjb25zdCBsYWJlbFN0eWxlID0gKGNmZy5sYWJlbENmZyAmJiBjZmcubGFiZWxDZmcuc3R5bGUpIHx8IHt9O1xyXG4gICAgICAgICAgICBjb25zdCBiZ1JlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcclxuICAgICAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHJhZGl1czogMlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZ1JlY3QnXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XHJcbiAgICAgICAgICAgICAgICBhdHRyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IGxhYmVsU3R5bGUuZmlsbCB8fCAnIzk5OScsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGxhYmVsU3R5bGUuZm9udFNpemUgfHwgMTZcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAncG9pbnRlci10ZXh0LXNoYXBlJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogdGV4dFdpZHRoLCBoZWlnaHQ6IHRleHRIZWlnaHQgfSA9IHRleHQuZ2V0QkJveCgpO1xyXG4gICAgICAgICAgICBiZ1JlY3QuYXR0cih7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogdGV4dFdpZHRoICsgNixcclxuICAgICAgICAgICAgICAgIGhlaWdodDogdGV4dEhlaWdodCArIDZcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlckVuZFBvc2l0aW9uID0gY2ZnLm1hcmtlckVuZFBvc2l0aW9uO1xyXG4gICAgICAgICAgICBpZiAobWFya2VyRW5kUG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0WCA9IG1hcmtlckVuZFBvc2l0aW9uWzBdLCB0ZXh0WSA9IG1hcmtlckVuZFBvc2l0aW9uWzFdO1xyXG4gICAgICAgICAgICAgICAgdGV4dC5hdHRyKHtcclxuICAgICAgICAgICAgICAgICAgICB4OiB0ZXh0WCxcclxuICAgICAgICAgICAgICAgICAgICB5OiB0ZXh0WVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBiZ1JlY3QuYXR0cih7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogdGV4dFggLSB0ZXh0V2lkdGggLyAyIC0gMyxcclxuICAgICAgICAgICAgICAgICAgICB5OiB0ZXh0WSAtIHRleHRIZWlnaHQgLyAyIC0gM1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGtleVNoYXBlO1xyXG4gICAgfSxcclxuICAgIGdldFBhdGgoY2ZnKSB7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gY2ZnLnNpemVbMF0sIGhlaWdodCA9IGNmZy5zaXplWzFdLCBhcnJvd1dpZHRoID0gd2lkdGggKyA0LCBhcnJvd0hlaWdodCA9IGhlaWdodCAqIDAuMztcclxuICAgICAgICBjb25zdCBwYXRoID0gW1xyXG4gICAgICAgICAgICBbJ00nLCAwLCAwXSxcclxuICAgICAgICAgICAgWydMJywgLXdpZHRoIC8gMiAtIChhcnJvd1dpZHRoIC8gMiksIC1hcnJvd0hlaWdodF0sXHJcbiAgICAgICAgICAgIFsnTCcsIC13aWR0aCAvIDIsIC1hcnJvd0hlaWdodF0sXHJcbiAgICAgICAgICAgIFsnTCcsIC13aWR0aCAvIDIsIC1oZWlnaHRdLFxyXG4gICAgICAgICAgICBbJ0wnLCB3aWR0aCAvIDIsIC1oZWlnaHRdLFxyXG4gICAgICAgICAgICBbJ0wnLCB3aWR0aCAvIDIsIC1hcnJvd0hlaWdodF0sXHJcbiAgICAgICAgICAgIFsnTCcsIHdpZHRoIC8gMiArIChhcnJvd1dpZHRoIC8gMiksIC1hcnJvd0hlaWdodF0sXHJcbiAgICAgICAgICAgIFsnWiddLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIHBhdGg7XHJcbiAgICB9XHJcbn0pO1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/RegisteredShape/pointer.ts\n"); /***/ }), /***/ "./src/RegisteredShape/twoCellNode.ts": /*!********************************************!*\ !*** ./src/RegisteredShape/twoCellNode.ts ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nexports.default = util_1.Util.registerShape('two-cell-node', {\r\n draw(cfg, group) {\r\n cfg.size = cfg.size || [30, 10];\r\n const width = cfg.size[0], height = cfg.size[1];\r\n const wrapperRect = group.addShape('rect', {\r\n attrs: {\r\n x: width / 2,\r\n y: height / 2,\r\n width: width,\r\n height: height,\r\n stroke: cfg.style.stroke,\r\n fill: cfg.style.backgroundFill || '#eee'\r\n },\r\n name: 'wrapper'\r\n });\r\n group.addShape('rect', {\r\n attrs: {\r\n x: width / 2,\r\n y: height / 2,\r\n width: width / 2,\r\n height: height,\r\n fill: cfg.style.fill,\r\n stroke: cfg.style.stroke\r\n },\r\n name: 'left-rect',\r\n draggable: true\r\n });\r\n const style = (cfg.labelCfg && cfg.labelCfg.style) || {};\r\n if (cfg.label) {\r\n if (Array.isArray(cfg.label)) {\r\n let tag = cfg.label[0], data = cfg.label[1];\r\n group.addShape('text', {\r\n attrs: {\r\n x: width * (3 / 4),\r\n y: height,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: tag,\r\n fill: style.fill || '#000',\r\n fontSize: style.fontSize || 16,\r\n cursor: cfg.style.cursor,\r\n },\r\n name: 'text',\r\n draggable: true\r\n });\r\n group.addShape('text', {\r\n attrs: {\r\n x: width * (5 / 4),\r\n y: height,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: data,\r\n fill: style.fill || '#000',\r\n fontSize: style.fontSize || 16,\r\n cursor: cfg.style.cursor,\r\n },\r\n name: 'text',\r\n draggable: true\r\n });\r\n }\r\n else {\r\n group.addShape('text', {\r\n attrs: {\r\n x: width * (3 / 4),\r\n y: height,\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n text: cfg.label,\r\n fill: style.fill || '#000',\r\n fontSize: style.fontSize || 16,\r\n cursor: cfg.style.cursor,\r\n },\r\n name: 'text',\r\n draggable: true\r\n });\r\n }\r\n }\r\n return wrapperRect;\r\n },\r\n getAnchorPoints() {\r\n return [\r\n [0.5, 0],\r\n [3 / 4, 0.5],\r\n [0.5, 1],\r\n [0, 0.5]\r\n ];\r\n }\r\n}, 'rect');\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvUmVnaXN0ZXJlZFNoYXBlL3R3b0NlbGxOb2RlLnRzP2ZkMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RCxlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vc3JjL1JlZ2lzdGVyZWRTaGFwZS90d29DZWxsTm9kZS50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gdXRpbF8xLlV0aWwucmVnaXN0ZXJTaGFwZSgndHdvLWNlbGwtbm9kZScsIHtcclxuICAgIGRyYXcoY2ZnLCBncm91cCkge1xyXG4gICAgICAgIGNmZy5zaXplID0gY2ZnLnNpemUgfHwgWzMwLCAxMF07XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSBjZmcuc2l6ZVswXSwgaGVpZ2h0ID0gY2ZnLnNpemVbMV07XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlclJlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcclxuICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgIHg6IHdpZHRoIC8gMixcclxuICAgICAgICAgICAgICAgIHk6IGhlaWdodCAvIDIsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogY2ZnLnN0eWxlLnN0cm9rZSxcclxuICAgICAgICAgICAgICAgIGZpbGw6IGNmZy5zdHlsZS5iYWNrZ3JvdW5kRmlsbCB8fCAnI2VlZSdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmFtZTogJ3dyYXBwZXInXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XHJcbiAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICB4OiB3aWR0aCAvIDIsXHJcbiAgICAgICAgICAgICAgICB5OiBoZWlnaHQgLyAyLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoIC8gMixcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgZmlsbDogY2ZnLnN0eWxlLmZpbGwsXHJcbiAgICAgICAgICAgICAgICBzdHJva2U6IGNmZy5zdHlsZS5zdHJva2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbmFtZTogJ2xlZnQtcmVjdCcsXHJcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gKGNmZy5sYWJlbENmZyAmJiBjZmcubGFiZWxDZmcuc3R5bGUpIHx8IHt9O1xyXG4gICAgICAgIGlmIChjZmcubGFiZWwpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2ZnLmxhYmVsKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhZyA9IGNmZy5sYWJlbFswXSwgZGF0YSA9IGNmZy5sYWJlbFsxXTtcclxuICAgICAgICAgICAgICAgIGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHdpZHRoICogKDMgLyA0KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeTogaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0YWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHN0eWxlLmZpbGwgfHwgJyMwMDAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogc3R5bGUuZm9udFNpemUgfHwgMTYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogY2ZnLnN0eWxlLmN1cnNvcixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDogd2lkdGggKiAoNSAvIDQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHN0eWxlLmZpbGwgfHwgJyMwMDAnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogc3R5bGUuZm9udFNpemUgfHwgMTYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogY2ZnLnN0eWxlLmN1cnNvcixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDogd2lkdGggKiAoMyAvIDQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBoZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogc3R5bGUuZmlsbCB8fCAnIzAwMCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBzdHlsZS5mb250U2l6ZSB8fCAxNixcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBjZmcuc3R5bGUuY3Vyc29yLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHdyYXBwZXJSZWN0O1xyXG4gICAgfSxcclxuICAgIGdldEFuY2hvclBvaW50cygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICBbMC41LCAwXSxcclxuICAgICAgICAgICAgWzMgLyA0LCAwLjVdLFxyXG4gICAgICAgICAgICBbMC41LCAxXSxcclxuICAgICAgICAgICAgWzAsIDAuNV1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG59LCAncmVjdCcpO1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/RegisteredShape/twoCellNode.ts\n"); /***/ }), /***/ "./src/StructV.ts": /*!************************!*\ !*** ./src/StructV.ts ***! \************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SV = void 0;\r\nconst engine_1 = __webpack_require__(/*! ./engine */ \"./src/engine.ts\");\r\nconst boundingRect_1 = __webpack_require__(/*! ./Common/boundingRect */ \"./src/Common/boundingRect.ts\");\r\nconst group_1 = __webpack_require__(/*! ./Common/group */ \"./src/Common/group.ts\");\r\nconst g6_1 = __webpack_require__(/*! @antv/g6 */ \"./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js\");\r\nconst pointer_1 = __webpack_require__(/*! ./RegisteredShape/pointer */ \"./src/RegisteredShape/pointer.ts\");\r\nconst linkListNode_1 = __webpack_require__(/*! ./RegisteredShape/linkListNode */ \"./src/RegisteredShape/linkListNode.ts\");\r\nconst binaryTreeNode_1 = __webpack_require__(/*! ./RegisteredShape/binaryTreeNode */ \"./src/RegisteredShape/binaryTreeNode.ts\");\r\nconst clenQueuePointer_1 = __webpack_require__(/*! ./RegisteredShape/clenQueuePointer */ \"./src/RegisteredShape/clenQueuePointer.ts\");\r\nconst twoCellNode_1 = __webpack_require__(/*! ./RegisteredShape/twoCellNode */ \"./src/RegisteredShape/twoCellNode.ts\");\r\nconst arrayNode_1 = __webpack_require__(/*! ./RegisteredShape/arrayNode */ \"./src/RegisteredShape/arrayNode.ts\");\r\nconst cursor_1 = __webpack_require__(/*! ./RegisteredShape/cursor */ \"./src/RegisteredShape/cursor.ts\");\r\nconst vector_1 = __webpack_require__(/*! ./Common/vector */ \"./src/Common/vector.ts\");\r\nconst util_1 = __webpack_require__(/*! ./Common/util */ \"./src/Common/util.ts\");\r\nexports.SV = function (DOMContainer, engineOptions = {}) {\r\n return new engine_1.Engine(DOMContainer, engineOptions);\r\n};\r\nexports.SV.Group = group_1.Group;\r\nexports.SV.Bound = boundingRect_1.Bound;\r\nexports.SV.Vector = vector_1.Vector;\r\nexports.SV.Mat3 = g6_1.default.Util.mat3;\r\nexports.SV.G6 = g6_1.default;\r\nexports.SV.registeredLayout = {};\r\nexports.SV.registeredShape = [\r\n pointer_1.default,\r\n linkListNode_1.default,\r\n binaryTreeNode_1.default,\r\n twoCellNode_1.default,\r\n cursor_1.default,\r\n arrayNode_1.default,\r\n clenQueuePointer_1.default,\r\n];\r\nexports.SV.registerShape = util_1.Util.registerShape;\r\nexports.SV.registerLayout = function (name, layoutCreator) {\r\n if (typeof layoutCreator.sourcesPreprocess !== 'function') {\r\n layoutCreator.sourcesPreprocess = function (data) {\r\n return data;\r\n };\r\n }\r\n if (typeof layoutCreator.defineLeakRule !== 'function') {\r\n layoutCreator.defineLeakRule = function (models) {\r\n return models;\r\n };\r\n }\r\n if (typeof layoutCreator.defineOptions !== 'function' || typeof layoutCreator.layout !== 'function') {\r\n return;\r\n }\r\n exports.SV.registeredLayout[name] = layoutCreator;\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvU3RydWN0Vi50cz83OTRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyxpQ0FBVTtBQUNuQyx1QkFBdUIsbUJBQU8sQ0FBQywyREFBdUI7QUFDdEQsZ0JBQWdCLG1CQUFPLENBQUMsNkNBQWdCO0FBQ3hDLGFBQWEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMvQixrQkFBa0IsbUJBQU8sQ0FBQyxtRUFBMkI7QUFDckQsdUJBQXVCLG1CQUFPLENBQUMsNkVBQWdDO0FBQy9ELHlCQUF5QixtQkFBTyxDQUFDLGlGQUFrQztBQUNuRSwyQkFBMkIsbUJBQU8sQ0FBQyxxRkFBb0M7QUFDdkUsc0JBQXNCLG1CQUFPLENBQUMsMkVBQStCO0FBQzdELG9CQUFvQixtQkFBTyxDQUFDLHVFQUE2QjtBQUN6RCxpQkFBaUIsbUJBQU8sQ0FBQyxpRUFBMEI7QUFDbkQsaUJBQWlCLG1CQUFPLENBQUMsK0NBQWlCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQywyQ0FBZTtBQUN0Qyx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvU3RydWN0Vi50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuU1YgPSB2b2lkIDA7XHJcbmNvbnN0IGVuZ2luZV8xID0gcmVxdWlyZShcIi4vZW5naW5lXCIpO1xyXG5jb25zdCBib3VuZGluZ1JlY3RfMSA9IHJlcXVpcmUoXCIuL0NvbW1vbi9ib3VuZGluZ1JlY3RcIik7XHJcbmNvbnN0IGdyb3VwXzEgPSByZXF1aXJlKFwiLi9Db21tb24vZ3JvdXBcIik7XHJcbmNvbnN0IGc2XzEgPSByZXF1aXJlKFwiQGFudHYvZzZcIik7XHJcbmNvbnN0IHBvaW50ZXJfMSA9IHJlcXVpcmUoXCIuL1JlZ2lzdGVyZWRTaGFwZS9wb2ludGVyXCIpO1xyXG5jb25zdCBsaW5rTGlzdE5vZGVfMSA9IHJlcXVpcmUoXCIuL1JlZ2lzdGVyZWRTaGFwZS9saW5rTGlzdE5vZGVcIik7XHJcbmNvbnN0IGJpbmFyeVRyZWVOb2RlXzEgPSByZXF1aXJlKFwiLi9SZWdpc3RlcmVkU2hhcGUvYmluYXJ5VHJlZU5vZGVcIik7XHJcbmNvbnN0IGNsZW5RdWV1ZVBvaW50ZXJfMSA9IHJlcXVpcmUoXCIuL1JlZ2lzdGVyZWRTaGFwZS9jbGVuUXVldWVQb2ludGVyXCIpO1xyXG5jb25zdCB0d29DZWxsTm9kZV8xID0gcmVxdWlyZShcIi4vUmVnaXN0ZXJlZFNoYXBlL3R3b0NlbGxOb2RlXCIpO1xyXG5jb25zdCBhcnJheU5vZGVfMSA9IHJlcXVpcmUoXCIuL1JlZ2lzdGVyZWRTaGFwZS9hcnJheU5vZGVcIik7XHJcbmNvbnN0IGN1cnNvcl8xID0gcmVxdWlyZShcIi4vUmVnaXN0ZXJlZFNoYXBlL2N1cnNvclwiKTtcclxuY29uc3QgdmVjdG9yXzEgPSByZXF1aXJlKFwiLi9Db21tb24vdmVjdG9yXCIpO1xyXG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi9Db21tb24vdXRpbFwiKTtcclxuZXhwb3J0cy5TViA9IGZ1bmN0aW9uIChET01Db250YWluZXIsIGVuZ2luZU9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIG5ldyBlbmdpbmVfMS5FbmdpbmUoRE9NQ29udGFpbmVyLCBlbmdpbmVPcHRpb25zKTtcclxufTtcclxuZXhwb3J0cy5TVi5Hcm91cCA9IGdyb3VwXzEuR3JvdXA7XHJcbmV4cG9ydHMuU1YuQm91bmQgPSBib3VuZGluZ1JlY3RfMS5Cb3VuZDtcclxuZXhwb3J0cy5TVi5WZWN0b3IgPSB2ZWN0b3JfMS5WZWN0b3I7XHJcbmV4cG9ydHMuU1YuTWF0MyA9IGc2XzEuZGVmYXVsdC5VdGlsLm1hdDM7XHJcbmV4cG9ydHMuU1YuRzYgPSBnNl8xLmRlZmF1bHQ7XHJcbmV4cG9ydHMuU1YucmVnaXN0ZXJlZExheW91dCA9IHt9O1xyXG5leHBvcnRzLlNWLnJlZ2lzdGVyZWRTaGFwZSA9IFtcclxuICAgIHBvaW50ZXJfMS5kZWZhdWx0LFxyXG4gICAgbGlua0xpc3ROb2RlXzEuZGVmYXVsdCxcclxuICAgIGJpbmFyeVRyZWVOb2RlXzEuZGVmYXVsdCxcclxuICAgIHR3b0NlbGxOb2RlXzEuZGVmYXVsdCxcclxuICAgIGN1cnNvcl8xLmRlZmF1bHQsXHJcbiAgICBhcnJheU5vZGVfMS5kZWZhdWx0LFxyXG4gICAgY2xlblF1ZXVlUG9pbnRlcl8xLmRlZmF1bHQsXHJcbl07XHJcbmV4cG9ydHMuU1YucmVnaXN0ZXJTaGFwZSA9IHV0aWxfMS5VdGlsLnJlZ2lzdGVyU2hhcGU7XHJcbmV4cG9ydHMuU1YucmVnaXN0ZXJMYXlvdXQgPSBmdW5jdGlvbiAobmFtZSwgbGF5b3V0Q3JlYXRvcikge1xyXG4gICAgaWYgKHR5cGVvZiBsYXlvdXRDcmVhdG9yLnNvdXJjZXNQcmVwcm9jZXNzICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgbGF5b3V0Q3JlYXRvci5zb3VyY2VzUHJlcHJvY2VzcyA9IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGxheW91dENyZWF0b3IuZGVmaW5lTGVha1J1bGUgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBsYXlvdXRDcmVhdG9yLmRlZmluZUxlYWtSdWxlID0gZnVuY3Rpb24gKG1vZGVscykge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWxzO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGxheW91dENyZWF0b3IuZGVmaW5lT3B0aW9ucyAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgbGF5b3V0Q3JlYXRvci5sYXlvdXQgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBleHBvcnRzLlNWLnJlZ2lzdGVyZWRMYXlvdXRbbmFtZV0gPSBsYXlvdXRDcmVhdG9yO1xyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/StructV.ts\n"); /***/ }), /***/ "./src/View/animation.ts": /*!*******************************!*\ !*** ./src/View/animation.ts ***! \*******************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Animations = void 0;\r\nconst g6_1 = __webpack_require__(/*! @antv/g6 */ \"./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js\");\r\nexports.Animations = {\r\n APPEND(G6Item, animationConfig) {\r\n const type = G6Item.getType(), group = G6Item.getContainer(), Mat3 = g6_1.Util.mat3, animateCfg = {\r\n duration: animationConfig.duration,\r\n easing: animationConfig.timingFunction,\r\n callback: animationConfig.callback\r\n };\r\n if (type === 'node') {\r\n let matrix = group.getMatrix(), targetMatrix = Mat3.clone(matrix);\r\n Mat3.scale(matrix, matrix, [0, 0]);\r\n Mat3.scale(targetMatrix, targetMatrix, [1, 1]);\r\n group.attr({ matrix, opacity: 0 });\r\n group.animate({ matrix: targetMatrix, opacity: 1 }, animateCfg);\r\n }\r\n if (type === 'edge') {\r\n const line = group.get('children')[0], length = line.getTotalLength();\r\n line.attr({ lineDash: [0, length], opacity: 0 });\r\n line.animate({ lineDash: [length, 0], opacity: 1 }, animateCfg);\r\n }\r\n },\r\n REMOVE(G6Item, animationConfig) {\r\n const type = G6Item.getType(), group = G6Item.getContainer(), Mat3 = g6_1.Util.mat3, animateCfg = {\r\n duration: animationConfig.duration,\r\n easing: animationConfig.timingFunction,\r\n callback: animationConfig.callback\r\n };\r\n if (type === 'node') {\r\n let matrix = Mat3.clone(group.getMatrix());\r\n Mat3.scale(matrix, matrix, [0, 0]);\r\n group.animate({ opacity: 0, matrix }, animateCfg);\r\n }\r\n if (type === 'edge') {\r\n const line = group.get('children')[0], length = line.getTotalLength();\r\n line.animate({ lineDash: [0, length], opacity: 0 }, animateCfg);\r\n }\r\n },\r\n FADE_IN(G6Item, animationConfig) {\r\n const group = G6Item.getContainer(), animateCfg = {\r\n duration: animationConfig.duration,\r\n easing: animationConfig.timingFunction,\r\n callback: animationConfig.callback\r\n };\r\n group.attr({ opacity: 0 });\r\n group.animate({ opacity: 1 }, animateCfg);\r\n }\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvVmlldy9hbmltYXRpb24udHM/YzgzOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsYUFBYSxtQkFBTyxDQUFDLHFFQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDLDJCQUEyQixtQ0FBbUM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9DQUFvQztBQUMzRCwwQkFBMEIsb0NBQW9DO0FBQzlEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxQkFBcUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG9DQUFvQztBQUM5RDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQyx1QkFBdUIsYUFBYTtBQUNwQztBQUNBIiwiZmlsZSI6Ii4vc3JjL1ZpZXcvYW5pbWF0aW9uLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5BbmltYXRpb25zID0gdm9pZCAwO1xyXG5jb25zdCBnNl8xID0gcmVxdWlyZShcIkBhbnR2L2c2XCIpO1xyXG5leHBvcnRzLkFuaW1hdGlvbnMgPSB7XHJcbiAgICBBUFBFTkQoRzZJdGVtLCBhbmltYXRpb25Db25maWcpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gRzZJdGVtLmdldFR5cGUoKSwgZ3JvdXAgPSBHNkl0ZW0uZ2V0Q29udGFpbmVyKCksIE1hdDMgPSBnNl8xLlV0aWwubWF0MywgYW5pbWF0ZUNmZyA9IHtcclxuICAgICAgICAgICAgZHVyYXRpb246IGFuaW1hdGlvbkNvbmZpZy5kdXJhdGlvbixcclxuICAgICAgICAgICAgZWFzaW5nOiBhbmltYXRpb25Db25maWcudGltaW5nRnVuY3Rpb24sXHJcbiAgICAgICAgICAgIGNhbGxiYWNrOiBhbmltYXRpb25Db25maWcuY2FsbGJhY2tcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnbm9kZScpIHtcclxuICAgICAgICAgICAgbGV0IG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpLCB0YXJnZXRNYXRyaXggPSBNYXQzLmNsb25lKG1hdHJpeCk7XHJcbiAgICAgICAgICAgIE1hdDMuc2NhbGUobWF0cml4LCBtYXRyaXgsIFswLCAwXSk7XHJcbiAgICAgICAgICAgIE1hdDMuc2NhbGUodGFyZ2V0TWF0cml4LCB0YXJnZXRNYXRyaXgsIFsxLCAxXSk7XHJcbiAgICAgICAgICAgIGdyb3VwLmF0dHIoeyBtYXRyaXgsIG9wYWNpdHk6IDAgfSk7XHJcbiAgICAgICAgICAgIGdyb3VwLmFuaW1hdGUoeyBtYXRyaXg6IHRhcmdldE1hdHJpeCwgb3BhY2l0eTogMSB9LCBhbmltYXRlQ2ZnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdlZGdlJykge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5lID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpWzBdLCBsZW5ndGggPSBsaW5lLmdldFRvdGFsTGVuZ3RoKCk7XHJcbiAgICAgICAgICAgIGxpbmUuYXR0cih7IGxpbmVEYXNoOiBbMCwgbGVuZ3RoXSwgb3BhY2l0eTogMCB9KTtcclxuICAgICAgICAgICAgbGluZS5hbmltYXRlKHsgbGluZURhc2g6IFtsZW5ndGgsIDBdLCBvcGFjaXR5OiAxIH0sIGFuaW1hdGVDZmcpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBSRU1PVkUoRzZJdGVtLCBhbmltYXRpb25Db25maWcpIHtcclxuICAgICAgICBjb25zdCB0eXBlID0gRzZJdGVtLmdldFR5cGUoKSwgZ3JvdXAgPSBHNkl0ZW0uZ2V0Q29udGFpbmVyKCksIE1hdDMgPSBnNl8xLlV0aWwubWF0MywgYW5pbWF0ZUNmZyA9IHtcclxuICAgICAgICAgICAgZHVyYXRpb246IGFuaW1hdGlvbkNvbmZpZy5kdXJhdGlvbixcclxuICAgICAgICAgICAgZWFzaW5nOiBhbmltYXRpb25Db25maWcudGltaW5nRnVuY3Rpb24sXHJcbiAgICAgICAgICAgIGNhbGxiYWNrOiBhbmltYXRpb25Db25maWcuY2FsbGJhY2tcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnbm9kZScpIHtcclxuICAgICAgICAgICAgbGV0IG1hdHJpeCA9IE1hdDMuY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xyXG4gICAgICAgICAgICBNYXQzLnNjYWxlKG1hdHJpeCwgbWF0cml4LCBbMCwgMF0pO1xyXG4gICAgICAgICAgICBncm91cC5hbmltYXRlKHsgb3BhY2l0eTogMCwgbWF0cml4IH0sIGFuaW1hdGVDZmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2VkZ2UnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBncm91cC5nZXQoJ2NoaWxkcmVuJylbMF0sIGxlbmd0aCA9IGxpbmUuZ2V0VG90YWxMZW5ndGgoKTtcclxuICAgICAgICAgICAgbGluZS5hbmltYXRlKHsgbGluZURhc2g6IFswLCBsZW5ndGhdLCBvcGFjaXR5OiAwIH0sIGFuaW1hdGVDZmcpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBGQURFX0lOKEc2SXRlbSwgYW5pbWF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBHNkl0ZW0uZ2V0Q29udGFpbmVyKCksIGFuaW1hdGVDZmcgPSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25Db25maWcuZHVyYXRpb24sXHJcbiAgICAgICAgICAgIGVhc2luZzogYW5pbWF0aW9uQ29uZmlnLnRpbWluZ0Z1bmN0aW9uLFxyXG4gICAgICAgICAgICBjYWxsYmFjazogYW5pbWF0aW9uQ29uZmlnLmNhbGxiYWNrXHJcbiAgICAgICAgfTtcclxuICAgICAgICBncm91cC5hdHRyKHsgb3BhY2l0eTogMCB9KTtcclxuICAgICAgICBncm91cC5hbmltYXRlKHsgb3BhY2l0eTogMSB9LCBhbmltYXRlQ2ZnKTtcclxuICAgIH1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/View/animation.ts\n"); /***/ }), /***/ "./src/View/layoutProvider.ts": /*!************************************!*\ !*** ./src/View/layoutProvider.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.LayoutProvider = void 0;\r\nconst boundingRect_1 = __webpack_require__(/*! ../Common/boundingRect */ \"./src/Common/boundingRect.ts\");\r\nconst group_1 = __webpack_require__(/*! ../Common/group */ \"./src/Common/group.ts\");\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst vector_1 = __webpack_require__(/*! ../Common/vector */ \"./src/Common/vector.ts\");\r\nclass LayoutProvider {\r\n constructor(engine, viewContainer) {\r\n this.engine = engine;\r\n this.viewOptions = this.engine.viewOptions;\r\n this.viewContainer = viewContainer;\r\n }\r\n preLayoutProcess(layoutGroupTable) {\r\n const modelList = util_1.Util.convertGroupTable2ModelList(layoutGroupTable);\r\n modelList.forEach(item => {\r\n item.preLayout = true;\r\n item.set('rotation', item.get('rotation'));\r\n item.set({ x: 0, y: 0 });\r\n });\r\n }\r\n postLayoutProcess(layoutGroupTable) {\r\n const modelList = util_1.Util.convertGroupTable2ModelList(layoutGroupTable);\r\n modelList.forEach(item => {\r\n item.preLayout = false;\r\n item.layoutX = item.get('x');\r\n item.layoutY = item.get('y');\r\n });\r\n }\r\n layoutMarker(markers, markerOptions) {\r\n markers.forEach(item => {\r\n var _a, _b, _c;\r\n const options = markerOptions[item.sourceType], offset = (_a = options.offset) !== null && _a !== void 0 ? _a : 8, anchor = (_b = item.anchor) !== null && _b !== void 0 ? _b : 0, labelOffset = (_c = options.labelOffset) !== null && _c !== void 0 ? _c : 2;\r\n let target = item.target, targetBound = target.getBound(), g6AnchorPosition = item.target.shadowG6Item.getAnchorPoints()[anchor], center = [targetBound.x + targetBound.width / 2, targetBound.y + targetBound.height / 2], markerPosition, markerEndPosition;\r\n let anchorPosition = [g6AnchorPosition.x, g6AnchorPosition.y];\r\n let anchorVector = vector_1.Vector.subtract(anchorPosition, center), angle = 0, len = vector_1.Vector.length(anchorVector) + offset;\r\n if (anchorVector[0] === 0) {\r\n angle = anchorVector[1] > 0 ? -Math.PI : 0;\r\n }\r\n else {\r\n angle = Math.sign(anchorVector[0]) * (Math.PI / 2 - Math.atan(anchorVector[1] / anchorVector[0]));\r\n }\r\n const markerHeight = item.get('size')[1], labelRadius = item.getLabelSizeRadius() / 2;\r\n anchorVector = vector_1.Vector.normalize(anchorVector);\r\n markerPosition = vector_1.Vector.location(center, anchorVector, len);\r\n markerEndPosition = vector_1.Vector.location(center, anchorVector, markerHeight + len + labelRadius + labelOffset);\r\n markerEndPosition = vector_1.Vector.subtract(markerEndPosition, markerPosition);\r\n item.set({\r\n x: markerPosition[0],\r\n y: markerPosition[1],\r\n rotation: angle,\r\n markerEndPosition\r\n });\r\n });\r\n }\r\n layoutFreedLabel(freedLabels) {\r\n freedLabels.forEach(item => {\r\n const freedNodeBound = item.target.getBound();\r\n item.set({\r\n x: freedNodeBound.x + freedNodeBound.width / 2,\r\n y: freedNodeBound.y + freedNodeBound.height * 1.5,\r\n size: [freedNodeBound.width, 0]\r\n });\r\n });\r\n }\r\n layoutIndexLabel(indexLabels, indexLabelOptions) {\r\n const indexLabelPositionMap = {\r\n top: (nodeBound, labelBound, offset) => {\r\n return {\r\n x: nodeBound.x + nodeBound.width / 2,\r\n y: nodeBound.y - offset\r\n };\r\n },\r\n right: (nodeBound, labelBound, offset) => {\r\n return {\r\n x: nodeBound.x + nodeBound.width + offset,\r\n y: nodeBound.y + nodeBound.height / 2\r\n };\r\n },\r\n bottom: (nodeBound, labelBound, offset) => {\r\n return {\r\n x: nodeBound.x + nodeBound.width / 2,\r\n y: nodeBound.y + nodeBound.height + offset\r\n };\r\n },\r\n left: (nodeBound, labelBound, offset) => {\r\n return {\r\n x: nodeBound.x - labelBound.width - offset,\r\n y: nodeBound.y + nodeBound.height / 2\r\n };\r\n }\r\n };\r\n indexLabels.forEach(item => {\r\n var _a, _b;\r\n const options = indexLabelOptions[item.sourceType], nodeBound = item.target.getBound(), labelBound = item.getBound(), offset = (_a = options.offset) !== null && _a !== void 0 ? _a : 20, position = (_b = options.position) !== null && _b !== void 0 ? _b : 'bottom';\r\n const pos = indexLabelPositionMap[position](nodeBound, labelBound, offset);\r\n item.set(pos);\r\n });\r\n }\r\n layoutAddressLabel(leakAddress, addressLabelOption) {\r\n const offset = addressLabelOption.offset || 16;\r\n leakAddress.forEach(item => {\r\n const nodeBound = item.target.getBound();\r\n item.set({\r\n x: nodeBound.x + nodeBound.width / 2,\r\n y: nodeBound.y - offset\r\n });\r\n });\r\n }\r\n layoutModels(layoutGroupTable) {\r\n const modelGroupList = [];\r\n layoutGroupTable.forEach(group => {\r\n const modelList = group.modelList, modelGroup = new group_1.Group();\r\n const layoutOptions = group.options.layout;\r\n modelList.forEach(item => {\r\n modelGroup.add(item);\r\n });\r\n group.layoutCreator.layout(group.node, layoutOptions);\r\n modelGroupList.push(modelGroup);\r\n });\r\n layoutGroupTable.forEach(group => {\r\n const markerOptions = group.options.marker || {}, indexLabelOptions = group.options.indexLabel || {}, addressLabelOption = group.options.addressLabel || {};\r\n this.layoutIndexLabel(group.indexLabel, indexLabelOptions);\r\n this.layoutFreedLabel(group.freedLabel);\r\n this.layoutAddressLabel(group.addressLabel, addressLabelOption);\r\n this.layoutMarker(group.marker, markerOptions);\r\n });\r\n return modelGroupList;\r\n }\r\n layoutLeakModels(leakModels, accumulateLeakModels) {\r\n const group = new group_1.Group(), containerHeight = this.viewContainer.getG6Instance().getHeight(), leakAreaHeight = this.engine.viewOptions.leakAreaHeight, leakAreaY = containerHeight - leakAreaHeight, xOffset = 60;\r\n let prevBound;\r\n leakModels.forEach(item => {\r\n item.set({\r\n x: item.layoutX,\r\n y: item.layoutY\r\n });\r\n });\r\n const globalLeakGroupBound = accumulateLeakModels.length ?\r\n boundingRect_1.Bound.union(...accumulateLeakModels.map(item => item.getBound())) :\r\n { x: 0, y: leakAreaY, width: 0, height: 0 };\r\n const layoutGroups = util_1.Util.groupBy(leakModels, 'group');\r\n Object.keys(layoutGroups).forEach(key => {\r\n group.add(...layoutGroups[key]);\r\n const currentBound = group.getBound(), prevBoundEnd = prevBound ? prevBound.x + prevBound.width : 0, { x: groupX, y: groupY } = currentBound, dx = globalLeakGroupBound.x + globalLeakGroupBound.width + prevBoundEnd + xOffset - groupX, dy = globalLeakGroupBound.y - groupY;\r\n group.translate(dx, dy);\r\n group.clear();\r\n boundingRect_1.Bound.translate(currentBound, dx, dy);\r\n prevBound = currentBound;\r\n });\r\n }\r\n layoutGroups(modelGroupList) {\r\n let wrapperGroup = new group_1.Group(), group, prevBound, bound, boundList = [], dx = 0;\r\n for (let i = 0; i < modelGroupList.length; i++) {\r\n group = modelGroupList[i];\r\n bound = group.getPaddingBound(this.viewOptions.groupPadding);\r\n if (prevBound) {\r\n dx = prevBound.x + prevBound.width - bound.x;\r\n }\r\n else {\r\n dx = bound.x;\r\n }\r\n group.translate(dx, 0);\r\n boundingRect_1.Bound.translate(bound, dx, 0);\r\n boundList.push(bound);\r\n wrapperGroup.add(group);\r\n prevBound = bound;\r\n }\r\n return wrapperGroup;\r\n }\r\n fitCenter(group) {\r\n let width = this.viewContainer.getG6Instance().getWidth(), height = this.viewContainer.getG6Instance().getHeight(), leakAreaHeight = this.engine.viewOptions.leakAreaHeight;\r\n if (this.viewContainer.hasLeak) {\r\n height = height - leakAreaHeight;\r\n }\r\n const viewBound = group.getBound(), centerX = width / 2, centerY = height / 2, boundCenterX = viewBound.x + viewBound.width / 2, boundCenterY = viewBound.y + viewBound.height / 2, dx = centerX - boundCenterX, dy = centerY - boundCenterY;\r\n group.translate(dx, dy);\r\n }\r\n layoutAll(layoutGroupTable, accumulateLeakModels, leakModels) {\r\n this.preLayoutProcess(layoutGroupTable);\r\n const modelGroupList = this.layoutModels(layoutGroupTable);\r\n const generalGroup = this.layoutGroups(modelGroupList);\r\n if (leakModels.length) {\r\n this.layoutLeakModels(leakModels, accumulateLeakModels);\r\n }\r\n this.fitCenter(generalGroup);\r\n this.postLayoutProcess(layoutGroupTable);\r\n }\r\n}\r\nexports.LayoutProvider = LayoutProvider;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvVmlldy9sYXlvdXRQcm92aWRlci50cz84ZjA5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSx1QkFBdUIsbUJBQU8sQ0FBQyw0REFBd0I7QUFDdkQsZ0JBQWdCLG1CQUFPLENBQUMsOENBQWlCO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsZ0RBQWtCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsNERBQTRELG9EQUFvRDtBQUNoSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0Esa0hBQWtILHVCQUF1QjtBQUN6STtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkJBQTJCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9WaWV3L2xheW91dFByb3ZpZGVyLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5MYXlvdXRQcm92aWRlciA9IHZvaWQgMDtcclxuY29uc3QgYm91bmRpbmdSZWN0XzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL2JvdW5kaW5nUmVjdFwiKTtcclxuY29uc3QgZ3JvdXBfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vZ3JvdXBcIik7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgdmVjdG9yXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL3ZlY3RvclwiKTtcclxuY2xhc3MgTGF5b3V0UHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoZW5naW5lLCB2aWV3Q29udGFpbmVyKSB7XHJcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XHJcbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyA9IHRoaXMuZW5naW5lLnZpZXdPcHRpb25zO1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lciA9IHZpZXdDb250YWluZXI7XHJcbiAgICB9XHJcbiAgICBwcmVMYXlvdXRQcm9jZXNzKGxheW91dEdyb3VwVGFibGUpIHtcclxuICAgICAgICBjb25zdCBtb2RlbExpc3QgPSB1dGlsXzEuVXRpbC5jb252ZXJ0R3JvdXBUYWJsZTJNb2RlbExpc3QobGF5b3V0R3JvdXBUYWJsZSk7XHJcbiAgICAgICAgbW9kZWxMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0ucHJlTGF5b3V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgaXRlbS5zZXQoJ3JvdGF0aW9uJywgaXRlbS5nZXQoJ3JvdGF0aW9uJykpO1xyXG4gICAgICAgICAgICBpdGVtLnNldCh7IHg6IDAsIHk6IDAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwb3N0TGF5b3V0UHJvY2VzcyhsYXlvdXRHcm91cFRhYmxlKSB7XHJcbiAgICAgICAgY29uc3QgbW9kZWxMaXN0ID0gdXRpbF8xLlV0aWwuY29udmVydEdyb3VwVGFibGUyTW9kZWxMaXN0KGxheW91dEdyb3VwVGFibGUpO1xyXG4gICAgICAgIG1vZGVsTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnByZUxheW91dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpdGVtLmxheW91dFggPSBpdGVtLmdldCgneCcpO1xyXG4gICAgICAgICAgICBpdGVtLmxheW91dFkgPSBpdGVtLmdldCgneScpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgbGF5b3V0TWFya2VyKG1hcmtlcnMsIG1hcmtlck9wdGlvbnMpIHtcclxuICAgICAgICBtYXJrZXJzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jO1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gbWFya2VyT3B0aW9uc1tpdGVtLnNvdXJjZVR5cGVdLCBvZmZzZXQgPSAoX2EgPSBvcHRpb25zLm9mZnNldCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogOCwgYW5jaG9yID0gKF9iID0gaXRlbS5hbmNob3IpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDAsIGxhYmVsT2Zmc2V0ID0gKF9jID0gb3B0aW9ucy5sYWJlbE9mZnNldCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMjtcclxuICAgICAgICAgICAgbGV0IHRhcmdldCA9IGl0ZW0udGFyZ2V0LCB0YXJnZXRCb3VuZCA9IHRhcmdldC5nZXRCb3VuZCgpLCBnNkFuY2hvclBvc2l0aW9uID0gaXRlbS50YXJnZXQuc2hhZG93RzZJdGVtLmdldEFuY2hvclBvaW50cygpW2FuY2hvcl0sIGNlbnRlciA9IFt0YXJnZXRCb3VuZC54ICsgdGFyZ2V0Qm91bmQud2lkdGggLyAyLCB0YXJnZXRCb3VuZC55ICsgdGFyZ2V0Qm91bmQuaGVpZ2h0IC8gMl0sIG1hcmtlclBvc2l0aW9uLCBtYXJrZXJFbmRQb3NpdGlvbjtcclxuICAgICAgICAgICAgbGV0IGFuY2hvclBvc2l0aW9uID0gW2c2QW5jaG9yUG9zaXRpb24ueCwgZzZBbmNob3JQb3NpdGlvbi55XTtcclxuICAgICAgICAgICAgbGV0IGFuY2hvclZlY3RvciA9IHZlY3Rvcl8xLlZlY3Rvci5zdWJ0cmFjdChhbmNob3JQb3NpdGlvbiwgY2VudGVyKSwgYW5nbGUgPSAwLCBsZW4gPSB2ZWN0b3JfMS5WZWN0b3IubGVuZ3RoKGFuY2hvclZlY3RvcikgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgIGlmIChhbmNob3JWZWN0b3JbMF0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGFuZ2xlID0gYW5jaG9yVmVjdG9yWzFdID4gMCA/IC1NYXRoLlBJIDogMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5zaWduKGFuY2hvclZlY3RvclswXSkgKiAoTWF0aC5QSSAvIDIgLSBNYXRoLmF0YW4oYW5jaG9yVmVjdG9yWzFdIC8gYW5jaG9yVmVjdG9yWzBdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbWFya2VySGVpZ2h0ID0gaXRlbS5nZXQoJ3NpemUnKVsxXSwgbGFiZWxSYWRpdXMgPSBpdGVtLmdldExhYmVsU2l6ZVJhZGl1cygpIC8gMjtcclxuICAgICAgICAgICAgYW5jaG9yVmVjdG9yID0gdmVjdG9yXzEuVmVjdG9yLm5vcm1hbGl6ZShhbmNob3JWZWN0b3IpO1xyXG4gICAgICAgICAgICBtYXJrZXJQb3NpdGlvbiA9IHZlY3Rvcl8xLlZlY3Rvci5sb2NhdGlvbihjZW50ZXIsIGFuY2hvclZlY3RvciwgbGVuKTtcclxuICAgICAgICAgICAgbWFya2VyRW5kUG9zaXRpb24gPSB2ZWN0b3JfMS5WZWN0b3IubG9jYXRpb24oY2VudGVyLCBhbmNob3JWZWN0b3IsIG1hcmtlckhlaWdodCArIGxlbiArIGxhYmVsUmFkaXVzICsgbGFiZWxPZmZzZXQpO1xyXG4gICAgICAgICAgICBtYXJrZXJFbmRQb3NpdGlvbiA9IHZlY3Rvcl8xLlZlY3Rvci5zdWJ0cmFjdChtYXJrZXJFbmRQb3NpdGlvbiwgbWFya2VyUG9zaXRpb24pO1xyXG4gICAgICAgICAgICBpdGVtLnNldCh7XHJcbiAgICAgICAgICAgICAgICB4OiBtYXJrZXJQb3NpdGlvblswXSxcclxuICAgICAgICAgICAgICAgIHk6IG1hcmtlclBvc2l0aW9uWzFdLFxyXG4gICAgICAgICAgICAgICAgcm90YXRpb246IGFuZ2xlLFxyXG4gICAgICAgICAgICAgICAgbWFya2VyRW5kUG9zaXRpb25cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsYXlvdXRGcmVlZExhYmVsKGZyZWVkTGFiZWxzKSB7XHJcbiAgICAgICAgZnJlZWRMYWJlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZnJlZWROb2RlQm91bmQgPSBpdGVtLnRhcmdldC5nZXRCb3VuZCgpO1xyXG4gICAgICAgICAgICBpdGVtLnNldCh7XHJcbiAgICAgICAgICAgICAgICB4OiBmcmVlZE5vZGVCb3VuZC54ICsgZnJlZWROb2RlQm91bmQud2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgeTogZnJlZWROb2RlQm91bmQueSArIGZyZWVkTm9kZUJvdW5kLmhlaWdodCAqIDEuNSxcclxuICAgICAgICAgICAgICAgIHNpemU6IFtmcmVlZE5vZGVCb3VuZC53aWR0aCwgMF1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsYXlvdXRJbmRleExhYmVsKGluZGV4TGFiZWxzLCBpbmRleExhYmVsT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4TGFiZWxQb3NpdGlvbk1hcCA9IHtcclxuICAgICAgICAgICAgdG9wOiAobm9kZUJvdW5kLCBsYWJlbEJvdW5kLCBvZmZzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogbm9kZUJvdW5kLnggKyBub2RlQm91bmQud2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IG5vZGVCb3VuZC55IC0gb2Zmc2V0XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByaWdodDogKG5vZGVCb3VuZCwgbGFiZWxCb3VuZCwgb2Zmc2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IG5vZGVCb3VuZC54ICsgbm9kZUJvdW5kLndpZHRoICsgb2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IG5vZGVCb3VuZC55ICsgbm9kZUJvdW5kLmhlaWdodCAvIDJcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvdHRvbTogKG5vZGVCb3VuZCwgbGFiZWxCb3VuZCwgb2Zmc2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IG5vZGVCb3VuZC54ICsgbm9kZUJvdW5kLndpZHRoIC8gMixcclxuICAgICAgICAgICAgICAgICAgICB5OiBub2RlQm91bmQueSArIG5vZGVCb3VuZC5oZWlnaHQgKyBvZmZzZXRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxlZnQ6IChub2RlQm91bmQsIGxhYmVsQm91bmQsIG9mZnNldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICB4OiBub2RlQm91bmQueCAtIGxhYmVsQm91bmQud2lkdGggLSBvZmZzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgeTogbm9kZUJvdW5kLnkgKyBub2RlQm91bmQuaGVpZ2h0IC8gMlxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaW5kZXhMYWJlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgdmFyIF9hLCBfYjtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGluZGV4TGFiZWxPcHRpb25zW2l0ZW0uc291cmNlVHlwZV0sIG5vZGVCb3VuZCA9IGl0ZW0udGFyZ2V0LmdldEJvdW5kKCksIGxhYmVsQm91bmQgPSBpdGVtLmdldEJvdW5kKCksIG9mZnNldCA9IChfYSA9IG9wdGlvbnMub2Zmc2V0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAyMCwgcG9zaXRpb24gPSAoX2IgPSBvcHRpb25zLnBvc2l0aW9uKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnYm90dG9tJztcclxuICAgICAgICAgICAgY29uc3QgcG9zID0gaW5kZXhMYWJlbFBvc2l0aW9uTWFwW3Bvc2l0aW9uXShub2RlQm91bmQsIGxhYmVsQm91bmQsIG9mZnNldCk7XHJcbiAgICAgICAgICAgIGl0ZW0uc2V0KHBvcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsYXlvdXRBZGRyZXNzTGFiZWwobGVha0FkZHJlc3MsIGFkZHJlc3NMYWJlbE9wdGlvbikge1xyXG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGFkZHJlc3NMYWJlbE9wdGlvbi5vZmZzZXQgfHwgMTY7XHJcbiAgICAgICAgbGVha0FkZHJlc3MuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZUJvdW5kID0gaXRlbS50YXJnZXQuZ2V0Qm91bmQoKTtcclxuICAgICAgICAgICAgaXRlbS5zZXQoe1xyXG4gICAgICAgICAgICAgICAgeDogbm9kZUJvdW5kLnggKyBub2RlQm91bmQud2lkdGggLyAyLFxyXG4gICAgICAgICAgICAgICAgeTogbm9kZUJvdW5kLnkgLSBvZmZzZXRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsYXlvdXRNb2RlbHMobGF5b3V0R3JvdXBUYWJsZSkge1xyXG4gICAgICAgIGNvbnN0IG1vZGVsR3JvdXBMaXN0ID0gW107XHJcbiAgICAgICAgbGF5b3V0R3JvdXBUYWJsZS5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWxMaXN0ID0gZ3JvdXAubW9kZWxMaXN0LCBtb2RlbEdyb3VwID0gbmV3IGdyb3VwXzEuR3JvdXAoKTtcclxuICAgICAgICAgICAgY29uc3QgbGF5b3V0T3B0aW9ucyA9IGdyb3VwLm9wdGlvbnMubGF5b3V0O1xyXG4gICAgICAgICAgICBtb2RlbExpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIG1vZGVsR3JvdXAuYWRkKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZ3JvdXAubGF5b3V0Q3JlYXRvci5sYXlvdXQoZ3JvdXAubm9kZSwgbGF5b3V0T3B0aW9ucyk7XHJcbiAgICAgICAgICAgIG1vZGVsR3JvdXBMaXN0LnB1c2gobW9kZWxHcm91cCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGF5b3V0R3JvdXBUYWJsZS5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWFya2VyT3B0aW9ucyA9IGdyb3VwLm9wdGlvbnMubWFya2VyIHx8IHt9LCBpbmRleExhYmVsT3B0aW9ucyA9IGdyb3VwLm9wdGlvbnMuaW5kZXhMYWJlbCB8fCB7fSwgYWRkcmVzc0xhYmVsT3B0aW9uID0gZ3JvdXAub3B0aW9ucy5hZGRyZXNzTGFiZWwgfHwge307XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0SW5kZXhMYWJlbChncm91cC5pbmRleExhYmVsLCBpbmRleExhYmVsT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHRoaXMubGF5b3V0RnJlZWRMYWJlbChncm91cC5mcmVlZExhYmVsKTtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRBZGRyZXNzTGFiZWwoZ3JvdXAuYWRkcmVzc0xhYmVsLCBhZGRyZXNzTGFiZWxPcHRpb24pO1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dE1hcmtlcihncm91cC5tYXJrZXIsIG1hcmtlck9wdGlvbnMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBtb2RlbEdyb3VwTGlzdDtcclxuICAgIH1cclxuICAgIGxheW91dExlYWtNb2RlbHMobGVha01vZGVscywgYWNjdW11bGF0ZUxlYWtNb2RlbHMpIHtcclxuICAgICAgICBjb25zdCBncm91cCA9IG5ldyBncm91cF8xLkdyb3VwKCksIGNvbnRhaW5lckhlaWdodCA9IHRoaXMudmlld0NvbnRhaW5lci5nZXRHNkluc3RhbmNlKCkuZ2V0SGVpZ2h0KCksIGxlYWtBcmVhSGVpZ2h0ID0gdGhpcy5lbmdpbmUudmlld09wdGlvbnMubGVha0FyZWFIZWlnaHQsIGxlYWtBcmVhWSA9IGNvbnRhaW5lckhlaWdodCAtIGxlYWtBcmVhSGVpZ2h0LCB4T2Zmc2V0ID0gNjA7XHJcbiAgICAgICAgbGV0IHByZXZCb3VuZDtcclxuICAgICAgICBsZWFrTW9kZWxzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uc2V0KHtcclxuICAgICAgICAgICAgICAgIHg6IGl0ZW0ubGF5b3V0WCxcclxuICAgICAgICAgICAgICAgIHk6IGl0ZW0ubGF5b3V0WVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBnbG9iYWxMZWFrR3JvdXBCb3VuZCA9IGFjY3VtdWxhdGVMZWFrTW9kZWxzLmxlbmd0aCA/XHJcbiAgICAgICAgICAgIGJvdW5kaW5nUmVjdF8xLkJvdW5kLnVuaW9uKC4uLmFjY3VtdWxhdGVMZWFrTW9kZWxzLm1hcChpdGVtID0+IGl0ZW0uZ2V0Qm91bmQoKSkpIDpcclxuICAgICAgICAgICAgeyB4OiAwLCB5OiBsZWFrQXJlYVksIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuICAgICAgICBjb25zdCBsYXlvdXRHcm91cHMgPSB1dGlsXzEuVXRpbC5ncm91cEJ5KGxlYWtNb2RlbHMsICdncm91cCcpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGxheW91dEdyb3VwcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBncm91cC5hZGQoLi4ubGF5b3V0R3JvdXBzW2tleV0pO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Qm91bmQgPSBncm91cC5nZXRCb3VuZCgpLCBwcmV2Qm91bmRFbmQgPSBwcmV2Qm91bmQgPyBwcmV2Qm91bmQueCArIHByZXZCb3VuZC53aWR0aCA6IDAsIHsgeDogZ3JvdXBYLCB5OiBncm91cFkgfSA9IGN1cnJlbnRCb3VuZCwgZHggPSBnbG9iYWxMZWFrR3JvdXBCb3VuZC54ICsgZ2xvYmFsTGVha0dyb3VwQm91bmQud2lkdGggKyBwcmV2Qm91bmRFbmQgKyB4T2Zmc2V0IC0gZ3JvdXBYLCBkeSA9IGdsb2JhbExlYWtHcm91cEJvdW5kLnkgLSBncm91cFk7XHJcbiAgICAgICAgICAgIGdyb3VwLnRyYW5zbGF0ZShkeCwgZHkpO1xyXG4gICAgICAgICAgICBncm91cC5jbGVhcigpO1xyXG4gICAgICAgICAgICBib3VuZGluZ1JlY3RfMS5Cb3VuZC50cmFuc2xhdGUoY3VycmVudEJvdW5kLCBkeCwgZHkpO1xyXG4gICAgICAgICAgICBwcmV2Qm91bmQgPSBjdXJyZW50Qm91bmQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBsYXlvdXRHcm91cHMobW9kZWxHcm91cExpc3QpIHtcclxuICAgICAgICBsZXQgd3JhcHBlckdyb3VwID0gbmV3IGdyb3VwXzEuR3JvdXAoKSwgZ3JvdXAsIHByZXZCb3VuZCwgYm91bmQsIGJvdW5kTGlzdCA9IFtdLCBkeCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbEdyb3VwTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBncm91cCA9IG1vZGVsR3JvdXBMaXN0W2ldO1xyXG4gICAgICAgICAgICBib3VuZCA9IGdyb3VwLmdldFBhZGRpbmdCb3VuZCh0aGlzLnZpZXdPcHRpb25zLmdyb3VwUGFkZGluZyk7XHJcbiAgICAgICAgICAgIGlmIChwcmV2Qm91bmQpIHtcclxuICAgICAgICAgICAgICAgIGR4ID0gcHJldkJvdW5kLnggKyBwcmV2Qm91bmQud2lkdGggLSBib3VuZC54O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZHggPSBib3VuZC54O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGdyb3VwLnRyYW5zbGF0ZShkeCwgMCk7XHJcbiAgICAgICAgICAgIGJvdW5kaW5nUmVjdF8xLkJvdW5kLnRyYW5zbGF0ZShib3VuZCwgZHgsIDApO1xyXG4gICAgICAgICAgICBib3VuZExpc3QucHVzaChib3VuZCk7XHJcbiAgICAgICAgICAgIHdyYXBwZXJHcm91cC5hZGQoZ3JvdXApO1xyXG4gICAgICAgICAgICBwcmV2Qm91bmQgPSBib3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHdyYXBwZXJHcm91cDtcclxuICAgIH1cclxuICAgIGZpdENlbnRlcihncm91cCkge1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMudmlld0NvbnRhaW5lci5nZXRHNkluc3RhbmNlKCkuZ2V0V2lkdGgoKSwgaGVpZ2h0ID0gdGhpcy52aWV3Q29udGFpbmVyLmdldEc2SW5zdGFuY2UoKS5nZXRIZWlnaHQoKSwgbGVha0FyZWFIZWlnaHQgPSB0aGlzLmVuZ2luZS52aWV3T3B0aW9ucy5sZWFrQXJlYUhlaWdodDtcclxuICAgICAgICBpZiAodGhpcy52aWV3Q29udGFpbmVyLmhhc0xlYWspIHtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gbGVha0FyZWFIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZpZXdCb3VuZCA9IGdyb3VwLmdldEJvdW5kKCksIGNlbnRlclggPSB3aWR0aCAvIDIsIGNlbnRlclkgPSBoZWlnaHQgLyAyLCBib3VuZENlbnRlclggPSB2aWV3Qm91bmQueCArIHZpZXdCb3VuZC53aWR0aCAvIDIsIGJvdW5kQ2VudGVyWSA9IHZpZXdCb3VuZC55ICsgdmlld0JvdW5kLmhlaWdodCAvIDIsIGR4ID0gY2VudGVyWCAtIGJvdW5kQ2VudGVyWCwgZHkgPSBjZW50ZXJZIC0gYm91bmRDZW50ZXJZO1xyXG4gICAgICAgIGdyb3VwLnRyYW5zbGF0ZShkeCwgZHkpO1xyXG4gICAgfVxyXG4gICAgbGF5b3V0QWxsKGxheW91dEdyb3VwVGFibGUsIGFjY3VtdWxhdGVMZWFrTW9kZWxzLCBsZWFrTW9kZWxzKSB7XHJcbiAgICAgICAgdGhpcy5wcmVMYXlvdXRQcm9jZXNzKGxheW91dEdyb3VwVGFibGUpO1xyXG4gICAgICAgIGNvbnN0IG1vZGVsR3JvdXBMaXN0ID0gdGhpcy5sYXlvdXRNb2RlbHMobGF5b3V0R3JvdXBUYWJsZSk7XHJcbiAgICAgICAgY29uc3QgZ2VuZXJhbEdyb3VwID0gdGhpcy5sYXlvdXRHcm91cHMobW9kZWxHcm91cExpc3QpO1xyXG4gICAgICAgIGlmIChsZWFrTW9kZWxzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dExlYWtNb2RlbHMobGVha01vZGVscywgYWNjdW11bGF0ZUxlYWtNb2RlbHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpdENlbnRlcihnZW5lcmFsR3JvdXApO1xyXG4gICAgICAgIHRoaXMucG9zdExheW91dFByb2Nlc3MobGF5b3V0R3JvdXBUYWJsZSk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5MYXlvdXRQcm92aWRlciA9IExheW91dFByb3ZpZGVyO1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/View/layoutProvider.ts\n"); /***/ }), /***/ "./src/View/reconcile.ts": /*!*******************************!*\ !*** ./src/View/reconcile.ts ***! \*******************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Reconcile = void 0;\r\nconst eventBus_1 = __webpack_require__(/*! ../Common/eventBus */ \"./src/Common/eventBus.ts\");\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst SVLink_1 = __webpack_require__(/*! ../Model/SVLink */ \"./src/Model/SVLink.ts\");\r\nconst SVNode_1 = __webpack_require__(/*! ../Model/SVNode */ \"./src/Model/SVNode.ts\");\r\nconst SVNodeAppendage_1 = __webpack_require__(/*! ../Model/SVNodeAppendage */ \"./src/Model/SVNodeAppendage.ts\");\r\nconst animation_1 = __webpack_require__(/*! ./animation */ \"./src/View/animation.ts\");\r\nclass Reconcile {\r\n constructor(engine, renderer) {\r\n this.engine = engine;\r\n this.renderer = renderer;\r\n this.isFirstPatch = true;\r\n }\r\n getContinuousModels(prevModelList, modelList) {\r\n const continuousModels = modelList.filter(item => prevModelList.find(prevModel => item.id === prevModel.id));\r\n return continuousModels;\r\n }\r\n getAppendModels(prevModelList, modelList, accumulateLeakModels) {\r\n const appendModels = modelList.filter(item => !prevModelList.find(model => model.id === item.id));\r\n appendModels.forEach(item => {\r\n let removeIndex = accumulateLeakModels.findIndex(leakModel => item.id === leakModel.id);\r\n if (removeIndex > -1) {\r\n accumulateLeakModels.splice(removeIndex, 1);\r\n }\r\n });\r\n return appendModels;\r\n }\r\n getLeakModels(layoutGroupTable, prevModelList, modelList) {\r\n let potentialLeakModels = prevModelList.filter(item => !modelList.find(model => model.id === item.id) && !item.freed);\r\n const leakModels = [];\r\n const potentialLeakNodes = potentialLeakModels.filter(item => item.isNode()), groups = util_1.Util.groupBy(potentialLeakNodes, 'group');\r\n potentialLeakModels = potentialLeakModels.filter(item => item.isNode() === false);\r\n Object.keys(groups).forEach(key => {\r\n const leakRule = layoutGroupTable.get(key).layoutCreator.defineLeakRule;\r\n if (leakRule && typeof leakRule === 'function') {\r\n potentialLeakModels.push(...leakRule(groups[key]));\r\n }\r\n });\r\n potentialLeakModels.forEach(item => {\r\n if (item instanceof SVNode_1.SVNode) {\r\n item.leaked = true;\r\n leakModels.push(item);\r\n item.appendages.forEach(appendage => {\r\n appendage.leaked = true;\r\n leakModels.push(appendage);\r\n });\r\n }\r\n });\r\n potentialLeakModels.forEach(item => {\r\n if (item instanceof SVLink_1.SVLink && item.node.leaked !== false && item.target.leaked !== false) {\r\n item.leaked = true;\r\n leakModels.push(item);\r\n }\r\n });\r\n leakModels.forEach(item => {\r\n item.G6Item = null;\r\n });\r\n return leakModels;\r\n }\r\n getRemoveModels(prevModelList, modelList) {\r\n let removedModels = [];\r\n for (let i = 0; i < prevModelList.length; i++) {\r\n let prevModel = prevModelList[i], target = modelList.find(item => item.id === prevModel.id);\r\n if (target === undefined && !prevModel.leaked) {\r\n removedModels.push(prevModel);\r\n }\r\n }\r\n return removedModels;\r\n }\r\n getReTargetMarkers(prevModelList, modelList) {\r\n const prevMarkers = prevModelList.filter(item => item instanceof SVNodeAppendage_1.SVMarker), markers = modelList.filter(item => item instanceof SVNodeAppendage_1.SVMarker);\r\n return markers.filter(item => prevMarkers.find(prevItem => {\r\n return prevItem.id === item.id && prevItem.target.id !== item.target.id;\r\n }));\r\n }\r\n getLabelChangeModels(prevModelList, modelList) {\r\n let labelChangeModels = [];\r\n modelList.forEach(item => {\r\n const prevItem = prevModelList.find(prevItem => prevItem.id === item.id);\r\n if (prevItem === undefined) {\r\n return;\r\n }\r\n const prevLabel = prevItem.get('label'), label = item.get('label');\r\n if (prevLabel !== label) {\r\n labelChangeModels.push(item);\r\n }\r\n });\r\n return labelChangeModels;\r\n }\r\n getFreedModels(prevModelList, modelList) {\r\n const freedNodes = modelList.filter(item => item instanceof SVNode_1.SVNode && item.freed);\r\n freedNodes.forEach(item => {\r\n const prev = prevModelList.find(prevModel => item.id === prevModel.id);\r\n if (prev) {\r\n item.set('label', prev.get('label'));\r\n }\r\n });\r\n return freedNodes;\r\n }\r\n handleContinuousModels(continuousModels) {\r\n for (let i = 0; i < continuousModels.length; i++) {\r\n let model = continuousModels[i];\r\n if (model instanceof SVNode_1.SVNode) {\r\n const group = model.G6Item.getContainer();\r\n group.attr({ opacity: 1 });\r\n }\r\n }\r\n }\r\n handleAppendModels(appendModels) {\r\n let { duration, timingFunction } = this.engine.animationOptions;\r\n appendModels.forEach(item => {\r\n if (item instanceof SVNodeAppendage_1.SVNodeAppendage) {\r\n if (item instanceof SVNodeAppendage_1.SVAddressLabel) {\r\n const AddressLabelG6Group = item.G6Item.getContainer();\r\n AddressLabelG6Group.attr({ opacity: 0 });\r\n }\r\n else {\r\n animation_1.Animations.FADE_IN(item.G6Item, {\r\n duration,\r\n timingFunction\r\n });\r\n }\r\n }\r\n else {\r\n animation_1.Animations.APPEND(item.G6Item, {\r\n duration,\r\n timingFunction\r\n });\r\n }\r\n });\r\n }\r\n handleRemoveModels(removeModels) {\r\n let { duration, timingFunction } = this.engine.animationOptions;\r\n removeModels.forEach(item => {\r\n animation_1.Animations.REMOVE(item.G6Item, {\r\n duration,\r\n timingFunction,\r\n callback: () => {\r\n this.renderer.removeModel(item);\r\n }\r\n });\r\n });\r\n }\r\n handleLeakModels(leakModels) {\r\n let { duration, timingFunction } = this.engine.animationOptions;\r\n leakModels.forEach(item => {\r\n if (item instanceof SVNodeAppendage_1.SVAddressLabel) {\r\n animation_1.Animations.FADE_IN(item.G6Item, {\r\n duration,\r\n timingFunction\r\n });\r\n }\r\n item.G6Item.enableCapture(false);\r\n });\r\n eventBus_1.EventBus.emit('onLeak', leakModels);\r\n }\r\n handleAccumulateLeakModels(accumulateModels) {\r\n accumulateModels.forEach(item => {\r\n if (item.generalStyle) {\r\n item.set('style', Object.assign({}, item.generalStyle));\r\n }\r\n });\r\n }\r\n handleFreedModels(freedModes) {\r\n const { duration, timingFunction } = this.engine.animationOptions, alpha = 0.4;\r\n freedModes.forEach(item => {\r\n const nodeGroup = item.G6Item.getContainer();\r\n item.set('style', { fill: '#ccc' });\r\n nodeGroup.attr({ opacity: alpha });\r\n if (item.marker) {\r\n const markerGroup = item.marker.G6Item.getContainer();\r\n item.marker.set('style', { fill: '#ccc' });\r\n markerGroup.attr({ opacity: alpha + 0.5 });\r\n }\r\n item.freedLabel.G6Item.toFront();\r\n animation_1.Animations.FADE_IN(item.freedLabel.G6Item, { duration, timingFunction });\r\n });\r\n eventBus_1.EventBus.emit('onFreed', freedModes);\r\n }\r\n handleChangeModels(models) {\r\n const changeHighlightColor = this.engine.viewOptions.updateHighlight;\r\n if (!changeHighlightColor || typeof changeHighlightColor !== 'string') {\r\n return;\r\n }\r\n models.forEach(item => {\r\n if (item.generalStyle === undefined) {\r\n item.generalStyle = util_1.Util.objectClone(item.G6ModelProps.style);\r\n }\r\n if (item instanceof SVLink_1.SVLink) {\r\n item.set('style', {\r\n stroke: changeHighlightColor\r\n });\r\n }\r\n else {\r\n item.set('style', {\r\n fill: changeHighlightColor\r\n });\r\n }\r\n });\r\n }\r\n diff(layoutGroupTable, prevModelList, modelList, accumulateLeakModels) {\r\n const continuousModels = this.getContinuousModels(prevModelList, modelList);\r\n const leakModels = this.getLeakModels(layoutGroupTable, prevModelList, modelList);\r\n const appendModels = this.getAppendModels(prevModelList, modelList, accumulateLeakModels);\r\n const removeModels = this.getRemoveModels(prevModelList, modelList);\r\n const updateModels = [\r\n ...this.getReTargetMarkers(prevModelList, modelList),\r\n ...this.getLabelChangeModels(prevModelList, modelList),\r\n ...appendModels,\r\n ...leakModels\r\n ];\r\n const freedModels = this.getFreedModels(prevModelList, modelList);\r\n return {\r\n CONTINUOUS: continuousModels,\r\n APPEND: appendModels,\r\n REMOVE: removeModels,\r\n FREED: freedModels,\r\n LEAKED: leakModels,\r\n UPDATE: updateModels,\r\n ACCUMULATE_LEAK: [...accumulateLeakModels]\r\n };\r\n }\r\n patch(diffResult) {\r\n const { APPEND, REMOVE, FREED, LEAKED, UPDATE, CONTINUOUS, ACCUMULATE_LEAK } = diffResult;\r\n this.handleAccumulateLeakModels(ACCUMULATE_LEAK);\r\n if (this.isFirstPatch === false) {\r\n this.handleChangeModels(UPDATE);\r\n }\r\n this.handleContinuousModels(CONTINUOUS);\r\n this.handleFreedModels(FREED);\r\n this.handleAppendModels(APPEND);\r\n this.handleLeakModels(LEAKED);\r\n this.handleRemoveModels(REMOVE);\r\n if (this.isFirstPatch) {\r\n this.isFirstPatch = false;\r\n }\r\n }\r\n destroy() { }\r\n}\r\nexports.Reconcile = Reconcile;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvVmlldy9yZWNvbmNpbGUudHM/NDRmYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsb0RBQW9CO0FBQy9DLGVBQWUsbUJBQU8sQ0FBQyw0Q0FBZ0I7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsOENBQWlCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLDhDQUFpQjtBQUMxQywwQkFBMEIsbUJBQU8sQ0FBQyxnRUFBMEI7QUFDNUQsb0JBQW9CLG1CQUFPLENBQUMsNENBQWE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDBCQUEwQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZCQUE2QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsYUFBYTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkJBQTJCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGFBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGFBQWEsMkJBQTJCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsYUFBYSwyQkFBMkI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGVBQWUsMkJBQTJCO0FBQzFDO0FBQ0E7QUFDQSwrQkFBK0IsZUFBZTtBQUM5Qyw0QkFBNEIsaUJBQWlCO0FBQzdDO0FBQ0E7QUFDQSwwQ0FBMEMsZUFBZTtBQUN6RCxrQ0FBa0MsdUJBQXVCO0FBQ3pEO0FBQ0E7QUFDQSxvRUFBb0UsMkJBQTJCO0FBQy9GLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQXFFO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EiLCJmaWxlIjoiLi9zcmMvVmlldy9yZWNvbmNpbGUudHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLlJlY29uY2lsZSA9IHZvaWQgMDtcclxuY29uc3QgZXZlbnRCdXNfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vZXZlbnRCdXNcIik7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgU1ZMaW5rXzEgPSByZXF1aXJlKFwiLi4vTW9kZWwvU1ZMaW5rXCIpO1xyXG5jb25zdCBTVk5vZGVfMSA9IHJlcXVpcmUoXCIuLi9Nb2RlbC9TVk5vZGVcIik7XHJcbmNvbnN0IFNWTm9kZUFwcGVuZGFnZV8xID0gcmVxdWlyZShcIi4uL01vZGVsL1NWTm9kZUFwcGVuZGFnZVwiKTtcclxuY29uc3QgYW5pbWF0aW9uXzEgPSByZXF1aXJlKFwiLi9hbmltYXRpb25cIik7XHJcbmNsYXNzIFJlY29uY2lsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihlbmdpbmUsIHJlbmRlcmVyKSB7XHJcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gICAgICAgIHRoaXMuaXNGaXJzdFBhdGNoID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGdldENvbnRpbnVvdXNNb2RlbHMocHJldk1vZGVsTGlzdCwgbW9kZWxMaXN0KSB7XHJcbiAgICAgICAgY29uc3QgY29udGludW91c01vZGVscyA9IG1vZGVsTGlzdC5maWx0ZXIoaXRlbSA9PiBwcmV2TW9kZWxMaXN0LmZpbmQocHJldk1vZGVsID0+IGl0ZW0uaWQgPT09IHByZXZNb2RlbC5pZCkpO1xyXG4gICAgICAgIHJldHVybiBjb250aW51b3VzTW9kZWxzO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwZW5kTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCwgYWNjdW11bGF0ZUxlYWtNb2RlbHMpIHtcclxuICAgICAgICBjb25zdCBhcHBlbmRNb2RlbHMgPSBtb2RlbExpc3QuZmlsdGVyKGl0ZW0gPT4gIXByZXZNb2RlbExpc3QuZmluZChtb2RlbCA9PiBtb2RlbC5pZCA9PT0gaXRlbS5pZCkpO1xyXG4gICAgICAgIGFwcGVuZE1vZGVscy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBsZXQgcmVtb3ZlSW5kZXggPSBhY2N1bXVsYXRlTGVha01vZGVscy5maW5kSW5kZXgobGVha01vZGVsID0+IGl0ZW0uaWQgPT09IGxlYWtNb2RlbC5pZCk7XHJcbiAgICAgICAgICAgIGlmIChyZW1vdmVJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBhY2N1bXVsYXRlTGVha01vZGVscy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFwcGVuZE1vZGVscztcclxuICAgIH1cclxuICAgIGdldExlYWtNb2RlbHMobGF5b3V0R3JvdXBUYWJsZSwgcHJldk1vZGVsTGlzdCwgbW9kZWxMaXN0KSB7XHJcbiAgICAgICAgbGV0IHBvdGVudGlhbExlYWtNb2RlbHMgPSBwcmV2TW9kZWxMaXN0LmZpbHRlcihpdGVtID0+ICFtb2RlbExpc3QuZmluZChtb2RlbCA9PiBtb2RlbC5pZCA9PT0gaXRlbS5pZCkgJiYgIWl0ZW0uZnJlZWQpO1xyXG4gICAgICAgIGNvbnN0IGxlYWtNb2RlbHMgPSBbXTtcclxuICAgICAgICBjb25zdCBwb3RlbnRpYWxMZWFrTm9kZXMgPSBwb3RlbnRpYWxMZWFrTW9kZWxzLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNOb2RlKCkpLCBncm91cHMgPSB1dGlsXzEuVXRpbC5ncm91cEJ5KHBvdGVudGlhbExlYWtOb2RlcywgJ2dyb3VwJyk7XHJcbiAgICAgICAgcG90ZW50aWFsTGVha01vZGVscyA9IHBvdGVudGlhbExlYWtNb2RlbHMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc05vZGUoKSA9PT0gZmFsc2UpO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsZWFrUnVsZSA9IGxheW91dEdyb3VwVGFibGUuZ2V0KGtleSkubGF5b3V0Q3JlYXRvci5kZWZpbmVMZWFrUnVsZTtcclxuICAgICAgICAgICAgaWYgKGxlYWtSdWxlICYmIHR5cGVvZiBsZWFrUnVsZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcG90ZW50aWFsTGVha01vZGVscy5wdXNoKC4uLmxlYWtSdWxlKGdyb3Vwc1trZXldKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBwb3RlbnRpYWxMZWFrTW9kZWxzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgU1ZOb2RlXzEuU1ZOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmxlYWtlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBsZWFrTW9kZWxzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZGFnZXMuZm9yRWFjaChhcHBlbmRhZ2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZGFnZS5sZWFrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxlYWtNb2RlbHMucHVzaChhcHBlbmRhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBwb3RlbnRpYWxMZWFrTW9kZWxzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgU1ZMaW5rXzEuU1ZMaW5rICYmIGl0ZW0ubm9kZS5sZWFrZWQgIT09IGZhbHNlICYmIGl0ZW0udGFyZ2V0LmxlYWtlZCAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0ubGVha2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGxlYWtNb2RlbHMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxlYWtNb2RlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS5HNkl0ZW0gPSBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBsZWFrTW9kZWxzO1xyXG4gICAgfVxyXG4gICAgZ2V0UmVtb3ZlTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCkge1xyXG4gICAgICAgIGxldCByZW1vdmVkTW9kZWxzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmV2TW9kZWxMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBwcmV2TW9kZWwgPSBwcmV2TW9kZWxMaXN0W2ldLCB0YXJnZXQgPSBtb2RlbExpc3QuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHByZXZNb2RlbC5pZCk7XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCAmJiAhcHJldk1vZGVsLmxlYWtlZCkge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlZE1vZGVscy5wdXNoKHByZXZNb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlbW92ZWRNb2RlbHM7XHJcbiAgICB9XHJcbiAgICBnZXRSZVRhcmdldE1hcmtlcnMocHJldk1vZGVsTGlzdCwgbW9kZWxMaXN0KSB7XHJcbiAgICAgICAgY29uc3QgcHJldk1hcmtlcnMgPSBwcmV2TW9kZWxMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0gaW5zdGFuY2VvZiBTVk5vZGVBcHBlbmRhZ2VfMS5TVk1hcmtlciksIG1hcmtlcnMgPSBtb2RlbExpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbSBpbnN0YW5jZW9mIFNWTm9kZUFwcGVuZGFnZV8xLlNWTWFya2VyKTtcclxuICAgICAgICByZXR1cm4gbWFya2Vycy5maWx0ZXIoaXRlbSA9PiBwcmV2TWFya2Vycy5maW5kKHByZXZJdGVtID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHByZXZJdGVtLmlkID09PSBpdGVtLmlkICYmIHByZXZJdGVtLnRhcmdldC5pZCAhPT0gaXRlbS50YXJnZXQuaWQ7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZ2V0TGFiZWxDaGFuZ2VNb2RlbHMocHJldk1vZGVsTGlzdCwgbW9kZWxMaXN0KSB7XHJcbiAgICAgICAgbGV0IGxhYmVsQ2hhbmdlTW9kZWxzID0gW107XHJcbiAgICAgICAgbW9kZWxMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZXZJdGVtID0gcHJldk1vZGVsTGlzdC5maW5kKHByZXZJdGVtID0+IHByZXZJdGVtLmlkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgICAgaWYgKHByZXZJdGVtID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBwcmV2TGFiZWwgPSBwcmV2SXRlbS5nZXQoJ2xhYmVsJyksIGxhYmVsID0gaXRlbS5nZXQoJ2xhYmVsJyk7XHJcbiAgICAgICAgICAgIGlmIChwcmV2TGFiZWwgIT09IGxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbENoYW5nZU1vZGVscy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsQ2hhbmdlTW9kZWxzO1xyXG4gICAgfVxyXG4gICAgZ2V0RnJlZWRNb2RlbHMocHJldk1vZGVsTGlzdCwgbW9kZWxMaXN0KSB7XHJcbiAgICAgICAgY29uc3QgZnJlZWROb2RlcyA9IG1vZGVsTGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtIGluc3RhbmNlb2YgU1ZOb2RlXzEuU1ZOb2RlICYmIGl0ZW0uZnJlZWQpO1xyXG4gICAgICAgIGZyZWVkTm9kZXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcHJldiA9IHByZXZNb2RlbExpc3QuZmluZChwcmV2TW9kZWwgPT4gaXRlbS5pZCA9PT0gcHJldk1vZGVsLmlkKTtcclxuICAgICAgICAgICAgaWYgKHByZXYpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0KCdsYWJlbCcsIHByZXYuZ2V0KCdsYWJlbCcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBmcmVlZE5vZGVzO1xyXG4gICAgfVxyXG4gICAgaGFuZGxlQ29udGludW91c01vZGVscyhjb250aW51b3VzTW9kZWxzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250aW51b3VzTW9kZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBtb2RlbCA9IGNvbnRpbnVvdXNNb2RlbHNbaV07XHJcbiAgICAgICAgICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIFNWTm9kZV8xLlNWTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBtb2RlbC5HNkl0ZW0uZ2V0Q29udGFpbmVyKCk7XHJcbiAgICAgICAgICAgICAgICBncm91cC5hdHRyKHsgb3BhY2l0eTogMSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGhhbmRsZUFwcGVuZE1vZGVscyhhcHBlbmRNb2RlbHMpIHtcclxuICAgICAgICBsZXQgeyBkdXJhdGlvbiwgdGltaW5nRnVuY3Rpb24gfSA9IHRoaXMuZW5naW5lLmFuaW1hdGlvbk9wdGlvbnM7XHJcbiAgICAgICAgYXBwZW5kTW9kZWxzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgU1ZOb2RlQXBwZW5kYWdlXzEuU1ZOb2RlQXBwZW5kYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFNWTm9kZUFwcGVuZGFnZV8xLlNWQWRkcmVzc0xhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzc0xhYmVsRzZHcm91cCA9IGl0ZW0uRzZJdGVtLmdldENvbnRhaW5lcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIEFkZHJlc3NMYWJlbEc2R3JvdXAuYXR0cih7IG9wYWNpdHk6IDAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25fMS5BbmltYXRpb25zLkZBREVfSU4oaXRlbS5HNkl0ZW0sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhbmltYXRpb25fMS5BbmltYXRpb25zLkFQUEVORChpdGVtLkc2SXRlbSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaGFuZGxlUmVtb3ZlTW9kZWxzKHJlbW92ZU1vZGVscykge1xyXG4gICAgICAgIGxldCB7IGR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbiB9ID0gdGhpcy5lbmdpbmUuYW5pbWF0aW9uT3B0aW9ucztcclxuICAgICAgICByZW1vdmVNb2RlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgYW5pbWF0aW9uXzEuQW5pbWF0aW9ucy5SRU1PVkUoaXRlbS5HNkl0ZW0sIHtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgdGltaW5nRnVuY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlTW9kZWwoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaGFuZGxlTGVha01vZGVscyhsZWFrTW9kZWxzKSB7XHJcbiAgICAgICAgbGV0IHsgZHVyYXRpb24sIHRpbWluZ0Z1bmN0aW9uIH0gPSB0aGlzLmVuZ2luZS5hbmltYXRpb25PcHRpb25zO1xyXG4gICAgICAgIGxlYWtNb2RlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBTVk5vZGVBcHBlbmRhZ2VfMS5TVkFkZHJlc3NMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uXzEuQW5pbWF0aW9ucy5GQURFX0lOKGl0ZW0uRzZJdGVtLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdGltaW5nRnVuY3Rpb25cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGl0ZW0uRzZJdGVtLmVuYWJsZUNhcHR1cmUoZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGV2ZW50QnVzXzEuRXZlbnRCdXMuZW1pdCgnb25MZWFrJywgbGVha01vZGVscyk7XHJcbiAgICB9XHJcbiAgICBoYW5kbGVBY2N1bXVsYXRlTGVha01vZGVscyhhY2N1bXVsYXRlTW9kZWxzKSB7XHJcbiAgICAgICAgYWNjdW11bGF0ZU1vZGVscy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5nZW5lcmFsU3R5bGUpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0KCdzdHlsZScsIE9iamVjdC5hc3NpZ24oe30sIGl0ZW0uZ2VuZXJhbFN0eWxlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGhhbmRsZUZyZWVkTW9kZWxzKGZyZWVkTW9kZXMpIHtcclxuICAgICAgICBjb25zdCB7IGR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbiB9ID0gdGhpcy5lbmdpbmUuYW5pbWF0aW9uT3B0aW9ucywgYWxwaGEgPSAwLjQ7XHJcbiAgICAgICAgZnJlZWRNb2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlR3JvdXAgPSBpdGVtLkc2SXRlbS5nZXRDb250YWluZXIoKTtcclxuICAgICAgICAgICAgaXRlbS5zZXQoJ3N0eWxlJywgeyBmaWxsOiAnI2NjYycgfSk7XHJcbiAgICAgICAgICAgIG5vZGVHcm91cC5hdHRyKHsgb3BhY2l0eTogYWxwaGEgfSk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLm1hcmtlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFya2VyR3JvdXAgPSBpdGVtLm1hcmtlci5HNkl0ZW0uZ2V0Q29udGFpbmVyKCk7XHJcbiAgICAgICAgICAgICAgICBpdGVtLm1hcmtlci5zZXQoJ3N0eWxlJywgeyBmaWxsOiAnI2NjYycgfSk7XHJcbiAgICAgICAgICAgICAgICBtYXJrZXJHcm91cC5hdHRyKHsgb3BhY2l0eTogYWxwaGEgKyAwLjUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbS5mcmVlZExhYmVsLkc2SXRlbS50b0Zyb250KCk7XHJcbiAgICAgICAgICAgIGFuaW1hdGlvbl8xLkFuaW1hdGlvbnMuRkFERV9JTihpdGVtLmZyZWVkTGFiZWwuRzZJdGVtLCB7IGR1cmF0aW9uLCB0aW1pbmdGdW5jdGlvbiB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBldmVudEJ1c18xLkV2ZW50QnVzLmVtaXQoJ29uRnJlZWQnLCBmcmVlZE1vZGVzKTtcclxuICAgIH1cclxuICAgIGhhbmRsZUNoYW5nZU1vZGVscyhtb2RlbHMpIHtcclxuICAgICAgICBjb25zdCBjaGFuZ2VIaWdobGlnaHRDb2xvciA9IHRoaXMuZW5naW5lLnZpZXdPcHRpb25zLnVwZGF0ZUhpZ2hsaWdodDtcclxuICAgICAgICBpZiAoIWNoYW5nZUhpZ2hsaWdodENvbG9yIHx8IHR5cGVvZiBjaGFuZ2VIaWdobGlnaHRDb2xvciAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtb2RlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2VuZXJhbFN0eWxlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uZ2VuZXJhbFN0eWxlID0gdXRpbF8xLlV0aWwub2JqZWN0Q2xvbmUoaXRlbS5HNk1vZGVsUHJvcHMuc3R5bGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgU1ZMaW5rXzEuU1ZMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldCgnc3R5bGUnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBjaGFuZ2VIaWdobGlnaHRDb2xvclxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldCgnc3R5bGUnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogY2hhbmdlSGlnaGxpZ2h0Q29sb3JcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBkaWZmKGxheW91dEdyb3VwVGFibGUsIHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCwgYWNjdW11bGF0ZUxlYWtNb2RlbHMpIHtcclxuICAgICAgICBjb25zdCBjb250aW51b3VzTW9kZWxzID0gdGhpcy5nZXRDb250aW51b3VzTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCk7XHJcbiAgICAgICAgY29uc3QgbGVha01vZGVscyA9IHRoaXMuZ2V0TGVha01vZGVscyhsYXlvdXRHcm91cFRhYmxlLCBwcmV2TW9kZWxMaXN0LCBtb2RlbExpc3QpO1xyXG4gICAgICAgIGNvbnN0IGFwcGVuZE1vZGVscyA9IHRoaXMuZ2V0QXBwZW5kTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCwgYWNjdW11bGF0ZUxlYWtNb2RlbHMpO1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZU1vZGVscyA9IHRoaXMuZ2V0UmVtb3ZlTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCk7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlTW9kZWxzID0gW1xyXG4gICAgICAgICAgICAuLi50aGlzLmdldFJlVGFyZ2V0TWFya2VycyhwcmV2TW9kZWxMaXN0LCBtb2RlbExpc3QpLFxyXG4gICAgICAgICAgICAuLi50aGlzLmdldExhYmVsQ2hhbmdlTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCksXHJcbiAgICAgICAgICAgIC4uLmFwcGVuZE1vZGVscyxcclxuICAgICAgICAgICAgLi4ubGVha01vZGVsc1xyXG4gICAgICAgIF07XHJcbiAgICAgICAgY29uc3QgZnJlZWRNb2RlbHMgPSB0aGlzLmdldEZyZWVkTW9kZWxzKHByZXZNb2RlbExpc3QsIG1vZGVsTGlzdCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgQ09OVElOVU9VUzogY29udGludW91c01vZGVscyxcclxuICAgICAgICAgICAgQVBQRU5EOiBhcHBlbmRNb2RlbHMsXHJcbiAgICAgICAgICAgIFJFTU9WRTogcmVtb3ZlTW9kZWxzLFxyXG4gICAgICAgICAgICBGUkVFRDogZnJlZWRNb2RlbHMsXHJcbiAgICAgICAgICAgIExFQUtFRDogbGVha01vZGVscyxcclxuICAgICAgICAgICAgVVBEQVRFOiB1cGRhdGVNb2RlbHMsXHJcbiAgICAgICAgICAgIEFDQ1VNVUxBVEVfTEVBSzogWy4uLmFjY3VtdWxhdGVMZWFrTW9kZWxzXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBwYXRjaChkaWZmUmVzdWx0KSB7XHJcbiAgICAgICAgY29uc3QgeyBBUFBFTkQsIFJFTU9WRSwgRlJFRUQsIExFQUtFRCwgVVBEQVRFLCBDT05USU5VT1VTLCBBQ0NVTVVMQVRFX0xFQUsgfSA9IGRpZmZSZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVBY2N1bXVsYXRlTGVha01vZGVscyhBQ0NVTVVMQVRFX0xFQUspO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RQYXRjaCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VNb2RlbHMoVVBEQVRFKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oYW5kbGVDb250aW51b3VzTW9kZWxzKENPTlRJTlVPVVMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRnJlZWRNb2RlbHMoRlJFRUQpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQXBwZW5kTW9kZWxzKEFQUEVORCk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVMZWFrTW9kZWxzKExFQUtFRCk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVNb2RlbHMoUkVNT1ZFKTtcclxuICAgICAgICBpZiAodGhpcy5pc0ZpcnN0UGF0Y2gpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0ZpcnN0UGF0Y2ggPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkZXN0cm95KCkgeyB9XHJcbn1cclxuZXhwb3J0cy5SZWNvbmNpbGUgPSBSZWNvbmNpbGU7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/View/reconcile.ts\n"); /***/ }), /***/ "./src/View/renderer.ts": /*!******************************!*\ !*** ./src/View/renderer.ts ***! \******************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Renderer = void 0;\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst g6_1 = __webpack_require__(/*! @antv/g6 */ \"./node_modules/_@antv_g6@4.5.0@@antv/g6/es/index.js\");\r\nclass Renderer {\r\n constructor(engine, DOMContainer, behaviorsModes) {\r\n this.engine = engine;\r\n const enable = this.engine.animationOptions.enable, duration = this.engine.animationOptions.duration, timingFunction = this.engine.animationOptions.timingFunction;\r\n const tooltip = new g6_1.Tooltip({\r\n offsetX: 10,\r\n offsetY: 20,\r\n shouldBegin(event) {\r\n return event.item['SVModel'].isNode();\r\n },\r\n getContent: event => this.getTooltipContent(event.item['SVModel'], { address: 'sourceId', data: 'data' }),\r\n itemTypes: ['node']\r\n });\r\n this.shadowG6Instance = new g6_1.Graph({\r\n container: DOMContainer.cloneNode()\r\n });\r\n this.g6Instance = new g6_1.Graph({\r\n container: DOMContainer,\r\n width: DOMContainer.offsetWidth,\r\n height: DOMContainer.offsetHeight,\r\n groupByTypes: false,\r\n animate: enable,\r\n animateCfg: {\r\n duration: duration,\r\n easing: timingFunction\r\n },\r\n fitView: false,\r\n modes: behaviorsModes,\r\n plugins: [tooltip]\r\n });\r\n }\r\n getTooltipContent(model, items) {\r\n const wrapper = document.createElement('div');\r\n if (model === null || model === undefined) {\r\n return wrapper;\r\n }\r\n Object.keys(items).map(key => {\r\n let value = model[items[key]];\r\n if (value !== undefined && value !== null) {\r\n let item = document.createElement('div');\r\n item.innerHTML = `${key}:${value}`;\r\n wrapper.appendChild(item);\r\n }\r\n });\r\n return wrapper;\r\n }\r\n build(renderModelList) {\r\n const g6Data = util_1.Util.convertModelList2G6Data(renderModelList);\r\n this.shadowG6Instance.clear();\r\n this.shadowG6Instance.read(g6Data);\r\n renderModelList.forEach(item => {\r\n item.shadowG6Item = this.shadowG6Instance.findById(item.id);\r\n item.shadowG6Instance = this.shadowG6Instance;\r\n });\r\n }\r\n render(renderModelList) {\r\n const renderData = util_1.Util.convertModelList2G6Data(renderModelList);\r\n this.g6Instance.changeData(renderData);\r\n renderModelList.forEach(item => {\r\n item.g6Instance = this.g6Instance;\r\n item.G6Item = this.g6Instance.findById(item.id);\r\n item.G6Item['SVModel'] = item;\r\n });\r\n this.g6Instance.getEdges().forEach(item => item.toFront());\r\n this.g6Instance.paint();\r\n }\r\n removeModel(model) {\r\n this.g6Instance.removeItem(model.G6Item);\r\n this.shadowG6Instance.removeItem(model.shadowG6Item);\r\n }\r\n getG6Instance() {\r\n return this.g6Instance;\r\n }\r\n refresh() {\r\n this.g6Instance.refresh();\r\n this.shadowG6Instance.refresh();\r\n }\r\n changeSize(width, height) {\r\n this.g6Instance.changeSize(width, height);\r\n this.shadowG6Instance.changeSize(width, height);\r\n }\r\n destroy() {\r\n this.shadowG6Instance.destroy();\r\n this.g6Instance.destroy();\r\n }\r\n}\r\nexports.Renderer = Renderer;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvVmlldy9yZW5kZXJlci50cz83NTgxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQSxlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDLGFBQWEsbUJBQU8sQ0FBQyxxRUFBVTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsZ0ZBQWdGLG9DQUFvQztBQUNwSDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsSUFBSSxHQUFHLE1BQU07QUFDakQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvVmlldy9yZW5kZXJlci50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuUmVuZGVyZXIgPSB2b2lkIDA7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgZzZfMSA9IHJlcXVpcmUoXCJAYW50di9nNlwiKTtcclxuY2xhc3MgUmVuZGVyZXIge1xyXG4gICAgY29uc3RydWN0b3IoZW5naW5lLCBET01Db250YWluZXIsIGJlaGF2aW9yc01vZGVzKSB7XHJcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlID0gdGhpcy5lbmdpbmUuYW5pbWF0aW9uT3B0aW9ucy5lbmFibGUsIGR1cmF0aW9uID0gdGhpcy5lbmdpbmUuYW5pbWF0aW9uT3B0aW9ucy5kdXJhdGlvbiwgdGltaW5nRnVuY3Rpb24gPSB0aGlzLmVuZ2luZS5hbmltYXRpb25PcHRpb25zLnRpbWluZ0Z1bmN0aW9uO1xyXG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSBuZXcgZzZfMS5Ub29sdGlwKHtcclxuICAgICAgICAgICAgb2Zmc2V0WDogMTAsXHJcbiAgICAgICAgICAgIG9mZnNldFk6IDIwLFxyXG4gICAgICAgICAgICBzaG91bGRCZWdpbihldmVudCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50Lml0ZW1bJ1NWTW9kZWwnXS5pc05vZGUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0Q29udGVudDogZXZlbnQgPT4gdGhpcy5nZXRUb29sdGlwQ29udGVudChldmVudC5pdGVtWydTVk1vZGVsJ10sIHsgYWRkcmVzczogJ3NvdXJjZUlkJywgZGF0YTogJ2RhdGEnIH0pLFxyXG4gICAgICAgICAgICBpdGVtVHlwZXM6IFsnbm9kZSddXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zaGFkb3dHNkluc3RhbmNlID0gbmV3IGc2XzEuR3JhcGgoe1xyXG4gICAgICAgICAgICBjb250YWluZXI6IERPTUNvbnRhaW5lci5jbG9uZU5vZGUoKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZzZJbnN0YW5jZSA9IG5ldyBnNl8xLkdyYXBoKHtcclxuICAgICAgICAgICAgY29udGFpbmVyOiBET01Db250YWluZXIsXHJcbiAgICAgICAgICAgIHdpZHRoOiBET01Db250YWluZXIub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICAgIGhlaWdodDogRE9NQ29udGFpbmVyLm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgZ3JvdXBCeVR5cGVzOiBmYWxzZSxcclxuICAgICAgICAgICAgYW5pbWF0ZTogZW5hYmxlLFxyXG4gICAgICAgICAgICBhbmltYXRlQ2ZnOiB7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgICAgICAgICBlYXNpbmc6IHRpbWluZ0Z1bmN0aW9uXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpdFZpZXc6IGZhbHNlLFxyXG4gICAgICAgICAgICBtb2RlczogYmVoYXZpb3JzTW9kZXMsXHJcbiAgICAgICAgICAgIHBsdWdpbnM6IFt0b29sdGlwXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZ2V0VG9vbHRpcENvbnRlbnQobW9kZWwsIGl0ZW1zKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGlmIChtb2RlbCA9PT0gbnVsbCB8fCBtb2RlbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBPYmplY3Qua2V5cyhpdGVtcykubWFwKGtleSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IG1vZGVsW2l0ZW1zW2tleV1dO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICAgICAgICAgIGl0ZW0uaW5uZXJIVE1MID0gYCR7a2V5fe+8miR7dmFsdWV9YDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gd3JhcHBlcjtcclxuICAgIH1cclxuICAgIGJ1aWxkKHJlbmRlck1vZGVsTGlzdCkge1xyXG4gICAgICAgIGNvbnN0IGc2RGF0YSA9IHV0aWxfMS5VdGlsLmNvbnZlcnRNb2RlbExpc3QyRzZEYXRhKHJlbmRlck1vZGVsTGlzdCk7XHJcbiAgICAgICAgdGhpcy5zaGFkb3dHNkluc3RhbmNlLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5zaGFkb3dHNkluc3RhbmNlLnJlYWQoZzZEYXRhKTtcclxuICAgICAgICByZW5kZXJNb2RlbExpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS5zaGFkb3dHNkl0ZW0gPSB0aGlzLnNoYWRvd0c2SW5zdGFuY2UuZmluZEJ5SWQoaXRlbS5pZCk7XHJcbiAgICAgICAgICAgIGl0ZW0uc2hhZG93RzZJbnN0YW5jZSA9IHRoaXMuc2hhZG93RzZJbnN0YW5jZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJlbmRlcihyZW5kZXJNb2RlbExpc3QpIHtcclxuICAgICAgICBjb25zdCByZW5kZXJEYXRhID0gdXRpbF8xLlV0aWwuY29udmVydE1vZGVsTGlzdDJHNkRhdGEocmVuZGVyTW9kZWxMaXN0KTtcclxuICAgICAgICB0aGlzLmc2SW5zdGFuY2UuY2hhbmdlRGF0YShyZW5kZXJEYXRhKTtcclxuICAgICAgICByZW5kZXJNb2RlbExpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS5nNkluc3RhbmNlID0gdGhpcy5nNkluc3RhbmNlO1xyXG4gICAgICAgICAgICBpdGVtLkc2SXRlbSA9IHRoaXMuZzZJbnN0YW5jZS5maW5kQnlJZChpdGVtLmlkKTtcclxuICAgICAgICAgICAgaXRlbS5HNkl0ZW1bJ1NWTW9kZWwnXSA9IGl0ZW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5nNkluc3RhbmNlLmdldEVkZ2VzKCkuZm9yRWFjaChpdGVtID0+IGl0ZW0udG9Gcm9udCgpKTtcclxuICAgICAgICB0aGlzLmc2SW5zdGFuY2UucGFpbnQoKTtcclxuICAgIH1cclxuICAgIHJlbW92ZU1vZGVsKG1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5nNkluc3RhbmNlLnJlbW92ZUl0ZW0obW9kZWwuRzZJdGVtKTtcclxuICAgICAgICB0aGlzLnNoYWRvd0c2SW5zdGFuY2UucmVtb3ZlSXRlbShtb2RlbC5zaGFkb3dHNkl0ZW0pO1xyXG4gICAgfVxyXG4gICAgZ2V0RzZJbnN0YW5jZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nNkluc3RhbmNlO1xyXG4gICAgfVxyXG4gICAgcmVmcmVzaCgpIHtcclxuICAgICAgICB0aGlzLmc2SW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gICAgICAgIHRoaXMuc2hhZG93RzZJbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpIHtcclxuICAgICAgICB0aGlzLmc2SW5zdGFuY2UuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICB0aGlzLnNoYWRvd0c2SW5zdGFuY2UuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgIH1cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5zaGFkb3dHNkluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLmc2SW5zdGFuY2UuZGVzdHJveSgpO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuUmVuZGVyZXIgPSBSZW5kZXJlcjtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/View/renderer.ts\n"); /***/ }), /***/ "./src/View/viewContainer.ts": /*!***********************************!*\ !*** ./src/View/viewContainer.ts ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ViewContainer = void 0;\r\nconst layoutProvider_1 = __webpack_require__(/*! ./layoutProvider */ \"./src/View/layoutProvider.ts\");\r\nconst util_1 = __webpack_require__(/*! ../Common/util */ \"./src/Common/util.ts\");\r\nconst renderer_1 = __webpack_require__(/*! ./renderer */ \"./src/View/renderer.ts\");\r\nconst reconcile_1 = __webpack_require__(/*! ./reconcile */ \"./src/View/reconcile.ts\");\r\nconst eventBus_1 = __webpack_require__(/*! ../Common/eventBus */ \"./src/Common/eventBus.ts\");\r\nconst group_1 = __webpack_require__(/*! ../Common/group */ \"./src/Common/group.ts\");\r\nconst initG6Behaviors_1 = __webpack_require__(/*! ../BehaviorHelper/initG6Behaviors */ \"./src/BehaviorHelper/initG6Behaviors.ts\");\r\nconst behaviorIssueHelper_1 = __webpack_require__(/*! ../BehaviorHelper/behaviorIssueHelper */ \"./src/BehaviorHelper/behaviorIssueHelper.ts\");\r\nclass ViewContainer {\r\n constructor(engine, DOMContainer) {\r\n const behaviorsModes = initG6Behaviors_1.InitG6Behaviors(engine, this);\r\n this.engine = engine;\r\n this.layoutProvider = new layoutProvider_1.LayoutProvider(engine, this);\r\n this.renderer = new renderer_1.Renderer(engine, DOMContainer, behaviorsModes);\r\n this.reconcile = new reconcile_1.Reconcile(engine, this.renderer);\r\n this.layoutGroupTable = new Map();\r\n this.prevModelList = [];\r\n this.accumulateLeakModels = [];\r\n this.hasLeak = false;\r\n this.brushSelectedModels = [];\r\n this.clickSelectNode = null;\r\n const g6Instance = this.renderer.getG6Instance(), leakAreaHeight = this.engine.viewOptions.leakAreaHeight, height = this.getG6Instance().getHeight(), { drag, zoom } = this.engine.behaviorOptions;\r\n this.leakAreaY = height - leakAreaHeight;\r\n behaviorIssueHelper_1.SolveNodeAppendagesDrag(this);\r\n behaviorIssueHelper_1.SolveBrushSelectDrag(this);\r\n drag && behaviorIssueHelper_1.SolveDragCanvasWithLeak(this);\r\n zoom && behaviorIssueHelper_1.SolveZoomCanvasWithLeak(this);\r\n }\r\n reLayout() {\r\n const g6Instance = this.getG6Instance(), group = g6Instance.getGroup(), matrix = group.getMatrix();\r\n if (matrix) {\r\n let dx = matrix[6], dy = matrix[7];\r\n g6Instance.translate(-dx, -dy);\r\n }\r\n this.layoutProvider.layoutAll(this.layoutGroupTable, this.accumulateLeakModels, []);\r\n g6Instance.refresh();\r\n }\r\n getG6Instance() {\r\n return this.renderer.getG6Instance();\r\n }\r\n getAccumulateLeakModels() {\r\n return this.accumulateLeakModels;\r\n }\r\n getLayoutGroupTable() {\r\n return this.layoutGroupTable;\r\n }\r\n refresh() {\r\n this.renderer.getG6Instance().refresh();\r\n }\r\n resize(width, height) {\r\n const g6Instance = this.getG6Instance(), prevContainerHeight = g6Instance.getHeight(), globalGroup = new group_1.Group();\r\n globalGroup.add(...this.prevModelList, ...this.accumulateLeakModels);\r\n this.renderer.changeSize(width, height);\r\n const containerHeight = g6Instance.getHeight(), dy = containerHeight - prevContainerHeight;\r\n globalGroup.translate(0, dy);\r\n this.renderer.refresh();\r\n this.leakAreaY += dy;\r\n eventBus_1.EventBus.emit('onLeakAreaUpdate', {\r\n leakAreaY: this.leakAreaY,\r\n hasLeak: this.hasLeak\r\n });\r\n }\r\n render(layoutGroupTable) {\r\n const modelList = util_1.Util.convertGroupTable2ModelList(layoutGroupTable), diffResult = this.reconcile.diff(this.layoutGroupTable, this.prevModelList, modelList, this.accumulateLeakModels), renderModelList = [\r\n ...modelList,\r\n ...diffResult.REMOVE,\r\n ...diffResult.LEAKED,\r\n ...diffResult.ACCUMULATE_LEAK\r\n ];\r\n if (this.hasLeak === true && this.accumulateLeakModels.length === 0) {\r\n this.hasLeak = false;\r\n eventBus_1.EventBus.emit('onLeakAreaUpdate', {\r\n leakAreaY: this.leakAreaY,\r\n hasLeak: this.hasLeak\r\n });\r\n }\r\n if (diffResult.LEAKED.length) {\r\n this.hasLeak = true;\r\n eventBus_1.EventBus.emit('onLeakAreaUpdate', {\r\n leakAreaY: this.leakAreaY,\r\n hasLeak: this.hasLeak\r\n });\r\n }\r\n this.renderer.build(renderModelList);\r\n this.layoutProvider.layoutAll(layoutGroupTable, this.accumulateLeakModels, diffResult.LEAKED);\r\n this.beforeRender();\r\n this.renderer.render(renderModelList);\r\n this.reconcile.patch(diffResult);\r\n this.afterRender();\r\n this.accumulateLeakModels.push(...diffResult.LEAKED);\r\n this.layoutGroupTable = layoutGroupTable;\r\n this.prevModelList = modelList;\r\n }\r\n destroy() {\r\n this.renderer.destroy();\r\n this.reconcile.destroy();\r\n this.layoutProvider = null;\r\n this.layoutGroupTable = null;\r\n this.prevModelList.length = 0;\r\n this.accumulateLeakModels.length = 0;\r\n this.brushSelectedModels.length = 0;\r\n }\r\n afterRender() {\r\n this.prevModelList.forEach(item => {\r\n if (item.leaked === false) {\r\n item.discarded = true;\r\n }\r\n });\r\n }\r\n beforeRender() { }\r\n}\r\nexports.ViewContainer = ViewContainer;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvVmlldy92aWV3Q29udGFpbmVyLnRzPzU3MmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLHlCQUF5QixtQkFBTyxDQUFDLHNEQUFrQjtBQUNuRCxlQUFlLG1CQUFPLENBQUMsNENBQWdCO0FBQ3ZDLG1CQUFtQixtQkFBTyxDQUFDLDBDQUFZO0FBQ3ZDLG9CQUFvQixtQkFBTyxDQUFDLDRDQUFhO0FBQ3pDLG1CQUFtQixtQkFBTyxDQUFDLG9EQUFvQjtBQUMvQyxnQkFBZ0IsbUJBQU8sQ0FBQyw4Q0FBaUI7QUFDekMsMEJBQTBCLG1CQUFPLENBQUMsa0ZBQW1DO0FBQ3JFLDhCQUE4QixtQkFBTyxDQUFDLDBGQUF1QztBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtKQUErSixhQUFhO0FBQzVLO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EiLCJmaWxlIjoiLi9zcmMvVmlldy92aWV3Q29udGFpbmVyLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5WaWV3Q29udGFpbmVyID0gdm9pZCAwO1xyXG5jb25zdCBsYXlvdXRQcm92aWRlcl8xID0gcmVxdWlyZShcIi4vbGF5b3V0UHJvdmlkZXJcIik7XHJcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vdXRpbFwiKTtcclxuY29uc3QgcmVuZGVyZXJfMSA9IHJlcXVpcmUoXCIuL3JlbmRlcmVyXCIpO1xyXG5jb25zdCByZWNvbmNpbGVfMSA9IHJlcXVpcmUoXCIuL3JlY29uY2lsZVwiKTtcclxuY29uc3QgZXZlbnRCdXNfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vZXZlbnRCdXNcIik7XHJcbmNvbnN0IGdyb3VwXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL2dyb3VwXCIpO1xyXG5jb25zdCBpbml0RzZCZWhhdmlvcnNfMSA9IHJlcXVpcmUoXCIuLi9CZWhhdmlvckhlbHBlci9pbml0RzZCZWhhdmlvcnNcIik7XHJcbmNvbnN0IGJlaGF2aW9ySXNzdWVIZWxwZXJfMSA9IHJlcXVpcmUoXCIuLi9CZWhhdmlvckhlbHBlci9iZWhhdmlvcklzc3VlSGVscGVyXCIpO1xyXG5jbGFzcyBWaWV3Q29udGFpbmVyIHtcclxuICAgIGNvbnN0cnVjdG9yKGVuZ2luZSwgRE9NQ29udGFpbmVyKSB7XHJcbiAgICAgICAgY29uc3QgYmVoYXZpb3JzTW9kZXMgPSBpbml0RzZCZWhhdmlvcnNfMS5Jbml0RzZCZWhhdmlvcnMoZW5naW5lLCB0aGlzKTtcclxuICAgICAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcclxuICAgICAgICB0aGlzLmxheW91dFByb3ZpZGVyID0gbmV3IGxheW91dFByb3ZpZGVyXzEuTGF5b3V0UHJvdmlkZXIoZW5naW5lLCB0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyID0gbmV3IHJlbmRlcmVyXzEuUmVuZGVyZXIoZW5naW5lLCBET01Db250YWluZXIsIGJlaGF2aW9yc01vZGVzKTtcclxuICAgICAgICB0aGlzLnJlY29uY2lsZSA9IG5ldyByZWNvbmNpbGVfMS5SZWNvbmNpbGUoZW5naW5lLCB0aGlzLnJlbmRlcmVyKTtcclxuICAgICAgICB0aGlzLmxheW91dEdyb3VwVGFibGUgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgdGhpcy5wcmV2TW9kZWxMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5hY2N1bXVsYXRlTGVha01vZGVscyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaGFzTGVhayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYnJ1c2hTZWxlY3RlZE1vZGVscyA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2xpY2tTZWxlY3ROb2RlID0gbnVsbDtcclxuICAgICAgICBjb25zdCBnNkluc3RhbmNlID0gdGhpcy5yZW5kZXJlci5nZXRHNkluc3RhbmNlKCksIGxlYWtBcmVhSGVpZ2h0ID0gdGhpcy5lbmdpbmUudmlld09wdGlvbnMubGVha0FyZWFIZWlnaHQsIGhlaWdodCA9IHRoaXMuZ2V0RzZJbnN0YW5jZSgpLmdldEhlaWdodCgpLCB7IGRyYWcsIHpvb20gfSA9IHRoaXMuZW5naW5lLmJlaGF2aW9yT3B0aW9ucztcclxuICAgICAgICB0aGlzLmxlYWtBcmVhWSA9IGhlaWdodCAtIGxlYWtBcmVhSGVpZ2h0O1xyXG4gICAgICAgIGJlaGF2aW9ySXNzdWVIZWxwZXJfMS5Tb2x2ZU5vZGVBcHBlbmRhZ2VzRHJhZyh0aGlzKTtcclxuICAgICAgICBiZWhhdmlvcklzc3VlSGVscGVyXzEuU29sdmVCcnVzaFNlbGVjdERyYWcodGhpcyk7XHJcbiAgICAgICAgZHJhZyAmJiBiZWhhdmlvcklzc3VlSGVscGVyXzEuU29sdmVEcmFnQ2FudmFzV2l0aExlYWsodGhpcyk7XHJcbiAgICAgICAgem9vbSAmJiBiZWhhdmlvcklzc3VlSGVscGVyXzEuU29sdmVab29tQ2FudmFzV2l0aExlYWsodGhpcyk7XHJcbiAgICB9XHJcbiAgICByZUxheW91dCgpIHtcclxuICAgICAgICBjb25zdCBnNkluc3RhbmNlID0gdGhpcy5nZXRHNkluc3RhbmNlKCksIGdyb3VwID0gZzZJbnN0YW5jZS5nZXRHcm91cCgpLCBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcclxuICAgICAgICBpZiAobWF0cml4KSB7XHJcbiAgICAgICAgICAgIGxldCBkeCA9IG1hdHJpeFs2XSwgZHkgPSBtYXRyaXhbN107XHJcbiAgICAgICAgICAgIGc2SW5zdGFuY2UudHJhbnNsYXRlKC1keCwgLWR5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXlvdXRQcm92aWRlci5sYXlvdXRBbGwodGhpcy5sYXlvdXRHcm91cFRhYmxlLCB0aGlzLmFjY3VtdWxhdGVMZWFrTW9kZWxzLCBbXSk7XHJcbiAgICAgICAgZzZJbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICBnZXRHNkluc3RhbmNlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLmdldEc2SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIGdldEFjY3VtdWxhdGVMZWFrTW9kZWxzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjY3VtdWxhdGVMZWFrTW9kZWxzO1xyXG4gICAgfVxyXG4gICAgZ2V0TGF5b3V0R3JvdXBUYWJsZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRHcm91cFRhYmxlO1xyXG4gICAgfVxyXG4gICAgcmVmcmVzaCgpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmdldEc2SW5zdGFuY2UoKS5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICByZXNpemUod2lkdGgsIGhlaWdodCkge1xyXG4gICAgICAgIGNvbnN0IGc2SW5zdGFuY2UgPSB0aGlzLmdldEc2SW5zdGFuY2UoKSwgcHJldkNvbnRhaW5lckhlaWdodCA9IGc2SW5zdGFuY2UuZ2V0SGVpZ2h0KCksIGdsb2JhbEdyb3VwID0gbmV3IGdyb3VwXzEuR3JvdXAoKTtcclxuICAgICAgICBnbG9iYWxHcm91cC5hZGQoLi4udGhpcy5wcmV2TW9kZWxMaXN0LCAuLi50aGlzLmFjY3VtdWxhdGVMZWFrTW9kZWxzKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gZzZJbnN0YW5jZS5nZXRIZWlnaHQoKSwgZHkgPSBjb250YWluZXJIZWlnaHQgLSBwcmV2Q29udGFpbmVySGVpZ2h0O1xyXG4gICAgICAgIGdsb2JhbEdyb3VwLnRyYW5zbGF0ZSgwLCBkeSk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZWZyZXNoKCk7XHJcbiAgICAgICAgdGhpcy5sZWFrQXJlYVkgKz0gZHk7XHJcbiAgICAgICAgZXZlbnRCdXNfMS5FdmVudEJ1cy5lbWl0KCdvbkxlYWtBcmVhVXBkYXRlJywge1xyXG4gICAgICAgICAgICBsZWFrQXJlYVk6IHRoaXMubGVha0FyZWFZLFxyXG4gICAgICAgICAgICBoYXNMZWFrOiB0aGlzLmhhc0xlYWtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJlbmRlcihsYXlvdXRHcm91cFRhYmxlKSB7XHJcbiAgICAgICAgY29uc3QgbW9kZWxMaXN0ID0gdXRpbF8xLlV0aWwuY29udmVydEdyb3VwVGFibGUyTW9kZWxMaXN0KGxheW91dEdyb3VwVGFibGUpLCBkaWZmUmVzdWx0ID0gdGhpcy5yZWNvbmNpbGUuZGlmZih0aGlzLmxheW91dEdyb3VwVGFibGUsIHRoaXMucHJldk1vZGVsTGlzdCwgbW9kZWxMaXN0LCB0aGlzLmFjY3VtdWxhdGVMZWFrTW9kZWxzKSwgcmVuZGVyTW9kZWxMaXN0ID0gW1xyXG4gICAgICAgICAgICAuLi5tb2RlbExpc3QsXHJcbiAgICAgICAgICAgIC4uLmRpZmZSZXN1bHQuUkVNT1ZFLFxyXG4gICAgICAgICAgICAuLi5kaWZmUmVzdWx0LkxFQUtFRCxcclxuICAgICAgICAgICAgLi4uZGlmZlJlc3VsdC5BQ0NVTVVMQVRFX0xFQUtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0xlYWsgPT09IHRydWUgJiYgdGhpcy5hY2N1bXVsYXRlTGVha01vZGVscy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNMZWFrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGV2ZW50QnVzXzEuRXZlbnRCdXMuZW1pdCgnb25MZWFrQXJlYVVwZGF0ZScsIHtcclxuICAgICAgICAgICAgICAgIGxlYWtBcmVhWTogdGhpcy5sZWFrQXJlYVksXHJcbiAgICAgICAgICAgICAgICBoYXNMZWFrOiB0aGlzLmhhc0xlYWtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkaWZmUmVzdWx0LkxFQUtFRC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNMZWFrID0gdHJ1ZTtcclxuICAgICAgICAgICAgZXZlbnRCdXNfMS5FdmVudEJ1cy5lbWl0KCdvbkxlYWtBcmVhVXBkYXRlJywge1xyXG4gICAgICAgICAgICAgICAgbGVha0FyZWFZOiB0aGlzLmxlYWtBcmVhWSxcclxuICAgICAgICAgICAgICAgIGhhc0xlYWs6IHRoaXMuaGFzTGVha1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5idWlsZChyZW5kZXJNb2RlbExpc3QpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0UHJvdmlkZXIubGF5b3V0QWxsKGxheW91dEdyb3VwVGFibGUsIHRoaXMuYWNjdW11bGF0ZUxlYWtNb2RlbHMsIGRpZmZSZXN1bHQuTEVBS0VEKTtcclxuICAgICAgICB0aGlzLmJlZm9yZVJlbmRlcigpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHJlbmRlck1vZGVsTGlzdCk7XHJcbiAgICAgICAgdGhpcy5yZWNvbmNpbGUucGF0Y2goZGlmZlJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5hZnRlclJlbmRlcigpO1xyXG4gICAgICAgIHRoaXMuYWNjdW11bGF0ZUxlYWtNb2RlbHMucHVzaCguLi5kaWZmUmVzdWx0LkxFQUtFRCk7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRHcm91cFRhYmxlID0gbGF5b3V0R3JvdXBUYWJsZTtcclxuICAgICAgICB0aGlzLnByZXZNb2RlbExpc3QgPSBtb2RlbExpc3Q7XHJcbiAgICB9XHJcbiAgICBkZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMucmVjb25jaWxlLmRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLmxheW91dFByb3ZpZGVyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmxheW91dEdyb3VwVGFibGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucHJldk1vZGVsTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgICAgIHRoaXMuYWNjdW11bGF0ZUxlYWtNb2RlbHMubGVuZ3RoID0gMDtcclxuICAgICAgICB0aGlzLmJydXNoU2VsZWN0ZWRNb2RlbHMubGVuZ3RoID0gMDtcclxuICAgIH1cclxuICAgIGFmdGVyUmVuZGVyKCkge1xyXG4gICAgICAgIHRoaXMucHJldk1vZGVsTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5sZWFrZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmRpc2NhcmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGJlZm9yZVJlbmRlcigpIHsgfVxyXG59XHJcbmV4cG9ydHMuVmlld0NvbnRhaW5lciA9IFZpZXdDb250YWluZXI7XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/View/viewContainer.ts\n"); /***/ }), /***/ "./src/engine.ts": /*!***********************!*\ !*** ./src/engine.ts ***! \***********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.Engine = void 0;\r\nconst modelConstructor_1 = __webpack_require__(/*! ./Model/modelConstructor */ \"./src/Model/modelConstructor.ts\");\r\nconst eventBus_1 = __webpack_require__(/*! ./Common/eventBus */ \"./src/Common/eventBus.ts\");\r\nconst viewContainer_1 = __webpack_require__(/*! ./View/viewContainer */ \"./src/View/viewContainer.ts\");\r\nconst SVNode_1 = __webpack_require__(/*! ./Model/SVNode */ \"./src/Model/SVNode.ts\");\r\nconst util_1 = __webpack_require__(/*! ./Common/util */ \"./src/Common/util.ts\");\r\nclass Engine {\r\n constructor(DOMContainer, engineOptions) {\r\n this.engineOptions = Object.assign({}, engineOptions);\r\n this.viewOptions = Object.assign({\r\n fitCenter: true,\r\n fitView: false,\r\n groupPadding: 20,\r\n leakAreaHeight: 150,\r\n updateHighlight: '#fc5185'\r\n }, engineOptions.view);\r\n this.animationOptions = Object.assign({\r\n enable: true,\r\n duration: 750,\r\n timingFunction: 'easePolyOut'\r\n }, engineOptions.animation);\r\n this.behaviorOptions = Object.assign({\r\n drag: true,\r\n zoom: true,\r\n dragNode: true,\r\n selectNode: true\r\n }, engineOptions.behavior);\r\n this.modelConstructor = new modelConstructor_1.ModelConstructor(this);\r\n this.viewContainer = new viewContainer_1.ViewContainer(this, DOMContainer);\r\n }\r\n render(source, force = false) {\r\n if (source === undefined || source === null) {\r\n return;\r\n }\r\n ``;\r\n let stringSource = JSON.stringify(source);\r\n if (force === false && this.prevStringSource === stringSource) {\r\n return;\r\n }\r\n this.prevStringSource = stringSource;\r\n const layoutGroupTable = this.modelConstructor.construct(source);\r\n this.viewContainer.render(layoutGroupTable);\r\n }\r\n reLayout() {\r\n this.viewContainer.reLayout();\r\n }\r\n getGraphInstance() {\r\n return this.viewContainer.getG6Instance();\r\n }\r\n hideGroups(groupNames) {\r\n const names = Array.isArray(groupNames) ? groupNames : [groupNames], instance = this.viewContainer.getG6Instance(), layoutGroupTable = this.modelConstructor.getLayoutGroupTable();\r\n layoutGroupTable.forEach(item => {\r\n const hasName = names.find(name => name === item.layout);\r\n if (hasName && !item.isHide) {\r\n item.modelList.forEach(model => instance.hideItem(model.G6Item));\r\n item.isHide = true;\r\n }\r\n if (!hasName && item.isHide) {\r\n item.modelList.forEach(model => instance.showItem(model.G6Item));\r\n item.isHide = false;\r\n }\r\n });\r\n }\r\n getAllModels() {\r\n const modelList = util_1.Util.convertGroupTable2ModelList(this.modelConstructor.getLayoutGroupTable());\r\n const accumulateLeakModels = this.viewContainer.getAccumulateLeakModels();\r\n return [...modelList, ...accumulateLeakModels];\r\n }\r\n updateStyle(group, newOptions) {\r\n const models = this.getAllModels(), layoutGroup = this.modelConstructor.getLayoutGroupTable().get(group);\r\n layoutGroup.options = newOptions;\r\n models.forEach(item => {\r\n if (item.group !== group) {\r\n return;\r\n }\r\n const modelType = item.getModelType(), optionsType = layoutGroup.options[modelType];\r\n if (optionsType) {\r\n if (modelType === 'addressLabel') {\r\n item.updateG6ModelStyle(item.generateG6ModelProps(optionsType));\r\n }\r\n else {\r\n const targetModelOption = optionsType[item.sourceType];\r\n if (targetModelOption) {\r\n item.updateG6ModelStyle(item.generateG6ModelProps(targetModelOption));\r\n }\r\n }\r\n }\r\n });\r\n }\r\n findNode(id) {\r\n const modelList = this.getAllModels();\r\n const stringId = id.toString();\r\n const targetNode = modelList.find(item => item instanceof SVNode_1.SVNode && item.sourceId === stringId);\r\n return targetNode;\r\n }\r\n resize(width, height) {\r\n this.viewContainer.resize(width, height);\r\n }\r\n on(eventName, callback) {\r\n if (typeof callback !== 'function') {\r\n return;\r\n }\r\n if (eventName === 'onFreed' || eventName === 'onLeak') {\r\n eventBus_1.EventBus.on(eventName, callback);\r\n return;\r\n }\r\n if (eventName === 'onLeakAreaUpdate') {\r\n eventBus_1.EventBus.on(eventName, callback);\r\n return;\r\n }\r\n this.viewContainer.getG6Instance().on(eventName, event => {\r\n callback(event.item['SVModel']);\r\n });\r\n }\r\n switchBrushSelect(enable) {\r\n const g6Instance = this.viewContainer.getG6Instance();\r\n enable ? g6Instance.setMode('brush') : g6Instance.setMode('default');\r\n }\r\n destroy() {\r\n this.modelConstructor.destroy();\r\n this.viewContainer.destroy();\r\n }\r\n}\r\nexports.Engine = Engine;\r\n;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZW5naW5lLnRzP2ZlNDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBOEMsY0FBYztBQUM1RDtBQUNBLDJCQUEyQixtQkFBTyxDQUFDLGlFQUEwQjtBQUM3RCxtQkFBbUIsbUJBQU8sQ0FBQyxtREFBbUI7QUFDOUMsd0JBQXdCLG1CQUFPLENBQUMseURBQXNCO0FBQ3RELGlCQUFpQixtQkFBTyxDQUFDLDZDQUFnQjtBQUN6QyxlQUFlLG1CQUFPLENBQUMsMkNBQWU7QUFDdEM7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2VuZ2luZS50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuRW5naW5lID0gdm9pZCAwO1xyXG5jb25zdCBtb2RlbENvbnN0cnVjdG9yXzEgPSByZXF1aXJlKFwiLi9Nb2RlbC9tb2RlbENvbnN0cnVjdG9yXCIpO1xyXG5jb25zdCBldmVudEJ1c18xID0gcmVxdWlyZShcIi4vQ29tbW9uL2V2ZW50QnVzXCIpO1xyXG5jb25zdCB2aWV3Q29udGFpbmVyXzEgPSByZXF1aXJlKFwiLi9WaWV3L3ZpZXdDb250YWluZXJcIik7XHJcbmNvbnN0IFNWTm9kZV8xID0gcmVxdWlyZShcIi4vTW9kZWwvU1ZOb2RlXCIpO1xyXG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi9Db21tb24vdXRpbFwiKTtcclxuY2xhc3MgRW5naW5lIHtcclxuICAgIGNvbnN0cnVjdG9yKERPTUNvbnRhaW5lciwgZW5naW5lT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuZW5naW5lT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGVuZ2luZU9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMudmlld09wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgZml0Q2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICBmaXRWaWV3OiBmYWxzZSxcclxuICAgICAgICAgICAgZ3JvdXBQYWRkaW5nOiAyMCxcclxuICAgICAgICAgICAgbGVha0FyZWFIZWlnaHQ6IDE1MCxcclxuICAgICAgICAgICAgdXBkYXRlSGlnaGxpZ2h0OiAnI2ZjNTE4NSdcclxuICAgICAgICB9LCBlbmdpbmVPcHRpb25zLnZpZXcpO1xyXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBlbmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiA3NTAsXHJcbiAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uOiAnZWFzZVBvbHlPdXQnXHJcbiAgICAgICAgfSwgZW5naW5lT3B0aW9ucy5hbmltYXRpb24pO1xyXG4gICAgICAgIHRoaXMuYmVoYXZpb3JPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgIGRyYWc6IHRydWUsXHJcbiAgICAgICAgICAgIHpvb206IHRydWUsXHJcbiAgICAgICAgICAgIGRyYWdOb2RlOiB0cnVlLFxyXG4gICAgICAgICAgICBzZWxlY3ROb2RlOiB0cnVlXHJcbiAgICAgICAgfSwgZW5naW5lT3B0aW9ucy5iZWhhdmlvcik7XHJcbiAgICAgICAgdGhpcy5tb2RlbENvbnN0cnVjdG9yID0gbmV3IG1vZGVsQ29uc3RydWN0b3JfMS5Nb2RlbENvbnN0cnVjdG9yKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lciA9IG5ldyB2aWV3Q29udGFpbmVyXzEuVmlld0NvbnRhaW5lcih0aGlzLCBET01Db250YWluZXIpO1xyXG4gICAgfVxyXG4gICAgcmVuZGVyKHNvdXJjZSwgZm9yY2UgPSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCB8fCBzb3VyY2UgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBgYDtcclxuICAgICAgICBsZXQgc3RyaW5nU291cmNlID0gSlNPTi5zdHJpbmdpZnkoc291cmNlKTtcclxuICAgICAgICBpZiAoZm9yY2UgPT09IGZhbHNlICYmIHRoaXMucHJldlN0cmluZ1NvdXJjZSA9PT0gc3RyaW5nU291cmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcmV2U3RyaW5nU291cmNlID0gc3RyaW5nU291cmNlO1xyXG4gICAgICAgIGNvbnN0IGxheW91dEdyb3VwVGFibGUgPSB0aGlzLm1vZGVsQ29uc3RydWN0b3IuY29uc3RydWN0KHNvdXJjZSk7XHJcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLnJlbmRlcihsYXlvdXRHcm91cFRhYmxlKTtcclxuICAgIH1cclxuICAgIHJlTGF5b3V0KCkge1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5yZUxheW91dCgpO1xyXG4gICAgfVxyXG4gICAgZ2V0R3JhcGhJbnN0YW5jZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyLmdldEc2SW5zdGFuY2UoKTtcclxuICAgIH1cclxuICAgIGhpZGVHcm91cHMoZ3JvdXBOYW1lcykge1xyXG4gICAgICAgIGNvbnN0IG5hbWVzID0gQXJyYXkuaXNBcnJheShncm91cE5hbWVzKSA/IGdyb3VwTmFtZXMgOiBbZ3JvdXBOYW1lc10sIGluc3RhbmNlID0gdGhpcy52aWV3Q29udGFpbmVyLmdldEc2SW5zdGFuY2UoKSwgbGF5b3V0R3JvdXBUYWJsZSA9IHRoaXMubW9kZWxDb25zdHJ1Y3Rvci5nZXRMYXlvdXRHcm91cFRhYmxlKCk7XHJcbiAgICAgICAgbGF5b3V0R3JvdXBUYWJsZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNOYW1lID0gbmFtZXMuZmluZChuYW1lID0+IG5hbWUgPT09IGl0ZW0ubGF5b3V0KTtcclxuICAgICAgICAgICAgaWYgKGhhc05hbWUgJiYgIWl0ZW0uaXNIaWRlKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLm1vZGVsTGlzdC5mb3JFYWNoKG1vZGVsID0+IGluc3RhbmNlLmhpZGVJdGVtKG1vZGVsLkc2SXRlbSkpO1xyXG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghaGFzTmFtZSAmJiBpdGVtLmlzSGlkZSkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5tb2RlbExpc3QuZm9yRWFjaChtb2RlbCA9PiBpbnN0YW5jZS5zaG93SXRlbShtb2RlbC5HNkl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIGl0ZW0uaXNIaWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGdldEFsbE1vZGVscygpIHtcclxuICAgICAgICBjb25zdCBtb2RlbExpc3QgPSB1dGlsXzEuVXRpbC5jb252ZXJ0R3JvdXBUYWJsZTJNb2RlbExpc3QodGhpcy5tb2RlbENvbnN0cnVjdG9yLmdldExheW91dEdyb3VwVGFibGUoKSk7XHJcbiAgICAgICAgY29uc3QgYWNjdW11bGF0ZUxlYWtNb2RlbHMgPSB0aGlzLnZpZXdDb250YWluZXIuZ2V0QWNjdW11bGF0ZUxlYWtNb2RlbHMoKTtcclxuICAgICAgICByZXR1cm4gWy4uLm1vZGVsTGlzdCwgLi4uYWNjdW11bGF0ZUxlYWtNb2RlbHNdO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlU3R5bGUoZ3JvdXAsIG5ld09wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBtb2RlbHMgPSB0aGlzLmdldEFsbE1vZGVscygpLCBsYXlvdXRHcm91cCA9IHRoaXMubW9kZWxDb25zdHJ1Y3Rvci5nZXRMYXlvdXRHcm91cFRhYmxlKCkuZ2V0KGdyb3VwKTtcclxuICAgICAgICBsYXlvdXRHcm91cC5vcHRpb25zID0gbmV3T3B0aW9ucztcclxuICAgICAgICBtb2RlbHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uZ3JvdXAgIT09IGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbW9kZWxUeXBlID0gaXRlbS5nZXRNb2RlbFR5cGUoKSwgb3B0aW9uc1R5cGUgPSBsYXlvdXRHcm91cC5vcHRpb25zW21vZGVsVHlwZV07XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGVsVHlwZSA9PT0gJ2FkZHJlc3NMYWJlbCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnVwZGF0ZUc2TW9kZWxTdHlsZShpdGVtLmdlbmVyYXRlRzZNb2RlbFByb3BzKG9wdGlvbnNUeXBlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRNb2RlbE9wdGlvbiA9IG9wdGlvbnNUeXBlW2l0ZW0uc291cmNlVHlwZV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE1vZGVsT3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udXBkYXRlRzZNb2RlbFN0eWxlKGl0ZW0uZ2VuZXJhdGVHNk1vZGVsUHJvcHModGFyZ2V0TW9kZWxPcHRpb24pKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGZpbmROb2RlKGlkKSB7XHJcbiAgICAgICAgY29uc3QgbW9kZWxMaXN0ID0gdGhpcy5nZXRBbGxNb2RlbHMoKTtcclxuICAgICAgICBjb25zdCBzdHJpbmdJZCA9IGlkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IG1vZGVsTGlzdC5maW5kKGl0ZW0gPT4gaXRlbSBpbnN0YW5jZW9mIFNWTm9kZV8xLlNWTm9kZSAmJiBpdGVtLnNvdXJjZUlkID09PSBzdHJpbmdJZCk7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldE5vZGU7XHJcbiAgICB9XHJcbiAgICByZXNpemUod2lkdGgsIGhlaWdodCkge1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5yZXNpemUod2lkdGgsIGhlaWdodCk7XHJcbiAgICB9XHJcbiAgICBvbihldmVudE5hbWUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdvbkZyZWVkJyB8fCBldmVudE5hbWUgPT09ICdvbkxlYWsnKSB7XHJcbiAgICAgICAgICAgIGV2ZW50QnVzXzEuRXZlbnRCdXMub24oZXZlbnROYW1lLCBjYWxsYmFjayk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50TmFtZSA9PT0gJ29uTGVha0FyZWFVcGRhdGUnKSB7XHJcbiAgICAgICAgICAgIGV2ZW50QnVzXzEuRXZlbnRCdXMub24oZXZlbnROYW1lLCBjYWxsYmFjayk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmdldEc2SW5zdGFuY2UoKS5vbihldmVudE5hbWUsIGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQuaXRlbVsnU1ZNb2RlbCddKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHN3aXRjaEJydXNoU2VsZWN0KGVuYWJsZSkge1xyXG4gICAgICAgIGNvbnN0IGc2SW5zdGFuY2UgPSB0aGlzLnZpZXdDb250YWluZXIuZ2V0RzZJbnN0YW5jZSgpO1xyXG4gICAgICAgIGVuYWJsZSA/IGc2SW5zdGFuY2Uuc2V0TW9kZSgnYnJ1c2gnKSA6IGc2SW5zdGFuY2Uuc2V0TW9kZSgnZGVmYXVsdCcpO1xyXG4gICAgfVxyXG4gICAgZGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLm1vZGVsQ29uc3RydWN0b3IuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5kZXN0cm95KCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5FbmdpbmUgPSBFbmdpbmU7XHJcbjtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/engine.ts\n"); /***/ }) /******/ }); });